From 67c28dbe67209effad83d93b850caba5ee1e20e3 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Wed, 3 May 2023 11:12:28 +0200 Subject: Merging upstream version 11.7.1. Signed-off-by: Daniel Baumann --- .github/ISSUE_TEMPLATE/bug_report.md | 18 + .github/ISSUE_TEMPLATE/feature_request.md | 20 + .github/workflows/python-publish.yml | 23 +- CHANGELOG.md | 445 +- CONTRIBUTING.md | 2 + README.md | 2 +- docs/search.js | 2 +- docs/sqlglot.html | 7 +- docs/sqlglot/dataframe.html | 2 +- docs/sqlglot/dataframe/sql.html | 2182 +-- docs/sqlglot/dialects.html | 2 +- docs/sqlglot/dialects/bigquery.html | 1362 +- docs/sqlglot/dialects/clickhouse.html | 769 +- docs/sqlglot/dialects/databricks.html | 165 +- docs/sqlglot/dialects/dialect.html | 728 +- docs/sqlglot/dialects/drill.html | 333 +- docs/sqlglot/dialects/duckdb.html | 992 +- docs/sqlglot/dialects/hive.html | 1518 +- docs/sqlglot/dialects/mysql.html | 2513 +-- docs/sqlglot/dialects/oracle.html | 823 +- docs/sqlglot/dialects/postgres.html | 1283 +- docs/sqlglot/dialects/presto.html | 1234 +- docs/sqlglot/dialects/redshift.html | 950 +- docs/sqlglot/dialects/snowflake.html | 1709 +- docs/sqlglot/dialects/spark.html | 1003 +- docs/sqlglot/dialects/sqlite.html | 745 +- docs/sqlglot/dialects/starrocks.html | 207 +- docs/sqlglot/dialects/tableau.html | 99 +- docs/sqlglot/dialects/teradata.html | 1026 +- docs/sqlglot/dialects/trino.html | 9 +- docs/sqlglot/dialects/tsql.html | 2000 +-- docs/sqlglot/diff.html | 2 +- docs/sqlglot/errors.html | 2 +- docs/sqlglot/executor.html | 4 +- docs/sqlglot/executor/context.html | 2 +- docs/sqlglot/executor/env.html | 15 +- docs/sqlglot/executor/python.html | 5 +- docs/sqlglot/executor/table.html | 2 +- docs/sqlglot/expressions.html | 17221 ++++++++++--------- docs/sqlglot/generator.html | 11316 ++++++------ docs/sqlglot/helper.html | 1115 +- docs/sqlglot/lineage.html | 1018 +- docs/sqlglot/optimizer.html | 2 +- docs/sqlglot/optimizer/annotate_types.html | 1184 +- docs/sqlglot/optimizer/canonicalize.html | 2 +- docs/sqlglot/optimizer/eliminate_ctes.html | 2 +- docs/sqlglot/optimizer/eliminate_joins.html | 2 +- docs/sqlglot/optimizer/eliminate_subqueries.html | 2 +- docs/sqlglot/optimizer/expand_laterals.html | 2 +- .../optimizer/expand_multi_table_selects.html | 2 +- docs/sqlglot/optimizer/isolate_table_selects.html | 2 +- docs/sqlglot/optimizer/lower_identities.html | 2 +- docs/sqlglot/optimizer/merge_subqueries.html | 2 +- docs/sqlglot/optimizer/normalize.html | 350 +- docs/sqlglot/optimizer/optimize_joins.html | 2 +- docs/sqlglot/optimizer/optimizer.html | 4 +- docs/sqlglot/optimizer/pushdown_predicates.html | 2 +- docs/sqlglot/optimizer/pushdown_projections.html | 2 +- docs/sqlglot/optimizer/qualify_columns.html | 1189 +- docs/sqlglot/optimizer/qualify_tables.html | 16 +- docs/sqlglot/optimizer/scope.html | 2 +- docs/sqlglot/optimizer/simplify.html | 924 +- docs/sqlglot/optimizer/unnest_subqueries.html | 2 +- docs/sqlglot/parser.html | 16896 +++++++++--------- docs/sqlglot/planner.html | 2 +- docs/sqlglot/schema.html | 1391 +- docs/sqlglot/serde.html | 2 +- docs/sqlglot/time.html | 2 +- docs/sqlglot/tokens.html | 4273 ++--- docs/sqlglot/transforms.html | 532 +- docs/sqlglot/trie.html | 209 +- posts/python_sql_engine.md | 2 +- sqlglot/__init__.py | 5 +- sqlglot/dataframe/sql/column.py | 2 +- sqlglot/dataframe/sql/dataframe.py | 151 +- sqlglot/dataframe/sql/functions.py | 15 +- sqlglot/dataframe/sql/readwriter.py | 12 +- sqlglot/dialects/bigquery.py | 61 +- sqlglot/dialects/clickhouse.py | 7 + sqlglot/dialects/databricks.py | 8 +- sqlglot/dialects/dialect.py | 37 +- sqlglot/dialects/drill.py | 4 + sqlglot/dialects/duckdb.py | 11 +- sqlglot/dialects/hive.py | 64 +- sqlglot/dialects/mysql.py | 63 +- sqlglot/dialects/oracle.py | 32 +- sqlglot/dialects/postgres.py | 36 +- sqlglot/dialects/presto.py | 85 +- sqlglot/dialects/redshift.py | 17 + sqlglot/dialects/snowflake.py | 59 +- sqlglot/dialects/spark.py | 54 +- sqlglot/dialects/sqlite.py | 10 +- sqlglot/dialects/starrocks.py | 8 +- sqlglot/dialects/tableau.py | 8 + sqlglot/dialects/teradata.py | 21 +- sqlglot/dialects/tsql.py | 37 + sqlglot/expressions.py | 286 +- sqlglot/generator.py | 205 +- sqlglot/helper.py | 34 +- sqlglot/lineage.py | 53 +- sqlglot/optimizer/annotate_types.py | 7 +- sqlglot/optimizer/normalize.py | 4 +- sqlglot/optimizer/qualify_columns.py | 5 +- sqlglot/optimizer/qualify_tables.py | 3 + sqlglot/optimizer/simplify.py | 35 +- sqlglot/parser.py | 382 +- sqlglot/schema.py | 156 +- sqlglot/tokens.py | 163 +- sqlglot/transforms.py | 135 +- sqlglot/trie.py | 5 +- tests/dataframe/integration/test_dataframe.py | 85 +- tests/dataframe/unit/test_dataframe_writer.py | 7 + tests/dataframe/unit/test_functions.py | 13 +- tests/dialects/test_bigquery.py | 21 +- tests/dialects/test_clickhouse.py | 1 + tests/dialects/test_databricks.py | 36 + tests/dialects/test_dialect.py | 41 +- tests/dialects/test_drill.py | 2 +- tests/dialects/test_duckdb.py | 18 +- tests/dialects/test_hive.py | 55 +- tests/dialects/test_mysql.py | 89 +- tests/dialects/test_oracle.py | 48 +- tests/dialects/test_postgres.py | 94 +- tests/dialects/test_presto.py | 83 +- tests/dialects/test_redshift.py | 40 +- tests/dialects/test_snowflake.py | 19 +- tests/dialects/test_spark.py | 35 + tests/dialects/test_starrocks.py | 1 + tests/dialects/test_teradata.py | 37 + tests/dialects/test_tsql.py | 91 +- tests/fixtures/identity.sql | 21 +- tests/fixtures/optimizer/canonicalize.sql | 2 +- tests/fixtures/optimizer/normalize.sql | 3 + tests/fixtures/optimizer/qualify_columns.sql | 23 + tests/fixtures/optimizer/simplify.sql | 3 + tests/fixtures/optimizer/tpc-ds/tpc-ds.sql | 8 +- tests/test_build.py | 52 + tests/test_expressions.py | 5 +- tests/test_lineage.py | 140 +- tests/test_parser.py | 102 +- tests/test_schema.py | 12 +- tests/test_tokens.py | 18 +- tests/test_transforms.py | 5 + tests/test_transpile.py | 94 +- 144 files changed, 44101 insertions(+), 39364 deletions(-) create mode 100644 .github/ISSUE_TEMPLATE/bug_report.md create mode 100644 .github/ISSUE_TEMPLATE/feature_request.md diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 0000000..3884dc0 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,18 @@ +--- +name: Bug report +about: Create a report to help us improve +title: '' +labels: '' +assignees: '' + +--- + +**Before you file an issue** +- Make sure you specify the "read" dialect eg. parse_one(sql, read="spark") +- Check if the issue still exists on main + +**Fully reproducible code snippet** +Please include a fully reproducible code snippet or the input sql, dialect, and expected output. + +**Official Documentation** +Please include links to official SQL documentation related to your issue. diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 0000000..bbcbbe7 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,20 @@ +--- +name: Feature request +about: Suggest an idea for this project +title: '' +labels: '' +assignees: '' + +--- + +**Is your feature request related to a problem? Please describe.** +A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] + +**Describe the solution you'd like** +A clear and concise description of what you want to happen. + +**Describe alternatives you've considered** +A clear and concise description of any alternative solutions or features you've considered. + +**Additional context** +Add any other context or screenshots about the feature request here. diff --git a/.github/workflows/python-publish.yml b/.github/workflows/python-publish.yml index 8f7c01c..de63033 100644 --- a/.github/workflows/python-publish.yml +++ b/.github/workflows/python-publish.yml @@ -26,14 +26,17 @@ jobs: run: | python setup.py sdist bdist_wheel twine upload dist/* - - name: Update documentation - run: | - make docs - git add docs - git config --local user.email "41898282+github-actions[bot]@users.noreply.github.com" - git config --local user.name "github-actions[bot]" - git commit -m "CI: Auto-generated documentation" -a | exit 0 - - name: Push changes - uses: ad-m/github-push-action@master + - name: Update API docs + run: make docs + - name: Update CHANGELOG + id: changelog + uses: requarks/changelog-action@v1 + with: + token: ${{ github.token }} + tag: ${{ github.ref_name }} + - name: Commit API docs, CHANGELOG.md + uses: stefanzweifel/git-auto-commit-action@v4 with: - github_token: ${{ secrets.GITHUB_TOKEN }} + branch: main + commit_message: 'docs: update API docs, CHANGELOG.md for ${{ github.ref_name }} [skip ci]' + file_pattern: 'docs CHANGELOG.md' diff --git a/CHANGELOG.md b/CHANGELOG.md index 0209053..5397e01 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,427 +1,24 @@ Changelog ========= -v11.5.0 ------- - -- Breaking/Improvement: replace_placeholders now uses exp.convert instead of exp.to_identifier. - -- New: Added support for the HLL aggregate function (Snowflake, Redshift). - -- New: Added support for MATCH ... AGAINST ... expression (MySQL). - -- New: Added TPC-DS in the test suite. - -- New: Added support for BigQuery's SELECT AS [STRUCT|VALUE] expression. - -- Improvement: Allow parsing `[]` for [nested types](https://github.com/tobymao/sqlglot/commit/709421aab7ef427619eb5feb95988a0f36792b84). - -- Improvement: [Normalize](https://github.com/tobymao/sqlglot/commit/58fdbf05f5e7627936ebf2036410c60396d6da72) keyword texts in the tokenizer. - -- Improvement: Parse DECODE function into CASE expression when it has >2 args. - -- Improvement: [Don't expand aliases in inner scopes](https://github.com/tobymao/sqlglot/commit/9a574b0e79e7532fd49929cf86396d4485091118). - -- Improvement: [Allow HAVING to alias selects](https://github.com/tobymao/sqlglot/commit/2b3eb31ca2ecb81a70bb462ff3987f0749a32d0e). - -- Improvement: Added support for the limit argument in Spark's SPLIT function. - -- Improvement: [Fix](https://github.com/tobymao/sqlglot/commit/68aea4ab95586723ed0c3d3ab0281577cc71e40c) related to expanding forward references in selects. - -- Improvement: Generate ->> for JSON_EXTRACT_SCALAR (MySQL). - -- Improvement: [Fix](https://github.com/tobymao/sqlglot/commit/68aea4ab95586723ed0c3d3ab0281577cc71e40c) related to expanding alias references in the WHERE clause. - -- Improvement: Fixed transpilation of some char types to Bigquery. - -- Improvement: [Map MAX to GREATEST conditionally for some dialects](https://github.com/tobymao/sqlglot/commit/27483e9f3b7f3043ba1b325d58aa864db54255f1). - -- Improvement: Make normalize default to CNF. - -- Improvement: Fixed star expansion when USING clause is present. - -- Improvement: Various performance improvements in the optimizer. - -- Improvement: Various simplifications in the executor (e.g. scan, join). - -v11.4.0 ------- - -- Breaking/Improvement: Canonicalization now only quotes when safe. - -v11.3.0 ------- - -Changes: - -- Breaking/Improvement: Fixed transpilation of the division ("/") operator, because some dialects do integer division while others do float division. For example, "a / b" will now be transpiled to "CAST(a AS DOUBLE PRECISION) / b" for Snowflake -> Postgres, and to "CAST(a / b AS INT)" for Postgres -> Snowflake. - -- New: Added support for the COMMENT ON statement. - -- New: Added support for old (+) JOIN syntax (Oracle). - -- New: Added "root" helper method on Expression. - -- New: Added "meta" property on Expression. - -- Improvement: Refactored parsing of ALTER TABLE so it's easily extensible. - -- Improvement: Merging subquery to out of scope join bug fixed. - -- Improvement: Tokenize Jinja comments as comments. - -- Improvement: Refactor POST_CREATE and POST_EXPRESSION properties. - -- Improvement: Fix line numbers for strings that contain multi-line comments. - -- Improvement: Fix aliasing for pivot/unpivot expressions. - -- Improvement: Enhance AST diff (https://github.com/tobymao/sqlglot/commit/2093626e798fc12124fdf1f25ea63662f2953966). - -- Improvement: Better python typing. - -- Improvement: Added support for is_star helper on exp.Select. - -v11.2.0 ------- - -Changes: - -- Breaking: Replaced "schema" arg from Column expression with "db" and "catalog". - -- Breaking: Removed mapping of "{{" to BLOCK_START token. - -- New: Added new optimizer pass: [unknown star expansion](https://github.com/tobymao/sqlglot/commit/0e24be8487b94e8ae09ba57b6756788f631043ec). - -- New: Added support for INSERT OR ... syntax. - -- New: Added support for ILIKE/LIKE ANY. - -- Improvement: Made the optimizer more robust. - -- Improvement: Improved parsing of GROUP BY to better handle ROLLUP, CUBE and GROUPING SETS. - -- Improvement: [Refactored](https://github.com/tobymao/sqlglot/commit/d95317e1fe15f06768d613d1eee1ed88d0d1b95a) UDTF scope. - -- Improvement: Fixed parsing for UDF typical parameters in order to handle constraints. - -v11.1.0 ------- - -Changes: - -- Breaking: Although this is a breaking change, it fixes and makes the behavior of escaped characters more consistent. Now SQLGlot preserves all line break inputs as they come. - -v11.0.0 ------- - -Changes: - -- Breaking: Renamed ESCAPES to STRING_ESCAPES in the Tokenizer class. - -- New: Deployed pdoc documentation page. - -- New: Add support for read locking using the FOR UPDATE/SHARE syntax (e.g. MySQL). - -- New: Added support for CASCADE, SET NULL and SET DEFAULT constraints. - -- New: Added "cast" expression helper. - -- New: Add support for transpiling Postgres GENERATE_SERIES into Presto SEQUENCE. - -- Improvement: Fix tokenizing of identifier escapes. - -- Improvement: Fix eliminate_subqueries [bug](https://github.com/tobymao/sqlglot/commit/b5df65e3fb5ee1ebc3cbab64b6d89598cf47a10b) related to unions. - -- Improvement: IFNULL is now transpiled to COALESCE by default for every dialect. - -- Improvement: Refactored the way properties are handled. Now it's easier to add them and specify their position in a SQL expression. - -- Improvement: Fixed alias quoting bug. - -- Improvement: Fixed CUBE / ROLLUP / GROUPING SETS parsing and generation. - -- Improvement: Fixed get_or_raise Dialect/t.Type[Dialect] argument bug. - -- Improvement: Improved python type hints. - -v10.6.0 ------- - -Changes: - -- Breaking: Change Power to binary expression. - -- Breaking: Removed mapping of "}}" to BLOCK_END token. - -- New: x GLOB y support. - -v10.5.0 ------- - -Changes: - -- Breaking: Added python type hints in the parser module, which may result in some mypy errors. - -- New: SQLGlot expressions can [now be serialized / deserialized into JSON](https://github.com/tobymao/sqlglot/commit/bac38151a8d72687247922e6898696be43ff4992). - -- New: Added support for T-SQL [hints](https://github.com/tobymao/sqlglot/commit/3220ec1adb1e1130b109677d03c9be947b03f9ca) and [EOMONTH](https://github.com/tobymao/sqlglot/commit/1ac05d9265667c883b9f6db5d825a6d864c95c73). - -- New: Added support for Clickhouse's parametric function syntax. - -- New: Added [wider support](https://github.com/tobymao/sqlglot/commit/beb660f943b73c730f1b06fce4986e26642ee8dc) for timestr and datestr. - -- New: CLI now accepts a flag [for parsing SQL from the standard input stream](https://github.com/tobymao/sqlglot/commit/f89b38ebf3e24ba951ee8b249d73bbf48685928a). - -- Improvement: Fixed BigQuery transpilation for [parameterized types and unnest](https://github.com/tobymao/sqlglot/pull/924). - -- Improvement: Hive / Spark identifiers can now begin with a digit. - -- Improvement: Bug fixes in [date/datetime simplification](https://github.com/tobymao/sqlglot/commit/b26b8d88af14f72d90c0019ec332d268a23b078f). - -- Improvement: Bug fixes in [merge_subquery](https://github.com/tobymao/sqlglot/commit/e30e21b6c572d0931bfb5873cc6ac3949c6ef5aa). - -- Improvement: Schema identifiers are now [converted to lowercase](https://github.com/tobymao/sqlglot/commit/8212032968a519c199b461eba1a2618e89bf0326) unless they're quoted. - -- Improvement: Identifiers with a leading underscore are now regarded as [safe](https://github.com/tobymao/sqlglot/commit/de3b0804bb7606673d0bbb989997c13744957f7c#diff-7857fedd1d1451b1b9a5b8efaa1cc292c02e7ee4f0d04d7e2f9d5bfb9565802c) and hence are not quoted. - -v10.4.0 ------- - -Changes: - -- Breaking: Removed the quote_identities optimizer rule. - -- New: ARRAYAGG, SUM, ARRAYANY support in the engine. SQLGlot is now able to execute all TPC-H queries. - -- Improvement: Transpile DATEDIFF to postgres. - -- Improvement: Right join pushdown fixes. - -- Improvement: Have Snowflake generate VALUES columns without quotes. - -- Improvement: Support NaN values in convert. - -- Improvement: Recursive CTE scope [fixes](https://github.com/tobymao/sqlglot/commit/bec36391d85152fa478222403d06beffa8d6ddfb). - - -v10.3.0 ------- - -Changes: - -- Breaking: Json ops changed to binary expressions. - -- New: Jinja tokenization. - -- Improvement: More robust type inference. - -v10.2.0 ------- - -Changes: - -- Breaking: types inferred from annotate_types are now DataType objects, instead of DataType.Type. - -- New: the optimizer can now simplify [BETWEEN expressions expressed as explicit comparisons](https://github.com/tobymao/sqlglot/commit/e24d0317dfa644104ff21d009b790224bf84d698). - -- New: the optimizer now removes redundant casts. - -- New: added support for Redshift's ENCODE/DECODE. - -- New: the optimizer now [treats identifiers as case-insensitive](https://github.com/tobymao/sqlglot/commit/638ed265f195219d7226f4fbae128f1805ae8988). - -- New: the optimizer now [handles nested CTEs](https://github.com/tobymao/sqlglot/commit/1bdd652792889a8aaffb1c6d2c8aa1fe4a066281). - -- New: the executor can now execute SELECT DISTINCT expressions. - -- New: added support for Redshift's COPY and UNLOAD commands. - -- New: added ability to parse LIKE in CREATE TABLE statement. - -- New: the optimizer now [unnests scalar subqueries as cross joins](https://github.com/tobymao/sqlglot/commit/4373ad8518ede4ef1fda8b247b648c680a93d12d). - -- Improvement: fixed Bigquery's ARRAY function parsing, so that it can now handle a SELECT expression as an argument. - -- Improvement: improved Snowflake's [ARRAY and MAP constructs](https://github.com/tobymao/sqlglot/commit/0506657dba55fe71d004c81c907e23cdd2b37d82). - -- Improvement: fixed transpilation between STRING_AGG and GROUP_CONCAT. - -- Improvement: the INTO clause can now be parsed in SELECT expressions. - -- Improvement: improve executor; it currently executes all TPC-H queries up to TPC-H 17 (inclusive). - -- Improvement: DISTINCT ON is now transpiled to a SELECT expression from a subquery for Redshift. - -v10.1.0 ------- - -Changes: - -- Breaking: [refactored](https://github.com/tobymao/sqlglot/commit/6b0da1e1a2b5d6bdf7b5b918400456422d30a1d4) the way SQL comments are handled. Before at most one comment could be attached to an expression, now multiple comments may be stored in a list. - -- Breaking: [refactored](https://github.com/tobymao/sqlglot/commit/be332d10404f36b43ea6ece956a73bf451348641) the way properties are represented and parsed. The argument `this` now stores a property's attributes instead of its name. - -- New: added structured ParseError properties. - -- New: the executor now handles set operations. - -- New: sqlglot can [now execute SQL queries](https://github.com/tobymao/sqlglot/commit/62d3496e761a4f38dfa61af793062690923dce74) using python objects. - -- New: added support for the [Drill dialect](https://github.com/tobymao/sqlglot/commit/543eca314546e0bd42f97c354807b4e398ab36ec). - -- New: added a `canonicalize` method which leverages existing type information for an expression to apply various transformations to it. - -- New: TRIM function support for Snowflake and Bigquery. - -- New: added support for SQLite primary key ordering constraints (ASC, DESC). - -- New: added support for Redshift DISTKEY / SORTKEY / DISTSTYLE properties. - -- New: added support for SET TRANSACTION MySQL statements. - -- New: added `null`, `true`, `false` helper methods to avoid using singleton expressions. - -- Improvement: allow multiple aggregations in an expression. - -- Improvement: execution of left / right joins. - -- Improvement: execution of aggregations without the GROUP BY clause. - -- Improvement: static query execution (e.g. SELECT 1, SELECT CONCAT('a', 'b') AS x, etc). - -- Improvement: include a rule for type inference in the optimizer. - -- Improvement: transaction, commit expressions parsed [at finer granularity](https://github.com/tobymao/sqlglot/commit/148282e710fd79512bb7d32e6e519d631df8115d). - -v10.0.0 ------- - -Changes: - -- Breaking: replaced SQLGlot annotations with comments. Now comments can be preserved after transpilation, and they can appear in other places besides SELECT's expressions. - -- Breaking: renamed list_get to seq_get. - -- Breaking: activated mypy type checking for SQLGlot. - -- New: Azure Databricks support. - -- New: placeholders can now be replaced in an expression. - -- New: null safe equal operator (<=>). - -- New: [SET statements](https://github.com/tobymao/sqlglot/pull/673) for MySQL. - -- New: [SHOW commands](https://dev.mysql.com/doc/refman/8.0/en/show.html) for MySQL. - -- New: [FORMAT function](https://www.w3schools.com/sql/func_sqlserver_format.asp) for TSQL. - -- New: CROSS APPLY / OUTER APPLY [support](https://github.com/tobymao/sqlglot/pull/641) for TSQL. - -- New: added formats for TSQL's [DATENAME/DATEPART functions](https://learn.microsoft.com/en-us/sql/t-sql/functions/datename-transact-sql?view=sql-server-ver16). - -- New: added styles for TSQL's [CONVERT function](https://learn.microsoft.com/en-us/sql/t-sql/functions/cast-and-convert-transact-sql?view=sql-server-ver16). - -- Improvement: [refactored the schema](https://github.com/tobymao/sqlglot/pull/668) to be more lenient; before it needed to do an exact match of db.table, now it finds table if there are no ambiguities. - -- Improvement: allow functions to [inherit](https://github.com/tobymao/sqlglot/pull/674) their arguments' types, so that annotating CASE, IF etc. is possible. - -- Improvement: allow [joining with same names](https://github.com/tobymao/sqlglot/pull/660) in the python executor. - -- Improvement: the "using" field can now be set for the [join expression builders](https://github.com/tobymao/sqlglot/pull/636). - -- Improvement: qualify_columns [now qualifies](https://github.com/tobymao/sqlglot/pull/635) only non-alias columns in the having clause. - -v9.0.0 ------- - -Changes: - -- Breaking : Changed AST hierarchy of exp.Table with exp.Alias. Before Tables were children's of their aliases, but in order to simplify the AST and fix some issues, Tables now have an alias property. - -v8.0.0 ------- - -Changes: - -- Breaking : New add\_table method in Schema ABC. - -- New: SQLGlot now supports the [PySpark](https://github.com/tobymao/sqlglot/tree/main/sqlglot/dataframe) dataframe API. This is still relatively experimental. - -v7.1.0 ------- - -Changes: - -- Improvement: Pretty generator now takes max\_text\_width which breaks segments into new lines - -- New: exp.to\_table helper to turn table names into table expression objects - -- New: int[] type parsers - -- New: annotations are now generated in sql - -v7.0.0 ------- - -Changes: - -- Breaking: DISTINCT within functions now take in multiple values eg. COUNT(DISTINCT a, b). - exp.Distinct no longer uses `this` and now uses the expressions property - -- New: Expression False kwargs are now excluded from equality checks - -- New: Parse DESCRIBE and CREATE SCHEMA - -- New: DELETE and VALUES builder - -- New: Unused CTE and JOINS are now removed in the optimizer - -v6.3.0 ------- - -Changes: - -- New: Snowflake [table literals](https://docs.snowflake.com/en/sql-reference/literals-table.html) - -- New: Anti and semi joins - -- New: Vacuum as a command - -- New: Stored procedures - -- New: Reweriting derived tables as CTES - -- Improvement: Various clickhouse improvements - -- Improvement: Optimizer predicate pushdown - -- Breaking: DATE\_DIFF default renamed to DATEDIFF - - -v6.2.0 ------- - -Changes: - -- New: TSQL support - -- Breaking: Removed $ from tokenizer, added @ placeholders - -- Improvement: Nodes can now be removed in transform and replace [8cd81c3](https://github.com/tobymao/sqlglot/commit/8cd81c36561463b9849a8e0c2d70248c5b1feb62) - -- Improvement: Snowflake timestamp support - -- Improvement: Property conversion for CTAS Builder - -- Improvement: Tokenizers are now unique per dialect instance - -v6.1.0 ------- - -Changes: - -- New: mysql group\_concat separator [49a4099](https://github.com/tobymao/sqlglot/commit/49a4099adc93780eeffef8204af36559eab50a9f) - -- Improvement: Better nested select parsing [45603f](https://github.com/tobymao/sqlglot/commit/45603f14bf9146dc3f8b330b85a0e25b77630b9b) +## [v11.6.3] - 2023-05-01 +### :sparkles: New Features +- [`80287dd`](https://github.com/tobymao/sqlglot/commit/80287dd290e9076ce5981ea440dc193df27e0d46) - **presto**: transpile explode/posexplode into (cross join) unnest *(PR [#1501](https://github.com/tobymao/sqlglot/pull/1501) by [@GeorgeSittas](https://github.com/GeorgeSittas))* + - :arrow_lower_right: *addresses issue [#1495](undefined) opened by [@vegarsti](https://github.com/vegarsti)* + +### :bug: Bug Fixes +- [`efd8c05`](https://github.com/tobymao/sqlglot/commit/efd8c0587e9e441f3ea30bd6fb263135e069b9f8) - redshift doesn't support locks *(commit by [@tobymao](https://github.com/tobymao))* +- [`f4ece7c`](https://github.com/tobymao/sqlglot/commit/f4ece7cf7e459fa63c71d5f9f2bcbf2e0aecbf0f) - comment after paren closes [#1504](https://github.com/tobymao/sqlglot/pull/1504) *(commit by [@tobymao](https://github.com/tobymao))* +- [`85b2c00`](https://github.com/tobymao/sqlglot/commit/85b2c0060c579bd5f9f9731b21395b80bf0bc408) - postgres doesn't support plural interval closes [#1503](https://github.com/tobymao/sqlglot/pull/1503) *(commit by [@tobymao](https://github.com/tobymao))* +- [`2e0eee6`](https://github.com/tobymao/sqlglot/commit/2e0eee6037c8afb31e5ed1ea7023f4f867f9a29e) - postgres date_part type closes [#1506](https://github.com/tobymao/sqlglot/pull/1506) *(commit by [@tobymao](https://github.com/tobymao))* +- [`2dcbc7f`](https://github.com/tobymao/sqlglot/commit/2dcbc7f307edf11d8147331b711afacbbb09f725) - tsql hashbytes closes [#1508](https://github.com/tobymao/sqlglot/pull/1508) *(commit by [@tobymao](https://github.com/tobymao))* +- [`5347c7a`](https://github.com/tobymao/sqlglot/commit/5347c7ace49eb9cc23f8fdc19d74fe94e3259742) - change str to Expression in alias_ isinstance check *(PR [#1510](https://github.com/tobymao/sqlglot/pull/1510) by [@GeorgeSittas](https://github.com/GeorgeSittas))* +- [`f137815`](https://github.com/tobymao/sqlglot/commit/f137815db8264739d16339a8b8543a6fb6fc3c12) - BigQuery `TIMESTAMP` and `TIMESTAMPTZ` types *(PR [#1511](https://github.com/tobymao/sqlglot/pull/1511) by [@plaflamme](https://github.com/plaflamme))* +- [`6143491`](https://github.com/tobymao/sqlglot/commit/614349162d26429bc79ba5f091bee7dcfcb08011) - allow $ to appear in postgres/redshift identifiers *(PR [#1512](https://github.com/tobymao/sqlglot/pull/1512) by [@GeorgeSittas](https://github.com/GeorgeSittas))* + +### :wrench: Chores +- [`adc526c`](https://github.com/tobymao/sqlglot/commit/adc526c3954c4a046e226af8410e3b5731691e2d) - add note about conventional commit naming in CONTRIBUTING.md *(commit by [@GeorgeSittas](https://github.com/GeorgeSittas))* +- [`9421650`](https://github.com/tobymao/sqlglot/commit/942165055bfe655112e38a247481f7429823e608) - set action for automatic conventional changelog generation *(PR [#1513](https://github.com/tobymao/sqlglot/pull/1513) by [@GeorgeSittas](https://github.com/GeorgeSittas))* + + +[v11.6.3]: https://github.com/tobymao/sqlglot/compare/v11.6.2...v11.6.3 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 4dd7cf0..74e5ac3 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -20,6 +20,8 @@ Pull requests are the best way to propose changes to the codebase. We actively w 4. Ensure the test suite & linter [checks](https://github.com/tobymao/sqlglot/blob/main/README.md#run-tests-and-lint) pass. 5. Issue that pull request and wait for it to be reviewed by a maintainer or contributor! +Note: make sure to follow the [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) guidelines when creating a PR. + ## Report bugs using Github's [issues](https://github.com/tobymao/sqlglot/issues) We use GitHub issues to track public bugs. Report a bug by opening a new issue. diff --git a/README.md b/README.md index 145d05c..91676d1 100644 --- a/README.md +++ b/README.md @@ -52,7 +52,7 @@ make install-dev ``` ## Get in Touch -We'd love to hear from you. Join our community [Slack channel](https://join.slack.com/t/tobiko-data/shared_invite/zt-1ma66d79v-a4dbf4DUpLAQJ8ptQrJygg)! +We'd love to hear from you. Join our community [Slack channel](https://tobikodata.com/slack)! ## Examples diff --git a/docs/search.js b/docs/search.js index ee20f45..f8b4053 100644 --- a/docs/search.js +++ b/docs/search.js @@ -1,6 +1,6 @@ window.pdocSearch = (function(){ /** elasticlunr - http://weixsong.github.io * Copyright (C) 2017 Oliver Nightingale * Copyright (C) 2017 Wei Song * MIT Licensed */!function(){function e(e){if(null===e||"object"!=typeof e)return e;var t=e.constructor();for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n]);return t}var t=function(e){var n=new t.Index;return n.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),e&&e.call(n,n),n};t.version="0.9.5",lunr=t,t.utils={},t.utils.warn=function(e){return function(t){e.console&&console.warn&&console.warn(t)}}(this),t.utils.toString=function(e){return void 0===e||null===e?"":e.toString()},t.EventEmitter=function(){this.events={}},t.EventEmitter.prototype.addListener=function(){var e=Array.prototype.slice.call(arguments),t=e.pop(),n=e;if("function"!=typeof t)throw new TypeError("last argument must be a function");n.forEach(function(e){this.hasHandler(e)||(this.events[e]=[]),this.events[e].push(t)},this)},t.EventEmitter.prototype.removeListener=function(e,t){if(this.hasHandler(e)){var n=this.events[e].indexOf(t);-1!==n&&(this.events[e].splice(n,1),0==this.events[e].length&&delete this.events[e])}},t.EventEmitter.prototype.emit=function(e){if(this.hasHandler(e)){var t=Array.prototype.slice.call(arguments,1);this.events[e].forEach(function(e){e.apply(void 0,t)},this)}},t.EventEmitter.prototype.hasHandler=function(e){return e in this.events},t.tokenizer=function(e){if(!arguments.length||null===e||void 0===e)return[];if(Array.isArray(e)){var n=e.filter(function(e){return null===e||void 0===e?!1:!0});n=n.map(function(e){return t.utils.toString(e).toLowerCase()});var i=[];return n.forEach(function(e){var n=e.split(t.tokenizer.seperator);i=i.concat(n)},this),i}return e.toString().trim().toLowerCase().split(t.tokenizer.seperator)},t.tokenizer.defaultSeperator=/[\s\-]+/,t.tokenizer.seperator=t.tokenizer.defaultSeperator,t.tokenizer.setSeperator=function(e){null!==e&&void 0!==e&&"object"==typeof e&&(t.tokenizer.seperator=e)},t.tokenizer.resetSeperator=function(){t.tokenizer.seperator=t.tokenizer.defaultSeperator},t.tokenizer.getSeperator=function(){return t.tokenizer.seperator},t.Pipeline=function(){this._queue=[]},t.Pipeline.registeredFunctions={},t.Pipeline.registerFunction=function(e,n){n in t.Pipeline.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+n),e.label=n,t.Pipeline.registeredFunctions[n]=e},t.Pipeline.getRegisteredFunction=function(e){return e in t.Pipeline.registeredFunctions!=!0?null:t.Pipeline.registeredFunctions[e]},t.Pipeline.warnIfFunctionNotRegistered=function(e){var n=e.label&&e.label in this.registeredFunctions;n||t.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",e)},t.Pipeline.load=function(e){var n=new t.Pipeline;return e.forEach(function(e){var i=t.Pipeline.getRegisteredFunction(e);if(!i)throw new Error("Cannot load un-registered function: "+e);n.add(i)}),n},t.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(e){t.Pipeline.warnIfFunctionNotRegistered(e),this._queue.push(e)},this)},t.Pipeline.prototype.after=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var i=this._queue.indexOf(e);if(-1===i)throw new Error("Cannot find existingFn");this._queue.splice(i+1,0,n)},t.Pipeline.prototype.before=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var i=this._queue.indexOf(e);if(-1===i)throw new Error("Cannot find existingFn");this._queue.splice(i,0,n)},t.Pipeline.prototype.remove=function(e){var t=this._queue.indexOf(e);-1!==t&&this._queue.splice(t,1)},t.Pipeline.prototype.run=function(e){for(var t=[],n=e.length,i=this._queue.length,o=0;n>o;o++){for(var r=e[o],s=0;i>s&&(r=this._queue[s](r,o,e),void 0!==r&&null!==r);s++);void 0!==r&&null!==r&&t.push(r)}return t},t.Pipeline.prototype.reset=function(){this._queue=[]},t.Pipeline.prototype.get=function(){return this._queue},t.Pipeline.prototype.toJSON=function(){return this._queue.map(function(e){return t.Pipeline.warnIfFunctionNotRegistered(e),e.label})},t.Index=function(){this._fields=[],this._ref="id",this.pipeline=new t.Pipeline,this.documentStore=new t.DocumentStore,this.index={},this.eventEmitter=new t.EventEmitter,this._idfCache={},this.on("add","remove","update",function(){this._idfCache={}}.bind(this))},t.Index.prototype.on=function(){var e=Array.prototype.slice.call(arguments);return this.eventEmitter.addListener.apply(this.eventEmitter,e)},t.Index.prototype.off=function(e,t){return this.eventEmitter.removeListener(e,t)},t.Index.load=function(e){e.version!==t.version&&t.utils.warn("version mismatch: current "+t.version+" importing "+e.version);var n=new this;n._fields=e.fields,n._ref=e.ref,n.documentStore=t.DocumentStore.load(e.documentStore),n.pipeline=t.Pipeline.load(e.pipeline),n.index={};for(var i in e.index)n.index[i]=t.InvertedIndex.load(e.index[i]);return n},t.Index.prototype.addField=function(e){return this._fields.push(e),this.index[e]=new t.InvertedIndex,this},t.Index.prototype.setRef=function(e){return this._ref=e,this},t.Index.prototype.saveDocument=function(e){return this.documentStore=new t.DocumentStore(e),this},t.Index.prototype.addDoc=function(e,n){if(e){var n=void 0===n?!0:n,i=e[this._ref];this.documentStore.addDoc(i,e),this._fields.forEach(function(n){var o=this.pipeline.run(t.tokenizer(e[n]));this.documentStore.addFieldLength(i,n,o.length);var r={};o.forEach(function(e){e in r?r[e]+=1:r[e]=1},this);for(var s in r){var u=r[s];u=Math.sqrt(u),this.index[n].addToken(s,{ref:i,tf:u})}},this),n&&this.eventEmitter.emit("add",e,this)}},t.Index.prototype.removeDocByRef=function(e){if(e&&this.documentStore.isDocStored()!==!1&&this.documentStore.hasDoc(e)){var t=this.documentStore.getDoc(e);this.removeDoc(t,!1)}},t.Index.prototype.removeDoc=function(e,n){if(e){var n=void 0===n?!0:n,i=e[this._ref];this.documentStore.hasDoc(i)&&(this.documentStore.removeDoc(i),this._fields.forEach(function(n){var o=this.pipeline.run(t.tokenizer(e[n]));o.forEach(function(e){this.index[n].removeToken(e,i)},this)},this),n&&this.eventEmitter.emit("remove",e,this))}},t.Index.prototype.updateDoc=function(e,t){var t=void 0===t?!0:t;this.removeDocByRef(e[this._ref],!1),this.addDoc(e,!1),t&&this.eventEmitter.emit("update",e,this)},t.Index.prototype.idf=function(e,t){var n="@"+t+"/"+e;if(Object.prototype.hasOwnProperty.call(this._idfCache,n))return this._idfCache[n];var i=this.index[t].getDocFreq(e),o=1+Math.log(this.documentStore.length/(i+1));return this._idfCache[n]=o,o},t.Index.prototype.getFields=function(){return this._fields.slice()},t.Index.prototype.search=function(e,n){if(!e)return[];e="string"==typeof e?{any:e}:JSON.parse(JSON.stringify(e));var i=null;null!=n&&(i=JSON.stringify(n));for(var o=new t.Configuration(i,this.getFields()).get(),r={},s=Object.keys(e),u=0;u0&&t.push(e);for(var i in n)"docs"!==i&&"df"!==i&&this.expandToken(e+i,t,n[i]);return t},t.InvertedIndex.prototype.toJSON=function(){return{root:this.root}},t.Configuration=function(e,n){var e=e||"";if(void 0==n||null==n)throw new Error("fields should not be null");this.config={};var i;try{i=JSON.parse(e),this.buildUserConfig(i,n)}catch(o){t.utils.warn("user configuration parse failed, will use default configuration"),this.buildDefaultConfig(n)}},t.Configuration.prototype.buildDefaultConfig=function(e){this.reset(),e.forEach(function(e){this.config[e]={boost:1,bool:"OR",expand:!1}},this)},t.Configuration.prototype.buildUserConfig=function(e,n){var i="OR",o=!1;if(this.reset(),"bool"in e&&(i=e.bool||i),"expand"in e&&(o=e.expand||o),"fields"in e)for(var r in e.fields)if(n.indexOf(r)>-1){var s=e.fields[r],u=o;void 0!=s.expand&&(u=s.expand),this.config[r]={boost:s.boost||0===s.boost?s.boost:1,bool:s.bool||i,expand:u}}else t.utils.warn("field name in user configuration not found in index instance fields");else this.addAllFields2UserConfig(i,o,n)},t.Configuration.prototype.addAllFields2UserConfig=function(e,t,n){n.forEach(function(n){this.config[n]={boost:1,bool:e,expand:t}},this)},t.Configuration.prototype.get=function(){return this.config},t.Configuration.prototype.reset=function(){this.config={}},lunr.SortedSet=function(){this.length=0,this.elements=[]},lunr.SortedSet.load=function(e){var t=new this;return t.elements=e,t.length=e.length,t},lunr.SortedSet.prototype.add=function(){var e,t;for(e=0;e1;){if(r===e)return o;e>r&&(t=o),r>e&&(n=o),i=n-t,o=t+Math.floor(i/2),r=this.elements[o]}return r===e?o:-1},lunr.SortedSet.prototype.locationFor=function(e){for(var t=0,n=this.elements.length,i=n-t,o=t+Math.floor(i/2),r=this.elements[o];i>1;)e>r&&(t=o),r>e&&(n=o),i=n-t,o=t+Math.floor(i/2),r=this.elements[o];return r>e?o:e>r?o+1:void 0},lunr.SortedSet.prototype.intersect=function(e){for(var t=new lunr.SortedSet,n=0,i=0,o=this.length,r=e.length,s=this.elements,u=e.elements;;){if(n>o-1||i>r-1)break;s[n]!==u[i]?s[n]u[i]&&i++:(t.add(s[n]),n++,i++)}return t},lunr.SortedSet.prototype.clone=function(){var e=new lunr.SortedSet;return e.elements=this.toArray(),e.length=e.elements.length,e},lunr.SortedSet.prototype.union=function(e){var t,n,i;this.length>=e.length?(t=this,n=e):(t=e,n=this),i=t.clone();for(var o=0,r=n.toArray();o\"SQLGlot

\n\n

SQLGlot is a no-dependency SQL parser, transpiler, optimizer, and engine. It can be used to format SQL or translate between 19 different dialects like DuckDB, Presto, Spark, Snowflake, and BigQuery. It aims to read a wide variety of SQL inputs and output syntactically correct SQL in the targeted dialects.

\n\n

It is a very comprehensive generic SQL parser with a robust test suite. It is also quite performant, while being written purely in Python.

\n\n

You can easily customize the parser, analyze queries, traverse expression trees, and programmatically build SQL.

\n\n

Syntax errors are highlighted and dialect incompatibilities can warn or raise depending on configurations. However, it should be noted that SQL validation is not SQLGlot\u2019s goal, so some syntax errors may go unnoticed.

\n\n

Contributions are very welcome in SQLGlot; read the contribution guide to get started!

\n\n

Table of Contents

\n\n\n\n

Install

\n\n

From PyPI:

\n\n
pip3 install sqlglot\n
\n\n

Or with a local checkout:

\n\n
make install\n
\n\n

Requirements for development (optional):

\n\n
make install-dev\n
\n\n

Get in Touch

\n\n

We'd love to hear from you. Join our community Slack channel!

\n\n

Examples

\n\n

Formatting and Transpiling

\n\n

Easily translate from one dialect to another. For example, date/time functions vary from dialects and can be hard to deal with:

\n\n
\n
import sqlglot\nsqlglot.transpile("SELECT EPOCH_MS(1618088028295)", read="duckdb", write="hive")[0]\n
\n
\n\n
\n
'SELECT FROM_UNIXTIME(1618088028295 / 1000)'\n
\n
\n\n

SQLGlot can even translate custom time formats:

\n\n
\n
import sqlglot\nsqlglot.transpile("SELECT STRFTIME(x, '%y-%-m-%S')", read="duckdb", write="hive")[0]\n
\n
\n\n
\n
"SELECT DATE_FORMAT(x, 'yy-M-ss')"\n
\n
\n\n

As another example, let's suppose that we want to read in a SQL query that contains a CTE and a cast to REAL, and then transpile it to Spark, which uses backticks for identifiers and FLOAT instead of REAL:

\n\n
\n
import sqlglot\n\nsql = """WITH baz AS (SELECT a, c FROM foo WHERE a = 1) SELECT f.a, b.b, baz.c, CAST("b"."a" AS REAL) d FROM foo f JOIN bar b ON f.a = b.a LEFT JOIN baz ON f.a = baz.a"""\nprint(sqlglot.transpile(sql, write="spark", identify=True, pretty=True)[0])\n
\n
\n\n
\n
WITH `baz` AS (\n  SELECT\n    `a`,\n    `c`\n  FROM `foo`\n  WHERE\n    `a` = 1\n)\nSELECT\n  `f`.`a`,\n  `b`.`b`,\n  `baz`.`c`,\n  CAST(`b`.`a` AS FLOAT) AS `d`\nFROM `foo` AS `f`\nJOIN `bar` AS `b`\n  ON `f`.`a` = `b`.`a`\nLEFT JOIN `baz`\n  ON `f`.`a` = `baz`.`a`\n
\n
\n\n

Comments are also preserved in a best-effort basis when transpiling SQL code:

\n\n
\n
sql = """\n/* multi\n   line\n   comment\n*/\nSELECT\n  tbl.cola /* comment 1 */ + tbl.colb /* comment 2 */,\n  CAST(x AS INT), # comment 3\n  y               -- comment 4\nFROM\n  bar /* comment 5 */,\n  tbl #          comment 6\n"""\n\nprint(sqlglot.transpile(sql, read='mysql', pretty=True)[0])\n
\n
\n\n
\n
/* multi\n   line\n   comment\n*/\nSELECT\n  tbl.cola /* comment 1 */ + tbl.colb /* comment 2 */,\n  CAST(x AS INT), /* comment 3 */\n  y /* comment 4 */\nFROM bar /* comment 5 */, tbl /*          comment 6 */\n
\n
\n\n

Metadata

\n\n

You can explore SQL with expression helpers to do things like find columns and tables:

\n\n
\n
from sqlglot import parse_one, exp\n\n# print all column references (a and b)\nfor column in parse_one("SELECT a, b + 1 AS c FROM d").find_all(exp.Column):\n    print(column.alias_or_name)\n\n# find all projections in select statements (a and c)\nfor select in parse_one("SELECT a, b + 1 AS c FROM d").find_all(exp.Select):\n    for projection in select.expressions:\n        print(projection.alias_or_name)\n\n# find all tables (x, y, z)\nfor table in parse_one("SELECT * FROM x JOIN y JOIN z").find_all(exp.Table):\n    print(table.name)\n
\n
\n\n

Parser Errors

\n\n

When the parser detects an error in the syntax, it raises a ParserError:

\n\n
\n
import sqlglot\nsqlglot.transpile("SELECT foo( FROM bar")\n
\n
\n\n
sqlglot.errors.ParseError: Expecting ). Line 1, Col: 13.\n  select foo( FROM bar\n              ~~~~\n
\n\n

Structured syntax errors are accessible for programmatic use:

\n\n
\n
import sqlglot\ntry:\n    sqlglot.transpile("SELECT foo( FROM bar")\nexcept sqlglot.errors.ParseError as e:\n    print(e.errors)\n
\n
\n\n
\n
[{\n  'description': 'Expecting )',\n  'line': 1,\n  'col': 13,\n  'start_context': 'SELECT foo( ',\n  'highlight': 'FROM',\n  'end_context': ' bar'\n}]\n
\n
\n\n

Unsupported Errors

\n\n

Presto APPROX_DISTINCT supports the accuracy argument which is not supported in Hive:

\n\n
\n
import sqlglot\nsqlglot.transpile("SELECT APPROX_DISTINCT(a, 0.1) FROM foo", read="presto", write="hive")\n
\n
\n\n
\n
APPROX_COUNT_DISTINCT does not support accuracy\n'SELECT APPROX_COUNT_DISTINCT(a) FROM foo'\n
\n
\n\n

Build and Modify SQL

\n\n

SQLGlot supports incrementally building sql expressions:

\n\n
\n
from sqlglot import select, condition\n\nwhere = condition("x=1").and_("y=1")\nselect("*").from_("y").where(where).sql()\n
\n
\n\n
\n
'SELECT * FROM y WHERE x = 1 AND y = 1'\n
\n
\n\n

You can also modify a parsed tree:

\n\n
\n
from sqlglot import parse_one\nparse_one("SELECT x FROM y").from_("z").sql()\n
\n
\n\n
\n
'SELECT x FROM y, z'\n
\n
\n\n

There is also a way to recursively transform the parsed tree by applying a mapping function to each tree node:

\n\n
\n
from sqlglot import exp, parse_one\n\nexpression_tree = parse_one("SELECT a FROM x")\n\ndef transformer(node):\n    if isinstance(node, exp.Column) and node.name == "a":\n        return parse_one("FUN(a)")\n    return node\n\ntransformed_tree = expression_tree.transform(transformer)\ntransformed_tree.sql()\n
\n
\n\n
\n
'SELECT FUN(a) FROM x'\n
\n
\n\n

SQL Optimizer

\n\n

SQLGlot can rewrite queries into an \"optimized\" form. It performs a variety of techniques to create a new canonical AST. This AST can be used to standardize queries or provide the foundations for implementing an actual engine. For example:

\n\n
\n
import sqlglot\nfrom sqlglot.optimizer import optimize\n\nprint(\n    optimize(\n        sqlglot.parse_one("""\n            SELECT A OR (B OR (C AND D))\n            FROM x\n            WHERE Z = date '2021-01-01' + INTERVAL '1' month OR 1 = 0\n        """),\n        schema={"x": {"A": "INT", "B": "INT", "C": "INT", "D": "INT", "Z": "STRING"}}\n    ).sql(pretty=True)\n)\n
\n
\n\n
\n
SELECT\n  (\n    "x"."a" OR "x"."b" OR "x"."c"\n  ) AND (\n    "x"."a" OR "x"."b" OR "x"."d"\n  ) AS "_col_0"\nFROM "x" AS "x"\nWHERE\n  CAST("x"."z" AS DATE) = CAST('2021-02-01' AS DATE)\n
\n
\n\n

AST Introspection

\n\n

You can see the AST version of the sql by calling repr:

\n\n
\n
from sqlglot import parse_one\nprint(repr(parse_one("SELECT a + 1 AS z")))\n
\n
\n\n
\n
(SELECT expressions:\n  (ALIAS this:\n    (ADD this:\n      (COLUMN this:\n        (IDENTIFIER this: a, quoted: False)), expression:\n      (LITERAL this: 1, is_string: False)), alias:\n    (IDENTIFIER this: z, quoted: False)))\n
\n
\n\n

AST Diff

\n\n

SQLGlot can calculate the difference between two expressions and output changes in a form of a sequence of actions needed to transform a source expression into a target one:

\n\n
\n
from sqlglot import diff, parse_one\ndiff(parse_one("SELECT a + b, c, d"), parse_one("SELECT c, a - b, d"))\n
\n
\n\n
\n
[\n  Remove(expression=(ADD this:\n    (COLUMN this:\n      (IDENTIFIER this: a, quoted: False)), expression:\n    (COLUMN this:\n      (IDENTIFIER this: b, quoted: False)))),\n  Insert(expression=(SUB this:\n    (COLUMN this:\n      (IDENTIFIER this: a, quoted: False)), expression:\n    (COLUMN this:\n      (IDENTIFIER this: b, quoted: False)))),\n  Move(expression=(COLUMN this:\n    (IDENTIFIER this: c, quoted: False))),\n  Keep(source=(IDENTIFIER this: b, quoted: False), target=(IDENTIFIER this: b, quoted: False)),\n  ...\n]\n
\n
\n\n

See also: Semantic Diff for SQL.

\n\n

Custom Dialects

\n\n

Dialects can be added by subclassing Dialect:

\n\n
\n
from sqlglot import exp\nfrom sqlglot.dialects.dialect import Dialect\nfrom sqlglot.generator import Generator\nfrom sqlglot.tokens import Tokenizer, TokenType\n\n\nclass Custom(Dialect):\n    class Tokenizer(Tokenizer):\n        QUOTES = ["'", '"']\n        IDENTIFIERS = ["`"]\n\n        KEYWORDS = {\n            **Tokenizer.KEYWORDS,\n            "INT64": TokenType.BIGINT,\n            "FLOAT64": TokenType.DOUBLE,\n        }\n\n    class Generator(Generator):\n        TRANSFORMS = {exp.Array: lambda self, e: f"[{self.expressions(e)}]"}\n\n        TYPE_MAPPING = {\n            exp.DataType.Type.TINYINT: "INT64",\n            exp.DataType.Type.SMALLINT: "INT64",\n            exp.DataType.Type.INT: "INT64",\n            exp.DataType.Type.BIGINT: "INT64",\n            exp.DataType.Type.DECIMAL: "NUMERIC",\n            exp.DataType.Type.FLOAT: "FLOAT64",\n            exp.DataType.Type.DOUBLE: "FLOAT64",\n            exp.DataType.Type.BOOLEAN: "BOOL",\n            exp.DataType.Type.TEXT: "STRING",\n        }\n\nprint(Dialect["custom"])\n
\n
\n\n
<class '__main__.Custom'>\n
\n\n

SQL Execution

\n\n

One can even interpret SQL queries using SQLGlot, where the tables are represented as Python dictionaries. Although the engine is not very fast (it's not supposed to be) and is in a relatively early stage of development, it can be useful for unit testing and running SQL natively across Python objects. Additionally, the foundation can be easily integrated with fast compute kernels (arrow, pandas). Below is an example showcasing the execution of a SELECT expression that involves aggregations and JOINs:

\n\n
\n
from sqlglot.executor import execute\n\ntables = {\n    "sushi": [\n        {"id": 1, "price": 1.0},\n        {"id": 2, "price": 2.0},\n        {"id": 3, "price": 3.0},\n    ],\n    "order_items": [\n        {"sushi_id": 1, "order_id": 1},\n        {"sushi_id": 1, "order_id": 1},\n        {"sushi_id": 2, "order_id": 1},\n        {"sushi_id": 3, "order_id": 2},\n    ],\n    "orders": [\n        {"id": 1, "user_id": 1},\n        {"id": 2, "user_id": 2},\n    ],\n}\n\nexecute(\n    """\n    SELECT\n      o.user_id,\n      SUM(s.price) AS price\n    FROM orders o\n    JOIN order_items i\n      ON o.id = i.order_id\n    JOIN sushi s\n      ON i.sushi_id = s.id\n    GROUP BY o.user_id\n    """,\n    tables=tables\n)\n
\n
\n\n
\n
user_id price\n      1   4.0\n      2   3.0\n
\n
\n\n

See also: Writing a Python SQL engine from scratch.

\n\n

Used By

\n\n\n\n

Documentation

\n\n

SQLGlot uses pdoc to serve its API documentation:

\n\n
make docs-serve\n
\n\n

Run Tests and Lint

\n\n
make check  # Set SKIP_INTEGRATION=1 to skip integration tests\n
\n\n

Benchmarks

\n\n

Benchmarks run on Python 3.10.5 in seconds.

\n\n\n\n\n \n \n \n \n \n \n \n\n\n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n
Querysqlglotsqlfluffsqltreesqlparsemoz_sql_parsersqloxide
tpch0.01308 (1.0)1.60626 (122.7)0.01168 (0.893)0.04958 (3.791)0.08543 (6.531)0.00136 (0.104)
short0.00109 (1.0)0.14134 (129.2)0.00099 (0.906)0.00342 (3.131)0.00652 (5.970)8.76E-5 (0.080)
long0.01399 (1.0)2.12632 (151.9)0.01126 (0.805)0.04410 (3.151)0.06671 (4.767)0.00107 (0.076)
crazy0.03969 (1.0)24.3777 (614.1)0.03917 (0.987)11.7043 (294.8)1.03280 (26.02)0.00625 (0.157)
\n\n

Optional Dependencies

\n\n

SQLGlot uses dateutil to simplify literal timedelta expressions. The optimizer will not simplify expressions like the following if the module cannot be found:

\n\n
\n
x + interval '1' month\n
\n
\n\n
\n"}, "sqlglot.pretty": {"fullname": "sqlglot.pretty", "modulename": "sqlglot", "qualname": "pretty", "kind": "variable", "doc": "

Whether to format generated SQL by default.

\n", "default_value": "False"}, "sqlglot.schema": {"fullname": "sqlglot.schema", "modulename": "sqlglot.schema", "kind": "module", "doc": "

\n"}, "sqlglot.parse": {"fullname": "sqlglot.parse", "modulename": "sqlglot", "qualname": "parse", "kind": "function", "doc": "

Parses the given SQL string into a collection of syntax trees, one per parsed SQL statement.

\n\n
Arguments:
\n\n
    \n
  • sql: the SQL code string to parse.
  • \n
  • read: the SQL dialect to apply during parsing (eg. \"spark\", \"hive\", \"presto\", \"mysql\").
  • \n
  • **opts: other sqlglot.parser.Parser options.
  • \n
\n\n
Returns:
\n\n
\n

The resulting syntax tree collection.

\n
\n", "signature": "(\tsql: str,\tread: Union[str, sqlglot.dialects.dialect.Dialect, Type[sqlglot.dialects.dialect.Dialect], NoneType] = None,\t**opts) -> List[Optional[sqlglot.expressions.Expression]]:", "funcdef": "def"}, "sqlglot.parse_one": {"fullname": "sqlglot.parse_one", "modulename": "sqlglot", "qualname": "parse_one", "kind": "function", "doc": "

Parses the given SQL string and returns a syntax tree for the first parsed SQL statement.

\n\n
Arguments:
\n\n
    \n
  • sql: the SQL code string to parse.
  • \n
  • read: the SQL dialect to apply during parsing (eg. \"spark\", \"hive\", \"presto\", \"mysql\").
  • \n
  • into: the SQLGlot Expression to parse into.
  • \n
  • **opts: other sqlglot.parser.Parser options.
  • \n
\n\n
Returns:
\n\n
\n

The syntax tree for the first parsed statement.

\n
\n", "signature": "(\tsql: str,\tread: Union[str, sqlglot.dialects.dialect.Dialect, Type[sqlglot.dialects.dialect.Dialect], NoneType] = None,\tinto: Union[str, Type[sqlglot.expressions.Expression], Collection[Union[str, Type[sqlglot.expressions.Expression]]], NoneType] = None,\t**opts) -> sqlglot.expressions.Expression:", "funcdef": "def"}, "sqlglot.transpile": {"fullname": "sqlglot.transpile", "modulename": "sqlglot", "qualname": "transpile", "kind": "function", "doc": "

Parses the given SQL string in accordance with the source dialect and returns a list of SQL strings transformed\nto conform to the target dialect. Each string in the returned list represents a single transformed SQL statement.

\n\n
Arguments:
\n\n
    \n
  • sql: the SQL code string to transpile.
  • \n
  • read: the source dialect used to parse the input string (eg. \"spark\", \"hive\", \"presto\", \"mysql\").
  • \n
  • write: the target dialect into which the input should be transformed (eg. \"spark\", \"hive\", \"presto\", \"mysql\").
  • \n
  • identity: if set to True and if the target dialect is not specified the source dialect will be used as both:\nthe source and the target dialect.
  • \n
  • error_level: the desired error level of the parser.
  • \n
  • **opts: other sqlglot.generator.Generator options.
  • \n
\n\n
Returns:
\n\n
\n

The list of transpiled SQL statements.

\n
\n", "signature": "(\tsql: str,\tread: Union[str, sqlglot.dialects.dialect.Dialect, Type[sqlglot.dialects.dialect.Dialect], NoneType] = None,\twrite: Union[str, sqlglot.dialects.dialect.Dialect, Type[sqlglot.dialects.dialect.Dialect], NoneType] = None,\tidentity: bool = True,\terror_level: Optional[sqlglot.errors.ErrorLevel] = None,\t**opts) -> List[str]:", "funcdef": "def"}, "sqlglot.dataframe": {"fullname": "sqlglot.dataframe", "modulename": "sqlglot.dataframe", "kind": "module", "doc": "

PySpark DataFrame SQL Generator

\n\n

This is a drop-in replacement for the PySpark DataFrame API that will generate SQL instead of executing DataFrame operations directly. This, when combined with the transpiling support in SQLGlot, allows one to write PySpark DataFrame code and execute it on other engines like DuckDB, Presto, Spark, Snowflake, and BigQuery.

\n\n

Currently many of the common operations are covered and more functionality will be added over time. Please open an issue or PR with your feedback or contribution to help influence what should be prioritized next and make sure your use case is properly supported.

\n\n

How to use

\n\n

Instructions

\n\n
    \n
  • Install SQLGlot and that is all that is required to just generate SQL. The examples show generating SQL and then executing that SQL on a specific engine and that will require that engine's client library.
  • \n
  • Find/replace all from pyspark.sql with from sqlglot.dataframe.
  • \n
  • Prior to any spark.read.table or spark.table run sqlglot.schema.add_table('<table_name>', <column_structure>).\n
      \n
    • The column structure can be defined the following ways:\n
        \n
      • Dictionary where the keys are column names and values are string of the Spark SQL type name.\n
          \n
        • Ex: {'cola': 'string', 'colb': 'int'}
        • \n
      • \n
      • PySpark DataFrame StructType similar to when using createDataFrame.\n
          \n
        • Ex: StructType([StructField('cola', StringType()), StructField('colb', IntegerType())])
        • \n
      • \n
      • A string of names and types similar to what is supported in createDataFrame.\n
          \n
        • Ex: cola: STRING, colb: INT
        • \n
      • \n
      • [Not Recommended] A list of string column names without type.\n
          \n
        • Ex: ['cola', 'colb']
        • \n
        • The lack of types may limit functionality in future releases.
        • \n
      • \n
    • \n
    • See Registering Custom Schema for information on how to skip this step if the information is stored externally.
    • \n
  • \n
  • Add .sql(pretty=True) to your final DataFrame command to return a list of sql statements to run that command.\n
      \n
    • In most cases a single SQL statement is returned. Currently the only exception is when caching DataFrames which isn't supported in other dialects.
    • \n
    • Spark is the default output dialect. See dialects for a full list of dialects.
    • \n
    • Ex: .sql(pretty=True, dialect='bigquery')
    • \n
  • \n
\n\n

Examples

\n\n
\n
import sqlglot\nfrom sqlglot.dataframe.sql.session import SparkSession\nfrom sqlglot.dataframe.sql import functions as F\n\nsqlglot.schema.add_table('employee', {\n  'employee_id': 'INT',\n  'fname': 'STRING',\n  'lname': 'STRING',\n  'age': 'INT',\n})  # Register the table structure prior to reading from the table\n\nspark = SparkSession()\n\ndf = (\n    spark\n    .table('employee')\n    .groupBy(F.col("age"))\n    .agg(F.countDistinct(F.col("employee_id")).alias("num_employees")) \n)\n\nprint(df.sql(pretty=True))  # Spark will be the dialect used by default\n
\n
\n\n
SELECT\n  `employee`.`age` AS `age`,\n  COUNT(DISTINCT `employee`.`employee_id`) AS `num_employees`\nFROM `employee` AS `employee`\nGROUP BY\n  `employee`.`age`\n
\n\n

Registering Custom Schema Class

\n\n

The step of adding sqlglot.schema.add_table can be skipped if you have the column structure stored externally like in a file or from an external metadata table. This can be done by writing a class that implements the sqlglot.schema.Schema abstract class and then assigning that class to sqlglot.schema.

\n\n
\n
import sqlglot\nfrom sqlglot.dataframe.sql.session import SparkSession\nfrom sqlglot.dataframe.sql import functions as F\nfrom sqlglot.schema import Schema\n\n\nclass ExternalSchema(Schema):\n  ...\n\nsqlglot.schema = ExternalSchema()\n\nspark = SparkSession()\n\ndf = (\n    spark\n    .table('employee')\n    .groupBy(F.col("age"))\n    .agg(F.countDistinct(F.col("employee_id")).alias("num_employees")) \n)\n\nprint(df.sql(pretty=True))\n
\n
\n\n

Example Implementations

\n\n

Bigquery

\n\n
\n
from google.cloud import bigquery\nfrom sqlglot.dataframe.sql.session import SparkSession\nfrom sqlglot.dataframe.sql import types\nfrom sqlglot.dataframe.sql import functions as F\n\nclient = bigquery.Client()\n\ndata = [\n    (1, "Jack", "Shephard", 34),\n    (2, "John", "Locke", 48),\n    (3, "Kate", "Austen", 34),\n    (4, "Claire", "Littleton", 22),\n    (5, "Hugo", "Reyes", 26),\n]\nschema = types.StructType([\n    types.StructField('employee_id', types.IntegerType(), False),\n    types.StructField('fname', types.StringType(), False),\n    types.StructField('lname', types.StringType(), False),\n    types.StructField('age', types.IntegerType(), False),\n])\n\nsql_statements = (\n    SparkSession()\n    .createDataFrame(data, schema)\n    .groupBy(F.col("age"))\n    .agg(F.countDistinct(F.col("employee_id")).alias("num_employees"))\n    .sql(dialect="bigquery")\n)\n\nresult = None\nfor sql in sql_statements:\n  result = client.query(sql)\n\nassert result is not None\nfor row in client.query(result):\n    print(f"Age: {row['age']}, Num Employees: {row['num_employees']}")\n
\n
\n\n

Snowflake

\n\n
\n
import os\n\nimport snowflake.connector\nfrom sqlglot.dataframe.session import SparkSession\nfrom sqlglot.dataframe import types\nfrom sqlglot.dataframe import functions as F\n\nctx = snowflake.connector.connect(\n    user=os.environ["SNOWFLAKE_USER"],\n    password=os.environ["SNOWFLAKE_PASS"],\n    account=os.environ["SNOWFLAKE_ACCOUNT"]\n)\ncs = ctx.cursor()\n\ndata = [\n    (1, "Jack", "Shephard", 34),\n    (2, "John", "Locke", 48),\n    (3, "Kate", "Austen", 34),\n    (4, "Claire", "Littleton", 22),\n    (5, "Hugo", "Reyes", 26),\n]\nschema = types.StructType([\n    types.StructField('employee_id', types.IntegerType(), False),\n    types.StructField('fname', types.StringType(), False),\n    types.StructField('lname', types.StringType(), False),\n    types.StructField('age', types.IntegerType(), False),\n])\n\nsql_statements = (\n    SparkSession()\n    .createDataFrame(data, schema)\n    .groupBy(F.col("age"))\n    .agg(F.countDistinct(F.col("lname")).alias("num_employees"))\n    .sql(dialect="snowflake")\n)\n\ntry:\n    for sql in sql_statements:\n        cs.execute(sql)\n    results = cs.fetchall()\n    for row in results:\n        print(f"Age: {row[0]}, Num Employees: {row[1]}")\nfinally:\n    cs.close()\nctx.close()\n
\n
\n\n

Spark

\n\n
\n
from pyspark.sql.session import SparkSession as PySparkSession\nfrom sqlglot.dataframe.sql.session import SparkSession\nfrom sqlglot.dataframe.sql import types\nfrom sqlglot.dataframe.sql import functions as F\n\ndata = [\n    (1, "Jack", "Shephard", 34),\n    (2, "John", "Locke", 48),\n    (3, "Kate", "Austen", 34),\n    (4, "Claire", "Littleton", 22),\n    (5, "Hugo", "Reyes", 26),\n]\nschema = types.StructType([\n    types.StructField('employee_id', types.IntegerType(), False),\n    types.StructField('fname', types.StringType(), False),\n    types.StructField('lname', types.StringType(), False),\n    types.StructField('age', types.IntegerType(), False),\n])\n\nsql_statements = (\n    SparkSession()\n    .createDataFrame(data, schema)\n    .groupBy(F.col("age"))\n    .agg(F.countDistinct(F.col("employee_id")).alias("num_employees"))\n    .sql(dialect="spark")\n)\n\npyspark = PySparkSession.builder.master("local[*]").getOrCreate()\n\ndf = None\nfor sql in sql_statements:\n    df = pyspark.sql(sql)\n\nassert df is not None\ndf.show()\n
\n
\n\n

Unsupportable Operations

\n\n

Any operation that lacks a way to represent it in SQL cannot be supported by this tool. An example of this would be rdd operations. Since the DataFrame API though is mostly modeled around SQL concepts most operations can be supported.

\n"}, "sqlglot.dataframe.sql": {"fullname": "sqlglot.dataframe.sql", "modulename": "sqlglot.dataframe.sql", "kind": "module", "doc": "

\n"}, "sqlglot.dataframe.sql.SparkSession": {"fullname": "sqlglot.dataframe.sql.SparkSession", "modulename": "sqlglot.dataframe.sql", "qualname": "SparkSession", "kind": "class", "doc": "

\n"}, "sqlglot.dataframe.sql.SparkSession.table": {"fullname": "sqlglot.dataframe.sql.SparkSession.table", "modulename": "sqlglot.dataframe.sql", "qualname": "SparkSession.table", "kind": "function", "doc": "

\n", "signature": "(self, tableName: str) -> sqlglot.dataframe.sql.dataframe.DataFrame:", "funcdef": "def"}, "sqlglot.dataframe.sql.SparkSession.createDataFrame": {"fullname": "sqlglot.dataframe.sql.SparkSession.createDataFrame", "modulename": "sqlglot.dataframe.sql", "qualname": "SparkSession.createDataFrame", "kind": "function", "doc": "

\n", "signature": "(\tself,\tdata: Sequence[Union[Dict[str, <MagicMock id='139719846869552'>], List[<MagicMock id='139719846869552'>], Tuple]],\tschema: Optional[<MagicMock id='139719847382416'>] = None,\tsamplingRatio: Optional[float] = None,\tverifySchema: bool = False) -> sqlglot.dataframe.sql.dataframe.DataFrame:", "funcdef": "def"}, "sqlglot.dataframe.sql.SparkSession.sql": {"fullname": "sqlglot.dataframe.sql.SparkSession.sql", "modulename": "sqlglot.dataframe.sql", "qualname": "SparkSession.sql", "kind": "function", "doc": "

\n", "signature": "(self, sqlQuery: str) -> sqlglot.dataframe.sql.dataframe.DataFrame:", "funcdef": "def"}, "sqlglot.dataframe.sql.DataFrame": {"fullname": "sqlglot.dataframe.sql.DataFrame", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrame", "kind": "class", "doc": "

\n"}, "sqlglot.dataframe.sql.DataFrame.__init__": {"fullname": "sqlglot.dataframe.sql.DataFrame.__init__", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrame.__init__", "kind": "function", "doc": "

\n", "signature": "(\tspark: <MagicMock id='139719851707024'>,\texpression: sqlglot.expressions.Select,\tbranch_id: Optional[str] = None,\tsequence_id: Optional[str] = None,\tlast_op: sqlglot.dataframe.sql.operations.Operation = <Operation.INIT: -1>,\tpending_hints: Optional[List[sqlglot.expressions.Expression]] = None,\toutput_expression_container: Optional[<MagicMock id='139719851535440'>] = None,\t**kwargs)"}, "sqlglot.dataframe.sql.DataFrame.sql": {"fullname": "sqlglot.dataframe.sql.DataFrame.sql", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrame.sql", "kind": "function", "doc": "

\n", "signature": "(self, dialect='spark', optimize=True, **kwargs) -> List[str]:", "funcdef": "def"}, "sqlglot.dataframe.sql.DataFrame.copy": {"fullname": "sqlglot.dataframe.sql.DataFrame.copy", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrame.copy", "kind": "function", "doc": "

\n", "signature": "(self, **kwargs) -> sqlglot.dataframe.sql.dataframe.DataFrame:", "funcdef": "def"}, "sqlglot.dataframe.sql.DataFrame.select": {"fullname": "sqlglot.dataframe.sql.DataFrame.select", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrame.select", "kind": "function", "doc": "

\n", "signature": "(self, *cols, **kwargs) -> sqlglot.dataframe.sql.dataframe.DataFrame:", "funcdef": "def"}, "sqlglot.dataframe.sql.DataFrame.alias": {"fullname": "sqlglot.dataframe.sql.DataFrame.alias", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrame.alias", "kind": "function", "doc": "

\n", "signature": "(self, name: str, **kwargs) -> sqlglot.dataframe.sql.dataframe.DataFrame:", "funcdef": "def"}, "sqlglot.dataframe.sql.DataFrame.where": {"fullname": "sqlglot.dataframe.sql.DataFrame.where", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrame.where", "kind": "function", "doc": "

\n", "signature": "(\tself,\tcolumn: Union[sqlglot.dataframe.sql.column.Column, bool],\t**kwargs) -> sqlglot.dataframe.sql.dataframe.DataFrame:", "funcdef": "def"}, "sqlglot.dataframe.sql.DataFrame.filter": {"fullname": "sqlglot.dataframe.sql.DataFrame.filter", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrame.filter", "kind": "function", "doc": "

\n", "signature": "(\tself,\tcolumn: Union[sqlglot.dataframe.sql.column.Column, bool],\t**kwargs) -> sqlglot.dataframe.sql.dataframe.DataFrame:", "funcdef": "def"}, "sqlglot.dataframe.sql.DataFrame.groupBy": {"fullname": "sqlglot.dataframe.sql.DataFrame.groupBy", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrame.groupBy", "kind": "function", "doc": "

\n", "signature": "(self, *cols, **kwargs) -> sqlglot.dataframe.sql.group.GroupedData:", "funcdef": "def"}, "sqlglot.dataframe.sql.DataFrame.agg": {"fullname": "sqlglot.dataframe.sql.DataFrame.agg", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrame.agg", "kind": "function", "doc": "

\n", "signature": "(self, *exprs, **kwargs) -> sqlglot.dataframe.sql.dataframe.DataFrame:", "funcdef": "def"}, "sqlglot.dataframe.sql.DataFrame.join": {"fullname": "sqlglot.dataframe.sql.DataFrame.join", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrame.join", "kind": "function", "doc": "

\n", "signature": "(\tself,\tother_df: sqlglot.dataframe.sql.dataframe.DataFrame,\ton: Union[str, List[str], sqlglot.dataframe.sql.column.Column, List[sqlglot.dataframe.sql.column.Column]],\thow: str = 'inner',\t**kwargs) -> sqlglot.dataframe.sql.dataframe.DataFrame:", "funcdef": "def"}, "sqlglot.dataframe.sql.DataFrame.orderBy": {"fullname": "sqlglot.dataframe.sql.DataFrame.orderBy", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrame.orderBy", "kind": "function", "doc": "

This implementation lets any ordered columns take priority over whatever is provided in ascending. Spark\nhas irregular behavior and can result in runtime errors. Users shouldn't be mixing the two anyways so this\nis unlikely to come up.

\n", "signature": "(\tself,\t*cols: Union[str, sqlglot.dataframe.sql.column.Column],\tascending: Union[Any, List[Any], NoneType] = None) -> sqlglot.dataframe.sql.dataframe.DataFrame:", "funcdef": "def"}, "sqlglot.dataframe.sql.DataFrame.sort": {"fullname": "sqlglot.dataframe.sql.DataFrame.sort", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrame.sort", "kind": "function", "doc": "

This implementation lets any ordered columns take priority over whatever is provided in ascending. Spark\nhas irregular behavior and can result in runtime errors. Users shouldn't be mixing the two anyways so this\nis unlikely to come up.

\n", "signature": "(\tself,\t*cols: Union[str, sqlglot.dataframe.sql.column.Column],\tascending: Union[Any, List[Any], NoneType] = None) -> sqlglot.dataframe.sql.dataframe.DataFrame:", "funcdef": "def"}, "sqlglot.dataframe.sql.DataFrame.union": {"fullname": "sqlglot.dataframe.sql.DataFrame.union", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrame.union", "kind": "function", "doc": "

\n", "signature": "(\tself,\tother: sqlglot.dataframe.sql.dataframe.DataFrame) -> sqlglot.dataframe.sql.dataframe.DataFrame:", "funcdef": "def"}, "sqlglot.dataframe.sql.DataFrame.unionAll": {"fullname": "sqlglot.dataframe.sql.DataFrame.unionAll", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrame.unionAll", "kind": "function", "doc": "

\n", "signature": "(\tself,\tother: sqlglot.dataframe.sql.dataframe.DataFrame) -> sqlglot.dataframe.sql.dataframe.DataFrame:", "funcdef": "def"}, "sqlglot.dataframe.sql.DataFrame.unionByName": {"fullname": "sqlglot.dataframe.sql.DataFrame.unionByName", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrame.unionByName", "kind": "function", "doc": "

\n", "signature": "(\tself,\tother: sqlglot.dataframe.sql.dataframe.DataFrame,\tallowMissingColumns: bool = False):", "funcdef": "def"}, "sqlglot.dataframe.sql.DataFrame.intersect": {"fullname": "sqlglot.dataframe.sql.DataFrame.intersect", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrame.intersect", "kind": "function", "doc": "

\n", "signature": "(\tself,\tother: sqlglot.dataframe.sql.dataframe.DataFrame) -> sqlglot.dataframe.sql.dataframe.DataFrame:", "funcdef": "def"}, "sqlglot.dataframe.sql.DataFrame.intersectAll": {"fullname": "sqlglot.dataframe.sql.DataFrame.intersectAll", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrame.intersectAll", "kind": "function", "doc": "

\n", "signature": "(\tself,\tother: sqlglot.dataframe.sql.dataframe.DataFrame) -> sqlglot.dataframe.sql.dataframe.DataFrame:", "funcdef": "def"}, "sqlglot.dataframe.sql.DataFrame.exceptAll": {"fullname": "sqlglot.dataframe.sql.DataFrame.exceptAll", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrame.exceptAll", "kind": "function", "doc": "

\n", "signature": "(\tself,\tother: sqlglot.dataframe.sql.dataframe.DataFrame) -> sqlglot.dataframe.sql.dataframe.DataFrame:", "funcdef": "def"}, "sqlglot.dataframe.sql.DataFrame.distinct": {"fullname": "sqlglot.dataframe.sql.DataFrame.distinct", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrame.distinct", "kind": "function", "doc": "

\n", "signature": "(self) -> sqlglot.dataframe.sql.dataframe.DataFrame:", "funcdef": "def"}, "sqlglot.dataframe.sql.DataFrame.dropDuplicates": {"fullname": "sqlglot.dataframe.sql.DataFrame.dropDuplicates", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrame.dropDuplicates", "kind": "function", "doc": "

\n", "signature": "(self, subset: Optional[List[str]] = None):", "funcdef": "def"}, "sqlglot.dataframe.sql.DataFrame.dropna": {"fullname": "sqlglot.dataframe.sql.DataFrame.dropna", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrame.dropna", "kind": "function", "doc": "

\n", "signature": "(\tself,\thow: str = 'any',\tthresh: Optional[int] = None,\tsubset: Union[str, Tuple[str, ...], List[str], NoneType] = None) -> sqlglot.dataframe.sql.dataframe.DataFrame:", "funcdef": "def"}, "sqlglot.dataframe.sql.DataFrame.fillna": {"fullname": "sqlglot.dataframe.sql.DataFrame.fillna", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrame.fillna", "kind": "function", "doc": "

Functionality Difference: If you provide a value to replace a null and that type conflicts\nwith the type of the column then PySpark will just ignore your replacement.\nThis will try to cast them to be the same in some cases. So they won't always match.\nBest to not mix types so make sure replacement is the same type as the column

\n\n

Possibility for improvement: Use typeof function to get the type of the column\nand check if it matches the type of the value provided. If not then make it null.

\n", "signature": "(\tself,\tvalue: <MagicMock id='139719847202288'>,\tsubset: Union[str, Tuple[str, ...], List[str], NoneType] = None) -> sqlglot.dataframe.sql.dataframe.DataFrame:", "funcdef": "def"}, "sqlglot.dataframe.sql.DataFrame.replace": {"fullname": "sqlglot.dataframe.sql.DataFrame.replace", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrame.replace", "kind": "function", "doc": "

\n", "signature": "(\tself,\tto_replace: Union[bool, int, float, str, List, Dict],\tvalue: Union[bool, int, float, str, List, NoneType] = None,\tsubset: Union[Collection[<MagicMock id='139719846105664'>], <MagicMock id='139719846105664'>, NoneType] = None) -> sqlglot.dataframe.sql.dataframe.DataFrame:", "funcdef": "def"}, "sqlglot.dataframe.sql.DataFrame.withColumn": {"fullname": "sqlglot.dataframe.sql.DataFrame.withColumn", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrame.withColumn", "kind": "function", "doc": "

\n", "signature": "(\tself,\tcolName: str,\tcol: sqlglot.dataframe.sql.column.Column) -> sqlglot.dataframe.sql.dataframe.DataFrame:", "funcdef": "def"}, "sqlglot.dataframe.sql.DataFrame.withColumnRenamed": {"fullname": "sqlglot.dataframe.sql.DataFrame.withColumnRenamed", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrame.withColumnRenamed", "kind": "function", "doc": "

\n", "signature": "(self, existing: str, new: str):", "funcdef": "def"}, "sqlglot.dataframe.sql.DataFrame.drop": {"fullname": "sqlglot.dataframe.sql.DataFrame.drop", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrame.drop", "kind": "function", "doc": "

\n", "signature": "(\tself,\t*cols: Union[str, sqlglot.dataframe.sql.column.Column]) -> sqlglot.dataframe.sql.dataframe.DataFrame:", "funcdef": "def"}, "sqlglot.dataframe.sql.DataFrame.limit": {"fullname": "sqlglot.dataframe.sql.DataFrame.limit", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrame.limit", "kind": "function", "doc": "

\n", "signature": "(self, num: int) -> sqlglot.dataframe.sql.dataframe.DataFrame:", "funcdef": "def"}, "sqlglot.dataframe.sql.DataFrame.hint": {"fullname": "sqlglot.dataframe.sql.DataFrame.hint", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrame.hint", "kind": "function", "doc": "

\n", "signature": "(\tself,\tname: str,\t*parameters: Union[str, int, NoneType]) -> sqlglot.dataframe.sql.dataframe.DataFrame:", "funcdef": "def"}, "sqlglot.dataframe.sql.DataFrame.repartition": {"fullname": "sqlglot.dataframe.sql.DataFrame.repartition", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrame.repartition", "kind": "function", "doc": "

\n", "signature": "(\tself,\tnumPartitions: Union[int, <MagicMock id='139719845685008'>],\t*cols: <MagicMock id='139719845795232'>) -> sqlglot.dataframe.sql.dataframe.DataFrame:", "funcdef": "def"}, "sqlglot.dataframe.sql.DataFrame.coalesce": {"fullname": "sqlglot.dataframe.sql.DataFrame.coalesce", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrame.coalesce", "kind": "function", "doc": "

\n", "signature": "(self, numPartitions: int) -> sqlglot.dataframe.sql.dataframe.DataFrame:", "funcdef": "def"}, "sqlglot.dataframe.sql.DataFrame.cache": {"fullname": "sqlglot.dataframe.sql.DataFrame.cache", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrame.cache", "kind": "function", "doc": "

\n", "signature": "(self) -> sqlglot.dataframe.sql.dataframe.DataFrame:", "funcdef": "def"}, "sqlglot.dataframe.sql.DataFrame.persist": {"fullname": "sqlglot.dataframe.sql.DataFrame.persist", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrame.persist", "kind": "function", "doc": "

Storage Level Options: https://spark.apache.org/docs/3.0.0-preview/sql-ref-syntax-aux-cache-cache-table.html

\n", "signature": "(\tself,\tstorageLevel: str = 'MEMORY_AND_DISK_SER') -> sqlglot.dataframe.sql.dataframe.DataFrame:", "funcdef": "def"}, "sqlglot.dataframe.sql.GroupedData": {"fullname": "sqlglot.dataframe.sql.GroupedData", "modulename": "sqlglot.dataframe.sql", "qualname": "GroupedData", "kind": "class", "doc": "

\n"}, "sqlglot.dataframe.sql.GroupedData.__init__": {"fullname": "sqlglot.dataframe.sql.GroupedData.__init__", "modulename": "sqlglot.dataframe.sql", "qualname": "GroupedData.__init__", "kind": "function", "doc": "

\n", "signature": "(\tdf: sqlglot.dataframe.sql.dataframe.DataFrame,\tgroup_by_cols: List[sqlglot.dataframe.sql.column.Column],\tlast_op: sqlglot.dataframe.sql.operations.Operation)"}, "sqlglot.dataframe.sql.GroupedData.agg": {"fullname": "sqlglot.dataframe.sql.GroupedData.agg", "modulename": "sqlglot.dataframe.sql", "qualname": "GroupedData.agg", "kind": "function", "doc": "

\n", "signature": "(\tself,\t*exprs: Union[sqlglot.dataframe.sql.column.Column, Dict[str, str]]) -> sqlglot.dataframe.sql.dataframe.DataFrame:", "funcdef": "def"}, "sqlglot.dataframe.sql.GroupedData.count": {"fullname": "sqlglot.dataframe.sql.GroupedData.count", "modulename": "sqlglot.dataframe.sql", "qualname": "GroupedData.count", "kind": "function", "doc": "

\n", "signature": "(self) -> sqlglot.dataframe.sql.dataframe.DataFrame:", "funcdef": "def"}, "sqlglot.dataframe.sql.GroupedData.mean": {"fullname": "sqlglot.dataframe.sql.GroupedData.mean", "modulename": "sqlglot.dataframe.sql", "qualname": "GroupedData.mean", "kind": "function", "doc": "

\n", "signature": "(self, *cols: str) -> sqlglot.dataframe.sql.dataframe.DataFrame:", "funcdef": "def"}, "sqlglot.dataframe.sql.GroupedData.avg": {"fullname": "sqlglot.dataframe.sql.GroupedData.avg", "modulename": "sqlglot.dataframe.sql", "qualname": "GroupedData.avg", "kind": "function", "doc": "

\n", "signature": "(self, *cols: str) -> sqlglot.dataframe.sql.dataframe.DataFrame:", "funcdef": "def"}, "sqlglot.dataframe.sql.GroupedData.max": {"fullname": "sqlglot.dataframe.sql.GroupedData.max", "modulename": "sqlglot.dataframe.sql", "qualname": "GroupedData.max", "kind": "function", "doc": "

\n", "signature": "(self, *cols: str) -> sqlglot.dataframe.sql.dataframe.DataFrame:", "funcdef": "def"}, "sqlglot.dataframe.sql.GroupedData.min": {"fullname": "sqlglot.dataframe.sql.GroupedData.min", "modulename": "sqlglot.dataframe.sql", "qualname": "GroupedData.min", "kind": "function", "doc": "

\n", "signature": "(self, *cols: str) -> sqlglot.dataframe.sql.dataframe.DataFrame:", "funcdef": "def"}, "sqlglot.dataframe.sql.GroupedData.sum": {"fullname": "sqlglot.dataframe.sql.GroupedData.sum", "modulename": "sqlglot.dataframe.sql", "qualname": "GroupedData.sum", "kind": "function", "doc": "

\n", "signature": "(self, *cols: str) -> sqlglot.dataframe.sql.dataframe.DataFrame:", "funcdef": "def"}, "sqlglot.dataframe.sql.GroupedData.pivot": {"fullname": "sqlglot.dataframe.sql.GroupedData.pivot", "modulename": "sqlglot.dataframe.sql", "qualname": "GroupedData.pivot", "kind": "function", "doc": "

\n", "signature": "(self, *cols: str) -> sqlglot.dataframe.sql.dataframe.DataFrame:", "funcdef": "def"}, "sqlglot.dataframe.sql.Column": {"fullname": "sqlglot.dataframe.sql.Column", "modulename": "sqlglot.dataframe.sql", "qualname": "Column", "kind": "class", "doc": "

\n"}, "sqlglot.dataframe.sql.Column.__init__": {"fullname": "sqlglot.dataframe.sql.Column.__init__", "modulename": "sqlglot.dataframe.sql", "qualname": "Column.__init__", "kind": "function", "doc": "

\n", "signature": "(\texpression: Union[<MagicMock id='139719847713120'>, sqlglot.expressions.Expression, NoneType])"}, "sqlglot.dataframe.sql.Column.ensure_col": {"fullname": "sqlglot.dataframe.sql.Column.ensure_col", "modulename": "sqlglot.dataframe.sql", "qualname": "Column.ensure_col", "kind": "function", "doc": "

\n", "signature": "(\tcls,\tvalue: Union[<MagicMock id='139719845612224'>, sqlglot.expressions.Expression, NoneType]):", "funcdef": "def"}, "sqlglot.dataframe.sql.Column.ensure_cols": {"fullname": "sqlglot.dataframe.sql.Column.ensure_cols", "modulename": "sqlglot.dataframe.sql", "qualname": "Column.ensure_cols", "kind": "function", "doc": "

\n", "signature": "(\tcls,\targs: List[Union[<MagicMock id='139719846275024'>, sqlglot.expressions.Expression]]) -> List[sqlglot.dataframe.sql.column.Column]:", "funcdef": "def"}, "sqlglot.dataframe.sql.Column.invoke_anonymous_function": {"fullname": "sqlglot.dataframe.sql.Column.invoke_anonymous_function", "modulename": "sqlglot.dataframe.sql", "qualname": "Column.invoke_anonymous_function", "kind": "function", "doc": "

\n", "signature": "(\tcls,\tcolumn: Optional[<MagicMock id='139719846030752'>],\tfunc_name: str,\t*args: Optional[<MagicMock id='139719845950944'>]) -> sqlglot.dataframe.sql.column.Column:", "funcdef": "def"}, "sqlglot.dataframe.sql.Column.invoke_expression_over_column": {"fullname": "sqlglot.dataframe.sql.Column.invoke_expression_over_column", "modulename": "sqlglot.dataframe.sql", "qualname": "Column.invoke_expression_over_column", "kind": "function", "doc": "

\n", "signature": "(\tcls,\tcolumn: Optional[<MagicMock id='139719845906896'>],\tcallable_expression: Callable,\t**kwargs) -> sqlglot.dataframe.sql.column.Column:", "funcdef": "def"}, "sqlglot.dataframe.sql.Column.binary_op": {"fullname": "sqlglot.dataframe.sql.Column.binary_op", "modulename": "sqlglot.dataframe.sql", "qualname": "Column.binary_op", "kind": "function", "doc": "

\n", "signature": "(\tself,\tklass: Callable,\tother: <MagicMock id='139719845931152'>,\t**kwargs) -> sqlglot.dataframe.sql.column.Column:", "funcdef": "def"}, "sqlglot.dataframe.sql.Column.inverse_binary_op": {"fullname": "sqlglot.dataframe.sql.Column.inverse_binary_op", "modulename": "sqlglot.dataframe.sql", "qualname": "Column.inverse_binary_op", "kind": "function", "doc": "

\n", "signature": "(\tself,\tklass: Callable,\tother: <MagicMock id='139719845815168'>,\t**kwargs) -> sqlglot.dataframe.sql.column.Column:", "funcdef": "def"}, "sqlglot.dataframe.sql.Column.unary_op": {"fullname": "sqlglot.dataframe.sql.Column.unary_op", "modulename": "sqlglot.dataframe.sql", "qualname": "Column.unary_op", "kind": "function", "doc": "

\n", "signature": "(self, klass: Callable, **kwargs) -> sqlglot.dataframe.sql.column.Column:", "funcdef": "def"}, "sqlglot.dataframe.sql.Column.ensure_literal": {"fullname": "sqlglot.dataframe.sql.Column.ensure_literal", "modulename": "sqlglot.dataframe.sql", "qualname": "Column.ensure_literal", "kind": "function", "doc": "

\n", "signature": "(cls, value) -> sqlglot.dataframe.sql.column.Column:", "funcdef": "def"}, "sqlglot.dataframe.sql.Column.copy": {"fullname": "sqlglot.dataframe.sql.Column.copy", "modulename": "sqlglot.dataframe.sql", "qualname": "Column.copy", "kind": "function", "doc": "

\n", "signature": "(self) -> sqlglot.dataframe.sql.column.Column:", "funcdef": "def"}, "sqlglot.dataframe.sql.Column.set_table_name": {"fullname": "sqlglot.dataframe.sql.Column.set_table_name", "modulename": "sqlglot.dataframe.sql", "qualname": "Column.set_table_name", "kind": "function", "doc": "

\n", "signature": "(self, table_name: str, copy=False) -> sqlglot.dataframe.sql.column.Column:", "funcdef": "def"}, "sqlglot.dataframe.sql.Column.sql": {"fullname": "sqlglot.dataframe.sql.Column.sql", "modulename": "sqlglot.dataframe.sql", "qualname": "Column.sql", "kind": "function", "doc": "

\n", "signature": "(self, **kwargs) -> str:", "funcdef": "def"}, "sqlglot.dataframe.sql.Column.alias": {"fullname": "sqlglot.dataframe.sql.Column.alias", "modulename": "sqlglot.dataframe.sql", "qualname": "Column.alias", "kind": "function", "doc": "

\n", "signature": "(self, name: str) -> sqlglot.dataframe.sql.column.Column:", "funcdef": "def"}, "sqlglot.dataframe.sql.Column.asc": {"fullname": "sqlglot.dataframe.sql.Column.asc", "modulename": "sqlglot.dataframe.sql", "qualname": "Column.asc", "kind": "function", "doc": "

\n", "signature": "(self) -> sqlglot.dataframe.sql.column.Column:", "funcdef": "def"}, "sqlglot.dataframe.sql.Column.desc": {"fullname": "sqlglot.dataframe.sql.Column.desc", "modulename": "sqlglot.dataframe.sql", "qualname": "Column.desc", "kind": "function", "doc": "

\n", "signature": "(self) -> sqlglot.dataframe.sql.column.Column:", "funcdef": "def"}, "sqlglot.dataframe.sql.Column.asc_nulls_first": {"fullname": "sqlglot.dataframe.sql.Column.asc_nulls_first", "modulename": "sqlglot.dataframe.sql", "qualname": "Column.asc_nulls_first", "kind": "function", "doc": "

\n", "signature": "(self) -> sqlglot.dataframe.sql.column.Column:", "funcdef": "def"}, "sqlglot.dataframe.sql.Column.asc_nulls_last": {"fullname": "sqlglot.dataframe.sql.Column.asc_nulls_last", "modulename": "sqlglot.dataframe.sql", "qualname": "Column.asc_nulls_last", "kind": "function", "doc": "

\n", "signature": "(self) -> sqlglot.dataframe.sql.column.Column:", "funcdef": "def"}, "sqlglot.dataframe.sql.Column.desc_nulls_first": {"fullname": "sqlglot.dataframe.sql.Column.desc_nulls_first", "modulename": "sqlglot.dataframe.sql", "qualname": "Column.desc_nulls_first", "kind": "function", "doc": "

\n", "signature": "(self) -> sqlglot.dataframe.sql.column.Column:", "funcdef": "def"}, "sqlglot.dataframe.sql.Column.desc_nulls_last": {"fullname": "sqlglot.dataframe.sql.Column.desc_nulls_last", "modulename": "sqlglot.dataframe.sql", "qualname": "Column.desc_nulls_last", "kind": "function", "doc": "

\n", "signature": "(self) -> sqlglot.dataframe.sql.column.Column:", "funcdef": "def"}, "sqlglot.dataframe.sql.Column.when": {"fullname": "sqlglot.dataframe.sql.Column.when", "modulename": "sqlglot.dataframe.sql", "qualname": "Column.when", "kind": "function", "doc": "

\n", "signature": "(\tself,\tcondition: sqlglot.dataframe.sql.column.Column,\tvalue: Any) -> sqlglot.dataframe.sql.column.Column:", "funcdef": "def"}, "sqlglot.dataframe.sql.Column.otherwise": {"fullname": "sqlglot.dataframe.sql.Column.otherwise", "modulename": "sqlglot.dataframe.sql", "qualname": "Column.otherwise", "kind": "function", "doc": "

\n", "signature": "(self, value: Any) -> sqlglot.dataframe.sql.column.Column:", "funcdef": "def"}, "sqlglot.dataframe.sql.Column.isNull": {"fullname": "sqlglot.dataframe.sql.Column.isNull", "modulename": "sqlglot.dataframe.sql", "qualname": "Column.isNull", "kind": "function", "doc": "

\n", "signature": "(self) -> sqlglot.dataframe.sql.column.Column:", "funcdef": "def"}, "sqlglot.dataframe.sql.Column.isNotNull": {"fullname": "sqlglot.dataframe.sql.Column.isNotNull", "modulename": "sqlglot.dataframe.sql", "qualname": "Column.isNotNull", "kind": "function", "doc": "

\n", "signature": "(self) -> sqlglot.dataframe.sql.column.Column:", "funcdef": "def"}, "sqlglot.dataframe.sql.Column.cast": {"fullname": "sqlglot.dataframe.sql.Column.cast", "modulename": "sqlglot.dataframe.sql", "qualname": "Column.cast", "kind": "function", "doc": "

Functionality Difference: PySpark cast accepts a datatype instance of the datatype class\nSqlglot doesn't currently replicate this class so it only accepts a string

\n", "signature": "(self, dataType: Union[str, sqlglot.dataframe.sql.types.DataType]):", "funcdef": "def"}, "sqlglot.dataframe.sql.Column.startswith": {"fullname": "sqlglot.dataframe.sql.Column.startswith", "modulename": "sqlglot.dataframe.sql", "qualname": "Column.startswith", "kind": "function", "doc": "

\n", "signature": "(\tself,\tvalue: Union[str, sqlglot.dataframe.sql.column.Column]) -> sqlglot.dataframe.sql.column.Column:", "funcdef": "def"}, "sqlglot.dataframe.sql.Column.endswith": {"fullname": "sqlglot.dataframe.sql.Column.endswith", "modulename": "sqlglot.dataframe.sql", "qualname": "Column.endswith", "kind": "function", "doc": "

\n", "signature": "(\tself,\tvalue: Union[str, sqlglot.dataframe.sql.column.Column]) -> sqlglot.dataframe.sql.column.Column:", "funcdef": "def"}, "sqlglot.dataframe.sql.Column.rlike": {"fullname": "sqlglot.dataframe.sql.Column.rlike", "modulename": "sqlglot.dataframe.sql", "qualname": "Column.rlike", "kind": "function", "doc": "

\n", "signature": "(self, regexp: str) -> sqlglot.dataframe.sql.column.Column:", "funcdef": "def"}, "sqlglot.dataframe.sql.Column.like": {"fullname": "sqlglot.dataframe.sql.Column.like", "modulename": "sqlglot.dataframe.sql", "qualname": "Column.like", "kind": "function", "doc": "

\n", "signature": "(self, other: str):", "funcdef": "def"}, "sqlglot.dataframe.sql.Column.ilike": {"fullname": "sqlglot.dataframe.sql.Column.ilike", "modulename": "sqlglot.dataframe.sql", "qualname": "Column.ilike", "kind": "function", "doc": "

\n", "signature": "(self, other: str):", "funcdef": "def"}, "sqlglot.dataframe.sql.Column.substr": {"fullname": "sqlglot.dataframe.sql.Column.substr", "modulename": "sqlglot.dataframe.sql", "qualname": "Column.substr", "kind": "function", "doc": "

\n", "signature": "(\tself,\tstartPos: Union[int, sqlglot.dataframe.sql.column.Column],\tlength: Union[int, sqlglot.dataframe.sql.column.Column]) -> sqlglot.dataframe.sql.column.Column:", "funcdef": "def"}, "sqlglot.dataframe.sql.Column.isin": {"fullname": "sqlglot.dataframe.sql.Column.isin", "modulename": "sqlglot.dataframe.sql", "qualname": "Column.isin", "kind": "function", "doc": "

\n", "signature": "(\tself,\t*cols: Union[<MagicMock id='139719846379728'>, Iterable[<MagicMock id='139719846379728'>]]):", "funcdef": "def"}, "sqlglot.dataframe.sql.Column.between": {"fullname": "sqlglot.dataframe.sql.Column.between", "modulename": "sqlglot.dataframe.sql", "qualname": "Column.between", "kind": "function", "doc": "

\n", "signature": "(\tself,\tlowerBound: <MagicMock id='139719846507952'>,\tupperBound: <MagicMock id='139719844481728'>) -> sqlglot.dataframe.sql.column.Column:", "funcdef": "def"}, "sqlglot.dataframe.sql.Column.over": {"fullname": "sqlglot.dataframe.sql.Column.over", "modulename": "sqlglot.dataframe.sql", "qualname": "Column.over", "kind": "function", "doc": "

\n", "signature": "(\tself,\twindow: <MagicMock id='139719844522944'>) -> sqlglot.dataframe.sql.column.Column:", "funcdef": "def"}, "sqlglot.dataframe.sql.DataFrameNaFunctions": {"fullname": "sqlglot.dataframe.sql.DataFrameNaFunctions", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrameNaFunctions", "kind": "class", "doc": "

\n"}, "sqlglot.dataframe.sql.DataFrameNaFunctions.__init__": {"fullname": "sqlglot.dataframe.sql.DataFrameNaFunctions.__init__", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrameNaFunctions.__init__", "kind": "function", "doc": "

\n", "signature": "(df: sqlglot.dataframe.sql.dataframe.DataFrame)"}, "sqlglot.dataframe.sql.DataFrameNaFunctions.drop": {"fullname": "sqlglot.dataframe.sql.DataFrameNaFunctions.drop", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrameNaFunctions.drop", "kind": "function", "doc": "

\n", "signature": "(\tself,\thow: str = 'any',\tthresh: Optional[int] = None,\tsubset: Union[str, Tuple[str, ...], List[str], NoneType] = None) -> sqlglot.dataframe.sql.dataframe.DataFrame:", "funcdef": "def"}, "sqlglot.dataframe.sql.DataFrameNaFunctions.fill": {"fullname": "sqlglot.dataframe.sql.DataFrameNaFunctions.fill", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrameNaFunctions.fill", "kind": "function", "doc": "

\n", "signature": "(\tself,\tvalue: Union[int, bool, float, str, Dict[str, Any]],\tsubset: Union[str, Tuple[str, ...], List[str], NoneType] = None) -> sqlglot.dataframe.sql.dataframe.DataFrame:", "funcdef": "def"}, "sqlglot.dataframe.sql.DataFrameNaFunctions.replace": {"fullname": "sqlglot.dataframe.sql.DataFrameNaFunctions.replace", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrameNaFunctions.replace", "kind": "function", "doc": "

\n", "signature": "(\tself,\tto_replace: Union[bool, int, float, str, List, Dict],\tvalue: Union[bool, int, float, str, List, NoneType] = None,\tsubset: Union[str, List[str], NoneType] = None) -> sqlglot.dataframe.sql.dataframe.DataFrame:", "funcdef": "def"}, "sqlglot.dataframe.sql.Window": {"fullname": "sqlglot.dataframe.sql.Window", "modulename": "sqlglot.dataframe.sql", "qualname": "Window", "kind": "class", "doc": "

\n"}, "sqlglot.dataframe.sql.Window.partitionBy": {"fullname": "sqlglot.dataframe.sql.Window.partitionBy", "modulename": "sqlglot.dataframe.sql", "qualname": "Window.partitionBy", "kind": "function", "doc": "

\n", "signature": "(\tcls,\t*cols: Union[<MagicMock id='139719845053776'>, List[<MagicMock id='139719845053776'>]]) -> sqlglot.dataframe.sql.window.WindowSpec:", "funcdef": "def"}, "sqlglot.dataframe.sql.Window.orderBy": {"fullname": "sqlglot.dataframe.sql.Window.orderBy", "modulename": "sqlglot.dataframe.sql", "qualname": "Window.orderBy", "kind": "function", "doc": "

\n", "signature": "(\tcls,\t*cols: Union[<MagicMock id='139719844989536'>, List[<MagicMock id='139719844989536'>]]) -> sqlglot.dataframe.sql.window.WindowSpec:", "funcdef": "def"}, "sqlglot.dataframe.sql.Window.rowsBetween": {"fullname": "sqlglot.dataframe.sql.Window.rowsBetween", "modulename": "sqlglot.dataframe.sql", "qualname": "Window.rowsBetween", "kind": "function", "doc": "

\n", "signature": "(cls, start: int, end: int) -> sqlglot.dataframe.sql.window.WindowSpec:", "funcdef": "def"}, "sqlglot.dataframe.sql.Window.rangeBetween": {"fullname": "sqlglot.dataframe.sql.Window.rangeBetween", "modulename": "sqlglot.dataframe.sql", "qualname": "Window.rangeBetween", "kind": "function", "doc": "

\n", "signature": "(cls, start: int, end: int) -> sqlglot.dataframe.sql.window.WindowSpec:", "funcdef": "def"}, "sqlglot.dataframe.sql.WindowSpec": {"fullname": "sqlglot.dataframe.sql.WindowSpec", "modulename": "sqlglot.dataframe.sql", "qualname": "WindowSpec", "kind": "class", "doc": "

\n"}, "sqlglot.dataframe.sql.WindowSpec.__init__": {"fullname": "sqlglot.dataframe.sql.WindowSpec.__init__", "modulename": "sqlglot.dataframe.sql", "qualname": "WindowSpec.__init__", "kind": "function", "doc": "

\n", "signature": "(expression: sqlglot.expressions.Expression = (WINDOW ))"}, "sqlglot.dataframe.sql.WindowSpec.copy": {"fullname": "sqlglot.dataframe.sql.WindowSpec.copy", "modulename": "sqlglot.dataframe.sql", "qualname": "WindowSpec.copy", "kind": "function", "doc": "

\n", "signature": "(self):", "funcdef": "def"}, "sqlglot.dataframe.sql.WindowSpec.sql": {"fullname": "sqlglot.dataframe.sql.WindowSpec.sql", "modulename": "sqlglot.dataframe.sql", "qualname": "WindowSpec.sql", "kind": "function", "doc": "

\n", "signature": "(self, **kwargs) -> str:", "funcdef": "def"}, "sqlglot.dataframe.sql.WindowSpec.partitionBy": {"fullname": "sqlglot.dataframe.sql.WindowSpec.partitionBy", "modulename": "sqlglot.dataframe.sql", "qualname": "WindowSpec.partitionBy", "kind": "function", "doc": "

\n", "signature": "(\tself,\t*cols: Union[<MagicMock id='139719844913712'>, List[<MagicMock id='139719844913712'>]]) -> sqlglot.dataframe.sql.window.WindowSpec:", "funcdef": "def"}, "sqlglot.dataframe.sql.WindowSpec.orderBy": {"fullname": "sqlglot.dataframe.sql.WindowSpec.orderBy", "modulename": "sqlglot.dataframe.sql", "qualname": "WindowSpec.orderBy", "kind": "function", "doc": "

\n", "signature": "(\tself,\t*cols: Union[<MagicMock id='139719844813248'>, List[<MagicMock id='139719844813248'>]]) -> sqlglot.dataframe.sql.window.WindowSpec:", "funcdef": "def"}, "sqlglot.dataframe.sql.WindowSpec.rowsBetween": {"fullname": "sqlglot.dataframe.sql.WindowSpec.rowsBetween", "modulename": "sqlglot.dataframe.sql", "qualname": "WindowSpec.rowsBetween", "kind": "function", "doc": "

\n", "signature": "(self, start: int, end: int) -> sqlglot.dataframe.sql.window.WindowSpec:", "funcdef": "def"}, "sqlglot.dataframe.sql.WindowSpec.rangeBetween": {"fullname": "sqlglot.dataframe.sql.WindowSpec.rangeBetween", "modulename": "sqlglot.dataframe.sql", "qualname": "WindowSpec.rangeBetween", "kind": "function", "doc": "

\n", "signature": "(self, start: int, end: int) -> sqlglot.dataframe.sql.window.WindowSpec:", "funcdef": "def"}, "sqlglot.dataframe.sql.DataFrameReader": {"fullname": "sqlglot.dataframe.sql.DataFrameReader", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrameReader", "kind": "class", "doc": "

\n"}, "sqlglot.dataframe.sql.DataFrameReader.__init__": {"fullname": "sqlglot.dataframe.sql.DataFrameReader.__init__", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrameReader.__init__", "kind": "function", "doc": "

\n", "signature": "(spark: sqlglot.dataframe.sql.session.SparkSession)"}, "sqlglot.dataframe.sql.DataFrameReader.table": {"fullname": "sqlglot.dataframe.sql.DataFrameReader.table", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrameReader.table", "kind": "function", "doc": "

\n", "signature": "(self, tableName: str) -> sqlglot.dataframe.sql.dataframe.DataFrame:", "funcdef": "def"}, "sqlglot.dataframe.sql.DataFrameWriter": {"fullname": "sqlglot.dataframe.sql.DataFrameWriter", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrameWriter", "kind": "class", "doc": "

\n"}, "sqlglot.dataframe.sql.DataFrameWriter.__init__": {"fullname": "sqlglot.dataframe.sql.DataFrameWriter.__init__", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrameWriter.__init__", "kind": "function", "doc": "

\n", "signature": "(\tdf: sqlglot.dataframe.sql.dataframe.DataFrame,\tspark: Optional[sqlglot.dataframe.sql.session.SparkSession] = None,\tmode: Optional[str] = None,\tby_name: bool = False)"}, "sqlglot.dataframe.sql.DataFrameWriter.copy": {"fullname": "sqlglot.dataframe.sql.DataFrameWriter.copy", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrameWriter.copy", "kind": "function", "doc": "

\n", "signature": "(self, **kwargs) -> sqlglot.dataframe.sql.readwriter.DataFrameWriter:", "funcdef": "def"}, "sqlglot.dataframe.sql.DataFrameWriter.sql": {"fullname": "sqlglot.dataframe.sql.DataFrameWriter.sql", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrameWriter.sql", "kind": "function", "doc": "

\n", "signature": "(self, **kwargs) -> List[str]:", "funcdef": "def"}, "sqlglot.dataframe.sql.DataFrameWriter.mode": {"fullname": "sqlglot.dataframe.sql.DataFrameWriter.mode", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrameWriter.mode", "kind": "function", "doc": "

\n", "signature": "(\tself,\tsaveMode: Optional[str]) -> sqlglot.dataframe.sql.readwriter.DataFrameWriter:", "funcdef": "def"}, "sqlglot.dataframe.sql.DataFrameWriter.insertInto": {"fullname": "sqlglot.dataframe.sql.DataFrameWriter.insertInto", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrameWriter.insertInto", "kind": "function", "doc": "

\n", "signature": "(\tself,\ttableName: str,\toverwrite: Optional[bool] = None) -> sqlglot.dataframe.sql.readwriter.DataFrameWriter:", "funcdef": "def"}, "sqlglot.dataframe.sql.DataFrameWriter.saveAsTable": {"fullname": "sqlglot.dataframe.sql.DataFrameWriter.saveAsTable", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrameWriter.saveAsTable", "kind": "function", "doc": "

\n", "signature": "(\tself,\tname: str,\tformat: Optional[str] = None,\tmode: Optional[str] = None):", "funcdef": "def"}, "sqlglot.dialects": {"fullname": "sqlglot.dialects", "modulename": "sqlglot.dialects", "kind": "module", "doc": "

Dialects

\n\n

While there is a SQL standard, most SQL engines support a variation of that standard. This makes it difficult\nto write portable SQL code. SQLGlot bridges all the different variations, called \"dialects\", with an extensible\nSQL transpilation framework.

\n\n

The base sqlglot.dialects.dialect.Dialect class implements a generic dialect that aims to be as universal as possible.

\n\n

Each SQL variation has its own Dialect subclass, extending the corresponding Tokenizer, Parser and Generator\nclasses as needed.

\n\n

Implementing a custom Dialect

\n\n

Consider the following example:

\n\n
\n
from sqlglot import exp\nfrom sqlglot.dialects.dialect import Dialect\nfrom sqlglot.generator import Generator\nfrom sqlglot.tokens import Tokenizer, TokenType\n\n\nclass Custom(Dialect):\n    class Tokenizer(Tokenizer):\n        QUOTES = ["'", '"']\n        IDENTIFIERS = ["`"]\n\n        KEYWORDS = {\n            **Tokenizer.KEYWORDS,\n            "INT64": TokenType.BIGINT,\n            "FLOAT64": TokenType.DOUBLE,\n        }\n\n    class Generator(Generator):\n        TRANSFORMS = {exp.Array: lambda self, e: f"[{self.expressions(e)}]"}\n\n        TYPE_MAPPING = {\n            exp.DataType.Type.TINYINT: "INT64",\n            exp.DataType.Type.SMALLINT: "INT64",\n            exp.DataType.Type.INT: "INT64",\n            exp.DataType.Type.BIGINT: "INT64",\n            exp.DataType.Type.DECIMAL: "NUMERIC",\n            exp.DataType.Type.FLOAT: "FLOAT64",\n            exp.DataType.Type.DOUBLE: "FLOAT64",\n            exp.DataType.Type.BOOLEAN: "BOOL",\n            exp.DataType.Type.TEXT: "STRING",\n        }\n
\n
\n\n

This is a typical example of adding a new dialect implementation in SQLGlot: we specify its identifier and string\ndelimiters, as well as what tokens it uses for its types and how they're associated with SQLGlot types. Since\nthe Expression classes are common for each dialect supported in SQLGlot, we may also need to override the generation\nlogic for some expressions; this is usually done by adding new entries to the TRANSFORMS mapping.

\n\n
\n"}, "sqlglot.dialects.bigquery": {"fullname": "sqlglot.dialects.bigquery", "modulename": "sqlglot.dialects.bigquery", "kind": "module", "doc": "

Supports BigQuery Standard SQL.

\n"}, "sqlglot.dialects.bigquery.BigQuery": {"fullname": "sqlglot.dialects.bigquery.BigQuery", "modulename": "sqlglot.dialects.bigquery", "qualname": "BigQuery", "kind": "class", "doc": "

\n", "bases": "sqlglot.dialects.dialect.Dialect"}, "sqlglot.dialects.bigquery.BigQuery.Tokenizer": {"fullname": "sqlglot.dialects.bigquery.BigQuery.Tokenizer", "modulename": "sqlglot.dialects.bigquery", "qualname": "BigQuery.Tokenizer", "kind": "class", "doc": "

\n", "bases": "sqlglot.tokens.Tokenizer"}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"fullname": "sqlglot.dialects.bigquery.BigQuery.Parser", "modulename": "sqlglot.dialects.bigquery", "qualname": "BigQuery.Parser", "kind": "class", "doc": "

Parser consumes a list of tokens produced by the sqlglot.tokens.Tokenizer and produces\na parsed syntax tree.

\n\n
Arguments:
\n\n
    \n
  • error_level: the desired error level.\nDefault: ErrorLevel.RAISE
  • \n
  • error_message_context: determines the amount of context to capture from a\nquery string when displaying the error message (in number of characters).\nDefault: 50.
  • \n
  • index_offset: Index offset for arrays eg ARRAY[0] vs ARRAY[1] as the head of a list.\nDefault: 0
  • \n
  • alias_post_tablesample: If the table alias comes after tablesample.\nDefault: False
  • \n
  • max_errors: Maximum number of error messages to include in a raised ParseError.\nThis is only relevant if error_level is ErrorLevel.RAISE.\nDefault: 3
  • \n
  • null_ordering: Indicates the default null ordering method to use if not explicitly set.\nOptions are \"nulls_are_small\", \"nulls_are_large\", \"nulls_are_last\".\nDefault: \"nulls_are_small\"
  • \n
\n", "bases": "sqlglot.parser.Parser"}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"fullname": "sqlglot.dialects.bigquery.BigQuery.Generator", "modulename": "sqlglot.dialects.bigquery", "qualname": "BigQuery.Generator", "kind": "class", "doc": "

Generator interprets the given syntax tree and produces a SQL string as an output.

\n\n
Arguments:
\n\n
    \n
  • time_mapping (dict): the dictionary of custom time mappings in which the key\nrepresents a python time format and the output the target time format
  • \n
  • time_trie (trie): a trie of the time_mapping keys
  • \n
  • pretty (bool): if set to True the returned string will be formatted. Default: False.
  • \n
  • quote_start (str): specifies which starting character to use to delimit quotes. Default: '.
  • \n
  • quote_end (str): specifies which ending character to use to delimit quotes. Default: '.
  • \n
  • identifier_start (str): specifies which starting character to use to delimit identifiers. Default: \".
  • \n
  • identifier_end (str): specifies which ending character to use to delimit identifiers. Default: \".
  • \n
  • identify (bool | str): 'always': always quote, 'safe': quote identifiers if they don't contain an upcase, True defaults to always.
  • \n
  • normalize (bool): if set to True all identifiers will lower cased
  • \n
  • string_escape (str): specifies a string escape character. Default: '.
  • \n
  • identifier_escape (str): specifies an identifier escape character. Default: \".
  • \n
  • pad (int): determines padding in a formatted string. Default: 2.
  • \n
  • indent (int): determines the size of indentation in a formatted string. Default: 4.
  • \n
  • unnest_column_only (bool): if true unnest table aliases are considered only as column aliases
  • \n
  • normalize_functions (str): normalize function names, \"upper\", \"lower\", or None\nDefault: \"upper\"
  • \n
  • alias_post_tablesample (bool): if the table alias comes after tablesample\nDefault: False
  • \n
  • unsupported_level (ErrorLevel): determines the generator's behavior when it encounters\nunsupported expressions. Default ErrorLevel.WARN.
  • \n
  • null_ordering (str): Indicates the default null ordering method to use if not explicitly set.\nOptions are \"nulls_are_small\", \"nulls_are_large\", \"nulls_are_last\".\nDefault: \"nulls_are_small\"
  • \n
  • max_unsupported (int): Maximum number of unsupported messages to include in a raised UnsupportedError.\nThis is only relevant if unsupported_level is ErrorLevel.RAISE.\nDefault: 3
  • \n
  • leading_comma (bool): if the the comma is leading or trailing in select statements\nDefault: False
  • \n
  • max_text_width: The max number of characters in a segment before creating new lines in pretty mode.\nThe default is on the smaller end because the length only represents a segment and not the true\nline length.\nDefault: 80
  • \n
  • comments: Whether or not to preserve comments in the output SQL code.\nDefault: True
  • \n
\n", "bases": "sqlglot.generator.Generator"}, "sqlglot.dialects.bigquery.BigQuery.Generator.array_sql": {"fullname": "sqlglot.dialects.bigquery.BigQuery.Generator.array_sql", "modulename": "sqlglot.dialects.bigquery", "qualname": "BigQuery.Generator.array_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Array) -> str:", "funcdef": "def"}, "sqlglot.dialects.bigquery.BigQuery.Generator.transaction_sql": {"fullname": "sqlglot.dialects.bigquery.BigQuery.Generator.transaction_sql", "modulename": "sqlglot.dialects.bigquery", "qualname": "BigQuery.Generator.transaction_sql", "kind": "function", "doc": "

\n", "signature": "(self, *_) -> str:", "funcdef": "def"}, "sqlglot.dialects.bigquery.BigQuery.Generator.commit_sql": {"fullname": "sqlglot.dialects.bigquery.BigQuery.Generator.commit_sql", "modulename": "sqlglot.dialects.bigquery", "qualname": "BigQuery.Generator.commit_sql", "kind": "function", "doc": "

\n", "signature": "(self, *_) -> str:", "funcdef": "def"}, "sqlglot.dialects.bigquery.BigQuery.Generator.rollback_sql": {"fullname": "sqlglot.dialects.bigquery.BigQuery.Generator.rollback_sql", "modulename": "sqlglot.dialects.bigquery", "qualname": "BigQuery.Generator.rollback_sql", "kind": "function", "doc": "

\n", "signature": "(self, *_) -> str:", "funcdef": "def"}, "sqlglot.dialects.bigquery.BigQuery.Generator.in_unnest_op": {"fullname": "sqlglot.dialects.bigquery.BigQuery.Generator.in_unnest_op", "modulename": "sqlglot.dialects.bigquery", "qualname": "BigQuery.Generator.in_unnest_op", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Unnest) -> str:", "funcdef": "def"}, "sqlglot.dialects.bigquery.BigQuery.Generator.except_op": {"fullname": "sqlglot.dialects.bigquery.BigQuery.Generator.except_op", "modulename": "sqlglot.dialects.bigquery", "qualname": "BigQuery.Generator.except_op", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Except) -> str:", "funcdef": "def"}, "sqlglot.dialects.bigquery.BigQuery.Generator.intersect_op": {"fullname": "sqlglot.dialects.bigquery.BigQuery.Generator.intersect_op", "modulename": "sqlglot.dialects.bigquery", "qualname": "BigQuery.Generator.intersect_op", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Intersect) -> str:", "funcdef": "def"}, "sqlglot.dialects.clickhouse": {"fullname": "sqlglot.dialects.clickhouse", "modulename": "sqlglot.dialects.clickhouse", "kind": "module", "doc": "

\n"}, "sqlglot.dialects.clickhouse.ClickHouse": {"fullname": "sqlglot.dialects.clickhouse.ClickHouse", "modulename": "sqlglot.dialects.clickhouse", "qualname": "ClickHouse", "kind": "class", "doc": "

\n", "bases": "sqlglot.dialects.dialect.Dialect"}, "sqlglot.dialects.clickhouse.ClickHouse.Tokenizer": {"fullname": "sqlglot.dialects.clickhouse.ClickHouse.Tokenizer", "modulename": "sqlglot.dialects.clickhouse", "qualname": "ClickHouse.Tokenizer", "kind": "class", "doc": "

\n", "bases": "sqlglot.tokens.Tokenizer"}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"fullname": "sqlglot.dialects.clickhouse.ClickHouse.Parser", "modulename": "sqlglot.dialects.clickhouse", "qualname": "ClickHouse.Parser", "kind": "class", "doc": "

Parser consumes a list of tokens produced by the sqlglot.tokens.Tokenizer and produces\na parsed syntax tree.

\n\n
Arguments:
\n\n
    \n
  • error_level: the desired error level.\nDefault: ErrorLevel.RAISE
  • \n
  • error_message_context: determines the amount of context to capture from a\nquery string when displaying the error message (in number of characters).\nDefault: 50.
  • \n
  • index_offset: Index offset for arrays eg ARRAY[0] vs ARRAY[1] as the head of a list.\nDefault: 0
  • \n
  • alias_post_tablesample: If the table alias comes after tablesample.\nDefault: False
  • \n
  • max_errors: Maximum number of error messages to include in a raised ParseError.\nThis is only relevant if error_level is ErrorLevel.RAISE.\nDefault: 3
  • \n
  • null_ordering: Indicates the default null ordering method to use if not explicitly set.\nOptions are \"nulls_are_small\", \"nulls_are_large\", \"nulls_are_last\".\nDefault: \"nulls_are_small\"
  • \n
\n", "bases": "sqlglot.parser.Parser"}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"fullname": "sqlglot.dialects.clickhouse.ClickHouse.Generator", "modulename": "sqlglot.dialects.clickhouse", "qualname": "ClickHouse.Generator", "kind": "class", "doc": "

Generator interprets the given syntax tree and produces a SQL string as an output.

\n\n
Arguments:
\n\n
    \n
  • time_mapping (dict): the dictionary of custom time mappings in which the key\nrepresents a python time format and the output the target time format
  • \n
  • time_trie (trie): a trie of the time_mapping keys
  • \n
  • pretty (bool): if set to True the returned string will be formatted. Default: False.
  • \n
  • quote_start (str): specifies which starting character to use to delimit quotes. Default: '.
  • \n
  • quote_end (str): specifies which ending character to use to delimit quotes. Default: '.
  • \n
  • identifier_start (str): specifies which starting character to use to delimit identifiers. Default: \".
  • \n
  • identifier_end (str): specifies which ending character to use to delimit identifiers. Default: \".
  • \n
  • identify (bool | str): 'always': always quote, 'safe': quote identifiers if they don't contain an upcase, True defaults to always.
  • \n
  • normalize (bool): if set to True all identifiers will lower cased
  • \n
  • string_escape (str): specifies a string escape character. Default: '.
  • \n
  • identifier_escape (str): specifies an identifier escape character. Default: \".
  • \n
  • pad (int): determines padding in a formatted string. Default: 2.
  • \n
  • indent (int): determines the size of indentation in a formatted string. Default: 4.
  • \n
  • unnest_column_only (bool): if true unnest table aliases are considered only as column aliases
  • \n
  • normalize_functions (str): normalize function names, \"upper\", \"lower\", or None\nDefault: \"upper\"
  • \n
  • alias_post_tablesample (bool): if the table alias comes after tablesample\nDefault: False
  • \n
  • unsupported_level (ErrorLevel): determines the generator's behavior when it encounters\nunsupported expressions. Default ErrorLevel.WARN.
  • \n
  • null_ordering (str): Indicates the default null ordering method to use if not explicitly set.\nOptions are \"nulls_are_small\", \"nulls_are_large\", \"nulls_are_last\".\nDefault: \"nulls_are_small\"
  • \n
  • max_unsupported (int): Maximum number of unsupported messages to include in a raised UnsupportedError.\nThis is only relevant if unsupported_level is ErrorLevel.RAISE.\nDefault: 3
  • \n
  • leading_comma (bool): if the the comma is leading or trailing in select statements\nDefault: False
  • \n
  • max_text_width: The max number of characters in a segment before creating new lines in pretty mode.\nThe default is on the smaller end because the length only represents a segment and not the true\nline length.\nDefault: 80
  • \n
  • comments: Whether or not to preserve comments in the output SQL code.\nDefault: True
  • \n
\n", "bases": "sqlglot.generator.Generator"}, "sqlglot.dialects.clickhouse.ClickHouse.Generator.cte_sql": {"fullname": "sqlglot.dialects.clickhouse.ClickHouse.Generator.cte_sql", "modulename": "sqlglot.dialects.clickhouse", "qualname": "ClickHouse.Generator.cte_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.CTE) -> str:", "funcdef": "def"}, "sqlglot.dialects.databricks": {"fullname": "sqlglot.dialects.databricks", "modulename": "sqlglot.dialects.databricks", "kind": "module", "doc": "

\n"}, "sqlglot.dialects.databricks.Databricks": {"fullname": "sqlglot.dialects.databricks.Databricks", "modulename": "sqlglot.dialects.databricks", "qualname": "Databricks", "kind": "class", "doc": "

\n", "bases": "sqlglot.dialects.spark.Spark"}, "sqlglot.dialects.databricks.Databricks.Parser": {"fullname": "sqlglot.dialects.databricks.Databricks.Parser", "modulename": "sqlglot.dialects.databricks", "qualname": "Databricks.Parser", "kind": "class", "doc": "

Parser consumes a list of tokens produced by the sqlglot.tokens.Tokenizer and produces\na parsed syntax tree.

\n\n
Arguments:
\n\n
    \n
  • error_level: the desired error level.\nDefault: ErrorLevel.RAISE
  • \n
  • error_message_context: determines the amount of context to capture from a\nquery string when displaying the error message (in number of characters).\nDefault: 50.
  • \n
  • index_offset: Index offset for arrays eg ARRAY[0] vs ARRAY[1] as the head of a list.\nDefault: 0
  • \n
  • alias_post_tablesample: If the table alias comes after tablesample.\nDefault: False
  • \n
  • max_errors: Maximum number of error messages to include in a raised ParseError.\nThis is only relevant if error_level is ErrorLevel.RAISE.\nDefault: 3
  • \n
  • null_ordering: Indicates the default null ordering method to use if not explicitly set.\nOptions are \"nulls_are_small\", \"nulls_are_large\", \"nulls_are_last\".\nDefault: \"nulls_are_small\"
  • \n
\n", "bases": "sqlglot.dialects.spark.Spark.Parser"}, "sqlglot.dialects.databricks.Databricks.Generator": {"fullname": "sqlglot.dialects.databricks.Databricks.Generator", "modulename": "sqlglot.dialects.databricks", "qualname": "Databricks.Generator", "kind": "class", "doc": "

Generator interprets the given syntax tree and produces a SQL string as an output.

\n\n
Arguments:
\n\n
    \n
  • time_mapping (dict): the dictionary of custom time mappings in which the key\nrepresents a python time format and the output the target time format
  • \n
  • time_trie (trie): a trie of the time_mapping keys
  • \n
  • pretty (bool): if set to True the returned string will be formatted. Default: False.
  • \n
  • quote_start (str): specifies which starting character to use to delimit quotes. Default: '.
  • \n
  • quote_end (str): specifies which ending character to use to delimit quotes. Default: '.
  • \n
  • identifier_start (str): specifies which starting character to use to delimit identifiers. Default: \".
  • \n
  • identifier_end (str): specifies which ending character to use to delimit identifiers. Default: \".
  • \n
  • identify (bool | str): 'always': always quote, 'safe': quote identifiers if they don't contain an upcase, True defaults to always.
  • \n
  • normalize (bool): if set to True all identifiers will lower cased
  • \n
  • string_escape (str): specifies a string escape character. Default: '.
  • \n
  • identifier_escape (str): specifies an identifier escape character. Default: \".
  • \n
  • pad (int): determines padding in a formatted string. Default: 2.
  • \n
  • indent (int): determines the size of indentation in a formatted string. Default: 4.
  • \n
  • unnest_column_only (bool): if true unnest table aliases are considered only as column aliases
  • \n
  • normalize_functions (str): normalize function names, \"upper\", \"lower\", or None\nDefault: \"upper\"
  • \n
  • alias_post_tablesample (bool): if the table alias comes after tablesample\nDefault: False
  • \n
  • unsupported_level (ErrorLevel): determines the generator's behavior when it encounters\nunsupported expressions. Default ErrorLevel.WARN.
  • \n
  • null_ordering (str): Indicates the default null ordering method to use if not explicitly set.\nOptions are \"nulls_are_small\", \"nulls_are_large\", \"nulls_are_last\".\nDefault: \"nulls_are_small\"
  • \n
  • max_unsupported (int): Maximum number of unsupported messages to include in a raised UnsupportedError.\nThis is only relevant if unsupported_level is ErrorLevel.RAISE.\nDefault: 3
  • \n
  • leading_comma (bool): if the the comma is leading or trailing in select statements\nDefault: False
  • \n
  • max_text_width: The max number of characters in a segment before creating new lines in pretty mode.\nThe default is on the smaller end because the length only represents a segment and not the true\nline length.\nDefault: 80
  • \n
  • comments: Whether or not to preserve comments in the output SQL code.\nDefault: True
  • \n
\n", "bases": "sqlglot.dialects.spark.Spark.Generator"}, "sqlglot.dialects.databricks.Databricks.Tokenizer": {"fullname": "sqlglot.dialects.databricks.Databricks.Tokenizer", "modulename": "sqlglot.dialects.databricks", "qualname": "Databricks.Tokenizer", "kind": "class", "doc": "

\n", "bases": "sqlglot.dialects.spark.Spark.Tokenizer"}, "sqlglot.dialects.dialect": {"fullname": "sqlglot.dialects.dialect", "modulename": "sqlglot.dialects.dialect", "kind": "module", "doc": "

\n"}, "sqlglot.dialects.dialect.Dialects": {"fullname": "sqlglot.dialects.dialect.Dialects", "modulename": "sqlglot.dialects.dialect", "qualname": "Dialects", "kind": "class", "doc": "

An enumeration.

\n", "bases": "builtins.str, enum.Enum"}, "sqlglot.dialects.dialect.Dialects.DIALECT": {"fullname": "sqlglot.dialects.dialect.Dialects.DIALECT", "modulename": "sqlglot.dialects.dialect", "qualname": "Dialects.DIALECT", "kind": "variable", "doc": "

\n", "default_value": "<Dialects.DIALECT: ''>"}, "sqlglot.dialects.dialect.Dialects.BIGQUERY": {"fullname": "sqlglot.dialects.dialect.Dialects.BIGQUERY", "modulename": "sqlglot.dialects.dialect", "qualname": "Dialects.BIGQUERY", "kind": "variable", "doc": "

\n", "default_value": "<Dialects.BIGQUERY: 'bigquery'>"}, "sqlglot.dialects.dialect.Dialects.CLICKHOUSE": {"fullname": "sqlglot.dialects.dialect.Dialects.CLICKHOUSE", "modulename": "sqlglot.dialects.dialect", "qualname": "Dialects.CLICKHOUSE", "kind": "variable", "doc": "

\n", "default_value": "<Dialects.CLICKHOUSE: 'clickhouse'>"}, "sqlglot.dialects.dialect.Dialects.DUCKDB": {"fullname": "sqlglot.dialects.dialect.Dialects.DUCKDB", "modulename": "sqlglot.dialects.dialect", "qualname": "Dialects.DUCKDB", "kind": "variable", "doc": "

\n", "default_value": "<Dialects.DUCKDB: 'duckdb'>"}, "sqlglot.dialects.dialect.Dialects.HIVE": {"fullname": "sqlglot.dialects.dialect.Dialects.HIVE", "modulename": "sqlglot.dialects.dialect", "qualname": "Dialects.HIVE", "kind": "variable", "doc": "

\n", "default_value": "<Dialects.HIVE: 'hive'>"}, "sqlglot.dialects.dialect.Dialects.MYSQL": {"fullname": "sqlglot.dialects.dialect.Dialects.MYSQL", "modulename": "sqlglot.dialects.dialect", "qualname": "Dialects.MYSQL", "kind": "variable", "doc": "

\n", "default_value": "<Dialects.MYSQL: 'mysql'>"}, "sqlglot.dialects.dialect.Dialects.ORACLE": {"fullname": "sqlglot.dialects.dialect.Dialects.ORACLE", "modulename": "sqlglot.dialects.dialect", "qualname": "Dialects.ORACLE", "kind": "variable", "doc": "

\n", "default_value": "<Dialects.ORACLE: 'oracle'>"}, "sqlglot.dialects.dialect.Dialects.POSTGRES": {"fullname": "sqlglot.dialects.dialect.Dialects.POSTGRES", "modulename": "sqlglot.dialects.dialect", "qualname": "Dialects.POSTGRES", "kind": "variable", "doc": "

\n", "default_value": "<Dialects.POSTGRES: 'postgres'>"}, "sqlglot.dialects.dialect.Dialects.PRESTO": {"fullname": "sqlglot.dialects.dialect.Dialects.PRESTO", "modulename": "sqlglot.dialects.dialect", "qualname": "Dialects.PRESTO", "kind": "variable", "doc": "

\n", "default_value": "<Dialects.PRESTO: 'presto'>"}, "sqlglot.dialects.dialect.Dialects.REDSHIFT": {"fullname": "sqlglot.dialects.dialect.Dialects.REDSHIFT", "modulename": "sqlglot.dialects.dialect", "qualname": "Dialects.REDSHIFT", "kind": "variable", "doc": "

\n", "default_value": "<Dialects.REDSHIFT: 'redshift'>"}, "sqlglot.dialects.dialect.Dialects.SNOWFLAKE": {"fullname": "sqlglot.dialects.dialect.Dialects.SNOWFLAKE", "modulename": "sqlglot.dialects.dialect", "qualname": "Dialects.SNOWFLAKE", "kind": "variable", "doc": "

\n", "default_value": "<Dialects.SNOWFLAKE: 'snowflake'>"}, "sqlglot.dialects.dialect.Dialects.SPARK": {"fullname": "sqlglot.dialects.dialect.Dialects.SPARK", "modulename": "sqlglot.dialects.dialect", "qualname": "Dialects.SPARK", "kind": "variable", "doc": "

\n", "default_value": "<Dialects.SPARK: 'spark'>"}, "sqlglot.dialects.dialect.Dialects.SQLITE": {"fullname": "sqlglot.dialects.dialect.Dialects.SQLITE", "modulename": "sqlglot.dialects.dialect", "qualname": "Dialects.SQLITE", "kind": "variable", "doc": "

\n", "default_value": "<Dialects.SQLITE: 'sqlite'>"}, "sqlglot.dialects.dialect.Dialects.STARROCKS": {"fullname": "sqlglot.dialects.dialect.Dialects.STARROCKS", "modulename": "sqlglot.dialects.dialect", "qualname": "Dialects.STARROCKS", "kind": "variable", "doc": "

\n", "default_value": "<Dialects.STARROCKS: 'starrocks'>"}, "sqlglot.dialects.dialect.Dialects.TABLEAU": {"fullname": "sqlglot.dialects.dialect.Dialects.TABLEAU", "modulename": "sqlglot.dialects.dialect", "qualname": "Dialects.TABLEAU", "kind": "variable", "doc": "

\n", "default_value": "<Dialects.TABLEAU: 'tableau'>"}, "sqlglot.dialects.dialect.Dialects.TRINO": {"fullname": "sqlglot.dialects.dialect.Dialects.TRINO", "modulename": "sqlglot.dialects.dialect", "qualname": "Dialects.TRINO", "kind": "variable", "doc": "

\n", "default_value": "<Dialects.TRINO: 'trino'>"}, "sqlglot.dialects.dialect.Dialects.TSQL": {"fullname": "sqlglot.dialects.dialect.Dialects.TSQL", "modulename": "sqlglot.dialects.dialect", "qualname": "Dialects.TSQL", "kind": "variable", "doc": "

\n", "default_value": "<Dialects.TSQL: 'tsql'>"}, "sqlglot.dialects.dialect.Dialects.DATABRICKS": {"fullname": "sqlglot.dialects.dialect.Dialects.DATABRICKS", "modulename": "sqlglot.dialects.dialect", "qualname": "Dialects.DATABRICKS", "kind": "variable", "doc": "

\n", "default_value": "<Dialects.DATABRICKS: 'databricks'>"}, "sqlglot.dialects.dialect.Dialects.DRILL": {"fullname": "sqlglot.dialects.dialect.Dialects.DRILL", "modulename": "sqlglot.dialects.dialect", "qualname": "Dialects.DRILL", "kind": "variable", "doc": "

\n", "default_value": "<Dialects.DRILL: 'drill'>"}, "sqlglot.dialects.dialect.Dialects.TERADATA": {"fullname": "sqlglot.dialects.dialect.Dialects.TERADATA", "modulename": "sqlglot.dialects.dialect", "qualname": "Dialects.TERADATA", "kind": "variable", "doc": "

\n", "default_value": "<Dialects.TERADATA: 'teradata'>"}, "sqlglot.dialects.dialect.Dialect": {"fullname": "sqlglot.dialects.dialect.Dialect", "modulename": "sqlglot.dialects.dialect", "qualname": "Dialect", "kind": "class", "doc": "

\n"}, "sqlglot.dialects.dialect.Dialect.get_or_raise": {"fullname": "sqlglot.dialects.dialect.Dialect.get_or_raise", "modulename": "sqlglot.dialects.dialect", "qualname": "Dialect.get_or_raise", "kind": "function", "doc": "

\n", "signature": "(\tcls,\tdialect: Union[str, sqlglot.dialects.dialect.Dialect, Type[sqlglot.dialects.dialect.Dialect], NoneType]) -> Type[sqlglot.dialects.dialect.Dialect]:", "funcdef": "def"}, "sqlglot.dialects.dialect.Dialect.format_time": {"fullname": "sqlglot.dialects.dialect.Dialect.format_time", "modulename": "sqlglot.dialects.dialect", "qualname": "Dialect.format_time", "kind": "function", "doc": "

\n", "signature": "(\tcls,\texpression: Union[str, sqlglot.expressions.Expression, NoneType]) -> Optional[sqlglot.expressions.Expression]:", "funcdef": "def"}, "sqlglot.dialects.dialect.Dialect.parse": {"fullname": "sqlglot.dialects.dialect.Dialect.parse", "modulename": "sqlglot.dialects.dialect", "qualname": "Dialect.parse", "kind": "function", "doc": "

\n", "signature": "(self, sql: str, **opts) -> List[Optional[sqlglot.expressions.Expression]]:", "funcdef": "def"}, "sqlglot.dialects.dialect.Dialect.parse_into": {"fullname": "sqlglot.dialects.dialect.Dialect.parse_into", "modulename": "sqlglot.dialects.dialect", "qualname": "Dialect.parse_into", "kind": "function", "doc": "

\n", "signature": "(\tself,\texpression_type: Union[str, Type[sqlglot.expressions.Expression], Collection[Union[str, Type[sqlglot.expressions.Expression]]]],\tsql: str,\t**opts) -> List[Optional[sqlglot.expressions.Expression]]:", "funcdef": "def"}, "sqlglot.dialects.dialect.Dialect.generate": {"fullname": "sqlglot.dialects.dialect.Dialect.generate", "modulename": "sqlglot.dialects.dialect", "qualname": "Dialect.generate", "kind": "function", "doc": "

\n", "signature": "(\tself,\texpression: Optional[sqlglot.expressions.Expression],\t**opts) -> str:", "funcdef": "def"}, "sqlglot.dialects.dialect.Dialect.transpile": {"fullname": "sqlglot.dialects.dialect.Dialect.transpile", "modulename": "sqlglot.dialects.dialect", "qualname": "Dialect.transpile", "kind": "function", "doc": "

\n", "signature": "(self, sql: str, **opts) -> List[str]:", "funcdef": "def"}, "sqlglot.dialects.dialect.Dialect.tokenize": {"fullname": "sqlglot.dialects.dialect.Dialect.tokenize", "modulename": "sqlglot.dialects.dialect", "qualname": "Dialect.tokenize", "kind": "function", "doc": "

\n", "signature": "(self, sql: str) -> List[sqlglot.tokens.Token]:", "funcdef": "def"}, "sqlglot.dialects.dialect.Dialect.parser": {"fullname": "sqlglot.dialects.dialect.Dialect.parser", "modulename": "sqlglot.dialects.dialect", "qualname": "Dialect.parser", "kind": "function", "doc": "

\n", "signature": "(self, **opts) -> sqlglot.parser.Parser:", "funcdef": "def"}, "sqlglot.dialects.dialect.Dialect.generator": {"fullname": "sqlglot.dialects.dialect.Dialect.generator", "modulename": "sqlglot.dialects.dialect", "qualname": "Dialect.generator", "kind": "function", "doc": "

\n", "signature": "(self, **opts) -> sqlglot.generator.Generator:", "funcdef": "def"}, "sqlglot.dialects.dialect.rename_func": {"fullname": "sqlglot.dialects.dialect.rename_func", "modulename": "sqlglot.dialects.dialect", "qualname": "rename_func", "kind": "function", "doc": "

\n", "signature": "(\tname: str) -> Callable[[sqlglot.generator.Generator, sqlglot.expressions.Expression], str]:", "funcdef": "def"}, "sqlglot.dialects.dialect.approx_count_distinct_sql": {"fullname": "sqlglot.dialects.dialect.approx_count_distinct_sql", "modulename": "sqlglot.dialects.dialect", "qualname": "approx_count_distinct_sql", "kind": "function", "doc": "

\n", "signature": "(\tself: sqlglot.generator.Generator,\texpression: sqlglot.expressions.ApproxDistinct) -> str:", "funcdef": "def"}, "sqlglot.dialects.dialect.if_sql": {"fullname": "sqlglot.dialects.dialect.if_sql", "modulename": "sqlglot.dialects.dialect", "qualname": "if_sql", "kind": "function", "doc": "

\n", "signature": "(\tself: sqlglot.generator.Generator,\texpression: sqlglot.expressions.If) -> str:", "funcdef": "def"}, "sqlglot.dialects.dialect.arrow_json_extract_sql": {"fullname": "sqlglot.dialects.dialect.arrow_json_extract_sql", "modulename": "sqlglot.dialects.dialect", "qualname": "arrow_json_extract_sql", "kind": "function", "doc": "

\n", "signature": "(\tself: sqlglot.generator.Generator,\texpression: sqlglot.expressions.JSONExtract | sqlglot.expressions.JSONBExtract) -> str:", "funcdef": "def"}, "sqlglot.dialects.dialect.arrow_json_extract_scalar_sql": {"fullname": "sqlglot.dialects.dialect.arrow_json_extract_scalar_sql", "modulename": "sqlglot.dialects.dialect", "qualname": "arrow_json_extract_scalar_sql", "kind": "function", "doc": "

\n", "signature": "(\tself: sqlglot.generator.Generator,\texpression: sqlglot.expressions.JSONExtractScalar | sqlglot.expressions.JSONBExtractScalar) -> str:", "funcdef": "def"}, "sqlglot.dialects.dialect.inline_array_sql": {"fullname": "sqlglot.dialects.dialect.inline_array_sql", "modulename": "sqlglot.dialects.dialect", "qualname": "inline_array_sql", "kind": "function", "doc": "

\n", "signature": "(\tself: sqlglot.generator.Generator,\texpression: sqlglot.expressions.Array) -> str:", "funcdef": "def"}, "sqlglot.dialects.dialect.no_ilike_sql": {"fullname": "sqlglot.dialects.dialect.no_ilike_sql", "modulename": "sqlglot.dialects.dialect", "qualname": "no_ilike_sql", "kind": "function", "doc": "

\n", "signature": "(\tself: sqlglot.generator.Generator,\texpression: sqlglot.expressions.ILike) -> str:", "funcdef": "def"}, "sqlglot.dialects.dialect.no_paren_current_date_sql": {"fullname": "sqlglot.dialects.dialect.no_paren_current_date_sql", "modulename": "sqlglot.dialects.dialect", "qualname": "no_paren_current_date_sql", "kind": "function", "doc": "

\n", "signature": "(\tself: sqlglot.generator.Generator,\texpression: sqlglot.expressions.CurrentDate) -> str:", "funcdef": "def"}, "sqlglot.dialects.dialect.no_recursive_cte_sql": {"fullname": "sqlglot.dialects.dialect.no_recursive_cte_sql", "modulename": "sqlglot.dialects.dialect", "qualname": "no_recursive_cte_sql", "kind": "function", "doc": "

\n", "signature": "(\tself: sqlglot.generator.Generator,\texpression: sqlglot.expressions.With) -> str:", "funcdef": "def"}, "sqlglot.dialects.dialect.no_safe_divide_sql": {"fullname": "sqlglot.dialects.dialect.no_safe_divide_sql", "modulename": "sqlglot.dialects.dialect", "qualname": "no_safe_divide_sql", "kind": "function", "doc": "

\n", "signature": "(\tself: sqlglot.generator.Generator,\texpression: sqlglot.expressions.SafeDivide) -> str:", "funcdef": "def"}, "sqlglot.dialects.dialect.no_tablesample_sql": {"fullname": "sqlglot.dialects.dialect.no_tablesample_sql", "modulename": "sqlglot.dialects.dialect", "qualname": "no_tablesample_sql", "kind": "function", "doc": "

\n", "signature": "(\tself: sqlglot.generator.Generator,\texpression: sqlglot.expressions.TableSample) -> str:", "funcdef": "def"}, "sqlglot.dialects.dialect.no_pivot_sql": {"fullname": "sqlglot.dialects.dialect.no_pivot_sql", "modulename": "sqlglot.dialects.dialect", "qualname": "no_pivot_sql", "kind": "function", "doc": "

\n", "signature": "(\tself: sqlglot.generator.Generator,\texpression: sqlglot.expressions.Pivot) -> str:", "funcdef": "def"}, "sqlglot.dialects.dialect.no_trycast_sql": {"fullname": "sqlglot.dialects.dialect.no_trycast_sql", "modulename": "sqlglot.dialects.dialect", "qualname": "no_trycast_sql", "kind": "function", "doc": "

\n", "signature": "(\tself: sqlglot.generator.Generator,\texpression: sqlglot.expressions.TryCast) -> str:", "funcdef": "def"}, "sqlglot.dialects.dialect.no_properties_sql": {"fullname": "sqlglot.dialects.dialect.no_properties_sql", "modulename": "sqlglot.dialects.dialect", "qualname": "no_properties_sql", "kind": "function", "doc": "

\n", "signature": "(\tself: sqlglot.generator.Generator,\texpression: sqlglot.expressions.Properties) -> str:", "funcdef": "def"}, "sqlglot.dialects.dialect.str_position_sql": {"fullname": "sqlglot.dialects.dialect.str_position_sql", "modulename": "sqlglot.dialects.dialect", "qualname": "str_position_sql", "kind": "function", "doc": "

\n", "signature": "(\tself: sqlglot.generator.Generator,\texpression: sqlglot.expressions.StrPosition) -> str:", "funcdef": "def"}, "sqlglot.dialects.dialect.struct_extract_sql": {"fullname": "sqlglot.dialects.dialect.struct_extract_sql", "modulename": "sqlglot.dialects.dialect", "qualname": "struct_extract_sql", "kind": "function", "doc": "

\n", "signature": "(\tself: sqlglot.generator.Generator,\texpression: sqlglot.expressions.StructExtract) -> str:", "funcdef": "def"}, "sqlglot.dialects.dialect.var_map_sql": {"fullname": "sqlglot.dialects.dialect.var_map_sql", "modulename": "sqlglot.dialects.dialect", "qualname": "var_map_sql", "kind": "function", "doc": "

\n", "signature": "(\tself: sqlglot.generator.Generator,\texpression: sqlglot.expressions.Map | sqlglot.expressions.VarMap,\tmap_func_name: str = 'MAP') -> str:", "funcdef": "def"}, "sqlglot.dialects.dialect.format_time_lambda": {"fullname": "sqlglot.dialects.dialect.format_time_lambda", "modulename": "sqlglot.dialects.dialect", "qualname": "format_time_lambda", "kind": "function", "doc": "

Helper used for time expressions.

\n\n
Arguments:
\n\n
    \n
  • exp_class: the expression class to instantiate.
  • \n
  • dialect: target sql dialect.
  • \n
  • default: the default format, True being time.
  • \n
\n\n
Returns:
\n\n
\n

A callable that can be used to return the appropriately formatted time expression.

\n
\n", "signature": "(\texp_class: Type[~E],\tdialect: str,\tdefault: Union[bool, str, NoneType] = None) -> Callable[[Sequence], ~E]:", "funcdef": "def"}, "sqlglot.dialects.dialect.create_with_partitions_sql": {"fullname": "sqlglot.dialects.dialect.create_with_partitions_sql", "modulename": "sqlglot.dialects.dialect", "qualname": "create_with_partitions_sql", "kind": "function", "doc": "

In Hive and Spark, the PARTITIONED BY property acts as an extension of a table's schema. When the\nPARTITIONED BY value is an array of column names, they are transformed into a schema. The corresponding\ncolumns are removed from the create statement.

\n", "signature": "(\tself: sqlglot.generator.Generator,\texpression: sqlglot.expressions.Create) -> str:", "funcdef": "def"}, "sqlglot.dialects.dialect.parse_date_delta": {"fullname": "sqlglot.dialects.dialect.parse_date_delta", "modulename": "sqlglot.dialects.dialect", "qualname": "parse_date_delta", "kind": "function", "doc": "

\n", "signature": "(\texp_class: Type[~E],\tunit_mapping: Optional[Dict[str, str]] = None) -> Callable[[Sequence], ~E]:", "funcdef": "def"}, "sqlglot.dialects.dialect.date_trunc_to_time": {"fullname": "sqlglot.dialects.dialect.date_trunc_to_time", "modulename": "sqlglot.dialects.dialect", "qualname": "date_trunc_to_time", "kind": "function", "doc": "

\n", "signature": "(\targs: Sequence) -> sqlglot.expressions.DateTrunc | sqlglot.expressions.TimestampTrunc:", "funcdef": "def"}, "sqlglot.dialects.dialect.timestamptrunc_sql": {"fullname": "sqlglot.dialects.dialect.timestamptrunc_sql", "modulename": "sqlglot.dialects.dialect", "qualname": "timestamptrunc_sql", "kind": "function", "doc": "

\n", "signature": "(\tself: sqlglot.generator.Generator,\texpression: sqlglot.expressions.TimestampTrunc) -> str:", "funcdef": "def"}, "sqlglot.dialects.dialect.locate_to_strposition": {"fullname": "sqlglot.dialects.dialect.locate_to_strposition", "modulename": "sqlglot.dialects.dialect", "qualname": "locate_to_strposition", "kind": "function", "doc": "

\n", "signature": "(args: Sequence) -> sqlglot.expressions.Expression:", "funcdef": "def"}, "sqlglot.dialects.dialect.strposition_to_locate_sql": {"fullname": "sqlglot.dialects.dialect.strposition_to_locate_sql", "modulename": "sqlglot.dialects.dialect", "qualname": "strposition_to_locate_sql", "kind": "function", "doc": "

\n", "signature": "(\tself: sqlglot.generator.Generator,\texpression: sqlglot.expressions.StrPosition) -> str:", "funcdef": "def"}, "sqlglot.dialects.dialect.timestrtotime_sql": {"fullname": "sqlglot.dialects.dialect.timestrtotime_sql", "modulename": "sqlglot.dialects.dialect", "qualname": "timestrtotime_sql", "kind": "function", "doc": "

\n", "signature": "(\tself: sqlglot.generator.Generator,\texpression: sqlglot.expressions.TimeStrToTime) -> str:", "funcdef": "def"}, "sqlglot.dialects.dialect.datestrtodate_sql": {"fullname": "sqlglot.dialects.dialect.datestrtodate_sql", "modulename": "sqlglot.dialects.dialect", "qualname": "datestrtodate_sql", "kind": "function", "doc": "

\n", "signature": "(\tself: sqlglot.generator.Generator,\texpression: sqlglot.expressions.DateStrToDate) -> str:", "funcdef": "def"}, "sqlglot.dialects.dialect.min_or_least": {"fullname": "sqlglot.dialects.dialect.min_or_least", "modulename": "sqlglot.dialects.dialect", "qualname": "min_or_least", "kind": "function", "doc": "

\n", "signature": "(\tself: sqlglot.generator.Generator,\texpression: sqlglot.expressions.Min) -> str:", "funcdef": "def"}, "sqlglot.dialects.dialect.max_or_greatest": {"fullname": "sqlglot.dialects.dialect.max_or_greatest", "modulename": "sqlglot.dialects.dialect", "qualname": "max_or_greatest", "kind": "function", "doc": "

\n", "signature": "(\tself: sqlglot.generator.Generator,\texpression: sqlglot.expressions.Max) -> str:", "funcdef": "def"}, "sqlglot.dialects.dialect.count_if_to_sum": {"fullname": "sqlglot.dialects.dialect.count_if_to_sum", "modulename": "sqlglot.dialects.dialect", "qualname": "count_if_to_sum", "kind": "function", "doc": "

\n", "signature": "(\tself: sqlglot.generator.Generator,\texpression: sqlglot.expressions.CountIf) -> str:", "funcdef": "def"}, "sqlglot.dialects.dialect.trim_sql": {"fullname": "sqlglot.dialects.dialect.trim_sql", "modulename": "sqlglot.dialects.dialect", "qualname": "trim_sql", "kind": "function", "doc": "

\n", "signature": "(\tself: sqlglot.generator.Generator,\texpression: sqlglot.expressions.Trim) -> str:", "funcdef": "def"}, "sqlglot.dialects.dialect.str_to_time_sql": {"fullname": "sqlglot.dialects.dialect.str_to_time_sql", "modulename": "sqlglot.dialects.dialect", "qualname": "str_to_time_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Expression) -> str:", "funcdef": "def"}, "sqlglot.dialects.dialect.ts_or_ds_to_date_sql": {"fullname": "sqlglot.dialects.dialect.ts_or_ds_to_date_sql", "modulename": "sqlglot.dialects.dialect", "qualname": "ts_or_ds_to_date_sql", "kind": "function", "doc": "

\n", "signature": "(dialect: str) -> Callable:", "funcdef": "def"}, "sqlglot.dialects.drill": {"fullname": "sqlglot.dialects.drill", "modulename": "sqlglot.dialects.drill", "kind": "module", "doc": "

\n"}, "sqlglot.dialects.drill.Drill": {"fullname": "sqlglot.dialects.drill.Drill", "modulename": "sqlglot.dialects.drill", "qualname": "Drill", "kind": "class", "doc": "

\n", "bases": "sqlglot.dialects.dialect.Dialect"}, "sqlglot.dialects.drill.Drill.Tokenizer": {"fullname": "sqlglot.dialects.drill.Drill.Tokenizer", "modulename": "sqlglot.dialects.drill", "qualname": "Drill.Tokenizer", "kind": "class", "doc": "

\n", "bases": "sqlglot.tokens.Tokenizer"}, "sqlglot.dialects.drill.Drill.Parser": {"fullname": "sqlglot.dialects.drill.Drill.Parser", "modulename": "sqlglot.dialects.drill", "qualname": "Drill.Parser", "kind": "class", "doc": "

Parser consumes a list of tokens produced by the sqlglot.tokens.Tokenizer and produces\na parsed syntax tree.

\n\n
Arguments:
\n\n
    \n
  • error_level: the desired error level.\nDefault: ErrorLevel.RAISE
  • \n
  • error_message_context: determines the amount of context to capture from a\nquery string when displaying the error message (in number of characters).\nDefault: 50.
  • \n
  • index_offset: Index offset for arrays eg ARRAY[0] vs ARRAY[1] as the head of a list.\nDefault: 0
  • \n
  • alias_post_tablesample: If the table alias comes after tablesample.\nDefault: False
  • \n
  • max_errors: Maximum number of error messages to include in a raised ParseError.\nThis is only relevant if error_level is ErrorLevel.RAISE.\nDefault: 3
  • \n
  • null_ordering: Indicates the default null ordering method to use if not explicitly set.\nOptions are \"nulls_are_small\", \"nulls_are_large\", \"nulls_are_last\".\nDefault: \"nulls_are_small\"
  • \n
\n", "bases": "sqlglot.parser.Parser"}, "sqlglot.dialects.drill.Drill.Generator": {"fullname": "sqlglot.dialects.drill.Drill.Generator", "modulename": "sqlglot.dialects.drill", "qualname": "Drill.Generator", "kind": "class", "doc": "

Generator interprets the given syntax tree and produces a SQL string as an output.

\n\n
Arguments:
\n\n
    \n
  • time_mapping (dict): the dictionary of custom time mappings in which the key\nrepresents a python time format and the output the target time format
  • \n
  • time_trie (trie): a trie of the time_mapping keys
  • \n
  • pretty (bool): if set to True the returned string will be formatted. Default: False.
  • \n
  • quote_start (str): specifies which starting character to use to delimit quotes. Default: '.
  • \n
  • quote_end (str): specifies which ending character to use to delimit quotes. Default: '.
  • \n
  • identifier_start (str): specifies which starting character to use to delimit identifiers. Default: \".
  • \n
  • identifier_end (str): specifies which ending character to use to delimit identifiers. Default: \".
  • \n
  • identify (bool | str): 'always': always quote, 'safe': quote identifiers if they don't contain an upcase, True defaults to always.
  • \n
  • normalize (bool): if set to True all identifiers will lower cased
  • \n
  • string_escape (str): specifies a string escape character. Default: '.
  • \n
  • identifier_escape (str): specifies an identifier escape character. Default: \".
  • \n
  • pad (int): determines padding in a formatted string. Default: 2.
  • \n
  • indent (int): determines the size of indentation in a formatted string. Default: 4.
  • \n
  • unnest_column_only (bool): if true unnest table aliases are considered only as column aliases
  • \n
  • normalize_functions (str): normalize function names, \"upper\", \"lower\", or None\nDefault: \"upper\"
  • \n
  • alias_post_tablesample (bool): if the table alias comes after tablesample\nDefault: False
  • \n
  • unsupported_level (ErrorLevel): determines the generator's behavior when it encounters\nunsupported expressions. Default ErrorLevel.WARN.
  • \n
  • null_ordering (str): Indicates the default null ordering method to use if not explicitly set.\nOptions are \"nulls_are_small\", \"nulls_are_large\", \"nulls_are_last\".\nDefault: \"nulls_are_small\"
  • \n
  • max_unsupported (int): Maximum number of unsupported messages to include in a raised UnsupportedError.\nThis is only relevant if unsupported_level is ErrorLevel.RAISE.\nDefault: 3
  • \n
  • leading_comma (bool): if the the comma is leading or trailing in select statements\nDefault: False
  • \n
  • max_text_width: The max number of characters in a segment before creating new lines in pretty mode.\nThe default is on the smaller end because the length only represents a segment and not the true\nline length.\nDefault: 80
  • \n
  • comments: Whether or not to preserve comments in the output SQL code.\nDefault: True
  • \n
\n", "bases": "sqlglot.generator.Generator"}, "sqlglot.dialects.drill.Drill.Generator.normalize_func": {"fullname": "sqlglot.dialects.drill.Drill.Generator.normalize_func", "modulename": "sqlglot.dialects.drill", "qualname": "Drill.Generator.normalize_func", "kind": "function", "doc": "

\n", "signature": "(self, name: str) -> str:", "funcdef": "def"}, "sqlglot.dialects.duckdb": {"fullname": "sqlglot.dialects.duckdb", "modulename": "sqlglot.dialects.duckdb", "kind": "module", "doc": "

\n"}, "sqlglot.dialects.duckdb.DuckDB": {"fullname": "sqlglot.dialects.duckdb.DuckDB", "modulename": "sqlglot.dialects.duckdb", "qualname": "DuckDB", "kind": "class", "doc": "

\n", "bases": "sqlglot.dialects.dialect.Dialect"}, "sqlglot.dialects.duckdb.DuckDB.Tokenizer": {"fullname": "sqlglot.dialects.duckdb.DuckDB.Tokenizer", "modulename": "sqlglot.dialects.duckdb", "qualname": "DuckDB.Tokenizer", "kind": "class", "doc": "

\n", "bases": "sqlglot.tokens.Tokenizer"}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"fullname": "sqlglot.dialects.duckdb.DuckDB.Parser", "modulename": "sqlglot.dialects.duckdb", "qualname": "DuckDB.Parser", "kind": "class", "doc": "

Parser consumes a list of tokens produced by the sqlglot.tokens.Tokenizer and produces\na parsed syntax tree.

\n\n
Arguments:
\n\n
    \n
  • error_level: the desired error level.\nDefault: ErrorLevel.RAISE
  • \n
  • error_message_context: determines the amount of context to capture from a\nquery string when displaying the error message (in number of characters).\nDefault: 50.
  • \n
  • index_offset: Index offset for arrays eg ARRAY[0] vs ARRAY[1] as the head of a list.\nDefault: 0
  • \n
  • alias_post_tablesample: If the table alias comes after tablesample.\nDefault: False
  • \n
  • max_errors: Maximum number of error messages to include in a raised ParseError.\nThis is only relevant if error_level is ErrorLevel.RAISE.\nDefault: 3
  • \n
  • null_ordering: Indicates the default null ordering method to use if not explicitly set.\nOptions are \"nulls_are_small\", \"nulls_are_large\", \"nulls_are_last\".\nDefault: \"nulls_are_small\"
  • \n
\n", "bases": "sqlglot.parser.Parser"}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"fullname": "sqlglot.dialects.duckdb.DuckDB.Generator", "modulename": "sqlglot.dialects.duckdb", "qualname": "DuckDB.Generator", "kind": "class", "doc": "

Generator interprets the given syntax tree and produces a SQL string as an output.

\n\n
Arguments:
\n\n
    \n
  • time_mapping (dict): the dictionary of custom time mappings in which the key\nrepresents a python time format and the output the target time format
  • \n
  • time_trie (trie): a trie of the time_mapping keys
  • \n
  • pretty (bool): if set to True the returned string will be formatted. Default: False.
  • \n
  • quote_start (str): specifies which starting character to use to delimit quotes. Default: '.
  • \n
  • quote_end (str): specifies which ending character to use to delimit quotes. Default: '.
  • \n
  • identifier_start (str): specifies which starting character to use to delimit identifiers. Default: \".
  • \n
  • identifier_end (str): specifies which ending character to use to delimit identifiers. Default: \".
  • \n
  • identify (bool | str): 'always': always quote, 'safe': quote identifiers if they don't contain an upcase, True defaults to always.
  • \n
  • normalize (bool): if set to True all identifiers will lower cased
  • \n
  • string_escape (str): specifies a string escape character. Default: '.
  • \n
  • identifier_escape (str): specifies an identifier escape character. Default: \".
  • \n
  • pad (int): determines padding in a formatted string. Default: 2.
  • \n
  • indent (int): determines the size of indentation in a formatted string. Default: 4.
  • \n
  • unnest_column_only (bool): if true unnest table aliases are considered only as column aliases
  • \n
  • normalize_functions (str): normalize function names, \"upper\", \"lower\", or None\nDefault: \"upper\"
  • \n
  • alias_post_tablesample (bool): if the table alias comes after tablesample\nDefault: False
  • \n
  • unsupported_level (ErrorLevel): determines the generator's behavior when it encounters\nunsupported expressions. Default ErrorLevel.WARN.
  • \n
  • null_ordering (str): Indicates the default null ordering method to use if not explicitly set.\nOptions are \"nulls_are_small\", \"nulls_are_large\", \"nulls_are_last\".\nDefault: \"nulls_are_small\"
  • \n
  • max_unsupported (int): Maximum number of unsupported messages to include in a raised UnsupportedError.\nThis is only relevant if unsupported_level is ErrorLevel.RAISE.\nDefault: 3
  • \n
  • leading_comma (bool): if the the comma is leading or trailing in select statements\nDefault: False
  • \n
  • max_text_width: The max number of characters in a segment before creating new lines in pretty mode.\nThe default is on the smaller end because the length only represents a segment and not the true\nline length.\nDefault: 80
  • \n
  • comments: Whether or not to preserve comments in the output SQL code.\nDefault: True
  • \n
\n", "bases": "sqlglot.generator.Generator"}, "sqlglot.dialects.duckdb.DuckDB.Generator.tablesample_sql": {"fullname": "sqlglot.dialects.duckdb.DuckDB.Generator.tablesample_sql", "modulename": "sqlglot.dialects.duckdb", "qualname": "DuckDB.Generator.tablesample_sql", "kind": "function", "doc": "

\n", "signature": "(\tself,\texpression: sqlglot.expressions.TableSample,\tseed_prefix: str = 'SEED') -> str:", "funcdef": "def"}, "sqlglot.dialects.hive": {"fullname": "sqlglot.dialects.hive", "modulename": "sqlglot.dialects.hive", "kind": "module", "doc": "

\n"}, "sqlglot.dialects.hive.Hive": {"fullname": "sqlglot.dialects.hive.Hive", "modulename": "sqlglot.dialects.hive", "qualname": "Hive", "kind": "class", "doc": "

\n", "bases": "sqlglot.dialects.dialect.Dialect"}, "sqlglot.dialects.hive.Hive.Tokenizer": {"fullname": "sqlglot.dialects.hive.Hive.Tokenizer", "modulename": "sqlglot.dialects.hive", "qualname": "Hive.Tokenizer", "kind": "class", "doc": "

\n", "bases": "sqlglot.tokens.Tokenizer"}, "sqlglot.dialects.hive.Hive.Parser": {"fullname": "sqlglot.dialects.hive.Hive.Parser", "modulename": "sqlglot.dialects.hive", "qualname": "Hive.Parser", "kind": "class", "doc": "

Parser consumes a list of tokens produced by the sqlglot.tokens.Tokenizer and produces\na parsed syntax tree.

\n\n
Arguments:
\n\n
    \n
  • error_level: the desired error level.\nDefault: ErrorLevel.RAISE
  • \n
  • error_message_context: determines the amount of context to capture from a\nquery string when displaying the error message (in number of characters).\nDefault: 50.
  • \n
  • index_offset: Index offset for arrays eg ARRAY[0] vs ARRAY[1] as the head of a list.\nDefault: 0
  • \n
  • alias_post_tablesample: If the table alias comes after tablesample.\nDefault: False
  • \n
  • max_errors: Maximum number of error messages to include in a raised ParseError.\nThis is only relevant if error_level is ErrorLevel.RAISE.\nDefault: 3
  • \n
  • null_ordering: Indicates the default null ordering method to use if not explicitly set.\nOptions are \"nulls_are_small\", \"nulls_are_large\", \"nulls_are_last\".\nDefault: \"nulls_are_small\"
  • \n
\n", "bases": "sqlglot.parser.Parser"}, "sqlglot.dialects.hive.Hive.Generator": {"fullname": "sqlglot.dialects.hive.Hive.Generator", "modulename": "sqlglot.dialects.hive", "qualname": "Hive.Generator", "kind": "class", "doc": "

Generator interprets the given syntax tree and produces a SQL string as an output.

\n\n
Arguments:
\n\n
    \n
  • time_mapping (dict): the dictionary of custom time mappings in which the key\nrepresents a python time format and the output the target time format
  • \n
  • time_trie (trie): a trie of the time_mapping keys
  • \n
  • pretty (bool): if set to True the returned string will be formatted. Default: False.
  • \n
  • quote_start (str): specifies which starting character to use to delimit quotes. Default: '.
  • \n
  • quote_end (str): specifies which ending character to use to delimit quotes. Default: '.
  • \n
  • identifier_start (str): specifies which starting character to use to delimit identifiers. Default: \".
  • \n
  • identifier_end (str): specifies which ending character to use to delimit identifiers. Default: \".
  • \n
  • identify (bool | str): 'always': always quote, 'safe': quote identifiers if they don't contain an upcase, True defaults to always.
  • \n
  • normalize (bool): if set to True all identifiers will lower cased
  • \n
  • string_escape (str): specifies a string escape character. Default: '.
  • \n
  • identifier_escape (str): specifies an identifier escape character. Default: \".
  • \n
  • pad (int): determines padding in a formatted string. Default: 2.
  • \n
  • indent (int): determines the size of indentation in a formatted string. Default: 4.
  • \n
  • unnest_column_only (bool): if true unnest table aliases are considered only as column aliases
  • \n
  • normalize_functions (str): normalize function names, \"upper\", \"lower\", or None\nDefault: \"upper\"
  • \n
  • alias_post_tablesample (bool): if the table alias comes after tablesample\nDefault: False
  • \n
  • unsupported_level (ErrorLevel): determines the generator's behavior when it encounters\nunsupported expressions. Default ErrorLevel.WARN.
  • \n
  • null_ordering (str): Indicates the default null ordering method to use if not explicitly set.\nOptions are \"nulls_are_small\", \"nulls_are_large\", \"nulls_are_last\".\nDefault: \"nulls_are_small\"
  • \n
  • max_unsupported (int): Maximum number of unsupported messages to include in a raised UnsupportedError.\nThis is only relevant if unsupported_level is ErrorLevel.RAISE.\nDefault: 3
  • \n
  • leading_comma (bool): if the the comma is leading or trailing in select statements\nDefault: False
  • \n
  • max_text_width: The max number of characters in a segment before creating new lines in pretty mode.\nThe default is on the smaller end because the length only represents a segment and not the true\nline length.\nDefault: 80
  • \n
  • comments: Whether or not to preserve comments in the output SQL code.\nDefault: True
  • \n
\n", "bases": "sqlglot.generator.Generator"}, "sqlglot.dialects.hive.Hive.Generator.arrayagg_sql": {"fullname": "sqlglot.dialects.hive.Hive.Generator.arrayagg_sql", "modulename": "sqlglot.dialects.hive", "qualname": "Hive.Generator.arrayagg_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.ArrayAgg) -> str:", "funcdef": "def"}, "sqlglot.dialects.hive.Hive.Generator.with_properties": {"fullname": "sqlglot.dialects.hive.Hive.Generator.with_properties", "modulename": "sqlglot.dialects.hive", "qualname": "Hive.Generator.with_properties", "kind": "function", "doc": "

\n", "signature": "(self, properties: sqlglot.expressions.Properties) -> str:", "funcdef": "def"}, "sqlglot.dialects.hive.Hive.Generator.datatype_sql": {"fullname": "sqlglot.dialects.hive.Hive.Generator.datatype_sql", "modulename": "sqlglot.dialects.hive", "qualname": "Hive.Generator.datatype_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.DataType) -> str:", "funcdef": "def"}, "sqlglot.dialects.mysql": {"fullname": "sqlglot.dialects.mysql", "modulename": "sqlglot.dialects.mysql", "kind": "module", "doc": "

\n"}, "sqlglot.dialects.mysql.MySQL": {"fullname": "sqlglot.dialects.mysql.MySQL", "modulename": "sqlglot.dialects.mysql", "qualname": "MySQL", "kind": "class", "doc": "

\n", "bases": "sqlglot.dialects.dialect.Dialect"}, "sqlglot.dialects.mysql.MySQL.Tokenizer": {"fullname": "sqlglot.dialects.mysql.MySQL.Tokenizer", "modulename": "sqlglot.dialects.mysql", "qualname": "MySQL.Tokenizer", "kind": "class", "doc": "

\n", "bases": "sqlglot.tokens.Tokenizer"}, "sqlglot.dialects.mysql.MySQL.Parser": {"fullname": "sqlglot.dialects.mysql.MySQL.Parser", "modulename": "sqlglot.dialects.mysql", "qualname": "MySQL.Parser", "kind": "class", "doc": "

Parser consumes a list of tokens produced by the sqlglot.tokens.Tokenizer and produces\na parsed syntax tree.

\n\n
Arguments:
\n\n
    \n
  • error_level: the desired error level.\nDefault: ErrorLevel.RAISE
  • \n
  • error_message_context: determines the amount of context to capture from a\nquery string when displaying the error message (in number of characters).\nDefault: 50.
  • \n
  • index_offset: Index offset for arrays eg ARRAY[0] vs ARRAY[1] as the head of a list.\nDefault: 0
  • \n
  • alias_post_tablesample: If the table alias comes after tablesample.\nDefault: False
  • \n
  • max_errors: Maximum number of error messages to include in a raised ParseError.\nThis is only relevant if error_level is ErrorLevel.RAISE.\nDefault: 3
  • \n
  • null_ordering: Indicates the default null ordering method to use if not explicitly set.\nOptions are \"nulls_are_small\", \"nulls_are_large\", \"nulls_are_last\".\nDefault: \"nulls_are_small\"
  • \n
\n", "bases": "sqlglot.parser.Parser"}, "sqlglot.dialects.mysql.MySQL.Generator": {"fullname": "sqlglot.dialects.mysql.MySQL.Generator", "modulename": "sqlglot.dialects.mysql", "qualname": "MySQL.Generator", "kind": "class", "doc": "

Generator interprets the given syntax tree and produces a SQL string as an output.

\n\n
Arguments:
\n\n
    \n
  • time_mapping (dict): the dictionary of custom time mappings in which the key\nrepresents a python time format and the output the target time format
  • \n
  • time_trie (trie): a trie of the time_mapping keys
  • \n
  • pretty (bool): if set to True the returned string will be formatted. Default: False.
  • \n
  • quote_start (str): specifies which starting character to use to delimit quotes. Default: '.
  • \n
  • quote_end (str): specifies which ending character to use to delimit quotes. Default: '.
  • \n
  • identifier_start (str): specifies which starting character to use to delimit identifiers. Default: \".
  • \n
  • identifier_end (str): specifies which ending character to use to delimit identifiers. Default: \".
  • \n
  • identify (bool | str): 'always': always quote, 'safe': quote identifiers if they don't contain an upcase, True defaults to always.
  • \n
  • normalize (bool): if set to True all identifiers will lower cased
  • \n
  • string_escape (str): specifies a string escape character. Default: '.
  • \n
  • identifier_escape (str): specifies an identifier escape character. Default: \".
  • \n
  • pad (int): determines padding in a formatted string. Default: 2.
  • \n
  • indent (int): determines the size of indentation in a formatted string. Default: 4.
  • \n
  • unnest_column_only (bool): if true unnest table aliases are considered only as column aliases
  • \n
  • normalize_functions (str): normalize function names, \"upper\", \"lower\", or None\nDefault: \"upper\"
  • \n
  • alias_post_tablesample (bool): if the table alias comes after tablesample\nDefault: False
  • \n
  • unsupported_level (ErrorLevel): determines the generator's behavior when it encounters\nunsupported expressions. Default ErrorLevel.WARN.
  • \n
  • null_ordering (str): Indicates the default null ordering method to use if not explicitly set.\nOptions are \"nulls_are_small\", \"nulls_are_large\", \"nulls_are_last\".\nDefault: \"nulls_are_small\"
  • \n
  • max_unsupported (int): Maximum number of unsupported messages to include in a raised UnsupportedError.\nThis is only relevant if unsupported_level is ErrorLevel.RAISE.\nDefault: 3
  • \n
  • leading_comma (bool): if the the comma is leading or trailing in select statements\nDefault: False
  • \n
  • max_text_width: The max number of characters in a segment before creating new lines in pretty mode.\nThe default is on the smaller end because the length only represents a segment and not the true\nline length.\nDefault: 80
  • \n
  • comments: Whether or not to preserve comments in the output SQL code.\nDefault: True
  • \n
\n", "bases": "sqlglot.generator.Generator"}, "sqlglot.dialects.mysql.MySQL.Generator.show_sql": {"fullname": "sqlglot.dialects.mysql.MySQL.Generator.show_sql", "modulename": "sqlglot.dialects.mysql", "qualname": "MySQL.Generator.show_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Show) -> str:", "funcdef": "def"}, "sqlglot.dialects.oracle": {"fullname": "sqlglot.dialects.oracle", "modulename": "sqlglot.dialects.oracle", "kind": "module", "doc": "

\n"}, "sqlglot.dialects.oracle.Oracle": {"fullname": "sqlglot.dialects.oracle.Oracle", "modulename": "sqlglot.dialects.oracle", "qualname": "Oracle", "kind": "class", "doc": "

\n", "bases": "sqlglot.dialects.dialect.Dialect"}, "sqlglot.dialects.oracle.Oracle.Parser": {"fullname": "sqlglot.dialects.oracle.Oracle.Parser", "modulename": "sqlglot.dialects.oracle", "qualname": "Oracle.Parser", "kind": "class", "doc": "

Parser consumes a list of tokens produced by the sqlglot.tokens.Tokenizer and produces\na parsed syntax tree.

\n\n
Arguments:
\n\n
    \n
  • error_level: the desired error level.\nDefault: ErrorLevel.RAISE
  • \n
  • error_message_context: determines the amount of context to capture from a\nquery string when displaying the error message (in number of characters).\nDefault: 50.
  • \n
  • index_offset: Index offset for arrays eg ARRAY[0] vs ARRAY[1] as the head of a list.\nDefault: 0
  • \n
  • alias_post_tablesample: If the table alias comes after tablesample.\nDefault: False
  • \n
  • max_errors: Maximum number of error messages to include in a raised ParseError.\nThis is only relevant if error_level is ErrorLevel.RAISE.\nDefault: 3
  • \n
  • null_ordering: Indicates the default null ordering method to use if not explicitly set.\nOptions are \"nulls_are_small\", \"nulls_are_large\", \"nulls_are_last\".\nDefault: \"nulls_are_small\"
  • \n
\n", "bases": "sqlglot.parser.Parser"}, "sqlglot.dialects.oracle.Oracle.Generator": {"fullname": "sqlglot.dialects.oracle.Oracle.Generator", "modulename": "sqlglot.dialects.oracle", "qualname": "Oracle.Generator", "kind": "class", "doc": "

Generator interprets the given syntax tree and produces a SQL string as an output.

\n\n
Arguments:
\n\n
    \n
  • time_mapping (dict): the dictionary of custom time mappings in which the key\nrepresents a python time format and the output the target time format
  • \n
  • time_trie (trie): a trie of the time_mapping keys
  • \n
  • pretty (bool): if set to True the returned string will be formatted. Default: False.
  • \n
  • quote_start (str): specifies which starting character to use to delimit quotes. Default: '.
  • \n
  • quote_end (str): specifies which ending character to use to delimit quotes. Default: '.
  • \n
  • identifier_start (str): specifies which starting character to use to delimit identifiers. Default: \".
  • \n
  • identifier_end (str): specifies which ending character to use to delimit identifiers. Default: \".
  • \n
  • identify (bool | str): 'always': always quote, 'safe': quote identifiers if they don't contain an upcase, True defaults to always.
  • \n
  • normalize (bool): if set to True all identifiers will lower cased
  • \n
  • string_escape (str): specifies a string escape character. Default: '.
  • \n
  • identifier_escape (str): specifies an identifier escape character. Default: \".
  • \n
  • pad (int): determines padding in a formatted string. Default: 2.
  • \n
  • indent (int): determines the size of indentation in a formatted string. Default: 4.
  • \n
  • unnest_column_only (bool): if true unnest table aliases are considered only as column aliases
  • \n
  • normalize_functions (str): normalize function names, \"upper\", \"lower\", or None\nDefault: \"upper\"
  • \n
  • alias_post_tablesample (bool): if the table alias comes after tablesample\nDefault: False
  • \n
  • unsupported_level (ErrorLevel): determines the generator's behavior when it encounters\nunsupported expressions. Default ErrorLevel.WARN.
  • \n
  • null_ordering (str): Indicates the default null ordering method to use if not explicitly set.\nOptions are \"nulls_are_small\", \"nulls_are_large\", \"nulls_are_last\".\nDefault: \"nulls_are_small\"
  • \n
  • max_unsupported (int): Maximum number of unsupported messages to include in a raised UnsupportedError.\nThis is only relevant if unsupported_level is ErrorLevel.RAISE.\nDefault: 3
  • \n
  • leading_comma (bool): if the the comma is leading or trailing in select statements\nDefault: False
  • \n
  • max_text_width: The max number of characters in a segment before creating new lines in pretty mode.\nThe default is on the smaller end because the length only represents a segment and not the true\nline length.\nDefault: 80
  • \n
  • comments: Whether or not to preserve comments in the output SQL code.\nDefault: True
  • \n
\n", "bases": "sqlglot.generator.Generator"}, "sqlglot.dialects.oracle.Oracle.Generator.offset_sql": {"fullname": "sqlglot.dialects.oracle.Oracle.Generator.offset_sql", "modulename": "sqlglot.dialects.oracle", "qualname": "Oracle.Generator.offset_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Offset) -> str:", "funcdef": "def"}, "sqlglot.dialects.oracle.Oracle.Generator.column_sql": {"fullname": "sqlglot.dialects.oracle.Oracle.Generator.column_sql", "modulename": "sqlglot.dialects.oracle", "qualname": "Oracle.Generator.column_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Column) -> str:", "funcdef": "def"}, "sqlglot.dialects.oracle.Oracle.Generator.xmltable_sql": {"fullname": "sqlglot.dialects.oracle.Oracle.Generator.xmltable_sql", "modulename": "sqlglot.dialects.oracle", "qualname": "Oracle.Generator.xmltable_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.XMLTable) -> str:", "funcdef": "def"}, "sqlglot.dialects.oracle.Oracle.Tokenizer": {"fullname": "sqlglot.dialects.oracle.Oracle.Tokenizer", "modulename": "sqlglot.dialects.oracle", "qualname": "Oracle.Tokenizer", "kind": "class", "doc": "

\n", "bases": "sqlglot.tokens.Tokenizer"}, "sqlglot.dialects.postgres": {"fullname": "sqlglot.dialects.postgres", "modulename": "sqlglot.dialects.postgres", "kind": "module", "doc": "

\n"}, "sqlglot.dialects.postgres.Postgres": {"fullname": "sqlglot.dialects.postgres.Postgres", "modulename": "sqlglot.dialects.postgres", "qualname": "Postgres", "kind": "class", "doc": "

\n", "bases": "sqlglot.dialects.dialect.Dialect"}, "sqlglot.dialects.postgres.Postgres.Tokenizer": {"fullname": "sqlglot.dialects.postgres.Postgres.Tokenizer", "modulename": "sqlglot.dialects.postgres", "qualname": "Postgres.Tokenizer", "kind": "class", "doc": "

\n", "bases": "sqlglot.tokens.Tokenizer"}, "sqlglot.dialects.postgres.Postgres.Parser": {"fullname": "sqlglot.dialects.postgres.Postgres.Parser", "modulename": "sqlglot.dialects.postgres", "qualname": "Postgres.Parser", "kind": "class", "doc": "

Parser consumes a list of tokens produced by the sqlglot.tokens.Tokenizer and produces\na parsed syntax tree.

\n\n
Arguments:
\n\n
    \n
  • error_level: the desired error level.\nDefault: ErrorLevel.RAISE
  • \n
  • error_message_context: determines the amount of context to capture from a\nquery string when displaying the error message (in number of characters).\nDefault: 50.
  • \n
  • index_offset: Index offset for arrays eg ARRAY[0] vs ARRAY[1] as the head of a list.\nDefault: 0
  • \n
  • alias_post_tablesample: If the table alias comes after tablesample.\nDefault: False
  • \n
  • max_errors: Maximum number of error messages to include in a raised ParseError.\nThis is only relevant if error_level is ErrorLevel.RAISE.\nDefault: 3
  • \n
  • null_ordering: Indicates the default null ordering method to use if not explicitly set.\nOptions are \"nulls_are_small\", \"nulls_are_large\", \"nulls_are_last\".\nDefault: \"nulls_are_small\"
  • \n
\n", "bases": "sqlglot.parser.Parser"}, "sqlglot.dialects.postgres.Postgres.Generator": {"fullname": "sqlglot.dialects.postgres.Postgres.Generator", "modulename": "sqlglot.dialects.postgres", "qualname": "Postgres.Generator", "kind": "class", "doc": "

Generator interprets the given syntax tree and produces a SQL string as an output.

\n\n
Arguments:
\n\n
    \n
  • time_mapping (dict): the dictionary of custom time mappings in which the key\nrepresents a python time format and the output the target time format
  • \n
  • time_trie (trie): a trie of the time_mapping keys
  • \n
  • pretty (bool): if set to True the returned string will be formatted. Default: False.
  • \n
  • quote_start (str): specifies which starting character to use to delimit quotes. Default: '.
  • \n
  • quote_end (str): specifies which ending character to use to delimit quotes. Default: '.
  • \n
  • identifier_start (str): specifies which starting character to use to delimit identifiers. Default: \".
  • \n
  • identifier_end (str): specifies which ending character to use to delimit identifiers. Default: \".
  • \n
  • identify (bool | str): 'always': always quote, 'safe': quote identifiers if they don't contain an upcase, True defaults to always.
  • \n
  • normalize (bool): if set to True all identifiers will lower cased
  • \n
  • string_escape (str): specifies a string escape character. Default: '.
  • \n
  • identifier_escape (str): specifies an identifier escape character. Default: \".
  • \n
  • pad (int): determines padding in a formatted string. Default: 2.
  • \n
  • indent (int): determines the size of indentation in a formatted string. Default: 4.
  • \n
  • unnest_column_only (bool): if true unnest table aliases are considered only as column aliases
  • \n
  • normalize_functions (str): normalize function names, \"upper\", \"lower\", or None\nDefault: \"upper\"
  • \n
  • alias_post_tablesample (bool): if the table alias comes after tablesample\nDefault: False
  • \n
  • unsupported_level (ErrorLevel): determines the generator's behavior when it encounters\nunsupported expressions. Default ErrorLevel.WARN.
  • \n
  • null_ordering (str): Indicates the default null ordering method to use if not explicitly set.\nOptions are \"nulls_are_small\", \"nulls_are_large\", \"nulls_are_last\".\nDefault: \"nulls_are_small\"
  • \n
  • max_unsupported (int): Maximum number of unsupported messages to include in a raised UnsupportedError.\nThis is only relevant if unsupported_level is ErrorLevel.RAISE.\nDefault: 3
  • \n
  • leading_comma (bool): if the the comma is leading or trailing in select statements\nDefault: False
  • \n
  • max_text_width: The max number of characters in a segment before creating new lines in pretty mode.\nThe default is on the smaller end because the length only represents a segment and not the true\nline length.\nDefault: 80
  • \n
  • comments: Whether or not to preserve comments in the output SQL code.\nDefault: True
  • \n
\n", "bases": "sqlglot.generator.Generator"}, "sqlglot.dialects.presto": {"fullname": "sqlglot.dialects.presto", "modulename": "sqlglot.dialects.presto", "kind": "module", "doc": "

\n"}, "sqlglot.dialects.presto.Presto": {"fullname": "sqlglot.dialects.presto.Presto", "modulename": "sqlglot.dialects.presto", "qualname": "Presto", "kind": "class", "doc": "

\n", "bases": "sqlglot.dialects.dialect.Dialect"}, "sqlglot.dialects.presto.Presto.Tokenizer": {"fullname": "sqlglot.dialects.presto.Presto.Tokenizer", "modulename": "sqlglot.dialects.presto", "qualname": "Presto.Tokenizer", "kind": "class", "doc": "

\n", "bases": "sqlglot.tokens.Tokenizer"}, "sqlglot.dialects.presto.Presto.Parser": {"fullname": "sqlglot.dialects.presto.Presto.Parser", "modulename": "sqlglot.dialects.presto", "qualname": "Presto.Parser", "kind": "class", "doc": "

Parser consumes a list of tokens produced by the sqlglot.tokens.Tokenizer and produces\na parsed syntax tree.

\n\n
Arguments:
\n\n
    \n
  • error_level: the desired error level.\nDefault: ErrorLevel.RAISE
  • \n
  • error_message_context: determines the amount of context to capture from a\nquery string when displaying the error message (in number of characters).\nDefault: 50.
  • \n
  • index_offset: Index offset for arrays eg ARRAY[0] vs ARRAY[1] as the head of a list.\nDefault: 0
  • \n
  • alias_post_tablesample: If the table alias comes after tablesample.\nDefault: False
  • \n
  • max_errors: Maximum number of error messages to include in a raised ParseError.\nThis is only relevant if error_level is ErrorLevel.RAISE.\nDefault: 3
  • \n
  • null_ordering: Indicates the default null ordering method to use if not explicitly set.\nOptions are \"nulls_are_small\", \"nulls_are_large\", \"nulls_are_last\".\nDefault: \"nulls_are_small\"
  • \n
\n", "bases": "sqlglot.parser.Parser"}, "sqlglot.dialects.presto.Presto.Generator": {"fullname": "sqlglot.dialects.presto.Presto.Generator", "modulename": "sqlglot.dialects.presto", "qualname": "Presto.Generator", "kind": "class", "doc": "

Generator interprets the given syntax tree and produces a SQL string as an output.

\n\n
Arguments:
\n\n
    \n
  • time_mapping (dict): the dictionary of custom time mappings in which the key\nrepresents a python time format and the output the target time format
  • \n
  • time_trie (trie): a trie of the time_mapping keys
  • \n
  • pretty (bool): if set to True the returned string will be formatted. Default: False.
  • \n
  • quote_start (str): specifies which starting character to use to delimit quotes. Default: '.
  • \n
  • quote_end (str): specifies which ending character to use to delimit quotes. Default: '.
  • \n
  • identifier_start (str): specifies which starting character to use to delimit identifiers. Default: \".
  • \n
  • identifier_end (str): specifies which ending character to use to delimit identifiers. Default: \".
  • \n
  • identify (bool | str): 'always': always quote, 'safe': quote identifiers if they don't contain an upcase, True defaults to always.
  • \n
  • normalize (bool): if set to True all identifiers will lower cased
  • \n
  • string_escape (str): specifies a string escape character. Default: '.
  • \n
  • identifier_escape (str): specifies an identifier escape character. Default: \".
  • \n
  • pad (int): determines padding in a formatted string. Default: 2.
  • \n
  • indent (int): determines the size of indentation in a formatted string. Default: 4.
  • \n
  • unnest_column_only (bool): if true unnest table aliases are considered only as column aliases
  • \n
  • normalize_functions (str): normalize function names, \"upper\", \"lower\", or None\nDefault: \"upper\"
  • \n
  • alias_post_tablesample (bool): if the table alias comes after tablesample\nDefault: False
  • \n
  • unsupported_level (ErrorLevel): determines the generator's behavior when it encounters\nunsupported expressions. Default ErrorLevel.WARN.
  • \n
  • null_ordering (str): Indicates the default null ordering method to use if not explicitly set.\nOptions are \"nulls_are_small\", \"nulls_are_large\", \"nulls_are_last\".\nDefault: \"nulls_are_small\"
  • \n
  • max_unsupported (int): Maximum number of unsupported messages to include in a raised UnsupportedError.\nThis is only relevant if unsupported_level is ErrorLevel.RAISE.\nDefault: 3
  • \n
  • leading_comma (bool): if the the comma is leading or trailing in select statements\nDefault: False
  • \n
  • max_text_width: The max number of characters in a segment before creating new lines in pretty mode.\nThe default is on the smaller end because the length only represents a segment and not the true\nline length.\nDefault: 80
  • \n
  • comments: Whether or not to preserve comments in the output SQL code.\nDefault: True
  • \n
\n", "bases": "sqlglot.generator.Generator"}, "sqlglot.dialects.presto.Presto.Generator.transaction_sql": {"fullname": "sqlglot.dialects.presto.Presto.Generator.transaction_sql", "modulename": "sqlglot.dialects.presto", "qualname": "Presto.Generator.transaction_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression):", "funcdef": "def"}, "sqlglot.dialects.redshift": {"fullname": "sqlglot.dialects.redshift", "modulename": "sqlglot.dialects.redshift", "kind": "module", "doc": "

\n"}, "sqlglot.dialects.redshift.Redshift": {"fullname": "sqlglot.dialects.redshift.Redshift", "modulename": "sqlglot.dialects.redshift", "qualname": "Redshift", "kind": "class", "doc": "

\n", "bases": "sqlglot.dialects.postgres.Postgres"}, "sqlglot.dialects.redshift.Redshift.Parser": {"fullname": "sqlglot.dialects.redshift.Redshift.Parser", "modulename": "sqlglot.dialects.redshift", "qualname": "Redshift.Parser", "kind": "class", "doc": "

Parser consumes a list of tokens produced by the sqlglot.tokens.Tokenizer and produces\na parsed syntax tree.

\n\n
Arguments:
\n\n
    \n
  • error_level: the desired error level.\nDefault: ErrorLevel.RAISE
  • \n
  • error_message_context: determines the amount of context to capture from a\nquery string when displaying the error message (in number of characters).\nDefault: 50.
  • \n
  • index_offset: Index offset for arrays eg ARRAY[0] vs ARRAY[1] as the head of a list.\nDefault: 0
  • \n
  • alias_post_tablesample: If the table alias comes after tablesample.\nDefault: False
  • \n
  • max_errors: Maximum number of error messages to include in a raised ParseError.\nThis is only relevant if error_level is ErrorLevel.RAISE.\nDefault: 3
  • \n
  • null_ordering: Indicates the default null ordering method to use if not explicitly set.\nOptions are \"nulls_are_small\", \"nulls_are_large\", \"nulls_are_last\".\nDefault: \"nulls_are_small\"
  • \n
\n", "bases": "sqlglot.dialects.postgres.Postgres.Parser"}, "sqlglot.dialects.redshift.Redshift.Tokenizer": {"fullname": "sqlglot.dialects.redshift.Redshift.Tokenizer", "modulename": "sqlglot.dialects.redshift", "qualname": "Redshift.Tokenizer", "kind": "class", "doc": "

\n", "bases": "sqlglot.dialects.postgres.Postgres.Tokenizer"}, "sqlglot.dialects.redshift.Redshift.Generator": {"fullname": "sqlglot.dialects.redshift.Redshift.Generator", "modulename": "sqlglot.dialects.redshift", "qualname": "Redshift.Generator", "kind": "class", "doc": "

Generator interprets the given syntax tree and produces a SQL string as an output.

\n\n
Arguments:
\n\n
    \n
  • time_mapping (dict): the dictionary of custom time mappings in which the key\nrepresents a python time format and the output the target time format
  • \n
  • time_trie (trie): a trie of the time_mapping keys
  • \n
  • pretty (bool): if set to True the returned string will be formatted. Default: False.
  • \n
  • quote_start (str): specifies which starting character to use to delimit quotes. Default: '.
  • \n
  • quote_end (str): specifies which ending character to use to delimit quotes. Default: '.
  • \n
  • identifier_start (str): specifies which starting character to use to delimit identifiers. Default: \".
  • \n
  • identifier_end (str): specifies which ending character to use to delimit identifiers. Default: \".
  • \n
  • identify (bool | str): 'always': always quote, 'safe': quote identifiers if they don't contain an upcase, True defaults to always.
  • \n
  • normalize (bool): if set to True all identifiers will lower cased
  • \n
  • string_escape (str): specifies a string escape character. Default: '.
  • \n
  • identifier_escape (str): specifies an identifier escape character. Default: \".
  • \n
  • pad (int): determines padding in a formatted string. Default: 2.
  • \n
  • indent (int): determines the size of indentation in a formatted string. Default: 4.
  • \n
  • unnest_column_only (bool): if true unnest table aliases are considered only as column aliases
  • \n
  • normalize_functions (str): normalize function names, \"upper\", \"lower\", or None\nDefault: \"upper\"
  • \n
  • alias_post_tablesample (bool): if the table alias comes after tablesample\nDefault: False
  • \n
  • unsupported_level (ErrorLevel): determines the generator's behavior when it encounters\nunsupported expressions. Default ErrorLevel.WARN.
  • \n
  • null_ordering (str): Indicates the default null ordering method to use if not explicitly set.\nOptions are \"nulls_are_small\", \"nulls_are_large\", \"nulls_are_last\".\nDefault: \"nulls_are_small\"
  • \n
  • max_unsupported (int): Maximum number of unsupported messages to include in a raised UnsupportedError.\nThis is only relevant if unsupported_level is ErrorLevel.RAISE.\nDefault: 3
  • \n
  • leading_comma (bool): if the the comma is leading or trailing in select statements\nDefault: False
  • \n
  • max_text_width: The max number of characters in a segment before creating new lines in pretty mode.\nThe default is on the smaller end because the length only represents a segment and not the true\nline length.\nDefault: 80
  • \n
  • comments: Whether or not to preserve comments in the output SQL code.\nDefault: True
  • \n
\n", "bases": "sqlglot.dialects.postgres.Postgres.Generator"}, "sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"fullname": "sqlglot.dialects.redshift.Redshift.Generator.values_sql", "modulename": "sqlglot.dialects.redshift", "qualname": "Redshift.Generator.values_sql", "kind": "function", "doc": "

Converts VALUES... expression into a series of unions.

\n\n

Note: If you have a lot of unions then this will result in a large number of recursive statements to\nevaluate the expression. You may need to increase sys.setrecursionlimit to run and it can also be\nvery slow.

\n", "signature": "(self, expression: sqlglot.expressions.Values) -> str:", "funcdef": "def"}, "sqlglot.dialects.redshift.Redshift.Generator.with_properties": {"fullname": "sqlglot.dialects.redshift.Redshift.Generator.with_properties", "modulename": "sqlglot.dialects.redshift", "qualname": "Redshift.Generator.with_properties", "kind": "function", "doc": "

Redshift doesn't have WITH as part of their with_properties so we remove it

\n", "signature": "(self, properties: sqlglot.expressions.Properties) -> str:", "funcdef": "def"}, "sqlglot.dialects.redshift.Redshift.Generator.renametable_sql": {"fullname": "sqlglot.dialects.redshift.Redshift.Generator.renametable_sql", "modulename": "sqlglot.dialects.redshift", "qualname": "Redshift.Generator.renametable_sql", "kind": "function", "doc": "

Redshift only supports defining the table name itself (not the db) when renaming tables

\n", "signature": "(self, expression: sqlglot.expressions.RenameTable) -> str:", "funcdef": "def"}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"fullname": "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql", "modulename": "sqlglot.dialects.redshift", "qualname": "Redshift.Generator.datatype_sql", "kind": "function", "doc": "

Redshift converts the TEXT data type to VARCHAR(255) by default when people more generally mean\nVARCHAR of max length which is VARCHAR(max) in Redshift. Therefore if we get a TEXT data type\nwithout precision we convert it to VARCHAR(max) and if it does have precision then we just convert\nTEXT to VARCHAR.

\n", "signature": "(self, expression: sqlglot.expressions.DataType) -> str:", "funcdef": "def"}, "sqlglot.dialects.snowflake": {"fullname": "sqlglot.dialects.snowflake", "modulename": "sqlglot.dialects.snowflake", "kind": "module", "doc": "

\n"}, "sqlglot.dialects.snowflake.Snowflake": {"fullname": "sqlglot.dialects.snowflake.Snowflake", "modulename": "sqlglot.dialects.snowflake", "qualname": "Snowflake", "kind": "class", "doc": "

\n", "bases": "sqlglot.dialects.dialect.Dialect"}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"fullname": "sqlglot.dialects.snowflake.Snowflake.Parser", "modulename": "sqlglot.dialects.snowflake", "qualname": "Snowflake.Parser", "kind": "class", "doc": "

Parser consumes a list of tokens produced by the sqlglot.tokens.Tokenizer and produces\na parsed syntax tree.

\n\n
Arguments:
\n\n
    \n
  • error_level: the desired error level.\nDefault: ErrorLevel.RAISE
  • \n
  • error_message_context: determines the amount of context to capture from a\nquery string when displaying the error message (in number of characters).\nDefault: 50.
  • \n
  • index_offset: Index offset for arrays eg ARRAY[0] vs ARRAY[1] as the head of a list.\nDefault: 0
  • \n
  • alias_post_tablesample: If the table alias comes after tablesample.\nDefault: False
  • \n
  • max_errors: Maximum number of error messages to include in a raised ParseError.\nThis is only relevant if error_level is ErrorLevel.RAISE.\nDefault: 3
  • \n
  • null_ordering: Indicates the default null ordering method to use if not explicitly set.\nOptions are \"nulls_are_small\", \"nulls_are_large\", \"nulls_are_last\".\nDefault: \"nulls_are_small\"
  • \n
\n", "bases": "sqlglot.parser.Parser"}, "sqlglot.dialects.snowflake.Snowflake.Tokenizer": {"fullname": "sqlglot.dialects.snowflake.Snowflake.Tokenizer", "modulename": "sqlglot.dialects.snowflake", "qualname": "Snowflake.Tokenizer", "kind": "class", "doc": "

\n", "bases": "sqlglot.tokens.Tokenizer"}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"fullname": "sqlglot.dialects.snowflake.Snowflake.Generator", "modulename": "sqlglot.dialects.snowflake", "qualname": "Snowflake.Generator", "kind": "class", "doc": "

Generator interprets the given syntax tree and produces a SQL string as an output.

\n\n
Arguments:
\n\n
    \n
  • time_mapping (dict): the dictionary of custom time mappings in which the key\nrepresents a python time format and the output the target time format
  • \n
  • time_trie (trie): a trie of the time_mapping keys
  • \n
  • pretty (bool): if set to True the returned string will be formatted. Default: False.
  • \n
  • quote_start (str): specifies which starting character to use to delimit quotes. Default: '.
  • \n
  • quote_end (str): specifies which ending character to use to delimit quotes. Default: '.
  • \n
  • identifier_start (str): specifies which starting character to use to delimit identifiers. Default: \".
  • \n
  • identifier_end (str): specifies which ending character to use to delimit identifiers. Default: \".
  • \n
  • identify (bool | str): 'always': always quote, 'safe': quote identifiers if they don't contain an upcase, True defaults to always.
  • \n
  • normalize (bool): if set to True all identifiers will lower cased
  • \n
  • string_escape (str): specifies a string escape character. Default: '.
  • \n
  • identifier_escape (str): specifies an identifier escape character. Default: \".
  • \n
  • pad (int): determines padding in a formatted string. Default: 2.
  • \n
  • indent (int): determines the size of indentation in a formatted string. Default: 4.
  • \n
  • unnest_column_only (bool): if true unnest table aliases are considered only as column aliases
  • \n
  • normalize_functions (str): normalize function names, \"upper\", \"lower\", or None\nDefault: \"upper\"
  • \n
  • alias_post_tablesample (bool): if the table alias comes after tablesample\nDefault: False
  • \n
  • unsupported_level (ErrorLevel): determines the generator's behavior when it encounters\nunsupported expressions. Default ErrorLevel.WARN.
  • \n
  • null_ordering (str): Indicates the default null ordering method to use if not explicitly set.\nOptions are \"nulls_are_small\", \"nulls_are_large\", \"nulls_are_last\".\nDefault: \"nulls_are_small\"
  • \n
  • max_unsupported (int): Maximum number of unsupported messages to include in a raised UnsupportedError.\nThis is only relevant if unsupported_level is ErrorLevel.RAISE.\nDefault: 3
  • \n
  • leading_comma (bool): if the the comma is leading or trailing in select statements\nDefault: False
  • \n
  • max_text_width: The max number of characters in a segment before creating new lines in pretty mode.\nThe default is on the smaller end because the length only represents a segment and not the true\nline length.\nDefault: 80
  • \n
  • comments: Whether or not to preserve comments in the output SQL code.\nDefault: True
  • \n
\n", "bases": "sqlglot.generator.Generator"}, "sqlglot.dialects.snowflake.Snowflake.Generator.except_op": {"fullname": "sqlglot.dialects.snowflake.Snowflake.Generator.except_op", "modulename": "sqlglot.dialects.snowflake", "qualname": "Snowflake.Generator.except_op", "kind": "function", "doc": "

\n", "signature": "(self, expression):", "funcdef": "def"}, "sqlglot.dialects.snowflake.Snowflake.Generator.intersect_op": {"fullname": "sqlglot.dialects.snowflake.Snowflake.Generator.intersect_op", "modulename": "sqlglot.dialects.snowflake", "qualname": "Snowflake.Generator.intersect_op", "kind": "function", "doc": "

\n", "signature": "(self, expression):", "funcdef": "def"}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"fullname": "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql", "modulename": "sqlglot.dialects.snowflake", "qualname": "Snowflake.Generator.values_sql", "kind": "function", "doc": "

Due to a bug in Snowflake we want to make sure that all columns in a VALUES table alias are unquoted.

\n\n

We also want to make sure that after we find matches where we need to unquote a column that we prevent users\nfrom adding quotes to the column by using the identify argument when generating the SQL.

\n", "signature": "(self, expression: sqlglot.expressions.Values) -> str:", "funcdef": "def"}, "sqlglot.dialects.snowflake.Snowflake.Generator.settag_sql": {"fullname": "sqlglot.dialects.snowflake.Snowflake.Generator.settag_sql", "modulename": "sqlglot.dialects.snowflake", "qualname": "Snowflake.Generator.settag_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.SetTag) -> str:", "funcdef": "def"}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"fullname": "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql", "modulename": "sqlglot.dialects.snowflake", "qualname": "Snowflake.Generator.select_sql", "kind": "function", "doc": "

Due to a bug in Snowflake we want to make sure that all columns in a VALUES table alias are unquoted and also\nthat all columns in a SELECT are unquoted. We also want to make sure that after we find matches where we need\nto unquote a column that we prevent users from adding quotes to the column by using the identify argument when\ngenerating the SQL.

\n\n

Note: We make an assumption that any columns referenced in a VALUES expression should be unquoted throughout the\nexpression. This might not be true in a case where the same column name can be sourced from another table that can\nproperly quote but should be true in most cases.

\n", "signature": "(self, expression: sqlglot.expressions.Select) -> str:", "funcdef": "def"}, "sqlglot.dialects.snowflake.Snowflake.Generator.describe_sql": {"fullname": "sqlglot.dialects.snowflake.Snowflake.Generator.describe_sql", "modulename": "sqlglot.dialects.snowflake", "qualname": "Snowflake.Generator.describe_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Describe) -> str:", "funcdef": "def"}, "sqlglot.dialects.snowflake.Snowflake.Generator.generatedasidentitycolumnconstraint_sql": {"fullname": "sqlglot.dialects.snowflake.Snowflake.Generator.generatedasidentitycolumnconstraint_sql", "modulename": "sqlglot.dialects.snowflake", "qualname": "Snowflake.Generator.generatedasidentitycolumnconstraint_sql", "kind": "function", "doc": "

\n", "signature": "(\tself,\texpression: sqlglot.expressions.GeneratedAsIdentityColumnConstraint) -> str:", "funcdef": "def"}, "sqlglot.dialects.spark": {"fullname": "sqlglot.dialects.spark", "modulename": "sqlglot.dialects.spark", "kind": "module", "doc": "

\n"}, "sqlglot.dialects.spark.Spark": {"fullname": "sqlglot.dialects.spark.Spark", "modulename": "sqlglot.dialects.spark", "qualname": "Spark", "kind": "class", "doc": "

\n", "bases": "sqlglot.dialects.hive.Hive"}, "sqlglot.dialects.spark.Spark.Parser": {"fullname": "sqlglot.dialects.spark.Spark.Parser", "modulename": "sqlglot.dialects.spark", "qualname": "Spark.Parser", "kind": "class", "doc": "

Parser consumes a list of tokens produced by the sqlglot.tokens.Tokenizer and produces\na parsed syntax tree.

\n\n
Arguments:
\n\n
    \n
  • error_level: the desired error level.\nDefault: ErrorLevel.RAISE
  • \n
  • error_message_context: determines the amount of context to capture from a\nquery string when displaying the error message (in number of characters).\nDefault: 50.
  • \n
  • index_offset: Index offset for arrays eg ARRAY[0] vs ARRAY[1] as the head of a list.\nDefault: 0
  • \n
  • alias_post_tablesample: If the table alias comes after tablesample.\nDefault: False
  • \n
  • max_errors: Maximum number of error messages to include in a raised ParseError.\nThis is only relevant if error_level is ErrorLevel.RAISE.\nDefault: 3
  • \n
  • null_ordering: Indicates the default null ordering method to use if not explicitly set.\nOptions are \"nulls_are_small\", \"nulls_are_large\", \"nulls_are_last\".\nDefault: \"nulls_are_small\"
  • \n
\n", "bases": "sqlglot.dialects.hive.Hive.Parser"}, "sqlglot.dialects.spark.Spark.Generator": {"fullname": "sqlglot.dialects.spark.Spark.Generator", "modulename": "sqlglot.dialects.spark", "qualname": "Spark.Generator", "kind": "class", "doc": "

Generator interprets the given syntax tree and produces a SQL string as an output.

\n\n
Arguments:
\n\n
    \n
  • time_mapping (dict): the dictionary of custom time mappings in which the key\nrepresents a python time format and the output the target time format
  • \n
  • time_trie (trie): a trie of the time_mapping keys
  • \n
  • pretty (bool): if set to True the returned string will be formatted. Default: False.
  • \n
  • quote_start (str): specifies which starting character to use to delimit quotes. Default: '.
  • \n
  • quote_end (str): specifies which ending character to use to delimit quotes. Default: '.
  • \n
  • identifier_start (str): specifies which starting character to use to delimit identifiers. Default: \".
  • \n
  • identifier_end (str): specifies which ending character to use to delimit identifiers. Default: \".
  • \n
  • identify (bool | str): 'always': always quote, 'safe': quote identifiers if they don't contain an upcase, True defaults to always.
  • \n
  • normalize (bool): if set to True all identifiers will lower cased
  • \n
  • string_escape (str): specifies a string escape character. Default: '.
  • \n
  • identifier_escape (str): specifies an identifier escape character. Default: \".
  • \n
  • pad (int): determines padding in a formatted string. Default: 2.
  • \n
  • indent (int): determines the size of indentation in a formatted string. Default: 4.
  • \n
  • unnest_column_only (bool): if true unnest table aliases are considered only as column aliases
  • \n
  • normalize_functions (str): normalize function names, \"upper\", \"lower\", or None\nDefault: \"upper\"
  • \n
  • alias_post_tablesample (bool): if the table alias comes after tablesample\nDefault: False
  • \n
  • unsupported_level (ErrorLevel): determines the generator's behavior when it encounters\nunsupported expressions. Default ErrorLevel.WARN.
  • \n
  • null_ordering (str): Indicates the default null ordering method to use if not explicitly set.\nOptions are \"nulls_are_small\", \"nulls_are_large\", \"nulls_are_last\".\nDefault: \"nulls_are_small\"
  • \n
  • max_unsupported (int): Maximum number of unsupported messages to include in a raised UnsupportedError.\nThis is only relevant if unsupported_level is ErrorLevel.RAISE.\nDefault: 3
  • \n
  • leading_comma (bool): if the the comma is leading or trailing in select statements\nDefault: False
  • \n
  • max_text_width: The max number of characters in a segment before creating new lines in pretty mode.\nThe default is on the smaller end because the length only represents a segment and not the true\nline length.\nDefault: 80
  • \n
  • comments: Whether or not to preserve comments in the output SQL code.\nDefault: True
  • \n
\n", "bases": "sqlglot.dialects.hive.Hive.Generator"}, "sqlglot.dialects.spark.Spark.Generator.cast_sql": {"fullname": "sqlglot.dialects.spark.Spark.Generator.cast_sql", "modulename": "sqlglot.dialects.spark", "qualname": "Spark.Generator.cast_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Cast) -> str:", "funcdef": "def"}, "sqlglot.dialects.spark.Spark.Tokenizer": {"fullname": "sqlglot.dialects.spark.Spark.Tokenizer", "modulename": "sqlglot.dialects.spark", "qualname": "Spark.Tokenizer", "kind": "class", "doc": "

\n", "bases": "sqlglot.dialects.hive.Hive.Tokenizer"}, "sqlglot.dialects.sqlite": {"fullname": "sqlglot.dialects.sqlite", "modulename": "sqlglot.dialects.sqlite", "kind": "module", "doc": "

\n"}, "sqlglot.dialects.sqlite.SQLite": {"fullname": "sqlglot.dialects.sqlite.SQLite", "modulename": "sqlglot.dialects.sqlite", "qualname": "SQLite", "kind": "class", "doc": "

\n", "bases": "sqlglot.dialects.dialect.Dialect"}, "sqlglot.dialects.sqlite.SQLite.Tokenizer": {"fullname": "sqlglot.dialects.sqlite.SQLite.Tokenizer", "modulename": "sqlglot.dialects.sqlite", "qualname": "SQLite.Tokenizer", "kind": "class", "doc": "

\n", "bases": "sqlglot.tokens.Tokenizer"}, "sqlglot.dialects.sqlite.SQLite.Parser": {"fullname": "sqlglot.dialects.sqlite.SQLite.Parser", "modulename": "sqlglot.dialects.sqlite", "qualname": "SQLite.Parser", "kind": "class", "doc": "

Parser consumes a list of tokens produced by the sqlglot.tokens.Tokenizer and produces\na parsed syntax tree.

\n\n
Arguments:
\n\n
    \n
  • error_level: the desired error level.\nDefault: ErrorLevel.RAISE
  • \n
  • error_message_context: determines the amount of context to capture from a\nquery string when displaying the error message (in number of characters).\nDefault: 50.
  • \n
  • index_offset: Index offset for arrays eg ARRAY[0] vs ARRAY[1] as the head of a list.\nDefault: 0
  • \n
  • alias_post_tablesample: If the table alias comes after tablesample.\nDefault: False
  • \n
  • max_errors: Maximum number of error messages to include in a raised ParseError.\nThis is only relevant if error_level is ErrorLevel.RAISE.\nDefault: 3
  • \n
  • null_ordering: Indicates the default null ordering method to use if not explicitly set.\nOptions are \"nulls_are_small\", \"nulls_are_large\", \"nulls_are_last\".\nDefault: \"nulls_are_small\"
  • \n
\n", "bases": "sqlglot.parser.Parser"}, "sqlglot.dialects.sqlite.SQLite.Generator": {"fullname": "sqlglot.dialects.sqlite.SQLite.Generator", "modulename": "sqlglot.dialects.sqlite", "qualname": "SQLite.Generator", "kind": "class", "doc": "

Generator interprets the given syntax tree and produces a SQL string as an output.

\n\n
Arguments:
\n\n
    \n
  • time_mapping (dict): the dictionary of custom time mappings in which the key\nrepresents a python time format and the output the target time format
  • \n
  • time_trie (trie): a trie of the time_mapping keys
  • \n
  • pretty (bool): if set to True the returned string will be formatted. Default: False.
  • \n
  • quote_start (str): specifies which starting character to use to delimit quotes. Default: '.
  • \n
  • quote_end (str): specifies which ending character to use to delimit quotes. Default: '.
  • \n
  • identifier_start (str): specifies which starting character to use to delimit identifiers. Default: \".
  • \n
  • identifier_end (str): specifies which ending character to use to delimit identifiers. Default: \".
  • \n
  • identify (bool | str): 'always': always quote, 'safe': quote identifiers if they don't contain an upcase, True defaults to always.
  • \n
  • normalize (bool): if set to True all identifiers will lower cased
  • \n
  • string_escape (str): specifies a string escape character. Default: '.
  • \n
  • identifier_escape (str): specifies an identifier escape character. Default: \".
  • \n
  • pad (int): determines padding in a formatted string. Default: 2.
  • \n
  • indent (int): determines the size of indentation in a formatted string. Default: 4.
  • \n
  • unnest_column_only (bool): if true unnest table aliases are considered only as column aliases
  • \n
  • normalize_functions (str): normalize function names, \"upper\", \"lower\", or None\nDefault: \"upper\"
  • \n
  • alias_post_tablesample (bool): if the table alias comes after tablesample\nDefault: False
  • \n
  • unsupported_level (ErrorLevel): determines the generator's behavior when it encounters\nunsupported expressions. Default ErrorLevel.WARN.
  • \n
  • null_ordering (str): Indicates the default null ordering method to use if not explicitly set.\nOptions are \"nulls_are_small\", \"nulls_are_large\", \"nulls_are_last\".\nDefault: \"nulls_are_small\"
  • \n
  • max_unsupported (int): Maximum number of unsupported messages to include in a raised UnsupportedError.\nThis is only relevant if unsupported_level is ErrorLevel.RAISE.\nDefault: 3
  • \n
  • leading_comma (bool): if the the comma is leading or trailing in select statements\nDefault: False
  • \n
  • max_text_width: The max number of characters in a segment before creating new lines in pretty mode.\nThe default is on the smaller end because the length only represents a segment and not the true\nline length.\nDefault: 80
  • \n
  • comments: Whether or not to preserve comments in the output SQL code.\nDefault: True
  • \n
\n", "bases": "sqlglot.generator.Generator"}, "sqlglot.dialects.sqlite.SQLite.Generator.cast_sql": {"fullname": "sqlglot.dialects.sqlite.SQLite.Generator.cast_sql", "modulename": "sqlglot.dialects.sqlite", "qualname": "SQLite.Generator.cast_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Cast) -> str:", "funcdef": "def"}, "sqlglot.dialects.sqlite.SQLite.Generator.datediff_sql": {"fullname": "sqlglot.dialects.sqlite.SQLite.Generator.datediff_sql", "modulename": "sqlglot.dialects.sqlite", "qualname": "SQLite.Generator.datediff_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.DateDiff) -> str:", "funcdef": "def"}, "sqlglot.dialects.sqlite.SQLite.Generator.groupconcat_sql": {"fullname": "sqlglot.dialects.sqlite.SQLite.Generator.groupconcat_sql", "modulename": "sqlglot.dialects.sqlite", "qualname": "SQLite.Generator.groupconcat_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression):", "funcdef": "def"}, "sqlglot.dialects.sqlite.SQLite.Generator.least_sql": {"fullname": "sqlglot.dialects.sqlite.SQLite.Generator.least_sql", "modulename": "sqlglot.dialects.sqlite", "qualname": "SQLite.Generator.least_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Least) -> str:", "funcdef": "def"}, "sqlglot.dialects.sqlite.SQLite.Generator.transaction_sql": {"fullname": "sqlglot.dialects.sqlite.SQLite.Generator.transaction_sql", "modulename": "sqlglot.dialects.sqlite", "qualname": "SQLite.Generator.transaction_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Transaction) -> str:", "funcdef": "def"}, "sqlglot.dialects.starrocks": {"fullname": "sqlglot.dialects.starrocks", "modulename": "sqlglot.dialects.starrocks", "kind": "module", "doc": "

\n"}, "sqlglot.dialects.starrocks.StarRocks": {"fullname": "sqlglot.dialects.starrocks.StarRocks", "modulename": "sqlglot.dialects.starrocks", "qualname": "StarRocks", "kind": "class", "doc": "

\n", "bases": "sqlglot.dialects.mysql.MySQL"}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"fullname": "sqlglot.dialects.starrocks.StarRocks.Parser", "modulename": "sqlglot.dialects.starrocks", "qualname": "StarRocks.Parser", "kind": "class", "doc": "

Parser consumes a list of tokens produced by the sqlglot.tokens.Tokenizer and produces\na parsed syntax tree.

\n\n
Arguments:
\n\n
    \n
  • error_level: the desired error level.\nDefault: ErrorLevel.RAISE
  • \n
  • error_message_context: determines the amount of context to capture from a\nquery string when displaying the error message (in number of characters).\nDefault: 50.
  • \n
  • index_offset: Index offset for arrays eg ARRAY[0] vs ARRAY[1] as the head of a list.\nDefault: 0
  • \n
  • alias_post_tablesample: If the table alias comes after tablesample.\nDefault: False
  • \n
  • max_errors: Maximum number of error messages to include in a raised ParseError.\nThis is only relevant if error_level is ErrorLevel.RAISE.\nDefault: 3
  • \n
  • null_ordering: Indicates the default null ordering method to use if not explicitly set.\nOptions are \"nulls_are_small\", \"nulls_are_large\", \"nulls_are_last\".\nDefault: \"nulls_are_small\"
  • \n
\n", "bases": "sqlglot.dialects.mysql.MySQL.Parser"}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"fullname": "sqlglot.dialects.starrocks.StarRocks.Generator", "modulename": "sqlglot.dialects.starrocks", "qualname": "StarRocks.Generator", "kind": "class", "doc": "

Generator interprets the given syntax tree and produces a SQL string as an output.

\n\n
Arguments:
\n\n
    \n
  • time_mapping (dict): the dictionary of custom time mappings in which the key\nrepresents a python time format and the output the target time format
  • \n
  • time_trie (trie): a trie of the time_mapping keys
  • \n
  • pretty (bool): if set to True the returned string will be formatted. Default: False.
  • \n
  • quote_start (str): specifies which starting character to use to delimit quotes. Default: '.
  • \n
  • quote_end (str): specifies which ending character to use to delimit quotes. Default: '.
  • \n
  • identifier_start (str): specifies which starting character to use to delimit identifiers. Default: \".
  • \n
  • identifier_end (str): specifies which ending character to use to delimit identifiers. Default: \".
  • \n
  • identify (bool | str): 'always': always quote, 'safe': quote identifiers if they don't contain an upcase, True defaults to always.
  • \n
  • normalize (bool): if set to True all identifiers will lower cased
  • \n
  • string_escape (str): specifies a string escape character. Default: '.
  • \n
  • identifier_escape (str): specifies an identifier escape character. Default: \".
  • \n
  • pad (int): determines padding in a formatted string. Default: 2.
  • \n
  • indent (int): determines the size of indentation in a formatted string. Default: 4.
  • \n
  • unnest_column_only (bool): if true unnest table aliases are considered only as column aliases
  • \n
  • normalize_functions (str): normalize function names, \"upper\", \"lower\", or None\nDefault: \"upper\"
  • \n
  • alias_post_tablesample (bool): if the table alias comes after tablesample\nDefault: False
  • \n
  • unsupported_level (ErrorLevel): determines the generator's behavior when it encounters\nunsupported expressions. Default ErrorLevel.WARN.
  • \n
  • null_ordering (str): Indicates the default null ordering method to use if not explicitly set.\nOptions are \"nulls_are_small\", \"nulls_are_large\", \"nulls_are_last\".\nDefault: \"nulls_are_small\"
  • \n
  • max_unsupported (int): Maximum number of unsupported messages to include in a raised UnsupportedError.\nThis is only relevant if unsupported_level is ErrorLevel.RAISE.\nDefault: 3
  • \n
  • leading_comma (bool): if the the comma is leading or trailing in select statements\nDefault: False
  • \n
  • max_text_width: The max number of characters in a segment before creating new lines in pretty mode.\nThe default is on the smaller end because the length only represents a segment and not the true\nline length.\nDefault: 80
  • \n
  • comments: Whether or not to preserve comments in the output SQL code.\nDefault: True
  • \n
\n", "bases": "sqlglot.dialects.mysql.MySQL.Generator"}, "sqlglot.dialects.tableau": {"fullname": "sqlglot.dialects.tableau", "modulename": "sqlglot.dialects.tableau", "kind": "module", "doc": "

\n"}, "sqlglot.dialects.tableau.Tableau": {"fullname": "sqlglot.dialects.tableau.Tableau", "modulename": "sqlglot.dialects.tableau", "qualname": "Tableau", "kind": "class", "doc": "

\n", "bases": "sqlglot.dialects.dialect.Dialect"}, "sqlglot.dialects.tableau.Tableau.Generator": {"fullname": "sqlglot.dialects.tableau.Tableau.Generator", "modulename": "sqlglot.dialects.tableau", "qualname": "Tableau.Generator", "kind": "class", "doc": "

Generator interprets the given syntax tree and produces a SQL string as an output.

\n\n
Arguments:
\n\n
    \n
  • time_mapping (dict): the dictionary of custom time mappings in which the key\nrepresents a python time format and the output the target time format
  • \n
  • time_trie (trie): a trie of the time_mapping keys
  • \n
  • pretty (bool): if set to True the returned string will be formatted. Default: False.
  • \n
  • quote_start (str): specifies which starting character to use to delimit quotes. Default: '.
  • \n
  • quote_end (str): specifies which ending character to use to delimit quotes. Default: '.
  • \n
  • identifier_start (str): specifies which starting character to use to delimit identifiers. Default: \".
  • \n
  • identifier_end (str): specifies which ending character to use to delimit identifiers. Default: \".
  • \n
  • identify (bool | str): 'always': always quote, 'safe': quote identifiers if they don't contain an upcase, True defaults to always.
  • \n
  • normalize (bool): if set to True all identifiers will lower cased
  • \n
  • string_escape (str): specifies a string escape character. Default: '.
  • \n
  • identifier_escape (str): specifies an identifier escape character. Default: \".
  • \n
  • pad (int): determines padding in a formatted string. Default: 2.
  • \n
  • indent (int): determines the size of indentation in a formatted string. Default: 4.
  • \n
  • unnest_column_only (bool): if true unnest table aliases are considered only as column aliases
  • \n
  • normalize_functions (str): normalize function names, \"upper\", \"lower\", or None\nDefault: \"upper\"
  • \n
  • alias_post_tablesample (bool): if the table alias comes after tablesample\nDefault: False
  • \n
  • unsupported_level (ErrorLevel): determines the generator's behavior when it encounters\nunsupported expressions. Default ErrorLevel.WARN.
  • \n
  • null_ordering (str): Indicates the default null ordering method to use if not explicitly set.\nOptions are \"nulls_are_small\", \"nulls_are_large\", \"nulls_are_last\".\nDefault: \"nulls_are_small\"
  • \n
  • max_unsupported (int): Maximum number of unsupported messages to include in a raised UnsupportedError.\nThis is only relevant if unsupported_level is ErrorLevel.RAISE.\nDefault: 3
  • \n
  • leading_comma (bool): if the the comma is leading or trailing in select statements\nDefault: False
  • \n
  • max_text_width: The max number of characters in a segment before creating new lines in pretty mode.\nThe default is on the smaller end because the length only represents a segment and not the true\nline length.\nDefault: 80
  • \n
  • comments: Whether or not to preserve comments in the output SQL code.\nDefault: True
  • \n
\n", "bases": "sqlglot.generator.Generator"}, "sqlglot.dialects.tableau.Tableau.Parser": {"fullname": "sqlglot.dialects.tableau.Tableau.Parser", "modulename": "sqlglot.dialects.tableau", "qualname": "Tableau.Parser", "kind": "class", "doc": "

Parser consumes a list of tokens produced by the sqlglot.tokens.Tokenizer and produces\na parsed syntax tree.

\n\n
Arguments:
\n\n
    \n
  • error_level: the desired error level.\nDefault: ErrorLevel.RAISE
  • \n
  • error_message_context: determines the amount of context to capture from a\nquery string when displaying the error message (in number of characters).\nDefault: 50.
  • \n
  • index_offset: Index offset for arrays eg ARRAY[0] vs ARRAY[1] as the head of a list.\nDefault: 0
  • \n
  • alias_post_tablesample: If the table alias comes after tablesample.\nDefault: False
  • \n
  • max_errors: Maximum number of error messages to include in a raised ParseError.\nThis is only relevant if error_level is ErrorLevel.RAISE.\nDefault: 3
  • \n
  • null_ordering: Indicates the default null ordering method to use if not explicitly set.\nOptions are \"nulls_are_small\", \"nulls_are_large\", \"nulls_are_last\".\nDefault: \"nulls_are_small\"
  • \n
\n", "bases": "sqlglot.parser.Parser"}, "sqlglot.dialects.teradata": {"fullname": "sqlglot.dialects.teradata", "modulename": "sqlglot.dialects.teradata", "kind": "module", "doc": "

\n"}, "sqlglot.dialects.teradata.Teradata": {"fullname": "sqlglot.dialects.teradata.Teradata", "modulename": "sqlglot.dialects.teradata", "qualname": "Teradata", "kind": "class", "doc": "

\n", "bases": "sqlglot.dialects.dialect.Dialect"}, "sqlglot.dialects.teradata.Teradata.Tokenizer": {"fullname": "sqlglot.dialects.teradata.Teradata.Tokenizer", "modulename": "sqlglot.dialects.teradata", "qualname": "Teradata.Tokenizer", "kind": "class", "doc": "

\n", "bases": "sqlglot.tokens.Tokenizer"}, "sqlglot.dialects.teradata.Teradata.Parser": {"fullname": "sqlglot.dialects.teradata.Teradata.Parser", "modulename": "sqlglot.dialects.teradata", "qualname": "Teradata.Parser", "kind": "class", "doc": "

Parser consumes a list of tokens produced by the sqlglot.tokens.Tokenizer and produces\na parsed syntax tree.

\n\n
Arguments:
\n\n
    \n
  • error_level: the desired error level.\nDefault: ErrorLevel.RAISE
  • \n
  • error_message_context: determines the amount of context to capture from a\nquery string when displaying the error message (in number of characters).\nDefault: 50.
  • \n
  • index_offset: Index offset for arrays eg ARRAY[0] vs ARRAY[1] as the head of a list.\nDefault: 0
  • \n
  • alias_post_tablesample: If the table alias comes after tablesample.\nDefault: False
  • \n
  • max_errors: Maximum number of error messages to include in a raised ParseError.\nThis is only relevant if error_level is ErrorLevel.RAISE.\nDefault: 3
  • \n
  • null_ordering: Indicates the default null ordering method to use if not explicitly set.\nOptions are \"nulls_are_small\", \"nulls_are_large\", \"nulls_are_last\".\nDefault: \"nulls_are_small\"
  • \n
\n", "bases": "sqlglot.parser.Parser"}, "sqlglot.dialects.teradata.Teradata.Generator": {"fullname": "sqlglot.dialects.teradata.Teradata.Generator", "modulename": "sqlglot.dialects.teradata", "qualname": "Teradata.Generator", "kind": "class", "doc": "

Generator interprets the given syntax tree and produces a SQL string as an output.

\n\n
Arguments:
\n\n
    \n
  • time_mapping (dict): the dictionary of custom time mappings in which the key\nrepresents a python time format and the output the target time format
  • \n
  • time_trie (trie): a trie of the time_mapping keys
  • \n
  • pretty (bool): if set to True the returned string will be formatted. Default: False.
  • \n
  • quote_start (str): specifies which starting character to use to delimit quotes. Default: '.
  • \n
  • quote_end (str): specifies which ending character to use to delimit quotes. Default: '.
  • \n
  • identifier_start (str): specifies which starting character to use to delimit identifiers. Default: \".
  • \n
  • identifier_end (str): specifies which ending character to use to delimit identifiers. Default: \".
  • \n
  • identify (bool | str): 'always': always quote, 'safe': quote identifiers if they don't contain an upcase, True defaults to always.
  • \n
  • normalize (bool): if set to True all identifiers will lower cased
  • \n
  • string_escape (str): specifies a string escape character. Default: '.
  • \n
  • identifier_escape (str): specifies an identifier escape character. Default: \".
  • \n
  • pad (int): determines padding in a formatted string. Default: 2.
  • \n
  • indent (int): determines the size of indentation in a formatted string. Default: 4.
  • \n
  • unnest_column_only (bool): if true unnest table aliases are considered only as column aliases
  • \n
  • normalize_functions (str): normalize function names, \"upper\", \"lower\", or None\nDefault: \"upper\"
  • \n
  • alias_post_tablesample (bool): if the table alias comes after tablesample\nDefault: False
  • \n
  • unsupported_level (ErrorLevel): determines the generator's behavior when it encounters\nunsupported expressions. Default ErrorLevel.WARN.
  • \n
  • null_ordering (str): Indicates the default null ordering method to use if not explicitly set.\nOptions are \"nulls_are_small\", \"nulls_are_large\", \"nulls_are_last\".\nDefault: \"nulls_are_small\"
  • \n
  • max_unsupported (int): Maximum number of unsupported messages to include in a raised UnsupportedError.\nThis is only relevant if unsupported_level is ErrorLevel.RAISE.\nDefault: 3
  • \n
  • leading_comma (bool): if the the comma is leading or trailing in select statements\nDefault: False
  • \n
  • max_text_width: The max number of characters in a segment before creating new lines in pretty mode.\nThe default is on the smaller end because the length only represents a segment and not the true\nline length.\nDefault: 80
  • \n
  • comments: Whether or not to preserve comments in the output SQL code.\nDefault: True
  • \n
\n", "bases": "sqlglot.generator.Generator"}, "sqlglot.dialects.teradata.Teradata.Generator.partitionedbyproperty_sql": {"fullname": "sqlglot.dialects.teradata.Teradata.Generator.partitionedbyproperty_sql", "modulename": "sqlglot.dialects.teradata", "qualname": "Teradata.Generator.partitionedbyproperty_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.PartitionedByProperty) -> str:", "funcdef": "def"}, "sqlglot.dialects.teradata.Teradata.Generator.update_sql": {"fullname": "sqlglot.dialects.teradata.Teradata.Generator.update_sql", "modulename": "sqlglot.dialects.teradata", "qualname": "Teradata.Generator.update_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Update) -> str:", "funcdef": "def"}, "sqlglot.dialects.teradata.Teradata.Generator.mod_sql": {"fullname": "sqlglot.dialects.teradata.Teradata.Generator.mod_sql", "modulename": "sqlglot.dialects.teradata", "qualname": "Teradata.Generator.mod_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Mod) -> str:", "funcdef": "def"}, "sqlglot.dialects.teradata.Teradata.Generator.datatype_sql": {"fullname": "sqlglot.dialects.teradata.Teradata.Generator.datatype_sql", "modulename": "sqlglot.dialects.teradata", "qualname": "Teradata.Generator.datatype_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.DataType) -> str:", "funcdef": "def"}, "sqlglot.dialects.teradata.Teradata.Generator.rangen_sql": {"fullname": "sqlglot.dialects.teradata.Teradata.Generator.rangen_sql", "modulename": "sqlglot.dialects.teradata", "qualname": "Teradata.Generator.rangen_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.RangeN) -> str:", "funcdef": "def"}, "sqlglot.dialects.trino": {"fullname": "sqlglot.dialects.trino", "modulename": "sqlglot.dialects.trino", "kind": "module", "doc": "

\n"}, "sqlglot.dialects.trino.Trino": {"fullname": "sqlglot.dialects.trino.Trino", "modulename": "sqlglot.dialects.trino", "qualname": "Trino", "kind": "class", "doc": "

\n", "bases": "sqlglot.dialects.presto.Presto"}, "sqlglot.dialects.trino.Trino.Generator": {"fullname": "sqlglot.dialects.trino.Trino.Generator", "modulename": "sqlglot.dialects.trino", "qualname": "Trino.Generator", "kind": "class", "doc": "

Generator interprets the given syntax tree and produces a SQL string as an output.

\n\n
Arguments:
\n\n
    \n
  • time_mapping (dict): the dictionary of custom time mappings in which the key\nrepresents a python time format and the output the target time format
  • \n
  • time_trie (trie): a trie of the time_mapping keys
  • \n
  • pretty (bool): if set to True the returned string will be formatted. Default: False.
  • \n
  • quote_start (str): specifies which starting character to use to delimit quotes. Default: '.
  • \n
  • quote_end (str): specifies which ending character to use to delimit quotes. Default: '.
  • \n
  • identifier_start (str): specifies which starting character to use to delimit identifiers. Default: \".
  • \n
  • identifier_end (str): specifies which ending character to use to delimit identifiers. Default: \".
  • \n
  • identify (bool | str): 'always': always quote, 'safe': quote identifiers if they don't contain an upcase, True defaults to always.
  • \n
  • normalize (bool): if set to True all identifiers will lower cased
  • \n
  • string_escape (str): specifies a string escape character. Default: '.
  • \n
  • identifier_escape (str): specifies an identifier escape character. Default: \".
  • \n
  • pad (int): determines padding in a formatted string. Default: 2.
  • \n
  • indent (int): determines the size of indentation in a formatted string. Default: 4.
  • \n
  • unnest_column_only (bool): if true unnest table aliases are considered only as column aliases
  • \n
  • normalize_functions (str): normalize function names, \"upper\", \"lower\", or None\nDefault: \"upper\"
  • \n
  • alias_post_tablesample (bool): if the table alias comes after tablesample\nDefault: False
  • \n
  • unsupported_level (ErrorLevel): determines the generator's behavior when it encounters\nunsupported expressions. Default ErrorLevel.WARN.
  • \n
  • null_ordering (str): Indicates the default null ordering method to use if not explicitly set.\nOptions are \"nulls_are_small\", \"nulls_are_large\", \"nulls_are_last\".\nDefault: \"nulls_are_small\"
  • \n
  • max_unsupported (int): Maximum number of unsupported messages to include in a raised UnsupportedError.\nThis is only relevant if unsupported_level is ErrorLevel.RAISE.\nDefault: 3
  • \n
  • leading_comma (bool): if the the comma is leading or trailing in select statements\nDefault: False
  • \n
  • max_text_width: The max number of characters in a segment before creating new lines in pretty mode.\nThe default is on the smaller end because the length only represents a segment and not the true\nline length.\nDefault: 80
  • \n
  • comments: Whether or not to preserve comments in the output SQL code.\nDefault: True
  • \n
\n", "bases": "sqlglot.dialects.presto.Presto.Generator"}, "sqlglot.dialects.trino.Trino.Tokenizer": {"fullname": "sqlglot.dialects.trino.Trino.Tokenizer", "modulename": "sqlglot.dialects.trino", "qualname": "Trino.Tokenizer", "kind": "class", "doc": "

\n", "bases": "sqlglot.dialects.presto.Presto.Tokenizer"}, "sqlglot.dialects.tsql": {"fullname": "sqlglot.dialects.tsql", "modulename": "sqlglot.dialects.tsql", "kind": "module", "doc": "

\n"}, "sqlglot.dialects.tsql.generate_date_delta_with_unit_sql": {"fullname": "sqlglot.dialects.tsql.generate_date_delta_with_unit_sql", "modulename": "sqlglot.dialects.tsql", "qualname": "generate_date_delta_with_unit_sql", "kind": "function", "doc": "

\n", "signature": "(self, e):", "funcdef": "def"}, "sqlglot.dialects.tsql.TSQL": {"fullname": "sqlglot.dialects.tsql.TSQL", "modulename": "sqlglot.dialects.tsql", "qualname": "TSQL", "kind": "class", "doc": "

\n", "bases": "sqlglot.dialects.dialect.Dialect"}, "sqlglot.dialects.tsql.TSQL.Tokenizer": {"fullname": "sqlglot.dialects.tsql.TSQL.Tokenizer", "modulename": "sqlglot.dialects.tsql", "qualname": "TSQL.Tokenizer", "kind": "class", "doc": "

\n", "bases": "sqlglot.tokens.Tokenizer"}, "sqlglot.dialects.tsql.TSQL.Parser": {"fullname": "sqlglot.dialects.tsql.TSQL.Parser", "modulename": "sqlglot.dialects.tsql", "qualname": "TSQL.Parser", "kind": "class", "doc": "

Parser consumes a list of tokens produced by the sqlglot.tokens.Tokenizer and produces\na parsed syntax tree.

\n\n
Arguments:
\n\n
    \n
  • error_level: the desired error level.\nDefault: ErrorLevel.RAISE
  • \n
  • error_message_context: determines the amount of context to capture from a\nquery string when displaying the error message (in number of characters).\nDefault: 50.
  • \n
  • index_offset: Index offset for arrays eg ARRAY[0] vs ARRAY[1] as the head of a list.\nDefault: 0
  • \n
  • alias_post_tablesample: If the table alias comes after tablesample.\nDefault: False
  • \n
  • max_errors: Maximum number of error messages to include in a raised ParseError.\nThis is only relevant if error_level is ErrorLevel.RAISE.\nDefault: 3
  • \n
  • null_ordering: Indicates the default null ordering method to use if not explicitly set.\nOptions are \"nulls_are_small\", \"nulls_are_large\", \"nulls_are_last\".\nDefault: \"nulls_are_small\"
  • \n
\n", "bases": "sqlglot.parser.Parser"}, "sqlglot.dialects.tsql.TSQL.Generator": {"fullname": "sqlglot.dialects.tsql.TSQL.Generator", "modulename": "sqlglot.dialects.tsql", "qualname": "TSQL.Generator", "kind": "class", "doc": "

Generator interprets the given syntax tree and produces a SQL string as an output.

\n\n
Arguments:
\n\n
    \n
  • time_mapping (dict): the dictionary of custom time mappings in which the key\nrepresents a python time format and the output the target time format
  • \n
  • time_trie (trie): a trie of the time_mapping keys
  • \n
  • pretty (bool): if set to True the returned string will be formatted. Default: False.
  • \n
  • quote_start (str): specifies which starting character to use to delimit quotes. Default: '.
  • \n
  • quote_end (str): specifies which ending character to use to delimit quotes. Default: '.
  • \n
  • identifier_start (str): specifies which starting character to use to delimit identifiers. Default: \".
  • \n
  • identifier_end (str): specifies which ending character to use to delimit identifiers. Default: \".
  • \n
  • identify (bool | str): 'always': always quote, 'safe': quote identifiers if they don't contain an upcase, True defaults to always.
  • \n
  • normalize (bool): if set to True all identifiers will lower cased
  • \n
  • string_escape (str): specifies a string escape character. Default: '.
  • \n
  • identifier_escape (str): specifies an identifier escape character. Default: \".
  • \n
  • pad (int): determines padding in a formatted string. Default: 2.
  • \n
  • indent (int): determines the size of indentation in a formatted string. Default: 4.
  • \n
  • unnest_column_only (bool): if true unnest table aliases are considered only as column aliases
  • \n
  • normalize_functions (str): normalize function names, \"upper\", \"lower\", or None\nDefault: \"upper\"
  • \n
  • alias_post_tablesample (bool): if the table alias comes after tablesample\nDefault: False
  • \n
  • unsupported_level (ErrorLevel): determines the generator's behavior when it encounters\nunsupported expressions. Default ErrorLevel.WARN.
  • \n
  • null_ordering (str): Indicates the default null ordering method to use if not explicitly set.\nOptions are \"nulls_are_small\", \"nulls_are_large\", \"nulls_are_last\".\nDefault: \"nulls_are_small\"
  • \n
  • max_unsupported (int): Maximum number of unsupported messages to include in a raised UnsupportedError.\nThis is only relevant if unsupported_level is ErrorLevel.RAISE.\nDefault: 3
  • \n
  • leading_comma (bool): if the the comma is leading or trailing in select statements\nDefault: False
  • \n
  • max_text_width: The max number of characters in a segment before creating new lines in pretty mode.\nThe default is on the smaller end because the length only represents a segment and not the true\nline length.\nDefault: 80
  • \n
  • comments: Whether or not to preserve comments in the output SQL code.\nDefault: True
  • \n
\n", "bases": "sqlglot.generator.Generator"}, "sqlglot.dialects.tsql.TSQL.Generator.offset_sql": {"fullname": "sqlglot.dialects.tsql.TSQL.Generator.offset_sql", "modulename": "sqlglot.dialects.tsql", "qualname": "TSQL.Generator.offset_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Offset) -> str:", "funcdef": "def"}, "sqlglot.dialects.tsql.TSQL.Generator.systemtime_sql": {"fullname": "sqlglot.dialects.tsql.TSQL.Generator.systemtime_sql", "modulename": "sqlglot.dialects.tsql", "qualname": "TSQL.Generator.systemtime_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.SystemTime) -> str:", "funcdef": "def"}, "sqlglot.dialects.tsql.TSQL.Generator.returnsproperty_sql": {"fullname": "sqlglot.dialects.tsql.TSQL.Generator.returnsproperty_sql", "modulename": "sqlglot.dialects.tsql", "qualname": "TSQL.Generator.returnsproperty_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.ReturnsProperty) -> str:", "funcdef": "def"}, "sqlglot.diff": {"fullname": "sqlglot.diff", "modulename": "sqlglot.diff", "kind": "module", "doc": "

Semantic Diff for SQL

\n\n

by Iaroslav Zeigerman

\n\n

Motivation

\n\n

Software is constantly changing and evolving, and identifying what has changed and reviewing those changes is an integral part of the development process. SQL code is no exception to this.

\n\n

Text-based diff tools such as git diff, when applied to a code base, have certain limitations. First, they can only detect insertions and deletions, not movements or updates of individual pieces of code. Second, such tools can only detect changes between lines of text, which is too coarse for something as granular and detailed as source code. Additionally, the outcome of such a diff is dependent on the underlying code formatting, and yields different results if the formatting should change.

\n\n

Consider the following diff generated by Git:

\n\n

\"Git

\n\n

Semantically the query hasn\u2019t changed. The two arguments b and c have been swapped (moved), posing no impact on the output of the query. Yet Git replaced the whole affected expression alongside a bulk of unrelated elements.

\n\n

The alternative to text-based diffing is to compare Abstract Syntax Trees (AST) instead. The main advantage of ASTs are that they are a direct product of code parsing, which represents the underlying code structure at any desired level of granularity. Comparing ASTs may yield extremely precise diffs; changes such as code movements and updates can also be detected. Even more importantly, this approach facilitates additional use cases beyond eyeballing two versions of source code side by side.

\n\n

The use cases I had in mind for SQL when I decided to embark on this journey of semantic diffing were the following:

\n\n
    \n
  • Query similarity score. Identifying which parts the two queries have in common to automatically suggest opportunities for consolidation, creation of intermediate/staging tables, and so on.
  • \n
  • Differentiating between cosmetic / structural changes and functional ones. For example when a nested query is refactored into a common table expression (CTE), this kind of change doesn\u2019t have any functional impact on either a query or its outcome.
  • \n
  • Automatic suggestions about the need to retroactively backfill data. This is especially important for pipelines that populate very large tables for which restatement is a runtime-intensive procedure. The ability to discern between simple code movements and actual modifications can help assess the impact of a change and make suggestions accordingly.
  • \n
\n\n

The implementation discussed in this post is now a part of the SQLGlot library. You can find a complete source code in the diff.py module. The choice of SQLglot was an obvious one due to its simple but powerful API, lack of external dependencies and, more importantly, extensive list of supported SQL dialects.

\n\n

The Search for a Solution

\n\n

When it comes to any diffing tool (not just a semantic one), the primary challenge is to match as many elements of compared entities as possible. Once such a set of matching elements is available, deriving a sequence of changes becomes an easy task.

\n\n

If our elements have unique identifiers associated with them (for example, an element\u2019s ID in DOM), the matching problem is trivial. However, the SQL syntax trees that we are comparing have neither unique keys nor object identifiers that can be used for the purposes of matching. So, how do we suppose to find pairs of nodes that are related?

\n\n

To better illustrate the problem, consider comparing the following SQL expressions: SELECT a + b + c, d, e and SELECT a - b + c, e, f. Matching individual nodes from respective syntax trees can be visualized as follows:

\n\n

\"Figure\nFigure 1: Example of node matching for two SQL expression trees.

\n\n

By looking at the figure of node matching for two SQL expression trees above, we conclude that the following changes should be captured by our solution:

\n\n
    \n
  • Inserted nodes: Sub and f. These are the nodes from the target AST which do not have a matching node in the source AST.
  • \n
  • Removed nodes: Add and d. These are the nodes from the source AST which do not have a counterpart in the target AST.
  • \n
  • Remaining nodes must be identified as unchanged.
  • \n
\n\n

It should be clear at this point that if we manage to match nodes in the source tree with their counterparts in the target tree, then computing the diff becomes a trivial matter.

\n\n

Na\u00efve Brute-Force

\n\n

The na\u00efve solution would be to try all different permutations of node pair combinations, and see which set of pairs performs the best based on some type of heuristics. The runtime cost of such a solution quickly reaches the escape velocity; if both trees had only 10 nodes each, the number of such sets would approximately be 10! ^ 2 = 3.6M ^ 2 ~= 13 * 10^12. This is a very bad case of factorial complexity (to be precise, it\u2019s actually much worse - O(n! ^ 2) - but I couldn\u2019t come up with a name for it), so there is little need to explore this approach any further.

\n\n

Myers Algorithm

\n\n

After the na\u00efve approach was proven to be infeasible, the next question I asked myself was \u201chow does git diff work?\u201d. This question led me to discover the Myers diff algorithm [1]. This algorithm has been designed to compare sequences of strings. At its core, it\u2019s looking for the shortest path on a graph of possible edits that transform the first sequence into the second one, while heavily rewarding those paths that lead to longest subsequences of unchanged elements. There\u2019s a lot of material out there describing this algorithm in greater detail. I found James Coglan\u2019s series of blog posts to be the most comprehensive.

\n\n

Therefore, I had this \u201cbrilliant\u201d (actually not) idea to transform trees into sequences by traversing them in topological order, and then applying the Myers algorithm on resulting sequences while using a custom heuristics when checking the equality of two nodes. Unsurprisingly, comparing sequences of strings is quite different from comparing hierarchical tree structures, and by flattening trees into sequences, we lose a lot of relevant context. This resulted in a terrible performance of this algorithm on ASTs. It often matched completely unrelated nodes, even when the two trees were mostly the same, and produced extremely inaccurate lists of changes overall. After playing around with it a little and tweaking my equality heuristics to improve accuracy, I ultimately scrapped the whole implementation and went back to the drawing board.

\n\n

Change Distiller

\n\n

The algorithm I settled on at the end was Change Distiller, created by Fluri et al. [2], which in turn is an improvement over the core idea described by Chawathe et al. [3].

\n\n

The algorithm consists of two high-level steps:

\n\n
    \n
  1. Finding appropriate matchings between pairs of nodes that are part of compared ASTs. Identifying what is meant by \u201cappropriate\u201d matching is also a part of this step.
  2. \n
  3. Generating the so-called \u201cedit script\u201d from the matching set built in the 1st step. The edit script is a sequence of edit operations (for example, insert, remove, update, etc.) on individual tree nodes, such that when applied as transformations on the source AST, it eventually becomes the target AST. In general, the shorter the sequence, the better. The length of the edit script can be used to compare the performance of different algorithms, though this is not the only metric that matters.
  4. \n
\n\n

The rest of this section is dedicated to the Python implementation of the steps above using the AST implementation provided by the SQLGlot library.

\n\n

Building the Matching Set

\n\n

Matching Leaves

\n\n

We begin composing the matching set by matching the leaf nodes. Leaf nodes are the nodes that do not have any children nodes (such as literals, identifiers, etc.). In order to match them, we gather all the leaf nodes from the source tree and generate a cartesian product with all the leaves from the target tree, while comparing pairs created this way and assigning them a similarity score. During this stage, we also exclude pairs that don\u2019t pass basic matching criteria. Then, we pick pairs that scored the highest while making sure that each node is matched no more than once.

\n\n

Using the example provided at the beginning of the post, the process of building an initial set of candidate matchings can be seen on Figure 2.

\n\n

\"Figure\nFigure 2: Building a set of candidate matchings between leaf nodes. The third item in each triplet represents a similarity score between two nodes.

\n\n

First, let\u2019s analyze the similarity score. Then, we\u2019ll discuss matching criteria.

\n\n

The similarity score proposed by Fluri et al. [2] is a dice coefficient applied to bigrams of respective node values. A bigram is a sequence of two adjacent elements from a string computed in a sliding window fashion:

\n\n
\n
def bigram(string):\n    count = max(0, len(string) - 1)\n    return [string[i : i + 2] for i in range(count)]\n
\n
\n\n

For reasons that will become clear shortly, we actually need to compute bigram histograms rather than just sequences:

\n\n
\n
from collections import defaultdict\n\ndef bigram_histo(string):\n    count = max(0, len(string) - 1)\n    bigram_histo = defaultdict(int)\n    for i in range(count):\n        bigram_histo[string[i : i + 2]] += 1\n    return bigram_histo\n
\n
\n\n

The dice coefficient formula looks like following:

\n\n

\"Dice

\n\n

Where X is a bigram of the source node and Y is a bigram of the second one. What this essentially does is count the number of bigram elements the two nodes have in common, multiply it by 2, and then divide by the total number of elements in both bigrams. This is where bigram histograms come in handy:

\n\n
\n
def dice_coefficient(source, target):\n    source_histo = bigram_histo(source.sql())\n    target_histo = bigram_histo(target.sql())\n\n    total_grams = (\n        sum(source_histo.values()) + sum(target_histo.values())\n    )\n    if not total_grams:\n        return 1.0 if source == target else 0.0\n\n    overlap_len = 0\n    overlapping_grams = set(source_histo) & set(target_histo)\n    for g in overlapping_grams:\n        overlap_len += min(source_histo[g], target_histo[g])\n\n    return 2 * overlap_len / total_grams\n
\n
\n\n

To compute a bigram given a tree node, we first transform the node into its canonical SQL representation,so that the Literal(123) node becomes just \u201c123\u201d and the Identifier(\u201ca\u201d) node becomes just \u201ca\u201d. We also handle a scenario when strings are too short to derive bigrams. In this case, we fallback to checking the two nodes for equality.

\n\n

Now when we know how to compute the similarity score, we can take care of the matching criteria for leaf nodes. In the original paper [2], the matching criteria is formalized as follows:

\n\n

\"Matching

\n\n

The two nodes are matched if two conditions are met:

\n\n
    \n
  1. The node labels match (in our case labels are just node types).
  2. \n
  3. The similarity score for node values is greater than or equal to some threshold \u201cf\u201d. The authors of the paper recommend setting the value of \u201cf\u201d to 0.6.
  4. \n
\n\n

With building blocks in place, we can now build a matching set for leaf nodes. First, we generate a list of candidates for matching:

\n\n
\n
from heapq import heappush, heappop\n\ncandidate_matchings = []\nsource_leaves = _get_leaves(self._source)\ntarget_leaves = _get_leaves(self._target)\nfor source_leaf in source_leaves:\n    for target_leaf in target_leaves:\n        if _is_same_type(source_leaf, target_leaf):\n            similarity_score = dice_coefficient(\n                source_leaf, target_leaf\n            )\n            if similarity_score >= 0.6:\n                heappush(\n                    candidate_matchings,\n                    (\n                        -similarity_score,\n                        len(candidate_matchings),\n                        source_leaf,\n                        target_leaf,\n                    ),\n                )\n
\n
\n\n

In the implementation above, we push each matching pair onto the heap to automatically maintain the correct order based on the assigned similarity score.

\n\n

Finally, we build the initial matching set by picking leaf pairs with the highest score:

\n\n
\n
matching_set = set()\nwhile candidate_matchings:\n    _, _, source_leaf, target_leaf = heappop(candidate_matchings)\n    if (\n        source_leaf in unmatched_source_nodes\n        and target_leaf in unmatched_target_nodes\n    ):\n        matching_set.add((source_leaf, target_leaf))\n        unmatched_source_nodes.remove(source_leaf)\n        unmatched_target_nodes.remove(target_leaf)\n
\n
\n\n

To finalize the matching set, we should now proceed with matching inner nodes.

\n\n

Matching Inner Nodes

\n\n

Matching inner nodes is quite similar to matching leaf nodes, with the following two distinctions:

\n\n
    \n
  • Rather than ranking a set of possible candidates, we pick the first node pair that passes the matching criteria.
  • \n
  • The matching criteria itself has been extended to account for the number of leaf nodes the pair of inner nodes have in common.
  • \n
\n\n

\"Figure\nFigure 3: Matching inner nodes based on their type as well as how many of their leaf nodes have been previously matched.

\n\n

Let\u2019s start with the matching criteria. The criteria is formalized as follows:

\n\n

\"Matching

\n\n

Alongside already familiar similarity score and node type criteria, there is a new one in the middle: the ratio of leaf nodes that the two nodes have in common must exceed some threshold \u201ct\u201d. The recommended value for \u201ct\u201d is also 0.6. Counting the number of common leaf nodes is pretty straightforward, since we already have the complete matching set for leaves. All we need to do is count how many matching pairs do leaf nodes from the two compared inner nodes form.

\n\n

There are two additional heuristics associated with this matching criteria:

\n\n
    \n
  • Inner node similarity weighting: if the similarity score between the node values doesn\u2019t pass the threshold \u201cf\u201d but the ratio of common leaf nodes (\u201ct\u201d) is greater than or equal to 0.8, then the matching is considered successful.
  • \n
  • The threshold \u201ct\u201d is reduced to 0.4 for inner nodes with the number of leaf nodes equal to 4 or less, in order to decrease the false negative rate for small subtrees.
  • \n
\n\n

We now only have to iterate through the remaining unmatched nodes and form matching pairs based on the outlined criteria:

\n\n
\n
leaves_matching_set = matching_set.copy()\n\nfor source_node in unmatched_source_nodes.copy():\n    for target_node in unmatched_target_nodes:\n        if _is_same_type(source_node, target_node):\n            source_leaves = set(_get_leaves(source_node))\n            target_leaves = set(_get_leaves(target_node))\n\n            max_leaves_num = max(len(source_leaves), len(target_leaves))\n            if max_leaves_num:\n                common_leaves_num = sum(\n                    1 if s in source_leaves and t in target_leaves else 0\n                    for s, t in leaves_matching_set\n                )\n                leaf_similarity_score = common_leaves_num / max_leaves_num\n            else:\n                leaf_similarity_score = 0.0\n\n            adjusted_t = (\n                0.6\n                if min(len(source_leaves), len(target_leaves)) > 4\n                else 0.4\n            )\n\n            if leaf_similarity_score >= 0.8 or (\n                leaf_similarity_score >= adjusted_t\n                and dice_coefficient(source_node, target_node) >= 0.6\n            ):\n                matching_set.add((source_node, target_node))\n                unmatched_source_nodes.remove(source_node)\n                unmatched_target_nodes.remove(target_node)\n                break\n
\n
\n\n

After the matching set is formed, we can proceed with generation of the edit script, which will be the algorithm\u2019s output.

\n\n

Generating the Edit Script

\n\n

At this point, we should have the following 3 sets at our disposal:

\n\n
    \n
  • The set of matched node pairs.
  • \n
  • The set of remaining unmatched nodes from the source tree.
  • \n
  • The set of remaining unmatched nodes from the target tree.
  • \n
\n\n

We can derive 3 kinds of edits from the matching set: either the node\u2019s value was updated (Update), the node was moved to a different position within the tree (Move), or the node remained unchanged (Keep). Note that the Move case is not mutually exclusive with the other two. The node could have been updated or could have remained the same while at the same time its position within its parent node or the parent node itself could have changed. All unmatched nodes from the source tree are the ones that were removed (Remove), while unmatched nodes from the target tree are the ones that were inserted (Insert).

\n\n

The latter two cases are pretty straightforward to implement:

\n\n
\n
edit_script = []\n\nfor removed_node in unmatched_source_nodes:\n    edit_script.append(Remove(removed_node))\nfor inserted_node in unmatched_target_nodes:\n    edit_script.append(Insert(inserted_node))\n
\n
\n\n

Traversing the matching set requires a little more thought:

\n\n
\n
for source_node, target_node in matching_set:\n    if (\n        not isinstance(source_node, LEAF_EXPRESSION_TYPES)\n        or source_node == target_node\n    ):\n        move_edits = generate_move_edits(\n            source_node, target_node, matching_set\n        )\n        edit_script.extend(move_edits)\n        edit_script.append(Keep(source_node, target_node))\n    else:\n        edit_script.append(Update(source_node, target_node))\n
\n
\n\n

If a matching pair represents a pair of leaf nodes, we check if they are the same to decide whether an update took place. For inner node pairs, we also need to compare the positions of their respective children to detect node movements. Chawathe et al. [3] suggest applying the longest common subsequence (LCS) algorithm which, no surprise here, was described by Myers himself [1]. There is a small catch, however: instead of checking the equality of two children nodes, we need to check whether the two nodes form a pair that is a part of our matching set.

\n\n

Now with this knowledge, the implementation becomes straightforward:

\n\n
\n
def generate_move_edits(source, target, matching_set):\n    source_children = _get_child_nodes(source)\n    target_children = _get_child_nodes(target)\n\n    lcs = set(\n        _longest_common_subsequence(\n            source_children,\n            target_children,\n            lambda l, r: (l, r) in matching_set\n        )\n    )\n\n    move_edits = []\n    for node in source_children:\n        if node not in lcs and node not in unmatched_source_nodes:\n            move_edits.append(Move(node))\n\n    return move_edits\n
\n
\n\n

I left out the implementation of the LCS algorithm itself here, but there are plenty of implementation choices out there that can be easily looked up.

\n\n

Output

\n\n

The implemented algorithm produces the output that resembles the following:

\n\n
\n
>>> from sqlglot import parse_one, diff\n>>> diff(parse_one("SELECT a + b + c, d, e"), parse_one("SELECT a - b + c, e, f"))\n\nRemove(Add)\nRemove(Column(d))\nRemove(Identifier(d))\nInsert(Sub)\nInsert(Column(f))\nInsert(Identifier(f))\nKeep(Select, Select)\nKeep(Add, Add)\nKeep(Column(a), Column(a))\nKeep(Identifier(a), Identifier(a))\nKeep(Column(b), Column(b))\nKeep(Identifier(b), Identifier(b))\nKeep(Column(c), Column(c))\nKeep(Identifier(c), Identifier(c))\nKeep(Column(e), Column(e))\nKeep(Identifier(e), Identifier(e))\n
\n
\n\n

Note that the output above is abbreviated. The string representation of actual AST nodes is significantly more verbose.

\n\n

The implementation works especially well when coupled with the SQLGlot\u2019s query optimizer which can be used to produce canonical representations of compared queries:

\n\n
\n
>>> schema={"t": {"a": "INT", "b": "INT", "c": "INT", "d": "INT"}}\n>>> source = """\n... SELECT 1 + 1 + a\n... FROM t\n... WHERE b = 1 OR (c = 2 AND d = 3)\n... """\n>>> target = """\n... SELECT 2 + a\n... FROM t\n... WHERE (b = 1 OR c = 2) AND (b = 1 OR d = 3)\n... """\n>>> optimized_source = optimize(parse_one(source), schema=schema)\n>>> optimized_target = optimize(parse_one(target), schema=schema)\n>>> edit_script = diff(optimized_source, optimized_target)\n>>> sum(0 if isinstance(e, Keep) else 1 for e in edit_script)\n0\n
\n
\n\n

Optimizations

\n\n

The worst case runtime complexity of this algorithm is not exactly stellar: O(n^2 * log n^2). This is because of the leaf matching process, which involves ranking a cartesian product between all leaf nodes of compared trees. Unsurprisingly, the algorithm takes a considerable time to finish for bigger queries.

\n\n

There are still a few basic things we can do in our implementation to help improve performance:

\n\n
    \n
  • Refer to individual node objects using their identifiers (Python\u2019s id()) instead of direct references in sets. This helps avoid costly recursive hash calculations and equality checks.
  • \n
  • Cache bigram histograms to avoid computing them more than once for the same node.
  • \n
  • Compute the canonical SQL string representation for each tree once while caching string representations of all inner nodes. This prevents redundant tree traversals when bigrams are computed.
  • \n
\n\n

At the time of writing only the first two optimizations have been implemented, so there is an opportunity to contribute for anyone who\u2019s interested.

\n\n

Alternative Solutions

\n\n

This section is dedicated to solutions that I\u2019ve investigated, but haven\u2019t tried.

\n\n

First, this section wouldn\u2019t be complete without Tristan Hume\u2019s blog post. Tristan\u2019s solution has a lot in common with the Myers algorithm plus heuristics that is much more clever than what I came up with. The implementation relies on a combination of dynamic programming and A* search algorithm to explore the space of possible matchings and pick the best ones. It seemed to have worked well for Tistan\u2019s specific use case, but after my negative experience with the Myers algorithm, I decided to try something different.

\n\n

Another notable approach is the Gumtree algorithm by Falleri et al. [4]. I discovered this paper after I\u2019d already implemented the algorithm that is the main focus of this post. In sections 5.2 and 5.3 of their paper, the authors compare the two algorithms side by side and claim that Gumtree is significantly better in terms of both runtime performance and accuracy when evaluated on 12 792 pairs of Java source files. This doesn\u2019t surprise me, as the algorithm takes the height of subtrees into account. In my tests, I definitely saw scenarios in which this context would have helped. On top of that, the authors promise O(n^2) runtime complexity in the worst case which, given the Change Distiller's O(n^2 * log n^2), looks particularly tempting. I hope to try this algorithm out at some point, and there is a good chance you see me writing about it in my future posts.

\n\n

Conclusion

\n\n

The Change Distiller algorithm yielded quite satisfactory results in most of my tests. The scenarios in which it fell short mostly concerned identical (or very similar) subtrees located in different parts of the AST. In those cases, node mismatches were frequent and, as a result, edit scripts were somewhat suboptimal.

\n\n

Additionally, the runtime performance of the algorithm leaves a lot to be desired. On trees with 1000 leaf nodes each, the algorithm takes a little under 2 seconds to complete. My implementation still has room for improvement, but this should give you a rough idea of what to expect. It appears that the Gumtree algorithm [4] can help address both of these points. I hope to find bandwidth to work on it soon and then compare the two algorithms side-by-side to find out which one performs better on SQL specifically. In the meantime, Change Distiller definitely gets the job done, and I can now proceed with applying it to some of the use cases I mentioned at the beginning of this post.

\n\n

I\u2019m also curious to learn whether other folks in the industry faced a similar problem, and how they approached it. If you did something similar, I\u2019m interested to hear about your experience.

\n\n

References

\n\n

[1] Eugene W. Myers. An O(ND) Difference Algorithm and Its Variations. Algorithmica 1(2): 251-266 (1986)

\n\n

[2] B. Fluri, M. Wursch, M. Pinzger, and H. Gall. Change Distilling: Tree differencing for fine-grained source code change extraction. IEEE Trans. Software Eng., 33(11):725\u2013743, 2007.

\n\n

[3] S.S. Chawathe, A. Rajaraman, H. Garcia-Molina, and J. Widom. Change Detection in Hierarchically Structured Information. Proc. ACM Sigmod Int\u2019l Conf. Management of Data, pp. 493-504, June 1996

\n\n

[4] Jean-R\u00e9my Falleri, Flor\u00e9al Morandat, Xavier Blanc, Matias Martinez, Martin Monperrus. Fine-grained and Accurate Source Code Differencing. Proceedings of the International Conference on Automated Software Engineering, 2014, V\u00e4steras, Sweden. pp.313-324, 10.1145/2642937.2642982. hal-01054552

\n\n
\n"}, "sqlglot.diff.Insert": {"fullname": "sqlglot.diff.Insert", "modulename": "sqlglot.diff", "qualname": "Insert", "kind": "class", "doc": "

Indicates that a new node has been inserted

\n"}, "sqlglot.diff.Insert.__init__": {"fullname": "sqlglot.diff.Insert.__init__", "modulename": "sqlglot.diff", "qualname": "Insert.__init__", "kind": "function", "doc": "

\n", "signature": "(expression: sqlglot.expressions.Expression)"}, "sqlglot.diff.Remove": {"fullname": "sqlglot.diff.Remove", "modulename": "sqlglot.diff", "qualname": "Remove", "kind": "class", "doc": "

Indicates that an existing node has been removed

\n"}, "sqlglot.diff.Remove.__init__": {"fullname": "sqlglot.diff.Remove.__init__", "modulename": "sqlglot.diff", "qualname": "Remove.__init__", "kind": "function", "doc": "

\n", "signature": "(expression: sqlglot.expressions.Expression)"}, "sqlglot.diff.Move": {"fullname": "sqlglot.diff.Move", "modulename": "sqlglot.diff", "qualname": "Move", "kind": "class", "doc": "

Indicates that an existing node's position within the tree has changed

\n"}, "sqlglot.diff.Move.__init__": {"fullname": "sqlglot.diff.Move.__init__", "modulename": "sqlglot.diff", "qualname": "Move.__init__", "kind": "function", "doc": "

\n", "signature": "(expression: sqlglot.expressions.Expression)"}, "sqlglot.diff.Update": {"fullname": "sqlglot.diff.Update", "modulename": "sqlglot.diff", "qualname": "Update", "kind": "class", "doc": "

Indicates that an existing node has been updated

\n"}, "sqlglot.diff.Update.__init__": {"fullname": "sqlglot.diff.Update.__init__", "modulename": "sqlglot.diff", "qualname": "Update.__init__", "kind": "function", "doc": "

\n", "signature": "(\tsource: sqlglot.expressions.Expression,\ttarget: sqlglot.expressions.Expression)"}, "sqlglot.diff.Keep": {"fullname": "sqlglot.diff.Keep", "modulename": "sqlglot.diff", "qualname": "Keep", "kind": "class", "doc": "

Indicates that an existing node hasn't been changed

\n"}, "sqlglot.diff.Keep.__init__": {"fullname": "sqlglot.diff.Keep.__init__", "modulename": "sqlglot.diff", "qualname": "Keep.__init__", "kind": "function", "doc": "

\n", "signature": "(\tsource: sqlglot.expressions.Expression,\ttarget: sqlglot.expressions.Expression)"}, "sqlglot.diff.diff": {"fullname": "sqlglot.diff.diff", "modulename": "sqlglot.diff", "qualname": "diff", "kind": "function", "doc": "

Returns the list of changes between the source and the target expressions.

\n\n
Examples:
\n\n
\n
\n
>>> diff(parse_one("a + b"), parse_one("a + c"))\n[\n    Remove(expression=(COLUMN this: (IDENTIFIER this: b, quoted: False))),\n    Insert(expression=(COLUMN this: (IDENTIFIER this: c, quoted: False))),\n    Keep(\n        source=(ADD this: ...),\n        target=(ADD this: ...)\n    ),\n    Keep(\n        source=(COLUMN this: (IDENTIFIER this: a, quoted: False)),\n        target=(COLUMN this: (IDENTIFIER this: a, quoted: False))\n    ),\n]\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • source: the source expression.
  • \n
  • target: the target expression against which the diff should be calculated.
  • \n
  • matchings: the list of pre-matched node pairs which is used to help the algorithm's\nheuristics produce better results for subtrees that are known by a caller to be matching.\nNote: expression references in this list must refer to the same node objects that are\nreferenced in source / target trees.
  • \n
\n\n
Returns:
\n\n
\n

the list of Insert, Remove, Move, Update and Keep objects for each node in the source and the\n target expression trees. This list represents a sequence of steps needed to transform the source\n expression tree into the target one.

\n
\n", "signature": "(\tsource: sqlglot.expressions.Expression,\ttarget: sqlglot.expressions.Expression,\tmatchings: Optional[List[Tuple[sqlglot.expressions.Expression, sqlglot.expressions.Expression]]] = None,\t**kwargs: Any) -> List[Union[sqlglot.diff.Insert, sqlglot.diff.Remove, sqlglot.diff.Move, sqlglot.diff.Update, sqlglot.diff.Keep]]:", "funcdef": "def"}, "sqlglot.diff.ChangeDistiller": {"fullname": "sqlglot.diff.ChangeDistiller", "modulename": "sqlglot.diff", "qualname": "ChangeDistiller", "kind": "class", "doc": "

The implementation of the Change Distiller algorithm described by Beat Fluri and Martin Pinzger in\ntheir paper https://ieeexplore.ieee.org/document/4339230, which in turn is based on the algorithm by\nChawathe et al. described in http://ilpubs.stanford.edu:8090/115/1/1995-46.pdf.

\n"}, "sqlglot.diff.ChangeDistiller.__init__": {"fullname": "sqlglot.diff.ChangeDistiller.__init__", "modulename": "sqlglot.diff", "qualname": "ChangeDistiller.__init__", "kind": "function", "doc": "

\n", "signature": "(f: float = 0.6, t: float = 0.6)"}, "sqlglot.diff.ChangeDistiller.diff": {"fullname": "sqlglot.diff.ChangeDistiller.diff", "modulename": "sqlglot.diff", "qualname": "ChangeDistiller.diff", "kind": "function", "doc": "

\n", "signature": "(\tself,\tsource: sqlglot.expressions.Expression,\ttarget: sqlglot.expressions.Expression,\tmatchings: Optional[List[Tuple[sqlglot.expressions.Expression, sqlglot.expressions.Expression]]] = None) -> List[Union[sqlglot.diff.Insert, sqlglot.diff.Remove, sqlglot.diff.Move, sqlglot.diff.Update, sqlglot.diff.Keep]]:", "funcdef": "def"}, "sqlglot.errors": {"fullname": "sqlglot.errors", "modulename": "sqlglot.errors", "kind": "module", "doc": "

\n"}, "sqlglot.errors.ErrorLevel": {"fullname": "sqlglot.errors.ErrorLevel", "modulename": "sqlglot.errors", "qualname": "ErrorLevel", "kind": "class", "doc": "

An enumeration.

\n", "bases": "sqlglot.helper.AutoName"}, "sqlglot.errors.ErrorLevel.IGNORE": {"fullname": "sqlglot.errors.ErrorLevel.IGNORE", "modulename": "sqlglot.errors", "qualname": "ErrorLevel.IGNORE", "kind": "variable", "doc": "

Ignore all errors.

\n", "default_value": "<ErrorLevel.IGNORE: 'IGNORE'>"}, "sqlglot.errors.ErrorLevel.WARN": {"fullname": "sqlglot.errors.ErrorLevel.WARN", "modulename": "sqlglot.errors", "qualname": "ErrorLevel.WARN", "kind": "variable", "doc": "

Log all errors.

\n", "default_value": "<ErrorLevel.WARN: 'WARN'>"}, "sqlglot.errors.ErrorLevel.RAISE": {"fullname": "sqlglot.errors.ErrorLevel.RAISE", "modulename": "sqlglot.errors", "qualname": "ErrorLevel.RAISE", "kind": "variable", "doc": "

Collect all errors and raise a single exception.

\n", "default_value": "<ErrorLevel.RAISE: 'RAISE'>"}, "sqlglot.errors.ErrorLevel.IMMEDIATE": {"fullname": "sqlglot.errors.ErrorLevel.IMMEDIATE", "modulename": "sqlglot.errors", "qualname": "ErrorLevel.IMMEDIATE", "kind": "variable", "doc": "

Immediately raise an exception on the first error found.

\n", "default_value": "<ErrorLevel.IMMEDIATE: 'IMMEDIATE'>"}, "sqlglot.errors.SqlglotError": {"fullname": "sqlglot.errors.SqlglotError", "modulename": "sqlglot.errors", "qualname": "SqlglotError", "kind": "class", "doc": "

Common base class for all non-exit exceptions.

\n", "bases": "builtins.Exception"}, "sqlglot.errors.UnsupportedError": {"fullname": "sqlglot.errors.UnsupportedError", "modulename": "sqlglot.errors", "qualname": "UnsupportedError", "kind": "class", "doc": "

Common base class for all non-exit exceptions.

\n", "bases": "SqlglotError"}, "sqlglot.errors.ParseError": {"fullname": "sqlglot.errors.ParseError", "modulename": "sqlglot.errors", "qualname": "ParseError", "kind": "class", "doc": "

Common base class for all non-exit exceptions.

\n", "bases": "SqlglotError"}, "sqlglot.errors.ParseError.__init__": {"fullname": "sqlglot.errors.ParseError.__init__", "modulename": "sqlglot.errors", "qualname": "ParseError.__init__", "kind": "function", "doc": "

\n", "signature": "(message: str, errors: Optional[List[Dict[str, Any]]] = None)"}, "sqlglot.errors.ParseError.new": {"fullname": "sqlglot.errors.ParseError.new", "modulename": "sqlglot.errors", "qualname": "ParseError.new", "kind": "function", "doc": "

\n", "signature": "(\tcls,\tmessage: str,\tdescription: Optional[str] = None,\tline: Optional[int] = None,\tcol: Optional[int] = None,\tstart_context: Optional[str] = None,\thighlight: Optional[str] = None,\tend_context: Optional[str] = None,\tinto_expression: Optional[str] = None) -> sqlglot.errors.ParseError:", "funcdef": "def"}, "sqlglot.errors.TokenError": {"fullname": "sqlglot.errors.TokenError", "modulename": "sqlglot.errors", "qualname": "TokenError", "kind": "class", "doc": "

Common base class for all non-exit exceptions.

\n", "bases": "SqlglotError"}, "sqlglot.errors.OptimizeError": {"fullname": "sqlglot.errors.OptimizeError", "modulename": "sqlglot.errors", "qualname": "OptimizeError", "kind": "class", "doc": "

Common base class for all non-exit exceptions.

\n", "bases": "SqlglotError"}, "sqlglot.errors.SchemaError": {"fullname": "sqlglot.errors.SchemaError", "modulename": "sqlglot.errors", "qualname": "SchemaError", "kind": "class", "doc": "

Common base class for all non-exit exceptions.

\n", "bases": "SqlglotError"}, "sqlglot.errors.ExecuteError": {"fullname": "sqlglot.errors.ExecuteError", "modulename": "sqlglot.errors", "qualname": "ExecuteError", "kind": "class", "doc": "

Common base class for all non-exit exceptions.

\n", "bases": "SqlglotError"}, "sqlglot.errors.concat_messages": {"fullname": "sqlglot.errors.concat_messages", "modulename": "sqlglot.errors", "qualname": "concat_messages", "kind": "function", "doc": "

\n", "signature": "(errors: Sequence[Any], maximum: int) -> str:", "funcdef": "def"}, "sqlglot.errors.merge_errors": {"fullname": "sqlglot.errors.merge_errors", "modulename": "sqlglot.errors", "qualname": "merge_errors", "kind": "function", "doc": "

\n", "signature": "(errors: Sequence[sqlglot.errors.ParseError]) -> List[Dict[str, Any]]:", "funcdef": "def"}, "sqlglot.executor": {"fullname": "sqlglot.executor", "modulename": "sqlglot.executor", "kind": "module", "doc": "

Writing a Python SQL engine from scratch

\n\n

Toby Mao

\n\n

Introduction

\n\n

When I first started writing SQLGlot in early 2021, my goal was just to translate SQL queries from SparkSQL to Presto and vice versa. However, over the last year and a half, I've ended up with a full-fledged SQL engine. SQLGlot can now parse and transpile between 18 SQL dialects and can execute all 24 TPC-H SQL queries. The parser and engine are all written from scratch using Python.

\n\n

This post will cover why I went through the effort of creating a Python SQL engine and how a simple query goes from a string to actually transforming data. The following steps are briefly summarized:

\n\n\n\n

Why?

\n\n

I started working on SQLGlot because of my work on the experimentation and metrics platform at Netflix, where I built tools that allowed data scientists to define and compute SQL-based metrics. Netflix relied on multiple engines to query data (Spark, Presto, and Druid), so my team built the metrics platform around PyPika, a Python SQL query builder. This way, definitions could be reused across multiple engines. However, it became quickly apparent that writing python code to programmatically generate SQL was challenging for data scientists, especially those with academic backgrounds, since they were mostly familiar with R and SQL. At the time, the only Python SQL parser was sqlparse, which is not actually a parser but a tokenizer, so having users write raw SQL into the platform wasn't really an option. Some time later, I randomly stumbled across Crafting Interpreters and realized that I could use it as a guide towards creating my own SQL parser/transpiler.

\n\n

Why did I do this? Isn't a Python SQL engine going to be extremely slow?

\n\n

The main reason why I ended up building a SQL engine was...just for entertainment. It's been fun learning about all the things required to actually run a SQL query, and seeing it actually work is extremely rewarding. Before SQLGlot, I had zero experience with lexers, parsers, or compilers.

\n\n

In terms of practical use cases, I planned to use the Python SQL engine for unit testing SQL pipelines. Big data pipelines are tough to test because many of the engines are not open source and cannot be run locally. With SQLGlot, you can take a SQL query targeting a warehouse such as Snowflake and seamlessly run it in CI on mock Python data. It's easy to mock data and create arbitrary UDFs because everything is just Python. Although the implementation is slow and unsuitable for large amounts of data (> 1 million rows), there's very little overhead/startup and you can run queries on test data in a couple of milliseconds.

\n\n

Finally, the components that have been built to support execution can be used as a foundation for a faster engine. I'm inspired by what Apache Calcite has done for the JVM world. Even though Python is commonly used for data, there hasn't been a Calcite for Python. So, you could say that SQLGlot aims to be that framework. For example, it wouldn't take much work to replace the Python execution engine with numpy/pandas/arrow to become a respectably-performing query engine. The implementation would be able to leverage the parser, optimizer, and logical planner, only needing to implement physical execution. There is a lot of work in the Python ecosystem around high performance vectorized computation, which I think could benefit from a pure Python-based AST/plan. Parsing and planning doesn't have to be fast when the bottleneck of running queries is processing terabytes of data. So, having a Python-based ecosystem around SQL is beneficial given the ease of development in Python, despite not having bare metal performance.

\n\n

Parts of SQLGlot's toolkit are being used today by the following:

\n\n
    \n
  • Ibis: A Python library that provides a lightweight, universal interface for data wrangling.\n
      \n
    • Uses the Python SQL expression builder and leverages the optimizer/planner to convert SQL into dataframe operations.
    • \n
  • \n
  • mysql-mimic: Pure-Python implementation of the MySQL server wire protocol\n
      \n
    • Parses / transforms SQL and executes INFORMATION_SCHEMA queries.
    • \n
  • \n
  • Quokka: Push-based vectorized query engine\n
      \n
    • Parse and optimizes SQL.
    • \n
  • \n
  • Splink: Fast, accurate and scalable probabilistic data linkage using your choice of SQL backend.\n
      \n
    • Transpiles queries.
    • \n
  • \n
\n\n

How?

\n\n

There are many steps involved with actually running a simple query like:

\n\n
\n
SELECT\n  bar.a,\n  b + 1 AS b\nFROM bar\nJOIN baz\n  ON bar.a = baz.a\nWHERE bar.a > 1\n
\n
\n\n

In this post, I'll walk through all the steps SQLGlot takes to run this query over Python objects.

\n\n

Tokenizing

\n\n

The first step is to convert the sql string into a list of tokens. SQLGlot's tokenizer is quite simple and can be found here. In a while loop, it checks each character and either appends the character to the current token, or makes a new token.

\n\n

Running the SQLGlot tokenizer shows the output.

\n\n

\"Tokenizer

\n\n

Each keyword has been converted to a SQLGlot Token object. Each token has some metadata associated with it, like line/column information for error messages. Comments are also a part of the token, so that comments can be preserved.

\n\n

Parsing

\n\n

Once a SQL statement is tokenized, we don't need to worry about white space and other formatting, so it's easier to work with. We can now convert the list of tokens into an AST. The SQLGlot parser is a handwritten recursive descent parser.

\n\n

Similar to the tokenizer, it consumes the tokens sequentially, but it instead uses a recursive algorithm. The tokens are converted into a single AST node that presents the SQL query. The SQLGlot parser was designed to support various dialects, so it contains many options for overriding parsing functionality.

\n\n

\"Parser

\n\n

The AST is a generic representation of a given SQL query. Each dialect can override or implement its own generator, which can convert an AST object into syntatically-correct SQL.

\n\n

Optimizing

\n\n

Once we have our AST, we can transform it into an equivalent query that produces the same results more efficiently. When optimizing queries, most engines first convert the AST into a logical plan and then optimize the plan. However, I chose to optimize the AST directly for the following reasons:

\n\n
    \n
  1. It's easier to debug and validate the optimizations when the input and output are both SQL.

  2. \n
  3. Rules can be applied a la carte to transform SQL into a more desirable form.

  4. \n
  5. I wanted a way to generate 'canonical sql'. Having a canonical representation of SQL is useful for understanding if two queries are semantically equivalent (e.g. SELECT 1 + 1 and SELECT 2).

  6. \n
\n\n

I've yet to find another engine that takes this approach, but I'm quite happy with this decision. The optimizer currently does not perform any \"physical optimizations\" such as join reordering. Those are left to the execution layer, as additional statistics and information could become relevant.

\n\n

\"Optimizer

\n\n

The optimizer currently has 17 rules. Each of these rules is applied, transforming the AST in place. The combination of these rules creates \"canonical\" sql that can then be more easily converted into a logical plan and executed.

\n\n

Some example rules are:

\n\n

qualify_tables and qualify_columns

\n\n
    \n
  • Adds all db/catalog qualifiers to tables and forces an alias.
  • \n
  • Ensure each column is unambiguous and expand stars.
  • \n
\n\n
\n
SELECT * FROM x;\n\nSELECT "db"."x" AS "x";\n
\n
\n\n

simplify

\n\n

Boolean and math simplification. Check out all the test cases.

\n\n
\n
((NOT FALSE) AND (x = x)) AND (TRUE OR 1 <> 3);\nx = x;\n\n1 + 1;\n2;\n
\n
\n\n

normalize

\n\n

Attempts to convert all predicates into conjunctive normal form.

\n\n
\n
-- DNF\n(A AND B) OR (B AND C AND D);\n\n-- CNF\n(A OR C) AND (A OR D) AND B;\n
\n
\n\n

unnest_subqueries

\n\n

Converts subqueries in predicates into joins.

\n\n
\n
-- The subquery can be converted into a left join\nSELECT *\nFROM x AS x\nWHERE (\n  SELECT y.a AS a\n  FROM y AS y\n  WHERE x.a = y.a\n) = 1;\n\nSELECT *\nFROM x AS x\nLEFT JOIN (\n  SELECT y.a AS a\n  FROM y AS y\n  WHERE TRUE\n  GROUP BY y.a\n) AS "_u_0"\n  ON x.a = "_u_0".a\nWHERE ("_u_0".a = 1 AND NOT "_u_0".a IS NULL)\n
\n
\n\n

pushdown_predicates

\n\n

Push down filters into the innermost query.

\n\n
\n
SELECT *\nFROM (\n  SELECT *\n  FROM x AS x\n) AS y\nWHERE y.a = 1;\n\nSELECT *\nFROM (\n  SELECT *\n  FROM x AS x\n  WHERE y.a = 1\n) AS y WHERE TRUE\n
\n
\n\n

annotate_types

\n\n

Infer all types throughout the AST given schema information and function type definitions.

\n\n

Planning

\n\n

After the SQL AST has been \"optimized\", it's much easier to convert into a logical plan. The AST is traversed and converted into a DAG consisting of one of five steps. The different steps are:

\n\n

Scan

\n\n

Selects columns from a table, applies projections, and finally filters the table.

\n\n

Sort

\n\n

Sorts a table for order by expressions.

\n\n

Set

\n\n

Applies the operators union/union all/except/intersect.

\n\n

Aggregate

\n\n

Applies an aggregation/group by.

\n\n

Join

\n\n

Joins multiple tables together.

\n\n

\"Planner

\n\n

The logical plan is quite simple and contains the information required to convert it into a physical plan (execution).

\n\n

Executing

\n\n

Finally, we can actually execute the SQL query. The Python engine is not fast, but it's very small (~400 LOC)! It iterates the DAG with a queue and runs each step, passing each intermediary table to the next step.

\n\n

In order to keep things simple, it evaluates expressions with eval. Because SQLGlot was built primarily to be a transpiler, it was simple to create a \"Python SQL\" dialect. So a SQL expression x + 1 can just be converted into scope['x'] + 1.

\n\n

\"Executor

\n\n

What's next

\n\n

SQLGlot's main focus will always be on parsing/transpiling, but I plan to continue development on the execution engine. I'd like to pass TPC-DS. If someone doesn't beat me to it, I may even take a stab at writing a Pandas/Arrow execution engine.

\n\n

I'm hoping that over time, SQLGlot will spark the Python SQL ecosystem just like Calcite has for Java.

\n\n

Special thanks

\n\n

SQLGlot would not be what it is without it's core contributors. In particular, the execution engine would not exist without Barak Alon and George Sittas.

\n\n

Get in touch

\n\n

If you'd like to chat more about SQLGlot, please join my Slack Channel!

\n\n
\n"}, "sqlglot.executor.execute": {"fullname": "sqlglot.executor.execute", "modulename": "sqlglot.executor", "qualname": "execute", "kind": "function", "doc": "

Run a sql query against data.

\n\n
Arguments:
\n\n
    \n
  • sql: a sql statement.
  • \n
  • schema: database schema.\nThis can either be an instance of Schema or a mapping in one of the following forms:\n
      \n
    1. {table: {col: type}}
    2. \n
    3. {db: {table: {col: type}}}
    4. \n
    5. {catalog: {db: {table: {col: type}}}}
    6. \n
  • \n
  • read: the SQL dialect to apply during parsing (eg. \"spark\", \"hive\", \"presto\", \"mysql\").
  • \n
  • tables: additional tables to register.
  • \n
\n\n
Returns:
\n\n
\n

Simple columnar data structure.

\n
\n", "signature": "(\tsql: str | sqlglot.expressions.Expression,\tschema: Union[Dict, sqlglot.schema.Schema, NoneType] = None,\tread: Union[str, sqlglot.dialects.dialect.Dialect, Type[sqlglot.dialects.dialect.Dialect], NoneType] = None,\ttables: Optional[Dict] = None) -> sqlglot.executor.table.Table:", "funcdef": "def"}, "sqlglot.executor.context": {"fullname": "sqlglot.executor.context", "modulename": "sqlglot.executor.context", "kind": "module", "doc": "

\n"}, "sqlglot.executor.context.Context": {"fullname": "sqlglot.executor.context.Context", "modulename": "sqlglot.executor.context", "qualname": "Context", "kind": "class", "doc": "

Execution context for sql expressions.

\n\n

Context is used to hold relevant data tables which can then be queried on with eval.

\n\n

References to columns can either be scalar or vectors. When set_row is used, column references\nevaluate to scalars while set_range evaluates to vectors. This allows convenient and efficient\nevaluation of aggregation functions.

\n"}, "sqlglot.executor.context.Context.__init__": {"fullname": "sqlglot.executor.context.Context.__init__", "modulename": "sqlglot.executor.context", "qualname": "Context.__init__", "kind": "function", "doc": "

Args\n tables: representing the scope of the current execution context.\n env: dictionary of functions within the execution context.

\n", "signature": "(\ttables: Dict[str, sqlglot.executor.table.Table],\tenv: Optional[Dict] = None)"}, "sqlglot.executor.context.Context.eval": {"fullname": "sqlglot.executor.context.Context.eval", "modulename": "sqlglot.executor.context", "qualname": "Context.eval", "kind": "function", "doc": "

\n", "signature": "(self, code):", "funcdef": "def"}, "sqlglot.executor.context.Context.eval_tuple": {"fullname": "sqlglot.executor.context.Context.eval_tuple", "modulename": "sqlglot.executor.context", "qualname": "Context.eval_tuple", "kind": "function", "doc": "

\n", "signature": "(self, codes):", "funcdef": "def"}, "sqlglot.executor.context.Context.add_columns": {"fullname": "sqlglot.executor.context.Context.add_columns", "modulename": "sqlglot.executor.context", "qualname": "Context.add_columns", "kind": "function", "doc": "

\n", "signature": "(self, *columns: str) -> None:", "funcdef": "def"}, "sqlglot.executor.context.Context.table_iter": {"fullname": "sqlglot.executor.context.Context.table_iter", "modulename": "sqlglot.executor.context", "qualname": "Context.table_iter", "kind": "function", "doc": "

\n", "signature": "(\tself,\ttable: str) -> Iterator[Tuple[sqlglot.executor.table.TableIter, sqlglot.executor.context.Context]]:", "funcdef": "def"}, "sqlglot.executor.context.Context.filter": {"fullname": "sqlglot.executor.context.Context.filter", "modulename": "sqlglot.executor.context", "qualname": "Context.filter", "kind": "function", "doc": "

\n", "signature": "(self, condition) -> None:", "funcdef": "def"}, "sqlglot.executor.context.Context.sort": {"fullname": "sqlglot.executor.context.Context.sort", "modulename": "sqlglot.executor.context", "qualname": "Context.sort", "kind": "function", "doc": "

\n", "signature": "(self, key) -> None:", "funcdef": "def"}, "sqlglot.executor.context.Context.set_row": {"fullname": "sqlglot.executor.context.Context.set_row", "modulename": "sqlglot.executor.context", "qualname": "Context.set_row", "kind": "function", "doc": "

\n", "signature": "(self, row: Tuple) -> None:", "funcdef": "def"}, "sqlglot.executor.context.Context.set_index": {"fullname": "sqlglot.executor.context.Context.set_index", "modulename": "sqlglot.executor.context", "qualname": "Context.set_index", "kind": "function", "doc": "

\n", "signature": "(self, index: int) -> None:", "funcdef": "def"}, "sqlglot.executor.context.Context.set_range": {"fullname": "sqlglot.executor.context.Context.set_range", "modulename": "sqlglot.executor.context", "qualname": "Context.set_range", "kind": "function", "doc": "

\n", "signature": "(self, start: int, end: int) -> None:", "funcdef": "def"}, "sqlglot.executor.env": {"fullname": "sqlglot.executor.env", "modulename": "sqlglot.executor.env", "kind": "module", "doc": "

\n"}, "sqlglot.executor.env.reverse_key": {"fullname": "sqlglot.executor.env.reverse_key", "modulename": "sqlglot.executor.env", "qualname": "reverse_key", "kind": "class", "doc": "

\n"}, "sqlglot.executor.env.reverse_key.__init__": {"fullname": "sqlglot.executor.env.reverse_key.__init__", "modulename": "sqlglot.executor.env", "qualname": "reverse_key.__init__", "kind": "function", "doc": "

\n", "signature": "(obj)"}, "sqlglot.executor.env.filter_nulls": {"fullname": "sqlglot.executor.env.filter_nulls", "modulename": "sqlglot.executor.env", "qualname": "filter_nulls", "kind": "function", "doc": "

\n", "signature": "(func, empty_null=True):", "funcdef": "def"}, "sqlglot.executor.env.null_if_any": {"fullname": "sqlglot.executor.env.null_if_any", "modulename": "sqlglot.executor.env", "qualname": "null_if_any", "kind": "function", "doc": "

Decorator that makes a function return None if any of the required arguments are None.

\n\n

This also supports decoration with no arguments, e.g.:

\n\n
@null_if_any\ndef foo(a, b): ...\n
\n\n

In which case all arguments are required.

\n", "signature": "(*required):", "funcdef": "def"}, "sqlglot.executor.env.str_position": {"fullname": "sqlglot.executor.env.str_position", "modulename": "sqlglot.executor.env", "qualname": "str_position", "kind": "function", "doc": "

\n", "signature": "(substr, this, position=None):", "funcdef": "def"}, "sqlglot.executor.env.substring": {"fullname": "sqlglot.executor.env.substring", "modulename": "sqlglot.executor.env", "qualname": "substring", "kind": "function", "doc": "

\n", "signature": "(this, start=None, length=None):", "funcdef": "def"}, "sqlglot.executor.env.cast": {"fullname": "sqlglot.executor.env.cast", "modulename": "sqlglot.executor.env", "qualname": "cast", "kind": "function", "doc": "

\n", "signature": "(this, to):", "funcdef": "def"}, "sqlglot.executor.env.ordered": {"fullname": "sqlglot.executor.env.ordered", "modulename": "sqlglot.executor.env", "qualname": "ordered", "kind": "function", "doc": "

\n", "signature": "(this, desc, nulls_first):", "funcdef": "def"}, "sqlglot.executor.env.interval": {"fullname": "sqlglot.executor.env.interval", "modulename": "sqlglot.executor.env", "qualname": "interval", "kind": "function", "doc": "

\n", "signature": "(this, unit):", "funcdef": "def"}, "sqlglot.executor.python": {"fullname": "sqlglot.executor.python", "modulename": "sqlglot.executor.python", "kind": "module", "doc": "

\n"}, "sqlglot.executor.python.PythonExecutor": {"fullname": "sqlglot.executor.python.PythonExecutor", "modulename": "sqlglot.executor.python", "qualname": "PythonExecutor", "kind": "class", "doc": "

\n"}, "sqlglot.executor.python.PythonExecutor.__init__": {"fullname": "sqlglot.executor.python.PythonExecutor.__init__", "modulename": "sqlglot.executor.python", "qualname": "PythonExecutor.__init__", "kind": "function", "doc": "

\n", "signature": "(env=None, tables=None)"}, "sqlglot.executor.python.PythonExecutor.execute": {"fullname": "sqlglot.executor.python.PythonExecutor.execute", "modulename": "sqlglot.executor.python", "qualname": "PythonExecutor.execute", "kind": "function", "doc": "

\n", "signature": "(self, plan):", "funcdef": "def"}, "sqlglot.executor.python.PythonExecutor.generate": {"fullname": "sqlglot.executor.python.PythonExecutor.generate", "modulename": "sqlglot.executor.python", "qualname": "PythonExecutor.generate", "kind": "function", "doc": "

Convert a SQL expression into literal Python code and compile it into bytecode.

\n", "signature": "(self, expression):", "funcdef": "def"}, "sqlglot.executor.python.PythonExecutor.generate_tuple": {"fullname": "sqlglot.executor.python.PythonExecutor.generate_tuple", "modulename": "sqlglot.executor.python", "qualname": "PythonExecutor.generate_tuple", "kind": "function", "doc": "

Convert an array of SQL expressions into tuple of Python byte code.

\n", "signature": "(self, expressions):", "funcdef": "def"}, "sqlglot.executor.python.PythonExecutor.context": {"fullname": "sqlglot.executor.python.PythonExecutor.context", "modulename": "sqlglot.executor.python", "qualname": "PythonExecutor.context", "kind": "function", "doc": "

\n", "signature": "(self, tables):", "funcdef": "def"}, "sqlglot.executor.python.PythonExecutor.table": {"fullname": "sqlglot.executor.python.PythonExecutor.table", "modulename": "sqlglot.executor.python", "qualname": "PythonExecutor.table", "kind": "function", "doc": "

\n", "signature": "(self, expressions):", "funcdef": "def"}, "sqlglot.executor.python.PythonExecutor.scan": {"fullname": "sqlglot.executor.python.PythonExecutor.scan", "modulename": "sqlglot.executor.python", "qualname": "PythonExecutor.scan", "kind": "function", "doc": "

\n", "signature": "(self, step, context):", "funcdef": "def"}, "sqlglot.executor.python.PythonExecutor.static": {"fullname": "sqlglot.executor.python.PythonExecutor.static", "modulename": "sqlglot.executor.python", "qualname": "PythonExecutor.static", "kind": "function", "doc": "

\n", "signature": "(self):", "funcdef": "def"}, "sqlglot.executor.python.PythonExecutor.scan_table": {"fullname": "sqlglot.executor.python.PythonExecutor.scan_table", "modulename": "sqlglot.executor.python", "qualname": "PythonExecutor.scan_table", "kind": "function", "doc": "

\n", "signature": "(self, step):", "funcdef": "def"}, "sqlglot.executor.python.PythonExecutor.scan_csv": {"fullname": "sqlglot.executor.python.PythonExecutor.scan_csv", "modulename": "sqlglot.executor.python", "qualname": "PythonExecutor.scan_csv", "kind": "function", "doc": "

\n", "signature": "(self, step):", "funcdef": "def"}, "sqlglot.executor.python.PythonExecutor.join": {"fullname": "sqlglot.executor.python.PythonExecutor.join", "modulename": "sqlglot.executor.python", "qualname": "PythonExecutor.join", "kind": "function", "doc": "

\n", "signature": "(self, step, context):", "funcdef": "def"}, "sqlglot.executor.python.PythonExecutor.nested_loop_join": {"fullname": "sqlglot.executor.python.PythonExecutor.nested_loop_join", "modulename": "sqlglot.executor.python", "qualname": "PythonExecutor.nested_loop_join", "kind": "function", "doc": "

\n", "signature": "(self, _join, source_context, join_context):", "funcdef": "def"}, "sqlglot.executor.python.PythonExecutor.hash_join": {"fullname": "sqlglot.executor.python.PythonExecutor.hash_join", "modulename": "sqlglot.executor.python", "qualname": "PythonExecutor.hash_join", "kind": "function", "doc": "

\n", "signature": "(self, join, source_context, join_context):", "funcdef": "def"}, "sqlglot.executor.python.PythonExecutor.aggregate": {"fullname": "sqlglot.executor.python.PythonExecutor.aggregate", "modulename": "sqlglot.executor.python", "qualname": "PythonExecutor.aggregate", "kind": "function", "doc": "

\n", "signature": "(self, step, context):", "funcdef": "def"}, "sqlglot.executor.python.PythonExecutor.sort": {"fullname": "sqlglot.executor.python.PythonExecutor.sort", "modulename": "sqlglot.executor.python", "qualname": "PythonExecutor.sort", "kind": "function", "doc": "

\n", "signature": "(self, step, context):", "funcdef": "def"}, "sqlglot.executor.python.PythonExecutor.set_operation": {"fullname": "sqlglot.executor.python.PythonExecutor.set_operation", "modulename": "sqlglot.executor.python", "qualname": "PythonExecutor.set_operation", "kind": "function", "doc": "

\n", "signature": "(self, step, context):", "funcdef": "def"}, "sqlglot.executor.python.Python": {"fullname": "sqlglot.executor.python.Python", "modulename": "sqlglot.executor.python", "qualname": "Python", "kind": "class", "doc": "

\n", "bases": "sqlglot.dialects.dialect.Dialect"}, "sqlglot.executor.python.Python.Tokenizer": {"fullname": "sqlglot.executor.python.Python.Tokenizer", "modulename": "sqlglot.executor.python", "qualname": "Python.Tokenizer", "kind": "class", "doc": "

\n", "bases": "sqlglot.tokens.Tokenizer"}, "sqlglot.executor.python.Python.Generator": {"fullname": "sqlglot.executor.python.Python.Generator", "modulename": "sqlglot.executor.python", "qualname": "Python.Generator", "kind": "class", "doc": "

Generator interprets the given syntax tree and produces a SQL string as an output.

\n\n
Arguments:
\n\n
    \n
  • time_mapping (dict): the dictionary of custom time mappings in which the key\nrepresents a python time format and the output the target time format
  • \n
  • time_trie (trie): a trie of the time_mapping keys
  • \n
  • pretty (bool): if set to True the returned string will be formatted. Default: False.
  • \n
  • quote_start (str): specifies which starting character to use to delimit quotes. Default: '.
  • \n
  • quote_end (str): specifies which ending character to use to delimit quotes. Default: '.
  • \n
  • identifier_start (str): specifies which starting character to use to delimit identifiers. Default: \".
  • \n
  • identifier_end (str): specifies which ending character to use to delimit identifiers. Default: \".
  • \n
  • identify (bool | str): 'always': always quote, 'safe': quote identifiers if they don't contain an upcase, True defaults to always.
  • \n
  • normalize (bool): if set to True all identifiers will lower cased
  • \n
  • string_escape (str): specifies a string escape character. Default: '.
  • \n
  • identifier_escape (str): specifies an identifier escape character. Default: \".
  • \n
  • pad (int): determines padding in a formatted string. Default: 2.
  • \n
  • indent (int): determines the size of indentation in a formatted string. Default: 4.
  • \n
  • unnest_column_only (bool): if true unnest table aliases are considered only as column aliases
  • \n
  • normalize_functions (str): normalize function names, \"upper\", \"lower\", or None\nDefault: \"upper\"
  • \n
  • alias_post_tablesample (bool): if the table alias comes after tablesample\nDefault: False
  • \n
  • unsupported_level (ErrorLevel): determines the generator's behavior when it encounters\nunsupported expressions. Default ErrorLevel.WARN.
  • \n
  • null_ordering (str): Indicates the default null ordering method to use if not explicitly set.\nOptions are \"nulls_are_small\", \"nulls_are_large\", \"nulls_are_last\".\nDefault: \"nulls_are_small\"
  • \n
  • max_unsupported (int): Maximum number of unsupported messages to include in a raised UnsupportedError.\nThis is only relevant if unsupported_level is ErrorLevel.RAISE.\nDefault: 3
  • \n
  • leading_comma (bool): if the the comma is leading or trailing in select statements\nDefault: False
  • \n
  • max_text_width: The max number of characters in a segment before creating new lines in pretty mode.\nThe default is on the smaller end because the length only represents a segment and not the true\nline length.\nDefault: 80
  • \n
  • comments: Whether or not to preserve comments in the output SQL code.\nDefault: True
  • \n
\n", "bases": "sqlglot.generator.Generator"}, "sqlglot.executor.table": {"fullname": "sqlglot.executor.table", "modulename": "sqlglot.executor.table", "kind": "module", "doc": "

\n"}, "sqlglot.executor.table.Table": {"fullname": "sqlglot.executor.table.Table", "modulename": "sqlglot.executor.table", "qualname": "Table", "kind": "class", "doc": "

\n"}, "sqlglot.executor.table.Table.__init__": {"fullname": "sqlglot.executor.table.Table.__init__", "modulename": "sqlglot.executor.table", "qualname": "Table.__init__", "kind": "function", "doc": "

\n", "signature": "(columns, rows=None, column_range=None)"}, "sqlglot.executor.table.Table.add_columns": {"fullname": "sqlglot.executor.table.Table.add_columns", "modulename": "sqlglot.executor.table", "qualname": "Table.add_columns", "kind": "function", "doc": "

\n", "signature": "(self, *columns: str) -> None:", "funcdef": "def"}, "sqlglot.executor.table.Table.append": {"fullname": "sqlglot.executor.table.Table.append", "modulename": "sqlglot.executor.table", "qualname": "Table.append", "kind": "function", "doc": "

\n", "signature": "(self, row):", "funcdef": "def"}, "sqlglot.executor.table.Table.pop": {"fullname": "sqlglot.executor.table.Table.pop", "modulename": "sqlglot.executor.table", "qualname": "Table.pop", "kind": "function", "doc": "

\n", "signature": "(self):", "funcdef": "def"}, "sqlglot.executor.table.TableIter": {"fullname": "sqlglot.executor.table.TableIter", "modulename": "sqlglot.executor.table", "qualname": "TableIter", "kind": "class", "doc": "

\n"}, "sqlglot.executor.table.TableIter.__init__": {"fullname": "sqlglot.executor.table.TableIter.__init__", "modulename": "sqlglot.executor.table", "qualname": "TableIter.__init__", "kind": "function", "doc": "

\n", "signature": "(table)"}, "sqlglot.executor.table.RangeReader": {"fullname": "sqlglot.executor.table.RangeReader", "modulename": "sqlglot.executor.table", "qualname": "RangeReader", "kind": "class", "doc": "

\n"}, "sqlglot.executor.table.RangeReader.__init__": {"fullname": "sqlglot.executor.table.RangeReader.__init__", "modulename": "sqlglot.executor.table", "qualname": "RangeReader.__init__", "kind": "function", "doc": "

\n", "signature": "(table)"}, "sqlglot.executor.table.RowReader": {"fullname": "sqlglot.executor.table.RowReader", "modulename": "sqlglot.executor.table", "qualname": "RowReader", "kind": "class", "doc": "

\n"}, "sqlglot.executor.table.RowReader.__init__": {"fullname": "sqlglot.executor.table.RowReader.__init__", "modulename": "sqlglot.executor.table", "qualname": "RowReader.__init__", "kind": "function", "doc": "

\n", "signature": "(columns, column_range=None)"}, "sqlglot.executor.table.Tables": {"fullname": "sqlglot.executor.table.Tables", "modulename": "sqlglot.executor.table", "qualname": "Tables", "kind": "class", "doc": "

Abstract base class for generic types.

\n\n

A generic type is typically declared by inheriting from\nthis class parameterized with one or more type variables.\nFor example, a generic mapping type might be defined as::

\n\n

class Mapping(Generic[KT, VT]):\n def __getitem__(self, key: KT) -> VT:\n ...\n # Etc.

\n\n

This class can then be used as follows::

\n\n

def lookup_name(mapping: Mapping[KT, VT], key: KT, default: VT) -> VT:\n try:\n return mapping[key]\n except KeyError:\n return default

\n", "bases": "sqlglot.schema.AbstractMappingSchema[sqlglot.executor.table.Table]"}, "sqlglot.executor.table.ensure_tables": {"fullname": "sqlglot.executor.table.ensure_tables", "modulename": "sqlglot.executor.table", "qualname": "ensure_tables", "kind": "function", "doc": "

\n", "signature": "(d: Optional[Dict]) -> sqlglot.executor.table.Tables:", "funcdef": "def"}, "sqlglot.expressions": {"fullname": "sqlglot.expressions", "modulename": "sqlglot.expressions", "kind": "module", "doc": "

Expressions

\n\n

Every AST node in SQLGlot is represented by a subclass of Expression.

\n\n

This module contains the implementation of all supported Expression types. Additionally,\nit exposes a number of helper functions, which are mainly used to programmatically build\nSQL expressions, such as sqlglot.expressions.select.

\n\n
\n"}, "sqlglot.expressions.Expression": {"fullname": "sqlglot.expressions.Expression", "modulename": "sqlglot.expressions", "qualname": "Expression", "kind": "class", "doc": "

The base class for all expressions in a syntax tree. Each Expression encapsulates any necessary\ncontext, such as its child expressions, their names (arg keys), and whether a given child expression\nis optional or not.

\n\n
Attributes:
\n\n
    \n
  • key: a unique key for each class in the Expression hierarchy. This is useful for hashing\nand representing expressions as strings.
  • \n
  • arg_types: determines what arguments (child nodes) are supported by an expression. It\nmaps arg keys to booleans that indicate whether the corresponding args are optional.
  • \n
\n\n
Example:
\n\n
\n
\n
>>> class Foo(Expression):\n...     arg_types = {"this": True, "expression": False}\n
\n
\n \n

The above definition informs us that Foo is an Expression that requires an argument called\n \"this\" and may also optionally receive an argument called \"expression\".

\n
\n\n
Arguments:
\n\n
    \n
  • args: a mapping used for retrieving the arguments of an expression, given their arg keys.
  • \n
  • parent: a reference to the parent expression (or None, in case of root expressions).
  • \n
  • arg_key: the arg key an expression is associated with, i.e. the name its parent expression\nuses to refer to it.
  • \n
  • comments: a list of comments that are associated with a given expression. This is used in\norder to preserve comments when transpiling SQL code.
  • \n
  • _type: the sqlglot.expressions.DataType type of an expression. This is inferred by the\noptimizer, in order to enable some transformations that require type information.
  • \n
\n"}, "sqlglot.expressions.Expression.__init__": {"fullname": "sqlglot.expressions.Expression.__init__", "modulename": "sqlglot.expressions", "qualname": "Expression.__init__", "kind": "function", "doc": "

\n", "signature": "(**args: Any)"}, "sqlglot.expressions.Expression.this": {"fullname": "sqlglot.expressions.Expression.this", "modulename": "sqlglot.expressions", "qualname": "Expression.this", "kind": "variable", "doc": "

Retrieves the argument with key \"this\".

\n"}, "sqlglot.expressions.Expression.expression": {"fullname": "sqlglot.expressions.Expression.expression", "modulename": "sqlglot.expressions", "qualname": "Expression.expression", "kind": "variable", "doc": "

Retrieves the argument with key \"expression\".

\n"}, "sqlglot.expressions.Expression.expressions": {"fullname": "sqlglot.expressions.Expression.expressions", "modulename": "sqlglot.expressions", "qualname": "Expression.expressions", "kind": "variable", "doc": "

Retrieves the argument with key \"expressions\".

\n"}, "sqlglot.expressions.Expression.text": {"fullname": "sqlglot.expressions.Expression.text", "modulename": "sqlglot.expressions", "qualname": "Expression.text", "kind": "function", "doc": "

Returns a textual representation of the argument corresponding to \"key\". This can only be used\nfor args that are strings or leaf Expression instances, such as identifiers and literals.

\n", "signature": "(self, key) -> str:", "funcdef": "def"}, "sqlglot.expressions.Expression.is_string": {"fullname": "sqlglot.expressions.Expression.is_string", "modulename": "sqlglot.expressions", "qualname": "Expression.is_string", "kind": "variable", "doc": "

Checks whether a Literal expression is a string.

\n", "annotation": ": bool"}, "sqlglot.expressions.Expression.is_number": {"fullname": "sqlglot.expressions.Expression.is_number", "modulename": "sqlglot.expressions", "qualname": "Expression.is_number", "kind": "variable", "doc": "

Checks whether a Literal expression is a number.

\n", "annotation": ": bool"}, "sqlglot.expressions.Expression.is_int": {"fullname": "sqlglot.expressions.Expression.is_int", "modulename": "sqlglot.expressions", "qualname": "Expression.is_int", "kind": "variable", "doc": "

Checks whether a Literal expression is an integer.

\n", "annotation": ": bool"}, "sqlglot.expressions.Expression.is_star": {"fullname": "sqlglot.expressions.Expression.is_star", "modulename": "sqlglot.expressions", "qualname": "Expression.is_star", "kind": "variable", "doc": "

Checks whether an expression is a star.

\n", "annotation": ": bool"}, "sqlglot.expressions.Expression.alias": {"fullname": "sqlglot.expressions.Expression.alias", "modulename": "sqlglot.expressions", "qualname": "Expression.alias", "kind": "variable", "doc": "

Returns the alias of the expression, or an empty string if it's not aliased.

\n", "annotation": ": str"}, "sqlglot.expressions.Expression.output_name": {"fullname": "sqlglot.expressions.Expression.output_name", "modulename": "sqlglot.expressions", "qualname": "Expression.output_name", "kind": "variable", "doc": "

Name of the output column if this expression is a selection.

\n\n

If the Expression has no output name, an empty string is returned.

\n\n
Example:
\n\n
\n
\n
>>> from sqlglot import parse_one\n>>> parse_one("SELECT a").expressions[0].output_name\n'a'\n>>> parse_one("SELECT b AS c").expressions[0].output_name\n'c'\n>>> parse_one("SELECT 1 + 2").expressions[0].output_name\n''\n
\n
\n
\n"}, "sqlglot.expressions.Expression.copy": {"fullname": "sqlglot.expressions.Expression.copy", "modulename": "sqlglot.expressions", "qualname": "Expression.copy", "kind": "function", "doc": "

Returns a deep copy of the expression.

\n", "signature": "(self):", "funcdef": "def"}, "sqlglot.expressions.Expression.append": {"fullname": "sqlglot.expressions.Expression.append", "modulename": "sqlglot.expressions", "qualname": "Expression.append", "kind": "function", "doc": "

Appends value to arg_key if it's a list or sets it as a new list.

\n\n
Arguments:
\n\n
    \n
  • arg_key (str): name of the list expression arg
  • \n
  • value (Any): value to append to the list
  • \n
\n", "signature": "(self, arg_key, value):", "funcdef": "def"}, "sqlglot.expressions.Expression.set": {"fullname": "sqlglot.expressions.Expression.set", "modulename": "sqlglot.expressions", "qualname": "Expression.set", "kind": "function", "doc": "

Sets arg_key to value.

\n\n
Arguments:
\n\n
    \n
  • arg_key (str): name of the expression arg.
  • \n
  • value: value to set the arg to.
  • \n
\n", "signature": "(self, arg_key, value):", "funcdef": "def"}, "sqlglot.expressions.Expression.depth": {"fullname": "sqlglot.expressions.Expression.depth", "modulename": "sqlglot.expressions", "qualname": "Expression.depth", "kind": "variable", "doc": "

Returns the depth of this tree.

\n"}, "sqlglot.expressions.Expression.iter_expressions": {"fullname": "sqlglot.expressions.Expression.iter_expressions", "modulename": "sqlglot.expressions", "qualname": "Expression.iter_expressions", "kind": "function", "doc": "

Yields the key and expression for all arguments, exploding list args.

\n", "signature": "(self) -> Iterator[Tuple[str, sqlglot.expressions.Expression]]:", "funcdef": "def"}, "sqlglot.expressions.Expression.find": {"fullname": "sqlglot.expressions.Expression.find", "modulename": "sqlglot.expressions", "qualname": "Expression.find", "kind": "function", "doc": "

Returns the first node in this tree which matches at least one of\nthe specified types.

\n\n
Arguments:
\n\n
    \n
  • expression_types: the expression type(s) to match.
  • \n
\n\n
Returns:
\n\n
\n

The node which matches the criteria or None if no such node was found.

\n
\n", "signature": "(self, *expression_types: Type[~E], bfs=True) -> Optional[~E]:", "funcdef": "def"}, "sqlglot.expressions.Expression.find_all": {"fullname": "sqlglot.expressions.Expression.find_all", "modulename": "sqlglot.expressions", "qualname": "Expression.find_all", "kind": "function", "doc": "

Returns a generator object which visits all nodes in this tree and only\nyields those that match at least one of the specified expression types.

\n\n
Arguments:
\n\n
    \n
  • expression_types: the expression type(s) to match.
  • \n
\n\n
Returns:
\n\n
\n

The generator object.

\n
\n", "signature": "(self, *expression_types: Type[~E], bfs=True) -> Iterator[~E]:", "funcdef": "def"}, "sqlglot.expressions.Expression.find_ancestor": {"fullname": "sqlglot.expressions.Expression.find_ancestor", "modulename": "sqlglot.expressions", "qualname": "Expression.find_ancestor", "kind": "function", "doc": "

Returns a nearest parent matching expression_types.

\n\n
Arguments:
\n\n
    \n
  • expression_types: the expression type(s) to match.
  • \n
\n\n
Returns:
\n\n
\n

The parent node.

\n
\n", "signature": "(self, *expression_types: Type[~E]) -> Optional[~E]:", "funcdef": "def"}, "sqlglot.expressions.Expression.parent_select": {"fullname": "sqlglot.expressions.Expression.parent_select", "modulename": "sqlglot.expressions", "qualname": "Expression.parent_select", "kind": "variable", "doc": "

Returns the parent select statement.

\n"}, "sqlglot.expressions.Expression.same_parent": {"fullname": "sqlglot.expressions.Expression.same_parent", "modulename": "sqlglot.expressions", "qualname": "Expression.same_parent", "kind": "variable", "doc": "

Returns if the parent is the same class as itself.

\n"}, "sqlglot.expressions.Expression.root": {"fullname": "sqlglot.expressions.Expression.root", "modulename": "sqlglot.expressions", "qualname": "Expression.root", "kind": "function", "doc": "

Returns the root expression of this tree.

\n", "signature": "(self) -> sqlglot.expressions.Expression:", "funcdef": "def"}, "sqlglot.expressions.Expression.walk": {"fullname": "sqlglot.expressions.Expression.walk", "modulename": "sqlglot.expressions", "qualname": "Expression.walk", "kind": "function", "doc": "

Returns a generator object which visits all nodes in this tree.

\n\n
Arguments:
\n\n
    \n
  • bfs (bool): if set to True the BFS traversal order will be applied,\notherwise the DFS traversal will be used instead.
  • \n
  • prune ((node, parent, arg_key) -> bool): callable that returns True if\nthe generator should stop traversing this branch of the tree.
  • \n
\n\n
Returns:
\n\n
\n

the generator object.

\n
\n", "signature": "(self, bfs=True, prune=None):", "funcdef": "def"}, "sqlglot.expressions.Expression.dfs": {"fullname": "sqlglot.expressions.Expression.dfs", "modulename": "sqlglot.expressions", "qualname": "Expression.dfs", "kind": "function", "doc": "

Returns a generator object which visits all nodes in this tree in\nthe DFS (Depth-first) order.

\n\n
Returns:
\n\n
\n

The generator object.

\n
\n", "signature": "(self, parent=None, key=None, prune=None):", "funcdef": "def"}, "sqlglot.expressions.Expression.bfs": {"fullname": "sqlglot.expressions.Expression.bfs", "modulename": "sqlglot.expressions", "qualname": "Expression.bfs", "kind": "function", "doc": "

Returns a generator object which visits all nodes in this tree in\nthe BFS (Breadth-first) order.

\n\n
Returns:
\n\n
\n

The generator object.

\n
\n", "signature": "(self, prune=None):", "funcdef": "def"}, "sqlglot.expressions.Expression.unnest": {"fullname": "sqlglot.expressions.Expression.unnest", "modulename": "sqlglot.expressions", "qualname": "Expression.unnest", "kind": "function", "doc": "

Returns the first non parenthesis child or self.

\n", "signature": "(self):", "funcdef": "def"}, "sqlglot.expressions.Expression.unalias": {"fullname": "sqlglot.expressions.Expression.unalias", "modulename": "sqlglot.expressions", "qualname": "Expression.unalias", "kind": "function", "doc": "

Returns the inner expression if this is an Alias.

\n", "signature": "(self):", "funcdef": "def"}, "sqlglot.expressions.Expression.unnest_operands": {"fullname": "sqlglot.expressions.Expression.unnest_operands", "modulename": "sqlglot.expressions", "qualname": "Expression.unnest_operands", "kind": "function", "doc": "

Returns unnested operands as a tuple.

\n", "signature": "(self):", "funcdef": "def"}, "sqlglot.expressions.Expression.flatten": {"fullname": "sqlglot.expressions.Expression.flatten", "modulename": "sqlglot.expressions", "qualname": "Expression.flatten", "kind": "function", "doc": "

Returns a generator which yields child nodes who's parents are the same class.

\n\n

A AND B AND C -> [A, B, C]

\n", "signature": "(self, unnest=True):", "funcdef": "def"}, "sqlglot.expressions.Expression.sql": {"fullname": "sqlglot.expressions.Expression.sql", "modulename": "sqlglot.expressions", "qualname": "Expression.sql", "kind": "function", "doc": "

Returns SQL string representation of this tree.

\n\n
Arguments:
\n\n
    \n
  • dialect: the dialect of the output SQL string (eg. \"spark\", \"hive\", \"presto\", \"mysql\").
  • \n
  • opts: other sqlglot.generator.Generator options.
  • \n
\n\n
Returns:
\n\n
\n

The SQL string.

\n
\n", "signature": "(\tself,\tdialect: Union[str, sqlglot.dialects.dialect.Dialect, Type[sqlglot.dialects.dialect.Dialect], NoneType] = None,\t**opts) -> str:", "funcdef": "def"}, "sqlglot.expressions.Expression.transform": {"fullname": "sqlglot.expressions.Expression.transform", "modulename": "sqlglot.expressions", "qualname": "Expression.transform", "kind": "function", "doc": "

Recursively visits all tree nodes (excluding already transformed ones)\nand applies the given transformation function to each node.

\n\n
Arguments:
\n\n
    \n
  • fun (function): a function which takes a node as an argument and returns a\nnew transformed node or the same node without modifications. If the function\nreturns None, then the corresponding node will be removed from the syntax tree.
  • \n
  • copy (bool): if set to True a new tree instance is constructed, otherwise the tree is\nmodified in place.
  • \n
\n\n
Returns:
\n\n
\n

The transformed tree.

\n
\n", "signature": "(self, fun, *args, copy=True, **kwargs):", "funcdef": "def"}, "sqlglot.expressions.Expression.replace": {"fullname": "sqlglot.expressions.Expression.replace", "modulename": "sqlglot.expressions", "qualname": "Expression.replace", "kind": "function", "doc": "

Swap out this expression with a new expression.

\n\n

For example::

\n\n
>>> tree = Select().select(\"x\").from_(\"tbl\")\n>>> tree.find(Column).replace(Column(this=\"y\"))\n(COLUMN this: y)\n>>> tree.sql()\n'SELECT y FROM tbl'\n
\n\n
Arguments:
\n\n
    \n
  • expression (Expression|None): new node
  • \n
\n\n
Returns:
\n\n
\n

The new expression or expressions.

\n
\n", "signature": "(self, expression):", "funcdef": "def"}, "sqlglot.expressions.Expression.pop": {"fullname": "sqlglot.expressions.Expression.pop", "modulename": "sqlglot.expressions", "qualname": "Expression.pop", "kind": "function", "doc": "

Remove this expression from its AST.

\n\n
Returns:
\n\n
\n

The popped expression.

\n
\n", "signature": "(self):", "funcdef": "def"}, "sqlglot.expressions.Expression.assert_is": {"fullname": "sqlglot.expressions.Expression.assert_is", "modulename": "sqlglot.expressions", "qualname": "Expression.assert_is", "kind": "function", "doc": "

Assert that this Expression is an instance of type_.

\n\n

If it is NOT an instance of type_, this raises an assertion error.\nOtherwise, this returns this expression.

\n\n
Examples:
\n\n
\n

This is useful for type security in chained expressions:

\n \n
\n
>>> import sqlglot\n>>> sqlglot.parse_one("SELECT x from y").assert_is(Select).select("z").sql()\n'SELECT x, z FROM y'\n
\n
\n
\n", "signature": "(self, type_):", "funcdef": "def"}, "sqlglot.expressions.Expression.error_messages": {"fullname": "sqlglot.expressions.Expression.error_messages", "modulename": "sqlglot.expressions", "qualname": "Expression.error_messages", "kind": "function", "doc": "

Checks if this expression is valid (e.g. all mandatory args are set).

\n\n
Arguments:
\n\n
    \n
  • args: a sequence of values that were used to instantiate a Func expression. This is used\nto check that the provided arguments don't exceed the function argument limit.
  • \n
\n\n
Returns:
\n\n
\n

A list of error messages for all possible errors that were found.

\n
\n", "signature": "(self, args: Optional[Sequence] = None) -> List[str]:", "funcdef": "def"}, "sqlglot.expressions.Expression.dump": {"fullname": "sqlglot.expressions.Expression.dump", "modulename": "sqlglot.expressions", "qualname": "Expression.dump", "kind": "function", "doc": "

Dump this Expression to a JSON-serializable dict.

\n", "signature": "(self):", "funcdef": "def"}, "sqlglot.expressions.Expression.load": {"fullname": "sqlglot.expressions.Expression.load", "modulename": "sqlglot.expressions", "qualname": "Expression.load", "kind": "function", "doc": "

Load a dict (as returned by Expression.dump) into an Expression instance.

\n", "signature": "(cls, obj):", "funcdef": "def"}, "sqlglot.expressions.Condition": {"fullname": "sqlglot.expressions.Condition", "modulename": "sqlglot.expressions", "qualname": "Condition", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Condition.and_": {"fullname": "sqlglot.expressions.Condition.and_", "modulename": "sqlglot.expressions", "qualname": "Condition.and_", "kind": "function", "doc": "

AND this condition with one or multiple expressions.

\n\n
Example:
\n\n
\n
\n
>>> condition("x=1").and_("y=1").sql()\n'x = 1 AND y = 1'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • *expressions (str | Expression): the SQL code strings to parse.\nIf an Expression instance is passed, it will be used as-is.
  • \n
  • dialect (str): the dialect used to parse the input expression.
  • \n
  • opts (kwargs): other options to use to parse the input expressions.
  • \n
\n\n
Returns:
\n\n
\n

And: the new condition.

\n
\n", "signature": "(self, *expressions, dialect=None, **opts):", "funcdef": "def"}, "sqlglot.expressions.Condition.or_": {"fullname": "sqlglot.expressions.Condition.or_", "modulename": "sqlglot.expressions", "qualname": "Condition.or_", "kind": "function", "doc": "

OR this condition with one or multiple expressions.

\n\n
Example:
\n\n
\n
\n
>>> condition("x=1").or_("y=1").sql()\n'x = 1 OR y = 1'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • *expressions (str | Expression): the SQL code strings to parse.\nIf an Expression instance is passed, it will be used as-is.
  • \n
  • dialect (str): the dialect used to parse the input expression.
  • \n
  • opts (kwargs): other options to use to parse the input expressions.
  • \n
\n\n
Returns:
\n\n
\n

Or: the new condition.

\n
\n", "signature": "(self, *expressions, dialect=None, **opts):", "funcdef": "def"}, "sqlglot.expressions.Condition.not_": {"fullname": "sqlglot.expressions.Condition.not_", "modulename": "sqlglot.expressions", "qualname": "Condition.not_", "kind": "function", "doc": "

Wrap this condition with NOT.

\n\n
Example:
\n\n
\n
\n
>>> condition("x=1").not_().sql()\n'NOT x = 1'\n
\n
\n
\n\n
Returns:
\n\n
\n

Not: the new condition.

\n
\n", "signature": "(self):", "funcdef": "def"}, "sqlglot.expressions.Predicate": {"fullname": "sqlglot.expressions.Predicate", "modulename": "sqlglot.expressions", "qualname": "Predicate", "kind": "class", "doc": "

Relationships like x = y, x > 1, x >= y.

\n", "bases": "Condition"}, "sqlglot.expressions.DerivedTable": {"fullname": "sqlglot.expressions.DerivedTable", "modulename": "sqlglot.expressions", "qualname": "DerivedTable", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Unionable": {"fullname": "sqlglot.expressions.Unionable", "modulename": "sqlglot.expressions", "qualname": "Unionable", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Unionable.union": {"fullname": "sqlglot.expressions.Unionable.union", "modulename": "sqlglot.expressions", "qualname": "Unionable.union", "kind": "function", "doc": "

Builds a UNION expression.

\n\n
Example:
\n\n
\n
\n
>>> import sqlglot\n>>> sqlglot.parse_one("SELECT * FROM foo").union("SELECT * FROM bla").sql()\n'SELECT * FROM foo UNION SELECT * FROM bla'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • expression (str | Expression): the SQL code string.\nIf an Expression instance is passed, it will be used as-is.
  • \n
  • distinct (bool): set the DISTINCT flag if and only if this is true.
  • \n
  • dialect (str): the dialect used to parse the input expression.
  • \n
  • opts (kwargs): other options to use to parse the input expressions.
  • \n
\n\n
Returns:
\n\n
\n

Union: the Union expression.

\n
\n", "signature": "(self, expression, distinct=True, dialect=None, **opts):", "funcdef": "def"}, "sqlglot.expressions.Unionable.intersect": {"fullname": "sqlglot.expressions.Unionable.intersect", "modulename": "sqlglot.expressions", "qualname": "Unionable.intersect", "kind": "function", "doc": "

Builds an INTERSECT expression.

\n\n
Example:
\n\n
\n
\n
>>> import sqlglot\n>>> sqlglot.parse_one("SELECT * FROM foo").intersect("SELECT * FROM bla").sql()\n'SELECT * FROM foo INTERSECT SELECT * FROM bla'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • expression (str | Expression): the SQL code string.\nIf an Expression instance is passed, it will be used as-is.
  • \n
  • distinct (bool): set the DISTINCT flag if and only if this is true.
  • \n
  • dialect (str): the dialect used to parse the input expression.
  • \n
  • opts (kwargs): other options to use to parse the input expressions.
  • \n
\n\n
Returns:
\n\n
\n

Intersect: the Intersect expression

\n
\n", "signature": "(self, expression, distinct=True, dialect=None, **opts):", "funcdef": "def"}, "sqlglot.expressions.Unionable.except_": {"fullname": "sqlglot.expressions.Unionable.except_", "modulename": "sqlglot.expressions", "qualname": "Unionable.except_", "kind": "function", "doc": "

Builds an EXCEPT expression.

\n\n
Example:
\n\n
\n
\n
>>> import sqlglot\n>>> sqlglot.parse_one("SELECT * FROM foo").except_("SELECT * FROM bla").sql()\n'SELECT * FROM foo EXCEPT SELECT * FROM bla'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • expression (str | Expression): the SQL code string.\nIf an Expression instance is passed, it will be used as-is.
  • \n
  • distinct (bool): set the DISTINCT flag if and only if this is true.
  • \n
  • dialect (str): the dialect used to parse the input expression.
  • \n
  • opts (kwargs): other options to use to parse the input expressions.
  • \n
\n\n
Returns:
\n\n
\n

Except: the Except expression

\n
\n", "signature": "(self, expression, distinct=True, dialect=None, **opts):", "funcdef": "def"}, "sqlglot.expressions.UDTF": {"fullname": "sqlglot.expressions.UDTF", "modulename": "sqlglot.expressions", "qualname": "UDTF", "kind": "class", "doc": "

\n", "bases": "DerivedTable, Unionable"}, "sqlglot.expressions.Cache": {"fullname": "sqlglot.expressions.Cache", "modulename": "sqlglot.expressions", "qualname": "Cache", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Uncache": {"fullname": "sqlglot.expressions.Uncache", "modulename": "sqlglot.expressions", "qualname": "Uncache", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Create": {"fullname": "sqlglot.expressions.Create", "modulename": "sqlglot.expressions", "qualname": "Create", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Describe": {"fullname": "sqlglot.expressions.Describe", "modulename": "sqlglot.expressions", "qualname": "Describe", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Pragma": {"fullname": "sqlglot.expressions.Pragma", "modulename": "sqlglot.expressions", "qualname": "Pragma", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Set": {"fullname": "sqlglot.expressions.Set", "modulename": "sqlglot.expressions", "qualname": "Set", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.SetItem": {"fullname": "sqlglot.expressions.SetItem", "modulename": "sqlglot.expressions", "qualname": "SetItem", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Show": {"fullname": "sqlglot.expressions.Show", "modulename": "sqlglot.expressions", "qualname": "Show", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.UserDefinedFunction": {"fullname": "sqlglot.expressions.UserDefinedFunction", "modulename": "sqlglot.expressions", "qualname": "UserDefinedFunction", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.CharacterSet": {"fullname": "sqlglot.expressions.CharacterSet", "modulename": "sqlglot.expressions", "qualname": "CharacterSet", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.With": {"fullname": "sqlglot.expressions.With", "modulename": "sqlglot.expressions", "qualname": "With", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.WithinGroup": {"fullname": "sqlglot.expressions.WithinGroup", "modulename": "sqlglot.expressions", "qualname": "WithinGroup", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.CTE": {"fullname": "sqlglot.expressions.CTE", "modulename": "sqlglot.expressions", "qualname": "CTE", "kind": "class", "doc": "

\n", "bases": "DerivedTable"}, "sqlglot.expressions.TableAlias": {"fullname": "sqlglot.expressions.TableAlias", "modulename": "sqlglot.expressions", "qualname": "TableAlias", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.BitString": {"fullname": "sqlglot.expressions.BitString", "modulename": "sqlglot.expressions", "qualname": "BitString", "kind": "class", "doc": "

\n", "bases": "Condition"}, "sqlglot.expressions.HexString": {"fullname": "sqlglot.expressions.HexString", "modulename": "sqlglot.expressions", "qualname": "HexString", "kind": "class", "doc": "

\n", "bases": "Condition"}, "sqlglot.expressions.ByteString": {"fullname": "sqlglot.expressions.ByteString", "modulename": "sqlglot.expressions", "qualname": "ByteString", "kind": "class", "doc": "

\n", "bases": "Condition"}, "sqlglot.expressions.Column": {"fullname": "sqlglot.expressions.Column", "modulename": "sqlglot.expressions", "qualname": "Column", "kind": "class", "doc": "

\n", "bases": "Condition"}, "sqlglot.expressions.Column.output_name": {"fullname": "sqlglot.expressions.Column.output_name", "modulename": "sqlglot.expressions", "qualname": "Column.output_name", "kind": "variable", "doc": "

Name of the output column if this expression is a selection.

\n\n

If the Expression has no output name, an empty string is returned.

\n\n
Example:
\n\n
\n
\n
>>> from sqlglot import parse_one\n>>> parse_one("SELECT a").expressions[0].output_name\n'a'\n>>> parse_one("SELECT b AS c").expressions[0].output_name\n'c'\n>>> parse_one("SELECT 1 + 2").expressions[0].output_name\n''\n
\n
\n
\n", "annotation": ": str"}, "sqlglot.expressions.Column.parts": {"fullname": "sqlglot.expressions.Column.parts", "modulename": "sqlglot.expressions", "qualname": "Column.parts", "kind": "variable", "doc": "

Return the parts of a column in order catalog, db, table, name.

\n", "annotation": ": List[sqlglot.expressions.Identifier]"}, "sqlglot.expressions.Column.to_dot": {"fullname": "sqlglot.expressions.Column.to_dot", "modulename": "sqlglot.expressions", "qualname": "Column.to_dot", "kind": "function", "doc": "

Converts the column into a dot expression.

\n", "signature": "(self) -> sqlglot.expressions.Dot:", "funcdef": "def"}, "sqlglot.expressions.ColumnPosition": {"fullname": "sqlglot.expressions.ColumnPosition", "modulename": "sqlglot.expressions", "qualname": "ColumnPosition", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.ColumnDef": {"fullname": "sqlglot.expressions.ColumnDef", "modulename": "sqlglot.expressions", "qualname": "ColumnDef", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.AlterColumn": {"fullname": "sqlglot.expressions.AlterColumn", "modulename": "sqlglot.expressions", "qualname": "AlterColumn", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.RenameTable": {"fullname": "sqlglot.expressions.RenameTable", "modulename": "sqlglot.expressions", "qualname": "RenameTable", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.SetTag": {"fullname": "sqlglot.expressions.SetTag", "modulename": "sqlglot.expressions", "qualname": "SetTag", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Comment": {"fullname": "sqlglot.expressions.Comment", "modulename": "sqlglot.expressions", "qualname": "Comment", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.ColumnConstraint": {"fullname": "sqlglot.expressions.ColumnConstraint", "modulename": "sqlglot.expressions", "qualname": "ColumnConstraint", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.ColumnConstraintKind": {"fullname": "sqlglot.expressions.ColumnConstraintKind", "modulename": "sqlglot.expressions", "qualname": "ColumnConstraintKind", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.AutoIncrementColumnConstraint": {"fullname": "sqlglot.expressions.AutoIncrementColumnConstraint", "modulename": "sqlglot.expressions", "qualname": "AutoIncrementColumnConstraint", "kind": "class", "doc": "

\n", "bases": "ColumnConstraintKind"}, "sqlglot.expressions.CaseSpecificColumnConstraint": {"fullname": "sqlglot.expressions.CaseSpecificColumnConstraint", "modulename": "sqlglot.expressions", "qualname": "CaseSpecificColumnConstraint", "kind": "class", "doc": "

\n", "bases": "ColumnConstraintKind"}, "sqlglot.expressions.CharacterSetColumnConstraint": {"fullname": "sqlglot.expressions.CharacterSetColumnConstraint", "modulename": "sqlglot.expressions", "qualname": "CharacterSetColumnConstraint", "kind": "class", "doc": "

\n", "bases": "ColumnConstraintKind"}, "sqlglot.expressions.CheckColumnConstraint": {"fullname": "sqlglot.expressions.CheckColumnConstraint", "modulename": "sqlglot.expressions", "qualname": "CheckColumnConstraint", "kind": "class", "doc": "

\n", "bases": "ColumnConstraintKind"}, "sqlglot.expressions.CollateColumnConstraint": {"fullname": "sqlglot.expressions.CollateColumnConstraint", "modulename": "sqlglot.expressions", "qualname": "CollateColumnConstraint", "kind": "class", "doc": "

\n", "bases": "ColumnConstraintKind"}, "sqlglot.expressions.CommentColumnConstraint": {"fullname": "sqlglot.expressions.CommentColumnConstraint", "modulename": "sqlglot.expressions", "qualname": "CommentColumnConstraint", "kind": "class", "doc": "

\n", "bases": "ColumnConstraintKind"}, "sqlglot.expressions.CompressColumnConstraint": {"fullname": "sqlglot.expressions.CompressColumnConstraint", "modulename": "sqlglot.expressions", "qualname": "CompressColumnConstraint", "kind": "class", "doc": "

\n", "bases": "ColumnConstraintKind"}, "sqlglot.expressions.DateFormatColumnConstraint": {"fullname": "sqlglot.expressions.DateFormatColumnConstraint", "modulename": "sqlglot.expressions", "qualname": "DateFormatColumnConstraint", "kind": "class", "doc": "

\n", "bases": "ColumnConstraintKind"}, "sqlglot.expressions.DefaultColumnConstraint": {"fullname": "sqlglot.expressions.DefaultColumnConstraint", "modulename": "sqlglot.expressions", "qualname": "DefaultColumnConstraint", "kind": "class", "doc": "

\n", "bases": "ColumnConstraintKind"}, "sqlglot.expressions.EncodeColumnConstraint": {"fullname": "sqlglot.expressions.EncodeColumnConstraint", "modulename": "sqlglot.expressions", "qualname": "EncodeColumnConstraint", "kind": "class", "doc": "

\n", "bases": "ColumnConstraintKind"}, "sqlglot.expressions.GeneratedAsIdentityColumnConstraint": {"fullname": "sqlglot.expressions.GeneratedAsIdentityColumnConstraint", "modulename": "sqlglot.expressions", "qualname": "GeneratedAsIdentityColumnConstraint", "kind": "class", "doc": "

\n", "bases": "ColumnConstraintKind"}, "sqlglot.expressions.InlineLengthColumnConstraint": {"fullname": "sqlglot.expressions.InlineLengthColumnConstraint", "modulename": "sqlglot.expressions", "qualname": "InlineLengthColumnConstraint", "kind": "class", "doc": "

\n", "bases": "ColumnConstraintKind"}, "sqlglot.expressions.NotNullColumnConstraint": {"fullname": "sqlglot.expressions.NotNullColumnConstraint", "modulename": "sqlglot.expressions", "qualname": "NotNullColumnConstraint", "kind": "class", "doc": "

\n", "bases": "ColumnConstraintKind"}, "sqlglot.expressions.PrimaryKeyColumnConstraint": {"fullname": "sqlglot.expressions.PrimaryKeyColumnConstraint", "modulename": "sqlglot.expressions", "qualname": "PrimaryKeyColumnConstraint", "kind": "class", "doc": "

\n", "bases": "ColumnConstraintKind"}, "sqlglot.expressions.TitleColumnConstraint": {"fullname": "sqlglot.expressions.TitleColumnConstraint", "modulename": "sqlglot.expressions", "qualname": "TitleColumnConstraint", "kind": "class", "doc": "

\n", "bases": "ColumnConstraintKind"}, "sqlglot.expressions.UniqueColumnConstraint": {"fullname": "sqlglot.expressions.UniqueColumnConstraint", "modulename": "sqlglot.expressions", "qualname": "UniqueColumnConstraint", "kind": "class", "doc": "

\n", "bases": "ColumnConstraintKind"}, "sqlglot.expressions.UppercaseColumnConstraint": {"fullname": "sqlglot.expressions.UppercaseColumnConstraint", "modulename": "sqlglot.expressions", "qualname": "UppercaseColumnConstraint", "kind": "class", "doc": "

\n", "bases": "ColumnConstraintKind"}, "sqlglot.expressions.PathColumnConstraint": {"fullname": "sqlglot.expressions.PathColumnConstraint", "modulename": "sqlglot.expressions", "qualname": "PathColumnConstraint", "kind": "class", "doc": "

\n", "bases": "ColumnConstraintKind"}, "sqlglot.expressions.Constraint": {"fullname": "sqlglot.expressions.Constraint", "modulename": "sqlglot.expressions", "qualname": "Constraint", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Delete": {"fullname": "sqlglot.expressions.Delete", "modulename": "sqlglot.expressions", "qualname": "Delete", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Delete.delete": {"fullname": "sqlglot.expressions.Delete.delete", "modulename": "sqlglot.expressions", "qualname": "Delete.delete", "kind": "function", "doc": "

Create a DELETE expression or replace the table on an existing DELETE expression.

\n\n
Example:
\n\n
\n
\n
>>> delete("tbl").sql()\n'DELETE FROM tbl'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • table: the table from which to delete.
  • \n
  • dialect: the dialect used to parse the input expression.
  • \n
  • copy: if False, modify this expression instance in-place.
  • \n
  • opts: other options to use to parse the input expressions.
  • \n
\n\n
Returns:
\n\n
\n

Delete: the modified expression.

\n
\n", "signature": "(\tself,\ttable: Union[str, sqlglot.expressions.Expression],\tdialect: Union[str, sqlglot.dialects.dialect.Dialect, Type[sqlglot.dialects.dialect.Dialect], NoneType] = None,\tcopy: bool = True,\t**opts) -> sqlglot.expressions.Delete:", "funcdef": "def"}, "sqlglot.expressions.Delete.where": {"fullname": "sqlglot.expressions.Delete.where", "modulename": "sqlglot.expressions", "qualname": "Delete.where", "kind": "function", "doc": "

Append to or set the WHERE expressions.

\n\n
Example:
\n\n
\n
\n
>>> delete("tbl").where("x = 'a' OR x < 'b'").sql()\n"DELETE FROM tbl WHERE x = 'a' OR x < 'b'"\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • *expressions: the SQL code strings to parse.\nIf an Expression instance is passed, it will be used as-is.\nMultiple expressions are combined with an AND operator.
  • \n
  • append: if True, AND the new expressions to any existing expression.\nOtherwise, this resets the expression.
  • \n
  • dialect: the dialect used to parse the input expressions.
  • \n
  • copy: if False, modify this expression instance in-place.
  • \n
  • opts: other options to use to parse the input expressions.
  • \n
\n\n
Returns:
\n\n
\n

Delete: the modified expression.

\n
\n", "signature": "(\tself,\t*expressions: Union[str, sqlglot.expressions.Expression],\tappend: bool = True,\tdialect: Union[str, sqlglot.dialects.dialect.Dialect, Type[sqlglot.dialects.dialect.Dialect], NoneType] = None,\tcopy: bool = True,\t**opts) -> sqlglot.expressions.Delete:", "funcdef": "def"}, "sqlglot.expressions.Delete.returning": {"fullname": "sqlglot.expressions.Delete.returning", "modulename": "sqlglot.expressions", "qualname": "Delete.returning", "kind": "function", "doc": "

Set the RETURNING expression. Not supported by all dialects.

\n\n
Example:
\n\n
\n
\n
>>> delete("tbl").returning("*", dialect="postgres").sql()\n'DELETE FROM tbl RETURNING *'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • expression: the SQL code strings to parse.\nIf an Expression instance is passed, it will be used as-is.
  • \n
  • dialect: the dialect used to parse the input expressions.
  • \n
  • copy: if False, modify this expression instance in-place.
  • \n
  • opts: other options to use to parse the input expressions.
  • \n
\n\n
Returns:
\n\n
\n

Delete: the modified expression.

\n
\n", "signature": "(\tself,\texpression: Union[str, sqlglot.expressions.Expression],\tdialect: Union[str, sqlglot.dialects.dialect.Dialect, Type[sqlglot.dialects.dialect.Dialect], NoneType] = None,\tcopy: bool = True,\t**opts) -> sqlglot.expressions.Delete:", "funcdef": "def"}, "sqlglot.expressions.Drop": {"fullname": "sqlglot.expressions.Drop", "modulename": "sqlglot.expressions", "qualname": "Drop", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Filter": {"fullname": "sqlglot.expressions.Filter", "modulename": "sqlglot.expressions", "qualname": "Filter", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Check": {"fullname": "sqlglot.expressions.Check", "modulename": "sqlglot.expressions", "qualname": "Check", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Directory": {"fullname": "sqlglot.expressions.Directory", "modulename": "sqlglot.expressions", "qualname": "Directory", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.ForeignKey": {"fullname": "sqlglot.expressions.ForeignKey", "modulename": "sqlglot.expressions", "qualname": "ForeignKey", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.PrimaryKey": {"fullname": "sqlglot.expressions.PrimaryKey", "modulename": "sqlglot.expressions", "qualname": "PrimaryKey", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Unique": {"fullname": "sqlglot.expressions.Unique", "modulename": "sqlglot.expressions", "qualname": "Unique", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Into": {"fullname": "sqlglot.expressions.Into", "modulename": "sqlglot.expressions", "qualname": "Into", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.From": {"fullname": "sqlglot.expressions.From", "modulename": "sqlglot.expressions", "qualname": "From", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Having": {"fullname": "sqlglot.expressions.Having", "modulename": "sqlglot.expressions", "qualname": "Having", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Hint": {"fullname": "sqlglot.expressions.Hint", "modulename": "sqlglot.expressions", "qualname": "Hint", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.JoinHint": {"fullname": "sqlglot.expressions.JoinHint", "modulename": "sqlglot.expressions", "qualname": "JoinHint", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Identifier": {"fullname": "sqlglot.expressions.Identifier", "modulename": "sqlglot.expressions", "qualname": "Identifier", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Identifier.output_name": {"fullname": "sqlglot.expressions.Identifier.output_name", "modulename": "sqlglot.expressions", "qualname": "Identifier.output_name", "kind": "variable", "doc": "

Name of the output column if this expression is a selection.

\n\n

If the Expression has no output name, an empty string is returned.

\n\n
Example:
\n\n
\n
\n
>>> from sqlglot import parse_one\n>>> parse_one("SELECT a").expressions[0].output_name\n'a'\n>>> parse_one("SELECT b AS c").expressions[0].output_name\n'c'\n>>> parse_one("SELECT 1 + 2").expressions[0].output_name\n''\n
\n
\n
\n"}, "sqlglot.expressions.Index": {"fullname": "sqlglot.expressions.Index", "modulename": "sqlglot.expressions", "qualname": "Index", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Insert": {"fullname": "sqlglot.expressions.Insert", "modulename": "sqlglot.expressions", "qualname": "Insert", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Returning": {"fullname": "sqlglot.expressions.Returning", "modulename": "sqlglot.expressions", "qualname": "Returning", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Introducer": {"fullname": "sqlglot.expressions.Introducer", "modulename": "sqlglot.expressions", "qualname": "Introducer", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.National": {"fullname": "sqlglot.expressions.National", "modulename": "sqlglot.expressions", "qualname": "National", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.LoadData": {"fullname": "sqlglot.expressions.LoadData", "modulename": "sqlglot.expressions", "qualname": "LoadData", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Partition": {"fullname": "sqlglot.expressions.Partition", "modulename": "sqlglot.expressions", "qualname": "Partition", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Fetch": {"fullname": "sqlglot.expressions.Fetch", "modulename": "sqlglot.expressions", "qualname": "Fetch", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Group": {"fullname": "sqlglot.expressions.Group", "modulename": "sqlglot.expressions", "qualname": "Group", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Lambda": {"fullname": "sqlglot.expressions.Lambda", "modulename": "sqlglot.expressions", "qualname": "Lambda", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Limit": {"fullname": "sqlglot.expressions.Limit", "modulename": "sqlglot.expressions", "qualname": "Limit", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Literal": {"fullname": "sqlglot.expressions.Literal", "modulename": "sqlglot.expressions", "qualname": "Literal", "kind": "class", "doc": "

\n", "bases": "Condition"}, "sqlglot.expressions.Literal.number": {"fullname": "sqlglot.expressions.Literal.number", "modulename": "sqlglot.expressions", "qualname": "Literal.number", "kind": "function", "doc": "

\n", "signature": "(cls, number) -> sqlglot.expressions.Literal:", "funcdef": "def"}, "sqlglot.expressions.Literal.string": {"fullname": "sqlglot.expressions.Literal.string", "modulename": "sqlglot.expressions", "qualname": "Literal.string", "kind": "function", "doc": "

\n", "signature": "(cls, string) -> sqlglot.expressions.Literal:", "funcdef": "def"}, "sqlglot.expressions.Literal.output_name": {"fullname": "sqlglot.expressions.Literal.output_name", "modulename": "sqlglot.expressions", "qualname": "Literal.output_name", "kind": "variable", "doc": "

Name of the output column if this expression is a selection.

\n\n

If the Expression has no output name, an empty string is returned.

\n\n
Example:
\n\n
\n
\n
>>> from sqlglot import parse_one\n>>> parse_one("SELECT a").expressions[0].output_name\n'a'\n>>> parse_one("SELECT b AS c").expressions[0].output_name\n'c'\n>>> parse_one("SELECT 1 + 2").expressions[0].output_name\n''\n
\n
\n
\n"}, "sqlglot.expressions.Join": {"fullname": "sqlglot.expressions.Join", "modulename": "sqlglot.expressions", "qualname": "Join", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Join.on": {"fullname": "sqlglot.expressions.Join.on", "modulename": "sqlglot.expressions", "qualname": "Join.on", "kind": "function", "doc": "

Append to or set the ON expressions.

\n\n
Example:
\n\n
\n
\n
>>> import sqlglot\n>>> sqlglot.parse_one("JOIN x", into=Join).on("y = 1").sql()\n'JOIN x ON y = 1'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • *expressions (str | Expression): the SQL code strings to parse.\nIf an Expression instance is passed, it will be used as-is.\nMultiple expressions are combined with an AND operator.
  • \n
  • append (bool): if True, AND the new expressions to any existing expression.\nOtherwise, this resets the expression.
  • \n
  • dialect (str): the dialect used to parse the input expressions.
  • \n
  • copy (bool): if False, modify this expression instance in-place.
  • \n
  • opts (kwargs): other options to use to parse the input expressions.
  • \n
\n\n
Returns:
\n\n
\n

Join: the modified join expression.

\n
\n", "signature": "(self, *expressions, append=True, dialect=None, copy=True, **opts):", "funcdef": "def"}, "sqlglot.expressions.Join.using": {"fullname": "sqlglot.expressions.Join.using", "modulename": "sqlglot.expressions", "qualname": "Join.using", "kind": "function", "doc": "

Append to or set the USING expressions.

\n\n
Example:
\n\n
\n
\n
>>> import sqlglot\n>>> sqlglot.parse_one("JOIN x", into=Join).using("foo", "bla").sql()\n'JOIN x USING (foo, bla)'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • *expressions (str | Expression): the SQL code strings to parse.\nIf an Expression instance is passed, it will be used as-is.
  • \n
  • append (bool): if True, concatenate the new expressions to the existing \"using\" list.\nOtherwise, this resets the expression.
  • \n
  • dialect (str): the dialect used to parse the input expressions.
  • \n
  • copy (bool): if False, modify this expression instance in-place.
  • \n
  • opts (kwargs): other options to use to parse the input expressions.
  • \n
\n\n
Returns:
\n\n
\n

Join: the modified join expression.

\n
\n", "signature": "(self, *expressions, append=True, dialect=None, copy=True, **opts):", "funcdef": "def"}, "sqlglot.expressions.Lateral": {"fullname": "sqlglot.expressions.Lateral", "modulename": "sqlglot.expressions", "qualname": "Lateral", "kind": "class", "doc": "

\n", "bases": "UDTF"}, "sqlglot.expressions.MatchRecognize": {"fullname": "sqlglot.expressions.MatchRecognize", "modulename": "sqlglot.expressions", "qualname": "MatchRecognize", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Final": {"fullname": "sqlglot.expressions.Final", "modulename": "sqlglot.expressions", "qualname": "Final", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Offset": {"fullname": "sqlglot.expressions.Offset", "modulename": "sqlglot.expressions", "qualname": "Offset", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Order": {"fullname": "sqlglot.expressions.Order", "modulename": "sqlglot.expressions", "qualname": "Order", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Cluster": {"fullname": "sqlglot.expressions.Cluster", "modulename": "sqlglot.expressions", "qualname": "Cluster", "kind": "class", "doc": "

\n", "bases": "Order"}, "sqlglot.expressions.Distribute": {"fullname": "sqlglot.expressions.Distribute", "modulename": "sqlglot.expressions", "qualname": "Distribute", "kind": "class", "doc": "

\n", "bases": "Order"}, "sqlglot.expressions.Sort": {"fullname": "sqlglot.expressions.Sort", "modulename": "sqlglot.expressions", "qualname": "Sort", "kind": "class", "doc": "

\n", "bases": "Order"}, "sqlglot.expressions.Ordered": {"fullname": "sqlglot.expressions.Ordered", "modulename": "sqlglot.expressions", "qualname": "Ordered", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Property": {"fullname": "sqlglot.expressions.Property", "modulename": "sqlglot.expressions", "qualname": "Property", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.AfterJournalProperty": {"fullname": "sqlglot.expressions.AfterJournalProperty", "modulename": "sqlglot.expressions", "qualname": "AfterJournalProperty", "kind": "class", "doc": "

\n", "bases": "Property"}, "sqlglot.expressions.AlgorithmProperty": {"fullname": "sqlglot.expressions.AlgorithmProperty", "modulename": "sqlglot.expressions", "qualname": "AlgorithmProperty", "kind": "class", "doc": "

\n", "bases": "Property"}, "sqlglot.expressions.AutoIncrementProperty": {"fullname": "sqlglot.expressions.AutoIncrementProperty", "modulename": "sqlglot.expressions", "qualname": "AutoIncrementProperty", "kind": "class", "doc": "

\n", "bases": "Property"}, "sqlglot.expressions.BlockCompressionProperty": {"fullname": "sqlglot.expressions.BlockCompressionProperty", "modulename": "sqlglot.expressions", "qualname": "BlockCompressionProperty", "kind": "class", "doc": "

\n", "bases": "Property"}, "sqlglot.expressions.CharacterSetProperty": {"fullname": "sqlglot.expressions.CharacterSetProperty", "modulename": "sqlglot.expressions", "qualname": "CharacterSetProperty", "kind": "class", "doc": "

\n", "bases": "Property"}, "sqlglot.expressions.ChecksumProperty": {"fullname": "sqlglot.expressions.ChecksumProperty", "modulename": "sqlglot.expressions", "qualname": "ChecksumProperty", "kind": "class", "doc": "

\n", "bases": "Property"}, "sqlglot.expressions.CollateProperty": {"fullname": "sqlglot.expressions.CollateProperty", "modulename": "sqlglot.expressions", "qualname": "CollateProperty", "kind": "class", "doc": "

\n", "bases": "Property"}, "sqlglot.expressions.DataBlocksizeProperty": {"fullname": "sqlglot.expressions.DataBlocksizeProperty", "modulename": "sqlglot.expressions", "qualname": "DataBlocksizeProperty", "kind": "class", "doc": "

\n", "bases": "Property"}, "sqlglot.expressions.DefinerProperty": {"fullname": "sqlglot.expressions.DefinerProperty", "modulename": "sqlglot.expressions", "qualname": "DefinerProperty", "kind": "class", "doc": "

\n", "bases": "Property"}, "sqlglot.expressions.DistKeyProperty": {"fullname": "sqlglot.expressions.DistKeyProperty", "modulename": "sqlglot.expressions", "qualname": "DistKeyProperty", "kind": "class", "doc": "

\n", "bases": "Property"}, "sqlglot.expressions.DistStyleProperty": {"fullname": "sqlglot.expressions.DistStyleProperty", "modulename": "sqlglot.expressions", "qualname": "DistStyleProperty", "kind": "class", "doc": "

\n", "bases": "Property"}, "sqlglot.expressions.EngineProperty": {"fullname": "sqlglot.expressions.EngineProperty", "modulename": "sqlglot.expressions", "qualname": "EngineProperty", "kind": "class", "doc": "

\n", "bases": "Property"}, "sqlglot.expressions.ExecuteAsProperty": {"fullname": "sqlglot.expressions.ExecuteAsProperty", "modulename": "sqlglot.expressions", "qualname": "ExecuteAsProperty", "kind": "class", "doc": "

\n", "bases": "Property"}, "sqlglot.expressions.ExternalProperty": {"fullname": "sqlglot.expressions.ExternalProperty", "modulename": "sqlglot.expressions", "qualname": "ExternalProperty", "kind": "class", "doc": "

\n", "bases": "Property"}, "sqlglot.expressions.FallbackProperty": {"fullname": "sqlglot.expressions.FallbackProperty", "modulename": "sqlglot.expressions", "qualname": "FallbackProperty", "kind": "class", "doc": "

\n", "bases": "Property"}, "sqlglot.expressions.FileFormatProperty": {"fullname": "sqlglot.expressions.FileFormatProperty", "modulename": "sqlglot.expressions", "qualname": "FileFormatProperty", "kind": "class", "doc": "

\n", "bases": "Property"}, "sqlglot.expressions.FreespaceProperty": {"fullname": "sqlglot.expressions.FreespaceProperty", "modulename": "sqlglot.expressions", "qualname": "FreespaceProperty", "kind": "class", "doc": "

\n", "bases": "Property"}, "sqlglot.expressions.IsolatedLoadingProperty": {"fullname": "sqlglot.expressions.IsolatedLoadingProperty", "modulename": "sqlglot.expressions", "qualname": "IsolatedLoadingProperty", "kind": "class", "doc": "

\n", "bases": "Property"}, "sqlglot.expressions.JournalProperty": {"fullname": "sqlglot.expressions.JournalProperty", "modulename": "sqlglot.expressions", "qualname": "JournalProperty", "kind": "class", "doc": "

\n", "bases": "Property"}, "sqlglot.expressions.LanguageProperty": {"fullname": "sqlglot.expressions.LanguageProperty", "modulename": "sqlglot.expressions", "qualname": "LanguageProperty", "kind": "class", "doc": "

\n", "bases": "Property"}, "sqlglot.expressions.LikeProperty": {"fullname": "sqlglot.expressions.LikeProperty", "modulename": "sqlglot.expressions", "qualname": "LikeProperty", "kind": "class", "doc": "

\n", "bases": "Property"}, "sqlglot.expressions.LocationProperty": {"fullname": "sqlglot.expressions.LocationProperty", "modulename": "sqlglot.expressions", "qualname": "LocationProperty", "kind": "class", "doc": "

\n", "bases": "Property"}, "sqlglot.expressions.LockingProperty": {"fullname": "sqlglot.expressions.LockingProperty", "modulename": "sqlglot.expressions", "qualname": "LockingProperty", "kind": "class", "doc": "

\n", "bases": "Property"}, "sqlglot.expressions.LogProperty": {"fullname": "sqlglot.expressions.LogProperty", "modulename": "sqlglot.expressions", "qualname": "LogProperty", "kind": "class", "doc": "

\n", "bases": "Property"}, "sqlglot.expressions.MaterializedProperty": {"fullname": "sqlglot.expressions.MaterializedProperty", "modulename": "sqlglot.expressions", "qualname": "MaterializedProperty", "kind": "class", "doc": "

\n", "bases": "Property"}, "sqlglot.expressions.MergeBlockRatioProperty": {"fullname": "sqlglot.expressions.MergeBlockRatioProperty", "modulename": "sqlglot.expressions", "qualname": "MergeBlockRatioProperty", "kind": "class", "doc": "

\n", "bases": "Property"}, "sqlglot.expressions.NoPrimaryIndexProperty": {"fullname": "sqlglot.expressions.NoPrimaryIndexProperty", "modulename": "sqlglot.expressions", "qualname": "NoPrimaryIndexProperty", "kind": "class", "doc": "

\n", "bases": "Property"}, "sqlglot.expressions.OnCommitProperty": {"fullname": "sqlglot.expressions.OnCommitProperty", "modulename": "sqlglot.expressions", "qualname": "OnCommitProperty", "kind": "class", "doc": "

\n", "bases": "Property"}, "sqlglot.expressions.PartitionedByProperty": {"fullname": "sqlglot.expressions.PartitionedByProperty", "modulename": "sqlglot.expressions", "qualname": "PartitionedByProperty", "kind": "class", "doc": "

\n", "bases": "Property"}, "sqlglot.expressions.ReturnsProperty": {"fullname": "sqlglot.expressions.ReturnsProperty", "modulename": "sqlglot.expressions", "qualname": "ReturnsProperty", "kind": "class", "doc": "

\n", "bases": "Property"}, "sqlglot.expressions.RowFormatDelimitedProperty": {"fullname": "sqlglot.expressions.RowFormatDelimitedProperty", "modulename": "sqlglot.expressions", "qualname": "RowFormatDelimitedProperty", "kind": "class", "doc": "

\n", "bases": "Property"}, "sqlglot.expressions.RowFormatSerdeProperty": {"fullname": "sqlglot.expressions.RowFormatSerdeProperty", "modulename": "sqlglot.expressions", "qualname": "RowFormatSerdeProperty", "kind": "class", "doc": "

\n", "bases": "Property"}, "sqlglot.expressions.SchemaCommentProperty": {"fullname": "sqlglot.expressions.SchemaCommentProperty", "modulename": "sqlglot.expressions", "qualname": "SchemaCommentProperty", "kind": "class", "doc": "

\n", "bases": "Property"}, "sqlglot.expressions.SerdeProperties": {"fullname": "sqlglot.expressions.SerdeProperties", "modulename": "sqlglot.expressions", "qualname": "SerdeProperties", "kind": "class", "doc": "

\n", "bases": "Property"}, "sqlglot.expressions.SetProperty": {"fullname": "sqlglot.expressions.SetProperty", "modulename": "sqlglot.expressions", "qualname": "SetProperty", "kind": "class", "doc": "

\n", "bases": "Property"}, "sqlglot.expressions.SortKeyProperty": {"fullname": "sqlglot.expressions.SortKeyProperty", "modulename": "sqlglot.expressions", "qualname": "SortKeyProperty", "kind": "class", "doc": "

\n", "bases": "Property"}, "sqlglot.expressions.SqlSecurityProperty": {"fullname": "sqlglot.expressions.SqlSecurityProperty", "modulename": "sqlglot.expressions", "qualname": "SqlSecurityProperty", "kind": "class", "doc": "

\n", "bases": "Property"}, "sqlglot.expressions.TableFormatProperty": {"fullname": "sqlglot.expressions.TableFormatProperty", "modulename": "sqlglot.expressions", "qualname": "TableFormatProperty", "kind": "class", "doc": "

\n", "bases": "Property"}, "sqlglot.expressions.TemporaryProperty": {"fullname": "sqlglot.expressions.TemporaryProperty", "modulename": "sqlglot.expressions", "qualname": "TemporaryProperty", "kind": "class", "doc": "

\n", "bases": "Property"}, "sqlglot.expressions.TransientProperty": {"fullname": "sqlglot.expressions.TransientProperty", "modulename": "sqlglot.expressions", "qualname": "TransientProperty", "kind": "class", "doc": "

\n", "bases": "Property"}, "sqlglot.expressions.VolatilityProperty": {"fullname": "sqlglot.expressions.VolatilityProperty", "modulename": "sqlglot.expressions", "qualname": "VolatilityProperty", "kind": "class", "doc": "

\n", "bases": "Property"}, "sqlglot.expressions.WithDataProperty": {"fullname": "sqlglot.expressions.WithDataProperty", "modulename": "sqlglot.expressions", "qualname": "WithDataProperty", "kind": "class", "doc": "

\n", "bases": "Property"}, "sqlglot.expressions.WithJournalTableProperty": {"fullname": "sqlglot.expressions.WithJournalTableProperty", "modulename": "sqlglot.expressions", "qualname": "WithJournalTableProperty", "kind": "class", "doc": "

\n", "bases": "Property"}, "sqlglot.expressions.Properties": {"fullname": "sqlglot.expressions.Properties", "modulename": "sqlglot.expressions", "qualname": "Properties", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Properties.Location": {"fullname": "sqlglot.expressions.Properties.Location", "modulename": "sqlglot.expressions", "qualname": "Properties.Location", "kind": "class", "doc": "

An enumeration.

\n", "bases": "sqlglot.helper.AutoName"}, "sqlglot.expressions.Properties.Location.POST_CREATE": {"fullname": "sqlglot.expressions.Properties.Location.POST_CREATE", "modulename": "sqlglot.expressions", "qualname": "Properties.Location.POST_CREATE", "kind": "variable", "doc": "

\n", "default_value": "<Location.POST_CREATE: 'POST_CREATE'>"}, "sqlglot.expressions.Properties.Location.POST_NAME": {"fullname": "sqlglot.expressions.Properties.Location.POST_NAME", "modulename": "sqlglot.expressions", "qualname": "Properties.Location.POST_NAME", "kind": "variable", "doc": "

\n", "default_value": "<Location.POST_NAME: 'POST_NAME'>"}, "sqlglot.expressions.Properties.Location.POST_SCHEMA": {"fullname": "sqlglot.expressions.Properties.Location.POST_SCHEMA", "modulename": "sqlglot.expressions", "qualname": "Properties.Location.POST_SCHEMA", "kind": "variable", "doc": "

\n", "default_value": "<Location.POST_SCHEMA: 'POST_SCHEMA'>"}, "sqlglot.expressions.Properties.Location.POST_WITH": {"fullname": "sqlglot.expressions.Properties.Location.POST_WITH", "modulename": "sqlglot.expressions", "qualname": "Properties.Location.POST_WITH", "kind": "variable", "doc": "

\n", "default_value": "<Location.POST_WITH: 'POST_WITH'>"}, "sqlglot.expressions.Properties.Location.POST_ALIAS": {"fullname": "sqlglot.expressions.Properties.Location.POST_ALIAS", "modulename": "sqlglot.expressions", "qualname": "Properties.Location.POST_ALIAS", "kind": "variable", "doc": "

\n", "default_value": "<Location.POST_ALIAS: 'POST_ALIAS'>"}, "sqlglot.expressions.Properties.Location.POST_EXPRESSION": {"fullname": "sqlglot.expressions.Properties.Location.POST_EXPRESSION", "modulename": "sqlglot.expressions", "qualname": "Properties.Location.POST_EXPRESSION", "kind": "variable", "doc": "

\n", "default_value": "<Location.POST_EXPRESSION: 'POST_EXPRESSION'>"}, "sqlglot.expressions.Properties.Location.POST_INDEX": {"fullname": "sqlglot.expressions.Properties.Location.POST_INDEX", "modulename": "sqlglot.expressions", "qualname": "Properties.Location.POST_INDEX", "kind": "variable", "doc": "

\n", "default_value": "<Location.POST_INDEX: 'POST_INDEX'>"}, "sqlglot.expressions.Properties.Location.UNSUPPORTED": {"fullname": "sqlglot.expressions.Properties.Location.UNSUPPORTED", "modulename": "sqlglot.expressions", "qualname": "Properties.Location.UNSUPPORTED", "kind": "variable", "doc": "

\n", "default_value": "<Location.UNSUPPORTED: 'UNSUPPORTED'>"}, "sqlglot.expressions.Properties.from_dict": {"fullname": "sqlglot.expressions.Properties.from_dict", "modulename": "sqlglot.expressions", "qualname": "Properties.from_dict", "kind": "function", "doc": "

\n", "signature": "(cls, properties_dict) -> sqlglot.expressions.Properties:", "funcdef": "def"}, "sqlglot.expressions.Qualify": {"fullname": "sqlglot.expressions.Qualify", "modulename": "sqlglot.expressions", "qualname": "Qualify", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Return": {"fullname": "sqlglot.expressions.Return", "modulename": "sqlglot.expressions", "qualname": "Return", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Reference": {"fullname": "sqlglot.expressions.Reference", "modulename": "sqlglot.expressions", "qualname": "Reference", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Tuple": {"fullname": "sqlglot.expressions.Tuple", "modulename": "sqlglot.expressions", "qualname": "Tuple", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Subqueryable": {"fullname": "sqlglot.expressions.Subqueryable", "modulename": "sqlglot.expressions", "qualname": "Subqueryable", "kind": "class", "doc": "

\n", "bases": "Unionable"}, "sqlglot.expressions.Subqueryable.subquery": {"fullname": "sqlglot.expressions.Subqueryable.subquery", "modulename": "sqlglot.expressions", "qualname": "Subqueryable.subquery", "kind": "function", "doc": "

Convert this expression to an aliased expression that can be used as a Subquery.

\n\n
Example:
\n\n
\n
\n
>>> subquery = Select().select("x").from_("tbl").subquery()\n>>> Select().select("x").from_(subquery).sql()\n'SELECT x FROM (SELECT x FROM tbl)'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • alias (str | Identifier): an optional alias for the subquery
  • \n
  • copy (bool): if False, modify this expression instance in-place.
  • \n
\n\n
Returns:
\n\n
\n

Alias: the subquery

\n
\n", "signature": "(self, alias=None, copy=True) -> sqlglot.expressions.Subquery:", "funcdef": "def"}, "sqlglot.expressions.Subqueryable.limit": {"fullname": "sqlglot.expressions.Subqueryable.limit", "modulename": "sqlglot.expressions", "qualname": "Subqueryable.limit", "kind": "function", "doc": "

\n", "signature": "(\tself,\texpression,\tdialect=None,\tcopy=True,\t**opts) -> sqlglot.expressions.Select:", "funcdef": "def"}, "sqlglot.expressions.Subqueryable.with_": {"fullname": "sqlglot.expressions.Subqueryable.with_", "modulename": "sqlglot.expressions", "qualname": "Subqueryable.with_", "kind": "function", "doc": "

Append to or set the common table expressions.

\n\n
Example:
\n\n
\n
\n
>>> Select().with_("tbl2", as_="SELECT * FROM tbl").select("x").from_("tbl2").sql()\n'WITH tbl2 AS (SELECT * FROM tbl) SELECT x FROM tbl2'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • alias (str | Expression): the SQL code string to parse as the table name.\nIf an Expression instance is passed, this is used as-is.
  • \n
  • as_ (str | Expression): the SQL code string to parse as the table expression.\nIf an Expression instance is passed, it will be used as-is.
  • \n
  • recursive (bool): set the RECURSIVE part of the expression. Defaults to False.
  • \n
  • append (bool): if True, add to any existing expressions.\nOtherwise, this resets the expressions.
  • \n
  • dialect (str): the dialect used to parse the input expression.
  • \n
  • copy (bool): if False, modify this expression instance in-place.
  • \n
  • opts (kwargs): other options to use to parse the input expressions.
  • \n
\n\n
Returns:
\n\n
\n

Select: the modified expression.

\n
\n", "signature": "(\tself,\talias,\tas_,\trecursive=None,\tappend=True,\tdialect=None,\tcopy=True,\t**opts):", "funcdef": "def"}, "sqlglot.expressions.Table": {"fullname": "sqlglot.expressions.Table", "modulename": "sqlglot.expressions", "qualname": "Table", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.SystemTime": {"fullname": "sqlglot.expressions.SystemTime", "modulename": "sqlglot.expressions", "qualname": "SystemTime", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Union": {"fullname": "sqlglot.expressions.Union", "modulename": "sqlglot.expressions", "qualname": "Union", "kind": "class", "doc": "

\n", "bases": "Subqueryable"}, "sqlglot.expressions.Union.limit": {"fullname": "sqlglot.expressions.Union.limit", "modulename": "sqlglot.expressions", "qualname": "Union.limit", "kind": "function", "doc": "

Set the LIMIT expression.

\n\n
Example:
\n\n
\n
\n
>>> select("1").union(select("1")).limit(1).sql()\n'SELECT * FROM (SELECT 1 UNION SELECT 1) AS _l_0 LIMIT 1'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • expression (str | int | Expression): the SQL code string to parse.\nThis can also be an integer.\nIf a Limit instance is passed, this is used as-is.\nIf another Expression instance is passed, it will be wrapped in a Limit.
  • \n
  • dialect (str): the dialect used to parse the input expression.
  • \n
  • copy (bool): if False, modify this expression instance in-place.
  • \n
  • opts (kwargs): other options to use to parse the input expressions.
  • \n
\n\n
Returns:
\n\n
\n

Select: The limited subqueryable.

\n
\n", "signature": "(\tself,\texpression,\tdialect=None,\tcopy=True,\t**opts) -> sqlglot.expressions.Select:", "funcdef": "def"}, "sqlglot.expressions.Union.select": {"fullname": "sqlglot.expressions.Union.select", "modulename": "sqlglot.expressions", "qualname": "Union.select", "kind": "function", "doc": "

Append to or set the SELECT of the union recursively.

\n\n
Example:
\n\n
\n
\n
>>> from sqlglot import parse_one\n>>> parse_one("select a from x union select a from y union select a from z").select("b").sql()\n'SELECT a, b FROM x UNION SELECT a, b FROM y UNION SELECT a, b FROM z'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • *expressions: the SQL code strings to parse.\nIf an Expression instance is passed, it will be used as-is.
  • \n
  • append: if True, add to any existing expressions.\nOtherwise, this resets the expressions.
  • \n
  • dialect: the dialect used to parse the input expressions.
  • \n
  • copy: if False, modify this expression instance in-place.
  • \n
  • opts: other options to use to parse the input expressions.
  • \n
\n\n
Returns:
\n\n
\n

Union: the modified expression.

\n
\n", "signature": "(\tself,\t*expressions: Union[str, sqlglot.expressions.Expression],\tappend: bool = True,\tdialect: Union[str, sqlglot.dialects.dialect.Dialect, Type[sqlglot.dialects.dialect.Dialect], NoneType] = None,\tcopy: bool = True,\t**opts) -> sqlglot.expressions.Union:", "funcdef": "def"}, "sqlglot.expressions.Union.is_star": {"fullname": "sqlglot.expressions.Union.is_star", "modulename": "sqlglot.expressions", "qualname": "Union.is_star", "kind": "variable", "doc": "

Checks whether an expression is a star.

\n", "annotation": ": bool"}, "sqlglot.expressions.Except": {"fullname": "sqlglot.expressions.Except", "modulename": "sqlglot.expressions", "qualname": "Except", "kind": "class", "doc": "

\n", "bases": "Union"}, "sqlglot.expressions.Intersect": {"fullname": "sqlglot.expressions.Intersect", "modulename": "sqlglot.expressions", "qualname": "Intersect", "kind": "class", "doc": "

\n", "bases": "Union"}, "sqlglot.expressions.Unnest": {"fullname": "sqlglot.expressions.Unnest", "modulename": "sqlglot.expressions", "qualname": "Unnest", "kind": "class", "doc": "

\n", "bases": "UDTF"}, "sqlglot.expressions.Update": {"fullname": "sqlglot.expressions.Update", "modulename": "sqlglot.expressions", "qualname": "Update", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Values": {"fullname": "sqlglot.expressions.Values", "modulename": "sqlglot.expressions", "qualname": "Values", "kind": "class", "doc": "

\n", "bases": "UDTF"}, "sqlglot.expressions.Var": {"fullname": "sqlglot.expressions.Var", "modulename": "sqlglot.expressions", "qualname": "Var", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Schema": {"fullname": "sqlglot.expressions.Schema", "modulename": "sqlglot.expressions", "qualname": "Schema", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Lock": {"fullname": "sqlglot.expressions.Lock", "modulename": "sqlglot.expressions", "qualname": "Lock", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Select": {"fullname": "sqlglot.expressions.Select", "modulename": "sqlglot.expressions", "qualname": "Select", "kind": "class", "doc": "

\n", "bases": "Subqueryable"}, "sqlglot.expressions.Select.from_": {"fullname": "sqlglot.expressions.Select.from_", "modulename": "sqlglot.expressions", "qualname": "Select.from_", "kind": "function", "doc": "

Set the FROM expression.

\n\n
Example:
\n\n
\n
\n
>>> Select().from_("tbl").select("x").sql()\n'SELECT x FROM tbl'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • *expressions (str | Expression): the SQL code strings to parse.\nIf a From instance is passed, this is used as-is.\nIf another Expression instance is passed, it will be wrapped in a From.
  • \n
  • append (bool): if True, add to any existing expressions.\nOtherwise, this flattens all the From expression into a single expression.
  • \n
  • dialect (str): the dialect used to parse the input expression.
  • \n
  • copy (bool): if False, modify this expression instance in-place.
  • \n
  • opts (kwargs): other options to use to parse the input expressions.
  • \n
\n\n
Returns:
\n\n
\n

Select: the modified expression.

\n
\n", "signature": "(\tself,\t*expressions,\tappend=True,\tdialect=None,\tcopy=True,\t**opts) -> sqlglot.expressions.Select:", "funcdef": "def"}, "sqlglot.expressions.Select.group_by": {"fullname": "sqlglot.expressions.Select.group_by", "modulename": "sqlglot.expressions", "qualname": "Select.group_by", "kind": "function", "doc": "

Set the GROUP BY expression.

\n\n
Example:
\n\n
\n
\n
>>> Select().from_("tbl").select("x", "COUNT(1)").group_by("x").sql()\n'SELECT x, COUNT(1) FROM tbl GROUP BY x'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • *expressions (str | Expression): the SQL code strings to parse.\nIf a Group instance is passed, this is used as-is.\nIf another Expression instance is passed, it will be wrapped in a Group.\nIf nothing is passed in then a group by is not applied to the expression
  • \n
  • append (bool): if True, add to any existing expressions.\nOtherwise, this flattens all the Group expression into a single expression.
  • \n
  • dialect (str): the dialect used to parse the input expression.
  • \n
  • copy (bool): if False, modify this expression instance in-place.
  • \n
  • opts (kwargs): other options to use to parse the input expressions.
  • \n
\n\n
Returns:
\n\n
\n

Select: the modified expression.

\n
\n", "signature": "(\tself,\t*expressions,\tappend=True,\tdialect=None,\tcopy=True,\t**opts) -> sqlglot.expressions.Select:", "funcdef": "def"}, "sqlglot.expressions.Select.order_by": {"fullname": "sqlglot.expressions.Select.order_by", "modulename": "sqlglot.expressions", "qualname": "Select.order_by", "kind": "function", "doc": "

Set the ORDER BY expression.

\n\n
Example:
\n\n
\n
\n
>>> Select().from_("tbl").select("x").order_by("x DESC").sql()\n'SELECT x FROM tbl ORDER BY x DESC'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • *expressions (str | Expression): the SQL code strings to parse.\nIf a Group instance is passed, this is used as-is.\nIf another Expression instance is passed, it will be wrapped in a Order.
  • \n
  • append (bool): if True, add to any existing expressions.\nOtherwise, this flattens all the Order expression into a single expression.
  • \n
  • dialect (str): the dialect used to parse the input expression.
  • \n
  • copy (bool): if False, modify this expression instance in-place.
  • \n
  • opts (kwargs): other options to use to parse the input expressions.
  • \n
\n\n
Returns:
\n\n
\n

Select: the modified expression.

\n
\n", "signature": "(\tself,\t*expressions,\tappend=True,\tdialect=None,\tcopy=True,\t**opts) -> sqlglot.expressions.Select:", "funcdef": "def"}, "sqlglot.expressions.Select.sort_by": {"fullname": "sqlglot.expressions.Select.sort_by", "modulename": "sqlglot.expressions", "qualname": "Select.sort_by", "kind": "function", "doc": "

Set the SORT BY expression.

\n\n
Example:
\n\n
\n
\n
>>> Select().from_("tbl").select("x").sort_by("x DESC").sql()\n'SELECT x FROM tbl SORT BY x DESC'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • *expressions (str | Expression): the SQL code strings to parse.\nIf a Group instance is passed, this is used as-is.\nIf another Expression instance is passed, it will be wrapped in a SORT.
  • \n
  • append (bool): if True, add to any existing expressions.\nOtherwise, this flattens all the Order expression into a single expression.
  • \n
  • dialect (str): the dialect used to parse the input expression.
  • \n
  • copy (bool): if False, modify this expression instance in-place.
  • \n
  • opts (kwargs): other options to use to parse the input expressions.
  • \n
\n\n
Returns:
\n\n
\n

Select: the modified expression.

\n
\n", "signature": "(\tself,\t*expressions,\tappend=True,\tdialect=None,\tcopy=True,\t**opts) -> sqlglot.expressions.Select:", "funcdef": "def"}, "sqlglot.expressions.Select.cluster_by": {"fullname": "sqlglot.expressions.Select.cluster_by", "modulename": "sqlglot.expressions", "qualname": "Select.cluster_by", "kind": "function", "doc": "

Set the CLUSTER BY expression.

\n\n
Example:
\n\n
\n
\n
>>> Select().from_("tbl").select("x").cluster_by("x DESC").sql()\n'SELECT x FROM tbl CLUSTER BY x DESC'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • *expressions (str | Expression): the SQL code strings to parse.\nIf a Group instance is passed, this is used as-is.\nIf another Expression instance is passed, it will be wrapped in a Cluster.
  • \n
  • append (bool): if True, add to any existing expressions.\nOtherwise, this flattens all the Order expression into a single expression.
  • \n
  • dialect (str): the dialect used to parse the input expression.
  • \n
  • copy (bool): if False, modify this expression instance in-place.
  • \n
  • opts (kwargs): other options to use to parse the input expressions.
  • \n
\n\n
Returns:
\n\n
\n

Select: the modified expression.

\n
\n", "signature": "(\tself,\t*expressions,\tappend=True,\tdialect=None,\tcopy=True,\t**opts) -> sqlglot.expressions.Select:", "funcdef": "def"}, "sqlglot.expressions.Select.limit": {"fullname": "sqlglot.expressions.Select.limit", "modulename": "sqlglot.expressions", "qualname": "Select.limit", "kind": "function", "doc": "

Set the LIMIT expression.

\n\n
Example:
\n\n
\n
\n
>>> Select().from_("tbl").select("x").limit(10).sql()\n'SELECT x FROM tbl LIMIT 10'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • expression (str | int | Expression): the SQL code string to parse.\nThis can also be an integer.\nIf a Limit instance is passed, this is used as-is.\nIf another Expression instance is passed, it will be wrapped in a Limit.
  • \n
  • dialect (str): the dialect used to parse the input expression.
  • \n
  • copy (bool): if False, modify this expression instance in-place.
  • \n
  • opts (kwargs): other options to use to parse the input expressions.
  • \n
\n\n
Returns:
\n\n
\n

Select: the modified expression.

\n
\n", "signature": "(\tself,\texpression,\tdialect=None,\tcopy=True,\t**opts) -> sqlglot.expressions.Select:", "funcdef": "def"}, "sqlglot.expressions.Select.offset": {"fullname": "sqlglot.expressions.Select.offset", "modulename": "sqlglot.expressions", "qualname": "Select.offset", "kind": "function", "doc": "

Set the OFFSET expression.

\n\n
Example:
\n\n
\n
\n
>>> Select().from_("tbl").select("x").offset(10).sql()\n'SELECT x FROM tbl OFFSET 10'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • expression (str | int | Expression): the SQL code string to parse.\nThis can also be an integer.\nIf a Offset instance is passed, this is used as-is.\nIf another Expression instance is passed, it will be wrapped in a Offset.
  • \n
  • dialect (str): the dialect used to parse the input expression.
  • \n
  • copy (bool): if False, modify this expression instance in-place.
  • \n
  • opts (kwargs): other options to use to parse the input expressions.
  • \n
\n\n
Returns:
\n\n
\n

Select: the modified expression.

\n
\n", "signature": "(\tself,\texpression,\tdialect=None,\tcopy=True,\t**opts) -> sqlglot.expressions.Select:", "funcdef": "def"}, "sqlglot.expressions.Select.select": {"fullname": "sqlglot.expressions.Select.select", "modulename": "sqlglot.expressions", "qualname": "Select.select", "kind": "function", "doc": "

Append to or set the SELECT expressions.

\n\n
Example:
\n\n
\n
\n
>>> Select().select("x", "y").sql()\n'SELECT x, y'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • *expressions: the SQL code strings to parse.\nIf an Expression instance is passed, it will be used as-is.
  • \n
  • append: if True, add to any existing expressions.\nOtherwise, this resets the expressions.
  • \n
  • dialect: the dialect used to parse the input expressions.
  • \n
  • copy: if False, modify this expression instance in-place.
  • \n
  • opts: other options to use to parse the input expressions.
  • \n
\n\n
Returns:
\n\n
\n

Select: the modified expression.

\n
\n", "signature": "(\tself,\t*expressions: Union[str, sqlglot.expressions.Expression],\tappend: bool = True,\tdialect: Union[str, sqlglot.dialects.dialect.Dialect, Type[sqlglot.dialects.dialect.Dialect], NoneType] = None,\tcopy: bool = True,\t**opts) -> sqlglot.expressions.Select:", "funcdef": "def"}, "sqlglot.expressions.Select.lateral": {"fullname": "sqlglot.expressions.Select.lateral", "modulename": "sqlglot.expressions", "qualname": "Select.lateral", "kind": "function", "doc": "

Append to or set the LATERAL expressions.

\n\n
Example:
\n\n
\n
\n
>>> Select().select("x").lateral("OUTER explode(y) tbl2 AS z").from_("tbl").sql()\n'SELECT x FROM tbl LATERAL VIEW OUTER EXPLODE(y) tbl2 AS z'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • *expressions (str | Expression): the SQL code strings to parse.\nIf an Expression instance is passed, it will be used as-is.
  • \n
  • append (bool): if True, add to any existing expressions.\nOtherwise, this resets the expressions.
  • \n
  • dialect (str): the dialect used to parse the input expressions.
  • \n
  • copy (bool): if False, modify this expression instance in-place.
  • \n
  • opts (kwargs): other options to use to parse the input expressions.
  • \n
\n\n
Returns:
\n\n
\n

Select: the modified expression.

\n
\n", "signature": "(\tself,\t*expressions,\tappend=True,\tdialect=None,\tcopy=True,\t**opts) -> sqlglot.expressions.Select:", "funcdef": "def"}, "sqlglot.expressions.Select.join": {"fullname": "sqlglot.expressions.Select.join", "modulename": "sqlglot.expressions", "qualname": "Select.join", "kind": "function", "doc": "

Append to or set the JOIN expressions.

\n\n
Example:
\n\n
\n
\n
>>> Select().select("*").from_("tbl").join("tbl2", on="tbl1.y = tbl2.y").sql()\n'SELECT * FROM tbl JOIN tbl2 ON tbl1.y = tbl2.y'\n
\n
\n \n
\n
>>> Select().select("1").from_("a").join("b", using=["x", "y", "z"]).sql()\n'SELECT 1 FROM a JOIN b USING (x, y, z)'\n
\n
\n \n

Use join_type to change the type of join:

\n \n
\n
>>> Select().select("*").from_("tbl").join("tbl2", on="tbl1.y = tbl2.y", join_type="left outer").sql()\n'SELECT * FROM tbl LEFT OUTER JOIN tbl2 ON tbl1.y = tbl2.y'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • expression (str | Expression): the SQL code string to parse.\nIf an Expression instance is passed, it will be used as-is.
  • \n
  • on (str | Expression): optionally specify the join \"on\" criteria as a SQL string.\nIf an Expression instance is passed, it will be used as-is.
  • \n
  • using (str | Expression): optionally specify the join \"using\" criteria as a SQL string.\nIf an Expression instance is passed, it will be used as-is.
  • \n
  • append (bool): if True, add to any existing expressions.\nOtherwise, this resets the expressions.
  • \n
  • join_type (str): If set, alter the parsed join type
  • \n
  • dialect (str): the dialect used to parse the input expressions.
  • \n
  • copy (bool): if False, modify this expression instance in-place.
  • \n
  • opts (kwargs): other options to use to parse the input expressions.
  • \n
\n\n
Returns:
\n\n
\n

Select: the modified expression.

\n
\n", "signature": "(\tself,\texpression,\ton=None,\tusing=None,\tappend=True,\tjoin_type=None,\tjoin_alias=None,\tdialect=None,\tcopy=True,\t**opts) -> sqlglot.expressions.Select:", "funcdef": "def"}, "sqlglot.expressions.Select.where": {"fullname": "sqlglot.expressions.Select.where", "modulename": "sqlglot.expressions", "qualname": "Select.where", "kind": "function", "doc": "

Append to or set the WHERE expressions.

\n\n
Example:
\n\n
\n
\n
>>> Select().select("x").from_("tbl").where("x = 'a' OR x < 'b'").sql()\n"SELECT x FROM tbl WHERE x = 'a' OR x < 'b'"\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • *expressions (str | Expression): the SQL code strings to parse.\nIf an Expression instance is passed, it will be used as-is.\nMultiple expressions are combined with an AND operator.
  • \n
  • append (bool): if True, AND the new expressions to any existing expression.\nOtherwise, this resets the expression.
  • \n
  • dialect (str): the dialect used to parse the input expressions.
  • \n
  • copy (bool): if False, modify this expression instance in-place.
  • \n
  • opts (kwargs): other options to use to parse the input expressions.
  • \n
\n\n
Returns:
\n\n
\n

Select: the modified expression.

\n
\n", "signature": "(\tself,\t*expressions,\tappend=True,\tdialect=None,\tcopy=True,\t**opts) -> sqlglot.expressions.Select:", "funcdef": "def"}, "sqlglot.expressions.Select.having": {"fullname": "sqlglot.expressions.Select.having", "modulename": "sqlglot.expressions", "qualname": "Select.having", "kind": "function", "doc": "

Append to or set the HAVING expressions.

\n\n
Example:
\n\n
\n
\n
>>> Select().select("x", "COUNT(y)").from_("tbl").group_by("x").having("COUNT(y) > 3").sql()\n'SELECT x, COUNT(y) FROM tbl GROUP BY x HAVING COUNT(y) > 3'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • *expressions (str | Expression): the SQL code strings to parse.\nIf an Expression instance is passed, it will be used as-is.\nMultiple expressions are combined with an AND operator.
  • \n
  • append (bool): if True, AND the new expressions to any existing expression.\nOtherwise, this resets the expression.
  • \n
  • dialect (str): the dialect used to parse the input expressions.
  • \n
  • copy (bool): if False, modify this expression instance in-place.
  • \n
  • opts (kwargs): other options to use to parse the input expressions.
  • \n
\n\n
Returns:
\n\n
\n

Select: the modified expression.

\n
\n", "signature": "(\tself,\t*expressions,\tappend=True,\tdialect=None,\tcopy=True,\t**opts) -> sqlglot.expressions.Select:", "funcdef": "def"}, "sqlglot.expressions.Select.window": {"fullname": "sqlglot.expressions.Select.window", "modulename": "sqlglot.expressions", "qualname": "Select.window", "kind": "function", "doc": "

\n", "signature": "(\tself,\t*expressions,\tappend=True,\tdialect=None,\tcopy=True,\t**opts) -> sqlglot.expressions.Select:", "funcdef": "def"}, "sqlglot.expressions.Select.qualify": {"fullname": "sqlglot.expressions.Select.qualify", "modulename": "sqlglot.expressions", "qualname": "Select.qualify", "kind": "function", "doc": "

\n", "signature": "(\tself,\t*expressions,\tappend=True,\tdialect=None,\tcopy=True,\t**opts) -> sqlglot.expressions.Select:", "funcdef": "def"}, "sqlglot.expressions.Select.distinct": {"fullname": "sqlglot.expressions.Select.distinct", "modulename": "sqlglot.expressions", "qualname": "Select.distinct", "kind": "function", "doc": "

Set the OFFSET expression.

\n\n
Example:
\n\n
\n
\n
>>> Select().from_("tbl").select("x").distinct().sql()\n'SELECT DISTINCT x FROM tbl'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • distinct (bool): whether the Select should be distinct
  • \n
  • copy (bool): if False, modify this expression instance in-place.
  • \n
\n\n
Returns:
\n\n
\n

Select: the modified expression.

\n
\n", "signature": "(self, distinct=True, copy=True) -> sqlglot.expressions.Select:", "funcdef": "def"}, "sqlglot.expressions.Select.ctas": {"fullname": "sqlglot.expressions.Select.ctas", "modulename": "sqlglot.expressions", "qualname": "Select.ctas", "kind": "function", "doc": "

Convert this expression to a CREATE TABLE AS statement.

\n\n
Example:
\n\n
\n
\n
>>> Select().select("*").from_("tbl").ctas("x").sql()\n'CREATE TABLE x AS SELECT * FROM tbl'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • table (str | Expression): the SQL code string to parse as the table name.\nIf another Expression instance is passed, it will be used as-is.
  • \n
  • properties (dict): an optional mapping of table properties
  • \n
  • dialect (str): the dialect used to parse the input table.
  • \n
  • copy (bool): if False, modify this expression instance in-place.
  • \n
  • opts (kwargs): other options to use to parse the input table.
  • \n
\n\n
Returns:
\n\n
\n

Create: the CREATE TABLE AS expression

\n
\n", "signature": "(\tself,\ttable,\tproperties=None,\tdialect=None,\tcopy=True,\t**opts) -> sqlglot.expressions.Create:", "funcdef": "def"}, "sqlglot.expressions.Select.lock": {"fullname": "sqlglot.expressions.Select.lock", "modulename": "sqlglot.expressions", "qualname": "Select.lock", "kind": "function", "doc": "

Set the locking read mode for this expression.

\n\n
Examples:
\n\n
\n
\n
>>> Select().select("x").from_("tbl").where("x = 'a'").lock().sql("mysql")\n"SELECT x FROM tbl WHERE x = 'a' FOR UPDATE"\n
\n
\n \n
\n
>>> Select().select("x").from_("tbl").where("x = 'a'").lock(update=False).sql("mysql")\n"SELECT x FROM tbl WHERE x = 'a' FOR SHARE"\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • update: if True, the locking type will be FOR UPDATE, else it will be FOR SHARE.
  • \n
  • copy: if False, modify this expression instance in-place.
  • \n
\n\n
Returns:
\n\n
\n

The modified expression.

\n
\n", "signature": "(\tself,\tupdate: bool = True,\tcopy: bool = True) -> sqlglot.expressions.Select:", "funcdef": "def"}, "sqlglot.expressions.Select.is_star": {"fullname": "sqlglot.expressions.Select.is_star", "modulename": "sqlglot.expressions", "qualname": "Select.is_star", "kind": "variable", "doc": "

Checks whether an expression is a star.

\n", "annotation": ": bool"}, "sqlglot.expressions.Subquery": {"fullname": "sqlglot.expressions.Subquery", "modulename": "sqlglot.expressions", "qualname": "Subquery", "kind": "class", "doc": "

\n", "bases": "DerivedTable, Unionable"}, "sqlglot.expressions.Subquery.unnest": {"fullname": "sqlglot.expressions.Subquery.unnest", "modulename": "sqlglot.expressions", "qualname": "Subquery.unnest", "kind": "function", "doc": "

Returns the first non subquery.

\n", "signature": "(self):", "funcdef": "def"}, "sqlglot.expressions.Subquery.is_star": {"fullname": "sqlglot.expressions.Subquery.is_star", "modulename": "sqlglot.expressions", "qualname": "Subquery.is_star", "kind": "variable", "doc": "

Checks whether an expression is a star.

\n", "annotation": ": bool"}, "sqlglot.expressions.Subquery.output_name": {"fullname": "sqlglot.expressions.Subquery.output_name", "modulename": "sqlglot.expressions", "qualname": "Subquery.output_name", "kind": "variable", "doc": "

Name of the output column if this expression is a selection.

\n\n

If the Expression has no output name, an empty string is returned.

\n\n
Example:
\n\n
\n
\n
>>> from sqlglot import parse_one\n>>> parse_one("SELECT a").expressions[0].output_name\n'a'\n>>> parse_one("SELECT b AS c").expressions[0].output_name\n'c'\n>>> parse_one("SELECT 1 + 2").expressions[0].output_name\n''\n
\n
\n
\n"}, "sqlglot.expressions.TableSample": {"fullname": "sqlglot.expressions.TableSample", "modulename": "sqlglot.expressions", "qualname": "TableSample", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Tag": {"fullname": "sqlglot.expressions.Tag", "modulename": "sqlglot.expressions", "qualname": "Tag", "kind": "class", "doc": "

Tags are used for generating arbitrary sql like SELECT x.

\n", "bases": "Expression"}, "sqlglot.expressions.Pivot": {"fullname": "sqlglot.expressions.Pivot", "modulename": "sqlglot.expressions", "qualname": "Pivot", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Window": {"fullname": "sqlglot.expressions.Window", "modulename": "sqlglot.expressions", "qualname": "Window", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.WindowSpec": {"fullname": "sqlglot.expressions.WindowSpec", "modulename": "sqlglot.expressions", "qualname": "WindowSpec", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Where": {"fullname": "sqlglot.expressions.Where", "modulename": "sqlglot.expressions", "qualname": "Where", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Star": {"fullname": "sqlglot.expressions.Star", "modulename": "sqlglot.expressions", "qualname": "Star", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Star.output_name": {"fullname": "sqlglot.expressions.Star.output_name", "modulename": "sqlglot.expressions", "qualname": "Star.output_name", "kind": "variable", "doc": "

Name of the output column if this expression is a selection.

\n\n

If the Expression has no output name, an empty string is returned.

\n\n
Example:
\n\n
\n
\n
>>> from sqlglot import parse_one\n>>> parse_one("SELECT a").expressions[0].output_name\n'a'\n>>> parse_one("SELECT b AS c").expressions[0].output_name\n'c'\n>>> parse_one("SELECT 1 + 2").expressions[0].output_name\n''\n
\n
\n
\n"}, "sqlglot.expressions.Parameter": {"fullname": "sqlglot.expressions.Parameter", "modulename": "sqlglot.expressions", "qualname": "Parameter", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.SessionParameter": {"fullname": "sqlglot.expressions.SessionParameter", "modulename": "sqlglot.expressions", "qualname": "SessionParameter", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Placeholder": {"fullname": "sqlglot.expressions.Placeholder", "modulename": "sqlglot.expressions", "qualname": "Placeholder", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Null": {"fullname": "sqlglot.expressions.Null", "modulename": "sqlglot.expressions", "qualname": "Null", "kind": "class", "doc": "

\n", "bases": "Condition"}, "sqlglot.expressions.Boolean": {"fullname": "sqlglot.expressions.Boolean", "modulename": "sqlglot.expressions", "qualname": "Boolean", "kind": "class", "doc": "

\n", "bases": "Condition"}, "sqlglot.expressions.DataType": {"fullname": "sqlglot.expressions.DataType", "modulename": "sqlglot.expressions", "qualname": "DataType", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.DataType.Type": {"fullname": "sqlglot.expressions.DataType.Type", "modulename": "sqlglot.expressions", "qualname": "DataType.Type", "kind": "class", "doc": "

An enumeration.

\n", "bases": "sqlglot.helper.AutoName"}, "sqlglot.expressions.DataType.Type.CHAR": {"fullname": "sqlglot.expressions.DataType.Type.CHAR", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.CHAR", "kind": "variable", "doc": "

\n", "default_value": "<Type.CHAR: 'CHAR'>"}, "sqlglot.expressions.DataType.Type.NCHAR": {"fullname": "sqlglot.expressions.DataType.Type.NCHAR", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.NCHAR", "kind": "variable", "doc": "

\n", "default_value": "<Type.NCHAR: 'NCHAR'>"}, "sqlglot.expressions.DataType.Type.VARCHAR": {"fullname": "sqlglot.expressions.DataType.Type.VARCHAR", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.VARCHAR", "kind": "variable", "doc": "

\n", "default_value": "<Type.VARCHAR: 'VARCHAR'>"}, "sqlglot.expressions.DataType.Type.NVARCHAR": {"fullname": "sqlglot.expressions.DataType.Type.NVARCHAR", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.NVARCHAR", "kind": "variable", "doc": "

\n", "default_value": "<Type.NVARCHAR: 'NVARCHAR'>"}, "sqlglot.expressions.DataType.Type.TEXT": {"fullname": "sqlglot.expressions.DataType.Type.TEXT", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.TEXT", "kind": "variable", "doc": "

\n", "default_value": "<Type.TEXT: 'TEXT'>"}, "sqlglot.expressions.DataType.Type.MEDIUMTEXT": {"fullname": "sqlglot.expressions.DataType.Type.MEDIUMTEXT", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.MEDIUMTEXT", "kind": "variable", "doc": "

\n", "default_value": "<Type.MEDIUMTEXT: 'MEDIUMTEXT'>"}, "sqlglot.expressions.DataType.Type.LONGTEXT": {"fullname": "sqlglot.expressions.DataType.Type.LONGTEXT", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.LONGTEXT", "kind": "variable", "doc": "

\n", "default_value": "<Type.LONGTEXT: 'LONGTEXT'>"}, "sqlglot.expressions.DataType.Type.MEDIUMBLOB": {"fullname": "sqlglot.expressions.DataType.Type.MEDIUMBLOB", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.MEDIUMBLOB", "kind": "variable", "doc": "

\n", "default_value": "<Type.MEDIUMBLOB: 'MEDIUMBLOB'>"}, "sqlglot.expressions.DataType.Type.LONGBLOB": {"fullname": "sqlglot.expressions.DataType.Type.LONGBLOB", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.LONGBLOB", "kind": "variable", "doc": "

\n", "default_value": "<Type.LONGBLOB: 'LONGBLOB'>"}, "sqlglot.expressions.DataType.Type.BINARY": {"fullname": "sqlglot.expressions.DataType.Type.BINARY", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.BINARY", "kind": "variable", "doc": "

\n", "default_value": "<Type.BINARY: 'BINARY'>"}, "sqlglot.expressions.DataType.Type.VARBINARY": {"fullname": "sqlglot.expressions.DataType.Type.VARBINARY", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.VARBINARY", "kind": "variable", "doc": "

\n", "default_value": "<Type.VARBINARY: 'VARBINARY'>"}, "sqlglot.expressions.DataType.Type.INT": {"fullname": "sqlglot.expressions.DataType.Type.INT", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.INT", "kind": "variable", "doc": "

\n", "default_value": "<Type.INT: 'INT'>"}, "sqlglot.expressions.DataType.Type.UINT": {"fullname": "sqlglot.expressions.DataType.Type.UINT", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.UINT", "kind": "variable", "doc": "

\n", "default_value": "<Type.UINT: 'UINT'>"}, "sqlglot.expressions.DataType.Type.TINYINT": {"fullname": "sqlglot.expressions.DataType.Type.TINYINT", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.TINYINT", "kind": "variable", "doc": "

\n", "default_value": "<Type.TINYINT: 'TINYINT'>"}, "sqlglot.expressions.DataType.Type.UTINYINT": {"fullname": "sqlglot.expressions.DataType.Type.UTINYINT", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.UTINYINT", "kind": "variable", "doc": "

\n", "default_value": "<Type.UTINYINT: 'UTINYINT'>"}, "sqlglot.expressions.DataType.Type.SMALLINT": {"fullname": "sqlglot.expressions.DataType.Type.SMALLINT", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.SMALLINT", "kind": "variable", "doc": "

\n", "default_value": "<Type.SMALLINT: 'SMALLINT'>"}, "sqlglot.expressions.DataType.Type.USMALLINT": {"fullname": "sqlglot.expressions.DataType.Type.USMALLINT", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.USMALLINT", "kind": "variable", "doc": "

\n", "default_value": "<Type.USMALLINT: 'USMALLINT'>"}, "sqlglot.expressions.DataType.Type.BIGINT": {"fullname": "sqlglot.expressions.DataType.Type.BIGINT", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.BIGINT", "kind": "variable", "doc": "

\n", "default_value": "<Type.BIGINT: 'BIGINT'>"}, "sqlglot.expressions.DataType.Type.UBIGINT": {"fullname": "sqlglot.expressions.DataType.Type.UBIGINT", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.UBIGINT", "kind": "variable", "doc": "

\n", "default_value": "<Type.UBIGINT: 'UBIGINT'>"}, "sqlglot.expressions.DataType.Type.FLOAT": {"fullname": "sqlglot.expressions.DataType.Type.FLOAT", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.FLOAT", "kind": "variable", "doc": "

\n", "default_value": "<Type.FLOAT: 'FLOAT'>"}, "sqlglot.expressions.DataType.Type.DOUBLE": {"fullname": "sqlglot.expressions.DataType.Type.DOUBLE", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.DOUBLE", "kind": "variable", "doc": "

\n", "default_value": "<Type.DOUBLE: 'DOUBLE'>"}, "sqlglot.expressions.DataType.Type.DECIMAL": {"fullname": "sqlglot.expressions.DataType.Type.DECIMAL", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.DECIMAL", "kind": "variable", "doc": "

\n", "default_value": "<Type.DECIMAL: 'DECIMAL'>"}, "sqlglot.expressions.DataType.Type.BIT": {"fullname": "sqlglot.expressions.DataType.Type.BIT", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.BIT", "kind": "variable", "doc": "

\n", "default_value": "<Type.BIT: 'BIT'>"}, "sqlglot.expressions.DataType.Type.BOOLEAN": {"fullname": "sqlglot.expressions.DataType.Type.BOOLEAN", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.BOOLEAN", "kind": "variable", "doc": "

\n", "default_value": "<Type.BOOLEAN: 'BOOLEAN'>"}, "sqlglot.expressions.DataType.Type.JSON": {"fullname": "sqlglot.expressions.DataType.Type.JSON", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.JSON", "kind": "variable", "doc": "

\n", "default_value": "<Type.JSON: 'JSON'>"}, "sqlglot.expressions.DataType.Type.JSONB": {"fullname": "sqlglot.expressions.DataType.Type.JSONB", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.JSONB", "kind": "variable", "doc": "

\n", "default_value": "<Type.JSONB: 'JSONB'>"}, "sqlglot.expressions.DataType.Type.INTERVAL": {"fullname": "sqlglot.expressions.DataType.Type.INTERVAL", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.INTERVAL", "kind": "variable", "doc": "

\n", "default_value": "<Type.INTERVAL: 'INTERVAL'>"}, "sqlglot.expressions.DataType.Type.TIME": {"fullname": "sqlglot.expressions.DataType.Type.TIME", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.TIME", "kind": "variable", "doc": "

\n", "default_value": "<Type.TIME: 'TIME'>"}, "sqlglot.expressions.DataType.Type.TIMESTAMP": {"fullname": "sqlglot.expressions.DataType.Type.TIMESTAMP", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.TIMESTAMP", "kind": "variable", "doc": "

\n", "default_value": "<Type.TIMESTAMP: 'TIMESTAMP'>"}, "sqlglot.expressions.DataType.Type.TIMESTAMPTZ": {"fullname": "sqlglot.expressions.DataType.Type.TIMESTAMPTZ", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.TIMESTAMPTZ", "kind": "variable", "doc": "

\n", "default_value": "<Type.TIMESTAMPTZ: 'TIMESTAMPTZ'>"}, "sqlglot.expressions.DataType.Type.TIMESTAMPLTZ": {"fullname": "sqlglot.expressions.DataType.Type.TIMESTAMPLTZ", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.TIMESTAMPLTZ", "kind": "variable", "doc": "

\n", "default_value": "<Type.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>"}, "sqlglot.expressions.DataType.Type.DATE": {"fullname": "sqlglot.expressions.DataType.Type.DATE", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.DATE", "kind": "variable", "doc": "

\n", "default_value": "<Type.DATE: 'DATE'>"}, "sqlglot.expressions.DataType.Type.DATETIME": {"fullname": "sqlglot.expressions.DataType.Type.DATETIME", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.DATETIME", "kind": "variable", "doc": "

\n", "default_value": "<Type.DATETIME: 'DATETIME'>"}, "sqlglot.expressions.DataType.Type.ARRAY": {"fullname": "sqlglot.expressions.DataType.Type.ARRAY", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.ARRAY", "kind": "variable", "doc": "

\n", "default_value": "<Type.ARRAY: 'ARRAY'>"}, "sqlglot.expressions.DataType.Type.MAP": {"fullname": "sqlglot.expressions.DataType.Type.MAP", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.MAP", "kind": "variable", "doc": "

\n", "default_value": "<Type.MAP: 'MAP'>"}, "sqlglot.expressions.DataType.Type.UUID": {"fullname": "sqlglot.expressions.DataType.Type.UUID", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.UUID", "kind": "variable", "doc": "

\n", "default_value": "<Type.UUID: 'UUID'>"}, "sqlglot.expressions.DataType.Type.GEOGRAPHY": {"fullname": "sqlglot.expressions.DataType.Type.GEOGRAPHY", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.GEOGRAPHY", "kind": "variable", "doc": "

\n", "default_value": "<Type.GEOGRAPHY: 'GEOGRAPHY'>"}, "sqlglot.expressions.DataType.Type.GEOMETRY": {"fullname": "sqlglot.expressions.DataType.Type.GEOMETRY", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.GEOMETRY", "kind": "variable", "doc": "

\n", "default_value": "<Type.GEOMETRY: 'GEOMETRY'>"}, "sqlglot.expressions.DataType.Type.STRUCT": {"fullname": "sqlglot.expressions.DataType.Type.STRUCT", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.STRUCT", "kind": "variable", "doc": "

\n", "default_value": "<Type.STRUCT: 'STRUCT'>"}, "sqlglot.expressions.DataType.Type.NULLABLE": {"fullname": "sqlglot.expressions.DataType.Type.NULLABLE", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.NULLABLE", "kind": "variable", "doc": "

\n", "default_value": "<Type.NULLABLE: 'NULLABLE'>"}, "sqlglot.expressions.DataType.Type.HLLSKETCH": {"fullname": "sqlglot.expressions.DataType.Type.HLLSKETCH", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.HLLSKETCH", "kind": "variable", "doc": "

\n", "default_value": "<Type.HLLSKETCH: 'HLLSKETCH'>"}, "sqlglot.expressions.DataType.Type.HSTORE": {"fullname": "sqlglot.expressions.DataType.Type.HSTORE", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.HSTORE", "kind": "variable", "doc": "

\n", "default_value": "<Type.HSTORE: 'HSTORE'>"}, "sqlglot.expressions.DataType.Type.SUPER": {"fullname": "sqlglot.expressions.DataType.Type.SUPER", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.SUPER", "kind": "variable", "doc": "

\n", "default_value": "<Type.SUPER: 'SUPER'>"}, "sqlglot.expressions.DataType.Type.SERIAL": {"fullname": "sqlglot.expressions.DataType.Type.SERIAL", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.SERIAL", "kind": "variable", "doc": "

\n", "default_value": "<Type.SERIAL: 'SERIAL'>"}, "sqlglot.expressions.DataType.Type.SMALLSERIAL": {"fullname": "sqlglot.expressions.DataType.Type.SMALLSERIAL", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.SMALLSERIAL", "kind": "variable", "doc": "

\n", "default_value": "<Type.SMALLSERIAL: 'SMALLSERIAL'>"}, "sqlglot.expressions.DataType.Type.BIGSERIAL": {"fullname": "sqlglot.expressions.DataType.Type.BIGSERIAL", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.BIGSERIAL", "kind": "variable", "doc": "

\n", "default_value": "<Type.BIGSERIAL: 'BIGSERIAL'>"}, "sqlglot.expressions.DataType.Type.XML": {"fullname": "sqlglot.expressions.DataType.Type.XML", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.XML", "kind": "variable", "doc": "

\n", "default_value": "<Type.XML: 'XML'>"}, "sqlglot.expressions.DataType.Type.UNIQUEIDENTIFIER": {"fullname": "sqlglot.expressions.DataType.Type.UNIQUEIDENTIFIER", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.UNIQUEIDENTIFIER", "kind": "variable", "doc": "

\n", "default_value": "<Type.UNIQUEIDENTIFIER: 'UNIQUEIDENTIFIER'>"}, "sqlglot.expressions.DataType.Type.MONEY": {"fullname": "sqlglot.expressions.DataType.Type.MONEY", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.MONEY", "kind": "variable", "doc": "

\n", "default_value": "<Type.MONEY: 'MONEY'>"}, "sqlglot.expressions.DataType.Type.SMALLMONEY": {"fullname": "sqlglot.expressions.DataType.Type.SMALLMONEY", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.SMALLMONEY", "kind": "variable", "doc": "

\n", "default_value": "<Type.SMALLMONEY: 'SMALLMONEY'>"}, "sqlglot.expressions.DataType.Type.ROWVERSION": {"fullname": "sqlglot.expressions.DataType.Type.ROWVERSION", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.ROWVERSION", "kind": "variable", "doc": "

\n", "default_value": "<Type.ROWVERSION: 'ROWVERSION'>"}, "sqlglot.expressions.DataType.Type.IMAGE": {"fullname": "sqlglot.expressions.DataType.Type.IMAGE", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.IMAGE", "kind": "variable", "doc": "

\n", "default_value": "<Type.IMAGE: 'IMAGE'>"}, "sqlglot.expressions.DataType.Type.VARIANT": {"fullname": "sqlglot.expressions.DataType.Type.VARIANT", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.VARIANT", "kind": "variable", "doc": "

\n", "default_value": "<Type.VARIANT: 'VARIANT'>"}, "sqlglot.expressions.DataType.Type.OBJECT": {"fullname": "sqlglot.expressions.DataType.Type.OBJECT", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.OBJECT", "kind": "variable", "doc": "

\n", "default_value": "<Type.OBJECT: 'OBJECT'>"}, "sqlglot.expressions.DataType.Type.INET": {"fullname": "sqlglot.expressions.DataType.Type.INET", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.INET", "kind": "variable", "doc": "

\n", "default_value": "<Type.INET: 'INET'>"}, "sqlglot.expressions.DataType.Type.NULL": {"fullname": "sqlglot.expressions.DataType.Type.NULL", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.NULL", "kind": "variable", "doc": "

\n", "default_value": "<Type.NULL: 'NULL'>"}, "sqlglot.expressions.DataType.Type.UNKNOWN": {"fullname": "sqlglot.expressions.DataType.Type.UNKNOWN", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.UNKNOWN", "kind": "variable", "doc": "

\n", "default_value": "<Type.UNKNOWN: 'UNKNOWN'>"}, "sqlglot.expressions.DataType.build": {"fullname": "sqlglot.expressions.DataType.build", "modulename": "sqlglot.expressions", "qualname": "DataType.build", "kind": "function", "doc": "

\n", "signature": "(\tcls,\tdtype: str | sqlglot.expressions.DataType | sqlglot.expressions.DataType.Type,\tdialect: Union[str, sqlglot.dialects.dialect.Dialect, Type[sqlglot.dialects.dialect.Dialect], NoneType] = None,\t**kwargs) -> sqlglot.expressions.DataType:", "funcdef": "def"}, "sqlglot.expressions.DataType.is_type": {"fullname": "sqlglot.expressions.DataType.is_type", "modulename": "sqlglot.expressions", "qualname": "DataType.is_type", "kind": "function", "doc": "

\n", "signature": "(self, dtype: sqlglot.expressions.DataType.Type) -> bool:", "funcdef": "def"}, "sqlglot.expressions.PseudoType": {"fullname": "sqlglot.expressions.PseudoType", "modulename": "sqlglot.expressions", "qualname": "PseudoType", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.StructKwarg": {"fullname": "sqlglot.expressions.StructKwarg", "modulename": "sqlglot.expressions", "qualname": "StructKwarg", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.SubqueryPredicate": {"fullname": "sqlglot.expressions.SubqueryPredicate", "modulename": "sqlglot.expressions", "qualname": "SubqueryPredicate", "kind": "class", "doc": "

\n", "bases": "Predicate"}, "sqlglot.expressions.All": {"fullname": "sqlglot.expressions.All", "modulename": "sqlglot.expressions", "qualname": "All", "kind": "class", "doc": "

\n", "bases": "SubqueryPredicate"}, "sqlglot.expressions.Any": {"fullname": "sqlglot.expressions.Any", "modulename": "sqlglot.expressions", "qualname": "Any", "kind": "class", "doc": "

\n", "bases": "SubqueryPredicate"}, "sqlglot.expressions.Exists": {"fullname": "sqlglot.expressions.Exists", "modulename": "sqlglot.expressions", "qualname": "Exists", "kind": "class", "doc": "

\n", "bases": "SubqueryPredicate"}, "sqlglot.expressions.Command": {"fullname": "sqlglot.expressions.Command", "modulename": "sqlglot.expressions", "qualname": "Command", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Transaction": {"fullname": "sqlglot.expressions.Transaction", "modulename": "sqlglot.expressions", "qualname": "Transaction", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Commit": {"fullname": "sqlglot.expressions.Commit", "modulename": "sqlglot.expressions", "qualname": "Commit", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Rollback": {"fullname": "sqlglot.expressions.Rollback", "modulename": "sqlglot.expressions", "qualname": "Rollback", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.AlterTable": {"fullname": "sqlglot.expressions.AlterTable", "modulename": "sqlglot.expressions", "qualname": "AlterTable", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.AddConstraint": {"fullname": "sqlglot.expressions.AddConstraint", "modulename": "sqlglot.expressions", "qualname": "AddConstraint", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.DropPartition": {"fullname": "sqlglot.expressions.DropPartition", "modulename": "sqlglot.expressions", "qualname": "DropPartition", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Binary": {"fullname": "sqlglot.expressions.Binary", "modulename": "sqlglot.expressions", "qualname": "Binary", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Add": {"fullname": "sqlglot.expressions.Add", "modulename": "sqlglot.expressions", "qualname": "Add", "kind": "class", "doc": "

\n", "bases": "Binary"}, "sqlglot.expressions.Connector": {"fullname": "sqlglot.expressions.Connector", "modulename": "sqlglot.expressions", "qualname": "Connector", "kind": "class", "doc": "

\n", "bases": "Binary, Condition"}, "sqlglot.expressions.And": {"fullname": "sqlglot.expressions.And", "modulename": "sqlglot.expressions", "qualname": "And", "kind": "class", "doc": "

\n", "bases": "Connector"}, "sqlglot.expressions.Or": {"fullname": "sqlglot.expressions.Or", "modulename": "sqlglot.expressions", "qualname": "Or", "kind": "class", "doc": "

\n", "bases": "Connector"}, "sqlglot.expressions.BitwiseAnd": {"fullname": "sqlglot.expressions.BitwiseAnd", "modulename": "sqlglot.expressions", "qualname": "BitwiseAnd", "kind": "class", "doc": "

\n", "bases": "Binary"}, "sqlglot.expressions.BitwiseLeftShift": {"fullname": "sqlglot.expressions.BitwiseLeftShift", "modulename": "sqlglot.expressions", "qualname": "BitwiseLeftShift", "kind": "class", "doc": "

\n", "bases": "Binary"}, "sqlglot.expressions.BitwiseOr": {"fullname": "sqlglot.expressions.BitwiseOr", "modulename": "sqlglot.expressions", "qualname": "BitwiseOr", "kind": "class", "doc": "

\n", "bases": "Binary"}, "sqlglot.expressions.BitwiseRightShift": {"fullname": "sqlglot.expressions.BitwiseRightShift", "modulename": "sqlglot.expressions", "qualname": "BitwiseRightShift", "kind": "class", "doc": "

\n", "bases": "Binary"}, "sqlglot.expressions.BitwiseXor": {"fullname": "sqlglot.expressions.BitwiseXor", "modulename": "sqlglot.expressions", "qualname": "BitwiseXor", "kind": "class", "doc": "

\n", "bases": "Binary"}, "sqlglot.expressions.Div": {"fullname": "sqlglot.expressions.Div", "modulename": "sqlglot.expressions", "qualname": "Div", "kind": "class", "doc": "

\n", "bases": "Binary"}, "sqlglot.expressions.Overlaps": {"fullname": "sqlglot.expressions.Overlaps", "modulename": "sqlglot.expressions", "qualname": "Overlaps", "kind": "class", "doc": "

\n", "bases": "Binary"}, "sqlglot.expressions.Dot": {"fullname": "sqlglot.expressions.Dot", "modulename": "sqlglot.expressions", "qualname": "Dot", "kind": "class", "doc": "

\n", "bases": "Binary"}, "sqlglot.expressions.Dot.build": {"fullname": "sqlglot.expressions.Dot.build", "modulename": "sqlglot.expressions", "qualname": "Dot.build", "kind": "function", "doc": "

Build a Dot object with a sequence of expressions.

\n", "signature": "(\tself,\texpressions: Sequence[sqlglot.expressions.Expression]) -> sqlglot.expressions.Dot:", "funcdef": "def"}, "sqlglot.expressions.DPipe": {"fullname": "sqlglot.expressions.DPipe", "modulename": "sqlglot.expressions", "qualname": "DPipe", "kind": "class", "doc": "

\n", "bases": "Binary"}, "sqlglot.expressions.EQ": {"fullname": "sqlglot.expressions.EQ", "modulename": "sqlglot.expressions", "qualname": "EQ", "kind": "class", "doc": "

\n", "bases": "Binary, Predicate"}, "sqlglot.expressions.NullSafeEQ": {"fullname": "sqlglot.expressions.NullSafeEQ", "modulename": "sqlglot.expressions", "qualname": "NullSafeEQ", "kind": "class", "doc": "

\n", "bases": "Binary, Predicate"}, "sqlglot.expressions.NullSafeNEQ": {"fullname": "sqlglot.expressions.NullSafeNEQ", "modulename": "sqlglot.expressions", "qualname": "NullSafeNEQ", "kind": "class", "doc": "

\n", "bases": "Binary, Predicate"}, "sqlglot.expressions.Distance": {"fullname": "sqlglot.expressions.Distance", "modulename": "sqlglot.expressions", "qualname": "Distance", "kind": "class", "doc": "

\n", "bases": "Binary"}, "sqlglot.expressions.Escape": {"fullname": "sqlglot.expressions.Escape", "modulename": "sqlglot.expressions", "qualname": "Escape", "kind": "class", "doc": "

\n", "bases": "Binary"}, "sqlglot.expressions.Glob": {"fullname": "sqlglot.expressions.Glob", "modulename": "sqlglot.expressions", "qualname": "Glob", "kind": "class", "doc": "

\n", "bases": "Binary, Predicate"}, "sqlglot.expressions.GT": {"fullname": "sqlglot.expressions.GT", "modulename": "sqlglot.expressions", "qualname": "GT", "kind": "class", "doc": "

\n", "bases": "Binary, Predicate"}, "sqlglot.expressions.GTE": {"fullname": "sqlglot.expressions.GTE", "modulename": "sqlglot.expressions", "qualname": "GTE", "kind": "class", "doc": "

\n", "bases": "Binary, Predicate"}, "sqlglot.expressions.ILike": {"fullname": "sqlglot.expressions.ILike", "modulename": "sqlglot.expressions", "qualname": "ILike", "kind": "class", "doc": "

\n", "bases": "Binary, Predicate"}, "sqlglot.expressions.ILikeAny": {"fullname": "sqlglot.expressions.ILikeAny", "modulename": "sqlglot.expressions", "qualname": "ILikeAny", "kind": "class", "doc": "

\n", "bases": "Binary, Predicate"}, "sqlglot.expressions.IntDiv": {"fullname": "sqlglot.expressions.IntDiv", "modulename": "sqlglot.expressions", "qualname": "IntDiv", "kind": "class", "doc": "

\n", "bases": "Binary"}, "sqlglot.expressions.Is": {"fullname": "sqlglot.expressions.Is", "modulename": "sqlglot.expressions", "qualname": "Is", "kind": "class", "doc": "

\n", "bases": "Binary, Predicate"}, "sqlglot.expressions.Kwarg": {"fullname": "sqlglot.expressions.Kwarg", "modulename": "sqlglot.expressions", "qualname": "Kwarg", "kind": "class", "doc": "

Kwarg in special functions like func(kwarg => y).

\n", "bases": "Binary"}, "sqlglot.expressions.Like": {"fullname": "sqlglot.expressions.Like", "modulename": "sqlglot.expressions", "qualname": "Like", "kind": "class", "doc": "

\n", "bases": "Binary, Predicate"}, "sqlglot.expressions.LikeAny": {"fullname": "sqlglot.expressions.LikeAny", "modulename": "sqlglot.expressions", "qualname": "LikeAny", "kind": "class", "doc": "

\n", "bases": "Binary, Predicate"}, "sqlglot.expressions.LT": {"fullname": "sqlglot.expressions.LT", "modulename": "sqlglot.expressions", "qualname": "LT", "kind": "class", "doc": "

\n", "bases": "Binary, Predicate"}, "sqlglot.expressions.LTE": {"fullname": "sqlglot.expressions.LTE", "modulename": "sqlglot.expressions", "qualname": "LTE", "kind": "class", "doc": "

\n", "bases": "Binary, Predicate"}, "sqlglot.expressions.Mod": {"fullname": "sqlglot.expressions.Mod", "modulename": "sqlglot.expressions", "qualname": "Mod", "kind": "class", "doc": "

\n", "bases": "Binary"}, "sqlglot.expressions.Mul": {"fullname": "sqlglot.expressions.Mul", "modulename": "sqlglot.expressions", "qualname": "Mul", "kind": "class", "doc": "

\n", "bases": "Binary"}, "sqlglot.expressions.NEQ": {"fullname": "sqlglot.expressions.NEQ", "modulename": "sqlglot.expressions", "qualname": "NEQ", "kind": "class", "doc": "

\n", "bases": "Binary, Predicate"}, "sqlglot.expressions.SimilarTo": {"fullname": "sqlglot.expressions.SimilarTo", "modulename": "sqlglot.expressions", "qualname": "SimilarTo", "kind": "class", "doc": "

\n", "bases": "Binary, Predicate"}, "sqlglot.expressions.Slice": {"fullname": "sqlglot.expressions.Slice", "modulename": "sqlglot.expressions", "qualname": "Slice", "kind": "class", "doc": "

\n", "bases": "Binary"}, "sqlglot.expressions.Sub": {"fullname": "sqlglot.expressions.Sub", "modulename": "sqlglot.expressions", "qualname": "Sub", "kind": "class", "doc": "

\n", "bases": "Binary"}, "sqlglot.expressions.ArrayOverlaps": {"fullname": "sqlglot.expressions.ArrayOverlaps", "modulename": "sqlglot.expressions", "qualname": "ArrayOverlaps", "kind": "class", "doc": "

\n", "bases": "Binary"}, "sqlglot.expressions.Unary": {"fullname": "sqlglot.expressions.Unary", "modulename": "sqlglot.expressions", "qualname": "Unary", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.BitwiseNot": {"fullname": "sqlglot.expressions.BitwiseNot", "modulename": "sqlglot.expressions", "qualname": "BitwiseNot", "kind": "class", "doc": "

\n", "bases": "Unary"}, "sqlglot.expressions.Not": {"fullname": "sqlglot.expressions.Not", "modulename": "sqlglot.expressions", "qualname": "Not", "kind": "class", "doc": "

\n", "bases": "Unary, Condition"}, "sqlglot.expressions.Paren": {"fullname": "sqlglot.expressions.Paren", "modulename": "sqlglot.expressions", "qualname": "Paren", "kind": "class", "doc": "

\n", "bases": "Unary, Condition"}, "sqlglot.expressions.Neg": {"fullname": "sqlglot.expressions.Neg", "modulename": "sqlglot.expressions", "qualname": "Neg", "kind": "class", "doc": "

\n", "bases": "Unary"}, "sqlglot.expressions.Alias": {"fullname": "sqlglot.expressions.Alias", "modulename": "sqlglot.expressions", "qualname": "Alias", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Alias.output_name": {"fullname": "sqlglot.expressions.Alias.output_name", "modulename": "sqlglot.expressions", "qualname": "Alias.output_name", "kind": "variable", "doc": "

Name of the output column if this expression is a selection.

\n\n

If the Expression has no output name, an empty string is returned.

\n\n
Example:
\n\n
\n
\n
>>> from sqlglot import parse_one\n>>> parse_one("SELECT a").expressions[0].output_name\n'a'\n>>> parse_one("SELECT b AS c").expressions[0].output_name\n'c'\n>>> parse_one("SELECT 1 + 2").expressions[0].output_name\n''\n
\n
\n
\n"}, "sqlglot.expressions.Aliases": {"fullname": "sqlglot.expressions.Aliases", "modulename": "sqlglot.expressions", "qualname": "Aliases", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.AtTimeZone": {"fullname": "sqlglot.expressions.AtTimeZone", "modulename": "sqlglot.expressions", "qualname": "AtTimeZone", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Between": {"fullname": "sqlglot.expressions.Between", "modulename": "sqlglot.expressions", "qualname": "Between", "kind": "class", "doc": "

\n", "bases": "Predicate"}, "sqlglot.expressions.Bracket": {"fullname": "sqlglot.expressions.Bracket", "modulename": "sqlglot.expressions", "qualname": "Bracket", "kind": "class", "doc": "

\n", "bases": "Condition"}, "sqlglot.expressions.Distinct": {"fullname": "sqlglot.expressions.Distinct", "modulename": "sqlglot.expressions", "qualname": "Distinct", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.In": {"fullname": "sqlglot.expressions.In", "modulename": "sqlglot.expressions", "qualname": "In", "kind": "class", "doc": "

\n", "bases": "Predicate"}, "sqlglot.expressions.TimeUnit": {"fullname": "sqlglot.expressions.TimeUnit", "modulename": "sqlglot.expressions", "qualname": "TimeUnit", "kind": "class", "doc": "

Automatically converts unit arg into a var.

\n", "bases": "Expression"}, "sqlglot.expressions.TimeUnit.__init__": {"fullname": "sqlglot.expressions.TimeUnit.__init__", "modulename": "sqlglot.expressions", "qualname": "TimeUnit.__init__", "kind": "function", "doc": "

\n", "signature": "(**args)"}, "sqlglot.expressions.Interval": {"fullname": "sqlglot.expressions.Interval", "modulename": "sqlglot.expressions", "qualname": "Interval", "kind": "class", "doc": "

\n", "bases": "TimeUnit"}, "sqlglot.expressions.IgnoreNulls": {"fullname": "sqlglot.expressions.IgnoreNulls", "modulename": "sqlglot.expressions", "qualname": "IgnoreNulls", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.RespectNulls": {"fullname": "sqlglot.expressions.RespectNulls", "modulename": "sqlglot.expressions", "qualname": "RespectNulls", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Func": {"fullname": "sqlglot.expressions.Func", "modulename": "sqlglot.expressions", "qualname": "Func", "kind": "class", "doc": "

The base class for all function expressions.

\n\n
Attributes:
\n\n
    \n
  • is_var_len_args (bool): if set to True the last argument defined in arg_types will be\ntreated as a variable length argument and the argument's value will be stored as a list.
  • \n
  • _sql_names (list): determines the SQL name (1st item in the list) and aliases (subsequent items)\nfor this function expression. These values are used to map this node to a name during parsing\nas well as to provide the function's name during SQL string generation. By default the SQL\nname is set to the expression's class name transformed to snake case.
  • \n
\n", "bases": "Condition"}, "sqlglot.expressions.Func.from_arg_list": {"fullname": "sqlglot.expressions.Func.from_arg_list", "modulename": "sqlglot.expressions", "qualname": "Func.from_arg_list", "kind": "function", "doc": "

\n", "signature": "(cls, args):", "funcdef": "def"}, "sqlglot.expressions.Func.sql_names": {"fullname": "sqlglot.expressions.Func.sql_names", "modulename": "sqlglot.expressions", "qualname": "Func.sql_names", "kind": "function", "doc": "

\n", "signature": "(cls):", "funcdef": "def"}, "sqlglot.expressions.Func.sql_name": {"fullname": "sqlglot.expressions.Func.sql_name", "modulename": "sqlglot.expressions", "qualname": "Func.sql_name", "kind": "function", "doc": "

\n", "signature": "(cls):", "funcdef": "def"}, "sqlglot.expressions.Func.default_parser_mappings": {"fullname": "sqlglot.expressions.Func.default_parser_mappings", "modulename": "sqlglot.expressions", "qualname": "Func.default_parser_mappings", "kind": "function", "doc": "

\n", "signature": "(cls):", "funcdef": "def"}, "sqlglot.expressions.AggFunc": {"fullname": "sqlglot.expressions.AggFunc", "modulename": "sqlglot.expressions", "qualname": "AggFunc", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.Abs": {"fullname": "sqlglot.expressions.Abs", "modulename": "sqlglot.expressions", "qualname": "Abs", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.Anonymous": {"fullname": "sqlglot.expressions.Anonymous", "modulename": "sqlglot.expressions", "qualname": "Anonymous", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.Hll": {"fullname": "sqlglot.expressions.Hll", "modulename": "sqlglot.expressions", "qualname": "Hll", "kind": "class", "doc": "

\n", "bases": "AggFunc"}, "sqlglot.expressions.ApproxDistinct": {"fullname": "sqlglot.expressions.ApproxDistinct", "modulename": "sqlglot.expressions", "qualname": "ApproxDistinct", "kind": "class", "doc": "

\n", "bases": "AggFunc"}, "sqlglot.expressions.Array": {"fullname": "sqlglot.expressions.Array", "modulename": "sqlglot.expressions", "qualname": "Array", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.ToChar": {"fullname": "sqlglot.expressions.ToChar", "modulename": "sqlglot.expressions", "qualname": "ToChar", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.GenerateSeries": {"fullname": "sqlglot.expressions.GenerateSeries", "modulename": "sqlglot.expressions", "qualname": "GenerateSeries", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.ArrayAgg": {"fullname": "sqlglot.expressions.ArrayAgg", "modulename": "sqlglot.expressions", "qualname": "ArrayAgg", "kind": "class", "doc": "

\n", "bases": "AggFunc"}, "sqlglot.expressions.ArrayAll": {"fullname": "sqlglot.expressions.ArrayAll", "modulename": "sqlglot.expressions", "qualname": "ArrayAll", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.ArrayAny": {"fullname": "sqlglot.expressions.ArrayAny", "modulename": "sqlglot.expressions", "qualname": "ArrayAny", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.ArrayConcat": {"fullname": "sqlglot.expressions.ArrayConcat", "modulename": "sqlglot.expressions", "qualname": "ArrayConcat", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.ArrayContains": {"fullname": "sqlglot.expressions.ArrayContains", "modulename": "sqlglot.expressions", "qualname": "ArrayContains", "kind": "class", "doc": "

\n", "bases": "Binary, Func"}, "sqlglot.expressions.ArrayContained": {"fullname": "sqlglot.expressions.ArrayContained", "modulename": "sqlglot.expressions", "qualname": "ArrayContained", "kind": "class", "doc": "

\n", "bases": "Binary"}, "sqlglot.expressions.ArrayFilter": {"fullname": "sqlglot.expressions.ArrayFilter", "modulename": "sqlglot.expressions", "qualname": "ArrayFilter", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.ArrayJoin": {"fullname": "sqlglot.expressions.ArrayJoin", "modulename": "sqlglot.expressions", "qualname": "ArrayJoin", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.ArraySize": {"fullname": "sqlglot.expressions.ArraySize", "modulename": "sqlglot.expressions", "qualname": "ArraySize", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.ArraySort": {"fullname": "sqlglot.expressions.ArraySort", "modulename": "sqlglot.expressions", "qualname": "ArraySort", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.ArraySum": {"fullname": "sqlglot.expressions.ArraySum", "modulename": "sqlglot.expressions", "qualname": "ArraySum", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.ArrayUnionAgg": {"fullname": "sqlglot.expressions.ArrayUnionAgg", "modulename": "sqlglot.expressions", "qualname": "ArrayUnionAgg", "kind": "class", "doc": "

\n", "bases": "AggFunc"}, "sqlglot.expressions.Avg": {"fullname": "sqlglot.expressions.Avg", "modulename": "sqlglot.expressions", "qualname": "Avg", "kind": "class", "doc": "

\n", "bases": "AggFunc"}, "sqlglot.expressions.AnyValue": {"fullname": "sqlglot.expressions.AnyValue", "modulename": "sqlglot.expressions", "qualname": "AnyValue", "kind": "class", "doc": "

\n", "bases": "AggFunc"}, "sqlglot.expressions.Case": {"fullname": "sqlglot.expressions.Case", "modulename": "sqlglot.expressions", "qualname": "Case", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.Cast": {"fullname": "sqlglot.expressions.Cast", "modulename": "sqlglot.expressions", "qualname": "Cast", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.Cast.output_name": {"fullname": "sqlglot.expressions.Cast.output_name", "modulename": "sqlglot.expressions", "qualname": "Cast.output_name", "kind": "variable", "doc": "

Name of the output column if this expression is a selection.

\n\n

If the Expression has no output name, an empty string is returned.

\n\n
Example:
\n\n
\n
\n
>>> from sqlglot import parse_one\n>>> parse_one("SELECT a").expressions[0].output_name\n'a'\n>>> parse_one("SELECT b AS c").expressions[0].output_name\n'c'\n>>> parse_one("SELECT 1 + 2").expressions[0].output_name\n''\n
\n
\n
\n"}, "sqlglot.expressions.Cast.is_type": {"fullname": "sqlglot.expressions.Cast.is_type", "modulename": "sqlglot.expressions", "qualname": "Cast.is_type", "kind": "function", "doc": "

\n", "signature": "(self, dtype: sqlglot.expressions.DataType.Type) -> bool:", "funcdef": "def"}, "sqlglot.expressions.Collate": {"fullname": "sqlglot.expressions.Collate", "modulename": "sqlglot.expressions", "qualname": "Collate", "kind": "class", "doc": "

\n", "bases": "Binary"}, "sqlglot.expressions.TryCast": {"fullname": "sqlglot.expressions.TryCast", "modulename": "sqlglot.expressions", "qualname": "TryCast", "kind": "class", "doc": "

\n", "bases": "Cast"}, "sqlglot.expressions.Ceil": {"fullname": "sqlglot.expressions.Ceil", "modulename": "sqlglot.expressions", "qualname": "Ceil", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.Coalesce": {"fullname": "sqlglot.expressions.Coalesce", "modulename": "sqlglot.expressions", "qualname": "Coalesce", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.Concat": {"fullname": "sqlglot.expressions.Concat", "modulename": "sqlglot.expressions", "qualname": "Concat", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.ConcatWs": {"fullname": "sqlglot.expressions.ConcatWs", "modulename": "sqlglot.expressions", "qualname": "ConcatWs", "kind": "class", "doc": "

\n", "bases": "Concat"}, "sqlglot.expressions.Count": {"fullname": "sqlglot.expressions.Count", "modulename": "sqlglot.expressions", "qualname": "Count", "kind": "class", "doc": "

\n", "bases": "AggFunc"}, "sqlglot.expressions.CountIf": {"fullname": "sqlglot.expressions.CountIf", "modulename": "sqlglot.expressions", "qualname": "CountIf", "kind": "class", "doc": "

\n", "bases": "AggFunc"}, "sqlglot.expressions.CurrentDate": {"fullname": "sqlglot.expressions.CurrentDate", "modulename": "sqlglot.expressions", "qualname": "CurrentDate", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.CurrentDatetime": {"fullname": "sqlglot.expressions.CurrentDatetime", "modulename": "sqlglot.expressions", "qualname": "CurrentDatetime", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.CurrentTime": {"fullname": "sqlglot.expressions.CurrentTime", "modulename": "sqlglot.expressions", "qualname": "CurrentTime", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.CurrentTimestamp": {"fullname": "sqlglot.expressions.CurrentTimestamp", "modulename": "sqlglot.expressions", "qualname": "CurrentTimestamp", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.DateAdd": {"fullname": "sqlglot.expressions.DateAdd", "modulename": "sqlglot.expressions", "qualname": "DateAdd", "kind": "class", "doc": "

\n", "bases": "Func, TimeUnit"}, "sqlglot.expressions.DateSub": {"fullname": "sqlglot.expressions.DateSub", "modulename": "sqlglot.expressions", "qualname": "DateSub", "kind": "class", "doc": "

\n", "bases": "Func, TimeUnit"}, "sqlglot.expressions.DateDiff": {"fullname": "sqlglot.expressions.DateDiff", "modulename": "sqlglot.expressions", "qualname": "DateDiff", "kind": "class", "doc": "

\n", "bases": "Func, TimeUnit"}, "sqlglot.expressions.DateTrunc": {"fullname": "sqlglot.expressions.DateTrunc", "modulename": "sqlglot.expressions", "qualname": "DateTrunc", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.DatetimeAdd": {"fullname": "sqlglot.expressions.DatetimeAdd", "modulename": "sqlglot.expressions", "qualname": "DatetimeAdd", "kind": "class", "doc": "

\n", "bases": "Func, TimeUnit"}, "sqlglot.expressions.DatetimeSub": {"fullname": "sqlglot.expressions.DatetimeSub", "modulename": "sqlglot.expressions", "qualname": "DatetimeSub", "kind": "class", "doc": "

\n", "bases": "Func, TimeUnit"}, "sqlglot.expressions.DatetimeDiff": {"fullname": "sqlglot.expressions.DatetimeDiff", "modulename": "sqlglot.expressions", "qualname": "DatetimeDiff", "kind": "class", "doc": "

\n", "bases": "Func, TimeUnit"}, "sqlglot.expressions.DatetimeTrunc": {"fullname": "sqlglot.expressions.DatetimeTrunc", "modulename": "sqlglot.expressions", "qualname": "DatetimeTrunc", "kind": "class", "doc": "

\n", "bases": "Func, TimeUnit"}, "sqlglot.expressions.DayOfWeek": {"fullname": "sqlglot.expressions.DayOfWeek", "modulename": "sqlglot.expressions", "qualname": "DayOfWeek", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.DayOfMonth": {"fullname": "sqlglot.expressions.DayOfMonth", "modulename": "sqlglot.expressions", "qualname": "DayOfMonth", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.DayOfYear": {"fullname": "sqlglot.expressions.DayOfYear", "modulename": "sqlglot.expressions", "qualname": "DayOfYear", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.WeekOfYear": {"fullname": "sqlglot.expressions.WeekOfYear", "modulename": "sqlglot.expressions", "qualname": "WeekOfYear", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.LastDateOfMonth": {"fullname": "sqlglot.expressions.LastDateOfMonth", "modulename": "sqlglot.expressions", "qualname": "LastDateOfMonth", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.Extract": {"fullname": "sqlglot.expressions.Extract", "modulename": "sqlglot.expressions", "qualname": "Extract", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.TimestampAdd": {"fullname": "sqlglot.expressions.TimestampAdd", "modulename": "sqlglot.expressions", "qualname": "TimestampAdd", "kind": "class", "doc": "

\n", "bases": "Func, TimeUnit"}, "sqlglot.expressions.TimestampSub": {"fullname": "sqlglot.expressions.TimestampSub", "modulename": "sqlglot.expressions", "qualname": "TimestampSub", "kind": "class", "doc": "

\n", "bases": "Func, TimeUnit"}, "sqlglot.expressions.TimestampDiff": {"fullname": "sqlglot.expressions.TimestampDiff", "modulename": "sqlglot.expressions", "qualname": "TimestampDiff", "kind": "class", "doc": "

\n", "bases": "Func, TimeUnit"}, "sqlglot.expressions.TimestampTrunc": {"fullname": "sqlglot.expressions.TimestampTrunc", "modulename": "sqlglot.expressions", "qualname": "TimestampTrunc", "kind": "class", "doc": "

\n", "bases": "Func, TimeUnit"}, "sqlglot.expressions.TimeAdd": {"fullname": "sqlglot.expressions.TimeAdd", "modulename": "sqlglot.expressions", "qualname": "TimeAdd", "kind": "class", "doc": "

\n", "bases": "Func, TimeUnit"}, "sqlglot.expressions.TimeSub": {"fullname": "sqlglot.expressions.TimeSub", "modulename": "sqlglot.expressions", "qualname": "TimeSub", "kind": "class", "doc": "

\n", "bases": "Func, TimeUnit"}, "sqlglot.expressions.TimeDiff": {"fullname": "sqlglot.expressions.TimeDiff", "modulename": "sqlglot.expressions", "qualname": "TimeDiff", "kind": "class", "doc": "

\n", "bases": "Func, TimeUnit"}, "sqlglot.expressions.TimeTrunc": {"fullname": "sqlglot.expressions.TimeTrunc", "modulename": "sqlglot.expressions", "qualname": "TimeTrunc", "kind": "class", "doc": "

\n", "bases": "Func, TimeUnit"}, "sqlglot.expressions.DateFromParts": {"fullname": "sqlglot.expressions.DateFromParts", "modulename": "sqlglot.expressions", "qualname": "DateFromParts", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.DateStrToDate": {"fullname": "sqlglot.expressions.DateStrToDate", "modulename": "sqlglot.expressions", "qualname": "DateStrToDate", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.DateToDateStr": {"fullname": "sqlglot.expressions.DateToDateStr", "modulename": "sqlglot.expressions", "qualname": "DateToDateStr", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.DateToDi": {"fullname": "sqlglot.expressions.DateToDi", "modulename": "sqlglot.expressions", "qualname": "DateToDi", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.Day": {"fullname": "sqlglot.expressions.Day", "modulename": "sqlglot.expressions", "qualname": "Day", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.Decode": {"fullname": "sqlglot.expressions.Decode", "modulename": "sqlglot.expressions", "qualname": "Decode", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.DiToDate": {"fullname": "sqlglot.expressions.DiToDate", "modulename": "sqlglot.expressions", "qualname": "DiToDate", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.Encode": {"fullname": "sqlglot.expressions.Encode", "modulename": "sqlglot.expressions", "qualname": "Encode", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.Exp": {"fullname": "sqlglot.expressions.Exp", "modulename": "sqlglot.expressions", "qualname": "Exp", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.Explode": {"fullname": "sqlglot.expressions.Explode", "modulename": "sqlglot.expressions", "qualname": "Explode", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.ExponentialTimeDecayedAvg": {"fullname": "sqlglot.expressions.ExponentialTimeDecayedAvg", "modulename": "sqlglot.expressions", "qualname": "ExponentialTimeDecayedAvg", "kind": "class", "doc": "

\n", "bases": "AggFunc"}, "sqlglot.expressions.Floor": {"fullname": "sqlglot.expressions.Floor", "modulename": "sqlglot.expressions", "qualname": "Floor", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.Greatest": {"fullname": "sqlglot.expressions.Greatest", "modulename": "sqlglot.expressions", "qualname": "Greatest", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.GroupConcat": {"fullname": "sqlglot.expressions.GroupConcat", "modulename": "sqlglot.expressions", "qualname": "GroupConcat", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.GroupUniqArray": {"fullname": "sqlglot.expressions.GroupUniqArray", "modulename": "sqlglot.expressions", "qualname": "GroupUniqArray", "kind": "class", "doc": "

\n", "bases": "AggFunc"}, "sqlglot.expressions.Hex": {"fullname": "sqlglot.expressions.Hex", "modulename": "sqlglot.expressions", "qualname": "Hex", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.Histogram": {"fullname": "sqlglot.expressions.Histogram", "modulename": "sqlglot.expressions", "qualname": "Histogram", "kind": "class", "doc": "

\n", "bases": "AggFunc"}, "sqlglot.expressions.If": {"fullname": "sqlglot.expressions.If", "modulename": "sqlglot.expressions", "qualname": "If", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.IfNull": {"fullname": "sqlglot.expressions.IfNull", "modulename": "sqlglot.expressions", "qualname": "IfNull", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.Initcap": {"fullname": "sqlglot.expressions.Initcap", "modulename": "sqlglot.expressions", "qualname": "Initcap", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.JSONKeyValue": {"fullname": "sqlglot.expressions.JSONKeyValue", "modulename": "sqlglot.expressions", "qualname": "JSONKeyValue", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.JSONObject": {"fullname": "sqlglot.expressions.JSONObject", "modulename": "sqlglot.expressions", "qualname": "JSONObject", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.JSONBContains": {"fullname": "sqlglot.expressions.JSONBContains", "modulename": "sqlglot.expressions", "qualname": "JSONBContains", "kind": "class", "doc": "

\n", "bases": "Binary"}, "sqlglot.expressions.JSONExtract": {"fullname": "sqlglot.expressions.JSONExtract", "modulename": "sqlglot.expressions", "qualname": "JSONExtract", "kind": "class", "doc": "

\n", "bases": "Binary, Func"}, "sqlglot.expressions.JSONExtractScalar": {"fullname": "sqlglot.expressions.JSONExtractScalar", "modulename": "sqlglot.expressions", "qualname": "JSONExtractScalar", "kind": "class", "doc": "

\n", "bases": "JSONExtract"}, "sqlglot.expressions.JSONBExtract": {"fullname": "sqlglot.expressions.JSONBExtract", "modulename": "sqlglot.expressions", "qualname": "JSONBExtract", "kind": "class", "doc": "

\n", "bases": "JSONExtract"}, "sqlglot.expressions.JSONBExtractScalar": {"fullname": "sqlglot.expressions.JSONBExtractScalar", "modulename": "sqlglot.expressions", "qualname": "JSONBExtractScalar", "kind": "class", "doc": "

\n", "bases": "JSONExtract"}, "sqlglot.expressions.JSONFormat": {"fullname": "sqlglot.expressions.JSONFormat", "modulename": "sqlglot.expressions", "qualname": "JSONFormat", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.Least": {"fullname": "sqlglot.expressions.Least", "modulename": "sqlglot.expressions", "qualname": "Least", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.Length": {"fullname": "sqlglot.expressions.Length", "modulename": "sqlglot.expressions", "qualname": "Length", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.Levenshtein": {"fullname": "sqlglot.expressions.Levenshtein", "modulename": "sqlglot.expressions", "qualname": "Levenshtein", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.Ln": {"fullname": "sqlglot.expressions.Ln", "modulename": "sqlglot.expressions", "qualname": "Ln", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.Log": {"fullname": "sqlglot.expressions.Log", "modulename": "sqlglot.expressions", "qualname": "Log", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.Log2": {"fullname": "sqlglot.expressions.Log2", "modulename": "sqlglot.expressions", "qualname": "Log2", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.Log10": {"fullname": "sqlglot.expressions.Log10", "modulename": "sqlglot.expressions", "qualname": "Log10", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.LogicalOr": {"fullname": "sqlglot.expressions.LogicalOr", "modulename": "sqlglot.expressions", "qualname": "LogicalOr", "kind": "class", "doc": "

\n", "bases": "AggFunc"}, "sqlglot.expressions.LogicalAnd": {"fullname": "sqlglot.expressions.LogicalAnd", "modulename": "sqlglot.expressions", "qualname": "LogicalAnd", "kind": "class", "doc": "

\n", "bases": "AggFunc"}, "sqlglot.expressions.Lower": {"fullname": "sqlglot.expressions.Lower", "modulename": "sqlglot.expressions", "qualname": "Lower", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.Map": {"fullname": "sqlglot.expressions.Map", "modulename": "sqlglot.expressions", "qualname": "Map", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.VarMap": {"fullname": "sqlglot.expressions.VarMap", "modulename": "sqlglot.expressions", "qualname": "VarMap", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.MatchAgainst": {"fullname": "sqlglot.expressions.MatchAgainst", "modulename": "sqlglot.expressions", "qualname": "MatchAgainst", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.Max": {"fullname": "sqlglot.expressions.Max", "modulename": "sqlglot.expressions", "qualname": "Max", "kind": "class", "doc": "

\n", "bases": "AggFunc"}, "sqlglot.expressions.Min": {"fullname": "sqlglot.expressions.Min", "modulename": "sqlglot.expressions", "qualname": "Min", "kind": "class", "doc": "

\n", "bases": "AggFunc"}, "sqlglot.expressions.Month": {"fullname": "sqlglot.expressions.Month", "modulename": "sqlglot.expressions", "qualname": "Month", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.Nvl2": {"fullname": "sqlglot.expressions.Nvl2", "modulename": "sqlglot.expressions", "qualname": "Nvl2", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.Posexplode": {"fullname": "sqlglot.expressions.Posexplode", "modulename": "sqlglot.expressions", "qualname": "Posexplode", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.Pow": {"fullname": "sqlglot.expressions.Pow", "modulename": "sqlglot.expressions", "qualname": "Pow", "kind": "class", "doc": "

\n", "bases": "Binary, Func"}, "sqlglot.expressions.PercentileCont": {"fullname": "sqlglot.expressions.PercentileCont", "modulename": "sqlglot.expressions", "qualname": "PercentileCont", "kind": "class", "doc": "

\n", "bases": "AggFunc"}, "sqlglot.expressions.PercentileDisc": {"fullname": "sqlglot.expressions.PercentileDisc", "modulename": "sqlglot.expressions", "qualname": "PercentileDisc", "kind": "class", "doc": "

\n", "bases": "AggFunc"}, "sqlglot.expressions.Quantile": {"fullname": "sqlglot.expressions.Quantile", "modulename": "sqlglot.expressions", "qualname": "Quantile", "kind": "class", "doc": "

\n", "bases": "AggFunc"}, "sqlglot.expressions.Quantiles": {"fullname": "sqlglot.expressions.Quantiles", "modulename": "sqlglot.expressions", "qualname": "Quantiles", "kind": "class", "doc": "

\n", "bases": "AggFunc"}, "sqlglot.expressions.QuantileIf": {"fullname": "sqlglot.expressions.QuantileIf", "modulename": "sqlglot.expressions", "qualname": "QuantileIf", "kind": "class", "doc": "

\n", "bases": "AggFunc"}, "sqlglot.expressions.ApproxQuantile": {"fullname": "sqlglot.expressions.ApproxQuantile", "modulename": "sqlglot.expressions", "qualname": "ApproxQuantile", "kind": "class", "doc": "

\n", "bases": "Quantile"}, "sqlglot.expressions.RangeN": {"fullname": "sqlglot.expressions.RangeN", "modulename": "sqlglot.expressions", "qualname": "RangeN", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.ReadCSV": {"fullname": "sqlglot.expressions.ReadCSV", "modulename": "sqlglot.expressions", "qualname": "ReadCSV", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.Reduce": {"fullname": "sqlglot.expressions.Reduce", "modulename": "sqlglot.expressions", "qualname": "Reduce", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.RegexpExtract": {"fullname": "sqlglot.expressions.RegexpExtract", "modulename": "sqlglot.expressions", "qualname": "RegexpExtract", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.RegexpLike": {"fullname": "sqlglot.expressions.RegexpLike", "modulename": "sqlglot.expressions", "qualname": "RegexpLike", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.RegexpILike": {"fullname": "sqlglot.expressions.RegexpILike", "modulename": "sqlglot.expressions", "qualname": "RegexpILike", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.RegexpSplit": {"fullname": "sqlglot.expressions.RegexpSplit", "modulename": "sqlglot.expressions", "qualname": "RegexpSplit", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.Repeat": {"fullname": "sqlglot.expressions.Repeat", "modulename": "sqlglot.expressions", "qualname": "Repeat", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.Round": {"fullname": "sqlglot.expressions.Round", "modulename": "sqlglot.expressions", "qualname": "Round", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.RowNumber": {"fullname": "sqlglot.expressions.RowNumber", "modulename": "sqlglot.expressions", "qualname": "RowNumber", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.SafeDivide": {"fullname": "sqlglot.expressions.SafeDivide", "modulename": "sqlglot.expressions", "qualname": "SafeDivide", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.SetAgg": {"fullname": "sqlglot.expressions.SetAgg", "modulename": "sqlglot.expressions", "qualname": "SetAgg", "kind": "class", "doc": "

\n", "bases": "AggFunc"}, "sqlglot.expressions.SortArray": {"fullname": "sqlglot.expressions.SortArray", "modulename": "sqlglot.expressions", "qualname": "SortArray", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.Split": {"fullname": "sqlglot.expressions.Split", "modulename": "sqlglot.expressions", "qualname": "Split", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.Substring": {"fullname": "sqlglot.expressions.Substring", "modulename": "sqlglot.expressions", "qualname": "Substring", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.StrPosition": {"fullname": "sqlglot.expressions.StrPosition", "modulename": "sqlglot.expressions", "qualname": "StrPosition", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.StrToDate": {"fullname": "sqlglot.expressions.StrToDate", "modulename": "sqlglot.expressions", "qualname": "StrToDate", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.StrToTime": {"fullname": "sqlglot.expressions.StrToTime", "modulename": "sqlglot.expressions", "qualname": "StrToTime", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.StrToUnix": {"fullname": "sqlglot.expressions.StrToUnix", "modulename": "sqlglot.expressions", "qualname": "StrToUnix", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.NumberToStr": {"fullname": "sqlglot.expressions.NumberToStr", "modulename": "sqlglot.expressions", "qualname": "NumberToStr", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.Struct": {"fullname": "sqlglot.expressions.Struct", "modulename": "sqlglot.expressions", "qualname": "Struct", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.StructExtract": {"fullname": "sqlglot.expressions.StructExtract", "modulename": "sqlglot.expressions", "qualname": "StructExtract", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.Sum": {"fullname": "sqlglot.expressions.Sum", "modulename": "sqlglot.expressions", "qualname": "Sum", "kind": "class", "doc": "

\n", "bases": "AggFunc"}, "sqlglot.expressions.Sqrt": {"fullname": "sqlglot.expressions.Sqrt", "modulename": "sqlglot.expressions", "qualname": "Sqrt", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.Stddev": {"fullname": "sqlglot.expressions.Stddev", "modulename": "sqlglot.expressions", "qualname": "Stddev", "kind": "class", "doc": "

\n", "bases": "AggFunc"}, "sqlglot.expressions.StddevPop": {"fullname": "sqlglot.expressions.StddevPop", "modulename": "sqlglot.expressions", "qualname": "StddevPop", "kind": "class", "doc": "

\n", "bases": "AggFunc"}, "sqlglot.expressions.StddevSamp": {"fullname": "sqlglot.expressions.StddevSamp", "modulename": "sqlglot.expressions", "qualname": "StddevSamp", "kind": "class", "doc": "

\n", "bases": "AggFunc"}, "sqlglot.expressions.TimeToStr": {"fullname": "sqlglot.expressions.TimeToStr", "modulename": "sqlglot.expressions", "qualname": "TimeToStr", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.TimeToTimeStr": {"fullname": "sqlglot.expressions.TimeToTimeStr", "modulename": "sqlglot.expressions", "qualname": "TimeToTimeStr", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.TimeToUnix": {"fullname": "sqlglot.expressions.TimeToUnix", "modulename": "sqlglot.expressions", "qualname": "TimeToUnix", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.TimeStrToDate": {"fullname": "sqlglot.expressions.TimeStrToDate", "modulename": "sqlglot.expressions", "qualname": "TimeStrToDate", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.TimeStrToTime": {"fullname": "sqlglot.expressions.TimeStrToTime", "modulename": "sqlglot.expressions", "qualname": "TimeStrToTime", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.TimeStrToUnix": {"fullname": "sqlglot.expressions.TimeStrToUnix", "modulename": "sqlglot.expressions", "qualname": "TimeStrToUnix", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.Trim": {"fullname": "sqlglot.expressions.Trim", "modulename": "sqlglot.expressions", "qualname": "Trim", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.TsOrDsAdd": {"fullname": "sqlglot.expressions.TsOrDsAdd", "modulename": "sqlglot.expressions", "qualname": "TsOrDsAdd", "kind": "class", "doc": "

\n", "bases": "Func, TimeUnit"}, "sqlglot.expressions.TsOrDsToDateStr": {"fullname": "sqlglot.expressions.TsOrDsToDateStr", "modulename": "sqlglot.expressions", "qualname": "TsOrDsToDateStr", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.TsOrDsToDate": {"fullname": "sqlglot.expressions.TsOrDsToDate", "modulename": "sqlglot.expressions", "qualname": "TsOrDsToDate", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.TsOrDiToDi": {"fullname": "sqlglot.expressions.TsOrDiToDi", "modulename": "sqlglot.expressions", "qualname": "TsOrDiToDi", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.Unhex": {"fullname": "sqlglot.expressions.Unhex", "modulename": "sqlglot.expressions", "qualname": "Unhex", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.UnixToStr": {"fullname": "sqlglot.expressions.UnixToStr", "modulename": "sqlglot.expressions", "qualname": "UnixToStr", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.UnixToTime": {"fullname": "sqlglot.expressions.UnixToTime", "modulename": "sqlglot.expressions", "qualname": "UnixToTime", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.UnixToTimeStr": {"fullname": "sqlglot.expressions.UnixToTimeStr", "modulename": "sqlglot.expressions", "qualname": "UnixToTimeStr", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.Upper": {"fullname": "sqlglot.expressions.Upper", "modulename": "sqlglot.expressions", "qualname": "Upper", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.Variance": {"fullname": "sqlglot.expressions.Variance", "modulename": "sqlglot.expressions", "qualname": "Variance", "kind": "class", "doc": "

\n", "bases": "AggFunc"}, "sqlglot.expressions.VariancePop": {"fullname": "sqlglot.expressions.VariancePop", "modulename": "sqlglot.expressions", "qualname": "VariancePop", "kind": "class", "doc": "

\n", "bases": "AggFunc"}, "sqlglot.expressions.Week": {"fullname": "sqlglot.expressions.Week", "modulename": "sqlglot.expressions", "qualname": "Week", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.XMLTable": {"fullname": "sqlglot.expressions.XMLTable", "modulename": "sqlglot.expressions", "qualname": "XMLTable", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.Year": {"fullname": "sqlglot.expressions.Year", "modulename": "sqlglot.expressions", "qualname": "Year", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.Use": {"fullname": "sqlglot.expressions.Use", "modulename": "sqlglot.expressions", "qualname": "Use", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Merge": {"fullname": "sqlglot.expressions.Merge", "modulename": "sqlglot.expressions", "qualname": "Merge", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.When": {"fullname": "sqlglot.expressions.When", "modulename": "sqlglot.expressions", "qualname": "When", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.maybe_parse": {"fullname": "sqlglot.expressions.maybe_parse", "modulename": "sqlglot.expressions", "qualname": "maybe_parse", "kind": "function", "doc": "

Gracefully handle a possible string or expression.

\n\n
Example:
\n\n
\n
\n
>>> maybe_parse("1")\n(LITERAL this: 1, is_string: False)\n>>> maybe_parse(to_identifier("x"))\n(IDENTIFIER this: x, quoted: False)\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • sql_or_expression: the SQL code string or an expression
  • \n
  • into: the SQLGlot Expression to parse into
  • \n
  • dialect: the dialect used to parse the input expressions (in the case that an\ninput expression is a SQL string).
  • \n
  • prefix: a string to prefix the sql with before it gets parsed\n(automatically includes a space)
  • \n
  • copy: whether or not to copy the expression.
  • \n
  • **opts: other options to use to parse the input expressions (again, in the case\nthat an input expression is a SQL string).
  • \n
\n\n
Returns:
\n\n
\n

Expression: the parsed or given expression.

\n
\n", "signature": "(\tsql_or_expression: Union[str, sqlglot.expressions.Expression],\t*,\tinto: Union[str, Type[sqlglot.expressions.Expression], Collection[Union[str, Type[sqlglot.expressions.Expression]]], NoneType] = None,\tdialect: Union[str, sqlglot.dialects.dialect.Dialect, Type[sqlglot.dialects.dialect.Dialect], NoneType] = None,\tprefix: Optional[str] = None,\tcopy: bool = False,\t**opts) -> sqlglot.expressions.Expression:", "funcdef": "def"}, "sqlglot.expressions.union": {"fullname": "sqlglot.expressions.union", "modulename": "sqlglot.expressions", "qualname": "union", "kind": "function", "doc": "

Initializes a syntax tree from one UNION expression.

\n\n
Example:
\n\n
\n
\n
>>> union("SELECT * FROM foo", "SELECT * FROM bla").sql()\n'SELECT * FROM foo UNION SELECT * FROM bla'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • left (str | Expression): the SQL code string corresponding to the left-hand side.\nIf an Expression instance is passed, it will be used as-is.
  • \n
  • right (str | Expression): the SQL code string corresponding to the right-hand side.\nIf an Expression instance is passed, it will be used as-is.
  • \n
  • distinct (bool): set the DISTINCT flag if and only if this is true.
  • \n
  • dialect (str): the dialect used to parse the input expression.
  • \n
  • opts (kwargs): other options to use to parse the input expressions.
  • \n
\n\n
Returns:
\n\n
\n

Union: the syntax tree for the UNION expression.

\n
\n", "signature": "(left, right, distinct=True, dialect=None, **opts):", "funcdef": "def"}, "sqlglot.expressions.intersect": {"fullname": "sqlglot.expressions.intersect", "modulename": "sqlglot.expressions", "qualname": "intersect", "kind": "function", "doc": "

Initializes a syntax tree from one INTERSECT expression.

\n\n
Example:
\n\n
\n
\n
>>> intersect("SELECT * FROM foo", "SELECT * FROM bla").sql()\n'SELECT * FROM foo INTERSECT SELECT * FROM bla'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • left (str | Expression): the SQL code string corresponding to the left-hand side.\nIf an Expression instance is passed, it will be used as-is.
  • \n
  • right (str | Expression): the SQL code string corresponding to the right-hand side.\nIf an Expression instance is passed, it will be used as-is.
  • \n
  • distinct (bool): set the DISTINCT flag if and only if this is true.
  • \n
  • dialect (str): the dialect used to parse the input expression.
  • \n
  • opts (kwargs): other options to use to parse the input expressions.
  • \n
\n\n
Returns:
\n\n
\n

Intersect: the syntax tree for the INTERSECT expression.

\n
\n", "signature": "(left, right, distinct=True, dialect=None, **opts):", "funcdef": "def"}, "sqlglot.expressions.except_": {"fullname": "sqlglot.expressions.except_", "modulename": "sqlglot.expressions", "qualname": "except_", "kind": "function", "doc": "

Initializes a syntax tree from one EXCEPT expression.

\n\n
Example:
\n\n
\n
\n
>>> except_("SELECT * FROM foo", "SELECT * FROM bla").sql()\n'SELECT * FROM foo EXCEPT SELECT * FROM bla'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • left (str | Expression): the SQL code string corresponding to the left-hand side.\nIf an Expression instance is passed, it will be used as-is.
  • \n
  • right (str | Expression): the SQL code string corresponding to the right-hand side.\nIf an Expression instance is passed, it will be used as-is.
  • \n
  • distinct (bool): set the DISTINCT flag if and only if this is true.
  • \n
  • dialect (str): the dialect used to parse the input expression.
  • \n
  • opts (kwargs): other options to use to parse the input expressions.
  • \n
\n\n
Returns:
\n\n
\n

Except: the syntax tree for the EXCEPT statement.

\n
\n", "signature": "(left, right, distinct=True, dialect=None, **opts):", "funcdef": "def"}, "sqlglot.expressions.select": {"fullname": "sqlglot.expressions.select", "modulename": "sqlglot.expressions", "qualname": "select", "kind": "function", "doc": "

Initializes a syntax tree from one or multiple SELECT expressions.

\n\n
Example:
\n\n
\n
\n
>>> select("col1", "col2").from_("tbl").sql()\n'SELECT col1, col2 FROM tbl'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • *expressions: the SQL code string to parse as the expressions of a\nSELECT statement. If an Expression instance is passed, this is used as-is.
  • \n
  • dialect: the dialect used to parse the input expressions (in the case that an\ninput expression is a SQL string).
  • \n
  • **opts: other options to use to parse the input expressions (again, in the case\nthat an input expression is a SQL string).
  • \n
\n\n
Returns:
\n\n
\n

Select: the syntax tree for the SELECT statement.

\n
\n", "signature": "(\t*expressions: Union[str, sqlglot.expressions.Expression],\tdialect: Union[str, sqlglot.dialects.dialect.Dialect, Type[sqlglot.dialects.dialect.Dialect], NoneType] = None,\t**opts) -> sqlglot.expressions.Select:", "funcdef": "def"}, "sqlglot.expressions.from_": {"fullname": "sqlglot.expressions.from_", "modulename": "sqlglot.expressions", "qualname": "from_", "kind": "function", "doc": "

Initializes a syntax tree from a FROM expression.

\n\n
Example:
\n\n
\n
\n
>>> from_("tbl").select("col1", "col2").sql()\n'SELECT col1, col2 FROM tbl'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • *expressions (str | Expression): the SQL code string to parse as the FROM expressions of a\nSELECT statement. If an Expression instance is passed, this is used as-is.
  • \n
  • dialect (str): the dialect used to parse the input expression (in the case that the\ninput expression is a SQL string).
  • \n
  • **opts: other options to use to parse the input expressions (again, in the case\nthat the input expression is a SQL string).
  • \n
\n\n
Returns:
\n\n
\n

Select: the syntax tree for the SELECT statement.

\n
\n", "signature": "(*expressions, dialect=None, **opts) -> sqlglot.expressions.Select:", "funcdef": "def"}, "sqlglot.expressions.update": {"fullname": "sqlglot.expressions.update", "modulename": "sqlglot.expressions", "qualname": "update", "kind": "function", "doc": "

Creates an update statement.

\n\n
Example:
\n\n
\n
\n
>>> update("my_table", {"x": 1, "y": "2", "z": None}, from_="baz", where="id > 1").sql()\n"UPDATE my_table SET x = 1, y = '2', z = NULL FROM baz WHERE id > 1"\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • *properties: dictionary of properties to set which are\nauto converted to sql objects eg None -> NULL
  • \n
  • where: sql conditional parsed into a WHERE statement
  • \n
  • from_: sql statement parsed into a FROM statement
  • \n
  • dialect: the dialect used to parse the input expressions.
  • \n
  • **opts: other options to use to parse the input expressions.
  • \n
\n\n
Returns:
\n\n
\n

Update: the syntax tree for the UPDATE statement.

\n
\n", "signature": "(\ttable: str | sqlglot.expressions.Table,\tproperties: dict,\twhere: Union[str, sqlglot.expressions.Expression, NoneType] = None,\tfrom_: Union[str, sqlglot.expressions.Expression, NoneType] = None,\tdialect: Union[str, sqlglot.dialects.dialect.Dialect, Type[sqlglot.dialects.dialect.Dialect], NoneType] = None,\t**opts) -> sqlglot.expressions.Update:", "funcdef": "def"}, "sqlglot.expressions.delete": {"fullname": "sqlglot.expressions.delete", "modulename": "sqlglot.expressions", "qualname": "delete", "kind": "function", "doc": "

Builds a delete statement.

\n\n
Example:
\n\n
\n
\n
>>> delete("my_table", where="id > 1").sql()\n'DELETE FROM my_table WHERE id > 1'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • where: sql conditional parsed into a WHERE statement
  • \n
  • returning: sql conditional parsed into a RETURNING statement
  • \n
  • dialect: the dialect used to parse the input expressions.
  • \n
  • **opts: other options to use to parse the input expressions.
  • \n
\n\n
Returns:
\n\n
\n

Delete: the syntax tree for the DELETE statement.

\n
\n", "signature": "(\ttable: Union[str, sqlglot.expressions.Expression],\twhere: Union[str, sqlglot.expressions.Expression, NoneType] = None,\treturning: Union[str, sqlglot.expressions.Expression, NoneType] = None,\tdialect: Union[str, sqlglot.dialects.dialect.Dialect, Type[sqlglot.dialects.dialect.Dialect], NoneType] = None,\t**opts) -> sqlglot.expressions.Delete:", "funcdef": "def"}, "sqlglot.expressions.condition": {"fullname": "sqlglot.expressions.condition", "modulename": "sqlglot.expressions", "qualname": "condition", "kind": "function", "doc": "

Initialize a logical condition expression.

\n\n
Example:
\n\n
\n
\n
>>> condition("x=1").sql()\n'x = 1'\n
\n
\n \n

This is helpful for composing larger logical syntax trees:

\n \n
\n
>>> where = condition("x=1")\n>>> where = where.and_("y=1")\n>>> Select().from_("tbl").select("*").where(where).sql()\n'SELECT * FROM tbl WHERE x = 1 AND y = 1'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • *expression (str | Expression): the SQL code string to parse.\nIf an Expression instance is passed, this is used as-is.
  • \n
  • dialect (str): the dialect used to parse the input expression (in the case that the\ninput expression is a SQL string).
  • \n
  • **opts: other options to use to parse the input expressions (again, in the case\nthat the input expression is a SQL string).
  • \n
\n\n
Returns:
\n\n
\n

Condition: the expression

\n
\n", "signature": "(expression, dialect=None, **opts) -> sqlglot.expressions.Condition:", "funcdef": "def"}, "sqlglot.expressions.and_": {"fullname": "sqlglot.expressions.and_", "modulename": "sqlglot.expressions", "qualname": "and_", "kind": "function", "doc": "

Combine multiple conditions with an AND logical operator.

\n\n
Example:
\n\n
\n
\n
>>> and_("x=1", and_("y=1", "z=1")).sql()\n'x = 1 AND (y = 1 AND z = 1)'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • *expressions (str | Expression): the SQL code strings to parse.\nIf an Expression instance is passed, this is used as-is.
  • \n
  • dialect (str): the dialect used to parse the input expression.
  • \n
  • **opts: other options to use to parse the input expressions.
  • \n
\n\n
Returns:
\n\n
\n

And: the new condition

\n
\n", "signature": "(*expressions, dialect=None, **opts) -> sqlglot.expressions.And:", "funcdef": "def"}, "sqlglot.expressions.or_": {"fullname": "sqlglot.expressions.or_", "modulename": "sqlglot.expressions", "qualname": "or_", "kind": "function", "doc": "

Combine multiple conditions with an OR logical operator.

\n\n
Example:
\n\n
\n
\n
>>> or_("x=1", or_("y=1", "z=1")).sql()\n'x = 1 OR (y = 1 OR z = 1)'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • *expressions (str | Expression): the SQL code strings to parse.\nIf an Expression instance is passed, this is used as-is.
  • \n
  • dialect (str): the dialect used to parse the input expression.
  • \n
  • **opts: other options to use to parse the input expressions.
  • \n
\n\n
Returns:
\n\n
\n

Or: the new condition

\n
\n", "signature": "(*expressions, dialect=None, **opts) -> sqlglot.expressions.Or:", "funcdef": "def"}, "sqlglot.expressions.not_": {"fullname": "sqlglot.expressions.not_", "modulename": "sqlglot.expressions", "qualname": "not_", "kind": "function", "doc": "

Wrap a condition with a NOT operator.

\n\n
Example:
\n\n
\n
\n
>>> not_("this_suit='black'").sql()\n"NOT this_suit = 'black'"\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • expression (str | Expression): the SQL code strings to parse.\nIf an Expression instance is passed, this is used as-is.
  • \n
  • dialect (str): the dialect used to parse the input expression.
  • \n
  • **opts: other options to use to parse the input expressions.
  • \n
\n\n
Returns:
\n\n
\n

Not: the new condition

\n
\n", "signature": "(expression, dialect=None, **opts) -> sqlglot.expressions.Not:", "funcdef": "def"}, "sqlglot.expressions.paren": {"fullname": "sqlglot.expressions.paren", "modulename": "sqlglot.expressions", "qualname": "paren", "kind": "function", "doc": "

\n", "signature": "(expression) -> sqlglot.expressions.Paren:", "funcdef": "def"}, "sqlglot.expressions.to_identifier": {"fullname": "sqlglot.expressions.to_identifier", "modulename": "sqlglot.expressions", "qualname": "to_identifier", "kind": "function", "doc": "

Builds an identifier.

\n\n
Arguments:
\n\n
    \n
  • name: The name to turn into an identifier.
  • \n
  • quoted: Whether or not force quote the identifier.
  • \n
\n\n
Returns:
\n\n
\n

The identifier ast node.

\n
\n", "signature": "(name, quoted=None):", "funcdef": "def"}, "sqlglot.expressions.to_interval": {"fullname": "sqlglot.expressions.to_interval", "modulename": "sqlglot.expressions", "qualname": "to_interval", "kind": "function", "doc": "

Builds an interval expression from a string like '1 day' or '5 months'.

\n", "signature": "(\tinterval: str | sqlglot.expressions.Literal) -> sqlglot.expressions.Interval:", "funcdef": "def"}, "sqlglot.expressions.to_table": {"fullname": "sqlglot.expressions.to_table", "modulename": "sqlglot.expressions", "qualname": "to_table", "kind": "function", "doc": "

Create a table expression from a [catalog].[schema].[table] sql path. Catalog and schema are optional.\nIf a table is passed in then that table is returned.

\n\n
Arguments:
\n\n
    \n
  • sql_path: a [catalog].[schema].[table] string.
  • \n
\n\n
Returns:
\n\n
\n

A table expression.

\n
\n", "signature": "(\tsql_path: Union[str, sqlglot.expressions.Table, NoneType],\t**kwargs) -> Optional[sqlglot.expressions.Table]:", "funcdef": "def"}, "sqlglot.expressions.to_column": {"fullname": "sqlglot.expressions.to_column", "modulename": "sqlglot.expressions", "qualname": "to_column", "kind": "function", "doc": "

Create a column from a [table].[column] sql path. Schema is optional.

\n\n

If a column is passed in then that column is returned.

\n\n
Arguments:
\n\n
    \n
  • sql_path: [table].[column] string
  • \n
\n\n
Returns:
\n\n
\n

Table: A column expression

\n
\n", "signature": "(\tsql_path: str | sqlglot.expressions.Column,\t**kwargs) -> sqlglot.expressions.Column:", "funcdef": "def"}, "sqlglot.expressions.alias_": {"fullname": "sqlglot.expressions.alias_", "modulename": "sqlglot.expressions", "qualname": "alias_", "kind": "function", "doc": "

Create an Alias expression.

\n\n
Example:
\n\n
\n
\n
>>> alias_('foo', 'bar').sql()\n'foo AS bar'\n
\n
\n \n
\n
>>> alias_('(select 1, 2)', 'bar', table=['a', 'b']).sql()\n'(SELECT 1, 2) AS bar(a, b)'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • expression: the SQL code strings to parse.\nIf an Expression instance is passed, this is used as-is.
  • \n
  • alias: the alias name to use. If the name has\nspecial characters it is quoted.
  • \n
  • table: Whether or not to create a table alias, can also be a list of columns.
  • \n
  • quoted: whether or not to quote the alias
  • \n
  • dialect: the dialect used to parse the input expression.
  • \n
  • **opts: other options to use to parse the input expressions.
  • \n
\n\n
Returns:
\n\n
\n

Alias: the aliased expression

\n
\n", "signature": "(\texpression: Union[str, sqlglot.expressions.Expression],\talias: str | sqlglot.expressions.Identifier,\ttable: Union[bool, Sequence[str | sqlglot.expressions.Identifier]] = False,\tquoted: Optional[bool] = None,\tdialect: Union[str, sqlglot.dialects.dialect.Dialect, Type[sqlglot.dialects.dialect.Dialect], NoneType] = None,\t**opts):", "funcdef": "def"}, "sqlglot.expressions.subquery": {"fullname": "sqlglot.expressions.subquery", "modulename": "sqlglot.expressions", "qualname": "subquery", "kind": "function", "doc": "

Build a subquery expression.

\n\n
Example:
\n\n
\n
\n
>>> subquery('select x from tbl', 'bar').select('x').sql()\n'SELECT x FROM (SELECT x FROM tbl) AS bar'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • expression (str | Expression): the SQL code strings to parse.\nIf an Expression instance is passed, this is used as-is.
  • \n
  • alias (str | Expression): the alias name to use.
  • \n
  • dialect (str): the dialect used to parse the input expression.
  • \n
  • **opts: other options to use to parse the input expressions.
  • \n
\n\n
Returns:
\n\n
\n

Select: a new select with the subquery expression included

\n
\n", "signature": "(expression, alias=None, dialect=None, **opts):", "funcdef": "def"}, "sqlglot.expressions.column": {"fullname": "sqlglot.expressions.column", "modulename": "sqlglot.expressions", "qualname": "column", "kind": "function", "doc": "

Build a Column.

\n\n
Arguments:
\n\n
    \n
  • col: column name
  • \n
  • table: table name
  • \n
  • db: db name
  • \n
  • catalog: catalog name
  • \n
  • quoted: whether or not to force quote each part
  • \n
\n\n
Returns:
\n\n
\n

Column: column instance

\n
\n", "signature": "(\tcol: str | sqlglot.expressions.Identifier,\ttable: Union[str, sqlglot.expressions.Identifier, NoneType] = None,\tdb: Union[str, sqlglot.expressions.Identifier, NoneType] = None,\tcatalog: Union[str, sqlglot.expressions.Identifier, NoneType] = None,\tquoted: Optional[bool] = None) -> sqlglot.expressions.Column:", "funcdef": "def"}, "sqlglot.expressions.cast": {"fullname": "sqlglot.expressions.cast", "modulename": "sqlglot.expressions", "qualname": "cast", "kind": "function", "doc": "

Cast an expression to a data type.

\n\n
Example:
\n\n
\n
\n
>>> cast('x + 1', 'int').sql()\n'CAST(x + 1 AS INT)'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • expression: The expression to cast.
  • \n
  • to: The datatype to cast to.
  • \n
\n\n
Returns:
\n\n
\n

A cast node.

\n
\n", "signature": "(\texpression: Union[str, sqlglot.expressions.Expression],\tto: str | sqlglot.expressions.DataType | sqlglot.expressions.DataType.Type,\t**opts) -> sqlglot.expressions.Cast:", "funcdef": "def"}, "sqlglot.expressions.table_": {"fullname": "sqlglot.expressions.table_", "modulename": "sqlglot.expressions", "qualname": "table_", "kind": "function", "doc": "

Build a Table.

\n\n
Arguments:
\n\n
    \n
  • table (str | Expression): column name
  • \n
  • db (str | Expression): db name
  • \n
  • catalog (str | Expression): catalog name
  • \n
\n\n
Returns:
\n\n
\n

Table: table instance

\n
\n", "signature": "(\ttable,\tdb=None,\tcatalog=None,\tquoted=None,\talias=None) -> sqlglot.expressions.Table:", "funcdef": "def"}, "sqlglot.expressions.values": {"fullname": "sqlglot.expressions.values", "modulename": "sqlglot.expressions", "qualname": "values", "kind": "function", "doc": "

Build VALUES statement.

\n\n
Example:
\n\n
\n
\n
>>> values([(1, '2')]).sql()\n"VALUES (1, '2')"\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • values: values statements that will be converted to SQL
  • \n
  • alias: optional alias
  • \n
  • columns: Optional list of ordered column names or ordered dictionary of column names to types.\nIf either are provided then an alias is also required.\nIf a dictionary is provided then the first column of the values will be casted to the expected type\nin order to help with type inference.
  • \n
\n\n
Returns:
\n\n
\n

Values: the Values expression object

\n
\n", "signature": "(\tvalues: Iterable[Tuple[Any, ...]],\talias: Optional[str] = None,\tcolumns: Union[Iterable[str], Dict[str, sqlglot.expressions.DataType], NoneType] = None) -> sqlglot.expressions.Values:", "funcdef": "def"}, "sqlglot.expressions.var": {"fullname": "sqlglot.expressions.var", "modulename": "sqlglot.expressions", "qualname": "var", "kind": "function", "doc": "

Build a SQL variable.

\n\n
Example:
\n\n
\n
\n
>>> repr(var('x'))\n'(VAR this: x)'\n
\n
\n \n
\n
>>> repr(var(column('x', table='y')))\n'(VAR this: x)'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • name: The name of the var or an expression who's name will become the var.
  • \n
\n\n
Returns:
\n\n
\n

The new variable node.

\n
\n", "signature": "(\tname: Union[str, sqlglot.expressions.Expression, NoneType]) -> sqlglot.expressions.Var:", "funcdef": "def"}, "sqlglot.expressions.rename_table": {"fullname": "sqlglot.expressions.rename_table", "modulename": "sqlglot.expressions", "qualname": "rename_table", "kind": "function", "doc": "

Build ALTER TABLE... RENAME... expression

\n\n
Arguments:
\n\n
    \n
  • old_name: The old name of the table
  • \n
  • new_name: The new name of the table
  • \n
\n\n
Returns:
\n\n
\n

Alter table expression

\n
\n", "signature": "(\told_name: str | sqlglot.expressions.Table,\tnew_name: str | sqlglot.expressions.Table) -> sqlglot.expressions.AlterTable:", "funcdef": "def"}, "sqlglot.expressions.convert": {"fullname": "sqlglot.expressions.convert", "modulename": "sqlglot.expressions", "qualname": "convert", "kind": "function", "doc": "

Convert a python value into an expression object.

\n\n

Raises an error if a conversion is not possible.

\n\n
Arguments:
\n\n
    \n
  • value (Any): a python object
  • \n
\n\n
Returns:
\n\n
\n

Expression: the equivalent expression object

\n
\n", "signature": "(value) -> sqlglot.expressions.Expression:", "funcdef": "def"}, "sqlglot.expressions.replace_children": {"fullname": "sqlglot.expressions.replace_children", "modulename": "sqlglot.expressions", "qualname": "replace_children", "kind": "function", "doc": "

Replace children of an expression with the result of a lambda fun(child) -> exp.

\n", "signature": "(expression, fun, *args, **kwargs):", "funcdef": "def"}, "sqlglot.expressions.column_table_names": {"fullname": "sqlglot.expressions.column_table_names", "modulename": "sqlglot.expressions", "qualname": "column_table_names", "kind": "function", "doc": "

Return all table names referenced through columns in an expression.

\n\n
Example:
\n\n
\n
\n
>>> import sqlglot\n>>> column_table_names(sqlglot.parse_one("a.b AND c.d AND c.e"))\n['c', 'a']\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • expression (sqlglot.Expression): expression to find table names
  • \n
\n\n
Returns:
\n\n
\n

list: A list of unique names

\n
\n", "signature": "(expression):", "funcdef": "def"}, "sqlglot.expressions.table_name": {"fullname": "sqlglot.expressions.table_name", "modulename": "sqlglot.expressions", "qualname": "table_name", "kind": "function", "doc": "

Get the full name of a table as a string.

\n\n
Arguments:
\n\n
    \n
  • table (exp.Table | str): table expression node or string.
  • \n
\n\n
Examples:
\n\n
\n
\n
>>> from sqlglot import exp, parse_one\n>>> table_name(parse_one("select * from a.b.c").find(exp.Table))\n'a.b.c'\n
\n
\n
\n\n
Returns:
\n\n
\n

The table name.

\n
\n", "signature": "(table) -> str:", "funcdef": "def"}, "sqlglot.expressions.replace_tables": {"fullname": "sqlglot.expressions.replace_tables", "modulename": "sqlglot.expressions", "qualname": "replace_tables", "kind": "function", "doc": "

Replace all tables in expression according to the mapping.

\n\n
Arguments:
\n\n
    \n
  • expression (sqlglot.Expression): expression node to be transformed and replaced.
  • \n
  • mapping (Dict[str, str]): mapping of table names.
  • \n
\n\n
Examples:
\n\n
\n
\n
>>> from sqlglot import exp, parse_one\n>>> replace_tables(parse_one("select * from a.b"), {"a.b": "c"}).sql()\n'SELECT * FROM c'\n
\n
\n
\n\n
Returns:
\n\n
\n

The mapped expression.

\n
\n", "signature": "(expression, mapping):", "funcdef": "def"}, "sqlglot.expressions.replace_placeholders": {"fullname": "sqlglot.expressions.replace_placeholders", "modulename": "sqlglot.expressions", "qualname": "replace_placeholders", "kind": "function", "doc": "

Replace placeholders in an expression.

\n\n
Arguments:
\n\n
    \n
  • expression (sqlglot.Expression): expression node to be transformed and replaced.
  • \n
  • args: positional names that will substitute unnamed placeholders in the given order.
  • \n
  • kwargs: keyword arguments that will substitute named placeholders.
  • \n
\n\n
Examples:
\n\n
\n
\n
>>> from sqlglot import exp, parse_one\n>>> replace_placeholders(\n...     parse_one("select * from :tbl where ? = ?"),\n...     exp.to_identifier("str_col"), "b", tbl=exp.to_identifier("foo")\n... ).sql()\n"SELECT * FROM foo WHERE str_col = 'b'"\n
\n
\n
\n\n
Returns:
\n\n
\n

The mapped expression.

\n
\n", "signature": "(expression, *args, **kwargs):", "funcdef": "def"}, "sqlglot.expressions.expand": {"fullname": "sqlglot.expressions.expand", "modulename": "sqlglot.expressions", "qualname": "expand", "kind": "function", "doc": "

Transforms an expression by expanding all referenced sources into subqueries.

\n\n
Examples:
\n\n
\n
\n
>>> from sqlglot import parse_one\n>>> expand(parse_one("select * from x AS z"), {"x": parse_one("select * from y")}).sql()\n'SELECT * FROM (SELECT * FROM y) AS z /* source: x */'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • expression: The expression to expand.
  • \n
  • sources: A dictionary of name to Subqueryables.
  • \n
  • copy: Whether or not to copy the expression during transformation. Defaults to True.
  • \n
\n\n
Returns:
\n\n
\n

The transformed expression.

\n
\n", "signature": "(\texpression: sqlglot.expressions.Expression,\tsources: Dict[str, sqlglot.expressions.Subqueryable],\tcopy=True) -> sqlglot.expressions.Expression:", "funcdef": "def"}, "sqlglot.expressions.func": {"fullname": "sqlglot.expressions.func", "modulename": "sqlglot.expressions", "qualname": "func", "kind": "function", "doc": "

Returns a Func expression.

\n\n
Examples:
\n\n
\n
\n
>>> func("abs", 5).sql()\n'ABS(5)'\n
\n
\n \n
\n
>>> func("cast", this=5, to=DataType.build("DOUBLE")).sql()\n'CAST(5 AS DOUBLE)'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • name: the name of the function to build.
  • \n
  • args: the args used to instantiate the function of interest.
  • \n
  • dialect: the source dialect.
  • \n
  • kwargs: the kwargs used to instantiate the function of interest.
  • \n
\n\n
Note:
\n\n
\n

The arguments args and kwargs are mutually exclusive.

\n
\n\n
Returns:
\n\n
\n

An instance of the function of interest, or an anonymous function, if name doesn't\n correspond to an existing sqlglot.expressions.Func class.

\n
\n", "signature": "(\tname: str,\t*args,\tdialect: Union[str, sqlglot.dialects.dialect.Dialect, Type[sqlglot.dialects.dialect.Dialect], NoneType] = None,\t**kwargs) -> sqlglot.expressions.Func:", "funcdef": "def"}, "sqlglot.expressions.true": {"fullname": "sqlglot.expressions.true", "modulename": "sqlglot.expressions", "qualname": "true", "kind": "function", "doc": "

Returns a true Boolean expression.

\n", "signature": "():", "funcdef": "def"}, "sqlglot.expressions.false": {"fullname": "sqlglot.expressions.false", "modulename": "sqlglot.expressions", "qualname": "false", "kind": "function", "doc": "

Returns a false Boolean expression.

\n", "signature": "():", "funcdef": "def"}, "sqlglot.expressions.null": {"fullname": "sqlglot.expressions.null", "modulename": "sqlglot.expressions", "qualname": "null", "kind": "function", "doc": "

Returns a Null expression.

\n", "signature": "():", "funcdef": "def"}, "sqlglot.generator": {"fullname": "sqlglot.generator", "modulename": "sqlglot.generator", "kind": "module", "doc": "

\n"}, "sqlglot.generator.Generator": {"fullname": "sqlglot.generator.Generator", "modulename": "sqlglot.generator", "qualname": "Generator", "kind": "class", "doc": "

Generator interprets the given syntax tree and produces a SQL string as an output.

\n\n
Arguments:
\n\n
    \n
  • time_mapping (dict): the dictionary of custom time mappings in which the key\nrepresents a python time format and the output the target time format
  • \n
  • time_trie (trie): a trie of the time_mapping keys
  • \n
  • pretty (bool): if set to True the returned string will be formatted. Default: False.
  • \n
  • quote_start (str): specifies which starting character to use to delimit quotes. Default: '.
  • \n
  • quote_end (str): specifies which ending character to use to delimit quotes. Default: '.
  • \n
  • identifier_start (str): specifies which starting character to use to delimit identifiers. Default: \".
  • \n
  • identifier_end (str): specifies which ending character to use to delimit identifiers. Default: \".
  • \n
  • identify (bool | str): 'always': always quote, 'safe': quote identifiers if they don't contain an upcase, True defaults to always.
  • \n
  • normalize (bool): if set to True all identifiers will lower cased
  • \n
  • string_escape (str): specifies a string escape character. Default: '.
  • \n
  • identifier_escape (str): specifies an identifier escape character. Default: \".
  • \n
  • pad (int): determines padding in a formatted string. Default: 2.
  • \n
  • indent (int): determines the size of indentation in a formatted string. Default: 4.
  • \n
  • unnest_column_only (bool): if true unnest table aliases are considered only as column aliases
  • \n
  • normalize_functions (str): normalize function names, \"upper\", \"lower\", or None\nDefault: \"upper\"
  • \n
  • alias_post_tablesample (bool): if the table alias comes after tablesample\nDefault: False
  • \n
  • unsupported_level (ErrorLevel): determines the generator's behavior when it encounters\nunsupported expressions. Default ErrorLevel.WARN.
  • \n
  • null_ordering (str): Indicates the default null ordering method to use if not explicitly set.\nOptions are \"nulls_are_small\", \"nulls_are_large\", \"nulls_are_last\".\nDefault: \"nulls_are_small\"
  • \n
  • max_unsupported (int): Maximum number of unsupported messages to include in a raised UnsupportedError.\nThis is only relevant if unsupported_level is ErrorLevel.RAISE.\nDefault: 3
  • \n
  • leading_comma (bool): if the the comma is leading or trailing in select statements\nDefault: False
  • \n
  • max_text_width: The max number of characters in a segment before creating new lines in pretty mode.\nThe default is on the smaller end because the length only represents a segment and not the true\nline length.\nDefault: 80
  • \n
  • comments: Whether or not to preserve comments in the output SQL code.\nDefault: True
  • \n
\n"}, "sqlglot.generator.Generator.__init__": {"fullname": "sqlglot.generator.Generator.__init__", "modulename": "sqlglot.generator", "qualname": "Generator.__init__", "kind": "function", "doc": "

\n", "signature": "(\ttime_mapping=None,\ttime_trie=None,\tpretty=None,\tquote_start=None,\tquote_end=None,\tidentifier_start=None,\tidentifier_end=None,\tidentify=False,\tnormalize=False,\tstring_escape=None,\tidentifier_escape=None,\tpad=2,\tindent=2,\tindex_offset=0,\tunnest_column_only=False,\talias_post_tablesample=False,\tnormalize_functions='upper',\tunsupported_level=<ErrorLevel.WARN: 'WARN'>,\tnull_ordering=None,\tmax_unsupported=3,\tleading_comma=False,\tmax_text_width=80,\tcomments=True)"}, "sqlglot.generator.Generator.generate": {"fullname": "sqlglot.generator.Generator.generate", "modulename": "sqlglot.generator", "qualname": "Generator.generate", "kind": "function", "doc": "

Generates a SQL string by interpreting the given syntax tree.

\n\n

Args\n expression: the syntax tree.\n cache: an optional sql string cache. this leverages the hash of an expression which is slow, so only use this if you set _hash on each node.

\n\n

Returns\n the SQL string.

\n", "signature": "(\tself,\texpression: Optional[sqlglot.expressions.Expression],\tcache: Optional[Dict[int, str]] = None) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.unsupported": {"fullname": "sqlglot.generator.Generator.unsupported", "modulename": "sqlglot.generator", "qualname": "Generator.unsupported", "kind": "function", "doc": "

\n", "signature": "(self, message: str) -> None:", "funcdef": "def"}, "sqlglot.generator.Generator.sep": {"fullname": "sqlglot.generator.Generator.sep", "modulename": "sqlglot.generator", "qualname": "Generator.sep", "kind": "function", "doc": "

\n", "signature": "(self, sep: str = ' ') -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.seg": {"fullname": "sqlglot.generator.Generator.seg", "modulename": "sqlglot.generator", "qualname": "Generator.seg", "kind": "function", "doc": "

\n", "signature": "(self, sql: str, sep: str = ' ') -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.pad_comment": {"fullname": "sqlglot.generator.Generator.pad_comment", "modulename": "sqlglot.generator", "qualname": "Generator.pad_comment", "kind": "function", "doc": "

\n", "signature": "(self, comment: str) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.maybe_comment": {"fullname": "sqlglot.generator.Generator.maybe_comment", "modulename": "sqlglot.generator", "qualname": "Generator.maybe_comment", "kind": "function", "doc": "

\n", "signature": "(self, sql: str, expression: sqlglot.expressions.Expression) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.wrap": {"fullname": "sqlglot.generator.Generator.wrap", "modulename": "sqlglot.generator", "qualname": "Generator.wrap", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Expression | str) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.no_identify": {"fullname": "sqlglot.generator.Generator.no_identify", "modulename": "sqlglot.generator", "qualname": "Generator.no_identify", "kind": "function", "doc": "

\n", "signature": "(self, func: Callable[..., str], *args, **kwargs) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.normalize_func": {"fullname": "sqlglot.generator.Generator.normalize_func", "modulename": "sqlglot.generator", "qualname": "Generator.normalize_func", "kind": "function", "doc": "

\n", "signature": "(self, name: str) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.indent": {"fullname": "sqlglot.generator.Generator.indent", "modulename": "sqlglot.generator", "qualname": "Generator.indent", "kind": "function", "doc": "

\n", "signature": "(\tself,\tsql: str,\tlevel: int = 0,\tpad: Optional[int] = None,\tskip_first: bool = False,\tskip_last: bool = False) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.sql": {"fullname": "sqlglot.generator.Generator.sql", "modulename": "sqlglot.generator", "qualname": "Generator.sql", "kind": "function", "doc": "

\n", "signature": "(\tself,\texpression: Union[str, sqlglot.expressions.Expression, NoneType],\tkey: Optional[str] = None,\tcomment: bool = True) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.uncache_sql": {"fullname": "sqlglot.generator.Generator.uncache_sql", "modulename": "sqlglot.generator", "qualname": "Generator.uncache_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Uncache) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.cache_sql": {"fullname": "sqlglot.generator.Generator.cache_sql", "modulename": "sqlglot.generator", "qualname": "Generator.cache_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Cache) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.characterset_sql": {"fullname": "sqlglot.generator.Generator.characterset_sql", "modulename": "sqlglot.generator", "qualname": "Generator.characterset_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.CharacterSet) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.column_sql": {"fullname": "sqlglot.generator.Generator.column_sql", "modulename": "sqlglot.generator", "qualname": "Generator.column_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Column) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.columnposition_sql": {"fullname": "sqlglot.generator.Generator.columnposition_sql", "modulename": "sqlglot.generator", "qualname": "Generator.columnposition_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.ColumnPosition) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.columndef_sql": {"fullname": "sqlglot.generator.Generator.columndef_sql", "modulename": "sqlglot.generator", "qualname": "Generator.columndef_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.ColumnDef) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.columnconstraint_sql": {"fullname": "sqlglot.generator.Generator.columnconstraint_sql", "modulename": "sqlglot.generator", "qualname": "Generator.columnconstraint_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.ColumnConstraint) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.autoincrementcolumnconstraint_sql": {"fullname": "sqlglot.generator.Generator.autoincrementcolumnconstraint_sql", "modulename": "sqlglot.generator", "qualname": "Generator.autoincrementcolumnconstraint_sql", "kind": "function", "doc": "

\n", "signature": "(self, _) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.compresscolumnconstraint_sql": {"fullname": "sqlglot.generator.Generator.compresscolumnconstraint_sql", "modulename": "sqlglot.generator", "qualname": "Generator.compresscolumnconstraint_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.CompressColumnConstraint) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.generatedasidentitycolumnconstraint_sql": {"fullname": "sqlglot.generator.Generator.generatedasidentitycolumnconstraint_sql", "modulename": "sqlglot.generator", "qualname": "Generator.generatedasidentitycolumnconstraint_sql", "kind": "function", "doc": "

\n", "signature": "(\tself,\texpression: sqlglot.expressions.GeneratedAsIdentityColumnConstraint) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.notnullcolumnconstraint_sql": {"fullname": "sqlglot.generator.Generator.notnullcolumnconstraint_sql", "modulename": "sqlglot.generator", "qualname": "Generator.notnullcolumnconstraint_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.NotNullColumnConstraint) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.primarykeycolumnconstraint_sql": {"fullname": "sqlglot.generator.Generator.primarykeycolumnconstraint_sql", "modulename": "sqlglot.generator", "qualname": "Generator.primarykeycolumnconstraint_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.PrimaryKeyColumnConstraint) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.uniquecolumnconstraint_sql": {"fullname": "sqlglot.generator.Generator.uniquecolumnconstraint_sql", "modulename": "sqlglot.generator", "qualname": "Generator.uniquecolumnconstraint_sql", "kind": "function", "doc": "

\n", "signature": "(self, _) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.create_sql": {"fullname": "sqlglot.generator.Generator.create_sql", "modulename": "sqlglot.generator", "qualname": "Generator.create_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Create) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.describe_sql": {"fullname": "sqlglot.generator.Generator.describe_sql", "modulename": "sqlglot.generator", "qualname": "Generator.describe_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Describe) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.prepend_ctes": {"fullname": "sqlglot.generator.Generator.prepend_ctes", "modulename": "sqlglot.generator", "qualname": "Generator.prepend_ctes", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Expression, sql: str) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.with_sql": {"fullname": "sqlglot.generator.Generator.with_sql", "modulename": "sqlglot.generator", "qualname": "Generator.with_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.With) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.cte_sql": {"fullname": "sqlglot.generator.Generator.cte_sql", "modulename": "sqlglot.generator", "qualname": "Generator.cte_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.CTE) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.tablealias_sql": {"fullname": "sqlglot.generator.Generator.tablealias_sql", "modulename": "sqlglot.generator", "qualname": "Generator.tablealias_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.TableAlias) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.bitstring_sql": {"fullname": "sqlglot.generator.Generator.bitstring_sql", "modulename": "sqlglot.generator", "qualname": "Generator.bitstring_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.BitString) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.hexstring_sql": {"fullname": "sqlglot.generator.Generator.hexstring_sql", "modulename": "sqlglot.generator", "qualname": "Generator.hexstring_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.HexString) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.datatype_sql": {"fullname": "sqlglot.generator.Generator.datatype_sql", "modulename": "sqlglot.generator", "qualname": "Generator.datatype_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.DataType) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.directory_sql": {"fullname": "sqlglot.generator.Generator.directory_sql", "modulename": "sqlglot.generator", "qualname": "Generator.directory_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Directory) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.delete_sql": {"fullname": "sqlglot.generator.Generator.delete_sql", "modulename": "sqlglot.generator", "qualname": "Generator.delete_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Delete) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.drop_sql": {"fullname": "sqlglot.generator.Generator.drop_sql", "modulename": "sqlglot.generator", "qualname": "Generator.drop_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Drop) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.except_sql": {"fullname": "sqlglot.generator.Generator.except_sql", "modulename": "sqlglot.generator", "qualname": "Generator.except_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Except) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.except_op": {"fullname": "sqlglot.generator.Generator.except_op", "modulename": "sqlglot.generator", "qualname": "Generator.except_op", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Except) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.fetch_sql": {"fullname": "sqlglot.generator.Generator.fetch_sql", "modulename": "sqlglot.generator", "qualname": "Generator.fetch_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Fetch) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.filter_sql": {"fullname": "sqlglot.generator.Generator.filter_sql", "modulename": "sqlglot.generator", "qualname": "Generator.filter_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Filter) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.hint_sql": {"fullname": "sqlglot.generator.Generator.hint_sql", "modulename": "sqlglot.generator", "qualname": "Generator.hint_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Hint) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.index_sql": {"fullname": "sqlglot.generator.Generator.index_sql", "modulename": "sqlglot.generator", "qualname": "Generator.index_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Index) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.identifier_sql": {"fullname": "sqlglot.generator.Generator.identifier_sql", "modulename": "sqlglot.generator", "qualname": "Generator.identifier_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Identifier) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.national_sql": {"fullname": "sqlglot.generator.Generator.national_sql", "modulename": "sqlglot.generator", "qualname": "Generator.national_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.National) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.partition_sql": {"fullname": "sqlglot.generator.Generator.partition_sql", "modulename": "sqlglot.generator", "qualname": "Generator.partition_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Partition) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.properties_sql": {"fullname": "sqlglot.generator.Generator.properties_sql", "modulename": "sqlglot.generator", "qualname": "Generator.properties_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Properties) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.root_properties": {"fullname": "sqlglot.generator.Generator.root_properties", "modulename": "sqlglot.generator", "qualname": "Generator.root_properties", "kind": "function", "doc": "

\n", "signature": "(self, properties: sqlglot.expressions.Properties) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.properties": {"fullname": "sqlglot.generator.Generator.properties", "modulename": "sqlglot.generator", "qualname": "Generator.properties", "kind": "function", "doc": "

\n", "signature": "(\tself,\tproperties: sqlglot.expressions.Properties,\tprefix: str = '',\tsep: str = ', ',\tsuffix: str = '',\twrapped: bool = True) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.with_properties": {"fullname": "sqlglot.generator.Generator.with_properties", "modulename": "sqlglot.generator", "qualname": "Generator.with_properties", "kind": "function", "doc": "

\n", "signature": "(self, properties: sqlglot.expressions.Properties) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.locate_properties": {"fullname": "sqlglot.generator.Generator.locate_properties", "modulename": "sqlglot.generator", "qualname": "Generator.locate_properties", "kind": "function", "doc": "

\n", "signature": "(\tself,\tproperties: sqlglot.expressions.Properties) -> Dict[sqlglot.expressions.Properties.Location, list[sqlglot.expressions.Property]]:", "funcdef": "def"}, "sqlglot.generator.Generator.property_sql": {"fullname": "sqlglot.generator.Generator.property_sql", "modulename": "sqlglot.generator", "qualname": "Generator.property_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Property) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.likeproperty_sql": {"fullname": "sqlglot.generator.Generator.likeproperty_sql", "modulename": "sqlglot.generator", "qualname": "Generator.likeproperty_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.LikeProperty) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.fallbackproperty_sql": {"fullname": "sqlglot.generator.Generator.fallbackproperty_sql", "modulename": "sqlglot.generator", "qualname": "Generator.fallbackproperty_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.FallbackProperty) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.journalproperty_sql": {"fullname": "sqlglot.generator.Generator.journalproperty_sql", "modulename": "sqlglot.generator", "qualname": "Generator.journalproperty_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.JournalProperty) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.freespaceproperty_sql": {"fullname": "sqlglot.generator.Generator.freespaceproperty_sql", "modulename": "sqlglot.generator", "qualname": "Generator.freespaceproperty_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.FreespaceProperty) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.afterjournalproperty_sql": {"fullname": "sqlglot.generator.Generator.afterjournalproperty_sql", "modulename": "sqlglot.generator", "qualname": "Generator.afterjournalproperty_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.AfterJournalProperty) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.checksumproperty_sql": {"fullname": "sqlglot.generator.Generator.checksumproperty_sql", "modulename": "sqlglot.generator", "qualname": "Generator.checksumproperty_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.ChecksumProperty) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.mergeblockratioproperty_sql": {"fullname": "sqlglot.generator.Generator.mergeblockratioproperty_sql", "modulename": "sqlglot.generator", "qualname": "Generator.mergeblockratioproperty_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.MergeBlockRatioProperty) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.datablocksizeproperty_sql": {"fullname": "sqlglot.generator.Generator.datablocksizeproperty_sql", "modulename": "sqlglot.generator", "qualname": "Generator.datablocksizeproperty_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.DataBlocksizeProperty) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.blockcompressionproperty_sql": {"fullname": "sqlglot.generator.Generator.blockcompressionproperty_sql", "modulename": "sqlglot.generator", "qualname": "Generator.blockcompressionproperty_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.BlockCompressionProperty) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.isolatedloadingproperty_sql": {"fullname": "sqlglot.generator.Generator.isolatedloadingproperty_sql", "modulename": "sqlglot.generator", "qualname": "Generator.isolatedloadingproperty_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.IsolatedLoadingProperty) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.lockingproperty_sql": {"fullname": "sqlglot.generator.Generator.lockingproperty_sql", "modulename": "sqlglot.generator", "qualname": "Generator.lockingproperty_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.LockingProperty) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.withdataproperty_sql": {"fullname": "sqlglot.generator.Generator.withdataproperty_sql", "modulename": "sqlglot.generator", "qualname": "Generator.withdataproperty_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.WithDataProperty) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.insert_sql": {"fullname": "sqlglot.generator.Generator.insert_sql", "modulename": "sqlglot.generator", "qualname": "Generator.insert_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Insert) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.intersect_sql": {"fullname": "sqlglot.generator.Generator.intersect_sql", "modulename": "sqlglot.generator", "qualname": "Generator.intersect_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Intersect) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.intersect_op": {"fullname": "sqlglot.generator.Generator.intersect_op", "modulename": "sqlglot.generator", "qualname": "Generator.intersect_op", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Intersect) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.introducer_sql": {"fullname": "sqlglot.generator.Generator.introducer_sql", "modulename": "sqlglot.generator", "qualname": "Generator.introducer_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Introducer) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.pseudotype_sql": {"fullname": "sqlglot.generator.Generator.pseudotype_sql", "modulename": "sqlglot.generator", "qualname": "Generator.pseudotype_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.PseudoType) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.returning_sql": {"fullname": "sqlglot.generator.Generator.returning_sql", "modulename": "sqlglot.generator", "qualname": "Generator.returning_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Returning) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.rowformatdelimitedproperty_sql": {"fullname": "sqlglot.generator.Generator.rowformatdelimitedproperty_sql", "modulename": "sqlglot.generator", "qualname": "Generator.rowformatdelimitedproperty_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.RowFormatDelimitedProperty) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.table_sql": {"fullname": "sqlglot.generator.Generator.table_sql", "modulename": "sqlglot.generator", "qualname": "Generator.table_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Table, sep: str = ' AS ') -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.tablesample_sql": {"fullname": "sqlglot.generator.Generator.tablesample_sql", "modulename": "sqlglot.generator", "qualname": "Generator.tablesample_sql", "kind": "function", "doc": "

\n", "signature": "(\tself,\texpression: sqlglot.expressions.TableSample,\tseed_prefix: str = 'SEED') -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.pivot_sql": {"fullname": "sqlglot.generator.Generator.pivot_sql", "modulename": "sqlglot.generator", "qualname": "Generator.pivot_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Pivot) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.tuple_sql": {"fullname": "sqlglot.generator.Generator.tuple_sql", "modulename": "sqlglot.generator", "qualname": "Generator.tuple_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Tuple) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.update_sql": {"fullname": "sqlglot.generator.Generator.update_sql", "modulename": "sqlglot.generator", "qualname": "Generator.update_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Update) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.values_sql": {"fullname": "sqlglot.generator.Generator.values_sql", "modulename": "sqlglot.generator", "qualname": "Generator.values_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Values) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.var_sql": {"fullname": "sqlglot.generator.Generator.var_sql", "modulename": "sqlglot.generator", "qualname": "Generator.var_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Var) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.into_sql": {"fullname": "sqlglot.generator.Generator.into_sql", "modulename": "sqlglot.generator", "qualname": "Generator.into_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Into) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.from_sql": {"fullname": "sqlglot.generator.Generator.from_sql", "modulename": "sqlglot.generator", "qualname": "Generator.from_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.From) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.group_sql": {"fullname": "sqlglot.generator.Generator.group_sql", "modulename": "sqlglot.generator", "qualname": "Generator.group_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Group) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.having_sql": {"fullname": "sqlglot.generator.Generator.having_sql", "modulename": "sqlglot.generator", "qualname": "Generator.having_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Having) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.join_sql": {"fullname": "sqlglot.generator.Generator.join_sql", "modulename": "sqlglot.generator", "qualname": "Generator.join_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Join) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.lambda_sql": {"fullname": "sqlglot.generator.Generator.lambda_sql", "modulename": "sqlglot.generator", "qualname": "Generator.lambda_sql", "kind": "function", "doc": "

\n", "signature": "(\tself,\texpression: sqlglot.expressions.Lambda,\tarrow_sep: str = '->') -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.lateral_sql": {"fullname": "sqlglot.generator.Generator.lateral_sql", "modulename": "sqlglot.generator", "qualname": "Generator.lateral_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Lateral) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.limit_sql": {"fullname": "sqlglot.generator.Generator.limit_sql", "modulename": "sqlglot.generator", "qualname": "Generator.limit_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Limit) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.offset_sql": {"fullname": "sqlglot.generator.Generator.offset_sql", "modulename": "sqlglot.generator", "qualname": "Generator.offset_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Offset) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.setitem_sql": {"fullname": "sqlglot.generator.Generator.setitem_sql", "modulename": "sqlglot.generator", "qualname": "Generator.setitem_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.SetItem) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.set_sql": {"fullname": "sqlglot.generator.Generator.set_sql", "modulename": "sqlglot.generator", "qualname": "Generator.set_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Set) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.pragma_sql": {"fullname": "sqlglot.generator.Generator.pragma_sql", "modulename": "sqlglot.generator", "qualname": "Generator.pragma_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Pragma) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.lock_sql": {"fullname": "sqlglot.generator.Generator.lock_sql", "modulename": "sqlglot.generator", "qualname": "Generator.lock_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Lock) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.literal_sql": {"fullname": "sqlglot.generator.Generator.literal_sql", "modulename": "sqlglot.generator", "qualname": "Generator.literal_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Literal) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.loaddata_sql": {"fullname": "sqlglot.generator.Generator.loaddata_sql", "modulename": "sqlglot.generator", "qualname": "Generator.loaddata_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.LoadData) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.null_sql": {"fullname": "sqlglot.generator.Generator.null_sql", "modulename": "sqlglot.generator", "qualname": "Generator.null_sql", "kind": "function", "doc": "

\n", "signature": "(self, *_) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.boolean_sql": {"fullname": "sqlglot.generator.Generator.boolean_sql", "modulename": "sqlglot.generator", "qualname": "Generator.boolean_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Boolean) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.order_sql": {"fullname": "sqlglot.generator.Generator.order_sql", "modulename": "sqlglot.generator", "qualname": "Generator.order_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Order, flat: bool = False) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.cluster_sql": {"fullname": "sqlglot.generator.Generator.cluster_sql", "modulename": "sqlglot.generator", "qualname": "Generator.cluster_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Cluster) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.distribute_sql": {"fullname": "sqlglot.generator.Generator.distribute_sql", "modulename": "sqlglot.generator", "qualname": "Generator.distribute_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Distribute) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.sort_sql": {"fullname": "sqlglot.generator.Generator.sort_sql", "modulename": "sqlglot.generator", "qualname": "Generator.sort_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Sort) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.ordered_sql": {"fullname": "sqlglot.generator.Generator.ordered_sql", "modulename": "sqlglot.generator", "qualname": "Generator.ordered_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Ordered) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.matchrecognize_sql": {"fullname": "sqlglot.generator.Generator.matchrecognize_sql", "modulename": "sqlglot.generator", "qualname": "Generator.matchrecognize_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.MatchRecognize) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.query_modifiers": {"fullname": "sqlglot.generator.Generator.query_modifiers", "modulename": "sqlglot.generator", "qualname": "Generator.query_modifiers", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Expression, *sqls: str) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.select_sql": {"fullname": "sqlglot.generator.Generator.select_sql", "modulename": "sqlglot.generator", "qualname": "Generator.select_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Select) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.schema_sql": {"fullname": "sqlglot.generator.Generator.schema_sql", "modulename": "sqlglot.generator", "qualname": "Generator.schema_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Schema) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.star_sql": {"fullname": "sqlglot.generator.Generator.star_sql", "modulename": "sqlglot.generator", "qualname": "Generator.star_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Star) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.structkwarg_sql": {"fullname": "sqlglot.generator.Generator.structkwarg_sql", "modulename": "sqlglot.generator", "qualname": "Generator.structkwarg_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.StructKwarg) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.parameter_sql": {"fullname": "sqlglot.generator.Generator.parameter_sql", "modulename": "sqlglot.generator", "qualname": "Generator.parameter_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Parameter) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.sessionparameter_sql": {"fullname": "sqlglot.generator.Generator.sessionparameter_sql", "modulename": "sqlglot.generator", "qualname": "Generator.sessionparameter_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.SessionParameter) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.placeholder_sql": {"fullname": "sqlglot.generator.Generator.placeholder_sql", "modulename": "sqlglot.generator", "qualname": "Generator.placeholder_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Placeholder) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.subquery_sql": {"fullname": "sqlglot.generator.Generator.subquery_sql", "modulename": "sqlglot.generator", "qualname": "Generator.subquery_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Subquery, sep: str = ' AS ') -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.qualify_sql": {"fullname": "sqlglot.generator.Generator.qualify_sql", "modulename": "sqlglot.generator", "qualname": "Generator.qualify_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Qualify) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.union_sql": {"fullname": "sqlglot.generator.Generator.union_sql", "modulename": "sqlglot.generator", "qualname": "Generator.union_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Union) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.union_op": {"fullname": "sqlglot.generator.Generator.union_op", "modulename": "sqlglot.generator", "qualname": "Generator.union_op", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Union) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.unnest_sql": {"fullname": "sqlglot.generator.Generator.unnest_sql", "modulename": "sqlglot.generator", "qualname": "Generator.unnest_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Unnest) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.where_sql": {"fullname": "sqlglot.generator.Generator.where_sql", "modulename": "sqlglot.generator", "qualname": "Generator.where_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Where) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.window_sql": {"fullname": "sqlglot.generator.Generator.window_sql", "modulename": "sqlglot.generator", "qualname": "Generator.window_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Window) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.partition_by_sql": {"fullname": "sqlglot.generator.Generator.partition_by_sql", "modulename": "sqlglot.generator", "qualname": "Generator.partition_by_sql", "kind": "function", "doc": "

\n", "signature": "(\tself,\texpression: sqlglot.expressions.Window | sqlglot.expressions.MatchRecognize) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.window_spec_sql": {"fullname": "sqlglot.generator.Generator.window_spec_sql", "modulename": "sqlglot.generator", "qualname": "Generator.window_spec_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.WindowSpec) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.withingroup_sql": {"fullname": "sqlglot.generator.Generator.withingroup_sql", "modulename": "sqlglot.generator", "qualname": "Generator.withingroup_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.WithinGroup) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.between_sql": {"fullname": "sqlglot.generator.Generator.between_sql", "modulename": "sqlglot.generator", "qualname": "Generator.between_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Between) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.bracket_sql": {"fullname": "sqlglot.generator.Generator.bracket_sql", "modulename": "sqlglot.generator", "qualname": "Generator.bracket_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Bracket) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.all_sql": {"fullname": "sqlglot.generator.Generator.all_sql", "modulename": "sqlglot.generator", "qualname": "Generator.all_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.All) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.any_sql": {"fullname": "sqlglot.generator.Generator.any_sql", "modulename": "sqlglot.generator", "qualname": "Generator.any_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Any) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.exists_sql": {"fullname": "sqlglot.generator.Generator.exists_sql", "modulename": "sqlglot.generator", "qualname": "Generator.exists_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Exists) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.case_sql": {"fullname": "sqlglot.generator.Generator.case_sql", "modulename": "sqlglot.generator", "qualname": "Generator.case_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Case) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.constraint_sql": {"fullname": "sqlglot.generator.Generator.constraint_sql", "modulename": "sqlglot.generator", "qualname": "Generator.constraint_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Constraint) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.extract_sql": {"fullname": "sqlglot.generator.Generator.extract_sql", "modulename": "sqlglot.generator", "qualname": "Generator.extract_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Extract) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.trim_sql": {"fullname": "sqlglot.generator.Generator.trim_sql", "modulename": "sqlglot.generator", "qualname": "Generator.trim_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Trim) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.concat_sql": {"fullname": "sqlglot.generator.Generator.concat_sql", "modulename": "sqlglot.generator", "qualname": "Generator.concat_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Concat) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.check_sql": {"fullname": "sqlglot.generator.Generator.check_sql", "modulename": "sqlglot.generator", "qualname": "Generator.check_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Check) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.foreignkey_sql": {"fullname": "sqlglot.generator.Generator.foreignkey_sql", "modulename": "sqlglot.generator", "qualname": "Generator.foreignkey_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.ForeignKey) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.primarykey_sql": {"fullname": "sqlglot.generator.Generator.primarykey_sql", "modulename": "sqlglot.generator", "qualname": "Generator.primarykey_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.ForeignKey) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.unique_sql": {"fullname": "sqlglot.generator.Generator.unique_sql", "modulename": "sqlglot.generator", "qualname": "Generator.unique_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Unique) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.if_sql": {"fullname": "sqlglot.generator.Generator.if_sql", "modulename": "sqlglot.generator", "qualname": "Generator.if_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.If) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.matchagainst_sql": {"fullname": "sqlglot.generator.Generator.matchagainst_sql", "modulename": "sqlglot.generator", "qualname": "Generator.matchagainst_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.MatchAgainst) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.jsonkeyvalue_sql": {"fullname": "sqlglot.generator.Generator.jsonkeyvalue_sql", "modulename": "sqlglot.generator", "qualname": "Generator.jsonkeyvalue_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.JSONKeyValue) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.jsonobject_sql": {"fullname": "sqlglot.generator.Generator.jsonobject_sql", "modulename": "sqlglot.generator", "qualname": "Generator.jsonobject_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.JSONObject) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.in_sql": {"fullname": "sqlglot.generator.Generator.in_sql", "modulename": "sqlglot.generator", "qualname": "Generator.in_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.In) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.in_unnest_op": {"fullname": "sqlglot.generator.Generator.in_unnest_op", "modulename": "sqlglot.generator", "qualname": "Generator.in_unnest_op", "kind": "function", "doc": "

\n", "signature": "(self, unnest: sqlglot.expressions.Unnest) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.interval_sql": {"fullname": "sqlglot.generator.Generator.interval_sql", "modulename": "sqlglot.generator", "qualname": "Generator.interval_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Interval) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.return_sql": {"fullname": "sqlglot.generator.Generator.return_sql", "modulename": "sqlglot.generator", "qualname": "Generator.return_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Return) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.reference_sql": {"fullname": "sqlglot.generator.Generator.reference_sql", "modulename": "sqlglot.generator", "qualname": "Generator.reference_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Reference) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.anonymous_sql": {"fullname": "sqlglot.generator.Generator.anonymous_sql", "modulename": "sqlglot.generator", "qualname": "Generator.anonymous_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Anonymous) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.paren_sql": {"fullname": "sqlglot.generator.Generator.paren_sql", "modulename": "sqlglot.generator", "qualname": "Generator.paren_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Paren) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.neg_sql": {"fullname": "sqlglot.generator.Generator.neg_sql", "modulename": "sqlglot.generator", "qualname": "Generator.neg_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Neg) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.not_sql": {"fullname": "sqlglot.generator.Generator.not_sql", "modulename": "sqlglot.generator", "qualname": "Generator.not_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Not) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.alias_sql": {"fullname": "sqlglot.generator.Generator.alias_sql", "modulename": "sqlglot.generator", "qualname": "Generator.alias_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Alias) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.aliases_sql": {"fullname": "sqlglot.generator.Generator.aliases_sql", "modulename": "sqlglot.generator", "qualname": "Generator.aliases_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Aliases) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.attimezone_sql": {"fullname": "sqlglot.generator.Generator.attimezone_sql", "modulename": "sqlglot.generator", "qualname": "Generator.attimezone_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.AtTimeZone) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.add_sql": {"fullname": "sqlglot.generator.Generator.add_sql", "modulename": "sqlglot.generator", "qualname": "Generator.add_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Add) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.and_sql": {"fullname": "sqlglot.generator.Generator.and_sql", "modulename": "sqlglot.generator", "qualname": "Generator.and_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.And) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.connector_sql": {"fullname": "sqlglot.generator.Generator.connector_sql", "modulename": "sqlglot.generator", "qualname": "Generator.connector_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Connector, op: str) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.bitwiseand_sql": {"fullname": "sqlglot.generator.Generator.bitwiseand_sql", "modulename": "sqlglot.generator", "qualname": "Generator.bitwiseand_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.BitwiseAnd) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.bitwiseleftshift_sql": {"fullname": "sqlglot.generator.Generator.bitwiseleftshift_sql", "modulename": "sqlglot.generator", "qualname": "Generator.bitwiseleftshift_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.BitwiseLeftShift) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.bitwisenot_sql": {"fullname": "sqlglot.generator.Generator.bitwisenot_sql", "modulename": "sqlglot.generator", "qualname": "Generator.bitwisenot_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.BitwiseNot) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.bitwiseor_sql": {"fullname": "sqlglot.generator.Generator.bitwiseor_sql", "modulename": "sqlglot.generator", "qualname": "Generator.bitwiseor_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.BitwiseOr) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.bitwiserightshift_sql": {"fullname": "sqlglot.generator.Generator.bitwiserightshift_sql", "modulename": "sqlglot.generator", "qualname": "Generator.bitwiserightshift_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.BitwiseRightShift) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.bitwisexor_sql": {"fullname": "sqlglot.generator.Generator.bitwisexor_sql", "modulename": "sqlglot.generator", "qualname": "Generator.bitwisexor_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.BitwiseXor) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.cast_sql": {"fullname": "sqlglot.generator.Generator.cast_sql", "modulename": "sqlglot.generator", "qualname": "Generator.cast_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Cast) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.currentdate_sql": {"fullname": "sqlglot.generator.Generator.currentdate_sql", "modulename": "sqlglot.generator", "qualname": "Generator.currentdate_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.CurrentDate) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.collate_sql": {"fullname": "sqlglot.generator.Generator.collate_sql", "modulename": "sqlglot.generator", "qualname": "Generator.collate_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Collate) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.command_sql": {"fullname": "sqlglot.generator.Generator.command_sql", "modulename": "sqlglot.generator", "qualname": "Generator.command_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Command) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.comment_sql": {"fullname": "sqlglot.generator.Generator.comment_sql", "modulename": "sqlglot.generator", "qualname": "Generator.comment_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Comment) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.transaction_sql": {"fullname": "sqlglot.generator.Generator.transaction_sql", "modulename": "sqlglot.generator", "qualname": "Generator.transaction_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Transaction) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.commit_sql": {"fullname": "sqlglot.generator.Generator.commit_sql", "modulename": "sqlglot.generator", "qualname": "Generator.commit_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Commit) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.rollback_sql": {"fullname": "sqlglot.generator.Generator.rollback_sql", "modulename": "sqlglot.generator", "qualname": "Generator.rollback_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Rollback) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.altercolumn_sql": {"fullname": "sqlglot.generator.Generator.altercolumn_sql", "modulename": "sqlglot.generator", "qualname": "Generator.altercolumn_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.AlterColumn) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.renametable_sql": {"fullname": "sqlglot.generator.Generator.renametable_sql", "modulename": "sqlglot.generator", "qualname": "Generator.renametable_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.RenameTable) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.altertable_sql": {"fullname": "sqlglot.generator.Generator.altertable_sql", "modulename": "sqlglot.generator", "qualname": "Generator.altertable_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.AlterTable) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.droppartition_sql": {"fullname": "sqlglot.generator.Generator.droppartition_sql", "modulename": "sqlglot.generator", "qualname": "Generator.droppartition_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.DropPartition) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.addconstraint_sql": {"fullname": "sqlglot.generator.Generator.addconstraint_sql", "modulename": "sqlglot.generator", "qualname": "Generator.addconstraint_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.AddConstraint) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.distinct_sql": {"fullname": "sqlglot.generator.Generator.distinct_sql", "modulename": "sqlglot.generator", "qualname": "Generator.distinct_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Distinct) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.ignorenulls_sql": {"fullname": "sqlglot.generator.Generator.ignorenulls_sql", "modulename": "sqlglot.generator", "qualname": "Generator.ignorenulls_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.IgnoreNulls) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.respectnulls_sql": {"fullname": "sqlglot.generator.Generator.respectnulls_sql", "modulename": "sqlglot.generator", "qualname": "Generator.respectnulls_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.RespectNulls) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.intdiv_sql": {"fullname": "sqlglot.generator.Generator.intdiv_sql", "modulename": "sqlglot.generator", "qualname": "Generator.intdiv_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.IntDiv) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.dpipe_sql": {"fullname": "sqlglot.generator.Generator.dpipe_sql", "modulename": "sqlglot.generator", "qualname": "Generator.dpipe_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.DPipe) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.div_sql": {"fullname": "sqlglot.generator.Generator.div_sql", "modulename": "sqlglot.generator", "qualname": "Generator.div_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Div) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.overlaps_sql": {"fullname": "sqlglot.generator.Generator.overlaps_sql", "modulename": "sqlglot.generator", "qualname": "Generator.overlaps_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Overlaps) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.distance_sql": {"fullname": "sqlglot.generator.Generator.distance_sql", "modulename": "sqlglot.generator", "qualname": "Generator.distance_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Distance) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.dot_sql": {"fullname": "sqlglot.generator.Generator.dot_sql", "modulename": "sqlglot.generator", "qualname": "Generator.dot_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Dot) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.eq_sql": {"fullname": "sqlglot.generator.Generator.eq_sql", "modulename": "sqlglot.generator", "qualname": "Generator.eq_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.EQ) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.escape_sql": {"fullname": "sqlglot.generator.Generator.escape_sql", "modulename": "sqlglot.generator", "qualname": "Generator.escape_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Escape) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.glob_sql": {"fullname": "sqlglot.generator.Generator.glob_sql", "modulename": "sqlglot.generator", "qualname": "Generator.glob_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Glob) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.gt_sql": {"fullname": "sqlglot.generator.Generator.gt_sql", "modulename": "sqlglot.generator", "qualname": "Generator.gt_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.GT) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.gte_sql": {"fullname": "sqlglot.generator.Generator.gte_sql", "modulename": "sqlglot.generator", "qualname": "Generator.gte_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.GTE) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.ilike_sql": {"fullname": "sqlglot.generator.Generator.ilike_sql", "modulename": "sqlglot.generator", "qualname": "Generator.ilike_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.ILike) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.ilikeany_sql": {"fullname": "sqlglot.generator.Generator.ilikeany_sql", "modulename": "sqlglot.generator", "qualname": "Generator.ilikeany_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.ILikeAny) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.is_sql": {"fullname": "sqlglot.generator.Generator.is_sql", "modulename": "sqlglot.generator", "qualname": "Generator.is_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Is) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.like_sql": {"fullname": "sqlglot.generator.Generator.like_sql", "modulename": "sqlglot.generator", "qualname": "Generator.like_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Like) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.likeany_sql": {"fullname": "sqlglot.generator.Generator.likeany_sql", "modulename": "sqlglot.generator", "qualname": "Generator.likeany_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.LikeAny) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.similarto_sql": {"fullname": "sqlglot.generator.Generator.similarto_sql", "modulename": "sqlglot.generator", "qualname": "Generator.similarto_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.SimilarTo) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.lt_sql": {"fullname": "sqlglot.generator.Generator.lt_sql", "modulename": "sqlglot.generator", "qualname": "Generator.lt_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.LT) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.lte_sql": {"fullname": "sqlglot.generator.Generator.lte_sql", "modulename": "sqlglot.generator", "qualname": "Generator.lte_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.LTE) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.mod_sql": {"fullname": "sqlglot.generator.Generator.mod_sql", "modulename": "sqlglot.generator", "qualname": "Generator.mod_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Mod) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.mul_sql": {"fullname": "sqlglot.generator.Generator.mul_sql", "modulename": "sqlglot.generator", "qualname": "Generator.mul_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Mul) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.neq_sql": {"fullname": "sqlglot.generator.Generator.neq_sql", "modulename": "sqlglot.generator", "qualname": "Generator.neq_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.NEQ) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.nullsafeeq_sql": {"fullname": "sqlglot.generator.Generator.nullsafeeq_sql", "modulename": "sqlglot.generator", "qualname": "Generator.nullsafeeq_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.NullSafeEQ) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.nullsafeneq_sql": {"fullname": "sqlglot.generator.Generator.nullsafeneq_sql", "modulename": "sqlglot.generator", "qualname": "Generator.nullsafeneq_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.NullSafeNEQ) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.or_sql": {"fullname": "sqlglot.generator.Generator.or_sql", "modulename": "sqlglot.generator", "qualname": "Generator.or_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Or) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.slice_sql": {"fullname": "sqlglot.generator.Generator.slice_sql", "modulename": "sqlglot.generator", "qualname": "Generator.slice_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Slice) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.sub_sql": {"fullname": "sqlglot.generator.Generator.sub_sql", "modulename": "sqlglot.generator", "qualname": "Generator.sub_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Sub) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.trycast_sql": {"fullname": "sqlglot.generator.Generator.trycast_sql", "modulename": "sqlglot.generator", "qualname": "Generator.trycast_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.TryCast) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.use_sql": {"fullname": "sqlglot.generator.Generator.use_sql", "modulename": "sqlglot.generator", "qualname": "Generator.use_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Use) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.binary": {"fullname": "sqlglot.generator.Generator.binary", "modulename": "sqlglot.generator", "qualname": "Generator.binary", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Binary, op: str) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.function_fallback_sql": {"fullname": "sqlglot.generator.Generator.function_fallback_sql", "modulename": "sqlglot.generator", "qualname": "Generator.function_fallback_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Func) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.func": {"fullname": "sqlglot.generator.Generator.func", "modulename": "sqlglot.generator", "qualname": "Generator.func", "kind": "function", "doc": "

\n", "signature": "(\tself,\tname: str,\t*args: Union[str, sqlglot.expressions.Expression, NoneType]) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.format_args": {"fullname": "sqlglot.generator.Generator.format_args", "modulename": "sqlglot.generator", "qualname": "Generator.format_args", "kind": "function", "doc": "

\n", "signature": "(self, *args: Union[str, sqlglot.expressions.Expression, NoneType]) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.text_width": {"fullname": "sqlglot.generator.Generator.text_width", "modulename": "sqlglot.generator", "qualname": "Generator.text_width", "kind": "function", "doc": "

\n", "signature": "(self, args: Iterable) -> int:", "funcdef": "def"}, "sqlglot.generator.Generator.format_time": {"fullname": "sqlglot.generator.Generator.format_time", "modulename": "sqlglot.generator", "qualname": "Generator.format_time", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Expression) -> Optional[str]:", "funcdef": "def"}, "sqlglot.generator.Generator.expressions": {"fullname": "sqlglot.generator.Generator.expressions", "modulename": "sqlglot.generator", "qualname": "Generator.expressions", "kind": "function", "doc": "

\n", "signature": "(\tself,\texpression: sqlglot.expressions.Expression,\tkey: Optional[str] = None,\tflat: bool = False,\tindent: bool = True,\tsep: str = ', ',\tprefix: str = '') -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.op_expressions": {"fullname": "sqlglot.generator.Generator.op_expressions", "modulename": "sqlglot.generator", "qualname": "Generator.op_expressions", "kind": "function", "doc": "

\n", "signature": "(\tself,\top: str,\texpression: sqlglot.expressions.Expression,\tflat: bool = False) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.naked_property": {"fullname": "sqlglot.generator.Generator.naked_property", "modulename": "sqlglot.generator", "qualname": "Generator.naked_property", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Property) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.set_operation": {"fullname": "sqlglot.generator.Generator.set_operation", "modulename": "sqlglot.generator", "qualname": "Generator.set_operation", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Expression, op: str) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.tag_sql": {"fullname": "sqlglot.generator.Generator.tag_sql", "modulename": "sqlglot.generator", "qualname": "Generator.tag_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Tag) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.token_sql": {"fullname": "sqlglot.generator.Generator.token_sql", "modulename": "sqlglot.generator", "qualname": "Generator.token_sql", "kind": "function", "doc": "

\n", "signature": "(self, token_type: sqlglot.tokens.TokenType) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.userdefinedfunction_sql": {"fullname": "sqlglot.generator.Generator.userdefinedfunction_sql", "modulename": "sqlglot.generator", "qualname": "Generator.userdefinedfunction_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.UserDefinedFunction) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.joinhint_sql": {"fullname": "sqlglot.generator.Generator.joinhint_sql", "modulename": "sqlglot.generator", "qualname": "Generator.joinhint_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.JoinHint) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.kwarg_sql": {"fullname": "sqlglot.generator.Generator.kwarg_sql", "modulename": "sqlglot.generator", "qualname": "Generator.kwarg_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Kwarg) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.when_sql": {"fullname": "sqlglot.generator.Generator.when_sql", "modulename": "sqlglot.generator", "qualname": "Generator.when_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.When) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.merge_sql": {"fullname": "sqlglot.generator.Generator.merge_sql", "modulename": "sqlglot.generator", "qualname": "Generator.merge_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Merge) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.tochar_sql": {"fullname": "sqlglot.generator.Generator.tochar_sql", "modulename": "sqlglot.generator", "qualname": "Generator.tochar_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.ToChar) -> str:", "funcdef": "def"}, "sqlglot.helper": {"fullname": "sqlglot.helper", "modulename": "sqlglot.helper", "kind": "module", "doc": "

\n"}, "sqlglot.helper.AutoName": {"fullname": "sqlglot.helper.AutoName", "modulename": "sqlglot.helper", "qualname": "AutoName", "kind": "class", "doc": "

This is used for creating enum classes where auto() is the string form of the corresponding value's name.

\n", "bases": "enum.Enum"}, "sqlglot.helper.seq_get": {"fullname": "sqlglot.helper.seq_get", "modulename": "sqlglot.helper", "qualname": "seq_get", "kind": "function", "doc": "

Returns the value in seq at position index, or None if index is out of bounds.

\n", "signature": "(seq: Sequence[~T], index: int) -> Optional[~T]:", "funcdef": "def"}, "sqlglot.helper.ensure_list": {"fullname": "sqlglot.helper.ensure_list", "modulename": "sqlglot.helper", "qualname": "ensure_list", "kind": "function", "doc": "

Ensures that a value is a list, otherwise casts or wraps it into one.

\n\n
Arguments:
\n\n
    \n
  • value: the value of interest.
  • \n
\n\n
Returns:
\n\n
\n

The value cast as a list if it's a list or a tuple, or else the value wrapped in a list.

\n
\n", "signature": "(value):", "funcdef": "def"}, "sqlglot.helper.ensure_collection": {"fullname": "sqlglot.helper.ensure_collection", "modulename": "sqlglot.helper", "qualname": "ensure_collection", "kind": "function", "doc": "

Ensures that a value is a collection (excluding str and bytes), otherwise wraps it into a list.

\n\n
Arguments:
\n\n
    \n
  • value: the value of interest.
  • \n
\n\n
Returns:
\n\n
\n

The value if it's a collection, or else the value wrapped in a list.

\n
\n", "signature": "(value):", "funcdef": "def"}, "sqlglot.helper.csv": {"fullname": "sqlglot.helper.csv", "modulename": "sqlglot.helper", "qualname": "csv", "kind": "function", "doc": "

Formats any number of string arguments as CSV.

\n\n
Arguments:
\n\n
    \n
  • args: the string arguments to format.
  • \n
  • sep: the argument separator.
  • \n
\n\n
Returns:
\n\n
\n

The arguments formatted as a CSV string.

\n
\n", "signature": "(*args, sep: str = ', ') -> str:", "funcdef": "def"}, "sqlglot.helper.subclasses": {"fullname": "sqlglot.helper.subclasses", "modulename": "sqlglot.helper", "qualname": "subclasses", "kind": "function", "doc": "

Returns all subclasses for a collection of classes, possibly excluding some of them.

\n\n
Arguments:
\n\n
    \n
  • module_name: the name of the module to search for subclasses in.
  • \n
  • classes: class(es) we want to find the subclasses of.
  • \n
  • exclude: class(es) we want to exclude from the returned list.
  • \n
\n\n
Returns:
\n\n
\n

The target subclasses.

\n
\n", "signature": "(\tmodule_name: str,\tclasses: Union[Type, Tuple[Type, ...]],\texclude: Union[Type, Tuple[Type, ...]] = ()) -> List[Type]:", "funcdef": "def"}, "sqlglot.helper.apply_index_offset": {"fullname": "sqlglot.helper.apply_index_offset", "modulename": "sqlglot.helper", "qualname": "apply_index_offset", "kind": "function", "doc": "

Applies an offset to a given integer literal expression.

\n\n
Arguments:
\n\n
    \n
  • expressions: the expression the offset will be applied to, wrapped in a list.
  • \n
  • offset: the offset that will be applied.
  • \n
\n\n
Returns:
\n\n
\n

The original expression with the offset applied to it, wrapped in a list. If the provided\n expressions argument contains more than one expressions, it's returned unaffected.

\n
\n", "signature": "(expressions: List[Optional[~E]], offset: int) -> List[Optional[~E]]:", "funcdef": "def"}, "sqlglot.helper.camel_to_snake_case": {"fullname": "sqlglot.helper.camel_to_snake_case", "modulename": "sqlglot.helper", "qualname": "camel_to_snake_case", "kind": "function", "doc": "

Converts name from camelCase to snake_case and returns the result.

\n", "signature": "(name: str) -> str:", "funcdef": "def"}, "sqlglot.helper.while_changing": {"fullname": "sqlglot.helper.while_changing", "modulename": "sqlglot.helper", "qualname": "while_changing", "kind": "function", "doc": "

Applies a transformation to a given expression until a fix point is reached.

\n\n
Arguments:
\n\n
    \n
  • expression: the expression to be transformed.
  • \n
  • func: the transformation to be applied.
  • \n
\n\n
Returns:
\n\n
\n

The transformed expression.

\n
\n", "signature": "(\texpression: sqlglot.expressions.Expression,\tfunc: Callable[[sqlglot.expressions.Expression], ~E]) -> ~E:", "funcdef": "def"}, "sqlglot.helper.tsort": {"fullname": "sqlglot.helper.tsort", "modulename": "sqlglot.helper", "qualname": "tsort", "kind": "function", "doc": "

Sorts a given directed acyclic graph in topological order.

\n\n
Arguments:
\n\n
    \n
  • dag: the graph to be sorted.
  • \n
\n\n
Returns:
\n\n
\n

A list that contains all of the graph's nodes in topological order.

\n
\n", "signature": "(dag: Dict[~T, List[~T]]) -> List[~T]:", "funcdef": "def"}, "sqlglot.helper.open_file": {"fullname": "sqlglot.helper.open_file", "modulename": "sqlglot.helper", "qualname": "open_file", "kind": "function", "doc": "

Open a file that may be compressed as gzip and return it in universal newline mode.

\n", "signature": "(file_name: str) -> <class 'TextIO'>:", "funcdef": "def"}, "sqlglot.helper.csv_reader": {"fullname": "sqlglot.helper.csv_reader", "modulename": "sqlglot.helper", "qualname": "csv_reader", "kind": "function", "doc": "

Returns a csv reader given the expression READ_CSV(name, ['delimiter', '|', ...]).

\n\n
Arguments:
\n\n
    \n
  • read_csv: a ReadCSV function call
  • \n
\n\n
Yields:
\n\n
\n

A python csv reader.

\n
\n", "signature": "(read_csv: sqlglot.expressions.ReadCSV) -> Any:", "funcdef": "def"}, "sqlglot.helper.find_new_name": {"fullname": "sqlglot.helper.find_new_name", "modulename": "sqlglot.helper", "qualname": "find_new_name", "kind": "function", "doc": "

Searches for a new name.

\n\n
Arguments:
\n\n
    \n
  • taken: a collection of taken names.
  • \n
  • base: base name to alter.
  • \n
\n\n
Returns:
\n\n
\n

The new, available name.

\n
\n", "signature": "(taken: Collection[str], base: str) -> str:", "funcdef": "def"}, "sqlglot.helper.object_to_dict": {"fullname": "sqlglot.helper.object_to_dict", "modulename": "sqlglot.helper", "qualname": "object_to_dict", "kind": "function", "doc": "

Returns a dictionary created from an object's attributes.

\n", "signature": "(obj: Any, **kwargs) -> Dict:", "funcdef": "def"}, "sqlglot.helper.split_num_words": {"fullname": "sqlglot.helper.split_num_words", "modulename": "sqlglot.helper", "qualname": "split_num_words", "kind": "function", "doc": "

Perform a split on a value and return N words as a result with None used for words that don't exist.

\n\n
Arguments:
\n\n
    \n
  • value: the value to be split.
  • \n
  • sep: the value to use to split on.
  • \n
  • min_num_words: the minimum number of words that are going to be in the result.
  • \n
  • fill_from_start: indicates that if None values should be inserted at the start or end of the list.
  • \n
\n\n
Examples:
\n\n
\n
\n
>>> split_num_words("db.table", ".", 3)\n[None, 'db', 'table']\n>>> split_num_words("db.table", ".", 3, fill_from_start=False)\n['db', 'table', None]\n>>> split_num_words("db.table", ".", 1)\n['db', 'table']\n
\n
\n
\n\n
Returns:
\n\n
\n

The list of words returned by split, possibly augmented by a number of None values.

\n
\n", "signature": "(\tvalue: str,\tsep: str,\tmin_num_words: int,\tfill_from_start: bool = True) -> List[Optional[str]]:", "funcdef": "def"}, "sqlglot.helper.is_iterable": {"fullname": "sqlglot.helper.is_iterable", "modulename": "sqlglot.helper", "qualname": "is_iterable", "kind": "function", "doc": "

Checks if the value is an iterable, excluding the types str and bytes.

\n\n
Examples:
\n\n
\n
\n
>>> is_iterable([1,2])\nTrue\n>>> is_iterable("test")\nFalse\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • value: the value to check if it is an iterable.
  • \n
\n\n
Returns:
\n\n
\n

A bool value indicating if it is an iterable.

\n
\n", "signature": "(value: Any) -> bool:", "funcdef": "def"}, "sqlglot.helper.flatten": {"fullname": "sqlglot.helper.flatten", "modulename": "sqlglot.helper", "qualname": "flatten", "kind": "function", "doc": "

Flattens an iterable that can contain both iterable and non-iterable elements. Objects of\ntype str and bytes are not regarded as iterables.

\n\n
Examples:
\n\n
\n
\n
>>> list(flatten([[1, 2], 3, {4}, (5, "bla")]))\n[1, 2, 3, 4, 5, 'bla']\n>>> list(flatten([1, 2, 3]))\n[1, 2, 3]\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • values: the value to be flattened.
  • \n
\n\n
Yields:
\n\n
\n

Non-iterable elements in values.

\n
\n", "signature": "(values: Iterable[Union[Iterable[Any], Any]]) -> Iterator[Any]:", "funcdef": "def"}, "sqlglot.helper.count_params": {"fullname": "sqlglot.helper.count_params", "modulename": "sqlglot.helper", "qualname": "count_params", "kind": "function", "doc": "

Returns the number of formal parameters expected by a function, without counting \"self\"\nand \"cls\", in case of instance and class methods, respectively.

\n", "signature": "(function: Callable) -> int:", "funcdef": "def"}, "sqlglot.helper.dict_depth": {"fullname": "sqlglot.helper.dict_depth", "modulename": "sqlglot.helper", "qualname": "dict_depth", "kind": "function", "doc": "

Get the nesting depth of a dictionary.

\n\n
For example:
\n\n
\n
\n
>>> dict_depth(None)\n0\n>>> dict_depth({})\n1\n>>> dict_depth({"a": "b"})\n1\n>>> dict_depth({"a": {}})\n2\n>>> dict_depth({"a": {"b": {}}})\n3\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • d (dict): dictionary
  • \n
\n\n
Returns:
\n\n
\n

int: depth

\n
\n", "signature": "(d: Dict) -> int:", "funcdef": "def"}, "sqlglot.helper.first": {"fullname": "sqlglot.helper.first", "modulename": "sqlglot.helper", "qualname": "first", "kind": "function", "doc": "

Returns the first element from an iterable.

\n\n

Useful for sets.

\n", "signature": "(it: Iterable[~T]) -> ~T:", "funcdef": "def"}, "sqlglot.helper.should_identify": {"fullname": "sqlglot.helper.should_identify", "modulename": "sqlglot.helper", "qualname": "should_identify", "kind": "function", "doc": "

Checks if text should be identified given an identify option.

\n\n
Arguments:
\n\n
    \n
  • text: the text to check.
  • \n
  • identify: \"always\" | True - always returns true, \"safe\" - true if no upper case
  • \n
\n\n
Returns:
\n\n
\n

Whether or not a string should be identified.

\n
\n", "signature": "(text: str, identify: str | bool) -> bool:", "funcdef": "def"}, "sqlglot.lineage": {"fullname": "sqlglot.lineage", "modulename": "sqlglot.lineage", "kind": "module", "doc": "

\n"}, "sqlglot.lineage.Node": {"fullname": "sqlglot.lineage.Node", "modulename": "sqlglot.lineage", "qualname": "Node", "kind": "class", "doc": "

\n"}, "sqlglot.lineage.Node.__init__": {"fullname": "sqlglot.lineage.Node.__init__", "modulename": "sqlglot.lineage", "qualname": "Node.__init__", "kind": "function", "doc": "

\n", "signature": "(\tname: str,\texpression: sqlglot.expressions.Expression,\tsource: sqlglot.expressions.Expression,\tdownstream: List[sqlglot.lineage.Node] = <factory>)"}, "sqlglot.lineage.Node.walk": {"fullname": "sqlglot.lineage.Node.walk", "modulename": "sqlglot.lineage", "qualname": "Node.walk", "kind": "function", "doc": "

\n", "signature": "(self) -> Iterator[sqlglot.lineage.Node]:", "funcdef": "def"}, "sqlglot.lineage.Node.to_html": {"fullname": "sqlglot.lineage.Node.to_html", "modulename": "sqlglot.lineage", "qualname": "Node.to_html", "kind": "function", "doc": "

\n", "signature": "(self, **opts) -> sqlglot.lineage.LineageHTML:", "funcdef": "def"}, "sqlglot.lineage.lineage": {"fullname": "sqlglot.lineage.lineage", "modulename": "sqlglot.lineage", "qualname": "lineage", "kind": "function", "doc": "

Build the lineage graph for a column of a SQL query.

\n\n
Arguments:
\n\n
    \n
  • column: The column to build the lineage for.
  • \n
  • sql: The SQL string or expression.
  • \n
  • schema: The schema of tables.
  • \n
  • sources: A mapping of queries which will be used to continue building lineage.
  • \n
  • rules: Optimizer rules to apply, by default only qualifying tables and columns.
  • \n
  • dialect: The dialect of input SQL.
  • \n
\n\n
Returns:
\n\n
\n

A lineage node.

\n
\n", "signature": "(\tcolumn: str | sqlglot.expressions.Column,\tsql: str | sqlglot.expressions.Expression,\tschema: Union[Dict, sqlglot.schema.Schema, NoneType] = None,\tsources: Optional[Dict[str, str | sqlglot.expressions.Subqueryable]] = None,\trules: Sequence[Callable] = (<function qualify_tables at 0x7f1311384310>, <function qualify_columns at 0x7f13113b71c0>, <function expand_laterals at 0x7f13113b5870>),\tdialect: Union[str, sqlglot.dialects.dialect.Dialect, Type[sqlglot.dialects.dialect.Dialect], NoneType] = None) -> sqlglot.lineage.Node:", "funcdef": "def"}, "sqlglot.lineage.LineageHTML": {"fullname": "sqlglot.lineage.LineageHTML", "modulename": "sqlglot.lineage", "qualname": "LineageHTML", "kind": "class", "doc": "

Node to HTML generator using vis.js.

\n\n

https://visjs.github.io/vis-network/docs/network/

\n"}, "sqlglot.lineage.LineageHTML.__init__": {"fullname": "sqlglot.lineage.LineageHTML.__init__", "modulename": "sqlglot.lineage", "qualname": "LineageHTML.__init__", "kind": "function", "doc": "

\n", "signature": "(\tnode: sqlglot.lineage.Node,\tdialect: Union[str, sqlglot.dialects.dialect.Dialect, Type[sqlglot.dialects.dialect.Dialect], NoneType] = None,\timports: bool = True,\t**opts: Any)"}, "sqlglot.optimizer": {"fullname": "sqlglot.optimizer", "modulename": "sqlglot.optimizer", "kind": "module", "doc": "

\n"}, "sqlglot.optimizer.annotate_types": {"fullname": "sqlglot.optimizer.annotate_types", "modulename": "sqlglot.optimizer.annotate_types", "kind": "module", "doc": "

\n"}, "sqlglot.optimizer.annotate_types.annotate_types": {"fullname": "sqlglot.optimizer.annotate_types.annotate_types", "modulename": "sqlglot.optimizer.annotate_types", "qualname": "annotate_types", "kind": "function", "doc": "

Recursively infer & annotate types in an expression syntax tree against a schema.\nAssumes that we've already executed the optimizer's qualify_columns step.

\n\n
Example:
\n\n
\n
\n
>>> import sqlglot\n>>> schema = {"y": {"cola": "SMALLINT"}}\n>>> sql = "SELECT x.cola + 2.5 AS cola FROM (SELECT y.cola AS cola FROM y AS y) AS x"\n>>> annotated_expr = annotate_types(sqlglot.parse_one(sql), schema=schema)\n>>> annotated_expr.expressions[0].type.this  # Get the type of "x.cola + 2.5 AS cola"\n<Type.DOUBLE: 'DOUBLE'>\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • expression (sqlglot.Expression): Expression to annotate.
  • \n
  • schema (dict|sqlglot.optimizer.Schema): Database schema.
  • \n
  • annotators (dict): Maps expression type to corresponding annotation function.
  • \n
  • coerces_to (dict): Maps expression type to set of types that it can be coerced into.
  • \n
\n\n
Returns:
\n\n
\n

sqlglot.Expression: expression annotated with types

\n
\n", "signature": "(expression, schema=None, annotators=None, coerces_to=None):", "funcdef": "def"}, "sqlglot.optimizer.annotate_types.TypeAnnotator": {"fullname": "sqlglot.optimizer.annotate_types.TypeAnnotator", "modulename": "sqlglot.optimizer.annotate_types", "qualname": "TypeAnnotator", "kind": "class", "doc": "

\n"}, "sqlglot.optimizer.annotate_types.TypeAnnotator.__init__": {"fullname": "sqlglot.optimizer.annotate_types.TypeAnnotator.__init__", "modulename": "sqlglot.optimizer.annotate_types", "qualname": "TypeAnnotator.__init__", "kind": "function", "doc": "

\n", "signature": "(schema=None, annotators=None, coerces_to=None)"}, "sqlglot.optimizer.annotate_types.TypeAnnotator.annotate": {"fullname": "sqlglot.optimizer.annotate_types.TypeAnnotator.annotate", "modulename": "sqlglot.optimizer.annotate_types", "qualname": "TypeAnnotator.annotate", "kind": "function", "doc": "

\n", "signature": "(self, expression):", "funcdef": "def"}, "sqlglot.optimizer.canonicalize": {"fullname": "sqlglot.optimizer.canonicalize", "modulename": "sqlglot.optimizer.canonicalize", "kind": "module", "doc": "

\n"}, "sqlglot.optimizer.canonicalize.canonicalize": {"fullname": "sqlglot.optimizer.canonicalize.canonicalize", "modulename": "sqlglot.optimizer.canonicalize", "qualname": "canonicalize", "kind": "function", "doc": "

Converts a sql expression into a standard form.

\n\n

This method relies on annotate_types because many of the\nconversions rely on type inference.

\n\n
Arguments:
\n\n
    \n
  • expression: The expression to canonicalize.
  • \n
  • identify: Whether or not to force identify identifier.
  • \n
\n", "signature": "(\texpression: sqlglot.expressions.Expression,\tidentify: str = 'safe') -> sqlglot.expressions.Expression:", "funcdef": "def"}, "sqlglot.optimizer.canonicalize.add_text_to_concat": {"fullname": "sqlglot.optimizer.canonicalize.add_text_to_concat", "modulename": "sqlglot.optimizer.canonicalize", "qualname": "add_text_to_concat", "kind": "function", "doc": "

\n", "signature": "(node: sqlglot.expressions.Expression) -> sqlglot.expressions.Expression:", "funcdef": "def"}, "sqlglot.optimizer.canonicalize.coerce_type": {"fullname": "sqlglot.optimizer.canonicalize.coerce_type", "modulename": "sqlglot.optimizer.canonicalize", "qualname": "coerce_type", "kind": "function", "doc": "

\n", "signature": "(node: sqlglot.expressions.Expression) -> sqlglot.expressions.Expression:", "funcdef": "def"}, "sqlglot.optimizer.canonicalize.remove_redundant_casts": {"fullname": "sqlglot.optimizer.canonicalize.remove_redundant_casts", "modulename": "sqlglot.optimizer.canonicalize", "qualname": "remove_redundant_casts", "kind": "function", "doc": "

\n", "signature": "(\texpression: sqlglot.expressions.Expression) -> sqlglot.expressions.Expression:", "funcdef": "def"}, "sqlglot.optimizer.canonicalize.ensure_bool_predicates": {"fullname": "sqlglot.optimizer.canonicalize.ensure_bool_predicates", "modulename": "sqlglot.optimizer.canonicalize", "qualname": "ensure_bool_predicates", "kind": "function", "doc": "

\n", "signature": "(\texpression: sqlglot.expressions.Expression) -> sqlglot.expressions.Expression:", "funcdef": "def"}, "sqlglot.optimizer.eliminate_ctes": {"fullname": "sqlglot.optimizer.eliminate_ctes", "modulename": "sqlglot.optimizer.eliminate_ctes", "kind": "module", "doc": "

\n"}, "sqlglot.optimizer.eliminate_ctes.eliminate_ctes": {"fullname": "sqlglot.optimizer.eliminate_ctes.eliminate_ctes", "modulename": "sqlglot.optimizer.eliminate_ctes", "qualname": "eliminate_ctes", "kind": "function", "doc": "

Remove unused CTEs from an expression.

\n\n
Example:
\n\n
\n
\n
>>> import sqlglot\n>>> sql = "WITH y AS (SELECT a FROM x) SELECT a FROM z"\n>>> expression = sqlglot.parse_one(sql)\n>>> eliminate_ctes(expression).sql()\n'SELECT a FROM z'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • expression (sqlglot.Expression): expression to optimize
  • \n
\n\n
Returns:
\n\n
\n

sqlglot.Expression: optimized expression

\n
\n", "signature": "(expression):", "funcdef": "def"}, "sqlglot.optimizer.eliminate_joins": {"fullname": "sqlglot.optimizer.eliminate_joins", "modulename": "sqlglot.optimizer.eliminate_joins", "kind": "module", "doc": "

\n"}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"fullname": "sqlglot.optimizer.eliminate_joins.eliminate_joins", "modulename": "sqlglot.optimizer.eliminate_joins", "qualname": "eliminate_joins", "kind": "function", "doc": "

Remove unused joins from an expression.

\n\n

This only removes joins when we know that the join condition doesn't produce duplicate rows.

\n\n
Example:
\n\n
\n
\n
>>> import sqlglot\n>>> sql = "SELECT x.a FROM x LEFT JOIN (SELECT DISTINCT y.b FROM y) AS y ON x.b = y.b"\n>>> expression = sqlglot.parse_one(sql)\n>>> eliminate_joins(expression).sql()\n'SELECT x.a FROM x'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • expression (sqlglot.Expression): expression to optimize
  • \n
\n\n
Returns:
\n\n
\n

sqlglot.Expression: optimized expression

\n
\n", "signature": "(expression):", "funcdef": "def"}, "sqlglot.optimizer.eliminate_joins.join_condition": {"fullname": "sqlglot.optimizer.eliminate_joins.join_condition", "modulename": "sqlglot.optimizer.eliminate_joins", "qualname": "join_condition", "kind": "function", "doc": "

Extract the join condition from a join expression.

\n\n
Arguments:
\n\n
    \n
  • join (exp.Join)
  • \n
\n\n
Returns:
\n\n
\n

tuple[list[str], list[str], exp.Expression]:\n Tuple of (source key, join key, remaining predicate)

\n
\n", "signature": "(join):", "funcdef": "def"}, "sqlglot.optimizer.eliminate_subqueries": {"fullname": "sqlglot.optimizer.eliminate_subqueries", "modulename": "sqlglot.optimizer.eliminate_subqueries", "kind": "module", "doc": "

\n"}, "sqlglot.optimizer.eliminate_subqueries.eliminate_subqueries": {"fullname": "sqlglot.optimizer.eliminate_subqueries.eliminate_subqueries", "modulename": "sqlglot.optimizer.eliminate_subqueries", "qualname": "eliminate_subqueries", "kind": "function", "doc": "

Rewrite derived tables as CTES, deduplicating if possible.

\n\n
Example:
\n\n
\n
\n
>>> import sqlglot\n>>> expression = sqlglot.parse_one("SELECT a FROM (SELECT * FROM x) AS y")\n>>> eliminate_subqueries(expression).sql()\n'WITH y AS (SELECT * FROM x) SELECT a FROM y AS y'\n
\n
\n
\n\n
This also deduplicates common subqueries:
\n\n
\n
\n
>>> expression = sqlglot.parse_one("SELECT a FROM (SELECT * FROM x) AS y JOIN (SELECT * FROM x) AS z")\n>>> eliminate_subqueries(expression).sql()\n'WITH y AS (SELECT * FROM x) SELECT a FROM y AS y JOIN y AS z'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • expression (sqlglot.Expression): expression
  • \n
\n\n
Returns:
\n\n
\n

sqlglot.Expression: expression

\n
\n", "signature": "(expression):", "funcdef": "def"}, "sqlglot.optimizer.expand_laterals": {"fullname": "sqlglot.optimizer.expand_laterals", "modulename": "sqlglot.optimizer.expand_laterals", "kind": "module", "doc": "

\n"}, "sqlglot.optimizer.expand_laterals.expand_laterals": {"fullname": "sqlglot.optimizer.expand_laterals.expand_laterals", "modulename": "sqlglot.optimizer.expand_laterals", "qualname": "expand_laterals", "kind": "function", "doc": "

Expand lateral column alias references.

\n\n

This assumes qualify_columns as already run.

\n\n
Example:
\n\n
\n
\n
>>> import sqlglot\n>>> sql = "SELECT x.a + 1 AS b, b + 1 AS c FROM x"\n>>> expression = sqlglot.parse_one(sql)\n>>> expand_laterals(expression).sql()\n'SELECT x.a + 1 AS b, x.a + 1 + 1 AS c FROM x'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • expression: expression to optimize
  • \n
\n\n
Returns:
\n\n
\n

optimized expression

\n
\n", "signature": "(\texpression: sqlglot.expressions.Expression) -> sqlglot.expressions.Expression:", "funcdef": "def"}, "sqlglot.optimizer.expand_multi_table_selects": {"fullname": "sqlglot.optimizer.expand_multi_table_selects", "modulename": "sqlglot.optimizer.expand_multi_table_selects", "kind": "module", "doc": "

\n"}, "sqlglot.optimizer.expand_multi_table_selects.expand_multi_table_selects": {"fullname": "sqlglot.optimizer.expand_multi_table_selects.expand_multi_table_selects", "modulename": "sqlglot.optimizer.expand_multi_table_selects", "qualname": "expand_multi_table_selects", "kind": "function", "doc": "

Replace multiple FROM expressions with JOINs.

\n\n
Example:
\n\n
\n
\n
>>> from sqlglot import parse_one\n>>> expand_multi_table_selects(parse_one("SELECT * FROM x, y")).sql()\n'SELECT * FROM x CROSS JOIN y'\n
\n
\n
\n", "signature": "(expression):", "funcdef": "def"}, "sqlglot.optimizer.isolate_table_selects": {"fullname": "sqlglot.optimizer.isolate_table_selects", "modulename": "sqlglot.optimizer.isolate_table_selects", "kind": "module", "doc": "

\n"}, "sqlglot.optimizer.isolate_table_selects.isolate_table_selects": {"fullname": "sqlglot.optimizer.isolate_table_selects.isolate_table_selects", "modulename": "sqlglot.optimizer.isolate_table_selects", "qualname": "isolate_table_selects", "kind": "function", "doc": "

\n", "signature": "(expression, schema=None):", "funcdef": "def"}, "sqlglot.optimizer.lower_identities": {"fullname": "sqlglot.optimizer.lower_identities", "modulename": "sqlglot.optimizer.lower_identities", "kind": "module", "doc": "

\n"}, "sqlglot.optimizer.lower_identities.lower_identities": {"fullname": "sqlglot.optimizer.lower_identities.lower_identities", "modulename": "sqlglot.optimizer.lower_identities", "qualname": "lower_identities", "kind": "function", "doc": "

Convert all unquoted identifiers to lower case.

\n\n

Assuming the schema is all lower case, this essentially makes identifiers case-insensitive.

\n\n
Example:
\n\n
\n
\n
>>> import sqlglot\n>>> expression = sqlglot.parse_one('SELECT Bar.A AS A FROM "Foo".Bar')\n>>> lower_identities(expression).sql()\n'SELECT bar.a AS A FROM "Foo".bar'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • expression (sqlglot.Expression): expression to quote
  • \n
\n\n
Returns:
\n\n
\n

sqlglot.Expression: quoted expression

\n
\n", "signature": "(expression):", "funcdef": "def"}, "sqlglot.optimizer.merge_subqueries": {"fullname": "sqlglot.optimizer.merge_subqueries", "modulename": "sqlglot.optimizer.merge_subqueries", "kind": "module", "doc": "

\n"}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"fullname": "sqlglot.optimizer.merge_subqueries.merge_subqueries", "modulename": "sqlglot.optimizer.merge_subqueries", "qualname": "merge_subqueries", "kind": "function", "doc": "

Rewrite sqlglot AST to merge derived tables into the outer query.

\n\n

This also merges CTEs if they are selected from only once.

\n\n
Example:
\n\n
\n
\n
>>> import sqlglot\n>>> expression = sqlglot.parse_one("SELECT a FROM (SELECT x.a FROM x) JOIN y")\n>>> merge_subqueries(expression).sql()\n'SELECT x.a FROM x JOIN y'\n
\n
\n
\n\n

If leave_tables_isolated is True, this will not merge inner queries into outer\nqueries if it would result in multiple table selects in a single query:

\n\n
\n
\n
\n

expression = sqlglot.parse_one(\"SELECT a FROM (SELECT x.a FROM x) JOIN y\")\n merge_subqueries(expression, leave_tables_isolated=True).sql()\n 'SELECT a FROM (SELECT x.a FROM x) JOIN y'

\n
\n
\n
\n\n

Inspired by https://dev.mysql.com/doc/refman/8.0/en/derived-table-optimization.html

\n\n
Arguments:
\n\n
    \n
  • expression (sqlglot.Expression): expression to optimize
  • \n
  • leave_tables_isolated (bool):
  • \n
\n\n
Returns:
\n\n
\n

sqlglot.Expression: optimized expression

\n
\n", "signature": "(expression, leave_tables_isolated=False):", "funcdef": "def"}, "sqlglot.optimizer.merge_subqueries.merge_ctes": {"fullname": "sqlglot.optimizer.merge_subqueries.merge_ctes", "modulename": "sqlglot.optimizer.merge_subqueries", "qualname": "merge_ctes", "kind": "function", "doc": "

\n", "signature": "(expression, leave_tables_isolated=False):", "funcdef": "def"}, "sqlglot.optimizer.merge_subqueries.merge_derived_tables": {"fullname": "sqlglot.optimizer.merge_subqueries.merge_derived_tables", "modulename": "sqlglot.optimizer.merge_subqueries", "qualname": "merge_derived_tables", "kind": "function", "doc": "

\n", "signature": "(expression, leave_tables_isolated=False):", "funcdef": "def"}, "sqlglot.optimizer.normalize": {"fullname": "sqlglot.optimizer.normalize", "modulename": "sqlglot.optimizer.normalize", "kind": "module", "doc": "

\n"}, "sqlglot.optimizer.normalize.normalize": {"fullname": "sqlglot.optimizer.normalize.normalize", "modulename": "sqlglot.optimizer.normalize", "qualname": "normalize", "kind": "function", "doc": "

Rewrite sqlglot AST into conjunctive normal form or disjunctive normal form.

\n\n
Example:
\n\n
\n
\n
>>> import sqlglot\n>>> expression = sqlglot.parse_one("(x AND y) OR z")\n>>> normalize(expression, dnf=False).sql()\n'(x OR z) AND (y OR z)'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • expression: expression to normalize
  • \n
  • dnf: rewrite in disjunctive normal form instead.
  • \n
  • max_distance (int): the maximal estimated distance from cnf/dnf to attempt conversion
  • \n
\n\n
Returns:
\n\n
\n

sqlglot.Expression: normalized expression

\n
\n", "signature": "(\texpression: sqlglot.expressions.Expression,\tdnf: bool = False,\tmax_distance: int = 128):", "funcdef": "def"}, "sqlglot.optimizer.normalize.normalized": {"fullname": "sqlglot.optimizer.normalize.normalized", "modulename": "sqlglot.optimizer.normalize", "qualname": "normalized", "kind": "function", "doc": "

\n", "signature": "(expression, dnf=False):", "funcdef": "def"}, "sqlglot.optimizer.normalize.normalization_distance": {"fullname": "sqlglot.optimizer.normalize.normalization_distance", "modulename": "sqlglot.optimizer.normalize", "qualname": "normalization_distance", "kind": "function", "doc": "

The difference in the number of predicates between the current expression and the normalized form.

\n\n

This is used as an estimate of the cost of the conversion which is exponential in complexity.

\n\n
Example:
\n\n
\n
\n
>>> import sqlglot\n>>> expression = sqlglot.parse_one("(a AND b) OR (c AND d)")\n>>> normalization_distance(expression)\n4\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • expression (sqlglot.Expression): expression to compute distance
  • \n
  • dnf (bool): compute to dnf distance instead
  • \n
\n\n
Returns:
\n\n
\n

int: difference

\n
\n", "signature": "(expression, dnf=False):", "funcdef": "def"}, "sqlglot.optimizer.normalize.distributive_law": {"fullname": "sqlglot.optimizer.normalize.distributive_law", "modulename": "sqlglot.optimizer.normalize", "qualname": "distributive_law", "kind": "function", "doc": "

x OR (y AND z) -> (x OR y) AND (x OR z)\n(x AND y) OR (y AND z) -> (x OR y) AND (x OR z) AND (y OR y) AND (y OR z)

\n", "signature": "(expression, dnf, max_distance, cache=None):", "funcdef": "def"}, "sqlglot.optimizer.optimize_joins": {"fullname": "sqlglot.optimizer.optimize_joins", "modulename": "sqlglot.optimizer.optimize_joins", "kind": "module", "doc": "

\n"}, "sqlglot.optimizer.optimize_joins.optimize_joins": {"fullname": "sqlglot.optimizer.optimize_joins.optimize_joins", "modulename": "sqlglot.optimizer.optimize_joins", "qualname": "optimize_joins", "kind": "function", "doc": "

Removes cross joins if possible and reorder joins based on predicate dependencies.

\n\n
Example:
\n\n
\n
\n
>>> from sqlglot import parse_one\n>>> optimize_joins(parse_one("SELECT * FROM x CROSS JOIN y JOIN z ON x.a = z.a AND y.a = z.a")).sql()\n'SELECT * FROM x JOIN z ON x.a = z.a AND TRUE JOIN y ON y.a = z.a'\n
\n
\n
\n", "signature": "(expression):", "funcdef": "def"}, "sqlglot.optimizer.optimize_joins.reorder_joins": {"fullname": "sqlglot.optimizer.optimize_joins.reorder_joins", "modulename": "sqlglot.optimizer.optimize_joins", "qualname": "reorder_joins", "kind": "function", "doc": "

Reorder joins by topological sort order based on predicate references.

\n", "signature": "(expression):", "funcdef": "def"}, "sqlglot.optimizer.optimize_joins.normalize": {"fullname": "sqlglot.optimizer.optimize_joins.normalize", "modulename": "sqlglot.optimizer.optimize_joins", "qualname": "normalize", "kind": "function", "doc": "

Remove INNER and OUTER from joins as they are optional.

\n", "signature": "(expression):", "funcdef": "def"}, "sqlglot.optimizer.optimize_joins.other_table_names": {"fullname": "sqlglot.optimizer.optimize_joins.other_table_names", "modulename": "sqlglot.optimizer.optimize_joins", "qualname": "other_table_names", "kind": "function", "doc": "

\n", "signature": "(join, exclude):", "funcdef": "def"}, "sqlglot.optimizer.optimizer": {"fullname": "sqlglot.optimizer.optimizer", "modulename": "sqlglot.optimizer.optimizer", "kind": "module", "doc": "

\n"}, "sqlglot.optimizer.optimizer.optimize": {"fullname": "sqlglot.optimizer.optimizer.optimize", "modulename": "sqlglot.optimizer.optimizer", "qualname": "optimize", "kind": "function", "doc": "

Rewrite a sqlglot AST into an optimized form.

\n\n
Arguments:
\n\n
    \n
  • expression: expression to optimize
  • \n
  • schema: database schema.\nThis can either be an instance of sqlglot.optimizer.Schema or a mapping in one of\nthe following forms:\n 1. {table: {col: type}}\n 2. {db: {table: {col: type}}}\n 3. {catalog: {db: {table: {col: type}}}}\nIf no schema is provided then the default schema defined at sqlgot.schema will be used
  • \n
  • db: specify the default database, as might be set by a USE DATABASE db statement
  • \n
  • catalog: specify the default catalog, as might be set by a USE CATALOG c statement
  • \n
  • dialect: The dialect to parse the sql string.
  • \n
  • rules: sequence of optimizer rules to use.\nMany of the rules require tables and columns to be qualified.\nDo not remove qualify_tables or qualify_columns from the sequence of rules unless you know\nwhat you're doing!
  • \n
  • *kwargs: If a rule has a keyword argument with a same name in *kwargs, it will be passed in.
  • \n
\n\n
Returns:
\n\n
\n

sqlglot.Expression: optimized expression

\n
\n", "signature": "(\texpression: str | sqlglot.expressions.Expression,\tschema: Union[dict, sqlglot.schema.Schema, NoneType] = None,\tdb: Optional[str] = None,\tcatalog: Optional[str] = None,\tdialect: Union[str, sqlglot.dialects.dialect.Dialect, Type[sqlglot.dialects.dialect.Dialect], NoneType] = None,\trules: Sequence[Callable] = (<function lower_identities at 0x7f13113b5bd0>, <function qualify_tables at 0x7f1311384310>, <function isolate_table_selects at 0x7f13113b5ab0>, <function qualify_columns at 0x7f13113b71c0>, <function expand_laterals at 0x7f13113b5870>, <function pushdown_projections at 0x7f13113b7c70>, <function validate_qualify_columns at 0x7f13113b7250>, <function normalize at 0x7f13113976d0>, <function unnest_subqueries at 0x7f1311384430>, <function expand_multi_table_selects at 0x7f13113b5a20>, <function pushdown_predicates at 0x7f13113b6d40>, <function optimize_joins at 0x7f13113b6950>, <function eliminate_subqueries at 0x7f13113b5480>, <function merge_subqueries at 0x7f13113b5ea0>, <function eliminate_joins at 0x7f13113975b0>, <function eliminate_ctes at 0x7f1311397490>, <function annotate_types at 0x7f1311343d00>, <function canonicalize at 0x7f1311396ef0>, <function simplify at 0x7f13113977f0>),\t**kwargs):", "funcdef": "def"}, "sqlglot.optimizer.pushdown_predicates": {"fullname": "sqlglot.optimizer.pushdown_predicates", "modulename": "sqlglot.optimizer.pushdown_predicates", "kind": "module", "doc": "

\n"}, "sqlglot.optimizer.pushdown_predicates.pushdown_predicates": {"fullname": "sqlglot.optimizer.pushdown_predicates.pushdown_predicates", "modulename": "sqlglot.optimizer.pushdown_predicates", "qualname": "pushdown_predicates", "kind": "function", "doc": "

Rewrite sqlglot AST to pushdown predicates in FROMS and JOINS

\n\n
Example:
\n\n
\n
\n
>>> import sqlglot\n>>> sql = "SELECT * FROM (SELECT * FROM x AS x) AS y WHERE y.a = 1"\n>>> expression = sqlglot.parse_one(sql)\n>>> pushdown_predicates(expression).sql()\n'SELECT * FROM (SELECT * FROM x AS x WHERE y.a = 1) AS y WHERE TRUE'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • expression (sqlglot.Expression): expression to optimize
  • \n
\n\n
Returns:
\n\n
\n

sqlglot.Expression: optimized expression

\n
\n", "signature": "(expression):", "funcdef": "def"}, "sqlglot.optimizer.pushdown_predicates.pushdown": {"fullname": "sqlglot.optimizer.pushdown_predicates.pushdown", "modulename": "sqlglot.optimizer.pushdown_predicates", "qualname": "pushdown", "kind": "function", "doc": "

\n", "signature": "(condition, sources, scope_ref_count):", "funcdef": "def"}, "sqlglot.optimizer.pushdown_predicates.pushdown_cnf": {"fullname": "sqlglot.optimizer.pushdown_predicates.pushdown_cnf", "modulename": "sqlglot.optimizer.pushdown_predicates", "qualname": "pushdown_cnf", "kind": "function", "doc": "

If the predicates are in CNF like form, we can simply replace each block in the parent.

\n", "signature": "(predicates, scope, scope_ref_count):", "funcdef": "def"}, "sqlglot.optimizer.pushdown_predicates.pushdown_dnf": {"fullname": "sqlglot.optimizer.pushdown_predicates.pushdown_dnf", "modulename": "sqlglot.optimizer.pushdown_predicates", "qualname": "pushdown_dnf", "kind": "function", "doc": "

If the predicates are in DNF form, we can only push down conditions that are in all blocks.\nAdditionally, we can't remove predicates from their original form.

\n", "signature": "(predicates, scope, scope_ref_count):", "funcdef": "def"}, "sqlglot.optimizer.pushdown_predicates.nodes_for_predicate": {"fullname": "sqlglot.optimizer.pushdown_predicates.nodes_for_predicate", "modulename": "sqlglot.optimizer.pushdown_predicates", "qualname": "nodes_for_predicate", "kind": "function", "doc": "

\n", "signature": "(predicate, sources, scope_ref_count):", "funcdef": "def"}, "sqlglot.optimizer.pushdown_predicates.replace_aliases": {"fullname": "sqlglot.optimizer.pushdown_predicates.replace_aliases", "modulename": "sqlglot.optimizer.pushdown_predicates", "qualname": "replace_aliases", "kind": "function", "doc": "

\n", "signature": "(source, predicate):", "funcdef": "def"}, "sqlglot.optimizer.pushdown_projections": {"fullname": "sqlglot.optimizer.pushdown_projections", "modulename": "sqlglot.optimizer.pushdown_projections", "kind": "module", "doc": "

\n"}, "sqlglot.optimizer.pushdown_projections.DEFAULT_SELECTION": {"fullname": "sqlglot.optimizer.pushdown_projections.DEFAULT_SELECTION", "modulename": "sqlglot.optimizer.pushdown_projections", "qualname": "DEFAULT_SELECTION", "kind": "function", "doc": "

\n", "signature": "():", "funcdef": "def"}, "sqlglot.optimizer.pushdown_projections.pushdown_projections": {"fullname": "sqlglot.optimizer.pushdown_projections.pushdown_projections", "modulename": "sqlglot.optimizer.pushdown_projections", "qualname": "pushdown_projections", "kind": "function", "doc": "

Rewrite sqlglot AST to remove unused columns projections.

\n\n
Example:
\n\n
\n
\n
>>> import sqlglot\n>>> sql = "SELECT y.a AS a FROM (SELECT x.a AS a, x.b AS b FROM x) AS y"\n>>> expression = sqlglot.parse_one(sql)\n>>> pushdown_projections(expression).sql()\n'SELECT y.a AS a FROM (SELECT x.a AS a FROM x) AS y'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • expression (sqlglot.Expression): expression to optimize
  • \n
  • remove_unused_selections (bool): remove selects that are unused
  • \n
\n\n
Returns:
\n\n
\n

sqlglot.Expression: optimized expression

\n
\n", "signature": "(expression, schema=None, remove_unused_selections=True):", "funcdef": "def"}, "sqlglot.optimizer.qualify_columns": {"fullname": "sqlglot.optimizer.qualify_columns", "modulename": "sqlglot.optimizer.qualify_columns", "kind": "module", "doc": "

\n"}, "sqlglot.optimizer.qualify_columns.qualify_columns": {"fullname": "sqlglot.optimizer.qualify_columns.qualify_columns", "modulename": "sqlglot.optimizer.qualify_columns", "qualname": "qualify_columns", "kind": "function", "doc": "

Rewrite sqlglot AST to have fully qualified columns.

\n\n
Example:
\n\n
\n
\n
>>> import sqlglot\n>>> schema = {"tbl": {"col": "INT"}}\n>>> expression = sqlglot.parse_one("SELECT col FROM tbl")\n>>> qualify_columns(expression, schema).sql()\n'SELECT tbl.col AS col FROM tbl'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • expression (sqlglot.Expression): expression to qualify
  • \n
  • schema (dict|sqlglot.optimizer.Schema): Database schema
  • \n
\n\n
Returns:
\n\n
\n

sqlglot.Expression: qualified expression

\n
\n", "signature": "(expression, schema):", "funcdef": "def"}, "sqlglot.optimizer.qualify_columns.validate_qualify_columns": {"fullname": "sqlglot.optimizer.qualify_columns.validate_qualify_columns", "modulename": "sqlglot.optimizer.qualify_columns", "qualname": "validate_qualify_columns", "kind": "function", "doc": "

Raise an OptimizeError if any columns aren't qualified

\n", "signature": "(expression):", "funcdef": "def"}, "sqlglot.optimizer.qualify_columns.Resolver": {"fullname": "sqlglot.optimizer.qualify_columns.Resolver", "modulename": "sqlglot.optimizer.qualify_columns", "qualname": "Resolver", "kind": "class", "doc": "

Helper for resolving columns.

\n\n

This is a class so we can lazily load some things and easily share them across functions.

\n"}, "sqlglot.optimizer.qualify_columns.Resolver.__init__": {"fullname": "sqlglot.optimizer.qualify_columns.Resolver.__init__", "modulename": "sqlglot.optimizer.qualify_columns", "qualname": "Resolver.__init__", "kind": "function", "doc": "

\n", "signature": "(scope, schema)"}, "sqlglot.optimizer.qualify_columns.Resolver.get_table": {"fullname": "sqlglot.optimizer.qualify_columns.Resolver.get_table", "modulename": "sqlglot.optimizer.qualify_columns", "qualname": "Resolver.get_table", "kind": "function", "doc": "

Get the table for a column name.

\n\n
Arguments:
\n\n
    \n
  • column_name: The column name to find the table for.
  • \n
\n\n
Returns:
\n\n
\n

The table name if it can be found/inferred.

\n
\n", "signature": "(self, column_name: str) -> Optional[sqlglot.expressions.Identifier]:", "funcdef": "def"}, "sqlglot.optimizer.qualify_columns.Resolver.all_columns": {"fullname": "sqlglot.optimizer.qualify_columns.Resolver.all_columns", "modulename": "sqlglot.optimizer.qualify_columns", "qualname": "Resolver.all_columns", "kind": "variable", "doc": "

All available columns of all sources in this scope

\n"}, "sqlglot.optimizer.qualify_columns.Resolver.get_source_columns": {"fullname": "sqlglot.optimizer.qualify_columns.Resolver.get_source_columns", "modulename": "sqlglot.optimizer.qualify_columns", "qualname": "Resolver.get_source_columns", "kind": "function", "doc": "

Resolve the source columns for a given source name

\n", "signature": "(self, name, only_visible=False):", "funcdef": "def"}, "sqlglot.optimizer.qualify_tables": {"fullname": "sqlglot.optimizer.qualify_tables", "modulename": "sqlglot.optimizer.qualify_tables", "kind": "module", "doc": "

\n"}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"fullname": "sqlglot.optimizer.qualify_tables.qualify_tables", "modulename": "sqlglot.optimizer.qualify_tables", "qualname": "qualify_tables", "kind": "function", "doc": "

Rewrite sqlglot AST to have fully qualified tables.

\n\n
Example:
\n\n
\n
\n
>>> import sqlglot\n>>> expression = sqlglot.parse_one("SELECT 1 FROM tbl")\n>>> qualify_tables(expression, db="db").sql()\n'SELECT 1 FROM db.tbl AS tbl'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • expression (sqlglot.Expression): expression to qualify
  • \n
  • db (str): Database name
  • \n
  • catalog (str): Catalog name
  • \n
  • schema: A schema to populate
  • \n
\n\n
Returns:
\n\n
\n

sqlglot.Expression: qualified expression

\n
\n", "signature": "(expression, db=None, catalog=None, schema=None):", "funcdef": "def"}, "sqlglot.optimizer.scope": {"fullname": "sqlglot.optimizer.scope", "modulename": "sqlglot.optimizer.scope", "kind": "module", "doc": "

\n"}, "sqlglot.optimizer.scope.ScopeType": {"fullname": "sqlglot.optimizer.scope.ScopeType", "modulename": "sqlglot.optimizer.scope", "qualname": "ScopeType", "kind": "class", "doc": "

An enumeration.

\n", "bases": "enum.Enum"}, "sqlglot.optimizer.scope.ScopeType.ROOT": {"fullname": "sqlglot.optimizer.scope.ScopeType.ROOT", "modulename": "sqlglot.optimizer.scope", "qualname": "ScopeType.ROOT", "kind": "variable", "doc": "

\n", "default_value": "<ScopeType.ROOT: 1>"}, "sqlglot.optimizer.scope.ScopeType.SUBQUERY": {"fullname": "sqlglot.optimizer.scope.ScopeType.SUBQUERY", "modulename": "sqlglot.optimizer.scope", "qualname": "ScopeType.SUBQUERY", "kind": "variable", "doc": "

\n", "default_value": "<ScopeType.SUBQUERY: 2>"}, "sqlglot.optimizer.scope.ScopeType.DERIVED_TABLE": {"fullname": "sqlglot.optimizer.scope.ScopeType.DERIVED_TABLE", "modulename": "sqlglot.optimizer.scope", "qualname": "ScopeType.DERIVED_TABLE", "kind": "variable", "doc": "

\n", "default_value": "<ScopeType.DERIVED_TABLE: 3>"}, "sqlglot.optimizer.scope.ScopeType.CTE": {"fullname": "sqlglot.optimizer.scope.ScopeType.CTE", "modulename": "sqlglot.optimizer.scope", "qualname": "ScopeType.CTE", "kind": "variable", "doc": "

\n", "default_value": "<ScopeType.CTE: 4>"}, "sqlglot.optimizer.scope.ScopeType.UNION": {"fullname": "sqlglot.optimizer.scope.ScopeType.UNION", "modulename": "sqlglot.optimizer.scope", "qualname": "ScopeType.UNION", "kind": "variable", "doc": "

\n", "default_value": "<ScopeType.UNION: 5>"}, "sqlglot.optimizer.scope.ScopeType.UDTF": {"fullname": "sqlglot.optimizer.scope.ScopeType.UDTF", "modulename": "sqlglot.optimizer.scope", "qualname": "ScopeType.UDTF", "kind": "variable", "doc": "

\n", "default_value": "<ScopeType.UDTF: 6>"}, "sqlglot.optimizer.scope.Scope": {"fullname": "sqlglot.optimizer.scope.Scope", "modulename": "sqlglot.optimizer.scope", "qualname": "Scope", "kind": "class", "doc": "

Selection scope.

\n\n
Attributes:
\n\n
    \n
  • expression (exp.Select|exp.Union): Root expression of this scope
  • \n
  • sources (dict[str, exp.Table|Scope]): Mapping of source name to either\na Table expression or another Scope instance. For example:\n SELECT * FROM x {\"x\": Table(this=\"x\")}\n SELECT * FROM x AS y {\"y\": Table(this=\"x\")}\n SELECT * FROM (SELECT ...) AS y {\"y\": Scope(...)}
  • \n
  • lateral_sources (dict[str, exp.Table|Scope]): Sources from laterals\nFor example:\n SELECT c FROM x LATERAL VIEW EXPLODE (a) AS c;\nThe LATERAL VIEW EXPLODE gets x as a source.
  • \n
  • outer_column_list (list[str]): If this is a derived table or CTE, and the outer query\ndefines a column list of it's alias of this scope, this is that list of columns.\nFor example:\n SELECT * FROM (SELECT ...) AS y(col1, col2)\nThe inner query would have [\"col1\", \"col2\"] for its outer_column_list
  • \n
  • parent (Scope): Parent scope
  • \n
  • scope_type (ScopeType): Type of this scope, relative to it's parent
  • \n
  • subquery_scopes (list[Scope]): List of all child scopes for subqueries
  • \n
  • cte_scopes (list[Scope]): List of all child scopes for CTEs
  • \n
  • derived_table_scopes (list[Scope]): List of all child scopes for derived_tables
  • \n
  • udtf_scopes (list[Scope]): List of all child scopes for user defined tabular functions
  • \n
  • table_scopes (list[Scope]): derived_table_scopes + udtf_scopes, in the order that they're defined
  • \n
  • union_scopes (list[Scope, Scope]): If this Scope is for a Union expression, this will be\na list of the left and right child scopes.
  • \n
\n"}, "sqlglot.optimizer.scope.Scope.__init__": {"fullname": "sqlglot.optimizer.scope.Scope.__init__", "modulename": "sqlglot.optimizer.scope", "qualname": "Scope.__init__", "kind": "function", "doc": "

\n", "signature": "(\texpression,\tsources=None,\touter_column_list=None,\tparent=None,\tscope_type=<ScopeType.ROOT: 1>,\tlateral_sources=None)"}, "sqlglot.optimizer.scope.Scope.clear_cache": {"fullname": "sqlglot.optimizer.scope.Scope.clear_cache", "modulename": "sqlglot.optimizer.scope", "qualname": "Scope.clear_cache", "kind": "function", "doc": "

\n", "signature": "(self):", "funcdef": "def"}, "sqlglot.optimizer.scope.Scope.branch": {"fullname": "sqlglot.optimizer.scope.Scope.branch", "modulename": "sqlglot.optimizer.scope", "qualname": "Scope.branch", "kind": "function", "doc": "

Branch from the current scope to a new, inner scope

\n", "signature": "(self, expression, scope_type, chain_sources=None, **kwargs):", "funcdef": "def"}, "sqlglot.optimizer.scope.Scope.walk": {"fullname": "sqlglot.optimizer.scope.Scope.walk", "modulename": "sqlglot.optimizer.scope", "qualname": "Scope.walk", "kind": "function", "doc": "

\n", "signature": "(self, bfs=True):", "funcdef": "def"}, "sqlglot.optimizer.scope.Scope.find": {"fullname": "sqlglot.optimizer.scope.Scope.find", "modulename": "sqlglot.optimizer.scope", "qualname": "Scope.find", "kind": "function", "doc": "

Returns the first node in this scope which matches at least one of the specified types.

\n\n

This does NOT traverse into subscopes.

\n\n
Arguments:
\n\n
    \n
  • expression_types (type): the expression type(s) to match.
  • \n
  • bfs (bool): True to use breadth-first search, False to use depth-first.
  • \n
\n\n
Returns:
\n\n
\n

exp.Expression: the node which matches the criteria or None if no node matching\n the criteria was found.

\n
\n", "signature": "(self, *expression_types, bfs=True):", "funcdef": "def"}, "sqlglot.optimizer.scope.Scope.find_all": {"fullname": "sqlglot.optimizer.scope.Scope.find_all", "modulename": "sqlglot.optimizer.scope", "qualname": "Scope.find_all", "kind": "function", "doc": "

Returns a generator object which visits all nodes in this scope and only yields those that\nmatch at least one of the specified expression types.

\n\n

This does NOT traverse into subscopes.

\n\n
Arguments:
\n\n
    \n
  • expression_types (type): the expression type(s) to match.
  • \n
  • bfs (bool): True to use breadth-first search, False to use depth-first.
  • \n
\n\n
Yields:
\n\n
\n

exp.Expression: nodes

\n
\n", "signature": "(self, *expression_types, bfs=True):", "funcdef": "def"}, "sqlglot.optimizer.scope.Scope.replace": {"fullname": "sqlglot.optimizer.scope.Scope.replace", "modulename": "sqlglot.optimizer.scope", "qualname": "Scope.replace", "kind": "function", "doc": "

Replace old with new.

\n\n

This can be used instead of exp.Expression.replace to ensure the Scope is kept up-to-date.

\n\n
Arguments:
\n\n
    \n
  • old (exp.Expression): old node
  • \n
  • new (exp.Expression): new node
  • \n
\n", "signature": "(self, old, new):", "funcdef": "def"}, "sqlglot.optimizer.scope.Scope.tables": {"fullname": "sqlglot.optimizer.scope.Scope.tables", "modulename": "sqlglot.optimizer.scope", "qualname": "Scope.tables", "kind": "variable", "doc": "

List of tables in this scope.

\n\n
Returns:
\n\n
\n

list[exp.Table]: tables

\n
\n"}, "sqlglot.optimizer.scope.Scope.ctes": {"fullname": "sqlglot.optimizer.scope.Scope.ctes", "modulename": "sqlglot.optimizer.scope", "qualname": "Scope.ctes", "kind": "variable", "doc": "

List of CTEs in this scope.

\n\n
Returns:
\n\n
\n

list[exp.CTE]: ctes

\n
\n"}, "sqlglot.optimizer.scope.Scope.derived_tables": {"fullname": "sqlglot.optimizer.scope.Scope.derived_tables", "modulename": "sqlglot.optimizer.scope", "qualname": "Scope.derived_tables", "kind": "variable", "doc": "

List of derived tables in this scope.

\n\n
For example:
\n\n
\n

SELECT * FROM (SELECT ...) <- that's a derived table

\n
\n\n
Returns:
\n\n
\n

list[exp.Subquery]: derived tables

\n
\n"}, "sqlglot.optimizer.scope.Scope.udtfs": {"fullname": "sqlglot.optimizer.scope.Scope.udtfs", "modulename": "sqlglot.optimizer.scope", "qualname": "Scope.udtfs", "kind": "variable", "doc": "

List of \"User Defined Tabular Functions\" in this scope.

\n\n
Returns:
\n\n
\n

list[exp.UDTF]: UDTFs

\n
\n"}, "sqlglot.optimizer.scope.Scope.subqueries": {"fullname": "sqlglot.optimizer.scope.Scope.subqueries", "modulename": "sqlglot.optimizer.scope", "qualname": "Scope.subqueries", "kind": "variable", "doc": "

List of subqueries in this scope.

\n\n
For example:
\n\n
\n

SELECT * FROM x WHERE a IN (SELECT ...) <- that's a subquery

\n
\n\n
Returns:
\n\n
\n

list[exp.Subqueryable]: subqueries

\n
\n"}, "sqlglot.optimizer.scope.Scope.columns": {"fullname": "sqlglot.optimizer.scope.Scope.columns", "modulename": "sqlglot.optimizer.scope", "qualname": "Scope.columns", "kind": "variable", "doc": "

List of columns in this scope.

\n\n
Returns:
\n\n
\n

list[exp.Column]: Column instances in this scope, plus any\n Columns that reference this scope from correlated subqueries.

\n
\n"}, "sqlglot.optimizer.scope.Scope.selected_sources": {"fullname": "sqlglot.optimizer.scope.Scope.selected_sources", "modulename": "sqlglot.optimizer.scope", "qualname": "Scope.selected_sources", "kind": "variable", "doc": "

Mapping of nodes and sources that are actually selected from in this scope.

\n\n

That is, all tables in a schema are selectable at any point. But a\ntable only becomes a selected source if it's included in a FROM or JOIN clause.

\n\n
Returns:
\n\n
\n

dict[str, (exp.Table|exp.Select, exp.Table|Scope)]: selected sources and nodes

\n
\n"}, "sqlglot.optimizer.scope.Scope.cte_sources": {"fullname": "sqlglot.optimizer.scope.Scope.cte_sources", "modulename": "sqlglot.optimizer.scope", "qualname": "Scope.cte_sources", "kind": "variable", "doc": "

Sources that are CTEs.

\n\n
Returns:
\n\n
\n

dict[str, Scope]: Mapping of source alias to Scope

\n
\n"}, "sqlglot.optimizer.scope.Scope.selects": {"fullname": "sqlglot.optimizer.scope.Scope.selects", "modulename": "sqlglot.optimizer.scope", "qualname": "Scope.selects", "kind": "variable", "doc": "

Select expressions of this scope.

\n\n

For example, for the following expression:\n SELECT 1 as a, 2 as b FROM x

\n\n

The outputs are the \"1 as a\" and \"2 as b\" expressions.

\n\n
Returns:
\n\n
\n

list[exp.Expression]: expressions

\n
\n"}, "sqlglot.optimizer.scope.Scope.external_columns": {"fullname": "sqlglot.optimizer.scope.Scope.external_columns", "modulename": "sqlglot.optimizer.scope", "qualname": "Scope.external_columns", "kind": "variable", "doc": "

Columns that appear to reference sources in outer scopes.

\n\n
Returns:
\n\n
\n

list[exp.Column]: Column instances that don't reference\n sources in the current scope.

\n
\n"}, "sqlglot.optimizer.scope.Scope.unqualified_columns": {"fullname": "sqlglot.optimizer.scope.Scope.unqualified_columns", "modulename": "sqlglot.optimizer.scope", "qualname": "Scope.unqualified_columns", "kind": "variable", "doc": "

Unqualified columns in the current scope.

\n\n
Returns:
\n\n
\n

list[exp.Column]: Unqualified columns

\n
\n"}, "sqlglot.optimizer.scope.Scope.join_hints": {"fullname": "sqlglot.optimizer.scope.Scope.join_hints", "modulename": "sqlglot.optimizer.scope", "qualname": "Scope.join_hints", "kind": "variable", "doc": "

Hints that exist in the scope that reference tables

\n\n
Returns:
\n\n
\n

list[exp.JoinHint]: Join hints that are referenced within the scope

\n
\n"}, "sqlglot.optimizer.scope.Scope.source_columns": {"fullname": "sqlglot.optimizer.scope.Scope.source_columns", "modulename": "sqlglot.optimizer.scope", "qualname": "Scope.source_columns", "kind": "function", "doc": "

Get all columns in the current scope for a particular source.

\n\n
Arguments:
\n\n
    \n
  • source_name (str): Name of the source
  • \n
\n\n
Returns:
\n\n
\n

list[exp.Column]: Column instances that reference source_name

\n
\n", "signature": "(self, source_name):", "funcdef": "def"}, "sqlglot.optimizer.scope.Scope.is_subquery": {"fullname": "sqlglot.optimizer.scope.Scope.is_subquery", "modulename": "sqlglot.optimizer.scope", "qualname": "Scope.is_subquery", "kind": "variable", "doc": "

Determine if this scope is a subquery

\n"}, "sqlglot.optimizer.scope.Scope.is_derived_table": {"fullname": "sqlglot.optimizer.scope.Scope.is_derived_table", "modulename": "sqlglot.optimizer.scope", "qualname": "Scope.is_derived_table", "kind": "variable", "doc": "

Determine if this scope is a derived table

\n"}, "sqlglot.optimizer.scope.Scope.is_union": {"fullname": "sqlglot.optimizer.scope.Scope.is_union", "modulename": "sqlglot.optimizer.scope", "qualname": "Scope.is_union", "kind": "variable", "doc": "

Determine if this scope is a union

\n"}, "sqlglot.optimizer.scope.Scope.is_cte": {"fullname": "sqlglot.optimizer.scope.Scope.is_cte", "modulename": "sqlglot.optimizer.scope", "qualname": "Scope.is_cte", "kind": "variable", "doc": "

Determine if this scope is a common table expression

\n"}, "sqlglot.optimizer.scope.Scope.is_root": {"fullname": "sqlglot.optimizer.scope.Scope.is_root", "modulename": "sqlglot.optimizer.scope", "qualname": "Scope.is_root", "kind": "variable", "doc": "

Determine if this is the root scope

\n"}, "sqlglot.optimizer.scope.Scope.is_udtf": {"fullname": "sqlglot.optimizer.scope.Scope.is_udtf", "modulename": "sqlglot.optimizer.scope", "qualname": "Scope.is_udtf", "kind": "variable", "doc": "

Determine if this scope is a UDTF (User Defined Table Function)

\n"}, "sqlglot.optimizer.scope.Scope.is_correlated_subquery": {"fullname": "sqlglot.optimizer.scope.Scope.is_correlated_subquery", "modulename": "sqlglot.optimizer.scope", "qualname": "Scope.is_correlated_subquery", "kind": "variable", "doc": "

Determine if this scope is a correlated subquery

\n"}, "sqlglot.optimizer.scope.Scope.rename_source": {"fullname": "sqlglot.optimizer.scope.Scope.rename_source", "modulename": "sqlglot.optimizer.scope", "qualname": "Scope.rename_source", "kind": "function", "doc": "

Rename a source in this scope

\n", "signature": "(self, old_name, new_name):", "funcdef": "def"}, "sqlglot.optimizer.scope.Scope.add_source": {"fullname": "sqlglot.optimizer.scope.Scope.add_source", "modulename": "sqlglot.optimizer.scope", "qualname": "Scope.add_source", "kind": "function", "doc": "

Add a source to this scope

\n", "signature": "(self, name, source):", "funcdef": "def"}, "sqlglot.optimizer.scope.Scope.remove_source": {"fullname": "sqlglot.optimizer.scope.Scope.remove_source", "modulename": "sqlglot.optimizer.scope", "qualname": "Scope.remove_source", "kind": "function", "doc": "

Remove a source from this scope

\n", "signature": "(self, name):", "funcdef": "def"}, "sqlglot.optimizer.scope.Scope.traverse": {"fullname": "sqlglot.optimizer.scope.Scope.traverse", "modulename": "sqlglot.optimizer.scope", "qualname": "Scope.traverse", "kind": "function", "doc": "

Traverse the scope tree from this node.

\n\n
Yields:
\n\n
\n

Scope: scope instances in depth-first-search post-order

\n
\n", "signature": "(self):", "funcdef": "def"}, "sqlglot.optimizer.scope.Scope.ref_count": {"fullname": "sqlglot.optimizer.scope.Scope.ref_count", "modulename": "sqlglot.optimizer.scope", "qualname": "Scope.ref_count", "kind": "function", "doc": "

Count the number of times each scope in this tree is referenced.

\n\n
Returns:
\n\n
\n

dict[int, int]: Mapping of Scope instance ID to reference count

\n
\n", "signature": "(self):", "funcdef": "def"}, "sqlglot.optimizer.scope.traverse_scope": {"fullname": "sqlglot.optimizer.scope.traverse_scope", "modulename": "sqlglot.optimizer.scope", "qualname": "traverse_scope", "kind": "function", "doc": "

Traverse an expression by it's \"scopes\".

\n\n

\"Scope\" represents the current context of a Select statement.

\n\n

This is helpful for optimizing queries, where we need more information than\nthe expression tree itself. For example, we might care about the source\nnames within a subquery. Returns a list because a generator could result in\nincomplete properties which is confusing.

\n\n
Examples:
\n\n
\n
\n
>>> import sqlglot\n>>> expression = sqlglot.parse_one("SELECT a FROM (SELECT a FROM x) AS y")\n>>> scopes = traverse_scope(expression)\n>>> scopes[0].expression.sql(), list(scopes[0].sources)\n('SELECT a FROM x', ['x'])\n>>> scopes[1].expression.sql(), list(scopes[1].sources)\n('SELECT a FROM (SELECT a FROM x) AS y', ['y'])\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • expression (exp.Expression): expression to traverse
  • \n
\n\n
Returns:
\n\n
\n

list[Scope]: scope instances

\n
\n", "signature": "(expression):", "funcdef": "def"}, "sqlglot.optimizer.scope.build_scope": {"fullname": "sqlglot.optimizer.scope.build_scope", "modulename": "sqlglot.optimizer.scope", "qualname": "build_scope", "kind": "function", "doc": "

Build a scope tree.

\n\n
Arguments:
\n\n
    \n
  • expression (exp.Expression): expression to build the scope tree for
  • \n
\n\n
Returns:
\n\n
\n

Scope: root scope

\n
\n", "signature": "(expression):", "funcdef": "def"}, "sqlglot.optimizer.scope.walk_in_scope": {"fullname": "sqlglot.optimizer.scope.walk_in_scope", "modulename": "sqlglot.optimizer.scope", "qualname": "walk_in_scope", "kind": "function", "doc": "

Returns a generator object which visits all nodes in the syntrax tree, stopping at\nnodes that start child scopes.

\n\n
Arguments:
\n\n
    \n
  • expression (exp.Expression):
  • \n
  • bfs (bool): if set to True the BFS traversal order will be applied,\notherwise the DFS traversal will be used instead.
  • \n
\n\n
Yields:
\n\n
\n

tuple[exp.Expression, Optional[exp.Expression], str]: node, parent, arg key

\n
\n", "signature": "(expression, bfs=True):", "funcdef": "def"}, "sqlglot.optimizer.simplify": {"fullname": "sqlglot.optimizer.simplify", "modulename": "sqlglot.optimizer.simplify", "kind": "module", "doc": "

\n"}, "sqlglot.optimizer.simplify.simplify": {"fullname": "sqlglot.optimizer.simplify.simplify", "modulename": "sqlglot.optimizer.simplify", "qualname": "simplify", "kind": "function", "doc": "

Rewrite sqlglot AST to simplify expressions.

\n\n
Example:
\n\n
\n
\n
>>> import sqlglot\n>>> expression = sqlglot.parse_one("TRUE AND TRUE")\n>>> simplify(expression).sql()\n'TRUE'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • expression (sqlglot.Expression): expression to simplify
  • \n
\n\n
Returns:
\n\n
\n

sqlglot.Expression: simplified expression

\n
\n", "signature": "(expression):", "funcdef": "def"}, "sqlglot.optimizer.simplify.rewrite_between": {"fullname": "sqlglot.optimizer.simplify.rewrite_between", "modulename": "sqlglot.optimizer.simplify", "qualname": "rewrite_between", "kind": "function", "doc": "

Rewrite x between y and z to x >= y AND x <= z.

\n\n

This is done because comparison simplification is only done on lt/lte/gt/gte.

\n", "signature": "(\texpression: sqlglot.expressions.Expression) -> sqlglot.expressions.Expression:", "funcdef": "def"}, "sqlglot.optimizer.simplify.simplify_not": {"fullname": "sqlglot.optimizer.simplify.simplify_not", "modulename": "sqlglot.optimizer.simplify", "qualname": "simplify_not", "kind": "function", "doc": "

Demorgan's Law\nNOT (x OR y) -> NOT x AND NOT y\nNOT (x AND y) -> NOT x OR NOT y

\n", "signature": "(expression):", "funcdef": "def"}, "sqlglot.optimizer.simplify.flatten": {"fullname": "sqlglot.optimizer.simplify.flatten", "modulename": "sqlglot.optimizer.simplify", "qualname": "flatten", "kind": "function", "doc": "

A AND (B AND C) -> A AND B AND C\nA OR (B OR C) -> A OR B OR C

\n", "signature": "(expression):", "funcdef": "def"}, "sqlglot.optimizer.simplify.simplify_connectors": {"fullname": "sqlglot.optimizer.simplify.simplify_connectors", "modulename": "sqlglot.optimizer.simplify", "qualname": "simplify_connectors", "kind": "function", "doc": "

\n", "signature": "(expression, root=True):", "funcdef": "def"}, "sqlglot.optimizer.simplify.remove_compliments": {"fullname": "sqlglot.optimizer.simplify.remove_compliments", "modulename": "sqlglot.optimizer.simplify", "qualname": "remove_compliments", "kind": "function", "doc": "

Removing compliments.

\n\n

A AND NOT A -> FALSE\nA OR NOT A -> TRUE

\n", "signature": "(expression, root=True):", "funcdef": "def"}, "sqlglot.optimizer.simplify.uniq_sort": {"fullname": "sqlglot.optimizer.simplify.uniq_sort", "modulename": "sqlglot.optimizer.simplify", "qualname": "uniq_sort", "kind": "function", "doc": "

Uniq and sort a connector.

\n\n

C AND A AND B AND B -> A AND B AND C

\n", "signature": "(expression, cache=None, root=True):", "funcdef": "def"}, "sqlglot.optimizer.simplify.absorb_and_eliminate": {"fullname": "sqlglot.optimizer.simplify.absorb_and_eliminate", "modulename": "sqlglot.optimizer.simplify", "qualname": "absorb_and_eliminate", "kind": "function", "doc": "

absorption:\n A AND (A OR B) -> A\n A OR (A AND B) -> A\n A AND (NOT A OR B) -> A AND B\n A OR (NOT A AND B) -> A OR B\nelimination:\n (A AND B) OR (A AND NOT B) -> A\n (A OR B) AND (A OR NOT B) -> A

\n", "signature": "(expression, root=True):", "funcdef": "def"}, "sqlglot.optimizer.simplify.simplify_literals": {"fullname": "sqlglot.optimizer.simplify.simplify_literals", "modulename": "sqlglot.optimizer.simplify", "qualname": "simplify_literals", "kind": "function", "doc": "

\n", "signature": "(expression, root=True):", "funcdef": "def"}, "sqlglot.optimizer.simplify.simplify_parens": {"fullname": "sqlglot.optimizer.simplify.simplify_parens", "modulename": "sqlglot.optimizer.simplify", "qualname": "simplify_parens", "kind": "function", "doc": "

\n", "signature": "(expression):", "funcdef": "def"}, "sqlglot.optimizer.simplify.remove_where_true": {"fullname": "sqlglot.optimizer.simplify.remove_where_true", "modulename": "sqlglot.optimizer.simplify", "qualname": "remove_where_true", "kind": "function", "doc": "

\n", "signature": "(expression):", "funcdef": "def"}, "sqlglot.optimizer.simplify.always_true": {"fullname": "sqlglot.optimizer.simplify.always_true", "modulename": "sqlglot.optimizer.simplify", "qualname": "always_true", "kind": "function", "doc": "

\n", "signature": "(expression):", "funcdef": "def"}, "sqlglot.optimizer.simplify.is_complement": {"fullname": "sqlglot.optimizer.simplify.is_complement", "modulename": "sqlglot.optimizer.simplify", "qualname": "is_complement", "kind": "function", "doc": "

\n", "signature": "(a, b):", "funcdef": "def"}, "sqlglot.optimizer.simplify.is_false": {"fullname": "sqlglot.optimizer.simplify.is_false", "modulename": "sqlglot.optimizer.simplify", "qualname": "is_false", "kind": "function", "doc": "

\n", "signature": "(a: sqlglot.expressions.Expression) -> bool:", "funcdef": "def"}, "sqlglot.optimizer.simplify.is_null": {"fullname": "sqlglot.optimizer.simplify.is_null", "modulename": "sqlglot.optimizer.simplify", "qualname": "is_null", "kind": "function", "doc": "

\n", "signature": "(a: sqlglot.expressions.Expression) -> bool:", "funcdef": "def"}, "sqlglot.optimizer.simplify.eval_boolean": {"fullname": "sqlglot.optimizer.simplify.eval_boolean", "modulename": "sqlglot.optimizer.simplify", "qualname": "eval_boolean", "kind": "function", "doc": "

\n", "signature": "(expression, a, b):", "funcdef": "def"}, "sqlglot.optimizer.simplify.extract_date": {"fullname": "sqlglot.optimizer.simplify.extract_date", "modulename": "sqlglot.optimizer.simplify", "qualname": "extract_date", "kind": "function", "doc": "

\n", "signature": "(cast):", "funcdef": "def"}, "sqlglot.optimizer.simplify.extract_interval": {"fullname": "sqlglot.optimizer.simplify.extract_interval", "modulename": "sqlglot.optimizer.simplify", "qualname": "extract_interval", "kind": "function", "doc": "

\n", "signature": "(interval):", "funcdef": "def"}, "sqlglot.optimizer.simplify.date_literal": {"fullname": "sqlglot.optimizer.simplify.date_literal", "modulename": "sqlglot.optimizer.simplify", "qualname": "date_literal", "kind": "function", "doc": "

\n", "signature": "(date):", "funcdef": "def"}, "sqlglot.optimizer.simplify.boolean_literal": {"fullname": "sqlglot.optimizer.simplify.boolean_literal", "modulename": "sqlglot.optimizer.simplify", "qualname": "boolean_literal", "kind": "function", "doc": "

\n", "signature": "(condition):", "funcdef": "def"}, "sqlglot.optimizer.unnest_subqueries": {"fullname": "sqlglot.optimizer.unnest_subqueries", "modulename": "sqlglot.optimizer.unnest_subqueries", "kind": "module", "doc": "

\n"}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"fullname": "sqlglot.optimizer.unnest_subqueries.unnest_subqueries", "modulename": "sqlglot.optimizer.unnest_subqueries", "qualname": "unnest_subqueries", "kind": "function", "doc": "

Rewrite sqlglot AST to convert some predicates with subqueries into joins.

\n\n

Convert scalar subqueries into cross joins.\nConvert correlated or vectorized subqueries into a group by so it is not a many to many left join.

\n\n
Example:
\n\n
\n
\n
>>> import sqlglot\n>>> expression = sqlglot.parse_one("SELECT * FROM x AS x WHERE (SELECT y.a AS a FROM y AS y WHERE x.a = y.a) = 1 ")\n>>> unnest_subqueries(expression).sql()\n'SELECT * FROM x AS x LEFT JOIN (SELECT y.a AS a FROM y AS y WHERE TRUE GROUP BY y.a) AS _u_0 ON x.a = _u_0.a WHERE _u_0.a = 1'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • expression (sqlglot.Expression): expression to unnest
  • \n
\n\n
Returns:
\n\n
\n

sqlglot.Expression: unnested expression

\n
\n", "signature": "(expression):", "funcdef": "def"}, "sqlglot.optimizer.unnest_subqueries.unnest": {"fullname": "sqlglot.optimizer.unnest_subqueries.unnest", "modulename": "sqlglot.optimizer.unnest_subqueries", "qualname": "unnest", "kind": "function", "doc": "

\n", "signature": "(select, parent_select, sequence):", "funcdef": "def"}, "sqlglot.optimizer.unnest_subqueries.decorrelate": {"fullname": "sqlglot.optimizer.unnest_subqueries.decorrelate", "modulename": "sqlglot.optimizer.unnest_subqueries", "qualname": "decorrelate", "kind": "function", "doc": "

\n", "signature": "(select, parent_select, external_columns, sequence):", "funcdef": "def"}, "sqlglot.parser": {"fullname": "sqlglot.parser", "modulename": "sqlglot.parser", "kind": "module", "doc": "

\n"}, "sqlglot.parser.parse_var_map": {"fullname": "sqlglot.parser.parse_var_map", "modulename": "sqlglot.parser", "qualname": "parse_var_map", "kind": "function", "doc": "

\n", "signature": "(args: Sequence) -> sqlglot.expressions.Expression:", "funcdef": "def"}, "sqlglot.parser.parse_like": {"fullname": "sqlglot.parser.parse_like", "modulename": "sqlglot.parser", "qualname": "parse_like", "kind": "function", "doc": "

\n", "signature": "(args):", "funcdef": "def"}, "sqlglot.parser.binary_range_parser": {"fullname": "sqlglot.parser.binary_range_parser", "modulename": "sqlglot.parser", "qualname": "binary_range_parser", "kind": "function", "doc": "

\n", "signature": "(\texpr_type: Type[sqlglot.expressions.Expression]) -> Callable[[sqlglot.parser.Parser, Optional[sqlglot.expressions.Expression]], Optional[sqlglot.expressions.Expression]]:", "funcdef": "def"}, "sqlglot.parser.Parser": {"fullname": "sqlglot.parser.Parser", "modulename": "sqlglot.parser", "qualname": "Parser", "kind": "class", "doc": "

Parser consumes a list of tokens produced by the sqlglot.tokens.Tokenizer and produces\na parsed syntax tree.

\n\n
Arguments:
\n\n
    \n
  • error_level: the desired error level.\nDefault: ErrorLevel.RAISE
  • \n
  • error_message_context: determines the amount of context to capture from a\nquery string when displaying the error message (in number of characters).\nDefault: 50.
  • \n
  • index_offset: Index offset for arrays eg ARRAY[0] vs ARRAY[1] as the head of a list.\nDefault: 0
  • \n
  • alias_post_tablesample: If the table alias comes after tablesample.\nDefault: False
  • \n
  • max_errors: Maximum number of error messages to include in a raised ParseError.\nThis is only relevant if error_level is ErrorLevel.RAISE.\nDefault: 3
  • \n
  • null_ordering: Indicates the default null ordering method to use if not explicitly set.\nOptions are \"nulls_are_small\", \"nulls_are_large\", \"nulls_are_last\".\nDefault: \"nulls_are_small\"
  • \n
\n"}, "sqlglot.parser.Parser.__init__": {"fullname": "sqlglot.parser.Parser.__init__", "modulename": "sqlglot.parser", "qualname": "Parser.__init__", "kind": "function", "doc": "

\n", "signature": "(\terror_level: Optional[sqlglot.errors.ErrorLevel] = None,\terror_message_context: int = 100,\tindex_offset: int = 0,\tunnest_column_only: bool = False,\talias_post_tablesample: bool = False,\tmax_errors: int = 3,\tnull_ordering: Optional[str] = None)"}, "sqlglot.parser.Parser.reset": {"fullname": "sqlglot.parser.Parser.reset", "modulename": "sqlglot.parser", "qualname": "Parser.reset", "kind": "function", "doc": "

\n", "signature": "(self):", "funcdef": "def"}, "sqlglot.parser.Parser.parse": {"fullname": "sqlglot.parser.Parser.parse", "modulename": "sqlglot.parser", "qualname": "Parser.parse", "kind": "function", "doc": "

Parses a list of tokens and returns a list of syntax trees, one tree\nper parsed SQL statement.

\n\n
Arguments:
\n\n
    \n
  • raw_tokens: the list of tokens.
  • \n
  • sql: the original SQL string, used to produce helpful debug messages.
  • \n
\n\n
Returns:
\n\n
\n

The list of syntax trees.

\n
\n", "signature": "(\tself,\traw_tokens: List[sqlglot.tokens.Token],\tsql: Optional[str] = None) -> List[Optional[sqlglot.expressions.Expression]]:", "funcdef": "def"}, "sqlglot.parser.Parser.parse_into": {"fullname": "sqlglot.parser.Parser.parse_into", "modulename": "sqlglot.parser", "qualname": "Parser.parse_into", "kind": "function", "doc": "

Parses a list of tokens into a given Expression type. If a collection of Expression\ntypes is given instead, this method will try to parse the token list into each one\nof them, stopping at the first for which the parsing succeeds.

\n\n
Arguments:
\n\n
    \n
  • expression_types: the expression type(s) to try and parse the token list into.
  • \n
  • raw_tokens: the list of tokens.
  • \n
  • sql: the original SQL string, used to produce helpful debug messages.
  • \n
\n\n
Returns:
\n\n
\n

The target Expression.

\n
\n", "signature": "(\tself,\texpression_types: Union[str, Type[sqlglot.expressions.Expression], Collection[Union[str, Type[sqlglot.expressions.Expression]]]],\traw_tokens: List[sqlglot.tokens.Token],\tsql: Optional[str] = None) -> List[Optional[sqlglot.expressions.Expression]]:", "funcdef": "def"}, "sqlglot.parser.Parser.check_errors": {"fullname": "sqlglot.parser.Parser.check_errors", "modulename": "sqlglot.parser", "qualname": "Parser.check_errors", "kind": "function", "doc": "

Logs or raises any found errors, depending on the chosen error level setting.

\n", "signature": "(self) -> None:", "funcdef": "def"}, "sqlglot.parser.Parser.raise_error": {"fullname": "sqlglot.parser.Parser.raise_error", "modulename": "sqlglot.parser", "qualname": "Parser.raise_error", "kind": "function", "doc": "

Appends an error in the list of recorded errors or raises it, depending on the chosen\nerror level setting.

\n", "signature": "(self, message: str, token: Optional[sqlglot.tokens.Token] = None) -> None:", "funcdef": "def"}, "sqlglot.parser.Parser.expression": {"fullname": "sqlglot.parser.Parser.expression", "modulename": "sqlglot.parser", "qualname": "Parser.expression", "kind": "function", "doc": "

Creates a new, validated Expression.

\n\n
Arguments:
\n\n
    \n
  • exp_class: the expression class to instantiate.
  • \n
  • comments: an optional list of comments to attach to the expression.
  • \n
  • kwargs: the arguments to set for the expression along with their respective values.
  • \n
\n\n
Returns:
\n\n
\n

The target expression.

\n
\n", "signature": "(\tself,\texp_class: Type[sqlglot.expressions.Expression],\tcomments: Optional[List[str]] = None,\t**kwargs) -> sqlglot.expressions.Expression:", "funcdef": "def"}, "sqlglot.parser.Parser.validate_expression": {"fullname": "sqlglot.parser.Parser.validate_expression", "modulename": "sqlglot.parser", "qualname": "Parser.validate_expression", "kind": "function", "doc": "

Validates an already instantiated expression, making sure that all its mandatory arguments\nare set.

\n\n
Arguments:
\n\n
    \n
  • expression: the expression to validate.
  • \n
  • args: an optional list of items that was used to instantiate the expression, if it's a Func.
  • \n
\n", "signature": "(\tself,\texpression: sqlglot.expressions.Expression,\targs: Optional[List] = None) -> None:", "funcdef": "def"}, "sqlglot.planner": {"fullname": "sqlglot.planner", "modulename": "sqlglot.planner", "kind": "module", "doc": "

\n"}, "sqlglot.planner.Plan": {"fullname": "sqlglot.planner.Plan", "modulename": "sqlglot.planner", "qualname": "Plan", "kind": "class", "doc": "

\n"}, "sqlglot.planner.Plan.__init__": {"fullname": "sqlglot.planner.Plan.__init__", "modulename": "sqlglot.planner", "qualname": "Plan.__init__", "kind": "function", "doc": "

\n", "signature": "(expression: sqlglot.expressions.Expression)"}, "sqlglot.planner.Step": {"fullname": "sqlglot.planner.Step", "modulename": "sqlglot.planner", "qualname": "Step", "kind": "class", "doc": "

\n"}, "sqlglot.planner.Step.from_expression": {"fullname": "sqlglot.planner.Step.from_expression", "modulename": "sqlglot.planner", "qualname": "Step.from_expression", "kind": "function", "doc": "

Builds a DAG of Steps from a SQL expression so that it's easier to execute in an engine.\nNote: the expression's tables and subqueries must be aliased for this method to work. For\nexample, given the following expression:

\n\n

SELECT\n x.a,\n SUM(x.b)\nFROM x AS x\nJOIN y AS y\n ON x.a = y.a\nGROUP BY x.a

\n\n

the following DAG is produced (the expression IDs might differ per execution):

\n\n
    \n
  • Aggregate: x (4347984624)\nContext:\n Aggregations:\n - SUM(x.b)\n Group:\n - x.a\nProjections:\n
      \n
    • x.a
    • \n
    • \"x\".\"\"\nDependencies:\n
        \n
      • Join: x (4347985296)\nContext:\ny:\nOn: x.a = y.a\nProjections:\nDependencies:
      • \n
    • \n
    • Scan: x (4347983136)\nContext:\n Source: x AS x\nProjections:
    • \n
    • Scan: y (4343416624)\nContext:\n Source: y AS y\nProjections:
    • \n
  • \n
\n\n
Arguments:
\n\n
    \n
  • expression: the expression to build the DAG from.
  • \n
  • ctes: a dictionary that maps CTEs to their corresponding Step DAG by name.
  • \n
\n\n
Returns:
\n\n
\n

A Step DAG corresponding to expression.

\n
\n", "signature": "(\tcls,\texpression: sqlglot.expressions.Expression,\tctes: Optional[Dict[str, sqlglot.planner.Step]] = None) -> sqlglot.planner.Step:", "funcdef": "def"}, "sqlglot.planner.Step.add_dependency": {"fullname": "sqlglot.planner.Step.add_dependency", "modulename": "sqlglot.planner", "qualname": "Step.add_dependency", "kind": "function", "doc": "

\n", "signature": "(self, dependency: sqlglot.planner.Step) -> None:", "funcdef": "def"}, "sqlglot.planner.Step.to_s": {"fullname": "sqlglot.planner.Step.to_s", "modulename": "sqlglot.planner", "qualname": "Step.to_s", "kind": "function", "doc": "

\n", "signature": "(self, level: int = 0) -> str:", "funcdef": "def"}, "sqlglot.planner.Scan": {"fullname": "sqlglot.planner.Scan", "modulename": "sqlglot.planner", "qualname": "Scan", "kind": "class", "doc": "

\n", "bases": "Step"}, "sqlglot.planner.Scan.from_expression": {"fullname": "sqlglot.planner.Scan.from_expression", "modulename": "sqlglot.planner", "qualname": "Scan.from_expression", "kind": "function", "doc": "

Builds a DAG of Steps from a SQL expression so that it's easier to execute in an engine.\nNote: the expression's tables and subqueries must be aliased for this method to work. For\nexample, given the following expression:

\n\n

SELECT\n x.a,\n SUM(x.b)\nFROM x AS x\nJOIN y AS y\n ON x.a = y.a\nGROUP BY x.a

\n\n

the following DAG is produced (the expression IDs might differ per execution):

\n\n
    \n
  • Aggregate: x (4347984624)\nContext:\n Aggregations:\n - SUM(x.b)\n Group:\n - x.a\nProjections:\n
      \n
    • x.a
    • \n
    • \"x\".\"\"\nDependencies:\n
        \n
      • Join: x (4347985296)\nContext:\ny:\nOn: x.a = y.a\nProjections:\nDependencies:
      • \n
    • \n
    • Scan: x (4347983136)\nContext:\n Source: x AS x\nProjections:
    • \n
    • Scan: y (4343416624)\nContext:\n Source: y AS y\nProjections:
    • \n
  • \n
\n\n
Arguments:
\n\n
    \n
  • expression: the expression to build the DAG from.
  • \n
  • ctes: a dictionary that maps CTEs to their corresponding Step DAG by name.
  • \n
\n\n
Returns:
\n\n
\n

A Step DAG corresponding to expression.

\n
\n", "signature": "(\tcls,\texpression: sqlglot.expressions.Expression,\tctes: Optional[Dict[str, sqlglot.planner.Step]] = None) -> sqlglot.planner.Step:", "funcdef": "def"}, "sqlglot.planner.Join": {"fullname": "sqlglot.planner.Join", "modulename": "sqlglot.planner", "qualname": "Join", "kind": "class", "doc": "

\n", "bases": "Step"}, "sqlglot.planner.Join.from_joins": {"fullname": "sqlglot.planner.Join.from_joins", "modulename": "sqlglot.planner", "qualname": "Join.from_joins", "kind": "function", "doc": "

\n", "signature": "(\tcls,\tjoins: Iterable[sqlglot.expressions.Join],\tctes: Optional[Dict[str, sqlglot.planner.Step]] = None) -> sqlglot.planner.Step:", "funcdef": "def"}, "sqlglot.planner.Aggregate": {"fullname": "sqlglot.planner.Aggregate", "modulename": "sqlglot.planner", "qualname": "Aggregate", "kind": "class", "doc": "

\n", "bases": "Step"}, "sqlglot.planner.Sort": {"fullname": "sqlglot.planner.Sort", "modulename": "sqlglot.planner", "qualname": "Sort", "kind": "class", "doc": "

\n", "bases": "Step"}, "sqlglot.planner.SetOperation": {"fullname": "sqlglot.planner.SetOperation", "modulename": "sqlglot.planner", "qualname": "SetOperation", "kind": "class", "doc": "

\n", "bases": "Step"}, "sqlglot.planner.SetOperation.__init__": {"fullname": "sqlglot.planner.SetOperation.__init__", "modulename": "sqlglot.planner", "qualname": "SetOperation.__init__", "kind": "function", "doc": "

\n", "signature": "(\top: Type[sqlglot.expressions.Expression],\tleft: str | None,\tright: str | None,\tdistinct: bool = False)"}, "sqlglot.planner.SetOperation.from_expression": {"fullname": "sqlglot.planner.SetOperation.from_expression", "modulename": "sqlglot.planner", "qualname": "SetOperation.from_expression", "kind": "function", "doc": "

Builds a DAG of Steps from a SQL expression so that it's easier to execute in an engine.\nNote: the expression's tables and subqueries must be aliased for this method to work. For\nexample, given the following expression:

\n\n

SELECT\n x.a,\n SUM(x.b)\nFROM x AS x\nJOIN y AS y\n ON x.a = y.a\nGROUP BY x.a

\n\n

the following DAG is produced (the expression IDs might differ per execution):

\n\n
    \n
  • Aggregate: x (4347984624)\nContext:\n Aggregations:\n - SUM(x.b)\n Group:\n - x.a\nProjections:\n
      \n
    • x.a
    • \n
    • \"x\".\"\"\nDependencies:\n
        \n
      • Join: x (4347985296)\nContext:\ny:\nOn: x.a = y.a\nProjections:\nDependencies:
      • \n
    • \n
    • Scan: x (4347983136)\nContext:\n Source: x AS x\nProjections:
    • \n
    • Scan: y (4343416624)\nContext:\n Source: y AS y\nProjections:
    • \n
  • \n
\n\n
Arguments:
\n\n
    \n
  • expression: the expression to build the DAG from.
  • \n
  • ctes: a dictionary that maps CTEs to their corresponding Step DAG by name.
  • \n
\n\n
Returns:
\n\n
\n

A Step DAG corresponding to expression.

\n
\n", "signature": "(\tcls,\texpression: sqlglot.expressions.Expression,\tctes: Optional[Dict[str, sqlglot.planner.Step]] = None) -> sqlglot.planner.Step:", "funcdef": "def"}, "sqlglot.schema.Schema": {"fullname": "sqlglot.schema.Schema", "modulename": "sqlglot.schema", "qualname": "Schema", "kind": "class", "doc": "

Abstract base class for database schemas

\n", "bases": "abc.ABC"}, "sqlglot.schema.Schema.add_table": {"fullname": "sqlglot.schema.Schema.add_table", "modulename": "sqlglot.schema", "qualname": "Schema.add_table", "kind": "function", "doc": "

Register or update a table. Some implementing classes may require column information to also be provided.

\n\n
Arguments:
\n\n
    \n
  • table: table expression instance or string representing the table.
  • \n
  • column_mapping: a column mapping that describes the structure of the table.
  • \n
\n", "signature": "(\tself,\ttable: sqlglot.expressions.Table | str,\tcolumn_mapping: Union[Dict, str, sqlglot.dataframe.sql.types.StructType, List, NoneType] = None) -> None:", "funcdef": "def"}, "sqlglot.schema.Schema.column_names": {"fullname": "sqlglot.schema.Schema.column_names", "modulename": "sqlglot.schema", "qualname": "Schema.column_names", "kind": "function", "doc": "

Get the column names for a table.

\n\n
Arguments:
\n\n
    \n
  • table: the Table expression instance.
  • \n
  • only_visible: whether to include invisible columns.
  • \n
\n\n
Returns:
\n\n
\n

The list of column names.

\n
\n", "signature": "(\tself,\ttable: sqlglot.expressions.Table | str,\tonly_visible: bool = False) -> List[str]:", "funcdef": "def"}, "sqlglot.schema.Schema.get_column_type": {"fullname": "sqlglot.schema.Schema.get_column_type", "modulename": "sqlglot.schema", "qualname": "Schema.get_column_type", "kind": "function", "doc": "

Get the sqlglot.exp.DataType type of a column in the schema.

\n\n
Arguments:
\n\n
    \n
  • table: the source table.
  • \n
  • column: the target column.
  • \n
\n\n
Returns:
\n\n
\n

The resulting column type.

\n
\n", "signature": "(\tself,\ttable: sqlglot.expressions.Table | str,\tcolumn: sqlglot.expressions.Column) -> sqlglot.expressions.DataType:", "funcdef": "def"}, "sqlglot.schema.Schema.supported_table_args": {"fullname": "sqlglot.schema.Schema.supported_table_args", "modulename": "sqlglot.schema", "qualname": "Schema.supported_table_args", "kind": "variable", "doc": "

Table arguments this schema support, e.g. (\"this\", \"db\", \"catalog\")

\n", "annotation": ": Tuple[str, ...]"}, "sqlglot.schema.AbstractMappingSchema": {"fullname": "sqlglot.schema.AbstractMappingSchema", "modulename": "sqlglot.schema", "qualname": "AbstractMappingSchema", "kind": "class", "doc": "

Abstract base class for generic types.

\n\n

A generic type is typically declared by inheriting from\nthis class parameterized with one or more type variables.\nFor example, a generic mapping type might be defined as::

\n\n

class Mapping(Generic[KT, VT]):\n def __getitem__(self, key: KT) -> VT:\n ...\n # Etc.

\n\n

This class can then be used as follows::

\n\n

def lookup_name(mapping: Mapping[KT, VT], key: KT, default: VT) -> VT:\n try:\n return mapping[key]\n except KeyError:\n return default

\n", "bases": "typing.Generic[~T]"}, "sqlglot.schema.AbstractMappingSchema.__init__": {"fullname": "sqlglot.schema.AbstractMappingSchema.__init__", "modulename": "sqlglot.schema", "qualname": "AbstractMappingSchema.__init__", "kind": "function", "doc": "

\n", "signature": "(mapping: dict | None = None)"}, "sqlglot.schema.AbstractMappingSchema.table_parts": {"fullname": "sqlglot.schema.AbstractMappingSchema.table_parts", "modulename": "sqlglot.schema", "qualname": "AbstractMappingSchema.table_parts", "kind": "function", "doc": "

\n", "signature": "(self, table: sqlglot.expressions.Table) -> List[str]:", "funcdef": "def"}, "sqlglot.schema.AbstractMappingSchema.find": {"fullname": "sqlglot.schema.AbstractMappingSchema.find", "modulename": "sqlglot.schema", "qualname": "AbstractMappingSchema.find", "kind": "function", "doc": "

\n", "signature": "(\tself,\ttable: sqlglot.expressions.Table,\ttrie: Optional[Dict] = None,\traise_on_missing: bool = True) -> Optional[~T]:", "funcdef": "def"}, "sqlglot.schema.MappingSchema": {"fullname": "sqlglot.schema.MappingSchema", "modulename": "sqlglot.schema", "qualname": "MappingSchema", "kind": "class", "doc": "

Schema based on a nested mapping.

\n\n
Arguments:
\n\n
    \n
  • schema (dict): Mapping in one of the following forms:\n
      \n
    1. {table: {col: type}}
    2. \n
    3. {db: {table: {col: type}}}
    4. \n
    5. {catalog: {db: {table: {col: type}}}}
    6. \n
    7. None - Tables will be added later
    8. \n
  • \n
  • visible (dict): Optional mapping of which columns in the schema are visible. If not provided, all columns\nare assumed to be visible. The nesting should mirror that of the schema:\n
      \n
    1. {table: set(cols)}}
    2. \n
    3. {db: {table: set(cols)}}}
    4. \n
    5. {catalog: {db: {table: set(*cols)}}}}
    6. \n
  • \n
  • dialect (str): The dialect to be used for custom type mappings.
  • \n
\n", "bases": "sqlglot.schema.AbstractMappingSchema[typing.Dict[str, str]], Schema"}, "sqlglot.schema.MappingSchema.__init__": {"fullname": "sqlglot.schema.MappingSchema.__init__", "modulename": "sqlglot.schema", "qualname": "MappingSchema.__init__", "kind": "function", "doc": "

\n", "signature": "(\tschema: Optional[Dict] = None,\tvisible: Optional[Dict] = None,\tdialect: Union[str, sqlglot.dialects.dialect.Dialect, Type[sqlglot.dialects.dialect.Dialect], NoneType] = None)"}, "sqlglot.schema.MappingSchema.from_mapping_schema": {"fullname": "sqlglot.schema.MappingSchema.from_mapping_schema", "modulename": "sqlglot.schema", "qualname": "MappingSchema.from_mapping_schema", "kind": "function", "doc": "

\n", "signature": "(\tcls,\tmapping_schema: sqlglot.schema.MappingSchema) -> sqlglot.schema.MappingSchema:", "funcdef": "def"}, "sqlglot.schema.MappingSchema.copy": {"fullname": "sqlglot.schema.MappingSchema.copy", "modulename": "sqlglot.schema", "qualname": "MappingSchema.copy", "kind": "function", "doc": "

\n", "signature": "(self, **kwargs) -> sqlglot.schema.MappingSchema:", "funcdef": "def"}, "sqlglot.schema.MappingSchema.add_table": {"fullname": "sqlglot.schema.MappingSchema.add_table", "modulename": "sqlglot.schema", "qualname": "MappingSchema.add_table", "kind": "function", "doc": "

Register or update a table. Updates are only performed if a new column mapping is provided.

\n\n
Arguments:
\n\n
    \n
  • table: the Table expression instance or string representing the table.
  • \n
  • column_mapping: a column mapping that describes the structure of the table.
  • \n
\n", "signature": "(\tself,\ttable: sqlglot.expressions.Table | str,\tcolumn_mapping: Union[Dict, str, sqlglot.dataframe.sql.types.StructType, List, NoneType] = None) -> None:", "funcdef": "def"}, "sqlglot.schema.MappingSchema.column_names": {"fullname": "sqlglot.schema.MappingSchema.column_names", "modulename": "sqlglot.schema", "qualname": "MappingSchema.column_names", "kind": "function", "doc": "

Get the column names for a table.

\n\n
Arguments:
\n\n
    \n
  • table: the Table expression instance.
  • \n
  • only_visible: whether to include invisible columns.
  • \n
\n\n
Returns:
\n\n
\n

The list of column names.

\n
\n", "signature": "(\tself,\ttable: sqlglot.expressions.Table | str,\tonly_visible: bool = False) -> List[str]:", "funcdef": "def"}, "sqlglot.schema.MappingSchema.get_column_type": {"fullname": "sqlglot.schema.MappingSchema.get_column_type", "modulename": "sqlglot.schema", "qualname": "MappingSchema.get_column_type", "kind": "function", "doc": "

Get the sqlglot.exp.DataType type of a column in the schema.

\n\n
Arguments:
\n\n
    \n
  • table: the source table.
  • \n
  • column: the target column.
  • \n
\n\n
Returns:
\n\n
\n

The resulting column type.

\n
\n", "signature": "(\tself,\ttable: sqlglot.expressions.Table | str,\tcolumn: sqlglot.expressions.Column | str) -> sqlglot.expressions.DataType:", "funcdef": "def"}, "sqlglot.schema.ensure_schema": {"fullname": "sqlglot.schema.ensure_schema", "modulename": "sqlglot.schema", "qualname": "ensure_schema", "kind": "function", "doc": "

\n", "signature": "(\tschema: Any,\tdialect: Union[str, sqlglot.dialects.dialect.Dialect, Type[sqlglot.dialects.dialect.Dialect], NoneType] = None) -> sqlglot.schema.Schema:", "funcdef": "def"}, "sqlglot.schema.ensure_column_mapping": {"fullname": "sqlglot.schema.ensure_column_mapping", "modulename": "sqlglot.schema", "qualname": "ensure_column_mapping", "kind": "function", "doc": "

\n", "signature": "(\tmapping: Union[Dict, str, sqlglot.dataframe.sql.types.StructType, List, NoneType]):", "funcdef": "def"}, "sqlglot.schema.flatten_schema": {"fullname": "sqlglot.schema.flatten_schema", "modulename": "sqlglot.schema", "qualname": "flatten_schema", "kind": "function", "doc": "

\n", "signature": "(\tschema: Dict,\tdepth: int,\tkeys: Optional[List[str]] = None) -> List[List[str]]:", "funcdef": "def"}, "sqlglot.serde": {"fullname": "sqlglot.serde", "modulename": "sqlglot.serde", "kind": "module", "doc": "

\n"}, "sqlglot.serde.dump": {"fullname": "sqlglot.serde.dump", "modulename": "sqlglot.serde", "qualname": "dump", "kind": "function", "doc": "

Recursively dump an AST into a JSON-serializable dict.

\n", "signature": "(\tnode: Union[List[ForwardRef('Node')], sqlglot.expressions.DataType.Type, sqlglot.expressions.Expression, dict, list, str, float, int, bool]) -> Union[dict, list, str, float, int, bool]:", "funcdef": "def"}, "sqlglot.serde.load": {"fullname": "sqlglot.serde.load", "modulename": "sqlglot.serde", "qualname": "load", "kind": "function", "doc": "

Recursively load a dict (as returned by dump) into an AST.

\n", "signature": "(\tobj: Union[dict, list, str, float, int, bool]) -> Union[List[ForwardRef('Node')], sqlglot.expressions.DataType.Type, sqlglot.expressions.Expression, dict, list, str, float, int, bool]:", "funcdef": "def"}, "sqlglot.time": {"fullname": "sqlglot.time", "modulename": "sqlglot.time", "kind": "module", "doc": "

\n"}, "sqlglot.time.format_time": {"fullname": "sqlglot.time.format_time", "modulename": "sqlglot.time", "qualname": "format_time", "kind": "function", "doc": "

Converts a time string given a mapping.

\n\n
Examples:
\n\n
\n
\n
>>> format_time("%Y", {"%Y": "YYYY"})\n'YYYY'\n
\n
\n \n

Args:\n mapping: dictionary of time format to target time format.\n trie: optional trie, can be passed in for performance.

\n \n

Returns:\n The converted time string.

\n
\n", "signature": "(\tstring: str,\tmapping: Dict[str, str],\ttrie: Optional[Dict] = None) -> Optional[str]:", "funcdef": "def"}, "sqlglot.tokens": {"fullname": "sqlglot.tokens", "modulename": "sqlglot.tokens", "kind": "module", "doc": "

\n"}, "sqlglot.tokens.TokenType": {"fullname": "sqlglot.tokens.TokenType", "modulename": "sqlglot.tokens", "qualname": "TokenType", "kind": "class", "doc": "

An enumeration.

\n", "bases": "sqlglot.helper.AutoName"}, "sqlglot.tokens.TokenType.L_PAREN": {"fullname": "sqlglot.tokens.TokenType.L_PAREN", "modulename": "sqlglot.tokens", "qualname": "TokenType.L_PAREN", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.L_PAREN: 'L_PAREN'>"}, "sqlglot.tokens.TokenType.R_PAREN": {"fullname": "sqlglot.tokens.TokenType.R_PAREN", "modulename": "sqlglot.tokens", "qualname": "TokenType.R_PAREN", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.R_PAREN: 'R_PAREN'>"}, "sqlglot.tokens.TokenType.L_BRACKET": {"fullname": "sqlglot.tokens.TokenType.L_BRACKET", "modulename": "sqlglot.tokens", "qualname": "TokenType.L_BRACKET", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.L_BRACKET: 'L_BRACKET'>"}, "sqlglot.tokens.TokenType.R_BRACKET": {"fullname": "sqlglot.tokens.TokenType.R_BRACKET", "modulename": "sqlglot.tokens", "qualname": "TokenType.R_BRACKET", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.R_BRACKET: 'R_BRACKET'>"}, "sqlglot.tokens.TokenType.L_BRACE": {"fullname": "sqlglot.tokens.TokenType.L_BRACE", "modulename": "sqlglot.tokens", "qualname": "TokenType.L_BRACE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.L_BRACE: 'L_BRACE'>"}, "sqlglot.tokens.TokenType.R_BRACE": {"fullname": "sqlglot.tokens.TokenType.R_BRACE", "modulename": "sqlglot.tokens", "qualname": "TokenType.R_BRACE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.R_BRACE: 'R_BRACE'>"}, "sqlglot.tokens.TokenType.COMMA": {"fullname": "sqlglot.tokens.TokenType.COMMA", "modulename": "sqlglot.tokens", "qualname": "TokenType.COMMA", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.COMMA: 'COMMA'>"}, "sqlglot.tokens.TokenType.DOT": {"fullname": "sqlglot.tokens.TokenType.DOT", "modulename": "sqlglot.tokens", "qualname": "TokenType.DOT", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.DOT: 'DOT'>"}, "sqlglot.tokens.TokenType.DASH": {"fullname": "sqlglot.tokens.TokenType.DASH", "modulename": "sqlglot.tokens", "qualname": "TokenType.DASH", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.DASH: 'DASH'>"}, "sqlglot.tokens.TokenType.PLUS": {"fullname": "sqlglot.tokens.TokenType.PLUS", "modulename": "sqlglot.tokens", "qualname": "TokenType.PLUS", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.PLUS: 'PLUS'>"}, "sqlglot.tokens.TokenType.COLON": {"fullname": "sqlglot.tokens.TokenType.COLON", "modulename": "sqlglot.tokens", "qualname": "TokenType.COLON", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.COLON: 'COLON'>"}, "sqlglot.tokens.TokenType.DCOLON": {"fullname": "sqlglot.tokens.TokenType.DCOLON", "modulename": "sqlglot.tokens", "qualname": "TokenType.DCOLON", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.DCOLON: 'DCOLON'>"}, "sqlglot.tokens.TokenType.SEMICOLON": {"fullname": "sqlglot.tokens.TokenType.SEMICOLON", "modulename": "sqlglot.tokens", "qualname": "TokenType.SEMICOLON", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.SEMICOLON: 'SEMICOLON'>"}, "sqlglot.tokens.TokenType.STAR": {"fullname": "sqlglot.tokens.TokenType.STAR", "modulename": "sqlglot.tokens", "qualname": "TokenType.STAR", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.STAR: 'STAR'>"}, "sqlglot.tokens.TokenType.BACKSLASH": {"fullname": "sqlglot.tokens.TokenType.BACKSLASH", "modulename": "sqlglot.tokens", "qualname": "TokenType.BACKSLASH", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.BACKSLASH: 'BACKSLASH'>"}, "sqlglot.tokens.TokenType.SLASH": {"fullname": "sqlglot.tokens.TokenType.SLASH", "modulename": "sqlglot.tokens", "qualname": "TokenType.SLASH", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.SLASH: 'SLASH'>"}, "sqlglot.tokens.TokenType.LT": {"fullname": "sqlglot.tokens.TokenType.LT", "modulename": "sqlglot.tokens", "qualname": "TokenType.LT", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.LT: 'LT'>"}, "sqlglot.tokens.TokenType.LTE": {"fullname": "sqlglot.tokens.TokenType.LTE", "modulename": "sqlglot.tokens", "qualname": "TokenType.LTE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.LTE: 'LTE'>"}, "sqlglot.tokens.TokenType.GT": {"fullname": "sqlglot.tokens.TokenType.GT", "modulename": "sqlglot.tokens", "qualname": "TokenType.GT", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.GT: 'GT'>"}, "sqlglot.tokens.TokenType.GTE": {"fullname": "sqlglot.tokens.TokenType.GTE", "modulename": "sqlglot.tokens", "qualname": "TokenType.GTE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.GTE: 'GTE'>"}, "sqlglot.tokens.TokenType.NOT": {"fullname": "sqlglot.tokens.TokenType.NOT", "modulename": "sqlglot.tokens", "qualname": "TokenType.NOT", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.NOT: 'NOT'>"}, "sqlglot.tokens.TokenType.EQ": {"fullname": "sqlglot.tokens.TokenType.EQ", "modulename": "sqlglot.tokens", "qualname": "TokenType.EQ", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.EQ: 'EQ'>"}, "sqlglot.tokens.TokenType.NEQ": {"fullname": "sqlglot.tokens.TokenType.NEQ", "modulename": "sqlglot.tokens", "qualname": "TokenType.NEQ", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.NEQ: 'NEQ'>"}, "sqlglot.tokens.TokenType.NULLSAFE_EQ": {"fullname": "sqlglot.tokens.TokenType.NULLSAFE_EQ", "modulename": "sqlglot.tokens", "qualname": "TokenType.NULLSAFE_EQ", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.NULLSAFE_EQ: 'NULLSAFE_EQ'>"}, "sqlglot.tokens.TokenType.AND": {"fullname": "sqlglot.tokens.TokenType.AND", "modulename": "sqlglot.tokens", "qualname": "TokenType.AND", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.AND: 'AND'>"}, "sqlglot.tokens.TokenType.OR": {"fullname": "sqlglot.tokens.TokenType.OR", "modulename": "sqlglot.tokens", "qualname": "TokenType.OR", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.OR: 'OR'>"}, "sqlglot.tokens.TokenType.AMP": {"fullname": "sqlglot.tokens.TokenType.AMP", "modulename": "sqlglot.tokens", "qualname": "TokenType.AMP", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.AMP: 'AMP'>"}, "sqlglot.tokens.TokenType.DPIPE": {"fullname": "sqlglot.tokens.TokenType.DPIPE", "modulename": "sqlglot.tokens", "qualname": "TokenType.DPIPE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.DPIPE: 'DPIPE'>"}, "sqlglot.tokens.TokenType.PIPE": {"fullname": "sqlglot.tokens.TokenType.PIPE", "modulename": "sqlglot.tokens", "qualname": "TokenType.PIPE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.PIPE: 'PIPE'>"}, "sqlglot.tokens.TokenType.CARET": {"fullname": "sqlglot.tokens.TokenType.CARET", "modulename": "sqlglot.tokens", "qualname": "TokenType.CARET", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.CARET: 'CARET'>"}, "sqlglot.tokens.TokenType.TILDA": {"fullname": "sqlglot.tokens.TokenType.TILDA", "modulename": "sqlglot.tokens", "qualname": "TokenType.TILDA", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.TILDA: 'TILDA'>"}, "sqlglot.tokens.TokenType.ARROW": {"fullname": "sqlglot.tokens.TokenType.ARROW", "modulename": "sqlglot.tokens", "qualname": "TokenType.ARROW", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.ARROW: 'ARROW'>"}, "sqlglot.tokens.TokenType.DARROW": {"fullname": "sqlglot.tokens.TokenType.DARROW", "modulename": "sqlglot.tokens", "qualname": "TokenType.DARROW", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.DARROW: 'DARROW'>"}, "sqlglot.tokens.TokenType.FARROW": {"fullname": "sqlglot.tokens.TokenType.FARROW", "modulename": "sqlglot.tokens", "qualname": "TokenType.FARROW", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.FARROW: 'FARROW'>"}, "sqlglot.tokens.TokenType.HASH": {"fullname": "sqlglot.tokens.TokenType.HASH", "modulename": "sqlglot.tokens", "qualname": "TokenType.HASH", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.HASH: 'HASH'>"}, "sqlglot.tokens.TokenType.HASH_ARROW": {"fullname": "sqlglot.tokens.TokenType.HASH_ARROW", "modulename": "sqlglot.tokens", "qualname": "TokenType.HASH_ARROW", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.HASH_ARROW: 'HASH_ARROW'>"}, "sqlglot.tokens.TokenType.DHASH_ARROW": {"fullname": "sqlglot.tokens.TokenType.DHASH_ARROW", "modulename": "sqlglot.tokens", "qualname": "TokenType.DHASH_ARROW", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.DHASH_ARROW: 'DHASH_ARROW'>"}, "sqlglot.tokens.TokenType.LR_ARROW": {"fullname": "sqlglot.tokens.TokenType.LR_ARROW", "modulename": "sqlglot.tokens", "qualname": "TokenType.LR_ARROW", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.LR_ARROW: 'LR_ARROW'>"}, "sqlglot.tokens.TokenType.LT_AT": {"fullname": "sqlglot.tokens.TokenType.LT_AT", "modulename": "sqlglot.tokens", "qualname": "TokenType.LT_AT", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.LT_AT: 'LT_AT'>"}, "sqlglot.tokens.TokenType.AT_GT": {"fullname": "sqlglot.tokens.TokenType.AT_GT", "modulename": "sqlglot.tokens", "qualname": "TokenType.AT_GT", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.AT_GT: 'AT_GT'>"}, "sqlglot.tokens.TokenType.DOLLAR": {"fullname": "sqlglot.tokens.TokenType.DOLLAR", "modulename": "sqlglot.tokens", "qualname": "TokenType.DOLLAR", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.DOLLAR: 'DOLLAR'>"}, "sqlglot.tokens.TokenType.PARAMETER": {"fullname": "sqlglot.tokens.TokenType.PARAMETER", "modulename": "sqlglot.tokens", "qualname": "TokenType.PARAMETER", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.PARAMETER: 'PARAMETER'>"}, "sqlglot.tokens.TokenType.SESSION_PARAMETER": {"fullname": "sqlglot.tokens.TokenType.SESSION_PARAMETER", "modulename": "sqlglot.tokens", "qualname": "TokenType.SESSION_PARAMETER", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.SESSION_PARAMETER: 'SESSION_PARAMETER'>"}, "sqlglot.tokens.TokenType.NATIONAL": {"fullname": "sqlglot.tokens.TokenType.NATIONAL", "modulename": "sqlglot.tokens", "qualname": "TokenType.NATIONAL", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.NATIONAL: 'NATIONAL'>"}, "sqlglot.tokens.TokenType.DAMP": {"fullname": "sqlglot.tokens.TokenType.DAMP", "modulename": "sqlglot.tokens", "qualname": "TokenType.DAMP", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.DAMP: 'DAMP'>"}, "sqlglot.tokens.TokenType.BLOCK_START": {"fullname": "sqlglot.tokens.TokenType.BLOCK_START", "modulename": "sqlglot.tokens", "qualname": "TokenType.BLOCK_START", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.BLOCK_START: 'BLOCK_START'>"}, "sqlglot.tokens.TokenType.BLOCK_END": {"fullname": "sqlglot.tokens.TokenType.BLOCK_END", "modulename": "sqlglot.tokens", "qualname": "TokenType.BLOCK_END", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.BLOCK_END: 'BLOCK_END'>"}, "sqlglot.tokens.TokenType.SPACE": {"fullname": "sqlglot.tokens.TokenType.SPACE", "modulename": "sqlglot.tokens", "qualname": "TokenType.SPACE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.SPACE: 'SPACE'>"}, "sqlglot.tokens.TokenType.BREAK": {"fullname": "sqlglot.tokens.TokenType.BREAK", "modulename": "sqlglot.tokens", "qualname": "TokenType.BREAK", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.BREAK: 'BREAK'>"}, "sqlglot.tokens.TokenType.STRING": {"fullname": "sqlglot.tokens.TokenType.STRING", "modulename": "sqlglot.tokens", "qualname": "TokenType.STRING", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.STRING: 'STRING'>"}, "sqlglot.tokens.TokenType.NUMBER": {"fullname": "sqlglot.tokens.TokenType.NUMBER", "modulename": "sqlglot.tokens", "qualname": "TokenType.NUMBER", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.NUMBER: 'NUMBER'>"}, "sqlglot.tokens.TokenType.IDENTIFIER": {"fullname": "sqlglot.tokens.TokenType.IDENTIFIER", "modulename": "sqlglot.tokens", "qualname": "TokenType.IDENTIFIER", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.IDENTIFIER: 'IDENTIFIER'>"}, "sqlglot.tokens.TokenType.DATABASE": {"fullname": "sqlglot.tokens.TokenType.DATABASE", "modulename": "sqlglot.tokens", "qualname": "TokenType.DATABASE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.DATABASE: 'DATABASE'>"}, "sqlglot.tokens.TokenType.COLUMN": {"fullname": "sqlglot.tokens.TokenType.COLUMN", "modulename": "sqlglot.tokens", "qualname": "TokenType.COLUMN", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.COLUMN: 'COLUMN'>"}, "sqlglot.tokens.TokenType.COLUMN_DEF": {"fullname": "sqlglot.tokens.TokenType.COLUMN_DEF", "modulename": "sqlglot.tokens", "qualname": "TokenType.COLUMN_DEF", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.COLUMN_DEF: 'COLUMN_DEF'>"}, "sqlglot.tokens.TokenType.SCHEMA": {"fullname": "sqlglot.tokens.TokenType.SCHEMA", "modulename": "sqlglot.tokens", "qualname": "TokenType.SCHEMA", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.SCHEMA: 'SCHEMA'>"}, "sqlglot.tokens.TokenType.TABLE": {"fullname": "sqlglot.tokens.TokenType.TABLE", "modulename": "sqlglot.tokens", "qualname": "TokenType.TABLE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.TABLE: 'TABLE'>"}, "sqlglot.tokens.TokenType.VAR": {"fullname": "sqlglot.tokens.TokenType.VAR", "modulename": "sqlglot.tokens", "qualname": "TokenType.VAR", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.VAR: 'VAR'>"}, "sqlglot.tokens.TokenType.BIT_STRING": {"fullname": "sqlglot.tokens.TokenType.BIT_STRING", "modulename": "sqlglot.tokens", "qualname": "TokenType.BIT_STRING", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.BIT_STRING: 'BIT_STRING'>"}, "sqlglot.tokens.TokenType.HEX_STRING": {"fullname": "sqlglot.tokens.TokenType.HEX_STRING", "modulename": "sqlglot.tokens", "qualname": "TokenType.HEX_STRING", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.HEX_STRING: 'HEX_STRING'>"}, "sqlglot.tokens.TokenType.BYTE_STRING": {"fullname": "sqlglot.tokens.TokenType.BYTE_STRING", "modulename": "sqlglot.tokens", "qualname": "TokenType.BYTE_STRING", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.BYTE_STRING: 'BYTE_STRING'>"}, "sqlglot.tokens.TokenType.BIT": {"fullname": "sqlglot.tokens.TokenType.BIT", "modulename": "sqlglot.tokens", "qualname": "TokenType.BIT", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.BIT: 'BIT'>"}, "sqlglot.tokens.TokenType.BOOLEAN": {"fullname": "sqlglot.tokens.TokenType.BOOLEAN", "modulename": "sqlglot.tokens", "qualname": "TokenType.BOOLEAN", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.BOOLEAN: 'BOOLEAN'>"}, "sqlglot.tokens.TokenType.TINYINT": {"fullname": "sqlglot.tokens.TokenType.TINYINT", "modulename": "sqlglot.tokens", "qualname": "TokenType.TINYINT", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.TINYINT: 'TINYINT'>"}, "sqlglot.tokens.TokenType.UTINYINT": {"fullname": "sqlglot.tokens.TokenType.UTINYINT", "modulename": "sqlglot.tokens", "qualname": "TokenType.UTINYINT", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.UTINYINT: 'UTINYINT'>"}, "sqlglot.tokens.TokenType.SMALLINT": {"fullname": "sqlglot.tokens.TokenType.SMALLINT", "modulename": "sqlglot.tokens", "qualname": "TokenType.SMALLINT", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.SMALLINT: 'SMALLINT'>"}, "sqlglot.tokens.TokenType.USMALLINT": {"fullname": "sqlglot.tokens.TokenType.USMALLINT", "modulename": "sqlglot.tokens", "qualname": "TokenType.USMALLINT", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.USMALLINT: 'USMALLINT'>"}, "sqlglot.tokens.TokenType.INT": {"fullname": "sqlglot.tokens.TokenType.INT", "modulename": "sqlglot.tokens", "qualname": "TokenType.INT", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.INT: 'INT'>"}, "sqlglot.tokens.TokenType.UINT": {"fullname": "sqlglot.tokens.TokenType.UINT", "modulename": "sqlglot.tokens", "qualname": "TokenType.UINT", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.UINT: 'UINT'>"}, "sqlglot.tokens.TokenType.BIGINT": {"fullname": "sqlglot.tokens.TokenType.BIGINT", "modulename": "sqlglot.tokens", "qualname": "TokenType.BIGINT", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.BIGINT: 'BIGINT'>"}, "sqlglot.tokens.TokenType.UBIGINT": {"fullname": "sqlglot.tokens.TokenType.UBIGINT", "modulename": "sqlglot.tokens", "qualname": "TokenType.UBIGINT", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.UBIGINT: 'UBIGINT'>"}, "sqlglot.tokens.TokenType.FLOAT": {"fullname": "sqlglot.tokens.TokenType.FLOAT", "modulename": "sqlglot.tokens", "qualname": "TokenType.FLOAT", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.FLOAT: 'FLOAT'>"}, "sqlglot.tokens.TokenType.DOUBLE": {"fullname": "sqlglot.tokens.TokenType.DOUBLE", "modulename": "sqlglot.tokens", "qualname": "TokenType.DOUBLE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.DOUBLE: 'DOUBLE'>"}, "sqlglot.tokens.TokenType.DECIMAL": {"fullname": "sqlglot.tokens.TokenType.DECIMAL", "modulename": "sqlglot.tokens", "qualname": "TokenType.DECIMAL", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.DECIMAL: 'DECIMAL'>"}, "sqlglot.tokens.TokenType.CHAR": {"fullname": "sqlglot.tokens.TokenType.CHAR", "modulename": "sqlglot.tokens", "qualname": "TokenType.CHAR", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.CHAR: 'CHAR'>"}, "sqlglot.tokens.TokenType.NCHAR": {"fullname": "sqlglot.tokens.TokenType.NCHAR", "modulename": "sqlglot.tokens", "qualname": "TokenType.NCHAR", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.NCHAR: 'NCHAR'>"}, "sqlglot.tokens.TokenType.VARCHAR": {"fullname": "sqlglot.tokens.TokenType.VARCHAR", "modulename": "sqlglot.tokens", "qualname": "TokenType.VARCHAR", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.VARCHAR: 'VARCHAR'>"}, "sqlglot.tokens.TokenType.NVARCHAR": {"fullname": "sqlglot.tokens.TokenType.NVARCHAR", "modulename": "sqlglot.tokens", "qualname": "TokenType.NVARCHAR", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.NVARCHAR: 'NVARCHAR'>"}, "sqlglot.tokens.TokenType.TEXT": {"fullname": "sqlglot.tokens.TokenType.TEXT", "modulename": "sqlglot.tokens", "qualname": "TokenType.TEXT", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.TEXT: 'TEXT'>"}, "sqlglot.tokens.TokenType.MEDIUMTEXT": {"fullname": "sqlglot.tokens.TokenType.MEDIUMTEXT", "modulename": "sqlglot.tokens", "qualname": "TokenType.MEDIUMTEXT", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.MEDIUMTEXT: 'MEDIUMTEXT'>"}, "sqlglot.tokens.TokenType.LONGTEXT": {"fullname": "sqlglot.tokens.TokenType.LONGTEXT", "modulename": "sqlglot.tokens", "qualname": "TokenType.LONGTEXT", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.LONGTEXT: 'LONGTEXT'>"}, "sqlglot.tokens.TokenType.MEDIUMBLOB": {"fullname": "sqlglot.tokens.TokenType.MEDIUMBLOB", "modulename": "sqlglot.tokens", "qualname": "TokenType.MEDIUMBLOB", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.MEDIUMBLOB: 'MEDIUMBLOB'>"}, "sqlglot.tokens.TokenType.LONGBLOB": {"fullname": "sqlglot.tokens.TokenType.LONGBLOB", "modulename": "sqlglot.tokens", "qualname": "TokenType.LONGBLOB", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.LONGBLOB: 'LONGBLOB'>"}, "sqlglot.tokens.TokenType.BINARY": {"fullname": "sqlglot.tokens.TokenType.BINARY", "modulename": "sqlglot.tokens", "qualname": "TokenType.BINARY", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.BINARY: 'BINARY'>"}, "sqlglot.tokens.TokenType.VARBINARY": {"fullname": "sqlglot.tokens.TokenType.VARBINARY", "modulename": "sqlglot.tokens", "qualname": "TokenType.VARBINARY", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.VARBINARY: 'VARBINARY'>"}, "sqlglot.tokens.TokenType.JSON": {"fullname": "sqlglot.tokens.TokenType.JSON", "modulename": "sqlglot.tokens", "qualname": "TokenType.JSON", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.JSON: 'JSON'>"}, "sqlglot.tokens.TokenType.JSONB": {"fullname": "sqlglot.tokens.TokenType.JSONB", "modulename": "sqlglot.tokens", "qualname": "TokenType.JSONB", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.JSONB: 'JSONB'>"}, "sqlglot.tokens.TokenType.TIME": {"fullname": "sqlglot.tokens.TokenType.TIME", "modulename": "sqlglot.tokens", "qualname": "TokenType.TIME", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.TIME: 'TIME'>"}, "sqlglot.tokens.TokenType.TIMESTAMP": {"fullname": "sqlglot.tokens.TokenType.TIMESTAMP", "modulename": "sqlglot.tokens", "qualname": "TokenType.TIMESTAMP", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.TIMESTAMP: 'TIMESTAMP'>"}, "sqlglot.tokens.TokenType.TIMESTAMPTZ": {"fullname": "sqlglot.tokens.TokenType.TIMESTAMPTZ", "modulename": "sqlglot.tokens", "qualname": "TokenType.TIMESTAMPTZ", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>"}, "sqlglot.tokens.TokenType.TIMESTAMPLTZ": {"fullname": "sqlglot.tokens.TokenType.TIMESTAMPLTZ", "modulename": "sqlglot.tokens", "qualname": "TokenType.TIMESTAMPLTZ", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>"}, "sqlglot.tokens.TokenType.DATETIME": {"fullname": "sqlglot.tokens.TokenType.DATETIME", "modulename": "sqlglot.tokens", "qualname": "TokenType.DATETIME", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.DATETIME: 'DATETIME'>"}, "sqlglot.tokens.TokenType.DATE": {"fullname": "sqlglot.tokens.TokenType.DATE", "modulename": "sqlglot.tokens", "qualname": "TokenType.DATE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.DATE: 'DATE'>"}, "sqlglot.tokens.TokenType.UUID": {"fullname": "sqlglot.tokens.TokenType.UUID", "modulename": "sqlglot.tokens", "qualname": "TokenType.UUID", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.UUID: 'UUID'>"}, "sqlglot.tokens.TokenType.GEOGRAPHY": {"fullname": "sqlglot.tokens.TokenType.GEOGRAPHY", "modulename": "sqlglot.tokens", "qualname": "TokenType.GEOGRAPHY", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.GEOGRAPHY: 'GEOGRAPHY'>"}, "sqlglot.tokens.TokenType.NULLABLE": {"fullname": "sqlglot.tokens.TokenType.NULLABLE", "modulename": "sqlglot.tokens", "qualname": "TokenType.NULLABLE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.NULLABLE: 'NULLABLE'>"}, "sqlglot.tokens.TokenType.GEOMETRY": {"fullname": "sqlglot.tokens.TokenType.GEOMETRY", "modulename": "sqlglot.tokens", "qualname": "TokenType.GEOMETRY", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.GEOMETRY: 'GEOMETRY'>"}, "sqlglot.tokens.TokenType.HLLSKETCH": {"fullname": "sqlglot.tokens.TokenType.HLLSKETCH", "modulename": "sqlglot.tokens", "qualname": "TokenType.HLLSKETCH", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.HLLSKETCH: 'HLLSKETCH'>"}, "sqlglot.tokens.TokenType.HSTORE": {"fullname": "sqlglot.tokens.TokenType.HSTORE", "modulename": "sqlglot.tokens", "qualname": "TokenType.HSTORE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.HSTORE: 'HSTORE'>"}, "sqlglot.tokens.TokenType.SUPER": {"fullname": "sqlglot.tokens.TokenType.SUPER", "modulename": "sqlglot.tokens", "qualname": "TokenType.SUPER", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.SUPER: 'SUPER'>"}, "sqlglot.tokens.TokenType.SERIAL": {"fullname": "sqlglot.tokens.TokenType.SERIAL", "modulename": "sqlglot.tokens", "qualname": "TokenType.SERIAL", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.SERIAL: 'SERIAL'>"}, "sqlglot.tokens.TokenType.SMALLSERIAL": {"fullname": "sqlglot.tokens.TokenType.SMALLSERIAL", "modulename": "sqlglot.tokens", "qualname": "TokenType.SMALLSERIAL", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.SMALLSERIAL: 'SMALLSERIAL'>"}, "sqlglot.tokens.TokenType.BIGSERIAL": {"fullname": "sqlglot.tokens.TokenType.BIGSERIAL", "modulename": "sqlglot.tokens", "qualname": "TokenType.BIGSERIAL", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.BIGSERIAL: 'BIGSERIAL'>"}, "sqlglot.tokens.TokenType.XML": {"fullname": "sqlglot.tokens.TokenType.XML", "modulename": "sqlglot.tokens", "qualname": "TokenType.XML", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.XML: 'XML'>"}, "sqlglot.tokens.TokenType.UNIQUEIDENTIFIER": {"fullname": "sqlglot.tokens.TokenType.UNIQUEIDENTIFIER", "modulename": "sqlglot.tokens", "qualname": "TokenType.UNIQUEIDENTIFIER", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.UNIQUEIDENTIFIER: 'UNIQUEIDENTIFIER'>"}, "sqlglot.tokens.TokenType.MONEY": {"fullname": "sqlglot.tokens.TokenType.MONEY", "modulename": "sqlglot.tokens", "qualname": "TokenType.MONEY", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.MONEY: 'MONEY'>"}, "sqlglot.tokens.TokenType.SMALLMONEY": {"fullname": "sqlglot.tokens.TokenType.SMALLMONEY", "modulename": "sqlglot.tokens", "qualname": "TokenType.SMALLMONEY", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.SMALLMONEY: 'SMALLMONEY'>"}, "sqlglot.tokens.TokenType.ROWVERSION": {"fullname": "sqlglot.tokens.TokenType.ROWVERSION", "modulename": "sqlglot.tokens", "qualname": "TokenType.ROWVERSION", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.ROWVERSION: 'ROWVERSION'>"}, "sqlglot.tokens.TokenType.IMAGE": {"fullname": "sqlglot.tokens.TokenType.IMAGE", "modulename": "sqlglot.tokens", "qualname": "TokenType.IMAGE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.IMAGE: 'IMAGE'>"}, "sqlglot.tokens.TokenType.VARIANT": {"fullname": "sqlglot.tokens.TokenType.VARIANT", "modulename": "sqlglot.tokens", "qualname": "TokenType.VARIANT", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.VARIANT: 'VARIANT'>"}, "sqlglot.tokens.TokenType.OBJECT": {"fullname": "sqlglot.tokens.TokenType.OBJECT", "modulename": "sqlglot.tokens", "qualname": "TokenType.OBJECT", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.OBJECT: 'OBJECT'>"}, "sqlglot.tokens.TokenType.INET": {"fullname": "sqlglot.tokens.TokenType.INET", "modulename": "sqlglot.tokens", "qualname": "TokenType.INET", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.INET: 'INET'>"}, "sqlglot.tokens.TokenType.ALIAS": {"fullname": "sqlglot.tokens.TokenType.ALIAS", "modulename": "sqlglot.tokens", "qualname": "TokenType.ALIAS", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.ALIAS: 'ALIAS'>"}, "sqlglot.tokens.TokenType.ALTER": {"fullname": "sqlglot.tokens.TokenType.ALTER", "modulename": "sqlglot.tokens", "qualname": "TokenType.ALTER", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.ALTER: 'ALTER'>"}, "sqlglot.tokens.TokenType.ALWAYS": {"fullname": "sqlglot.tokens.TokenType.ALWAYS", "modulename": "sqlglot.tokens", "qualname": "TokenType.ALWAYS", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.ALWAYS: 'ALWAYS'>"}, "sqlglot.tokens.TokenType.ALL": {"fullname": "sqlglot.tokens.TokenType.ALL", "modulename": "sqlglot.tokens", "qualname": "TokenType.ALL", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.ALL: 'ALL'>"}, "sqlglot.tokens.TokenType.ANTI": {"fullname": "sqlglot.tokens.TokenType.ANTI", "modulename": "sqlglot.tokens", "qualname": "TokenType.ANTI", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.ANTI: 'ANTI'>"}, "sqlglot.tokens.TokenType.ANY": {"fullname": "sqlglot.tokens.TokenType.ANY", "modulename": "sqlglot.tokens", "qualname": "TokenType.ANY", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.ANY: 'ANY'>"}, "sqlglot.tokens.TokenType.APPLY": {"fullname": "sqlglot.tokens.TokenType.APPLY", "modulename": "sqlglot.tokens", "qualname": "TokenType.APPLY", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.APPLY: 'APPLY'>"}, "sqlglot.tokens.TokenType.ARRAY": {"fullname": "sqlglot.tokens.TokenType.ARRAY", "modulename": "sqlglot.tokens", "qualname": "TokenType.ARRAY", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.ARRAY: 'ARRAY'>"}, "sqlglot.tokens.TokenType.ASC": {"fullname": "sqlglot.tokens.TokenType.ASC", "modulename": "sqlglot.tokens", "qualname": "TokenType.ASC", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.ASC: 'ASC'>"}, "sqlglot.tokens.TokenType.ASOF": {"fullname": "sqlglot.tokens.TokenType.ASOF", "modulename": "sqlglot.tokens", "qualname": "TokenType.ASOF", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.ASOF: 'ASOF'>"}, "sqlglot.tokens.TokenType.AT_TIME_ZONE": {"fullname": "sqlglot.tokens.TokenType.AT_TIME_ZONE", "modulename": "sqlglot.tokens", "qualname": "TokenType.AT_TIME_ZONE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.AT_TIME_ZONE: 'AT_TIME_ZONE'>"}, "sqlglot.tokens.TokenType.AUTO_INCREMENT": {"fullname": "sqlglot.tokens.TokenType.AUTO_INCREMENT", "modulename": "sqlglot.tokens", "qualname": "TokenType.AUTO_INCREMENT", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>"}, "sqlglot.tokens.TokenType.BEGIN": {"fullname": "sqlglot.tokens.TokenType.BEGIN", "modulename": "sqlglot.tokens", "qualname": "TokenType.BEGIN", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.BEGIN: 'BEGIN'>"}, "sqlglot.tokens.TokenType.BETWEEN": {"fullname": "sqlglot.tokens.TokenType.BETWEEN", "modulename": "sqlglot.tokens", "qualname": "TokenType.BETWEEN", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.BETWEEN: 'BETWEEN'>"}, "sqlglot.tokens.TokenType.BOTH": {"fullname": "sqlglot.tokens.TokenType.BOTH", "modulename": "sqlglot.tokens", "qualname": "TokenType.BOTH", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.BOTH: 'BOTH'>"}, "sqlglot.tokens.TokenType.BUCKET": {"fullname": "sqlglot.tokens.TokenType.BUCKET", "modulename": "sqlglot.tokens", "qualname": "TokenType.BUCKET", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.BUCKET: 'BUCKET'>"}, "sqlglot.tokens.TokenType.BY_DEFAULT": {"fullname": "sqlglot.tokens.TokenType.BY_DEFAULT", "modulename": "sqlglot.tokens", "qualname": "TokenType.BY_DEFAULT", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.BY_DEFAULT: 'BY_DEFAULT'>"}, "sqlglot.tokens.TokenType.CACHE": {"fullname": "sqlglot.tokens.TokenType.CACHE", "modulename": "sqlglot.tokens", "qualname": "TokenType.CACHE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.CACHE: 'CACHE'>"}, "sqlglot.tokens.TokenType.CASCADE": {"fullname": "sqlglot.tokens.TokenType.CASCADE", "modulename": "sqlglot.tokens", "qualname": "TokenType.CASCADE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.CASCADE: 'CASCADE'>"}, "sqlglot.tokens.TokenType.CASE": {"fullname": "sqlglot.tokens.TokenType.CASE", "modulename": "sqlglot.tokens", "qualname": "TokenType.CASE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.CASE: 'CASE'>"}, "sqlglot.tokens.TokenType.CHARACTER_SET": {"fullname": "sqlglot.tokens.TokenType.CHARACTER_SET", "modulename": "sqlglot.tokens", "qualname": "TokenType.CHARACTER_SET", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.CHARACTER_SET: 'CHARACTER_SET'>"}, "sqlglot.tokens.TokenType.CLUSTER_BY": {"fullname": "sqlglot.tokens.TokenType.CLUSTER_BY", "modulename": "sqlglot.tokens", "qualname": "TokenType.CLUSTER_BY", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.CLUSTER_BY: 'CLUSTER_BY'>"}, "sqlglot.tokens.TokenType.COLLATE": {"fullname": "sqlglot.tokens.TokenType.COLLATE", "modulename": "sqlglot.tokens", "qualname": "TokenType.COLLATE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.COLLATE: 'COLLATE'>"}, "sqlglot.tokens.TokenType.COMMAND": {"fullname": "sqlglot.tokens.TokenType.COMMAND", "modulename": "sqlglot.tokens", "qualname": "TokenType.COMMAND", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.COMMAND: 'COMMAND'>"}, "sqlglot.tokens.TokenType.COMMENT": {"fullname": "sqlglot.tokens.TokenType.COMMENT", "modulename": "sqlglot.tokens", "qualname": "TokenType.COMMENT", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.COMMENT: 'COMMENT'>"}, "sqlglot.tokens.TokenType.COMMIT": {"fullname": "sqlglot.tokens.TokenType.COMMIT", "modulename": "sqlglot.tokens", "qualname": "TokenType.COMMIT", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.COMMIT: 'COMMIT'>"}, "sqlglot.tokens.TokenType.COMPOUND": {"fullname": "sqlglot.tokens.TokenType.COMPOUND", "modulename": "sqlglot.tokens", "qualname": "TokenType.COMPOUND", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.COMPOUND: 'COMPOUND'>"}, "sqlglot.tokens.TokenType.CONSTRAINT": {"fullname": "sqlglot.tokens.TokenType.CONSTRAINT", "modulename": "sqlglot.tokens", "qualname": "TokenType.CONSTRAINT", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.CONSTRAINT: 'CONSTRAINT'>"}, "sqlglot.tokens.TokenType.CREATE": {"fullname": "sqlglot.tokens.TokenType.CREATE", "modulename": "sqlglot.tokens", "qualname": "TokenType.CREATE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.CREATE: 'CREATE'>"}, "sqlglot.tokens.TokenType.CROSS": {"fullname": "sqlglot.tokens.TokenType.CROSS", "modulename": "sqlglot.tokens", "qualname": "TokenType.CROSS", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.CROSS: 'CROSS'>"}, "sqlglot.tokens.TokenType.CUBE": {"fullname": "sqlglot.tokens.TokenType.CUBE", "modulename": "sqlglot.tokens", "qualname": "TokenType.CUBE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.CUBE: 'CUBE'>"}, "sqlglot.tokens.TokenType.CURRENT_DATE": {"fullname": "sqlglot.tokens.TokenType.CURRENT_DATE", "modulename": "sqlglot.tokens", "qualname": "TokenType.CURRENT_DATE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.CURRENT_DATE: 'CURRENT_DATE'>"}, "sqlglot.tokens.TokenType.CURRENT_DATETIME": {"fullname": "sqlglot.tokens.TokenType.CURRENT_DATETIME", "modulename": "sqlglot.tokens", "qualname": "TokenType.CURRENT_DATETIME", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.CURRENT_DATETIME: 'CURRENT_DATETIME'>"}, "sqlglot.tokens.TokenType.CURRENT_ROW": {"fullname": "sqlglot.tokens.TokenType.CURRENT_ROW", "modulename": "sqlglot.tokens", "qualname": "TokenType.CURRENT_ROW", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.CURRENT_ROW: 'CURRENT_ROW'>"}, "sqlglot.tokens.TokenType.CURRENT_TIME": {"fullname": "sqlglot.tokens.TokenType.CURRENT_TIME", "modulename": "sqlglot.tokens", "qualname": "TokenType.CURRENT_TIME", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.CURRENT_TIME: 'CURRENT_TIME'>"}, "sqlglot.tokens.TokenType.CURRENT_TIMESTAMP": {"fullname": "sqlglot.tokens.TokenType.CURRENT_TIMESTAMP", "modulename": "sqlglot.tokens", "qualname": "TokenType.CURRENT_TIMESTAMP", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'>"}, "sqlglot.tokens.TokenType.DEFAULT": {"fullname": "sqlglot.tokens.TokenType.DEFAULT", "modulename": "sqlglot.tokens", "qualname": "TokenType.DEFAULT", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.DEFAULT: 'DEFAULT'>"}, "sqlglot.tokens.TokenType.DELETE": {"fullname": "sqlglot.tokens.TokenType.DELETE", "modulename": "sqlglot.tokens", "qualname": "TokenType.DELETE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.DELETE: 'DELETE'>"}, "sqlglot.tokens.TokenType.DESC": {"fullname": "sqlglot.tokens.TokenType.DESC", "modulename": "sqlglot.tokens", "qualname": "TokenType.DESC", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.DESC: 'DESC'>"}, "sqlglot.tokens.TokenType.DESCRIBE": {"fullname": "sqlglot.tokens.TokenType.DESCRIBE", "modulename": "sqlglot.tokens", "qualname": "TokenType.DESCRIBE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.DESCRIBE: 'DESCRIBE'>"}, "sqlglot.tokens.TokenType.DISTINCT": {"fullname": "sqlglot.tokens.TokenType.DISTINCT", "modulename": "sqlglot.tokens", "qualname": "TokenType.DISTINCT", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.DISTINCT: 'DISTINCT'>"}, "sqlglot.tokens.TokenType.DISTINCT_FROM": {"fullname": "sqlglot.tokens.TokenType.DISTINCT_FROM", "modulename": "sqlglot.tokens", "qualname": "TokenType.DISTINCT_FROM", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.DISTINCT_FROM: 'DISTINCT_FROM'>"}, "sqlglot.tokens.TokenType.DISTRIBUTE_BY": {"fullname": "sqlglot.tokens.TokenType.DISTRIBUTE_BY", "modulename": "sqlglot.tokens", "qualname": "TokenType.DISTRIBUTE_BY", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.DISTRIBUTE_BY: 'DISTRIBUTE_BY'>"}, "sqlglot.tokens.TokenType.DIV": {"fullname": "sqlglot.tokens.TokenType.DIV", "modulename": "sqlglot.tokens", "qualname": "TokenType.DIV", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.DIV: 'DIV'>"}, "sqlglot.tokens.TokenType.DROP": {"fullname": "sqlglot.tokens.TokenType.DROP", "modulename": "sqlglot.tokens", "qualname": "TokenType.DROP", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.DROP: 'DROP'>"}, "sqlglot.tokens.TokenType.ELSE": {"fullname": "sqlglot.tokens.TokenType.ELSE", "modulename": "sqlglot.tokens", "qualname": "TokenType.ELSE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.ELSE: 'ELSE'>"}, "sqlglot.tokens.TokenType.END": {"fullname": "sqlglot.tokens.TokenType.END", "modulename": "sqlglot.tokens", "qualname": "TokenType.END", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.END: 'END'>"}, "sqlglot.tokens.TokenType.ESCAPE": {"fullname": "sqlglot.tokens.TokenType.ESCAPE", "modulename": "sqlglot.tokens", "qualname": "TokenType.ESCAPE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.ESCAPE: 'ESCAPE'>"}, "sqlglot.tokens.TokenType.EXCEPT": {"fullname": "sqlglot.tokens.TokenType.EXCEPT", "modulename": "sqlglot.tokens", "qualname": "TokenType.EXCEPT", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.EXCEPT: 'EXCEPT'>"}, "sqlglot.tokens.TokenType.EXECUTE": {"fullname": "sqlglot.tokens.TokenType.EXECUTE", "modulename": "sqlglot.tokens", "qualname": "TokenType.EXECUTE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.EXECUTE: 'EXECUTE'>"}, "sqlglot.tokens.TokenType.EXISTS": {"fullname": "sqlglot.tokens.TokenType.EXISTS", "modulename": "sqlglot.tokens", "qualname": "TokenType.EXISTS", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.EXISTS: 'EXISTS'>"}, "sqlglot.tokens.TokenType.FALSE": {"fullname": "sqlglot.tokens.TokenType.FALSE", "modulename": "sqlglot.tokens", "qualname": "TokenType.FALSE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.FALSE: 'FALSE'>"}, "sqlglot.tokens.TokenType.FETCH": {"fullname": "sqlglot.tokens.TokenType.FETCH", "modulename": "sqlglot.tokens", "qualname": "TokenType.FETCH", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.FETCH: 'FETCH'>"}, "sqlglot.tokens.TokenType.FILTER": {"fullname": "sqlglot.tokens.TokenType.FILTER", "modulename": "sqlglot.tokens", "qualname": "TokenType.FILTER", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.FILTER: 'FILTER'>"}, "sqlglot.tokens.TokenType.FINAL": {"fullname": "sqlglot.tokens.TokenType.FINAL", "modulename": "sqlglot.tokens", "qualname": "TokenType.FINAL", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.FINAL: 'FINAL'>"}, "sqlglot.tokens.TokenType.FIRST": {"fullname": "sqlglot.tokens.TokenType.FIRST", "modulename": "sqlglot.tokens", "qualname": "TokenType.FIRST", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.FIRST: 'FIRST'>"}, "sqlglot.tokens.TokenType.FOLLOWING": {"fullname": "sqlglot.tokens.TokenType.FOLLOWING", "modulename": "sqlglot.tokens", "qualname": "TokenType.FOLLOWING", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.FOLLOWING: 'FOLLOWING'>"}, "sqlglot.tokens.TokenType.FOR": {"fullname": "sqlglot.tokens.TokenType.FOR", "modulename": "sqlglot.tokens", "qualname": "TokenType.FOR", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.FOR: 'FOR'>"}, "sqlglot.tokens.TokenType.FOREIGN_KEY": {"fullname": "sqlglot.tokens.TokenType.FOREIGN_KEY", "modulename": "sqlglot.tokens", "qualname": "TokenType.FOREIGN_KEY", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.FOREIGN_KEY: 'FOREIGN_KEY'>"}, "sqlglot.tokens.TokenType.FORMAT": {"fullname": "sqlglot.tokens.TokenType.FORMAT", "modulename": "sqlglot.tokens", "qualname": "TokenType.FORMAT", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.FORMAT: 'FORMAT'>"}, "sqlglot.tokens.TokenType.FROM": {"fullname": "sqlglot.tokens.TokenType.FROM", "modulename": "sqlglot.tokens", "qualname": "TokenType.FROM", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.FROM: 'FROM'>"}, "sqlglot.tokens.TokenType.FULL": {"fullname": "sqlglot.tokens.TokenType.FULL", "modulename": "sqlglot.tokens", "qualname": "TokenType.FULL", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.FULL: 'FULL'>"}, "sqlglot.tokens.TokenType.FUNCTION": {"fullname": "sqlglot.tokens.TokenType.FUNCTION", "modulename": "sqlglot.tokens", "qualname": "TokenType.FUNCTION", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.FUNCTION: 'FUNCTION'>"}, "sqlglot.tokens.TokenType.GLOB": {"fullname": "sqlglot.tokens.TokenType.GLOB", "modulename": "sqlglot.tokens", "qualname": "TokenType.GLOB", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.GLOB: 'GLOB'>"}, "sqlglot.tokens.TokenType.GLOBAL": {"fullname": "sqlglot.tokens.TokenType.GLOBAL", "modulename": "sqlglot.tokens", "qualname": "TokenType.GLOBAL", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.GLOBAL: 'GLOBAL'>"}, "sqlglot.tokens.TokenType.GROUP_BY": {"fullname": "sqlglot.tokens.TokenType.GROUP_BY", "modulename": "sqlglot.tokens", "qualname": "TokenType.GROUP_BY", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.GROUP_BY: 'GROUP_BY'>"}, "sqlglot.tokens.TokenType.GROUPING_SETS": {"fullname": "sqlglot.tokens.TokenType.GROUPING_SETS", "modulename": "sqlglot.tokens", "qualname": "TokenType.GROUPING_SETS", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.GROUPING_SETS: 'GROUPING_SETS'>"}, "sqlglot.tokens.TokenType.HAVING": {"fullname": "sqlglot.tokens.TokenType.HAVING", "modulename": "sqlglot.tokens", "qualname": "TokenType.HAVING", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.HAVING: 'HAVING'>"}, "sqlglot.tokens.TokenType.HINT": {"fullname": "sqlglot.tokens.TokenType.HINT", "modulename": "sqlglot.tokens", "qualname": "TokenType.HINT", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.HINT: 'HINT'>"}, "sqlglot.tokens.TokenType.IF": {"fullname": "sqlglot.tokens.TokenType.IF", "modulename": "sqlglot.tokens", "qualname": "TokenType.IF", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.IF: 'IF'>"}, "sqlglot.tokens.TokenType.IGNORE_NULLS": {"fullname": "sqlglot.tokens.TokenType.IGNORE_NULLS", "modulename": "sqlglot.tokens", "qualname": "TokenType.IGNORE_NULLS", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.IGNORE_NULLS: 'IGNORE_NULLS'>"}, "sqlglot.tokens.TokenType.ILIKE": {"fullname": "sqlglot.tokens.TokenType.ILIKE", "modulename": "sqlglot.tokens", "qualname": "TokenType.ILIKE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.ILIKE: 'ILIKE'>"}, "sqlglot.tokens.TokenType.ILIKE_ANY": {"fullname": "sqlglot.tokens.TokenType.ILIKE_ANY", "modulename": "sqlglot.tokens", "qualname": "TokenType.ILIKE_ANY", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.ILIKE_ANY: 'ILIKE_ANY'>"}, "sqlglot.tokens.TokenType.IN": {"fullname": "sqlglot.tokens.TokenType.IN", "modulename": "sqlglot.tokens", "qualname": "TokenType.IN", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.IN: 'IN'>"}, "sqlglot.tokens.TokenType.INDEX": {"fullname": "sqlglot.tokens.TokenType.INDEX", "modulename": "sqlglot.tokens", "qualname": "TokenType.INDEX", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.INDEX: 'INDEX'>"}, "sqlglot.tokens.TokenType.INNER": {"fullname": "sqlglot.tokens.TokenType.INNER", "modulename": "sqlglot.tokens", "qualname": "TokenType.INNER", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.INNER: 'INNER'>"}, "sqlglot.tokens.TokenType.INSERT": {"fullname": "sqlglot.tokens.TokenType.INSERT", "modulename": "sqlglot.tokens", "qualname": "TokenType.INSERT", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.INSERT: 'INSERT'>"}, "sqlglot.tokens.TokenType.INTERSECT": {"fullname": "sqlglot.tokens.TokenType.INTERSECT", "modulename": "sqlglot.tokens", "qualname": "TokenType.INTERSECT", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.INTERSECT: 'INTERSECT'>"}, "sqlglot.tokens.TokenType.INTERVAL": {"fullname": "sqlglot.tokens.TokenType.INTERVAL", "modulename": "sqlglot.tokens", "qualname": "TokenType.INTERVAL", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.INTERVAL: 'INTERVAL'>"}, "sqlglot.tokens.TokenType.INTO": {"fullname": "sqlglot.tokens.TokenType.INTO", "modulename": "sqlglot.tokens", "qualname": "TokenType.INTO", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.INTO: 'INTO'>"}, "sqlglot.tokens.TokenType.INTRODUCER": {"fullname": "sqlglot.tokens.TokenType.INTRODUCER", "modulename": "sqlglot.tokens", "qualname": "TokenType.INTRODUCER", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.INTRODUCER: 'INTRODUCER'>"}, "sqlglot.tokens.TokenType.IRLIKE": {"fullname": "sqlglot.tokens.TokenType.IRLIKE", "modulename": "sqlglot.tokens", "qualname": "TokenType.IRLIKE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.IRLIKE: 'IRLIKE'>"}, "sqlglot.tokens.TokenType.IS": {"fullname": "sqlglot.tokens.TokenType.IS", "modulename": "sqlglot.tokens", "qualname": "TokenType.IS", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.IS: 'IS'>"}, "sqlglot.tokens.TokenType.ISNULL": {"fullname": "sqlglot.tokens.TokenType.ISNULL", "modulename": "sqlglot.tokens", "qualname": "TokenType.ISNULL", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.ISNULL: 'ISNULL'>"}, "sqlglot.tokens.TokenType.JOIN": {"fullname": "sqlglot.tokens.TokenType.JOIN", "modulename": "sqlglot.tokens", "qualname": "TokenType.JOIN", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.JOIN: 'JOIN'>"}, "sqlglot.tokens.TokenType.JOIN_MARKER": {"fullname": "sqlglot.tokens.TokenType.JOIN_MARKER", "modulename": "sqlglot.tokens", "qualname": "TokenType.JOIN_MARKER", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.JOIN_MARKER: 'JOIN_MARKER'>"}, "sqlglot.tokens.TokenType.LANGUAGE": {"fullname": "sqlglot.tokens.TokenType.LANGUAGE", "modulename": "sqlglot.tokens", "qualname": "TokenType.LANGUAGE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.LANGUAGE: 'LANGUAGE'>"}, "sqlglot.tokens.TokenType.LATERAL": {"fullname": "sqlglot.tokens.TokenType.LATERAL", "modulename": "sqlglot.tokens", "qualname": "TokenType.LATERAL", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.LATERAL: 'LATERAL'>"}, "sqlglot.tokens.TokenType.LAZY": {"fullname": "sqlglot.tokens.TokenType.LAZY", "modulename": "sqlglot.tokens", "qualname": "TokenType.LAZY", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.LAZY: 'LAZY'>"}, "sqlglot.tokens.TokenType.LEADING": {"fullname": "sqlglot.tokens.TokenType.LEADING", "modulename": "sqlglot.tokens", "qualname": "TokenType.LEADING", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.LEADING: 'LEADING'>"}, "sqlglot.tokens.TokenType.LEFT": {"fullname": "sqlglot.tokens.TokenType.LEFT", "modulename": "sqlglot.tokens", "qualname": "TokenType.LEFT", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.LEFT: 'LEFT'>"}, "sqlglot.tokens.TokenType.LIKE": {"fullname": "sqlglot.tokens.TokenType.LIKE", "modulename": "sqlglot.tokens", "qualname": "TokenType.LIKE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.LIKE: 'LIKE'>"}, "sqlglot.tokens.TokenType.LIKE_ANY": {"fullname": "sqlglot.tokens.TokenType.LIKE_ANY", "modulename": "sqlglot.tokens", "qualname": "TokenType.LIKE_ANY", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.LIKE_ANY: 'LIKE_ANY'>"}, "sqlglot.tokens.TokenType.LIMIT": {"fullname": "sqlglot.tokens.TokenType.LIMIT", "modulename": "sqlglot.tokens", "qualname": "TokenType.LIMIT", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.LIMIT: 'LIMIT'>"}, "sqlglot.tokens.TokenType.LOAD_DATA": {"fullname": "sqlglot.tokens.TokenType.LOAD_DATA", "modulename": "sqlglot.tokens", "qualname": "TokenType.LOAD_DATA", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.LOAD_DATA: 'LOAD_DATA'>"}, "sqlglot.tokens.TokenType.LOCAL": {"fullname": "sqlglot.tokens.TokenType.LOCAL", "modulename": "sqlglot.tokens", "qualname": "TokenType.LOCAL", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.LOCAL: 'LOCAL'>"}, "sqlglot.tokens.TokenType.MAP": {"fullname": "sqlglot.tokens.TokenType.MAP", "modulename": "sqlglot.tokens", "qualname": "TokenType.MAP", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.MAP: 'MAP'>"}, "sqlglot.tokens.TokenType.MATCH_RECOGNIZE": {"fullname": "sqlglot.tokens.TokenType.MATCH_RECOGNIZE", "modulename": "sqlglot.tokens", "qualname": "TokenType.MATCH_RECOGNIZE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.MATCH_RECOGNIZE: 'MATCH_RECOGNIZE'>"}, "sqlglot.tokens.TokenType.MATERIALIZED": {"fullname": "sqlglot.tokens.TokenType.MATERIALIZED", "modulename": "sqlglot.tokens", "qualname": "TokenType.MATERIALIZED", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.MATERIALIZED: 'MATERIALIZED'>"}, "sqlglot.tokens.TokenType.MERGE": {"fullname": "sqlglot.tokens.TokenType.MERGE", "modulename": "sqlglot.tokens", "qualname": "TokenType.MERGE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.MERGE: 'MERGE'>"}, "sqlglot.tokens.TokenType.MOD": {"fullname": "sqlglot.tokens.TokenType.MOD", "modulename": "sqlglot.tokens", "qualname": "TokenType.MOD", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.MOD: 'MOD'>"}, "sqlglot.tokens.TokenType.NATURAL": {"fullname": "sqlglot.tokens.TokenType.NATURAL", "modulename": "sqlglot.tokens", "qualname": "TokenType.NATURAL", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.NATURAL: 'NATURAL'>"}, "sqlglot.tokens.TokenType.NEXT": {"fullname": "sqlglot.tokens.TokenType.NEXT", "modulename": "sqlglot.tokens", "qualname": "TokenType.NEXT", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.NEXT: 'NEXT'>"}, "sqlglot.tokens.TokenType.NO_ACTION": {"fullname": "sqlglot.tokens.TokenType.NO_ACTION", "modulename": "sqlglot.tokens", "qualname": "TokenType.NO_ACTION", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.NO_ACTION: 'NO_ACTION'>"}, "sqlglot.tokens.TokenType.NOTNULL": {"fullname": "sqlglot.tokens.TokenType.NOTNULL", "modulename": "sqlglot.tokens", "qualname": "TokenType.NOTNULL", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.NOTNULL: 'NOTNULL'>"}, "sqlglot.tokens.TokenType.NULL": {"fullname": "sqlglot.tokens.TokenType.NULL", "modulename": "sqlglot.tokens", "qualname": "TokenType.NULL", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.NULL: 'NULL'>"}, "sqlglot.tokens.TokenType.NULLS_FIRST": {"fullname": "sqlglot.tokens.TokenType.NULLS_FIRST", "modulename": "sqlglot.tokens", "qualname": "TokenType.NULLS_FIRST", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.NULLS_FIRST: 'NULLS_FIRST'>"}, "sqlglot.tokens.TokenType.NULLS_LAST": {"fullname": "sqlglot.tokens.TokenType.NULLS_LAST", "modulename": "sqlglot.tokens", "qualname": "TokenType.NULLS_LAST", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.NULLS_LAST: 'NULLS_LAST'>"}, "sqlglot.tokens.TokenType.OFFSET": {"fullname": "sqlglot.tokens.TokenType.OFFSET", "modulename": "sqlglot.tokens", "qualname": "TokenType.OFFSET", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.OFFSET: 'OFFSET'>"}, "sqlglot.tokens.TokenType.ON": {"fullname": "sqlglot.tokens.TokenType.ON", "modulename": "sqlglot.tokens", "qualname": "TokenType.ON", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.ON: 'ON'>"}, "sqlglot.tokens.TokenType.ONLY": {"fullname": "sqlglot.tokens.TokenType.ONLY", "modulename": "sqlglot.tokens", "qualname": "TokenType.ONLY", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.ONLY: 'ONLY'>"}, "sqlglot.tokens.TokenType.OPTIONS": {"fullname": "sqlglot.tokens.TokenType.OPTIONS", "modulename": "sqlglot.tokens", "qualname": "TokenType.OPTIONS", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.OPTIONS: 'OPTIONS'>"}, "sqlglot.tokens.TokenType.ORDER_BY": {"fullname": "sqlglot.tokens.TokenType.ORDER_BY", "modulename": "sqlglot.tokens", "qualname": "TokenType.ORDER_BY", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.ORDER_BY: 'ORDER_BY'>"}, "sqlglot.tokens.TokenType.ORDERED": {"fullname": "sqlglot.tokens.TokenType.ORDERED", "modulename": "sqlglot.tokens", "qualname": "TokenType.ORDERED", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.ORDERED: 'ORDERED'>"}, "sqlglot.tokens.TokenType.ORDINALITY": {"fullname": "sqlglot.tokens.TokenType.ORDINALITY", "modulename": "sqlglot.tokens", "qualname": "TokenType.ORDINALITY", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.ORDINALITY: 'ORDINALITY'>"}, "sqlglot.tokens.TokenType.OUTER": {"fullname": "sqlglot.tokens.TokenType.OUTER", "modulename": "sqlglot.tokens", "qualname": "TokenType.OUTER", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.OUTER: 'OUTER'>"}, "sqlglot.tokens.TokenType.OUT_OF": {"fullname": "sqlglot.tokens.TokenType.OUT_OF", "modulename": "sqlglot.tokens", "qualname": "TokenType.OUT_OF", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.OUT_OF: 'OUT_OF'>"}, "sqlglot.tokens.TokenType.OVER": {"fullname": "sqlglot.tokens.TokenType.OVER", "modulename": "sqlglot.tokens", "qualname": "TokenType.OVER", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.OVER: 'OVER'>"}, "sqlglot.tokens.TokenType.OVERLAPS": {"fullname": "sqlglot.tokens.TokenType.OVERLAPS", "modulename": "sqlglot.tokens", "qualname": "TokenType.OVERLAPS", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.OVERLAPS: 'OVERLAPS'>"}, "sqlglot.tokens.TokenType.OVERWRITE": {"fullname": "sqlglot.tokens.TokenType.OVERWRITE", "modulename": "sqlglot.tokens", "qualname": "TokenType.OVERWRITE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.OVERWRITE: 'OVERWRITE'>"}, "sqlglot.tokens.TokenType.PARTITION": {"fullname": "sqlglot.tokens.TokenType.PARTITION", "modulename": "sqlglot.tokens", "qualname": "TokenType.PARTITION", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.PARTITION: 'PARTITION'>"}, "sqlglot.tokens.TokenType.PARTITION_BY": {"fullname": "sqlglot.tokens.TokenType.PARTITION_BY", "modulename": "sqlglot.tokens", "qualname": "TokenType.PARTITION_BY", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.PARTITION_BY: 'PARTITION_BY'>"}, "sqlglot.tokens.TokenType.PERCENT": {"fullname": "sqlglot.tokens.TokenType.PERCENT", "modulename": "sqlglot.tokens", "qualname": "TokenType.PERCENT", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.PERCENT: 'PERCENT'>"}, "sqlglot.tokens.TokenType.PIVOT": {"fullname": "sqlglot.tokens.TokenType.PIVOT", "modulename": "sqlglot.tokens", "qualname": "TokenType.PIVOT", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.PIVOT: 'PIVOT'>"}, "sqlglot.tokens.TokenType.PLACEHOLDER": {"fullname": "sqlglot.tokens.TokenType.PLACEHOLDER", "modulename": "sqlglot.tokens", "qualname": "TokenType.PLACEHOLDER", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.PLACEHOLDER: 'PLACEHOLDER'>"}, "sqlglot.tokens.TokenType.PRAGMA": {"fullname": "sqlglot.tokens.TokenType.PRAGMA", "modulename": "sqlglot.tokens", "qualname": "TokenType.PRAGMA", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.PRAGMA: 'PRAGMA'>"}, "sqlglot.tokens.TokenType.PRECEDING": {"fullname": "sqlglot.tokens.TokenType.PRECEDING", "modulename": "sqlglot.tokens", "qualname": "TokenType.PRECEDING", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.PRECEDING: 'PRECEDING'>"}, "sqlglot.tokens.TokenType.PRIMARY_KEY": {"fullname": "sqlglot.tokens.TokenType.PRIMARY_KEY", "modulename": "sqlglot.tokens", "qualname": "TokenType.PRIMARY_KEY", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.PRIMARY_KEY: 'PRIMARY_KEY'>"}, "sqlglot.tokens.TokenType.PROCEDURE": {"fullname": "sqlglot.tokens.TokenType.PROCEDURE", "modulename": "sqlglot.tokens", "qualname": "TokenType.PROCEDURE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.PROCEDURE: 'PROCEDURE'>"}, "sqlglot.tokens.TokenType.PROPERTIES": {"fullname": "sqlglot.tokens.TokenType.PROPERTIES", "modulename": "sqlglot.tokens", "qualname": "TokenType.PROPERTIES", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.PROPERTIES: 'PROPERTIES'>"}, "sqlglot.tokens.TokenType.PSEUDO_TYPE": {"fullname": "sqlglot.tokens.TokenType.PSEUDO_TYPE", "modulename": "sqlglot.tokens", "qualname": "TokenType.PSEUDO_TYPE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.PSEUDO_TYPE: 'PSEUDO_TYPE'>"}, "sqlglot.tokens.TokenType.QUALIFY": {"fullname": "sqlglot.tokens.TokenType.QUALIFY", "modulename": "sqlglot.tokens", "qualname": "TokenType.QUALIFY", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.QUALIFY: 'QUALIFY'>"}, "sqlglot.tokens.TokenType.QUOTE": {"fullname": "sqlglot.tokens.TokenType.QUOTE", "modulename": "sqlglot.tokens", "qualname": "TokenType.QUOTE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.QUOTE: 'QUOTE'>"}, "sqlglot.tokens.TokenType.RANGE": {"fullname": "sqlglot.tokens.TokenType.RANGE", "modulename": "sqlglot.tokens", "qualname": "TokenType.RANGE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.RANGE: 'RANGE'>"}, "sqlglot.tokens.TokenType.RECURSIVE": {"fullname": "sqlglot.tokens.TokenType.RECURSIVE", "modulename": "sqlglot.tokens", "qualname": "TokenType.RECURSIVE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.RECURSIVE: 'RECURSIVE'>"}, "sqlglot.tokens.TokenType.REPLACE": {"fullname": "sqlglot.tokens.TokenType.REPLACE", "modulename": "sqlglot.tokens", "qualname": "TokenType.REPLACE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.REPLACE: 'REPLACE'>"}, "sqlglot.tokens.TokenType.RESPECT_NULLS": {"fullname": "sqlglot.tokens.TokenType.RESPECT_NULLS", "modulename": "sqlglot.tokens", "qualname": "TokenType.RESPECT_NULLS", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.RESPECT_NULLS: 'RESPECT_NULLS'>"}, "sqlglot.tokens.TokenType.RETURNING": {"fullname": "sqlglot.tokens.TokenType.RETURNING", "modulename": "sqlglot.tokens", "qualname": "TokenType.RETURNING", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.RETURNING: 'RETURNING'>"}, "sqlglot.tokens.TokenType.REFERENCES": {"fullname": "sqlglot.tokens.TokenType.REFERENCES", "modulename": "sqlglot.tokens", "qualname": "TokenType.REFERENCES", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.REFERENCES: 'REFERENCES'>"}, "sqlglot.tokens.TokenType.RIGHT": {"fullname": "sqlglot.tokens.TokenType.RIGHT", "modulename": "sqlglot.tokens", "qualname": "TokenType.RIGHT", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.RIGHT: 'RIGHT'>"}, "sqlglot.tokens.TokenType.RLIKE": {"fullname": "sqlglot.tokens.TokenType.RLIKE", "modulename": "sqlglot.tokens", "qualname": "TokenType.RLIKE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.RLIKE: 'RLIKE'>"}, "sqlglot.tokens.TokenType.ROLLBACK": {"fullname": "sqlglot.tokens.TokenType.ROLLBACK", "modulename": "sqlglot.tokens", "qualname": "TokenType.ROLLBACK", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.ROLLBACK: 'ROLLBACK'>"}, "sqlglot.tokens.TokenType.ROLLUP": {"fullname": "sqlglot.tokens.TokenType.ROLLUP", "modulename": "sqlglot.tokens", "qualname": "TokenType.ROLLUP", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.ROLLUP: 'ROLLUP'>"}, "sqlglot.tokens.TokenType.ROW": {"fullname": "sqlglot.tokens.TokenType.ROW", "modulename": "sqlglot.tokens", "qualname": "TokenType.ROW", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.ROW: 'ROW'>"}, "sqlglot.tokens.TokenType.ROWS": {"fullname": "sqlglot.tokens.TokenType.ROWS", "modulename": "sqlglot.tokens", "qualname": "TokenType.ROWS", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.ROWS: 'ROWS'>"}, "sqlglot.tokens.TokenType.SEED": {"fullname": "sqlglot.tokens.TokenType.SEED", "modulename": "sqlglot.tokens", "qualname": "TokenType.SEED", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.SEED: 'SEED'>"}, "sqlglot.tokens.TokenType.SELECT": {"fullname": "sqlglot.tokens.TokenType.SELECT", "modulename": "sqlglot.tokens", "qualname": "TokenType.SELECT", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.SELECT: 'SELECT'>"}, "sqlglot.tokens.TokenType.SEMI": {"fullname": "sqlglot.tokens.TokenType.SEMI", "modulename": "sqlglot.tokens", "qualname": "TokenType.SEMI", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.SEMI: 'SEMI'>"}, "sqlglot.tokens.TokenType.SEPARATOR": {"fullname": "sqlglot.tokens.TokenType.SEPARATOR", "modulename": "sqlglot.tokens", "qualname": "TokenType.SEPARATOR", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.SEPARATOR: 'SEPARATOR'>"}, "sqlglot.tokens.TokenType.SERDE_PROPERTIES": {"fullname": "sqlglot.tokens.TokenType.SERDE_PROPERTIES", "modulename": "sqlglot.tokens", "qualname": "TokenType.SERDE_PROPERTIES", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.SERDE_PROPERTIES: 'SERDE_PROPERTIES'>"}, "sqlglot.tokens.TokenType.SET": {"fullname": "sqlglot.tokens.TokenType.SET", "modulename": "sqlglot.tokens", "qualname": "TokenType.SET", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.SET: 'SET'>"}, "sqlglot.tokens.TokenType.SHOW": {"fullname": "sqlglot.tokens.TokenType.SHOW", "modulename": "sqlglot.tokens", "qualname": "TokenType.SHOW", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.SHOW: 'SHOW'>"}, "sqlglot.tokens.TokenType.SIMILAR_TO": {"fullname": "sqlglot.tokens.TokenType.SIMILAR_TO", "modulename": "sqlglot.tokens", "qualname": "TokenType.SIMILAR_TO", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.SIMILAR_TO: 'SIMILAR_TO'>"}, "sqlglot.tokens.TokenType.SOME": {"fullname": "sqlglot.tokens.TokenType.SOME", "modulename": "sqlglot.tokens", "qualname": "TokenType.SOME", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.SOME: 'SOME'>"}, "sqlglot.tokens.TokenType.SORTKEY": {"fullname": "sqlglot.tokens.TokenType.SORTKEY", "modulename": "sqlglot.tokens", "qualname": "TokenType.SORTKEY", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.SORTKEY: 'SORTKEY'>"}, "sqlglot.tokens.TokenType.SORT_BY": {"fullname": "sqlglot.tokens.TokenType.SORT_BY", "modulename": "sqlglot.tokens", "qualname": "TokenType.SORT_BY", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.SORT_BY: 'SORT_BY'>"}, "sqlglot.tokens.TokenType.STRUCT": {"fullname": "sqlglot.tokens.TokenType.STRUCT", "modulename": "sqlglot.tokens", "qualname": "TokenType.STRUCT", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.STRUCT: 'STRUCT'>"}, "sqlglot.tokens.TokenType.TABLE_SAMPLE": {"fullname": "sqlglot.tokens.TokenType.TABLE_SAMPLE", "modulename": "sqlglot.tokens", "qualname": "TokenType.TABLE_SAMPLE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.TABLE_SAMPLE: 'TABLE_SAMPLE'>"}, "sqlglot.tokens.TokenType.TEMPORARY": {"fullname": "sqlglot.tokens.TokenType.TEMPORARY", "modulename": "sqlglot.tokens", "qualname": "TokenType.TEMPORARY", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.TEMPORARY: 'TEMPORARY'>"}, "sqlglot.tokens.TokenType.TOP": {"fullname": "sqlglot.tokens.TokenType.TOP", "modulename": "sqlglot.tokens", "qualname": "TokenType.TOP", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.TOP: 'TOP'>"}, "sqlglot.tokens.TokenType.THEN": {"fullname": "sqlglot.tokens.TokenType.THEN", "modulename": "sqlglot.tokens", "qualname": "TokenType.THEN", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.THEN: 'THEN'>"}, "sqlglot.tokens.TokenType.TRAILING": {"fullname": "sqlglot.tokens.TokenType.TRAILING", "modulename": "sqlglot.tokens", "qualname": "TokenType.TRAILING", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.TRAILING: 'TRAILING'>"}, "sqlglot.tokens.TokenType.TRUE": {"fullname": "sqlglot.tokens.TokenType.TRUE", "modulename": "sqlglot.tokens", "qualname": "TokenType.TRUE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.TRUE: 'TRUE'>"}, "sqlglot.tokens.TokenType.UNBOUNDED": {"fullname": "sqlglot.tokens.TokenType.UNBOUNDED", "modulename": "sqlglot.tokens", "qualname": "TokenType.UNBOUNDED", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.UNBOUNDED: 'UNBOUNDED'>"}, "sqlglot.tokens.TokenType.UNCACHE": {"fullname": "sqlglot.tokens.TokenType.UNCACHE", "modulename": "sqlglot.tokens", "qualname": "TokenType.UNCACHE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.UNCACHE: 'UNCACHE'>"}, "sqlglot.tokens.TokenType.UNION": {"fullname": "sqlglot.tokens.TokenType.UNION", "modulename": "sqlglot.tokens", "qualname": "TokenType.UNION", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.UNION: 'UNION'>"}, "sqlglot.tokens.TokenType.UNLOGGED": {"fullname": "sqlglot.tokens.TokenType.UNLOGGED", "modulename": "sqlglot.tokens", "qualname": "TokenType.UNLOGGED", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.UNLOGGED: 'UNLOGGED'>"}, "sqlglot.tokens.TokenType.UNNEST": {"fullname": "sqlglot.tokens.TokenType.UNNEST", "modulename": "sqlglot.tokens", "qualname": "TokenType.UNNEST", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.UNNEST: 'UNNEST'>"}, "sqlglot.tokens.TokenType.UNPIVOT": {"fullname": "sqlglot.tokens.TokenType.UNPIVOT", "modulename": "sqlglot.tokens", "qualname": "TokenType.UNPIVOT", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.UNPIVOT: 'UNPIVOT'>"}, "sqlglot.tokens.TokenType.UPDATE": {"fullname": "sqlglot.tokens.TokenType.UPDATE", "modulename": "sqlglot.tokens", "qualname": "TokenType.UPDATE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.UPDATE: 'UPDATE'>"}, "sqlglot.tokens.TokenType.USE": {"fullname": "sqlglot.tokens.TokenType.USE", "modulename": "sqlglot.tokens", "qualname": "TokenType.USE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.USE: 'USE'>"}, "sqlglot.tokens.TokenType.USING": {"fullname": "sqlglot.tokens.TokenType.USING", "modulename": "sqlglot.tokens", "qualname": "TokenType.USING", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.USING: 'USING'>"}, "sqlglot.tokens.TokenType.VALUES": {"fullname": "sqlglot.tokens.TokenType.VALUES", "modulename": "sqlglot.tokens", "qualname": "TokenType.VALUES", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.VALUES: 'VALUES'>"}, "sqlglot.tokens.TokenType.VIEW": {"fullname": "sqlglot.tokens.TokenType.VIEW", "modulename": "sqlglot.tokens", "qualname": "TokenType.VIEW", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.VIEW: 'VIEW'>"}, "sqlglot.tokens.TokenType.VOLATILE": {"fullname": "sqlglot.tokens.TokenType.VOLATILE", "modulename": "sqlglot.tokens", "qualname": "TokenType.VOLATILE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.VOLATILE: 'VOLATILE'>"}, "sqlglot.tokens.TokenType.WHEN": {"fullname": "sqlglot.tokens.TokenType.WHEN", "modulename": "sqlglot.tokens", "qualname": "TokenType.WHEN", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.WHEN: 'WHEN'>"}, "sqlglot.tokens.TokenType.WHERE": {"fullname": "sqlglot.tokens.TokenType.WHERE", "modulename": "sqlglot.tokens", "qualname": "TokenType.WHERE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.WHERE: 'WHERE'>"}, "sqlglot.tokens.TokenType.WINDOW": {"fullname": "sqlglot.tokens.TokenType.WINDOW", "modulename": "sqlglot.tokens", "qualname": "TokenType.WINDOW", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.WINDOW: 'WINDOW'>"}, "sqlglot.tokens.TokenType.WITH": {"fullname": "sqlglot.tokens.TokenType.WITH", "modulename": "sqlglot.tokens", "qualname": "TokenType.WITH", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.WITH: 'WITH'>"}, "sqlglot.tokens.TokenType.WITH_TIME_ZONE": {"fullname": "sqlglot.tokens.TokenType.WITH_TIME_ZONE", "modulename": "sqlglot.tokens", "qualname": "TokenType.WITH_TIME_ZONE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.WITH_TIME_ZONE: 'WITH_TIME_ZONE'>"}, "sqlglot.tokens.TokenType.WITH_LOCAL_TIME_ZONE": {"fullname": "sqlglot.tokens.TokenType.WITH_LOCAL_TIME_ZONE", "modulename": "sqlglot.tokens", "qualname": "TokenType.WITH_LOCAL_TIME_ZONE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.WITH_LOCAL_TIME_ZONE: 'WITH_LOCAL_TIME_ZONE'>"}, "sqlglot.tokens.TokenType.WITHIN_GROUP": {"fullname": "sqlglot.tokens.TokenType.WITHIN_GROUP", "modulename": "sqlglot.tokens", "qualname": "TokenType.WITHIN_GROUP", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.WITHIN_GROUP: 'WITHIN_GROUP'>"}, "sqlglot.tokens.TokenType.WITHOUT_TIME_ZONE": {"fullname": "sqlglot.tokens.TokenType.WITHOUT_TIME_ZONE", "modulename": "sqlglot.tokens", "qualname": "TokenType.WITHOUT_TIME_ZONE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.WITHOUT_TIME_ZONE: 'WITHOUT_TIME_ZONE'>"}, "sqlglot.tokens.TokenType.UNIQUE": {"fullname": "sqlglot.tokens.TokenType.UNIQUE", "modulename": "sqlglot.tokens", "qualname": "TokenType.UNIQUE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.UNIQUE: 'UNIQUE'>"}, "sqlglot.tokens.Token": {"fullname": "sqlglot.tokens.Token", "modulename": "sqlglot.tokens", "qualname": "Token", "kind": "class", "doc": "

\n"}, "sqlglot.tokens.Token.__init__": {"fullname": "sqlglot.tokens.Token.__init__", "modulename": "sqlglot.tokens", "qualname": "Token.__init__", "kind": "function", "doc": "

\n", "signature": "(\ttoken_type: sqlglot.tokens.TokenType,\ttext: str,\tline: int = 1,\tcol: int = 1,\tcomments: List[str] = [])"}, "sqlglot.tokens.Token.number": {"fullname": "sqlglot.tokens.Token.number", "modulename": "sqlglot.tokens", "qualname": "Token.number", "kind": "function", "doc": "

Returns a NUMBER token with number as its text.

\n", "signature": "(cls, number: int) -> sqlglot.tokens.Token:", "funcdef": "def"}, "sqlglot.tokens.Token.string": {"fullname": "sqlglot.tokens.Token.string", "modulename": "sqlglot.tokens", "qualname": "Token.string", "kind": "function", "doc": "

Returns a STRING token with string as its text.

\n", "signature": "(cls, string: str) -> sqlglot.tokens.Token:", "funcdef": "def"}, "sqlglot.tokens.Token.identifier": {"fullname": "sqlglot.tokens.Token.identifier", "modulename": "sqlglot.tokens", "qualname": "Token.identifier", "kind": "function", "doc": "

Returns an IDENTIFIER token with identifier as its text.

\n", "signature": "(cls, identifier: str) -> sqlglot.tokens.Token:", "funcdef": "def"}, "sqlglot.tokens.Token.var": {"fullname": "sqlglot.tokens.Token.var", "modulename": "sqlglot.tokens", "qualname": "Token.var", "kind": "function", "doc": "

Returns an VAR token with var as its text.

\n", "signature": "(cls, var: str) -> sqlglot.tokens.Token:", "funcdef": "def"}, "sqlglot.tokens.Tokenizer": {"fullname": "sqlglot.tokens.Tokenizer", "modulename": "sqlglot.tokens", "qualname": "Tokenizer", "kind": "class", "doc": "

\n"}, "sqlglot.tokens.Tokenizer.reset": {"fullname": "sqlglot.tokens.Tokenizer.reset", "modulename": "sqlglot.tokens", "qualname": "Tokenizer.reset", "kind": "function", "doc": "

\n", "signature": "(self) -> None:", "funcdef": "def"}, "sqlglot.tokens.Tokenizer.tokenize": {"fullname": "sqlglot.tokens.Tokenizer.tokenize", "modulename": "sqlglot.tokens", "qualname": "Tokenizer.tokenize", "kind": "function", "doc": "

Returns a list of tokens corresponding to the SQL string sql.

\n", "signature": "(self, sql: str) -> List[sqlglot.tokens.Token]:", "funcdef": "def"}, "sqlglot.transforms": {"fullname": "sqlglot.transforms", "modulename": "sqlglot.transforms", "kind": "module", "doc": "

\n"}, "sqlglot.transforms.unalias_group": {"fullname": "sqlglot.transforms.unalias_group", "modulename": "sqlglot.transforms", "qualname": "unalias_group", "kind": "function", "doc": "

Replace references to select aliases in GROUP BY clauses.

\n\n
Example:
\n\n
\n
\n
>>> import sqlglot\n>>> sqlglot.parse_one("SELECT a AS b FROM x GROUP BY b").transform(unalias_group).sql()\n'SELECT a AS b FROM x GROUP BY 1'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • expression: the expression that will be transformed.
  • \n
\n\n
Returns:
\n\n
\n

The transformed expression.

\n
\n", "signature": "(\texpression: sqlglot.expressions.Expression) -> sqlglot.expressions.Expression:", "funcdef": "def"}, "sqlglot.transforms.eliminate_distinct_on": {"fullname": "sqlglot.transforms.eliminate_distinct_on", "modulename": "sqlglot.transforms", "qualname": "eliminate_distinct_on", "kind": "function", "doc": "

Convert SELECT DISTINCT ON statements to a subquery with a window function.

\n\n

This is useful for dialects that don't support SELECT DISTINCT ON but support window functions.

\n\n
Arguments:
\n\n
    \n
  • expression: the expression that will be transformed.
  • \n
\n\n
Returns:
\n\n
\n

The transformed expression.

\n
\n", "signature": "(\texpression: sqlglot.expressions.Expression) -> sqlglot.expressions.Expression:", "funcdef": "def"}, "sqlglot.transforms.eliminate_qualify": {"fullname": "sqlglot.transforms.eliminate_qualify", "modulename": "sqlglot.transforms", "qualname": "eliminate_qualify", "kind": "function", "doc": "

Convert SELECT statements that contain the QUALIFY clause into subqueries, filtered equivalently.

\n\n

The idea behind this transformation can be seen in Snowflake's documentation for QUALIFY:\nhttps://docs.snowflake.com/en/sql-reference/constructs/qualify

\n\n

Some dialects don't support window functions in the WHERE clause, so we need to include them as\nprojections in the subquery, in order to refer to them in the outer filter using aliases. Also,\nif a column is referenced in the QUALIFY clause but is not selected, we need to include it too,\notherwise we won't be able to refer to it in the outer query's WHERE clause.

\n", "signature": "(\texpression: sqlglot.expressions.Expression) -> sqlglot.expressions.Expression:", "funcdef": "def"}, "sqlglot.transforms.remove_precision_parameterized_types": {"fullname": "sqlglot.transforms.remove_precision_parameterized_types", "modulename": "sqlglot.transforms", "qualname": "remove_precision_parameterized_types", "kind": "function", "doc": "

Some dialects only allow the precision for parameterized types to be defined in the DDL and not in\nother expressions. This transforms removes the precision from parameterized types in expressions.

\n", "signature": "(\texpression: sqlglot.expressions.Expression) -> sqlglot.expressions.Expression:", "funcdef": "def"}, "sqlglot.transforms.preprocess": {"fullname": "sqlglot.transforms.preprocess", "modulename": "sqlglot.transforms", "qualname": "preprocess", "kind": "function", "doc": "

Creates a new transform by chaining a sequence of transformations and converts the resulting\nexpression to SQL, using an appropriate Generator.TRANSFORMS function.

\n\n
Arguments:
\n\n
    \n
  • transforms: sequence of transform functions. These will be called in order.
  • \n
  • to_sql: final transform that converts the resulting expression to a SQL string.
  • \n
\n\n
Returns:
\n\n
\n

Function that can be used as a generator transform.

\n
\n", "signature": "(\ttransforms: List[Callable[[sqlglot.expressions.Expression], sqlglot.expressions.Expression]],\tto_sql: Callable[[sqlglot.generator.Generator, sqlglot.expressions.Expression], str]) -> Callable[[sqlglot.generator.Generator, sqlglot.expressions.Expression], str]:", "funcdef": "def"}, "sqlglot.transforms.delegate": {"fullname": "sqlglot.transforms.delegate", "modulename": "sqlglot.transforms", "qualname": "delegate", "kind": "function", "doc": "

Create a new method that delegates to attr. This is useful for creating Generator.TRANSFORMS\nfunctions that delegate to existing generator methods.

\n", "signature": "(attr: str) -> Callable:", "funcdef": "def"}, "sqlglot.trie": {"fullname": "sqlglot.trie", "modulename": "sqlglot.trie", "kind": "module", "doc": "

\n"}, "sqlglot.trie.new_trie": {"fullname": "sqlglot.trie.new_trie", "modulename": "sqlglot.trie", "qualname": "new_trie", "kind": "function", "doc": "

Creates a new trie out of a collection of keywords.

\n\n

The trie is represented as a sequence of nested dictionaries keyed by either single character\nstrings, or by 0, which is used to designate that a keyword is in the trie.

\n\n
Example:
\n\n
\n
\n
>>> new_trie(["bla", "foo", "blab"])\n{'b': {'l': {'a': {0: True, 'b': {0: True}}}}, 'f': {'o': {'o': {0: True}}}}\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • keywords: the keywords to create the trie from.
  • \n
\n\n
Returns:
\n\n
\n

The trie corresponding to keywords.

\n
\n", "signature": "(keywords: Iterable[Sequence[Hashable]]) -> Dict:", "funcdef": "def"}, "sqlglot.trie.in_trie": {"fullname": "sqlglot.trie.in_trie", "modulename": "sqlglot.trie", "qualname": "in_trie", "kind": "function", "doc": "

Checks whether a key is in a trie.

\n\n
Examples:
\n\n
\n
\n
>>> in_trie(new_trie(["cat"]), "bob")\n(0, {'c': {'a': {'t': {0: True}}}})\n
\n
\n \n
\n
>>> in_trie(new_trie(["cat"]), "ca")\n(1, {'t': {0: True}})\n
\n
\n \n
\n
>>> in_trie(new_trie(["cat"]), "cat")\n(2, {0: True})\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • trie: the trie to be searched.
  • \n
  • key: the target key.
  • \n
\n\n
Returns:
\n\n
\n

A pair (value, subtrie), where subtrie is the sub-trie we get at the point where the search stops, and value\n is either 0 (search was unsuccessful), 1 (value is a prefix of a keyword in trie) or 2 (key is intrie`).

\n
\n", "signature": "(trie: Dict, key: Sequence[Hashable]) -> Tuple[int, Dict]:", "funcdef": "def"}}, "docInfo": {"sqlglot": {"qualname": 0, "fullname": 1, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 5686}, "sqlglot.pretty": {"qualname": 1, "fullname": 2, "annotation": 0, "default_value": 1, "signature": 0, "bases": 0, "doc": 10}, "sqlglot.schema": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.parse": {"qualname": 1, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 124, "bases": 0, "doc": 84}, "sqlglot.parse_one": {"qualname": 2, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 198, "bases": 0, "doc": 99}, "sqlglot.transpile": {"qualname": 1, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 239, "bases": 0, "doc": 177}, "sqlglot.dataframe": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3543}, "sqlglot.dataframe.sql": {"qualname": 0, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.SparkSession": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.SparkSession.table": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 44, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.SparkSession.createDataFrame": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 208, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.SparkSession.sql": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 44, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.DataFrame": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.DataFrame.__init__": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 259, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.DataFrame.sql": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 51, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.DataFrame.copy": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 41, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.DataFrame.select": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 48, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.DataFrame.alias": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 51, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.DataFrame.where": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 86, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.DataFrame.filter": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 86, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.DataFrame.groupBy": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 48, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.DataFrame.agg": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 48, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.DataFrame.join": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 180, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.DataFrame.orderBy": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 120, "bases": 0, "doc": 44}, "sqlglot.dataframe.sql.DataFrame.sort": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 120, "bases": 0, "doc": 44}, "sqlglot.dataframe.sql.DataFrame.union": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 66, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.DataFrame.unionAll": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 66, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.DataFrame.unionByName": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 61, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.DataFrame.intersect": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 66, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.DataFrame.intersectAll": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 66, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.DataFrame.exceptAll": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 66, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.DataFrame.distinct": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.DataFrame.dropDuplicates": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 38, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.DataFrame.dropna": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 138, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.DataFrame.fillna": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 123, "bases": 0, "doc": 100}, "sqlglot.dataframe.sql.DataFrame.replace": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 217, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.DataFrame.withColumn": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 77, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.DataFrame.withColumnRenamed": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 31, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.DataFrame.drop": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 80, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.DataFrame.limit": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 44, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.DataFrame.hint": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 77, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.DataFrame.repartition": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 111, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.DataFrame.coalesce": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 44, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.DataFrame.cache": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.DataFrame.persist": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 60, "bases": 0, "doc": 20}, "sqlglot.dataframe.sql.GroupedData": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.GroupedData.__init__": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 106, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.GroupedData.agg": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 90, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.GroupedData.count": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.GroupedData.mean": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 46, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.GroupedData.avg": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 46, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.GroupedData.max": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 46, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.GroupedData.min": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 46, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.GroupedData.sum": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 46, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.GroupedData.pivot": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 46, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.Column": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.Column.__init__": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 63, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.Column.ensure_col": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 71, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.Column.ensure_cols": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 98, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.Column.invoke_anonymous_function": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 123, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.Column.invoke_expression_over_column": {"qualname": 5, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 92, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.Column.binary_op": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 85, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.Column.inverse_binary_op": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 85, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.Column.unary_op": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 51, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.Column.ensure_literal": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 39, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.Column.copy": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.Column.set_table_name": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 55, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.Column.sql": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 21, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.Column.alias": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 44, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.Column.asc": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.Column.desc": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.Column.asc_nulls_first": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.Column.asc_nulls_last": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.Column.desc_nulls_first": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.Column.desc_nulls_last": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.Column.when": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 77, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.Column.otherwise": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 44, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.Column.isNull": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.Column.isNotNull": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.Column.cast": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 53, "bases": 0, "doc": 27}, "sqlglot.dataframe.sql.Column.startswith": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 78, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.Column.endswith": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 78, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.Column.rlike": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 44, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.Column.like": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 21, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.Column.ilike": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 21, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.Column.substr": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 121, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.Column.isin": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 81, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.Column.between": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 97, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.Column.over": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 66, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.DataFrameNaFunctions": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.DataFrameNaFunctions.__init__": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.DataFrameNaFunctions.drop": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 138, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.DataFrameNaFunctions.fill": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 143, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.DataFrameNaFunctions.replace": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 177, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.Window": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.Window.partitionBy": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 104, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.Window.orderBy": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 104, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.Window.rowsBetween": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 54, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.Window.rangeBetween": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 54, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.WindowSpec": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.WindowSpec.__init__": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 38, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.WindowSpec.copy": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.WindowSpec.sql": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 21, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.WindowSpec.partitionBy": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 104, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.WindowSpec.orderBy": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 104, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.WindowSpec.rowsBetween": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 54, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.WindowSpec.rangeBetween": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 54, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.DataFrameReader": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.DataFrameReader.__init__": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.DataFrameReader.table": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 44, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.DataFrameWriter": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.DataFrameWriter.__init__": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 122, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.DataFrameWriter.copy": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 41, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.DataFrameWriter.sql": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 27, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.DataFrameWriter.mode": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 52, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.DataFrameWriter.insertInto": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 70, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.DataFrameWriter.saveAsTable": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 71, "bases": 0, "doc": 3}, "sqlglot.dialects": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 764}, "sqlglot.dialects.bigquery": {"qualname": 0, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 7}, "sqlglot.dialects.bigquery.BigQuery": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 4, "doc": 3}, "sqlglot.dialects.bigquery.BigQuery.Tokenizer": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 3}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 174}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 503}, "sqlglot.dialects.bigquery.BigQuery.Generator.array_sql": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.dialects.bigquery.BigQuery.Generator.transaction_sql": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 22, "bases": 0, "doc": 3}, "sqlglot.dialects.bigquery.BigQuery.Generator.commit_sql": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 22, "bases": 0, "doc": 3}, "sqlglot.dialects.bigquery.BigQuery.Generator.rollback_sql": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 22, "bases": 0, "doc": 3}, "sqlglot.dialects.bigquery.BigQuery.Generator.in_unnest_op": {"qualname": 5, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.dialects.bigquery.BigQuery.Generator.except_op": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.dialects.bigquery.BigQuery.Generator.intersect_op": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.dialects.clickhouse": {"qualname": 0, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dialects.clickhouse.ClickHouse": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 4, "doc": 3}, "sqlglot.dialects.clickhouse.ClickHouse.Tokenizer": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 3}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 174}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 503}, "sqlglot.dialects.clickhouse.ClickHouse.Generator.cte_sql": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.dialects.databricks": {"qualname": 0, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dialects.databricks.Databricks": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 4, "doc": 3}, "sqlglot.dialects.databricks.Databricks.Parser": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 5, "doc": 174}, "sqlglot.dialects.databricks.Databricks.Generator": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 5, "doc": 503}, "sqlglot.dialects.databricks.Databricks.Tokenizer": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 5, "doc": 3}, "sqlglot.dialects.dialect": {"qualname": 0, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.Dialects": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 4, "doc": 5}, "sqlglot.dialects.dialect.Dialects.DIALECT": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 8, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.Dialects.BIGQUERY": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.Dialects.CLICKHOUSE": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.Dialects.DUCKDB": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.Dialects.HIVE": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.Dialects.MYSQL": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.Dialects.ORACLE": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.Dialects.POSTGRES": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.Dialects.PRESTO": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.Dialects.REDSHIFT": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.Dialects.SNOWFLAKE": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.Dialects.SPARK": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.Dialects.SQLITE": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.Dialects.STARROCKS": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.Dialects.TABLEAU": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.Dialects.TRINO": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.Dialects.TSQL": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.Dialects.DATABRICKS": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.Dialects.DRILL": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.Dialects.TERADATA": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.Dialect": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.Dialect.get_or_raise": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 105, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.Dialect.format_time": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 70, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.Dialect.parse": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 51, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.Dialect.parse_into": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 126, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.Dialect.generate": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 50, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.Dialect.transpile": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 37, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.Dialect.tokenize": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 40, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.Dialect.parser": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 31, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.Dialect.generator": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 31, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.rename_func": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 58, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.approx_count_distinct_sql": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 51, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.if_sql": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 51, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.arrow_json_extract_sql": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 67, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.arrow_json_extract_scalar_sql": {"qualname": 5, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 67, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.inline_array_sql": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 51, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.no_ilike_sql": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 51, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.no_paren_current_date_sql": {"qualname": 5, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 51, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.no_recursive_cte_sql": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 51, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.no_safe_divide_sql": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 51, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.no_tablesample_sql": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 51, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.no_pivot_sql": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 51, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.no_trycast_sql": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 51, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.no_properties_sql": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 51, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.str_position_sql": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 51, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.struct_extract_sql": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 51, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.var_map_sql": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 91, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.format_time_lambda": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 90, "bases": 0, "doc": 71}, "sqlglot.dialects.dialect.create_with_partitions_sql": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 51, "bases": 0, "doc": 46}, "sqlglot.dialects.dialect.parse_date_delta": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 78, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.date_trunc_to_time": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 46, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.timestamptrunc_sql": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 51, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.locate_to_strposition": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 29, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.strposition_to_locate_sql": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 51, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.timestrtotime_sql": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 51, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.datestrtodate_sql": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 51, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.min_or_least": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 51, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.max_or_greatest": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 51, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.count_if_to_sum": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 51, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.trim_sql": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 51, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.str_to_time_sql": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.ts_or_ds_to_date_sql": {"qualname": 6, "fullname": 9, "annotation": 0, "default_value": 0, "signature": 19, "bases": 0, "doc": 3}, "sqlglot.dialects.drill": {"qualname": 0, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dialects.drill.Drill": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 4, "doc": 3}, "sqlglot.dialects.drill.Drill.Tokenizer": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 3}, "sqlglot.dialects.drill.Drill.Parser": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 174}, "sqlglot.dialects.drill.Drill.Generator": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 503}, "sqlglot.dialects.drill.Drill.Generator.normalize_func": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 24, "bases": 0, "doc": 3}, "sqlglot.dialects.duckdb": {"qualname": 0, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dialects.duckdb.DuckDB": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 4, "doc": 3}, "sqlglot.dialects.duckdb.DuckDB.Tokenizer": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 3}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 174}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 503}, "sqlglot.dialects.duckdb.DuckDB.Generator.tablesample_sql": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 59, "bases": 0, "doc": 3}, "sqlglot.dialects.hive": {"qualname": 0, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dialects.hive.Hive": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 4, "doc": 3}, "sqlglot.dialects.hive.Hive.Tokenizer": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 3}, "sqlglot.dialects.hive.Hive.Parser": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 174}, "sqlglot.dialects.hive.Hive.Generator": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 503}, "sqlglot.dialects.hive.Hive.Generator.arrayagg_sql": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.dialects.hive.Hive.Generator.with_properties": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.dialects.hive.Hive.Generator.datatype_sql": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.dialects.mysql": {"qualname": 0, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dialects.mysql.MySQL": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 4, "doc": 3}, "sqlglot.dialects.mysql.MySQL.Tokenizer": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 3}, "sqlglot.dialects.mysql.MySQL.Parser": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 174}, "sqlglot.dialects.mysql.MySQL.Generator": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 503}, "sqlglot.dialects.mysql.MySQL.Generator.show_sql": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.dialects.oracle": {"qualname": 0, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dialects.oracle.Oracle": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 4, "doc": 3}, "sqlglot.dialects.oracle.Oracle.Parser": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 174}, "sqlglot.dialects.oracle.Oracle.Generator": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 503}, "sqlglot.dialects.oracle.Oracle.Generator.offset_sql": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.dialects.oracle.Oracle.Generator.column_sql": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.dialects.oracle.Oracle.Generator.xmltable_sql": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.dialects.oracle.Oracle.Tokenizer": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 3}, "sqlglot.dialects.postgres": {"qualname": 0, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dialects.postgres.Postgres": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 4, "doc": 3}, "sqlglot.dialects.postgres.Postgres.Tokenizer": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 3}, "sqlglot.dialects.postgres.Postgres.Parser": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 174}, "sqlglot.dialects.postgres.Postgres.Generator": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 503}, "sqlglot.dialects.presto": {"qualname": 0, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dialects.presto.Presto": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 4, "doc": 3}, "sqlglot.dialects.presto.Presto.Tokenizer": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 3}, "sqlglot.dialects.presto.Presto.Parser": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 174}, "sqlglot.dialects.presto.Presto.Generator": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 503}, "sqlglot.dialects.presto.Presto.Generator.transaction_sql": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 3}, "sqlglot.dialects.redshift": {"qualname": 0, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dialects.redshift.Redshift": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 4, "doc": 3}, "sqlglot.dialects.redshift.Redshift.Parser": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 5, "doc": 174}, "sqlglot.dialects.redshift.Redshift.Tokenizer": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 5, "doc": 3}, "sqlglot.dialects.redshift.Redshift.Generator": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 5, "doc": 503}, "sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 58}, "sqlglot.dialects.redshift.Redshift.Generator.with_properties": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 19}, "sqlglot.dialects.redshift.Redshift.Generator.renametable_sql": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 16}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 75}, "sqlglot.dialects.snowflake": {"qualname": 0, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dialects.snowflake.Snowflake": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 4, "doc": 3}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 174}, "sqlglot.dialects.snowflake.Snowflake.Tokenizer": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 3}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 503}, "sqlglot.dialects.snowflake.Snowflake.Generator.except_op": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 3}, "sqlglot.dialects.snowflake.Snowflake.Generator.intersect_op": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 3}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 66}, "sqlglot.dialects.snowflake.Snowflake.Generator.settag_sql": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 125}, "sqlglot.dialects.snowflake.Snowflake.Generator.describe_sql": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.dialects.snowflake.Snowflake.Generator.generatedasidentitycolumnconstraint_sql": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 36, "bases": 0, "doc": 3}, "sqlglot.dialects.spark": {"qualname": 0, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dialects.spark.Spark": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 4, "doc": 3}, "sqlglot.dialects.spark.Spark.Parser": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 5, "doc": 174}, "sqlglot.dialects.spark.Spark.Generator": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 5, "doc": 503}, "sqlglot.dialects.spark.Spark.Generator.cast_sql": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.dialects.spark.Spark.Tokenizer": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 5, "doc": 3}, "sqlglot.dialects.sqlite": {"qualname": 0, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dialects.sqlite.SQLite": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 4, "doc": 3}, "sqlglot.dialects.sqlite.SQLite.Tokenizer": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 3}, "sqlglot.dialects.sqlite.SQLite.Parser": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 174}, "sqlglot.dialects.sqlite.SQLite.Generator": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 503}, "sqlglot.dialects.sqlite.SQLite.Generator.cast_sql": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.dialects.sqlite.SQLite.Generator.datediff_sql": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.dialects.sqlite.SQLite.Generator.groupconcat_sql": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 3}, "sqlglot.dialects.sqlite.SQLite.Generator.least_sql": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.dialects.sqlite.SQLite.Generator.transaction_sql": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.dialects.starrocks": {"qualname": 0, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dialects.starrocks.StarRocks": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 4, "doc": 3}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 5, "doc": 174}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 5, "doc": 503}, "sqlglot.dialects.tableau": {"qualname": 0, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dialects.tableau.Tableau": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 4, "doc": 3}, "sqlglot.dialects.tableau.Tableau.Generator": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 503}, "sqlglot.dialects.tableau.Tableau.Parser": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 174}, "sqlglot.dialects.teradata": {"qualname": 0, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dialects.teradata.Teradata": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 4, "doc": 3}, "sqlglot.dialects.teradata.Teradata.Tokenizer": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 3}, "sqlglot.dialects.teradata.Teradata.Parser": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 174}, "sqlglot.dialects.teradata.Teradata.Generator": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 503}, "sqlglot.dialects.teradata.Teradata.Generator.partitionedbyproperty_sql": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.dialects.teradata.Teradata.Generator.update_sql": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.dialects.teradata.Teradata.Generator.mod_sql": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.dialects.teradata.Teradata.Generator.datatype_sql": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.dialects.teradata.Teradata.Generator.rangen_sql": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.dialects.trino": {"qualname": 0, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dialects.trino.Trino": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 4, "doc": 3}, "sqlglot.dialects.trino.Trino.Generator": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 5, "doc": 503}, "sqlglot.dialects.trino.Trino.Tokenizer": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 5, "doc": 3}, "sqlglot.dialects.tsql": {"qualname": 0, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dialects.tsql.generate_date_delta_with_unit_sql": {"qualname": 6, "fullname": 9, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 3}, "sqlglot.dialects.tsql.TSQL": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 4, "doc": 3}, "sqlglot.dialects.tsql.TSQL.Tokenizer": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 3}, "sqlglot.dialects.tsql.TSQL.Parser": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 174}, "sqlglot.dialects.tsql.TSQL.Generator": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 503}, "sqlglot.dialects.tsql.TSQL.Generator.offset_sql": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.dialects.tsql.TSQL.Generator.systemtime_sql": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.dialects.tsql.TSQL.Generator.returnsproperty_sql": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.diff": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 6444}, "sqlglot.diff.Insert": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 10}, "sqlglot.diff.Insert.__init__": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 24, "bases": 0, "doc": 3}, "sqlglot.diff.Remove": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 10}, "sqlglot.diff.Remove.__init__": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 24, "bases": 0, "doc": 3}, "sqlglot.diff.Move": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 14}, "sqlglot.diff.Move.__init__": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 24, "bases": 0, "doc": 3}, "sqlglot.diff.Update": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 10}, "sqlglot.diff.Update.__init__": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 46, "bases": 0, "doc": 3}, "sqlglot.diff.Keep": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 11}, "sqlglot.diff.Keep.__init__": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 46, "bases": 0, "doc": 3}, "sqlglot.diff.diff": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 206, "bases": 0, "doc": 306}, "sqlglot.diff.ChangeDistiller": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 46}, "sqlglot.diff.ChangeDistiller.__init__": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 40, "bases": 0, "doc": 3}, "sqlglot.diff.ChangeDistiller.diff": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 199, "bases": 0, "doc": 3}, "sqlglot.errors": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.errors.ErrorLevel": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 5}, "sqlglot.errors.ErrorLevel.IGNORE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 6}, "sqlglot.errors.ErrorLevel.WARN": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 6}, "sqlglot.errors.ErrorLevel.RAISE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 11}, "sqlglot.errors.ErrorLevel.IMMEDIATE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 12}, "sqlglot.errors.SqlglotError": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 11}, "sqlglot.errors.UnsupportedError": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 11}, "sqlglot.errors.ParseError": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 11}, "sqlglot.errors.ParseError.__init__": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 51, "bases": 0, "doc": 3}, "sqlglot.errors.ParseError.new": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 207, "bases": 0, "doc": 3}, "sqlglot.errors.TokenError": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 11}, "sqlglot.errors.OptimizeError": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 11}, "sqlglot.errors.SchemaError": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 11}, "sqlglot.errors.ExecuteError": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 11}, "sqlglot.errors.concat_messages": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 35, "bases": 0, "doc": 3}, "sqlglot.errors.merge_errors": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 51, "bases": 0, "doc": 3}, "sqlglot.executor": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 2950}, "sqlglot.executor.execute": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 197, "bases": 0, "doc": 115}, "sqlglot.executor.context": {"qualname": 0, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.executor.context.Context": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 64}, "sqlglot.executor.context.Context.__init__": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 66, "bases": 0, "doc": 21}, "sqlglot.executor.context.Context.eval": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 3}, "sqlglot.executor.context.Context.eval_tuple": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 3}, "sqlglot.executor.context.Context.add_columns": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 26, "bases": 0, "doc": 3}, "sqlglot.executor.context.Context.table_iter": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 72, "bases": 0, "doc": 3}, "sqlglot.executor.context.Context.filter": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 19, "bases": 0, "doc": 3}, "sqlglot.executor.context.Context.sort": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 19, "bases": 0, "doc": 3}, "sqlglot.executor.context.Context.set_row": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 24, "bases": 0, "doc": 3}, "sqlglot.executor.context.Context.set_index": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 24, "bases": 0, "doc": 3}, "sqlglot.executor.context.Context.set_range": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.executor.env": {"qualname": 0, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.executor.env.reverse_key": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.executor.env.reverse_key.__init__": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 9, "bases": 0, "doc": 3}, "sqlglot.executor.env.filter_nulls": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 22, "bases": 0, "doc": 3}, "sqlglot.executor.env.null_if_any": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 13, "bases": 0, "doc": 59}, "sqlglot.executor.env.str_position": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 26, "bases": 0, "doc": 3}, "sqlglot.executor.env.substring": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 31, "bases": 0, "doc": 3}, "sqlglot.executor.env.cast": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 3}, "sqlglot.executor.env.ordered": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 22, "bases": 0, "doc": 3}, "sqlglot.executor.env.interval": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 3}, "sqlglot.executor.python": {"qualname": 0, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.executor.python.PythonExecutor": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.executor.python.PythonExecutor.__init__": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 24, "bases": 0, "doc": 3}, "sqlglot.executor.python.PythonExecutor.execute": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 3}, "sqlglot.executor.python.PythonExecutor.generate": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 16}, "sqlglot.executor.python.PythonExecutor.generate_tuple": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 15}, "sqlglot.executor.python.PythonExecutor.context": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 3}, "sqlglot.executor.python.PythonExecutor.table": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 3}, "sqlglot.executor.python.PythonExecutor.scan": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 21, "bases": 0, "doc": 3}, "sqlglot.executor.python.PythonExecutor.static": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 3}, "sqlglot.executor.python.PythonExecutor.scan_table": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 3}, "sqlglot.executor.python.PythonExecutor.scan_csv": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 3}, "sqlglot.executor.python.PythonExecutor.join": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 21, "bases": 0, "doc": 3}, "sqlglot.executor.python.PythonExecutor.nested_loop_join": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 29, "bases": 0, "doc": 3}, "sqlglot.executor.python.PythonExecutor.hash_join": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 28, "bases": 0, "doc": 3}, "sqlglot.executor.python.PythonExecutor.aggregate": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 21, "bases": 0, "doc": 3}, "sqlglot.executor.python.PythonExecutor.sort": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 21, "bases": 0, "doc": 3}, "sqlglot.executor.python.PythonExecutor.set_operation": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 21, "bases": 0, "doc": 3}, "sqlglot.executor.python.Python": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 4, "doc": 3}, "sqlglot.executor.python.Python.Tokenizer": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 3}, "sqlglot.executor.python.Python.Generator": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 503}, "sqlglot.executor.table": {"qualname": 0, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.executor.table.Table": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.executor.table.Table.__init__": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 30, "bases": 0, "doc": 3}, "sqlglot.executor.table.Table.add_columns": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 26, "bases": 0, "doc": 3}, "sqlglot.executor.table.Table.append": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 3}, "sqlglot.executor.table.Table.pop": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 3}, "sqlglot.executor.table.TableIter": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.executor.table.TableIter.__init__": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 9, "bases": 0, "doc": 3}, "sqlglot.executor.table.RangeReader": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.executor.table.RangeReader.__init__": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 9, "bases": 0, "doc": 3}, "sqlglot.executor.table.RowReader": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.executor.table.RowReader.__init__": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 20, "bases": 0, "doc": 3}, "sqlglot.executor.table.Tables": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 6, "doc": 87}, "sqlglot.executor.table.ensure_tables": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 40, "bases": 0, "doc": 3}, "sqlglot.expressions": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 61}, "sqlglot.expressions.Expression": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 346}, "sqlglot.expressions.Expression.__init__": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 3}, "sqlglot.expressions.Expression.this": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 9}, "sqlglot.expressions.Expression.expression": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 9}, "sqlglot.expressions.Expression.expressions": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 9}, "sqlglot.expressions.Expression.text": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 19, "bases": 0, "doc": 32}, "sqlglot.expressions.Expression.is_string": {"qualname": 3, "fullname": 5, "annotation": 2, "default_value": 0, "signature": 0, "bases": 0, "doc": 11}, "sqlglot.expressions.Expression.is_number": {"qualname": 3, "fullname": 5, "annotation": 2, "default_value": 0, "signature": 0, "bases": 0, "doc": 11}, "sqlglot.expressions.Expression.is_int": {"qualname": 3, "fullname": 5, "annotation": 2, "default_value": 0, "signature": 0, "bases": 0, "doc": 11}, "sqlglot.expressions.Expression.is_star": {"qualname": 3, "fullname": 5, "annotation": 2, "default_value": 0, "signature": 0, "bases": 0, "doc": 10}, "sqlglot.expressions.Expression.alias": {"qualname": 2, "fullname": 4, "annotation": 2, "default_value": 0, "signature": 0, "bases": 0, "doc": 18}, "sqlglot.expressions.Expression.output_name": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 210}, "sqlglot.expressions.Expression.copy": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 10}, "sqlglot.expressions.Expression.append": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 22, "bases": 0, "doc": 54}, "sqlglot.expressions.Expression.set": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 22, "bases": 0, "doc": 45}, "sqlglot.expressions.Expression.depth": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 9}, "sqlglot.expressions.Expression.iter_expressions": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 40, "bases": 0, "doc": 14}, "sqlglot.expressions.Expression.find": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 53, "bases": 0, "doc": 63}, "sqlglot.expressions.Expression.find_all": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 53, "bases": 0, "doc": 61}, "sqlglot.expressions.Expression.find_ancestor": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 43, "bases": 0, "doc": 43}, "sqlglot.expressions.Expression.parent_select": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 8}, "sqlglot.expressions.Expression.same_parent": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 13}, "sqlglot.expressions.Expression.root": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 24, "bases": 0, "doc": 10}, "sqlglot.expressions.Expression.walk": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 31, "bases": 0, "doc": 89}, "sqlglot.expressions.Expression.dfs": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 41, "bases": 0, "doc": 33}, "sqlglot.expressions.Expression.bfs": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 21, "bases": 0, "doc": 33}, "sqlglot.expressions.Expression.unnest": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 11}, "sqlglot.expressions.Expression.unalias": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 12}, "sqlglot.expressions.Expression.unnest_operands": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 9}, "sqlglot.expressions.Expression.flatten": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 21, "bases": 0, "doc": 28}, "sqlglot.expressions.Expression.sql": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 99, "bases": 0, "doc": 61}, "sqlglot.expressions.Expression.transform": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 40, "bases": 0, "doc": 111}, "sqlglot.expressions.Expression.replace": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 83}, "sqlglot.expressions.Expression.pop": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 22}, "sqlglot.expressions.Expression.assert_is": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 17, "bases": 0, "doc": 162}, "sqlglot.expressions.Expression.error_messages": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 43, "bases": 0, "doc": 79}, "sqlglot.expressions.Expression.dump": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 11}, "sqlglot.expressions.Expression.load": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 17}, "sqlglot.expressions.Condition": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Condition.and_": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 35, "bases": 0, "doc": 173}, "sqlglot.expressions.Condition.or_": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 35, "bases": 0, "doc": 173}, "sqlglot.expressions.Condition.not_": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 88}, "sqlglot.expressions.Predicate": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 13}, "sqlglot.expressions.DerivedTable": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Unionable": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Unionable.union": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 43, "bases": 0, "doc": 211}, "sqlglot.expressions.Unionable.intersect": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 43, "bases": 0, "doc": 210}, "sqlglot.expressions.Unionable.except_": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 43, "bases": 0, "doc": 211}, "sqlglot.expressions.UDTF": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 3}, "sqlglot.expressions.Cache": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Uncache": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Create": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Describe": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Pragma": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Set": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.SetItem": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Show": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.UserDefinedFunction": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.CharacterSet": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.With": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.WithinGroup": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.CTE": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.TableAlias": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.BitString": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.HexString": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.ByteString": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Column": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Column.output_name": {"qualname": 3, "fullname": 5, "annotation": 2, "default_value": 0, "signature": 0, "bases": 0, "doc": 210}, "sqlglot.expressions.Column.parts": {"qualname": 2, "fullname": 4, "annotation": 4, "default_value": 0, "signature": 0, "bases": 0, "doc": 15}, "sqlglot.expressions.Column.to_dot": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 24, "bases": 0, "doc": 10}, "sqlglot.expressions.ColumnPosition": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.ColumnDef": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.AlterColumn": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.RenameTable": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.SetTag": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Comment": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.ColumnConstraint": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.ColumnConstraintKind": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.AutoIncrementColumnConstraint": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.CaseSpecificColumnConstraint": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.CharacterSetColumnConstraint": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.CheckColumnConstraint": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.CollateColumnConstraint": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.CommentColumnConstraint": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.CompressColumnConstraint": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.DateFormatColumnConstraint": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.DefaultColumnConstraint": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.EncodeColumnConstraint": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.GeneratedAsIdentityColumnConstraint": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.InlineLengthColumnConstraint": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.NotNullColumnConstraint": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.PrimaryKeyColumnConstraint": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.TitleColumnConstraint": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.UniqueColumnConstraint": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.UppercaseColumnConstraint": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.PathColumnConstraint": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Constraint": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Delete": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Delete.delete": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 160, "bases": 0, "doc": 150}, "sqlglot.expressions.Delete.where": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 180, "bases": 0, "doc": 226}, "sqlglot.expressions.Delete.returning": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 160, "bases": 0, "doc": 194}, "sqlglot.expressions.Drop": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Filter": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Check": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Directory": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.ForeignKey": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.PrimaryKey": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Unique": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Into": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.From": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Having": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Hint": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.JoinHint": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Identifier": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Identifier.output_name": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 210}, "sqlglot.expressions.Index": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Insert": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Returning": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Introducer": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.National": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.LoadData": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Partition": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Fetch": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Group": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Lambda": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Limit": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Literal": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Literal.number": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 29, "bases": 0, "doc": 3}, "sqlglot.expressions.Literal.string": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 29, "bases": 0, "doc": 3}, "sqlglot.expressions.Literal.output_name": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 210}, "sqlglot.expressions.Join": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Join.on": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 55, "bases": 0, "doc": 252}, "sqlglot.expressions.Join.using": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 55, "bases": 0, "doc": 254}, "sqlglot.expressions.Lateral": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.MatchRecognize": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Final": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Offset": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Order": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Cluster": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Distribute": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Sort": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Ordered": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Property": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.AfterJournalProperty": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.AlgorithmProperty": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.AutoIncrementProperty": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.BlockCompressionProperty": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.CharacterSetProperty": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.ChecksumProperty": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.CollateProperty": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.DataBlocksizeProperty": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.DefinerProperty": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.DistKeyProperty": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.DistStyleProperty": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.EngineProperty": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.ExecuteAsProperty": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.ExternalProperty": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.FallbackProperty": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.FileFormatProperty": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.FreespaceProperty": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.IsolatedLoadingProperty": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.JournalProperty": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.LanguageProperty": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.LikeProperty": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.LocationProperty": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.LockingProperty": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.LogProperty": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.MaterializedProperty": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.MergeBlockRatioProperty": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.NoPrimaryIndexProperty": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.OnCommitProperty": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.PartitionedByProperty": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.ReturnsProperty": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.RowFormatDelimitedProperty": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.RowFormatSerdeProperty": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.SchemaCommentProperty": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.SerdeProperties": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.SetProperty": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.SortKeyProperty": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.SqlSecurityProperty": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.TableFormatProperty": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.TemporaryProperty": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.TransientProperty": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.VolatilityProperty": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.WithDataProperty": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.WithJournalTableProperty": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Properties": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Properties.Location": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 5}, "sqlglot.expressions.Properties.Location.POST_CREATE": {"qualname": 4, "fullname": 6, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.Properties.Location.POST_NAME": {"qualname": 4, "fullname": 6, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.Properties.Location.POST_SCHEMA": {"qualname": 4, "fullname": 6, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.Properties.Location.POST_WITH": {"qualname": 4, "fullname": 6, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.Properties.Location.POST_ALIAS": {"qualname": 4, "fullname": 6, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.Properties.Location.POST_EXPRESSION": {"qualname": 4, "fullname": 6, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.Properties.Location.POST_INDEX": {"qualname": 4, "fullname": 6, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.Properties.Location.UNSUPPORTED": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.Properties.from_dict": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 30, "bases": 0, "doc": 3}, "sqlglot.expressions.Qualify": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Return": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Reference": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Tuple": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Subqueryable": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Subqueryable.subquery": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 44, "bases": 0, "doc": 213}, "sqlglot.expressions.Subqueryable.limit": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 61, "bases": 0, "doc": 3}, "sqlglot.expressions.Subqueryable.with_": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 77, "bases": 0, "doc": 319}, "sqlglot.expressions.Table": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.SystemTime": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Union": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Union.limit": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 61, "bases": 0, "doc": 234}, "sqlglot.expressions.Union.select": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 180, "bases": 0, "doc": 245}, "sqlglot.expressions.Union.is_star": {"qualname": 3, "fullname": 5, "annotation": 2, "default_value": 0, "signature": 0, "bases": 0, "doc": 10}, "sqlglot.expressions.Except": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Intersect": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Unnest": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Update": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Values": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Var": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Schema": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Lock": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Select": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Select.from_": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 74, "bases": 0, "doc": 238}, "sqlglot.expressions.Select.group_by": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 74, "bases": 0, "doc": 287}, "sqlglot.expressions.Select.order_by": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 74, "bases": 0, "doc": 262}, "sqlglot.expressions.Select.sort_by": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 74, "bases": 0, "doc": 262}, "sqlglot.expressions.Select.cluster_by": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 74, "bases": 0, "doc": 262}, "sqlglot.expressions.Select.limit": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 61, "bases": 0, "doc": 231}, "sqlglot.expressions.Select.offset": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 61, "bases": 0, "doc": 231}, "sqlglot.expressions.Select.select": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 180, "bases": 0, "doc": 196}, "sqlglot.expressions.Select.lateral": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 74, "bases": 0, "doc": 247}, "sqlglot.expressions.Select.join": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 118, "bases": 0, "doc": 628}, "sqlglot.expressions.Select.where": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 74, "bases": 0, "doc": 265}, "sqlglot.expressions.Select.having": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 74, "bases": 0, "doc": 287}, "sqlglot.expressions.Select.window": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 74, "bases": 0, "doc": 3}, "sqlglot.expressions.Select.qualify": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 74, "bases": 0, "doc": 3}, "sqlglot.expressions.Select.distinct": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 44, "bases": 0, "doc": 151}, "sqlglot.expressions.Select.ctas": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 72, "bases": 0, "doc": 236}, "sqlglot.expressions.Select.lock": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 61, "bases": 0, "doc": 331}, "sqlglot.expressions.Select.is_star": {"qualname": 3, "fullname": 5, "annotation": 2, "default_value": 0, "signature": 0, "bases": 0, "doc": 10}, "sqlglot.expressions.Subquery": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 3}, "sqlglot.expressions.Subquery.unnest": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 8}, "sqlglot.expressions.Subquery.is_star": {"qualname": 3, "fullname": 5, "annotation": 2, "default_value": 0, "signature": 0, "bases": 0, "doc": 10}, "sqlglot.expressions.Subquery.output_name": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 210}, "sqlglot.expressions.TableSample": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Tag": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 15}, "sqlglot.expressions.Pivot": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Window": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.WindowSpec": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Where": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Star": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Star.output_name": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 210}, "sqlglot.expressions.Parameter": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.SessionParameter": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Placeholder": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Null": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Boolean": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.DataType": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.DataType.Type": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 5}, "sqlglot.expressions.DataType.Type.CHAR": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.NCHAR": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.VARCHAR": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.NVARCHAR": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.TEXT": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.MEDIUMTEXT": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.LONGTEXT": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.MEDIUMBLOB": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.LONGBLOB": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.BINARY": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.VARBINARY": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.INT": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.UINT": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.TINYINT": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.UTINYINT": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.SMALLINT": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.USMALLINT": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.BIGINT": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.UBIGINT": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.FLOAT": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.DOUBLE": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.DECIMAL": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.BIT": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.BOOLEAN": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.JSON": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.JSONB": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.INTERVAL": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.TIME": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.TIMESTAMP": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.TIMESTAMPTZ": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.TIMESTAMPLTZ": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.DATE": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.DATETIME": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.ARRAY": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.MAP": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.UUID": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.GEOGRAPHY": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.GEOMETRY": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.STRUCT": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.NULLABLE": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.HLLSKETCH": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.HSTORE": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.SUPER": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.SERIAL": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.SMALLSERIAL": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.BIGSERIAL": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.XML": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.UNIQUEIDENTIFIER": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.MONEY": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.SMALLMONEY": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.ROWVERSION": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.IMAGE": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.VARIANT": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.OBJECT": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.INET": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.NULL": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.UNKNOWN": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.build": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 157, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.is_type": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 39, "bases": 0, "doc": 3}, "sqlglot.expressions.PseudoType": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.StructKwarg": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.SubqueryPredicate": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.All": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Any": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Exists": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Command": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Transaction": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Commit": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Rollback": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.AlterTable": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.AddConstraint": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.DropPartition": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Binary": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Add": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Connector": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 3}, "sqlglot.expressions.And": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Or": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.BitwiseAnd": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.BitwiseLeftShift": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.BitwiseOr": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.BitwiseRightShift": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.BitwiseXor": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Div": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Overlaps": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Dot": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Dot.build": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 52, "bases": 0, "doc": 12}, "sqlglot.expressions.DPipe": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.EQ": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 3}, "sqlglot.expressions.NullSafeEQ": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 3}, "sqlglot.expressions.NullSafeNEQ": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 3}, "sqlglot.expressions.Distance": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Escape": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Glob": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 3}, "sqlglot.expressions.GT": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 3}, "sqlglot.expressions.GTE": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 3}, "sqlglot.expressions.ILike": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 3}, "sqlglot.expressions.ILikeAny": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 3}, "sqlglot.expressions.IntDiv": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Is": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 3}, "sqlglot.expressions.Kwarg": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 12}, "sqlglot.expressions.Like": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 3}, "sqlglot.expressions.LikeAny": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 3}, "sqlglot.expressions.LT": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 3}, "sqlglot.expressions.LTE": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 3}, "sqlglot.expressions.Mod": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Mul": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.NEQ": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 3}, "sqlglot.expressions.SimilarTo": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 3}, "sqlglot.expressions.Slice": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Sub": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.ArrayOverlaps": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Unary": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.BitwiseNot": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Not": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 3}, "sqlglot.expressions.Paren": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 3}, "sqlglot.expressions.Neg": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Alias": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Alias.output_name": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 210}, "sqlglot.expressions.Aliases": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.AtTimeZone": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Between": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Bracket": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Distinct": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.In": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.TimeUnit": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 10}, "sqlglot.expressions.TimeUnit.__init__": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 3}, "sqlglot.expressions.Interval": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.IgnoreNulls": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.RespectNulls": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Func": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 128}, "sqlglot.expressions.Func.from_arg_list": {"qualname": 4, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 3}, "sqlglot.expressions.Func.sql_names": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 3}, "sqlglot.expressions.Func.sql_name": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 3}, "sqlglot.expressions.Func.default_parser_mappings": {"qualname": 4, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 3}, "sqlglot.expressions.AggFunc": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Abs": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Anonymous": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Hll": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.ApproxDistinct": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Array": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.ToChar": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.GenerateSeries": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.ArrayAgg": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.ArrayAll": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.ArrayAny": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.ArrayConcat": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.ArrayContains": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 3}, "sqlglot.expressions.ArrayContained": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.ArrayFilter": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.ArrayJoin": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.ArraySize": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.ArraySort": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.ArraySum": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.ArrayUnionAgg": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Avg": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.AnyValue": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Case": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Cast": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Cast.output_name": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 210}, "sqlglot.expressions.Cast.is_type": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 39, "bases": 0, "doc": 3}, "sqlglot.expressions.Collate": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.TryCast": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Ceil": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Coalesce": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Concat": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.ConcatWs": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Count": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.CountIf": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.CurrentDate": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.CurrentDatetime": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.CurrentTime": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.CurrentTimestamp": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.DateAdd": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 3}, "sqlglot.expressions.DateSub": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 3}, "sqlglot.expressions.DateDiff": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 3}, "sqlglot.expressions.DateTrunc": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.DatetimeAdd": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 3}, "sqlglot.expressions.DatetimeSub": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 3}, "sqlglot.expressions.DatetimeDiff": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 3}, "sqlglot.expressions.DatetimeTrunc": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 3}, "sqlglot.expressions.DayOfWeek": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.DayOfMonth": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.DayOfYear": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.WeekOfYear": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.LastDateOfMonth": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Extract": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.TimestampAdd": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 3}, "sqlglot.expressions.TimestampSub": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 3}, "sqlglot.expressions.TimestampDiff": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 3}, "sqlglot.expressions.TimestampTrunc": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 3}, "sqlglot.expressions.TimeAdd": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 3}, "sqlglot.expressions.TimeSub": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 3}, "sqlglot.expressions.TimeDiff": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 3}, "sqlglot.expressions.TimeTrunc": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 3}, "sqlglot.expressions.DateFromParts": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.DateStrToDate": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.DateToDateStr": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.DateToDi": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Day": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Decode": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.DiToDate": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Encode": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Exp": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Explode": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.ExponentialTimeDecayedAvg": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Floor": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Greatest": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.GroupConcat": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.GroupUniqArray": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Hex": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Histogram": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.If": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.IfNull": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Initcap": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.JSONKeyValue": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.JSONObject": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.JSONBContains": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.JSONExtract": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 3}, "sqlglot.expressions.JSONExtractScalar": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.JSONBExtract": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.JSONBExtractScalar": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.JSONFormat": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Least": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Length": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Levenshtein": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Ln": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Log": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Log2": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Log10": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.LogicalOr": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.LogicalAnd": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Lower": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Map": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.VarMap": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.MatchAgainst": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Max": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Min": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Month": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Nvl2": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Posexplode": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Pow": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 3}, "sqlglot.expressions.PercentileCont": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.PercentileDisc": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Quantile": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Quantiles": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.QuantileIf": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.ApproxQuantile": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.RangeN": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.ReadCSV": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Reduce": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.RegexpExtract": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.RegexpLike": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.RegexpILike": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.RegexpSplit": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Repeat": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Round": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.RowNumber": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.SafeDivide": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.SetAgg": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.SortArray": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Split": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Substring": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.StrPosition": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.StrToDate": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.StrToTime": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.StrToUnix": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.NumberToStr": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Struct": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.StructExtract": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Sum": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Sqrt": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Stddev": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.StddevPop": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.StddevSamp": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.TimeToStr": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.TimeToTimeStr": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.TimeToUnix": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.TimeStrToDate": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.TimeStrToTime": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.TimeStrToUnix": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Trim": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.TsOrDsAdd": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 3}, "sqlglot.expressions.TsOrDsToDateStr": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.TsOrDsToDate": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.TsOrDiToDi": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Unhex": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.UnixToStr": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.UnixToTime": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.UnixToTimeStr": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Upper": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Variance": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.VariancePop": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Week": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.XMLTable": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Year": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Use": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Merge": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.When": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.maybe_parse": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 270, "bases": 0, "doc": 231}, "sqlglot.expressions.union": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 43, "bases": 0, "doc": 234}, "sqlglot.expressions.intersect": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 43, "bases": 0, "doc": 234}, "sqlglot.expressions.except_": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 43, "bases": 0, "doc": 235}, "sqlglot.expressions.select": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 138, "bases": 0, "doc": 206}, "sqlglot.expressions.from_": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 43, "bases": 0, "doc": 211}, "sqlglot.expressions.update": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 234, "bases": 0, "doc": 263}, "sqlglot.expressions.delete": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 228, "bases": 0, "doc": 164}, "sqlglot.expressions.condition": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 41, "bases": 0, "doc": 334}, "sqlglot.expressions.and_": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 43, "bases": 0, "doc": 180}, "sqlglot.expressions.or_": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 43, "bases": 0, "doc": 180}, "sqlglot.expressions.not_": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 41, "bases": 0, "doc": 152}, "sqlglot.expressions.paren": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 24, "bases": 0, "doc": 3}, "sqlglot.expressions.to_identifier": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 21, "bases": 0, "doc": 53}, "sqlglot.expressions.to_interval": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 46, "bases": 0, "doc": 16}, "sqlglot.expressions.to_table": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 73, "bases": 0, "doc": 66}, "sqlglot.expressions.to_column": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 55, "bases": 0, "doc": 62}, "sqlglot.expressions.alias_": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 224, "bases": 0, "doc": 292}, "sqlglot.expressions.subquery": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 38, "bases": 0, "doc": 197}, "sqlglot.expressions.column": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 208, "bases": 0, "doc": 66}, "sqlglot.expressions.cast": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 108, "bases": 0, "doc": 122}, "sqlglot.expressions.table_": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 69, "bases": 0, "doc": 58}, "sqlglot.expressions.values": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 131, "bases": 0, "doc": 169}, "sqlglot.expressions.var": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 58, "bases": 0, "doc": 168}, "sqlglot.expressions.rename_table": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 75, "bases": 0, "doc": 50}, "sqlglot.expressions.convert": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 24, "bases": 0, "doc": 54}, "sqlglot.expressions.replace_children": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 30, "bases": 0, "doc": 18}, "sqlglot.expressions.column_table_names": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 129}, "sqlglot.expressions.table_name": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 14, "bases": 0, "doc": 152}, "sqlglot.expressions.replace_tables": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 176}, "sqlglot.expressions.replace_placeholders": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 25, "bases": 0, "doc": 249}, "sqlglot.expressions.expand": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 84, "bases": 0, "doc": 200}, "sqlglot.expressions.func": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 122, "bases": 0, "doc": 272}, "sqlglot.expressions.true": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 7, "bases": 0, "doc": 8}, "sqlglot.expressions.false": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 7, "bases": 0, "doc": 8}, "sqlglot.expressions.null": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 7, "bases": 0, "doc": 7}, "sqlglot.generator": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.generator.Generator": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 503}, "sqlglot.generator.Generator.__init__": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 300, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.generate": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 76, "bases": 0, "doc": 55}, "sqlglot.generator.Generator.unsupported": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 24, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.sep": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.seg": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 44, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.pad_comment": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 24, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.maybe_comment": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 44, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.wrap": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 40, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.no_identify": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 51, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.normalize_func": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 24, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.indent": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 106, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.sql": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 96, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.uncache_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.cache_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.characterset_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.column_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.columnposition_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.columndef_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.columnconstraint_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.autoincrementcolumnconstraint_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 20, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.compresscolumnconstraint_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.generatedasidentitycolumnconstraint_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 36, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.notnullcolumnconstraint_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.primarykeycolumnconstraint_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.uniquecolumnconstraint_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 20, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.create_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.describe_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.prepend_ctes": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 44, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.with_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.cte_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.tablealias_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.bitstring_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.hexstring_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.datatype_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.directory_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.delete_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.drop_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.except_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.except_op": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.fetch_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.filter_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.hint_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.index_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.identifier_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.national_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.partition_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.properties_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.root_properties": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.properties": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 117, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.with_properties": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.locate_properties": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 77, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.property_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.likeproperty_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.fallbackproperty_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.journalproperty_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.freespaceproperty_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.afterjournalproperty_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.checksumproperty_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.mergeblockratioproperty_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.datablocksizeproperty_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.blockcompressionproperty_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.isolatedloadingproperty_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.lockingproperty_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.withdataproperty_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.insert_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.intersect_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.intersect_op": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.introducer_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.pseudotype_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.returning_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.rowformatdelimitedproperty_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.table_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 55, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.tablesample_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 59, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.pivot_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.tuple_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.update_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.values_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.var_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.into_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.from_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.group_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.having_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.join_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.lambda_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 59, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.lateral_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.limit_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.offset_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.setitem_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.set_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.pragma_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.lock_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.literal_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.loaddata_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.null_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 22, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.boolean_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.order_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 51, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.cluster_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.distribute_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.sort_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.ordered_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.matchrecognize_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.query_modifiers": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 46, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.select_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.schema_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.star_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.structkwarg_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.parameter_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.sessionparameter_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.placeholder_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.subquery_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 55, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.qualify_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.union_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.union_op": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.unnest_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.where_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.window_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.partition_by_sql": {"qualname": 4, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 52, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.window_spec_sql": {"qualname": 4, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.withingroup_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.between_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.bracket_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.all_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.any_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.exists_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.case_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.constraint_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.extract_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.trim_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.concat_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.check_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.foreignkey_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.primarykey_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.unique_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.if_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.matchagainst_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.jsonkeyvalue_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.jsonobject_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.in_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.in_unnest_op": {"qualname": 4, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.interval_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.return_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.reference_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.anonymous_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.paren_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.neg_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.not_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.alias_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.aliases_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.attimezone_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.add_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.and_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.connector_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 44, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.bitwiseand_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.bitwiseleftshift_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.bitwisenot_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.bitwiseor_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.bitwiserightshift_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.bitwisexor_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.cast_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.currentdate_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.collate_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.command_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.comment_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.transaction_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.commit_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.rollback_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.altercolumn_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.renametable_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.altertable_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.droppartition_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.addconstraint_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.distinct_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.ignorenulls_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.respectnulls_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.intdiv_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.dpipe_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.div_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.overlaps_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.distance_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.dot_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.eq_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.escape_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.glob_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.gt_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.gte_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.ilike_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.ilikeany_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.is_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.like_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.likeany_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.similarto_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.lt_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.lte_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.mod_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.mul_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.neq_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.nullsafeeq_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.nullsafeneq_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.or_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.slice_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.sub_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.trycast_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.use_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.binary": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 44, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.function_fallback_sql": {"qualname": 4, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.func": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 67, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.format_args": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 54, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.text_width": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 24, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.format_time": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 40, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.expressions": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 138, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.op_expressions": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 65, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.naked_property": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.set_operation": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 44, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.tag_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.token_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 35, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.userdefinedfunction_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.joinhint_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.kwarg_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.when_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.merge_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.tochar_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.helper": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.helper.AutoName": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 25}, "sqlglot.helper.seq_get": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 45, "bases": 0, "doc": 27}, "sqlglot.helper.ensure_list": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 66}, "sqlglot.helper.ensure_collection": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 66}, "sqlglot.helper.csv": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 36, "bases": 0, "doc": 55}, "sqlglot.helper.subclasses": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 103, "bases": 0, "doc": 84}, "sqlglot.helper.apply_index_offset": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 53, "bases": 0, "doc": 88}, "sqlglot.helper.camel_to_snake_case": {"qualname": 4, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 19, "bases": 0, "doc": 16}, "sqlglot.helper.while_changing": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 67, "bases": 0, "doc": 58}, "sqlglot.helper.tsort": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 47, "bases": 0, "doc": 53}, "sqlglot.helper.open_file": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 24, "bases": 0, "doc": 19}, "sqlglot.helper.csv_reader": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 30, "bases": 0, "doc": 53}, "sqlglot.helper.find_new_name": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 35, "bases": 0, "doc": 50}, "sqlglot.helper.object_to_dict": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 26, "bases": 0, "doc": 12}, "sqlglot.helper.split_num_words": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 74, "bases": 0, "doc": 312}, "sqlglot.helper.is_iterable": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 19, "bases": 0, "doc": 132}, "sqlglot.helper.flatten": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 45, "bases": 0, "doc": 195}, "sqlglot.helper.count_params": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 19, "bases": 0, "doc": 26}, "sqlglot.helper.dict_depth": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 19, "bases": 0, "doc": 194}, "sqlglot.helper.first": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 29, "bases": 0, "doc": 16}, "sqlglot.helper.should_identify": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 35, "bases": 0, "doc": 65}, "sqlglot.lineage": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.lineage.Node": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.lineage.Node.__init__": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 99, "bases": 0, "doc": 3}, "sqlglot.lineage.Node.walk": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 30, "bases": 0, "doc": 3}, "sqlglot.lineage.Node.to_html": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 31, "bases": 0, "doc": 3}, "sqlglot.lineage.lineage": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 341, "bases": 0, "doc": 114}, "sqlglot.lineage.LineageHTML": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 18}, "sqlglot.lineage.LineageHTML.__init__": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 132, "bases": 0, "doc": 3}, "sqlglot.optimizer": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.optimizer.annotate_types": {"qualname": 0, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.optimizer.annotate_types.annotate_types": {"qualname": 2, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 42, "bases": 0, "doc": 331}, "sqlglot.optimizer.annotate_types.TypeAnnotator": {"qualname": 1, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.optimizer.annotate_types.TypeAnnotator.__init__": {"qualname": 3, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 35, "bases": 0, "doc": 3}, "sqlglot.optimizer.annotate_types.TypeAnnotator.annotate": {"qualname": 2, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 3}, "sqlglot.optimizer.canonicalize": {"qualname": 0, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.optimizer.canonicalize.canonicalize": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 62, "bases": 0, "doc": 59}, "sqlglot.optimizer.canonicalize.add_text_to_concat": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 39, "bases": 0, "doc": 3}, "sqlglot.optimizer.canonicalize.coerce_type": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 39, "bases": 0, "doc": 3}, "sqlglot.optimizer.canonicalize.remove_redundant_casts": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 40, "bases": 0, "doc": 3}, "sqlglot.optimizer.canonicalize.ensure_bool_predicates": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 40, "bases": 0, "doc": 3}, "sqlglot.optimizer.eliminate_ctes": {"qualname": 0, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.optimizer.eliminate_ctes.eliminate_ctes": {"qualname": 2, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 166}, "sqlglot.optimizer.eliminate_joins": {"qualname": 0, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"qualname": 2, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 195}, "sqlglot.optimizer.eliminate_joins.join_condition": {"qualname": 2, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 46}, "sqlglot.optimizer.eliminate_subqueries": {"qualname": 0, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.optimizer.eliminate_subqueries.eliminate_subqueries": {"qualname": 2, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 276}, "sqlglot.optimizer.expand_laterals": {"qualname": 0, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.optimizer.expand_laterals.expand_laterals": {"qualname": 2, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 40, "bases": 0, "doc": 188}, "sqlglot.optimizer.expand_multi_table_selects": {"qualname": 0, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.optimizer.expand_multi_table_selects.expand_multi_table_selects": {"qualname": 4, "fullname": 10, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 101}, "sqlglot.optimizer.isolate_table_selects": {"qualname": 0, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.optimizer.isolate_table_selects.isolate_table_selects": {"qualname": 3, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 21, "bases": 0, "doc": 3}, "sqlglot.optimizer.lower_identities": {"qualname": 0, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.optimizer.lower_identities.lower_identities": {"qualname": 2, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 172}, "sqlglot.optimizer.merge_subqueries": {"qualname": 0, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"qualname": 2, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 23, "bases": 0, "doc": 272}, "sqlglot.optimizer.merge_subqueries.merge_ctes": {"qualname": 2, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 23, "bases": 0, "doc": 3}, "sqlglot.optimizer.merge_subqueries.merge_derived_tables": {"qualname": 3, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 23, "bases": 0, "doc": 3}, "sqlglot.optimizer.normalize": {"qualname": 0, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.optimizer.normalize.normalize": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 64, "bases": 0, "doc": 188}, "sqlglot.optimizer.normalize.normalized": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 21, "bases": 0, "doc": 3}, "sqlglot.optimizer.normalize.normalization_distance": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 21, "bases": 0, "doc": 171}, "sqlglot.optimizer.normalize.distributive_law": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 32, "bases": 0, "doc": 39}, "sqlglot.optimizer.optimize_joins": {"qualname": 0, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.optimizer.optimize_joins.optimize_joins": {"qualname": 2, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 132}, "sqlglot.optimizer.optimize_joins.reorder_joins": {"qualname": 2, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 13}, "sqlglot.optimizer.optimize_joins.normalize": {"qualname": 1, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 13}, "sqlglot.optimizer.optimize_joins.other_table_names": {"qualname": 3, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 3}, "sqlglot.optimizer.optimizer": {"qualname": 0, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.optimizer.optimizer.optimize": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 692, "bases": 0, "doc": 223}, "sqlglot.optimizer.pushdown_predicates": {"qualname": 0, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.optimizer.pushdown_predicates.pushdown_predicates": {"qualname": 2, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 186}, "sqlglot.optimizer.pushdown_predicates.pushdown": {"qualname": 1, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 23, "bases": 0, "doc": 3}, "sqlglot.optimizer.pushdown_predicates.pushdown_cnf": {"qualname": 2, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 23, "bases": 0, "doc": 20}, "sqlglot.optimizer.pushdown_predicates.pushdown_dnf": {"qualname": 2, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 23, "bases": 0, "doc": 31}, "sqlglot.optimizer.pushdown_predicates.nodes_for_predicate": {"qualname": 3, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 23, "bases": 0, "doc": 3}, "sqlglot.optimizer.pushdown_predicates.replace_aliases": {"qualname": 2, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 3}, "sqlglot.optimizer.pushdown_projections": {"qualname": 0, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.optimizer.pushdown_projections.DEFAULT_SELECTION": {"qualname": 2, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 7, "bases": 0, "doc": 3}, "sqlglot.optimizer.pushdown_projections.pushdown_projections": {"qualname": 2, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 33, "bases": 0, "doc": 201}, "sqlglot.optimizer.qualify_columns": {"qualname": 0, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.optimizer.qualify_columns.qualify_columns": {"qualname": 2, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 209}, "sqlglot.optimizer.qualify_columns.validate_qualify_columns": {"qualname": 3, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 13}, "sqlglot.optimizer.qualify_columns.Resolver": {"qualname": 1, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 27}, "sqlglot.optimizer.qualify_columns.Resolver.__init__": {"qualname": 3, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 14, "bases": 0, "doc": 3}, "sqlglot.optimizer.qualify_columns.Resolver.get_table": {"qualname": 3, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 41, "bases": 0, "doc": 50}, "sqlglot.optimizer.qualify_columns.Resolver.all_columns": {"qualname": 3, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 11}, "sqlglot.optimizer.qualify_columns.Resolver.get_source_columns": {"qualname": 4, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 27, "bases": 0, "doc": 13}, "sqlglot.optimizer.qualify_tables": {"qualname": 0, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"qualname": 2, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 41, "bases": 0, "doc": 190}, "sqlglot.optimizer.scope": {"qualname": 0, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.optimizer.scope.ScopeType": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 5}, "sqlglot.optimizer.scope.ScopeType.ROOT": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 7, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.optimizer.scope.ScopeType.SUBQUERY": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 7, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.optimizer.scope.ScopeType.DERIVED_TABLE": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 8, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.optimizer.scope.ScopeType.CTE": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 7, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.optimizer.scope.ScopeType.UNION": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 7, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.optimizer.scope.ScopeType.UDTF": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 7, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.optimizer.scope.Scope": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 328}, "sqlglot.optimizer.scope.Scope.__init__": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 84, "bases": 0, "doc": 3}, "sqlglot.optimizer.scope.Scope.clear_cache": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 3}, "sqlglot.optimizer.scope.Scope.branch": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 40, "bases": 0, "doc": 12}, "sqlglot.optimizer.scope.Scope.walk": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 21, "bases": 0, "doc": 3}, "sqlglot.optimizer.scope.Scope.find": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 29, "bases": 0, "doc": 97}, "sqlglot.optimizer.scope.Scope.find_all": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 29, "bases": 0, "doc": 90}, "sqlglot.optimizer.scope.Scope.replace": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 21, "bases": 0, "doc": 63}, "sqlglot.optimizer.scope.Scope.tables": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 21}, "sqlglot.optimizer.scope.Scope.ctes": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 21}, "sqlglot.optimizer.scope.Scope.derived_tables": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 43}, "sqlglot.optimizer.scope.Scope.udtfs": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 24}, "sqlglot.optimizer.scope.Scope.subqueries": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 44}, "sqlglot.optimizer.scope.Scope.columns": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 36}, "sqlglot.optimizer.scope.Scope.selected_sources": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 69}, "sqlglot.optimizer.scope.Scope.cte_sources": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 24}, "sqlglot.optimizer.scope.Scope.selects": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 52}, "sqlglot.optimizer.scope.Scope.external_columns": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 35}, "sqlglot.optimizer.scope.Scope.unqualified_columns": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 22}, "sqlglot.optimizer.scope.Scope.join_hints": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 30}, "sqlglot.optimizer.scope.Scope.source_columns": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 17, "bases": 0, "doc": 52}, "sqlglot.optimizer.scope.Scope.is_subquery": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 9}, "sqlglot.optimizer.scope.Scope.is_derived_table": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 10}, "sqlglot.optimizer.scope.Scope.is_union": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 9}, "sqlglot.optimizer.scope.Scope.is_cte": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 11}, "sqlglot.optimizer.scope.Scope.is_root": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 9}, "sqlglot.optimizer.scope.Scope.is_udtf": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 14}, "sqlglot.optimizer.scope.Scope.is_correlated_subquery": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 10}, "sqlglot.optimizer.scope.Scope.rename_source": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 23, "bases": 0, "doc": 8}, "sqlglot.optimizer.scope.Scope.add_source": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 21, "bases": 0, "doc": 8}, "sqlglot.optimizer.scope.Scope.remove_source": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 8}, "sqlglot.optimizer.scope.Scope.traverse": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 28}, "sqlglot.optimizer.scope.Scope.ref_count": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 34}, "sqlglot.optimizer.scope.traverse_scope": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 330}, "sqlglot.optimizer.scope.build_scope": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 41}, "sqlglot.optimizer.scope.walk_in_scope": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 21, "bases": 0, "doc": 83}, "sqlglot.optimizer.simplify": {"qualname": 0, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.optimizer.simplify.simplify": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 138}, "sqlglot.optimizer.simplify.rewrite_between": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 40, "bases": 0, "doc": 31}, "sqlglot.optimizer.simplify.simplify_not": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 25}, "sqlglot.optimizer.simplify.flatten": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 24}, "sqlglot.optimizer.simplify.simplify_connectors": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 21, "bases": 0, "doc": 3}, "sqlglot.optimizer.simplify.remove_compliments": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 21, "bases": 0, "doc": 19}, "sqlglot.optimizer.simplify.uniq_sort": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 31, "bases": 0, "doc": 23}, "sqlglot.optimizer.simplify.absorb_and_eliminate": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 21, "bases": 0, "doc": 58}, "sqlglot.optimizer.simplify.simplify_literals": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 21, "bases": 0, "doc": 3}, "sqlglot.optimizer.simplify.simplify_parens": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 3}, "sqlglot.optimizer.simplify.remove_where_true": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 3}, "sqlglot.optimizer.simplify.always_true": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 3}, "sqlglot.optimizer.simplify.is_complement": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 3}, "sqlglot.optimizer.simplify.is_false": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 29, "bases": 0, "doc": 3}, "sqlglot.optimizer.simplify.is_null": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 29, "bases": 0, "doc": 3}, "sqlglot.optimizer.simplify.eval_boolean": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 21, "bases": 0, "doc": 3}, "sqlglot.optimizer.simplify.extract_date": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 3}, "sqlglot.optimizer.simplify.extract_interval": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 3}, "sqlglot.optimizer.simplify.date_literal": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 3}, "sqlglot.optimizer.simplify.boolean_literal": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 3}, "sqlglot.optimizer.unnest_subqueries": {"qualname": 0, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"qualname": 2, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 227}, "sqlglot.optimizer.unnest_subqueries.unnest": {"qualname": 1, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 22, "bases": 0, "doc": 3}, "sqlglot.optimizer.unnest_subqueries.decorrelate": {"qualname": 1, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 28, "bases": 0, "doc": 3}, "sqlglot.parser": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.parser.parse_var_map": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 29, "bases": 0, "doc": 3}, "sqlglot.parser.parse_like": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 3}, "sqlglot.parser.binary_range_parser": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 93, "bases": 0, "doc": 3}, "sqlglot.parser.Parser": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 174}, "sqlglot.parser.Parser.__init__": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 162, "bases": 0, "doc": 3}, "sqlglot.parser.Parser.reset": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 3}, "sqlglot.parser.Parser.parse": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 87, "bases": 0, "doc": 70}, "sqlglot.parser.Parser.parse_into": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 159, "bases": 0, "doc": 111}, "sqlglot.parser.Parser.check_errors": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 14, "bases": 0, "doc": 16}, "sqlglot.parser.Parser.raise_error": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 57, "bases": 0, "doc": 22}, "sqlglot.parser.Parser.expression": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 89, "bases": 0, "doc": 74}, "sqlglot.parser.Parser.validate_expression": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 60, "bases": 0, "doc": 57}, "sqlglot.planner": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.planner.Plan": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.planner.Plan.__init__": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 24, "bases": 0, "doc": 3}, "sqlglot.planner.Step": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.planner.Step.from_expression": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 90, "bases": 0, "doc": 209}, "sqlglot.planner.Step.add_dependency": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.planner.Step.to_s": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 31, "bases": 0, "doc": 3}, "sqlglot.planner.Scan": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.planner.Scan.from_expression": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 90, "bases": 0, "doc": 209}, "sqlglot.planner.Join": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.planner.Join.from_joins": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 96, "bases": 0, "doc": 3}, "sqlglot.planner.Aggregate": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.planner.Sort": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.planner.SetOperation": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.planner.SetOperation.__init__": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 83, "bases": 0, "doc": 3}, "sqlglot.planner.SetOperation.from_expression": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 90, "bases": 0, "doc": 209}, "sqlglot.schema.Schema": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 8}, "sqlglot.schema.Schema.add_table": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 111, "bases": 0, "doc": 57}, "sqlglot.schema.Schema.column_names": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 67, "bases": 0, "doc": 56}, "sqlglot.schema.Schema.get_column_type": {"qualname": 4, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 73, "bases": 0, "doc": 56}, "sqlglot.schema.Schema.supported_table_args": {"qualname": 4, "fullname": 6, "annotation": 3, "default_value": 0, "signature": 0, "bases": 0, "doc": 16}, "sqlglot.schema.AbstractMappingSchema": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 87}, "sqlglot.schema.AbstractMappingSchema.__init__": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 27, "bases": 0, "doc": 3}, "sqlglot.schema.AbstractMappingSchema.table_parts": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 40, "bases": 0, "doc": 3}, "sqlglot.schema.AbstractMappingSchema.find": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 88, "bases": 0, "doc": 3}, "sqlglot.schema.MappingSchema": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 6, "doc": 139}, "sqlglot.schema.MappingSchema.__init__": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 128, "bases": 0, "doc": 3}, "sqlglot.schema.MappingSchema.from_mapping_schema": {"qualname": 4, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 47, "bases": 0, "doc": 3}, "sqlglot.schema.MappingSchema.copy": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 31, "bases": 0, "doc": 3}, "sqlglot.schema.MappingSchema.add_table": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 111, "bases": 0, "doc": 60}, "sqlglot.schema.MappingSchema.column_names": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 67, "bases": 0, "doc": 56}, "sqlglot.schema.MappingSchema.get_column_type": {"qualname": 4, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 79, "bases": 0, "doc": 56}, "sqlglot.schema.ensure_schema": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 106, "bases": 0, "doc": 3}, "sqlglot.schema.ensure_column_mapping": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 67, "bases": 0, "doc": 3}, "sqlglot.schema.flatten_schema": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 69, "bases": 0, "doc": 3}, "sqlglot.serde": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.serde.dump": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 149, "bases": 0, "doc": 12}, "sqlglot.serde.load": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 149, "bases": 0, "doc": 16}, "sqlglot.time": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.time.format_time": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 73, "bases": 0, "doc": 108}, "sqlglot.tokens": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 5}, "sqlglot.tokens.TokenType.L_PAREN": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.R_PAREN": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.L_BRACKET": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.R_BRACKET": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.L_BRACE": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.R_BRACE": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.COMMA": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.DOT": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.DASH": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.PLUS": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.COLON": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.DCOLON": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.SEMICOLON": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.STAR": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.BACKSLASH": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.SLASH": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.LT": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.LTE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.GT": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.GTE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.NOT": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.EQ": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.NEQ": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.NULLSAFE_EQ": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.AND": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.OR": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.AMP": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.DPIPE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.PIPE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.CARET": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.TILDA": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.ARROW": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.DARROW": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.FARROW": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.HASH": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.HASH_ARROW": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.DHASH_ARROW": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.LR_ARROW": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.LT_AT": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.AT_GT": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.DOLLAR": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.PARAMETER": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.SESSION_PARAMETER": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.NATIONAL": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.DAMP": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.BLOCK_START": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.BLOCK_END": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.SPACE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.BREAK": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.STRING": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.NUMBER": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.IDENTIFIER": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.DATABASE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.COLUMN": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.COLUMN_DEF": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.SCHEMA": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.TABLE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.VAR": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.BIT_STRING": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.HEX_STRING": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.BYTE_STRING": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.BIT": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.BOOLEAN": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.TINYINT": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.UTINYINT": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.SMALLINT": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.USMALLINT": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.INT": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.UINT": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.BIGINT": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.UBIGINT": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.FLOAT": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.DOUBLE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.DECIMAL": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.CHAR": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.NCHAR": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.VARCHAR": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.NVARCHAR": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.TEXT": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.MEDIUMTEXT": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.LONGTEXT": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.MEDIUMBLOB": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.LONGBLOB": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.BINARY": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.VARBINARY": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.JSON": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.JSONB": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.TIME": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.TIMESTAMP": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.TIMESTAMPTZ": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.TIMESTAMPLTZ": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.DATETIME": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.DATE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.UUID": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.GEOGRAPHY": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.NULLABLE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.GEOMETRY": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.HLLSKETCH": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.HSTORE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.SUPER": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.SERIAL": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.SMALLSERIAL": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.BIGSERIAL": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.XML": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.UNIQUEIDENTIFIER": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.MONEY": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.SMALLMONEY": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.ROWVERSION": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.IMAGE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.VARIANT": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.OBJECT": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.INET": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.ALIAS": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.ALTER": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.ALWAYS": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.ALL": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.ANTI": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.ANY": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.APPLY": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.ARRAY": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.ASC": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.ASOF": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.AT_TIME_ZONE": {"qualname": 4, "fullname": 6, "annotation": 0, "default_value": 13, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.AUTO_INCREMENT": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.BEGIN": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.BETWEEN": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.BOTH": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.BUCKET": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.BY_DEFAULT": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.CACHE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.CASCADE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.CASE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.CHARACTER_SET": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.CLUSTER_BY": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.COLLATE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.COMMAND": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.COMMENT": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.COMMIT": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.COMPOUND": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.CONSTRAINT": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.CREATE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.CROSS": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.CUBE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.CURRENT_DATE": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.CURRENT_DATETIME": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.CURRENT_ROW": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.CURRENT_TIME": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.CURRENT_TIMESTAMP": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.DEFAULT": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.DELETE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.DESC": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.DESCRIBE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.DISTINCT": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.DISTINCT_FROM": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.DISTRIBUTE_BY": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.DIV": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.DROP": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.ELSE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.END": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.ESCAPE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.EXCEPT": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.EXECUTE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.EXISTS": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.FALSE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.FETCH": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.FILTER": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.FINAL": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.FIRST": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.FOLLOWING": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.FOR": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.FOREIGN_KEY": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.FORMAT": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.FROM": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.FULL": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.FUNCTION": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.GLOB": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.GLOBAL": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.GROUP_BY": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.GROUPING_SETS": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.HAVING": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.HINT": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.IF": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.IGNORE_NULLS": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.ILIKE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.ILIKE_ANY": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.IN": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.INDEX": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.INNER": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.INSERT": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.INTERSECT": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.INTERVAL": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.INTO": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.INTRODUCER": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.IRLIKE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.IS": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.ISNULL": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.JOIN": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.JOIN_MARKER": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.LANGUAGE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.LATERAL": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.LAZY": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.LEADING": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.LEFT": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.LIKE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.LIKE_ANY": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.LIMIT": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.LOAD_DATA": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.LOCAL": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.MAP": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.MATCH_RECOGNIZE": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.MATERIALIZED": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.MERGE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.MOD": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.NATURAL": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.NEXT": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.NO_ACTION": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.NOTNULL": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.NULL": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.NULLS_FIRST": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.NULLS_LAST": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.OFFSET": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.ON": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.ONLY": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.OPTIONS": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.ORDER_BY": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.ORDERED": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.ORDINALITY": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.OUTER": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.OUT_OF": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.OVER": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.OVERLAPS": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.OVERWRITE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.PARTITION": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.PARTITION_BY": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.PERCENT": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.PIVOT": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.PLACEHOLDER": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.PRAGMA": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.PRECEDING": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.PRIMARY_KEY": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.PROCEDURE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.PROPERTIES": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.PSEUDO_TYPE": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.QUALIFY": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.QUOTE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.RANGE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.RECURSIVE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.REPLACE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.RESPECT_NULLS": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.RETURNING": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.REFERENCES": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.RIGHT": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.RLIKE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.ROLLBACK": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.ROLLUP": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.ROW": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.ROWS": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.SEED": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.SELECT": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.SEMI": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.SEPARATOR": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.SERDE_PROPERTIES": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.SET": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.SHOW": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.SIMILAR_TO": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.SOME": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.SORTKEY": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.SORT_BY": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.STRUCT": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.TABLE_SAMPLE": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.TEMPORARY": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.TOP": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.THEN": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.TRAILING": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.TRUE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.UNBOUNDED": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.UNCACHE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.UNION": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.UNLOGGED": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.UNNEST": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.UNPIVOT": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.UPDATE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.USE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.USING": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.VALUES": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.VIEW": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.VOLATILE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.WHEN": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.WHERE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.WINDOW": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.WITH": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.WITH_TIME_ZONE": {"qualname": 4, "fullname": 6, "annotation": 0, "default_value": 13, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.WITH_LOCAL_TIME_ZONE": {"qualname": 5, "fullname": 7, "annotation": 0, "default_value": 15, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.WITHIN_GROUP": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.WITHOUT_TIME_ZONE": {"qualname": 4, "fullname": 6, "annotation": 0, "default_value": 13, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.UNIQUE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.Token": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.Token.__init__": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 97, "bases": 0, "doc": 3}, "sqlglot.tokens.Token.number": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 14}, "sqlglot.tokens.Token.string": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 14}, "sqlglot.tokens.Token.identifier": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 14}, "sqlglot.tokens.Token.var": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 14}, "sqlglot.tokens.Tokenizer": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.Tokenizer.reset": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 14, "bases": 0, "doc": 3}, "sqlglot.tokens.Tokenizer.tokenize": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 40, "bases": 0, "doc": 16}, "sqlglot.transforms": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.transforms.unalias_group": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 40, "bases": 0, "doc": 146}, "sqlglot.transforms.eliminate_distinct_on": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 40, "bases": 0, "doc": 66}, "sqlglot.transforms.eliminate_qualify": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 40, "bases": 0, "doc": 111}, "sqlglot.transforms.remove_precision_parameterized_types": {"qualname": 4, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 40, "bases": 0, "doc": 33}, "sqlglot.transforms.preprocess": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 144, "bases": 0, "doc": 88}, "sqlglot.transforms.delegate": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 19, "bases": 0, "doc": 29}, "sqlglot.trie": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.trie.new_trie": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 29, "bases": 0, "doc": 185}, "sqlglot.trie.in_trie": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 47, "bases": 0, "doc": 299}}, "length": 1756, "save": true}, "index": {"qualname": {"root": {"docs": {"sqlglot.dataframe.sql.DataFrame.__init__": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.__init__": {"tf": 1}, "sqlglot.dataframe.sql.Column.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.__init__": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameReader.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.__init__": {"tf": 1}, "sqlglot.diff.Insert.__init__": {"tf": 1}, "sqlglot.diff.Remove.__init__": {"tf": 1}, "sqlglot.diff.Move.__init__": {"tf": 1}, "sqlglot.diff.Update.__init__": {"tf": 1}, "sqlglot.diff.Keep.__init__": {"tf": 1}, "sqlglot.diff.ChangeDistiller.__init__": {"tf": 1}, "sqlglot.errors.ParseError.__init__": {"tf": 1}, "sqlglot.executor.context.Context.__init__": {"tf": 1}, "sqlglot.executor.env.reverse_key.__init__": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.__init__": {"tf": 1}, "sqlglot.executor.table.Table.__init__": {"tf": 1}, "sqlglot.executor.table.TableIter.__init__": {"tf": 1}, "sqlglot.executor.table.RangeReader.__init__": {"tf": 1}, "sqlglot.executor.table.RowReader.__init__": {"tf": 1}, "sqlglot.expressions.Expression.__init__": {"tf": 1}, "sqlglot.expressions.Condition.and_": {"tf": 1}, "sqlglot.expressions.Condition.or_": {"tf": 1}, "sqlglot.expressions.Condition.not_": {"tf": 1}, "sqlglot.expressions.Unionable.except_": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.TimeUnit.__init__": {"tf": 1}, "sqlglot.expressions.except_": {"tf": 1}, "sqlglot.expressions.from_": {"tf": 1}, "sqlglot.expressions.and_": {"tf": 1}, "sqlglot.expressions.or_": {"tf": 1}, "sqlglot.expressions.not_": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1}, "sqlglot.expressions.table_": {"tf": 1}, "sqlglot.generator.Generator.__init__": {"tf": 1}, "sqlglot.lineage.Node.__init__": {"tf": 1}, "sqlglot.lineage.LineageHTML.__init__": {"tf": 1}, "sqlglot.optimizer.annotate_types.TypeAnnotator.__init__": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.__init__": {"tf": 1}, "sqlglot.optimizer.scope.Scope.__init__": {"tf": 1}, "sqlglot.parser.Parser.__init__": {"tf": 1}, "sqlglot.planner.Plan.__init__": {"tf": 1}, "sqlglot.planner.SetOperation.__init__": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema.__init__": {"tf": 1}, "sqlglot.schema.MappingSchema.__init__": {"tf": 1}, "sqlglot.tokens.Token.__init__": {"tf": 1}}, "df": 48, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.pretty": {"tf": 1}}, "df": 1}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {"sqlglot.dialects.dialect.Dialects.PRESTO": {"tf": 1}, "sqlglot.dialects.presto.Presto": {"tf": 1}, "sqlglot.dialects.presto.Presto.Tokenizer": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator.transaction_sql": {"tf": 1}}, "df": 6}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Predicate": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.nodes_for_predicate": {"tf": 1}}, "df": 2, "s": {"docs": {"sqlglot.optimizer.canonicalize.ensure_bool_predicates": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_predicates": {"tf": 1}}, "df": 2}}}}}}}, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.generator.Generator.prepend_ctes": {"tf": 1}}, "df": 1}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.transforms.preprocess": {"tf": 1}}, "df": 1}}}}}}}, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.tokens.TokenType.PRECEDING": {"tf": 1}}, "df": 1}}}}}, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.transforms.remove_precision_parameterized_types": {"tf": 1}}, "df": 1}}}}}}}, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dialects.dialect.no_properties_sql": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator.with_properties": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.with_properties": {"tf": 1}, "sqlglot.expressions.Properties": {"tf": 1}, "sqlglot.expressions.Properties.Location": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_CREATE": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_NAME": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_SCHEMA": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_WITH": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_ALIAS": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_EXPRESSION": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_INDEX": {"tf": 1}, "sqlglot.expressions.Properties.Location.UNSUPPORTED": {"tf": 1}, "sqlglot.expressions.Properties.from_dict": {"tf": 1}, "sqlglot.generator.Generator.properties_sql": {"tf": 1}, "sqlglot.generator.Generator.root_properties": {"tf": 1}, "sqlglot.generator.Generator.properties": {"tf": 1}, "sqlglot.generator.Generator.with_properties": {"tf": 1}, "sqlglot.generator.Generator.locate_properties": {"tf": 1}, "sqlglot.tokens.TokenType.PROPERTIES": {"tf": 1}, "sqlglot.tokens.TokenType.SERDE_PROPERTIES": {"tf": 1}}, "df": 21}}}, "y": {"docs": {"sqlglot.expressions.Property": {"tf": 1}, "sqlglot.generator.Generator.property_sql": {"tf": 1}, "sqlglot.generator.Generator.naked_property": {"tf": 1}}, "df": 3}}}}}, "j": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 1}}, "df": 1}}}}}}}}, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.PROCEDURE": {"tf": 1}}, "df": 1}}}}}}}, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.expressions.Pragma": {"tf": 1}, "sqlglot.generator.Generator.pragma_sql": {"tf": 1}, "sqlglot.tokens.TokenType.PRAGMA": {"tf": 1}}, "df": 3}}}}, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.tokens.TokenType.PRIMARY_KEY": {"tf": 1}}, "df": 1, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.PrimaryKey": {"tf": 1}, "sqlglot.generator.Generator.primarykey_sql": {"tf": 1}}, "df": 2, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.PrimaryKeyColumnConstraint": {"tf": 1}, "sqlglot.generator.Generator.primarykeycolumnconstraint_sql": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}}}}}}}}}}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.parse": {"tf": 1}, "sqlglot.parse_one": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.parse": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.parse_into": {"tf": 1}, "sqlglot.dialects.dialect.parse_date_delta": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1}, "sqlglot.parser.parse_var_map": {"tf": 1}, "sqlglot.parser.parse_like": {"tf": 1}, "sqlglot.parser.Parser.parse": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 1}}, "df": 10, "r": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.expressions.Func.default_parser_mappings": {"tf": 1}, "sqlglot.parser.binary_range_parser": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1}, "sqlglot.parser.Parser.__init__": {"tf": 1}, "sqlglot.parser.Parser.reset": {"tf": 1}, "sqlglot.parser.Parser.parse": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 1}, "sqlglot.parser.Parser.check_errors": {"tf": 1}, "sqlglot.parser.Parser.raise_error": {"tf": 1}, "sqlglot.parser.Parser.expression": {"tf": 1}, "sqlglot.parser.Parser.validate_expression": {"tf": 1}}, "df": 30}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.errors.ParseError": {"tf": 1}, "sqlglot.errors.ParseError.__init__": {"tf": 1}, "sqlglot.errors.ParseError.new": {"tf": 1}}, "df": 3}}}}}}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.Partition": {"tf": 1}, "sqlglot.generator.Generator.partition_sql": {"tf": 1}, "sqlglot.generator.Generator.partition_by_sql": {"tf": 1}, "sqlglot.tokens.TokenType.PARTITION": {"tf": 1}, "sqlglot.tokens.TokenType.PARTITION_BY": {"tf": 1}}, "df": 5, "b": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dataframe.sql.Window.partitionBy": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.partitionBy": {"tf": 1}}, "df": 2}}, "s": {"docs": {"sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1}}, "df": 1}, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dialects.teradata.Teradata.Generator.partitionedbyproperty_sql": {"tf": 1}, "sqlglot.expressions.PartitionedByProperty": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}}}}, "s": {"docs": {"sqlglot.expressions.Column.parts": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema.table_parts": {"tf": 1}}, "df": 2}}, "e": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dialects.dialect.no_paren_current_date_sql": {"tf": 1}, "sqlglot.expressions.Paren": {"tf": 1}, "sqlglot.expressions.paren": {"tf": 1}, "sqlglot.generator.Generator.paren_sql": {"tf": 1}, "sqlglot.tokens.TokenType.L_PAREN": {"tf": 1}, "sqlglot.tokens.TokenType.R_PAREN": {"tf": 1}}, "df": 6, "t": {"docs": {"sqlglot.expressions.Expression.parent_select": {"tf": 1}, "sqlglot.expressions.Expression.same_parent": {"tf": 1}}, "df": 2}, "s": {"docs": {"sqlglot.optimizer.simplify.simplify_parens": {"tf": 1}}, "df": 1}}}, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.Parameter": {"tf": 1}, "sqlglot.generator.Generator.parameter_sql": {"tf": 1}, "sqlglot.tokens.TokenType.PARAMETER": {"tf": 1}, "sqlglot.tokens.TokenType.SESSION_PARAMETER": {"tf": 1}}, "df": 4, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.transforms.remove_precision_parameterized_types": {"tf": 1}}, "df": 1}}}}}}}}, "s": {"docs": {"sqlglot.helper.count_params": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.PathColumnConstraint": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}, "d": {"docs": {"sqlglot.generator.Generator.pad_comment": {"tf": 1}}, "df": 1}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe.sql.DataFrame.persist": {"tf": 1}}, "df": 1}}}}, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.PERCENT": {"tf": 1}}, "df": 1, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.PercentileCont": {"tf": 1}}, "df": 1}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot.expressions.PercentileDisc": {"tf": 1}}, "df": 1}}}}}}}}}}}}}, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe.sql.GroupedData.pivot": {"tf": 1}, "sqlglot.dialects.dialect.no_pivot_sql": {"tf": 1}, "sqlglot.expressions.Pivot": {"tf": 1}, "sqlglot.generator.Generator.pivot_sql": {"tf": 1}, "sqlglot.tokens.TokenType.PIVOT": {"tf": 1}}, "df": 5}}}, "p": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.PIPE": {"tf": 1}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.Properties.Location.POST_CREATE": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_NAME": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_SCHEMA": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_WITH": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_ALIAS": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_EXPRESSION": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_INDEX": {"tf": 1}}, "df": 7, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dialects.dialect.Dialects.POSTGRES": {"tf": 1}, "sqlglot.dialects.postgres.Postgres": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Tokenizer": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}}, "df": 5}}}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dialects.dialect.str_position_sql": {"tf": 1}, "sqlglot.executor.env.str_position": {"tf": 1}}, "df": 2}}}}}, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Posexplode": {"tf": 1}}, "df": 1}}}}}}}}, "p": {"docs": {"sqlglot.executor.table.Table.pop": {"tf": 1}, "sqlglot.expressions.Expression.pop": {"tf": 1}}, "df": 2}, "w": {"docs": {"sqlglot.expressions.Pow": {"tf": 1}}, "df": 1}}, "y": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.executor.python.Python": {"tf": 1}, "sqlglot.executor.python.Python.Tokenizer": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}}, "df": 3, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.executor.python.PythonExecutor": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.__init__": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.execute": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.generate": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.generate_tuple": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.context": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.table": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.scan": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.static": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.scan_table": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.scan_csv": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.join": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.nested_loop_join": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.hash_join": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.aggregate": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.sort": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.set_operation": {"tf": 1}}, "df": 17}}}}}}}}}}}}}, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.Placeholder": {"tf": 1}, "sqlglot.generator.Generator.placeholder_sql": {"tf": 1}, "sqlglot.tokens.TokenType.PLACEHOLDER": {"tf": 1}}, "df": 3, "s": {"docs": {"sqlglot.expressions.replace_placeholders": {"tf": 1}}, "df": 1}}}}}}}}}, "n": {"docs": {"sqlglot.planner.Plan": {"tf": 1}, "sqlglot.planner.Plan.__init__": {"tf": 1}}, "df": 2}}, "u": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.tokens.TokenType.PLUS": {"tf": 1}}, "df": 1}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "o": {"docs": {"sqlglot.tokens.TokenType.PSEUDO_TYPE": {"tf": 1}}, "df": 1, "t": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.PseudoType": {"tf": 1}, "sqlglot.generator.Generator.pseudotype_sql": {"tf": 1}}, "df": 2}}}}}}}}}, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.optimizer.pushdown_predicates.pushdown_predicates": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_cnf": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_dnf": {"tf": 1}, "sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 1}}, "df": 5}}}}}}}}, "s": {"docs": {"sqlglot.planner.Step.to_s": {"tf": 1}}, "df": 1, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.schema": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_SCHEMA": {"tf": 1}, "sqlglot.expressions.Schema": {"tf": 1}, "sqlglot.generator.Generator.schema_sql": {"tf": 1}, "sqlglot.schema.Schema": {"tf": 1}, "sqlglot.schema.Schema.add_table": {"tf": 1}, "sqlglot.schema.Schema.column_names": {"tf": 1}, "sqlglot.schema.Schema.get_column_type": {"tf": 1}, "sqlglot.schema.Schema.supported_table_args": {"tf": 1}, "sqlglot.schema.MappingSchema.from_mapping_schema": {"tf": 1}, "sqlglot.schema.ensure_schema": {"tf": 1}, "sqlglot.schema.flatten_schema": {"tf": 1}, "sqlglot.tokens.TokenType.SCHEMA": {"tf": 1}}, "df": 13, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.errors.SchemaError": {"tf": 1}}, "df": 1}}}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.SchemaCommentProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dialects.dialect.arrow_json_extract_scalar_sql": {"tf": 1}}, "df": 1}}}, "n": {"docs": {"sqlglot.executor.python.PythonExecutor.scan": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.scan_table": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.scan_csv": {"tf": 1}, "sqlglot.planner.Scan": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}}, "df": 5}}, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.scope.Scope": {"tf": 1}, "sqlglot.optimizer.scope.Scope.__init__": {"tf": 1}, "sqlglot.optimizer.scope.Scope.clear_cache": {"tf": 1}, "sqlglot.optimizer.scope.Scope.branch": {"tf": 1}, "sqlglot.optimizer.scope.Scope.walk": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1}, "sqlglot.optimizer.scope.Scope.replace": {"tf": 1}, "sqlglot.optimizer.scope.Scope.tables": {"tf": 1}, "sqlglot.optimizer.scope.Scope.ctes": {"tf": 1}, "sqlglot.optimizer.scope.Scope.derived_tables": {"tf": 1}, "sqlglot.optimizer.scope.Scope.udtfs": {"tf": 1}, "sqlglot.optimizer.scope.Scope.subqueries": {"tf": 1}, "sqlglot.optimizer.scope.Scope.columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 1}, "sqlglot.optimizer.scope.Scope.cte_sources": {"tf": 1}, "sqlglot.optimizer.scope.Scope.selects": {"tf": 1}, "sqlglot.optimizer.scope.Scope.external_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.unqualified_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.join_hints": {"tf": 1}, "sqlglot.optimizer.scope.Scope.source_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_subquery": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_derived_table": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_union": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_cte": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_root": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_udtf": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_correlated_subquery": {"tf": 1}, "sqlglot.optimizer.scope.Scope.rename_source": {"tf": 1}, "sqlglot.optimizer.scope.Scope.add_source": {"tf": 1}, "sqlglot.optimizer.scope.Scope.remove_source": {"tf": 1}, "sqlglot.optimizer.scope.Scope.traverse": {"tf": 1}, "sqlglot.optimizer.scope.Scope.ref_count": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}, "sqlglot.optimizer.scope.build_scope": {"tf": 1}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1}}, "df": 36, "t": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.scope.ScopeType": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.ROOT": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.SUBQUERY": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.DERIVED_TABLE": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.CTE": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.UNION": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.UDTF": {"tf": 1}}, "df": 7}}}}}}}}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.dialects.dialect.Dialects.SPARK": {"tf": 1}, "sqlglot.dialects.spark.Spark": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator.cast_sql": {"tf": 1}, "sqlglot.dialects.spark.Spark.Tokenizer": {"tf": 1}}, "df": 6, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dataframe.sql.SparkSession": {"tf": 1}, "sqlglot.dataframe.sql.SparkSession.table": {"tf": 1}, "sqlglot.dataframe.sql.SparkSession.createDataFrame": {"tf": 1}, "sqlglot.dataframe.sql.SparkSession.sql": {"tf": 1}}, "df": 4}}}}}}}}}, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.SPACE": {"tf": 1}}, "df": 1}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.Split": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1}}, "df": 2}}}, "e": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot.generator.Generator.window_spec_sql": {"tf": 1}}, "df": 1}}}, "q": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.dataframe.sql.SparkSession.sql": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sql": {"tf": 1}, "sqlglot.dataframe.sql.Column.sql": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.sql": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.sql": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.array_sql": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.transaction_sql": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.commit_sql": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.rollback_sql": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator.cte_sql": {"tf": 1}, "sqlglot.dialects.dialect.approx_count_distinct_sql": {"tf": 1}, "sqlglot.dialects.dialect.if_sql": {"tf": 1}, "sqlglot.dialects.dialect.arrow_json_extract_sql": {"tf": 1}, "sqlglot.dialects.dialect.arrow_json_extract_scalar_sql": {"tf": 1}, "sqlglot.dialects.dialect.inline_array_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_ilike_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_paren_current_date_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_recursive_cte_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_safe_divide_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_tablesample_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_pivot_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_trycast_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_properties_sql": {"tf": 1}, "sqlglot.dialects.dialect.str_position_sql": {"tf": 1}, "sqlglot.dialects.dialect.struct_extract_sql": {"tf": 1}, "sqlglot.dialects.dialect.var_map_sql": {"tf": 1}, "sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1}, "sqlglot.dialects.dialect.timestamptrunc_sql": {"tf": 1}, "sqlglot.dialects.dialect.strposition_to_locate_sql": {"tf": 1}, "sqlglot.dialects.dialect.timestrtotime_sql": {"tf": 1}, "sqlglot.dialects.dialect.datestrtodate_sql": {"tf": 1}, "sqlglot.dialects.dialect.trim_sql": {"tf": 1}, "sqlglot.dialects.dialect.str_to_time_sql": {"tf": 1}, "sqlglot.dialects.dialect.ts_or_ds_to_date_sql": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator.tablesample_sql": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator.arrayagg_sql": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator.show_sql": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator.offset_sql": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator.column_sql": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator.xmltable_sql": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator.transaction_sql": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.renametable_sql": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.settag_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.describe_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.generatedasidentitycolumnconstraint_sql": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator.cast_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.cast_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.datediff_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.groupconcat_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.least_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.transaction_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.partitionedbyproperty_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.update_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.mod_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.rangen_sql": {"tf": 1}, "sqlglot.dialects.tsql.generate_date_delta_with_unit_sql": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator.offset_sql": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator.systemtime_sql": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator.returnsproperty_sql": {"tf": 1}, "sqlglot.expressions.Expression.sql": {"tf": 1}, "sqlglot.expressions.Func.sql_names": {"tf": 1}, "sqlglot.expressions.Func.sql_name": {"tf": 1}, "sqlglot.generator.Generator.sql": {"tf": 1}, "sqlglot.generator.Generator.uncache_sql": {"tf": 1}, "sqlglot.generator.Generator.cache_sql": {"tf": 1}, "sqlglot.generator.Generator.characterset_sql": {"tf": 1}, "sqlglot.generator.Generator.column_sql": {"tf": 1}, "sqlglot.generator.Generator.columnposition_sql": {"tf": 1}, "sqlglot.generator.Generator.columndef_sql": {"tf": 1}, "sqlglot.generator.Generator.columnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.autoincrementcolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.compresscolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.generatedasidentitycolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.notnullcolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.primarykeycolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.uniquecolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.create_sql": {"tf": 1}, "sqlglot.generator.Generator.describe_sql": {"tf": 1}, "sqlglot.generator.Generator.with_sql": {"tf": 1}, "sqlglot.generator.Generator.cte_sql": {"tf": 1}, "sqlglot.generator.Generator.tablealias_sql": {"tf": 1}, "sqlglot.generator.Generator.bitstring_sql": {"tf": 1}, "sqlglot.generator.Generator.hexstring_sql": {"tf": 1}, "sqlglot.generator.Generator.datatype_sql": {"tf": 1}, "sqlglot.generator.Generator.directory_sql": {"tf": 1}, "sqlglot.generator.Generator.delete_sql": {"tf": 1}, "sqlglot.generator.Generator.drop_sql": {"tf": 1}, "sqlglot.generator.Generator.except_sql": {"tf": 1}, "sqlglot.generator.Generator.fetch_sql": {"tf": 1}, "sqlglot.generator.Generator.filter_sql": {"tf": 1}, "sqlglot.generator.Generator.hint_sql": {"tf": 1}, "sqlglot.generator.Generator.index_sql": {"tf": 1}, "sqlglot.generator.Generator.identifier_sql": {"tf": 1}, "sqlglot.generator.Generator.national_sql": {"tf": 1}, "sqlglot.generator.Generator.partition_sql": {"tf": 1}, "sqlglot.generator.Generator.properties_sql": {"tf": 1}, "sqlglot.generator.Generator.property_sql": {"tf": 1}, "sqlglot.generator.Generator.likeproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.fallbackproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.journalproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.freespaceproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.afterjournalproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.checksumproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.mergeblockratioproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.datablocksizeproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.blockcompressionproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.isolatedloadingproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.lockingproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.withdataproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.insert_sql": {"tf": 1}, "sqlglot.generator.Generator.intersect_sql": {"tf": 1}, "sqlglot.generator.Generator.introducer_sql": {"tf": 1}, "sqlglot.generator.Generator.pseudotype_sql": {"tf": 1}, "sqlglot.generator.Generator.returning_sql": {"tf": 1}, "sqlglot.generator.Generator.rowformatdelimitedproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.table_sql": {"tf": 1}, "sqlglot.generator.Generator.tablesample_sql": {"tf": 1}, "sqlglot.generator.Generator.pivot_sql": {"tf": 1}, "sqlglot.generator.Generator.tuple_sql": {"tf": 1}, "sqlglot.generator.Generator.update_sql": {"tf": 1}, "sqlglot.generator.Generator.values_sql": {"tf": 1}, "sqlglot.generator.Generator.var_sql": {"tf": 1}, "sqlglot.generator.Generator.into_sql": {"tf": 1}, "sqlglot.generator.Generator.from_sql": {"tf": 1}, "sqlglot.generator.Generator.group_sql": {"tf": 1}, "sqlglot.generator.Generator.having_sql": {"tf": 1}, "sqlglot.generator.Generator.join_sql": {"tf": 1}, "sqlglot.generator.Generator.lambda_sql": {"tf": 1}, "sqlglot.generator.Generator.lateral_sql": {"tf": 1}, "sqlglot.generator.Generator.limit_sql": {"tf": 1}, "sqlglot.generator.Generator.offset_sql": {"tf": 1}, "sqlglot.generator.Generator.setitem_sql": {"tf": 1}, "sqlglot.generator.Generator.set_sql": {"tf": 1}, "sqlglot.generator.Generator.pragma_sql": {"tf": 1}, "sqlglot.generator.Generator.lock_sql": {"tf": 1}, "sqlglot.generator.Generator.literal_sql": {"tf": 1}, "sqlglot.generator.Generator.loaddata_sql": {"tf": 1}, "sqlglot.generator.Generator.null_sql": {"tf": 1}, "sqlglot.generator.Generator.boolean_sql": {"tf": 1}, "sqlglot.generator.Generator.order_sql": {"tf": 1}, "sqlglot.generator.Generator.cluster_sql": {"tf": 1}, "sqlglot.generator.Generator.distribute_sql": {"tf": 1}, "sqlglot.generator.Generator.sort_sql": {"tf": 1}, "sqlglot.generator.Generator.ordered_sql": {"tf": 1}, "sqlglot.generator.Generator.matchrecognize_sql": {"tf": 1}, "sqlglot.generator.Generator.select_sql": {"tf": 1}, "sqlglot.generator.Generator.schema_sql": {"tf": 1}, "sqlglot.generator.Generator.star_sql": {"tf": 1}, "sqlglot.generator.Generator.structkwarg_sql": {"tf": 1}, "sqlglot.generator.Generator.parameter_sql": {"tf": 1}, "sqlglot.generator.Generator.sessionparameter_sql": {"tf": 1}, "sqlglot.generator.Generator.placeholder_sql": {"tf": 1}, "sqlglot.generator.Generator.subquery_sql": {"tf": 1}, "sqlglot.generator.Generator.qualify_sql": {"tf": 1}, "sqlglot.generator.Generator.union_sql": {"tf": 1}, "sqlglot.generator.Generator.unnest_sql": {"tf": 1}, "sqlglot.generator.Generator.where_sql": {"tf": 1}, "sqlglot.generator.Generator.window_sql": {"tf": 1}, "sqlglot.generator.Generator.partition_by_sql": {"tf": 1}, "sqlglot.generator.Generator.window_spec_sql": {"tf": 1}, "sqlglot.generator.Generator.withingroup_sql": {"tf": 1}, "sqlglot.generator.Generator.between_sql": {"tf": 1}, "sqlglot.generator.Generator.bracket_sql": {"tf": 1}, "sqlglot.generator.Generator.all_sql": {"tf": 1}, "sqlglot.generator.Generator.any_sql": {"tf": 1}, "sqlglot.generator.Generator.exists_sql": {"tf": 1}, "sqlglot.generator.Generator.case_sql": {"tf": 1}, "sqlglot.generator.Generator.constraint_sql": {"tf": 1}, "sqlglot.generator.Generator.extract_sql": {"tf": 1}, "sqlglot.generator.Generator.trim_sql": {"tf": 1}, "sqlglot.generator.Generator.concat_sql": {"tf": 1}, "sqlglot.generator.Generator.check_sql": {"tf": 1}, "sqlglot.generator.Generator.foreignkey_sql": {"tf": 1}, "sqlglot.generator.Generator.primarykey_sql": {"tf": 1}, "sqlglot.generator.Generator.unique_sql": {"tf": 1}, "sqlglot.generator.Generator.if_sql": {"tf": 1}, "sqlglot.generator.Generator.matchagainst_sql": {"tf": 1}, "sqlglot.generator.Generator.jsonkeyvalue_sql": {"tf": 1}, "sqlglot.generator.Generator.jsonobject_sql": {"tf": 1}, "sqlglot.generator.Generator.in_sql": {"tf": 1}, "sqlglot.generator.Generator.interval_sql": {"tf": 1}, "sqlglot.generator.Generator.return_sql": {"tf": 1}, "sqlglot.generator.Generator.reference_sql": {"tf": 1}, "sqlglot.generator.Generator.anonymous_sql": {"tf": 1}, "sqlglot.generator.Generator.paren_sql": {"tf": 1}, "sqlglot.generator.Generator.neg_sql": {"tf": 1}, "sqlglot.generator.Generator.not_sql": {"tf": 1}, "sqlglot.generator.Generator.alias_sql": {"tf": 1}, "sqlglot.generator.Generator.aliases_sql": {"tf": 1}, "sqlglot.generator.Generator.attimezone_sql": {"tf": 1}, "sqlglot.generator.Generator.add_sql": {"tf": 1}, "sqlglot.generator.Generator.and_sql": {"tf": 1}, "sqlglot.generator.Generator.connector_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwiseand_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwiseleftshift_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwisenot_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwiseor_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwiserightshift_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwisexor_sql": {"tf": 1}, "sqlglot.generator.Generator.cast_sql": {"tf": 1}, "sqlglot.generator.Generator.currentdate_sql": {"tf": 1}, "sqlglot.generator.Generator.collate_sql": {"tf": 1}, "sqlglot.generator.Generator.command_sql": {"tf": 1}, "sqlglot.generator.Generator.comment_sql": {"tf": 1}, "sqlglot.generator.Generator.transaction_sql": {"tf": 1}, "sqlglot.generator.Generator.commit_sql": {"tf": 1}, "sqlglot.generator.Generator.rollback_sql": {"tf": 1}, "sqlglot.generator.Generator.altercolumn_sql": {"tf": 1}, "sqlglot.generator.Generator.renametable_sql": {"tf": 1}, "sqlglot.generator.Generator.altertable_sql": {"tf": 1}, "sqlglot.generator.Generator.droppartition_sql": {"tf": 1}, "sqlglot.generator.Generator.addconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.distinct_sql": {"tf": 1}, "sqlglot.generator.Generator.ignorenulls_sql": {"tf": 1}, "sqlglot.generator.Generator.respectnulls_sql": {"tf": 1}, "sqlglot.generator.Generator.intdiv_sql": {"tf": 1}, "sqlglot.generator.Generator.dpipe_sql": {"tf": 1}, "sqlglot.generator.Generator.div_sql": {"tf": 1}, "sqlglot.generator.Generator.overlaps_sql": {"tf": 1}, "sqlglot.generator.Generator.distance_sql": {"tf": 1}, "sqlglot.generator.Generator.dot_sql": {"tf": 1}, "sqlglot.generator.Generator.eq_sql": {"tf": 1}, "sqlglot.generator.Generator.escape_sql": {"tf": 1}, "sqlglot.generator.Generator.glob_sql": {"tf": 1}, "sqlglot.generator.Generator.gt_sql": {"tf": 1}, "sqlglot.generator.Generator.gte_sql": {"tf": 1}, "sqlglot.generator.Generator.ilike_sql": {"tf": 1}, "sqlglot.generator.Generator.ilikeany_sql": {"tf": 1}, "sqlglot.generator.Generator.is_sql": {"tf": 1}, "sqlglot.generator.Generator.like_sql": {"tf": 1}, "sqlglot.generator.Generator.likeany_sql": {"tf": 1}, "sqlglot.generator.Generator.similarto_sql": {"tf": 1}, "sqlglot.generator.Generator.lt_sql": {"tf": 1}, "sqlglot.generator.Generator.lte_sql": {"tf": 1}, "sqlglot.generator.Generator.mod_sql": {"tf": 1}, "sqlglot.generator.Generator.mul_sql": {"tf": 1}, "sqlglot.generator.Generator.neq_sql": {"tf": 1}, "sqlglot.generator.Generator.nullsafeeq_sql": {"tf": 1}, "sqlglot.generator.Generator.nullsafeneq_sql": {"tf": 1}, "sqlglot.generator.Generator.or_sql": {"tf": 1}, "sqlglot.generator.Generator.slice_sql": {"tf": 1}, "sqlglot.generator.Generator.sub_sql": {"tf": 1}, "sqlglot.generator.Generator.trycast_sql": {"tf": 1}, "sqlglot.generator.Generator.use_sql": {"tf": 1}, "sqlglot.generator.Generator.function_fallback_sql": {"tf": 1}, "sqlglot.generator.Generator.tag_sql": {"tf": 1}, "sqlglot.generator.Generator.token_sql": {"tf": 1}, "sqlglot.generator.Generator.userdefinedfunction_sql": {"tf": 1}, "sqlglot.generator.Generator.joinhint_sql": {"tf": 1}, "sqlglot.generator.Generator.kwarg_sql": {"tf": 1}, "sqlglot.generator.Generator.when_sql": {"tf": 1}, "sqlglot.generator.Generator.merge_sql": {"tf": 1}, "sqlglot.generator.Generator.tochar_sql": {"tf": 1}}, "df": 259, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.Dialects.SQLITE": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Tokenizer": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.cast_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.datediff_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.groupconcat_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.least_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.transaction_sql": {"tf": 1}}, "df": 10}}}, "g": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.errors.SqlglotError": {"tf": 1}}, "df": 1}}}}}}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.SqlSecurityProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}, "r": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.Sqrt": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe.sql.DataFrame.select": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.expressions.Expression.parent_select": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 1}, "sqlglot.expressions.Select": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.expressions.Select.limit": {"tf": 1}, "sqlglot.expressions.Select.offset": {"tf": 1}, "sqlglot.expressions.Select.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.lateral": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1}, "sqlglot.expressions.Select.where": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1}, "sqlglot.expressions.Select.window": {"tf": 1}, "sqlglot.expressions.Select.qualify": {"tf": 1}, "sqlglot.expressions.Select.distinct": {"tf": 1}, "sqlglot.expressions.Select.ctas": {"tf": 1}, "sqlglot.expressions.Select.lock": {"tf": 1}, "sqlglot.expressions.Select.is_star": {"tf": 1}, "sqlglot.expressions.select": {"tf": 1}, "sqlglot.generator.Generator.select_sql": {"tf": 1}, "sqlglot.tokens.TokenType.SELECT": {"tf": 1}}, "df": 26, "s": {"docs": {"sqlglot.optimizer.expand_multi_table_selects.expand_multi_table_selects": {"tf": 1}, "sqlglot.optimizer.isolate_table_selects.isolate_table_selects": {"tf": 1}, "sqlglot.optimizer.scope.Scope.selects": {"tf": 1}}, "df": 3}, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.optimizer.pushdown_projections.DEFAULT_SELECTION": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 1}}, "df": 1}}}}}}, "t": {"docs": {"sqlglot.dataframe.sql.Column.set_table_name": {"tf": 1}, "sqlglot.executor.context.Context.set_row": {"tf": 1}, "sqlglot.executor.context.Context.set_index": {"tf": 1}, "sqlglot.executor.context.Context.set_range": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.set_operation": {"tf": 1}, "sqlglot.expressions.Expression.set": {"tf": 1}, "sqlglot.expressions.Set": {"tf": 1}, "sqlglot.generator.Generator.set_sql": {"tf": 1}, "sqlglot.generator.Generator.set_operation": {"tf": 1}, "sqlglot.tokens.TokenType.CHARACTER_SET": {"tf": 1}, "sqlglot.tokens.TokenType.SET": {"tf": 1}}, "df": 11, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.dialects.snowflake.Snowflake.Generator.settag_sql": {"tf": 1}, "sqlglot.expressions.SetTag": {"tf": 1}}, "df": 2}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {"sqlglot.expressions.SetItem": {"tf": 1}, "sqlglot.generator.Generator.setitem_sql": {"tf": 1}}, "df": 2}}}}, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.SetProperty": {"tf": 1}}, "df": 1}}}}}}}}, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.expressions.SetAgg": {"tf": 1}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.planner.SetOperation": {"tf": 1}, "sqlglot.planner.SetOperation.__init__": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}}, "df": 3}}}}}}}}}, "s": {"docs": {"sqlglot.tokens.TokenType.GROUPING_SETS": {"tf": 1}}, "df": 1}}, "r": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.SERDE_PROPERTIES": {"tf": 1}}, "df": 1, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.SerdeProperties": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.expressions.DataType.Type.SERIAL": {"tf": 1}, "sqlglot.tokens.TokenType.SERIAL": {"tf": 1}}, "df": 2}}}}, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.tokens.TokenType.SESSION_PARAMETER": {"tf": 1}}, "df": 1, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.SessionParameter": {"tf": 1}, "sqlglot.generator.Generator.sessionparameter_sql": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}, "p": {"docs": {"sqlglot.generator.Generator.sep": {"tf": 1}}, "df": 1, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.tokens.TokenType.SEPARATOR": {"tf": 1}}, "df": 1}}}}}}}, "g": {"docs": {"sqlglot.generator.Generator.seg": {"tf": 1}}, "df": 1}, "q": {"docs": {"sqlglot.helper.seq_get": {"tf": 1}}, "df": 1}, "m": {"docs": {}, "df": 0, "i": {"docs": {"sqlglot.tokens.TokenType.SEMI": {"tf": 1}}, "df": 1, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.tokens.TokenType.SEMICOLON": {"tf": 1}}, "df": 1}}}}}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.tokens.TokenType.SEED": {"tf": 1}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1}, "sqlglot.executor.context.Context.sort": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.sort": {"tf": 1}, "sqlglot.expressions.Sort": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.generator.Generator.sort_sql": {"tf": 1}, "sqlglot.optimizer.simplify.uniq_sort": {"tf": 1}, "sqlglot.planner.Sort": {"tf": 1}, "sqlglot.tokens.TokenType.SORT_BY": {"tf": 1}}, "df": 9, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.tokens.TokenType.SORTKEY": {"tf": 1}}, "df": 1, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.SortKeyProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.SortArray": {"tf": 1}}, "df": 1}}}}}}}, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.qualify_columns.Resolver.get_source_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.source_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.rename_source": {"tf": 1}, "sqlglot.optimizer.scope.Scope.add_source": {"tf": 1}, "sqlglot.optimizer.scope.Scope.remove_source": {"tf": 1}}, "df": 5, "s": {"docs": {"sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 1}, "sqlglot.optimizer.scope.Scope.cte_sources": {"tf": 1}}, "df": 2}}}}}, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.SOME": {"tf": 1}}, "df": 1}}}, "u": {"docs": {}, "df": 0, "m": {"docs": {"sqlglot.dataframe.sql.GroupedData.sum": {"tf": 1}, "sqlglot.dialects.dialect.count_if_to_sum": {"tf": 1}, "sqlglot.expressions.Sum": {"tf": 1}}, "df": 3}, "b": {"docs": {"sqlglot.expressions.Sub": {"tf": 1}, "sqlglot.generator.Generator.sub_sql": {"tf": 1}}, "df": 2, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dataframe.sql.Column.substr": {"tf": 1}}, "df": 1, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.executor.env.substring": {"tf": 1}, "sqlglot.expressions.Substring": {"tf": 1}}, "df": 2}}}}}}, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.Subqueryable.subquery": {"tf": 1}, "sqlglot.expressions.Subquery": {"tf": 1}, "sqlglot.expressions.Subquery.unnest": {"tf": 1}, "sqlglot.expressions.Subquery.is_star": {"tf": 1}, "sqlglot.expressions.Subquery.output_name": {"tf": 1}, "sqlglot.expressions.subquery": {"tf": 1}, "sqlglot.generator.Generator.subquery_sql": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.SUBQUERY": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_subquery": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_correlated_subquery": {"tf": 1}}, "df": 10, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Subqueryable": {"tf": 1}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 1}, "sqlglot.expressions.Subqueryable.limit": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1}}, "df": 4}}}}, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.SubqueryPredicate": {"tf": 1}}, "df": 1}}}}}}}}}}, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.optimizer.eliminate_subqueries.eliminate_subqueries": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1}, "sqlglot.optimizer.scope.Scope.subqueries": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 1}}, "df": 4}}}}}}}, "c": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.helper.subclasses": {"tf": 1}}, "df": 1}}}}}}}}, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.DataType.Type.SUPER": {"tf": 1}, "sqlglot.tokens.TokenType.SUPER": {"tf": 1}}, "df": 2}}, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.schema.Schema.supported_table_args": {"tf": 1}}, "df": 1}}}}}}}}, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.Expression.is_star": {"tf": 1}, "sqlglot.expressions.Union.is_star": {"tf": 1}, "sqlglot.expressions.Select.is_star": {"tf": 1}, "sqlglot.expressions.Subquery.is_star": {"tf": 1}, "sqlglot.expressions.Star": {"tf": 1}, "sqlglot.expressions.Star.output_name": {"tf": 1}, "sqlglot.generator.Generator.star_sql": {"tf": 1}, "sqlglot.tokens.TokenType.STAR": {"tf": 1}}, "df": 8, "t": {"docs": {"sqlglot.tokens.TokenType.BLOCK_START": {"tf": 1}}, "df": 1, "s": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.dataframe.sql.Column.startswith": {"tf": 1}}, "df": 1}}}}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dialects.dialect.Dialects.STARROCKS": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}}, "df": 4}}}}}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot.executor.python.PythonExecutor.static": {"tf": 1}}, "df": 1}}}}, "r": {"docs": {"sqlglot.dialects.dialect.str_position_sql": {"tf": 1}, "sqlglot.dialects.dialect.str_to_time_sql": {"tf": 1}, "sqlglot.executor.env.str_position": {"tf": 1}}, "df": 3, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.dialect.struct_extract_sql": {"tf": 1}, "sqlglot.expressions.DataType.Type.STRUCT": {"tf": 1}, "sqlglot.expressions.Struct": {"tf": 1}, "sqlglot.tokens.TokenType.STRUCT": {"tf": 1}}, "df": 4, "k": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.expressions.StructKwarg": {"tf": 1}, "sqlglot.generator.Generator.structkwarg_sql": {"tf": 1}}, "df": 2}}}}}, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.StructExtract": {"tf": 1}}, "df": 1}}}}}}}}}}, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dialects.dialect.locate_to_strposition": {"tf": 1}, "sqlglot.dialects.dialect.strposition_to_locate_sql": {"tf": 1}, "sqlglot.expressions.StrPosition": {"tf": 1}}, "df": 3}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.expressions.Expression.is_string": {"tf": 1}, "sqlglot.expressions.Literal.string": {"tf": 1}, "sqlglot.tokens.TokenType.STRING": {"tf": 1}, "sqlglot.tokens.TokenType.BIT_STRING": {"tf": 1}, "sqlglot.tokens.TokenType.HEX_STRING": {"tf": 1}, "sqlglot.tokens.TokenType.BYTE_STRING": {"tf": 1}, "sqlglot.tokens.Token.string": {"tf": 1}}, "df": 7}}}, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.StrToDate": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.StrToTime": {"tf": 1}}, "df": 1}}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "x": {"docs": {"sqlglot.expressions.StrToUnix": {"tf": 1}}, "df": 1}}}}}}}, "d": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "v": {"docs": {"sqlglot.expressions.Stddev": {"tf": 1}}, "df": 1, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.expressions.StddevPop": {"tf": 1}}, "df": 1}}}, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.expressions.StddevSamp": {"tf": 1}}, "df": 1}}}}}}}}, "e": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.planner.Step": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Step.add_dependency": {"tf": 1}, "sqlglot.planner.Step.to_s": {"tf": 1}}, "df": 4}}}, "a": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.DataFrameWriter.saveAsTable": {"tf": 1}}, "df": 1}}}}}}}}}, "f": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.no_safe_divide_sql": {"tf": 1}}, "df": 1, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.SafeDivide": {"tf": 1}}, "df": 1}}}}}}}}, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Expression.same_parent": {"tf": 1}}, "df": 1}, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.TABLE_SAMPLE": {"tf": 1}}, "df": 1}}}}}, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.Dialects.SNOWFLAKE": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Tokenizer": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.except_op": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.intersect_op": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.settag_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.describe_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.generatedasidentitycolumnconstraint_sql": {"tf": 1}}, "df": 12}}}}}}}, "a": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.helper.camel_to_snake_case": {"tf": 1}}, "df": 1}}}}, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {"sqlglot.dialects.mysql.MySQL.Generator.show_sql": {"tf": 1}, "sqlglot.expressions.Show": {"tf": 1}, "sqlglot.tokens.TokenType.SHOW": {"tf": 1}}, "df": 3}, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.helper.should_identify": {"tf": 1}}, "df": 1}}}}}, "y": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.tsql.TSQL.Generator.systemtime_sql": {"tf": 1}, "sqlglot.expressions.SystemTime": {"tf": 1}}, "df": 2}}}}}}}}}, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.DataType.Type.SMALLINT": {"tf": 1}, "sqlglot.tokens.TokenType.SMALLINT": {"tf": 1}}, "df": 2}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.expressions.DataType.Type.SMALLSERIAL": {"tf": 1}, "sqlglot.tokens.TokenType.SMALLSERIAL": {"tf": 1}}, "df": 2}}}}}}, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.DataType.Type.SMALLMONEY": {"tf": 1}, "sqlglot.tokens.TokenType.SMALLMONEY": {"tf": 1}}, "df": 2}}}}}}}}}, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.tokens.TokenType.SIMILAR_TO": {"tf": 1}}, "df": 1, "t": {"docs": {}, "df": 0, "o": {"docs": {"sqlglot.expressions.SimilarTo": {"tf": 1}, "sqlglot.generator.Generator.similarto_sql": {"tf": 1}}, "df": 2}}}}}}, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.optimizer.simplify.simplify": {"tf": 1}, "sqlglot.optimizer.simplify.simplify_not": {"tf": 1}, "sqlglot.optimizer.simplify.simplify_connectors": {"tf": 1}, "sqlglot.optimizer.simplify.simplify_literals": {"tf": 1}, "sqlglot.optimizer.simplify.simplify_parens": {"tf": 1}}, "df": 5}}}}}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Slice": {"tf": 1}, "sqlglot.generator.Generator.slice_sql": {"tf": 1}}, "df": 2}}}, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.tokens.TokenType.SLASH": {"tf": 1}}, "df": 1}}}}}, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.tokens.TokenType.ON": {"tf": 1}, "sqlglot.transforms.eliminate_distinct_on": {"tf": 1}}, "df": 3, "e": {"docs": {"sqlglot.parse_one": {"tf": 1}}, "df": 1}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.OnCommitProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.tokens.TokenType.ONLY": {"tf": 1}}, "df": 1}}}, "r": {"docs": {"sqlglot.dialects.dialect.Dialect.get_or_raise": {"tf": 1}, "sqlglot.dialects.dialect.min_or_least": {"tf": 1}, "sqlglot.dialects.dialect.max_or_greatest": {"tf": 1}, "sqlglot.dialects.dialect.ts_or_ds_to_date_sql": {"tf": 1}, "sqlglot.expressions.Condition.or_": {"tf": 1}, "sqlglot.expressions.Or": {"tf": 1}, "sqlglot.expressions.or_": {"tf": 1}, "sqlglot.generator.Generator.or_sql": {"tf": 1}, "sqlglot.tokens.TokenType.OR": {"tf": 1}}, "df": 9, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.Order": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.generator.Generator.order_sql": {"tf": 1}, "sqlglot.tokens.TokenType.ORDER_BY": {"tf": 1}}, "df": 4, "b": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.Window.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.orderBy": {"tf": 1}}, "df": 3}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.executor.env.ordered": {"tf": 1}, "sqlglot.expressions.Ordered": {"tf": 1}, "sqlglot.generator.Generator.ordered_sql": {"tf": 1}, "sqlglot.tokens.TokenType.ORDERED": {"tf": 1}}, "df": 4}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.tokens.TokenType.ORDINALITY": {"tf": 1}}, "df": 1}}}}}}}}, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.Dialects.ORACLE": {"tf": 1}, "sqlglot.dialects.oracle.Oracle": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator.offset_sql": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator.column_sql": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator.xmltable_sql": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Tokenizer": {"tf": 1}}, "df": 8}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dataframe.sql.Column.invoke_expression_over_column": {"tf": 1}, "sqlglot.dataframe.sql.Column.over": {"tf": 1}, "sqlglot.tokens.TokenType.OVER": {"tf": 1}}, "df": 3, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.Overlaps": {"tf": 1}, "sqlglot.generator.Generator.overlaps_sql": {"tf": 1}, "sqlglot.tokens.TokenType.OVERLAPS": {"tf": 1}}, "df": 3}}}}, "w": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.OVERWRITE": {"tf": 1}}, "df": 1}}}}}}}}, "p": {"docs": {"sqlglot.dataframe.sql.Column.binary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.inverse_binary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.unary_op": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.in_unnest_op": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.except_op": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.intersect_op": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.except_op": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.intersect_op": {"tf": 1}, "sqlglot.generator.Generator.except_op": {"tf": 1}, "sqlglot.generator.Generator.intersect_op": {"tf": 1}, "sqlglot.generator.Generator.union_op": {"tf": 1}, "sqlglot.generator.Generator.in_unnest_op": {"tf": 1}, "sqlglot.generator.Generator.op_expressions": {"tf": 1}}, "df": 13, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.optimize_joins.optimize_joins": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 2, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.errors.OptimizeError": {"tf": 1}}, "df": 1}}}}}}}}}, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.tokens.TokenType.OPTIONS": {"tf": 1}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.executor.python.PythonExecutor.set_operation": {"tf": 1}, "sqlglot.generator.Generator.set_operation": {"tf": 1}}, "df": 2}}}}, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.Expression.unnest_operands": {"tf": 1}}, "df": 1}}}}}, "n": {"docs": {"sqlglot.helper.open_file": {"tf": 1}}, "df": 1}}}, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.optimizer.optimize_joins.other_table_names": {"tf": 1}}, "df": 1, "w": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.Column.otherwise": {"tf": 1}}, "df": 1}}}}}}}}, "f": {"docs": {"sqlglot.tokens.TokenType.OUT_OF": {"tf": 1}}, "df": 1, "f": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.oracle.Oracle.Generator.offset_sql": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator.offset_sql": {"tf": 1}, "sqlglot.expressions.Offset": {"tf": 1}, "sqlglot.expressions.Select.offset": {"tf": 1}, "sqlglot.generator.Generator.offset_sql": {"tf": 1}, "sqlglot.helper.apply_index_offset": {"tf": 1}, "sqlglot.tokens.TokenType.OFFSET": {"tf": 1}}, "df": 7}}}}}, "u": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.OUT_OF": {"tf": 1}}, "df": 1, "p": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.Expression.output_name": {"tf": 1}, "sqlglot.expressions.Column.output_name": {"tf": 1}, "sqlglot.expressions.Identifier.output_name": {"tf": 1}, "sqlglot.expressions.Literal.output_name": {"tf": 1}, "sqlglot.expressions.Subquery.output_name": {"tf": 1}, "sqlglot.expressions.Star.output_name": {"tf": 1}, "sqlglot.expressions.Alias.output_name": {"tf": 1}, "sqlglot.expressions.Cast.output_name": {"tf": 1}}, "df": 8}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.tokens.TokenType.OUTER": {"tf": 1}}, "df": 1}}}}, "b": {"docs": {}, "df": 0, "j": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.DataType.Type.OBJECT": {"tf": 1}, "sqlglot.helper.object_to_dict": {"tf": 1}, "sqlglot.tokens.TokenType.OBJECT": {"tf": 1}}, "df": 3}}}}}}, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.transpile": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.transpile": {"tf": 1}}, "df": 2}}}}, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator.transaction_sql": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator.transaction_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.transaction_sql": {"tf": 1}, "sqlglot.expressions.Transaction": {"tf": 1}, "sqlglot.generator.Generator.transaction_sql": {"tf": 1}}, "df": 5}}}}}}, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {"sqlglot.expressions.Expression.transform": {"tf": 1}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.TransientProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.scope.Scope.traverse": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}}, "df": 2}}}}}, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.tokens.TokenType.TRAILING": {"tf": 1}}, "df": 1}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "o": {"docs": {"sqlglot.dialects.dialect.Dialects.TRINO": {"tf": 1}, "sqlglot.dialects.trino.Trino": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Tokenizer": {"tf": 1}}, "df": 4}}, "m": {"docs": {"sqlglot.dialects.dialect.trim_sql": {"tf": 1}, "sqlglot.expressions.Trim": {"tf": 1}, "sqlglot.generator.Generator.trim_sql": {"tf": 1}}, "df": 3}, "e": {"docs": {"sqlglot.trie.new_trie": {"tf": 1}, "sqlglot.trie.in_trie": {"tf": 1}}, "df": 2}}, "y": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.dialect.no_trycast_sql": {"tf": 1}, "sqlglot.expressions.TryCast": {"tf": 1}, "sqlglot.generator.Generator.trycast_sql": {"tf": 1}}, "df": 3}}}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot.dialects.dialect.date_trunc_to_time": {"tf": 1}}, "df": 1}}, "e": {"docs": {"sqlglot.expressions.true": {"tf": 1}, "sqlglot.optimizer.simplify.remove_where_true": {"tf": 1}, "sqlglot.optimizer.simplify.always_true": {"tf": 1}, "sqlglot.tokens.TokenType.TRUE": {"tf": 1}}, "df": 4}}}, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.SparkSession.table": {"tf": 1}, "sqlglot.dataframe.sql.Column.set_table_name": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameReader.table": {"tf": 1}, "sqlglot.executor.context.Context.table_iter": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.table": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.scan_table": {"tf": 1}, "sqlglot.executor.table.Table": {"tf": 1}, "sqlglot.executor.table.Table.__init__": {"tf": 1}, "sqlglot.executor.table.Table.add_columns": {"tf": 1}, "sqlglot.executor.table.Table.append": {"tf": 1}, "sqlglot.executor.table.Table.pop": {"tf": 1}, "sqlglot.expressions.Table": {"tf": 1}, "sqlglot.expressions.to_table": {"tf": 1}, "sqlglot.expressions.table_": {"tf": 1}, "sqlglot.expressions.rename_table": {"tf": 1}, "sqlglot.expressions.column_table_names": {"tf": 1}, "sqlglot.expressions.table_name": {"tf": 1}, "sqlglot.generator.Generator.table_sql": {"tf": 1}, "sqlglot.optimizer.expand_multi_table_selects.expand_multi_table_selects": {"tf": 1}, "sqlglot.optimizer.isolate_table_selects.isolate_table_selects": {"tf": 1}, "sqlglot.optimizer.optimize_joins.other_table_names": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.get_table": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.DERIVED_TABLE": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_derived_table": {"tf": 1}, "sqlglot.schema.Schema.add_table": {"tf": 1}, "sqlglot.schema.Schema.supported_table_args": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema.table_parts": {"tf": 1}, "sqlglot.schema.MappingSchema.add_table": {"tf": 1}, "sqlglot.tokens.TokenType.TABLE": {"tf": 1}, "sqlglot.tokens.TokenType.TABLE_SAMPLE": {"tf": 1}}, "df": 30, "a": {"docs": {}, "df": 0, "u": {"docs": {"sqlglot.dialects.dialect.Dialects.TABLEAU": {"tf": 1}, "sqlglot.dialects.tableau.Tableau": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}}, "df": 4}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.TableAlias": {"tf": 1}, "sqlglot.generator.Generator.tablealias_sql": {"tf": 1}}, "df": 2}}}}}, "s": {"docs": {"sqlglot.executor.table.Tables": {"tf": 1}, "sqlglot.executor.table.ensure_tables": {"tf": 1}, "sqlglot.expressions.replace_tables": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_derived_tables": {"tf": 1}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"tf": 1}, "sqlglot.optimizer.scope.Scope.tables": {"tf": 1}, "sqlglot.optimizer.scope.Scope.derived_tables": {"tf": 1}}, "df": 7, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.no_tablesample_sql": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator.tablesample_sql": {"tf": 1}, "sqlglot.expressions.TableSample": {"tf": 1}, "sqlglot.generator.Generator.tablesample_sql": {"tf": 1}}, "df": 4}}}}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.executor.table.TableIter": {"tf": 1}, "sqlglot.executor.table.TableIter.__init__": {"tf": 1}}, "df": 2}}}}, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.TableFormatProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}, "g": {"docs": {"sqlglot.expressions.Tag": {"tf": 1}, "sqlglot.generator.Generator.tag_sql": {"tf": 1}}, "df": 2}}, "o": {"docs": {"sqlglot.dialects.dialect.date_trunc_to_time": {"tf": 1}, "sqlglot.dialects.dialect.locate_to_strposition": {"tf": 1}, "sqlglot.dialects.dialect.strposition_to_locate_sql": {"tf": 1}, "sqlglot.dialects.dialect.count_if_to_sum": {"tf": 1}, "sqlglot.dialects.dialect.str_to_time_sql": {"tf": 1}, "sqlglot.dialects.dialect.ts_or_ds_to_date_sql": {"tf": 1}, "sqlglot.expressions.Column.to_dot": {"tf": 1}, "sqlglot.expressions.to_identifier": {"tf": 1}, "sqlglot.expressions.to_interval": {"tf": 1}, "sqlglot.expressions.to_table": {"tf": 1}, "sqlglot.expressions.to_column": {"tf": 1}, "sqlglot.helper.camel_to_snake_case": {"tf": 1}, "sqlglot.helper.object_to_dict": {"tf": 1}, "sqlglot.lineage.Node.to_html": {"tf": 1}, "sqlglot.optimizer.canonicalize.add_text_to_concat": {"tf": 1}, "sqlglot.planner.Step.to_s": {"tf": 1}, "sqlglot.tokens.TokenType.SIMILAR_TO": {"tf": 1}}, "df": 17, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.generator.Generator.token_sql": {"tf": 1}, "sqlglot.tokens.Token": {"tf": 1}, "sqlglot.tokens.Token.__init__": {"tf": 1}, "sqlglot.tokens.Token.number": {"tf": 1}, "sqlglot.tokens.Token.string": {"tf": 1}, "sqlglot.tokens.Token.identifier": {"tf": 1}, "sqlglot.tokens.Token.var": {"tf": 1}}, "df": 7, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.Dialect.tokenize": {"tf": 1}, "sqlglot.tokens.Tokenizer.tokenize": {"tf": 1}}, "df": 2, "r": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Tokenizer": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Tokenizer": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Tokenizer": {"tf": 1}, "sqlglot.dialects.drill.Drill.Tokenizer": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Tokenizer": {"tf": 1}, "sqlglot.dialects.hive.Hive.Tokenizer": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Tokenizer": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Tokenizer": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Tokenizer": {"tf": 1}, "sqlglot.dialects.presto.Presto.Tokenizer": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Tokenizer": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Tokenizer": {"tf": 1}, "sqlglot.dialects.spark.Spark.Tokenizer": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Tokenizer": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Tokenizer": {"tf": 1}, "sqlglot.dialects.trino.Trino.Tokenizer": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Tokenizer": {"tf": 1}, "sqlglot.executor.python.Python.Tokenizer": {"tf": 1}, "sqlglot.tokens.Tokenizer": {"tf": 1}, "sqlglot.tokens.Tokenizer.reset": {"tf": 1}, "sqlglot.tokens.Tokenizer.tokenize": {"tf": 1}}, "df": 21}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.errors.TokenError": {"tf": 1}}, "df": 1}}}}}, "t": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType": {"tf": 1}, "sqlglot.tokens.TokenType.L_PAREN": {"tf": 1}, "sqlglot.tokens.TokenType.R_PAREN": {"tf": 1}, "sqlglot.tokens.TokenType.L_BRACKET": {"tf": 1}, "sqlglot.tokens.TokenType.R_BRACKET": {"tf": 1}, "sqlglot.tokens.TokenType.L_BRACE": {"tf": 1}, "sqlglot.tokens.TokenType.R_BRACE": {"tf": 1}, "sqlglot.tokens.TokenType.COMMA": {"tf": 1}, "sqlglot.tokens.TokenType.DOT": {"tf": 1}, "sqlglot.tokens.TokenType.DASH": {"tf": 1}, "sqlglot.tokens.TokenType.PLUS": {"tf": 1}, "sqlglot.tokens.TokenType.COLON": {"tf": 1}, "sqlglot.tokens.TokenType.DCOLON": {"tf": 1}, "sqlglot.tokens.TokenType.SEMICOLON": {"tf": 1}, "sqlglot.tokens.TokenType.STAR": {"tf": 1}, "sqlglot.tokens.TokenType.BACKSLASH": {"tf": 1}, "sqlglot.tokens.TokenType.SLASH": {"tf": 1}, "sqlglot.tokens.TokenType.LT": {"tf": 1}, "sqlglot.tokens.TokenType.LTE": {"tf": 1}, "sqlglot.tokens.TokenType.GT": {"tf": 1}, "sqlglot.tokens.TokenType.GTE": {"tf": 1}, "sqlglot.tokens.TokenType.NOT": {"tf": 1}, "sqlglot.tokens.TokenType.EQ": {"tf": 1}, "sqlglot.tokens.TokenType.NEQ": {"tf": 1}, "sqlglot.tokens.TokenType.NULLSAFE_EQ": {"tf": 1}, "sqlglot.tokens.TokenType.AND": {"tf": 1}, "sqlglot.tokens.TokenType.OR": {"tf": 1}, "sqlglot.tokens.TokenType.AMP": {"tf": 1}, "sqlglot.tokens.TokenType.DPIPE": {"tf": 1}, "sqlglot.tokens.TokenType.PIPE": {"tf": 1}, "sqlglot.tokens.TokenType.CARET": {"tf": 1}, "sqlglot.tokens.TokenType.TILDA": {"tf": 1}, "sqlglot.tokens.TokenType.ARROW": {"tf": 1}, "sqlglot.tokens.TokenType.DARROW": {"tf": 1}, "sqlglot.tokens.TokenType.FARROW": {"tf": 1}, "sqlglot.tokens.TokenType.HASH": {"tf": 1}, "sqlglot.tokens.TokenType.HASH_ARROW": {"tf": 1}, "sqlglot.tokens.TokenType.DHASH_ARROW": {"tf": 1}, "sqlglot.tokens.TokenType.LR_ARROW": {"tf": 1}, "sqlglot.tokens.TokenType.LT_AT": {"tf": 1}, "sqlglot.tokens.TokenType.AT_GT": {"tf": 1}, "sqlglot.tokens.TokenType.DOLLAR": {"tf": 1}, "sqlglot.tokens.TokenType.PARAMETER": {"tf": 1}, "sqlglot.tokens.TokenType.SESSION_PARAMETER": {"tf": 1}, "sqlglot.tokens.TokenType.NATIONAL": {"tf": 1}, "sqlglot.tokens.TokenType.DAMP": {"tf": 1}, "sqlglot.tokens.TokenType.BLOCK_START": {"tf": 1}, "sqlglot.tokens.TokenType.BLOCK_END": {"tf": 1}, "sqlglot.tokens.TokenType.SPACE": {"tf": 1}, "sqlglot.tokens.TokenType.BREAK": {"tf": 1}, "sqlglot.tokens.TokenType.STRING": {"tf": 1}, "sqlglot.tokens.TokenType.NUMBER": {"tf": 1}, "sqlglot.tokens.TokenType.IDENTIFIER": {"tf": 1}, "sqlglot.tokens.TokenType.DATABASE": {"tf": 1}, "sqlglot.tokens.TokenType.COLUMN": {"tf": 1}, "sqlglot.tokens.TokenType.COLUMN_DEF": {"tf": 1}, "sqlglot.tokens.TokenType.SCHEMA": {"tf": 1}, "sqlglot.tokens.TokenType.TABLE": {"tf": 1}, "sqlglot.tokens.TokenType.VAR": {"tf": 1}, "sqlglot.tokens.TokenType.BIT_STRING": {"tf": 1}, "sqlglot.tokens.TokenType.HEX_STRING": {"tf": 1}, "sqlglot.tokens.TokenType.BYTE_STRING": {"tf": 1}, "sqlglot.tokens.TokenType.BIT": {"tf": 1}, "sqlglot.tokens.TokenType.BOOLEAN": {"tf": 1}, "sqlglot.tokens.TokenType.TINYINT": {"tf": 1}, "sqlglot.tokens.TokenType.UTINYINT": {"tf": 1}, "sqlglot.tokens.TokenType.SMALLINT": {"tf": 1}, "sqlglot.tokens.TokenType.USMALLINT": {"tf": 1}, "sqlglot.tokens.TokenType.INT": {"tf": 1}, "sqlglot.tokens.TokenType.UINT": {"tf": 1}, "sqlglot.tokens.TokenType.BIGINT": {"tf": 1}, "sqlglot.tokens.TokenType.UBIGINT": {"tf": 1}, "sqlglot.tokens.TokenType.FLOAT": {"tf": 1}, "sqlglot.tokens.TokenType.DOUBLE": {"tf": 1}, "sqlglot.tokens.TokenType.DECIMAL": {"tf": 1}, "sqlglot.tokens.TokenType.CHAR": {"tf": 1}, "sqlglot.tokens.TokenType.NCHAR": {"tf": 1}, "sqlglot.tokens.TokenType.VARCHAR": {"tf": 1}, "sqlglot.tokens.TokenType.NVARCHAR": {"tf": 1}, "sqlglot.tokens.TokenType.TEXT": {"tf": 1}, "sqlglot.tokens.TokenType.MEDIUMTEXT": {"tf": 1}, "sqlglot.tokens.TokenType.LONGTEXT": {"tf": 1}, "sqlglot.tokens.TokenType.MEDIUMBLOB": {"tf": 1}, "sqlglot.tokens.TokenType.LONGBLOB": {"tf": 1}, "sqlglot.tokens.TokenType.BINARY": {"tf": 1}, "sqlglot.tokens.TokenType.VARBINARY": {"tf": 1}, "sqlglot.tokens.TokenType.JSON": {"tf": 1}, "sqlglot.tokens.TokenType.JSONB": {"tf": 1}, "sqlglot.tokens.TokenType.TIME": {"tf": 1}, "sqlglot.tokens.TokenType.TIMESTAMP": {"tf": 1}, "sqlglot.tokens.TokenType.TIMESTAMPTZ": {"tf": 1}, "sqlglot.tokens.TokenType.TIMESTAMPLTZ": {"tf": 1}, "sqlglot.tokens.TokenType.DATETIME": {"tf": 1}, "sqlglot.tokens.TokenType.DATE": {"tf": 1}, "sqlglot.tokens.TokenType.UUID": {"tf": 1}, "sqlglot.tokens.TokenType.GEOGRAPHY": {"tf": 1}, "sqlglot.tokens.TokenType.NULLABLE": {"tf": 1}, "sqlglot.tokens.TokenType.GEOMETRY": {"tf": 1}, "sqlglot.tokens.TokenType.HLLSKETCH": {"tf": 1}, "sqlglot.tokens.TokenType.HSTORE": {"tf": 1}, "sqlglot.tokens.TokenType.SUPER": {"tf": 1}, "sqlglot.tokens.TokenType.SERIAL": {"tf": 1}, "sqlglot.tokens.TokenType.SMALLSERIAL": {"tf": 1}, "sqlglot.tokens.TokenType.BIGSERIAL": {"tf": 1}, "sqlglot.tokens.TokenType.XML": {"tf": 1}, "sqlglot.tokens.TokenType.UNIQUEIDENTIFIER": {"tf": 1}, "sqlglot.tokens.TokenType.MONEY": {"tf": 1}, "sqlglot.tokens.TokenType.SMALLMONEY": {"tf": 1}, "sqlglot.tokens.TokenType.ROWVERSION": {"tf": 1}, "sqlglot.tokens.TokenType.IMAGE": {"tf": 1}, "sqlglot.tokens.TokenType.VARIANT": {"tf": 1}, "sqlglot.tokens.TokenType.OBJECT": {"tf": 1}, "sqlglot.tokens.TokenType.INET": {"tf": 1}, "sqlglot.tokens.TokenType.ALIAS": {"tf": 1}, "sqlglot.tokens.TokenType.ALTER": {"tf": 1}, "sqlglot.tokens.TokenType.ALWAYS": {"tf": 1}, "sqlglot.tokens.TokenType.ALL": {"tf": 1}, "sqlglot.tokens.TokenType.ANTI": {"tf": 1}, "sqlglot.tokens.TokenType.ANY": {"tf": 1}, "sqlglot.tokens.TokenType.APPLY": {"tf": 1}, "sqlglot.tokens.TokenType.ARRAY": {"tf": 1}, "sqlglot.tokens.TokenType.ASC": {"tf": 1}, "sqlglot.tokens.TokenType.ASOF": {"tf": 1}, "sqlglot.tokens.TokenType.AT_TIME_ZONE": {"tf": 1}, "sqlglot.tokens.TokenType.AUTO_INCREMENT": {"tf": 1}, "sqlglot.tokens.TokenType.BEGIN": {"tf": 1}, "sqlglot.tokens.TokenType.BETWEEN": {"tf": 1}, "sqlglot.tokens.TokenType.BOTH": {"tf": 1}, "sqlglot.tokens.TokenType.BUCKET": {"tf": 1}, "sqlglot.tokens.TokenType.BY_DEFAULT": {"tf": 1}, "sqlglot.tokens.TokenType.CACHE": {"tf": 1}, "sqlglot.tokens.TokenType.CASCADE": {"tf": 1}, "sqlglot.tokens.TokenType.CASE": {"tf": 1}, "sqlglot.tokens.TokenType.CHARACTER_SET": {"tf": 1}, "sqlglot.tokens.TokenType.CLUSTER_BY": {"tf": 1}, "sqlglot.tokens.TokenType.COLLATE": {"tf": 1}, "sqlglot.tokens.TokenType.COMMAND": {"tf": 1}, "sqlglot.tokens.TokenType.COMMENT": {"tf": 1}, "sqlglot.tokens.TokenType.COMMIT": {"tf": 1}, "sqlglot.tokens.TokenType.COMPOUND": {"tf": 1}, "sqlglot.tokens.TokenType.CONSTRAINT": {"tf": 1}, "sqlglot.tokens.TokenType.CREATE": {"tf": 1}, "sqlglot.tokens.TokenType.CROSS": {"tf": 1}, "sqlglot.tokens.TokenType.CUBE": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_DATE": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_DATETIME": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_ROW": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_TIME": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_TIMESTAMP": {"tf": 1}, "sqlglot.tokens.TokenType.DEFAULT": {"tf": 1}, "sqlglot.tokens.TokenType.DELETE": {"tf": 1}, "sqlglot.tokens.TokenType.DESC": {"tf": 1}, "sqlglot.tokens.TokenType.DESCRIBE": {"tf": 1}, "sqlglot.tokens.TokenType.DISTINCT": {"tf": 1}, "sqlglot.tokens.TokenType.DISTINCT_FROM": {"tf": 1}, "sqlglot.tokens.TokenType.DISTRIBUTE_BY": {"tf": 1}, "sqlglot.tokens.TokenType.DIV": {"tf": 1}, "sqlglot.tokens.TokenType.DROP": {"tf": 1}, "sqlglot.tokens.TokenType.ELSE": {"tf": 1}, "sqlglot.tokens.TokenType.END": {"tf": 1}, "sqlglot.tokens.TokenType.ESCAPE": {"tf": 1}, "sqlglot.tokens.TokenType.EXCEPT": {"tf": 1}, "sqlglot.tokens.TokenType.EXECUTE": {"tf": 1}, "sqlglot.tokens.TokenType.EXISTS": {"tf": 1}, "sqlglot.tokens.TokenType.FALSE": {"tf": 1}, "sqlglot.tokens.TokenType.FETCH": {"tf": 1}, "sqlglot.tokens.TokenType.FILTER": {"tf": 1}, "sqlglot.tokens.TokenType.FINAL": {"tf": 1}, "sqlglot.tokens.TokenType.FIRST": {"tf": 1}, "sqlglot.tokens.TokenType.FOLLOWING": {"tf": 1}, "sqlglot.tokens.TokenType.FOR": {"tf": 1}, "sqlglot.tokens.TokenType.FOREIGN_KEY": {"tf": 1}, "sqlglot.tokens.TokenType.FORMAT": {"tf": 1}, "sqlglot.tokens.TokenType.FROM": {"tf": 1}, "sqlglot.tokens.TokenType.FULL": {"tf": 1}, "sqlglot.tokens.TokenType.FUNCTION": {"tf": 1}, "sqlglot.tokens.TokenType.GLOB": {"tf": 1}, "sqlglot.tokens.TokenType.GLOBAL": {"tf": 1}, "sqlglot.tokens.TokenType.GROUP_BY": {"tf": 1}, "sqlglot.tokens.TokenType.GROUPING_SETS": {"tf": 1}, "sqlglot.tokens.TokenType.HAVING": {"tf": 1}, "sqlglot.tokens.TokenType.HINT": {"tf": 1}, "sqlglot.tokens.TokenType.IF": {"tf": 1}, "sqlglot.tokens.TokenType.IGNORE_NULLS": {"tf": 1}, "sqlglot.tokens.TokenType.ILIKE": {"tf": 1}, "sqlglot.tokens.TokenType.ILIKE_ANY": {"tf": 1}, "sqlglot.tokens.TokenType.IN": {"tf": 1}, "sqlglot.tokens.TokenType.INDEX": {"tf": 1}, "sqlglot.tokens.TokenType.INNER": {"tf": 1}, "sqlglot.tokens.TokenType.INSERT": {"tf": 1}, "sqlglot.tokens.TokenType.INTERSECT": {"tf": 1}, "sqlglot.tokens.TokenType.INTERVAL": {"tf": 1}, "sqlglot.tokens.TokenType.INTO": {"tf": 1}, "sqlglot.tokens.TokenType.INTRODUCER": {"tf": 1}, "sqlglot.tokens.TokenType.IRLIKE": {"tf": 1}, "sqlglot.tokens.TokenType.IS": {"tf": 1}, "sqlglot.tokens.TokenType.ISNULL": {"tf": 1}, "sqlglot.tokens.TokenType.JOIN": {"tf": 1}, "sqlglot.tokens.TokenType.JOIN_MARKER": {"tf": 1}, "sqlglot.tokens.TokenType.LANGUAGE": {"tf": 1}, "sqlglot.tokens.TokenType.LATERAL": {"tf": 1}, "sqlglot.tokens.TokenType.LAZY": {"tf": 1}, "sqlglot.tokens.TokenType.LEADING": {"tf": 1}, "sqlglot.tokens.TokenType.LEFT": {"tf": 1}, "sqlglot.tokens.TokenType.LIKE": {"tf": 1}, "sqlglot.tokens.TokenType.LIKE_ANY": {"tf": 1}, "sqlglot.tokens.TokenType.LIMIT": {"tf": 1}, "sqlglot.tokens.TokenType.LOAD_DATA": {"tf": 1}, "sqlglot.tokens.TokenType.LOCAL": {"tf": 1}, "sqlglot.tokens.TokenType.MAP": {"tf": 1}, "sqlglot.tokens.TokenType.MATCH_RECOGNIZE": {"tf": 1}, "sqlglot.tokens.TokenType.MATERIALIZED": {"tf": 1}, "sqlglot.tokens.TokenType.MERGE": {"tf": 1}, "sqlglot.tokens.TokenType.MOD": {"tf": 1}, "sqlglot.tokens.TokenType.NATURAL": {"tf": 1}, "sqlglot.tokens.TokenType.NEXT": {"tf": 1}, "sqlglot.tokens.TokenType.NO_ACTION": {"tf": 1}, "sqlglot.tokens.TokenType.NOTNULL": {"tf": 1}, "sqlglot.tokens.TokenType.NULL": {"tf": 1}, "sqlglot.tokens.TokenType.NULLS_FIRST": {"tf": 1}, "sqlglot.tokens.TokenType.NULLS_LAST": {"tf": 1}, "sqlglot.tokens.TokenType.OFFSET": {"tf": 1}, "sqlglot.tokens.TokenType.ON": {"tf": 1}, "sqlglot.tokens.TokenType.ONLY": {"tf": 1}, "sqlglot.tokens.TokenType.OPTIONS": {"tf": 1}, "sqlglot.tokens.TokenType.ORDER_BY": {"tf": 1}, "sqlglot.tokens.TokenType.ORDERED": {"tf": 1}, "sqlglot.tokens.TokenType.ORDINALITY": {"tf": 1}, "sqlglot.tokens.TokenType.OUTER": {"tf": 1}, "sqlglot.tokens.TokenType.OUT_OF": {"tf": 1}, "sqlglot.tokens.TokenType.OVER": {"tf": 1}, "sqlglot.tokens.TokenType.OVERLAPS": {"tf": 1}, "sqlglot.tokens.TokenType.OVERWRITE": {"tf": 1}, "sqlglot.tokens.TokenType.PARTITION": {"tf": 1}, "sqlglot.tokens.TokenType.PARTITION_BY": {"tf": 1}, "sqlglot.tokens.TokenType.PERCENT": {"tf": 1}, "sqlglot.tokens.TokenType.PIVOT": {"tf": 1}, "sqlglot.tokens.TokenType.PLACEHOLDER": {"tf": 1}, "sqlglot.tokens.TokenType.PRAGMA": {"tf": 1}, "sqlglot.tokens.TokenType.PRECEDING": {"tf": 1}, "sqlglot.tokens.TokenType.PRIMARY_KEY": {"tf": 1}, "sqlglot.tokens.TokenType.PROCEDURE": {"tf": 1}, "sqlglot.tokens.TokenType.PROPERTIES": {"tf": 1}, "sqlglot.tokens.TokenType.PSEUDO_TYPE": {"tf": 1}, "sqlglot.tokens.TokenType.QUALIFY": {"tf": 1}, "sqlglot.tokens.TokenType.QUOTE": {"tf": 1}, "sqlglot.tokens.TokenType.RANGE": {"tf": 1}, "sqlglot.tokens.TokenType.RECURSIVE": {"tf": 1}, "sqlglot.tokens.TokenType.REPLACE": {"tf": 1}, "sqlglot.tokens.TokenType.RESPECT_NULLS": {"tf": 1}, "sqlglot.tokens.TokenType.RETURNING": {"tf": 1}, "sqlglot.tokens.TokenType.REFERENCES": {"tf": 1}, "sqlglot.tokens.TokenType.RIGHT": {"tf": 1}, "sqlglot.tokens.TokenType.RLIKE": {"tf": 1}, "sqlglot.tokens.TokenType.ROLLBACK": {"tf": 1}, "sqlglot.tokens.TokenType.ROLLUP": {"tf": 1}, "sqlglot.tokens.TokenType.ROW": {"tf": 1}, "sqlglot.tokens.TokenType.ROWS": {"tf": 1}, "sqlglot.tokens.TokenType.SEED": {"tf": 1}, "sqlglot.tokens.TokenType.SELECT": {"tf": 1}, "sqlglot.tokens.TokenType.SEMI": {"tf": 1}, "sqlglot.tokens.TokenType.SEPARATOR": {"tf": 1}, "sqlglot.tokens.TokenType.SERDE_PROPERTIES": {"tf": 1}, "sqlglot.tokens.TokenType.SET": {"tf": 1}, "sqlglot.tokens.TokenType.SHOW": {"tf": 1}, "sqlglot.tokens.TokenType.SIMILAR_TO": {"tf": 1}, "sqlglot.tokens.TokenType.SOME": {"tf": 1}, "sqlglot.tokens.TokenType.SORTKEY": {"tf": 1}, "sqlglot.tokens.TokenType.SORT_BY": {"tf": 1}, "sqlglot.tokens.TokenType.STRUCT": {"tf": 1}, "sqlglot.tokens.TokenType.TABLE_SAMPLE": {"tf": 1}, "sqlglot.tokens.TokenType.TEMPORARY": {"tf": 1}, "sqlglot.tokens.TokenType.TOP": {"tf": 1}, "sqlglot.tokens.TokenType.THEN": {"tf": 1}, "sqlglot.tokens.TokenType.TRAILING": {"tf": 1}, "sqlglot.tokens.TokenType.TRUE": {"tf": 1}, "sqlglot.tokens.TokenType.UNBOUNDED": {"tf": 1}, "sqlglot.tokens.TokenType.UNCACHE": {"tf": 1}, "sqlglot.tokens.TokenType.UNION": {"tf": 1}, "sqlglot.tokens.TokenType.UNLOGGED": {"tf": 1}, "sqlglot.tokens.TokenType.UNNEST": {"tf": 1}, "sqlglot.tokens.TokenType.UNPIVOT": {"tf": 1}, "sqlglot.tokens.TokenType.UPDATE": {"tf": 1}, "sqlglot.tokens.TokenType.USE": {"tf": 1}, "sqlglot.tokens.TokenType.USING": {"tf": 1}, "sqlglot.tokens.TokenType.VALUES": {"tf": 1}, "sqlglot.tokens.TokenType.VIEW": {"tf": 1}, "sqlglot.tokens.TokenType.VOLATILE": {"tf": 1}, "sqlglot.tokens.TokenType.WHEN": {"tf": 1}, "sqlglot.tokens.TokenType.WHERE": {"tf": 1}, "sqlglot.tokens.TokenType.WINDOW": {"tf": 1}, "sqlglot.tokens.TokenType.WITH": {"tf": 1}, "sqlglot.tokens.TokenType.WITH_TIME_ZONE": {"tf": 1}, "sqlglot.tokens.TokenType.WITH_LOCAL_TIME_ZONE": {"tf": 1}, "sqlglot.tokens.TokenType.WITHIN_GROUP": {"tf": 1}, "sqlglot.tokens.TokenType.WITHOUT_TIME_ZONE": {"tf": 1}, "sqlglot.tokens.TokenType.UNIQUE": {"tf": 1}}, "df": 297}}}}}}}, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.ToChar": {"tf": 1}, "sqlglot.generator.Generator.tochar_sql": {"tf": 1}}, "df": 2}}}}, "p": {"docs": {"sqlglot.tokens.TokenType.TOP": {"tf": 1}}, "df": 1}}, "s": {"docs": {"sqlglot.dialects.dialect.ts_or_ds_to_date_sql": {"tf": 1}}, "df": 1, "q": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.dialects.dialect.Dialects.TSQL": {"tf": 1}, "sqlglot.dialects.tsql.TSQL": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Tokenizer": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator.offset_sql": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator.systemtime_sql": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator.returnsproperty_sql": {"tf": 1}}, "df": 8}}, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.TsOrDsAdd": {"tf": 1}}, "df": 1}}}, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.TsOrDsToDate": {"tf": 1}}, "df": 1, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.TsOrDsToDateStr": {"tf": 1}}, "df": 1}}}}}}}}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {"sqlglot.expressions.TsOrDiToDi": {"tf": 1}}, "df": 1}}}}}}, "t": {"docs": {"sqlglot.helper.tsort": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.dialects.dialect.Dialects.TERADATA": {"tf": 1}, "sqlglot.dialects.teradata.Teradata": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Tokenizer": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.partitionedbyproperty_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.update_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.mod_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.rangen_sql": {"tf": 1}}, "df": 10}}}}}}, "x": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.Expression.text": {"tf": 1}, "sqlglot.expressions.DataType.Type.TEXT": {"tf": 1}, "sqlglot.generator.Generator.text_width": {"tf": 1}, "sqlglot.optimizer.canonicalize.add_text_to_concat": {"tf": 1}, "sqlglot.tokens.TokenType.TEXT": {"tf": 1}}, "df": 5}}, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.tokens.TokenType.TEMPORARY": {"tf": 1}}, "df": 1, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.TemporaryProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.Dialect.format_time": {"tf": 1}, "sqlglot.dialects.dialect.format_time_lambda": {"tf": 1}, "sqlglot.dialects.dialect.date_trunc_to_time": {"tf": 1}, "sqlglot.dialects.dialect.str_to_time_sql": {"tf": 1}, "sqlglot.expressions.DataType.Type.TIME": {"tf": 1}, "sqlglot.generator.Generator.format_time": {"tf": 1}, "sqlglot.time.format_time": {"tf": 1}, "sqlglot.tokens.TokenType.TIME": {"tf": 1}, "sqlglot.tokens.TokenType.AT_TIME_ZONE": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_TIME": {"tf": 1}, "sqlglot.tokens.TokenType.WITH_TIME_ZONE": {"tf": 1}, "sqlglot.tokens.TokenType.WITH_LOCAL_TIME_ZONE": {"tf": 1}, "sqlglot.tokens.TokenType.WITHOUT_TIME_ZONE": {"tf": 1}}, "df": 13, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.expressions.DataType.Type.TIMESTAMP": {"tf": 1}, "sqlglot.tokens.TokenType.TIMESTAMP": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_TIMESTAMP": {"tf": 1}}, "df": 3, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot.dialects.dialect.timestamptrunc_sql": {"tf": 1}, "sqlglot.expressions.TimestampTrunc": {"tf": 1}}, "df": 2}}}}, "z": {"docs": {"sqlglot.expressions.DataType.Type.TIMESTAMPTZ": {"tf": 1}, "sqlglot.tokens.TokenType.TIMESTAMPTZ": {"tf": 1}}, "df": 2}}, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "z": {"docs": {"sqlglot.expressions.DataType.Type.TIMESTAMPLTZ": {"tf": 1}, "sqlglot.tokens.TokenType.TIMESTAMPLTZ": {"tf": 1}}, "df": 2}}}, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.TimestampAdd": {"tf": 1}}, "df": 1}}}, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "b": {"docs": {"sqlglot.expressions.TimestampSub": {"tf": 1}}, "df": 1}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "f": {"docs": {"sqlglot.expressions.TimestampDiff": {"tf": 1}}, "df": 1}}}}}}}, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.timestrtotime_sql": {"tf": 1}, "sqlglot.expressions.TimeStrToTime": {"tf": 1}}, "df": 2}}}}, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.TimeStrToDate": {"tf": 1}}, "df": 1}}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "x": {"docs": {"sqlglot.expressions.TimeStrToUnix": {"tf": 1}}, "df": 1}}}}}}}}, "u": {"docs": {}, "df": 0, "b": {"docs": {"sqlglot.expressions.TimeSub": {"tf": 1}}, "df": 1}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.TimeUnit": {"tf": 1}, "sqlglot.expressions.TimeUnit.__init__": {"tf": 1}}, "df": 2}}}}, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.TimeAdd": {"tf": 1}}, "df": 1}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "f": {"docs": {"sqlglot.expressions.TimeDiff": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot.expressions.TimeTrunc": {"tf": 1}}, "df": 1}}}}, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.TimeToStr": {"tf": 1}}, "df": 1}}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.TimeToTimeStr": {"tf": 1}}, "df": 1}}}}}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "x": {"docs": {"sqlglot.expressions.TimeToUnix": {"tf": 1}}, "df": 1}}}}}}}}, "t": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.TitleColumnConstraint": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}, "n": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.DataType.Type.TINYINT": {"tf": 1}, "sqlglot.tokens.TokenType.TINYINT": {"tf": 1}}, "df": 2}}}}}, "l": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.tokens.TokenType.TILDA": {"tf": 1}}, "df": 1}}}}, "u": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.executor.context.Context.eval_tuple": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.generate_tuple": {"tf": 1}, "sqlglot.expressions.Tuple": {"tf": 1}, "sqlglot.generator.Generator.tuple_sql": {"tf": 1}}, "df": 4}}}}, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.Expression.this": {"tf": 1}}, "df": 1}}, "e": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.tokens.TokenType.THEN": {"tf": 1}}, "df": 1}}}, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.DataType.Type": {"tf": 1}, "sqlglot.expressions.DataType.Type.CHAR": {"tf": 1}, "sqlglot.expressions.DataType.Type.NCHAR": {"tf": 1}, "sqlglot.expressions.DataType.Type.VARCHAR": {"tf": 1}, "sqlglot.expressions.DataType.Type.NVARCHAR": {"tf": 1}, "sqlglot.expressions.DataType.Type.TEXT": {"tf": 1}, "sqlglot.expressions.DataType.Type.MEDIUMTEXT": {"tf": 1}, "sqlglot.expressions.DataType.Type.LONGTEXT": {"tf": 1}, "sqlglot.expressions.DataType.Type.MEDIUMBLOB": {"tf": 1}, "sqlglot.expressions.DataType.Type.LONGBLOB": {"tf": 1}, "sqlglot.expressions.DataType.Type.BINARY": {"tf": 1}, "sqlglot.expressions.DataType.Type.VARBINARY": {"tf": 1}, "sqlglot.expressions.DataType.Type.INT": {"tf": 1}, "sqlglot.expressions.DataType.Type.UINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.TINYINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.UTINYINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.SMALLINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.USMALLINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.BIGINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.UBIGINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.FLOAT": {"tf": 1}, "sqlglot.expressions.DataType.Type.DOUBLE": {"tf": 1}, "sqlglot.expressions.DataType.Type.DECIMAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.BIT": {"tf": 1}, "sqlglot.expressions.DataType.Type.BOOLEAN": {"tf": 1}, "sqlglot.expressions.DataType.Type.JSON": {"tf": 1}, "sqlglot.expressions.DataType.Type.JSONB": {"tf": 1}, "sqlglot.expressions.DataType.Type.INTERVAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.TIME": {"tf": 1}, "sqlglot.expressions.DataType.Type.TIMESTAMP": {"tf": 1}, "sqlglot.expressions.DataType.Type.TIMESTAMPTZ": {"tf": 1}, "sqlglot.expressions.DataType.Type.TIMESTAMPLTZ": {"tf": 1}, "sqlglot.expressions.DataType.Type.DATE": {"tf": 1}, "sqlglot.expressions.DataType.Type.DATETIME": {"tf": 1}, "sqlglot.expressions.DataType.Type.ARRAY": {"tf": 1}, "sqlglot.expressions.DataType.Type.MAP": {"tf": 1}, "sqlglot.expressions.DataType.Type.UUID": {"tf": 1}, "sqlglot.expressions.DataType.Type.GEOGRAPHY": {"tf": 1}, "sqlglot.expressions.DataType.Type.GEOMETRY": {"tf": 1}, "sqlglot.expressions.DataType.Type.STRUCT": {"tf": 1}, "sqlglot.expressions.DataType.Type.NULLABLE": {"tf": 1}, "sqlglot.expressions.DataType.Type.HLLSKETCH": {"tf": 1}, "sqlglot.expressions.DataType.Type.HSTORE": {"tf": 1}, "sqlglot.expressions.DataType.Type.SUPER": {"tf": 1}, "sqlglot.expressions.DataType.Type.SERIAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.SMALLSERIAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.BIGSERIAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.XML": {"tf": 1}, "sqlglot.expressions.DataType.Type.UNIQUEIDENTIFIER": {"tf": 1}, "sqlglot.expressions.DataType.Type.MONEY": {"tf": 1}, "sqlglot.expressions.DataType.Type.SMALLMONEY": {"tf": 1}, "sqlglot.expressions.DataType.Type.ROWVERSION": {"tf": 1}, "sqlglot.expressions.DataType.Type.IMAGE": {"tf": 1}, "sqlglot.expressions.DataType.Type.VARIANT": {"tf": 1}, "sqlglot.expressions.DataType.Type.OBJECT": {"tf": 1}, "sqlglot.expressions.DataType.Type.INET": {"tf": 1}, "sqlglot.expressions.DataType.Type.NULL": {"tf": 1}, "sqlglot.expressions.DataType.Type.UNKNOWN": {"tf": 1}, "sqlglot.expressions.DataType.is_type": {"tf": 1}, "sqlglot.expressions.Cast.is_type": {"tf": 1}, "sqlglot.optimizer.canonicalize.coerce_type": {"tf": 1}, "sqlglot.schema.Schema.get_column_type": {"tf": 1}, "sqlglot.schema.MappingSchema.get_column_type": {"tf": 1}, "sqlglot.tokens.TokenType.PSEUDO_TYPE": {"tf": 1}}, "df": 64, "s": {"docs": {"sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}, "sqlglot.transforms.remove_precision_parameterized_types": {"tf": 1}}, "df": 2}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.optimizer.annotate_types.TypeAnnotator": {"tf": 1}, "sqlglot.optimizer.annotate_types.TypeAnnotator.__init__": {"tf": 1}, "sqlglot.optimizer.annotate_types.TypeAnnotator.annotate": {"tf": 1}}, "df": 3}}}}}}}}}}}}}, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1}, "sqlglot.expressions.Create": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_CREATE": {"tf": 1}, "sqlglot.generator.Generator.create_sql": {"tf": 1}, "sqlglot.tokens.TokenType.CREATE": {"tf": 1}}, "df": 5, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.SparkSession.createDataFrame": {"tf": 1}}, "df": 1}}}}}}}}}}}}}, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.tokens.TokenType.CROSS": {"tf": 1}}, "df": 1}}}}, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dataframe.sql.DataFrame.copy": {"tf": 1}, "sqlglot.dataframe.sql.Column.copy": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.copy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.copy": {"tf": 1}, "sqlglot.expressions.Expression.copy": {"tf": 1}, "sqlglot.schema.MappingSchema.copy": {"tf": 1}}, "df": 6}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.DataFrame.coalesce": {"tf": 1}, "sqlglot.expressions.Coalesce": {"tf": 1}}, "df": 2}}}}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe.sql.GroupedData.count": {"tf": 1}, "sqlglot.dialects.dialect.approx_count_distinct_sql": {"tf": 1}, "sqlglot.dialects.dialect.count_if_to_sum": {"tf": 1}, "sqlglot.expressions.Count": {"tf": 1}, "sqlglot.helper.count_params": {"tf": 1}, "sqlglot.optimizer.scope.Scope.ref_count": {"tf": 1}}, "df": 6, "i": {"docs": {}, "df": 0, "f": {"docs": {"sqlglot.expressions.CountIf": {"tf": 1}}, "df": 1}}}}}, "l": {"docs": {"sqlglot.dataframe.sql.Column.ensure_col": {"tf": 1}}, "df": 1, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dataframe.sql.Column": {"tf": 1}, "sqlglot.dataframe.sql.Column.__init__": {"tf": 1}, "sqlglot.dataframe.sql.Column.ensure_col": {"tf": 1}, "sqlglot.dataframe.sql.Column.ensure_cols": {"tf": 1}, "sqlglot.dataframe.sql.Column.invoke_anonymous_function": {"tf": 1}, "sqlglot.dataframe.sql.Column.invoke_expression_over_column": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.binary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.inverse_binary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.unary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.ensure_literal": {"tf": 1}, "sqlglot.dataframe.sql.Column.copy": {"tf": 1}, "sqlglot.dataframe.sql.Column.set_table_name": {"tf": 1}, "sqlglot.dataframe.sql.Column.sql": {"tf": 1}, "sqlglot.dataframe.sql.Column.alias": {"tf": 1}, "sqlglot.dataframe.sql.Column.asc": {"tf": 1}, "sqlglot.dataframe.sql.Column.desc": {"tf": 1}, "sqlglot.dataframe.sql.Column.asc_nulls_first": {"tf": 1}, "sqlglot.dataframe.sql.Column.asc_nulls_last": {"tf": 1}, "sqlglot.dataframe.sql.Column.desc_nulls_first": {"tf": 1}, "sqlglot.dataframe.sql.Column.desc_nulls_last": {"tf": 1}, "sqlglot.dataframe.sql.Column.when": {"tf": 1}, "sqlglot.dataframe.sql.Column.otherwise": {"tf": 1}, "sqlglot.dataframe.sql.Column.isNull": {"tf": 1}, "sqlglot.dataframe.sql.Column.isNotNull": {"tf": 1}, "sqlglot.dataframe.sql.Column.cast": {"tf": 1}, "sqlglot.dataframe.sql.Column.startswith": {"tf": 1}, "sqlglot.dataframe.sql.Column.endswith": {"tf": 1}, "sqlglot.dataframe.sql.Column.rlike": {"tf": 1}, "sqlglot.dataframe.sql.Column.like": {"tf": 1}, "sqlglot.dataframe.sql.Column.ilike": {"tf": 1}, "sqlglot.dataframe.sql.Column.substr": {"tf": 1}, "sqlglot.dataframe.sql.Column.isin": {"tf": 1}, "sqlglot.dataframe.sql.Column.between": {"tf": 1}, "sqlglot.dataframe.sql.Column.over": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator.column_sql": {"tf": 1}, "sqlglot.expressions.Column": {"tf": 1}, "sqlglot.expressions.Column.output_name": {"tf": 1}, "sqlglot.expressions.Column.parts": {"tf": 1}, "sqlglot.expressions.Column.to_dot": {"tf": 1}, "sqlglot.expressions.to_column": {"tf": 1}, "sqlglot.expressions.column": {"tf": 1}, "sqlglot.expressions.column_table_names": {"tf": 1}, "sqlglot.generator.Generator.column_sql": {"tf": 1}, "sqlglot.schema.Schema.column_names": {"tf": 1}, "sqlglot.schema.Schema.get_column_type": {"tf": 1}, "sqlglot.schema.MappingSchema.column_names": {"tf": 1}, "sqlglot.schema.MappingSchema.get_column_type": {"tf": 1}, "sqlglot.schema.ensure_column_mapping": {"tf": 1}, "sqlglot.tokens.TokenType.COLUMN": {"tf": 1}, "sqlglot.tokens.TokenType.COLUMN_DEF": {"tf": 1}}, "df": 50, "s": {"docs": {"sqlglot.executor.context.Context.add_columns": {"tf": 1}, "sqlglot.executor.table.Table.add_columns": {"tf": 1}, "sqlglot.optimizer.qualify_columns.qualify_columns": {"tf": 1}, "sqlglot.optimizer.qualify_columns.validate_qualify_columns": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.all_columns": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.get_source_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.external_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.unqualified_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.source_columns": {"tf": 1}}, "df": 10}, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.ColumnPosition": {"tf": 1}, "sqlglot.generator.Generator.columnposition_sql": {"tf": 1}}, "df": 2}}}}}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "f": {"docs": {"sqlglot.expressions.ColumnDef": {"tf": 1}, "sqlglot.generator.Generator.columndef_sql": {"tf": 1}}, "df": 2}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.ColumnConstraint": {"tf": 1}, "sqlglot.generator.Generator.columnconstraint_sql": {"tf": 1}}, "df": 2, "k": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.ColumnConstraintKind": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}, "s": {"docs": {"sqlglot.dataframe.sql.Column.ensure_cols": {"tf": 1}}, "df": 1}, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Collate": {"tf": 1}, "sqlglot.generator.Generator.collate_sql": {"tf": 1}, "sqlglot.tokens.TokenType.COLLATE": {"tf": 1}}, "df": 3, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.CollateColumnConstraint": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.CollateProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.helper.ensure_collection": {"tf": 1}}, "df": 1}}}}}}}, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.tokens.TokenType.COLON": {"tf": 1}}, "df": 1}}}, "m": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator.commit_sql": {"tf": 1}, "sqlglot.expressions.Commit": {"tf": 1}, "sqlglot.generator.Generator.commit_sql": {"tf": 1}, "sqlglot.tokens.TokenType.COMMIT": {"tf": 1}}, "df": 4}}, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.Comment": {"tf": 1}, "sqlglot.generator.Generator.pad_comment": {"tf": 1}, "sqlglot.generator.Generator.maybe_comment": {"tf": 1}, "sqlglot.generator.Generator.comment_sql": {"tf": 1}, "sqlglot.tokens.TokenType.COMMENT": {"tf": 1}}, "df": 5, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.CommentColumnConstraint": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}, "a": {"docs": {"sqlglot.tokens.TokenType.COMMA": {"tf": 1}}, "df": 1, "n": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.Command": {"tf": 1}, "sqlglot.generator.Generator.command_sql": {"tf": 1}, "sqlglot.tokens.TokenType.COMMAND": {"tf": 1}}, "df": 3}}}}, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.CompressColumnConstraint": {"tf": 1}, "sqlglot.generator.Generator.compresscolumnconstraint_sql": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}}}}}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.optimizer.simplify.remove_compliments": {"tf": 1}}, "df": 1}}}}}}, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.optimizer.simplify.is_complement": {"tf": 1}}, "df": 1}}}}}}, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.tokens.TokenType.COMPOUND": {"tf": 1}}, "df": 1}}}}}}, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.errors.concat_messages": {"tf": 1}, "sqlglot.expressions.Concat": {"tf": 1}, "sqlglot.generator.Generator.concat_sql": {"tf": 1}, "sqlglot.optimizer.canonicalize.add_text_to_concat": {"tf": 1}}, "df": 4, "w": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.ConcatWs": {"tf": 1}}, "df": 1}}}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.executor.context.Context": {"tf": 1}, "sqlglot.executor.context.Context.__init__": {"tf": 1}, "sqlglot.executor.context.Context.eval": {"tf": 1}, "sqlglot.executor.context.Context.eval_tuple": {"tf": 1}, "sqlglot.executor.context.Context.add_columns": {"tf": 1}, "sqlglot.executor.context.Context.table_iter": {"tf": 1}, "sqlglot.executor.context.Context.filter": {"tf": 1}, "sqlglot.executor.context.Context.sort": {"tf": 1}, "sqlglot.executor.context.Context.set_row": {"tf": 1}, "sqlglot.executor.context.Context.set_index": {"tf": 1}, "sqlglot.executor.context.Context.set_range": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.context": {"tf": 1}}, "df": 12}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.Condition": {"tf": 1}, "sqlglot.expressions.Condition.and_": {"tf": 1}, "sqlglot.expressions.Condition.or_": {"tf": 1}, "sqlglot.expressions.Condition.not_": {"tf": 1}, "sqlglot.expressions.condition": {"tf": 1}, "sqlglot.optimizer.eliminate_joins.join_condition": {"tf": 1}}, "df": 6}}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.Constraint": {"tf": 1}, "sqlglot.generator.Generator.constraint_sql": {"tf": 1}, "sqlglot.tokens.TokenType.CONSTRAINT": {"tf": 1}}, "df": 3}}}}}}}, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.Connector": {"tf": 1}, "sqlglot.generator.Generator.connector_sql": {"tf": 1}}, "df": 2, "s": {"docs": {"sqlglot.optimizer.simplify.simplify_connectors": {"tf": 1}}, "df": 1}}}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.convert": {"tf": 1}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.canonicalize.coerce_type": {"tf": 1}}, "df": 1}}}}, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.optimizer.scope.Scope.is_correlated_subquery": {"tf": 1}}, "df": 1}}}}}}}}}, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.DataFrame.cache": {"tf": 1}, "sqlglot.expressions.Cache": {"tf": 1}, "sqlglot.generator.Generator.cache_sql": {"tf": 1}, "sqlglot.optimizer.scope.Scope.clear_cache": {"tf": 1}, "sqlglot.tokens.TokenType.CACHE": {"tf": 1}}, "df": 5}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe.sql.Column.cast": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator.cast_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.cast_sql": {"tf": 1}, "sqlglot.executor.env.cast": {"tf": 1}, "sqlglot.expressions.Cast": {"tf": 1}, "sqlglot.expressions.Cast.output_name": {"tf": 1}, "sqlglot.expressions.Cast.is_type": {"tf": 1}, "sqlglot.expressions.cast": {"tf": 1}, "sqlglot.generator.Generator.cast_sql": {"tf": 1}}, "df": 9, "s": {"docs": {"sqlglot.optimizer.canonicalize.remove_redundant_casts": {"tf": 1}}, "df": 1}}, "e": {"docs": {"sqlglot.expressions.Case": {"tf": 1}, "sqlglot.generator.Generator.case_sql": {"tf": 1}, "sqlglot.helper.camel_to_snake_case": {"tf": 1}, "sqlglot.tokens.TokenType.CASE": {"tf": 1}}, "df": 4, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.CaseSpecificColumnConstraint": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}}}}}}, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.CASCADE": {"tf": 1}}, "df": 1}}}}}, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.helper.camel_to_snake_case": {"tf": 1}}, "df": 1}}}, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.canonicalize.canonicalize": {"tf": 1}}, "df": 1}}}}}}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.CARET": {"tf": 1}}, "df": 1}}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.clickhouse.ClickHouse": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Tokenizer": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator.cte_sql": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.CLICKHOUSE": {"tf": 1}}, "df": 6}}}}}}}}, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.Cluster": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.generator.Generator.cluster_sql": {"tf": 1}, "sqlglot.tokens.TokenType.CLUSTER_BY": {"tf": 1}}, "df": 4}}}}}, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.optimizer.scope.Scope.clear_cache": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.clickhouse.ClickHouse.Generator.cte_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_recursive_cte_sql": {"tf": 1}, "sqlglot.expressions.CTE": {"tf": 1}, "sqlglot.generator.Generator.cte_sql": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.CTE": {"tf": 1}, "sqlglot.optimizer.scope.Scope.cte_sources": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_cte": {"tf": 1}}, "df": 7, "s": {"docs": {"sqlglot.generator.Generator.prepend_ctes": {"tf": 1}, "sqlglot.optimizer.eliminate_ctes.eliminate_ctes": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_ctes": {"tf": 1}, "sqlglot.optimizer.scope.Scope.ctes": {"tf": 1}}, "df": 4}}, "a": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.Select.ctas": {"tf": 1}}, "df": 1}}}, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.dialect.no_paren_current_date_sql": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_DATE": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_DATETIME": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_ROW": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_TIME": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_TIMESTAMP": {"tf": 1}}, "df": 6, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.CurrentDate": {"tf": 1}, "sqlglot.generator.Generator.currentdate_sql": {"tf": 1}}, "df": 2, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.CurrentDatetime": {"tf": 1}}, "df": 1}}}}}}}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.CurrentTime": {"tf": 1}}, "df": 1, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.expressions.CurrentTimestamp": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "b": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.CUBE": {"tf": 1}}, "df": 1}}}, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.diff.ChangeDistiller": {"tf": 1}, "sqlglot.diff.ChangeDistiller.__init__": {"tf": 1}, "sqlglot.diff.ChangeDistiller.diff": {"tf": 1}}, "df": 3}}}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.helper.while_changing": {"tf": 1}}, "df": 1}}}}}, "r": {"docs": {"sqlglot.expressions.DataType.Type.CHAR": {"tf": 1}, "sqlglot.tokens.TokenType.CHAR": {"tf": 1}}, "df": 2, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.tokens.TokenType.CHARACTER_SET": {"tf": 1}}, "df": 1, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.CharacterSet": {"tf": 1}, "sqlglot.generator.Generator.characterset_sql": {"tf": 1}}, "df": 2, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.CharacterSetColumnConstraint": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.CharacterSetProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.expressions.Check": {"tf": 1}, "sqlglot.generator.Generator.check_sql": {"tf": 1}, "sqlglot.parser.Parser.check_errors": {"tf": 1}}, "df": 3, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.CheckColumnConstraint": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.ChecksumProperty": {"tf": 1}, "sqlglot.generator.Generator.checksumproperty_sql": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.replace_children": {"tf": 1}}, "df": 1}}}}}}}, "s": {"docs": {}, "df": 0, "v": {"docs": {"sqlglot.executor.python.PythonExecutor.scan_csv": {"tf": 1}, "sqlglot.helper.csv": {"tf": 1}, "sqlglot.helper.csv_reader": {"tf": 1}}, "df": 3}}, "e": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.expressions.Ceil": {"tf": 1}}, "df": 1}}}, "n": {"docs": {}, "df": 0, "f": {"docs": {"sqlglot.optimizer.pushdown_predicates.pushdown_cnf": {"tf": 1}}, "df": 1}}}, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.tokens.TokenType.LOAD_DATA": {"tf": 1}}, "df": 1, "f": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.DataFrame": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sql": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.copy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.select": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.alias": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.where": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.filter": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.groupBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.agg": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.join": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.union": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.unionAll": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.unionByName": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.intersect": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.intersectAll": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.exceptAll": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.distinct": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.dropDuplicates": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.dropna": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.replace": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.withColumn": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.withColumnRenamed": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.drop": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.limit": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.hint": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.repartition": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.coalesce": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.cache": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.persist": {"tf": 1}}, "df": 33, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dataframe.sql.DataFrameNaFunctions": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.drop": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.fill": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.replace": {"tf": 1}}, "df": 5}}}}}}}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dataframe.sql.DataFrameReader": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameReader.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameReader.table": {"tf": 1}}, "df": 3}}}}}}, "w": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dataframe.sql.DataFrameWriter": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.copy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.sql": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.mode": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.insertInto": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.saveAsTable": {"tf": 1}}, "df": 7}}}}}}}}}}}, "b": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dialects.databricks.Databricks": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Tokenizer": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.DATABRICKS": {"tf": 1}}, "df": 5}}}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.DataBlocksizeProperty": {"tf": 1}, "sqlglot.generator.Generator.datablocksizeproperty_sql": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}}}, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.DATABASE": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.hive.Hive.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.datatype_sql": {"tf": 1}, "sqlglot.expressions.DataType": {"tf": 1}, "sqlglot.expressions.DataType.Type": {"tf": 1}, "sqlglot.expressions.DataType.Type.CHAR": {"tf": 1}, "sqlglot.expressions.DataType.Type.NCHAR": {"tf": 1}, "sqlglot.expressions.DataType.Type.VARCHAR": {"tf": 1}, "sqlglot.expressions.DataType.Type.NVARCHAR": {"tf": 1}, "sqlglot.expressions.DataType.Type.TEXT": {"tf": 1}, "sqlglot.expressions.DataType.Type.MEDIUMTEXT": {"tf": 1}, "sqlglot.expressions.DataType.Type.LONGTEXT": {"tf": 1}, "sqlglot.expressions.DataType.Type.MEDIUMBLOB": {"tf": 1}, "sqlglot.expressions.DataType.Type.LONGBLOB": {"tf": 1}, "sqlglot.expressions.DataType.Type.BINARY": {"tf": 1}, "sqlglot.expressions.DataType.Type.VARBINARY": {"tf": 1}, "sqlglot.expressions.DataType.Type.INT": {"tf": 1}, "sqlglot.expressions.DataType.Type.UINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.TINYINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.UTINYINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.SMALLINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.USMALLINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.BIGINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.UBIGINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.FLOAT": {"tf": 1}, "sqlglot.expressions.DataType.Type.DOUBLE": {"tf": 1}, "sqlglot.expressions.DataType.Type.DECIMAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.BIT": {"tf": 1}, "sqlglot.expressions.DataType.Type.BOOLEAN": {"tf": 1}, "sqlglot.expressions.DataType.Type.JSON": {"tf": 1}, "sqlglot.expressions.DataType.Type.JSONB": {"tf": 1}, "sqlglot.expressions.DataType.Type.INTERVAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.TIME": {"tf": 1}, "sqlglot.expressions.DataType.Type.TIMESTAMP": {"tf": 1}, "sqlglot.expressions.DataType.Type.TIMESTAMPTZ": {"tf": 1}, "sqlglot.expressions.DataType.Type.TIMESTAMPLTZ": {"tf": 1}, "sqlglot.expressions.DataType.Type.DATE": {"tf": 1}, "sqlglot.expressions.DataType.Type.DATETIME": {"tf": 1}, "sqlglot.expressions.DataType.Type.ARRAY": {"tf": 1}, "sqlglot.expressions.DataType.Type.MAP": {"tf": 1}, "sqlglot.expressions.DataType.Type.UUID": {"tf": 1}, "sqlglot.expressions.DataType.Type.GEOGRAPHY": {"tf": 1}, "sqlglot.expressions.DataType.Type.GEOMETRY": {"tf": 1}, "sqlglot.expressions.DataType.Type.STRUCT": {"tf": 1}, "sqlglot.expressions.DataType.Type.NULLABLE": {"tf": 1}, "sqlglot.expressions.DataType.Type.HLLSKETCH": {"tf": 1}, "sqlglot.expressions.DataType.Type.HSTORE": {"tf": 1}, "sqlglot.expressions.DataType.Type.SUPER": {"tf": 1}, "sqlglot.expressions.DataType.Type.SERIAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.SMALLSERIAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.BIGSERIAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.XML": {"tf": 1}, "sqlglot.expressions.DataType.Type.UNIQUEIDENTIFIER": {"tf": 1}, "sqlglot.expressions.DataType.Type.MONEY": {"tf": 1}, "sqlglot.expressions.DataType.Type.SMALLMONEY": {"tf": 1}, "sqlglot.expressions.DataType.Type.ROWVERSION": {"tf": 1}, "sqlglot.expressions.DataType.Type.IMAGE": {"tf": 1}, "sqlglot.expressions.DataType.Type.VARIANT": {"tf": 1}, "sqlglot.expressions.DataType.Type.OBJECT": {"tf": 1}, "sqlglot.expressions.DataType.Type.INET": {"tf": 1}, "sqlglot.expressions.DataType.Type.NULL": {"tf": 1}, "sqlglot.expressions.DataType.Type.UNKNOWN": {"tf": 1}, "sqlglot.expressions.DataType.build": {"tf": 1}, "sqlglot.expressions.DataType.is_type": {"tf": 1}, "sqlglot.generator.Generator.datatype_sql": {"tf": 1}}, "df": 65}}}}}, "e": {"docs": {"sqlglot.dialects.dialect.no_paren_current_date_sql": {"tf": 1}, "sqlglot.dialects.dialect.parse_date_delta": {"tf": 1}, "sqlglot.dialects.dialect.date_trunc_to_time": {"tf": 1}, "sqlglot.dialects.dialect.ts_or_ds_to_date_sql": {"tf": 1}, "sqlglot.dialects.tsql.generate_date_delta_with_unit_sql": {"tf": 1}, "sqlglot.expressions.DataType.Type.DATE": {"tf": 1}, "sqlglot.optimizer.simplify.extract_date": {"tf": 1}, "sqlglot.optimizer.simplify.date_literal": {"tf": 1}, "sqlglot.tokens.TokenType.DATE": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_DATE": {"tf": 1}}, "df": 10, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.datestrtodate_sql": {"tf": 1}, "sqlglot.expressions.DateStrToDate": {"tf": 1}}, "df": 2}}}}}}}}, "u": {"docs": {}, "df": 0, "b": {"docs": {"sqlglot.expressions.DateSub": {"tf": 1}}, "df": 1}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "f": {"docs": {"sqlglot.dialects.sqlite.SQLite.Generator.datediff_sql": {"tf": 1}, "sqlglot.expressions.DateDiff": {"tf": 1}}, "df": 2}}}}, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.DateFormatColumnConstraint": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.DateFromParts": {"tf": 1}}, "df": 1}}}}}}}}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.DataType.Type.DATETIME": {"tf": 1}, "sqlglot.tokens.TokenType.DATETIME": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_DATETIME": {"tf": 1}}, "df": 3, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.DatetimeAdd": {"tf": 1}}, "df": 1}}}, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "b": {"docs": {"sqlglot.expressions.DatetimeSub": {"tf": 1}}, "df": 1}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "f": {"docs": {"sqlglot.expressions.DatetimeDiff": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot.expressions.DatetimeTrunc": {"tf": 1}}, "df": 1}}}}}}}}, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot.expressions.DateTrunc": {"tf": 1}}, "df": 1}}}}, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.DateToDateStr": {"tf": 1}}, "df": 1}}}}}}, "i": {"docs": {"sqlglot.expressions.DateToDi": {"tf": 1}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.DateAdd": {"tf": 1}}, "df": 1}}}}}, "y": {"docs": {"sqlglot.expressions.Day": {"tf": 1}}, "df": 1, "o": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.expressions.DayOfWeek": {"tf": 1}}, "df": 1}}}}, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.expressions.DayOfMonth": {"tf": 1}}, "df": 1}}}}}, "y": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.DayOfYear": {"tf": 1}}, "df": 1}}}}}}}, "s": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.tokens.TokenType.DASH": {"tf": 1}}, "df": 1}}, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {"sqlglot.tokens.TokenType.DARROW": {"tf": 1}}, "df": 1}}}}, "m": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.tokens.TokenType.DAMP": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe.sql.DataFrame.distinct": {"tf": 1}, "sqlglot.dialects.dialect.approx_count_distinct_sql": {"tf": 1}, "sqlglot.expressions.Select.distinct": {"tf": 1}, "sqlglot.expressions.Distinct": {"tf": 1}, "sqlglot.generator.Generator.distinct_sql": {"tf": 1}, "sqlglot.tokens.TokenType.DISTINCT": {"tf": 1}, "sqlglot.tokens.TokenType.DISTINCT_FROM": {"tf": 1}, "sqlglot.transforms.eliminate_distinct_on": {"tf": 1}}, "df": 8}}}}, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Distribute": {"tf": 1}, "sqlglot.generator.Generator.distribute_sql": {"tf": 1}, "sqlglot.tokens.TokenType.DISTRIBUTE_BY": {"tf": 1}}, "df": 3}, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.normalize.distributive_law": {"tf": 1}}, "df": 1}}}}}}}}, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.DistKeyProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.DistStyleProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Distance": {"tf": 1}, "sqlglot.generator.Generator.distance_sql": {"tf": 1}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1}}, "df": 3}}}}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.dialect.Dialects.DIALECT": {"tf": 1}, "sqlglot.dialects.dialect.Dialect": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.get_or_raise": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.format_time": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.parse": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.parse_into": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.generate": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.transpile": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.tokenize": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.parser": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.generator": {"tf": 1}}, "df": 11, "s": {"docs": {"sqlglot.dialects.dialect.Dialects": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.DIALECT": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.BIGQUERY": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.CLICKHOUSE": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.DUCKDB": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.HIVE": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.MYSQL": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.ORACLE": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.POSTGRES": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.PRESTO": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.REDSHIFT": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.SNOWFLAKE": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.SPARK": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.SQLITE": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.STARROCKS": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.TABLEAU": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.TRINO": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.TSQL": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.DATABRICKS": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.DRILL": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.TERADATA": {"tf": 1}}, "df": 21}}}}}}, "v": {"docs": {"sqlglot.expressions.Div": {"tf": 1}, "sqlglot.generator.Generator.div_sql": {"tf": 1}, "sqlglot.tokens.TokenType.DIV": {"tf": 1}}, "df": 3, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.no_safe_divide_sql": {"tf": 1}}, "df": 1}}}}, "f": {"docs": {}, "df": 0, "f": {"docs": {"sqlglot.diff.diff": {"tf": 1}, "sqlglot.diff.ChangeDistiller.diff": {"tf": 1}}, "df": 2}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.Directory": {"tf": 1}, "sqlglot.generator.Generator.directory_sql": {"tf": 1}}, "df": 2}}}}}}}, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.Properties.from_dict": {"tf": 1}, "sqlglot.helper.object_to_dict": {"tf": 1}, "sqlglot.helper.dict_depth": {"tf": 1}}, "df": 3}}, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.DiToDate": {"tf": 1}}, "df": 1}}}}}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.dataframe.sql.DataFrame.drop": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.drop": {"tf": 1}, "sqlglot.expressions.Drop": {"tf": 1}, "sqlglot.generator.Generator.drop_sql": {"tf": 1}, "sqlglot.tokens.TokenType.DROP": {"tf": 1}}, "df": 5, "d": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dataframe.sql.DataFrame.dropDuplicates": {"tf": 1}}, "df": 1}}}}}}}}}}, "n": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.dataframe.sql.DataFrame.dropna": {"tf": 1}}, "df": 1}}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.DropPartition": {"tf": 1}, "sqlglot.generator.Generator.droppartition_sql": {"tf": 1}}, "df": 2}}}}}}}}}}}, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.dialects.dialect.Dialects.DRILL": {"tf": 1}, "sqlglot.dialects.drill.Drill": {"tf": 1}, "sqlglot.dialects.drill.Drill.Tokenizer": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator.normalize_func": {"tf": 1}}, "df": 6}}}}, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot.dataframe.sql.Column.desc": {"tf": 1}, "sqlglot.dataframe.sql.Column.desc_nulls_first": {"tf": 1}, "sqlglot.dataframe.sql.Column.desc_nulls_last": {"tf": 1}, "sqlglot.tokens.TokenType.DESC": {"tf": 1}}, "df": 4, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.snowflake.Snowflake.Generator.describe_sql": {"tf": 1}, "sqlglot.expressions.Describe": {"tf": 1}, "sqlglot.generator.Generator.describe_sql": {"tf": 1}, "sqlglot.tokens.TokenType.DESCRIBE": {"tf": 1}}, "df": 4}}}}}}, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.dialects.dialect.parse_date_delta": {"tf": 1}, "sqlglot.dialects.tsql.generate_date_delta_with_unit_sql": {"tf": 1}}, "df": 2}}, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Delete": {"tf": 1}, "sqlglot.expressions.Delete.delete": {"tf": 1.4142135623730951}, "sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Delete.returning": {"tf": 1}, "sqlglot.expressions.delete": {"tf": 1}, "sqlglot.generator.Generator.delete_sql": {"tf": 1}, "sqlglot.tokens.TokenType.DELETE": {"tf": 1}}, "df": 7}}, "g": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.transforms.delegate": {"tf": 1}}, "df": 1}}}}}}, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.expressions.Expression.depth": {"tf": 1}, "sqlglot.helper.dict_depth": {"tf": 1}}, "df": 2}}, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.planner.Step.add_dependency": {"tf": 1}}, "df": 1}}}}}}}}, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.optimizer.merge_subqueries.merge_derived_tables": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.DERIVED_TABLE": {"tf": 1}, "sqlglot.optimizer.scope.Scope.derived_tables": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_derived_table": {"tf": 1}}, "df": 4, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.DerivedTable": {"tf": 1}}, "df": 1}}}}}}}}}}, "f": {"docs": {"sqlglot.tokens.TokenType.COLUMN_DEF": {"tf": 1}}, "df": 1, "a": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.Func.default_parser_mappings": {"tf": 1}, "sqlglot.optimizer.pushdown_projections.DEFAULT_SELECTION": {"tf": 1}, "sqlglot.tokens.TokenType.BY_DEFAULT": {"tf": 1}, "sqlglot.tokens.TokenType.DEFAULT": {"tf": 1}}, "df": 4, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.DefaultColumnConstraint": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.DefinerProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}}}, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.expressions.DataType.Type.DECIMAL": {"tf": 1}, "sqlglot.tokens.TokenType.DECIMAL": {"tf": 1}}, "df": 2}}}}, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Decode": {"tf": 1}}, "df": 1}}, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.unnest_subqueries.decorrelate": {"tf": 1}}, "df": 1}}}}}}}}}}, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "b": {"docs": {"sqlglot.dialects.dialect.Dialects.DUCKDB": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Tokenizer": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator.tablesample_sql": {"tf": 1}}, "df": 6}}}}, "m": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.expressions.Expression.dump": {"tf": 1}, "sqlglot.serde.dump": {"tf": 1}}, "df": 2}}}, "s": {"docs": {"sqlglot.dialects.dialect.ts_or_ds_to_date_sql": {"tf": 1}}, "df": 1}, "f": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.Expression.dfs": {"tf": 1}}, "df": 1}}, "o": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.Column.to_dot": {"tf": 1}, "sqlglot.expressions.Dot": {"tf": 1}, "sqlglot.expressions.Dot.build": {"tf": 1}, "sqlglot.generator.Generator.dot_sql": {"tf": 1}, "sqlglot.tokens.TokenType.DOT": {"tf": 1}}, "df": 5}, "u": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.DataType.Type.DOUBLE": {"tf": 1}, "sqlglot.tokens.TokenType.DOUBLE": {"tf": 1}}, "df": 2}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.tokens.TokenType.DOLLAR": {"tf": 1}}, "df": 1}}}}}, "p": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.DPipe": {"tf": 1}, "sqlglot.generator.Generator.dpipe_sql": {"tf": 1}, "sqlglot.tokens.TokenType.DPIPE": {"tf": 1}}, "df": 3}}}}, "n": {"docs": {}, "df": 0, "f": {"docs": {"sqlglot.optimizer.pushdown_predicates.pushdown_dnf": {"tf": 1}}, "df": 1}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.tokens.TokenType.DCOLON": {"tf": 1}}, "df": 1}}}}}, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.tokens.TokenType.DHASH_ARROW": {"tf": 1}}, "df": 1}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator.in_unnest_op": {"tf": 1}, "sqlglot.expressions.In": {"tf": 1}, "sqlglot.generator.Generator.in_sql": {"tf": 1}, "sqlglot.generator.Generator.in_unnest_op": {"tf": 1}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1}, "sqlglot.tokens.TokenType.IN": {"tf": 1}, "sqlglot.trie.in_trie": {"tf": 1}}, "df": 7, "i": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe.sql.DataFrame.__init__": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.__init__": {"tf": 1}, "sqlglot.dataframe.sql.Column.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.__init__": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameReader.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.__init__": {"tf": 1}, "sqlglot.diff.Insert.__init__": {"tf": 1}, "sqlglot.diff.Remove.__init__": {"tf": 1}, "sqlglot.diff.Move.__init__": {"tf": 1}, "sqlglot.diff.Update.__init__": {"tf": 1}, "sqlglot.diff.Keep.__init__": {"tf": 1}, "sqlglot.diff.ChangeDistiller.__init__": {"tf": 1}, "sqlglot.errors.ParseError.__init__": {"tf": 1}, "sqlglot.executor.context.Context.__init__": {"tf": 1}, "sqlglot.executor.env.reverse_key.__init__": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.__init__": {"tf": 1}, "sqlglot.executor.table.Table.__init__": {"tf": 1}, "sqlglot.executor.table.TableIter.__init__": {"tf": 1}, "sqlglot.executor.table.RangeReader.__init__": {"tf": 1}, "sqlglot.executor.table.RowReader.__init__": {"tf": 1}, "sqlglot.expressions.Expression.__init__": {"tf": 1}, "sqlglot.expressions.TimeUnit.__init__": {"tf": 1}, "sqlglot.generator.Generator.__init__": {"tf": 1}, "sqlglot.lineage.Node.__init__": {"tf": 1}, "sqlglot.lineage.LineageHTML.__init__": {"tf": 1}, "sqlglot.optimizer.annotate_types.TypeAnnotator.__init__": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.__init__": {"tf": 1}, "sqlglot.optimizer.scope.Scope.__init__": {"tf": 1}, "sqlglot.parser.Parser.__init__": {"tf": 1}, "sqlglot.planner.Plan.__init__": {"tf": 1}, "sqlglot.planner.SetOperation.__init__": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema.__init__": {"tf": 1}, "sqlglot.schema.MappingSchema.__init__": {"tf": 1}, "sqlglot.tokens.Token.__init__": {"tf": 1}}, "df": 35, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.expressions.Initcap": {"tf": 1}}, "df": 1}}}}}, "t": {"docs": {"sqlglot.expressions.Expression.is_int": {"tf": 1}, "sqlglot.expressions.DataType.Type.INT": {"tf": 1}, "sqlglot.tokens.TokenType.INT": {"tf": 1}}, "df": 3, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe.sql.DataFrame.intersect": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.intersect_op": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.intersect_op": {"tf": 1}, "sqlglot.expressions.Unionable.intersect": {"tf": 1}, "sqlglot.expressions.Intersect": {"tf": 1}, "sqlglot.expressions.intersect": {"tf": 1}, "sqlglot.generator.Generator.intersect_sql": {"tf": 1}, "sqlglot.generator.Generator.intersect_op": {"tf": 1}, "sqlglot.tokens.TokenType.INTERSECT": {"tf": 1}}, "df": 9, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.dataframe.sql.DataFrame.intersectAll": {"tf": 1}}, "df": 1}}}}}}}, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.executor.env.interval": {"tf": 1}, "sqlglot.expressions.DataType.Type.INTERVAL": {"tf": 1}, "sqlglot.expressions.Interval": {"tf": 1}, "sqlglot.expressions.to_interval": {"tf": 1}, "sqlglot.generator.Generator.interval_sql": {"tf": 1}, "sqlglot.optimizer.simplify.extract_interval": {"tf": 1}, "sqlglot.tokens.TokenType.INTERVAL": {"tf": 1}}, "df": 7}}}}}, "o": {"docs": {"sqlglot.dialects.dialect.Dialect.parse_into": {"tf": 1}, "sqlglot.expressions.Into": {"tf": 1}, "sqlglot.generator.Generator.into_sql": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 1}, "sqlglot.tokens.TokenType.INTO": {"tf": 1}}, "df": 5}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.Introducer": {"tf": 1}, "sqlglot.generator.Generator.introducer_sql": {"tf": 1}, "sqlglot.tokens.TokenType.INTRODUCER": {"tf": 1}}, "df": 3}}}}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {"sqlglot.expressions.IntDiv": {"tf": 1}, "sqlglot.generator.Generator.intdiv_sql": {"tf": 1}}, "df": 2}}}}, "v": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.Column.invoke_anonymous_function": {"tf": 1}, "sqlglot.dataframe.sql.Column.invoke_expression_over_column": {"tf": 1}}, "df": 2}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.Column.inverse_binary_op": {"tf": 1}}, "df": 1}}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.diff.Insert": {"tf": 1}, "sqlglot.diff.Insert.__init__": {"tf": 1}, "sqlglot.expressions.Insert": {"tf": 1}, "sqlglot.generator.Generator.insert_sql": {"tf": 1}, "sqlglot.tokens.TokenType.INSERT": {"tf": 1}}, "df": 5, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {"sqlglot.dataframe.sql.DataFrameWriter.insertInto": {"tf": 1}}, "df": 1}}}}}}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.inline_array_sql": {"tf": 1}}, "df": 1, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.InlineLengthColumnConstraint": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}}}}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "x": {"docs": {"sqlglot.executor.context.Context.set_index": {"tf": 1}, "sqlglot.expressions.Index": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_INDEX": {"tf": 1}, "sqlglot.generator.Generator.index_sql": {"tf": 1}, "sqlglot.helper.apply_index_offset": {"tf": 1}, "sqlglot.tokens.TokenType.INDEX": {"tf": 1}}, "df": 6}, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.generator.Generator.indent": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.DataType.Type.INET": {"tf": 1}, "sqlglot.tokens.TokenType.INET": {"tf": 1}}, "df": 2}}, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.AUTO_INCREMENT": {"tf": 1}}, "df": 1}}}}}}}, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.tokens.TokenType.INNER": {"tf": 1}}, "df": 1}}}}, "s": {"docs": {"sqlglot.expressions.Expression.is_string": {"tf": 1}, "sqlglot.expressions.Expression.is_number": {"tf": 1}, "sqlglot.expressions.Expression.is_int": {"tf": 1}, "sqlglot.expressions.Expression.is_star": {"tf": 1}, "sqlglot.expressions.Expression.assert_is": {"tf": 1}, "sqlglot.expressions.Union.is_star": {"tf": 1}, "sqlglot.expressions.Select.is_star": {"tf": 1}, "sqlglot.expressions.Subquery.is_star": {"tf": 1}, "sqlglot.expressions.DataType.is_type": {"tf": 1}, "sqlglot.expressions.Is": {"tf": 1}, "sqlglot.expressions.Cast.is_type": {"tf": 1}, "sqlglot.generator.Generator.is_sql": {"tf": 1}, "sqlglot.helper.is_iterable": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_subquery": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_derived_table": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_union": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_cte": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_root": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_udtf": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_correlated_subquery": {"tf": 1}, "sqlglot.optimizer.simplify.is_complement": {"tf": 1}, "sqlglot.optimizer.simplify.is_false": {"tf": 1}, "sqlglot.optimizer.simplify.is_null": {"tf": 1}, "sqlglot.tokens.TokenType.IS": {"tf": 1}}, "df": 24, "n": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.dataframe.sql.Column.isNull": {"tf": 1}, "sqlglot.tokens.TokenType.ISNULL": {"tf": 1}}, "df": 2}}}, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.dataframe.sql.Column.isNotNull": {"tf": 1}}, "df": 1}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dataframe.sql.Column.isin": {"tf": 1}}, "df": 1}}, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.isolate_table_selects.isolate_table_selects": {"tf": 1}}, "df": 1, "d": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.IsolatedLoadingProperty": {"tf": 1}, "sqlglot.generator.Generator.isolatedloadingproperty_sql": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}}}}}}}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.Column.ilike": {"tf": 1}, "sqlglot.dialects.dialect.no_ilike_sql": {"tf": 1}, "sqlglot.expressions.ILike": {"tf": 1}, "sqlglot.generator.Generator.ilike_sql": {"tf": 1}, "sqlglot.tokens.TokenType.ILIKE": {"tf": 1}, "sqlglot.tokens.TokenType.ILIKE_ANY": {"tf": 1}}, "df": 6, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.ILikeAny": {"tf": 1}, "sqlglot.generator.Generator.ilikeany_sql": {"tf": 1}}, "df": 2}}}}}}}, "f": {"docs": {"sqlglot.dialects.dialect.if_sql": {"tf": 1}, "sqlglot.dialects.dialect.count_if_to_sum": {"tf": 1}, "sqlglot.executor.env.null_if_any": {"tf": 1}, "sqlglot.expressions.If": {"tf": 1}, "sqlglot.generator.Generator.if_sql": {"tf": 1}, "sqlglot.tokens.TokenType.IF": {"tf": 1}}, "df": 6, "n": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.expressions.IfNull": {"tf": 1}}, "df": 1}}}}}, "g": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.errors.ErrorLevel.IGNORE": {"tf": 1}, "sqlglot.tokens.TokenType.IGNORE_NULLS": {"tf": 1}}, "df": 2, "n": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.IgnoreNulls": {"tf": 1}, "sqlglot.generator.Generator.ignorenulls_sql": {"tf": 1}}, "df": 2}}}}}}}}}}, "m": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.errors.ErrorLevel.IMMEDIATE": {"tf": 1}}, "df": 1}}}}}}}, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.DataType.Type.IMAGE": {"tf": 1}, "sqlglot.tokens.TokenType.IMAGE": {"tf": 1}}, "df": 2}}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.executor.context.Context.table_iter": {"tf": 1}, "sqlglot.expressions.Expression.iter_expressions": {"tf": 1}}, "df": 2, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.helper.is_iterable": {"tf": 1}}, "df": 1}}}}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.Identifier": {"tf": 1}, "sqlglot.expressions.Identifier.output_name": {"tf": 1}, "sqlglot.expressions.to_identifier": {"tf": 1}, "sqlglot.generator.Generator.identifier_sql": {"tf": 1}, "sqlglot.tokens.TokenType.IDENTIFIER": {"tf": 1}, "sqlglot.tokens.Token.identifier": {"tf": 1}}, "df": 6}}}, "y": {"docs": {"sqlglot.generator.Generator.no_identify": {"tf": 1}, "sqlglot.helper.should_identify": {"tf": 1}}, "df": 2}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.optimizer.lower_identities.lower_identities": {"tf": 1}}, "df": 1}}}}}}}}}, "r": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.IRLIKE": {"tf": 1}}, "df": 1}}}}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dataframe.sql.DataFrame.alias": {"tf": 1}, "sqlglot.dataframe.sql.Column.alias": {"tf": 1}, "sqlglot.expressions.Expression.alias": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_ALIAS": {"tf": 1}, "sqlglot.expressions.Alias": {"tf": 1}, "sqlglot.expressions.Alias.output_name": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1}, "sqlglot.generator.Generator.alias_sql": {"tf": 1}, "sqlglot.tokens.TokenType.ALIAS": {"tf": 1}}, "df": 9, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.Aliases": {"tf": 1}, "sqlglot.generator.Generator.aliases_sql": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.replace_aliases": {"tf": 1}}, "df": 3}}}}}, "l": {"docs": {"sqlglot.expressions.Expression.find_all": {"tf": 1}, "sqlglot.expressions.All": {"tf": 1}, "sqlglot.generator.Generator.all_sql": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.all_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1}, "sqlglot.tokens.TokenType.ALL": {"tf": 1}}, "df": 6}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.tokens.TokenType.ALTER": {"tf": 1}}, "df": 1, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.AlterColumn": {"tf": 1}, "sqlglot.generator.Generator.altercolumn_sql": {"tf": 1}}, "df": 2}}}}}}, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.AlterTable": {"tf": 1}, "sqlglot.generator.Generator.altertable_sql": {"tf": 1}}, "df": 2}}}}}}}}, "g": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.AlgorithmProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}, "w": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.optimizer.simplify.always_true": {"tf": 1}, "sqlglot.tokens.TokenType.ALWAYS": {"tf": 1}}, "df": 2}}}}}, "g": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.dataframe.sql.DataFrame.agg": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.agg": {"tf": 1}}, "df": 2, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.executor.python.PythonExecutor.aggregate": {"tf": 1}, "sqlglot.planner.Aggregate": {"tf": 1}}, "df": 2}}}}}}, "f": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot.expressions.AggFunc": {"tf": 1}}, "df": 1}}}}}}, "v": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.dataframe.sql.GroupedData.avg": {"tf": 1}, "sqlglot.expressions.Avg": {"tf": 1}}, "df": 2}}, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dataframe.sql.Column.invoke_anonymous_function": {"tf": 1}, "sqlglot.expressions.Anonymous": {"tf": 1}, "sqlglot.generator.Generator.anonymous_sql": {"tf": 1}}, "df": 3}}}}}}}, "y": {"docs": {"sqlglot.executor.env.null_if_any": {"tf": 1}, "sqlglot.expressions.Any": {"tf": 1}, "sqlglot.generator.Generator.any_sql": {"tf": 1}, "sqlglot.tokens.TokenType.ANY": {"tf": 1}, "sqlglot.tokens.TokenType.ILIKE_ANY": {"tf": 1}, "sqlglot.tokens.TokenType.LIKE_ANY": {"tf": 1}}, "df": 6, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.AnyValue": {"tf": 1}}, "df": 1}}}}}}, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.Expression.find_ancestor": {"tf": 1}}, "df": 1}}}}}}, "d": {"docs": {"sqlglot.expressions.Condition.and_": {"tf": 1}, "sqlglot.expressions.And": {"tf": 1}, "sqlglot.expressions.and_": {"tf": 1}, "sqlglot.generator.Generator.and_sql": {"tf": 1}, "sqlglot.optimizer.simplify.absorb_and_eliminate": {"tf": 1}, "sqlglot.tokens.TokenType.AND": {"tf": 1}}, "df": 6}, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}, "sqlglot.optimizer.annotate_types.TypeAnnotator.annotate": {"tf": 1}}, "df": 2}}}}}}, "t": {"docs": {}, "df": 0, "i": {"docs": {"sqlglot.tokens.TokenType.ANTI": {"tf": 1}}, "df": 1}}}, "s": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot.dataframe.sql.Column.asc": {"tf": 1}, "sqlglot.dataframe.sql.Column.asc_nulls_first": {"tf": 1}, "sqlglot.dataframe.sql.Column.asc_nulls_last": {"tf": 1}, "sqlglot.tokens.TokenType.ASC": {"tf": 1}}, "df": 4}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.Expression.assert_is": {"tf": 1}}, "df": 1}}}}, "o": {"docs": {}, "df": 0, "f": {"docs": {"sqlglot.tokens.TokenType.ASOF": {"tf": 1}}, "df": 1}}}, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator.array_sql": {"tf": 1}, "sqlglot.dialects.dialect.inline_array_sql": {"tf": 1}, "sqlglot.expressions.DataType.Type.ARRAY": {"tf": 1}, "sqlglot.expressions.Array": {"tf": 1}, "sqlglot.tokens.TokenType.ARRAY": {"tf": 1}}, "df": 5, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.dialects.hive.Hive.Generator.arrayagg_sql": {"tf": 1}, "sqlglot.expressions.ArrayAgg": {"tf": 1}}, "df": 2}}, "l": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.expressions.ArrayAll": {"tf": 1}}, "df": 1}}, "n": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.ArrayAny": {"tf": 1}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.ArrayOverlaps": {"tf": 1}}, "df": 1}}}}}}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.ArrayConcat": {"tf": 1}}, "df": 1}}}, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.ArrayContains": {"tf": 1}}, "df": 1}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.ArrayContained": {"tf": 1}}, "df": 1}}}}}}}}}, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.ArrayFilter": {"tf": 1}}, "df": 1}}}}}}, "j": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.ArrayJoin": {"tf": 1}}, "df": 1}}}}, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.ArraySize": {"tf": 1}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.ArraySort": {"tf": 1}}, "df": 1}}}, "u": {"docs": {}, "df": 0, "m": {"docs": {"sqlglot.expressions.ArraySum": {"tf": 1}}, "df": 1}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.expressions.ArrayUnionAgg": {"tf": 1}}, "df": 1}}}}}}}}}}, "o": {"docs": {}, "df": 0, "w": {"docs": {"sqlglot.dialects.dialect.arrow_json_extract_sql": {"tf": 1}, "sqlglot.dialects.dialect.arrow_json_extract_scalar_sql": {"tf": 1}, "sqlglot.tokens.TokenType.ARROW": {"tf": 1}, "sqlglot.tokens.TokenType.HASH_ARROW": {"tf": 1}, "sqlglot.tokens.TokenType.DHASH_ARROW": {"tf": 1}, "sqlglot.tokens.TokenType.LR_ARROW": {"tf": 1}}, "df": 6}}}, "g": {"docs": {"sqlglot.expressions.Func.from_arg_list": {"tf": 1}}, "df": 1, "s": {"docs": {"sqlglot.generator.Generator.format_args": {"tf": 1}, "sqlglot.schema.Schema.supported_table_args": {"tf": 1}}, "df": 2}}}, "p": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "x": {"docs": {"sqlglot.dialects.dialect.approx_count_distinct_sql": {"tf": 1}}, "df": 1, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.ApproxDistinct": {"tf": 1}}, "df": 1}}}}}}}}, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.ApproxQuantile": {"tf": 1}}, "df": 1}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.executor.table.Table.append": {"tf": 1}, "sqlglot.expressions.Expression.append": {"tf": 1}}, "df": 2}}}, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.helper.apply_index_offset": {"tf": 1}, "sqlglot.tokens.TokenType.APPLY": {"tf": 1}}, "df": 2}}}}, "d": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.executor.context.Context.add_columns": {"tf": 1}, "sqlglot.executor.table.Table.add_columns": {"tf": 1}, "sqlglot.expressions.Add": {"tf": 1}, "sqlglot.generator.Generator.add_sql": {"tf": 1}, "sqlglot.optimizer.canonicalize.add_text_to_concat": {"tf": 1}, "sqlglot.optimizer.scope.Scope.add_source": {"tf": 1}, "sqlglot.planner.Step.add_dependency": {"tf": 1}, "sqlglot.schema.Schema.add_table": {"tf": 1}, "sqlglot.schema.MappingSchema.add_table": {"tf": 1}}, "df": 9, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.AddConstraint": {"tf": 1}, "sqlglot.generator.Generator.addconstraint_sql": {"tf": 1}}, "df": 2}}}}}}}}}}}}, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {"sqlglot.tokens.TokenType.AUTO_INCREMENT": {"tf": 1}}, "df": 1, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.AutoIncrementColumnConstraint": {"tf": 1}, "sqlglot.generator.Generator.autoincrementcolumnconstraint_sql": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}}}, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.AutoIncrementProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.helper.AutoName": {"tf": 1}}, "df": 1}}}}}}}, "f": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "j": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.AfterJournalProperty": {"tf": 1}, "sqlglot.generator.Generator.afterjournalproperty_sql": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}}}}}}, "t": {"docs": {"sqlglot.tokens.TokenType.LT_AT": {"tf": 1}, "sqlglot.tokens.TokenType.AT_GT": {"tf": 1}, "sqlglot.tokens.TokenType.AT_TIME_ZONE": {"tf": 1}}, "df": 3, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.AtTimeZone": {"tf": 1}, "sqlglot.generator.Generator.attimezone_sql": {"tf": 1}}, "df": 2}}}}}}}}}, "b": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.Abs": {"tf": 1}}, "df": 1, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "b": {"docs": {"sqlglot.optimizer.simplify.absorb_and_eliminate": {"tf": 1}}, "df": 1}}}, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.schema.AbstractMappingSchema": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema.__init__": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema.table_parts": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema.find": {"tf": 1}}, "df": 4}}}}}}}}}}}}}}}}}}}}, "m": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.tokens.TokenType.AMP": {"tf": 1}}, "df": 1}}, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.tokens.TokenType.NO_ACTION": {"tf": 1}}, "df": 1}}}}}}, "w": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.DataFrame.where": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Select.where": {"tf": 1}, "sqlglot.expressions.Where": {"tf": 1}, "sqlglot.generator.Generator.where_sql": {"tf": 1}, "sqlglot.optimizer.simplify.remove_where_true": {"tf": 1}, "sqlglot.tokens.TokenType.WHERE": {"tf": 1}}, "df": 7}}, "n": {"docs": {"sqlglot.dataframe.sql.Column.when": {"tf": 1}, "sqlglot.expressions.When": {"tf": 1}, "sqlglot.generator.Generator.when_sql": {"tf": 1}, "sqlglot.tokens.TokenType.WHEN": {"tf": 1}}, "df": 4}}, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.helper.while_changing": {"tf": 1}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator.with_properties": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.with_properties": {"tf": 1}, "sqlglot.dialects.tsql.generate_date_delta_with_unit_sql": {"tf": 1}, "sqlglot.expressions.With": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_WITH": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1}, "sqlglot.generator.Generator.with_sql": {"tf": 1}, "sqlglot.generator.Generator.with_properties": {"tf": 1}, "sqlglot.tokens.TokenType.WITH": {"tf": 1}, "sqlglot.tokens.TokenType.WITH_TIME_ZONE": {"tf": 1}, "sqlglot.tokens.TokenType.WITH_LOCAL_TIME_ZONE": {"tf": 1}}, "df": 12, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dataframe.sql.DataFrame.withColumn": {"tf": 1}}, "df": 1, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.dataframe.sql.DataFrame.withColumnRenamed": {"tf": 1}}, "df": 1}}}}}}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.tokens.TokenType.WITHIN_GROUP": {"tf": 1}}, "df": 1, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.expressions.WithinGroup": {"tf": 1}, "sqlglot.generator.Generator.withingroup_sql": {"tf": 1}}, "df": 2}}}}}}}, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.WithDataProperty": {"tf": 1}, "sqlglot.generator.Generator.withdataproperty_sql": {"tf": 1}}, "df": 2}}}}}}}}}}}}, "j": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.WithJournalTableProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.WITHOUT_TIME_ZONE": {"tf": 1}}, "df": 1}}}}}, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {"sqlglot.dataframe.sql.Window": {"tf": 1}, "sqlglot.dataframe.sql.Window.partitionBy": {"tf": 1}, "sqlglot.dataframe.sql.Window.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.Window.rowsBetween": {"tf": 1}, "sqlglot.dataframe.sql.Window.rangeBetween": {"tf": 1}, "sqlglot.expressions.Select.window": {"tf": 1}, "sqlglot.expressions.Window": {"tf": 1}, "sqlglot.generator.Generator.window_sql": {"tf": 1}, "sqlglot.generator.Generator.window_spec_sql": {"tf": 1}, "sqlglot.tokens.TokenType.WINDOW": {"tf": 1}}, "df": 10, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot.dataframe.sql.WindowSpec": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.__init__": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.copy": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.sql": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.partitionBy": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.rowsBetween": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.rangeBetween": {"tf": 1}, "sqlglot.expressions.WindowSpec": {"tf": 1}}, "df": 9}}}}}}}}, "d": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.generator.Generator.text_width": {"tf": 1}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.errors.ErrorLevel.WARN": {"tf": 1}}, "df": 1}}, "l": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.expressions.Expression.walk": {"tf": 1}, "sqlglot.lineage.Node.walk": {"tf": 1}, "sqlglot.optimizer.scope.Scope.walk": {"tf": 1}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1}}, "df": 4}}}, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.expressions.Week": {"tf": 1}}, "df": 1, "o": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.WeekOfYear": {"tf": 1}}, "df": 1}}}}}}}}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.generator.Generator.wrap": {"tf": 1}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.helper.split_num_words": {"tf": 1}}, "df": 1}}}}}, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dataframe.sql.DataFrame.filter": {"tf": 1}, "sqlglot.executor.context.Context.filter": {"tf": 1}, "sqlglot.executor.env.filter_nulls": {"tf": 1}, "sqlglot.expressions.Filter": {"tf": 1}, "sqlglot.generator.Generator.filter_sql": {"tf": 1}, "sqlglot.tokens.TokenType.FILTER": {"tf": 1}}, "df": 6}}}, "l": {"docs": {"sqlglot.dataframe.sql.DataFrameNaFunctions.fill": {"tf": 1}}, "df": 1, "n": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}}, "df": 1}}}, "e": {"docs": {"sqlglot.helper.open_file": {"tf": 1}}, "df": 1, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.FileFormatProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe.sql.Column.asc_nulls_first": {"tf": 1}, "sqlglot.dataframe.sql.Column.desc_nulls_first": {"tf": 1}, "sqlglot.helper.first": {"tf": 1}, "sqlglot.tokens.TokenType.FIRST": {"tf": 1}, "sqlglot.tokens.TokenType.NULLS_FIRST": {"tf": 1}}, "df": 5}}}, "n": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.Expression.find": {"tf": 1}, "sqlglot.expressions.Expression.find_all": {"tf": 1}, "sqlglot.expressions.Expression.find_ancestor": {"tf": 1}, "sqlglot.helper.find_new_name": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema.find": {"tf": 1}}, "df": 7}, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.expressions.Final": {"tf": 1}, "sqlglot.tokens.TokenType.FINAL": {"tf": 1}}, "df": 2}}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot.dialects.dialect.rename_func": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator.normalize_func": {"tf": 1}, "sqlglot.expressions.Func": {"tf": 1}, "sqlglot.expressions.Func.from_arg_list": {"tf": 1}, "sqlglot.expressions.Func.sql_names": {"tf": 1}, "sqlglot.expressions.Func.sql_name": {"tf": 1}, "sqlglot.expressions.Func.default_parser_mappings": {"tf": 1}, "sqlglot.expressions.func": {"tf": 1}, "sqlglot.generator.Generator.normalize_func": {"tf": 1}, "sqlglot.generator.Generator.func": {"tf": 1}}, "df": 10, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dataframe.sql.Column.invoke_anonymous_function": {"tf": 1}, "sqlglot.generator.Generator.function_fallback_sql": {"tf": 1}, "sqlglot.tokens.TokenType.FUNCTION": {"tf": 1}}, "df": 3}}}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.tokens.TokenType.FULL": {"tf": 1}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.optimizer.pushdown_predicates.nodes_for_predicate": {"tf": 1}, "sqlglot.tokens.TokenType.FOR": {"tf": 1}}, "df": 2, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.dialect.Dialect.format_time": {"tf": 1}, "sqlglot.dialects.dialect.format_time_lambda": {"tf": 1}, "sqlglot.generator.Generator.format_args": {"tf": 1}, "sqlglot.generator.Generator.format_time": {"tf": 1}, "sqlglot.time.format_time": {"tf": 1}, "sqlglot.tokens.TokenType.FORMAT": {"tf": 1}}, "df": 6}}}, "e": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.tokens.TokenType.FOREIGN_KEY": {"tf": 1}}, "df": 1, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.ForeignKey": {"tf": 1}, "sqlglot.generator.Generator.foreignkey_sql": {"tf": 1}}, "df": 2}}}}}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.tokens.TokenType.FOLLOWING": {"tf": 1}}, "df": 1}}}}}}}}, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.Expression.flatten": {"tf": 1}, "sqlglot.helper.flatten": {"tf": 1}, "sqlglot.optimizer.simplify.flatten": {"tf": 1}, "sqlglot.schema.flatten_schema": {"tf": 1}}, "df": 4}}}}}, "o": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.DataType.Type.FLOAT": {"tf": 1}, "sqlglot.tokens.TokenType.FLOAT": {"tf": 1}}, "df": 2}}, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.Floor": {"tf": 1}}, "df": 1}}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {"sqlglot.expressions.From": {"tf": 1}, "sqlglot.expressions.Properties.from_dict": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.Func.from_arg_list": {"tf": 1}, "sqlglot.expressions.from_": {"tf": 1}, "sqlglot.generator.Generator.from_sql": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.Join.from_joins": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}, "sqlglot.schema.MappingSchema.from_mapping_schema": {"tf": 1}, "sqlglot.tokens.TokenType.DISTINCT_FROM": {"tf": 1}, "sqlglot.tokens.TokenType.FROM": {"tf": 1}}, "df": 13}}, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.FreespaceProperty": {"tf": 1}, "sqlglot.generator.Generator.freespaceproperty_sql": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.expressions.Fetch": {"tf": 1}, "sqlglot.generator.Generator.fetch_sql": {"tf": 1}, "sqlglot.tokens.TokenType.FETCH": {"tf": 1}}, "df": 3}}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.generator.Generator.function_fallback_sql": {"tf": 1}}, "df": 1, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.FallbackProperty": {"tf": 1}, "sqlglot.generator.Generator.fallbackproperty_sql": {"tf": 1}}, "df": 2}}}}}}}}}}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.false": {"tf": 1}, "sqlglot.optimizer.simplify.is_false": {"tf": 1}, "sqlglot.tokens.TokenType.FALSE": {"tf": 1}}, "df": 3}}}, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {"sqlglot.tokens.TokenType.FARROW": {"tf": 1}}, "df": 1}}}}}}, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.expressions.Group": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.generator.Generator.group_sql": {"tf": 1}, "sqlglot.tokens.TokenType.GROUP_BY": {"tf": 1}, "sqlglot.tokens.TokenType.WITHIN_GROUP": {"tf": 1}, "sqlglot.transforms.unalias_group": {"tf": 1}}, "df": 6, "b": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dataframe.sql.DataFrame.groupBy": {"tf": 1}}, "df": 1}}, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.dataframe.sql.GroupedData": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.__init__": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.agg": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.count": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.mean": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.avg": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.max": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.min": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.sum": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.pivot": {"tf": 1}}, "df": 10}}}}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.sqlite.SQLite.Generator.groupconcat_sql": {"tf": 1}, "sqlglot.expressions.GroupConcat": {"tf": 1}}, "df": 2}}}}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.GroupUniqArray": {"tf": 1}}, "df": 1}}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.tokens.TokenType.GROUPING_SETS": {"tf": 1}}, "df": 1}}}}}}, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.dialect.max_or_greatest": {"tf": 1}, "sqlglot.expressions.Greatest": {"tf": 1}}, "df": 2}}}}}}}, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.array_sql": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.transaction_sql": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.commit_sql": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.rollback_sql": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.in_unnest_op": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.except_op": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.intersect_op": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator.cte_sql": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator.normalize_func": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator.tablesample_sql": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator.arrayagg_sql": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator.with_properties": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator.show_sql": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator.offset_sql": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator.column_sql": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator.xmltable_sql": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator.transaction_sql": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.with_properties": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.renametable_sql": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.except_op": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.intersect_op": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.settag_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.describe_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.generatedasidentitycolumnconstraint_sql": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator.cast_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.cast_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.datediff_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.groupconcat_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.least_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.transaction_sql": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.partitionedbyproperty_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.update_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.mod_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.rangen_sql": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator.offset_sql": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator.systemtime_sql": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator.returnsproperty_sql": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.generator.Generator.__init__": {"tf": 1}, "sqlglot.generator.Generator.generate": {"tf": 1}, "sqlglot.generator.Generator.unsupported": {"tf": 1}, "sqlglot.generator.Generator.sep": {"tf": 1}, "sqlglot.generator.Generator.seg": {"tf": 1}, "sqlglot.generator.Generator.pad_comment": {"tf": 1}, "sqlglot.generator.Generator.maybe_comment": {"tf": 1}, "sqlglot.generator.Generator.wrap": {"tf": 1}, "sqlglot.generator.Generator.no_identify": {"tf": 1}, "sqlglot.generator.Generator.normalize_func": {"tf": 1}, "sqlglot.generator.Generator.indent": {"tf": 1}, "sqlglot.generator.Generator.sql": {"tf": 1}, "sqlglot.generator.Generator.uncache_sql": {"tf": 1}, "sqlglot.generator.Generator.cache_sql": {"tf": 1}, "sqlglot.generator.Generator.characterset_sql": {"tf": 1}, "sqlglot.generator.Generator.column_sql": {"tf": 1}, "sqlglot.generator.Generator.columnposition_sql": {"tf": 1}, "sqlglot.generator.Generator.columndef_sql": {"tf": 1}, "sqlglot.generator.Generator.columnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.autoincrementcolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.compresscolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.generatedasidentitycolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.notnullcolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.primarykeycolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.uniquecolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.create_sql": {"tf": 1}, "sqlglot.generator.Generator.describe_sql": {"tf": 1}, "sqlglot.generator.Generator.prepend_ctes": {"tf": 1}, "sqlglot.generator.Generator.with_sql": {"tf": 1}, "sqlglot.generator.Generator.cte_sql": {"tf": 1}, "sqlglot.generator.Generator.tablealias_sql": {"tf": 1}, "sqlglot.generator.Generator.bitstring_sql": {"tf": 1}, "sqlglot.generator.Generator.hexstring_sql": {"tf": 1}, "sqlglot.generator.Generator.datatype_sql": {"tf": 1}, "sqlglot.generator.Generator.directory_sql": {"tf": 1}, "sqlglot.generator.Generator.delete_sql": {"tf": 1}, "sqlglot.generator.Generator.drop_sql": {"tf": 1}, "sqlglot.generator.Generator.except_sql": {"tf": 1}, "sqlglot.generator.Generator.except_op": {"tf": 1}, "sqlglot.generator.Generator.fetch_sql": {"tf": 1}, "sqlglot.generator.Generator.filter_sql": {"tf": 1}, "sqlglot.generator.Generator.hint_sql": {"tf": 1}, "sqlglot.generator.Generator.index_sql": {"tf": 1}, "sqlglot.generator.Generator.identifier_sql": {"tf": 1}, "sqlglot.generator.Generator.national_sql": {"tf": 1}, "sqlglot.generator.Generator.partition_sql": {"tf": 1}, "sqlglot.generator.Generator.properties_sql": {"tf": 1}, "sqlglot.generator.Generator.root_properties": {"tf": 1}, "sqlglot.generator.Generator.properties": {"tf": 1}, "sqlglot.generator.Generator.with_properties": {"tf": 1}, "sqlglot.generator.Generator.locate_properties": {"tf": 1}, "sqlglot.generator.Generator.property_sql": {"tf": 1}, "sqlglot.generator.Generator.likeproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.fallbackproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.journalproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.freespaceproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.afterjournalproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.checksumproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.mergeblockratioproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.datablocksizeproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.blockcompressionproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.isolatedloadingproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.lockingproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.withdataproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.insert_sql": {"tf": 1}, "sqlglot.generator.Generator.intersect_sql": {"tf": 1}, "sqlglot.generator.Generator.intersect_op": {"tf": 1}, "sqlglot.generator.Generator.introducer_sql": {"tf": 1}, "sqlglot.generator.Generator.pseudotype_sql": {"tf": 1}, "sqlglot.generator.Generator.returning_sql": {"tf": 1}, "sqlglot.generator.Generator.rowformatdelimitedproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.table_sql": {"tf": 1}, "sqlglot.generator.Generator.tablesample_sql": {"tf": 1}, "sqlglot.generator.Generator.pivot_sql": {"tf": 1}, "sqlglot.generator.Generator.tuple_sql": {"tf": 1}, "sqlglot.generator.Generator.update_sql": {"tf": 1}, "sqlglot.generator.Generator.values_sql": {"tf": 1}, "sqlglot.generator.Generator.var_sql": {"tf": 1}, "sqlglot.generator.Generator.into_sql": {"tf": 1}, "sqlglot.generator.Generator.from_sql": {"tf": 1}, "sqlglot.generator.Generator.group_sql": {"tf": 1}, "sqlglot.generator.Generator.having_sql": {"tf": 1}, "sqlglot.generator.Generator.join_sql": {"tf": 1}, "sqlglot.generator.Generator.lambda_sql": {"tf": 1}, "sqlglot.generator.Generator.lateral_sql": {"tf": 1}, "sqlglot.generator.Generator.limit_sql": {"tf": 1}, "sqlglot.generator.Generator.offset_sql": {"tf": 1}, "sqlglot.generator.Generator.setitem_sql": {"tf": 1}, "sqlglot.generator.Generator.set_sql": {"tf": 1}, "sqlglot.generator.Generator.pragma_sql": {"tf": 1}, "sqlglot.generator.Generator.lock_sql": {"tf": 1}, "sqlglot.generator.Generator.literal_sql": {"tf": 1}, "sqlglot.generator.Generator.loaddata_sql": {"tf": 1}, "sqlglot.generator.Generator.null_sql": {"tf": 1}, "sqlglot.generator.Generator.boolean_sql": {"tf": 1}, "sqlglot.generator.Generator.order_sql": {"tf": 1}, "sqlglot.generator.Generator.cluster_sql": {"tf": 1}, "sqlglot.generator.Generator.distribute_sql": {"tf": 1}, "sqlglot.generator.Generator.sort_sql": {"tf": 1}, "sqlglot.generator.Generator.ordered_sql": {"tf": 1}, "sqlglot.generator.Generator.matchrecognize_sql": {"tf": 1}, "sqlglot.generator.Generator.query_modifiers": {"tf": 1}, "sqlglot.generator.Generator.select_sql": {"tf": 1}, "sqlglot.generator.Generator.schema_sql": {"tf": 1}, "sqlglot.generator.Generator.star_sql": {"tf": 1}, "sqlglot.generator.Generator.structkwarg_sql": {"tf": 1}, "sqlglot.generator.Generator.parameter_sql": {"tf": 1}, "sqlglot.generator.Generator.sessionparameter_sql": {"tf": 1}, "sqlglot.generator.Generator.placeholder_sql": {"tf": 1}, "sqlglot.generator.Generator.subquery_sql": {"tf": 1}, "sqlglot.generator.Generator.qualify_sql": {"tf": 1}, "sqlglot.generator.Generator.union_sql": {"tf": 1}, "sqlglot.generator.Generator.union_op": {"tf": 1}, "sqlglot.generator.Generator.unnest_sql": {"tf": 1}, "sqlglot.generator.Generator.where_sql": {"tf": 1}, "sqlglot.generator.Generator.window_sql": {"tf": 1}, "sqlglot.generator.Generator.partition_by_sql": {"tf": 1}, "sqlglot.generator.Generator.window_spec_sql": {"tf": 1}, "sqlglot.generator.Generator.withingroup_sql": {"tf": 1}, "sqlglot.generator.Generator.between_sql": {"tf": 1}, "sqlglot.generator.Generator.bracket_sql": {"tf": 1}, "sqlglot.generator.Generator.all_sql": {"tf": 1}, "sqlglot.generator.Generator.any_sql": {"tf": 1}, "sqlglot.generator.Generator.exists_sql": {"tf": 1}, "sqlglot.generator.Generator.case_sql": {"tf": 1}, "sqlglot.generator.Generator.constraint_sql": {"tf": 1}, "sqlglot.generator.Generator.extract_sql": {"tf": 1}, "sqlglot.generator.Generator.trim_sql": {"tf": 1}, "sqlglot.generator.Generator.concat_sql": {"tf": 1}, "sqlglot.generator.Generator.check_sql": {"tf": 1}, "sqlglot.generator.Generator.foreignkey_sql": {"tf": 1}, "sqlglot.generator.Generator.primarykey_sql": {"tf": 1}, "sqlglot.generator.Generator.unique_sql": {"tf": 1}, "sqlglot.generator.Generator.if_sql": {"tf": 1}, "sqlglot.generator.Generator.matchagainst_sql": {"tf": 1}, "sqlglot.generator.Generator.jsonkeyvalue_sql": {"tf": 1}, "sqlglot.generator.Generator.jsonobject_sql": {"tf": 1}, "sqlglot.generator.Generator.in_sql": {"tf": 1}, "sqlglot.generator.Generator.in_unnest_op": {"tf": 1}, "sqlglot.generator.Generator.interval_sql": {"tf": 1}, "sqlglot.generator.Generator.return_sql": {"tf": 1}, "sqlglot.generator.Generator.reference_sql": {"tf": 1}, "sqlglot.generator.Generator.anonymous_sql": {"tf": 1}, "sqlglot.generator.Generator.paren_sql": {"tf": 1}, "sqlglot.generator.Generator.neg_sql": {"tf": 1}, "sqlglot.generator.Generator.not_sql": {"tf": 1}, "sqlglot.generator.Generator.alias_sql": {"tf": 1}, "sqlglot.generator.Generator.aliases_sql": {"tf": 1}, "sqlglot.generator.Generator.attimezone_sql": {"tf": 1}, "sqlglot.generator.Generator.add_sql": {"tf": 1}, "sqlglot.generator.Generator.and_sql": {"tf": 1}, "sqlglot.generator.Generator.connector_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwiseand_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwiseleftshift_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwisenot_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwiseor_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwiserightshift_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwisexor_sql": {"tf": 1}, "sqlglot.generator.Generator.cast_sql": {"tf": 1}, "sqlglot.generator.Generator.currentdate_sql": {"tf": 1}, "sqlglot.generator.Generator.collate_sql": {"tf": 1}, "sqlglot.generator.Generator.command_sql": {"tf": 1}, "sqlglot.generator.Generator.comment_sql": {"tf": 1}, "sqlglot.generator.Generator.transaction_sql": {"tf": 1}, "sqlglot.generator.Generator.commit_sql": {"tf": 1}, "sqlglot.generator.Generator.rollback_sql": {"tf": 1}, "sqlglot.generator.Generator.altercolumn_sql": {"tf": 1}, "sqlglot.generator.Generator.renametable_sql": {"tf": 1}, "sqlglot.generator.Generator.altertable_sql": {"tf": 1}, "sqlglot.generator.Generator.droppartition_sql": {"tf": 1}, "sqlglot.generator.Generator.addconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.distinct_sql": {"tf": 1}, "sqlglot.generator.Generator.ignorenulls_sql": {"tf": 1}, "sqlglot.generator.Generator.respectnulls_sql": {"tf": 1}, "sqlglot.generator.Generator.intdiv_sql": {"tf": 1}, "sqlglot.generator.Generator.dpipe_sql": {"tf": 1}, "sqlglot.generator.Generator.div_sql": {"tf": 1}, "sqlglot.generator.Generator.overlaps_sql": {"tf": 1}, "sqlglot.generator.Generator.distance_sql": {"tf": 1}, "sqlglot.generator.Generator.dot_sql": {"tf": 1}, "sqlglot.generator.Generator.eq_sql": {"tf": 1}, "sqlglot.generator.Generator.escape_sql": {"tf": 1}, "sqlglot.generator.Generator.glob_sql": {"tf": 1}, "sqlglot.generator.Generator.gt_sql": {"tf": 1}, "sqlglot.generator.Generator.gte_sql": {"tf": 1}, "sqlglot.generator.Generator.ilike_sql": {"tf": 1}, "sqlglot.generator.Generator.ilikeany_sql": {"tf": 1}, "sqlglot.generator.Generator.is_sql": {"tf": 1}, "sqlglot.generator.Generator.like_sql": {"tf": 1}, "sqlglot.generator.Generator.likeany_sql": {"tf": 1}, "sqlglot.generator.Generator.similarto_sql": {"tf": 1}, "sqlglot.generator.Generator.lt_sql": {"tf": 1}, "sqlglot.generator.Generator.lte_sql": {"tf": 1}, "sqlglot.generator.Generator.mod_sql": {"tf": 1}, "sqlglot.generator.Generator.mul_sql": {"tf": 1}, "sqlglot.generator.Generator.neq_sql": {"tf": 1}, "sqlglot.generator.Generator.nullsafeeq_sql": {"tf": 1}, "sqlglot.generator.Generator.nullsafeneq_sql": {"tf": 1}, "sqlglot.generator.Generator.or_sql": {"tf": 1}, "sqlglot.generator.Generator.slice_sql": {"tf": 1}, "sqlglot.generator.Generator.sub_sql": {"tf": 1}, "sqlglot.generator.Generator.trycast_sql": {"tf": 1}, "sqlglot.generator.Generator.use_sql": {"tf": 1}, "sqlglot.generator.Generator.binary": {"tf": 1}, "sqlglot.generator.Generator.function_fallback_sql": {"tf": 1}, "sqlglot.generator.Generator.func": {"tf": 1}, "sqlglot.generator.Generator.format_args": {"tf": 1}, "sqlglot.generator.Generator.text_width": {"tf": 1}, "sqlglot.generator.Generator.format_time": {"tf": 1}, "sqlglot.generator.Generator.expressions": {"tf": 1}, "sqlglot.generator.Generator.op_expressions": {"tf": 1}, "sqlglot.generator.Generator.naked_property": {"tf": 1}, "sqlglot.generator.Generator.set_operation": {"tf": 1}, "sqlglot.generator.Generator.tag_sql": {"tf": 1}, "sqlglot.generator.Generator.token_sql": {"tf": 1}, "sqlglot.generator.Generator.userdefinedfunction_sql": {"tf": 1}, "sqlglot.generator.Generator.joinhint_sql": {"tf": 1}, "sqlglot.generator.Generator.kwarg_sql": {"tf": 1}, "sqlglot.generator.Generator.when_sql": {"tf": 1}, "sqlglot.generator.Generator.merge_sql": {"tf": 1}, "sqlglot.generator.Generator.tochar_sql": {"tf": 1}}, "df": 286}}, "e": {"docs": {"sqlglot.dialects.dialect.Dialect.generate": {"tf": 1}, "sqlglot.dialects.tsql.generate_date_delta_with_unit_sql": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.generate": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.generate_tuple": {"tf": 1}, "sqlglot.generator.Generator.generate": {"tf": 1}}, "df": 5, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.snowflake.Snowflake.Generator.generatedasidentitycolumnconstraint_sql": {"tf": 1}, "sqlglot.expressions.GeneratedAsIdentityColumnConstraint": {"tf": 1}, "sqlglot.generator.Generator.generatedasidentitycolumnconstraint_sql": {"tf": 1}}, "df": 3}}}}}}}}}}}}}}}}}}}}}}}}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.GenerateSeries": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "t": {"docs": {"sqlglot.dialects.dialect.Dialect.get_or_raise": {"tf": 1}, "sqlglot.helper.seq_get": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.get_table": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.get_source_columns": {"tf": 1}, "sqlglot.schema.Schema.get_column_type": {"tf": 1}, "sqlglot.schema.MappingSchema.get_column_type": {"tf": 1}}, "df": 6}, "o": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.DataType.Type.GEOGRAPHY": {"tf": 1}, "sqlglot.tokens.TokenType.GEOGRAPHY": {"tf": 1}}, "df": 2}}}}}}, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.DataType.Type.GEOMETRY": {"tf": 1}, "sqlglot.tokens.TokenType.GEOMETRY": {"tf": 1}}, "df": 2}}}}}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "b": {"docs": {"sqlglot.expressions.Glob": {"tf": 1}, "sqlglot.generator.Generator.glob_sql": {"tf": 1}, "sqlglot.tokens.TokenType.GLOB": {"tf": 1}}, "df": 3, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.tokens.TokenType.GLOBAL": {"tf": 1}}, "df": 1}}}}}, "t": {"docs": {"sqlglot.expressions.GT": {"tf": 1}, "sqlglot.generator.Generator.gt_sql": {"tf": 1}, "sqlglot.tokens.TokenType.GT": {"tf": 1}, "sqlglot.tokens.TokenType.AT_GT": {"tf": 1}}, "df": 4, "e": {"docs": {"sqlglot.expressions.GTE": {"tf": 1}, "sqlglot.generator.Generator.gte_sql": {"tf": 1}, "sqlglot.tokens.TokenType.GTE": {"tf": 1}}, "df": 3}}}, "j": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dataframe.sql.DataFrame.join": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.join": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.nested_loop_join": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.hash_join": {"tf": 1}, "sqlglot.expressions.Join": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Join.using": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1}, "sqlglot.generator.Generator.join_sql": {"tf": 1}, "sqlglot.optimizer.eliminate_joins.join_condition": {"tf": 1}, "sqlglot.optimizer.scope.Scope.join_hints": {"tf": 1}, "sqlglot.planner.Join": {"tf": 1}, "sqlglot.planner.Join.from_joins": {"tf": 1}, "sqlglot.tokens.TokenType.JOIN": {"tf": 1}, "sqlglot.tokens.TokenType.JOIN_MARKER": {"tf": 1}}, "df": 15, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.JoinHint": {"tf": 1}, "sqlglot.generator.Generator.joinhint_sql": {"tf": 1}}, "df": 2}}}}, "s": {"docs": {"sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 1}, "sqlglot.optimizer.optimize_joins.optimize_joins": {"tf": 1}, "sqlglot.optimizer.optimize_joins.reorder_joins": {"tf": 1}, "sqlglot.planner.Join.from_joins": {"tf": 1}}, "df": 4}}}, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.JournalProperty": {"tf": 1}, "sqlglot.generator.Generator.journalproperty_sql": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}, "s": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dialects.dialect.arrow_json_extract_sql": {"tf": 1}, "sqlglot.dialects.dialect.arrow_json_extract_scalar_sql": {"tf": 1}, "sqlglot.expressions.DataType.Type.JSON": {"tf": 1}, "sqlglot.tokens.TokenType.JSON": {"tf": 1}}, "df": 4, "b": {"docs": {"sqlglot.expressions.DataType.Type.JSONB": {"tf": 1}, "sqlglot.tokens.TokenType.JSONB": {"tf": 1}}, "df": 2, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.JSONBContains": {"tf": 1}}, "df": 1}}}}}}}}, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.JSONBExtract": {"tf": 1}}, "df": 1, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.JSONBExtractScalar": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.JSONKeyValue": {"tf": 1}, "sqlglot.generator.Generator.jsonkeyvalue_sql": {"tf": 1}}, "df": 2}}}}}}}}, "o": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "j": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.JSONObject": {"tf": 1}, "sqlglot.generator.Generator.jsonobject_sql": {"tf": 1}}, "df": 2}}}}}}, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.JSONExtract": {"tf": 1}}, "df": 1, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.JSONExtractScalar": {"tf": 1}}, "df": 1}}}}}}}}}}}}}, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.JSONFormat": {"tf": 1}}, "df": 1}}}}}}}}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dataframe.sql.DataFrame.union": {"tf": 1}, "sqlglot.expressions.Unionable.union": {"tf": 1}, "sqlglot.expressions.Union": {"tf": 1}, "sqlglot.expressions.Union.limit": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 1}, "sqlglot.expressions.Union.is_star": {"tf": 1}, "sqlglot.expressions.union": {"tf": 1}, "sqlglot.generator.Generator.union_sql": {"tf": 1}, "sqlglot.generator.Generator.union_op": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.UNION": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_union": {"tf": 1}, "sqlglot.tokens.TokenType.UNION": {"tf": 1}}, "df": 12, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.dataframe.sql.DataFrame.unionAll": {"tf": 1}}, "df": 1}}, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Unionable": {"tf": 1}, "sqlglot.expressions.Unionable.union": {"tf": 1}, "sqlglot.expressions.Unionable.intersect": {"tf": 1}, "sqlglot.expressions.Unionable.except_": {"tf": 1}}, "df": 4}}}}, "b": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.DataFrame.unionByName": {"tf": 1}}, "df": 1}}}}}}}}, "t": {"docs": {"sqlglot.dialects.tsql.generate_date_delta_with_unit_sql": {"tf": 1}}, "df": 1}, "q": {"docs": {"sqlglot.optimizer.simplify.uniq_sort": {"tf": 1}}, "df": 1, "u": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Unique": {"tf": 1}, "sqlglot.generator.Generator.unique_sql": {"tf": 1}, "sqlglot.tokens.TokenType.UNIQUE": {"tf": 1}}, "df": 3, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.UniqueColumnConstraint": {"tf": 1}, "sqlglot.generator.Generator.uniquecolumnconstraint_sql": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}}}, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.DataType.Type.UNIQUEIDENTIFIER": {"tf": 1}, "sqlglot.tokens.TokenType.UNIQUEIDENTIFIER": {"tf": 1}}, "df": 2}}}}}}}}}}}}}, "x": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.UnixToStr": {"tf": 1}}, "df": 1}}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.UnixToTime": {"tf": 1}}, "df": 1, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.UnixToTimeStr": {"tf": 1}}, "df": 1}}}}}}}}}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dataframe.sql.Column.unary_op": {"tf": 1}, "sqlglot.expressions.Unary": {"tf": 1}}, "df": 2}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.Expression.unalias": {"tf": 1}, "sqlglot.transforms.unalias_group": {"tf": 1}}, "df": 2}}}}}, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator.in_unnest_op": {"tf": 1}, "sqlglot.expressions.Expression.unnest": {"tf": 1}, "sqlglot.expressions.Expression.unnest_operands": {"tf": 1}, "sqlglot.expressions.Unnest": {"tf": 1}, "sqlglot.expressions.Subquery.unnest": {"tf": 1}, "sqlglot.generator.Generator.unnest_sql": {"tf": 1}, "sqlglot.generator.Generator.in_unnest_op": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.unnest": {"tf": 1}, "sqlglot.tokens.TokenType.UNNEST": {"tf": 1}}, "df": 10}}}}, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.Properties.Location.UNSUPPORTED": {"tf": 1}, "sqlglot.generator.Generator.unsupported": {"tf": 1}}, "df": 2, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.errors.UnsupportedError": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Uncache": {"tf": 1}, "sqlglot.generator.Generator.uncache_sql": {"tf": 1}, "sqlglot.tokens.TokenType.UNCACHE": {"tf": 1}}, "df": 3}}}}}, "k": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.DataType.Type.UNKNOWN": {"tf": 1}}, "df": 1}}}}}, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "x": {"docs": {"sqlglot.expressions.Unhex": {"tf": 1}}, "df": 1}}}, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.optimizer.scope.Scope.unqualified_columns": {"tf": 1}}, "df": 1}}}}}}}}}, "b": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.tokens.TokenType.UNBOUNDED": {"tf": 1}}, "df": 1}}}}}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.tokens.TokenType.UNLOGGED": {"tf": 1}}, "df": 1}}}}}}, "p": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.UNPIVOT": {"tf": 1}}, "df": 1}}}}}}, "p": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.teradata.Teradata.Generator.update_sql": {"tf": 1}, "sqlglot.diff.Update": {"tf": 1}, "sqlglot.diff.Update.__init__": {"tf": 1}, "sqlglot.expressions.Update": {"tf": 1}, "sqlglot.expressions.update": {"tf": 1}, "sqlglot.generator.Generator.update_sql": {"tf": 1}, "sqlglot.tokens.TokenType.UPDATE": {"tf": 1}}, "df": 7}}}}, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.Upper": {"tf": 1}}, "df": 1, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.UppercaseColumnConstraint": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}}}}}, "d": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "f": {"docs": {"sqlglot.expressions.UDTF": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.UDTF": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_udtf": {"tf": 1}}, "df": 3, "s": {"docs": {"sqlglot.optimizer.scope.Scope.udtfs": {"tf": 1}}, "df": 1}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Use": {"tf": 1}, "sqlglot.generator.Generator.use_sql": {"tf": 1}, "sqlglot.tokens.TokenType.USE": {"tf": 1}}, "df": 3, "r": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.UserDefinedFunction": {"tf": 1}, "sqlglot.generator.Generator.userdefinedfunction_sql": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.expressions.Join.using": {"tf": 1}, "sqlglot.tokens.TokenType.USING": {"tf": 1}}, "df": 2}}}, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.DataType.Type.USMALLINT": {"tf": 1}, "sqlglot.tokens.TokenType.USMALLINT": {"tf": 1}}, "df": 2}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.DataType.Type.UINT": {"tf": 1}, "sqlglot.tokens.TokenType.UINT": {"tf": 1}}, "df": 2}}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.DataType.Type.UTINYINT": {"tf": 1}, "sqlglot.tokens.TokenType.UTINYINT": {"tf": 1}}, "df": 2}}}}}}}, "b": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.DataType.Type.UBIGINT": {"tf": 1}, "sqlglot.tokens.TokenType.UBIGINT": {"tf": 1}}, "df": 2}}}}}}, "u": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.DataType.Type.UUID": {"tf": 1}, "sqlglot.tokens.TokenType.UUID": {"tf": 1}}, "df": 2}}}}, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator.except_op": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.except_op": {"tf": 1}, "sqlglot.expressions.Unionable.except_": {"tf": 1}, "sqlglot.expressions.Except": {"tf": 1}, "sqlglot.expressions.except_": {"tf": 1}, "sqlglot.generator.Generator.except_sql": {"tf": 1}, "sqlglot.generator.Generator.except_op": {"tf": 1}, "sqlglot.tokens.TokenType.EXCEPT": {"tf": 1}}, "df": 8, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.dataframe.sql.DataFrame.exceptAll": {"tf": 1}}, "df": 1}}}}}}}, "p": {"docs": {"sqlglot.expressions.Exp": {"tf": 1}}, "df": 1, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dataframe.sql.Column.invoke_expression_over_column": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.expressions.Expression.__init__": {"tf": 1}, "sqlglot.expressions.Expression.this": {"tf": 1}, "sqlglot.expressions.Expression.expression": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.expressions": {"tf": 1}, "sqlglot.expressions.Expression.text": {"tf": 1}, "sqlglot.expressions.Expression.is_string": {"tf": 1}, "sqlglot.expressions.Expression.is_number": {"tf": 1}, "sqlglot.expressions.Expression.is_int": {"tf": 1}, "sqlglot.expressions.Expression.is_star": {"tf": 1}, "sqlglot.expressions.Expression.alias": {"tf": 1}, "sqlglot.expressions.Expression.output_name": {"tf": 1}, "sqlglot.expressions.Expression.copy": {"tf": 1}, "sqlglot.expressions.Expression.append": {"tf": 1}, "sqlglot.expressions.Expression.set": {"tf": 1}, "sqlglot.expressions.Expression.depth": {"tf": 1}, "sqlglot.expressions.Expression.iter_expressions": {"tf": 1}, "sqlglot.expressions.Expression.find": {"tf": 1}, "sqlglot.expressions.Expression.find_all": {"tf": 1}, "sqlglot.expressions.Expression.find_ancestor": {"tf": 1}, "sqlglot.expressions.Expression.parent_select": {"tf": 1}, "sqlglot.expressions.Expression.same_parent": {"tf": 1}, "sqlglot.expressions.Expression.root": {"tf": 1}, "sqlglot.expressions.Expression.walk": {"tf": 1}, "sqlglot.expressions.Expression.dfs": {"tf": 1}, "sqlglot.expressions.Expression.bfs": {"tf": 1}, "sqlglot.expressions.Expression.unnest": {"tf": 1}, "sqlglot.expressions.Expression.unalias": {"tf": 1}, "sqlglot.expressions.Expression.unnest_operands": {"tf": 1}, "sqlglot.expressions.Expression.flatten": {"tf": 1}, "sqlglot.expressions.Expression.sql": {"tf": 1}, "sqlglot.expressions.Expression.transform": {"tf": 1}, "sqlglot.expressions.Expression.replace": {"tf": 1}, "sqlglot.expressions.Expression.pop": {"tf": 1}, "sqlglot.expressions.Expression.assert_is": {"tf": 1}, "sqlglot.expressions.Expression.error_messages": {"tf": 1}, "sqlglot.expressions.Expression.dump": {"tf": 1}, "sqlglot.expressions.Expression.load": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_EXPRESSION": {"tf": 1}, "sqlglot.parser.Parser.expression": {"tf": 1}, "sqlglot.parser.Parser.validate_expression": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}}, "df": 45, "s": {"docs": {"sqlglot.expressions.Expression.expressions": {"tf": 1}, "sqlglot.expressions.Expression.iter_expressions": {"tf": 1}, "sqlglot.generator.Generator.expressions": {"tf": 1}, "sqlglot.generator.Generator.op_expressions": {"tf": 1}}, "df": 4}}}}}}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Explode": {"tf": 1}}, "df": 1}}}}, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.expressions.ExponentialTimeDecayedAvg": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.expand": {"tf": 1}, "sqlglot.optimizer.expand_laterals.expand_laterals": {"tf": 1}, "sqlglot.optimizer.expand_multi_table_selects.expand_multi_table_selects": {"tf": 1}}, "df": 3}}}}, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.dialect.arrow_json_extract_sql": {"tf": 1}, "sqlglot.dialects.dialect.arrow_json_extract_scalar_sql": {"tf": 1}, "sqlglot.dialects.dialect.struct_extract_sql": {"tf": 1}, "sqlglot.expressions.Extract": {"tf": 1}, "sqlglot.generator.Generator.extract_sql": {"tf": 1}, "sqlglot.optimizer.simplify.extract_date": {"tf": 1}, "sqlglot.optimizer.simplify.extract_interval": {"tf": 1}}, "df": 7}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.optimizer.scope.Scope.external_columns": {"tf": 1}}, "df": 1, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.ExternalProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.executor.execute": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.execute": {"tf": 1}, "sqlglot.tokens.TokenType.EXECUTE": {"tf": 1}}, "df": 3, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.errors.ExecuteError": {"tf": 1}}, "df": 1}}}}}, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.ExecuteAsProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.Exists": {"tf": 1}, "sqlglot.generator.Generator.exists_sql": {"tf": 1}, "sqlglot.tokens.TokenType.EXISTS": {"tf": 1}}, "df": 3}}}}}, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.Column.ensure_col": {"tf": 1}, "sqlglot.dataframe.sql.Column.ensure_cols": {"tf": 1}, "sqlglot.dataframe.sql.Column.ensure_literal": {"tf": 1}, "sqlglot.executor.table.ensure_tables": {"tf": 1}, "sqlglot.helper.ensure_list": {"tf": 1}, "sqlglot.helper.ensure_collection": {"tf": 1}, "sqlglot.optimizer.canonicalize.ensure_bool_predicates": {"tf": 1}, "sqlglot.schema.ensure_schema": {"tf": 1}, "sqlglot.schema.ensure_column_mapping": {"tf": 1}}, "df": 9}}}}, "d": {"docs": {"sqlglot.tokens.TokenType.BLOCK_END": {"tf": 1}, "sqlglot.tokens.TokenType.END": {"tf": 1}}, "df": 2, "s": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.dataframe.sql.Column.endswith": {"tf": 1}}, "df": 1}}}}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Encode": {"tf": 1}}, "df": 1, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.EncodeColumnConstraint": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}, "g": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.EngineProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}}}, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.Expression.error_messages": {"tf": 1}, "sqlglot.parser.Parser.raise_error": {"tf": 1}}, "df": 2, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.errors.ErrorLevel": {"tf": 1}, "sqlglot.errors.ErrorLevel.IGNORE": {"tf": 1}, "sqlglot.errors.ErrorLevel.WARN": {"tf": 1}, "sqlglot.errors.ErrorLevel.RAISE": {"tf": 1}, "sqlglot.errors.ErrorLevel.IMMEDIATE": {"tf": 1}}, "df": 5}}}}}, "s": {"docs": {"sqlglot.errors.merge_errors": {"tf": 1}, "sqlglot.parser.Parser.check_errors": {"tf": 1}}, "df": 2}}}}}, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.executor.context.Context.eval": {"tf": 1}, "sqlglot.executor.context.Context.eval_tuple": {"tf": 1}, "sqlglot.optimizer.simplify.eval_boolean": {"tf": 1}}, "df": 3}}}, "q": {"docs": {"sqlglot.expressions.EQ": {"tf": 1}, "sqlglot.generator.Generator.eq_sql": {"tf": 1}, "sqlglot.tokens.TokenType.EQ": {"tf": 1}, "sqlglot.tokens.TokenType.NULLSAFE_EQ": {"tf": 1}}, "df": 4}, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Escape": {"tf": 1}, "sqlglot.generator.Generator.escape_sql": {"tf": 1}, "sqlglot.tokens.TokenType.ESCAPE": {"tf": 1}}, "df": 3}}}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.eliminate_ctes.eliminate_ctes": {"tf": 1}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 1}, "sqlglot.optimizer.eliminate_subqueries.eliminate_subqueries": {"tf": 1}, "sqlglot.optimizer.simplify.absorb_and_eliminate": {"tf": 1}, "sqlglot.transforms.eliminate_distinct_on": {"tf": 1}, "sqlglot.transforms.eliminate_qualify": {"tf": 1}}, "df": 6}}}}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.ELSE": {"tf": 1}}, "df": 1}}}}, "r": {"docs": {"sqlglot.tokens.TokenType.R_PAREN": {"tf": 1}, "sqlglot.tokens.TokenType.R_BRACKET": {"tf": 1}, "sqlglot.tokens.TokenType.R_BRACE": {"tf": 1}}, "df": 3, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.DataFrame.replace": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.replace": {"tf": 1}, "sqlglot.expressions.Expression.replace": {"tf": 1}, "sqlglot.expressions.replace_children": {"tf": 1}, "sqlglot.expressions.replace_tables": {"tf": 1}, "sqlglot.expressions.replace_placeholders": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.replace_aliases": {"tf": 1}, "sqlglot.optimizer.scope.Scope.replace": {"tf": 1}, "sqlglot.tokens.TokenType.REPLACE": {"tf": 1}}, "df": 9}}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dataframe.sql.DataFrame.repartition": {"tf": 1}}, "df": 1}}}}}}}}, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.Repeat": {"tf": 1}}, "df": 1}}}}, "d": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.dialect.Dialects.REDSHIFT": {"tf": 1}, "sqlglot.dialects.redshift.Redshift": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Tokenizer": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.with_properties": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.renametable_sql": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1}}, "df": 9}}}}}, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Reduce": {"tf": 1}}, "df": 1}}, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.optimizer.canonicalize.remove_redundant_casts": {"tf": 1}}, "df": 1}}}}}}}, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.rename_func": {"tf": 1}, "sqlglot.expressions.rename_table": {"tf": 1}, "sqlglot.optimizer.scope.Scope.rename_source": {"tf": 1}}, "df": 3, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.redshift.Redshift.Generator.renametable_sql": {"tf": 1}, "sqlglot.expressions.RenameTable": {"tf": 1}, "sqlglot.generator.Generator.renametable_sql": {"tf": 1}}, "df": 3}}}}}}}}}, "c": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.no_recursive_cte_sql": {"tf": 1}, "sqlglot.tokens.TokenType.RECURSIVE": {"tf": 1}}, "df": 2}}}}}}, "o": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.MATCH_RECOGNIZE": {"tf": 1}}, "df": 1}}}}}}}, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.Return": {"tf": 1}, "sqlglot.generator.Generator.return_sql": {"tf": 1}}, "df": 2, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dialects.tsql.TSQL.Generator.returnsproperty_sql": {"tf": 1}, "sqlglot.expressions.ReturnsProperty": {"tf": 1}}, "df": 2}}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.expressions.Delete.returning": {"tf": 1}, "sqlglot.expressions.Returning": {"tf": 1}, "sqlglot.generator.Generator.returning_sql": {"tf": 1}, "sqlglot.tokens.TokenType.RETURNING": {"tf": 1}}, "df": 4}}}}}}}, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff.Remove": {"tf": 1}, "sqlglot.diff.Remove.__init__": {"tf": 1}, "sqlglot.optimizer.canonicalize.remove_redundant_casts": {"tf": 1}, "sqlglot.optimizer.scope.Scope.remove_source": {"tf": 1}, "sqlglot.optimizer.simplify.remove_compliments": {"tf": 1}, "sqlglot.optimizer.simplify.remove_where_true": {"tf": 1}, "sqlglot.transforms.remove_precision_parameterized_types": {"tf": 1}}, "df": 7}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.executor.env.reverse_key": {"tf": 1}, "sqlglot.executor.env.reverse_key.__init__": {"tf": 1}}, "df": 2}}}}}, "f": {"docs": {"sqlglot.optimizer.scope.Scope.ref_count": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Reference": {"tf": 1}, "sqlglot.generator.Generator.reference_sql": {"tf": 1}}, "df": 2, "s": {"docs": {"sqlglot.tokens.TokenType.REFERENCES": {"tf": 1}}, "df": 1}}}}}}}}, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.RESPECT_NULLS": {"tf": 1}}, "df": 1, "n": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.RespectNulls": {"tf": 1}, "sqlglot.generator.Generator.respectnulls_sql": {"tf": 1}}, "df": 2}}}}}}}}}, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.optimizer.qualify_columns.Resolver": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.__init__": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.get_table": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.all_columns": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.get_source_columns": {"tf": 1}}, "df": 5}}}}}, "e": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.parser.Parser.reset": {"tf": 1}, "sqlglot.tokens.Tokenizer.reset": {"tf": 1}}, "df": 2}}}, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "v": {"docs": {"sqlglot.expressions.ReadCSV": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.helper.csv_reader": {"tf": 1}}, "df": 1}}}}, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.RegexpExtract": {"tf": 1}}, "df": 1}}}}}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.RegexpLike": {"tf": 1}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.RegexpILike": {"tf": 1}}, "df": 1}}}}}, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.RegexpSplit": {"tf": 1}}, "df": 1}}}}}}}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.optimizer.optimize_joins.reorder_joins": {"tf": 1}}, "df": 1}}}}}, "w": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.simplify.rewrite_between": {"tf": 1}}, "df": 1}}}}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.Column.rlike": {"tf": 1}, "sqlglot.tokens.TokenType.RLIKE": {"tf": 1}}, "df": 2}}}}, "o": {"docs": {}, "df": 0, "w": {"docs": {"sqlglot.executor.context.Context.set_row": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_ROW": {"tf": 1}, "sqlglot.tokens.TokenType.ROW": {"tf": 1}}, "df": 3, "s": {"docs": {"sqlglot.tokens.TokenType.ROWS": {"tf": 1}}, "df": 1, "b": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dataframe.sql.Window.rowsBetween": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.rowsBetween": {"tf": 1}}, "df": 2}}}}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.executor.table.RowReader": {"tf": 1}, "sqlglot.executor.table.RowReader.__init__": {"tf": 1}}, "df": 2}}}}}}, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.RowFormatDelimitedProperty": {"tf": 1}, "sqlglot.generator.Generator.rowformatdelimitedproperty_sql": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.RowFormatSerdeProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.DataType.Type.ROWVERSION": {"tf": 1}, "sqlglot.tokens.TokenType.ROWVERSION": {"tf": 1}}, "df": 2}}}}}}}, "n": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.RowNumber": {"tf": 1}}, "df": 1}}}}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator.rollback_sql": {"tf": 1}, "sqlglot.expressions.Rollback": {"tf": 1}, "sqlglot.generator.Generator.rollback_sql": {"tf": 1}, "sqlglot.tokens.TokenType.ROLLBACK": {"tf": 1}}, "df": 4}}}}, "u": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.tokens.TokenType.ROLLUP": {"tf": 1}}, "df": 1}}}}, "o": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.Expression.root": {"tf": 1}, "sqlglot.generator.Generator.root_properties": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.ROOT": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_root": {"tf": 1}}, "df": 4}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.Round": {"tf": 1}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.executor.context.Context.set_range": {"tf": 1}, "sqlglot.parser.binary_range_parser": {"tf": 1}, "sqlglot.tokens.TokenType.RANGE": {"tf": 1}}, "df": 3, "b": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dataframe.sql.Window.rangeBetween": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.rangeBetween": {"tf": 1}}, "df": 2}}}}}}}, "n": {"docs": {"sqlglot.dialects.teradata.Teradata.Generator.rangen_sql": {"tf": 1}, "sqlglot.expressions.RangeN": {"tf": 1}}, "df": 2}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.executor.table.RangeReader": {"tf": 1}, "sqlglot.executor.table.RangeReader.__init__": {"tf": 1}}, "df": 2}}}}}}}}}, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.Dialect.get_or_raise": {"tf": 1}, "sqlglot.errors.ErrorLevel.RAISE": {"tf": 1}, "sqlglot.parser.Parser.raise_error": {"tf": 1}}, "df": 3}}}}, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.RIGHT": {"tf": 1}}, "df": 1}}}}}, "l": {"docs": {"sqlglot.tokens.TokenType.L_PAREN": {"tf": 1}, "sqlglot.tokens.TokenType.L_BRACKET": {"tf": 1}, "sqlglot.tokens.TokenType.L_BRACE": {"tf": 1}}, "df": 3, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe.sql.DataFrame.limit": {"tf": 1}, "sqlglot.expressions.Limit": {"tf": 1}, "sqlglot.expressions.Subqueryable.limit": {"tf": 1}, "sqlglot.expressions.Union.limit": {"tf": 1}, "sqlglot.expressions.Select.limit": {"tf": 1}, "sqlglot.generator.Generator.limit_sql": {"tf": 1}, "sqlglot.tokens.TokenType.LIMIT": {"tf": 1}}, "df": 7}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.dataframe.sql.Column.ensure_literal": {"tf": 1}, "sqlglot.expressions.Literal": {"tf": 1}, "sqlglot.expressions.Literal.number": {"tf": 1}, "sqlglot.expressions.Literal.string": {"tf": 1}, "sqlglot.expressions.Literal.output_name": {"tf": 1}, "sqlglot.generator.Generator.literal_sql": {"tf": 1}, "sqlglot.optimizer.simplify.date_literal": {"tf": 1}, "sqlglot.optimizer.simplify.boolean_literal": {"tf": 1}}, "df": 8, "s": {"docs": {"sqlglot.optimizer.simplify.simplify_literals": {"tf": 1}}, "df": 1}}}}}}, "k": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.Column.like": {"tf": 1}, "sqlglot.expressions.Like": {"tf": 1}, "sqlglot.generator.Generator.like_sql": {"tf": 1}, "sqlglot.parser.parse_like": {"tf": 1}, "sqlglot.tokens.TokenType.LIKE": {"tf": 1}, "sqlglot.tokens.TokenType.LIKE_ANY": {"tf": 1}}, "df": 6, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.LikeProperty": {"tf": 1}, "sqlglot.generator.Generator.likeproperty_sql": {"tf": 1}}, "df": 2}}}}}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.LikeAny": {"tf": 1}, "sqlglot.generator.Generator.likeany_sql": {"tf": 1}}, "df": 2}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.Func.from_arg_list": {"tf": 1}, "sqlglot.helper.ensure_list": {"tf": 1}}, "df": 2}}, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.lineage.lineage": {"tf": 1}}, "df": 1, "h": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.lineage.LineageHTML": {"tf": 1}, "sqlglot.lineage.LineageHTML.__init__": {"tf": 1}}, "df": 2}}}}}}}}}}, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe.sql.Column.asc_nulls_last": {"tf": 1}, "sqlglot.dataframe.sql.Column.desc_nulls_last": {"tf": 1}, "sqlglot.tokens.TokenType.NULLS_LAST": {"tf": 1}}, "df": 3, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.expressions.LastDateOfMonth": {"tf": 1}}, "df": 1}}}}}}}}}}}}}, "m": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.dialects.dialect.format_time_lambda": {"tf": 1}, "sqlglot.expressions.Lambda": {"tf": 1}, "sqlglot.generator.Generator.lambda_sql": {"tf": 1}}, "df": 3}}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.expressions.Lateral": {"tf": 1}, "sqlglot.expressions.Select.lateral": {"tf": 1}, "sqlglot.generator.Generator.lateral_sql": {"tf": 1}, "sqlglot.tokens.TokenType.LATERAL": {"tf": 1}}, "df": 4, "s": {"docs": {"sqlglot.optimizer.expand_laterals.expand_laterals": {"tf": 1}}, "df": 1}}}}}}, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.LANGUAGE": {"tf": 1}}, "df": 1, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.LanguageProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "w": {"docs": {"sqlglot.optimizer.normalize.distributive_law": {"tf": 1}}, "df": 1}, "z": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.tokens.TokenType.LAZY": {"tf": 1}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.locate_to_strposition": {"tf": 1}, "sqlglot.dialects.dialect.strposition_to_locate_sql": {"tf": 1}, "sqlglot.generator.Generator.locate_properties": {"tf": 1}}, "df": 3}, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.Properties.Location": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_CREATE": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_NAME": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_SCHEMA": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_WITH": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_ALIAS": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_EXPRESSION": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_INDEX": {"tf": 1}, "sqlglot.expressions.Properties.Location.UNSUPPORTED": {"tf": 1}}, "df": 9, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.LocationProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "l": {"docs": {"sqlglot.tokens.TokenType.LOCAL": {"tf": 1}, "sqlglot.tokens.TokenType.WITH_LOCAL_TIME_ZONE": {"tf": 1}}, "df": 2}}, "k": {"docs": {"sqlglot.expressions.Lock": {"tf": 1}, "sqlglot.expressions.Select.lock": {"tf": 1}, "sqlglot.generator.Generator.lock_sql": {"tf": 1}}, "df": 3, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.LockingProperty": {"tf": 1}, "sqlglot.generator.Generator.lockingproperty_sql": {"tf": 1}}, "df": 2}}}}}}}}}}}}}, "o": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.executor.python.PythonExecutor.nested_loop_join": {"tf": 1}}, "df": 1}}, "a": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.Expression.load": {"tf": 1}, "sqlglot.serde.load": {"tf": 1}, "sqlglot.tokens.TokenType.LOAD_DATA": {"tf": 1}}, "df": 3, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.expressions.LoadData": {"tf": 1}, "sqlglot.generator.Generator.loaddata_sql": {"tf": 1}}, "df": 2}}}}}}, "g": {"1": {"0": {"docs": {"sqlglot.expressions.Log10": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "2": {"docs": {"sqlglot.expressions.Log2": {"tf": 1}}, "df": 1}, "docs": {"sqlglot.expressions.Log": {"tf": 1}}, "df": 1, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.LogProperty": {"tf": 1}}, "df": 1}}}}}}}}, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.LogicalOr": {"tf": 1}}, "df": 1}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.LogicalAnd": {"tf": 1}}, "df": 1}}}}}}}}, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.DataType.Type.LONGTEXT": {"tf": 1}, "sqlglot.tokens.TokenType.LONGTEXT": {"tf": 1}}, "df": 2}}}}, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "b": {"docs": {"sqlglot.expressions.DataType.Type.LONGBLOB": {"tf": 1}, "sqlglot.tokens.TokenType.LONGBLOB": {"tf": 1}}, "df": 2}}}}}}, "w": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.Lower": {"tf": 1}, "sqlglot.optimizer.lower_identities.lower_identities": {"tf": 1}}, "df": 2}}}}, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.dialect.min_or_least": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.least_sql": {"tf": 1}, "sqlglot.expressions.Least": {"tf": 1}}, "df": 3}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.tokens.TokenType.LEADING": {"tf": 1}}, "df": 1}}}}}, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.expressions.Length": {"tf": 1}}, "df": 1}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.Levenshtein": {"tf": 1}}, "df": 1}}}}}}}}}, "f": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.LEFT": {"tf": 1}}, "df": 1}}}, "t": {"docs": {"sqlglot.expressions.LT": {"tf": 1}, "sqlglot.generator.Generator.lt_sql": {"tf": 1}, "sqlglot.tokens.TokenType.LT": {"tf": 1}, "sqlglot.tokens.TokenType.LT_AT": {"tf": 1}}, "df": 4, "e": {"docs": {"sqlglot.expressions.LTE": {"tf": 1}, "sqlglot.generator.Generator.lte_sql": {"tf": 1}, "sqlglot.tokens.TokenType.LTE": {"tf": 1}}, "df": 3}}, "n": {"docs": {"sqlglot.expressions.Ln": {"tf": 1}}, "df": 1}, "r": {"docs": {"sqlglot.tokens.TokenType.LR_ARROW": {"tf": 1}}, "df": 1}}, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe.sql.DataFrame.hint": {"tf": 1}, "sqlglot.expressions.Hint": {"tf": 1}, "sqlglot.generator.Generator.hint_sql": {"tf": 1}, "sqlglot.tokens.TokenType.HINT": {"tf": 1}}, "df": 4, "s": {"docs": {"sqlglot.optimizer.scope.Scope.join_hints": {"tf": 1}}, "df": 1}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.Dialects.HIVE": {"tf": 1}, "sqlglot.dialects.hive.Hive": {"tf": 1}, "sqlglot.dialects.hive.Hive.Tokenizer": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator.arrayagg_sql": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator.with_properties": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator.datatype_sql": {"tf": 1}}, "df": 8}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {"sqlglot.expressions.Histogram": {"tf": 1}}, "df": 1}}}}}}}}, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.executor.python.PythonExecutor.hash_join": {"tf": 1}, "sqlglot.tokens.TokenType.HASH": {"tf": 1}, "sqlglot.tokens.TokenType.HASH_ARROW": {"tf": 1}}, "df": 3}}, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.expressions.Having": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1}, "sqlglot.generator.Generator.having_sql": {"tf": 1}, "sqlglot.tokens.TokenType.HAVING": {"tf": 1}}, "df": 4}}}}}, "e": {"docs": {}, "df": 0, "x": {"docs": {"sqlglot.expressions.Hex": {"tf": 1}, "sqlglot.tokens.TokenType.HEX_STRING": {"tf": 1}}, "df": 2, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.expressions.HexString": {"tf": 1}, "sqlglot.generator.Generator.hexstring_sql": {"tf": 1}}, "df": 2}}}}}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.expressions.Hll": {"tf": 1}}, "df": 1, "s": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.expressions.DataType.Type.HLLSKETCH": {"tf": 1}, "sqlglot.tokens.TokenType.HLLSKETCH": {"tf": 1}}, "df": 2}}}}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.DataType.Type.HSTORE": {"tf": 1}, "sqlglot.tokens.TokenType.HSTORE": {"tf": 1}}, "df": 2}}}}}, "t": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.lineage.Node.to_html": {"tf": 1}}, "df": 1}}}}, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dataframe.sql.GroupedData.mean": {"tf": 1}}, "df": 1}}, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.errors.concat_messages": {"tf": 1}, "sqlglot.expressions.Expression.error_messages": {"tf": 1}}, "df": 2}}}}}}, "r": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.errors.merge_errors": {"tf": 1}, "sqlglot.expressions.Merge": {"tf": 1}, "sqlglot.generator.Generator.merge_sql": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_ctes": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_derived_tables": {"tf": 1}, "sqlglot.tokens.TokenType.MERGE": {"tf": 1}}, "df": 7, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.MergeBlockRatioProperty": {"tf": 1}, "sqlglot.generator.Generator.mergeblockratioproperty_sql": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}}}}}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.DataType.Type.MEDIUMTEXT": {"tf": 1}, "sqlglot.tokens.TokenType.MEDIUMTEXT": {"tf": 1}}, "df": 2}}}}, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "b": {"docs": {"sqlglot.expressions.DataType.Type.MEDIUMBLOB": {"tf": 1}, "sqlglot.tokens.TokenType.MEDIUMBLOB": {"tf": 1}}, "df": 2}}}}}}}}}, "a": {"docs": {}, "df": 0, "x": {"docs": {"sqlglot.dataframe.sql.GroupedData.max": {"tf": 1}, "sqlglot.dialects.dialect.max_or_greatest": {"tf": 1}, "sqlglot.expressions.Max": {"tf": 1}}, "df": 3}, "p": {"docs": {"sqlglot.dialects.dialect.var_map_sql": {"tf": 1}, "sqlglot.expressions.DataType.Type.MAP": {"tf": 1}, "sqlglot.expressions.Map": {"tf": 1}, "sqlglot.parser.parse_var_map": {"tf": 1}, "sqlglot.tokens.TokenType.MAP": {"tf": 1}}, "df": 5, "p": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.schema.MappingSchema.from_mapping_schema": {"tf": 1}, "sqlglot.schema.ensure_column_mapping": {"tf": 1}}, "df": 2, "s": {"docs": {"sqlglot.expressions.Func.default_parser_mappings": {"tf": 1}}, "df": 1, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.schema.MappingSchema": {"tf": 1}, "sqlglot.schema.MappingSchema.__init__": {"tf": 1}, "sqlglot.schema.MappingSchema.from_mapping_schema": {"tf": 1}, "sqlglot.schema.MappingSchema.copy": {"tf": 1}, "sqlglot.schema.MappingSchema.add_table": {"tf": 1}, "sqlglot.schema.MappingSchema.column_names": {"tf": 1}, "sqlglot.schema.MappingSchema.get_column_type": {"tf": 1}}, "df": 7}}}}}}}}}}}, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.tokens.TokenType.MATCH_RECOGNIZE": {"tf": 1}}, "df": 1, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.MatchRecognize": {"tf": 1}, "sqlglot.generator.Generator.matchrecognize_sql": {"tf": 1}}, "df": 2}}}}}}}}}, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.MatchAgainst": {"tf": 1}, "sqlglot.generator.Generator.matchagainst_sql": {"tf": 1}}, "df": 2}}}}}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.tokens.TokenType.MATERIALIZED": {"tf": 1}}, "df": 1, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.MaterializedProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}, "y": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.maybe_parse": {"tf": 1}, "sqlglot.generator.Generator.maybe_comment": {"tf": 1}}, "df": 2}}}, "r": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.tokens.TokenType.JOIN_MARKER": {"tf": 1}}, "df": 1}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dataframe.sql.GroupedData.min": {"tf": 1}, "sqlglot.dialects.dialect.min_or_least": {"tf": 1}, "sqlglot.expressions.Min": {"tf": 1}}, "df": 3}}, "o": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.dialects.teradata.Teradata.Generator.mod_sql": {"tf": 1}, "sqlglot.expressions.Mod": {"tf": 1}, "sqlglot.generator.Generator.mod_sql": {"tf": 1}, "sqlglot.tokens.TokenType.MOD": {"tf": 1}}, "df": 4, "e": {"docs": {"sqlglot.dataframe.sql.DataFrameWriter.mode": {"tf": 1}}, "df": 1}, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.generator.Generator.query_modifiers": {"tf": 1}}, "df": 1}}}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff.Move": {"tf": 1}, "sqlglot.diff.Move.__init__": {"tf": 1}}, "df": 2}}, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.DataType.Type.MONEY": {"tf": 1}, "sqlglot.tokens.TokenType.MONEY": {"tf": 1}}, "df": 2}}, "t": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.expressions.Month": {"tf": 1}}, "df": 1}}}}, "y": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.dialects.dialect.Dialects.MYSQL": {"tf": 1}, "sqlglot.dialects.mysql.MySQL": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Tokenizer": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator.show_sql": {"tf": 1}}, "df": 6}}}}, "u": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.expressions.Mul": {"tf": 1}, "sqlglot.generator.Generator.mul_sql": {"tf": 1}}, "df": 2, "t": {"docs": {}, "df": 0, "i": {"docs": {"sqlglot.optimizer.expand_multi_table_selects.expand_multi_table_selects": {"tf": 1}}, "df": 1}}}}}, "b": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dataframe.sql.Column.binary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.inverse_binary_op": {"tf": 1}, "sqlglot.expressions.DataType.Type.BINARY": {"tf": 1}, "sqlglot.expressions.Binary": {"tf": 1}, "sqlglot.generator.Generator.binary": {"tf": 1}, "sqlglot.parser.binary_range_parser": {"tf": 1}, "sqlglot.tokens.TokenType.BINARY": {"tf": 1}}, "df": 7}}}}, "g": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dialects.bigquery.BigQuery": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Tokenizer": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.array_sql": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.transaction_sql": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.commit_sql": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.rollback_sql": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.in_unnest_op": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.except_op": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.intersect_op": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.BIGQUERY": {"tf": 1}}, "df": 12}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.DataType.Type.BIGINT": {"tf": 1}, "sqlglot.tokens.TokenType.BIGINT": {"tf": 1}}, "df": 2}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.expressions.DataType.Type.BIGSERIAL": {"tf": 1}, "sqlglot.tokens.TokenType.BIGSERIAL": {"tf": 1}}, "df": 2}}}}}}}, "t": {"docs": {"sqlglot.expressions.DataType.Type.BIT": {"tf": 1}, "sqlglot.tokens.TokenType.BIT_STRING": {"tf": 1}, "sqlglot.tokens.TokenType.BIT": {"tf": 1}}, "df": 3, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.expressions.BitString": {"tf": 1}, "sqlglot.generator.Generator.bitstring_sql": {"tf": 1}}, "df": 2}}}}}}, "w": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.BitwiseAnd": {"tf": 1}, "sqlglot.generator.Generator.bitwiseand_sql": {"tf": 1}}, "df": 2}}}, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.BitwiseLeftShift": {"tf": 1}, "sqlglot.generator.Generator.bitwiseleftshift_sql": {"tf": 1}}, "df": 2}}}}}}}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.BitwiseOr": {"tf": 1}, "sqlglot.generator.Generator.bitwiseor_sql": {"tf": 1}}, "df": 2}}, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.BitwiseRightShift": {"tf": 1}, "sqlglot.generator.Generator.bitwiserightshift_sql": {"tf": 1}}, "df": 2}}}}}}}}}}, "x": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.BitwiseXor": {"tf": 1}, "sqlglot.generator.Generator.bitwisexor_sql": {"tf": 1}}, "df": 2}}}, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.BitwiseNot": {"tf": 1}, "sqlglot.generator.Generator.bitwisenot_sql": {"tf": 1}}, "df": 2}}}}}}}}}, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dataframe.sql.Column.between": {"tf": 1}, "sqlglot.expressions.Between": {"tf": 1}, "sqlglot.generator.Generator.between_sql": {"tf": 1}, "sqlglot.optimizer.simplify.rewrite_between": {"tf": 1}, "sqlglot.tokens.TokenType.BETWEEN": {"tf": 1}}, "df": 5}}}}}, "g": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.tokens.TokenType.BEGIN": {"tf": 1}}, "df": 1}}}}, "f": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.Expression.bfs": {"tf": 1}}, "df": 1}}, "y": {"docs": {"sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.generator.Generator.partition_by_sql": {"tf": 1}, "sqlglot.tokens.TokenType.BY_DEFAULT": {"tf": 1}, "sqlglot.tokens.TokenType.CLUSTER_BY": {"tf": 1}, "sqlglot.tokens.TokenType.DISTRIBUTE_BY": {"tf": 1}, "sqlglot.tokens.TokenType.GROUP_BY": {"tf": 1}, "sqlglot.tokens.TokenType.ORDER_BY": {"tf": 1}, "sqlglot.tokens.TokenType.PARTITION_BY": {"tf": 1}, "sqlglot.tokens.TokenType.SORT_BY": {"tf": 1}}, "df": 12, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.BYTE_STRING": {"tf": 1}}, "df": 1, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.expressions.ByteString": {"tf": 1}}, "df": 1}}}}}}}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.tokens.TokenType.BLOCK_START": {"tf": 1}, "sqlglot.tokens.TokenType.BLOCK_END": {"tf": 1}}, "df": 2, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.BlockCompressionProperty": {"tf": 1}, "sqlglot.generator.Generator.blockcompressionproperty_sql": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}}}}}}}}}}, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.optimizer.canonicalize.ensure_bool_predicates": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.Boolean": {"tf": 1}, "sqlglot.expressions.DataType.Type.BOOLEAN": {"tf": 1}, "sqlglot.generator.Generator.boolean_sql": {"tf": 1}, "sqlglot.optimizer.simplify.eval_boolean": {"tf": 1}, "sqlglot.optimizer.simplify.boolean_literal": {"tf": 1}, "sqlglot.tokens.TokenType.BOOLEAN": {"tf": 1}}, "df": 6}}}}}, "t": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.tokens.TokenType.BOTH": {"tf": 1}}, "df": 1}}}, "u": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.DataType.build": {"tf": 1}, "sqlglot.expressions.Dot.build": {"tf": 1}, "sqlglot.optimizer.scope.build_scope": {"tf": 1}}, "df": 3}}}, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.BUCKET": {"tf": 1}}, "df": 1}}}}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.Bracket": {"tf": 1}, "sqlglot.generator.Generator.bracket_sql": {"tf": 1}, "sqlglot.tokens.TokenType.L_BRACKET": {"tf": 1}, "sqlglot.tokens.TokenType.R_BRACKET": {"tf": 1}}, "df": 4}}}, "e": {"docs": {"sqlglot.tokens.TokenType.L_BRACE": {"tf": 1}, "sqlglot.tokens.TokenType.R_BRACE": {"tf": 1}}, "df": 2}}, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.optimizer.scope.Scope.branch": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.tokens.TokenType.BREAK": {"tf": 1}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.tokens.TokenType.BACKSLASH": {"tf": 1}}, "df": 1}}}}}}}}}, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.Column.set_table_name": {"tf": 1}, "sqlglot.expressions.Expression.output_name": {"tf": 1}, "sqlglot.expressions.Column.output_name": {"tf": 1}, "sqlglot.expressions.Identifier.output_name": {"tf": 1}, "sqlglot.expressions.Literal.output_name": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_NAME": {"tf": 1}, "sqlglot.expressions.Subquery.output_name": {"tf": 1}, "sqlglot.expressions.Star.output_name": {"tf": 1}, "sqlglot.expressions.Alias.output_name": {"tf": 1}, "sqlglot.expressions.Func.sql_name": {"tf": 1}, "sqlglot.expressions.Cast.output_name": {"tf": 1}, "sqlglot.expressions.table_name": {"tf": 1}, "sqlglot.helper.find_new_name": {"tf": 1}}, "df": 13, "s": {"docs": {"sqlglot.expressions.Func.sql_names": {"tf": 1}, "sqlglot.expressions.column_table_names": {"tf": 1}, "sqlglot.optimizer.optimize_joins.other_table_names": {"tf": 1}, "sqlglot.schema.Schema.column_names": {"tf": 1}, "sqlglot.schema.MappingSchema.column_names": {"tf": 1}}, "df": 5}}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.expressions.National": {"tf": 1}, "sqlglot.generator.Generator.national_sql": {"tf": 1}, "sqlglot.tokens.TokenType.NATIONAL": {"tf": 1}}, "df": 3}}}}}, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.tokens.TokenType.NATURAL": {"tf": 1}}, "df": 1}}}}}, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.generator.Generator.naked_property": {"tf": 1}}, "df": 1}}}}, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.executor.env.null_if_any": {"tf": 1}, "sqlglot.expressions.Null": {"tf": 1}, "sqlglot.expressions.DataType.Type.NULL": {"tf": 1}, "sqlglot.expressions.null": {"tf": 1}, "sqlglot.generator.Generator.null_sql": {"tf": 1}, "sqlglot.optimizer.simplify.is_null": {"tf": 1}, "sqlglot.tokens.TokenType.NULL": {"tf": 1}}, "df": 7, "s": {"docs": {"sqlglot.dataframe.sql.Column.asc_nulls_first": {"tf": 1}, "sqlglot.dataframe.sql.Column.asc_nulls_last": {"tf": 1}, "sqlglot.dataframe.sql.Column.desc_nulls_first": {"tf": 1}, "sqlglot.dataframe.sql.Column.desc_nulls_last": {"tf": 1}, "sqlglot.executor.env.filter_nulls": {"tf": 1}, "sqlglot.tokens.TokenType.IGNORE_NULLS": {"tf": 1}, "sqlglot.tokens.TokenType.NULLS_FIRST": {"tf": 1}, "sqlglot.tokens.TokenType.NULLS_LAST": {"tf": 1}, "sqlglot.tokens.TokenType.RESPECT_NULLS": {"tf": 1}}, "df": 9, "a": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.NULLSAFE_EQ": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "q": {"docs": {"sqlglot.expressions.NullSafeEQ": {"tf": 1}, "sqlglot.generator.Generator.nullsafeeq_sql": {"tf": 1}}, "df": 2}}, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {"sqlglot.expressions.NullSafeNEQ": {"tf": 1}, "sqlglot.generator.Generator.nullsafeneq_sql": {"tf": 1}}, "df": 2}}}}}}}, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.DataType.Type.NULLABLE": {"tf": 1}, "sqlglot.tokens.TokenType.NULLABLE": {"tf": 1}}, "df": 2}}}}}}, "m": {"docs": {"sqlglot.helper.split_num_words": {"tf": 1}}, "df": 1, "b": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.Expression.is_number": {"tf": 1}, "sqlglot.expressions.Literal.number": {"tf": 1}, "sqlglot.tokens.TokenType.NUMBER": {"tf": 1}, "sqlglot.tokens.Token.number": {"tf": 1}}, "df": 4, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.NumberToStr": {"tf": 1}}, "df": 1}}}}}}}}}}, "o": {"docs": {"sqlglot.dialects.dialect.no_ilike_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_paren_current_date_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_recursive_cte_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_safe_divide_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_tablesample_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_pivot_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_trycast_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_properties_sql": {"tf": 1}, "sqlglot.generator.Generator.no_identify": {"tf": 1}, "sqlglot.tokens.TokenType.NO_ACTION": {"tf": 1}}, "df": 10, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.drill.Drill.Generator.normalize_func": {"tf": 1}, "sqlglot.generator.Generator.normalize_func": {"tf": 1}, "sqlglot.optimizer.normalize.normalize": {"tf": 1}, "sqlglot.optimizer.optimize_joins.normalize": {"tf": 1}}, "df": 4, "d": {"docs": {"sqlglot.optimizer.normalize.normalized": {"tf": 1}}, "df": 1}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.optimizer.normalize.normalization_distance": {"tf": 1}}, "df": 1}}}}}}}}}}}, "t": {"docs": {"sqlglot.expressions.Condition.not_": {"tf": 1}, "sqlglot.expressions.Not": {"tf": 1}, "sqlglot.expressions.not_": {"tf": 1}, "sqlglot.generator.Generator.not_sql": {"tf": 1}, "sqlglot.optimizer.simplify.simplify_not": {"tf": 1}, "sqlglot.tokens.TokenType.NOT": {"tf": 1}}, "df": 6, "n": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.tokens.TokenType.NOTNULL": {"tf": 1}}, "df": 1, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.NotNullColumnConstraint": {"tf": 1}, "sqlglot.generator.Generator.notnullcolumnconstraint_sql": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}}}}}}}}, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.NoPrimaryIndexProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.lineage.Node": {"tf": 1}, "sqlglot.lineage.Node.__init__": {"tf": 1}, "sqlglot.lineage.Node.walk": {"tf": 1}, "sqlglot.lineage.Node.to_html": {"tf": 1}}, "df": 4, "s": {"docs": {"sqlglot.optimizer.pushdown_predicates.nodes_for_predicate": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "w": {"docs": {"sqlglot.errors.ParseError.new": {"tf": 1}, "sqlglot.helper.find_new_name": {"tf": 1}, "sqlglot.trie.new_trie": {"tf": 1}}, "df": 3}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.executor.python.PythonExecutor.nested_loop_join": {"tf": 1}}, "df": 1}}}}, "q": {"docs": {"sqlglot.expressions.NEQ": {"tf": 1}, "sqlglot.generator.Generator.neq_sql": {"tf": 1}, "sqlglot.tokens.TokenType.NEQ": {"tf": 1}}, "df": 3}, "g": {"docs": {"sqlglot.expressions.Neg": {"tf": 1}, "sqlglot.generator.Generator.neg_sql": {"tf": 1}}, "df": 2}, "x": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.NEXT": {"tf": 1}}, "df": 1}}}, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.DataType.Type.NCHAR": {"tf": 1}, "sqlglot.tokens.TokenType.NCHAR": {"tf": 1}}, "df": 2}}}}, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.DataType.Type.NVARCHAR": {"tf": 1}, "sqlglot.tokens.TokenType.NVARCHAR": {"tf": 1}}, "df": 2}}}}}}, "l": {"2": {"docs": {"sqlglot.expressions.Nvl2": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}}}, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dialects.dialect.var_map_sql": {"tf": 1}, "sqlglot.expressions.Var": {"tf": 1}, "sqlglot.expressions.var": {"tf": 1}, "sqlglot.generator.Generator.var_sql": {"tf": 1}, "sqlglot.parser.parse_var_map": {"tf": 1}, "sqlglot.tokens.TokenType.VAR": {"tf": 1}, "sqlglot.tokens.Token.var": {"tf": 1}}, "df": 7, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.DataType.Type.VARCHAR": {"tf": 1}, "sqlglot.tokens.TokenType.VARCHAR": {"tf": 1}}, "df": 2}}}}, "b": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.DataType.Type.VARBINARY": {"tf": 1}, "sqlglot.tokens.TokenType.VARBINARY": {"tf": 1}}, "df": 2}}}}}}, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.DataType.Type.VARIANT": {"tf": 1}, "sqlglot.tokens.TokenType.VARIANT": {"tf": 1}}, "df": 2}, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Variance": {"tf": 1}}, "df": 1, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.expressions.VariancePop": {"tf": 1}}, "df": 1}}}}}}}}, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.expressions.VarMap": {"tf": 1}}, "df": 1}}}}, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1}, "sqlglot.expressions.Values": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1}, "sqlglot.generator.Generator.values_sql": {"tf": 1}, "sqlglot.tokens.TokenType.VALUES": {"tf": 1}}, "df": 6}}}, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.qualify_columns.validate_qualify_columns": {"tf": 1}, "sqlglot.parser.Parser.validate_expression": {"tf": 1}}, "df": 2}}}}}}}, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.VolatilityProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}, "e": {"docs": {"sqlglot.tokens.TokenType.VOLATILE": {"tf": 1}}, "df": 1}}}}}}}, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "w": {"docs": {"sqlglot.tokens.TokenType.VIEW": {"tf": 1}}, "df": 1}}}}, "x": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.expressions.DataType.Type.XML": {"tf": 1}, "sqlglot.tokens.TokenType.XML": {"tf": 1}}, "df": 2, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.oracle.Oracle.Generator.xmltable_sql": {"tf": 1}, "sqlglot.expressions.XMLTable": {"tf": 1}}, "df": 2}}}}}}}}, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.diff.Keep": {"tf": 1}, "sqlglot.diff.Keep.__init__": {"tf": 1}}, "df": 2}}, "y": {"docs": {"sqlglot.executor.env.reverse_key": {"tf": 1}, "sqlglot.executor.env.reverse_key.__init__": {"tf": 1}, "sqlglot.tokens.TokenType.FOREIGN_KEY": {"tf": 1}, "sqlglot.tokens.TokenType.PRIMARY_KEY": {"tf": 1}}, "df": 4}}, "w": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.expressions.Kwarg": {"tf": 1}, "sqlglot.generator.Generator.kwarg_sql": {"tf": 1}}, "df": 2}}}}}, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.Qualify": {"tf": 1}, "sqlglot.expressions.Select.qualify": {"tf": 1}, "sqlglot.generator.Generator.qualify_sql": {"tf": 1}, "sqlglot.optimizer.qualify_columns.qualify_columns": {"tf": 1}, "sqlglot.optimizer.qualify_columns.validate_qualify_columns": {"tf": 1}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"tf": 1}, "sqlglot.tokens.TokenType.QUALIFY": {"tf": 1}, "sqlglot.transforms.eliminate_qualify": {"tf": 1}}, "df": 8}}}}, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Quantile": {"tf": 1}}, "df": 1, "s": {"docs": {"sqlglot.expressions.Quantiles": {"tf": 1}}, "df": 1}, "i": {"docs": {}, "df": 0, "f": {"docs": {"sqlglot.expressions.QuantileIf": {"tf": 1}}, "df": 1}}}}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.generator.Generator.query_modifiers": {"tf": 1}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.QUOTE": {"tf": 1}}, "df": 1}}}}}, "y": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.Year": {"tf": 1}}, "df": 1}}}}, "z": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.AT_TIME_ZONE": {"tf": 1}, "sqlglot.tokens.TokenType.WITH_TIME_ZONE": {"tf": 1}, "sqlglot.tokens.TokenType.WITH_LOCAL_TIME_ZONE": {"tf": 1}, "sqlglot.tokens.TokenType.WITHOUT_TIME_ZONE": {"tf": 1}}, "df": 4}}}}}}, "fullname": {"root": {"docs": {"sqlglot.dataframe.sql.DataFrame.__init__": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.__init__": {"tf": 1}, "sqlglot.dataframe.sql.Column.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.__init__": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameReader.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.__init__": {"tf": 1}, "sqlglot.diff.Insert.__init__": {"tf": 1}, "sqlglot.diff.Remove.__init__": {"tf": 1}, "sqlglot.diff.Move.__init__": {"tf": 1}, "sqlglot.diff.Update.__init__": {"tf": 1}, "sqlglot.diff.Keep.__init__": {"tf": 1}, "sqlglot.diff.ChangeDistiller.__init__": {"tf": 1}, "sqlglot.errors.ParseError.__init__": {"tf": 1}, "sqlglot.executor.context.Context.__init__": {"tf": 1}, "sqlglot.executor.env.reverse_key.__init__": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.__init__": {"tf": 1}, "sqlglot.executor.table.Table.__init__": {"tf": 1}, "sqlglot.executor.table.TableIter.__init__": {"tf": 1}, "sqlglot.executor.table.RangeReader.__init__": {"tf": 1}, "sqlglot.executor.table.RowReader.__init__": {"tf": 1}, "sqlglot.expressions.Expression.__init__": {"tf": 1}, "sqlglot.expressions.Condition.and_": {"tf": 1}, "sqlglot.expressions.Condition.or_": {"tf": 1}, "sqlglot.expressions.Condition.not_": {"tf": 1}, "sqlglot.expressions.Unionable.except_": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.TimeUnit.__init__": {"tf": 1}, "sqlglot.expressions.except_": {"tf": 1}, "sqlglot.expressions.from_": {"tf": 1}, "sqlglot.expressions.and_": {"tf": 1}, "sqlglot.expressions.or_": {"tf": 1}, "sqlglot.expressions.not_": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1}, "sqlglot.expressions.table_": {"tf": 1}, "sqlglot.generator.Generator.__init__": {"tf": 1}, "sqlglot.lineage.Node.__init__": {"tf": 1}, "sqlglot.lineage.LineageHTML.__init__": {"tf": 1}, "sqlglot.optimizer.annotate_types.TypeAnnotator.__init__": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.__init__": {"tf": 1}, "sqlglot.optimizer.scope.Scope.__init__": {"tf": 1}, "sqlglot.parser.Parser.__init__": {"tf": 1}, "sqlglot.planner.Plan.__init__": {"tf": 1}, "sqlglot.planner.SetOperation.__init__": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema.__init__": {"tf": 1}, "sqlglot.schema.MappingSchema.__init__": {"tf": 1}, "sqlglot.tokens.Token.__init__": {"tf": 1}}, "df": 48, "s": {"docs": {"sqlglot.planner.Step.to_s": {"tf": 1}}, "df": 1, "q": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.dataframe.sql": {"tf": 1}, "sqlglot.dataframe.sql.SparkSession": {"tf": 1}, "sqlglot.dataframe.sql.SparkSession.table": {"tf": 1}, "sqlglot.dataframe.sql.SparkSession.createDataFrame": {"tf": 1}, "sqlglot.dataframe.sql.SparkSession.sql": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sql": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.copy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.select": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.alias": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.where": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.filter": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.groupBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.agg": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.join": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.union": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.unionAll": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.unionByName": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.intersect": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.intersectAll": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.exceptAll": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.distinct": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.dropDuplicates": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.dropna": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.replace": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.withColumn": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.withColumnRenamed": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.drop": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.limit": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.hint": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.repartition": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.coalesce": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.cache": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.persist": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.__init__": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.agg": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.count": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.mean": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.avg": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.max": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.min": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.sum": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.pivot": {"tf": 1}, "sqlglot.dataframe.sql.Column": {"tf": 1}, "sqlglot.dataframe.sql.Column.__init__": {"tf": 1}, "sqlglot.dataframe.sql.Column.ensure_col": {"tf": 1}, "sqlglot.dataframe.sql.Column.ensure_cols": {"tf": 1}, "sqlglot.dataframe.sql.Column.invoke_anonymous_function": {"tf": 1}, "sqlglot.dataframe.sql.Column.invoke_expression_over_column": {"tf": 1}, "sqlglot.dataframe.sql.Column.binary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.inverse_binary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.unary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.ensure_literal": {"tf": 1}, "sqlglot.dataframe.sql.Column.copy": {"tf": 1}, "sqlglot.dataframe.sql.Column.set_table_name": {"tf": 1}, "sqlglot.dataframe.sql.Column.sql": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.alias": {"tf": 1}, "sqlglot.dataframe.sql.Column.asc": {"tf": 1}, "sqlglot.dataframe.sql.Column.desc": {"tf": 1}, "sqlglot.dataframe.sql.Column.asc_nulls_first": {"tf": 1}, "sqlglot.dataframe.sql.Column.asc_nulls_last": {"tf": 1}, "sqlglot.dataframe.sql.Column.desc_nulls_first": {"tf": 1}, "sqlglot.dataframe.sql.Column.desc_nulls_last": {"tf": 1}, "sqlglot.dataframe.sql.Column.when": {"tf": 1}, "sqlglot.dataframe.sql.Column.otherwise": {"tf": 1}, "sqlglot.dataframe.sql.Column.isNull": {"tf": 1}, "sqlglot.dataframe.sql.Column.isNotNull": {"tf": 1}, "sqlglot.dataframe.sql.Column.cast": {"tf": 1}, "sqlglot.dataframe.sql.Column.startswith": {"tf": 1}, "sqlglot.dataframe.sql.Column.endswith": {"tf": 1}, "sqlglot.dataframe.sql.Column.rlike": {"tf": 1}, "sqlglot.dataframe.sql.Column.like": {"tf": 1}, "sqlglot.dataframe.sql.Column.ilike": {"tf": 1}, "sqlglot.dataframe.sql.Column.substr": {"tf": 1}, "sqlglot.dataframe.sql.Column.isin": {"tf": 1}, "sqlglot.dataframe.sql.Column.between": {"tf": 1}, "sqlglot.dataframe.sql.Column.over": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.drop": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.fill": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.replace": {"tf": 1}, "sqlglot.dataframe.sql.Window": {"tf": 1}, "sqlglot.dataframe.sql.Window.partitionBy": {"tf": 1}, "sqlglot.dataframe.sql.Window.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.Window.rowsBetween": {"tf": 1}, "sqlglot.dataframe.sql.Window.rangeBetween": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.__init__": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.copy": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.sql": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.WindowSpec.partitionBy": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.rowsBetween": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.rangeBetween": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameReader": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameReader.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameReader.table": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.copy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.sql": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrameWriter.mode": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.insertInto": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.saveAsTable": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.array_sql": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.transaction_sql": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.commit_sql": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.rollback_sql": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator.cte_sql": {"tf": 1}, "sqlglot.dialects.dialect.approx_count_distinct_sql": {"tf": 1}, "sqlglot.dialects.dialect.if_sql": {"tf": 1}, "sqlglot.dialects.dialect.arrow_json_extract_sql": {"tf": 1}, "sqlglot.dialects.dialect.arrow_json_extract_scalar_sql": {"tf": 1}, "sqlglot.dialects.dialect.inline_array_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_ilike_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_paren_current_date_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_recursive_cte_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_safe_divide_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_tablesample_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_pivot_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_trycast_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_properties_sql": {"tf": 1}, "sqlglot.dialects.dialect.str_position_sql": {"tf": 1}, "sqlglot.dialects.dialect.struct_extract_sql": {"tf": 1}, "sqlglot.dialects.dialect.var_map_sql": {"tf": 1}, "sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1}, "sqlglot.dialects.dialect.timestamptrunc_sql": {"tf": 1}, "sqlglot.dialects.dialect.strposition_to_locate_sql": {"tf": 1}, "sqlglot.dialects.dialect.timestrtotime_sql": {"tf": 1}, "sqlglot.dialects.dialect.datestrtodate_sql": {"tf": 1}, "sqlglot.dialects.dialect.trim_sql": {"tf": 1}, "sqlglot.dialects.dialect.str_to_time_sql": {"tf": 1}, "sqlglot.dialects.dialect.ts_or_ds_to_date_sql": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator.tablesample_sql": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator.arrayagg_sql": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator.show_sql": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator.offset_sql": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator.column_sql": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator.xmltable_sql": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator.transaction_sql": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.renametable_sql": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.settag_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.describe_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.generatedasidentitycolumnconstraint_sql": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator.cast_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.cast_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.datediff_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.groupconcat_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.least_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.transaction_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.partitionedbyproperty_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.update_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.mod_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.rangen_sql": {"tf": 1}, "sqlglot.dialects.tsql.generate_date_delta_with_unit_sql": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator.offset_sql": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator.systemtime_sql": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator.returnsproperty_sql": {"tf": 1}, "sqlglot.expressions.Expression.sql": {"tf": 1}, "sqlglot.expressions.Func.sql_names": {"tf": 1}, "sqlglot.expressions.Func.sql_name": {"tf": 1}, "sqlglot.generator.Generator.sql": {"tf": 1}, "sqlglot.generator.Generator.uncache_sql": {"tf": 1}, "sqlglot.generator.Generator.cache_sql": {"tf": 1}, "sqlglot.generator.Generator.characterset_sql": {"tf": 1}, "sqlglot.generator.Generator.column_sql": {"tf": 1}, "sqlglot.generator.Generator.columnposition_sql": {"tf": 1}, "sqlglot.generator.Generator.columndef_sql": {"tf": 1}, "sqlglot.generator.Generator.columnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.autoincrementcolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.compresscolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.generatedasidentitycolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.notnullcolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.primarykeycolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.uniquecolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.create_sql": {"tf": 1}, "sqlglot.generator.Generator.describe_sql": {"tf": 1}, "sqlglot.generator.Generator.with_sql": {"tf": 1}, "sqlglot.generator.Generator.cte_sql": {"tf": 1}, "sqlglot.generator.Generator.tablealias_sql": {"tf": 1}, "sqlglot.generator.Generator.bitstring_sql": {"tf": 1}, "sqlglot.generator.Generator.hexstring_sql": {"tf": 1}, "sqlglot.generator.Generator.datatype_sql": {"tf": 1}, "sqlglot.generator.Generator.directory_sql": {"tf": 1}, "sqlglot.generator.Generator.delete_sql": {"tf": 1}, "sqlglot.generator.Generator.drop_sql": {"tf": 1}, "sqlglot.generator.Generator.except_sql": {"tf": 1}, "sqlglot.generator.Generator.fetch_sql": {"tf": 1}, "sqlglot.generator.Generator.filter_sql": {"tf": 1}, "sqlglot.generator.Generator.hint_sql": {"tf": 1}, "sqlglot.generator.Generator.index_sql": {"tf": 1}, "sqlglot.generator.Generator.identifier_sql": {"tf": 1}, "sqlglot.generator.Generator.national_sql": {"tf": 1}, "sqlglot.generator.Generator.partition_sql": {"tf": 1}, "sqlglot.generator.Generator.properties_sql": {"tf": 1}, "sqlglot.generator.Generator.property_sql": {"tf": 1}, "sqlglot.generator.Generator.likeproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.fallbackproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.journalproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.freespaceproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.afterjournalproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.checksumproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.mergeblockratioproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.datablocksizeproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.blockcompressionproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.isolatedloadingproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.lockingproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.withdataproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.insert_sql": {"tf": 1}, "sqlglot.generator.Generator.intersect_sql": {"tf": 1}, "sqlglot.generator.Generator.introducer_sql": {"tf": 1}, "sqlglot.generator.Generator.pseudotype_sql": {"tf": 1}, "sqlglot.generator.Generator.returning_sql": {"tf": 1}, "sqlglot.generator.Generator.rowformatdelimitedproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.table_sql": {"tf": 1}, "sqlglot.generator.Generator.tablesample_sql": {"tf": 1}, "sqlglot.generator.Generator.pivot_sql": {"tf": 1}, "sqlglot.generator.Generator.tuple_sql": {"tf": 1}, "sqlglot.generator.Generator.update_sql": {"tf": 1}, "sqlglot.generator.Generator.values_sql": {"tf": 1}, "sqlglot.generator.Generator.var_sql": {"tf": 1}, "sqlglot.generator.Generator.into_sql": {"tf": 1}, "sqlglot.generator.Generator.from_sql": {"tf": 1}, "sqlglot.generator.Generator.group_sql": {"tf": 1}, "sqlglot.generator.Generator.having_sql": {"tf": 1}, "sqlglot.generator.Generator.join_sql": {"tf": 1}, "sqlglot.generator.Generator.lambda_sql": {"tf": 1}, "sqlglot.generator.Generator.lateral_sql": {"tf": 1}, "sqlglot.generator.Generator.limit_sql": {"tf": 1}, "sqlglot.generator.Generator.offset_sql": {"tf": 1}, "sqlglot.generator.Generator.setitem_sql": {"tf": 1}, "sqlglot.generator.Generator.set_sql": {"tf": 1}, "sqlglot.generator.Generator.pragma_sql": {"tf": 1}, "sqlglot.generator.Generator.lock_sql": {"tf": 1}, "sqlglot.generator.Generator.literal_sql": {"tf": 1}, "sqlglot.generator.Generator.loaddata_sql": {"tf": 1}, "sqlglot.generator.Generator.null_sql": {"tf": 1}, "sqlglot.generator.Generator.boolean_sql": {"tf": 1}, "sqlglot.generator.Generator.order_sql": {"tf": 1}, "sqlglot.generator.Generator.cluster_sql": {"tf": 1}, "sqlglot.generator.Generator.distribute_sql": {"tf": 1}, "sqlglot.generator.Generator.sort_sql": {"tf": 1}, "sqlglot.generator.Generator.ordered_sql": {"tf": 1}, "sqlglot.generator.Generator.matchrecognize_sql": {"tf": 1}, "sqlglot.generator.Generator.select_sql": {"tf": 1}, "sqlglot.generator.Generator.schema_sql": {"tf": 1}, "sqlglot.generator.Generator.star_sql": {"tf": 1}, "sqlglot.generator.Generator.structkwarg_sql": {"tf": 1}, "sqlglot.generator.Generator.parameter_sql": {"tf": 1}, "sqlglot.generator.Generator.sessionparameter_sql": {"tf": 1}, "sqlglot.generator.Generator.placeholder_sql": {"tf": 1}, "sqlglot.generator.Generator.subquery_sql": {"tf": 1}, "sqlglot.generator.Generator.qualify_sql": {"tf": 1}, "sqlglot.generator.Generator.union_sql": {"tf": 1}, "sqlglot.generator.Generator.unnest_sql": {"tf": 1}, "sqlglot.generator.Generator.where_sql": {"tf": 1}, "sqlglot.generator.Generator.window_sql": {"tf": 1}, "sqlglot.generator.Generator.partition_by_sql": {"tf": 1}, "sqlglot.generator.Generator.window_spec_sql": {"tf": 1}, "sqlglot.generator.Generator.withingroup_sql": {"tf": 1}, "sqlglot.generator.Generator.between_sql": {"tf": 1}, "sqlglot.generator.Generator.bracket_sql": {"tf": 1}, "sqlglot.generator.Generator.all_sql": {"tf": 1}, "sqlglot.generator.Generator.any_sql": {"tf": 1}, "sqlglot.generator.Generator.exists_sql": {"tf": 1}, "sqlglot.generator.Generator.case_sql": {"tf": 1}, "sqlglot.generator.Generator.constraint_sql": {"tf": 1}, "sqlglot.generator.Generator.extract_sql": {"tf": 1}, "sqlglot.generator.Generator.trim_sql": {"tf": 1}, "sqlglot.generator.Generator.concat_sql": {"tf": 1}, "sqlglot.generator.Generator.check_sql": {"tf": 1}, "sqlglot.generator.Generator.foreignkey_sql": {"tf": 1}, "sqlglot.generator.Generator.primarykey_sql": {"tf": 1}, "sqlglot.generator.Generator.unique_sql": {"tf": 1}, "sqlglot.generator.Generator.if_sql": {"tf": 1}, "sqlglot.generator.Generator.matchagainst_sql": {"tf": 1}, "sqlglot.generator.Generator.jsonkeyvalue_sql": {"tf": 1}, "sqlglot.generator.Generator.jsonobject_sql": {"tf": 1}, "sqlglot.generator.Generator.in_sql": {"tf": 1}, "sqlglot.generator.Generator.interval_sql": {"tf": 1}, "sqlglot.generator.Generator.return_sql": {"tf": 1}, "sqlglot.generator.Generator.reference_sql": {"tf": 1}, "sqlglot.generator.Generator.anonymous_sql": {"tf": 1}, "sqlglot.generator.Generator.paren_sql": {"tf": 1}, "sqlglot.generator.Generator.neg_sql": {"tf": 1}, "sqlglot.generator.Generator.not_sql": {"tf": 1}, "sqlglot.generator.Generator.alias_sql": {"tf": 1}, "sqlglot.generator.Generator.aliases_sql": {"tf": 1}, "sqlglot.generator.Generator.attimezone_sql": {"tf": 1}, "sqlglot.generator.Generator.add_sql": {"tf": 1}, "sqlglot.generator.Generator.and_sql": {"tf": 1}, "sqlglot.generator.Generator.connector_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwiseand_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwiseleftshift_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwisenot_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwiseor_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwiserightshift_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwisexor_sql": {"tf": 1}, "sqlglot.generator.Generator.cast_sql": {"tf": 1}, "sqlglot.generator.Generator.currentdate_sql": {"tf": 1}, "sqlglot.generator.Generator.collate_sql": {"tf": 1}, "sqlglot.generator.Generator.command_sql": {"tf": 1}, "sqlglot.generator.Generator.comment_sql": {"tf": 1}, "sqlglot.generator.Generator.transaction_sql": {"tf": 1}, "sqlglot.generator.Generator.commit_sql": {"tf": 1}, "sqlglot.generator.Generator.rollback_sql": {"tf": 1}, "sqlglot.generator.Generator.altercolumn_sql": {"tf": 1}, "sqlglot.generator.Generator.renametable_sql": {"tf": 1}, "sqlglot.generator.Generator.altertable_sql": {"tf": 1}, "sqlglot.generator.Generator.droppartition_sql": {"tf": 1}, "sqlglot.generator.Generator.addconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.distinct_sql": {"tf": 1}, "sqlglot.generator.Generator.ignorenulls_sql": {"tf": 1}, "sqlglot.generator.Generator.respectnulls_sql": {"tf": 1}, "sqlglot.generator.Generator.intdiv_sql": {"tf": 1}, "sqlglot.generator.Generator.dpipe_sql": {"tf": 1}, "sqlglot.generator.Generator.div_sql": {"tf": 1}, "sqlglot.generator.Generator.overlaps_sql": {"tf": 1}, "sqlglot.generator.Generator.distance_sql": {"tf": 1}, "sqlglot.generator.Generator.dot_sql": {"tf": 1}, "sqlglot.generator.Generator.eq_sql": {"tf": 1}, "sqlglot.generator.Generator.escape_sql": {"tf": 1}, "sqlglot.generator.Generator.glob_sql": {"tf": 1}, "sqlglot.generator.Generator.gt_sql": {"tf": 1}, "sqlglot.generator.Generator.gte_sql": {"tf": 1}, "sqlglot.generator.Generator.ilike_sql": {"tf": 1}, "sqlglot.generator.Generator.ilikeany_sql": {"tf": 1}, "sqlglot.generator.Generator.is_sql": {"tf": 1}, "sqlglot.generator.Generator.like_sql": {"tf": 1}, "sqlglot.generator.Generator.likeany_sql": {"tf": 1}, "sqlglot.generator.Generator.similarto_sql": {"tf": 1}, "sqlglot.generator.Generator.lt_sql": {"tf": 1}, "sqlglot.generator.Generator.lte_sql": {"tf": 1}, "sqlglot.generator.Generator.mod_sql": {"tf": 1}, "sqlglot.generator.Generator.mul_sql": {"tf": 1}, "sqlglot.generator.Generator.neq_sql": {"tf": 1}, "sqlglot.generator.Generator.nullsafeeq_sql": {"tf": 1}, "sqlglot.generator.Generator.nullsafeneq_sql": {"tf": 1}, "sqlglot.generator.Generator.or_sql": {"tf": 1}, "sqlglot.generator.Generator.slice_sql": {"tf": 1}, "sqlglot.generator.Generator.sub_sql": {"tf": 1}, "sqlglot.generator.Generator.trycast_sql": {"tf": 1}, "sqlglot.generator.Generator.use_sql": {"tf": 1}, "sqlglot.generator.Generator.function_fallback_sql": {"tf": 1}, "sqlglot.generator.Generator.tag_sql": {"tf": 1}, "sqlglot.generator.Generator.token_sql": {"tf": 1}, "sqlglot.generator.Generator.userdefinedfunction_sql": {"tf": 1}, "sqlglot.generator.Generator.joinhint_sql": {"tf": 1}, "sqlglot.generator.Generator.kwarg_sql": {"tf": 1}, "sqlglot.generator.Generator.when_sql": {"tf": 1}, "sqlglot.generator.Generator.merge_sql": {"tf": 1}, "sqlglot.generator.Generator.tochar_sql": {"tf": 1}}, "df": 364, "g": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.pretty": {"tf": 1}, "sqlglot.schema": {"tf": 1}, "sqlglot.parse": {"tf": 1}, "sqlglot.parse_one": {"tf": 1}, "sqlglot.transpile": {"tf": 1}, "sqlglot.dataframe": {"tf": 1}, "sqlglot.dataframe.sql": {"tf": 1}, "sqlglot.dataframe.sql.SparkSession": {"tf": 1}, "sqlglot.dataframe.sql.SparkSession.table": {"tf": 1}, "sqlglot.dataframe.sql.SparkSession.createDataFrame": {"tf": 1}, "sqlglot.dataframe.sql.SparkSession.sql": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sql": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.copy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.select": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.alias": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.where": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.filter": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.groupBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.agg": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.join": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.union": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.unionAll": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.unionByName": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.intersect": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.intersectAll": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.exceptAll": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.distinct": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.dropDuplicates": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.dropna": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.replace": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.withColumn": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.withColumnRenamed": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.drop": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.limit": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.hint": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.repartition": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.coalesce": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.cache": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.persist": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.__init__": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.agg": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.count": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.mean": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.avg": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.max": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.min": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.sum": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.pivot": {"tf": 1}, "sqlglot.dataframe.sql.Column": {"tf": 1}, "sqlglot.dataframe.sql.Column.__init__": {"tf": 1}, "sqlglot.dataframe.sql.Column.ensure_col": {"tf": 1}, "sqlglot.dataframe.sql.Column.ensure_cols": {"tf": 1}, "sqlglot.dataframe.sql.Column.invoke_anonymous_function": {"tf": 1}, "sqlglot.dataframe.sql.Column.invoke_expression_over_column": {"tf": 1}, "sqlglot.dataframe.sql.Column.binary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.inverse_binary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.unary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.ensure_literal": {"tf": 1}, "sqlglot.dataframe.sql.Column.copy": {"tf": 1}, "sqlglot.dataframe.sql.Column.set_table_name": {"tf": 1}, "sqlglot.dataframe.sql.Column.sql": {"tf": 1}, "sqlglot.dataframe.sql.Column.alias": {"tf": 1}, "sqlglot.dataframe.sql.Column.asc": {"tf": 1}, "sqlglot.dataframe.sql.Column.desc": {"tf": 1}, "sqlglot.dataframe.sql.Column.asc_nulls_first": {"tf": 1}, "sqlglot.dataframe.sql.Column.asc_nulls_last": {"tf": 1}, "sqlglot.dataframe.sql.Column.desc_nulls_first": {"tf": 1}, "sqlglot.dataframe.sql.Column.desc_nulls_last": {"tf": 1}, "sqlglot.dataframe.sql.Column.when": {"tf": 1}, "sqlglot.dataframe.sql.Column.otherwise": {"tf": 1}, "sqlglot.dataframe.sql.Column.isNull": {"tf": 1}, "sqlglot.dataframe.sql.Column.isNotNull": {"tf": 1}, "sqlglot.dataframe.sql.Column.cast": {"tf": 1}, "sqlglot.dataframe.sql.Column.startswith": {"tf": 1}, "sqlglot.dataframe.sql.Column.endswith": {"tf": 1}, "sqlglot.dataframe.sql.Column.rlike": {"tf": 1}, "sqlglot.dataframe.sql.Column.like": {"tf": 1}, "sqlglot.dataframe.sql.Column.ilike": {"tf": 1}, "sqlglot.dataframe.sql.Column.substr": {"tf": 1}, "sqlglot.dataframe.sql.Column.isin": {"tf": 1}, "sqlglot.dataframe.sql.Column.between": {"tf": 1}, "sqlglot.dataframe.sql.Column.over": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.drop": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.fill": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.replace": {"tf": 1}, "sqlglot.dataframe.sql.Window": {"tf": 1}, "sqlglot.dataframe.sql.Window.partitionBy": {"tf": 1}, "sqlglot.dataframe.sql.Window.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.Window.rowsBetween": {"tf": 1}, "sqlglot.dataframe.sql.Window.rangeBetween": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.__init__": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.copy": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.sql": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.partitionBy": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.rowsBetween": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.rangeBetween": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameReader": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameReader.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameReader.table": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.copy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.sql": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.mode": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.insertInto": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.saveAsTable": {"tf": 1}, "sqlglot.dialects": {"tf": 1}, "sqlglot.dialects.bigquery": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Tokenizer": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.array_sql": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.transaction_sql": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.commit_sql": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.rollback_sql": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.in_unnest_op": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.except_op": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.intersect_op": {"tf": 1}, "sqlglot.dialects.clickhouse": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Tokenizer": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator.cte_sql": {"tf": 1}, "sqlglot.dialects.databricks": {"tf": 1}, "sqlglot.dialects.databricks.Databricks": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Tokenizer": {"tf": 1}, "sqlglot.dialects.dialect": {"tf": 1}, "sqlglot.dialects.dialect.Dialects": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.DIALECT": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.BIGQUERY": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.CLICKHOUSE": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.DUCKDB": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.HIVE": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.MYSQL": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.ORACLE": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.POSTGRES": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.PRESTO": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.REDSHIFT": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.SNOWFLAKE": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.SPARK": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.SQLITE": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.STARROCKS": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.TABLEAU": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.TRINO": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.TSQL": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.DATABRICKS": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.DRILL": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.TERADATA": {"tf": 1}, "sqlglot.dialects.dialect.Dialect": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.get_or_raise": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.format_time": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.parse": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.parse_into": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.generate": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.transpile": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.tokenize": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.parser": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.generator": {"tf": 1}, "sqlglot.dialects.dialect.rename_func": {"tf": 1}, "sqlglot.dialects.dialect.approx_count_distinct_sql": {"tf": 1}, "sqlglot.dialects.dialect.if_sql": {"tf": 1}, "sqlglot.dialects.dialect.arrow_json_extract_sql": {"tf": 1}, "sqlglot.dialects.dialect.arrow_json_extract_scalar_sql": {"tf": 1}, "sqlglot.dialects.dialect.inline_array_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_ilike_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_paren_current_date_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_recursive_cte_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_safe_divide_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_tablesample_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_pivot_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_trycast_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_properties_sql": {"tf": 1}, "sqlglot.dialects.dialect.str_position_sql": {"tf": 1}, "sqlglot.dialects.dialect.struct_extract_sql": {"tf": 1}, "sqlglot.dialects.dialect.var_map_sql": {"tf": 1}, "sqlglot.dialects.dialect.format_time_lambda": {"tf": 1}, "sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1}, "sqlglot.dialects.dialect.parse_date_delta": {"tf": 1}, "sqlglot.dialects.dialect.date_trunc_to_time": {"tf": 1}, "sqlglot.dialects.dialect.timestamptrunc_sql": {"tf": 1}, "sqlglot.dialects.dialect.locate_to_strposition": {"tf": 1}, "sqlglot.dialects.dialect.strposition_to_locate_sql": {"tf": 1}, "sqlglot.dialects.dialect.timestrtotime_sql": {"tf": 1}, "sqlglot.dialects.dialect.datestrtodate_sql": {"tf": 1}, "sqlglot.dialects.dialect.min_or_least": {"tf": 1}, "sqlglot.dialects.dialect.max_or_greatest": {"tf": 1}, "sqlglot.dialects.dialect.count_if_to_sum": {"tf": 1}, "sqlglot.dialects.dialect.trim_sql": {"tf": 1}, "sqlglot.dialects.dialect.str_to_time_sql": {"tf": 1}, "sqlglot.dialects.dialect.ts_or_ds_to_date_sql": {"tf": 1}, "sqlglot.dialects.drill": {"tf": 1}, "sqlglot.dialects.drill.Drill": {"tf": 1}, "sqlglot.dialects.drill.Drill.Tokenizer": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator.normalize_func": {"tf": 1}, "sqlglot.dialects.duckdb": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Tokenizer": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator.tablesample_sql": {"tf": 1}, "sqlglot.dialects.hive": {"tf": 1}, "sqlglot.dialects.hive.Hive": {"tf": 1}, "sqlglot.dialects.hive.Hive.Tokenizer": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator.arrayagg_sql": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator.with_properties": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.mysql": {"tf": 1}, "sqlglot.dialects.mysql.MySQL": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Tokenizer": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator.show_sql": {"tf": 1}, "sqlglot.dialects.oracle": {"tf": 1}, "sqlglot.dialects.oracle.Oracle": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator.offset_sql": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator.column_sql": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator.xmltable_sql": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Tokenizer": {"tf": 1}, "sqlglot.dialects.postgres": {"tf": 1}, "sqlglot.dialects.postgres.Postgres": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Tokenizer": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto": {"tf": 1}, "sqlglot.dialects.presto.Presto": {"tf": 1}, "sqlglot.dialects.presto.Presto.Tokenizer": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator.transaction_sql": {"tf": 1}, "sqlglot.dialects.redshift": {"tf": 1}, "sqlglot.dialects.redshift.Redshift": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Tokenizer": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.with_properties": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.renametable_sql": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.snowflake": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Tokenizer": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.except_op": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.intersect_op": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.settag_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.describe_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.generatedasidentitycolumnconstraint_sql": {"tf": 1}, "sqlglot.dialects.spark": {"tf": 1}, "sqlglot.dialects.spark.Spark": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator.cast_sql": {"tf": 1}, "sqlglot.dialects.spark.Spark.Tokenizer": {"tf": 1}, "sqlglot.dialects.sqlite": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Tokenizer": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.cast_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.datediff_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.groupconcat_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.least_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.transaction_sql": {"tf": 1}, "sqlglot.dialects.starrocks": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau": {"tf": 1}, "sqlglot.dialects.tableau.Tableau": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata": {"tf": 1}, "sqlglot.dialects.teradata.Teradata": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Tokenizer": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.partitionedbyproperty_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.update_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.mod_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.rangen_sql": {"tf": 1}, "sqlglot.dialects.trino": {"tf": 1}, "sqlglot.dialects.trino.Trino": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Tokenizer": {"tf": 1}, "sqlglot.dialects.tsql": {"tf": 1}, "sqlglot.dialects.tsql.generate_date_delta_with_unit_sql": {"tf": 1}, "sqlglot.dialects.tsql.TSQL": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Tokenizer": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator.offset_sql": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator.systemtime_sql": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator.returnsproperty_sql": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.diff.Insert": {"tf": 1}, "sqlglot.diff.Insert.__init__": {"tf": 1}, "sqlglot.diff.Remove": {"tf": 1}, "sqlglot.diff.Remove.__init__": {"tf": 1}, "sqlglot.diff.Move": {"tf": 1}, "sqlglot.diff.Move.__init__": {"tf": 1}, "sqlglot.diff.Update": {"tf": 1}, "sqlglot.diff.Update.__init__": {"tf": 1}, "sqlglot.diff.Keep": {"tf": 1}, "sqlglot.diff.Keep.__init__": {"tf": 1}, "sqlglot.diff.diff": {"tf": 1}, "sqlglot.diff.ChangeDistiller": {"tf": 1}, "sqlglot.diff.ChangeDistiller.__init__": {"tf": 1}, "sqlglot.diff.ChangeDistiller.diff": {"tf": 1}, "sqlglot.errors": {"tf": 1}, "sqlglot.errors.ErrorLevel": {"tf": 1}, "sqlglot.errors.ErrorLevel.IGNORE": {"tf": 1}, "sqlglot.errors.ErrorLevel.WARN": {"tf": 1}, "sqlglot.errors.ErrorLevel.RAISE": {"tf": 1}, "sqlglot.errors.ErrorLevel.IMMEDIATE": {"tf": 1}, "sqlglot.errors.SqlglotError": {"tf": 1}, "sqlglot.errors.UnsupportedError": {"tf": 1}, "sqlglot.errors.ParseError": {"tf": 1}, "sqlglot.errors.ParseError.__init__": {"tf": 1}, "sqlglot.errors.ParseError.new": {"tf": 1}, "sqlglot.errors.TokenError": {"tf": 1}, "sqlglot.errors.OptimizeError": {"tf": 1}, "sqlglot.errors.SchemaError": {"tf": 1}, "sqlglot.errors.ExecuteError": {"tf": 1}, "sqlglot.errors.concat_messages": {"tf": 1}, "sqlglot.errors.merge_errors": {"tf": 1}, "sqlglot.executor": {"tf": 1}, "sqlglot.executor.execute": {"tf": 1}, "sqlglot.executor.context": {"tf": 1}, "sqlglot.executor.context.Context": {"tf": 1}, "sqlglot.executor.context.Context.__init__": {"tf": 1}, "sqlglot.executor.context.Context.eval": {"tf": 1}, "sqlglot.executor.context.Context.eval_tuple": {"tf": 1}, "sqlglot.executor.context.Context.add_columns": {"tf": 1}, "sqlglot.executor.context.Context.table_iter": {"tf": 1}, "sqlglot.executor.context.Context.filter": {"tf": 1}, "sqlglot.executor.context.Context.sort": {"tf": 1}, "sqlglot.executor.context.Context.set_row": {"tf": 1}, "sqlglot.executor.context.Context.set_index": {"tf": 1}, "sqlglot.executor.context.Context.set_range": {"tf": 1}, "sqlglot.executor.env": {"tf": 1}, "sqlglot.executor.env.reverse_key": {"tf": 1}, "sqlglot.executor.env.reverse_key.__init__": {"tf": 1}, "sqlglot.executor.env.filter_nulls": {"tf": 1}, "sqlglot.executor.env.null_if_any": {"tf": 1}, "sqlglot.executor.env.str_position": {"tf": 1}, "sqlglot.executor.env.substring": {"tf": 1}, "sqlglot.executor.env.cast": {"tf": 1}, "sqlglot.executor.env.ordered": {"tf": 1}, "sqlglot.executor.env.interval": {"tf": 1}, "sqlglot.executor.python": {"tf": 1}, "sqlglot.executor.python.PythonExecutor": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.__init__": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.execute": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.generate": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.generate_tuple": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.context": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.table": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.scan": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.static": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.scan_table": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.scan_csv": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.join": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.nested_loop_join": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.hash_join": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.aggregate": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.sort": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.set_operation": {"tf": 1}, "sqlglot.executor.python.Python": {"tf": 1}, "sqlglot.executor.python.Python.Tokenizer": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.executor.table": {"tf": 1}, "sqlglot.executor.table.Table": {"tf": 1}, "sqlglot.executor.table.Table.__init__": {"tf": 1}, "sqlglot.executor.table.Table.add_columns": {"tf": 1}, "sqlglot.executor.table.Table.append": {"tf": 1}, "sqlglot.executor.table.Table.pop": {"tf": 1}, "sqlglot.executor.table.TableIter": {"tf": 1}, "sqlglot.executor.table.TableIter.__init__": {"tf": 1}, "sqlglot.executor.table.RangeReader": {"tf": 1}, "sqlglot.executor.table.RangeReader.__init__": {"tf": 1}, "sqlglot.executor.table.RowReader": {"tf": 1}, "sqlglot.executor.table.RowReader.__init__": {"tf": 1}, "sqlglot.executor.table.Tables": {"tf": 1}, "sqlglot.executor.table.ensure_tables": {"tf": 1}, "sqlglot.expressions": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.expressions.Expression.__init__": {"tf": 1}, "sqlglot.expressions.Expression.this": {"tf": 1}, "sqlglot.expressions.Expression.expression": {"tf": 1}, "sqlglot.expressions.Expression.expressions": {"tf": 1}, "sqlglot.expressions.Expression.text": {"tf": 1}, "sqlglot.expressions.Expression.is_string": {"tf": 1}, "sqlglot.expressions.Expression.is_number": {"tf": 1}, "sqlglot.expressions.Expression.is_int": {"tf": 1}, "sqlglot.expressions.Expression.is_star": {"tf": 1}, "sqlglot.expressions.Expression.alias": {"tf": 1}, "sqlglot.expressions.Expression.output_name": {"tf": 1}, "sqlglot.expressions.Expression.copy": {"tf": 1}, "sqlglot.expressions.Expression.append": {"tf": 1}, "sqlglot.expressions.Expression.set": {"tf": 1}, "sqlglot.expressions.Expression.depth": {"tf": 1}, "sqlglot.expressions.Expression.iter_expressions": {"tf": 1}, "sqlglot.expressions.Expression.find": {"tf": 1}, "sqlglot.expressions.Expression.find_all": {"tf": 1}, "sqlglot.expressions.Expression.find_ancestor": {"tf": 1}, "sqlglot.expressions.Expression.parent_select": {"tf": 1}, "sqlglot.expressions.Expression.same_parent": {"tf": 1}, "sqlglot.expressions.Expression.root": {"tf": 1}, "sqlglot.expressions.Expression.walk": {"tf": 1}, "sqlglot.expressions.Expression.dfs": {"tf": 1}, "sqlglot.expressions.Expression.bfs": {"tf": 1}, "sqlglot.expressions.Expression.unnest": {"tf": 1}, "sqlglot.expressions.Expression.unalias": {"tf": 1}, "sqlglot.expressions.Expression.unnest_operands": {"tf": 1}, "sqlglot.expressions.Expression.flatten": {"tf": 1}, "sqlglot.expressions.Expression.sql": {"tf": 1}, "sqlglot.expressions.Expression.transform": {"tf": 1}, "sqlglot.expressions.Expression.replace": {"tf": 1}, "sqlglot.expressions.Expression.pop": {"tf": 1}, "sqlglot.expressions.Expression.assert_is": {"tf": 1}, "sqlglot.expressions.Expression.error_messages": {"tf": 1}, "sqlglot.expressions.Expression.dump": {"tf": 1}, "sqlglot.expressions.Expression.load": {"tf": 1}, "sqlglot.expressions.Condition": {"tf": 1}, "sqlglot.expressions.Condition.and_": {"tf": 1}, "sqlglot.expressions.Condition.or_": {"tf": 1}, "sqlglot.expressions.Condition.not_": {"tf": 1}, "sqlglot.expressions.Predicate": {"tf": 1}, "sqlglot.expressions.DerivedTable": {"tf": 1}, "sqlglot.expressions.Unionable": {"tf": 1}, "sqlglot.expressions.Unionable.union": {"tf": 1}, "sqlglot.expressions.Unionable.intersect": {"tf": 1}, "sqlglot.expressions.Unionable.except_": {"tf": 1}, "sqlglot.expressions.UDTF": {"tf": 1}, "sqlglot.expressions.Cache": {"tf": 1}, "sqlglot.expressions.Uncache": {"tf": 1}, "sqlglot.expressions.Create": {"tf": 1}, "sqlglot.expressions.Describe": {"tf": 1}, "sqlglot.expressions.Pragma": {"tf": 1}, "sqlglot.expressions.Set": {"tf": 1}, "sqlglot.expressions.SetItem": {"tf": 1}, "sqlglot.expressions.Show": {"tf": 1}, "sqlglot.expressions.UserDefinedFunction": {"tf": 1}, "sqlglot.expressions.CharacterSet": {"tf": 1}, "sqlglot.expressions.With": {"tf": 1}, "sqlglot.expressions.WithinGroup": {"tf": 1}, "sqlglot.expressions.CTE": {"tf": 1}, "sqlglot.expressions.TableAlias": {"tf": 1}, "sqlglot.expressions.BitString": {"tf": 1}, "sqlglot.expressions.HexString": {"tf": 1}, "sqlglot.expressions.ByteString": {"tf": 1}, "sqlglot.expressions.Column": {"tf": 1}, "sqlglot.expressions.Column.output_name": {"tf": 1}, "sqlglot.expressions.Column.parts": {"tf": 1}, "sqlglot.expressions.Column.to_dot": {"tf": 1}, "sqlglot.expressions.ColumnPosition": {"tf": 1}, "sqlglot.expressions.ColumnDef": {"tf": 1}, "sqlglot.expressions.AlterColumn": {"tf": 1}, "sqlglot.expressions.RenameTable": {"tf": 1}, "sqlglot.expressions.SetTag": {"tf": 1}, "sqlglot.expressions.Comment": {"tf": 1}, "sqlglot.expressions.ColumnConstraint": {"tf": 1}, "sqlglot.expressions.ColumnConstraintKind": {"tf": 1}, "sqlglot.expressions.AutoIncrementColumnConstraint": {"tf": 1}, "sqlglot.expressions.CaseSpecificColumnConstraint": {"tf": 1}, "sqlglot.expressions.CharacterSetColumnConstraint": {"tf": 1}, "sqlglot.expressions.CheckColumnConstraint": {"tf": 1}, "sqlglot.expressions.CollateColumnConstraint": {"tf": 1}, "sqlglot.expressions.CommentColumnConstraint": {"tf": 1}, "sqlglot.expressions.CompressColumnConstraint": {"tf": 1}, "sqlglot.expressions.DateFormatColumnConstraint": {"tf": 1}, "sqlglot.expressions.DefaultColumnConstraint": {"tf": 1}, "sqlglot.expressions.EncodeColumnConstraint": {"tf": 1}, "sqlglot.expressions.GeneratedAsIdentityColumnConstraint": {"tf": 1}, "sqlglot.expressions.InlineLengthColumnConstraint": {"tf": 1}, "sqlglot.expressions.NotNullColumnConstraint": {"tf": 1}, "sqlglot.expressions.PrimaryKeyColumnConstraint": {"tf": 1}, "sqlglot.expressions.TitleColumnConstraint": {"tf": 1}, "sqlglot.expressions.UniqueColumnConstraint": {"tf": 1}, "sqlglot.expressions.UppercaseColumnConstraint": {"tf": 1}, "sqlglot.expressions.PathColumnConstraint": {"tf": 1}, "sqlglot.expressions.Constraint": {"tf": 1}, "sqlglot.expressions.Delete": {"tf": 1}, "sqlglot.expressions.Delete.delete": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Delete.returning": {"tf": 1}, "sqlglot.expressions.Drop": {"tf": 1}, "sqlglot.expressions.Filter": {"tf": 1}, "sqlglot.expressions.Check": {"tf": 1}, "sqlglot.expressions.Directory": {"tf": 1}, "sqlglot.expressions.ForeignKey": {"tf": 1}, "sqlglot.expressions.PrimaryKey": {"tf": 1}, "sqlglot.expressions.Unique": {"tf": 1}, "sqlglot.expressions.Into": {"tf": 1}, "sqlglot.expressions.From": {"tf": 1}, "sqlglot.expressions.Having": {"tf": 1}, "sqlglot.expressions.Hint": {"tf": 1}, "sqlglot.expressions.JoinHint": {"tf": 1}, "sqlglot.expressions.Identifier": {"tf": 1}, "sqlglot.expressions.Identifier.output_name": {"tf": 1}, "sqlglot.expressions.Index": {"tf": 1}, "sqlglot.expressions.Insert": {"tf": 1}, "sqlglot.expressions.Returning": {"tf": 1}, "sqlglot.expressions.Introducer": {"tf": 1}, "sqlglot.expressions.National": {"tf": 1}, "sqlglot.expressions.LoadData": {"tf": 1}, "sqlglot.expressions.Partition": {"tf": 1}, "sqlglot.expressions.Fetch": {"tf": 1}, "sqlglot.expressions.Group": {"tf": 1}, "sqlglot.expressions.Lambda": {"tf": 1}, "sqlglot.expressions.Limit": {"tf": 1}, "sqlglot.expressions.Literal": {"tf": 1}, "sqlglot.expressions.Literal.number": {"tf": 1}, "sqlglot.expressions.Literal.string": {"tf": 1}, "sqlglot.expressions.Literal.output_name": {"tf": 1}, "sqlglot.expressions.Join": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Join.using": {"tf": 1}, "sqlglot.expressions.Lateral": {"tf": 1}, "sqlglot.expressions.MatchRecognize": {"tf": 1}, "sqlglot.expressions.Final": {"tf": 1}, "sqlglot.expressions.Offset": {"tf": 1}, "sqlglot.expressions.Order": {"tf": 1}, "sqlglot.expressions.Cluster": {"tf": 1}, "sqlglot.expressions.Distribute": {"tf": 1}, "sqlglot.expressions.Sort": {"tf": 1}, "sqlglot.expressions.Ordered": {"tf": 1}, "sqlglot.expressions.Property": {"tf": 1}, "sqlglot.expressions.AfterJournalProperty": {"tf": 1}, "sqlglot.expressions.AlgorithmProperty": {"tf": 1}, "sqlglot.expressions.AutoIncrementProperty": {"tf": 1}, "sqlglot.expressions.BlockCompressionProperty": {"tf": 1}, "sqlglot.expressions.CharacterSetProperty": {"tf": 1}, "sqlglot.expressions.ChecksumProperty": {"tf": 1}, "sqlglot.expressions.CollateProperty": {"tf": 1}, "sqlglot.expressions.DataBlocksizeProperty": {"tf": 1}, "sqlglot.expressions.DefinerProperty": {"tf": 1}, "sqlglot.expressions.DistKeyProperty": {"tf": 1}, "sqlglot.expressions.DistStyleProperty": {"tf": 1}, "sqlglot.expressions.EngineProperty": {"tf": 1}, "sqlglot.expressions.ExecuteAsProperty": {"tf": 1}, "sqlglot.expressions.ExternalProperty": {"tf": 1}, "sqlglot.expressions.FallbackProperty": {"tf": 1}, "sqlglot.expressions.FileFormatProperty": {"tf": 1}, "sqlglot.expressions.FreespaceProperty": {"tf": 1}, "sqlglot.expressions.IsolatedLoadingProperty": {"tf": 1}, "sqlglot.expressions.JournalProperty": {"tf": 1}, "sqlglot.expressions.LanguageProperty": {"tf": 1}, "sqlglot.expressions.LikeProperty": {"tf": 1}, "sqlglot.expressions.LocationProperty": {"tf": 1}, "sqlglot.expressions.LockingProperty": {"tf": 1}, "sqlglot.expressions.LogProperty": {"tf": 1}, "sqlglot.expressions.MaterializedProperty": {"tf": 1}, "sqlglot.expressions.MergeBlockRatioProperty": {"tf": 1}, "sqlglot.expressions.NoPrimaryIndexProperty": {"tf": 1}, "sqlglot.expressions.OnCommitProperty": {"tf": 1}, "sqlglot.expressions.PartitionedByProperty": {"tf": 1}, "sqlglot.expressions.ReturnsProperty": {"tf": 1}, "sqlglot.expressions.RowFormatDelimitedProperty": {"tf": 1}, "sqlglot.expressions.RowFormatSerdeProperty": {"tf": 1}, "sqlglot.expressions.SchemaCommentProperty": {"tf": 1}, "sqlglot.expressions.SerdeProperties": {"tf": 1}, "sqlglot.expressions.SetProperty": {"tf": 1}, "sqlglot.expressions.SortKeyProperty": {"tf": 1}, "sqlglot.expressions.SqlSecurityProperty": {"tf": 1}, "sqlglot.expressions.TableFormatProperty": {"tf": 1}, "sqlglot.expressions.TemporaryProperty": {"tf": 1}, "sqlglot.expressions.TransientProperty": {"tf": 1}, "sqlglot.expressions.VolatilityProperty": {"tf": 1}, "sqlglot.expressions.WithDataProperty": {"tf": 1}, "sqlglot.expressions.WithJournalTableProperty": {"tf": 1}, "sqlglot.expressions.Properties": {"tf": 1}, "sqlglot.expressions.Properties.Location": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_CREATE": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_NAME": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_SCHEMA": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_WITH": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_ALIAS": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_EXPRESSION": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_INDEX": {"tf": 1}, "sqlglot.expressions.Properties.Location.UNSUPPORTED": {"tf": 1}, "sqlglot.expressions.Properties.from_dict": {"tf": 1}, "sqlglot.expressions.Qualify": {"tf": 1}, "sqlglot.expressions.Return": {"tf": 1}, "sqlglot.expressions.Reference": {"tf": 1}, "sqlglot.expressions.Tuple": {"tf": 1}, "sqlglot.expressions.Subqueryable": {"tf": 1}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 1}, "sqlglot.expressions.Subqueryable.limit": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1}, "sqlglot.expressions.Table": {"tf": 1}, "sqlglot.expressions.SystemTime": {"tf": 1}, "sqlglot.expressions.Union": {"tf": 1}, "sqlglot.expressions.Union.limit": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 1}, "sqlglot.expressions.Union.is_star": {"tf": 1}, "sqlglot.expressions.Except": {"tf": 1}, "sqlglot.expressions.Intersect": {"tf": 1}, "sqlglot.expressions.Unnest": {"tf": 1}, "sqlglot.expressions.Update": {"tf": 1}, "sqlglot.expressions.Values": {"tf": 1}, "sqlglot.expressions.Var": {"tf": 1}, "sqlglot.expressions.Schema": {"tf": 1}, "sqlglot.expressions.Lock": {"tf": 1}, "sqlglot.expressions.Select": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.expressions.Select.limit": {"tf": 1}, "sqlglot.expressions.Select.offset": {"tf": 1}, "sqlglot.expressions.Select.select": {"tf": 1}, "sqlglot.expressions.Select.lateral": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1}, "sqlglot.expressions.Select.where": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1}, "sqlglot.expressions.Select.window": {"tf": 1}, "sqlglot.expressions.Select.qualify": {"tf": 1}, "sqlglot.expressions.Select.distinct": {"tf": 1}, "sqlglot.expressions.Select.ctas": {"tf": 1}, "sqlglot.expressions.Select.lock": {"tf": 1}, "sqlglot.expressions.Select.is_star": {"tf": 1}, "sqlglot.expressions.Subquery": {"tf": 1}, "sqlglot.expressions.Subquery.unnest": {"tf": 1}, "sqlglot.expressions.Subquery.is_star": {"tf": 1}, "sqlglot.expressions.Subquery.output_name": {"tf": 1}, "sqlglot.expressions.TableSample": {"tf": 1}, "sqlglot.expressions.Tag": {"tf": 1}, "sqlglot.expressions.Pivot": {"tf": 1}, "sqlglot.expressions.Window": {"tf": 1}, "sqlglot.expressions.WindowSpec": {"tf": 1}, "sqlglot.expressions.Where": {"tf": 1}, "sqlglot.expressions.Star": {"tf": 1}, "sqlglot.expressions.Star.output_name": {"tf": 1}, "sqlglot.expressions.Parameter": {"tf": 1}, "sqlglot.expressions.SessionParameter": {"tf": 1}, "sqlglot.expressions.Placeholder": {"tf": 1}, "sqlglot.expressions.Null": {"tf": 1}, "sqlglot.expressions.Boolean": {"tf": 1}, "sqlglot.expressions.DataType": {"tf": 1}, "sqlglot.expressions.DataType.Type": {"tf": 1}, "sqlglot.expressions.DataType.Type.CHAR": {"tf": 1}, "sqlglot.expressions.DataType.Type.NCHAR": {"tf": 1}, "sqlglot.expressions.DataType.Type.VARCHAR": {"tf": 1}, "sqlglot.expressions.DataType.Type.NVARCHAR": {"tf": 1}, "sqlglot.expressions.DataType.Type.TEXT": {"tf": 1}, "sqlglot.expressions.DataType.Type.MEDIUMTEXT": {"tf": 1}, "sqlglot.expressions.DataType.Type.LONGTEXT": {"tf": 1}, "sqlglot.expressions.DataType.Type.MEDIUMBLOB": {"tf": 1}, "sqlglot.expressions.DataType.Type.LONGBLOB": {"tf": 1}, "sqlglot.expressions.DataType.Type.BINARY": {"tf": 1}, "sqlglot.expressions.DataType.Type.VARBINARY": {"tf": 1}, "sqlglot.expressions.DataType.Type.INT": {"tf": 1}, "sqlglot.expressions.DataType.Type.UINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.TINYINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.UTINYINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.SMALLINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.USMALLINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.BIGINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.UBIGINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.FLOAT": {"tf": 1}, "sqlglot.expressions.DataType.Type.DOUBLE": {"tf": 1}, "sqlglot.expressions.DataType.Type.DECIMAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.BIT": {"tf": 1}, "sqlglot.expressions.DataType.Type.BOOLEAN": {"tf": 1}, "sqlglot.expressions.DataType.Type.JSON": {"tf": 1}, "sqlglot.expressions.DataType.Type.JSONB": {"tf": 1}, "sqlglot.expressions.DataType.Type.INTERVAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.TIME": {"tf": 1}, "sqlglot.expressions.DataType.Type.TIMESTAMP": {"tf": 1}, "sqlglot.expressions.DataType.Type.TIMESTAMPTZ": {"tf": 1}, "sqlglot.expressions.DataType.Type.TIMESTAMPLTZ": {"tf": 1}, "sqlglot.expressions.DataType.Type.DATE": {"tf": 1}, "sqlglot.expressions.DataType.Type.DATETIME": {"tf": 1}, "sqlglot.expressions.DataType.Type.ARRAY": {"tf": 1}, "sqlglot.expressions.DataType.Type.MAP": {"tf": 1}, "sqlglot.expressions.DataType.Type.UUID": {"tf": 1}, "sqlglot.expressions.DataType.Type.GEOGRAPHY": {"tf": 1}, "sqlglot.expressions.DataType.Type.GEOMETRY": {"tf": 1}, "sqlglot.expressions.DataType.Type.STRUCT": {"tf": 1}, "sqlglot.expressions.DataType.Type.NULLABLE": {"tf": 1}, "sqlglot.expressions.DataType.Type.HLLSKETCH": {"tf": 1}, "sqlglot.expressions.DataType.Type.HSTORE": {"tf": 1}, "sqlglot.expressions.DataType.Type.SUPER": {"tf": 1}, "sqlglot.expressions.DataType.Type.SERIAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.SMALLSERIAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.BIGSERIAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.XML": {"tf": 1}, "sqlglot.expressions.DataType.Type.UNIQUEIDENTIFIER": {"tf": 1}, "sqlglot.expressions.DataType.Type.MONEY": {"tf": 1}, "sqlglot.expressions.DataType.Type.SMALLMONEY": {"tf": 1}, "sqlglot.expressions.DataType.Type.ROWVERSION": {"tf": 1}, "sqlglot.expressions.DataType.Type.IMAGE": {"tf": 1}, "sqlglot.expressions.DataType.Type.VARIANT": {"tf": 1}, "sqlglot.expressions.DataType.Type.OBJECT": {"tf": 1}, "sqlglot.expressions.DataType.Type.INET": {"tf": 1}, "sqlglot.expressions.DataType.Type.NULL": {"tf": 1}, "sqlglot.expressions.DataType.Type.UNKNOWN": {"tf": 1}, "sqlglot.expressions.DataType.build": {"tf": 1}, "sqlglot.expressions.DataType.is_type": {"tf": 1}, "sqlglot.expressions.PseudoType": {"tf": 1}, "sqlglot.expressions.StructKwarg": {"tf": 1}, "sqlglot.expressions.SubqueryPredicate": {"tf": 1}, "sqlglot.expressions.All": {"tf": 1}, "sqlglot.expressions.Any": {"tf": 1}, "sqlglot.expressions.Exists": {"tf": 1}, "sqlglot.expressions.Command": {"tf": 1}, "sqlglot.expressions.Transaction": {"tf": 1}, "sqlglot.expressions.Commit": {"tf": 1}, "sqlglot.expressions.Rollback": {"tf": 1}, "sqlglot.expressions.AlterTable": {"tf": 1}, "sqlglot.expressions.AddConstraint": {"tf": 1}, "sqlglot.expressions.DropPartition": {"tf": 1}, "sqlglot.expressions.Binary": {"tf": 1}, "sqlglot.expressions.Add": {"tf": 1}, "sqlglot.expressions.Connector": {"tf": 1}, "sqlglot.expressions.And": {"tf": 1}, "sqlglot.expressions.Or": {"tf": 1}, "sqlglot.expressions.BitwiseAnd": {"tf": 1}, "sqlglot.expressions.BitwiseLeftShift": {"tf": 1}, "sqlglot.expressions.BitwiseOr": {"tf": 1}, "sqlglot.expressions.BitwiseRightShift": {"tf": 1}, "sqlglot.expressions.BitwiseXor": {"tf": 1}, "sqlglot.expressions.Div": {"tf": 1}, "sqlglot.expressions.Overlaps": {"tf": 1}, "sqlglot.expressions.Dot": {"tf": 1}, "sqlglot.expressions.Dot.build": {"tf": 1}, "sqlglot.expressions.DPipe": {"tf": 1}, "sqlglot.expressions.EQ": {"tf": 1}, "sqlglot.expressions.NullSafeEQ": {"tf": 1}, "sqlglot.expressions.NullSafeNEQ": {"tf": 1}, "sqlglot.expressions.Distance": {"tf": 1}, "sqlglot.expressions.Escape": {"tf": 1}, "sqlglot.expressions.Glob": {"tf": 1}, "sqlglot.expressions.GT": {"tf": 1}, "sqlglot.expressions.GTE": {"tf": 1}, "sqlglot.expressions.ILike": {"tf": 1}, "sqlglot.expressions.ILikeAny": {"tf": 1}, "sqlglot.expressions.IntDiv": {"tf": 1}, "sqlglot.expressions.Is": {"tf": 1}, "sqlglot.expressions.Kwarg": {"tf": 1}, "sqlglot.expressions.Like": {"tf": 1}, "sqlglot.expressions.LikeAny": {"tf": 1}, "sqlglot.expressions.LT": {"tf": 1}, "sqlglot.expressions.LTE": {"tf": 1}, "sqlglot.expressions.Mod": {"tf": 1}, "sqlglot.expressions.Mul": {"tf": 1}, "sqlglot.expressions.NEQ": {"tf": 1}, "sqlglot.expressions.SimilarTo": {"tf": 1}, "sqlglot.expressions.Slice": {"tf": 1}, "sqlglot.expressions.Sub": {"tf": 1}, "sqlglot.expressions.ArrayOverlaps": {"tf": 1}, "sqlglot.expressions.Unary": {"tf": 1}, "sqlglot.expressions.BitwiseNot": {"tf": 1}, "sqlglot.expressions.Not": {"tf": 1}, "sqlglot.expressions.Paren": {"tf": 1}, "sqlglot.expressions.Neg": {"tf": 1}, "sqlglot.expressions.Alias": {"tf": 1}, "sqlglot.expressions.Alias.output_name": {"tf": 1}, "sqlglot.expressions.Aliases": {"tf": 1}, "sqlglot.expressions.AtTimeZone": {"tf": 1}, "sqlglot.expressions.Between": {"tf": 1}, "sqlglot.expressions.Bracket": {"tf": 1}, "sqlglot.expressions.Distinct": {"tf": 1}, "sqlglot.expressions.In": {"tf": 1}, "sqlglot.expressions.TimeUnit": {"tf": 1}, "sqlglot.expressions.TimeUnit.__init__": {"tf": 1}, "sqlglot.expressions.Interval": {"tf": 1}, "sqlglot.expressions.IgnoreNulls": {"tf": 1}, "sqlglot.expressions.RespectNulls": {"tf": 1}, "sqlglot.expressions.Func": {"tf": 1}, "sqlglot.expressions.Func.from_arg_list": {"tf": 1}, "sqlglot.expressions.Func.sql_names": {"tf": 1}, "sqlglot.expressions.Func.sql_name": {"tf": 1}, "sqlglot.expressions.Func.default_parser_mappings": {"tf": 1}, "sqlglot.expressions.AggFunc": {"tf": 1}, "sqlglot.expressions.Abs": {"tf": 1}, "sqlglot.expressions.Anonymous": {"tf": 1}, "sqlglot.expressions.Hll": {"tf": 1}, "sqlglot.expressions.ApproxDistinct": {"tf": 1}, "sqlglot.expressions.Array": {"tf": 1}, "sqlglot.expressions.ToChar": {"tf": 1}, "sqlglot.expressions.GenerateSeries": {"tf": 1}, "sqlglot.expressions.ArrayAgg": {"tf": 1}, "sqlglot.expressions.ArrayAll": {"tf": 1}, "sqlglot.expressions.ArrayAny": {"tf": 1}, "sqlglot.expressions.ArrayConcat": {"tf": 1}, "sqlglot.expressions.ArrayContains": {"tf": 1}, "sqlglot.expressions.ArrayContained": {"tf": 1}, "sqlglot.expressions.ArrayFilter": {"tf": 1}, "sqlglot.expressions.ArrayJoin": {"tf": 1}, "sqlglot.expressions.ArraySize": {"tf": 1}, "sqlglot.expressions.ArraySort": {"tf": 1}, "sqlglot.expressions.ArraySum": {"tf": 1}, "sqlglot.expressions.ArrayUnionAgg": {"tf": 1}, "sqlglot.expressions.Avg": {"tf": 1}, "sqlglot.expressions.AnyValue": {"tf": 1}, "sqlglot.expressions.Case": {"tf": 1}, "sqlglot.expressions.Cast": {"tf": 1}, "sqlglot.expressions.Cast.output_name": {"tf": 1}, "sqlglot.expressions.Cast.is_type": {"tf": 1}, "sqlglot.expressions.Collate": {"tf": 1}, "sqlglot.expressions.TryCast": {"tf": 1}, "sqlglot.expressions.Ceil": {"tf": 1}, "sqlglot.expressions.Coalesce": {"tf": 1}, "sqlglot.expressions.Concat": {"tf": 1}, "sqlglot.expressions.ConcatWs": {"tf": 1}, "sqlglot.expressions.Count": {"tf": 1}, "sqlglot.expressions.CountIf": {"tf": 1}, "sqlglot.expressions.CurrentDate": {"tf": 1}, "sqlglot.expressions.CurrentDatetime": {"tf": 1}, "sqlglot.expressions.CurrentTime": {"tf": 1}, "sqlglot.expressions.CurrentTimestamp": {"tf": 1}, "sqlglot.expressions.DateAdd": {"tf": 1}, "sqlglot.expressions.DateSub": {"tf": 1}, "sqlglot.expressions.DateDiff": {"tf": 1}, "sqlglot.expressions.DateTrunc": {"tf": 1}, "sqlglot.expressions.DatetimeAdd": {"tf": 1}, "sqlglot.expressions.DatetimeSub": {"tf": 1}, "sqlglot.expressions.DatetimeDiff": {"tf": 1}, "sqlglot.expressions.DatetimeTrunc": {"tf": 1}, "sqlglot.expressions.DayOfWeek": {"tf": 1}, "sqlglot.expressions.DayOfMonth": {"tf": 1}, "sqlglot.expressions.DayOfYear": {"tf": 1}, "sqlglot.expressions.WeekOfYear": {"tf": 1}, "sqlglot.expressions.LastDateOfMonth": {"tf": 1}, "sqlglot.expressions.Extract": {"tf": 1}, "sqlglot.expressions.TimestampAdd": {"tf": 1}, "sqlglot.expressions.TimestampSub": {"tf": 1}, "sqlglot.expressions.TimestampDiff": {"tf": 1}, "sqlglot.expressions.TimestampTrunc": {"tf": 1}, "sqlglot.expressions.TimeAdd": {"tf": 1}, "sqlglot.expressions.TimeSub": {"tf": 1}, "sqlglot.expressions.TimeDiff": {"tf": 1}, "sqlglot.expressions.TimeTrunc": {"tf": 1}, "sqlglot.expressions.DateFromParts": {"tf": 1}, "sqlglot.expressions.DateStrToDate": {"tf": 1}, "sqlglot.expressions.DateToDateStr": {"tf": 1}, "sqlglot.expressions.DateToDi": {"tf": 1}, "sqlglot.expressions.Day": {"tf": 1}, "sqlglot.expressions.Decode": {"tf": 1}, "sqlglot.expressions.DiToDate": {"tf": 1}, "sqlglot.expressions.Encode": {"tf": 1}, "sqlglot.expressions.Exp": {"tf": 1}, "sqlglot.expressions.Explode": {"tf": 1}, "sqlglot.expressions.ExponentialTimeDecayedAvg": {"tf": 1}, "sqlglot.expressions.Floor": {"tf": 1}, "sqlglot.expressions.Greatest": {"tf": 1}, "sqlglot.expressions.GroupConcat": {"tf": 1}, "sqlglot.expressions.GroupUniqArray": {"tf": 1}, "sqlglot.expressions.Hex": {"tf": 1}, "sqlglot.expressions.Histogram": {"tf": 1}, "sqlglot.expressions.If": {"tf": 1}, "sqlglot.expressions.IfNull": {"tf": 1}, "sqlglot.expressions.Initcap": {"tf": 1}, "sqlglot.expressions.JSONKeyValue": {"tf": 1}, "sqlglot.expressions.JSONObject": {"tf": 1}, "sqlglot.expressions.JSONBContains": {"tf": 1}, "sqlglot.expressions.JSONExtract": {"tf": 1}, "sqlglot.expressions.JSONExtractScalar": {"tf": 1}, "sqlglot.expressions.JSONBExtract": {"tf": 1}, "sqlglot.expressions.JSONBExtractScalar": {"tf": 1}, "sqlglot.expressions.JSONFormat": {"tf": 1}, "sqlglot.expressions.Least": {"tf": 1}, "sqlglot.expressions.Length": {"tf": 1}, "sqlglot.expressions.Levenshtein": {"tf": 1}, "sqlglot.expressions.Ln": {"tf": 1}, "sqlglot.expressions.Log": {"tf": 1}, "sqlglot.expressions.Log2": {"tf": 1}, "sqlglot.expressions.Log10": {"tf": 1}, "sqlglot.expressions.LogicalOr": {"tf": 1}, "sqlglot.expressions.LogicalAnd": {"tf": 1}, "sqlglot.expressions.Lower": {"tf": 1}, "sqlglot.expressions.Map": {"tf": 1}, "sqlglot.expressions.VarMap": {"tf": 1}, "sqlglot.expressions.MatchAgainst": {"tf": 1}, "sqlglot.expressions.Max": {"tf": 1}, "sqlglot.expressions.Min": {"tf": 1}, "sqlglot.expressions.Month": {"tf": 1}, "sqlglot.expressions.Nvl2": {"tf": 1}, "sqlglot.expressions.Posexplode": {"tf": 1}, "sqlglot.expressions.Pow": {"tf": 1}, "sqlglot.expressions.PercentileCont": {"tf": 1}, "sqlglot.expressions.PercentileDisc": {"tf": 1}, "sqlglot.expressions.Quantile": {"tf": 1}, "sqlglot.expressions.Quantiles": {"tf": 1}, "sqlglot.expressions.QuantileIf": {"tf": 1}, "sqlglot.expressions.ApproxQuantile": {"tf": 1}, "sqlglot.expressions.RangeN": {"tf": 1}, "sqlglot.expressions.ReadCSV": {"tf": 1}, "sqlglot.expressions.Reduce": {"tf": 1}, "sqlglot.expressions.RegexpExtract": {"tf": 1}, "sqlglot.expressions.RegexpLike": {"tf": 1}, "sqlglot.expressions.RegexpILike": {"tf": 1}, "sqlglot.expressions.RegexpSplit": {"tf": 1}, "sqlglot.expressions.Repeat": {"tf": 1}, "sqlglot.expressions.Round": {"tf": 1}, "sqlglot.expressions.RowNumber": {"tf": 1}, "sqlglot.expressions.SafeDivide": {"tf": 1}, "sqlglot.expressions.SetAgg": {"tf": 1}, "sqlglot.expressions.SortArray": {"tf": 1}, "sqlglot.expressions.Split": {"tf": 1}, "sqlglot.expressions.Substring": {"tf": 1}, "sqlglot.expressions.StrPosition": {"tf": 1}, "sqlglot.expressions.StrToDate": {"tf": 1}, "sqlglot.expressions.StrToTime": {"tf": 1}, "sqlglot.expressions.StrToUnix": {"tf": 1}, "sqlglot.expressions.NumberToStr": {"tf": 1}, "sqlglot.expressions.Struct": {"tf": 1}, "sqlglot.expressions.StructExtract": {"tf": 1}, "sqlglot.expressions.Sum": {"tf": 1}, "sqlglot.expressions.Sqrt": {"tf": 1}, "sqlglot.expressions.Stddev": {"tf": 1}, "sqlglot.expressions.StddevPop": {"tf": 1}, "sqlglot.expressions.StddevSamp": {"tf": 1}, "sqlglot.expressions.TimeToStr": {"tf": 1}, "sqlglot.expressions.TimeToTimeStr": {"tf": 1}, "sqlglot.expressions.TimeToUnix": {"tf": 1}, "sqlglot.expressions.TimeStrToDate": {"tf": 1}, "sqlglot.expressions.TimeStrToTime": {"tf": 1}, "sqlglot.expressions.TimeStrToUnix": {"tf": 1}, "sqlglot.expressions.Trim": {"tf": 1}, "sqlglot.expressions.TsOrDsAdd": {"tf": 1}, "sqlglot.expressions.TsOrDsToDateStr": {"tf": 1}, "sqlglot.expressions.TsOrDsToDate": {"tf": 1}, "sqlglot.expressions.TsOrDiToDi": {"tf": 1}, "sqlglot.expressions.Unhex": {"tf": 1}, "sqlglot.expressions.UnixToStr": {"tf": 1}, "sqlglot.expressions.UnixToTime": {"tf": 1}, "sqlglot.expressions.UnixToTimeStr": {"tf": 1}, "sqlglot.expressions.Upper": {"tf": 1}, "sqlglot.expressions.Variance": {"tf": 1}, "sqlglot.expressions.VariancePop": {"tf": 1}, "sqlglot.expressions.Week": {"tf": 1}, "sqlglot.expressions.XMLTable": {"tf": 1}, "sqlglot.expressions.Year": {"tf": 1}, "sqlglot.expressions.Use": {"tf": 1}, "sqlglot.expressions.Merge": {"tf": 1}, "sqlglot.expressions.When": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1}, "sqlglot.expressions.union": {"tf": 1}, "sqlglot.expressions.intersect": {"tf": 1}, "sqlglot.expressions.except_": {"tf": 1}, "sqlglot.expressions.select": {"tf": 1}, "sqlglot.expressions.from_": {"tf": 1}, "sqlglot.expressions.update": {"tf": 1}, "sqlglot.expressions.delete": {"tf": 1}, "sqlglot.expressions.condition": {"tf": 1}, "sqlglot.expressions.and_": {"tf": 1}, "sqlglot.expressions.or_": {"tf": 1}, "sqlglot.expressions.not_": {"tf": 1}, "sqlglot.expressions.paren": {"tf": 1}, "sqlglot.expressions.to_identifier": {"tf": 1}, "sqlglot.expressions.to_interval": {"tf": 1}, "sqlglot.expressions.to_table": {"tf": 1}, "sqlglot.expressions.to_column": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1}, "sqlglot.expressions.subquery": {"tf": 1}, "sqlglot.expressions.column": {"tf": 1}, "sqlglot.expressions.cast": {"tf": 1}, "sqlglot.expressions.table_": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1}, "sqlglot.expressions.var": {"tf": 1}, "sqlglot.expressions.rename_table": {"tf": 1}, "sqlglot.expressions.convert": {"tf": 1}, "sqlglot.expressions.replace_children": {"tf": 1}, "sqlglot.expressions.column_table_names": {"tf": 1}, "sqlglot.expressions.table_name": {"tf": 1}, "sqlglot.expressions.replace_tables": {"tf": 1}, "sqlglot.expressions.replace_placeholders": {"tf": 1}, "sqlglot.expressions.expand": {"tf": 1}, "sqlglot.expressions.func": {"tf": 1}, "sqlglot.expressions.true": {"tf": 1}, "sqlglot.expressions.false": {"tf": 1}, "sqlglot.expressions.null": {"tf": 1}, "sqlglot.generator": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.generator.Generator.__init__": {"tf": 1}, "sqlglot.generator.Generator.generate": {"tf": 1}, "sqlglot.generator.Generator.unsupported": {"tf": 1}, "sqlglot.generator.Generator.sep": {"tf": 1}, "sqlglot.generator.Generator.seg": {"tf": 1}, "sqlglot.generator.Generator.pad_comment": {"tf": 1}, "sqlglot.generator.Generator.maybe_comment": {"tf": 1}, "sqlglot.generator.Generator.wrap": {"tf": 1}, "sqlglot.generator.Generator.no_identify": {"tf": 1}, "sqlglot.generator.Generator.normalize_func": {"tf": 1}, "sqlglot.generator.Generator.indent": {"tf": 1}, "sqlglot.generator.Generator.sql": {"tf": 1}, "sqlglot.generator.Generator.uncache_sql": {"tf": 1}, "sqlglot.generator.Generator.cache_sql": {"tf": 1}, "sqlglot.generator.Generator.characterset_sql": {"tf": 1}, "sqlglot.generator.Generator.column_sql": {"tf": 1}, "sqlglot.generator.Generator.columnposition_sql": {"tf": 1}, "sqlglot.generator.Generator.columndef_sql": {"tf": 1}, "sqlglot.generator.Generator.columnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.autoincrementcolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.compresscolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.generatedasidentitycolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.notnullcolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.primarykeycolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.uniquecolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.create_sql": {"tf": 1}, "sqlglot.generator.Generator.describe_sql": {"tf": 1}, "sqlglot.generator.Generator.prepend_ctes": {"tf": 1}, "sqlglot.generator.Generator.with_sql": {"tf": 1}, "sqlglot.generator.Generator.cte_sql": {"tf": 1}, "sqlglot.generator.Generator.tablealias_sql": {"tf": 1}, "sqlglot.generator.Generator.bitstring_sql": {"tf": 1}, "sqlglot.generator.Generator.hexstring_sql": {"tf": 1}, "sqlglot.generator.Generator.datatype_sql": {"tf": 1}, "sqlglot.generator.Generator.directory_sql": {"tf": 1}, "sqlglot.generator.Generator.delete_sql": {"tf": 1}, "sqlglot.generator.Generator.drop_sql": {"tf": 1}, "sqlglot.generator.Generator.except_sql": {"tf": 1}, "sqlglot.generator.Generator.except_op": {"tf": 1}, "sqlglot.generator.Generator.fetch_sql": {"tf": 1}, "sqlglot.generator.Generator.filter_sql": {"tf": 1}, "sqlglot.generator.Generator.hint_sql": {"tf": 1}, "sqlglot.generator.Generator.index_sql": {"tf": 1}, "sqlglot.generator.Generator.identifier_sql": {"tf": 1}, "sqlglot.generator.Generator.national_sql": {"tf": 1}, "sqlglot.generator.Generator.partition_sql": {"tf": 1}, "sqlglot.generator.Generator.properties_sql": {"tf": 1}, "sqlglot.generator.Generator.root_properties": {"tf": 1}, "sqlglot.generator.Generator.properties": {"tf": 1}, "sqlglot.generator.Generator.with_properties": {"tf": 1}, "sqlglot.generator.Generator.locate_properties": {"tf": 1}, "sqlglot.generator.Generator.property_sql": {"tf": 1}, "sqlglot.generator.Generator.likeproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.fallbackproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.journalproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.freespaceproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.afterjournalproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.checksumproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.mergeblockratioproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.datablocksizeproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.blockcompressionproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.isolatedloadingproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.lockingproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.withdataproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.insert_sql": {"tf": 1}, "sqlglot.generator.Generator.intersect_sql": {"tf": 1}, "sqlglot.generator.Generator.intersect_op": {"tf": 1}, "sqlglot.generator.Generator.introducer_sql": {"tf": 1}, "sqlglot.generator.Generator.pseudotype_sql": {"tf": 1}, "sqlglot.generator.Generator.returning_sql": {"tf": 1}, "sqlglot.generator.Generator.rowformatdelimitedproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.table_sql": {"tf": 1}, "sqlglot.generator.Generator.tablesample_sql": {"tf": 1}, "sqlglot.generator.Generator.pivot_sql": {"tf": 1}, "sqlglot.generator.Generator.tuple_sql": {"tf": 1}, "sqlglot.generator.Generator.update_sql": {"tf": 1}, "sqlglot.generator.Generator.values_sql": {"tf": 1}, "sqlglot.generator.Generator.var_sql": {"tf": 1}, "sqlglot.generator.Generator.into_sql": {"tf": 1}, "sqlglot.generator.Generator.from_sql": {"tf": 1}, "sqlglot.generator.Generator.group_sql": {"tf": 1}, "sqlglot.generator.Generator.having_sql": {"tf": 1}, "sqlglot.generator.Generator.join_sql": {"tf": 1}, "sqlglot.generator.Generator.lambda_sql": {"tf": 1}, "sqlglot.generator.Generator.lateral_sql": {"tf": 1}, "sqlglot.generator.Generator.limit_sql": {"tf": 1}, "sqlglot.generator.Generator.offset_sql": {"tf": 1}, "sqlglot.generator.Generator.setitem_sql": {"tf": 1}, "sqlglot.generator.Generator.set_sql": {"tf": 1}, "sqlglot.generator.Generator.pragma_sql": {"tf": 1}, "sqlglot.generator.Generator.lock_sql": {"tf": 1}, "sqlglot.generator.Generator.literal_sql": {"tf": 1}, "sqlglot.generator.Generator.loaddata_sql": {"tf": 1}, "sqlglot.generator.Generator.null_sql": {"tf": 1}, "sqlglot.generator.Generator.boolean_sql": {"tf": 1}, "sqlglot.generator.Generator.order_sql": {"tf": 1}, "sqlglot.generator.Generator.cluster_sql": {"tf": 1}, "sqlglot.generator.Generator.distribute_sql": {"tf": 1}, "sqlglot.generator.Generator.sort_sql": {"tf": 1}, "sqlglot.generator.Generator.ordered_sql": {"tf": 1}, "sqlglot.generator.Generator.matchrecognize_sql": {"tf": 1}, "sqlglot.generator.Generator.query_modifiers": {"tf": 1}, "sqlglot.generator.Generator.select_sql": {"tf": 1}, "sqlglot.generator.Generator.schema_sql": {"tf": 1}, "sqlglot.generator.Generator.star_sql": {"tf": 1}, "sqlglot.generator.Generator.structkwarg_sql": {"tf": 1}, "sqlglot.generator.Generator.parameter_sql": {"tf": 1}, "sqlglot.generator.Generator.sessionparameter_sql": {"tf": 1}, "sqlglot.generator.Generator.placeholder_sql": {"tf": 1}, "sqlglot.generator.Generator.subquery_sql": {"tf": 1}, "sqlglot.generator.Generator.qualify_sql": {"tf": 1}, "sqlglot.generator.Generator.union_sql": {"tf": 1}, "sqlglot.generator.Generator.union_op": {"tf": 1}, "sqlglot.generator.Generator.unnest_sql": {"tf": 1}, "sqlglot.generator.Generator.where_sql": {"tf": 1}, "sqlglot.generator.Generator.window_sql": {"tf": 1}, "sqlglot.generator.Generator.partition_by_sql": {"tf": 1}, "sqlglot.generator.Generator.window_spec_sql": {"tf": 1}, "sqlglot.generator.Generator.withingroup_sql": {"tf": 1}, "sqlglot.generator.Generator.between_sql": {"tf": 1}, "sqlglot.generator.Generator.bracket_sql": {"tf": 1}, "sqlglot.generator.Generator.all_sql": {"tf": 1}, "sqlglot.generator.Generator.any_sql": {"tf": 1}, "sqlglot.generator.Generator.exists_sql": {"tf": 1}, "sqlglot.generator.Generator.case_sql": {"tf": 1}, "sqlglot.generator.Generator.constraint_sql": {"tf": 1}, "sqlglot.generator.Generator.extract_sql": {"tf": 1}, "sqlglot.generator.Generator.trim_sql": {"tf": 1}, "sqlglot.generator.Generator.concat_sql": {"tf": 1}, "sqlglot.generator.Generator.check_sql": {"tf": 1}, "sqlglot.generator.Generator.foreignkey_sql": {"tf": 1}, "sqlglot.generator.Generator.primarykey_sql": {"tf": 1}, "sqlglot.generator.Generator.unique_sql": {"tf": 1}, "sqlglot.generator.Generator.if_sql": {"tf": 1}, "sqlglot.generator.Generator.matchagainst_sql": {"tf": 1}, "sqlglot.generator.Generator.jsonkeyvalue_sql": {"tf": 1}, "sqlglot.generator.Generator.jsonobject_sql": {"tf": 1}, "sqlglot.generator.Generator.in_sql": {"tf": 1}, "sqlglot.generator.Generator.in_unnest_op": {"tf": 1}, "sqlglot.generator.Generator.interval_sql": {"tf": 1}, "sqlglot.generator.Generator.return_sql": {"tf": 1}, "sqlglot.generator.Generator.reference_sql": {"tf": 1}, "sqlglot.generator.Generator.anonymous_sql": {"tf": 1}, "sqlglot.generator.Generator.paren_sql": {"tf": 1}, "sqlglot.generator.Generator.neg_sql": {"tf": 1}, "sqlglot.generator.Generator.not_sql": {"tf": 1}, "sqlglot.generator.Generator.alias_sql": {"tf": 1}, "sqlglot.generator.Generator.aliases_sql": {"tf": 1}, "sqlglot.generator.Generator.attimezone_sql": {"tf": 1}, "sqlglot.generator.Generator.add_sql": {"tf": 1}, "sqlglot.generator.Generator.and_sql": {"tf": 1}, "sqlglot.generator.Generator.connector_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwiseand_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwiseleftshift_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwisenot_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwiseor_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwiserightshift_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwisexor_sql": {"tf": 1}, "sqlglot.generator.Generator.cast_sql": {"tf": 1}, "sqlglot.generator.Generator.currentdate_sql": {"tf": 1}, "sqlglot.generator.Generator.collate_sql": {"tf": 1}, "sqlglot.generator.Generator.command_sql": {"tf": 1}, "sqlglot.generator.Generator.comment_sql": {"tf": 1}, "sqlglot.generator.Generator.transaction_sql": {"tf": 1}, "sqlglot.generator.Generator.commit_sql": {"tf": 1}, "sqlglot.generator.Generator.rollback_sql": {"tf": 1}, "sqlglot.generator.Generator.altercolumn_sql": {"tf": 1}, "sqlglot.generator.Generator.renametable_sql": {"tf": 1}, "sqlglot.generator.Generator.altertable_sql": {"tf": 1}, "sqlglot.generator.Generator.droppartition_sql": {"tf": 1}, "sqlglot.generator.Generator.addconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.distinct_sql": {"tf": 1}, "sqlglot.generator.Generator.ignorenulls_sql": {"tf": 1}, "sqlglot.generator.Generator.respectnulls_sql": {"tf": 1}, "sqlglot.generator.Generator.intdiv_sql": {"tf": 1}, "sqlglot.generator.Generator.dpipe_sql": {"tf": 1}, "sqlglot.generator.Generator.div_sql": {"tf": 1}, "sqlglot.generator.Generator.overlaps_sql": {"tf": 1}, "sqlglot.generator.Generator.distance_sql": {"tf": 1}, "sqlglot.generator.Generator.dot_sql": {"tf": 1}, "sqlglot.generator.Generator.eq_sql": {"tf": 1}, "sqlglot.generator.Generator.escape_sql": {"tf": 1}, "sqlglot.generator.Generator.glob_sql": {"tf": 1}, "sqlglot.generator.Generator.gt_sql": {"tf": 1}, "sqlglot.generator.Generator.gte_sql": {"tf": 1}, "sqlglot.generator.Generator.ilike_sql": {"tf": 1}, "sqlglot.generator.Generator.ilikeany_sql": {"tf": 1}, "sqlglot.generator.Generator.is_sql": {"tf": 1}, "sqlglot.generator.Generator.like_sql": {"tf": 1}, "sqlglot.generator.Generator.likeany_sql": {"tf": 1}, "sqlglot.generator.Generator.similarto_sql": {"tf": 1}, "sqlglot.generator.Generator.lt_sql": {"tf": 1}, "sqlglot.generator.Generator.lte_sql": {"tf": 1}, "sqlglot.generator.Generator.mod_sql": {"tf": 1}, "sqlglot.generator.Generator.mul_sql": {"tf": 1}, "sqlglot.generator.Generator.neq_sql": {"tf": 1}, "sqlglot.generator.Generator.nullsafeeq_sql": {"tf": 1}, "sqlglot.generator.Generator.nullsafeneq_sql": {"tf": 1}, "sqlglot.generator.Generator.or_sql": {"tf": 1}, "sqlglot.generator.Generator.slice_sql": {"tf": 1}, "sqlglot.generator.Generator.sub_sql": {"tf": 1}, "sqlglot.generator.Generator.trycast_sql": {"tf": 1}, "sqlglot.generator.Generator.use_sql": {"tf": 1}, "sqlglot.generator.Generator.binary": {"tf": 1}, "sqlglot.generator.Generator.function_fallback_sql": {"tf": 1}, "sqlglot.generator.Generator.func": {"tf": 1}, "sqlglot.generator.Generator.format_args": {"tf": 1}, "sqlglot.generator.Generator.text_width": {"tf": 1}, "sqlglot.generator.Generator.format_time": {"tf": 1}, "sqlglot.generator.Generator.expressions": {"tf": 1}, "sqlglot.generator.Generator.op_expressions": {"tf": 1}, "sqlglot.generator.Generator.naked_property": {"tf": 1}, "sqlglot.generator.Generator.set_operation": {"tf": 1}, "sqlglot.generator.Generator.tag_sql": {"tf": 1}, "sqlglot.generator.Generator.token_sql": {"tf": 1}, "sqlglot.generator.Generator.userdefinedfunction_sql": {"tf": 1}, "sqlglot.generator.Generator.joinhint_sql": {"tf": 1}, "sqlglot.generator.Generator.kwarg_sql": {"tf": 1}, "sqlglot.generator.Generator.when_sql": {"tf": 1}, "sqlglot.generator.Generator.merge_sql": {"tf": 1}, "sqlglot.generator.Generator.tochar_sql": {"tf": 1}, "sqlglot.helper": {"tf": 1}, "sqlglot.helper.AutoName": {"tf": 1}, "sqlglot.helper.seq_get": {"tf": 1}, "sqlglot.helper.ensure_list": {"tf": 1}, "sqlglot.helper.ensure_collection": {"tf": 1}, "sqlglot.helper.csv": {"tf": 1}, "sqlglot.helper.subclasses": {"tf": 1}, "sqlglot.helper.apply_index_offset": {"tf": 1}, "sqlglot.helper.camel_to_snake_case": {"tf": 1}, "sqlglot.helper.while_changing": {"tf": 1}, "sqlglot.helper.tsort": {"tf": 1}, "sqlglot.helper.open_file": {"tf": 1}, "sqlglot.helper.csv_reader": {"tf": 1}, "sqlglot.helper.find_new_name": {"tf": 1}, "sqlglot.helper.object_to_dict": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1}, "sqlglot.helper.is_iterable": {"tf": 1}, "sqlglot.helper.flatten": {"tf": 1}, "sqlglot.helper.count_params": {"tf": 1}, "sqlglot.helper.dict_depth": {"tf": 1}, "sqlglot.helper.first": {"tf": 1}, "sqlglot.helper.should_identify": {"tf": 1}, "sqlglot.lineage": {"tf": 1}, "sqlglot.lineage.Node": {"tf": 1}, "sqlglot.lineage.Node.__init__": {"tf": 1}, "sqlglot.lineage.Node.walk": {"tf": 1}, "sqlglot.lineage.Node.to_html": {"tf": 1}, "sqlglot.lineage.lineage": {"tf": 1}, "sqlglot.lineage.LineageHTML": {"tf": 1}, "sqlglot.lineage.LineageHTML.__init__": {"tf": 1}, "sqlglot.optimizer": {"tf": 1}, "sqlglot.optimizer.annotate_types": {"tf": 1}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}, "sqlglot.optimizer.annotate_types.TypeAnnotator": {"tf": 1}, "sqlglot.optimizer.annotate_types.TypeAnnotator.__init__": {"tf": 1}, "sqlglot.optimizer.annotate_types.TypeAnnotator.annotate": {"tf": 1}, "sqlglot.optimizer.canonicalize": {"tf": 1}, "sqlglot.optimizer.canonicalize.canonicalize": {"tf": 1}, "sqlglot.optimizer.canonicalize.add_text_to_concat": {"tf": 1}, "sqlglot.optimizer.canonicalize.coerce_type": {"tf": 1}, "sqlglot.optimizer.canonicalize.remove_redundant_casts": {"tf": 1}, "sqlglot.optimizer.canonicalize.ensure_bool_predicates": {"tf": 1}, "sqlglot.optimizer.eliminate_ctes": {"tf": 1}, "sqlglot.optimizer.eliminate_ctes.eliminate_ctes": {"tf": 1}, "sqlglot.optimizer.eliminate_joins": {"tf": 1}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 1}, "sqlglot.optimizer.eliminate_joins.join_condition": {"tf": 1}, "sqlglot.optimizer.eliminate_subqueries": {"tf": 1}, "sqlglot.optimizer.eliminate_subqueries.eliminate_subqueries": {"tf": 1}, "sqlglot.optimizer.expand_laterals": {"tf": 1}, "sqlglot.optimizer.expand_laterals.expand_laterals": {"tf": 1}, "sqlglot.optimizer.expand_multi_table_selects": {"tf": 1}, "sqlglot.optimizer.expand_multi_table_selects.expand_multi_table_selects": {"tf": 1}, "sqlglot.optimizer.isolate_table_selects": {"tf": 1}, "sqlglot.optimizer.isolate_table_selects.isolate_table_selects": {"tf": 1}, "sqlglot.optimizer.lower_identities": {"tf": 1}, "sqlglot.optimizer.lower_identities.lower_identities": {"tf": 1}, "sqlglot.optimizer.merge_subqueries": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_ctes": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_derived_tables": {"tf": 1}, "sqlglot.optimizer.normalize": {"tf": 1}, "sqlglot.optimizer.normalize.normalize": {"tf": 1}, "sqlglot.optimizer.normalize.normalized": {"tf": 1}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1}, "sqlglot.optimizer.normalize.distributive_law": {"tf": 1}, "sqlglot.optimizer.optimize_joins": {"tf": 1}, "sqlglot.optimizer.optimize_joins.optimize_joins": {"tf": 1}, "sqlglot.optimizer.optimize_joins.reorder_joins": {"tf": 1}, "sqlglot.optimizer.optimize_joins.normalize": {"tf": 1}, "sqlglot.optimizer.optimize_joins.other_table_names": {"tf": 1}, "sqlglot.optimizer.optimizer": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_predicates": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_cnf": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_dnf": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.nodes_for_predicate": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.replace_aliases": {"tf": 1}, "sqlglot.optimizer.pushdown_projections": {"tf": 1}, "sqlglot.optimizer.pushdown_projections.DEFAULT_SELECTION": {"tf": 1}, "sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 1}, "sqlglot.optimizer.qualify_columns": {"tf": 1}, "sqlglot.optimizer.qualify_columns.qualify_columns": {"tf": 1}, "sqlglot.optimizer.qualify_columns.validate_qualify_columns": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.__init__": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.get_table": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.all_columns": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.get_source_columns": {"tf": 1}, "sqlglot.optimizer.qualify_tables": {"tf": 1}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"tf": 1}, "sqlglot.optimizer.scope": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.ROOT": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.SUBQUERY": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.DERIVED_TABLE": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.CTE": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.UNION": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.UDTF": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 1}, "sqlglot.optimizer.scope.Scope.__init__": {"tf": 1}, "sqlglot.optimizer.scope.Scope.clear_cache": {"tf": 1}, "sqlglot.optimizer.scope.Scope.branch": {"tf": 1}, "sqlglot.optimizer.scope.Scope.walk": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1}, "sqlglot.optimizer.scope.Scope.replace": {"tf": 1}, "sqlglot.optimizer.scope.Scope.tables": {"tf": 1}, "sqlglot.optimizer.scope.Scope.ctes": {"tf": 1}, "sqlglot.optimizer.scope.Scope.derived_tables": {"tf": 1}, "sqlglot.optimizer.scope.Scope.udtfs": {"tf": 1}, "sqlglot.optimizer.scope.Scope.subqueries": {"tf": 1}, "sqlglot.optimizer.scope.Scope.columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 1}, "sqlglot.optimizer.scope.Scope.cte_sources": {"tf": 1}, "sqlglot.optimizer.scope.Scope.selects": {"tf": 1}, "sqlglot.optimizer.scope.Scope.external_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.unqualified_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.join_hints": {"tf": 1}, "sqlglot.optimizer.scope.Scope.source_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_subquery": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_derived_table": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_union": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_cte": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_root": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_udtf": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_correlated_subquery": {"tf": 1}, "sqlglot.optimizer.scope.Scope.rename_source": {"tf": 1}, "sqlglot.optimizer.scope.Scope.add_source": {"tf": 1}, "sqlglot.optimizer.scope.Scope.remove_source": {"tf": 1}, "sqlglot.optimizer.scope.Scope.traverse": {"tf": 1}, "sqlglot.optimizer.scope.Scope.ref_count": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}, "sqlglot.optimizer.scope.build_scope": {"tf": 1}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1}, "sqlglot.optimizer.simplify": {"tf": 1}, "sqlglot.optimizer.simplify.simplify": {"tf": 1}, "sqlglot.optimizer.simplify.rewrite_between": {"tf": 1}, "sqlglot.optimizer.simplify.simplify_not": {"tf": 1}, "sqlglot.optimizer.simplify.flatten": {"tf": 1}, "sqlglot.optimizer.simplify.simplify_connectors": {"tf": 1}, "sqlglot.optimizer.simplify.remove_compliments": {"tf": 1}, "sqlglot.optimizer.simplify.uniq_sort": {"tf": 1}, "sqlglot.optimizer.simplify.absorb_and_eliminate": {"tf": 1}, "sqlglot.optimizer.simplify.simplify_literals": {"tf": 1}, "sqlglot.optimizer.simplify.simplify_parens": {"tf": 1}, "sqlglot.optimizer.simplify.remove_where_true": {"tf": 1}, "sqlglot.optimizer.simplify.always_true": {"tf": 1}, "sqlglot.optimizer.simplify.is_complement": {"tf": 1}, "sqlglot.optimizer.simplify.is_false": {"tf": 1}, "sqlglot.optimizer.simplify.is_null": {"tf": 1}, "sqlglot.optimizer.simplify.eval_boolean": {"tf": 1}, "sqlglot.optimizer.simplify.extract_date": {"tf": 1}, "sqlglot.optimizer.simplify.extract_interval": {"tf": 1}, "sqlglot.optimizer.simplify.date_literal": {"tf": 1}, "sqlglot.optimizer.simplify.boolean_literal": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.unnest": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.decorrelate": {"tf": 1}, "sqlglot.parser": {"tf": 1}, "sqlglot.parser.parse_var_map": {"tf": 1}, "sqlglot.parser.parse_like": {"tf": 1}, "sqlglot.parser.binary_range_parser": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1}, "sqlglot.parser.Parser.__init__": {"tf": 1}, "sqlglot.parser.Parser.reset": {"tf": 1}, "sqlglot.parser.Parser.parse": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 1}, "sqlglot.parser.Parser.check_errors": {"tf": 1}, "sqlglot.parser.Parser.raise_error": {"tf": 1}, "sqlglot.parser.Parser.expression": {"tf": 1}, "sqlglot.parser.Parser.validate_expression": {"tf": 1}, "sqlglot.planner": {"tf": 1}, "sqlglot.planner.Plan": {"tf": 1}, "sqlglot.planner.Plan.__init__": {"tf": 1}, "sqlglot.planner.Step": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Step.add_dependency": {"tf": 1}, "sqlglot.planner.Step.to_s": {"tf": 1}, "sqlglot.planner.Scan": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.Join": {"tf": 1}, "sqlglot.planner.Join.from_joins": {"tf": 1}, "sqlglot.planner.Aggregate": {"tf": 1}, "sqlglot.planner.Sort": {"tf": 1}, "sqlglot.planner.SetOperation": {"tf": 1}, "sqlglot.planner.SetOperation.__init__": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}, "sqlglot.schema.Schema": {"tf": 1}, "sqlglot.schema.Schema.add_table": {"tf": 1}, "sqlglot.schema.Schema.column_names": {"tf": 1}, "sqlglot.schema.Schema.get_column_type": {"tf": 1}, "sqlglot.schema.Schema.supported_table_args": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema.__init__": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema.table_parts": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema.find": {"tf": 1}, "sqlglot.schema.MappingSchema": {"tf": 1}, "sqlglot.schema.MappingSchema.__init__": {"tf": 1}, "sqlglot.schema.MappingSchema.from_mapping_schema": {"tf": 1}, "sqlglot.schema.MappingSchema.copy": {"tf": 1}, "sqlglot.schema.MappingSchema.add_table": {"tf": 1}, "sqlglot.schema.MappingSchema.column_names": {"tf": 1}, "sqlglot.schema.MappingSchema.get_column_type": {"tf": 1}, "sqlglot.schema.ensure_schema": {"tf": 1}, "sqlglot.schema.ensure_column_mapping": {"tf": 1}, "sqlglot.schema.flatten_schema": {"tf": 1}, "sqlglot.serde": {"tf": 1}, "sqlglot.serde.dump": {"tf": 1}, "sqlglot.serde.load": {"tf": 1}, "sqlglot.time": {"tf": 1}, "sqlglot.time.format_time": {"tf": 1}, "sqlglot.tokens": {"tf": 1}, "sqlglot.tokens.TokenType": {"tf": 1}, "sqlglot.tokens.TokenType.L_PAREN": {"tf": 1}, "sqlglot.tokens.TokenType.R_PAREN": {"tf": 1}, "sqlglot.tokens.TokenType.L_BRACKET": {"tf": 1}, "sqlglot.tokens.TokenType.R_BRACKET": {"tf": 1}, "sqlglot.tokens.TokenType.L_BRACE": {"tf": 1}, "sqlglot.tokens.TokenType.R_BRACE": {"tf": 1}, "sqlglot.tokens.TokenType.COMMA": {"tf": 1}, "sqlglot.tokens.TokenType.DOT": {"tf": 1}, "sqlglot.tokens.TokenType.DASH": {"tf": 1}, "sqlglot.tokens.TokenType.PLUS": {"tf": 1}, "sqlglot.tokens.TokenType.COLON": {"tf": 1}, "sqlglot.tokens.TokenType.DCOLON": {"tf": 1}, "sqlglot.tokens.TokenType.SEMICOLON": {"tf": 1}, "sqlglot.tokens.TokenType.STAR": {"tf": 1}, "sqlglot.tokens.TokenType.BACKSLASH": {"tf": 1}, "sqlglot.tokens.TokenType.SLASH": {"tf": 1}, "sqlglot.tokens.TokenType.LT": {"tf": 1}, "sqlglot.tokens.TokenType.LTE": {"tf": 1}, "sqlglot.tokens.TokenType.GT": {"tf": 1}, "sqlglot.tokens.TokenType.GTE": {"tf": 1}, "sqlglot.tokens.TokenType.NOT": {"tf": 1}, "sqlglot.tokens.TokenType.EQ": {"tf": 1}, "sqlglot.tokens.TokenType.NEQ": {"tf": 1}, "sqlglot.tokens.TokenType.NULLSAFE_EQ": {"tf": 1}, "sqlglot.tokens.TokenType.AND": {"tf": 1}, "sqlglot.tokens.TokenType.OR": {"tf": 1}, "sqlglot.tokens.TokenType.AMP": {"tf": 1}, "sqlglot.tokens.TokenType.DPIPE": {"tf": 1}, "sqlglot.tokens.TokenType.PIPE": {"tf": 1}, "sqlglot.tokens.TokenType.CARET": {"tf": 1}, "sqlglot.tokens.TokenType.TILDA": {"tf": 1}, "sqlglot.tokens.TokenType.ARROW": {"tf": 1}, "sqlglot.tokens.TokenType.DARROW": {"tf": 1}, "sqlglot.tokens.TokenType.FARROW": {"tf": 1}, "sqlglot.tokens.TokenType.HASH": {"tf": 1}, "sqlglot.tokens.TokenType.HASH_ARROW": {"tf": 1}, "sqlglot.tokens.TokenType.DHASH_ARROW": {"tf": 1}, "sqlglot.tokens.TokenType.LR_ARROW": {"tf": 1}, "sqlglot.tokens.TokenType.LT_AT": {"tf": 1}, "sqlglot.tokens.TokenType.AT_GT": {"tf": 1}, "sqlglot.tokens.TokenType.DOLLAR": {"tf": 1}, "sqlglot.tokens.TokenType.PARAMETER": {"tf": 1}, "sqlglot.tokens.TokenType.SESSION_PARAMETER": {"tf": 1}, "sqlglot.tokens.TokenType.NATIONAL": {"tf": 1}, "sqlglot.tokens.TokenType.DAMP": {"tf": 1}, "sqlglot.tokens.TokenType.BLOCK_START": {"tf": 1}, "sqlglot.tokens.TokenType.BLOCK_END": {"tf": 1}, "sqlglot.tokens.TokenType.SPACE": {"tf": 1}, "sqlglot.tokens.TokenType.BREAK": {"tf": 1}, "sqlglot.tokens.TokenType.STRING": {"tf": 1}, "sqlglot.tokens.TokenType.NUMBER": {"tf": 1}, "sqlglot.tokens.TokenType.IDENTIFIER": {"tf": 1}, "sqlglot.tokens.TokenType.DATABASE": {"tf": 1}, "sqlglot.tokens.TokenType.COLUMN": {"tf": 1}, "sqlglot.tokens.TokenType.COLUMN_DEF": {"tf": 1}, "sqlglot.tokens.TokenType.SCHEMA": {"tf": 1}, "sqlglot.tokens.TokenType.TABLE": {"tf": 1}, "sqlglot.tokens.TokenType.VAR": {"tf": 1}, "sqlglot.tokens.TokenType.BIT_STRING": {"tf": 1}, "sqlglot.tokens.TokenType.HEX_STRING": {"tf": 1}, "sqlglot.tokens.TokenType.BYTE_STRING": {"tf": 1}, "sqlglot.tokens.TokenType.BIT": {"tf": 1}, "sqlglot.tokens.TokenType.BOOLEAN": {"tf": 1}, "sqlglot.tokens.TokenType.TINYINT": {"tf": 1}, "sqlglot.tokens.TokenType.UTINYINT": {"tf": 1}, "sqlglot.tokens.TokenType.SMALLINT": {"tf": 1}, "sqlglot.tokens.TokenType.USMALLINT": {"tf": 1}, "sqlglot.tokens.TokenType.INT": {"tf": 1}, "sqlglot.tokens.TokenType.UINT": {"tf": 1}, "sqlglot.tokens.TokenType.BIGINT": {"tf": 1}, "sqlglot.tokens.TokenType.UBIGINT": {"tf": 1}, "sqlglot.tokens.TokenType.FLOAT": {"tf": 1}, "sqlglot.tokens.TokenType.DOUBLE": {"tf": 1}, "sqlglot.tokens.TokenType.DECIMAL": {"tf": 1}, "sqlglot.tokens.TokenType.CHAR": {"tf": 1}, "sqlglot.tokens.TokenType.NCHAR": {"tf": 1}, "sqlglot.tokens.TokenType.VARCHAR": {"tf": 1}, "sqlglot.tokens.TokenType.NVARCHAR": {"tf": 1}, "sqlglot.tokens.TokenType.TEXT": {"tf": 1}, "sqlglot.tokens.TokenType.MEDIUMTEXT": {"tf": 1}, "sqlglot.tokens.TokenType.LONGTEXT": {"tf": 1}, "sqlglot.tokens.TokenType.MEDIUMBLOB": {"tf": 1}, "sqlglot.tokens.TokenType.LONGBLOB": {"tf": 1}, "sqlglot.tokens.TokenType.BINARY": {"tf": 1}, "sqlglot.tokens.TokenType.VARBINARY": {"tf": 1}, "sqlglot.tokens.TokenType.JSON": {"tf": 1}, "sqlglot.tokens.TokenType.JSONB": {"tf": 1}, "sqlglot.tokens.TokenType.TIME": {"tf": 1}, "sqlglot.tokens.TokenType.TIMESTAMP": {"tf": 1}, "sqlglot.tokens.TokenType.TIMESTAMPTZ": {"tf": 1}, "sqlglot.tokens.TokenType.TIMESTAMPLTZ": {"tf": 1}, "sqlglot.tokens.TokenType.DATETIME": {"tf": 1}, "sqlglot.tokens.TokenType.DATE": {"tf": 1}, "sqlglot.tokens.TokenType.UUID": {"tf": 1}, "sqlglot.tokens.TokenType.GEOGRAPHY": {"tf": 1}, "sqlglot.tokens.TokenType.NULLABLE": {"tf": 1}, "sqlglot.tokens.TokenType.GEOMETRY": {"tf": 1}, "sqlglot.tokens.TokenType.HLLSKETCH": {"tf": 1}, "sqlglot.tokens.TokenType.HSTORE": {"tf": 1}, "sqlglot.tokens.TokenType.SUPER": {"tf": 1}, "sqlglot.tokens.TokenType.SERIAL": {"tf": 1}, "sqlglot.tokens.TokenType.SMALLSERIAL": {"tf": 1}, "sqlglot.tokens.TokenType.BIGSERIAL": {"tf": 1}, "sqlglot.tokens.TokenType.XML": {"tf": 1}, "sqlglot.tokens.TokenType.UNIQUEIDENTIFIER": {"tf": 1}, "sqlglot.tokens.TokenType.MONEY": {"tf": 1}, "sqlglot.tokens.TokenType.SMALLMONEY": {"tf": 1}, "sqlglot.tokens.TokenType.ROWVERSION": {"tf": 1}, "sqlglot.tokens.TokenType.IMAGE": {"tf": 1}, "sqlglot.tokens.TokenType.VARIANT": {"tf": 1}, "sqlglot.tokens.TokenType.OBJECT": {"tf": 1}, "sqlglot.tokens.TokenType.INET": {"tf": 1}, "sqlglot.tokens.TokenType.ALIAS": {"tf": 1}, "sqlglot.tokens.TokenType.ALTER": {"tf": 1}, "sqlglot.tokens.TokenType.ALWAYS": {"tf": 1}, "sqlglot.tokens.TokenType.ALL": {"tf": 1}, "sqlglot.tokens.TokenType.ANTI": {"tf": 1}, "sqlglot.tokens.TokenType.ANY": {"tf": 1}, "sqlglot.tokens.TokenType.APPLY": {"tf": 1}, "sqlglot.tokens.TokenType.ARRAY": {"tf": 1}, "sqlglot.tokens.TokenType.ASC": {"tf": 1}, "sqlglot.tokens.TokenType.ASOF": {"tf": 1}, "sqlglot.tokens.TokenType.AT_TIME_ZONE": {"tf": 1}, "sqlglot.tokens.TokenType.AUTO_INCREMENT": {"tf": 1}, "sqlglot.tokens.TokenType.BEGIN": {"tf": 1}, "sqlglot.tokens.TokenType.BETWEEN": {"tf": 1}, "sqlglot.tokens.TokenType.BOTH": {"tf": 1}, "sqlglot.tokens.TokenType.BUCKET": {"tf": 1}, "sqlglot.tokens.TokenType.BY_DEFAULT": {"tf": 1}, "sqlglot.tokens.TokenType.CACHE": {"tf": 1}, "sqlglot.tokens.TokenType.CASCADE": {"tf": 1}, "sqlglot.tokens.TokenType.CASE": {"tf": 1}, "sqlglot.tokens.TokenType.CHARACTER_SET": {"tf": 1}, "sqlglot.tokens.TokenType.CLUSTER_BY": {"tf": 1}, "sqlglot.tokens.TokenType.COLLATE": {"tf": 1}, "sqlglot.tokens.TokenType.COMMAND": {"tf": 1}, "sqlglot.tokens.TokenType.COMMENT": {"tf": 1}, "sqlglot.tokens.TokenType.COMMIT": {"tf": 1}, "sqlglot.tokens.TokenType.COMPOUND": {"tf": 1}, "sqlglot.tokens.TokenType.CONSTRAINT": {"tf": 1}, "sqlglot.tokens.TokenType.CREATE": {"tf": 1}, "sqlglot.tokens.TokenType.CROSS": {"tf": 1}, "sqlglot.tokens.TokenType.CUBE": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_DATE": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_DATETIME": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_ROW": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_TIME": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_TIMESTAMP": {"tf": 1}, "sqlglot.tokens.TokenType.DEFAULT": {"tf": 1}, "sqlglot.tokens.TokenType.DELETE": {"tf": 1}, "sqlglot.tokens.TokenType.DESC": {"tf": 1}, "sqlglot.tokens.TokenType.DESCRIBE": {"tf": 1}, "sqlglot.tokens.TokenType.DISTINCT": {"tf": 1}, "sqlglot.tokens.TokenType.DISTINCT_FROM": {"tf": 1}, "sqlglot.tokens.TokenType.DISTRIBUTE_BY": {"tf": 1}, "sqlglot.tokens.TokenType.DIV": {"tf": 1}, "sqlglot.tokens.TokenType.DROP": {"tf": 1}, "sqlglot.tokens.TokenType.ELSE": {"tf": 1}, "sqlglot.tokens.TokenType.END": {"tf": 1}, "sqlglot.tokens.TokenType.ESCAPE": {"tf": 1}, "sqlglot.tokens.TokenType.EXCEPT": {"tf": 1}, "sqlglot.tokens.TokenType.EXECUTE": {"tf": 1}, "sqlglot.tokens.TokenType.EXISTS": {"tf": 1}, "sqlglot.tokens.TokenType.FALSE": {"tf": 1}, "sqlglot.tokens.TokenType.FETCH": {"tf": 1}, "sqlglot.tokens.TokenType.FILTER": {"tf": 1}, "sqlglot.tokens.TokenType.FINAL": {"tf": 1}, "sqlglot.tokens.TokenType.FIRST": {"tf": 1}, "sqlglot.tokens.TokenType.FOLLOWING": {"tf": 1}, "sqlglot.tokens.TokenType.FOR": {"tf": 1}, "sqlglot.tokens.TokenType.FOREIGN_KEY": {"tf": 1}, "sqlglot.tokens.TokenType.FORMAT": {"tf": 1}, "sqlglot.tokens.TokenType.FROM": {"tf": 1}, "sqlglot.tokens.TokenType.FULL": {"tf": 1}, "sqlglot.tokens.TokenType.FUNCTION": {"tf": 1}, "sqlglot.tokens.TokenType.GLOB": {"tf": 1}, "sqlglot.tokens.TokenType.GLOBAL": {"tf": 1}, "sqlglot.tokens.TokenType.GROUP_BY": {"tf": 1}, "sqlglot.tokens.TokenType.GROUPING_SETS": {"tf": 1}, "sqlglot.tokens.TokenType.HAVING": {"tf": 1}, "sqlglot.tokens.TokenType.HINT": {"tf": 1}, "sqlglot.tokens.TokenType.IF": {"tf": 1}, "sqlglot.tokens.TokenType.IGNORE_NULLS": {"tf": 1}, "sqlglot.tokens.TokenType.ILIKE": {"tf": 1}, "sqlglot.tokens.TokenType.ILIKE_ANY": {"tf": 1}, "sqlglot.tokens.TokenType.IN": {"tf": 1}, "sqlglot.tokens.TokenType.INDEX": {"tf": 1}, "sqlglot.tokens.TokenType.INNER": {"tf": 1}, "sqlglot.tokens.TokenType.INSERT": {"tf": 1}, "sqlglot.tokens.TokenType.INTERSECT": {"tf": 1}, "sqlglot.tokens.TokenType.INTERVAL": {"tf": 1}, "sqlglot.tokens.TokenType.INTO": {"tf": 1}, "sqlglot.tokens.TokenType.INTRODUCER": {"tf": 1}, "sqlglot.tokens.TokenType.IRLIKE": {"tf": 1}, "sqlglot.tokens.TokenType.IS": {"tf": 1}, "sqlglot.tokens.TokenType.ISNULL": {"tf": 1}, "sqlglot.tokens.TokenType.JOIN": {"tf": 1}, "sqlglot.tokens.TokenType.JOIN_MARKER": {"tf": 1}, "sqlglot.tokens.TokenType.LANGUAGE": {"tf": 1}, "sqlglot.tokens.TokenType.LATERAL": {"tf": 1}, "sqlglot.tokens.TokenType.LAZY": {"tf": 1}, "sqlglot.tokens.TokenType.LEADING": {"tf": 1}, "sqlglot.tokens.TokenType.LEFT": {"tf": 1}, "sqlglot.tokens.TokenType.LIKE": {"tf": 1}, "sqlglot.tokens.TokenType.LIKE_ANY": {"tf": 1}, "sqlglot.tokens.TokenType.LIMIT": {"tf": 1}, "sqlglot.tokens.TokenType.LOAD_DATA": {"tf": 1}, "sqlglot.tokens.TokenType.LOCAL": {"tf": 1}, "sqlglot.tokens.TokenType.MAP": {"tf": 1}, "sqlglot.tokens.TokenType.MATCH_RECOGNIZE": {"tf": 1}, "sqlglot.tokens.TokenType.MATERIALIZED": {"tf": 1}, "sqlglot.tokens.TokenType.MERGE": {"tf": 1}, "sqlglot.tokens.TokenType.MOD": {"tf": 1}, "sqlglot.tokens.TokenType.NATURAL": {"tf": 1}, "sqlglot.tokens.TokenType.NEXT": {"tf": 1}, "sqlglot.tokens.TokenType.NO_ACTION": {"tf": 1}, "sqlglot.tokens.TokenType.NOTNULL": {"tf": 1}, "sqlglot.tokens.TokenType.NULL": {"tf": 1}, "sqlglot.tokens.TokenType.NULLS_FIRST": {"tf": 1}, "sqlglot.tokens.TokenType.NULLS_LAST": {"tf": 1}, "sqlglot.tokens.TokenType.OFFSET": {"tf": 1}, "sqlglot.tokens.TokenType.ON": {"tf": 1}, "sqlglot.tokens.TokenType.ONLY": {"tf": 1}, "sqlglot.tokens.TokenType.OPTIONS": {"tf": 1}, "sqlglot.tokens.TokenType.ORDER_BY": {"tf": 1}, "sqlglot.tokens.TokenType.ORDERED": {"tf": 1}, "sqlglot.tokens.TokenType.ORDINALITY": {"tf": 1}, "sqlglot.tokens.TokenType.OUTER": {"tf": 1}, "sqlglot.tokens.TokenType.OUT_OF": {"tf": 1}, "sqlglot.tokens.TokenType.OVER": {"tf": 1}, "sqlglot.tokens.TokenType.OVERLAPS": {"tf": 1}, "sqlglot.tokens.TokenType.OVERWRITE": {"tf": 1}, "sqlglot.tokens.TokenType.PARTITION": {"tf": 1}, "sqlglot.tokens.TokenType.PARTITION_BY": {"tf": 1}, "sqlglot.tokens.TokenType.PERCENT": {"tf": 1}, "sqlglot.tokens.TokenType.PIVOT": {"tf": 1}, "sqlglot.tokens.TokenType.PLACEHOLDER": {"tf": 1}, "sqlglot.tokens.TokenType.PRAGMA": {"tf": 1}, "sqlglot.tokens.TokenType.PRECEDING": {"tf": 1}, "sqlglot.tokens.TokenType.PRIMARY_KEY": {"tf": 1}, "sqlglot.tokens.TokenType.PROCEDURE": {"tf": 1}, "sqlglot.tokens.TokenType.PROPERTIES": {"tf": 1}, "sqlglot.tokens.TokenType.PSEUDO_TYPE": {"tf": 1}, "sqlglot.tokens.TokenType.QUALIFY": {"tf": 1}, "sqlglot.tokens.TokenType.QUOTE": {"tf": 1}, "sqlglot.tokens.TokenType.RANGE": {"tf": 1}, "sqlglot.tokens.TokenType.RECURSIVE": {"tf": 1}, "sqlglot.tokens.TokenType.REPLACE": {"tf": 1}, "sqlglot.tokens.TokenType.RESPECT_NULLS": {"tf": 1}, "sqlglot.tokens.TokenType.RETURNING": {"tf": 1}, "sqlglot.tokens.TokenType.REFERENCES": {"tf": 1}, "sqlglot.tokens.TokenType.RIGHT": {"tf": 1}, "sqlglot.tokens.TokenType.RLIKE": {"tf": 1}, "sqlglot.tokens.TokenType.ROLLBACK": {"tf": 1}, "sqlglot.tokens.TokenType.ROLLUP": {"tf": 1}, "sqlglot.tokens.TokenType.ROW": {"tf": 1}, "sqlglot.tokens.TokenType.ROWS": {"tf": 1}, "sqlglot.tokens.TokenType.SEED": {"tf": 1}, "sqlglot.tokens.TokenType.SELECT": {"tf": 1}, "sqlglot.tokens.TokenType.SEMI": {"tf": 1}, "sqlglot.tokens.TokenType.SEPARATOR": {"tf": 1}, "sqlglot.tokens.TokenType.SERDE_PROPERTIES": {"tf": 1}, "sqlglot.tokens.TokenType.SET": {"tf": 1}, "sqlglot.tokens.TokenType.SHOW": {"tf": 1}, "sqlglot.tokens.TokenType.SIMILAR_TO": {"tf": 1}, "sqlglot.tokens.TokenType.SOME": {"tf": 1}, "sqlglot.tokens.TokenType.SORTKEY": {"tf": 1}, "sqlglot.tokens.TokenType.SORT_BY": {"tf": 1}, "sqlglot.tokens.TokenType.STRUCT": {"tf": 1}, "sqlglot.tokens.TokenType.TABLE_SAMPLE": {"tf": 1}, "sqlglot.tokens.TokenType.TEMPORARY": {"tf": 1}, "sqlglot.tokens.TokenType.TOP": {"tf": 1}, "sqlglot.tokens.TokenType.THEN": {"tf": 1}, "sqlglot.tokens.TokenType.TRAILING": {"tf": 1}, "sqlglot.tokens.TokenType.TRUE": {"tf": 1}, "sqlglot.tokens.TokenType.UNBOUNDED": {"tf": 1}, "sqlglot.tokens.TokenType.UNCACHE": {"tf": 1}, "sqlglot.tokens.TokenType.UNION": {"tf": 1}, "sqlglot.tokens.TokenType.UNLOGGED": {"tf": 1}, "sqlglot.tokens.TokenType.UNNEST": {"tf": 1}, "sqlglot.tokens.TokenType.UNPIVOT": {"tf": 1}, "sqlglot.tokens.TokenType.UPDATE": {"tf": 1}, "sqlglot.tokens.TokenType.USE": {"tf": 1}, "sqlglot.tokens.TokenType.USING": {"tf": 1}, "sqlglot.tokens.TokenType.VALUES": {"tf": 1}, "sqlglot.tokens.TokenType.VIEW": {"tf": 1}, "sqlglot.tokens.TokenType.VOLATILE": {"tf": 1}, "sqlglot.tokens.TokenType.WHEN": {"tf": 1}, "sqlglot.tokens.TokenType.WHERE": {"tf": 1}, "sqlglot.tokens.TokenType.WINDOW": {"tf": 1}, "sqlglot.tokens.TokenType.WITH": {"tf": 1}, "sqlglot.tokens.TokenType.WITH_TIME_ZONE": {"tf": 1}, "sqlglot.tokens.TokenType.WITH_LOCAL_TIME_ZONE": {"tf": 1}, "sqlglot.tokens.TokenType.WITHIN_GROUP": {"tf": 1}, "sqlglot.tokens.TokenType.WITHOUT_TIME_ZONE": {"tf": 1}, "sqlglot.tokens.TokenType.UNIQUE": {"tf": 1}, "sqlglot.tokens.Token": {"tf": 1}, "sqlglot.tokens.Token.__init__": {"tf": 1}, "sqlglot.tokens.Token.number": {"tf": 1}, "sqlglot.tokens.Token.string": {"tf": 1}, "sqlglot.tokens.Token.identifier": {"tf": 1}, "sqlglot.tokens.Token.var": {"tf": 1}, "sqlglot.tokens.Tokenizer": {"tf": 1}, "sqlglot.tokens.Tokenizer.reset": {"tf": 1}, "sqlglot.tokens.Tokenizer.tokenize": {"tf": 1}, "sqlglot.transforms": {"tf": 1}, "sqlglot.transforms.unalias_group": {"tf": 1}, "sqlglot.transforms.eliminate_distinct_on": {"tf": 1}, "sqlglot.transforms.eliminate_qualify": {"tf": 1}, "sqlglot.transforms.remove_precision_parameterized_types": {"tf": 1}, "sqlglot.transforms.preprocess": {"tf": 1}, "sqlglot.transforms.delegate": {"tf": 1}, "sqlglot.trie": {"tf": 1}, "sqlglot.trie.new_trie": {"tf": 1}, "sqlglot.trie.in_trie": {"tf": 1}}, "df": 1756, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.errors.SqlglotError": {"tf": 1}}, "df": 1}}}}}}}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.Dialects.SQLITE": {"tf": 1}, "sqlglot.dialects.sqlite": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Tokenizer": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Generator.cast_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Generator.datediff_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Generator.groupconcat_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Generator.least_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Generator.transaction_sql": {"tf": 1.4142135623730951}}, "df": 11}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.SqlSecurityProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}, "r": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.Sqrt": {"tf": 1}}, "df": 1}}}, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.schema": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_SCHEMA": {"tf": 1}, "sqlglot.expressions.Schema": {"tf": 1}, "sqlglot.generator.Generator.schema_sql": {"tf": 1}, "sqlglot.schema.Schema": {"tf": 1.4142135623730951}, "sqlglot.schema.Schema.add_table": {"tf": 1.4142135623730951}, "sqlglot.schema.Schema.column_names": {"tf": 1.4142135623730951}, "sqlglot.schema.Schema.get_column_type": {"tf": 1.4142135623730951}, "sqlglot.schema.Schema.supported_table_args": {"tf": 1.4142135623730951}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema.__init__": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema.table_parts": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema.find": {"tf": 1}, "sqlglot.schema.MappingSchema": {"tf": 1}, "sqlglot.schema.MappingSchema.__init__": {"tf": 1}, "sqlglot.schema.MappingSchema.from_mapping_schema": {"tf": 1.4142135623730951}, "sqlglot.schema.MappingSchema.copy": {"tf": 1}, "sqlglot.schema.MappingSchema.add_table": {"tf": 1}, "sqlglot.schema.MappingSchema.column_names": {"tf": 1}, "sqlglot.schema.MappingSchema.get_column_type": {"tf": 1}, "sqlglot.schema.ensure_schema": {"tf": 1.4142135623730951}, "sqlglot.schema.ensure_column_mapping": {"tf": 1}, "sqlglot.schema.flatten_schema": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SCHEMA": {"tf": 1}}, "df": 24, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.errors.SchemaError": {"tf": 1}}, "df": 1}}}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.SchemaCommentProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dialects.dialect.arrow_json_extract_scalar_sql": {"tf": 1}}, "df": 1}}}, "n": {"docs": {"sqlglot.executor.python.PythonExecutor.scan": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.scan_table": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.scan_csv": {"tf": 1}, "sqlglot.planner.Scan": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}}, "df": 5}}, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.scope": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.ROOT": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.SUBQUERY": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.DERIVED_TABLE": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.CTE": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.UNION": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.UDTF": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.__init__": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.clear_cache": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.branch": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.walk": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.replace": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.tables": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.ctes": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.derived_tables": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.udtfs": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.subqueries": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.columns": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.cte_sources": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.selects": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.external_columns": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.unqualified_columns": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.join_hints": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.source_columns": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.is_subquery": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.is_derived_table": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.is_union": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.is_cte": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.is_root": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.is_udtf": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.is_correlated_subquery": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.rename_source": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.add_source": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.remove_source": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.traverse": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.ref_count": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.build_scope": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1.4142135623730951}}, "df": 44, "t": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.scope.ScopeType": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.ROOT": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.SUBQUERY": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.DERIVED_TABLE": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.CTE": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.UNION": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.UDTF": {"tf": 1}}, "df": 7}}}}}}}}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.dialects.dialect.Dialects.SPARK": {"tf": 1}, "sqlglot.dialects.spark": {"tf": 1}, "sqlglot.dialects.spark.Spark": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Generator.cast_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Tokenizer": {"tf": 1.4142135623730951}}, "df": 7, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dataframe.sql.SparkSession": {"tf": 1}, "sqlglot.dataframe.sql.SparkSession.table": {"tf": 1}, "sqlglot.dataframe.sql.SparkSession.createDataFrame": {"tf": 1}, "sqlglot.dataframe.sql.SparkSession.sql": {"tf": 1}}, "df": 4}}}}}}}}}, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.SPACE": {"tf": 1}}, "df": 1}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.Split": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1}}, "df": 2}}}, "e": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot.generator.Generator.window_spec_sql": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe.sql.DataFrame.select": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.expressions.Expression.parent_select": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 1}, "sqlglot.expressions.Select": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.expressions.Select.limit": {"tf": 1}, "sqlglot.expressions.Select.offset": {"tf": 1}, "sqlglot.expressions.Select.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.lateral": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1}, "sqlglot.expressions.Select.where": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1}, "sqlglot.expressions.Select.window": {"tf": 1}, "sqlglot.expressions.Select.qualify": {"tf": 1}, "sqlglot.expressions.Select.distinct": {"tf": 1}, "sqlglot.expressions.Select.ctas": {"tf": 1}, "sqlglot.expressions.Select.lock": {"tf": 1}, "sqlglot.expressions.Select.is_star": {"tf": 1}, "sqlglot.expressions.select": {"tf": 1}, "sqlglot.generator.Generator.select_sql": {"tf": 1}, "sqlglot.tokens.TokenType.SELECT": {"tf": 1}}, "df": 26, "s": {"docs": {"sqlglot.optimizer.expand_multi_table_selects": {"tf": 1}, "sqlglot.optimizer.expand_multi_table_selects.expand_multi_table_selects": {"tf": 1.4142135623730951}, "sqlglot.optimizer.isolate_table_selects": {"tf": 1}, "sqlglot.optimizer.isolate_table_selects.isolate_table_selects": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.selects": {"tf": 1}}, "df": 5}, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.optimizer.pushdown_projections.DEFAULT_SELECTION": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 1}}, "df": 1}}}}}}, "t": {"docs": {"sqlglot.dataframe.sql.Column.set_table_name": {"tf": 1}, "sqlglot.executor.context.Context.set_row": {"tf": 1}, "sqlglot.executor.context.Context.set_index": {"tf": 1}, "sqlglot.executor.context.Context.set_range": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.set_operation": {"tf": 1}, "sqlglot.expressions.Expression.set": {"tf": 1}, "sqlglot.expressions.Set": {"tf": 1}, "sqlglot.generator.Generator.set_sql": {"tf": 1}, "sqlglot.generator.Generator.set_operation": {"tf": 1}, "sqlglot.tokens.TokenType.CHARACTER_SET": {"tf": 1}, "sqlglot.tokens.TokenType.SET": {"tf": 1}}, "df": 11, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.dialects.snowflake.Snowflake.Generator.settag_sql": {"tf": 1}, "sqlglot.expressions.SetTag": {"tf": 1}}, "df": 2}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {"sqlglot.expressions.SetItem": {"tf": 1}, "sqlglot.generator.Generator.setitem_sql": {"tf": 1}}, "df": 2}}}}, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.SetProperty": {"tf": 1}}, "df": 1}}}}}}}}, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.expressions.SetAgg": {"tf": 1}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.planner.SetOperation": {"tf": 1}, "sqlglot.planner.SetOperation.__init__": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}}, "df": 3}}}}}}}}}, "s": {"docs": {"sqlglot.tokens.TokenType.GROUPING_SETS": {"tf": 1}}, "df": 1}}, "r": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.serde": {"tf": 1}, "sqlglot.serde.dump": {"tf": 1}, "sqlglot.serde.load": {"tf": 1}, "sqlglot.tokens.TokenType.SERDE_PROPERTIES": {"tf": 1}}, "df": 4, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.SerdeProperties": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.expressions.DataType.Type.SERIAL": {"tf": 1}, "sqlglot.tokens.TokenType.SERIAL": {"tf": 1}}, "df": 2}}}}, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.tokens.TokenType.SESSION_PARAMETER": {"tf": 1}}, "df": 1, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.SessionParameter": {"tf": 1}, "sqlglot.generator.Generator.sessionparameter_sql": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}, "p": {"docs": {"sqlglot.generator.Generator.sep": {"tf": 1}}, "df": 1, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.tokens.TokenType.SEPARATOR": {"tf": 1}}, "df": 1}}}}}}}, "g": {"docs": {"sqlglot.generator.Generator.seg": {"tf": 1}}, "df": 1}, "q": {"docs": {"sqlglot.helper.seq_get": {"tf": 1}}, "df": 1}, "m": {"docs": {}, "df": 0, "i": {"docs": {"sqlglot.tokens.TokenType.SEMI": {"tf": 1}}, "df": 1, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.tokens.TokenType.SEMICOLON": {"tf": 1}}, "df": 1}}}}}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.tokens.TokenType.SEED": {"tf": 1}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1}, "sqlglot.executor.context.Context.sort": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.sort": {"tf": 1}, "sqlglot.expressions.Sort": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.generator.Generator.sort_sql": {"tf": 1}, "sqlglot.optimizer.simplify.uniq_sort": {"tf": 1}, "sqlglot.planner.Sort": {"tf": 1}, "sqlglot.tokens.TokenType.SORT_BY": {"tf": 1}}, "df": 9, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.tokens.TokenType.SORTKEY": {"tf": 1}}, "df": 1, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.SortKeyProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.SortArray": {"tf": 1}}, "df": 1}}}}}}}, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.qualify_columns.Resolver.get_source_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.source_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.rename_source": {"tf": 1}, "sqlglot.optimizer.scope.Scope.add_source": {"tf": 1}, "sqlglot.optimizer.scope.Scope.remove_source": {"tf": 1}}, "df": 5, "s": {"docs": {"sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 1}, "sqlglot.optimizer.scope.Scope.cte_sources": {"tf": 1}}, "df": 2}}}}}, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.SOME": {"tf": 1}}, "df": 1}}}, "u": {"docs": {}, "df": 0, "m": {"docs": {"sqlglot.dataframe.sql.GroupedData.sum": {"tf": 1}, "sqlglot.dialects.dialect.count_if_to_sum": {"tf": 1}, "sqlglot.expressions.Sum": {"tf": 1}}, "df": 3}, "b": {"docs": {"sqlglot.expressions.Sub": {"tf": 1}, "sqlglot.generator.Generator.sub_sql": {"tf": 1}}, "df": 2, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dataframe.sql.Column.substr": {"tf": 1}}, "df": 1, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.executor.env.substring": {"tf": 1}, "sqlglot.expressions.Substring": {"tf": 1}}, "df": 2}}}}}}, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.Subqueryable.subquery": {"tf": 1}, "sqlglot.expressions.Subquery": {"tf": 1}, "sqlglot.expressions.Subquery.unnest": {"tf": 1}, "sqlglot.expressions.Subquery.is_star": {"tf": 1}, "sqlglot.expressions.Subquery.output_name": {"tf": 1}, "sqlglot.expressions.subquery": {"tf": 1}, "sqlglot.generator.Generator.subquery_sql": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.SUBQUERY": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_subquery": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_correlated_subquery": {"tf": 1}}, "df": 10, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Subqueryable": {"tf": 1}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 1}, "sqlglot.expressions.Subqueryable.limit": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1}}, "df": 4}}}}, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.SubqueryPredicate": {"tf": 1}}, "df": 1}}}}}}}}}}, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.optimizer.eliminate_subqueries": {"tf": 1}, "sqlglot.optimizer.eliminate_subqueries.eliminate_subqueries": {"tf": 1.4142135623730951}, "sqlglot.optimizer.merge_subqueries": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1.4142135623730951}, "sqlglot.optimizer.merge_subqueries.merge_ctes": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_derived_tables": {"tf": 1}, "sqlglot.optimizer.scope.Scope.subqueries": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 1.4142135623730951}, "sqlglot.optimizer.unnest_subqueries.unnest": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.decorrelate": {"tf": 1}}, "df": 11}}}}}}}, "c": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.helper.subclasses": {"tf": 1}}, "df": 1}}}}}}}}, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.DataType.Type.SUPER": {"tf": 1}, "sqlglot.tokens.TokenType.SUPER": {"tf": 1}}, "df": 2}}, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.schema.Schema.supported_table_args": {"tf": 1}}, "df": 1}}}}}}}}, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.Expression.is_star": {"tf": 1}, "sqlglot.expressions.Union.is_star": {"tf": 1}, "sqlglot.expressions.Select.is_star": {"tf": 1}, "sqlglot.expressions.Subquery.is_star": {"tf": 1}, "sqlglot.expressions.Star": {"tf": 1}, "sqlglot.expressions.Star.output_name": {"tf": 1}, "sqlglot.generator.Generator.star_sql": {"tf": 1}, "sqlglot.tokens.TokenType.STAR": {"tf": 1}}, "df": 8, "t": {"docs": {"sqlglot.tokens.TokenType.BLOCK_START": {"tf": 1}}, "df": 1, "s": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.dataframe.sql.Column.startswith": {"tf": 1}}, "df": 1}}}}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dialects.dialect.Dialects.STARROCKS": {"tf": 1}, "sqlglot.dialects.starrocks": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.4142135623730951}}, "df": 5}}}}}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot.executor.python.PythonExecutor.static": {"tf": 1}}, "df": 1}}}}, "r": {"docs": {"sqlglot.dialects.dialect.str_position_sql": {"tf": 1}, "sqlglot.dialects.dialect.str_to_time_sql": {"tf": 1}, "sqlglot.executor.env.str_position": {"tf": 1}}, "df": 3, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.dialect.struct_extract_sql": {"tf": 1}, "sqlglot.expressions.DataType.Type.STRUCT": {"tf": 1}, "sqlglot.expressions.Struct": {"tf": 1}, "sqlglot.tokens.TokenType.STRUCT": {"tf": 1}}, "df": 4, "k": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.expressions.StructKwarg": {"tf": 1}, "sqlglot.generator.Generator.structkwarg_sql": {"tf": 1}}, "df": 2}}}}}, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.StructExtract": {"tf": 1}}, "df": 1}}}}}}}}}}, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dialects.dialect.locate_to_strposition": {"tf": 1}, "sqlglot.dialects.dialect.strposition_to_locate_sql": {"tf": 1}, "sqlglot.expressions.StrPosition": {"tf": 1}}, "df": 3}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.expressions.Expression.is_string": {"tf": 1}, "sqlglot.expressions.Literal.string": {"tf": 1}, "sqlglot.tokens.TokenType.STRING": {"tf": 1}, "sqlglot.tokens.TokenType.BIT_STRING": {"tf": 1}, "sqlglot.tokens.TokenType.HEX_STRING": {"tf": 1}, "sqlglot.tokens.TokenType.BYTE_STRING": {"tf": 1}, "sqlglot.tokens.Token.string": {"tf": 1}}, "df": 7}}}, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.StrToDate": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.StrToTime": {"tf": 1}}, "df": 1}}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "x": {"docs": {"sqlglot.expressions.StrToUnix": {"tf": 1}}, "df": 1}}}}}}}, "d": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "v": {"docs": {"sqlglot.expressions.Stddev": {"tf": 1}}, "df": 1, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.expressions.StddevPop": {"tf": 1}}, "df": 1}}}, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.expressions.StddevSamp": {"tf": 1}}, "df": 1}}}}}}}}, "e": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.planner.Step": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Step.add_dependency": {"tf": 1}, "sqlglot.planner.Step.to_s": {"tf": 1}}, "df": 4}}}, "a": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.DataFrameWriter.saveAsTable": {"tf": 1}}, "df": 1}}}}}}}}}, "f": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.no_safe_divide_sql": {"tf": 1}}, "df": 1, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.SafeDivide": {"tf": 1}}, "df": 1}}}}}}}}, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Expression.same_parent": {"tf": 1}}, "df": 1}, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.TABLE_SAMPLE": {"tf": 1}}, "df": 1}}}}}, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.Dialects.SNOWFLAKE": {"tf": 1}, "sqlglot.dialects.snowflake": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Tokenizer": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator.except_op": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator.intersect_op": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator.settag_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator.describe_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator.generatedasidentitycolumnconstraint_sql": {"tf": 1.4142135623730951}}, "df": 13}}}}}}}, "a": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.helper.camel_to_snake_case": {"tf": 1}}, "df": 1}}}}, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {"sqlglot.dialects.mysql.MySQL.Generator.show_sql": {"tf": 1}, "sqlglot.expressions.Show": {"tf": 1}, "sqlglot.tokens.TokenType.SHOW": {"tf": 1}}, "df": 3}, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.helper.should_identify": {"tf": 1}}, "df": 1}}}}}, "y": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.tsql.TSQL.Generator.systemtime_sql": {"tf": 1}, "sqlglot.expressions.SystemTime": {"tf": 1}}, "df": 2}}}}}}}}}, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.DataType.Type.SMALLINT": {"tf": 1}, "sqlglot.tokens.TokenType.SMALLINT": {"tf": 1}}, "df": 2}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.expressions.DataType.Type.SMALLSERIAL": {"tf": 1}, "sqlglot.tokens.TokenType.SMALLSERIAL": {"tf": 1}}, "df": 2}}}}}}, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.DataType.Type.SMALLMONEY": {"tf": 1}, "sqlglot.tokens.TokenType.SMALLMONEY": {"tf": 1}}, "df": 2}}}}}}}}}, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.tokens.TokenType.SIMILAR_TO": {"tf": 1}}, "df": 1, "t": {"docs": {}, "df": 0, "o": {"docs": {"sqlglot.expressions.SimilarTo": {"tf": 1}, "sqlglot.generator.Generator.similarto_sql": {"tf": 1}}, "df": 2}}}}}}, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.optimizer.simplify": {"tf": 1}, "sqlglot.optimizer.simplify.simplify": {"tf": 1.4142135623730951}, "sqlglot.optimizer.simplify.rewrite_between": {"tf": 1}, "sqlglot.optimizer.simplify.simplify_not": {"tf": 1.4142135623730951}, "sqlglot.optimizer.simplify.flatten": {"tf": 1}, "sqlglot.optimizer.simplify.simplify_connectors": {"tf": 1.4142135623730951}, "sqlglot.optimizer.simplify.remove_compliments": {"tf": 1}, "sqlglot.optimizer.simplify.uniq_sort": {"tf": 1}, "sqlglot.optimizer.simplify.absorb_and_eliminate": {"tf": 1}, "sqlglot.optimizer.simplify.simplify_literals": {"tf": 1.4142135623730951}, "sqlglot.optimizer.simplify.simplify_parens": {"tf": 1.4142135623730951}, "sqlglot.optimizer.simplify.remove_where_true": {"tf": 1}, "sqlglot.optimizer.simplify.always_true": {"tf": 1}, "sqlglot.optimizer.simplify.is_complement": {"tf": 1}, "sqlglot.optimizer.simplify.is_false": {"tf": 1}, "sqlglot.optimizer.simplify.is_null": {"tf": 1}, "sqlglot.optimizer.simplify.eval_boolean": {"tf": 1}, "sqlglot.optimizer.simplify.extract_date": {"tf": 1}, "sqlglot.optimizer.simplify.extract_interval": {"tf": 1}, "sqlglot.optimizer.simplify.date_literal": {"tf": 1}, "sqlglot.optimizer.simplify.boolean_literal": {"tf": 1}}, "df": 21}}}}}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Slice": {"tf": 1}, "sqlglot.generator.Generator.slice_sql": {"tf": 1}}, "df": 2}}}, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.tokens.TokenType.SLASH": {"tf": 1}}, "df": 1}}}}}, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.pretty": {"tf": 1}}, "df": 1}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {"sqlglot.dialects.dialect.Dialects.PRESTO": {"tf": 1}, "sqlglot.dialects.presto": {"tf": 1}, "sqlglot.dialects.presto.Presto": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Tokenizer": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Generator.transaction_sql": {"tf": 1.4142135623730951}}, "df": 7}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Predicate": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.nodes_for_predicate": {"tf": 1}}, "df": 2, "s": {"docs": {"sqlglot.optimizer.canonicalize.ensure_bool_predicates": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_predicates": {"tf": 1.4142135623730951}, "sqlglot.optimizer.pushdown_predicates.pushdown": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_cnf": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_dnf": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.nodes_for_predicate": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.replace_aliases": {"tf": 1}}, "df": 8}}}}}}}, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.generator.Generator.prepend_ctes": {"tf": 1}}, "df": 1}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.transforms.preprocess": {"tf": 1}}, "df": 1}}}}}}}, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.tokens.TokenType.PRECEDING": {"tf": 1}}, "df": 1}}}}}, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.transforms.remove_precision_parameterized_types": {"tf": 1}}, "df": 1}}}}}}}, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dialects.dialect.no_properties_sql": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator.with_properties": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.with_properties": {"tf": 1}, "sqlglot.expressions.Properties": {"tf": 1}, "sqlglot.expressions.Properties.Location": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_CREATE": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_NAME": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_SCHEMA": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_WITH": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_ALIAS": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_EXPRESSION": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_INDEX": {"tf": 1}, "sqlglot.expressions.Properties.Location.UNSUPPORTED": {"tf": 1}, "sqlglot.expressions.Properties.from_dict": {"tf": 1}, "sqlglot.generator.Generator.properties_sql": {"tf": 1}, "sqlglot.generator.Generator.root_properties": {"tf": 1}, "sqlglot.generator.Generator.properties": {"tf": 1}, "sqlglot.generator.Generator.with_properties": {"tf": 1}, "sqlglot.generator.Generator.locate_properties": {"tf": 1}, "sqlglot.tokens.TokenType.PROPERTIES": {"tf": 1}, "sqlglot.tokens.TokenType.SERDE_PROPERTIES": {"tf": 1}}, "df": 21}}}, "y": {"docs": {"sqlglot.expressions.Property": {"tf": 1}, "sqlglot.generator.Generator.property_sql": {"tf": 1}, "sqlglot.generator.Generator.naked_property": {"tf": 1}}, "df": 3}}}}}, "j": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.optimizer.pushdown_projections": {"tf": 1}, "sqlglot.optimizer.pushdown_projections.DEFAULT_SELECTION": {"tf": 1}, "sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 1.4142135623730951}}, "df": 3}}}}}}}}, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.PROCEDURE": {"tf": 1}}, "df": 1}}}}}}}, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.expressions.Pragma": {"tf": 1}, "sqlglot.generator.Generator.pragma_sql": {"tf": 1}, "sqlglot.tokens.TokenType.PRAGMA": {"tf": 1}}, "df": 3}}}}, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.tokens.TokenType.PRIMARY_KEY": {"tf": 1}}, "df": 1, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.PrimaryKey": {"tf": 1}, "sqlglot.generator.Generator.primarykey_sql": {"tf": 1}}, "df": 2, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.PrimaryKeyColumnConstraint": {"tf": 1}, "sqlglot.generator.Generator.primarykeycolumnconstraint_sql": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}}}}}}}}}}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.parse": {"tf": 1}, "sqlglot.parse_one": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.parse": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.parse_into": {"tf": 1}, "sqlglot.dialects.dialect.parse_date_delta": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1}, "sqlglot.parser.parse_var_map": {"tf": 1}, "sqlglot.parser.parse_like": {"tf": 1}, "sqlglot.parser.Parser.parse": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 1}}, "df": 10, "r": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.expressions.Func.default_parser_mappings": {"tf": 1}, "sqlglot.parser": {"tf": 1}, "sqlglot.parser.parse_var_map": {"tf": 1}, "sqlglot.parser.parse_like": {"tf": 1}, "sqlglot.parser.binary_range_parser": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser.__init__": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser.reset": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser.parse": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser.parse_into": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser.check_errors": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser.raise_error": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser.expression": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser.validate_expression": {"tf": 1.4142135623730951}}, "df": 33}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.errors.ParseError": {"tf": 1}, "sqlglot.errors.ParseError.__init__": {"tf": 1}, "sqlglot.errors.ParseError.new": {"tf": 1}}, "df": 3}}}}}}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.Partition": {"tf": 1}, "sqlglot.generator.Generator.partition_sql": {"tf": 1}, "sqlglot.generator.Generator.partition_by_sql": {"tf": 1}, "sqlglot.tokens.TokenType.PARTITION": {"tf": 1}, "sqlglot.tokens.TokenType.PARTITION_BY": {"tf": 1}}, "df": 5, "b": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dataframe.sql.Window.partitionBy": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.partitionBy": {"tf": 1}}, "df": 2}}, "s": {"docs": {"sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1}}, "df": 1}, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dialects.teradata.Teradata.Generator.partitionedbyproperty_sql": {"tf": 1}, "sqlglot.expressions.PartitionedByProperty": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}}}}, "s": {"docs": {"sqlglot.expressions.Column.parts": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema.table_parts": {"tf": 1}}, "df": 2}}, "e": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dialects.dialect.no_paren_current_date_sql": {"tf": 1}, "sqlglot.expressions.Paren": {"tf": 1}, "sqlglot.expressions.paren": {"tf": 1}, "sqlglot.generator.Generator.paren_sql": {"tf": 1}, "sqlglot.tokens.TokenType.L_PAREN": {"tf": 1}, "sqlglot.tokens.TokenType.R_PAREN": {"tf": 1}}, "df": 6, "t": {"docs": {"sqlglot.expressions.Expression.parent_select": {"tf": 1}, "sqlglot.expressions.Expression.same_parent": {"tf": 1}}, "df": 2}, "s": {"docs": {"sqlglot.optimizer.simplify.simplify_parens": {"tf": 1}}, "df": 1}}}, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.Parameter": {"tf": 1}, "sqlglot.generator.Generator.parameter_sql": {"tf": 1}, "sqlglot.tokens.TokenType.PARAMETER": {"tf": 1}, "sqlglot.tokens.TokenType.SESSION_PARAMETER": {"tf": 1}}, "df": 4, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.transforms.remove_precision_parameterized_types": {"tf": 1}}, "df": 1}}}}}}}}, "s": {"docs": {"sqlglot.helper.count_params": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.PathColumnConstraint": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}, "d": {"docs": {"sqlglot.generator.Generator.pad_comment": {"tf": 1}}, "df": 1}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe.sql.DataFrame.persist": {"tf": 1}}, "df": 1}}}}, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.PERCENT": {"tf": 1}}, "df": 1, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.PercentileCont": {"tf": 1}}, "df": 1}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot.expressions.PercentileDisc": {"tf": 1}}, "df": 1}}}}}}}}}}}}}, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe.sql.GroupedData.pivot": {"tf": 1}, "sqlglot.dialects.dialect.no_pivot_sql": {"tf": 1}, "sqlglot.expressions.Pivot": {"tf": 1}, "sqlglot.generator.Generator.pivot_sql": {"tf": 1}, "sqlglot.tokens.TokenType.PIVOT": {"tf": 1}}, "df": 5}}}, "p": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.PIPE": {"tf": 1}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.Properties.Location.POST_CREATE": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_NAME": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_SCHEMA": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_WITH": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_ALIAS": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_EXPRESSION": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_INDEX": {"tf": 1}}, "df": 7, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dialects.dialect.Dialects.POSTGRES": {"tf": 1}, "sqlglot.dialects.postgres": {"tf": 1}, "sqlglot.dialects.postgres.Postgres": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Tokenizer": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.4142135623730951}}, "df": 6}}}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dialects.dialect.str_position_sql": {"tf": 1}, "sqlglot.executor.env.str_position": {"tf": 1}}, "df": 2}}}}}, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Posexplode": {"tf": 1}}, "df": 1}}}}}}}}, "p": {"docs": {"sqlglot.executor.table.Table.pop": {"tf": 1}, "sqlglot.expressions.Expression.pop": {"tf": 1}}, "df": 2}, "w": {"docs": {"sqlglot.expressions.Pow": {"tf": 1}}, "df": 1}}, "y": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.executor.python": {"tf": 1}, "sqlglot.executor.python.PythonExecutor": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.__init__": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.execute": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.generate": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.generate_tuple": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.context": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.table": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.scan": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.static": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.scan_table": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.scan_csv": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.join": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.nested_loop_join": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.hash_join": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.aggregate": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.sort": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.set_operation": {"tf": 1}, "sqlglot.executor.python.Python": {"tf": 1.4142135623730951}, "sqlglot.executor.python.Python.Tokenizer": {"tf": 1.4142135623730951}, "sqlglot.executor.python.Python.Generator": {"tf": 1.4142135623730951}}, "df": 21, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.executor.python.PythonExecutor": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.__init__": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.execute": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.generate": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.generate_tuple": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.context": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.table": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.scan": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.static": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.scan_table": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.scan_csv": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.join": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.nested_loop_join": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.hash_join": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.aggregate": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.sort": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.set_operation": {"tf": 1}}, "df": 17}}}}}}}}}}}}}, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.Placeholder": {"tf": 1}, "sqlglot.generator.Generator.placeholder_sql": {"tf": 1}, "sqlglot.tokens.TokenType.PLACEHOLDER": {"tf": 1}}, "df": 3, "s": {"docs": {"sqlglot.expressions.replace_placeholders": {"tf": 1}}, "df": 1}}}}}}}}}, "n": {"docs": {"sqlglot.planner.Plan": {"tf": 1}, "sqlglot.planner.Plan.__init__": {"tf": 1}}, "df": 2, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.planner": {"tf": 1}, "sqlglot.planner.Plan": {"tf": 1}, "sqlglot.planner.Plan.__init__": {"tf": 1}, "sqlglot.planner.Step": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Step.add_dependency": {"tf": 1}, "sqlglot.planner.Step.to_s": {"tf": 1}, "sqlglot.planner.Scan": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.Join": {"tf": 1}, "sqlglot.planner.Join.from_joins": {"tf": 1}, "sqlglot.planner.Aggregate": {"tf": 1}, "sqlglot.planner.Sort": {"tf": 1}, "sqlglot.planner.SetOperation": {"tf": 1}, "sqlglot.planner.SetOperation.__init__": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}}, "df": 16}}}}}, "u": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.tokens.TokenType.PLUS": {"tf": 1}}, "df": 1}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "o": {"docs": {"sqlglot.tokens.TokenType.PSEUDO_TYPE": {"tf": 1}}, "df": 1, "t": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.PseudoType": {"tf": 1}, "sqlglot.generator.Generator.pseudotype_sql": {"tf": 1}}, "df": 2}}}}}}}}}, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.optimizer.pushdown_predicates": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_predicates": {"tf": 1.4142135623730951}, "sqlglot.optimizer.pushdown_predicates.pushdown": {"tf": 1.4142135623730951}, "sqlglot.optimizer.pushdown_predicates.pushdown_cnf": {"tf": 1.4142135623730951}, "sqlglot.optimizer.pushdown_predicates.pushdown_dnf": {"tf": 1.4142135623730951}, "sqlglot.optimizer.pushdown_predicates.nodes_for_predicate": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.replace_aliases": {"tf": 1}, "sqlglot.optimizer.pushdown_projections": {"tf": 1}, "sqlglot.optimizer.pushdown_projections.DEFAULT_SELECTION": {"tf": 1}, "sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 1.4142135623730951}}, "df": 10}}}}}}}}, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.tokens.TokenType.ON": {"tf": 1}, "sqlglot.transforms.eliminate_distinct_on": {"tf": 1}}, "df": 3, "e": {"docs": {"sqlglot.parse_one": {"tf": 1}}, "df": 1}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.OnCommitProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.tokens.TokenType.ONLY": {"tf": 1}}, "df": 1}}}, "r": {"docs": {"sqlglot.dialects.dialect.Dialect.get_or_raise": {"tf": 1}, "sqlglot.dialects.dialect.min_or_least": {"tf": 1}, "sqlglot.dialects.dialect.max_or_greatest": {"tf": 1}, "sqlglot.dialects.dialect.ts_or_ds_to_date_sql": {"tf": 1}, "sqlglot.expressions.Condition.or_": {"tf": 1}, "sqlglot.expressions.Or": {"tf": 1}, "sqlglot.expressions.or_": {"tf": 1}, "sqlglot.generator.Generator.or_sql": {"tf": 1}, "sqlglot.tokens.TokenType.OR": {"tf": 1}}, "df": 9, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.Order": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.generator.Generator.order_sql": {"tf": 1}, "sqlglot.tokens.TokenType.ORDER_BY": {"tf": 1}}, "df": 4, "b": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.Window.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.orderBy": {"tf": 1}}, "df": 3}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.executor.env.ordered": {"tf": 1}, "sqlglot.expressions.Ordered": {"tf": 1}, "sqlglot.generator.Generator.ordered_sql": {"tf": 1}, "sqlglot.tokens.TokenType.ORDERED": {"tf": 1}}, "df": 4}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.tokens.TokenType.ORDINALITY": {"tf": 1}}, "df": 1}}}}}}}}, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.Dialects.ORACLE": {"tf": 1}, "sqlglot.dialects.oracle": {"tf": 1}, "sqlglot.dialects.oracle.Oracle": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Generator.offset_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Generator.column_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Generator.xmltable_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Tokenizer": {"tf": 1.4142135623730951}}, "df": 9}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dataframe.sql.Column.invoke_expression_over_column": {"tf": 1}, "sqlglot.dataframe.sql.Column.over": {"tf": 1}, "sqlglot.tokens.TokenType.OVER": {"tf": 1}}, "df": 3, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.Overlaps": {"tf": 1}, "sqlglot.generator.Generator.overlaps_sql": {"tf": 1}, "sqlglot.tokens.TokenType.OVERLAPS": {"tf": 1}}, "df": 3}}}}, "w": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.OVERWRITE": {"tf": 1}}, "df": 1}}}}}}}}, "p": {"docs": {"sqlglot.dataframe.sql.Column.binary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.inverse_binary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.unary_op": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.in_unnest_op": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.except_op": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.intersect_op": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.except_op": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.intersect_op": {"tf": 1}, "sqlglot.generator.Generator.except_op": {"tf": 1}, "sqlglot.generator.Generator.intersect_op": {"tf": 1}, "sqlglot.generator.Generator.union_op": {"tf": 1}, "sqlglot.generator.Generator.in_unnest_op": {"tf": 1}, "sqlglot.generator.Generator.op_expressions": {"tf": 1}}, "df": 13, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.optimize_joins": {"tf": 1}, "sqlglot.optimizer.optimize_joins.optimize_joins": {"tf": 1.4142135623730951}, "sqlglot.optimizer.optimize_joins.reorder_joins": {"tf": 1}, "sqlglot.optimizer.optimize_joins.normalize": {"tf": 1}, "sqlglot.optimizer.optimize_joins.other_table_names": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 6, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.errors.OptimizeError": {"tf": 1}}, "df": 1}}}}}, "r": {"docs": {"sqlglot.optimizer": {"tf": 1}, "sqlglot.optimizer.annotate_types": {"tf": 1}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}, "sqlglot.optimizer.annotate_types.TypeAnnotator": {"tf": 1}, "sqlglot.optimizer.annotate_types.TypeAnnotator.__init__": {"tf": 1}, "sqlglot.optimizer.annotate_types.TypeAnnotator.annotate": {"tf": 1}, "sqlglot.optimizer.canonicalize": {"tf": 1}, "sqlglot.optimizer.canonicalize.canonicalize": {"tf": 1}, "sqlglot.optimizer.canonicalize.add_text_to_concat": {"tf": 1}, "sqlglot.optimizer.canonicalize.coerce_type": {"tf": 1}, "sqlglot.optimizer.canonicalize.remove_redundant_casts": {"tf": 1}, "sqlglot.optimizer.canonicalize.ensure_bool_predicates": {"tf": 1}, "sqlglot.optimizer.eliminate_ctes": {"tf": 1}, "sqlglot.optimizer.eliminate_ctes.eliminate_ctes": {"tf": 1}, "sqlglot.optimizer.eliminate_joins": {"tf": 1}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 1}, "sqlglot.optimizer.eliminate_joins.join_condition": {"tf": 1}, "sqlglot.optimizer.eliminate_subqueries": {"tf": 1}, "sqlglot.optimizer.eliminate_subqueries.eliminate_subqueries": {"tf": 1}, "sqlglot.optimizer.expand_laterals": {"tf": 1}, "sqlglot.optimizer.expand_laterals.expand_laterals": {"tf": 1}, "sqlglot.optimizer.expand_multi_table_selects": {"tf": 1}, "sqlglot.optimizer.expand_multi_table_selects.expand_multi_table_selects": {"tf": 1}, "sqlglot.optimizer.isolate_table_selects": {"tf": 1}, "sqlglot.optimizer.isolate_table_selects.isolate_table_selects": {"tf": 1}, "sqlglot.optimizer.lower_identities": {"tf": 1}, "sqlglot.optimizer.lower_identities.lower_identities": {"tf": 1}, "sqlglot.optimizer.merge_subqueries": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_ctes": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_derived_tables": {"tf": 1}, "sqlglot.optimizer.normalize": {"tf": 1}, "sqlglot.optimizer.normalize.normalize": {"tf": 1}, "sqlglot.optimizer.normalize.normalized": {"tf": 1}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1}, "sqlglot.optimizer.normalize.distributive_law": {"tf": 1}, "sqlglot.optimizer.optimize_joins": {"tf": 1}, "sqlglot.optimizer.optimize_joins.optimize_joins": {"tf": 1}, "sqlglot.optimizer.optimize_joins.reorder_joins": {"tf": 1}, "sqlglot.optimizer.optimize_joins.normalize": {"tf": 1}, "sqlglot.optimizer.optimize_joins.other_table_names": {"tf": 1}, "sqlglot.optimizer.optimizer": {"tf": 1.4142135623730951}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1.4142135623730951}, "sqlglot.optimizer.pushdown_predicates": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_predicates": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_cnf": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_dnf": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.nodes_for_predicate": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.replace_aliases": {"tf": 1}, "sqlglot.optimizer.pushdown_projections": {"tf": 1}, "sqlglot.optimizer.pushdown_projections.DEFAULT_SELECTION": {"tf": 1}, "sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 1}, "sqlglot.optimizer.qualify_columns": {"tf": 1}, "sqlglot.optimizer.qualify_columns.qualify_columns": {"tf": 1}, "sqlglot.optimizer.qualify_columns.validate_qualify_columns": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.__init__": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.get_table": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.all_columns": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.get_source_columns": {"tf": 1}, "sqlglot.optimizer.qualify_tables": {"tf": 1}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"tf": 1}, "sqlglot.optimizer.scope": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.ROOT": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.SUBQUERY": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.DERIVED_TABLE": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.CTE": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.UNION": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.UDTF": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 1}, "sqlglot.optimizer.scope.Scope.__init__": {"tf": 1}, "sqlglot.optimizer.scope.Scope.clear_cache": {"tf": 1}, "sqlglot.optimizer.scope.Scope.branch": {"tf": 1}, "sqlglot.optimizer.scope.Scope.walk": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1}, "sqlglot.optimizer.scope.Scope.replace": {"tf": 1}, "sqlglot.optimizer.scope.Scope.tables": {"tf": 1}, "sqlglot.optimizer.scope.Scope.ctes": {"tf": 1}, "sqlglot.optimizer.scope.Scope.derived_tables": {"tf": 1}, "sqlglot.optimizer.scope.Scope.udtfs": {"tf": 1}, "sqlglot.optimizer.scope.Scope.subqueries": {"tf": 1}, "sqlglot.optimizer.scope.Scope.columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 1}, "sqlglot.optimizer.scope.Scope.cte_sources": {"tf": 1}, "sqlglot.optimizer.scope.Scope.selects": {"tf": 1}, "sqlglot.optimizer.scope.Scope.external_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.unqualified_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.join_hints": {"tf": 1}, "sqlglot.optimizer.scope.Scope.source_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_subquery": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_derived_table": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_union": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_cte": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_root": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_udtf": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_correlated_subquery": {"tf": 1}, "sqlglot.optimizer.scope.Scope.rename_source": {"tf": 1}, "sqlglot.optimizer.scope.Scope.add_source": {"tf": 1}, "sqlglot.optimizer.scope.Scope.remove_source": {"tf": 1}, "sqlglot.optimizer.scope.Scope.traverse": {"tf": 1}, "sqlglot.optimizer.scope.Scope.ref_count": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}, "sqlglot.optimizer.scope.build_scope": {"tf": 1}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1}, "sqlglot.optimizer.simplify": {"tf": 1}, "sqlglot.optimizer.simplify.simplify": {"tf": 1}, "sqlglot.optimizer.simplify.rewrite_between": {"tf": 1}, "sqlglot.optimizer.simplify.simplify_not": {"tf": 1}, "sqlglot.optimizer.simplify.flatten": {"tf": 1}, "sqlglot.optimizer.simplify.simplify_connectors": {"tf": 1}, "sqlglot.optimizer.simplify.remove_compliments": {"tf": 1}, "sqlglot.optimizer.simplify.uniq_sort": {"tf": 1}, "sqlglot.optimizer.simplify.absorb_and_eliminate": {"tf": 1}, "sqlglot.optimizer.simplify.simplify_literals": {"tf": 1}, "sqlglot.optimizer.simplify.simplify_parens": {"tf": 1}, "sqlglot.optimizer.simplify.remove_where_true": {"tf": 1}, "sqlglot.optimizer.simplify.always_true": {"tf": 1}, "sqlglot.optimizer.simplify.is_complement": {"tf": 1}, "sqlglot.optimizer.simplify.is_false": {"tf": 1}, "sqlglot.optimizer.simplify.is_null": {"tf": 1}, "sqlglot.optimizer.simplify.eval_boolean": {"tf": 1}, "sqlglot.optimizer.simplify.extract_date": {"tf": 1}, "sqlglot.optimizer.simplify.extract_interval": {"tf": 1}, "sqlglot.optimizer.simplify.date_literal": {"tf": 1}, "sqlglot.optimizer.simplify.boolean_literal": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.unnest": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.decorrelate": {"tf": 1}}, "df": 132}}}}}, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.tokens.TokenType.OPTIONS": {"tf": 1}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.executor.python.PythonExecutor.set_operation": {"tf": 1}, "sqlglot.generator.Generator.set_operation": {"tf": 1}}, "df": 2}}}}, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.Expression.unnest_operands": {"tf": 1}}, "df": 1}}}}}, "n": {"docs": {"sqlglot.helper.open_file": {"tf": 1}}, "df": 1}}}, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.optimizer.optimize_joins.other_table_names": {"tf": 1}}, "df": 1, "w": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.Column.otherwise": {"tf": 1}}, "df": 1}}}}}}}}, "f": {"docs": {"sqlglot.tokens.TokenType.OUT_OF": {"tf": 1}}, "df": 1, "f": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.oracle.Oracle.Generator.offset_sql": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator.offset_sql": {"tf": 1}, "sqlglot.expressions.Offset": {"tf": 1}, "sqlglot.expressions.Select.offset": {"tf": 1}, "sqlglot.generator.Generator.offset_sql": {"tf": 1}, "sqlglot.helper.apply_index_offset": {"tf": 1}, "sqlglot.tokens.TokenType.OFFSET": {"tf": 1}}, "df": 7}}}}}, "u": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.OUT_OF": {"tf": 1}}, "df": 1, "p": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.Expression.output_name": {"tf": 1}, "sqlglot.expressions.Column.output_name": {"tf": 1}, "sqlglot.expressions.Identifier.output_name": {"tf": 1}, "sqlglot.expressions.Literal.output_name": {"tf": 1}, "sqlglot.expressions.Subquery.output_name": {"tf": 1}, "sqlglot.expressions.Star.output_name": {"tf": 1}, "sqlglot.expressions.Alias.output_name": {"tf": 1}, "sqlglot.expressions.Cast.output_name": {"tf": 1}}, "df": 8}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.tokens.TokenType.OUTER": {"tf": 1}}, "df": 1}}}}, "b": {"docs": {}, "df": 0, "j": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.DataType.Type.OBJECT": {"tf": 1}, "sqlglot.helper.object_to_dict": {"tf": 1}, "sqlglot.tokens.TokenType.OBJECT": {"tf": 1}}, "df": 3}}}}}}, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.transpile": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.transpile": {"tf": 1}}, "df": 2}}}}, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator.transaction_sql": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator.transaction_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.transaction_sql": {"tf": 1}, "sqlglot.expressions.Transaction": {"tf": 1}, "sqlglot.generator.Generator.transaction_sql": {"tf": 1}}, "df": 5}}}}}}, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {"sqlglot.expressions.Expression.transform": {"tf": 1}}, "df": 1, "s": {"docs": {"sqlglot.transforms": {"tf": 1}, "sqlglot.transforms.unalias_group": {"tf": 1}, "sqlglot.transforms.eliminate_distinct_on": {"tf": 1}, "sqlglot.transforms.eliminate_qualify": {"tf": 1}, "sqlglot.transforms.remove_precision_parameterized_types": {"tf": 1}, "sqlglot.transforms.preprocess": {"tf": 1}, "sqlglot.transforms.delegate": {"tf": 1}}, "df": 7}}}}}, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.TransientProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.scope.Scope.traverse": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}}, "df": 2}}}}}, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.tokens.TokenType.TRAILING": {"tf": 1}}, "df": 1}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "o": {"docs": {"sqlglot.dialects.dialect.Dialects.TRINO": {"tf": 1}, "sqlglot.dialects.trino": {"tf": 1}, "sqlglot.dialects.trino.Trino": {"tf": 1.4142135623730951}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.trino.Trino.Tokenizer": {"tf": 1.4142135623730951}}, "df": 5}}, "m": {"docs": {"sqlglot.dialects.dialect.trim_sql": {"tf": 1}, "sqlglot.expressions.Trim": {"tf": 1}, "sqlglot.generator.Generator.trim_sql": {"tf": 1}}, "df": 3}, "e": {"docs": {"sqlglot.trie": {"tf": 1}, "sqlglot.trie.new_trie": {"tf": 1.4142135623730951}, "sqlglot.trie.in_trie": {"tf": 1.4142135623730951}}, "df": 3}}, "y": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.dialect.no_trycast_sql": {"tf": 1}, "sqlglot.expressions.TryCast": {"tf": 1}, "sqlglot.generator.Generator.trycast_sql": {"tf": 1}}, "df": 3}}}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot.dialects.dialect.date_trunc_to_time": {"tf": 1}}, "df": 1}}, "e": {"docs": {"sqlglot.expressions.true": {"tf": 1}, "sqlglot.optimizer.simplify.remove_where_true": {"tf": 1}, "sqlglot.optimizer.simplify.always_true": {"tf": 1}, "sqlglot.tokens.TokenType.TRUE": {"tf": 1}}, "df": 4}}}, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.SparkSession.table": {"tf": 1}, "sqlglot.dataframe.sql.Column.set_table_name": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameReader.table": {"tf": 1}, "sqlglot.executor.context.Context.table_iter": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.table": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.scan_table": {"tf": 1}, "sqlglot.executor.table": {"tf": 1}, "sqlglot.executor.table.Table": {"tf": 1.4142135623730951}, "sqlglot.executor.table.Table.__init__": {"tf": 1.4142135623730951}, "sqlglot.executor.table.Table.add_columns": {"tf": 1.4142135623730951}, "sqlglot.executor.table.Table.append": {"tf": 1.4142135623730951}, "sqlglot.executor.table.Table.pop": {"tf": 1.4142135623730951}, "sqlglot.executor.table.TableIter": {"tf": 1}, "sqlglot.executor.table.TableIter.__init__": {"tf": 1}, "sqlglot.executor.table.RangeReader": {"tf": 1}, "sqlglot.executor.table.RangeReader.__init__": {"tf": 1}, "sqlglot.executor.table.RowReader": {"tf": 1}, "sqlglot.executor.table.RowReader.__init__": {"tf": 1}, "sqlglot.executor.table.Tables": {"tf": 1}, "sqlglot.executor.table.ensure_tables": {"tf": 1}, "sqlglot.expressions.Table": {"tf": 1}, "sqlglot.expressions.to_table": {"tf": 1}, "sqlglot.expressions.table_": {"tf": 1}, "sqlglot.expressions.rename_table": {"tf": 1}, "sqlglot.expressions.column_table_names": {"tf": 1}, "sqlglot.expressions.table_name": {"tf": 1}, "sqlglot.generator.Generator.table_sql": {"tf": 1}, "sqlglot.optimizer.expand_multi_table_selects": {"tf": 1}, "sqlglot.optimizer.expand_multi_table_selects.expand_multi_table_selects": {"tf": 1.4142135623730951}, "sqlglot.optimizer.isolate_table_selects": {"tf": 1}, "sqlglot.optimizer.isolate_table_selects.isolate_table_selects": {"tf": 1.4142135623730951}, "sqlglot.optimizer.optimize_joins.other_table_names": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.get_table": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.DERIVED_TABLE": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_derived_table": {"tf": 1}, "sqlglot.schema.Schema.add_table": {"tf": 1}, "sqlglot.schema.Schema.supported_table_args": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema.table_parts": {"tf": 1}, "sqlglot.schema.MappingSchema.add_table": {"tf": 1}, "sqlglot.tokens.TokenType.TABLE": {"tf": 1}, "sqlglot.tokens.TokenType.TABLE_SAMPLE": {"tf": 1}}, "df": 41, "a": {"docs": {}, "df": 0, "u": {"docs": {"sqlglot.dialects.dialect.Dialects.TABLEAU": {"tf": 1}, "sqlglot.dialects.tableau": {"tf": 1}, "sqlglot.dialects.tableau.Tableau": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1.4142135623730951}}, "df": 5}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.TableAlias": {"tf": 1}, "sqlglot.generator.Generator.tablealias_sql": {"tf": 1}}, "df": 2}}}}}, "s": {"docs": {"sqlglot.executor.table.Tables": {"tf": 1}, "sqlglot.executor.table.ensure_tables": {"tf": 1}, "sqlglot.expressions.replace_tables": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_derived_tables": {"tf": 1}, "sqlglot.optimizer.qualify_tables": {"tf": 1}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.tables": {"tf": 1}, "sqlglot.optimizer.scope.Scope.derived_tables": {"tf": 1}}, "df": 8, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.no_tablesample_sql": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator.tablesample_sql": {"tf": 1}, "sqlglot.expressions.TableSample": {"tf": 1}, "sqlglot.generator.Generator.tablesample_sql": {"tf": 1}}, "df": 4}}}}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.executor.table.TableIter": {"tf": 1}, "sqlglot.executor.table.TableIter.__init__": {"tf": 1}}, "df": 2}}}}, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.TableFormatProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}, "g": {"docs": {"sqlglot.expressions.Tag": {"tf": 1}, "sqlglot.generator.Generator.tag_sql": {"tf": 1}}, "df": 2}}, "o": {"docs": {"sqlglot.dialects.dialect.date_trunc_to_time": {"tf": 1}, "sqlglot.dialects.dialect.locate_to_strposition": {"tf": 1}, "sqlglot.dialects.dialect.strposition_to_locate_sql": {"tf": 1}, "sqlglot.dialects.dialect.count_if_to_sum": {"tf": 1}, "sqlglot.dialects.dialect.str_to_time_sql": {"tf": 1}, "sqlglot.dialects.dialect.ts_or_ds_to_date_sql": {"tf": 1}, "sqlglot.expressions.Column.to_dot": {"tf": 1}, "sqlglot.expressions.to_identifier": {"tf": 1}, "sqlglot.expressions.to_interval": {"tf": 1}, "sqlglot.expressions.to_table": {"tf": 1}, "sqlglot.expressions.to_column": {"tf": 1}, "sqlglot.helper.camel_to_snake_case": {"tf": 1}, "sqlglot.helper.object_to_dict": {"tf": 1}, "sqlglot.lineage.Node.to_html": {"tf": 1}, "sqlglot.optimizer.canonicalize.add_text_to_concat": {"tf": 1}, "sqlglot.planner.Step.to_s": {"tf": 1}, "sqlglot.tokens.TokenType.SIMILAR_TO": {"tf": 1}}, "df": 17, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.generator.Generator.token_sql": {"tf": 1}, "sqlglot.tokens.Token": {"tf": 1}, "sqlglot.tokens.Token.__init__": {"tf": 1}, "sqlglot.tokens.Token.number": {"tf": 1}, "sqlglot.tokens.Token.string": {"tf": 1}, "sqlglot.tokens.Token.identifier": {"tf": 1}, "sqlglot.tokens.Token.var": {"tf": 1}}, "df": 7, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.Dialect.tokenize": {"tf": 1}, "sqlglot.tokens.Tokenizer.tokenize": {"tf": 1}}, "df": 2, "r": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Tokenizer": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Tokenizer": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Tokenizer": {"tf": 1}, "sqlglot.dialects.drill.Drill.Tokenizer": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Tokenizer": {"tf": 1}, "sqlglot.dialects.hive.Hive.Tokenizer": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Tokenizer": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Tokenizer": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Tokenizer": {"tf": 1}, "sqlglot.dialects.presto.Presto.Tokenizer": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Tokenizer": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Tokenizer": {"tf": 1}, "sqlglot.dialects.spark.Spark.Tokenizer": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Tokenizer": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Tokenizer": {"tf": 1}, "sqlglot.dialects.trino.Trino.Tokenizer": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Tokenizer": {"tf": 1}, "sqlglot.executor.python.Python.Tokenizer": {"tf": 1}, "sqlglot.tokens.Tokenizer": {"tf": 1}, "sqlglot.tokens.Tokenizer.reset": {"tf": 1}, "sqlglot.tokens.Tokenizer.tokenize": {"tf": 1}}, "df": 21}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.errors.TokenError": {"tf": 1}}, "df": 1}}}}}, "s": {"docs": {"sqlglot.tokens": {"tf": 1}, "sqlglot.tokens.TokenType": {"tf": 1}, "sqlglot.tokens.TokenType.L_PAREN": {"tf": 1}, "sqlglot.tokens.TokenType.R_PAREN": {"tf": 1}, "sqlglot.tokens.TokenType.L_BRACKET": {"tf": 1}, "sqlglot.tokens.TokenType.R_BRACKET": {"tf": 1}, "sqlglot.tokens.TokenType.L_BRACE": {"tf": 1}, "sqlglot.tokens.TokenType.R_BRACE": {"tf": 1}, "sqlglot.tokens.TokenType.COMMA": {"tf": 1}, "sqlglot.tokens.TokenType.DOT": {"tf": 1}, "sqlglot.tokens.TokenType.DASH": {"tf": 1}, "sqlglot.tokens.TokenType.PLUS": {"tf": 1}, "sqlglot.tokens.TokenType.COLON": {"tf": 1}, "sqlglot.tokens.TokenType.DCOLON": {"tf": 1}, "sqlglot.tokens.TokenType.SEMICOLON": {"tf": 1}, "sqlglot.tokens.TokenType.STAR": {"tf": 1}, "sqlglot.tokens.TokenType.BACKSLASH": {"tf": 1}, "sqlglot.tokens.TokenType.SLASH": {"tf": 1}, "sqlglot.tokens.TokenType.LT": {"tf": 1}, "sqlglot.tokens.TokenType.LTE": {"tf": 1}, "sqlglot.tokens.TokenType.GT": {"tf": 1}, "sqlglot.tokens.TokenType.GTE": {"tf": 1}, "sqlglot.tokens.TokenType.NOT": {"tf": 1}, "sqlglot.tokens.TokenType.EQ": {"tf": 1}, "sqlglot.tokens.TokenType.NEQ": {"tf": 1}, "sqlglot.tokens.TokenType.NULLSAFE_EQ": {"tf": 1}, "sqlglot.tokens.TokenType.AND": {"tf": 1}, "sqlglot.tokens.TokenType.OR": {"tf": 1}, "sqlglot.tokens.TokenType.AMP": {"tf": 1}, "sqlglot.tokens.TokenType.DPIPE": {"tf": 1}, "sqlglot.tokens.TokenType.PIPE": {"tf": 1}, "sqlglot.tokens.TokenType.CARET": {"tf": 1}, "sqlglot.tokens.TokenType.TILDA": {"tf": 1}, "sqlglot.tokens.TokenType.ARROW": {"tf": 1}, "sqlglot.tokens.TokenType.DARROW": {"tf": 1}, "sqlglot.tokens.TokenType.FARROW": {"tf": 1}, "sqlglot.tokens.TokenType.HASH": {"tf": 1}, "sqlglot.tokens.TokenType.HASH_ARROW": {"tf": 1}, "sqlglot.tokens.TokenType.DHASH_ARROW": {"tf": 1}, "sqlglot.tokens.TokenType.LR_ARROW": {"tf": 1}, "sqlglot.tokens.TokenType.LT_AT": {"tf": 1}, "sqlglot.tokens.TokenType.AT_GT": {"tf": 1}, "sqlglot.tokens.TokenType.DOLLAR": {"tf": 1}, "sqlglot.tokens.TokenType.PARAMETER": {"tf": 1}, "sqlglot.tokens.TokenType.SESSION_PARAMETER": {"tf": 1}, "sqlglot.tokens.TokenType.NATIONAL": {"tf": 1}, "sqlglot.tokens.TokenType.DAMP": {"tf": 1}, "sqlglot.tokens.TokenType.BLOCK_START": {"tf": 1}, "sqlglot.tokens.TokenType.BLOCK_END": {"tf": 1}, "sqlglot.tokens.TokenType.SPACE": {"tf": 1}, "sqlglot.tokens.TokenType.BREAK": {"tf": 1}, "sqlglot.tokens.TokenType.STRING": {"tf": 1}, "sqlglot.tokens.TokenType.NUMBER": {"tf": 1}, "sqlglot.tokens.TokenType.IDENTIFIER": {"tf": 1}, "sqlglot.tokens.TokenType.DATABASE": {"tf": 1}, "sqlglot.tokens.TokenType.COLUMN": {"tf": 1}, "sqlglot.tokens.TokenType.COLUMN_DEF": {"tf": 1}, "sqlglot.tokens.TokenType.SCHEMA": {"tf": 1}, "sqlglot.tokens.TokenType.TABLE": {"tf": 1}, "sqlglot.tokens.TokenType.VAR": {"tf": 1}, "sqlglot.tokens.TokenType.BIT_STRING": {"tf": 1}, "sqlglot.tokens.TokenType.HEX_STRING": {"tf": 1}, "sqlglot.tokens.TokenType.BYTE_STRING": {"tf": 1}, "sqlglot.tokens.TokenType.BIT": {"tf": 1}, "sqlglot.tokens.TokenType.BOOLEAN": {"tf": 1}, "sqlglot.tokens.TokenType.TINYINT": {"tf": 1}, "sqlglot.tokens.TokenType.UTINYINT": {"tf": 1}, "sqlglot.tokens.TokenType.SMALLINT": {"tf": 1}, "sqlglot.tokens.TokenType.USMALLINT": {"tf": 1}, "sqlglot.tokens.TokenType.INT": {"tf": 1}, "sqlglot.tokens.TokenType.UINT": {"tf": 1}, "sqlglot.tokens.TokenType.BIGINT": {"tf": 1}, "sqlglot.tokens.TokenType.UBIGINT": {"tf": 1}, "sqlglot.tokens.TokenType.FLOAT": {"tf": 1}, "sqlglot.tokens.TokenType.DOUBLE": {"tf": 1}, "sqlglot.tokens.TokenType.DECIMAL": {"tf": 1}, "sqlglot.tokens.TokenType.CHAR": {"tf": 1}, "sqlglot.tokens.TokenType.NCHAR": {"tf": 1}, "sqlglot.tokens.TokenType.VARCHAR": {"tf": 1}, "sqlglot.tokens.TokenType.NVARCHAR": {"tf": 1}, "sqlglot.tokens.TokenType.TEXT": {"tf": 1}, "sqlglot.tokens.TokenType.MEDIUMTEXT": {"tf": 1}, "sqlglot.tokens.TokenType.LONGTEXT": {"tf": 1}, "sqlglot.tokens.TokenType.MEDIUMBLOB": {"tf": 1}, "sqlglot.tokens.TokenType.LONGBLOB": {"tf": 1}, "sqlglot.tokens.TokenType.BINARY": {"tf": 1}, "sqlglot.tokens.TokenType.VARBINARY": {"tf": 1}, "sqlglot.tokens.TokenType.JSON": {"tf": 1}, "sqlglot.tokens.TokenType.JSONB": {"tf": 1}, "sqlglot.tokens.TokenType.TIME": {"tf": 1}, "sqlglot.tokens.TokenType.TIMESTAMP": {"tf": 1}, "sqlglot.tokens.TokenType.TIMESTAMPTZ": {"tf": 1}, "sqlglot.tokens.TokenType.TIMESTAMPLTZ": {"tf": 1}, "sqlglot.tokens.TokenType.DATETIME": {"tf": 1}, "sqlglot.tokens.TokenType.DATE": {"tf": 1}, "sqlglot.tokens.TokenType.UUID": {"tf": 1}, "sqlglot.tokens.TokenType.GEOGRAPHY": {"tf": 1}, "sqlglot.tokens.TokenType.NULLABLE": {"tf": 1}, "sqlglot.tokens.TokenType.GEOMETRY": {"tf": 1}, "sqlglot.tokens.TokenType.HLLSKETCH": {"tf": 1}, "sqlglot.tokens.TokenType.HSTORE": {"tf": 1}, "sqlglot.tokens.TokenType.SUPER": {"tf": 1}, "sqlglot.tokens.TokenType.SERIAL": {"tf": 1}, "sqlglot.tokens.TokenType.SMALLSERIAL": {"tf": 1}, "sqlglot.tokens.TokenType.BIGSERIAL": {"tf": 1}, "sqlglot.tokens.TokenType.XML": {"tf": 1}, "sqlglot.tokens.TokenType.UNIQUEIDENTIFIER": {"tf": 1}, "sqlglot.tokens.TokenType.MONEY": {"tf": 1}, "sqlglot.tokens.TokenType.SMALLMONEY": {"tf": 1}, "sqlglot.tokens.TokenType.ROWVERSION": {"tf": 1}, "sqlglot.tokens.TokenType.IMAGE": {"tf": 1}, "sqlglot.tokens.TokenType.VARIANT": {"tf": 1}, "sqlglot.tokens.TokenType.OBJECT": {"tf": 1}, "sqlglot.tokens.TokenType.INET": {"tf": 1}, "sqlglot.tokens.TokenType.ALIAS": {"tf": 1}, "sqlglot.tokens.TokenType.ALTER": {"tf": 1}, "sqlglot.tokens.TokenType.ALWAYS": {"tf": 1}, "sqlglot.tokens.TokenType.ALL": {"tf": 1}, "sqlglot.tokens.TokenType.ANTI": {"tf": 1}, "sqlglot.tokens.TokenType.ANY": {"tf": 1}, "sqlglot.tokens.TokenType.APPLY": {"tf": 1}, "sqlglot.tokens.TokenType.ARRAY": {"tf": 1}, "sqlglot.tokens.TokenType.ASC": {"tf": 1}, "sqlglot.tokens.TokenType.ASOF": {"tf": 1}, "sqlglot.tokens.TokenType.AT_TIME_ZONE": {"tf": 1}, "sqlglot.tokens.TokenType.AUTO_INCREMENT": {"tf": 1}, "sqlglot.tokens.TokenType.BEGIN": {"tf": 1}, "sqlglot.tokens.TokenType.BETWEEN": {"tf": 1}, "sqlglot.tokens.TokenType.BOTH": {"tf": 1}, "sqlglot.tokens.TokenType.BUCKET": {"tf": 1}, "sqlglot.tokens.TokenType.BY_DEFAULT": {"tf": 1}, "sqlglot.tokens.TokenType.CACHE": {"tf": 1}, "sqlglot.tokens.TokenType.CASCADE": {"tf": 1}, "sqlglot.tokens.TokenType.CASE": {"tf": 1}, "sqlglot.tokens.TokenType.CHARACTER_SET": {"tf": 1}, "sqlglot.tokens.TokenType.CLUSTER_BY": {"tf": 1}, "sqlglot.tokens.TokenType.COLLATE": {"tf": 1}, "sqlglot.tokens.TokenType.COMMAND": {"tf": 1}, "sqlglot.tokens.TokenType.COMMENT": {"tf": 1}, "sqlglot.tokens.TokenType.COMMIT": {"tf": 1}, "sqlglot.tokens.TokenType.COMPOUND": {"tf": 1}, "sqlglot.tokens.TokenType.CONSTRAINT": {"tf": 1}, "sqlglot.tokens.TokenType.CREATE": {"tf": 1}, "sqlglot.tokens.TokenType.CROSS": {"tf": 1}, "sqlglot.tokens.TokenType.CUBE": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_DATE": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_DATETIME": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_ROW": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_TIME": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_TIMESTAMP": {"tf": 1}, "sqlglot.tokens.TokenType.DEFAULT": {"tf": 1}, "sqlglot.tokens.TokenType.DELETE": {"tf": 1}, "sqlglot.tokens.TokenType.DESC": {"tf": 1}, "sqlglot.tokens.TokenType.DESCRIBE": {"tf": 1}, "sqlglot.tokens.TokenType.DISTINCT": {"tf": 1}, "sqlglot.tokens.TokenType.DISTINCT_FROM": {"tf": 1}, "sqlglot.tokens.TokenType.DISTRIBUTE_BY": {"tf": 1}, "sqlglot.tokens.TokenType.DIV": {"tf": 1}, "sqlglot.tokens.TokenType.DROP": {"tf": 1}, "sqlglot.tokens.TokenType.ELSE": {"tf": 1}, "sqlglot.tokens.TokenType.END": {"tf": 1}, "sqlglot.tokens.TokenType.ESCAPE": {"tf": 1}, "sqlglot.tokens.TokenType.EXCEPT": {"tf": 1}, "sqlglot.tokens.TokenType.EXECUTE": {"tf": 1}, "sqlglot.tokens.TokenType.EXISTS": {"tf": 1}, "sqlglot.tokens.TokenType.FALSE": {"tf": 1}, "sqlglot.tokens.TokenType.FETCH": {"tf": 1}, "sqlglot.tokens.TokenType.FILTER": {"tf": 1}, "sqlglot.tokens.TokenType.FINAL": {"tf": 1}, "sqlglot.tokens.TokenType.FIRST": {"tf": 1}, "sqlglot.tokens.TokenType.FOLLOWING": {"tf": 1}, "sqlglot.tokens.TokenType.FOR": {"tf": 1}, "sqlglot.tokens.TokenType.FOREIGN_KEY": {"tf": 1}, "sqlglot.tokens.TokenType.FORMAT": {"tf": 1}, "sqlglot.tokens.TokenType.FROM": {"tf": 1}, "sqlglot.tokens.TokenType.FULL": {"tf": 1}, "sqlglot.tokens.TokenType.FUNCTION": {"tf": 1}, "sqlglot.tokens.TokenType.GLOB": {"tf": 1}, "sqlglot.tokens.TokenType.GLOBAL": {"tf": 1}, "sqlglot.tokens.TokenType.GROUP_BY": {"tf": 1}, "sqlglot.tokens.TokenType.GROUPING_SETS": {"tf": 1}, "sqlglot.tokens.TokenType.HAVING": {"tf": 1}, "sqlglot.tokens.TokenType.HINT": {"tf": 1}, "sqlglot.tokens.TokenType.IF": {"tf": 1}, "sqlglot.tokens.TokenType.IGNORE_NULLS": {"tf": 1}, "sqlglot.tokens.TokenType.ILIKE": {"tf": 1}, "sqlglot.tokens.TokenType.ILIKE_ANY": {"tf": 1}, "sqlglot.tokens.TokenType.IN": {"tf": 1}, "sqlglot.tokens.TokenType.INDEX": {"tf": 1}, "sqlglot.tokens.TokenType.INNER": {"tf": 1}, "sqlglot.tokens.TokenType.INSERT": {"tf": 1}, "sqlglot.tokens.TokenType.INTERSECT": {"tf": 1}, "sqlglot.tokens.TokenType.INTERVAL": {"tf": 1}, "sqlglot.tokens.TokenType.INTO": {"tf": 1}, "sqlglot.tokens.TokenType.INTRODUCER": {"tf": 1}, "sqlglot.tokens.TokenType.IRLIKE": {"tf": 1}, "sqlglot.tokens.TokenType.IS": {"tf": 1}, "sqlglot.tokens.TokenType.ISNULL": {"tf": 1}, "sqlglot.tokens.TokenType.JOIN": {"tf": 1}, "sqlglot.tokens.TokenType.JOIN_MARKER": {"tf": 1}, "sqlglot.tokens.TokenType.LANGUAGE": {"tf": 1}, "sqlglot.tokens.TokenType.LATERAL": {"tf": 1}, "sqlglot.tokens.TokenType.LAZY": {"tf": 1}, "sqlglot.tokens.TokenType.LEADING": {"tf": 1}, "sqlglot.tokens.TokenType.LEFT": {"tf": 1}, "sqlglot.tokens.TokenType.LIKE": {"tf": 1}, "sqlglot.tokens.TokenType.LIKE_ANY": {"tf": 1}, "sqlglot.tokens.TokenType.LIMIT": {"tf": 1}, "sqlglot.tokens.TokenType.LOAD_DATA": {"tf": 1}, "sqlglot.tokens.TokenType.LOCAL": {"tf": 1}, "sqlglot.tokens.TokenType.MAP": {"tf": 1}, "sqlglot.tokens.TokenType.MATCH_RECOGNIZE": {"tf": 1}, "sqlglot.tokens.TokenType.MATERIALIZED": {"tf": 1}, "sqlglot.tokens.TokenType.MERGE": {"tf": 1}, "sqlglot.tokens.TokenType.MOD": {"tf": 1}, "sqlglot.tokens.TokenType.NATURAL": {"tf": 1}, "sqlglot.tokens.TokenType.NEXT": {"tf": 1}, "sqlglot.tokens.TokenType.NO_ACTION": {"tf": 1}, "sqlglot.tokens.TokenType.NOTNULL": {"tf": 1}, "sqlglot.tokens.TokenType.NULL": {"tf": 1}, "sqlglot.tokens.TokenType.NULLS_FIRST": {"tf": 1}, "sqlglot.tokens.TokenType.NULLS_LAST": {"tf": 1}, "sqlglot.tokens.TokenType.OFFSET": {"tf": 1}, "sqlglot.tokens.TokenType.ON": {"tf": 1}, "sqlglot.tokens.TokenType.ONLY": {"tf": 1}, "sqlglot.tokens.TokenType.OPTIONS": {"tf": 1}, "sqlglot.tokens.TokenType.ORDER_BY": {"tf": 1}, "sqlglot.tokens.TokenType.ORDERED": {"tf": 1}, "sqlglot.tokens.TokenType.ORDINALITY": {"tf": 1}, "sqlglot.tokens.TokenType.OUTER": {"tf": 1}, "sqlglot.tokens.TokenType.OUT_OF": {"tf": 1}, "sqlglot.tokens.TokenType.OVER": {"tf": 1}, "sqlglot.tokens.TokenType.OVERLAPS": {"tf": 1}, "sqlglot.tokens.TokenType.OVERWRITE": {"tf": 1}, "sqlglot.tokens.TokenType.PARTITION": {"tf": 1}, "sqlglot.tokens.TokenType.PARTITION_BY": {"tf": 1}, "sqlglot.tokens.TokenType.PERCENT": {"tf": 1}, "sqlglot.tokens.TokenType.PIVOT": {"tf": 1}, "sqlglot.tokens.TokenType.PLACEHOLDER": {"tf": 1}, "sqlglot.tokens.TokenType.PRAGMA": {"tf": 1}, "sqlglot.tokens.TokenType.PRECEDING": {"tf": 1}, "sqlglot.tokens.TokenType.PRIMARY_KEY": {"tf": 1}, "sqlglot.tokens.TokenType.PROCEDURE": {"tf": 1}, "sqlglot.tokens.TokenType.PROPERTIES": {"tf": 1}, "sqlglot.tokens.TokenType.PSEUDO_TYPE": {"tf": 1}, "sqlglot.tokens.TokenType.QUALIFY": {"tf": 1}, "sqlglot.tokens.TokenType.QUOTE": {"tf": 1}, "sqlglot.tokens.TokenType.RANGE": {"tf": 1}, "sqlglot.tokens.TokenType.RECURSIVE": {"tf": 1}, "sqlglot.tokens.TokenType.REPLACE": {"tf": 1}, "sqlglot.tokens.TokenType.RESPECT_NULLS": {"tf": 1}, "sqlglot.tokens.TokenType.RETURNING": {"tf": 1}, "sqlglot.tokens.TokenType.REFERENCES": {"tf": 1}, "sqlglot.tokens.TokenType.RIGHT": {"tf": 1}, "sqlglot.tokens.TokenType.RLIKE": {"tf": 1}, "sqlglot.tokens.TokenType.ROLLBACK": {"tf": 1}, "sqlglot.tokens.TokenType.ROLLUP": {"tf": 1}, "sqlglot.tokens.TokenType.ROW": {"tf": 1}, "sqlglot.tokens.TokenType.ROWS": {"tf": 1}, "sqlglot.tokens.TokenType.SEED": {"tf": 1}, "sqlglot.tokens.TokenType.SELECT": {"tf": 1}, "sqlglot.tokens.TokenType.SEMI": {"tf": 1}, "sqlglot.tokens.TokenType.SEPARATOR": {"tf": 1}, "sqlglot.tokens.TokenType.SERDE_PROPERTIES": {"tf": 1}, "sqlglot.tokens.TokenType.SET": {"tf": 1}, "sqlglot.tokens.TokenType.SHOW": {"tf": 1}, "sqlglot.tokens.TokenType.SIMILAR_TO": {"tf": 1}, "sqlglot.tokens.TokenType.SOME": {"tf": 1}, "sqlglot.tokens.TokenType.SORTKEY": {"tf": 1}, "sqlglot.tokens.TokenType.SORT_BY": {"tf": 1}, "sqlglot.tokens.TokenType.STRUCT": {"tf": 1}, "sqlglot.tokens.TokenType.TABLE_SAMPLE": {"tf": 1}, "sqlglot.tokens.TokenType.TEMPORARY": {"tf": 1}, "sqlglot.tokens.TokenType.TOP": {"tf": 1}, "sqlglot.tokens.TokenType.THEN": {"tf": 1}, "sqlglot.tokens.TokenType.TRAILING": {"tf": 1}, "sqlglot.tokens.TokenType.TRUE": {"tf": 1}, "sqlglot.tokens.TokenType.UNBOUNDED": {"tf": 1}, "sqlglot.tokens.TokenType.UNCACHE": {"tf": 1}, "sqlglot.tokens.TokenType.UNION": {"tf": 1}, "sqlglot.tokens.TokenType.UNLOGGED": {"tf": 1}, "sqlglot.tokens.TokenType.UNNEST": {"tf": 1}, "sqlglot.tokens.TokenType.UNPIVOT": {"tf": 1}, "sqlglot.tokens.TokenType.UPDATE": {"tf": 1}, "sqlglot.tokens.TokenType.USE": {"tf": 1}, "sqlglot.tokens.TokenType.USING": {"tf": 1}, "sqlglot.tokens.TokenType.VALUES": {"tf": 1}, "sqlglot.tokens.TokenType.VIEW": {"tf": 1}, "sqlglot.tokens.TokenType.VOLATILE": {"tf": 1}, "sqlglot.tokens.TokenType.WHEN": {"tf": 1}, "sqlglot.tokens.TokenType.WHERE": {"tf": 1}, "sqlglot.tokens.TokenType.WINDOW": {"tf": 1}, "sqlglot.tokens.TokenType.WITH": {"tf": 1}, "sqlglot.tokens.TokenType.WITH_TIME_ZONE": {"tf": 1}, "sqlglot.tokens.TokenType.WITH_LOCAL_TIME_ZONE": {"tf": 1}, "sqlglot.tokens.TokenType.WITHIN_GROUP": {"tf": 1}, "sqlglot.tokens.TokenType.WITHOUT_TIME_ZONE": {"tf": 1}, "sqlglot.tokens.TokenType.UNIQUE": {"tf": 1}, "sqlglot.tokens.Token": {"tf": 1}, "sqlglot.tokens.Token.__init__": {"tf": 1}, "sqlglot.tokens.Token.number": {"tf": 1}, "sqlglot.tokens.Token.string": {"tf": 1}, "sqlglot.tokens.Token.identifier": {"tf": 1}, "sqlglot.tokens.Token.var": {"tf": 1}, "sqlglot.tokens.Tokenizer": {"tf": 1}, "sqlglot.tokens.Tokenizer.reset": {"tf": 1}, "sqlglot.tokens.Tokenizer.tokenize": {"tf": 1}}, "df": 307}, "t": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType": {"tf": 1}, "sqlglot.tokens.TokenType.L_PAREN": {"tf": 1}, "sqlglot.tokens.TokenType.R_PAREN": {"tf": 1}, "sqlglot.tokens.TokenType.L_BRACKET": {"tf": 1}, "sqlglot.tokens.TokenType.R_BRACKET": {"tf": 1}, "sqlglot.tokens.TokenType.L_BRACE": {"tf": 1}, "sqlglot.tokens.TokenType.R_BRACE": {"tf": 1}, "sqlglot.tokens.TokenType.COMMA": {"tf": 1}, "sqlglot.tokens.TokenType.DOT": {"tf": 1}, "sqlglot.tokens.TokenType.DASH": {"tf": 1}, "sqlglot.tokens.TokenType.PLUS": {"tf": 1}, "sqlglot.tokens.TokenType.COLON": {"tf": 1}, "sqlglot.tokens.TokenType.DCOLON": {"tf": 1}, "sqlglot.tokens.TokenType.SEMICOLON": {"tf": 1}, "sqlglot.tokens.TokenType.STAR": {"tf": 1}, "sqlglot.tokens.TokenType.BACKSLASH": {"tf": 1}, "sqlglot.tokens.TokenType.SLASH": {"tf": 1}, "sqlglot.tokens.TokenType.LT": {"tf": 1}, "sqlglot.tokens.TokenType.LTE": {"tf": 1}, "sqlglot.tokens.TokenType.GT": {"tf": 1}, "sqlglot.tokens.TokenType.GTE": {"tf": 1}, "sqlglot.tokens.TokenType.NOT": {"tf": 1}, "sqlglot.tokens.TokenType.EQ": {"tf": 1}, "sqlglot.tokens.TokenType.NEQ": {"tf": 1}, "sqlglot.tokens.TokenType.NULLSAFE_EQ": {"tf": 1}, "sqlglot.tokens.TokenType.AND": {"tf": 1}, "sqlglot.tokens.TokenType.OR": {"tf": 1}, "sqlglot.tokens.TokenType.AMP": {"tf": 1}, "sqlglot.tokens.TokenType.DPIPE": {"tf": 1}, "sqlglot.tokens.TokenType.PIPE": {"tf": 1}, "sqlglot.tokens.TokenType.CARET": {"tf": 1}, "sqlglot.tokens.TokenType.TILDA": {"tf": 1}, "sqlglot.tokens.TokenType.ARROW": {"tf": 1}, "sqlglot.tokens.TokenType.DARROW": {"tf": 1}, "sqlglot.tokens.TokenType.FARROW": {"tf": 1}, "sqlglot.tokens.TokenType.HASH": {"tf": 1}, "sqlglot.tokens.TokenType.HASH_ARROW": {"tf": 1}, "sqlglot.tokens.TokenType.DHASH_ARROW": {"tf": 1}, "sqlglot.tokens.TokenType.LR_ARROW": {"tf": 1}, "sqlglot.tokens.TokenType.LT_AT": {"tf": 1}, "sqlglot.tokens.TokenType.AT_GT": {"tf": 1}, "sqlglot.tokens.TokenType.DOLLAR": {"tf": 1}, "sqlglot.tokens.TokenType.PARAMETER": {"tf": 1}, "sqlglot.tokens.TokenType.SESSION_PARAMETER": {"tf": 1}, "sqlglot.tokens.TokenType.NATIONAL": {"tf": 1}, "sqlglot.tokens.TokenType.DAMP": {"tf": 1}, "sqlglot.tokens.TokenType.BLOCK_START": {"tf": 1}, "sqlglot.tokens.TokenType.BLOCK_END": {"tf": 1}, "sqlglot.tokens.TokenType.SPACE": {"tf": 1}, "sqlglot.tokens.TokenType.BREAK": {"tf": 1}, "sqlglot.tokens.TokenType.STRING": {"tf": 1}, "sqlglot.tokens.TokenType.NUMBER": {"tf": 1}, "sqlglot.tokens.TokenType.IDENTIFIER": {"tf": 1}, "sqlglot.tokens.TokenType.DATABASE": {"tf": 1}, "sqlglot.tokens.TokenType.COLUMN": {"tf": 1}, "sqlglot.tokens.TokenType.COLUMN_DEF": {"tf": 1}, "sqlglot.tokens.TokenType.SCHEMA": {"tf": 1}, "sqlglot.tokens.TokenType.TABLE": {"tf": 1}, "sqlglot.tokens.TokenType.VAR": {"tf": 1}, "sqlglot.tokens.TokenType.BIT_STRING": {"tf": 1}, "sqlglot.tokens.TokenType.HEX_STRING": {"tf": 1}, "sqlglot.tokens.TokenType.BYTE_STRING": {"tf": 1}, "sqlglot.tokens.TokenType.BIT": {"tf": 1}, "sqlglot.tokens.TokenType.BOOLEAN": {"tf": 1}, "sqlglot.tokens.TokenType.TINYINT": {"tf": 1}, "sqlglot.tokens.TokenType.UTINYINT": {"tf": 1}, "sqlglot.tokens.TokenType.SMALLINT": {"tf": 1}, "sqlglot.tokens.TokenType.USMALLINT": {"tf": 1}, "sqlglot.tokens.TokenType.INT": {"tf": 1}, "sqlglot.tokens.TokenType.UINT": {"tf": 1}, "sqlglot.tokens.TokenType.BIGINT": {"tf": 1}, "sqlglot.tokens.TokenType.UBIGINT": {"tf": 1}, "sqlglot.tokens.TokenType.FLOAT": {"tf": 1}, "sqlglot.tokens.TokenType.DOUBLE": {"tf": 1}, "sqlglot.tokens.TokenType.DECIMAL": {"tf": 1}, "sqlglot.tokens.TokenType.CHAR": {"tf": 1}, "sqlglot.tokens.TokenType.NCHAR": {"tf": 1}, "sqlglot.tokens.TokenType.VARCHAR": {"tf": 1}, "sqlglot.tokens.TokenType.NVARCHAR": {"tf": 1}, "sqlglot.tokens.TokenType.TEXT": {"tf": 1}, "sqlglot.tokens.TokenType.MEDIUMTEXT": {"tf": 1}, "sqlglot.tokens.TokenType.LONGTEXT": {"tf": 1}, "sqlglot.tokens.TokenType.MEDIUMBLOB": {"tf": 1}, "sqlglot.tokens.TokenType.LONGBLOB": {"tf": 1}, "sqlglot.tokens.TokenType.BINARY": {"tf": 1}, "sqlglot.tokens.TokenType.VARBINARY": {"tf": 1}, "sqlglot.tokens.TokenType.JSON": {"tf": 1}, "sqlglot.tokens.TokenType.JSONB": {"tf": 1}, "sqlglot.tokens.TokenType.TIME": {"tf": 1}, "sqlglot.tokens.TokenType.TIMESTAMP": {"tf": 1}, "sqlglot.tokens.TokenType.TIMESTAMPTZ": {"tf": 1}, "sqlglot.tokens.TokenType.TIMESTAMPLTZ": {"tf": 1}, "sqlglot.tokens.TokenType.DATETIME": {"tf": 1}, "sqlglot.tokens.TokenType.DATE": {"tf": 1}, "sqlglot.tokens.TokenType.UUID": {"tf": 1}, "sqlglot.tokens.TokenType.GEOGRAPHY": {"tf": 1}, "sqlglot.tokens.TokenType.NULLABLE": {"tf": 1}, "sqlglot.tokens.TokenType.GEOMETRY": {"tf": 1}, "sqlglot.tokens.TokenType.HLLSKETCH": {"tf": 1}, "sqlglot.tokens.TokenType.HSTORE": {"tf": 1}, "sqlglot.tokens.TokenType.SUPER": {"tf": 1}, "sqlglot.tokens.TokenType.SERIAL": {"tf": 1}, "sqlglot.tokens.TokenType.SMALLSERIAL": {"tf": 1}, "sqlglot.tokens.TokenType.BIGSERIAL": {"tf": 1}, "sqlglot.tokens.TokenType.XML": {"tf": 1}, "sqlglot.tokens.TokenType.UNIQUEIDENTIFIER": {"tf": 1}, "sqlglot.tokens.TokenType.MONEY": {"tf": 1}, "sqlglot.tokens.TokenType.SMALLMONEY": {"tf": 1}, "sqlglot.tokens.TokenType.ROWVERSION": {"tf": 1}, "sqlglot.tokens.TokenType.IMAGE": {"tf": 1}, "sqlglot.tokens.TokenType.VARIANT": {"tf": 1}, "sqlglot.tokens.TokenType.OBJECT": {"tf": 1}, "sqlglot.tokens.TokenType.INET": {"tf": 1}, "sqlglot.tokens.TokenType.ALIAS": {"tf": 1}, "sqlglot.tokens.TokenType.ALTER": {"tf": 1}, "sqlglot.tokens.TokenType.ALWAYS": {"tf": 1}, "sqlglot.tokens.TokenType.ALL": {"tf": 1}, "sqlglot.tokens.TokenType.ANTI": {"tf": 1}, "sqlglot.tokens.TokenType.ANY": {"tf": 1}, "sqlglot.tokens.TokenType.APPLY": {"tf": 1}, "sqlglot.tokens.TokenType.ARRAY": {"tf": 1}, "sqlglot.tokens.TokenType.ASC": {"tf": 1}, "sqlglot.tokens.TokenType.ASOF": {"tf": 1}, "sqlglot.tokens.TokenType.AT_TIME_ZONE": {"tf": 1}, "sqlglot.tokens.TokenType.AUTO_INCREMENT": {"tf": 1}, "sqlglot.tokens.TokenType.BEGIN": {"tf": 1}, "sqlglot.tokens.TokenType.BETWEEN": {"tf": 1}, "sqlglot.tokens.TokenType.BOTH": {"tf": 1}, "sqlglot.tokens.TokenType.BUCKET": {"tf": 1}, "sqlglot.tokens.TokenType.BY_DEFAULT": {"tf": 1}, "sqlglot.tokens.TokenType.CACHE": {"tf": 1}, "sqlglot.tokens.TokenType.CASCADE": {"tf": 1}, "sqlglot.tokens.TokenType.CASE": {"tf": 1}, "sqlglot.tokens.TokenType.CHARACTER_SET": {"tf": 1}, "sqlglot.tokens.TokenType.CLUSTER_BY": {"tf": 1}, "sqlglot.tokens.TokenType.COLLATE": {"tf": 1}, "sqlglot.tokens.TokenType.COMMAND": {"tf": 1}, "sqlglot.tokens.TokenType.COMMENT": {"tf": 1}, "sqlglot.tokens.TokenType.COMMIT": {"tf": 1}, "sqlglot.tokens.TokenType.COMPOUND": {"tf": 1}, "sqlglot.tokens.TokenType.CONSTRAINT": {"tf": 1}, "sqlglot.tokens.TokenType.CREATE": {"tf": 1}, "sqlglot.tokens.TokenType.CROSS": {"tf": 1}, "sqlglot.tokens.TokenType.CUBE": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_DATE": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_DATETIME": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_ROW": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_TIME": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_TIMESTAMP": {"tf": 1}, "sqlglot.tokens.TokenType.DEFAULT": {"tf": 1}, "sqlglot.tokens.TokenType.DELETE": {"tf": 1}, "sqlglot.tokens.TokenType.DESC": {"tf": 1}, "sqlglot.tokens.TokenType.DESCRIBE": {"tf": 1}, "sqlglot.tokens.TokenType.DISTINCT": {"tf": 1}, "sqlglot.tokens.TokenType.DISTINCT_FROM": {"tf": 1}, "sqlglot.tokens.TokenType.DISTRIBUTE_BY": {"tf": 1}, "sqlglot.tokens.TokenType.DIV": {"tf": 1}, "sqlglot.tokens.TokenType.DROP": {"tf": 1}, "sqlglot.tokens.TokenType.ELSE": {"tf": 1}, "sqlglot.tokens.TokenType.END": {"tf": 1}, "sqlglot.tokens.TokenType.ESCAPE": {"tf": 1}, "sqlglot.tokens.TokenType.EXCEPT": {"tf": 1}, "sqlglot.tokens.TokenType.EXECUTE": {"tf": 1}, "sqlglot.tokens.TokenType.EXISTS": {"tf": 1}, "sqlglot.tokens.TokenType.FALSE": {"tf": 1}, "sqlglot.tokens.TokenType.FETCH": {"tf": 1}, "sqlglot.tokens.TokenType.FILTER": {"tf": 1}, "sqlglot.tokens.TokenType.FINAL": {"tf": 1}, "sqlglot.tokens.TokenType.FIRST": {"tf": 1}, "sqlglot.tokens.TokenType.FOLLOWING": {"tf": 1}, "sqlglot.tokens.TokenType.FOR": {"tf": 1}, "sqlglot.tokens.TokenType.FOREIGN_KEY": {"tf": 1}, "sqlglot.tokens.TokenType.FORMAT": {"tf": 1}, "sqlglot.tokens.TokenType.FROM": {"tf": 1}, "sqlglot.tokens.TokenType.FULL": {"tf": 1}, "sqlglot.tokens.TokenType.FUNCTION": {"tf": 1}, "sqlglot.tokens.TokenType.GLOB": {"tf": 1}, "sqlglot.tokens.TokenType.GLOBAL": {"tf": 1}, "sqlglot.tokens.TokenType.GROUP_BY": {"tf": 1}, "sqlglot.tokens.TokenType.GROUPING_SETS": {"tf": 1}, "sqlglot.tokens.TokenType.HAVING": {"tf": 1}, "sqlglot.tokens.TokenType.HINT": {"tf": 1}, "sqlglot.tokens.TokenType.IF": {"tf": 1}, "sqlglot.tokens.TokenType.IGNORE_NULLS": {"tf": 1}, "sqlglot.tokens.TokenType.ILIKE": {"tf": 1}, "sqlglot.tokens.TokenType.ILIKE_ANY": {"tf": 1}, "sqlglot.tokens.TokenType.IN": {"tf": 1}, "sqlglot.tokens.TokenType.INDEX": {"tf": 1}, "sqlglot.tokens.TokenType.INNER": {"tf": 1}, "sqlglot.tokens.TokenType.INSERT": {"tf": 1}, "sqlglot.tokens.TokenType.INTERSECT": {"tf": 1}, "sqlglot.tokens.TokenType.INTERVAL": {"tf": 1}, "sqlglot.tokens.TokenType.INTO": {"tf": 1}, "sqlglot.tokens.TokenType.INTRODUCER": {"tf": 1}, "sqlglot.tokens.TokenType.IRLIKE": {"tf": 1}, "sqlglot.tokens.TokenType.IS": {"tf": 1}, "sqlglot.tokens.TokenType.ISNULL": {"tf": 1}, "sqlglot.tokens.TokenType.JOIN": {"tf": 1}, "sqlglot.tokens.TokenType.JOIN_MARKER": {"tf": 1}, "sqlglot.tokens.TokenType.LANGUAGE": {"tf": 1}, "sqlglot.tokens.TokenType.LATERAL": {"tf": 1}, "sqlglot.tokens.TokenType.LAZY": {"tf": 1}, "sqlglot.tokens.TokenType.LEADING": {"tf": 1}, "sqlglot.tokens.TokenType.LEFT": {"tf": 1}, "sqlglot.tokens.TokenType.LIKE": {"tf": 1}, "sqlglot.tokens.TokenType.LIKE_ANY": {"tf": 1}, "sqlglot.tokens.TokenType.LIMIT": {"tf": 1}, "sqlglot.tokens.TokenType.LOAD_DATA": {"tf": 1}, "sqlglot.tokens.TokenType.LOCAL": {"tf": 1}, "sqlglot.tokens.TokenType.MAP": {"tf": 1}, "sqlglot.tokens.TokenType.MATCH_RECOGNIZE": {"tf": 1}, "sqlglot.tokens.TokenType.MATERIALIZED": {"tf": 1}, "sqlglot.tokens.TokenType.MERGE": {"tf": 1}, "sqlglot.tokens.TokenType.MOD": {"tf": 1}, "sqlglot.tokens.TokenType.NATURAL": {"tf": 1}, "sqlglot.tokens.TokenType.NEXT": {"tf": 1}, "sqlglot.tokens.TokenType.NO_ACTION": {"tf": 1}, "sqlglot.tokens.TokenType.NOTNULL": {"tf": 1}, "sqlglot.tokens.TokenType.NULL": {"tf": 1}, "sqlglot.tokens.TokenType.NULLS_FIRST": {"tf": 1}, "sqlglot.tokens.TokenType.NULLS_LAST": {"tf": 1}, "sqlglot.tokens.TokenType.OFFSET": {"tf": 1}, "sqlglot.tokens.TokenType.ON": {"tf": 1}, "sqlglot.tokens.TokenType.ONLY": {"tf": 1}, "sqlglot.tokens.TokenType.OPTIONS": {"tf": 1}, "sqlglot.tokens.TokenType.ORDER_BY": {"tf": 1}, "sqlglot.tokens.TokenType.ORDERED": {"tf": 1}, "sqlglot.tokens.TokenType.ORDINALITY": {"tf": 1}, "sqlglot.tokens.TokenType.OUTER": {"tf": 1}, "sqlglot.tokens.TokenType.OUT_OF": {"tf": 1}, "sqlglot.tokens.TokenType.OVER": {"tf": 1}, "sqlglot.tokens.TokenType.OVERLAPS": {"tf": 1}, "sqlglot.tokens.TokenType.OVERWRITE": {"tf": 1}, "sqlglot.tokens.TokenType.PARTITION": {"tf": 1}, "sqlglot.tokens.TokenType.PARTITION_BY": {"tf": 1}, "sqlglot.tokens.TokenType.PERCENT": {"tf": 1}, "sqlglot.tokens.TokenType.PIVOT": {"tf": 1}, "sqlglot.tokens.TokenType.PLACEHOLDER": {"tf": 1}, "sqlglot.tokens.TokenType.PRAGMA": {"tf": 1}, "sqlglot.tokens.TokenType.PRECEDING": {"tf": 1}, "sqlglot.tokens.TokenType.PRIMARY_KEY": {"tf": 1}, "sqlglot.tokens.TokenType.PROCEDURE": {"tf": 1}, "sqlglot.tokens.TokenType.PROPERTIES": {"tf": 1}, "sqlglot.tokens.TokenType.PSEUDO_TYPE": {"tf": 1}, "sqlglot.tokens.TokenType.QUALIFY": {"tf": 1}, "sqlglot.tokens.TokenType.QUOTE": {"tf": 1}, "sqlglot.tokens.TokenType.RANGE": {"tf": 1}, "sqlglot.tokens.TokenType.RECURSIVE": {"tf": 1}, "sqlglot.tokens.TokenType.REPLACE": {"tf": 1}, "sqlglot.tokens.TokenType.RESPECT_NULLS": {"tf": 1}, "sqlglot.tokens.TokenType.RETURNING": {"tf": 1}, "sqlglot.tokens.TokenType.REFERENCES": {"tf": 1}, "sqlglot.tokens.TokenType.RIGHT": {"tf": 1}, "sqlglot.tokens.TokenType.RLIKE": {"tf": 1}, "sqlglot.tokens.TokenType.ROLLBACK": {"tf": 1}, "sqlglot.tokens.TokenType.ROLLUP": {"tf": 1}, "sqlglot.tokens.TokenType.ROW": {"tf": 1}, "sqlglot.tokens.TokenType.ROWS": {"tf": 1}, "sqlglot.tokens.TokenType.SEED": {"tf": 1}, "sqlglot.tokens.TokenType.SELECT": {"tf": 1}, "sqlglot.tokens.TokenType.SEMI": {"tf": 1}, "sqlglot.tokens.TokenType.SEPARATOR": {"tf": 1}, "sqlglot.tokens.TokenType.SERDE_PROPERTIES": {"tf": 1}, "sqlglot.tokens.TokenType.SET": {"tf": 1}, "sqlglot.tokens.TokenType.SHOW": {"tf": 1}, "sqlglot.tokens.TokenType.SIMILAR_TO": {"tf": 1}, "sqlglot.tokens.TokenType.SOME": {"tf": 1}, "sqlglot.tokens.TokenType.SORTKEY": {"tf": 1}, "sqlglot.tokens.TokenType.SORT_BY": {"tf": 1}, "sqlglot.tokens.TokenType.STRUCT": {"tf": 1}, "sqlglot.tokens.TokenType.TABLE_SAMPLE": {"tf": 1}, "sqlglot.tokens.TokenType.TEMPORARY": {"tf": 1}, "sqlglot.tokens.TokenType.TOP": {"tf": 1}, "sqlglot.tokens.TokenType.THEN": {"tf": 1}, "sqlglot.tokens.TokenType.TRAILING": {"tf": 1}, "sqlglot.tokens.TokenType.TRUE": {"tf": 1}, "sqlglot.tokens.TokenType.UNBOUNDED": {"tf": 1}, "sqlglot.tokens.TokenType.UNCACHE": {"tf": 1}, "sqlglot.tokens.TokenType.UNION": {"tf": 1}, "sqlglot.tokens.TokenType.UNLOGGED": {"tf": 1}, "sqlglot.tokens.TokenType.UNNEST": {"tf": 1}, "sqlglot.tokens.TokenType.UNPIVOT": {"tf": 1}, "sqlglot.tokens.TokenType.UPDATE": {"tf": 1}, "sqlglot.tokens.TokenType.USE": {"tf": 1}, "sqlglot.tokens.TokenType.USING": {"tf": 1}, "sqlglot.tokens.TokenType.VALUES": {"tf": 1}, "sqlglot.tokens.TokenType.VIEW": {"tf": 1}, "sqlglot.tokens.TokenType.VOLATILE": {"tf": 1}, "sqlglot.tokens.TokenType.WHEN": {"tf": 1}, "sqlglot.tokens.TokenType.WHERE": {"tf": 1}, "sqlglot.tokens.TokenType.WINDOW": {"tf": 1}, "sqlglot.tokens.TokenType.WITH": {"tf": 1}, "sqlglot.tokens.TokenType.WITH_TIME_ZONE": {"tf": 1}, "sqlglot.tokens.TokenType.WITH_LOCAL_TIME_ZONE": {"tf": 1}, "sqlglot.tokens.TokenType.WITHIN_GROUP": {"tf": 1}, "sqlglot.tokens.TokenType.WITHOUT_TIME_ZONE": {"tf": 1}, "sqlglot.tokens.TokenType.UNIQUE": {"tf": 1}}, "df": 297}}}}}}}, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.ToChar": {"tf": 1}, "sqlglot.generator.Generator.tochar_sql": {"tf": 1}}, "df": 2}}}}, "p": {"docs": {"sqlglot.tokens.TokenType.TOP": {"tf": 1}}, "df": 1}}, "s": {"docs": {"sqlglot.dialects.dialect.ts_or_ds_to_date_sql": {"tf": 1}}, "df": 1, "q": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.dialects.dialect.Dialects.TSQL": {"tf": 1}, "sqlglot.dialects.tsql": {"tf": 1}, "sqlglot.dialects.tsql.generate_date_delta_with_unit_sql": {"tf": 1}, "sqlglot.dialects.tsql.TSQL": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Tokenizer": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Generator.offset_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Generator.systemtime_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Generator.returnsproperty_sql": {"tf": 1.4142135623730951}}, "df": 10}}, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.TsOrDsAdd": {"tf": 1}}, "df": 1}}}, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.TsOrDsToDate": {"tf": 1}}, "df": 1, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.TsOrDsToDateStr": {"tf": 1}}, "df": 1}}}}}}}}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {"sqlglot.expressions.TsOrDiToDi": {"tf": 1}}, "df": 1}}}}}}, "t": {"docs": {"sqlglot.helper.tsort": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.dialects.dialect.Dialects.TERADATA": {"tf": 1}, "sqlglot.dialects.teradata": {"tf": 1}, "sqlglot.dialects.teradata.Teradata": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Tokenizer": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Generator.partitionedbyproperty_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Generator.update_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Generator.mod_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Generator.datatype_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Generator.rangen_sql": {"tf": 1.4142135623730951}}, "df": 11}}}}}}, "x": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.Expression.text": {"tf": 1}, "sqlglot.expressions.DataType.Type.TEXT": {"tf": 1}, "sqlglot.generator.Generator.text_width": {"tf": 1}, "sqlglot.optimizer.canonicalize.add_text_to_concat": {"tf": 1}, "sqlglot.tokens.TokenType.TEXT": {"tf": 1}}, "df": 5}}, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.tokens.TokenType.TEMPORARY": {"tf": 1}}, "df": 1, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.TemporaryProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.Dialect.format_time": {"tf": 1}, "sqlglot.dialects.dialect.format_time_lambda": {"tf": 1}, "sqlglot.dialects.dialect.date_trunc_to_time": {"tf": 1}, "sqlglot.dialects.dialect.str_to_time_sql": {"tf": 1}, "sqlglot.expressions.DataType.Type.TIME": {"tf": 1}, "sqlglot.generator.Generator.format_time": {"tf": 1}, "sqlglot.time": {"tf": 1}, "sqlglot.time.format_time": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.TIME": {"tf": 1}, "sqlglot.tokens.TokenType.AT_TIME_ZONE": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_TIME": {"tf": 1}, "sqlglot.tokens.TokenType.WITH_TIME_ZONE": {"tf": 1}, "sqlglot.tokens.TokenType.WITH_LOCAL_TIME_ZONE": {"tf": 1}, "sqlglot.tokens.TokenType.WITHOUT_TIME_ZONE": {"tf": 1}}, "df": 14, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.expressions.DataType.Type.TIMESTAMP": {"tf": 1}, "sqlglot.tokens.TokenType.TIMESTAMP": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_TIMESTAMP": {"tf": 1}}, "df": 3, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot.dialects.dialect.timestamptrunc_sql": {"tf": 1}, "sqlglot.expressions.TimestampTrunc": {"tf": 1}}, "df": 2}}}}, "z": {"docs": {"sqlglot.expressions.DataType.Type.TIMESTAMPTZ": {"tf": 1}, "sqlglot.tokens.TokenType.TIMESTAMPTZ": {"tf": 1}}, "df": 2}}, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "z": {"docs": {"sqlglot.expressions.DataType.Type.TIMESTAMPLTZ": {"tf": 1}, "sqlglot.tokens.TokenType.TIMESTAMPLTZ": {"tf": 1}}, "df": 2}}}, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.TimestampAdd": {"tf": 1}}, "df": 1}}}, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "b": {"docs": {"sqlglot.expressions.TimestampSub": {"tf": 1}}, "df": 1}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "f": {"docs": {"sqlglot.expressions.TimestampDiff": {"tf": 1}}, "df": 1}}}}}}}, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.timestrtotime_sql": {"tf": 1}, "sqlglot.expressions.TimeStrToTime": {"tf": 1}}, "df": 2}}}}, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.TimeStrToDate": {"tf": 1}}, "df": 1}}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "x": {"docs": {"sqlglot.expressions.TimeStrToUnix": {"tf": 1}}, "df": 1}}}}}}}}, "u": {"docs": {}, "df": 0, "b": {"docs": {"sqlglot.expressions.TimeSub": {"tf": 1}}, "df": 1}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.TimeUnit": {"tf": 1}, "sqlglot.expressions.TimeUnit.__init__": {"tf": 1}}, "df": 2}}}}, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.TimeAdd": {"tf": 1}}, "df": 1}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "f": {"docs": {"sqlglot.expressions.TimeDiff": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot.expressions.TimeTrunc": {"tf": 1}}, "df": 1}}}}, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.TimeToStr": {"tf": 1}}, "df": 1}}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.TimeToTimeStr": {"tf": 1}}, "df": 1}}}}}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "x": {"docs": {"sqlglot.expressions.TimeToUnix": {"tf": 1}}, "df": 1}}}}}}}}, "t": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.TitleColumnConstraint": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}, "n": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.DataType.Type.TINYINT": {"tf": 1}, "sqlglot.tokens.TokenType.TINYINT": {"tf": 1}}, "df": 2}}}}}, "l": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.tokens.TokenType.TILDA": {"tf": 1}}, "df": 1}}}}, "u": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.executor.context.Context.eval_tuple": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.generate_tuple": {"tf": 1}, "sqlglot.expressions.Tuple": {"tf": 1}, "sqlglot.generator.Generator.tuple_sql": {"tf": 1}}, "df": 4}}}}, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.Expression.this": {"tf": 1}}, "df": 1}}, "e": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.tokens.TokenType.THEN": {"tf": 1}}, "df": 1}}}, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.DataType.Type": {"tf": 1}, "sqlglot.expressions.DataType.Type.CHAR": {"tf": 1}, "sqlglot.expressions.DataType.Type.NCHAR": {"tf": 1}, "sqlglot.expressions.DataType.Type.VARCHAR": {"tf": 1}, "sqlglot.expressions.DataType.Type.NVARCHAR": {"tf": 1}, "sqlglot.expressions.DataType.Type.TEXT": {"tf": 1}, "sqlglot.expressions.DataType.Type.MEDIUMTEXT": {"tf": 1}, "sqlglot.expressions.DataType.Type.LONGTEXT": {"tf": 1}, "sqlglot.expressions.DataType.Type.MEDIUMBLOB": {"tf": 1}, "sqlglot.expressions.DataType.Type.LONGBLOB": {"tf": 1}, "sqlglot.expressions.DataType.Type.BINARY": {"tf": 1}, "sqlglot.expressions.DataType.Type.VARBINARY": {"tf": 1}, "sqlglot.expressions.DataType.Type.INT": {"tf": 1}, "sqlglot.expressions.DataType.Type.UINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.TINYINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.UTINYINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.SMALLINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.USMALLINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.BIGINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.UBIGINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.FLOAT": {"tf": 1}, "sqlglot.expressions.DataType.Type.DOUBLE": {"tf": 1}, "sqlglot.expressions.DataType.Type.DECIMAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.BIT": {"tf": 1}, "sqlglot.expressions.DataType.Type.BOOLEAN": {"tf": 1}, "sqlglot.expressions.DataType.Type.JSON": {"tf": 1}, "sqlglot.expressions.DataType.Type.JSONB": {"tf": 1}, "sqlglot.expressions.DataType.Type.INTERVAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.TIME": {"tf": 1}, "sqlglot.expressions.DataType.Type.TIMESTAMP": {"tf": 1}, "sqlglot.expressions.DataType.Type.TIMESTAMPTZ": {"tf": 1}, "sqlglot.expressions.DataType.Type.TIMESTAMPLTZ": {"tf": 1}, "sqlglot.expressions.DataType.Type.DATE": {"tf": 1}, "sqlglot.expressions.DataType.Type.DATETIME": {"tf": 1}, "sqlglot.expressions.DataType.Type.ARRAY": {"tf": 1}, "sqlglot.expressions.DataType.Type.MAP": {"tf": 1}, "sqlglot.expressions.DataType.Type.UUID": {"tf": 1}, "sqlglot.expressions.DataType.Type.GEOGRAPHY": {"tf": 1}, "sqlglot.expressions.DataType.Type.GEOMETRY": {"tf": 1}, "sqlglot.expressions.DataType.Type.STRUCT": {"tf": 1}, "sqlglot.expressions.DataType.Type.NULLABLE": {"tf": 1}, "sqlglot.expressions.DataType.Type.HLLSKETCH": {"tf": 1}, "sqlglot.expressions.DataType.Type.HSTORE": {"tf": 1}, "sqlglot.expressions.DataType.Type.SUPER": {"tf": 1}, "sqlglot.expressions.DataType.Type.SERIAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.SMALLSERIAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.BIGSERIAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.XML": {"tf": 1}, "sqlglot.expressions.DataType.Type.UNIQUEIDENTIFIER": {"tf": 1}, "sqlglot.expressions.DataType.Type.MONEY": {"tf": 1}, "sqlglot.expressions.DataType.Type.SMALLMONEY": {"tf": 1}, "sqlglot.expressions.DataType.Type.ROWVERSION": {"tf": 1}, "sqlglot.expressions.DataType.Type.IMAGE": {"tf": 1}, "sqlglot.expressions.DataType.Type.VARIANT": {"tf": 1}, "sqlglot.expressions.DataType.Type.OBJECT": {"tf": 1}, "sqlglot.expressions.DataType.Type.INET": {"tf": 1}, "sqlglot.expressions.DataType.Type.NULL": {"tf": 1}, "sqlglot.expressions.DataType.Type.UNKNOWN": {"tf": 1}, "sqlglot.expressions.DataType.is_type": {"tf": 1}, "sqlglot.expressions.Cast.is_type": {"tf": 1}, "sqlglot.optimizer.canonicalize.coerce_type": {"tf": 1}, "sqlglot.schema.Schema.get_column_type": {"tf": 1}, "sqlglot.schema.MappingSchema.get_column_type": {"tf": 1}, "sqlglot.tokens.TokenType.PSEUDO_TYPE": {"tf": 1}}, "df": 64, "s": {"docs": {"sqlglot.optimizer.annotate_types": {"tf": 1}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1.4142135623730951}, "sqlglot.optimizer.annotate_types.TypeAnnotator": {"tf": 1}, "sqlglot.optimizer.annotate_types.TypeAnnotator.__init__": {"tf": 1}, "sqlglot.optimizer.annotate_types.TypeAnnotator.annotate": {"tf": 1}, "sqlglot.transforms.remove_precision_parameterized_types": {"tf": 1}}, "df": 6}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.optimizer.annotate_types.TypeAnnotator": {"tf": 1}, "sqlglot.optimizer.annotate_types.TypeAnnotator.__init__": {"tf": 1}, "sqlglot.optimizer.annotate_types.TypeAnnotator.annotate": {"tf": 1}}, "df": 3}}}}}}}}}}}}}, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.tokens.TokenType.LOAD_DATA": {"tf": 1}}, "df": 1, "f": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.dataframe.sql": {"tf": 1}, "sqlglot.dataframe.sql.SparkSession": {"tf": 1}, "sqlglot.dataframe.sql.SparkSession.table": {"tf": 1}, "sqlglot.dataframe.sql.SparkSession.createDataFrame": {"tf": 1}, "sqlglot.dataframe.sql.SparkSession.sql": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.__init__": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.sql": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.copy": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.select": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.alias": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.where": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.filter": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.groupBy": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.agg": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.join": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.union": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.unionAll": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.unionByName": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.intersect": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.intersectAll": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.exceptAll": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.distinct": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.dropDuplicates": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.dropna": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.replace": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.withColumn": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.withColumnRenamed": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.drop": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.limit": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.hint": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.repartition": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.coalesce": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.cache": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.persist": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.GroupedData": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.__init__": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.agg": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.count": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.mean": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.avg": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.max": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.min": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.sum": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.pivot": {"tf": 1}, "sqlglot.dataframe.sql.Column": {"tf": 1}, "sqlglot.dataframe.sql.Column.__init__": {"tf": 1}, "sqlglot.dataframe.sql.Column.ensure_col": {"tf": 1}, "sqlglot.dataframe.sql.Column.ensure_cols": {"tf": 1}, "sqlglot.dataframe.sql.Column.invoke_anonymous_function": {"tf": 1}, "sqlglot.dataframe.sql.Column.invoke_expression_over_column": {"tf": 1}, "sqlglot.dataframe.sql.Column.binary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.inverse_binary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.unary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.ensure_literal": {"tf": 1}, "sqlglot.dataframe.sql.Column.copy": {"tf": 1}, "sqlglot.dataframe.sql.Column.set_table_name": {"tf": 1}, "sqlglot.dataframe.sql.Column.sql": {"tf": 1}, "sqlglot.dataframe.sql.Column.alias": {"tf": 1}, "sqlglot.dataframe.sql.Column.asc": {"tf": 1}, "sqlglot.dataframe.sql.Column.desc": {"tf": 1}, "sqlglot.dataframe.sql.Column.asc_nulls_first": {"tf": 1}, "sqlglot.dataframe.sql.Column.asc_nulls_last": {"tf": 1}, "sqlglot.dataframe.sql.Column.desc_nulls_first": {"tf": 1}, "sqlglot.dataframe.sql.Column.desc_nulls_last": {"tf": 1}, "sqlglot.dataframe.sql.Column.when": {"tf": 1}, "sqlglot.dataframe.sql.Column.otherwise": {"tf": 1}, "sqlglot.dataframe.sql.Column.isNull": {"tf": 1}, "sqlglot.dataframe.sql.Column.isNotNull": {"tf": 1}, "sqlglot.dataframe.sql.Column.cast": {"tf": 1}, "sqlglot.dataframe.sql.Column.startswith": {"tf": 1}, "sqlglot.dataframe.sql.Column.endswith": {"tf": 1}, "sqlglot.dataframe.sql.Column.rlike": {"tf": 1}, "sqlglot.dataframe.sql.Column.like": {"tf": 1}, "sqlglot.dataframe.sql.Column.ilike": {"tf": 1}, "sqlglot.dataframe.sql.Column.substr": {"tf": 1}, "sqlglot.dataframe.sql.Column.isin": {"tf": 1}, "sqlglot.dataframe.sql.Column.between": {"tf": 1}, "sqlglot.dataframe.sql.Column.over": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.drop": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.fill": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.replace": {"tf": 1}, "sqlglot.dataframe.sql.Window": {"tf": 1}, "sqlglot.dataframe.sql.Window.partitionBy": {"tf": 1}, "sqlglot.dataframe.sql.Window.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.Window.rowsBetween": {"tf": 1}, "sqlglot.dataframe.sql.Window.rangeBetween": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.__init__": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.copy": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.sql": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.partitionBy": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.rowsBetween": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.rangeBetween": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameReader": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameReader.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameReader.table": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.copy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.sql": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.mode": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.insertInto": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.saveAsTable": {"tf": 1}}, "df": 111, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dataframe.sql.DataFrameNaFunctions": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.drop": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.fill": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.replace": {"tf": 1}}, "df": 5}}}}}}}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dataframe.sql.DataFrameReader": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameReader.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameReader.table": {"tf": 1}}, "df": 3}}}}}}, "w": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dataframe.sql.DataFrameWriter": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.copy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.sql": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.mode": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.insertInto": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.saveAsTable": {"tf": 1}}, "df": 7}}}}}}}}}}}, "b": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dialects.databricks": {"tf": 1}, "sqlglot.dialects.databricks.Databricks": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Tokenizer": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.DATABRICKS": {"tf": 1}}, "df": 6}}}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.DataBlocksizeProperty": {"tf": 1}, "sqlglot.generator.Generator.datablocksizeproperty_sql": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}}}, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.DATABASE": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.hive.Hive.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.datatype_sql": {"tf": 1}, "sqlglot.expressions.DataType": {"tf": 1}, "sqlglot.expressions.DataType.Type": {"tf": 1}, "sqlglot.expressions.DataType.Type.CHAR": {"tf": 1}, "sqlglot.expressions.DataType.Type.NCHAR": {"tf": 1}, "sqlglot.expressions.DataType.Type.VARCHAR": {"tf": 1}, "sqlglot.expressions.DataType.Type.NVARCHAR": {"tf": 1}, "sqlglot.expressions.DataType.Type.TEXT": {"tf": 1}, "sqlglot.expressions.DataType.Type.MEDIUMTEXT": {"tf": 1}, "sqlglot.expressions.DataType.Type.LONGTEXT": {"tf": 1}, "sqlglot.expressions.DataType.Type.MEDIUMBLOB": {"tf": 1}, "sqlglot.expressions.DataType.Type.LONGBLOB": {"tf": 1}, "sqlglot.expressions.DataType.Type.BINARY": {"tf": 1}, "sqlglot.expressions.DataType.Type.VARBINARY": {"tf": 1}, "sqlglot.expressions.DataType.Type.INT": {"tf": 1}, "sqlglot.expressions.DataType.Type.UINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.TINYINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.UTINYINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.SMALLINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.USMALLINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.BIGINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.UBIGINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.FLOAT": {"tf": 1}, "sqlglot.expressions.DataType.Type.DOUBLE": {"tf": 1}, "sqlglot.expressions.DataType.Type.DECIMAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.BIT": {"tf": 1}, "sqlglot.expressions.DataType.Type.BOOLEAN": {"tf": 1}, "sqlglot.expressions.DataType.Type.JSON": {"tf": 1}, "sqlglot.expressions.DataType.Type.JSONB": {"tf": 1}, "sqlglot.expressions.DataType.Type.INTERVAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.TIME": {"tf": 1}, "sqlglot.expressions.DataType.Type.TIMESTAMP": {"tf": 1}, "sqlglot.expressions.DataType.Type.TIMESTAMPTZ": {"tf": 1}, "sqlglot.expressions.DataType.Type.TIMESTAMPLTZ": {"tf": 1}, "sqlglot.expressions.DataType.Type.DATE": {"tf": 1}, "sqlglot.expressions.DataType.Type.DATETIME": {"tf": 1}, "sqlglot.expressions.DataType.Type.ARRAY": {"tf": 1}, "sqlglot.expressions.DataType.Type.MAP": {"tf": 1}, "sqlglot.expressions.DataType.Type.UUID": {"tf": 1}, "sqlglot.expressions.DataType.Type.GEOGRAPHY": {"tf": 1}, "sqlglot.expressions.DataType.Type.GEOMETRY": {"tf": 1}, "sqlglot.expressions.DataType.Type.STRUCT": {"tf": 1}, "sqlglot.expressions.DataType.Type.NULLABLE": {"tf": 1}, "sqlglot.expressions.DataType.Type.HLLSKETCH": {"tf": 1}, "sqlglot.expressions.DataType.Type.HSTORE": {"tf": 1}, "sqlglot.expressions.DataType.Type.SUPER": {"tf": 1}, "sqlglot.expressions.DataType.Type.SERIAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.SMALLSERIAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.BIGSERIAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.XML": {"tf": 1}, "sqlglot.expressions.DataType.Type.UNIQUEIDENTIFIER": {"tf": 1}, "sqlglot.expressions.DataType.Type.MONEY": {"tf": 1}, "sqlglot.expressions.DataType.Type.SMALLMONEY": {"tf": 1}, "sqlglot.expressions.DataType.Type.ROWVERSION": {"tf": 1}, "sqlglot.expressions.DataType.Type.IMAGE": {"tf": 1}, "sqlglot.expressions.DataType.Type.VARIANT": {"tf": 1}, "sqlglot.expressions.DataType.Type.OBJECT": {"tf": 1}, "sqlglot.expressions.DataType.Type.INET": {"tf": 1}, "sqlglot.expressions.DataType.Type.NULL": {"tf": 1}, "sqlglot.expressions.DataType.Type.UNKNOWN": {"tf": 1}, "sqlglot.expressions.DataType.build": {"tf": 1}, "sqlglot.expressions.DataType.is_type": {"tf": 1}, "sqlglot.generator.Generator.datatype_sql": {"tf": 1}}, "df": 65}}}}}, "e": {"docs": {"sqlglot.dialects.dialect.no_paren_current_date_sql": {"tf": 1}, "sqlglot.dialects.dialect.parse_date_delta": {"tf": 1}, "sqlglot.dialects.dialect.date_trunc_to_time": {"tf": 1}, "sqlglot.dialects.dialect.ts_or_ds_to_date_sql": {"tf": 1}, "sqlglot.dialects.tsql.generate_date_delta_with_unit_sql": {"tf": 1}, "sqlglot.expressions.DataType.Type.DATE": {"tf": 1}, "sqlglot.optimizer.simplify.extract_date": {"tf": 1}, "sqlglot.optimizer.simplify.date_literal": {"tf": 1}, "sqlglot.tokens.TokenType.DATE": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_DATE": {"tf": 1}}, "df": 10, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.datestrtodate_sql": {"tf": 1}, "sqlglot.expressions.DateStrToDate": {"tf": 1}}, "df": 2}}}}}}}}, "u": {"docs": {}, "df": 0, "b": {"docs": {"sqlglot.expressions.DateSub": {"tf": 1}}, "df": 1}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "f": {"docs": {"sqlglot.dialects.sqlite.SQLite.Generator.datediff_sql": {"tf": 1}, "sqlglot.expressions.DateDiff": {"tf": 1}}, "df": 2}}}}, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.DateFormatColumnConstraint": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.DateFromParts": {"tf": 1}}, "df": 1}}}}}}}}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.DataType.Type.DATETIME": {"tf": 1}, "sqlglot.tokens.TokenType.DATETIME": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_DATETIME": {"tf": 1}}, "df": 3, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.DatetimeAdd": {"tf": 1}}, "df": 1}}}, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "b": {"docs": {"sqlglot.expressions.DatetimeSub": {"tf": 1}}, "df": 1}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "f": {"docs": {"sqlglot.expressions.DatetimeDiff": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot.expressions.DatetimeTrunc": {"tf": 1}}, "df": 1}}}}}}}}, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot.expressions.DateTrunc": {"tf": 1}}, "df": 1}}}}, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.DateToDateStr": {"tf": 1}}, "df": 1}}}}}}, "i": {"docs": {"sqlglot.expressions.DateToDi": {"tf": 1}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.DateAdd": {"tf": 1}}, "df": 1}}}}}, "y": {"docs": {"sqlglot.expressions.Day": {"tf": 1}}, "df": 1, "o": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.expressions.DayOfWeek": {"tf": 1}}, "df": 1}}}}, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.expressions.DayOfMonth": {"tf": 1}}, "df": 1}}}}}, "y": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.DayOfYear": {"tf": 1}}, "df": 1}}}}}}}, "s": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.tokens.TokenType.DASH": {"tf": 1}}, "df": 1}}, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {"sqlglot.tokens.TokenType.DARROW": {"tf": 1}}, "df": 1}}}}, "m": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.tokens.TokenType.DAMP": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe.sql.DataFrame.distinct": {"tf": 1}, "sqlglot.dialects.dialect.approx_count_distinct_sql": {"tf": 1}, "sqlglot.expressions.Select.distinct": {"tf": 1}, "sqlglot.expressions.Distinct": {"tf": 1}, "sqlglot.generator.Generator.distinct_sql": {"tf": 1}, "sqlglot.tokens.TokenType.DISTINCT": {"tf": 1}, "sqlglot.tokens.TokenType.DISTINCT_FROM": {"tf": 1}, "sqlglot.transforms.eliminate_distinct_on": {"tf": 1}}, "df": 8}}}}, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Distribute": {"tf": 1}, "sqlglot.generator.Generator.distribute_sql": {"tf": 1}, "sqlglot.tokens.TokenType.DISTRIBUTE_BY": {"tf": 1}}, "df": 3}, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.normalize.distributive_law": {"tf": 1}}, "df": 1}}}}}}}}, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.DistKeyProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.DistStyleProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Distance": {"tf": 1}, "sqlglot.generator.Generator.distance_sql": {"tf": 1}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1}}, "df": 3}}}}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.dialect": {"tf": 1}, "sqlglot.dialects.dialect.Dialects": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.DIALECT": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.BIGQUERY": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.CLICKHOUSE": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.DUCKDB": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.HIVE": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.MYSQL": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.ORACLE": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.POSTGRES": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.PRESTO": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.REDSHIFT": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.SNOWFLAKE": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.SPARK": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.SQLITE": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.STARROCKS": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.TABLEAU": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.TRINO": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.TSQL": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.DATABRICKS": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.DRILL": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.TERADATA": {"tf": 1}, "sqlglot.dialects.dialect.Dialect": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialect.get_or_raise": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialect.format_time": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialect.parse": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialect.parse_into": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialect.generate": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialect.transpile": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialect.tokenize": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialect.parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialect.generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.rename_func": {"tf": 1}, "sqlglot.dialects.dialect.approx_count_distinct_sql": {"tf": 1}, "sqlglot.dialects.dialect.if_sql": {"tf": 1}, "sqlglot.dialects.dialect.arrow_json_extract_sql": {"tf": 1}, "sqlglot.dialects.dialect.arrow_json_extract_scalar_sql": {"tf": 1}, "sqlglot.dialects.dialect.inline_array_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_ilike_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_paren_current_date_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_recursive_cte_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_safe_divide_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_tablesample_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_pivot_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_trycast_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_properties_sql": {"tf": 1}, "sqlglot.dialects.dialect.str_position_sql": {"tf": 1}, "sqlglot.dialects.dialect.struct_extract_sql": {"tf": 1}, "sqlglot.dialects.dialect.var_map_sql": {"tf": 1}, "sqlglot.dialects.dialect.format_time_lambda": {"tf": 1}, "sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1}, "sqlglot.dialects.dialect.parse_date_delta": {"tf": 1}, "sqlglot.dialects.dialect.date_trunc_to_time": {"tf": 1}, "sqlglot.dialects.dialect.timestamptrunc_sql": {"tf": 1}, "sqlglot.dialects.dialect.locate_to_strposition": {"tf": 1}, "sqlglot.dialects.dialect.strposition_to_locate_sql": {"tf": 1}, "sqlglot.dialects.dialect.timestrtotime_sql": {"tf": 1}, "sqlglot.dialects.dialect.datestrtodate_sql": {"tf": 1}, "sqlglot.dialects.dialect.min_or_least": {"tf": 1}, "sqlglot.dialects.dialect.max_or_greatest": {"tf": 1}, "sqlglot.dialects.dialect.count_if_to_sum": {"tf": 1}, "sqlglot.dialects.dialect.trim_sql": {"tf": 1}, "sqlglot.dialects.dialect.str_to_time_sql": {"tf": 1}, "sqlglot.dialects.dialect.ts_or_ds_to_date_sql": {"tf": 1}}, "df": 64, "s": {"docs": {"sqlglot.dialects": {"tf": 1}, "sqlglot.dialects.bigquery": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Tokenizer": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.array_sql": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.transaction_sql": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.commit_sql": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.rollback_sql": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.in_unnest_op": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.except_op": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.intersect_op": {"tf": 1}, "sqlglot.dialects.clickhouse": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Tokenizer": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator.cte_sql": {"tf": 1}, "sqlglot.dialects.databricks": {"tf": 1}, "sqlglot.dialects.databricks.Databricks": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Tokenizer": {"tf": 1}, "sqlglot.dialects.dialect": {"tf": 1}, "sqlglot.dialects.dialect.Dialects": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.DIALECT": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.BIGQUERY": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.CLICKHOUSE": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.DUCKDB": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.HIVE": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.MYSQL": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.ORACLE": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.POSTGRES": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.PRESTO": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.REDSHIFT": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.SNOWFLAKE": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.SPARK": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.SQLITE": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.STARROCKS": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.TABLEAU": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.TRINO": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.TSQL": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.DATABRICKS": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.DRILL": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.TERADATA": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialect": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.get_or_raise": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.format_time": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.parse": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.parse_into": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.generate": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.transpile": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.tokenize": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.parser": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.generator": {"tf": 1}, "sqlglot.dialects.dialect.rename_func": {"tf": 1}, "sqlglot.dialects.dialect.approx_count_distinct_sql": {"tf": 1}, "sqlglot.dialects.dialect.if_sql": {"tf": 1}, "sqlglot.dialects.dialect.arrow_json_extract_sql": {"tf": 1}, "sqlglot.dialects.dialect.arrow_json_extract_scalar_sql": {"tf": 1}, "sqlglot.dialects.dialect.inline_array_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_ilike_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_paren_current_date_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_recursive_cte_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_safe_divide_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_tablesample_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_pivot_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_trycast_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_properties_sql": {"tf": 1}, "sqlglot.dialects.dialect.str_position_sql": {"tf": 1}, "sqlglot.dialects.dialect.struct_extract_sql": {"tf": 1}, "sqlglot.dialects.dialect.var_map_sql": {"tf": 1}, "sqlglot.dialects.dialect.format_time_lambda": {"tf": 1}, "sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1}, "sqlglot.dialects.dialect.parse_date_delta": {"tf": 1}, "sqlglot.dialects.dialect.date_trunc_to_time": {"tf": 1}, "sqlglot.dialects.dialect.timestamptrunc_sql": {"tf": 1}, "sqlglot.dialects.dialect.locate_to_strposition": {"tf": 1}, "sqlglot.dialects.dialect.strposition_to_locate_sql": {"tf": 1}, "sqlglot.dialects.dialect.timestrtotime_sql": {"tf": 1}, "sqlglot.dialects.dialect.datestrtodate_sql": {"tf": 1}, "sqlglot.dialects.dialect.min_or_least": {"tf": 1}, "sqlglot.dialects.dialect.max_or_greatest": {"tf": 1}, "sqlglot.dialects.dialect.count_if_to_sum": {"tf": 1}, "sqlglot.dialects.dialect.trim_sql": {"tf": 1}, "sqlglot.dialects.dialect.str_to_time_sql": {"tf": 1}, "sqlglot.dialects.dialect.ts_or_ds_to_date_sql": {"tf": 1}, "sqlglot.dialects.drill": {"tf": 1}, "sqlglot.dialects.drill.Drill": {"tf": 1}, "sqlglot.dialects.drill.Drill.Tokenizer": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator.normalize_func": {"tf": 1}, "sqlglot.dialects.duckdb": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Tokenizer": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator.tablesample_sql": {"tf": 1}, "sqlglot.dialects.hive": {"tf": 1}, "sqlglot.dialects.hive.Hive": {"tf": 1}, "sqlglot.dialects.hive.Hive.Tokenizer": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator.arrayagg_sql": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator.with_properties": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.mysql": {"tf": 1}, "sqlglot.dialects.mysql.MySQL": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Tokenizer": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator.show_sql": {"tf": 1}, "sqlglot.dialects.oracle": {"tf": 1}, "sqlglot.dialects.oracle.Oracle": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator.offset_sql": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator.column_sql": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator.xmltable_sql": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Tokenizer": {"tf": 1}, "sqlglot.dialects.postgres": {"tf": 1}, "sqlglot.dialects.postgres.Postgres": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Tokenizer": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto": {"tf": 1}, "sqlglot.dialects.presto.Presto": {"tf": 1}, "sqlglot.dialects.presto.Presto.Tokenizer": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator.transaction_sql": {"tf": 1}, "sqlglot.dialects.redshift": {"tf": 1}, "sqlglot.dialects.redshift.Redshift": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Tokenizer": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.with_properties": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.renametable_sql": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.snowflake": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Tokenizer": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.except_op": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.intersect_op": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.settag_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.describe_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.generatedasidentitycolumnconstraint_sql": {"tf": 1}, "sqlglot.dialects.spark": {"tf": 1}, "sqlglot.dialects.spark.Spark": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator.cast_sql": {"tf": 1}, "sqlglot.dialects.spark.Spark.Tokenizer": {"tf": 1}, "sqlglot.dialects.sqlite": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Tokenizer": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.cast_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.datediff_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.groupconcat_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.least_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.transaction_sql": {"tf": 1}, "sqlglot.dialects.starrocks": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau": {"tf": 1}, "sqlglot.dialects.tableau.Tableau": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata": {"tf": 1}, "sqlglot.dialects.teradata.Teradata": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Tokenizer": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.partitionedbyproperty_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.update_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.mod_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.rangen_sql": {"tf": 1}, "sqlglot.dialects.trino": {"tf": 1}, "sqlglot.dialects.trino.Trino": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Tokenizer": {"tf": 1}, "sqlglot.dialects.tsql": {"tf": 1}, "sqlglot.dialects.tsql.generate_date_delta_with_unit_sql": {"tf": 1}, "sqlglot.dialects.tsql.TSQL": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Tokenizer": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator.offset_sql": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator.systemtime_sql": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator.returnsproperty_sql": {"tf": 1}}, "df": 201}}}}}}, "v": {"docs": {"sqlglot.expressions.Div": {"tf": 1}, "sqlglot.generator.Generator.div_sql": {"tf": 1}, "sqlglot.tokens.TokenType.DIV": {"tf": 1}}, "df": 3, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.no_safe_divide_sql": {"tf": 1}}, "df": 1}}}}, "f": {"docs": {}, "df": 0, "f": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.diff.Insert": {"tf": 1}, "sqlglot.diff.Insert.__init__": {"tf": 1}, "sqlglot.diff.Remove": {"tf": 1}, "sqlglot.diff.Remove.__init__": {"tf": 1}, "sqlglot.diff.Move": {"tf": 1}, "sqlglot.diff.Move.__init__": {"tf": 1}, "sqlglot.diff.Update": {"tf": 1}, "sqlglot.diff.Update.__init__": {"tf": 1}, "sqlglot.diff.Keep": {"tf": 1}, "sqlglot.diff.Keep.__init__": {"tf": 1}, "sqlglot.diff.diff": {"tf": 1.4142135623730951}, "sqlglot.diff.ChangeDistiller": {"tf": 1}, "sqlglot.diff.ChangeDistiller.__init__": {"tf": 1}, "sqlglot.diff.ChangeDistiller.diff": {"tf": 1.4142135623730951}}, "df": 15}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.Directory": {"tf": 1}, "sqlglot.generator.Generator.directory_sql": {"tf": 1}}, "df": 2}}}}}}}, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.Properties.from_dict": {"tf": 1}, "sqlglot.helper.object_to_dict": {"tf": 1}, "sqlglot.helper.dict_depth": {"tf": 1}}, "df": 3}}, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.DiToDate": {"tf": 1}}, "df": 1}}}}}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.dataframe.sql.DataFrame.drop": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.drop": {"tf": 1}, "sqlglot.expressions.Drop": {"tf": 1}, "sqlglot.generator.Generator.drop_sql": {"tf": 1}, "sqlglot.tokens.TokenType.DROP": {"tf": 1}}, "df": 5, "d": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dataframe.sql.DataFrame.dropDuplicates": {"tf": 1}}, "df": 1}}}}}}}}}}, "n": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.dataframe.sql.DataFrame.dropna": {"tf": 1}}, "df": 1}}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.DropPartition": {"tf": 1}, "sqlglot.generator.Generator.droppartition_sql": {"tf": 1}}, "df": 2}}}}}}}}}}}, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.dialects.dialect.Dialects.DRILL": {"tf": 1}, "sqlglot.dialects.drill": {"tf": 1}, "sqlglot.dialects.drill.Drill": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Tokenizer": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Generator.normalize_func": {"tf": 1.4142135623730951}}, "df": 7}}}}, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot.dataframe.sql.Column.desc": {"tf": 1}, "sqlglot.dataframe.sql.Column.desc_nulls_first": {"tf": 1}, "sqlglot.dataframe.sql.Column.desc_nulls_last": {"tf": 1}, "sqlglot.tokens.TokenType.DESC": {"tf": 1}}, "df": 4, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.snowflake.Snowflake.Generator.describe_sql": {"tf": 1}, "sqlglot.expressions.Describe": {"tf": 1}, "sqlglot.generator.Generator.describe_sql": {"tf": 1}, "sqlglot.tokens.TokenType.DESCRIBE": {"tf": 1}}, "df": 4}}}}}}, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.dialects.dialect.parse_date_delta": {"tf": 1}, "sqlglot.dialects.tsql.generate_date_delta_with_unit_sql": {"tf": 1}}, "df": 2}}, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Delete": {"tf": 1}, "sqlglot.expressions.Delete.delete": {"tf": 1.4142135623730951}, "sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Delete.returning": {"tf": 1}, "sqlglot.expressions.delete": {"tf": 1}, "sqlglot.generator.Generator.delete_sql": {"tf": 1}, "sqlglot.tokens.TokenType.DELETE": {"tf": 1}}, "df": 7}}, "g": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.transforms.delegate": {"tf": 1}}, "df": 1}}}}}}, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.expressions.Expression.depth": {"tf": 1}, "sqlglot.helper.dict_depth": {"tf": 1}}, "df": 2}}, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.planner.Step.add_dependency": {"tf": 1}}, "df": 1}}}}}}}}, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.optimizer.merge_subqueries.merge_derived_tables": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.DERIVED_TABLE": {"tf": 1}, "sqlglot.optimizer.scope.Scope.derived_tables": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_derived_table": {"tf": 1}}, "df": 4, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.DerivedTable": {"tf": 1}}, "df": 1}}}}}}}}}}, "f": {"docs": {"sqlglot.tokens.TokenType.COLUMN_DEF": {"tf": 1}}, "df": 1, "a": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.Func.default_parser_mappings": {"tf": 1}, "sqlglot.optimizer.pushdown_projections.DEFAULT_SELECTION": {"tf": 1}, "sqlglot.tokens.TokenType.BY_DEFAULT": {"tf": 1}, "sqlglot.tokens.TokenType.DEFAULT": {"tf": 1}}, "df": 4, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.DefaultColumnConstraint": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.DefinerProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}}}, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.expressions.DataType.Type.DECIMAL": {"tf": 1}, "sqlglot.tokens.TokenType.DECIMAL": {"tf": 1}}, "df": 2}}}}, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Decode": {"tf": 1}}, "df": 1}}, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.unnest_subqueries.decorrelate": {"tf": 1}}, "df": 1}}}}}}}}}}, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "b": {"docs": {"sqlglot.dialects.dialect.Dialects.DUCKDB": {"tf": 1}, "sqlglot.dialects.duckdb": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Tokenizer": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Generator.tablesample_sql": {"tf": 1.4142135623730951}}, "df": 7}}}}, "m": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.expressions.Expression.dump": {"tf": 1}, "sqlglot.serde.dump": {"tf": 1}}, "df": 2}}}, "s": {"docs": {"sqlglot.dialects.dialect.ts_or_ds_to_date_sql": {"tf": 1}}, "df": 1}, "f": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.Expression.dfs": {"tf": 1}}, "df": 1}}, "o": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.Column.to_dot": {"tf": 1}, "sqlglot.expressions.Dot": {"tf": 1}, "sqlglot.expressions.Dot.build": {"tf": 1}, "sqlglot.generator.Generator.dot_sql": {"tf": 1}, "sqlglot.tokens.TokenType.DOT": {"tf": 1}}, "df": 5}, "u": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.DataType.Type.DOUBLE": {"tf": 1}, "sqlglot.tokens.TokenType.DOUBLE": {"tf": 1}}, "df": 2}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.tokens.TokenType.DOLLAR": {"tf": 1}}, "df": 1}}}}}, "p": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.DPipe": {"tf": 1}, "sqlglot.generator.Generator.dpipe_sql": {"tf": 1}, "sqlglot.tokens.TokenType.DPIPE": {"tf": 1}}, "df": 3}}}}, "n": {"docs": {}, "df": 0, "f": {"docs": {"sqlglot.optimizer.pushdown_predicates.pushdown_dnf": {"tf": 1}}, "df": 1}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.tokens.TokenType.DCOLON": {"tf": 1}}, "df": 1}}}}}, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.tokens.TokenType.DHASH_ARROW": {"tf": 1}}, "df": 1}}}}}, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1}, "sqlglot.expressions.Create": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_CREATE": {"tf": 1}, "sqlglot.generator.Generator.create_sql": {"tf": 1}, "sqlglot.tokens.TokenType.CREATE": {"tf": 1}}, "df": 5, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.SparkSession.createDataFrame": {"tf": 1}}, "df": 1}}}}}}}}}}}}}, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.tokens.TokenType.CROSS": {"tf": 1}}, "df": 1}}}}, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dataframe.sql.DataFrame.copy": {"tf": 1}, "sqlglot.dataframe.sql.Column.copy": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.copy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.copy": {"tf": 1}, "sqlglot.expressions.Expression.copy": {"tf": 1}, "sqlglot.schema.MappingSchema.copy": {"tf": 1}}, "df": 6}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.DataFrame.coalesce": {"tf": 1}, "sqlglot.expressions.Coalesce": {"tf": 1}}, "df": 2}}}}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe.sql.GroupedData.count": {"tf": 1}, "sqlglot.dialects.dialect.approx_count_distinct_sql": {"tf": 1}, "sqlglot.dialects.dialect.count_if_to_sum": {"tf": 1}, "sqlglot.expressions.Count": {"tf": 1}, "sqlglot.helper.count_params": {"tf": 1}, "sqlglot.optimizer.scope.Scope.ref_count": {"tf": 1}}, "df": 6, "i": {"docs": {}, "df": 0, "f": {"docs": {"sqlglot.expressions.CountIf": {"tf": 1}}, "df": 1}}}}}, "l": {"docs": {"sqlglot.dataframe.sql.Column.ensure_col": {"tf": 1}}, "df": 1, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dataframe.sql.Column": {"tf": 1}, "sqlglot.dataframe.sql.Column.__init__": {"tf": 1}, "sqlglot.dataframe.sql.Column.ensure_col": {"tf": 1}, "sqlglot.dataframe.sql.Column.ensure_cols": {"tf": 1}, "sqlglot.dataframe.sql.Column.invoke_anonymous_function": {"tf": 1}, "sqlglot.dataframe.sql.Column.invoke_expression_over_column": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.binary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.inverse_binary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.unary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.ensure_literal": {"tf": 1}, "sqlglot.dataframe.sql.Column.copy": {"tf": 1}, "sqlglot.dataframe.sql.Column.set_table_name": {"tf": 1}, "sqlglot.dataframe.sql.Column.sql": {"tf": 1}, "sqlglot.dataframe.sql.Column.alias": {"tf": 1}, "sqlglot.dataframe.sql.Column.asc": {"tf": 1}, "sqlglot.dataframe.sql.Column.desc": {"tf": 1}, "sqlglot.dataframe.sql.Column.asc_nulls_first": {"tf": 1}, "sqlglot.dataframe.sql.Column.asc_nulls_last": {"tf": 1}, "sqlglot.dataframe.sql.Column.desc_nulls_first": {"tf": 1}, "sqlglot.dataframe.sql.Column.desc_nulls_last": {"tf": 1}, "sqlglot.dataframe.sql.Column.when": {"tf": 1}, "sqlglot.dataframe.sql.Column.otherwise": {"tf": 1}, "sqlglot.dataframe.sql.Column.isNull": {"tf": 1}, "sqlglot.dataframe.sql.Column.isNotNull": {"tf": 1}, "sqlglot.dataframe.sql.Column.cast": {"tf": 1}, "sqlglot.dataframe.sql.Column.startswith": {"tf": 1}, "sqlglot.dataframe.sql.Column.endswith": {"tf": 1}, "sqlglot.dataframe.sql.Column.rlike": {"tf": 1}, "sqlglot.dataframe.sql.Column.like": {"tf": 1}, "sqlglot.dataframe.sql.Column.ilike": {"tf": 1}, "sqlglot.dataframe.sql.Column.substr": {"tf": 1}, "sqlglot.dataframe.sql.Column.isin": {"tf": 1}, "sqlglot.dataframe.sql.Column.between": {"tf": 1}, "sqlglot.dataframe.sql.Column.over": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator.column_sql": {"tf": 1}, "sqlglot.expressions.Column": {"tf": 1}, "sqlglot.expressions.Column.output_name": {"tf": 1}, "sqlglot.expressions.Column.parts": {"tf": 1}, "sqlglot.expressions.Column.to_dot": {"tf": 1}, "sqlglot.expressions.to_column": {"tf": 1}, "sqlglot.expressions.column": {"tf": 1}, "sqlglot.expressions.column_table_names": {"tf": 1}, "sqlglot.generator.Generator.column_sql": {"tf": 1}, "sqlglot.schema.Schema.column_names": {"tf": 1}, "sqlglot.schema.Schema.get_column_type": {"tf": 1}, "sqlglot.schema.MappingSchema.column_names": {"tf": 1}, "sqlglot.schema.MappingSchema.get_column_type": {"tf": 1}, "sqlglot.schema.ensure_column_mapping": {"tf": 1}, "sqlglot.tokens.TokenType.COLUMN": {"tf": 1}, "sqlglot.tokens.TokenType.COLUMN_DEF": {"tf": 1}}, "df": 50, "s": {"docs": {"sqlglot.executor.context.Context.add_columns": {"tf": 1}, "sqlglot.executor.table.Table.add_columns": {"tf": 1}, "sqlglot.optimizer.qualify_columns": {"tf": 1}, "sqlglot.optimizer.qualify_columns.qualify_columns": {"tf": 1.4142135623730951}, "sqlglot.optimizer.qualify_columns.validate_qualify_columns": {"tf": 1.4142135623730951}, "sqlglot.optimizer.qualify_columns.Resolver": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.__init__": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.get_table": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.all_columns": {"tf": 1.4142135623730951}, "sqlglot.optimizer.qualify_columns.Resolver.get_source_columns": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.external_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.unqualified_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.source_columns": {"tf": 1}}, "df": 14}, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.ColumnPosition": {"tf": 1}, "sqlglot.generator.Generator.columnposition_sql": {"tf": 1}}, "df": 2}}}}}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "f": {"docs": {"sqlglot.expressions.ColumnDef": {"tf": 1}, "sqlglot.generator.Generator.columndef_sql": {"tf": 1}}, "df": 2}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.ColumnConstraint": {"tf": 1}, "sqlglot.generator.Generator.columnconstraint_sql": {"tf": 1}}, "df": 2, "k": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.ColumnConstraintKind": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}, "s": {"docs": {"sqlglot.dataframe.sql.Column.ensure_cols": {"tf": 1}}, "df": 1}, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Collate": {"tf": 1}, "sqlglot.generator.Generator.collate_sql": {"tf": 1}, "sqlglot.tokens.TokenType.COLLATE": {"tf": 1}}, "df": 3, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.CollateColumnConstraint": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.CollateProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.helper.ensure_collection": {"tf": 1}}, "df": 1}}}}}}}, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.tokens.TokenType.COLON": {"tf": 1}}, "df": 1}}}, "m": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator.commit_sql": {"tf": 1}, "sqlglot.expressions.Commit": {"tf": 1}, "sqlglot.generator.Generator.commit_sql": {"tf": 1}, "sqlglot.tokens.TokenType.COMMIT": {"tf": 1}}, "df": 4}}, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.Comment": {"tf": 1}, "sqlglot.generator.Generator.pad_comment": {"tf": 1}, "sqlglot.generator.Generator.maybe_comment": {"tf": 1}, "sqlglot.generator.Generator.comment_sql": {"tf": 1}, "sqlglot.tokens.TokenType.COMMENT": {"tf": 1}}, "df": 5, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.CommentColumnConstraint": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}, "a": {"docs": {"sqlglot.tokens.TokenType.COMMA": {"tf": 1}}, "df": 1, "n": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.Command": {"tf": 1}, "sqlglot.generator.Generator.command_sql": {"tf": 1}, "sqlglot.tokens.TokenType.COMMAND": {"tf": 1}}, "df": 3}}}}, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.CompressColumnConstraint": {"tf": 1}, "sqlglot.generator.Generator.compresscolumnconstraint_sql": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}}}}}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.optimizer.simplify.remove_compliments": {"tf": 1}}, "df": 1}}}}}}, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.optimizer.simplify.is_complement": {"tf": 1}}, "df": 1}}}}}}, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.tokens.TokenType.COMPOUND": {"tf": 1}}, "df": 1}}}}}}, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.errors.concat_messages": {"tf": 1}, "sqlglot.expressions.Concat": {"tf": 1}, "sqlglot.generator.Generator.concat_sql": {"tf": 1}, "sqlglot.optimizer.canonicalize.add_text_to_concat": {"tf": 1}}, "df": 4, "w": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.ConcatWs": {"tf": 1}}, "df": 1}}}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.executor.context": {"tf": 1}, "sqlglot.executor.context.Context": {"tf": 1.4142135623730951}, "sqlglot.executor.context.Context.__init__": {"tf": 1.4142135623730951}, "sqlglot.executor.context.Context.eval": {"tf": 1.4142135623730951}, "sqlglot.executor.context.Context.eval_tuple": {"tf": 1.4142135623730951}, "sqlglot.executor.context.Context.add_columns": {"tf": 1.4142135623730951}, "sqlglot.executor.context.Context.table_iter": {"tf": 1.4142135623730951}, "sqlglot.executor.context.Context.filter": {"tf": 1.4142135623730951}, "sqlglot.executor.context.Context.sort": {"tf": 1.4142135623730951}, "sqlglot.executor.context.Context.set_row": {"tf": 1.4142135623730951}, "sqlglot.executor.context.Context.set_index": {"tf": 1.4142135623730951}, "sqlglot.executor.context.Context.set_range": {"tf": 1.4142135623730951}, "sqlglot.executor.python.PythonExecutor.context": {"tf": 1}}, "df": 13}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.Condition": {"tf": 1}, "sqlglot.expressions.Condition.and_": {"tf": 1}, "sqlglot.expressions.Condition.or_": {"tf": 1}, "sqlglot.expressions.Condition.not_": {"tf": 1}, "sqlglot.expressions.condition": {"tf": 1}, "sqlglot.optimizer.eliminate_joins.join_condition": {"tf": 1}}, "df": 6}}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.Constraint": {"tf": 1}, "sqlglot.generator.Generator.constraint_sql": {"tf": 1}, "sqlglot.tokens.TokenType.CONSTRAINT": {"tf": 1}}, "df": 3}}}}}}}, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.Connector": {"tf": 1}, "sqlglot.generator.Generator.connector_sql": {"tf": 1}}, "df": 2, "s": {"docs": {"sqlglot.optimizer.simplify.simplify_connectors": {"tf": 1}}, "df": 1}}}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.convert": {"tf": 1}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.canonicalize.coerce_type": {"tf": 1}}, "df": 1}}}}, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.optimizer.scope.Scope.is_correlated_subquery": {"tf": 1}}, "df": 1}}}}}}}}}, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.DataFrame.cache": {"tf": 1}, "sqlglot.expressions.Cache": {"tf": 1}, "sqlglot.generator.Generator.cache_sql": {"tf": 1}, "sqlglot.optimizer.scope.Scope.clear_cache": {"tf": 1}, "sqlglot.tokens.TokenType.CACHE": {"tf": 1}}, "df": 5}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe.sql.Column.cast": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator.cast_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.cast_sql": {"tf": 1}, "sqlglot.executor.env.cast": {"tf": 1}, "sqlglot.expressions.Cast": {"tf": 1}, "sqlglot.expressions.Cast.output_name": {"tf": 1}, "sqlglot.expressions.Cast.is_type": {"tf": 1}, "sqlglot.expressions.cast": {"tf": 1}, "sqlglot.generator.Generator.cast_sql": {"tf": 1}}, "df": 9, "s": {"docs": {"sqlglot.optimizer.canonicalize.remove_redundant_casts": {"tf": 1}}, "df": 1}}, "e": {"docs": {"sqlglot.expressions.Case": {"tf": 1}, "sqlglot.generator.Generator.case_sql": {"tf": 1}, "sqlglot.helper.camel_to_snake_case": {"tf": 1}, "sqlglot.tokens.TokenType.CASE": {"tf": 1}}, "df": 4, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.CaseSpecificColumnConstraint": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}}}}}}, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.CASCADE": {"tf": 1}}, "df": 1}}}}}, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.helper.camel_to_snake_case": {"tf": 1}}, "df": 1}}}, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.canonicalize": {"tf": 1}, "sqlglot.optimizer.canonicalize.canonicalize": {"tf": 1.4142135623730951}, "sqlglot.optimizer.canonicalize.add_text_to_concat": {"tf": 1}, "sqlglot.optimizer.canonicalize.coerce_type": {"tf": 1}, "sqlglot.optimizer.canonicalize.remove_redundant_casts": {"tf": 1}, "sqlglot.optimizer.canonicalize.ensure_bool_predicates": {"tf": 1}}, "df": 6}}}}}}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.CARET": {"tf": 1}}, "df": 1}}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.clickhouse": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Tokenizer": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Generator.cte_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.CLICKHOUSE": {"tf": 1}}, "df": 7}}}}}}}}, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.Cluster": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.generator.Generator.cluster_sql": {"tf": 1}, "sqlglot.tokens.TokenType.CLUSTER_BY": {"tf": 1}}, "df": 4}}}}}, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.optimizer.scope.Scope.clear_cache": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.clickhouse.ClickHouse.Generator.cte_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_recursive_cte_sql": {"tf": 1}, "sqlglot.expressions.CTE": {"tf": 1}, "sqlglot.generator.Generator.cte_sql": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.CTE": {"tf": 1}, "sqlglot.optimizer.scope.Scope.cte_sources": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_cte": {"tf": 1}}, "df": 7, "s": {"docs": {"sqlglot.generator.Generator.prepend_ctes": {"tf": 1}, "sqlglot.optimizer.eliminate_ctes": {"tf": 1}, "sqlglot.optimizer.eliminate_ctes.eliminate_ctes": {"tf": 1.4142135623730951}, "sqlglot.optimizer.merge_subqueries.merge_ctes": {"tf": 1}, "sqlglot.optimizer.scope.Scope.ctes": {"tf": 1}}, "df": 5}}, "a": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.Select.ctas": {"tf": 1}}, "df": 1}}}, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.dialect.no_paren_current_date_sql": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_DATE": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_DATETIME": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_ROW": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_TIME": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_TIMESTAMP": {"tf": 1}}, "df": 6, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.CurrentDate": {"tf": 1}, "sqlglot.generator.Generator.currentdate_sql": {"tf": 1}}, "df": 2, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.CurrentDatetime": {"tf": 1}}, "df": 1}}}}}}}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.CurrentTime": {"tf": 1}}, "df": 1, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.expressions.CurrentTimestamp": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "b": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.CUBE": {"tf": 1}}, "df": 1}}}, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.diff.ChangeDistiller": {"tf": 1}, "sqlglot.diff.ChangeDistiller.__init__": {"tf": 1}, "sqlglot.diff.ChangeDistiller.diff": {"tf": 1}}, "df": 3}}}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.helper.while_changing": {"tf": 1}}, "df": 1}}}}}, "r": {"docs": {"sqlglot.expressions.DataType.Type.CHAR": {"tf": 1}, "sqlglot.tokens.TokenType.CHAR": {"tf": 1}}, "df": 2, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.tokens.TokenType.CHARACTER_SET": {"tf": 1}}, "df": 1, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.CharacterSet": {"tf": 1}, "sqlglot.generator.Generator.characterset_sql": {"tf": 1}}, "df": 2, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.CharacterSetColumnConstraint": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.CharacterSetProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.expressions.Check": {"tf": 1}, "sqlglot.generator.Generator.check_sql": {"tf": 1}, "sqlglot.parser.Parser.check_errors": {"tf": 1}}, "df": 3, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.CheckColumnConstraint": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.ChecksumProperty": {"tf": 1}, "sqlglot.generator.Generator.checksumproperty_sql": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.replace_children": {"tf": 1}}, "df": 1}}}}}}}, "s": {"docs": {}, "df": 0, "v": {"docs": {"sqlglot.executor.python.PythonExecutor.scan_csv": {"tf": 1}, "sqlglot.helper.csv": {"tf": 1}, "sqlglot.helper.csv_reader": {"tf": 1}}, "df": 3}}, "e": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.expressions.Ceil": {"tf": 1}}, "df": 1}}}, "n": {"docs": {}, "df": 0, "f": {"docs": {"sqlglot.optimizer.pushdown_predicates.pushdown_cnf": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator.in_unnest_op": {"tf": 1}, "sqlglot.expressions.In": {"tf": 1}, "sqlglot.generator.Generator.in_sql": {"tf": 1}, "sqlglot.generator.Generator.in_unnest_op": {"tf": 1}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1}, "sqlglot.tokens.TokenType.IN": {"tf": 1}, "sqlglot.trie.in_trie": {"tf": 1}}, "df": 7, "i": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe.sql.DataFrame.__init__": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.__init__": {"tf": 1}, "sqlglot.dataframe.sql.Column.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.__init__": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameReader.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.__init__": {"tf": 1}, "sqlglot.diff.Insert.__init__": {"tf": 1}, "sqlglot.diff.Remove.__init__": {"tf": 1}, "sqlglot.diff.Move.__init__": {"tf": 1}, "sqlglot.diff.Update.__init__": {"tf": 1}, "sqlglot.diff.Keep.__init__": {"tf": 1}, "sqlglot.diff.ChangeDistiller.__init__": {"tf": 1}, "sqlglot.errors.ParseError.__init__": {"tf": 1}, "sqlglot.executor.context.Context.__init__": {"tf": 1}, "sqlglot.executor.env.reverse_key.__init__": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.__init__": {"tf": 1}, "sqlglot.executor.table.Table.__init__": {"tf": 1}, "sqlglot.executor.table.TableIter.__init__": {"tf": 1}, "sqlglot.executor.table.RangeReader.__init__": {"tf": 1}, "sqlglot.executor.table.RowReader.__init__": {"tf": 1}, "sqlglot.expressions.Expression.__init__": {"tf": 1}, "sqlglot.expressions.TimeUnit.__init__": {"tf": 1}, "sqlglot.generator.Generator.__init__": {"tf": 1}, "sqlglot.lineage.Node.__init__": {"tf": 1}, "sqlglot.lineage.LineageHTML.__init__": {"tf": 1}, "sqlglot.optimizer.annotate_types.TypeAnnotator.__init__": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.__init__": {"tf": 1}, "sqlglot.optimizer.scope.Scope.__init__": {"tf": 1}, "sqlglot.parser.Parser.__init__": {"tf": 1}, "sqlglot.planner.Plan.__init__": {"tf": 1}, "sqlglot.planner.SetOperation.__init__": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema.__init__": {"tf": 1}, "sqlglot.schema.MappingSchema.__init__": {"tf": 1}, "sqlglot.tokens.Token.__init__": {"tf": 1}}, "df": 35, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.expressions.Initcap": {"tf": 1}}, "df": 1}}}}}, "t": {"docs": {"sqlglot.expressions.Expression.is_int": {"tf": 1}, "sqlglot.expressions.DataType.Type.INT": {"tf": 1}, "sqlglot.tokens.TokenType.INT": {"tf": 1}}, "df": 3, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe.sql.DataFrame.intersect": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.intersect_op": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.intersect_op": {"tf": 1}, "sqlglot.expressions.Unionable.intersect": {"tf": 1}, "sqlglot.expressions.Intersect": {"tf": 1}, "sqlglot.expressions.intersect": {"tf": 1}, "sqlglot.generator.Generator.intersect_sql": {"tf": 1}, "sqlglot.generator.Generator.intersect_op": {"tf": 1}, "sqlglot.tokens.TokenType.INTERSECT": {"tf": 1}}, "df": 9, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.dataframe.sql.DataFrame.intersectAll": {"tf": 1}}, "df": 1}}}}}}}, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.executor.env.interval": {"tf": 1}, "sqlglot.expressions.DataType.Type.INTERVAL": {"tf": 1}, "sqlglot.expressions.Interval": {"tf": 1}, "sqlglot.expressions.to_interval": {"tf": 1}, "sqlglot.generator.Generator.interval_sql": {"tf": 1}, "sqlglot.optimizer.simplify.extract_interval": {"tf": 1}, "sqlglot.tokens.TokenType.INTERVAL": {"tf": 1}}, "df": 7}}}}}, "o": {"docs": {"sqlglot.dialects.dialect.Dialect.parse_into": {"tf": 1}, "sqlglot.expressions.Into": {"tf": 1}, "sqlglot.generator.Generator.into_sql": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 1}, "sqlglot.tokens.TokenType.INTO": {"tf": 1}}, "df": 5}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.Introducer": {"tf": 1}, "sqlglot.generator.Generator.introducer_sql": {"tf": 1}, "sqlglot.tokens.TokenType.INTRODUCER": {"tf": 1}}, "df": 3}}}}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {"sqlglot.expressions.IntDiv": {"tf": 1}, "sqlglot.generator.Generator.intdiv_sql": {"tf": 1}}, "df": 2}}}}, "v": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.Column.invoke_anonymous_function": {"tf": 1}, "sqlglot.dataframe.sql.Column.invoke_expression_over_column": {"tf": 1}}, "df": 2}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.Column.inverse_binary_op": {"tf": 1}}, "df": 1}}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.diff.Insert": {"tf": 1}, "sqlglot.diff.Insert.__init__": {"tf": 1}, "sqlglot.expressions.Insert": {"tf": 1}, "sqlglot.generator.Generator.insert_sql": {"tf": 1}, "sqlglot.tokens.TokenType.INSERT": {"tf": 1}}, "df": 5, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {"sqlglot.dataframe.sql.DataFrameWriter.insertInto": {"tf": 1}}, "df": 1}}}}}}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.inline_array_sql": {"tf": 1}}, "df": 1, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.InlineLengthColumnConstraint": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}}}}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "x": {"docs": {"sqlglot.executor.context.Context.set_index": {"tf": 1}, "sqlglot.expressions.Index": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_INDEX": {"tf": 1}, "sqlglot.generator.Generator.index_sql": {"tf": 1}, "sqlglot.helper.apply_index_offset": {"tf": 1}, "sqlglot.tokens.TokenType.INDEX": {"tf": 1}}, "df": 6}, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.generator.Generator.indent": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.DataType.Type.INET": {"tf": 1}, "sqlglot.tokens.TokenType.INET": {"tf": 1}}, "df": 2}}, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.AUTO_INCREMENT": {"tf": 1}}, "df": 1}}}}}}}, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.tokens.TokenType.INNER": {"tf": 1}}, "df": 1}}}}, "s": {"docs": {"sqlglot.expressions.Expression.is_string": {"tf": 1}, "sqlglot.expressions.Expression.is_number": {"tf": 1}, "sqlglot.expressions.Expression.is_int": {"tf": 1}, "sqlglot.expressions.Expression.is_star": {"tf": 1}, "sqlglot.expressions.Expression.assert_is": {"tf": 1}, "sqlglot.expressions.Union.is_star": {"tf": 1}, "sqlglot.expressions.Select.is_star": {"tf": 1}, "sqlglot.expressions.Subquery.is_star": {"tf": 1}, "sqlglot.expressions.DataType.is_type": {"tf": 1}, "sqlglot.expressions.Is": {"tf": 1}, "sqlglot.expressions.Cast.is_type": {"tf": 1}, "sqlglot.generator.Generator.is_sql": {"tf": 1}, "sqlglot.helper.is_iterable": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_subquery": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_derived_table": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_union": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_cte": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_root": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_udtf": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_correlated_subquery": {"tf": 1}, "sqlglot.optimizer.simplify.is_complement": {"tf": 1}, "sqlglot.optimizer.simplify.is_false": {"tf": 1}, "sqlglot.optimizer.simplify.is_null": {"tf": 1}, "sqlglot.tokens.TokenType.IS": {"tf": 1}}, "df": 24, "n": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.dataframe.sql.Column.isNull": {"tf": 1}, "sqlglot.tokens.TokenType.ISNULL": {"tf": 1}}, "df": 2}}}, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.dataframe.sql.Column.isNotNull": {"tf": 1}}, "df": 1}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dataframe.sql.Column.isin": {"tf": 1}}, "df": 1}}, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.isolate_table_selects": {"tf": 1}, "sqlglot.optimizer.isolate_table_selects.isolate_table_selects": {"tf": 1.4142135623730951}}, "df": 2, "d": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.IsolatedLoadingProperty": {"tf": 1}, "sqlglot.generator.Generator.isolatedloadingproperty_sql": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}}}}}}}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.Column.ilike": {"tf": 1}, "sqlglot.dialects.dialect.no_ilike_sql": {"tf": 1}, "sqlglot.expressions.ILike": {"tf": 1}, "sqlglot.generator.Generator.ilike_sql": {"tf": 1}, "sqlglot.tokens.TokenType.ILIKE": {"tf": 1}, "sqlglot.tokens.TokenType.ILIKE_ANY": {"tf": 1}}, "df": 6, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.ILikeAny": {"tf": 1}, "sqlglot.generator.Generator.ilikeany_sql": {"tf": 1}}, "df": 2}}}}}}}, "f": {"docs": {"sqlglot.dialects.dialect.if_sql": {"tf": 1}, "sqlglot.dialects.dialect.count_if_to_sum": {"tf": 1}, "sqlglot.executor.env.null_if_any": {"tf": 1}, "sqlglot.expressions.If": {"tf": 1}, "sqlglot.generator.Generator.if_sql": {"tf": 1}, "sqlglot.tokens.TokenType.IF": {"tf": 1}}, "df": 6, "n": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.expressions.IfNull": {"tf": 1}}, "df": 1}}}}}, "g": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.errors.ErrorLevel.IGNORE": {"tf": 1}, "sqlglot.tokens.TokenType.IGNORE_NULLS": {"tf": 1}}, "df": 2, "n": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.IgnoreNulls": {"tf": 1}, "sqlglot.generator.Generator.ignorenulls_sql": {"tf": 1}}, "df": 2}}}}}}}}}}, "m": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.errors.ErrorLevel.IMMEDIATE": {"tf": 1}}, "df": 1}}}}}}}, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.DataType.Type.IMAGE": {"tf": 1}, "sqlglot.tokens.TokenType.IMAGE": {"tf": 1}}, "df": 2}}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.executor.context.Context.table_iter": {"tf": 1}, "sqlglot.expressions.Expression.iter_expressions": {"tf": 1}}, "df": 2, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.helper.is_iterable": {"tf": 1}}, "df": 1}}}}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.Identifier": {"tf": 1}, "sqlglot.expressions.Identifier.output_name": {"tf": 1}, "sqlglot.expressions.to_identifier": {"tf": 1}, "sqlglot.generator.Generator.identifier_sql": {"tf": 1}, "sqlglot.tokens.TokenType.IDENTIFIER": {"tf": 1}, "sqlglot.tokens.Token.identifier": {"tf": 1}}, "df": 6}}}, "y": {"docs": {"sqlglot.generator.Generator.no_identify": {"tf": 1}, "sqlglot.helper.should_identify": {"tf": 1}}, "df": 2}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.optimizer.lower_identities": {"tf": 1}, "sqlglot.optimizer.lower_identities.lower_identities": {"tf": 1.4142135623730951}}, "df": 2}}}}}}}}}, "r": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.IRLIKE": {"tf": 1}}, "df": 1}}}}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dataframe.sql.DataFrame.alias": {"tf": 1}, "sqlglot.dataframe.sql.Column.alias": {"tf": 1}, "sqlglot.expressions.Expression.alias": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_ALIAS": {"tf": 1}, "sqlglot.expressions.Alias": {"tf": 1}, "sqlglot.expressions.Alias.output_name": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1}, "sqlglot.generator.Generator.alias_sql": {"tf": 1}, "sqlglot.tokens.TokenType.ALIAS": {"tf": 1}}, "df": 9, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.Aliases": {"tf": 1}, "sqlglot.generator.Generator.aliases_sql": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.replace_aliases": {"tf": 1}}, "df": 3}}}}}, "l": {"docs": {"sqlglot.expressions.Expression.find_all": {"tf": 1}, "sqlglot.expressions.All": {"tf": 1}, "sqlglot.generator.Generator.all_sql": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.all_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1}, "sqlglot.tokens.TokenType.ALL": {"tf": 1}}, "df": 6}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.tokens.TokenType.ALTER": {"tf": 1}}, "df": 1, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.AlterColumn": {"tf": 1}, "sqlglot.generator.Generator.altercolumn_sql": {"tf": 1}}, "df": 2}}}}}}, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.AlterTable": {"tf": 1}, "sqlglot.generator.Generator.altertable_sql": {"tf": 1}}, "df": 2}}}}}}}}, "g": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.AlgorithmProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}, "w": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.optimizer.simplify.always_true": {"tf": 1}, "sqlglot.tokens.TokenType.ALWAYS": {"tf": 1}}, "df": 2}}}}}, "g": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.dataframe.sql.DataFrame.agg": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.agg": {"tf": 1}}, "df": 2, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.executor.python.PythonExecutor.aggregate": {"tf": 1}, "sqlglot.planner.Aggregate": {"tf": 1}}, "df": 2}}}}}}, "f": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot.expressions.AggFunc": {"tf": 1}}, "df": 1}}}}}}, "v": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.dataframe.sql.GroupedData.avg": {"tf": 1}, "sqlglot.expressions.Avg": {"tf": 1}}, "df": 2}}, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dataframe.sql.Column.invoke_anonymous_function": {"tf": 1}, "sqlglot.expressions.Anonymous": {"tf": 1}, "sqlglot.generator.Generator.anonymous_sql": {"tf": 1}}, "df": 3}}}}}}}, "y": {"docs": {"sqlglot.executor.env.null_if_any": {"tf": 1}, "sqlglot.expressions.Any": {"tf": 1}, "sqlglot.generator.Generator.any_sql": {"tf": 1}, "sqlglot.tokens.TokenType.ANY": {"tf": 1}, "sqlglot.tokens.TokenType.ILIKE_ANY": {"tf": 1}, "sqlglot.tokens.TokenType.LIKE_ANY": {"tf": 1}}, "df": 6, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.AnyValue": {"tf": 1}}, "df": 1}}}}}}, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.Expression.find_ancestor": {"tf": 1}}, "df": 1}}}}}}, "d": {"docs": {"sqlglot.expressions.Condition.and_": {"tf": 1}, "sqlglot.expressions.And": {"tf": 1}, "sqlglot.expressions.and_": {"tf": 1}, "sqlglot.generator.Generator.and_sql": {"tf": 1}, "sqlglot.optimizer.simplify.absorb_and_eliminate": {"tf": 1}, "sqlglot.tokens.TokenType.AND": {"tf": 1}}, "df": 6}, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.annotate_types": {"tf": 1}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1.4142135623730951}, "sqlglot.optimizer.annotate_types.TypeAnnotator": {"tf": 1}, "sqlglot.optimizer.annotate_types.TypeAnnotator.__init__": {"tf": 1}, "sqlglot.optimizer.annotate_types.TypeAnnotator.annotate": {"tf": 1.4142135623730951}}, "df": 5}}}}}}, "t": {"docs": {}, "df": 0, "i": {"docs": {"sqlglot.tokens.TokenType.ANTI": {"tf": 1}}, "df": 1}}}, "s": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot.dataframe.sql.Column.asc": {"tf": 1}, "sqlglot.dataframe.sql.Column.asc_nulls_first": {"tf": 1}, "sqlglot.dataframe.sql.Column.asc_nulls_last": {"tf": 1}, "sqlglot.tokens.TokenType.ASC": {"tf": 1}}, "df": 4}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.Expression.assert_is": {"tf": 1}}, "df": 1}}}}, "o": {"docs": {}, "df": 0, "f": {"docs": {"sqlglot.tokens.TokenType.ASOF": {"tf": 1}}, "df": 1}}}, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator.array_sql": {"tf": 1}, "sqlglot.dialects.dialect.inline_array_sql": {"tf": 1}, "sqlglot.expressions.DataType.Type.ARRAY": {"tf": 1}, "sqlglot.expressions.Array": {"tf": 1}, "sqlglot.tokens.TokenType.ARRAY": {"tf": 1}}, "df": 5, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.dialects.hive.Hive.Generator.arrayagg_sql": {"tf": 1}, "sqlglot.expressions.ArrayAgg": {"tf": 1}}, "df": 2}}, "l": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.expressions.ArrayAll": {"tf": 1}}, "df": 1}}, "n": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.ArrayAny": {"tf": 1}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.ArrayOverlaps": {"tf": 1}}, "df": 1}}}}}}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.ArrayConcat": {"tf": 1}}, "df": 1}}}, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.ArrayContains": {"tf": 1}}, "df": 1}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.ArrayContained": {"tf": 1}}, "df": 1}}}}}}}}}, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.ArrayFilter": {"tf": 1}}, "df": 1}}}}}}, "j": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.ArrayJoin": {"tf": 1}}, "df": 1}}}}, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.ArraySize": {"tf": 1}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.ArraySort": {"tf": 1}}, "df": 1}}}, "u": {"docs": {}, "df": 0, "m": {"docs": {"sqlglot.expressions.ArraySum": {"tf": 1}}, "df": 1}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.expressions.ArrayUnionAgg": {"tf": 1}}, "df": 1}}}}}}}}}}, "o": {"docs": {}, "df": 0, "w": {"docs": {"sqlglot.dialects.dialect.arrow_json_extract_sql": {"tf": 1}, "sqlglot.dialects.dialect.arrow_json_extract_scalar_sql": {"tf": 1}, "sqlglot.tokens.TokenType.ARROW": {"tf": 1}, "sqlglot.tokens.TokenType.HASH_ARROW": {"tf": 1}, "sqlglot.tokens.TokenType.DHASH_ARROW": {"tf": 1}, "sqlglot.tokens.TokenType.LR_ARROW": {"tf": 1}}, "df": 6}}}, "g": {"docs": {"sqlglot.expressions.Func.from_arg_list": {"tf": 1}}, "df": 1, "s": {"docs": {"sqlglot.generator.Generator.format_args": {"tf": 1}, "sqlglot.schema.Schema.supported_table_args": {"tf": 1}}, "df": 2}}}, "p": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "x": {"docs": {"sqlglot.dialects.dialect.approx_count_distinct_sql": {"tf": 1}}, "df": 1, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.ApproxDistinct": {"tf": 1}}, "df": 1}}}}}}}}, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.ApproxQuantile": {"tf": 1}}, "df": 1}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.executor.table.Table.append": {"tf": 1}, "sqlglot.expressions.Expression.append": {"tf": 1}}, "df": 2}}}, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.helper.apply_index_offset": {"tf": 1}, "sqlglot.tokens.TokenType.APPLY": {"tf": 1}}, "df": 2}}}}, "d": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.executor.context.Context.add_columns": {"tf": 1}, "sqlglot.executor.table.Table.add_columns": {"tf": 1}, "sqlglot.expressions.Add": {"tf": 1}, "sqlglot.generator.Generator.add_sql": {"tf": 1}, "sqlglot.optimizer.canonicalize.add_text_to_concat": {"tf": 1}, "sqlglot.optimizer.scope.Scope.add_source": {"tf": 1}, "sqlglot.planner.Step.add_dependency": {"tf": 1}, "sqlglot.schema.Schema.add_table": {"tf": 1}, "sqlglot.schema.MappingSchema.add_table": {"tf": 1}}, "df": 9, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.AddConstraint": {"tf": 1}, "sqlglot.generator.Generator.addconstraint_sql": {"tf": 1}}, "df": 2}}}}}}}}}}}}, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {"sqlglot.tokens.TokenType.AUTO_INCREMENT": {"tf": 1}}, "df": 1, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.AutoIncrementColumnConstraint": {"tf": 1}, "sqlglot.generator.Generator.autoincrementcolumnconstraint_sql": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}}}, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.AutoIncrementProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.helper.AutoName": {"tf": 1}}, "df": 1}}}}}}}, "f": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "j": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.AfterJournalProperty": {"tf": 1}, "sqlglot.generator.Generator.afterjournalproperty_sql": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}}}}}}, "t": {"docs": {"sqlglot.tokens.TokenType.LT_AT": {"tf": 1}, "sqlglot.tokens.TokenType.AT_GT": {"tf": 1}, "sqlglot.tokens.TokenType.AT_TIME_ZONE": {"tf": 1}}, "df": 3, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.AtTimeZone": {"tf": 1}, "sqlglot.generator.Generator.attimezone_sql": {"tf": 1}}, "df": 2}}}}}}}}}, "b": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.Abs": {"tf": 1}}, "df": 1, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "b": {"docs": {"sqlglot.optimizer.simplify.absorb_and_eliminate": {"tf": 1}}, "df": 1}}}, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.schema.AbstractMappingSchema": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema.__init__": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema.table_parts": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema.find": {"tf": 1}}, "df": 4}}}}}}}}}}}}}}}}}}}}, "m": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.tokens.TokenType.AMP": {"tf": 1}}, "df": 1}}, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.tokens.TokenType.NO_ACTION": {"tf": 1}}, "df": 1}}}}}}, "w": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.DataFrame.where": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Select.where": {"tf": 1}, "sqlglot.expressions.Where": {"tf": 1}, "sqlglot.generator.Generator.where_sql": {"tf": 1}, "sqlglot.optimizer.simplify.remove_where_true": {"tf": 1}, "sqlglot.tokens.TokenType.WHERE": {"tf": 1}}, "df": 7}}, "n": {"docs": {"sqlglot.dataframe.sql.Column.when": {"tf": 1}, "sqlglot.expressions.When": {"tf": 1}, "sqlglot.generator.Generator.when_sql": {"tf": 1}, "sqlglot.tokens.TokenType.WHEN": {"tf": 1}}, "df": 4}}, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.helper.while_changing": {"tf": 1}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator.with_properties": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.with_properties": {"tf": 1}, "sqlglot.dialects.tsql.generate_date_delta_with_unit_sql": {"tf": 1}, "sqlglot.expressions.With": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_WITH": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1}, "sqlglot.generator.Generator.with_sql": {"tf": 1}, "sqlglot.generator.Generator.with_properties": {"tf": 1}, "sqlglot.tokens.TokenType.WITH": {"tf": 1}, "sqlglot.tokens.TokenType.WITH_TIME_ZONE": {"tf": 1}, "sqlglot.tokens.TokenType.WITH_LOCAL_TIME_ZONE": {"tf": 1}}, "df": 12, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dataframe.sql.DataFrame.withColumn": {"tf": 1}}, "df": 1, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.dataframe.sql.DataFrame.withColumnRenamed": {"tf": 1}}, "df": 1}}}}}}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.tokens.TokenType.WITHIN_GROUP": {"tf": 1}}, "df": 1, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.expressions.WithinGroup": {"tf": 1}, "sqlglot.generator.Generator.withingroup_sql": {"tf": 1}}, "df": 2}}}}}}}, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.WithDataProperty": {"tf": 1}, "sqlglot.generator.Generator.withdataproperty_sql": {"tf": 1}}, "df": 2}}}}}}}}}}}}, "j": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.WithJournalTableProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.WITHOUT_TIME_ZONE": {"tf": 1}}, "df": 1}}}}}, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {"sqlglot.dataframe.sql.Window": {"tf": 1}, "sqlglot.dataframe.sql.Window.partitionBy": {"tf": 1}, "sqlglot.dataframe.sql.Window.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.Window.rowsBetween": {"tf": 1}, "sqlglot.dataframe.sql.Window.rangeBetween": {"tf": 1}, "sqlglot.expressions.Select.window": {"tf": 1}, "sqlglot.expressions.Window": {"tf": 1}, "sqlglot.generator.Generator.window_sql": {"tf": 1}, "sqlglot.generator.Generator.window_spec_sql": {"tf": 1}, "sqlglot.tokens.TokenType.WINDOW": {"tf": 1}}, "df": 10, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot.dataframe.sql.WindowSpec": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.__init__": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.copy": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.sql": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.partitionBy": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.rowsBetween": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.rangeBetween": {"tf": 1}, "sqlglot.expressions.WindowSpec": {"tf": 1}}, "df": 9}}}}}}}}, "d": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.generator.Generator.text_width": {"tf": 1}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.errors.ErrorLevel.WARN": {"tf": 1}}, "df": 1}}, "l": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.expressions.Expression.walk": {"tf": 1}, "sqlglot.lineage.Node.walk": {"tf": 1}, "sqlglot.optimizer.scope.Scope.walk": {"tf": 1}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1}}, "df": 4}}}, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.expressions.Week": {"tf": 1}}, "df": 1, "o": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.WeekOfYear": {"tf": 1}}, "df": 1}}}}}}}}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.generator.Generator.wrap": {"tf": 1}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.helper.split_num_words": {"tf": 1}}, "df": 1}}}}}, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dataframe.sql.DataFrame.filter": {"tf": 1}, "sqlglot.executor.context.Context.filter": {"tf": 1}, "sqlglot.executor.env.filter_nulls": {"tf": 1}, "sqlglot.expressions.Filter": {"tf": 1}, "sqlglot.generator.Generator.filter_sql": {"tf": 1}, "sqlglot.tokens.TokenType.FILTER": {"tf": 1}}, "df": 6}}}, "l": {"docs": {"sqlglot.dataframe.sql.DataFrameNaFunctions.fill": {"tf": 1}}, "df": 1, "n": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}}, "df": 1}}}, "e": {"docs": {"sqlglot.helper.open_file": {"tf": 1}}, "df": 1, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.FileFormatProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe.sql.Column.asc_nulls_first": {"tf": 1}, "sqlglot.dataframe.sql.Column.desc_nulls_first": {"tf": 1}, "sqlglot.helper.first": {"tf": 1}, "sqlglot.tokens.TokenType.FIRST": {"tf": 1}, "sqlglot.tokens.TokenType.NULLS_FIRST": {"tf": 1}}, "df": 5}}}, "n": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.Expression.find": {"tf": 1}, "sqlglot.expressions.Expression.find_all": {"tf": 1}, "sqlglot.expressions.Expression.find_ancestor": {"tf": 1}, "sqlglot.helper.find_new_name": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema.find": {"tf": 1}}, "df": 7}, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.expressions.Final": {"tf": 1}, "sqlglot.tokens.TokenType.FINAL": {"tf": 1}}, "df": 2}}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot.dialects.dialect.rename_func": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator.normalize_func": {"tf": 1}, "sqlglot.expressions.Func": {"tf": 1}, "sqlglot.expressions.Func.from_arg_list": {"tf": 1}, "sqlglot.expressions.Func.sql_names": {"tf": 1}, "sqlglot.expressions.Func.sql_name": {"tf": 1}, "sqlglot.expressions.Func.default_parser_mappings": {"tf": 1}, "sqlglot.expressions.func": {"tf": 1}, "sqlglot.generator.Generator.normalize_func": {"tf": 1}, "sqlglot.generator.Generator.func": {"tf": 1}}, "df": 10, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dataframe.sql.Column.invoke_anonymous_function": {"tf": 1}, "sqlglot.generator.Generator.function_fallback_sql": {"tf": 1}, "sqlglot.tokens.TokenType.FUNCTION": {"tf": 1}}, "df": 3}}}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.tokens.TokenType.FULL": {"tf": 1}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.optimizer.pushdown_predicates.nodes_for_predicate": {"tf": 1}, "sqlglot.tokens.TokenType.FOR": {"tf": 1}}, "df": 2, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.dialect.Dialect.format_time": {"tf": 1}, "sqlglot.dialects.dialect.format_time_lambda": {"tf": 1}, "sqlglot.generator.Generator.format_args": {"tf": 1}, "sqlglot.generator.Generator.format_time": {"tf": 1}, "sqlglot.time.format_time": {"tf": 1}, "sqlglot.tokens.TokenType.FORMAT": {"tf": 1}}, "df": 6}}}, "e": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.tokens.TokenType.FOREIGN_KEY": {"tf": 1}}, "df": 1, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.ForeignKey": {"tf": 1}, "sqlglot.generator.Generator.foreignkey_sql": {"tf": 1}}, "df": 2}}}}}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.tokens.TokenType.FOLLOWING": {"tf": 1}}, "df": 1}}}}}}}}, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.Expression.flatten": {"tf": 1}, "sqlglot.helper.flatten": {"tf": 1}, "sqlglot.optimizer.simplify.flatten": {"tf": 1}, "sqlglot.schema.flatten_schema": {"tf": 1}}, "df": 4}}}}}, "o": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.DataType.Type.FLOAT": {"tf": 1}, "sqlglot.tokens.TokenType.FLOAT": {"tf": 1}}, "df": 2}}, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.Floor": {"tf": 1}}, "df": 1}}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {"sqlglot.expressions.From": {"tf": 1}, "sqlglot.expressions.Properties.from_dict": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.Func.from_arg_list": {"tf": 1}, "sqlglot.expressions.from_": {"tf": 1}, "sqlglot.generator.Generator.from_sql": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.Join.from_joins": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}, "sqlglot.schema.MappingSchema.from_mapping_schema": {"tf": 1}, "sqlglot.tokens.TokenType.DISTINCT_FROM": {"tf": 1}, "sqlglot.tokens.TokenType.FROM": {"tf": 1}}, "df": 13}}, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.FreespaceProperty": {"tf": 1}, "sqlglot.generator.Generator.freespaceproperty_sql": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.expressions.Fetch": {"tf": 1}, "sqlglot.generator.Generator.fetch_sql": {"tf": 1}, "sqlglot.tokens.TokenType.FETCH": {"tf": 1}}, "df": 3}}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.generator.Generator.function_fallback_sql": {"tf": 1}}, "df": 1, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.FallbackProperty": {"tf": 1}, "sqlglot.generator.Generator.fallbackproperty_sql": {"tf": 1}}, "df": 2}}}}}}}}}}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.false": {"tf": 1}, "sqlglot.optimizer.simplify.is_false": {"tf": 1}, "sqlglot.tokens.TokenType.FALSE": {"tf": 1}}, "df": 3}}}, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {"sqlglot.tokens.TokenType.FARROW": {"tf": 1}}, "df": 1}}}}}}, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.expressions.Group": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.generator.Generator.group_sql": {"tf": 1}, "sqlglot.tokens.TokenType.GROUP_BY": {"tf": 1}, "sqlglot.tokens.TokenType.WITHIN_GROUP": {"tf": 1}, "sqlglot.transforms.unalias_group": {"tf": 1}}, "df": 6, "b": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dataframe.sql.DataFrame.groupBy": {"tf": 1}}, "df": 1}}, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.dataframe.sql.GroupedData": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.__init__": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.agg": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.count": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.mean": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.avg": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.max": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.min": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.sum": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.pivot": {"tf": 1}}, "df": 10}}}}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.sqlite.SQLite.Generator.groupconcat_sql": {"tf": 1}, "sqlglot.expressions.GroupConcat": {"tf": 1}}, "df": 2}}}}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.GroupUniqArray": {"tf": 1}}, "df": 1}}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.tokens.TokenType.GROUPING_SETS": {"tf": 1}}, "df": 1}}}}}}, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.dialect.max_or_greatest": {"tf": 1}, "sqlglot.expressions.Greatest": {"tf": 1}}, "df": 2}}}}}}}, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.array_sql": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.transaction_sql": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.commit_sql": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.rollback_sql": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.in_unnest_op": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.except_op": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.intersect_op": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator.cte_sql": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator.normalize_func": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator.tablesample_sql": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator.arrayagg_sql": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator.with_properties": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator.show_sql": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator.offset_sql": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator.column_sql": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator.xmltable_sql": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator.transaction_sql": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.with_properties": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.renametable_sql": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.except_op": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.intersect_op": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.settag_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.describe_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.generatedasidentitycolumnconstraint_sql": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator.cast_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.cast_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.datediff_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.groupconcat_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.least_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.transaction_sql": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.partitionedbyproperty_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.update_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.mod_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.rangen_sql": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator.offset_sql": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator.systemtime_sql": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator.returnsproperty_sql": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.generator": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.__init__": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.generate": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.unsupported": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.sep": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.seg": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.pad_comment": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.maybe_comment": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.wrap": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.no_identify": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.normalize_func": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.indent": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.uncache_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.cache_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.characterset_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.column_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.columnposition_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.columndef_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.columnconstraint_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.autoincrementcolumnconstraint_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.compresscolumnconstraint_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.generatedasidentitycolumnconstraint_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.notnullcolumnconstraint_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.primarykeycolumnconstraint_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.uniquecolumnconstraint_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.create_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.describe_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.prepend_ctes": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.with_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.cte_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.tablealias_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.bitstring_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.hexstring_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.datatype_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.directory_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.delete_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.drop_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.except_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.except_op": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.fetch_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.filter_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.hint_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.index_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.identifier_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.national_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.partition_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.properties_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.root_properties": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.properties": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.with_properties": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.locate_properties": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.property_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.likeproperty_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.fallbackproperty_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.journalproperty_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.freespaceproperty_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.afterjournalproperty_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.checksumproperty_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.mergeblockratioproperty_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.datablocksizeproperty_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.blockcompressionproperty_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.isolatedloadingproperty_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.lockingproperty_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.withdataproperty_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.insert_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.intersect_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.intersect_op": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.introducer_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.pseudotype_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.returning_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.rowformatdelimitedproperty_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.table_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.tablesample_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.pivot_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.tuple_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.update_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.values_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.var_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.into_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.from_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.group_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.having_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.join_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.lambda_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.lateral_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.limit_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.offset_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.setitem_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.set_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.pragma_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.lock_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.literal_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.loaddata_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.null_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.boolean_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.order_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.cluster_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.distribute_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.sort_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.ordered_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.matchrecognize_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.query_modifiers": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.select_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.schema_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.star_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.structkwarg_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.parameter_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.sessionparameter_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.placeholder_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.subquery_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.qualify_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.union_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.union_op": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.unnest_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.where_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.window_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.partition_by_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.window_spec_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.withingroup_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.between_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.bracket_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.all_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.any_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.exists_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.case_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.constraint_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.extract_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.trim_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.concat_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.check_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.foreignkey_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.primarykey_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.unique_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.if_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.matchagainst_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.jsonkeyvalue_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.jsonobject_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.in_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.in_unnest_op": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.interval_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.return_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.reference_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.anonymous_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.paren_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.neg_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.not_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.alias_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.aliases_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.attimezone_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.add_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.and_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.connector_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.bitwiseand_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.bitwiseleftshift_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.bitwisenot_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.bitwiseor_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.bitwiserightshift_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.bitwisexor_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.cast_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.currentdate_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.collate_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.command_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.comment_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.transaction_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.commit_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.rollback_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.altercolumn_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.renametable_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.altertable_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.droppartition_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.addconstraint_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.distinct_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.ignorenulls_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.respectnulls_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.intdiv_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.dpipe_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.div_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.overlaps_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.distance_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.dot_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.eq_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.escape_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.glob_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.gt_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.gte_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.ilike_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.ilikeany_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.is_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.like_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.likeany_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.similarto_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.lt_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.lte_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.mod_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.mul_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.neq_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.nullsafeeq_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.nullsafeneq_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.or_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.slice_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.sub_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.trycast_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.use_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.binary": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.function_fallback_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.func": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.format_args": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.text_width": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.format_time": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.expressions": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.op_expressions": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.naked_property": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.set_operation": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.tag_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.token_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.userdefinedfunction_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.joinhint_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.kwarg_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.when_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.merge_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.tochar_sql": {"tf": 1.4142135623730951}}, "df": 287}}, "e": {"docs": {"sqlglot.dialects.dialect.Dialect.generate": {"tf": 1}, "sqlglot.dialects.tsql.generate_date_delta_with_unit_sql": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.generate": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.generate_tuple": {"tf": 1}, "sqlglot.generator.Generator.generate": {"tf": 1}}, "df": 5, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.snowflake.Snowflake.Generator.generatedasidentitycolumnconstraint_sql": {"tf": 1}, "sqlglot.expressions.GeneratedAsIdentityColumnConstraint": {"tf": 1}, "sqlglot.generator.Generator.generatedasidentitycolumnconstraint_sql": {"tf": 1}}, "df": 3}}}}}}}}}}}}}}}}}}}}}}}}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.GenerateSeries": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "t": {"docs": {"sqlglot.dialects.dialect.Dialect.get_or_raise": {"tf": 1}, "sqlglot.helper.seq_get": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.get_table": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.get_source_columns": {"tf": 1}, "sqlglot.schema.Schema.get_column_type": {"tf": 1}, "sqlglot.schema.MappingSchema.get_column_type": {"tf": 1}}, "df": 6}, "o": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.DataType.Type.GEOGRAPHY": {"tf": 1}, "sqlglot.tokens.TokenType.GEOGRAPHY": {"tf": 1}}, "df": 2}}}}}}, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.DataType.Type.GEOMETRY": {"tf": 1}, "sqlglot.tokens.TokenType.GEOMETRY": {"tf": 1}}, "df": 2}}}}}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "b": {"docs": {"sqlglot.expressions.Glob": {"tf": 1}, "sqlglot.generator.Generator.glob_sql": {"tf": 1}, "sqlglot.tokens.TokenType.GLOB": {"tf": 1}}, "df": 3, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.tokens.TokenType.GLOBAL": {"tf": 1}}, "df": 1}}}}}, "t": {"docs": {"sqlglot.expressions.GT": {"tf": 1}, "sqlglot.generator.Generator.gt_sql": {"tf": 1}, "sqlglot.tokens.TokenType.GT": {"tf": 1}, "sqlglot.tokens.TokenType.AT_GT": {"tf": 1}}, "df": 4, "e": {"docs": {"sqlglot.expressions.GTE": {"tf": 1}, "sqlglot.generator.Generator.gte_sql": {"tf": 1}, "sqlglot.tokens.TokenType.GTE": {"tf": 1}}, "df": 3}}}, "j": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dataframe.sql.DataFrame.join": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.join": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.nested_loop_join": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.hash_join": {"tf": 1}, "sqlglot.expressions.Join": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Join.using": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1}, "sqlglot.generator.Generator.join_sql": {"tf": 1}, "sqlglot.optimizer.eliminate_joins.join_condition": {"tf": 1}, "sqlglot.optimizer.scope.Scope.join_hints": {"tf": 1}, "sqlglot.planner.Join": {"tf": 1}, "sqlglot.planner.Join.from_joins": {"tf": 1}, "sqlglot.tokens.TokenType.JOIN": {"tf": 1}, "sqlglot.tokens.TokenType.JOIN_MARKER": {"tf": 1}}, "df": 15, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.JoinHint": {"tf": 1}, "sqlglot.generator.Generator.joinhint_sql": {"tf": 1}}, "df": 2}}}}, "s": {"docs": {"sqlglot.optimizer.eliminate_joins": {"tf": 1}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 1.4142135623730951}, "sqlglot.optimizer.eliminate_joins.join_condition": {"tf": 1}, "sqlglot.optimizer.optimize_joins": {"tf": 1}, "sqlglot.optimizer.optimize_joins.optimize_joins": {"tf": 1.4142135623730951}, "sqlglot.optimizer.optimize_joins.reorder_joins": {"tf": 1.4142135623730951}, "sqlglot.optimizer.optimize_joins.normalize": {"tf": 1}, "sqlglot.optimizer.optimize_joins.other_table_names": {"tf": 1}, "sqlglot.planner.Join.from_joins": {"tf": 1}}, "df": 9}}}, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.JournalProperty": {"tf": 1}, "sqlglot.generator.Generator.journalproperty_sql": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}, "s": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dialects.dialect.arrow_json_extract_sql": {"tf": 1}, "sqlglot.dialects.dialect.arrow_json_extract_scalar_sql": {"tf": 1}, "sqlglot.expressions.DataType.Type.JSON": {"tf": 1}, "sqlglot.tokens.TokenType.JSON": {"tf": 1}}, "df": 4, "b": {"docs": {"sqlglot.expressions.DataType.Type.JSONB": {"tf": 1}, "sqlglot.tokens.TokenType.JSONB": {"tf": 1}}, "df": 2, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.JSONBContains": {"tf": 1}}, "df": 1}}}}}}}}, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.JSONBExtract": {"tf": 1}}, "df": 1, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.JSONBExtractScalar": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.JSONKeyValue": {"tf": 1}, "sqlglot.generator.Generator.jsonkeyvalue_sql": {"tf": 1}}, "df": 2}}}}}}}}, "o": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "j": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.JSONObject": {"tf": 1}, "sqlglot.generator.Generator.jsonobject_sql": {"tf": 1}}, "df": 2}}}}}}, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.JSONExtract": {"tf": 1}}, "df": 1, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.JSONExtractScalar": {"tf": 1}}, "df": 1}}}}}}}}}}}}}, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.JSONFormat": {"tf": 1}}, "df": 1}}}}}}}}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dataframe.sql.DataFrame.union": {"tf": 1}, "sqlglot.expressions.Unionable.union": {"tf": 1}, "sqlglot.expressions.Union": {"tf": 1}, "sqlglot.expressions.Union.limit": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 1}, "sqlglot.expressions.Union.is_star": {"tf": 1}, "sqlglot.expressions.union": {"tf": 1}, "sqlglot.generator.Generator.union_sql": {"tf": 1}, "sqlglot.generator.Generator.union_op": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.UNION": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_union": {"tf": 1}, "sqlglot.tokens.TokenType.UNION": {"tf": 1}}, "df": 12, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.dataframe.sql.DataFrame.unionAll": {"tf": 1}}, "df": 1}}, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Unionable": {"tf": 1}, "sqlglot.expressions.Unionable.union": {"tf": 1}, "sqlglot.expressions.Unionable.intersect": {"tf": 1}, "sqlglot.expressions.Unionable.except_": {"tf": 1}}, "df": 4}}}}, "b": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.DataFrame.unionByName": {"tf": 1}}, "df": 1}}}}}}}}, "t": {"docs": {"sqlglot.dialects.tsql.generate_date_delta_with_unit_sql": {"tf": 1}}, "df": 1}, "q": {"docs": {"sqlglot.optimizer.simplify.uniq_sort": {"tf": 1}}, "df": 1, "u": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Unique": {"tf": 1}, "sqlglot.generator.Generator.unique_sql": {"tf": 1}, "sqlglot.tokens.TokenType.UNIQUE": {"tf": 1}}, "df": 3, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.UniqueColumnConstraint": {"tf": 1}, "sqlglot.generator.Generator.uniquecolumnconstraint_sql": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}}}, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.DataType.Type.UNIQUEIDENTIFIER": {"tf": 1}, "sqlglot.tokens.TokenType.UNIQUEIDENTIFIER": {"tf": 1}}, "df": 2}}}}}}}}}}}}}, "x": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.UnixToStr": {"tf": 1}}, "df": 1}}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.UnixToTime": {"tf": 1}}, "df": 1, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.UnixToTimeStr": {"tf": 1}}, "df": 1}}}}}}}}}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dataframe.sql.Column.unary_op": {"tf": 1}, "sqlglot.expressions.Unary": {"tf": 1}}, "df": 2}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.Expression.unalias": {"tf": 1}, "sqlglot.transforms.unalias_group": {"tf": 1}}, "df": 2}}}}}, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator.in_unnest_op": {"tf": 1}, "sqlglot.expressions.Expression.unnest": {"tf": 1}, "sqlglot.expressions.Expression.unnest_operands": {"tf": 1}, "sqlglot.expressions.Unnest": {"tf": 1}, "sqlglot.expressions.Subquery.unnest": {"tf": 1}, "sqlglot.generator.Generator.unnest_sql": {"tf": 1}, "sqlglot.generator.Generator.in_unnest_op": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 1.4142135623730951}, "sqlglot.optimizer.unnest_subqueries.unnest": {"tf": 1.4142135623730951}, "sqlglot.optimizer.unnest_subqueries.decorrelate": {"tf": 1}, "sqlglot.tokens.TokenType.UNNEST": {"tf": 1}}, "df": 12}}}}, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.Properties.Location.UNSUPPORTED": {"tf": 1}, "sqlglot.generator.Generator.unsupported": {"tf": 1}}, "df": 2, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.errors.UnsupportedError": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Uncache": {"tf": 1}, "sqlglot.generator.Generator.uncache_sql": {"tf": 1}, "sqlglot.tokens.TokenType.UNCACHE": {"tf": 1}}, "df": 3}}}}}, "k": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.DataType.Type.UNKNOWN": {"tf": 1}}, "df": 1}}}}}, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "x": {"docs": {"sqlglot.expressions.Unhex": {"tf": 1}}, "df": 1}}}, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.optimizer.scope.Scope.unqualified_columns": {"tf": 1}}, "df": 1}}}}}}}}}, "b": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.tokens.TokenType.UNBOUNDED": {"tf": 1}}, "df": 1}}}}}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.tokens.TokenType.UNLOGGED": {"tf": 1}}, "df": 1}}}}}}, "p": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.UNPIVOT": {"tf": 1}}, "df": 1}}}}}}, "p": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.teradata.Teradata.Generator.update_sql": {"tf": 1}, "sqlglot.diff.Update": {"tf": 1}, "sqlglot.diff.Update.__init__": {"tf": 1}, "sqlglot.expressions.Update": {"tf": 1}, "sqlglot.expressions.update": {"tf": 1}, "sqlglot.generator.Generator.update_sql": {"tf": 1}, "sqlglot.tokens.TokenType.UPDATE": {"tf": 1}}, "df": 7}}}}, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.Upper": {"tf": 1}}, "df": 1, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.UppercaseColumnConstraint": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}}}}}, "d": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "f": {"docs": {"sqlglot.expressions.UDTF": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.UDTF": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_udtf": {"tf": 1}}, "df": 3, "s": {"docs": {"sqlglot.optimizer.scope.Scope.udtfs": {"tf": 1}}, "df": 1}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Use": {"tf": 1}, "sqlglot.generator.Generator.use_sql": {"tf": 1}, "sqlglot.tokens.TokenType.USE": {"tf": 1}}, "df": 3, "r": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.UserDefinedFunction": {"tf": 1}, "sqlglot.generator.Generator.userdefinedfunction_sql": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.expressions.Join.using": {"tf": 1}, "sqlglot.tokens.TokenType.USING": {"tf": 1}}, "df": 2}}}, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.DataType.Type.USMALLINT": {"tf": 1}, "sqlglot.tokens.TokenType.USMALLINT": {"tf": 1}}, "df": 2}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.DataType.Type.UINT": {"tf": 1}, "sqlglot.tokens.TokenType.UINT": {"tf": 1}}, "df": 2}}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.DataType.Type.UTINYINT": {"tf": 1}, "sqlglot.tokens.TokenType.UTINYINT": {"tf": 1}}, "df": 2}}}}}}}, "b": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.DataType.Type.UBIGINT": {"tf": 1}, "sqlglot.tokens.TokenType.UBIGINT": {"tf": 1}}, "df": 2}}}}}}, "u": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.DataType.Type.UUID": {"tf": 1}, "sqlglot.tokens.TokenType.UUID": {"tf": 1}}, "df": 2}}}}, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator.except_op": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.except_op": {"tf": 1}, "sqlglot.expressions.Unionable.except_": {"tf": 1}, "sqlglot.expressions.Except": {"tf": 1}, "sqlglot.expressions.except_": {"tf": 1}, "sqlglot.generator.Generator.except_sql": {"tf": 1}, "sqlglot.generator.Generator.except_op": {"tf": 1}, "sqlglot.tokens.TokenType.EXCEPT": {"tf": 1}}, "df": 8, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.dataframe.sql.DataFrame.exceptAll": {"tf": 1}}, "df": 1}}}}}}}, "p": {"docs": {"sqlglot.expressions.Exp": {"tf": 1}}, "df": 1, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dataframe.sql.Column.invoke_expression_over_column": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.expressions.Expression.__init__": {"tf": 1}, "sqlglot.expressions.Expression.this": {"tf": 1}, "sqlglot.expressions.Expression.expression": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.expressions": {"tf": 1}, "sqlglot.expressions.Expression.text": {"tf": 1}, "sqlglot.expressions.Expression.is_string": {"tf": 1}, "sqlglot.expressions.Expression.is_number": {"tf": 1}, "sqlglot.expressions.Expression.is_int": {"tf": 1}, "sqlglot.expressions.Expression.is_star": {"tf": 1}, "sqlglot.expressions.Expression.alias": {"tf": 1}, "sqlglot.expressions.Expression.output_name": {"tf": 1}, "sqlglot.expressions.Expression.copy": {"tf": 1}, "sqlglot.expressions.Expression.append": {"tf": 1}, "sqlglot.expressions.Expression.set": {"tf": 1}, "sqlglot.expressions.Expression.depth": {"tf": 1}, "sqlglot.expressions.Expression.iter_expressions": {"tf": 1}, "sqlglot.expressions.Expression.find": {"tf": 1}, "sqlglot.expressions.Expression.find_all": {"tf": 1}, "sqlglot.expressions.Expression.find_ancestor": {"tf": 1}, "sqlglot.expressions.Expression.parent_select": {"tf": 1}, "sqlglot.expressions.Expression.same_parent": {"tf": 1}, "sqlglot.expressions.Expression.root": {"tf": 1}, "sqlglot.expressions.Expression.walk": {"tf": 1}, "sqlglot.expressions.Expression.dfs": {"tf": 1}, "sqlglot.expressions.Expression.bfs": {"tf": 1}, "sqlglot.expressions.Expression.unnest": {"tf": 1}, "sqlglot.expressions.Expression.unalias": {"tf": 1}, "sqlglot.expressions.Expression.unnest_operands": {"tf": 1}, "sqlglot.expressions.Expression.flatten": {"tf": 1}, "sqlglot.expressions.Expression.sql": {"tf": 1}, "sqlglot.expressions.Expression.transform": {"tf": 1}, "sqlglot.expressions.Expression.replace": {"tf": 1}, "sqlglot.expressions.Expression.pop": {"tf": 1}, "sqlglot.expressions.Expression.assert_is": {"tf": 1}, "sqlglot.expressions.Expression.error_messages": {"tf": 1}, "sqlglot.expressions.Expression.dump": {"tf": 1}, "sqlglot.expressions.Expression.load": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_EXPRESSION": {"tf": 1}, "sqlglot.parser.Parser.expression": {"tf": 1}, "sqlglot.parser.Parser.validate_expression": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}}, "df": 45, "s": {"docs": {"sqlglot.expressions": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.expressions.Expression.__init__": {"tf": 1}, "sqlglot.expressions.Expression.this": {"tf": 1}, "sqlglot.expressions.Expression.expression": {"tf": 1}, "sqlglot.expressions.Expression.expressions": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.text": {"tf": 1}, "sqlglot.expressions.Expression.is_string": {"tf": 1}, "sqlglot.expressions.Expression.is_number": {"tf": 1}, "sqlglot.expressions.Expression.is_int": {"tf": 1}, "sqlglot.expressions.Expression.is_star": {"tf": 1}, "sqlglot.expressions.Expression.alias": {"tf": 1}, "sqlglot.expressions.Expression.output_name": {"tf": 1}, "sqlglot.expressions.Expression.copy": {"tf": 1}, "sqlglot.expressions.Expression.append": {"tf": 1}, "sqlglot.expressions.Expression.set": {"tf": 1}, "sqlglot.expressions.Expression.depth": {"tf": 1}, "sqlglot.expressions.Expression.iter_expressions": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.find": {"tf": 1}, "sqlglot.expressions.Expression.find_all": {"tf": 1}, "sqlglot.expressions.Expression.find_ancestor": {"tf": 1}, "sqlglot.expressions.Expression.parent_select": {"tf": 1}, "sqlglot.expressions.Expression.same_parent": {"tf": 1}, "sqlglot.expressions.Expression.root": {"tf": 1}, "sqlglot.expressions.Expression.walk": {"tf": 1}, "sqlglot.expressions.Expression.dfs": {"tf": 1}, "sqlglot.expressions.Expression.bfs": {"tf": 1}, "sqlglot.expressions.Expression.unnest": {"tf": 1}, "sqlglot.expressions.Expression.unalias": {"tf": 1}, "sqlglot.expressions.Expression.unnest_operands": {"tf": 1}, "sqlglot.expressions.Expression.flatten": {"tf": 1}, "sqlglot.expressions.Expression.sql": {"tf": 1}, "sqlglot.expressions.Expression.transform": {"tf": 1}, "sqlglot.expressions.Expression.replace": {"tf": 1}, "sqlglot.expressions.Expression.pop": {"tf": 1}, "sqlglot.expressions.Expression.assert_is": {"tf": 1}, "sqlglot.expressions.Expression.error_messages": {"tf": 1}, "sqlglot.expressions.Expression.dump": {"tf": 1}, "sqlglot.expressions.Expression.load": {"tf": 1}, "sqlglot.expressions.Condition": {"tf": 1}, "sqlglot.expressions.Condition.and_": {"tf": 1}, "sqlglot.expressions.Condition.or_": {"tf": 1}, "sqlglot.expressions.Condition.not_": {"tf": 1}, "sqlglot.expressions.Predicate": {"tf": 1}, "sqlglot.expressions.DerivedTable": {"tf": 1}, "sqlglot.expressions.Unionable": {"tf": 1}, "sqlglot.expressions.Unionable.union": {"tf": 1}, "sqlglot.expressions.Unionable.intersect": {"tf": 1}, "sqlglot.expressions.Unionable.except_": {"tf": 1}, "sqlglot.expressions.UDTF": {"tf": 1}, "sqlglot.expressions.Cache": {"tf": 1}, "sqlglot.expressions.Uncache": {"tf": 1}, "sqlglot.expressions.Create": {"tf": 1}, "sqlglot.expressions.Describe": {"tf": 1}, "sqlglot.expressions.Pragma": {"tf": 1}, "sqlglot.expressions.Set": {"tf": 1}, "sqlglot.expressions.SetItem": {"tf": 1}, "sqlglot.expressions.Show": {"tf": 1}, "sqlglot.expressions.UserDefinedFunction": {"tf": 1}, "sqlglot.expressions.CharacterSet": {"tf": 1}, "sqlglot.expressions.With": {"tf": 1}, "sqlglot.expressions.WithinGroup": {"tf": 1}, "sqlglot.expressions.CTE": {"tf": 1}, "sqlglot.expressions.TableAlias": {"tf": 1}, "sqlglot.expressions.BitString": {"tf": 1}, "sqlglot.expressions.HexString": {"tf": 1}, "sqlglot.expressions.ByteString": {"tf": 1}, "sqlglot.expressions.Column": {"tf": 1}, "sqlglot.expressions.Column.output_name": {"tf": 1}, "sqlglot.expressions.Column.parts": {"tf": 1}, "sqlglot.expressions.Column.to_dot": {"tf": 1}, "sqlglot.expressions.ColumnPosition": {"tf": 1}, "sqlglot.expressions.ColumnDef": {"tf": 1}, "sqlglot.expressions.AlterColumn": {"tf": 1}, "sqlglot.expressions.RenameTable": {"tf": 1}, "sqlglot.expressions.SetTag": {"tf": 1}, "sqlglot.expressions.Comment": {"tf": 1}, "sqlglot.expressions.ColumnConstraint": {"tf": 1}, "sqlglot.expressions.ColumnConstraintKind": {"tf": 1}, "sqlglot.expressions.AutoIncrementColumnConstraint": {"tf": 1}, "sqlglot.expressions.CaseSpecificColumnConstraint": {"tf": 1}, "sqlglot.expressions.CharacterSetColumnConstraint": {"tf": 1}, "sqlglot.expressions.CheckColumnConstraint": {"tf": 1}, "sqlglot.expressions.CollateColumnConstraint": {"tf": 1}, "sqlglot.expressions.CommentColumnConstraint": {"tf": 1}, "sqlglot.expressions.CompressColumnConstraint": {"tf": 1}, "sqlglot.expressions.DateFormatColumnConstraint": {"tf": 1}, "sqlglot.expressions.DefaultColumnConstraint": {"tf": 1}, "sqlglot.expressions.EncodeColumnConstraint": {"tf": 1}, "sqlglot.expressions.GeneratedAsIdentityColumnConstraint": {"tf": 1}, "sqlglot.expressions.InlineLengthColumnConstraint": {"tf": 1}, "sqlglot.expressions.NotNullColumnConstraint": {"tf": 1}, "sqlglot.expressions.PrimaryKeyColumnConstraint": {"tf": 1}, "sqlglot.expressions.TitleColumnConstraint": {"tf": 1}, "sqlglot.expressions.UniqueColumnConstraint": {"tf": 1}, "sqlglot.expressions.UppercaseColumnConstraint": {"tf": 1}, "sqlglot.expressions.PathColumnConstraint": {"tf": 1}, "sqlglot.expressions.Constraint": {"tf": 1}, "sqlglot.expressions.Delete": {"tf": 1}, "sqlglot.expressions.Delete.delete": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Delete.returning": {"tf": 1}, "sqlglot.expressions.Drop": {"tf": 1}, "sqlglot.expressions.Filter": {"tf": 1}, "sqlglot.expressions.Check": {"tf": 1}, "sqlglot.expressions.Directory": {"tf": 1}, "sqlglot.expressions.ForeignKey": {"tf": 1}, "sqlglot.expressions.PrimaryKey": {"tf": 1}, "sqlglot.expressions.Unique": {"tf": 1}, "sqlglot.expressions.Into": {"tf": 1}, "sqlglot.expressions.From": {"tf": 1}, "sqlglot.expressions.Having": {"tf": 1}, "sqlglot.expressions.Hint": {"tf": 1}, "sqlglot.expressions.JoinHint": {"tf": 1}, "sqlglot.expressions.Identifier": {"tf": 1}, "sqlglot.expressions.Identifier.output_name": {"tf": 1}, "sqlglot.expressions.Index": {"tf": 1}, "sqlglot.expressions.Insert": {"tf": 1}, "sqlglot.expressions.Returning": {"tf": 1}, "sqlglot.expressions.Introducer": {"tf": 1}, "sqlglot.expressions.National": {"tf": 1}, "sqlglot.expressions.LoadData": {"tf": 1}, "sqlglot.expressions.Partition": {"tf": 1}, "sqlglot.expressions.Fetch": {"tf": 1}, "sqlglot.expressions.Group": {"tf": 1}, "sqlglot.expressions.Lambda": {"tf": 1}, "sqlglot.expressions.Limit": {"tf": 1}, "sqlglot.expressions.Literal": {"tf": 1}, "sqlglot.expressions.Literal.number": {"tf": 1}, "sqlglot.expressions.Literal.string": {"tf": 1}, "sqlglot.expressions.Literal.output_name": {"tf": 1}, "sqlglot.expressions.Join": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Join.using": {"tf": 1}, "sqlglot.expressions.Lateral": {"tf": 1}, "sqlglot.expressions.MatchRecognize": {"tf": 1}, "sqlglot.expressions.Final": {"tf": 1}, "sqlglot.expressions.Offset": {"tf": 1}, "sqlglot.expressions.Order": {"tf": 1}, "sqlglot.expressions.Cluster": {"tf": 1}, "sqlglot.expressions.Distribute": {"tf": 1}, "sqlglot.expressions.Sort": {"tf": 1}, "sqlglot.expressions.Ordered": {"tf": 1}, "sqlglot.expressions.Property": {"tf": 1}, "sqlglot.expressions.AfterJournalProperty": {"tf": 1}, "sqlglot.expressions.AlgorithmProperty": {"tf": 1}, "sqlglot.expressions.AutoIncrementProperty": {"tf": 1}, "sqlglot.expressions.BlockCompressionProperty": {"tf": 1}, "sqlglot.expressions.CharacterSetProperty": {"tf": 1}, "sqlglot.expressions.ChecksumProperty": {"tf": 1}, "sqlglot.expressions.CollateProperty": {"tf": 1}, "sqlglot.expressions.DataBlocksizeProperty": {"tf": 1}, "sqlglot.expressions.DefinerProperty": {"tf": 1}, "sqlglot.expressions.DistKeyProperty": {"tf": 1}, "sqlglot.expressions.DistStyleProperty": {"tf": 1}, "sqlglot.expressions.EngineProperty": {"tf": 1}, "sqlglot.expressions.ExecuteAsProperty": {"tf": 1}, "sqlglot.expressions.ExternalProperty": {"tf": 1}, "sqlglot.expressions.FallbackProperty": {"tf": 1}, "sqlglot.expressions.FileFormatProperty": {"tf": 1}, "sqlglot.expressions.FreespaceProperty": {"tf": 1}, "sqlglot.expressions.IsolatedLoadingProperty": {"tf": 1}, "sqlglot.expressions.JournalProperty": {"tf": 1}, "sqlglot.expressions.LanguageProperty": {"tf": 1}, "sqlglot.expressions.LikeProperty": {"tf": 1}, "sqlglot.expressions.LocationProperty": {"tf": 1}, "sqlglot.expressions.LockingProperty": {"tf": 1}, "sqlglot.expressions.LogProperty": {"tf": 1}, "sqlglot.expressions.MaterializedProperty": {"tf": 1}, "sqlglot.expressions.MergeBlockRatioProperty": {"tf": 1}, "sqlglot.expressions.NoPrimaryIndexProperty": {"tf": 1}, "sqlglot.expressions.OnCommitProperty": {"tf": 1}, "sqlglot.expressions.PartitionedByProperty": {"tf": 1}, "sqlglot.expressions.ReturnsProperty": {"tf": 1}, "sqlglot.expressions.RowFormatDelimitedProperty": {"tf": 1}, "sqlglot.expressions.RowFormatSerdeProperty": {"tf": 1}, "sqlglot.expressions.SchemaCommentProperty": {"tf": 1}, "sqlglot.expressions.SerdeProperties": {"tf": 1}, "sqlglot.expressions.SetProperty": {"tf": 1}, "sqlglot.expressions.SortKeyProperty": {"tf": 1}, "sqlglot.expressions.SqlSecurityProperty": {"tf": 1}, "sqlglot.expressions.TableFormatProperty": {"tf": 1}, "sqlglot.expressions.TemporaryProperty": {"tf": 1}, "sqlglot.expressions.TransientProperty": {"tf": 1}, "sqlglot.expressions.VolatilityProperty": {"tf": 1}, "sqlglot.expressions.WithDataProperty": {"tf": 1}, "sqlglot.expressions.WithJournalTableProperty": {"tf": 1}, "sqlglot.expressions.Properties": {"tf": 1}, "sqlglot.expressions.Properties.Location": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_CREATE": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_NAME": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_SCHEMA": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_WITH": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_ALIAS": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_EXPRESSION": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_INDEX": {"tf": 1}, "sqlglot.expressions.Properties.Location.UNSUPPORTED": {"tf": 1}, "sqlglot.expressions.Properties.from_dict": {"tf": 1}, "sqlglot.expressions.Qualify": {"tf": 1}, "sqlglot.expressions.Return": {"tf": 1}, "sqlglot.expressions.Reference": {"tf": 1}, "sqlglot.expressions.Tuple": {"tf": 1}, "sqlglot.expressions.Subqueryable": {"tf": 1}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 1}, "sqlglot.expressions.Subqueryable.limit": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1}, "sqlglot.expressions.Table": {"tf": 1}, "sqlglot.expressions.SystemTime": {"tf": 1}, "sqlglot.expressions.Union": {"tf": 1}, "sqlglot.expressions.Union.limit": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 1}, "sqlglot.expressions.Union.is_star": {"tf": 1}, "sqlglot.expressions.Except": {"tf": 1}, "sqlglot.expressions.Intersect": {"tf": 1}, "sqlglot.expressions.Unnest": {"tf": 1}, "sqlglot.expressions.Update": {"tf": 1}, "sqlglot.expressions.Values": {"tf": 1}, "sqlglot.expressions.Var": {"tf": 1}, "sqlglot.expressions.Schema": {"tf": 1}, "sqlglot.expressions.Lock": {"tf": 1}, "sqlglot.expressions.Select": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.expressions.Select.limit": {"tf": 1}, "sqlglot.expressions.Select.offset": {"tf": 1}, "sqlglot.expressions.Select.select": {"tf": 1}, "sqlglot.expressions.Select.lateral": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1}, "sqlglot.expressions.Select.where": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1}, "sqlglot.expressions.Select.window": {"tf": 1}, "sqlglot.expressions.Select.qualify": {"tf": 1}, "sqlglot.expressions.Select.distinct": {"tf": 1}, "sqlglot.expressions.Select.ctas": {"tf": 1}, "sqlglot.expressions.Select.lock": {"tf": 1}, "sqlglot.expressions.Select.is_star": {"tf": 1}, "sqlglot.expressions.Subquery": {"tf": 1}, "sqlglot.expressions.Subquery.unnest": {"tf": 1}, "sqlglot.expressions.Subquery.is_star": {"tf": 1}, "sqlglot.expressions.Subquery.output_name": {"tf": 1}, "sqlglot.expressions.TableSample": {"tf": 1}, "sqlglot.expressions.Tag": {"tf": 1}, "sqlglot.expressions.Pivot": {"tf": 1}, "sqlglot.expressions.Window": {"tf": 1}, "sqlglot.expressions.WindowSpec": {"tf": 1}, "sqlglot.expressions.Where": {"tf": 1}, "sqlglot.expressions.Star": {"tf": 1}, "sqlglot.expressions.Star.output_name": {"tf": 1}, "sqlglot.expressions.Parameter": {"tf": 1}, "sqlglot.expressions.SessionParameter": {"tf": 1}, "sqlglot.expressions.Placeholder": {"tf": 1}, "sqlglot.expressions.Null": {"tf": 1}, "sqlglot.expressions.Boolean": {"tf": 1}, "sqlglot.expressions.DataType": {"tf": 1}, "sqlglot.expressions.DataType.Type": {"tf": 1}, "sqlglot.expressions.DataType.Type.CHAR": {"tf": 1}, "sqlglot.expressions.DataType.Type.NCHAR": {"tf": 1}, "sqlglot.expressions.DataType.Type.VARCHAR": {"tf": 1}, "sqlglot.expressions.DataType.Type.NVARCHAR": {"tf": 1}, "sqlglot.expressions.DataType.Type.TEXT": {"tf": 1}, "sqlglot.expressions.DataType.Type.MEDIUMTEXT": {"tf": 1}, "sqlglot.expressions.DataType.Type.LONGTEXT": {"tf": 1}, "sqlglot.expressions.DataType.Type.MEDIUMBLOB": {"tf": 1}, "sqlglot.expressions.DataType.Type.LONGBLOB": {"tf": 1}, "sqlglot.expressions.DataType.Type.BINARY": {"tf": 1}, "sqlglot.expressions.DataType.Type.VARBINARY": {"tf": 1}, "sqlglot.expressions.DataType.Type.INT": {"tf": 1}, "sqlglot.expressions.DataType.Type.UINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.TINYINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.UTINYINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.SMALLINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.USMALLINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.BIGINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.UBIGINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.FLOAT": {"tf": 1}, "sqlglot.expressions.DataType.Type.DOUBLE": {"tf": 1}, "sqlglot.expressions.DataType.Type.DECIMAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.BIT": {"tf": 1}, "sqlglot.expressions.DataType.Type.BOOLEAN": {"tf": 1}, "sqlglot.expressions.DataType.Type.JSON": {"tf": 1}, "sqlglot.expressions.DataType.Type.JSONB": {"tf": 1}, "sqlglot.expressions.DataType.Type.INTERVAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.TIME": {"tf": 1}, "sqlglot.expressions.DataType.Type.TIMESTAMP": {"tf": 1}, "sqlglot.expressions.DataType.Type.TIMESTAMPTZ": {"tf": 1}, "sqlglot.expressions.DataType.Type.TIMESTAMPLTZ": {"tf": 1}, "sqlglot.expressions.DataType.Type.DATE": {"tf": 1}, "sqlglot.expressions.DataType.Type.DATETIME": {"tf": 1}, "sqlglot.expressions.DataType.Type.ARRAY": {"tf": 1}, "sqlglot.expressions.DataType.Type.MAP": {"tf": 1}, "sqlglot.expressions.DataType.Type.UUID": {"tf": 1}, "sqlglot.expressions.DataType.Type.GEOGRAPHY": {"tf": 1}, "sqlglot.expressions.DataType.Type.GEOMETRY": {"tf": 1}, "sqlglot.expressions.DataType.Type.STRUCT": {"tf": 1}, "sqlglot.expressions.DataType.Type.NULLABLE": {"tf": 1}, "sqlglot.expressions.DataType.Type.HLLSKETCH": {"tf": 1}, "sqlglot.expressions.DataType.Type.HSTORE": {"tf": 1}, "sqlglot.expressions.DataType.Type.SUPER": {"tf": 1}, "sqlglot.expressions.DataType.Type.SERIAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.SMALLSERIAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.BIGSERIAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.XML": {"tf": 1}, "sqlglot.expressions.DataType.Type.UNIQUEIDENTIFIER": {"tf": 1}, "sqlglot.expressions.DataType.Type.MONEY": {"tf": 1}, "sqlglot.expressions.DataType.Type.SMALLMONEY": {"tf": 1}, "sqlglot.expressions.DataType.Type.ROWVERSION": {"tf": 1}, "sqlglot.expressions.DataType.Type.IMAGE": {"tf": 1}, "sqlglot.expressions.DataType.Type.VARIANT": {"tf": 1}, "sqlglot.expressions.DataType.Type.OBJECT": {"tf": 1}, "sqlglot.expressions.DataType.Type.INET": {"tf": 1}, "sqlglot.expressions.DataType.Type.NULL": {"tf": 1}, "sqlglot.expressions.DataType.Type.UNKNOWN": {"tf": 1}, "sqlglot.expressions.DataType.build": {"tf": 1}, "sqlglot.expressions.DataType.is_type": {"tf": 1}, "sqlglot.expressions.PseudoType": {"tf": 1}, "sqlglot.expressions.StructKwarg": {"tf": 1}, "sqlglot.expressions.SubqueryPredicate": {"tf": 1}, "sqlglot.expressions.All": {"tf": 1}, "sqlglot.expressions.Any": {"tf": 1}, "sqlglot.expressions.Exists": {"tf": 1}, "sqlglot.expressions.Command": {"tf": 1}, "sqlglot.expressions.Transaction": {"tf": 1}, "sqlglot.expressions.Commit": {"tf": 1}, "sqlglot.expressions.Rollback": {"tf": 1}, "sqlglot.expressions.AlterTable": {"tf": 1}, "sqlglot.expressions.AddConstraint": {"tf": 1}, "sqlglot.expressions.DropPartition": {"tf": 1}, "sqlglot.expressions.Binary": {"tf": 1}, "sqlglot.expressions.Add": {"tf": 1}, "sqlglot.expressions.Connector": {"tf": 1}, "sqlglot.expressions.And": {"tf": 1}, "sqlglot.expressions.Or": {"tf": 1}, "sqlglot.expressions.BitwiseAnd": {"tf": 1}, "sqlglot.expressions.BitwiseLeftShift": {"tf": 1}, "sqlglot.expressions.BitwiseOr": {"tf": 1}, "sqlglot.expressions.BitwiseRightShift": {"tf": 1}, "sqlglot.expressions.BitwiseXor": {"tf": 1}, "sqlglot.expressions.Div": {"tf": 1}, "sqlglot.expressions.Overlaps": {"tf": 1}, "sqlglot.expressions.Dot": {"tf": 1}, "sqlglot.expressions.Dot.build": {"tf": 1}, "sqlglot.expressions.DPipe": {"tf": 1}, "sqlglot.expressions.EQ": {"tf": 1}, "sqlglot.expressions.NullSafeEQ": {"tf": 1}, "sqlglot.expressions.NullSafeNEQ": {"tf": 1}, "sqlglot.expressions.Distance": {"tf": 1}, "sqlglot.expressions.Escape": {"tf": 1}, "sqlglot.expressions.Glob": {"tf": 1}, "sqlglot.expressions.GT": {"tf": 1}, "sqlglot.expressions.GTE": {"tf": 1}, "sqlglot.expressions.ILike": {"tf": 1}, "sqlglot.expressions.ILikeAny": {"tf": 1}, "sqlglot.expressions.IntDiv": {"tf": 1}, "sqlglot.expressions.Is": {"tf": 1}, "sqlglot.expressions.Kwarg": {"tf": 1}, "sqlglot.expressions.Like": {"tf": 1}, "sqlglot.expressions.LikeAny": {"tf": 1}, "sqlglot.expressions.LT": {"tf": 1}, "sqlglot.expressions.LTE": {"tf": 1}, "sqlglot.expressions.Mod": {"tf": 1}, "sqlglot.expressions.Mul": {"tf": 1}, "sqlglot.expressions.NEQ": {"tf": 1}, "sqlglot.expressions.SimilarTo": {"tf": 1}, "sqlglot.expressions.Slice": {"tf": 1}, "sqlglot.expressions.Sub": {"tf": 1}, "sqlglot.expressions.ArrayOverlaps": {"tf": 1}, "sqlglot.expressions.Unary": {"tf": 1}, "sqlglot.expressions.BitwiseNot": {"tf": 1}, "sqlglot.expressions.Not": {"tf": 1}, "sqlglot.expressions.Paren": {"tf": 1}, "sqlglot.expressions.Neg": {"tf": 1}, "sqlglot.expressions.Alias": {"tf": 1}, "sqlglot.expressions.Alias.output_name": {"tf": 1}, "sqlglot.expressions.Aliases": {"tf": 1}, "sqlglot.expressions.AtTimeZone": {"tf": 1}, "sqlglot.expressions.Between": {"tf": 1}, "sqlglot.expressions.Bracket": {"tf": 1}, "sqlglot.expressions.Distinct": {"tf": 1}, "sqlglot.expressions.In": {"tf": 1}, "sqlglot.expressions.TimeUnit": {"tf": 1}, "sqlglot.expressions.TimeUnit.__init__": {"tf": 1}, "sqlglot.expressions.Interval": {"tf": 1}, "sqlglot.expressions.IgnoreNulls": {"tf": 1}, "sqlglot.expressions.RespectNulls": {"tf": 1}, "sqlglot.expressions.Func": {"tf": 1}, "sqlglot.expressions.Func.from_arg_list": {"tf": 1}, "sqlglot.expressions.Func.sql_names": {"tf": 1}, "sqlglot.expressions.Func.sql_name": {"tf": 1}, "sqlglot.expressions.Func.default_parser_mappings": {"tf": 1}, "sqlglot.expressions.AggFunc": {"tf": 1}, "sqlglot.expressions.Abs": {"tf": 1}, "sqlglot.expressions.Anonymous": {"tf": 1}, "sqlglot.expressions.Hll": {"tf": 1}, "sqlglot.expressions.ApproxDistinct": {"tf": 1}, "sqlglot.expressions.Array": {"tf": 1}, "sqlglot.expressions.ToChar": {"tf": 1}, "sqlglot.expressions.GenerateSeries": {"tf": 1}, "sqlglot.expressions.ArrayAgg": {"tf": 1}, "sqlglot.expressions.ArrayAll": {"tf": 1}, "sqlglot.expressions.ArrayAny": {"tf": 1}, "sqlglot.expressions.ArrayConcat": {"tf": 1}, "sqlglot.expressions.ArrayContains": {"tf": 1}, "sqlglot.expressions.ArrayContained": {"tf": 1}, "sqlglot.expressions.ArrayFilter": {"tf": 1}, "sqlglot.expressions.ArrayJoin": {"tf": 1}, "sqlglot.expressions.ArraySize": {"tf": 1}, "sqlglot.expressions.ArraySort": {"tf": 1}, "sqlglot.expressions.ArraySum": {"tf": 1}, "sqlglot.expressions.ArrayUnionAgg": {"tf": 1}, "sqlglot.expressions.Avg": {"tf": 1}, "sqlglot.expressions.AnyValue": {"tf": 1}, "sqlglot.expressions.Case": {"tf": 1}, "sqlglot.expressions.Cast": {"tf": 1}, "sqlglot.expressions.Cast.output_name": {"tf": 1}, "sqlglot.expressions.Cast.is_type": {"tf": 1}, "sqlglot.expressions.Collate": {"tf": 1}, "sqlglot.expressions.TryCast": {"tf": 1}, "sqlglot.expressions.Ceil": {"tf": 1}, "sqlglot.expressions.Coalesce": {"tf": 1}, "sqlglot.expressions.Concat": {"tf": 1}, "sqlglot.expressions.ConcatWs": {"tf": 1}, "sqlglot.expressions.Count": {"tf": 1}, "sqlglot.expressions.CountIf": {"tf": 1}, "sqlglot.expressions.CurrentDate": {"tf": 1}, "sqlglot.expressions.CurrentDatetime": {"tf": 1}, "sqlglot.expressions.CurrentTime": {"tf": 1}, "sqlglot.expressions.CurrentTimestamp": {"tf": 1}, "sqlglot.expressions.DateAdd": {"tf": 1}, "sqlglot.expressions.DateSub": {"tf": 1}, "sqlglot.expressions.DateDiff": {"tf": 1}, "sqlglot.expressions.DateTrunc": {"tf": 1}, "sqlglot.expressions.DatetimeAdd": {"tf": 1}, "sqlglot.expressions.DatetimeSub": {"tf": 1}, "sqlglot.expressions.DatetimeDiff": {"tf": 1}, "sqlglot.expressions.DatetimeTrunc": {"tf": 1}, "sqlglot.expressions.DayOfWeek": {"tf": 1}, "sqlglot.expressions.DayOfMonth": {"tf": 1}, "sqlglot.expressions.DayOfYear": {"tf": 1}, "sqlglot.expressions.WeekOfYear": {"tf": 1}, "sqlglot.expressions.LastDateOfMonth": {"tf": 1}, "sqlglot.expressions.Extract": {"tf": 1}, "sqlglot.expressions.TimestampAdd": {"tf": 1}, "sqlglot.expressions.TimestampSub": {"tf": 1}, "sqlglot.expressions.TimestampDiff": {"tf": 1}, "sqlglot.expressions.TimestampTrunc": {"tf": 1}, "sqlglot.expressions.TimeAdd": {"tf": 1}, "sqlglot.expressions.TimeSub": {"tf": 1}, "sqlglot.expressions.TimeDiff": {"tf": 1}, "sqlglot.expressions.TimeTrunc": {"tf": 1}, "sqlglot.expressions.DateFromParts": {"tf": 1}, "sqlglot.expressions.DateStrToDate": {"tf": 1}, "sqlglot.expressions.DateToDateStr": {"tf": 1}, "sqlglot.expressions.DateToDi": {"tf": 1}, "sqlglot.expressions.Day": {"tf": 1}, "sqlglot.expressions.Decode": {"tf": 1}, "sqlglot.expressions.DiToDate": {"tf": 1}, "sqlglot.expressions.Encode": {"tf": 1}, "sqlglot.expressions.Exp": {"tf": 1}, "sqlglot.expressions.Explode": {"tf": 1}, "sqlglot.expressions.ExponentialTimeDecayedAvg": {"tf": 1}, "sqlglot.expressions.Floor": {"tf": 1}, "sqlglot.expressions.Greatest": {"tf": 1}, "sqlglot.expressions.GroupConcat": {"tf": 1}, "sqlglot.expressions.GroupUniqArray": {"tf": 1}, "sqlglot.expressions.Hex": {"tf": 1}, "sqlglot.expressions.Histogram": {"tf": 1}, "sqlglot.expressions.If": {"tf": 1}, "sqlglot.expressions.IfNull": {"tf": 1}, "sqlglot.expressions.Initcap": {"tf": 1}, "sqlglot.expressions.JSONKeyValue": {"tf": 1}, "sqlglot.expressions.JSONObject": {"tf": 1}, "sqlglot.expressions.JSONBContains": {"tf": 1}, "sqlglot.expressions.JSONExtract": {"tf": 1}, "sqlglot.expressions.JSONExtractScalar": {"tf": 1}, "sqlglot.expressions.JSONBExtract": {"tf": 1}, "sqlglot.expressions.JSONBExtractScalar": {"tf": 1}, "sqlglot.expressions.JSONFormat": {"tf": 1}, "sqlglot.expressions.Least": {"tf": 1}, "sqlglot.expressions.Length": {"tf": 1}, "sqlglot.expressions.Levenshtein": {"tf": 1}, "sqlglot.expressions.Ln": {"tf": 1}, "sqlglot.expressions.Log": {"tf": 1}, "sqlglot.expressions.Log2": {"tf": 1}, "sqlglot.expressions.Log10": {"tf": 1}, "sqlglot.expressions.LogicalOr": {"tf": 1}, "sqlglot.expressions.LogicalAnd": {"tf": 1}, "sqlglot.expressions.Lower": {"tf": 1}, "sqlglot.expressions.Map": {"tf": 1}, "sqlglot.expressions.VarMap": {"tf": 1}, "sqlglot.expressions.MatchAgainst": {"tf": 1}, "sqlglot.expressions.Max": {"tf": 1}, "sqlglot.expressions.Min": {"tf": 1}, "sqlglot.expressions.Month": {"tf": 1}, "sqlglot.expressions.Nvl2": {"tf": 1}, "sqlglot.expressions.Posexplode": {"tf": 1}, "sqlglot.expressions.Pow": {"tf": 1}, "sqlglot.expressions.PercentileCont": {"tf": 1}, "sqlglot.expressions.PercentileDisc": {"tf": 1}, "sqlglot.expressions.Quantile": {"tf": 1}, "sqlglot.expressions.Quantiles": {"tf": 1}, "sqlglot.expressions.QuantileIf": {"tf": 1}, "sqlglot.expressions.ApproxQuantile": {"tf": 1}, "sqlglot.expressions.RangeN": {"tf": 1}, "sqlglot.expressions.ReadCSV": {"tf": 1}, "sqlglot.expressions.Reduce": {"tf": 1}, "sqlglot.expressions.RegexpExtract": {"tf": 1}, "sqlglot.expressions.RegexpLike": {"tf": 1}, "sqlglot.expressions.RegexpILike": {"tf": 1}, "sqlglot.expressions.RegexpSplit": {"tf": 1}, "sqlglot.expressions.Repeat": {"tf": 1}, "sqlglot.expressions.Round": {"tf": 1}, "sqlglot.expressions.RowNumber": {"tf": 1}, "sqlglot.expressions.SafeDivide": {"tf": 1}, "sqlglot.expressions.SetAgg": {"tf": 1}, "sqlglot.expressions.SortArray": {"tf": 1}, "sqlglot.expressions.Split": {"tf": 1}, "sqlglot.expressions.Substring": {"tf": 1}, "sqlglot.expressions.StrPosition": {"tf": 1}, "sqlglot.expressions.StrToDate": {"tf": 1}, "sqlglot.expressions.StrToTime": {"tf": 1}, "sqlglot.expressions.StrToUnix": {"tf": 1}, "sqlglot.expressions.NumberToStr": {"tf": 1}, "sqlglot.expressions.Struct": {"tf": 1}, "sqlglot.expressions.StructExtract": {"tf": 1}, "sqlglot.expressions.Sum": {"tf": 1}, "sqlglot.expressions.Sqrt": {"tf": 1}, "sqlglot.expressions.Stddev": {"tf": 1}, "sqlglot.expressions.StddevPop": {"tf": 1}, "sqlglot.expressions.StddevSamp": {"tf": 1}, "sqlglot.expressions.TimeToStr": {"tf": 1}, "sqlglot.expressions.TimeToTimeStr": {"tf": 1}, "sqlglot.expressions.TimeToUnix": {"tf": 1}, "sqlglot.expressions.TimeStrToDate": {"tf": 1}, "sqlglot.expressions.TimeStrToTime": {"tf": 1}, "sqlglot.expressions.TimeStrToUnix": {"tf": 1}, "sqlglot.expressions.Trim": {"tf": 1}, "sqlglot.expressions.TsOrDsAdd": {"tf": 1}, "sqlglot.expressions.TsOrDsToDateStr": {"tf": 1}, "sqlglot.expressions.TsOrDsToDate": {"tf": 1}, "sqlglot.expressions.TsOrDiToDi": {"tf": 1}, "sqlglot.expressions.Unhex": {"tf": 1}, "sqlglot.expressions.UnixToStr": {"tf": 1}, "sqlglot.expressions.UnixToTime": {"tf": 1}, "sqlglot.expressions.UnixToTimeStr": {"tf": 1}, "sqlglot.expressions.Upper": {"tf": 1}, "sqlglot.expressions.Variance": {"tf": 1}, "sqlglot.expressions.VariancePop": {"tf": 1}, "sqlglot.expressions.Week": {"tf": 1}, "sqlglot.expressions.XMLTable": {"tf": 1}, "sqlglot.expressions.Year": {"tf": 1}, "sqlglot.expressions.Use": {"tf": 1}, "sqlglot.expressions.Merge": {"tf": 1}, "sqlglot.expressions.When": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1}, "sqlglot.expressions.union": {"tf": 1}, "sqlglot.expressions.intersect": {"tf": 1}, "sqlglot.expressions.except_": {"tf": 1}, "sqlglot.expressions.select": {"tf": 1}, "sqlglot.expressions.from_": {"tf": 1}, "sqlglot.expressions.update": {"tf": 1}, "sqlglot.expressions.delete": {"tf": 1}, "sqlglot.expressions.condition": {"tf": 1}, "sqlglot.expressions.and_": {"tf": 1}, "sqlglot.expressions.or_": {"tf": 1}, "sqlglot.expressions.not_": {"tf": 1}, "sqlglot.expressions.paren": {"tf": 1}, "sqlglot.expressions.to_identifier": {"tf": 1}, "sqlglot.expressions.to_interval": {"tf": 1}, "sqlglot.expressions.to_table": {"tf": 1}, "sqlglot.expressions.to_column": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1}, "sqlglot.expressions.subquery": {"tf": 1}, "sqlglot.expressions.column": {"tf": 1}, "sqlglot.expressions.cast": {"tf": 1}, "sqlglot.expressions.table_": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1}, "sqlglot.expressions.var": {"tf": 1}, "sqlglot.expressions.rename_table": {"tf": 1}, "sqlglot.expressions.convert": {"tf": 1}, "sqlglot.expressions.replace_children": {"tf": 1}, "sqlglot.expressions.column_table_names": {"tf": 1}, "sqlglot.expressions.table_name": {"tf": 1}, "sqlglot.expressions.replace_tables": {"tf": 1}, "sqlglot.expressions.replace_placeholders": {"tf": 1}, "sqlglot.expressions.expand": {"tf": 1}, "sqlglot.expressions.func": {"tf": 1}, "sqlglot.expressions.true": {"tf": 1}, "sqlglot.expressions.false": {"tf": 1}, "sqlglot.expressions.null": {"tf": 1}, "sqlglot.generator.Generator.expressions": {"tf": 1}, "sqlglot.generator.Generator.op_expressions": {"tf": 1}}, "df": 594}}}}}}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Explode": {"tf": 1}}, "df": 1}}}}, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.expressions.ExponentialTimeDecayedAvg": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.expand": {"tf": 1}, "sqlglot.optimizer.expand_laterals": {"tf": 1}, "sqlglot.optimizer.expand_laterals.expand_laterals": {"tf": 1.4142135623730951}, "sqlglot.optimizer.expand_multi_table_selects": {"tf": 1}, "sqlglot.optimizer.expand_multi_table_selects.expand_multi_table_selects": {"tf": 1.4142135623730951}}, "df": 5}}}}, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.dialect.arrow_json_extract_sql": {"tf": 1}, "sqlglot.dialects.dialect.arrow_json_extract_scalar_sql": {"tf": 1}, "sqlglot.dialects.dialect.struct_extract_sql": {"tf": 1}, "sqlglot.expressions.Extract": {"tf": 1}, "sqlglot.generator.Generator.extract_sql": {"tf": 1}, "sqlglot.optimizer.simplify.extract_date": {"tf": 1}, "sqlglot.optimizer.simplify.extract_interval": {"tf": 1}}, "df": 7}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.optimizer.scope.Scope.external_columns": {"tf": 1}}, "df": 1, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.ExternalProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.executor.execute": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.execute": {"tf": 1}, "sqlglot.tokens.TokenType.EXECUTE": {"tf": 1}}, "df": 3, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.errors.ExecuteError": {"tf": 1}}, "df": 1}}}}}, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.ExecuteAsProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.executor": {"tf": 1}, "sqlglot.executor.execute": {"tf": 1}, "sqlglot.executor.context": {"tf": 1}, "sqlglot.executor.context.Context": {"tf": 1}, "sqlglot.executor.context.Context.__init__": {"tf": 1}, "sqlglot.executor.context.Context.eval": {"tf": 1}, "sqlglot.executor.context.Context.eval_tuple": {"tf": 1}, "sqlglot.executor.context.Context.add_columns": {"tf": 1}, "sqlglot.executor.context.Context.table_iter": {"tf": 1}, "sqlglot.executor.context.Context.filter": {"tf": 1}, "sqlglot.executor.context.Context.sort": {"tf": 1}, "sqlglot.executor.context.Context.set_row": {"tf": 1}, "sqlglot.executor.context.Context.set_index": {"tf": 1}, "sqlglot.executor.context.Context.set_range": {"tf": 1}, "sqlglot.executor.env": {"tf": 1}, "sqlglot.executor.env.reverse_key": {"tf": 1}, "sqlglot.executor.env.reverse_key.__init__": {"tf": 1}, "sqlglot.executor.env.filter_nulls": {"tf": 1}, "sqlglot.executor.env.null_if_any": {"tf": 1}, "sqlglot.executor.env.str_position": {"tf": 1}, "sqlglot.executor.env.substring": {"tf": 1}, "sqlglot.executor.env.cast": {"tf": 1}, "sqlglot.executor.env.ordered": {"tf": 1}, "sqlglot.executor.env.interval": {"tf": 1}, "sqlglot.executor.python": {"tf": 1}, "sqlglot.executor.python.PythonExecutor": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.__init__": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.execute": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.generate": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.generate_tuple": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.context": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.table": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.scan": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.static": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.scan_table": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.scan_csv": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.join": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.nested_loop_join": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.hash_join": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.aggregate": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.sort": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.set_operation": {"tf": 1}, "sqlglot.executor.python.Python": {"tf": 1}, "sqlglot.executor.python.Python.Tokenizer": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.executor.table": {"tf": 1}, "sqlglot.executor.table.Table": {"tf": 1}, "sqlglot.executor.table.Table.__init__": {"tf": 1}, "sqlglot.executor.table.Table.add_columns": {"tf": 1}, "sqlglot.executor.table.Table.append": {"tf": 1}, "sqlglot.executor.table.Table.pop": {"tf": 1}, "sqlglot.executor.table.TableIter": {"tf": 1}, "sqlglot.executor.table.TableIter.__init__": {"tf": 1}, "sqlglot.executor.table.RangeReader": {"tf": 1}, "sqlglot.executor.table.RangeReader.__init__": {"tf": 1}, "sqlglot.executor.table.RowReader": {"tf": 1}, "sqlglot.executor.table.RowReader.__init__": {"tf": 1}, "sqlglot.executor.table.Tables": {"tf": 1}, "sqlglot.executor.table.ensure_tables": {"tf": 1}}, "df": 59}}}}}}, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.Exists": {"tf": 1}, "sqlglot.generator.Generator.exists_sql": {"tf": 1}, "sqlglot.tokens.TokenType.EXISTS": {"tf": 1}}, "df": 3}}}}}, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.Column.ensure_col": {"tf": 1}, "sqlglot.dataframe.sql.Column.ensure_cols": {"tf": 1}, "sqlglot.dataframe.sql.Column.ensure_literal": {"tf": 1}, "sqlglot.executor.table.ensure_tables": {"tf": 1}, "sqlglot.helper.ensure_list": {"tf": 1}, "sqlglot.helper.ensure_collection": {"tf": 1}, "sqlglot.optimizer.canonicalize.ensure_bool_predicates": {"tf": 1}, "sqlglot.schema.ensure_schema": {"tf": 1}, "sqlglot.schema.ensure_column_mapping": {"tf": 1}}, "df": 9}}}}, "d": {"docs": {"sqlglot.tokens.TokenType.BLOCK_END": {"tf": 1}, "sqlglot.tokens.TokenType.END": {"tf": 1}}, "df": 2, "s": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.dataframe.sql.Column.endswith": {"tf": 1}}, "df": 1}}}}}}, "v": {"docs": {"sqlglot.executor.env": {"tf": 1}, "sqlglot.executor.env.reverse_key": {"tf": 1}, "sqlglot.executor.env.reverse_key.__init__": {"tf": 1}, "sqlglot.executor.env.filter_nulls": {"tf": 1}, "sqlglot.executor.env.null_if_any": {"tf": 1}, "sqlglot.executor.env.str_position": {"tf": 1}, "sqlglot.executor.env.substring": {"tf": 1}, "sqlglot.executor.env.cast": {"tf": 1}, "sqlglot.executor.env.ordered": {"tf": 1}, "sqlglot.executor.env.interval": {"tf": 1}}, "df": 10}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Encode": {"tf": 1}}, "df": 1, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.EncodeColumnConstraint": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}, "g": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.EngineProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}}}, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.Expression.error_messages": {"tf": 1}, "sqlglot.parser.Parser.raise_error": {"tf": 1}}, "df": 2, "s": {"docs": {"sqlglot.errors": {"tf": 1}, "sqlglot.errors.ErrorLevel": {"tf": 1}, "sqlglot.errors.ErrorLevel.IGNORE": {"tf": 1}, "sqlglot.errors.ErrorLevel.WARN": {"tf": 1}, "sqlglot.errors.ErrorLevel.RAISE": {"tf": 1}, "sqlglot.errors.ErrorLevel.IMMEDIATE": {"tf": 1}, "sqlglot.errors.SqlglotError": {"tf": 1}, "sqlglot.errors.UnsupportedError": {"tf": 1}, "sqlglot.errors.ParseError": {"tf": 1}, "sqlglot.errors.ParseError.__init__": {"tf": 1}, "sqlglot.errors.ParseError.new": {"tf": 1}, "sqlglot.errors.TokenError": {"tf": 1}, "sqlglot.errors.OptimizeError": {"tf": 1}, "sqlglot.errors.SchemaError": {"tf": 1}, "sqlglot.errors.ExecuteError": {"tf": 1}, "sqlglot.errors.concat_messages": {"tf": 1}, "sqlglot.errors.merge_errors": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser.check_errors": {"tf": 1}}, "df": 18}, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.errors.ErrorLevel": {"tf": 1}, "sqlglot.errors.ErrorLevel.IGNORE": {"tf": 1}, "sqlglot.errors.ErrorLevel.WARN": {"tf": 1}, "sqlglot.errors.ErrorLevel.RAISE": {"tf": 1}, "sqlglot.errors.ErrorLevel.IMMEDIATE": {"tf": 1}}, "df": 5}}}}}}}}}, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.executor.context.Context.eval": {"tf": 1}, "sqlglot.executor.context.Context.eval_tuple": {"tf": 1}, "sqlglot.optimizer.simplify.eval_boolean": {"tf": 1}}, "df": 3}}}, "q": {"docs": {"sqlglot.expressions.EQ": {"tf": 1}, "sqlglot.generator.Generator.eq_sql": {"tf": 1}, "sqlglot.tokens.TokenType.EQ": {"tf": 1}, "sqlglot.tokens.TokenType.NULLSAFE_EQ": {"tf": 1}}, "df": 4}, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Escape": {"tf": 1}, "sqlglot.generator.Generator.escape_sql": {"tf": 1}, "sqlglot.tokens.TokenType.ESCAPE": {"tf": 1}}, "df": 3}}}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.eliminate_ctes": {"tf": 1}, "sqlglot.optimizer.eliminate_ctes.eliminate_ctes": {"tf": 1.4142135623730951}, "sqlglot.optimizer.eliminate_joins": {"tf": 1}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 1.4142135623730951}, "sqlglot.optimizer.eliminate_joins.join_condition": {"tf": 1}, "sqlglot.optimizer.eliminate_subqueries": {"tf": 1}, "sqlglot.optimizer.eliminate_subqueries.eliminate_subqueries": {"tf": 1.4142135623730951}, "sqlglot.optimizer.simplify.absorb_and_eliminate": {"tf": 1}, "sqlglot.transforms.eliminate_distinct_on": {"tf": 1}, "sqlglot.transforms.eliminate_qualify": {"tf": 1}}, "df": 10}}}}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.ELSE": {"tf": 1}}, "df": 1}}}}, "r": {"docs": {"sqlglot.tokens.TokenType.R_PAREN": {"tf": 1}, "sqlglot.tokens.TokenType.R_BRACKET": {"tf": 1}, "sqlglot.tokens.TokenType.R_BRACE": {"tf": 1}}, "df": 3, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.DataFrame.replace": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.replace": {"tf": 1}, "sqlglot.expressions.Expression.replace": {"tf": 1}, "sqlglot.expressions.replace_children": {"tf": 1}, "sqlglot.expressions.replace_tables": {"tf": 1}, "sqlglot.expressions.replace_placeholders": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.replace_aliases": {"tf": 1}, "sqlglot.optimizer.scope.Scope.replace": {"tf": 1}, "sqlglot.tokens.TokenType.REPLACE": {"tf": 1}}, "df": 9}}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dataframe.sql.DataFrame.repartition": {"tf": 1}}, "df": 1}}}}}}}}, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.Repeat": {"tf": 1}}, "df": 1}}}}, "d": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.dialect.Dialects.REDSHIFT": {"tf": 1}, "sqlglot.dialects.redshift": {"tf": 1}, "sqlglot.dialects.redshift.Redshift": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Tokenizer": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator.with_properties": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator.renametable_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1.4142135623730951}}, "df": 10}}}}}, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Reduce": {"tf": 1}}, "df": 1}}, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.optimizer.canonicalize.remove_redundant_casts": {"tf": 1}}, "df": 1}}}}}}}, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.rename_func": {"tf": 1}, "sqlglot.expressions.rename_table": {"tf": 1}, "sqlglot.optimizer.scope.Scope.rename_source": {"tf": 1}}, "df": 3, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.redshift.Redshift.Generator.renametable_sql": {"tf": 1}, "sqlglot.expressions.RenameTable": {"tf": 1}, "sqlglot.generator.Generator.renametable_sql": {"tf": 1}}, "df": 3}}}}}}}}}, "c": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.no_recursive_cte_sql": {"tf": 1}, "sqlglot.tokens.TokenType.RECURSIVE": {"tf": 1}}, "df": 2}}}}}}, "o": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.MATCH_RECOGNIZE": {"tf": 1}}, "df": 1}}}}}}}, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.Return": {"tf": 1}, "sqlglot.generator.Generator.return_sql": {"tf": 1}}, "df": 2, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dialects.tsql.TSQL.Generator.returnsproperty_sql": {"tf": 1}, "sqlglot.expressions.ReturnsProperty": {"tf": 1}}, "df": 2}}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.expressions.Delete.returning": {"tf": 1}, "sqlglot.expressions.Returning": {"tf": 1}, "sqlglot.generator.Generator.returning_sql": {"tf": 1}, "sqlglot.tokens.TokenType.RETURNING": {"tf": 1}}, "df": 4}}}}}}}, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff.Remove": {"tf": 1}, "sqlglot.diff.Remove.__init__": {"tf": 1}, "sqlglot.optimizer.canonicalize.remove_redundant_casts": {"tf": 1}, "sqlglot.optimizer.scope.Scope.remove_source": {"tf": 1}, "sqlglot.optimizer.simplify.remove_compliments": {"tf": 1}, "sqlglot.optimizer.simplify.remove_where_true": {"tf": 1}, "sqlglot.transforms.remove_precision_parameterized_types": {"tf": 1}}, "df": 7}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.executor.env.reverse_key": {"tf": 1}, "sqlglot.executor.env.reverse_key.__init__": {"tf": 1}}, "df": 2}}}}}, "f": {"docs": {"sqlglot.optimizer.scope.Scope.ref_count": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Reference": {"tf": 1}, "sqlglot.generator.Generator.reference_sql": {"tf": 1}}, "df": 2, "s": {"docs": {"sqlglot.tokens.TokenType.REFERENCES": {"tf": 1}}, "df": 1}}}}}}}}, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.RESPECT_NULLS": {"tf": 1}}, "df": 1, "n": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.RespectNulls": {"tf": 1}, "sqlglot.generator.Generator.respectnulls_sql": {"tf": 1}}, "df": 2}}}}}}}}}, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.optimizer.qualify_columns.Resolver": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.__init__": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.get_table": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.all_columns": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.get_source_columns": {"tf": 1}}, "df": 5}}}}}, "e": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.parser.Parser.reset": {"tf": 1}, "sqlglot.tokens.Tokenizer.reset": {"tf": 1}}, "df": 2}}}, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "v": {"docs": {"sqlglot.expressions.ReadCSV": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.helper.csv_reader": {"tf": 1}}, "df": 1}}}}, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.RegexpExtract": {"tf": 1}}, "df": 1}}}}}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.RegexpLike": {"tf": 1}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.RegexpILike": {"tf": 1}}, "df": 1}}}}}, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.RegexpSplit": {"tf": 1}}, "df": 1}}}}}}}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.optimizer.optimize_joins.reorder_joins": {"tf": 1}}, "df": 1}}}}}, "w": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.simplify.rewrite_between": {"tf": 1}}, "df": 1}}}}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.Column.rlike": {"tf": 1}, "sqlglot.tokens.TokenType.RLIKE": {"tf": 1}}, "df": 2}}}}, "o": {"docs": {}, "df": 0, "w": {"docs": {"sqlglot.executor.context.Context.set_row": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_ROW": {"tf": 1}, "sqlglot.tokens.TokenType.ROW": {"tf": 1}}, "df": 3, "s": {"docs": {"sqlglot.tokens.TokenType.ROWS": {"tf": 1}}, "df": 1, "b": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dataframe.sql.Window.rowsBetween": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.rowsBetween": {"tf": 1}}, "df": 2}}}}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.executor.table.RowReader": {"tf": 1}, "sqlglot.executor.table.RowReader.__init__": {"tf": 1}}, "df": 2}}}}}}, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.RowFormatDelimitedProperty": {"tf": 1}, "sqlglot.generator.Generator.rowformatdelimitedproperty_sql": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.RowFormatSerdeProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.DataType.Type.ROWVERSION": {"tf": 1}, "sqlglot.tokens.TokenType.ROWVERSION": {"tf": 1}}, "df": 2}}}}}}}, "n": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.RowNumber": {"tf": 1}}, "df": 1}}}}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator.rollback_sql": {"tf": 1}, "sqlglot.expressions.Rollback": {"tf": 1}, "sqlglot.generator.Generator.rollback_sql": {"tf": 1}, "sqlglot.tokens.TokenType.ROLLBACK": {"tf": 1}}, "df": 4}}}}, "u": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.tokens.TokenType.ROLLUP": {"tf": 1}}, "df": 1}}}}, "o": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.Expression.root": {"tf": 1}, "sqlglot.generator.Generator.root_properties": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.ROOT": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_root": {"tf": 1}}, "df": 4}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.Round": {"tf": 1}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.executor.context.Context.set_range": {"tf": 1}, "sqlglot.parser.binary_range_parser": {"tf": 1}, "sqlglot.tokens.TokenType.RANGE": {"tf": 1}}, "df": 3, "b": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dataframe.sql.Window.rangeBetween": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.rangeBetween": {"tf": 1}}, "df": 2}}}}}}}, "n": {"docs": {"sqlglot.dialects.teradata.Teradata.Generator.rangen_sql": {"tf": 1}, "sqlglot.expressions.RangeN": {"tf": 1}}, "df": 2}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.executor.table.RangeReader": {"tf": 1}, "sqlglot.executor.table.RangeReader.__init__": {"tf": 1}}, "df": 2}}}}}}}}}, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.Dialect.get_or_raise": {"tf": 1}, "sqlglot.errors.ErrorLevel.RAISE": {"tf": 1}, "sqlglot.parser.Parser.raise_error": {"tf": 1}}, "df": 3}}}}, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.RIGHT": {"tf": 1}}, "df": 1}}}}}, "l": {"docs": {"sqlglot.tokens.TokenType.L_PAREN": {"tf": 1}, "sqlglot.tokens.TokenType.L_BRACKET": {"tf": 1}, "sqlglot.tokens.TokenType.L_BRACE": {"tf": 1}}, "df": 3, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe.sql.DataFrame.limit": {"tf": 1}, "sqlglot.expressions.Limit": {"tf": 1}, "sqlglot.expressions.Subqueryable.limit": {"tf": 1}, "sqlglot.expressions.Union.limit": {"tf": 1}, "sqlglot.expressions.Select.limit": {"tf": 1}, "sqlglot.generator.Generator.limit_sql": {"tf": 1}, "sqlglot.tokens.TokenType.LIMIT": {"tf": 1}}, "df": 7}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.dataframe.sql.Column.ensure_literal": {"tf": 1}, "sqlglot.expressions.Literal": {"tf": 1}, "sqlglot.expressions.Literal.number": {"tf": 1}, "sqlglot.expressions.Literal.string": {"tf": 1}, "sqlglot.expressions.Literal.output_name": {"tf": 1}, "sqlglot.generator.Generator.literal_sql": {"tf": 1}, "sqlglot.optimizer.simplify.date_literal": {"tf": 1}, "sqlglot.optimizer.simplify.boolean_literal": {"tf": 1}}, "df": 8, "s": {"docs": {"sqlglot.optimizer.simplify.simplify_literals": {"tf": 1}}, "df": 1}}}}}}, "k": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.Column.like": {"tf": 1}, "sqlglot.expressions.Like": {"tf": 1}, "sqlglot.generator.Generator.like_sql": {"tf": 1}, "sqlglot.parser.parse_like": {"tf": 1}, "sqlglot.tokens.TokenType.LIKE": {"tf": 1}, "sqlglot.tokens.TokenType.LIKE_ANY": {"tf": 1}}, "df": 6, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.LikeProperty": {"tf": 1}, "sqlglot.generator.Generator.likeproperty_sql": {"tf": 1}}, "df": 2}}}}}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.LikeAny": {"tf": 1}, "sqlglot.generator.Generator.likeany_sql": {"tf": 1}}, "df": 2}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.Func.from_arg_list": {"tf": 1}, "sqlglot.helper.ensure_list": {"tf": 1}}, "df": 2}}, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.lineage": {"tf": 1}, "sqlglot.lineage.Node": {"tf": 1}, "sqlglot.lineage.Node.__init__": {"tf": 1}, "sqlglot.lineage.Node.walk": {"tf": 1}, "sqlglot.lineage.Node.to_html": {"tf": 1}, "sqlglot.lineage.lineage": {"tf": 1.4142135623730951}, "sqlglot.lineage.LineageHTML": {"tf": 1}, "sqlglot.lineage.LineageHTML.__init__": {"tf": 1}}, "df": 8, "h": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.lineage.LineageHTML": {"tf": 1}, "sqlglot.lineage.LineageHTML.__init__": {"tf": 1}}, "df": 2}}}}}}}}}}, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe.sql.Column.asc_nulls_last": {"tf": 1}, "sqlglot.dataframe.sql.Column.desc_nulls_last": {"tf": 1}, "sqlglot.tokens.TokenType.NULLS_LAST": {"tf": 1}}, "df": 3, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.expressions.LastDateOfMonth": {"tf": 1}}, "df": 1}}}}}}}}}}}}}, "m": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.dialects.dialect.format_time_lambda": {"tf": 1}, "sqlglot.expressions.Lambda": {"tf": 1}, "sqlglot.generator.Generator.lambda_sql": {"tf": 1}}, "df": 3}}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.expressions.Lateral": {"tf": 1}, "sqlglot.expressions.Select.lateral": {"tf": 1}, "sqlglot.generator.Generator.lateral_sql": {"tf": 1}, "sqlglot.tokens.TokenType.LATERAL": {"tf": 1}}, "df": 4, "s": {"docs": {"sqlglot.optimizer.expand_laterals": {"tf": 1}, "sqlglot.optimizer.expand_laterals.expand_laterals": {"tf": 1.4142135623730951}}, "df": 2}}}}}}, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.LANGUAGE": {"tf": 1}}, "df": 1, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.LanguageProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "w": {"docs": {"sqlglot.optimizer.normalize.distributive_law": {"tf": 1}}, "df": 1}, "z": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.tokens.TokenType.LAZY": {"tf": 1}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.locate_to_strposition": {"tf": 1}, "sqlglot.dialects.dialect.strposition_to_locate_sql": {"tf": 1}, "sqlglot.generator.Generator.locate_properties": {"tf": 1}}, "df": 3}, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.Properties.Location": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_CREATE": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_NAME": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_SCHEMA": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_WITH": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_ALIAS": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_EXPRESSION": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_INDEX": {"tf": 1}, "sqlglot.expressions.Properties.Location.UNSUPPORTED": {"tf": 1}}, "df": 9, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.LocationProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "l": {"docs": {"sqlglot.tokens.TokenType.LOCAL": {"tf": 1}, "sqlglot.tokens.TokenType.WITH_LOCAL_TIME_ZONE": {"tf": 1}}, "df": 2}}, "k": {"docs": {"sqlglot.expressions.Lock": {"tf": 1}, "sqlglot.expressions.Select.lock": {"tf": 1}, "sqlglot.generator.Generator.lock_sql": {"tf": 1}}, "df": 3, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.LockingProperty": {"tf": 1}, "sqlglot.generator.Generator.lockingproperty_sql": {"tf": 1}}, "df": 2}}}}}}}}}}}}}, "o": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.executor.python.PythonExecutor.nested_loop_join": {"tf": 1}}, "df": 1}}, "a": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.Expression.load": {"tf": 1}, "sqlglot.serde.load": {"tf": 1}, "sqlglot.tokens.TokenType.LOAD_DATA": {"tf": 1}}, "df": 3, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.expressions.LoadData": {"tf": 1}, "sqlglot.generator.Generator.loaddata_sql": {"tf": 1}}, "df": 2}}}}}}, "g": {"1": {"0": {"docs": {"sqlglot.expressions.Log10": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "2": {"docs": {"sqlglot.expressions.Log2": {"tf": 1}}, "df": 1}, "docs": {"sqlglot.expressions.Log": {"tf": 1}}, "df": 1, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.LogProperty": {"tf": 1}}, "df": 1}}}}}}}}, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.LogicalOr": {"tf": 1}}, "df": 1}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.LogicalAnd": {"tf": 1}}, "df": 1}}}}}}}}, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.DataType.Type.LONGTEXT": {"tf": 1}, "sqlglot.tokens.TokenType.LONGTEXT": {"tf": 1}}, "df": 2}}}}, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "b": {"docs": {"sqlglot.expressions.DataType.Type.LONGBLOB": {"tf": 1}, "sqlglot.tokens.TokenType.LONGBLOB": {"tf": 1}}, "df": 2}}}}}}, "w": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.Lower": {"tf": 1}, "sqlglot.optimizer.lower_identities": {"tf": 1}, "sqlglot.optimizer.lower_identities.lower_identities": {"tf": 1.4142135623730951}}, "df": 3}}}}, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.dialect.min_or_least": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.least_sql": {"tf": 1}, "sqlglot.expressions.Least": {"tf": 1}}, "df": 3}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.tokens.TokenType.LEADING": {"tf": 1}}, "df": 1}}}}}, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.expressions.Length": {"tf": 1}}, "df": 1}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.Levenshtein": {"tf": 1}}, "df": 1}}}}}}}}}, "f": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.LEFT": {"tf": 1}}, "df": 1}}}, "t": {"docs": {"sqlglot.expressions.LT": {"tf": 1}, "sqlglot.generator.Generator.lt_sql": {"tf": 1}, "sqlglot.tokens.TokenType.LT": {"tf": 1}, "sqlglot.tokens.TokenType.LT_AT": {"tf": 1}}, "df": 4, "e": {"docs": {"sqlglot.expressions.LTE": {"tf": 1}, "sqlglot.generator.Generator.lte_sql": {"tf": 1}, "sqlglot.tokens.TokenType.LTE": {"tf": 1}}, "df": 3}}, "n": {"docs": {"sqlglot.expressions.Ln": {"tf": 1}}, "df": 1}, "r": {"docs": {"sqlglot.tokens.TokenType.LR_ARROW": {"tf": 1}}, "df": 1}}, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe.sql.DataFrame.hint": {"tf": 1}, "sqlglot.expressions.Hint": {"tf": 1}, "sqlglot.generator.Generator.hint_sql": {"tf": 1}, "sqlglot.tokens.TokenType.HINT": {"tf": 1}}, "df": 4, "s": {"docs": {"sqlglot.optimizer.scope.Scope.join_hints": {"tf": 1}}, "df": 1}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.Dialects.HIVE": {"tf": 1}, "sqlglot.dialects.hive": {"tf": 1}, "sqlglot.dialects.hive.Hive": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Tokenizer": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Generator.arrayagg_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Generator.with_properties": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Generator.datatype_sql": {"tf": 1.4142135623730951}}, "df": 9}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {"sqlglot.expressions.Histogram": {"tf": 1}}, "df": 1}}}}}}}}, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.executor.python.PythonExecutor.hash_join": {"tf": 1}, "sqlglot.tokens.TokenType.HASH": {"tf": 1}, "sqlglot.tokens.TokenType.HASH_ARROW": {"tf": 1}}, "df": 3}}, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.expressions.Having": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1}, "sqlglot.generator.Generator.having_sql": {"tf": 1}, "sqlglot.tokens.TokenType.HAVING": {"tf": 1}}, "df": 4}}}}}, "e": {"docs": {}, "df": 0, "x": {"docs": {"sqlglot.expressions.Hex": {"tf": 1}, "sqlglot.tokens.TokenType.HEX_STRING": {"tf": 1}}, "df": 2, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.expressions.HexString": {"tf": 1}, "sqlglot.generator.Generator.hexstring_sql": {"tf": 1}}, "df": 2}}}}}}}, "l": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.helper": {"tf": 1}, "sqlglot.helper.AutoName": {"tf": 1}, "sqlglot.helper.seq_get": {"tf": 1}, "sqlglot.helper.ensure_list": {"tf": 1}, "sqlglot.helper.ensure_collection": {"tf": 1}, "sqlglot.helper.csv": {"tf": 1}, "sqlglot.helper.subclasses": {"tf": 1}, "sqlglot.helper.apply_index_offset": {"tf": 1}, "sqlglot.helper.camel_to_snake_case": {"tf": 1}, "sqlglot.helper.while_changing": {"tf": 1}, "sqlglot.helper.tsort": {"tf": 1}, "sqlglot.helper.open_file": {"tf": 1}, "sqlglot.helper.csv_reader": {"tf": 1}, "sqlglot.helper.find_new_name": {"tf": 1}, "sqlglot.helper.object_to_dict": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1}, "sqlglot.helper.is_iterable": {"tf": 1}, "sqlglot.helper.flatten": {"tf": 1}, "sqlglot.helper.count_params": {"tf": 1}, "sqlglot.helper.dict_depth": {"tf": 1}, "sqlglot.helper.first": {"tf": 1}, "sqlglot.helper.should_identify": {"tf": 1}}, "df": 22}}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.expressions.Hll": {"tf": 1}}, "df": 1, "s": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.expressions.DataType.Type.HLLSKETCH": {"tf": 1}, "sqlglot.tokens.TokenType.HLLSKETCH": {"tf": 1}}, "df": 2}}}}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.DataType.Type.HSTORE": {"tf": 1}, "sqlglot.tokens.TokenType.HSTORE": {"tf": 1}}, "df": 2}}}}}, "t": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.lineage.Node.to_html": {"tf": 1}}, "df": 1}}}}, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dataframe.sql.GroupedData.mean": {"tf": 1}}, "df": 1}}, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.errors.concat_messages": {"tf": 1}, "sqlglot.expressions.Expression.error_messages": {"tf": 1}}, "df": 2}}}}}}, "r": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.errors.merge_errors": {"tf": 1}, "sqlglot.expressions.Merge": {"tf": 1}, "sqlglot.generator.Generator.merge_sql": {"tf": 1}, "sqlglot.optimizer.merge_subqueries": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1.4142135623730951}, "sqlglot.optimizer.merge_subqueries.merge_ctes": {"tf": 1.4142135623730951}, "sqlglot.optimizer.merge_subqueries.merge_derived_tables": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.MERGE": {"tf": 1}}, "df": 8, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.MergeBlockRatioProperty": {"tf": 1}, "sqlglot.generator.Generator.mergeblockratioproperty_sql": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}}}}}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.DataType.Type.MEDIUMTEXT": {"tf": 1}, "sqlglot.tokens.TokenType.MEDIUMTEXT": {"tf": 1}}, "df": 2}}}}, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "b": {"docs": {"sqlglot.expressions.DataType.Type.MEDIUMBLOB": {"tf": 1}, "sqlglot.tokens.TokenType.MEDIUMBLOB": {"tf": 1}}, "df": 2}}}}}}}}}, "a": {"docs": {}, "df": 0, "x": {"docs": {"sqlglot.dataframe.sql.GroupedData.max": {"tf": 1}, "sqlglot.dialects.dialect.max_or_greatest": {"tf": 1}, "sqlglot.expressions.Max": {"tf": 1}}, "df": 3}, "p": {"docs": {"sqlglot.dialects.dialect.var_map_sql": {"tf": 1}, "sqlglot.expressions.DataType.Type.MAP": {"tf": 1}, "sqlglot.expressions.Map": {"tf": 1}, "sqlglot.parser.parse_var_map": {"tf": 1}, "sqlglot.tokens.TokenType.MAP": {"tf": 1}}, "df": 5, "p": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.schema.MappingSchema.from_mapping_schema": {"tf": 1}, "sqlglot.schema.ensure_column_mapping": {"tf": 1}}, "df": 2, "s": {"docs": {"sqlglot.expressions.Func.default_parser_mappings": {"tf": 1}}, "df": 1, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.schema.MappingSchema": {"tf": 1}, "sqlglot.schema.MappingSchema.__init__": {"tf": 1}, "sqlglot.schema.MappingSchema.from_mapping_schema": {"tf": 1}, "sqlglot.schema.MappingSchema.copy": {"tf": 1}, "sqlglot.schema.MappingSchema.add_table": {"tf": 1}, "sqlglot.schema.MappingSchema.column_names": {"tf": 1}, "sqlglot.schema.MappingSchema.get_column_type": {"tf": 1}}, "df": 7}}}}}}}}}}}, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.tokens.TokenType.MATCH_RECOGNIZE": {"tf": 1}}, "df": 1, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.MatchRecognize": {"tf": 1}, "sqlglot.generator.Generator.matchrecognize_sql": {"tf": 1}}, "df": 2}}}}}}}}}, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.MatchAgainst": {"tf": 1}, "sqlglot.generator.Generator.matchagainst_sql": {"tf": 1}}, "df": 2}}}}}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.tokens.TokenType.MATERIALIZED": {"tf": 1}}, "df": 1, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.MaterializedProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}, "y": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.maybe_parse": {"tf": 1}, "sqlglot.generator.Generator.maybe_comment": {"tf": 1}}, "df": 2}}}, "r": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.tokens.TokenType.JOIN_MARKER": {"tf": 1}}, "df": 1}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dataframe.sql.GroupedData.min": {"tf": 1}, "sqlglot.dialects.dialect.min_or_least": {"tf": 1}, "sqlglot.expressions.Min": {"tf": 1}}, "df": 3}}, "o": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.dialects.teradata.Teradata.Generator.mod_sql": {"tf": 1}, "sqlglot.expressions.Mod": {"tf": 1}, "sqlglot.generator.Generator.mod_sql": {"tf": 1}, "sqlglot.tokens.TokenType.MOD": {"tf": 1}}, "df": 4, "e": {"docs": {"sqlglot.dataframe.sql.DataFrameWriter.mode": {"tf": 1}}, "df": 1}, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.generator.Generator.query_modifiers": {"tf": 1}}, "df": 1}}}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff.Move": {"tf": 1}, "sqlglot.diff.Move.__init__": {"tf": 1}}, "df": 2}}, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.DataType.Type.MONEY": {"tf": 1}, "sqlglot.tokens.TokenType.MONEY": {"tf": 1}}, "df": 2}}, "t": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.expressions.Month": {"tf": 1}}, "df": 1}}}}, "y": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.dialects.dialect.Dialects.MYSQL": {"tf": 1}, "sqlglot.dialects.mysql": {"tf": 1}, "sqlglot.dialects.mysql.MySQL": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Tokenizer": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Generator.show_sql": {"tf": 1.4142135623730951}}, "df": 7}}}}, "u": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.expressions.Mul": {"tf": 1}, "sqlglot.generator.Generator.mul_sql": {"tf": 1}}, "df": 2, "t": {"docs": {}, "df": 0, "i": {"docs": {"sqlglot.optimizer.expand_multi_table_selects": {"tf": 1}, "sqlglot.optimizer.expand_multi_table_selects.expand_multi_table_selects": {"tf": 1.4142135623730951}}, "df": 2}}}}}, "b": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dataframe.sql.Column.binary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.inverse_binary_op": {"tf": 1}, "sqlglot.expressions.DataType.Type.BINARY": {"tf": 1}, "sqlglot.expressions.Binary": {"tf": 1}, "sqlglot.generator.Generator.binary": {"tf": 1}, "sqlglot.parser.binary_range_parser": {"tf": 1}, "sqlglot.tokens.TokenType.BINARY": {"tf": 1}}, "df": 7}}}}, "g": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dialects.bigquery": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery": {"tf": 1.4142135623730951}, "sqlglot.dialects.bigquery.BigQuery.Tokenizer": {"tf": 1.4142135623730951}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.bigquery.BigQuery.Generator.array_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.bigquery.BigQuery.Generator.transaction_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.bigquery.BigQuery.Generator.commit_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.bigquery.BigQuery.Generator.rollback_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.bigquery.BigQuery.Generator.in_unnest_op": {"tf": 1.4142135623730951}, "sqlglot.dialects.bigquery.BigQuery.Generator.except_op": {"tf": 1.4142135623730951}, "sqlglot.dialects.bigquery.BigQuery.Generator.intersect_op": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.BIGQUERY": {"tf": 1}}, "df": 13}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.DataType.Type.BIGINT": {"tf": 1}, "sqlglot.tokens.TokenType.BIGINT": {"tf": 1}}, "df": 2}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.expressions.DataType.Type.BIGSERIAL": {"tf": 1}, "sqlglot.tokens.TokenType.BIGSERIAL": {"tf": 1}}, "df": 2}}}}}}}, "t": {"docs": {"sqlglot.expressions.DataType.Type.BIT": {"tf": 1}, "sqlglot.tokens.TokenType.BIT_STRING": {"tf": 1}, "sqlglot.tokens.TokenType.BIT": {"tf": 1}}, "df": 3, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.expressions.BitString": {"tf": 1}, "sqlglot.generator.Generator.bitstring_sql": {"tf": 1}}, "df": 2}}}}}}, "w": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.BitwiseAnd": {"tf": 1}, "sqlglot.generator.Generator.bitwiseand_sql": {"tf": 1}}, "df": 2}}}, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.BitwiseLeftShift": {"tf": 1}, "sqlglot.generator.Generator.bitwiseleftshift_sql": {"tf": 1}}, "df": 2}}}}}}}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.BitwiseOr": {"tf": 1}, "sqlglot.generator.Generator.bitwiseor_sql": {"tf": 1}}, "df": 2}}, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.BitwiseRightShift": {"tf": 1}, "sqlglot.generator.Generator.bitwiserightshift_sql": {"tf": 1}}, "df": 2}}}}}}}}}}, "x": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.BitwiseXor": {"tf": 1}, "sqlglot.generator.Generator.bitwisexor_sql": {"tf": 1}}, "df": 2}}}, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.BitwiseNot": {"tf": 1}, "sqlglot.generator.Generator.bitwisenot_sql": {"tf": 1}}, "df": 2}}}}}}}}}, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dataframe.sql.Column.between": {"tf": 1}, "sqlglot.expressions.Between": {"tf": 1}, "sqlglot.generator.Generator.between_sql": {"tf": 1}, "sqlglot.optimizer.simplify.rewrite_between": {"tf": 1}, "sqlglot.tokens.TokenType.BETWEEN": {"tf": 1}}, "df": 5}}}}}, "g": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.tokens.TokenType.BEGIN": {"tf": 1}}, "df": 1}}}}, "f": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.Expression.bfs": {"tf": 1}}, "df": 1}}, "y": {"docs": {"sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.generator.Generator.partition_by_sql": {"tf": 1}, "sqlglot.tokens.TokenType.BY_DEFAULT": {"tf": 1}, "sqlglot.tokens.TokenType.CLUSTER_BY": {"tf": 1}, "sqlglot.tokens.TokenType.DISTRIBUTE_BY": {"tf": 1}, "sqlglot.tokens.TokenType.GROUP_BY": {"tf": 1}, "sqlglot.tokens.TokenType.ORDER_BY": {"tf": 1}, "sqlglot.tokens.TokenType.PARTITION_BY": {"tf": 1}, "sqlglot.tokens.TokenType.SORT_BY": {"tf": 1}}, "df": 12, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.BYTE_STRING": {"tf": 1}}, "df": 1, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.expressions.ByteString": {"tf": 1}}, "df": 1}}}}}}}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.tokens.TokenType.BLOCK_START": {"tf": 1}, "sqlglot.tokens.TokenType.BLOCK_END": {"tf": 1}}, "df": 2, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.BlockCompressionProperty": {"tf": 1}, "sqlglot.generator.Generator.blockcompressionproperty_sql": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}}}}}}}}}}, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.optimizer.canonicalize.ensure_bool_predicates": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.Boolean": {"tf": 1}, "sqlglot.expressions.DataType.Type.BOOLEAN": {"tf": 1}, "sqlglot.generator.Generator.boolean_sql": {"tf": 1}, "sqlglot.optimizer.simplify.eval_boolean": {"tf": 1}, "sqlglot.optimizer.simplify.boolean_literal": {"tf": 1}, "sqlglot.tokens.TokenType.BOOLEAN": {"tf": 1}}, "df": 6}}}}}, "t": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.tokens.TokenType.BOTH": {"tf": 1}}, "df": 1}}}, "u": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.DataType.build": {"tf": 1}, "sqlglot.expressions.Dot.build": {"tf": 1}, "sqlglot.optimizer.scope.build_scope": {"tf": 1}}, "df": 3}}}, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.BUCKET": {"tf": 1}}, "df": 1}}}}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.Bracket": {"tf": 1}, "sqlglot.generator.Generator.bracket_sql": {"tf": 1}, "sqlglot.tokens.TokenType.L_BRACKET": {"tf": 1}, "sqlglot.tokens.TokenType.R_BRACKET": {"tf": 1}}, "df": 4}}}, "e": {"docs": {"sqlglot.tokens.TokenType.L_BRACE": {"tf": 1}, "sqlglot.tokens.TokenType.R_BRACE": {"tf": 1}}, "df": 2}}, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.optimizer.scope.Scope.branch": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.tokens.TokenType.BREAK": {"tf": 1}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.tokens.TokenType.BACKSLASH": {"tf": 1}}, "df": 1}}}}}}}}}, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.Column.set_table_name": {"tf": 1}, "sqlglot.expressions.Expression.output_name": {"tf": 1}, "sqlglot.expressions.Column.output_name": {"tf": 1}, "sqlglot.expressions.Identifier.output_name": {"tf": 1}, "sqlglot.expressions.Literal.output_name": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_NAME": {"tf": 1}, "sqlglot.expressions.Subquery.output_name": {"tf": 1}, "sqlglot.expressions.Star.output_name": {"tf": 1}, "sqlglot.expressions.Alias.output_name": {"tf": 1}, "sqlglot.expressions.Func.sql_name": {"tf": 1}, "sqlglot.expressions.Cast.output_name": {"tf": 1}, "sqlglot.expressions.table_name": {"tf": 1}, "sqlglot.helper.find_new_name": {"tf": 1}}, "df": 13, "s": {"docs": {"sqlglot.expressions.Func.sql_names": {"tf": 1}, "sqlglot.expressions.column_table_names": {"tf": 1}, "sqlglot.optimizer.optimize_joins.other_table_names": {"tf": 1}, "sqlglot.schema.Schema.column_names": {"tf": 1}, "sqlglot.schema.MappingSchema.column_names": {"tf": 1}}, "df": 5}}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.expressions.National": {"tf": 1}, "sqlglot.generator.Generator.national_sql": {"tf": 1}, "sqlglot.tokens.TokenType.NATIONAL": {"tf": 1}}, "df": 3}}}}}, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.tokens.TokenType.NATURAL": {"tf": 1}}, "df": 1}}}}}, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.generator.Generator.naked_property": {"tf": 1}}, "df": 1}}}}, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.executor.env.null_if_any": {"tf": 1}, "sqlglot.expressions.Null": {"tf": 1}, "sqlglot.expressions.DataType.Type.NULL": {"tf": 1}, "sqlglot.expressions.null": {"tf": 1}, "sqlglot.generator.Generator.null_sql": {"tf": 1}, "sqlglot.optimizer.simplify.is_null": {"tf": 1}, "sqlglot.tokens.TokenType.NULL": {"tf": 1}}, "df": 7, "s": {"docs": {"sqlglot.dataframe.sql.Column.asc_nulls_first": {"tf": 1}, "sqlglot.dataframe.sql.Column.asc_nulls_last": {"tf": 1}, "sqlglot.dataframe.sql.Column.desc_nulls_first": {"tf": 1}, "sqlglot.dataframe.sql.Column.desc_nulls_last": {"tf": 1}, "sqlglot.executor.env.filter_nulls": {"tf": 1}, "sqlglot.tokens.TokenType.IGNORE_NULLS": {"tf": 1}, "sqlglot.tokens.TokenType.NULLS_FIRST": {"tf": 1}, "sqlglot.tokens.TokenType.NULLS_LAST": {"tf": 1}, "sqlglot.tokens.TokenType.RESPECT_NULLS": {"tf": 1}}, "df": 9, "a": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.NULLSAFE_EQ": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "q": {"docs": {"sqlglot.expressions.NullSafeEQ": {"tf": 1}, "sqlglot.generator.Generator.nullsafeeq_sql": {"tf": 1}}, "df": 2}}, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {"sqlglot.expressions.NullSafeNEQ": {"tf": 1}, "sqlglot.generator.Generator.nullsafeneq_sql": {"tf": 1}}, "df": 2}}}}}}}, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.DataType.Type.NULLABLE": {"tf": 1}, "sqlglot.tokens.TokenType.NULLABLE": {"tf": 1}}, "df": 2}}}}}}, "m": {"docs": {"sqlglot.helper.split_num_words": {"tf": 1}}, "df": 1, "b": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.Expression.is_number": {"tf": 1}, "sqlglot.expressions.Literal.number": {"tf": 1}, "sqlglot.tokens.TokenType.NUMBER": {"tf": 1}, "sqlglot.tokens.Token.number": {"tf": 1}}, "df": 4, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.NumberToStr": {"tf": 1}}, "df": 1}}}}}}}}}}, "o": {"docs": {"sqlglot.dialects.dialect.no_ilike_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_paren_current_date_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_recursive_cte_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_safe_divide_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_tablesample_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_pivot_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_trycast_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_properties_sql": {"tf": 1}, "sqlglot.generator.Generator.no_identify": {"tf": 1}, "sqlglot.tokens.TokenType.NO_ACTION": {"tf": 1}}, "df": 10, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.drill.Drill.Generator.normalize_func": {"tf": 1}, "sqlglot.generator.Generator.normalize_func": {"tf": 1}, "sqlglot.optimizer.normalize": {"tf": 1}, "sqlglot.optimizer.normalize.normalize": {"tf": 1.4142135623730951}, "sqlglot.optimizer.normalize.normalized": {"tf": 1}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1}, "sqlglot.optimizer.normalize.distributive_law": {"tf": 1}, "sqlglot.optimizer.optimize_joins.normalize": {"tf": 1}}, "df": 8, "d": {"docs": {"sqlglot.optimizer.normalize.normalized": {"tf": 1}}, "df": 1}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.optimizer.normalize.normalization_distance": {"tf": 1}}, "df": 1}}}}}}}}}}}, "t": {"docs": {"sqlglot.expressions.Condition.not_": {"tf": 1}, "sqlglot.expressions.Not": {"tf": 1}, "sqlglot.expressions.not_": {"tf": 1}, "sqlglot.generator.Generator.not_sql": {"tf": 1}, "sqlglot.optimizer.simplify.simplify_not": {"tf": 1}, "sqlglot.tokens.TokenType.NOT": {"tf": 1}}, "df": 6, "n": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.tokens.TokenType.NOTNULL": {"tf": 1}}, "df": 1, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.NotNullColumnConstraint": {"tf": 1}, "sqlglot.generator.Generator.notnullcolumnconstraint_sql": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}}}}}}}}, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.NoPrimaryIndexProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.lineage.Node": {"tf": 1}, "sqlglot.lineage.Node.__init__": {"tf": 1}, "sqlglot.lineage.Node.walk": {"tf": 1}, "sqlglot.lineage.Node.to_html": {"tf": 1}}, "df": 4, "s": {"docs": {"sqlglot.optimizer.pushdown_predicates.nodes_for_predicate": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "w": {"docs": {"sqlglot.errors.ParseError.new": {"tf": 1}, "sqlglot.helper.find_new_name": {"tf": 1}, "sqlglot.trie.new_trie": {"tf": 1}}, "df": 3}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.executor.python.PythonExecutor.nested_loop_join": {"tf": 1}}, "df": 1}}}}, "q": {"docs": {"sqlglot.expressions.NEQ": {"tf": 1}, "sqlglot.generator.Generator.neq_sql": {"tf": 1}, "sqlglot.tokens.TokenType.NEQ": {"tf": 1}}, "df": 3}, "g": {"docs": {"sqlglot.expressions.Neg": {"tf": 1}, "sqlglot.generator.Generator.neg_sql": {"tf": 1}}, "df": 2}, "x": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.NEXT": {"tf": 1}}, "df": 1}}}, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.DataType.Type.NCHAR": {"tf": 1}, "sqlglot.tokens.TokenType.NCHAR": {"tf": 1}}, "df": 2}}}}, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.DataType.Type.NVARCHAR": {"tf": 1}, "sqlglot.tokens.TokenType.NVARCHAR": {"tf": 1}}, "df": 2}}}}}}, "l": {"2": {"docs": {"sqlglot.expressions.Nvl2": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}}}, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dialects.dialect.var_map_sql": {"tf": 1}, "sqlglot.expressions.Var": {"tf": 1}, "sqlglot.expressions.var": {"tf": 1}, "sqlglot.generator.Generator.var_sql": {"tf": 1}, "sqlglot.parser.parse_var_map": {"tf": 1}, "sqlglot.tokens.TokenType.VAR": {"tf": 1}, "sqlglot.tokens.Token.var": {"tf": 1}}, "df": 7, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.DataType.Type.VARCHAR": {"tf": 1}, "sqlglot.tokens.TokenType.VARCHAR": {"tf": 1}}, "df": 2}}}}, "b": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.DataType.Type.VARBINARY": {"tf": 1}, "sqlglot.tokens.TokenType.VARBINARY": {"tf": 1}}, "df": 2}}}}}}, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.DataType.Type.VARIANT": {"tf": 1}, "sqlglot.tokens.TokenType.VARIANT": {"tf": 1}}, "df": 2}, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Variance": {"tf": 1}}, "df": 1, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.expressions.VariancePop": {"tf": 1}}, "df": 1}}}}}}}}, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.expressions.VarMap": {"tf": 1}}, "df": 1}}}}, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1}, "sqlglot.expressions.Values": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1}, "sqlglot.generator.Generator.values_sql": {"tf": 1}, "sqlglot.tokens.TokenType.VALUES": {"tf": 1}}, "df": 6}}}, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.qualify_columns.validate_qualify_columns": {"tf": 1}, "sqlglot.parser.Parser.validate_expression": {"tf": 1}}, "df": 2}}}}}}}, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.VolatilityProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}, "e": {"docs": {"sqlglot.tokens.TokenType.VOLATILE": {"tf": 1}}, "df": 1}}}}}}}, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "w": {"docs": {"sqlglot.tokens.TokenType.VIEW": {"tf": 1}}, "df": 1}}}}, "x": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.expressions.DataType.Type.XML": {"tf": 1}, "sqlglot.tokens.TokenType.XML": {"tf": 1}}, "df": 2, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.oracle.Oracle.Generator.xmltable_sql": {"tf": 1}, "sqlglot.expressions.XMLTable": {"tf": 1}}, "df": 2}}}}}}}}, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.diff.Keep": {"tf": 1}, "sqlglot.diff.Keep.__init__": {"tf": 1}}, "df": 2}}, "y": {"docs": {"sqlglot.executor.env.reverse_key": {"tf": 1}, "sqlglot.executor.env.reverse_key.__init__": {"tf": 1}, "sqlglot.tokens.TokenType.FOREIGN_KEY": {"tf": 1}, "sqlglot.tokens.TokenType.PRIMARY_KEY": {"tf": 1}}, "df": 4}}, "w": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.expressions.Kwarg": {"tf": 1}, "sqlglot.generator.Generator.kwarg_sql": {"tf": 1}}, "df": 2}}}}}, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.Qualify": {"tf": 1}, "sqlglot.expressions.Select.qualify": {"tf": 1}, "sqlglot.generator.Generator.qualify_sql": {"tf": 1}, "sqlglot.optimizer.qualify_columns": {"tf": 1}, "sqlglot.optimizer.qualify_columns.qualify_columns": {"tf": 1.4142135623730951}, "sqlglot.optimizer.qualify_columns.validate_qualify_columns": {"tf": 1.4142135623730951}, "sqlglot.optimizer.qualify_columns.Resolver": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.__init__": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.get_table": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.all_columns": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.get_source_columns": {"tf": 1}, "sqlglot.optimizer.qualify_tables": {"tf": 1}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.QUALIFY": {"tf": 1}, "sqlglot.transforms.eliminate_qualify": {"tf": 1}}, "df": 15}}}}, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Quantile": {"tf": 1}}, "df": 1, "s": {"docs": {"sqlglot.expressions.Quantiles": {"tf": 1}}, "df": 1}, "i": {"docs": {}, "df": 0, "f": {"docs": {"sqlglot.expressions.QuantileIf": {"tf": 1}}, "df": 1}}}}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.generator.Generator.query_modifiers": {"tf": 1}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.QUOTE": {"tf": 1}}, "df": 1}}}}}, "y": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.Year": {"tf": 1}}, "df": 1}}}}, "z": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.AT_TIME_ZONE": {"tf": 1}, "sqlglot.tokens.TokenType.WITH_TIME_ZONE": {"tf": 1}, "sqlglot.tokens.TokenType.WITH_LOCAL_TIME_ZONE": {"tf": 1}, "sqlglot.tokens.TokenType.WITHOUT_TIME_ZONE": {"tf": 1}}, "df": 4}}}}}}, "annotation": {"root": {"docs": {"sqlglot.expressions.Expression.is_string": {"tf": 1}, "sqlglot.expressions.Expression.is_number": {"tf": 1}, "sqlglot.expressions.Expression.is_int": {"tf": 1}, "sqlglot.expressions.Expression.is_star": {"tf": 1}, "sqlglot.expressions.Expression.alias": {"tf": 1}, "sqlglot.expressions.Column.output_name": {"tf": 1}, "sqlglot.expressions.Column.parts": {"tf": 1}, "sqlglot.expressions.Union.is_star": {"tf": 1}, "sqlglot.expressions.Select.is_star": {"tf": 1}, "sqlglot.expressions.Subquery.is_star": {"tf": 1}, "sqlglot.schema.Schema.supported_table_args": {"tf": 1.4142135623730951}}, "df": 11, "b": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.expressions.Expression.is_string": {"tf": 1}, "sqlglot.expressions.Expression.is_number": {"tf": 1}, "sqlglot.expressions.Expression.is_int": {"tf": 1}, "sqlglot.expressions.Expression.is_star": {"tf": 1}, "sqlglot.expressions.Union.is_star": {"tf": 1}, "sqlglot.expressions.Select.is_star": {"tf": 1}, "sqlglot.expressions.Subquery.is_star": {"tf": 1}}, "df": 7}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.Expression.alias": {"tf": 1}, "sqlglot.expressions.Column.output_name": {"tf": 1}}, "df": 2}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "[": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.Column.parts": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.Column.parts": {"tf": 1}}, "df": 1}}}}}}}}}}}, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.Column.parts": {"tf": 1}}, "df": 1}}}}}}}}}}, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "[": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.schema.Schema.supported_table_args": {"tf": 1}}, "df": 1}}}}}}}}}}}, "default_value": {"root": {"1": {"docs": {"sqlglot.optimizer.scope.ScopeType.ROOT": {"tf": 1}}, "df": 1}, "2": {"docs": {"sqlglot.optimizer.scope.ScopeType.SUBQUERY": {"tf": 1}}, "df": 1}, "3": {"docs": {"sqlglot.optimizer.scope.ScopeType.DERIVED_TABLE": {"tf": 1}}, "df": 1}, "4": {"docs": {"sqlglot.optimizer.scope.ScopeType.CTE": {"tf": 1}}, "df": 1}, "5": {"docs": {"sqlglot.optimizer.scope.ScopeType.UNION": {"tf": 1}}, "df": 1}, "6": {"docs": {"sqlglot.optimizer.scope.ScopeType.UDTF": {"tf": 1}}, "df": 1}, "docs": {"sqlglot.schema": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.DIALECT": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.BIGQUERY": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.CLICKHOUSE": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.DUCKDB": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.HIVE": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.MYSQL": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.ORACLE": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.POSTGRES": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.PRESTO": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.REDSHIFT": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.SNOWFLAKE": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.SPARK": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.SQLITE": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.STARROCKS": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.TABLEAU": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.TRINO": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.TSQL": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.DATABRICKS": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.DRILL": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.TERADATA": {"tf": 1.4142135623730951}, "sqlglot.errors.ErrorLevel.IGNORE": {"tf": 1.4142135623730951}, "sqlglot.errors.ErrorLevel.WARN": {"tf": 1.4142135623730951}, "sqlglot.errors.ErrorLevel.RAISE": {"tf": 1.4142135623730951}, "sqlglot.errors.ErrorLevel.IMMEDIATE": {"tf": 1.4142135623730951}, "sqlglot.expressions.Properties.Location.POST_CREATE": {"tf": 1.4142135623730951}, "sqlglot.expressions.Properties.Location.POST_NAME": {"tf": 1.4142135623730951}, "sqlglot.expressions.Properties.Location.POST_SCHEMA": {"tf": 1.4142135623730951}, "sqlglot.expressions.Properties.Location.POST_WITH": {"tf": 1.4142135623730951}, "sqlglot.expressions.Properties.Location.POST_ALIAS": {"tf": 1.4142135623730951}, "sqlglot.expressions.Properties.Location.POST_EXPRESSION": {"tf": 1.4142135623730951}, "sqlglot.expressions.Properties.Location.POST_INDEX": {"tf": 1.4142135623730951}, "sqlglot.expressions.Properties.Location.UNSUPPORTED": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.CHAR": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.NCHAR": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.VARCHAR": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.NVARCHAR": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.TEXT": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.MEDIUMTEXT": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.LONGTEXT": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.MEDIUMBLOB": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.LONGBLOB": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.BINARY": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.VARBINARY": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.INT": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.UINT": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.TINYINT": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.UTINYINT": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.SMALLINT": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.USMALLINT": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.BIGINT": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.UBIGINT": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.FLOAT": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.DOUBLE": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.DECIMAL": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.BIT": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.BOOLEAN": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.JSON": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.JSONB": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.INTERVAL": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.TIME": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.TIMESTAMP": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.TIMESTAMPTZ": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.TIMESTAMPLTZ": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.DATE": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.DATETIME": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.ARRAY": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.MAP": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.UUID": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.GEOGRAPHY": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.GEOMETRY": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.STRUCT": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.NULLABLE": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.HLLSKETCH": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.HSTORE": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.SUPER": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.SERIAL": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.SMALLSERIAL": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.BIGSERIAL": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.XML": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.UNIQUEIDENTIFIER": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.MONEY": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.SMALLMONEY": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.ROWVERSION": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.IMAGE": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.VARIANT": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.OBJECT": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.INET": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.NULL": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.UNKNOWN": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.ScopeType.ROOT": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.ScopeType.SUBQUERY": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.ScopeType.DERIVED_TABLE": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.ScopeType.CTE": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.ScopeType.UNION": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.ScopeType.UDTF": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.L_PAREN": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.R_PAREN": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.L_BRACKET": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.R_BRACKET": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.L_BRACE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.R_BRACE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.COMMA": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DOT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DASH": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.PLUS": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.COLON": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DCOLON": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SEMICOLON": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.STAR": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.BACKSLASH": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SLASH": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.LT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.LTE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.GT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.GTE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.NOT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.EQ": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.NEQ": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.NULLSAFE_EQ": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.AND": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.OR": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.AMP": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DPIPE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.PIPE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.CARET": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.TILDA": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ARROW": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DARROW": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.FARROW": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.HASH": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.HASH_ARROW": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DHASH_ARROW": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.LR_ARROW": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.LT_AT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.AT_GT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DOLLAR": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.PARAMETER": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SESSION_PARAMETER": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.NATIONAL": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DAMP": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.BLOCK_START": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.BLOCK_END": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SPACE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.BREAK": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.STRING": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.NUMBER": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.IDENTIFIER": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DATABASE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.COLUMN": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.COLUMN_DEF": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SCHEMA": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.TABLE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.VAR": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.BIT_STRING": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.HEX_STRING": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.BYTE_STRING": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.BIT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.BOOLEAN": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.TINYINT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.UTINYINT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SMALLINT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.USMALLINT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.INT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.UINT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.BIGINT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.UBIGINT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.FLOAT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DOUBLE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DECIMAL": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.CHAR": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.NCHAR": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.VARCHAR": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.NVARCHAR": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.TEXT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.MEDIUMTEXT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.LONGTEXT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.MEDIUMBLOB": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.LONGBLOB": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.BINARY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.VARBINARY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.JSON": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.JSONB": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.TIME": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.TIMESTAMP": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.TIMESTAMPTZ": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.TIMESTAMPLTZ": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DATETIME": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DATE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.UUID": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.GEOGRAPHY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.NULLABLE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.GEOMETRY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.HLLSKETCH": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.HSTORE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SUPER": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SERIAL": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SMALLSERIAL": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.BIGSERIAL": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.XML": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.UNIQUEIDENTIFIER": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.MONEY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SMALLMONEY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ROWVERSION": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.IMAGE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.VARIANT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.OBJECT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.INET": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ALIAS": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ALTER": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ALWAYS": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ALL": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ANTI": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ANY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.APPLY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ARRAY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ASC": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ASOF": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.AT_TIME_ZONE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.AUTO_INCREMENT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.BEGIN": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.BETWEEN": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.BOTH": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.BUCKET": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.BY_DEFAULT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.CACHE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.CASCADE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.CASE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.CHARACTER_SET": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.CLUSTER_BY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.COLLATE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.COMMAND": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.COMMENT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.COMMIT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.COMPOUND": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.CONSTRAINT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.CREATE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.CROSS": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.CUBE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.CURRENT_DATE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.CURRENT_DATETIME": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.CURRENT_ROW": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.CURRENT_TIME": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.CURRENT_TIMESTAMP": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DEFAULT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DELETE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DESC": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DESCRIBE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DISTINCT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DISTINCT_FROM": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DISTRIBUTE_BY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DIV": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DROP": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ELSE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.END": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ESCAPE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.EXCEPT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.EXECUTE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.EXISTS": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.FALSE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.FETCH": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.FILTER": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.FINAL": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.FIRST": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.FOLLOWING": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.FOR": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.FOREIGN_KEY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.FORMAT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.FROM": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.FULL": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.FUNCTION": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.GLOB": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.GLOBAL": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.GROUP_BY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.GROUPING_SETS": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.HAVING": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.HINT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.IF": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.IGNORE_NULLS": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ILIKE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ILIKE_ANY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.IN": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.INDEX": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.INNER": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.INSERT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.INTERSECT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.INTERVAL": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.INTO": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.INTRODUCER": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.IRLIKE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.IS": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ISNULL": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.JOIN": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.JOIN_MARKER": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.LANGUAGE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.LATERAL": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.LAZY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.LEADING": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.LEFT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.LIKE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.LIKE_ANY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.LIMIT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.LOAD_DATA": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.LOCAL": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.MAP": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.MATCH_RECOGNIZE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.MATERIALIZED": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.MERGE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.MOD": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.NATURAL": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.NEXT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.NO_ACTION": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.NOTNULL": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.NULL": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.NULLS_FIRST": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.NULLS_LAST": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.OFFSET": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ON": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ONLY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.OPTIONS": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ORDER_BY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ORDERED": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ORDINALITY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.OUTER": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.OUT_OF": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.OVER": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.OVERLAPS": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.OVERWRITE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.PARTITION": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.PARTITION_BY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.PERCENT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.PIVOT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.PLACEHOLDER": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.PRAGMA": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.PRECEDING": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.PRIMARY_KEY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.PROCEDURE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.PROPERTIES": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.PSEUDO_TYPE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.QUALIFY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.QUOTE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.RANGE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.RECURSIVE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.REPLACE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.RESPECT_NULLS": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.RETURNING": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.REFERENCES": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.RIGHT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.RLIKE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ROLLBACK": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ROLLUP": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ROW": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ROWS": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SEED": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SELECT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SEMI": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SEPARATOR": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SERDE_PROPERTIES": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SET": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SHOW": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SIMILAR_TO": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SOME": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SORTKEY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SORT_BY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.STRUCT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.TABLE_SAMPLE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.TEMPORARY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.TOP": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.THEN": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.TRAILING": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.TRUE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.UNBOUNDED": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.UNCACHE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.UNION": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.UNLOGGED": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.UNNEST": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.UNPIVOT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.UPDATE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.USE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.USING": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.VALUES": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.VIEW": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.VOLATILE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.WHEN": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.WHERE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.WINDOW": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.WITH": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.WITH_TIME_ZONE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.WITH_LOCAL_TIME_ZONE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.WITHIN_GROUP": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.WITHOUT_TIME_ZONE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.UNIQUE": {"tf": 1.4142135623730951}}, "df": 392, "f": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.pretty": {"tf": 1}, "sqlglot.tokens.TokenType.FALSE": {"tf": 1.4142135623730951}}, "df": 2}}}, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {"sqlglot.tokens.TokenType.FARROW": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.DataType.Type.FLOAT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.FLOAT": {"tf": 1.4142135623730951}}, "df": 2}}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {"sqlglot.tokens.TokenType.DISTINCT_FROM": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.FROM": {"tf": 1.4142135623730951}}, "df": 2}}}, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.tokens.TokenType.FETCH": {"tf": 1.4142135623730951}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.tokens.TokenType.FILTER": {"tf": 1.4142135623730951}}, "df": 1}}}}, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.tokens.TokenType.FINAL": {"tf": 1.4142135623730951}}, "df": 1}}}, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.FIRST": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.NULLS_FIRST": {"tf": 1.4142135623730951}}, "df": 2}}}}, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.tokens.TokenType.FOLLOWING": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}, "r": {"docs": {"sqlglot.tokens.TokenType.FOR": {"tf": 1.4142135623730951}}, "df": 1, "e": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.tokens.TokenType.FOREIGN_KEY": {"tf": 1.4142135623730951}}, "df": 1}}}}, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.FORMAT": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.tokens.TokenType.FULL": {"tf": 1.4142135623730951}}, "df": 1}}, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.tokens.TokenType.FUNCTION": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}, "l": {"docs": {"sqlglot.tokens.TokenType.L_PAREN": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.L_BRACKET": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.L_BRACE": {"tf": 1.4142135623730951}}, "df": 3, "t": {"docs": {"sqlglot.schema": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.DIALECT": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.BIGQUERY": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.CLICKHOUSE": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.DUCKDB": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.HIVE": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.MYSQL": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.ORACLE": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.POSTGRES": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.PRESTO": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.REDSHIFT": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.SNOWFLAKE": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.SPARK": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.SQLITE": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.STARROCKS": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.TABLEAU": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.TRINO": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.TSQL": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.DATABRICKS": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.DRILL": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.TERADATA": {"tf": 1}, "sqlglot.errors.ErrorLevel.IGNORE": {"tf": 1}, "sqlglot.errors.ErrorLevel.WARN": {"tf": 1}, "sqlglot.errors.ErrorLevel.RAISE": {"tf": 1}, "sqlglot.errors.ErrorLevel.IMMEDIATE": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_CREATE": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_NAME": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_SCHEMA": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_WITH": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_ALIAS": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_EXPRESSION": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_INDEX": {"tf": 1}, "sqlglot.expressions.Properties.Location.UNSUPPORTED": {"tf": 1}, "sqlglot.expressions.DataType.Type.CHAR": {"tf": 1}, "sqlglot.expressions.DataType.Type.NCHAR": {"tf": 1}, "sqlglot.expressions.DataType.Type.VARCHAR": {"tf": 1}, "sqlglot.expressions.DataType.Type.NVARCHAR": {"tf": 1}, "sqlglot.expressions.DataType.Type.TEXT": {"tf": 1}, "sqlglot.expressions.DataType.Type.MEDIUMTEXT": {"tf": 1}, "sqlglot.expressions.DataType.Type.LONGTEXT": {"tf": 1}, "sqlglot.expressions.DataType.Type.MEDIUMBLOB": {"tf": 1}, "sqlglot.expressions.DataType.Type.LONGBLOB": {"tf": 1}, "sqlglot.expressions.DataType.Type.BINARY": {"tf": 1}, "sqlglot.expressions.DataType.Type.VARBINARY": {"tf": 1}, "sqlglot.expressions.DataType.Type.INT": {"tf": 1}, "sqlglot.expressions.DataType.Type.UINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.TINYINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.UTINYINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.SMALLINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.USMALLINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.BIGINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.UBIGINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.FLOAT": {"tf": 1}, "sqlglot.expressions.DataType.Type.DOUBLE": {"tf": 1}, "sqlglot.expressions.DataType.Type.DECIMAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.BIT": {"tf": 1}, "sqlglot.expressions.DataType.Type.BOOLEAN": {"tf": 1}, "sqlglot.expressions.DataType.Type.JSON": {"tf": 1}, "sqlglot.expressions.DataType.Type.JSONB": {"tf": 1}, "sqlglot.expressions.DataType.Type.INTERVAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.TIME": {"tf": 1}, "sqlglot.expressions.DataType.Type.TIMESTAMP": {"tf": 1}, "sqlglot.expressions.DataType.Type.TIMESTAMPTZ": {"tf": 1}, "sqlglot.expressions.DataType.Type.TIMESTAMPLTZ": {"tf": 1}, "sqlglot.expressions.DataType.Type.DATE": {"tf": 1}, "sqlglot.expressions.DataType.Type.DATETIME": {"tf": 1}, "sqlglot.expressions.DataType.Type.ARRAY": {"tf": 1}, "sqlglot.expressions.DataType.Type.MAP": {"tf": 1}, "sqlglot.expressions.DataType.Type.UUID": {"tf": 1}, "sqlglot.expressions.DataType.Type.GEOGRAPHY": {"tf": 1}, "sqlglot.expressions.DataType.Type.GEOMETRY": {"tf": 1}, "sqlglot.expressions.DataType.Type.STRUCT": {"tf": 1}, "sqlglot.expressions.DataType.Type.NULLABLE": {"tf": 1}, "sqlglot.expressions.DataType.Type.HLLSKETCH": {"tf": 1}, "sqlglot.expressions.DataType.Type.HSTORE": {"tf": 1}, "sqlglot.expressions.DataType.Type.SUPER": {"tf": 1}, "sqlglot.expressions.DataType.Type.SERIAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.SMALLSERIAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.BIGSERIAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.XML": {"tf": 1}, "sqlglot.expressions.DataType.Type.UNIQUEIDENTIFIER": {"tf": 1}, "sqlglot.expressions.DataType.Type.MONEY": {"tf": 1}, "sqlglot.expressions.DataType.Type.SMALLMONEY": {"tf": 1}, "sqlglot.expressions.DataType.Type.ROWVERSION": {"tf": 1}, "sqlglot.expressions.DataType.Type.IMAGE": {"tf": 1}, "sqlglot.expressions.DataType.Type.VARIANT": {"tf": 1}, "sqlglot.expressions.DataType.Type.OBJECT": {"tf": 1}, "sqlglot.expressions.DataType.Type.INET": {"tf": 1}, "sqlglot.expressions.DataType.Type.NULL": {"tf": 1}, "sqlglot.expressions.DataType.Type.UNKNOWN": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.ROOT": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.SUBQUERY": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.DERIVED_TABLE": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.CTE": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.UNION": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.UDTF": {"tf": 1}, "sqlglot.tokens.TokenType.L_PAREN": {"tf": 1}, "sqlglot.tokens.TokenType.R_PAREN": {"tf": 1}, "sqlglot.tokens.TokenType.L_BRACKET": {"tf": 1}, "sqlglot.tokens.TokenType.R_BRACKET": {"tf": 1}, "sqlglot.tokens.TokenType.L_BRACE": {"tf": 1}, "sqlglot.tokens.TokenType.R_BRACE": {"tf": 1}, "sqlglot.tokens.TokenType.COMMA": {"tf": 1}, "sqlglot.tokens.TokenType.DOT": {"tf": 1}, "sqlglot.tokens.TokenType.DASH": {"tf": 1}, "sqlglot.tokens.TokenType.PLUS": {"tf": 1}, "sqlglot.tokens.TokenType.COLON": {"tf": 1}, "sqlglot.tokens.TokenType.DCOLON": {"tf": 1}, "sqlglot.tokens.TokenType.SEMICOLON": {"tf": 1}, "sqlglot.tokens.TokenType.STAR": {"tf": 1}, "sqlglot.tokens.TokenType.BACKSLASH": {"tf": 1}, "sqlglot.tokens.TokenType.SLASH": {"tf": 1}, "sqlglot.tokens.TokenType.LT": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.LTE": {"tf": 1}, "sqlglot.tokens.TokenType.GT": {"tf": 1}, "sqlglot.tokens.TokenType.GTE": {"tf": 1}, "sqlglot.tokens.TokenType.NOT": {"tf": 1}, "sqlglot.tokens.TokenType.EQ": {"tf": 1}, "sqlglot.tokens.TokenType.NEQ": {"tf": 1}, "sqlglot.tokens.TokenType.NULLSAFE_EQ": {"tf": 1}, "sqlglot.tokens.TokenType.AND": {"tf": 1}, "sqlglot.tokens.TokenType.OR": {"tf": 1}, "sqlglot.tokens.TokenType.AMP": {"tf": 1}, "sqlglot.tokens.TokenType.DPIPE": {"tf": 1}, "sqlglot.tokens.TokenType.PIPE": {"tf": 1}, "sqlglot.tokens.TokenType.CARET": {"tf": 1}, "sqlglot.tokens.TokenType.TILDA": {"tf": 1}, "sqlglot.tokens.TokenType.ARROW": {"tf": 1}, "sqlglot.tokens.TokenType.DARROW": {"tf": 1}, "sqlglot.tokens.TokenType.FARROW": {"tf": 1}, "sqlglot.tokens.TokenType.HASH": {"tf": 1}, "sqlglot.tokens.TokenType.HASH_ARROW": {"tf": 1}, "sqlglot.tokens.TokenType.DHASH_ARROW": {"tf": 1}, "sqlglot.tokens.TokenType.LR_ARROW": {"tf": 1}, "sqlglot.tokens.TokenType.LT_AT": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.AT_GT": {"tf": 1}, "sqlglot.tokens.TokenType.DOLLAR": {"tf": 1}, "sqlglot.tokens.TokenType.PARAMETER": {"tf": 1}, "sqlglot.tokens.TokenType.SESSION_PARAMETER": {"tf": 1}, "sqlglot.tokens.TokenType.NATIONAL": {"tf": 1}, "sqlglot.tokens.TokenType.DAMP": {"tf": 1}, "sqlglot.tokens.TokenType.BLOCK_START": {"tf": 1}, "sqlglot.tokens.TokenType.BLOCK_END": {"tf": 1}, "sqlglot.tokens.TokenType.SPACE": {"tf": 1}, "sqlglot.tokens.TokenType.BREAK": {"tf": 1}, "sqlglot.tokens.TokenType.STRING": {"tf": 1}, "sqlglot.tokens.TokenType.NUMBER": {"tf": 1}, "sqlglot.tokens.TokenType.IDENTIFIER": {"tf": 1}, "sqlglot.tokens.TokenType.DATABASE": {"tf": 1}, "sqlglot.tokens.TokenType.COLUMN": {"tf": 1}, "sqlglot.tokens.TokenType.COLUMN_DEF": {"tf": 1}, "sqlglot.tokens.TokenType.SCHEMA": {"tf": 1}, "sqlglot.tokens.TokenType.TABLE": {"tf": 1}, "sqlglot.tokens.TokenType.VAR": {"tf": 1}, "sqlglot.tokens.TokenType.BIT_STRING": {"tf": 1}, "sqlglot.tokens.TokenType.HEX_STRING": {"tf": 1}, "sqlglot.tokens.TokenType.BYTE_STRING": {"tf": 1}, "sqlglot.tokens.TokenType.BIT": {"tf": 1}, "sqlglot.tokens.TokenType.BOOLEAN": {"tf": 1}, "sqlglot.tokens.TokenType.TINYINT": {"tf": 1}, "sqlglot.tokens.TokenType.UTINYINT": {"tf": 1}, "sqlglot.tokens.TokenType.SMALLINT": {"tf": 1}, "sqlglot.tokens.TokenType.USMALLINT": {"tf": 1}, "sqlglot.tokens.TokenType.INT": {"tf": 1}, "sqlglot.tokens.TokenType.UINT": {"tf": 1}, "sqlglot.tokens.TokenType.BIGINT": {"tf": 1}, "sqlglot.tokens.TokenType.UBIGINT": {"tf": 1}, "sqlglot.tokens.TokenType.FLOAT": {"tf": 1}, "sqlglot.tokens.TokenType.DOUBLE": {"tf": 1}, "sqlglot.tokens.TokenType.DECIMAL": {"tf": 1}, "sqlglot.tokens.TokenType.CHAR": {"tf": 1}, "sqlglot.tokens.TokenType.NCHAR": {"tf": 1}, "sqlglot.tokens.TokenType.VARCHAR": {"tf": 1}, "sqlglot.tokens.TokenType.NVARCHAR": {"tf": 1}, "sqlglot.tokens.TokenType.TEXT": {"tf": 1}, "sqlglot.tokens.TokenType.MEDIUMTEXT": {"tf": 1}, "sqlglot.tokens.TokenType.LONGTEXT": {"tf": 1}, "sqlglot.tokens.TokenType.MEDIUMBLOB": {"tf": 1}, "sqlglot.tokens.TokenType.LONGBLOB": {"tf": 1}, "sqlglot.tokens.TokenType.BINARY": {"tf": 1}, "sqlglot.tokens.TokenType.VARBINARY": {"tf": 1}, "sqlglot.tokens.TokenType.JSON": {"tf": 1}, "sqlglot.tokens.TokenType.JSONB": {"tf": 1}, "sqlglot.tokens.TokenType.TIME": {"tf": 1}, "sqlglot.tokens.TokenType.TIMESTAMP": {"tf": 1}, "sqlglot.tokens.TokenType.TIMESTAMPTZ": {"tf": 1}, "sqlglot.tokens.TokenType.TIMESTAMPLTZ": {"tf": 1}, "sqlglot.tokens.TokenType.DATETIME": {"tf": 1}, "sqlglot.tokens.TokenType.DATE": {"tf": 1}, "sqlglot.tokens.TokenType.UUID": {"tf": 1}, "sqlglot.tokens.TokenType.GEOGRAPHY": {"tf": 1}, "sqlglot.tokens.TokenType.NULLABLE": {"tf": 1}, "sqlglot.tokens.TokenType.GEOMETRY": {"tf": 1}, "sqlglot.tokens.TokenType.HLLSKETCH": {"tf": 1}, "sqlglot.tokens.TokenType.HSTORE": {"tf": 1}, "sqlglot.tokens.TokenType.SUPER": {"tf": 1}, "sqlglot.tokens.TokenType.SERIAL": {"tf": 1}, "sqlglot.tokens.TokenType.SMALLSERIAL": {"tf": 1}, "sqlglot.tokens.TokenType.BIGSERIAL": {"tf": 1}, "sqlglot.tokens.TokenType.XML": {"tf": 1}, "sqlglot.tokens.TokenType.UNIQUEIDENTIFIER": {"tf": 1}, "sqlglot.tokens.TokenType.MONEY": {"tf": 1}, "sqlglot.tokens.TokenType.SMALLMONEY": {"tf": 1}, "sqlglot.tokens.TokenType.ROWVERSION": {"tf": 1}, "sqlglot.tokens.TokenType.IMAGE": {"tf": 1}, "sqlglot.tokens.TokenType.VARIANT": {"tf": 1}, "sqlglot.tokens.TokenType.OBJECT": {"tf": 1}, "sqlglot.tokens.TokenType.INET": {"tf": 1}, "sqlglot.tokens.TokenType.ALIAS": {"tf": 1}, "sqlglot.tokens.TokenType.ALTER": {"tf": 1}, "sqlglot.tokens.TokenType.ALWAYS": {"tf": 1}, "sqlglot.tokens.TokenType.ALL": {"tf": 1}, "sqlglot.tokens.TokenType.ANTI": {"tf": 1}, "sqlglot.tokens.TokenType.ANY": {"tf": 1}, "sqlglot.tokens.TokenType.APPLY": {"tf": 1}, "sqlglot.tokens.TokenType.ARRAY": {"tf": 1}, "sqlglot.tokens.TokenType.ASC": {"tf": 1}, "sqlglot.tokens.TokenType.ASOF": {"tf": 1}, "sqlglot.tokens.TokenType.AT_TIME_ZONE": {"tf": 1}, "sqlglot.tokens.TokenType.AUTO_INCREMENT": {"tf": 1}, "sqlglot.tokens.TokenType.BEGIN": {"tf": 1}, "sqlglot.tokens.TokenType.BETWEEN": {"tf": 1}, "sqlglot.tokens.TokenType.BOTH": {"tf": 1}, "sqlglot.tokens.TokenType.BUCKET": {"tf": 1}, "sqlglot.tokens.TokenType.BY_DEFAULT": {"tf": 1}, "sqlglot.tokens.TokenType.CACHE": {"tf": 1}, "sqlglot.tokens.TokenType.CASCADE": {"tf": 1}, "sqlglot.tokens.TokenType.CASE": {"tf": 1}, "sqlglot.tokens.TokenType.CHARACTER_SET": {"tf": 1}, "sqlglot.tokens.TokenType.CLUSTER_BY": {"tf": 1}, "sqlglot.tokens.TokenType.COLLATE": {"tf": 1}, "sqlglot.tokens.TokenType.COMMAND": {"tf": 1}, "sqlglot.tokens.TokenType.COMMENT": {"tf": 1}, "sqlglot.tokens.TokenType.COMMIT": {"tf": 1}, "sqlglot.tokens.TokenType.COMPOUND": {"tf": 1}, "sqlglot.tokens.TokenType.CONSTRAINT": {"tf": 1}, "sqlglot.tokens.TokenType.CREATE": {"tf": 1}, "sqlglot.tokens.TokenType.CROSS": {"tf": 1}, "sqlglot.tokens.TokenType.CUBE": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_DATE": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_DATETIME": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_ROW": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_TIME": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_TIMESTAMP": {"tf": 1}, "sqlglot.tokens.TokenType.DEFAULT": {"tf": 1}, "sqlglot.tokens.TokenType.DELETE": {"tf": 1}, "sqlglot.tokens.TokenType.DESC": {"tf": 1}, "sqlglot.tokens.TokenType.DESCRIBE": {"tf": 1}, "sqlglot.tokens.TokenType.DISTINCT": {"tf": 1}, "sqlglot.tokens.TokenType.DISTINCT_FROM": {"tf": 1}, "sqlglot.tokens.TokenType.DISTRIBUTE_BY": {"tf": 1}, "sqlglot.tokens.TokenType.DIV": {"tf": 1}, "sqlglot.tokens.TokenType.DROP": {"tf": 1}, "sqlglot.tokens.TokenType.ELSE": {"tf": 1}, "sqlglot.tokens.TokenType.END": {"tf": 1}, "sqlglot.tokens.TokenType.ESCAPE": {"tf": 1}, "sqlglot.tokens.TokenType.EXCEPT": {"tf": 1}, "sqlglot.tokens.TokenType.EXECUTE": {"tf": 1}, "sqlglot.tokens.TokenType.EXISTS": {"tf": 1}, "sqlglot.tokens.TokenType.FALSE": {"tf": 1}, "sqlglot.tokens.TokenType.FETCH": {"tf": 1}, "sqlglot.tokens.TokenType.FILTER": {"tf": 1}, "sqlglot.tokens.TokenType.FINAL": {"tf": 1}, "sqlglot.tokens.TokenType.FIRST": {"tf": 1}, "sqlglot.tokens.TokenType.FOLLOWING": {"tf": 1}, "sqlglot.tokens.TokenType.FOR": {"tf": 1}, "sqlglot.tokens.TokenType.FOREIGN_KEY": {"tf": 1}, "sqlglot.tokens.TokenType.FORMAT": {"tf": 1}, "sqlglot.tokens.TokenType.FROM": {"tf": 1}, "sqlglot.tokens.TokenType.FULL": {"tf": 1}, "sqlglot.tokens.TokenType.FUNCTION": {"tf": 1}, "sqlglot.tokens.TokenType.GLOB": {"tf": 1}, "sqlglot.tokens.TokenType.GLOBAL": {"tf": 1}, "sqlglot.tokens.TokenType.GROUP_BY": {"tf": 1}, "sqlglot.tokens.TokenType.GROUPING_SETS": {"tf": 1}, "sqlglot.tokens.TokenType.HAVING": {"tf": 1}, "sqlglot.tokens.TokenType.HINT": {"tf": 1}, "sqlglot.tokens.TokenType.IF": {"tf": 1}, "sqlglot.tokens.TokenType.IGNORE_NULLS": {"tf": 1}, "sqlglot.tokens.TokenType.ILIKE": {"tf": 1}, "sqlglot.tokens.TokenType.ILIKE_ANY": {"tf": 1}, "sqlglot.tokens.TokenType.IN": {"tf": 1}, "sqlglot.tokens.TokenType.INDEX": {"tf": 1}, "sqlglot.tokens.TokenType.INNER": {"tf": 1}, "sqlglot.tokens.TokenType.INSERT": {"tf": 1}, "sqlglot.tokens.TokenType.INTERSECT": {"tf": 1}, "sqlglot.tokens.TokenType.INTERVAL": {"tf": 1}, "sqlglot.tokens.TokenType.INTO": {"tf": 1}, "sqlglot.tokens.TokenType.INTRODUCER": {"tf": 1}, "sqlglot.tokens.TokenType.IRLIKE": {"tf": 1}, "sqlglot.tokens.TokenType.IS": {"tf": 1}, "sqlglot.tokens.TokenType.ISNULL": {"tf": 1}, "sqlglot.tokens.TokenType.JOIN": {"tf": 1}, "sqlglot.tokens.TokenType.JOIN_MARKER": {"tf": 1}, "sqlglot.tokens.TokenType.LANGUAGE": {"tf": 1}, "sqlglot.tokens.TokenType.LATERAL": {"tf": 1}, "sqlglot.tokens.TokenType.LAZY": {"tf": 1}, "sqlglot.tokens.TokenType.LEADING": {"tf": 1}, "sqlglot.tokens.TokenType.LEFT": {"tf": 1}, "sqlglot.tokens.TokenType.LIKE": {"tf": 1}, "sqlglot.tokens.TokenType.LIKE_ANY": {"tf": 1}, "sqlglot.tokens.TokenType.LIMIT": {"tf": 1}, "sqlglot.tokens.TokenType.LOAD_DATA": {"tf": 1}, "sqlglot.tokens.TokenType.LOCAL": {"tf": 1}, "sqlglot.tokens.TokenType.MAP": {"tf": 1}, "sqlglot.tokens.TokenType.MATCH_RECOGNIZE": {"tf": 1}, "sqlglot.tokens.TokenType.MATERIALIZED": {"tf": 1}, "sqlglot.tokens.TokenType.MERGE": {"tf": 1}, "sqlglot.tokens.TokenType.MOD": {"tf": 1}, "sqlglot.tokens.TokenType.NATURAL": {"tf": 1}, "sqlglot.tokens.TokenType.NEXT": {"tf": 1}, "sqlglot.tokens.TokenType.NO_ACTION": {"tf": 1}, "sqlglot.tokens.TokenType.NOTNULL": {"tf": 1}, "sqlglot.tokens.TokenType.NULL": {"tf": 1}, "sqlglot.tokens.TokenType.NULLS_FIRST": {"tf": 1}, "sqlglot.tokens.TokenType.NULLS_LAST": {"tf": 1}, "sqlglot.tokens.TokenType.OFFSET": {"tf": 1}, "sqlglot.tokens.TokenType.ON": {"tf": 1}, "sqlglot.tokens.TokenType.ONLY": {"tf": 1}, "sqlglot.tokens.TokenType.OPTIONS": {"tf": 1}, "sqlglot.tokens.TokenType.ORDER_BY": {"tf": 1}, "sqlglot.tokens.TokenType.ORDERED": {"tf": 1}, "sqlglot.tokens.TokenType.ORDINALITY": {"tf": 1}, "sqlglot.tokens.TokenType.OUTER": {"tf": 1}, "sqlglot.tokens.TokenType.OUT_OF": {"tf": 1}, "sqlglot.tokens.TokenType.OVER": {"tf": 1}, "sqlglot.tokens.TokenType.OVERLAPS": {"tf": 1}, "sqlglot.tokens.TokenType.OVERWRITE": {"tf": 1}, "sqlglot.tokens.TokenType.PARTITION": {"tf": 1}, "sqlglot.tokens.TokenType.PARTITION_BY": {"tf": 1}, "sqlglot.tokens.TokenType.PERCENT": {"tf": 1}, "sqlglot.tokens.TokenType.PIVOT": {"tf": 1}, "sqlglot.tokens.TokenType.PLACEHOLDER": {"tf": 1}, "sqlglot.tokens.TokenType.PRAGMA": {"tf": 1}, "sqlglot.tokens.TokenType.PRECEDING": {"tf": 1}, "sqlglot.tokens.TokenType.PRIMARY_KEY": {"tf": 1}, "sqlglot.tokens.TokenType.PROCEDURE": {"tf": 1}, "sqlglot.tokens.TokenType.PROPERTIES": {"tf": 1}, "sqlglot.tokens.TokenType.PSEUDO_TYPE": {"tf": 1}, "sqlglot.tokens.TokenType.QUALIFY": {"tf": 1}, "sqlglot.tokens.TokenType.QUOTE": {"tf": 1}, "sqlglot.tokens.TokenType.RANGE": {"tf": 1}, "sqlglot.tokens.TokenType.RECURSIVE": {"tf": 1}, "sqlglot.tokens.TokenType.REPLACE": {"tf": 1}, "sqlglot.tokens.TokenType.RESPECT_NULLS": {"tf": 1}, "sqlglot.tokens.TokenType.RETURNING": {"tf": 1}, "sqlglot.tokens.TokenType.REFERENCES": {"tf": 1}, "sqlglot.tokens.TokenType.RIGHT": {"tf": 1}, "sqlglot.tokens.TokenType.RLIKE": {"tf": 1}, "sqlglot.tokens.TokenType.ROLLBACK": {"tf": 1}, "sqlglot.tokens.TokenType.ROLLUP": {"tf": 1}, "sqlglot.tokens.TokenType.ROW": {"tf": 1}, "sqlglot.tokens.TokenType.ROWS": {"tf": 1}, "sqlglot.tokens.TokenType.SEED": {"tf": 1}, "sqlglot.tokens.TokenType.SELECT": {"tf": 1}, "sqlglot.tokens.TokenType.SEMI": {"tf": 1}, "sqlglot.tokens.TokenType.SEPARATOR": {"tf": 1}, "sqlglot.tokens.TokenType.SERDE_PROPERTIES": {"tf": 1}, "sqlglot.tokens.TokenType.SET": {"tf": 1}, "sqlglot.tokens.TokenType.SHOW": {"tf": 1}, "sqlglot.tokens.TokenType.SIMILAR_TO": {"tf": 1}, "sqlglot.tokens.TokenType.SOME": {"tf": 1}, "sqlglot.tokens.TokenType.SORTKEY": {"tf": 1}, "sqlglot.tokens.TokenType.SORT_BY": {"tf": 1}, "sqlglot.tokens.TokenType.STRUCT": {"tf": 1}, "sqlglot.tokens.TokenType.TABLE_SAMPLE": {"tf": 1}, "sqlglot.tokens.TokenType.TEMPORARY": {"tf": 1}, "sqlglot.tokens.TokenType.TOP": {"tf": 1}, "sqlglot.tokens.TokenType.THEN": {"tf": 1}, "sqlglot.tokens.TokenType.TRAILING": {"tf": 1}, "sqlglot.tokens.TokenType.TRUE": {"tf": 1}, "sqlglot.tokens.TokenType.UNBOUNDED": {"tf": 1}, "sqlglot.tokens.TokenType.UNCACHE": {"tf": 1}, "sqlglot.tokens.TokenType.UNION": {"tf": 1}, "sqlglot.tokens.TokenType.UNLOGGED": {"tf": 1}, "sqlglot.tokens.TokenType.UNNEST": {"tf": 1}, "sqlglot.tokens.TokenType.UNPIVOT": {"tf": 1}, "sqlglot.tokens.TokenType.UPDATE": {"tf": 1}, "sqlglot.tokens.TokenType.USE": {"tf": 1}, "sqlglot.tokens.TokenType.USING": {"tf": 1}, "sqlglot.tokens.TokenType.VALUES": {"tf": 1}, "sqlglot.tokens.TokenType.VIEW": {"tf": 1}, "sqlglot.tokens.TokenType.VOLATILE": {"tf": 1}, "sqlglot.tokens.TokenType.WHEN": {"tf": 1}, "sqlglot.tokens.TokenType.WHERE": {"tf": 1}, "sqlglot.tokens.TokenType.WINDOW": {"tf": 1}, "sqlglot.tokens.TokenType.WITH": {"tf": 1}, "sqlglot.tokens.TokenType.WITH_TIME_ZONE": {"tf": 1}, "sqlglot.tokens.TokenType.WITH_LOCAL_TIME_ZONE": {"tf": 1}, "sqlglot.tokens.TokenType.WITHIN_GROUP": {"tf": 1}, "sqlglot.tokens.TokenType.WITHOUT_TIME_ZONE": {"tf": 1}, "sqlglot.tokens.TokenType.UNIQUE": {"tf": 1}}, "df": 392, "e": {"docs": {"sqlglot.tokens.TokenType.LTE": {"tf": 1.4142135623730951}}, "df": 1}}, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.Properties.Location.POST_CREATE": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_NAME": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_SCHEMA": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_WITH": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_ALIAS": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_EXPRESSION": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_INDEX": {"tf": 1}, "sqlglot.expressions.Properties.Location.UNSUPPORTED": {"tf": 1}}, "df": 8}}}}, "l": {"docs": {"sqlglot.tokens.TokenType.LOCAL": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.WITH_LOCAL_TIME_ZONE": {"tf": 1.4142135623730951}}, "df": 2}}}, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.DataType.Type.LONGTEXT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.LONGTEXT": {"tf": 1.4142135623730951}}, "df": 2}}}}, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "b": {"docs": {"sqlglot.expressions.DataType.Type.LONGBLOB": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.LONGBLOB": {"tf": 1.4142135623730951}}, "df": 2}}}}}}, "a": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.tokens.TokenType.LOAD_DATA": {"tf": 1.4142135623730951}}, "df": 1}}}, "r": {"docs": {"sqlglot.tokens.TokenType.LR_ARROW": {"tf": 1.4142135623730951}}, "df": 1}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.LANGUAGE": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.tokens.TokenType.LATERAL": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "z": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.tokens.TokenType.LAZY": {"tf": 1.4142135623730951}}, "df": 1}}, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.NULLS_LAST": {"tf": 1.4142135623730951}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.tokens.TokenType.LEADING": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "f": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.LEFT": {"tf": 1.4142135623730951}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.LIKE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.LIKE_ANY": {"tf": 1.4142135623730951}}, "df": 2}}, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.LIMIT": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "s": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.schema": {"tf": 1}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.Dialects.SQLITE": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.schema": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_SCHEMA": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SCHEMA": {"tf": 1.4142135623730951}}, "df": 3}}}}, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.scope.ScopeType.ROOT": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.SUBQUERY": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.DERIVED_TABLE": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.CTE": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.UNION": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.UDTF": {"tf": 1}}, "df": 6}}}}}}}}, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.Dialects.SNOWFLAKE": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.dialects.dialect.Dialects.SPARK": {"tf": 1.4142135623730951}}, "df": 1}}, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.SPACE": {"tf": 1.4142135623730951}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.tokens.TokenType.STAR": {"tf": 1.4142135623730951}}, "df": 1, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dialects.dialect.Dialects.STARROCKS": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "t": {"docs": {"sqlglot.tokens.TokenType.BLOCK_START": {"tf": 1.4142135623730951}}, "df": 1}}}, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.DataType.Type.STRUCT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.STRUCT": {"tf": 1.4142135623730951}}, "df": 2}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.tokens.TokenType.STRING": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.BIT_STRING": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.HEX_STRING": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.BYTE_STRING": {"tf": 1.4142135623730951}}, "df": 4}}}}}, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.DataType.Type.SMALLINT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SMALLINT": {"tf": 1.4142135623730951}}, "df": 2}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.expressions.DataType.Type.SMALLSERIAL": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SMALLSERIAL": {"tf": 1.4142135623730951}}, "df": 2}}}}}}, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.DataType.Type.SMALLMONEY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SMALLMONEY": {"tf": 1.4142135623730951}}, "df": 2}}}}}}}}}, "u": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.DataType.Type.SUPER": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SUPER": {"tf": 1.4142135623730951}}, "df": 2}}}, "b": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.optimizer.scope.ScopeType.SUBQUERY": {"tf": 1}}, "df": 1}}}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.expressions.DataType.Type.SERIAL": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SERIAL": {"tf": 1.4142135623730951}}, "df": 2}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.SERDE_PROPERTIES": {"tf": 1.4142135623730951}}, "df": 1}}}, "m": {"docs": {}, "df": 0, "i": {"docs": {"sqlglot.tokens.TokenType.SEMI": {"tf": 1.4142135623730951}}, "df": 1, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.tokens.TokenType.SEMICOLON": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.tokens.TokenType.SESSION_PARAMETER": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "t": {"docs": {"sqlglot.tokens.TokenType.CHARACTER_SET": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SET": {"tf": 1.4142135623730951}}, "df": 2, "s": {"docs": {"sqlglot.tokens.TokenType.GROUPING_SETS": {"tf": 1.4142135623730951}}, "df": 1}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.tokens.TokenType.SEED": {"tf": 1.4142135623730951}}, "df": 1}}, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.SELECT": {"tf": 1.4142135623730951}}, "df": 1}}}}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.tokens.TokenType.SEPARATOR": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.tokens.TokenType.SLASH": {"tf": 1.4142135623730951}}, "df": 1}}}}, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {"sqlglot.tokens.TokenType.SHOW": {"tf": 1.4142135623730951}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.tokens.TokenType.SIMILAR_TO": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.SOME": {"tf": 1.4142135623730951}}, "df": 1}}, "r": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.SORT_BY": {"tf": 1.4142135623730951}}, "df": 1, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.tokens.TokenType.SORTKEY": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.TABLE_SAMPLE": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.expressions.DataType.Type.MAP": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.MAP": {"tf": 1.4142135623730951}}, "df": 2, "p": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.schema": {"tf": 1}}, "df": 1}}}}}}}}}}}, "r": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.tokens.TokenType.JOIN_MARKER": {"tf": 1.4142135623730951}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.tokens.TokenType.MATCH_RECOGNIZE": {"tf": 1.4142135623730951}}, "df": 1}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.tokens.TokenType.MATERIALIZED": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}}}}, "y": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.dialects.dialect.Dialects.MYSQL": {"tf": 1.4142135623730951}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.DataType.Type.MEDIUMTEXT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.MEDIUMTEXT": {"tf": 1.4142135623730951}}, "df": 2}}}}, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "b": {"docs": {"sqlglot.expressions.DataType.Type.MEDIUMBLOB": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.MEDIUMBLOB": {"tf": 1.4142135623730951}}, "df": 2}}}}}}}}, "r": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.MERGE": {"tf": 1.4142135623730951}}, "df": 1}}}}, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.DataType.Type.MONEY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.MONEY": {"tf": 1.4142135623730951}}, "df": 2}}}, "d": {"docs": {"sqlglot.tokens.TokenType.MOD": {"tf": 1.4142135623730951}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "j": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.schema": {"tf": 1}, "sqlglot.expressions.DataType.Type.OBJECT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.OBJECT": {"tf": 1.4142135623730951}}, "df": 3}}}}}, "r": {"docs": {"sqlglot.tokens.TokenType.OR": {"tf": 1.4142135623730951}}, "df": 1, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.Dialects.ORACLE": {"tf": 1.4142135623730951}}, "df": 1}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.tokens.TokenType.ORDER_BY": {"tf": 1.4142135623730951}}, "df": 1, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.tokens.TokenType.ORDERED": {"tf": 1.4142135623730951}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.tokens.TokenType.ORDINALITY": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}}, "f": {"docs": {"sqlglot.tokens.TokenType.OUT_OF": {"tf": 1.4142135623730951}}, "df": 1, "f": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.OFFSET": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "n": {"docs": {"sqlglot.tokens.TokenType.ON": {"tf": 1.4142135623730951}}, "df": 1, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.tokens.TokenType.ONLY": {"tf": 1.4142135623730951}}, "df": 1}}}, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.tokens.TokenType.OPTIONS": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "u": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.OUT_OF": {"tf": 1.4142135623730951}}, "df": 1, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.tokens.TokenType.OUTER": {"tf": 1.4142135623730951}}, "df": 1}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.tokens.TokenType.OVER": {"tf": 1.4142135623730951}}, "df": 1, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.tokens.TokenType.OVERLAPS": {"tf": 1.4142135623730951}}, "df": 1}}}}, "w": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.OVERWRITE": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}}, "g": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.schema": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.DIALECT": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.BIGQUERY": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.CLICKHOUSE": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.DUCKDB": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.HIVE": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.MYSQL": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.ORACLE": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.POSTGRES": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.PRESTO": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.REDSHIFT": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.SNOWFLAKE": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.SPARK": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.SQLITE": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.STARROCKS": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.TABLEAU": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.TRINO": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.TSQL": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.DATABRICKS": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.DRILL": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.TERADATA": {"tf": 1}, "sqlglot.errors.ErrorLevel.IGNORE": {"tf": 1}, "sqlglot.errors.ErrorLevel.WARN": {"tf": 1}, "sqlglot.errors.ErrorLevel.RAISE": {"tf": 1}, "sqlglot.errors.ErrorLevel.IMMEDIATE": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_CREATE": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_NAME": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_SCHEMA": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_WITH": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_ALIAS": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_EXPRESSION": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_INDEX": {"tf": 1}, "sqlglot.expressions.Properties.Location.UNSUPPORTED": {"tf": 1}, "sqlglot.expressions.DataType.Type.CHAR": {"tf": 1}, "sqlglot.expressions.DataType.Type.NCHAR": {"tf": 1}, "sqlglot.expressions.DataType.Type.VARCHAR": {"tf": 1}, "sqlglot.expressions.DataType.Type.NVARCHAR": {"tf": 1}, "sqlglot.expressions.DataType.Type.TEXT": {"tf": 1}, "sqlglot.expressions.DataType.Type.MEDIUMTEXT": {"tf": 1}, "sqlglot.expressions.DataType.Type.LONGTEXT": {"tf": 1}, "sqlglot.expressions.DataType.Type.MEDIUMBLOB": {"tf": 1}, "sqlglot.expressions.DataType.Type.LONGBLOB": {"tf": 1}, "sqlglot.expressions.DataType.Type.BINARY": {"tf": 1}, "sqlglot.expressions.DataType.Type.VARBINARY": {"tf": 1}, "sqlglot.expressions.DataType.Type.INT": {"tf": 1}, "sqlglot.expressions.DataType.Type.UINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.TINYINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.UTINYINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.SMALLINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.USMALLINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.BIGINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.UBIGINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.FLOAT": {"tf": 1}, "sqlglot.expressions.DataType.Type.DOUBLE": {"tf": 1}, "sqlglot.expressions.DataType.Type.DECIMAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.BIT": {"tf": 1}, "sqlglot.expressions.DataType.Type.BOOLEAN": {"tf": 1}, "sqlglot.expressions.DataType.Type.JSON": {"tf": 1}, "sqlglot.expressions.DataType.Type.JSONB": {"tf": 1}, "sqlglot.expressions.DataType.Type.INTERVAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.TIME": {"tf": 1}, "sqlglot.expressions.DataType.Type.TIMESTAMP": {"tf": 1}, "sqlglot.expressions.DataType.Type.TIMESTAMPTZ": {"tf": 1}, "sqlglot.expressions.DataType.Type.TIMESTAMPLTZ": {"tf": 1}, "sqlglot.expressions.DataType.Type.DATE": {"tf": 1}, "sqlglot.expressions.DataType.Type.DATETIME": {"tf": 1}, "sqlglot.expressions.DataType.Type.ARRAY": {"tf": 1}, "sqlglot.expressions.DataType.Type.MAP": {"tf": 1}, "sqlglot.expressions.DataType.Type.UUID": {"tf": 1}, "sqlglot.expressions.DataType.Type.GEOGRAPHY": {"tf": 1}, "sqlglot.expressions.DataType.Type.GEOMETRY": {"tf": 1}, "sqlglot.expressions.DataType.Type.STRUCT": {"tf": 1}, "sqlglot.expressions.DataType.Type.NULLABLE": {"tf": 1}, "sqlglot.expressions.DataType.Type.HLLSKETCH": {"tf": 1}, "sqlglot.expressions.DataType.Type.HSTORE": {"tf": 1}, "sqlglot.expressions.DataType.Type.SUPER": {"tf": 1}, "sqlglot.expressions.DataType.Type.SERIAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.SMALLSERIAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.BIGSERIAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.XML": {"tf": 1}, "sqlglot.expressions.DataType.Type.UNIQUEIDENTIFIER": {"tf": 1}, "sqlglot.expressions.DataType.Type.MONEY": {"tf": 1}, "sqlglot.expressions.DataType.Type.SMALLMONEY": {"tf": 1}, "sqlglot.expressions.DataType.Type.ROWVERSION": {"tf": 1}, "sqlglot.expressions.DataType.Type.IMAGE": {"tf": 1}, "sqlglot.expressions.DataType.Type.VARIANT": {"tf": 1}, "sqlglot.expressions.DataType.Type.OBJECT": {"tf": 1}, "sqlglot.expressions.DataType.Type.INET": {"tf": 1}, "sqlglot.expressions.DataType.Type.NULL": {"tf": 1}, "sqlglot.expressions.DataType.Type.UNKNOWN": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.ROOT": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.SUBQUERY": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.DERIVED_TABLE": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.CTE": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.UNION": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.UDTF": {"tf": 1}, "sqlglot.tokens.TokenType.L_PAREN": {"tf": 1}, "sqlglot.tokens.TokenType.R_PAREN": {"tf": 1}, "sqlglot.tokens.TokenType.L_BRACKET": {"tf": 1}, "sqlglot.tokens.TokenType.R_BRACKET": {"tf": 1}, "sqlglot.tokens.TokenType.L_BRACE": {"tf": 1}, "sqlglot.tokens.TokenType.R_BRACE": {"tf": 1}, "sqlglot.tokens.TokenType.COMMA": {"tf": 1}, "sqlglot.tokens.TokenType.DOT": {"tf": 1}, "sqlglot.tokens.TokenType.DASH": {"tf": 1}, "sqlglot.tokens.TokenType.PLUS": {"tf": 1}, "sqlglot.tokens.TokenType.COLON": {"tf": 1}, "sqlglot.tokens.TokenType.DCOLON": {"tf": 1}, "sqlglot.tokens.TokenType.SEMICOLON": {"tf": 1}, "sqlglot.tokens.TokenType.STAR": {"tf": 1}, "sqlglot.tokens.TokenType.BACKSLASH": {"tf": 1}, "sqlglot.tokens.TokenType.SLASH": {"tf": 1}, "sqlglot.tokens.TokenType.LT": {"tf": 1}, "sqlglot.tokens.TokenType.LTE": {"tf": 1}, "sqlglot.tokens.TokenType.GT": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.GTE": {"tf": 1}, "sqlglot.tokens.TokenType.NOT": {"tf": 1}, "sqlglot.tokens.TokenType.EQ": {"tf": 1}, "sqlglot.tokens.TokenType.NEQ": {"tf": 1}, "sqlglot.tokens.TokenType.NULLSAFE_EQ": {"tf": 1}, "sqlglot.tokens.TokenType.AND": {"tf": 1}, "sqlglot.tokens.TokenType.OR": {"tf": 1}, "sqlglot.tokens.TokenType.AMP": {"tf": 1}, "sqlglot.tokens.TokenType.DPIPE": {"tf": 1}, "sqlglot.tokens.TokenType.PIPE": {"tf": 1}, "sqlglot.tokens.TokenType.CARET": {"tf": 1}, "sqlglot.tokens.TokenType.TILDA": {"tf": 1}, "sqlglot.tokens.TokenType.ARROW": {"tf": 1}, "sqlglot.tokens.TokenType.DARROW": {"tf": 1}, "sqlglot.tokens.TokenType.FARROW": {"tf": 1}, "sqlglot.tokens.TokenType.HASH": {"tf": 1}, "sqlglot.tokens.TokenType.HASH_ARROW": {"tf": 1}, "sqlglot.tokens.TokenType.DHASH_ARROW": {"tf": 1}, "sqlglot.tokens.TokenType.LR_ARROW": {"tf": 1}, "sqlglot.tokens.TokenType.LT_AT": {"tf": 1}, "sqlglot.tokens.TokenType.AT_GT": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.DOLLAR": {"tf": 1}, "sqlglot.tokens.TokenType.PARAMETER": {"tf": 1}, "sqlglot.tokens.TokenType.SESSION_PARAMETER": {"tf": 1}, "sqlglot.tokens.TokenType.NATIONAL": {"tf": 1}, "sqlglot.tokens.TokenType.DAMP": {"tf": 1}, "sqlglot.tokens.TokenType.BLOCK_START": {"tf": 1}, "sqlglot.tokens.TokenType.BLOCK_END": {"tf": 1}, "sqlglot.tokens.TokenType.SPACE": {"tf": 1}, "sqlglot.tokens.TokenType.BREAK": {"tf": 1}, "sqlglot.tokens.TokenType.STRING": {"tf": 1}, "sqlglot.tokens.TokenType.NUMBER": {"tf": 1}, "sqlglot.tokens.TokenType.IDENTIFIER": {"tf": 1}, "sqlglot.tokens.TokenType.DATABASE": {"tf": 1}, "sqlglot.tokens.TokenType.COLUMN": {"tf": 1}, "sqlglot.tokens.TokenType.COLUMN_DEF": {"tf": 1}, "sqlglot.tokens.TokenType.SCHEMA": {"tf": 1}, "sqlglot.tokens.TokenType.TABLE": {"tf": 1}, "sqlglot.tokens.TokenType.VAR": {"tf": 1}, "sqlglot.tokens.TokenType.BIT_STRING": {"tf": 1}, "sqlglot.tokens.TokenType.HEX_STRING": {"tf": 1}, "sqlglot.tokens.TokenType.BYTE_STRING": {"tf": 1}, "sqlglot.tokens.TokenType.BIT": {"tf": 1}, "sqlglot.tokens.TokenType.BOOLEAN": {"tf": 1}, "sqlglot.tokens.TokenType.TINYINT": {"tf": 1}, "sqlglot.tokens.TokenType.UTINYINT": {"tf": 1}, "sqlglot.tokens.TokenType.SMALLINT": {"tf": 1}, "sqlglot.tokens.TokenType.USMALLINT": {"tf": 1}, "sqlglot.tokens.TokenType.INT": {"tf": 1}, "sqlglot.tokens.TokenType.UINT": {"tf": 1}, "sqlglot.tokens.TokenType.BIGINT": {"tf": 1}, "sqlglot.tokens.TokenType.UBIGINT": {"tf": 1}, "sqlglot.tokens.TokenType.FLOAT": {"tf": 1}, "sqlglot.tokens.TokenType.DOUBLE": {"tf": 1}, "sqlglot.tokens.TokenType.DECIMAL": {"tf": 1}, "sqlglot.tokens.TokenType.CHAR": {"tf": 1}, "sqlglot.tokens.TokenType.NCHAR": {"tf": 1}, "sqlglot.tokens.TokenType.VARCHAR": {"tf": 1}, "sqlglot.tokens.TokenType.NVARCHAR": {"tf": 1}, "sqlglot.tokens.TokenType.TEXT": {"tf": 1}, "sqlglot.tokens.TokenType.MEDIUMTEXT": {"tf": 1}, "sqlglot.tokens.TokenType.LONGTEXT": {"tf": 1}, "sqlglot.tokens.TokenType.MEDIUMBLOB": {"tf": 1}, "sqlglot.tokens.TokenType.LONGBLOB": {"tf": 1}, "sqlglot.tokens.TokenType.BINARY": {"tf": 1}, "sqlglot.tokens.TokenType.VARBINARY": {"tf": 1}, "sqlglot.tokens.TokenType.JSON": {"tf": 1}, "sqlglot.tokens.TokenType.JSONB": {"tf": 1}, "sqlglot.tokens.TokenType.TIME": {"tf": 1}, "sqlglot.tokens.TokenType.TIMESTAMP": {"tf": 1}, "sqlglot.tokens.TokenType.TIMESTAMPTZ": {"tf": 1}, "sqlglot.tokens.TokenType.TIMESTAMPLTZ": {"tf": 1}, "sqlglot.tokens.TokenType.DATETIME": {"tf": 1}, "sqlglot.tokens.TokenType.DATE": {"tf": 1}, "sqlglot.tokens.TokenType.UUID": {"tf": 1}, "sqlglot.tokens.TokenType.GEOGRAPHY": {"tf": 1}, "sqlglot.tokens.TokenType.NULLABLE": {"tf": 1}, "sqlglot.tokens.TokenType.GEOMETRY": {"tf": 1}, "sqlglot.tokens.TokenType.HLLSKETCH": {"tf": 1}, "sqlglot.tokens.TokenType.HSTORE": {"tf": 1}, "sqlglot.tokens.TokenType.SUPER": {"tf": 1}, "sqlglot.tokens.TokenType.SERIAL": {"tf": 1}, "sqlglot.tokens.TokenType.SMALLSERIAL": {"tf": 1}, "sqlglot.tokens.TokenType.BIGSERIAL": {"tf": 1}, "sqlglot.tokens.TokenType.XML": {"tf": 1}, "sqlglot.tokens.TokenType.UNIQUEIDENTIFIER": {"tf": 1}, "sqlglot.tokens.TokenType.MONEY": {"tf": 1}, "sqlglot.tokens.TokenType.SMALLMONEY": {"tf": 1}, "sqlglot.tokens.TokenType.ROWVERSION": {"tf": 1}, "sqlglot.tokens.TokenType.IMAGE": {"tf": 1}, "sqlglot.tokens.TokenType.VARIANT": {"tf": 1}, "sqlglot.tokens.TokenType.OBJECT": {"tf": 1}, "sqlglot.tokens.TokenType.INET": {"tf": 1}, "sqlglot.tokens.TokenType.ALIAS": {"tf": 1}, "sqlglot.tokens.TokenType.ALTER": {"tf": 1}, "sqlglot.tokens.TokenType.ALWAYS": {"tf": 1}, "sqlglot.tokens.TokenType.ALL": {"tf": 1}, "sqlglot.tokens.TokenType.ANTI": {"tf": 1}, "sqlglot.tokens.TokenType.ANY": {"tf": 1}, "sqlglot.tokens.TokenType.APPLY": {"tf": 1}, "sqlglot.tokens.TokenType.ARRAY": {"tf": 1}, "sqlglot.tokens.TokenType.ASC": {"tf": 1}, "sqlglot.tokens.TokenType.ASOF": {"tf": 1}, "sqlglot.tokens.TokenType.AT_TIME_ZONE": {"tf": 1}, "sqlglot.tokens.TokenType.AUTO_INCREMENT": {"tf": 1}, "sqlglot.tokens.TokenType.BEGIN": {"tf": 1}, "sqlglot.tokens.TokenType.BETWEEN": {"tf": 1}, "sqlglot.tokens.TokenType.BOTH": {"tf": 1}, "sqlglot.tokens.TokenType.BUCKET": {"tf": 1}, "sqlglot.tokens.TokenType.BY_DEFAULT": {"tf": 1}, "sqlglot.tokens.TokenType.CACHE": {"tf": 1}, "sqlglot.tokens.TokenType.CASCADE": {"tf": 1}, "sqlglot.tokens.TokenType.CASE": {"tf": 1}, "sqlglot.tokens.TokenType.CHARACTER_SET": {"tf": 1}, "sqlglot.tokens.TokenType.CLUSTER_BY": {"tf": 1}, "sqlglot.tokens.TokenType.COLLATE": {"tf": 1}, "sqlglot.tokens.TokenType.COMMAND": {"tf": 1}, "sqlglot.tokens.TokenType.COMMENT": {"tf": 1}, "sqlglot.tokens.TokenType.COMMIT": {"tf": 1}, "sqlglot.tokens.TokenType.COMPOUND": {"tf": 1}, "sqlglot.tokens.TokenType.CONSTRAINT": {"tf": 1}, "sqlglot.tokens.TokenType.CREATE": {"tf": 1}, "sqlglot.tokens.TokenType.CROSS": {"tf": 1}, "sqlglot.tokens.TokenType.CUBE": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_DATE": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_DATETIME": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_ROW": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_TIME": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_TIMESTAMP": {"tf": 1}, "sqlglot.tokens.TokenType.DEFAULT": {"tf": 1}, "sqlglot.tokens.TokenType.DELETE": {"tf": 1}, "sqlglot.tokens.TokenType.DESC": {"tf": 1}, "sqlglot.tokens.TokenType.DESCRIBE": {"tf": 1}, "sqlglot.tokens.TokenType.DISTINCT": {"tf": 1}, "sqlglot.tokens.TokenType.DISTINCT_FROM": {"tf": 1}, "sqlglot.tokens.TokenType.DISTRIBUTE_BY": {"tf": 1}, "sqlglot.tokens.TokenType.DIV": {"tf": 1}, "sqlglot.tokens.TokenType.DROP": {"tf": 1}, "sqlglot.tokens.TokenType.ELSE": {"tf": 1}, "sqlglot.tokens.TokenType.END": {"tf": 1}, "sqlglot.tokens.TokenType.ESCAPE": {"tf": 1}, "sqlglot.tokens.TokenType.EXCEPT": {"tf": 1}, "sqlglot.tokens.TokenType.EXECUTE": {"tf": 1}, "sqlglot.tokens.TokenType.EXISTS": {"tf": 1}, "sqlglot.tokens.TokenType.FALSE": {"tf": 1}, "sqlglot.tokens.TokenType.FETCH": {"tf": 1}, "sqlglot.tokens.TokenType.FILTER": {"tf": 1}, "sqlglot.tokens.TokenType.FINAL": {"tf": 1}, "sqlglot.tokens.TokenType.FIRST": {"tf": 1}, "sqlglot.tokens.TokenType.FOLLOWING": {"tf": 1}, "sqlglot.tokens.TokenType.FOR": {"tf": 1}, "sqlglot.tokens.TokenType.FOREIGN_KEY": {"tf": 1}, "sqlglot.tokens.TokenType.FORMAT": {"tf": 1}, "sqlglot.tokens.TokenType.FROM": {"tf": 1}, "sqlglot.tokens.TokenType.FULL": {"tf": 1}, "sqlglot.tokens.TokenType.FUNCTION": {"tf": 1}, "sqlglot.tokens.TokenType.GLOB": {"tf": 1}, "sqlglot.tokens.TokenType.GLOBAL": {"tf": 1}, "sqlglot.tokens.TokenType.GROUP_BY": {"tf": 1}, "sqlglot.tokens.TokenType.GROUPING_SETS": {"tf": 1}, "sqlglot.tokens.TokenType.HAVING": {"tf": 1}, "sqlglot.tokens.TokenType.HINT": {"tf": 1}, "sqlglot.tokens.TokenType.IF": {"tf": 1}, "sqlglot.tokens.TokenType.IGNORE_NULLS": {"tf": 1}, "sqlglot.tokens.TokenType.ILIKE": {"tf": 1}, "sqlglot.tokens.TokenType.ILIKE_ANY": {"tf": 1}, "sqlglot.tokens.TokenType.IN": {"tf": 1}, "sqlglot.tokens.TokenType.INDEX": {"tf": 1}, "sqlglot.tokens.TokenType.INNER": {"tf": 1}, "sqlglot.tokens.TokenType.INSERT": {"tf": 1}, "sqlglot.tokens.TokenType.INTERSECT": {"tf": 1}, "sqlglot.tokens.TokenType.INTERVAL": {"tf": 1}, "sqlglot.tokens.TokenType.INTO": {"tf": 1}, "sqlglot.tokens.TokenType.INTRODUCER": {"tf": 1}, "sqlglot.tokens.TokenType.IRLIKE": {"tf": 1}, "sqlglot.tokens.TokenType.IS": {"tf": 1}, "sqlglot.tokens.TokenType.ISNULL": {"tf": 1}, "sqlglot.tokens.TokenType.JOIN": {"tf": 1}, "sqlglot.tokens.TokenType.JOIN_MARKER": {"tf": 1}, "sqlglot.tokens.TokenType.LANGUAGE": {"tf": 1}, "sqlglot.tokens.TokenType.LATERAL": {"tf": 1}, "sqlglot.tokens.TokenType.LAZY": {"tf": 1}, "sqlglot.tokens.TokenType.LEADING": {"tf": 1}, "sqlglot.tokens.TokenType.LEFT": {"tf": 1}, "sqlglot.tokens.TokenType.LIKE": {"tf": 1}, "sqlglot.tokens.TokenType.LIKE_ANY": {"tf": 1}, "sqlglot.tokens.TokenType.LIMIT": {"tf": 1}, "sqlglot.tokens.TokenType.LOAD_DATA": {"tf": 1}, "sqlglot.tokens.TokenType.LOCAL": {"tf": 1}, "sqlglot.tokens.TokenType.MAP": {"tf": 1}, "sqlglot.tokens.TokenType.MATCH_RECOGNIZE": {"tf": 1}, "sqlglot.tokens.TokenType.MATERIALIZED": {"tf": 1}, "sqlglot.tokens.TokenType.MERGE": {"tf": 1}, "sqlglot.tokens.TokenType.MOD": {"tf": 1}, "sqlglot.tokens.TokenType.NATURAL": {"tf": 1}, "sqlglot.tokens.TokenType.NEXT": {"tf": 1}, "sqlglot.tokens.TokenType.NO_ACTION": {"tf": 1}, "sqlglot.tokens.TokenType.NOTNULL": {"tf": 1}, "sqlglot.tokens.TokenType.NULL": {"tf": 1}, "sqlglot.tokens.TokenType.NULLS_FIRST": {"tf": 1}, "sqlglot.tokens.TokenType.NULLS_LAST": {"tf": 1}, "sqlglot.tokens.TokenType.OFFSET": {"tf": 1}, "sqlglot.tokens.TokenType.ON": {"tf": 1}, "sqlglot.tokens.TokenType.ONLY": {"tf": 1}, "sqlglot.tokens.TokenType.OPTIONS": {"tf": 1}, "sqlglot.tokens.TokenType.ORDER_BY": {"tf": 1}, "sqlglot.tokens.TokenType.ORDERED": {"tf": 1}, "sqlglot.tokens.TokenType.ORDINALITY": {"tf": 1}, "sqlglot.tokens.TokenType.OUTER": {"tf": 1}, "sqlglot.tokens.TokenType.OUT_OF": {"tf": 1}, "sqlglot.tokens.TokenType.OVER": {"tf": 1}, "sqlglot.tokens.TokenType.OVERLAPS": {"tf": 1}, "sqlglot.tokens.TokenType.OVERWRITE": {"tf": 1}, "sqlglot.tokens.TokenType.PARTITION": {"tf": 1}, "sqlglot.tokens.TokenType.PARTITION_BY": {"tf": 1}, "sqlglot.tokens.TokenType.PERCENT": {"tf": 1}, "sqlglot.tokens.TokenType.PIVOT": {"tf": 1}, "sqlglot.tokens.TokenType.PLACEHOLDER": {"tf": 1}, "sqlglot.tokens.TokenType.PRAGMA": {"tf": 1}, "sqlglot.tokens.TokenType.PRECEDING": {"tf": 1}, "sqlglot.tokens.TokenType.PRIMARY_KEY": {"tf": 1}, "sqlglot.tokens.TokenType.PROCEDURE": {"tf": 1}, "sqlglot.tokens.TokenType.PROPERTIES": {"tf": 1}, "sqlglot.tokens.TokenType.PSEUDO_TYPE": {"tf": 1}, "sqlglot.tokens.TokenType.QUALIFY": {"tf": 1}, "sqlglot.tokens.TokenType.QUOTE": {"tf": 1}, "sqlglot.tokens.TokenType.RANGE": {"tf": 1}, "sqlglot.tokens.TokenType.RECURSIVE": {"tf": 1}, "sqlglot.tokens.TokenType.REPLACE": {"tf": 1}, "sqlglot.tokens.TokenType.RESPECT_NULLS": {"tf": 1}, "sqlglot.tokens.TokenType.RETURNING": {"tf": 1}, "sqlglot.tokens.TokenType.REFERENCES": {"tf": 1}, "sqlglot.tokens.TokenType.RIGHT": {"tf": 1}, "sqlglot.tokens.TokenType.RLIKE": {"tf": 1}, "sqlglot.tokens.TokenType.ROLLBACK": {"tf": 1}, "sqlglot.tokens.TokenType.ROLLUP": {"tf": 1}, "sqlglot.tokens.TokenType.ROW": {"tf": 1}, "sqlglot.tokens.TokenType.ROWS": {"tf": 1}, "sqlglot.tokens.TokenType.SEED": {"tf": 1}, "sqlglot.tokens.TokenType.SELECT": {"tf": 1}, "sqlglot.tokens.TokenType.SEMI": {"tf": 1}, "sqlglot.tokens.TokenType.SEPARATOR": {"tf": 1}, "sqlglot.tokens.TokenType.SERDE_PROPERTIES": {"tf": 1}, "sqlglot.tokens.TokenType.SET": {"tf": 1}, "sqlglot.tokens.TokenType.SHOW": {"tf": 1}, "sqlglot.tokens.TokenType.SIMILAR_TO": {"tf": 1}, "sqlglot.tokens.TokenType.SOME": {"tf": 1}, "sqlglot.tokens.TokenType.SORTKEY": {"tf": 1}, "sqlglot.tokens.TokenType.SORT_BY": {"tf": 1}, "sqlglot.tokens.TokenType.STRUCT": {"tf": 1}, "sqlglot.tokens.TokenType.TABLE_SAMPLE": {"tf": 1}, "sqlglot.tokens.TokenType.TEMPORARY": {"tf": 1}, "sqlglot.tokens.TokenType.TOP": {"tf": 1}, "sqlglot.tokens.TokenType.THEN": {"tf": 1}, "sqlglot.tokens.TokenType.TRAILING": {"tf": 1}, "sqlglot.tokens.TokenType.TRUE": {"tf": 1}, "sqlglot.tokens.TokenType.UNBOUNDED": {"tf": 1}, "sqlglot.tokens.TokenType.UNCACHE": {"tf": 1}, "sqlglot.tokens.TokenType.UNION": {"tf": 1}, "sqlglot.tokens.TokenType.UNLOGGED": {"tf": 1}, "sqlglot.tokens.TokenType.UNNEST": {"tf": 1}, "sqlglot.tokens.TokenType.UNPIVOT": {"tf": 1}, "sqlglot.tokens.TokenType.UPDATE": {"tf": 1}, "sqlglot.tokens.TokenType.USE": {"tf": 1}, "sqlglot.tokens.TokenType.USING": {"tf": 1}, "sqlglot.tokens.TokenType.VALUES": {"tf": 1}, "sqlglot.tokens.TokenType.VIEW": {"tf": 1}, "sqlglot.tokens.TokenType.VOLATILE": {"tf": 1}, "sqlglot.tokens.TokenType.WHEN": {"tf": 1}, "sqlglot.tokens.TokenType.WHERE": {"tf": 1}, "sqlglot.tokens.TokenType.WINDOW": {"tf": 1}, "sqlglot.tokens.TokenType.WITH": {"tf": 1}, "sqlglot.tokens.TokenType.WITH_TIME_ZONE": {"tf": 1}, "sqlglot.tokens.TokenType.WITH_LOCAL_TIME_ZONE": {"tf": 1}, "sqlglot.tokens.TokenType.WITHIN_GROUP": {"tf": 1}, "sqlglot.tokens.TokenType.WITHOUT_TIME_ZONE": {"tf": 1}, "sqlglot.tokens.TokenType.UNIQUE": {"tf": 1}}, "df": 392, "e": {"docs": {"sqlglot.tokens.TokenType.GTE": {"tf": 1.4142135623730951}}, "df": 1}}, "e": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.DataType.Type.GEOGRAPHY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.GEOGRAPHY": {"tf": 1.4142135623730951}}, "df": 2}}}}}}, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.DataType.Type.GEOMETRY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.GEOMETRY": {"tf": 1.4142135623730951}}, "df": 2}}}}}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "b": {"docs": {"sqlglot.tokens.TokenType.GLOB": {"tf": 1.4142135623730951}}, "df": 1, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.tokens.TokenType.GLOBAL": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.tokens.TokenType.GROUP_BY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.WITHIN_GROUP": {"tf": 1.4142135623730951}}, "df": 2, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.tokens.TokenType.GROUPING_SETS": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.dialect.Dialects.DIALECT": {"tf": 1}}, "df": 1, "s": {"docs": {"sqlglot.dialects.dialect.Dialects.DIALECT": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.BIGQUERY": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.CLICKHOUSE": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.DUCKDB": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.HIVE": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.MYSQL": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.ORACLE": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.POSTGRES": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.PRESTO": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.REDSHIFT": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.SNOWFLAKE": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.SPARK": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.SQLITE": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.STARROCKS": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.TABLEAU": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.TRINO": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.TSQL": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.DATABRICKS": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.DRILL": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.TERADATA": {"tf": 1}}, "df": 20}}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.DISTINCT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DISTINCT_FROM": {"tf": 1.4142135623730951}}, "df": 2}}}}, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.DISTRIBUTE_BY": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}, "v": {"docs": {"sqlglot.tokens.TokenType.DIV": {"tf": 1.4142135623730951}}, "df": 1}}, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "b": {"docs": {"sqlglot.dialects.dialect.Dialects.DUCKDB": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.tokens.TokenType.LOAD_DATA": {"tf": 1.4142135623730951}}, "df": 1, "b": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dialects.dialect.Dialects.DATABRICKS": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.DATABASE": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "e": {"docs": {"sqlglot.expressions.DataType.Type.DATE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DATE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.CURRENT_DATE": {"tf": 1.4142135623730951}}, "df": 3, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.DataType.Type.DATETIME": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DATETIME": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.CURRENT_DATETIME": {"tf": 1.4142135623730951}}, "df": 3}}}}}}, "s": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.tokens.TokenType.DASH": {"tf": 1.4142135623730951}}, "df": 1}}, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {"sqlglot.tokens.TokenType.DARROW": {"tf": 1.4142135623730951}}, "df": 1}}}}, "m": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.tokens.TokenType.DAMP": {"tf": 1.4142135623730951}}, "df": 1}}}, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.dialects.dialect.Dialects.DRILL": {"tf": 1.4142135623730951}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.tokens.TokenType.DROP": {"tf": 1.4142135623730951}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.DataType.Type.DOUBLE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DOUBLE": {"tf": 1.4142135623730951}}, "df": 2}}}}, "t": {"docs": {"sqlglot.tokens.TokenType.DOT": {"tf": 1.4142135623730951}}, "df": 1}, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.tokens.TokenType.DOLLAR": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.expressions.DataType.Type.DECIMAL": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DECIMAL": {"tf": 1.4142135623730951}}, "df": 2}}}}}, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.optimizer.scope.ScopeType.DERIVED_TABLE": {"tf": 1}}, "df": 1}}}}}, "f": {"docs": {"sqlglot.tokens.TokenType.COLUMN_DEF": {"tf": 1.4142135623730951}}, "df": 1, "a": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.BY_DEFAULT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DEFAULT": {"tf": 1.4142135623730951}}, "df": 2}}}}}, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.DELETE": {"tf": 1.4142135623730951}}, "df": 1}}}}, "s": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot.tokens.TokenType.DESC": {"tf": 1.4142135623730951}}, "df": 1, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.DESCRIBE": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.tokens.TokenType.DCOLON": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "p": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.DPIPE": {"tf": 1.4142135623730951}}, "df": 1}}}}, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.tokens.TokenType.DHASH_ARROW": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "x": {"2": {"7": {"docs": {"sqlglot.dialects.dialect.Dialects.DIALECT": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.BIGQUERY": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.CLICKHOUSE": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.DUCKDB": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.HIVE": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.MYSQL": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.ORACLE": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.POSTGRES": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.PRESTO": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.REDSHIFT": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.SNOWFLAKE": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.SPARK": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.SQLITE": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.STARROCKS": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.TABLEAU": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.TRINO": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.TSQL": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.DATABRICKS": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.DRILL": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.TERADATA": {"tf": 1.4142135623730951}, "sqlglot.errors.ErrorLevel.IGNORE": {"tf": 1.4142135623730951}, "sqlglot.errors.ErrorLevel.WARN": {"tf": 1.4142135623730951}, "sqlglot.errors.ErrorLevel.RAISE": {"tf": 1.4142135623730951}, "sqlglot.errors.ErrorLevel.IMMEDIATE": {"tf": 1.4142135623730951}, "sqlglot.expressions.Properties.Location.POST_CREATE": {"tf": 1.4142135623730951}, "sqlglot.expressions.Properties.Location.POST_NAME": {"tf": 1.4142135623730951}, "sqlglot.expressions.Properties.Location.POST_SCHEMA": {"tf": 1.4142135623730951}, "sqlglot.expressions.Properties.Location.POST_WITH": {"tf": 1.4142135623730951}, "sqlglot.expressions.Properties.Location.POST_ALIAS": {"tf": 1.4142135623730951}, "sqlglot.expressions.Properties.Location.POST_EXPRESSION": {"tf": 1.4142135623730951}, "sqlglot.expressions.Properties.Location.POST_INDEX": {"tf": 1.4142135623730951}, "sqlglot.expressions.Properties.Location.UNSUPPORTED": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.CHAR": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.NCHAR": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.VARCHAR": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.NVARCHAR": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.TEXT": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.MEDIUMTEXT": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.LONGTEXT": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.MEDIUMBLOB": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.LONGBLOB": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.BINARY": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.VARBINARY": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.INT": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.UINT": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.TINYINT": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.UTINYINT": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.SMALLINT": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.USMALLINT": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.BIGINT": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.UBIGINT": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.FLOAT": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.DOUBLE": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.DECIMAL": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.BIT": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.BOOLEAN": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.JSON": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.JSONB": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.INTERVAL": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.TIME": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.TIMESTAMP": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.TIMESTAMPTZ": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.TIMESTAMPLTZ": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.DATE": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.DATETIME": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.ARRAY": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.MAP": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.UUID": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.GEOGRAPHY": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.GEOMETRY": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.STRUCT": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.NULLABLE": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.HLLSKETCH": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.HSTORE": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.SUPER": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.SERIAL": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.SMALLSERIAL": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.BIGSERIAL": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.XML": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.UNIQUEIDENTIFIER": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.MONEY": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.SMALLMONEY": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.ROWVERSION": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.IMAGE": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.VARIANT": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.OBJECT": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.INET": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.NULL": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.UNKNOWN": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.L_PAREN": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.R_PAREN": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.L_BRACKET": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.R_BRACKET": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.L_BRACE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.R_BRACE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.COMMA": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DOT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DASH": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.PLUS": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.COLON": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DCOLON": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SEMICOLON": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.STAR": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.BACKSLASH": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SLASH": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.LT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.LTE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.GT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.GTE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.NOT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.EQ": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.NEQ": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.NULLSAFE_EQ": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.AND": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.OR": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.AMP": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DPIPE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.PIPE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.CARET": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.TILDA": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ARROW": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DARROW": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.FARROW": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.HASH": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.HASH_ARROW": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DHASH_ARROW": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.LR_ARROW": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.LT_AT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.AT_GT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DOLLAR": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.PARAMETER": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SESSION_PARAMETER": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.NATIONAL": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DAMP": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.BLOCK_START": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.BLOCK_END": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SPACE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.BREAK": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.STRING": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.NUMBER": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.IDENTIFIER": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DATABASE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.COLUMN": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.COLUMN_DEF": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SCHEMA": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.TABLE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.VAR": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.BIT_STRING": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.HEX_STRING": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.BYTE_STRING": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.BIT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.BOOLEAN": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.TINYINT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.UTINYINT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SMALLINT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.USMALLINT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.INT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.UINT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.BIGINT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.UBIGINT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.FLOAT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DOUBLE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DECIMAL": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.CHAR": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.NCHAR": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.VARCHAR": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.NVARCHAR": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.TEXT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.MEDIUMTEXT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.LONGTEXT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.MEDIUMBLOB": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.LONGBLOB": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.BINARY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.VARBINARY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.JSON": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.JSONB": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.TIME": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.TIMESTAMP": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.TIMESTAMPTZ": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.TIMESTAMPLTZ": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DATETIME": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DATE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.UUID": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.GEOGRAPHY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.NULLABLE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.GEOMETRY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.HLLSKETCH": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.HSTORE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SUPER": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SERIAL": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SMALLSERIAL": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.BIGSERIAL": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.XML": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.UNIQUEIDENTIFIER": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.MONEY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SMALLMONEY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ROWVERSION": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.IMAGE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.VARIANT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.OBJECT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.INET": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ALIAS": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ALTER": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ALWAYS": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ALL": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ANTI": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ANY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.APPLY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ARRAY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ASC": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ASOF": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.AT_TIME_ZONE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.AUTO_INCREMENT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.BEGIN": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.BETWEEN": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.BOTH": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.BUCKET": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.BY_DEFAULT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.CACHE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.CASCADE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.CASE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.CHARACTER_SET": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.CLUSTER_BY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.COLLATE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.COMMAND": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.COMMENT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.COMMIT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.COMPOUND": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.CONSTRAINT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.CREATE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.CROSS": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.CUBE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.CURRENT_DATE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.CURRENT_DATETIME": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.CURRENT_ROW": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.CURRENT_TIME": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.CURRENT_TIMESTAMP": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DEFAULT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DELETE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DESC": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DESCRIBE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DISTINCT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DISTINCT_FROM": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DISTRIBUTE_BY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DIV": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DROP": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ELSE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.END": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ESCAPE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.EXCEPT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.EXECUTE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.EXISTS": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.FALSE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.FETCH": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.FILTER": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.FINAL": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.FIRST": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.FOLLOWING": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.FOR": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.FOREIGN_KEY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.FORMAT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.FROM": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.FULL": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.FUNCTION": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.GLOB": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.GLOBAL": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.GROUP_BY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.GROUPING_SETS": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.HAVING": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.HINT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.IF": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.IGNORE_NULLS": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ILIKE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ILIKE_ANY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.IN": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.INDEX": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.INNER": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.INSERT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.INTERSECT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.INTERVAL": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.INTO": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.INTRODUCER": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.IRLIKE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.IS": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ISNULL": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.JOIN": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.JOIN_MARKER": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.LANGUAGE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.LATERAL": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.LAZY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.LEADING": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.LEFT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.LIKE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.LIKE_ANY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.LIMIT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.LOAD_DATA": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.LOCAL": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.MAP": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.MATCH_RECOGNIZE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.MATERIALIZED": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.MERGE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.MOD": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.NATURAL": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.NEXT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.NO_ACTION": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.NOTNULL": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.NULL": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.NULLS_FIRST": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.NULLS_LAST": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.OFFSET": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ON": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ONLY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.OPTIONS": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ORDER_BY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ORDERED": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ORDINALITY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.OUTER": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.OUT_OF": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.OVER": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.OVERLAPS": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.OVERWRITE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.PARTITION": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.PARTITION_BY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.PERCENT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.PIVOT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.PLACEHOLDER": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.PRAGMA": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.PRECEDING": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.PRIMARY_KEY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.PROCEDURE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.PROPERTIES": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.PSEUDO_TYPE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.QUALIFY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.QUOTE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.RANGE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.RECURSIVE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.REPLACE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.RESPECT_NULLS": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.RETURNING": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.REFERENCES": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.RIGHT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.RLIKE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ROLLBACK": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ROLLUP": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ROW": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ROWS": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SEED": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SELECT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SEMI": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SEPARATOR": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SERDE_PROPERTIES": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SET": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SHOW": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SIMILAR_TO": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SOME": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SORTKEY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SORT_BY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.STRUCT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.TABLE_SAMPLE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.TEMPORARY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.TOP": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.THEN": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.TRAILING": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.TRUE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.UNBOUNDED": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.UNCACHE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.UNION": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.UNLOGGED": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.UNNEST": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.UNPIVOT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.UPDATE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.USE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.USING": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.VALUES": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.VIEW": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.VOLATILE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.WHEN": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.WHERE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.WINDOW": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.WITH": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.WITH_TIME_ZONE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.WITH_LOCAL_TIME_ZONE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.WITHIN_GROUP": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.WITHOUT_TIME_ZONE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.UNIQUE": {"tf": 1.4142135623730951}}, "df": 385}, "docs": {}, "df": 0}, "docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.expressions.DataType.Type.XML": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.XML": {"tf": 1.4142135623730951}}, "df": 2}}}, "b": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dialects.dialect.Dialects.BIGQUERY": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.DataType.Type.BIGINT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.BIGINT": {"tf": 1.4142135623730951}}, "df": 2}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.expressions.DataType.Type.BIGSERIAL": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.BIGSERIAL": {"tf": 1.4142135623730951}}, "df": 2}}}}}}}, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.DataType.Type.BINARY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.BINARY": {"tf": 1.4142135623730951}}, "df": 2}}}}, "t": {"docs": {"sqlglot.expressions.DataType.Type.BIT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.BIT_STRING": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.BIT": {"tf": 1.4142135623730951}}, "df": 3}}, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.DataType.Type.BOOLEAN": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.BOOLEAN": {"tf": 1.4142135623730951}}, "df": 2}}}}}, "t": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.tokens.TokenType.BOTH": {"tf": 1.4142135623730951}}, "df": 1}}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.L_BRACKET": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.R_BRACKET": {"tf": 1.4142135623730951}}, "df": 2}}}, "e": {"docs": {"sqlglot.tokens.TokenType.L_BRACE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.R_BRACE": {"tf": 1.4142135623730951}}, "df": 2}}}, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.tokens.TokenType.BREAK": {"tf": 1.4142135623730951}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.tokens.TokenType.BACKSLASH": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.tokens.TokenType.BLOCK_START": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.BLOCK_END": {"tf": 1.4142135623730951}}, "df": 2}}}}, "y": {"docs": {"sqlglot.tokens.TokenType.BY_DEFAULT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.CLUSTER_BY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DISTRIBUTE_BY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.GROUP_BY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ORDER_BY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.PARTITION_BY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SORT_BY": {"tf": 1.4142135623730951}}, "df": 7, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.BYTE_STRING": {"tf": 1.4142135623730951}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.tokens.TokenType.BEGIN": {"tf": 1.4142135623730951}}, "df": 1}}}, "t": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.tokens.TokenType.BETWEEN": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.BUCKET": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "c": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.Dialects.CLICKHOUSE": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.tokens.TokenType.CLUSTER_BY": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Properties.Location.POST_CREATE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.CREATE": {"tf": 1.4142135623730951}}, "df": 2}}}}, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.tokens.TokenType.CROSS": {"tf": 1.4142135623730951}}, "df": 1}}}}, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.DataType.Type.CHAR": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.CHAR": {"tf": 1.4142135623730951}}, "df": 2, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.tokens.TokenType.CHARACTER_SET": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.scope.ScopeType.CTE": {"tf": 1}}, "df": 1}}, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.tokens.TokenType.COMMA": {"tf": 1.4142135623730951}}, "df": 1, "n": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.tokens.TokenType.COMMAND": {"tf": 1.4142135623730951}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.COMMENT": {"tf": 1.4142135623730951}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.COMMIT": {"tf": 1.4142135623730951}}, "df": 1}}}, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.tokens.TokenType.COMPOUND": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.tokens.TokenType.COLON": {"tf": 1.4142135623730951}}, "df": 1}}, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.tokens.TokenType.COLUMN": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.COLUMN_DEF": {"tf": 1.4142135623730951}}, "df": 2}}}, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.COLLATE": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.CONSTRAINT": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.CARET": {"tf": 1.4142135623730951}}, "df": 1}}}, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.CACHE": {"tf": 1.4142135623730951}}, "df": 1}}}, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.CASCADE": {"tf": 1.4142135623730951}}, "df": 1}}}}, "e": {"docs": {"sqlglot.tokens.TokenType.CASE": {"tf": 1.4142135623730951}}, "df": 1}}}, "u": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.CUBE": {"tf": 1.4142135623730951}}, "df": 1}}, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.CURRENT_DATE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.CURRENT_DATETIME": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.CURRENT_ROW": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.CURRENT_TIME": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.CURRENT_TIMESTAMP": {"tf": 1.4142135623730951}}, "df": 5}}}}}}}, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.Dialects.HIVE": {"tf": 1.4142135623730951}}, "df": 1}}, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.HINT": {"tf": 1.4142135623730951}}, "df": 1}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.expressions.DataType.Type.HLLSKETCH": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.HLLSKETCH": {"tf": 1.4142135623730951}}, "df": 2}}}}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.DataType.Type.HSTORE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.HSTORE": {"tf": 1.4142135623730951}}, "df": 2}}}}}, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.tokens.TokenType.HASH": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.HASH_ARROW": {"tf": 1.4142135623730951}}, "df": 2}}, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.tokens.TokenType.HAVING": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "x": {"docs": {"sqlglot.tokens.TokenType.HEX_STRING": {"tf": 1.4142135623730951}}, "df": 1}}}, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.Properties.Location.POST_CREATE": {"tf": 1.4142135623730951}, "sqlglot.expressions.Properties.Location.POST_NAME": {"tf": 1.4142135623730951}, "sqlglot.expressions.Properties.Location.POST_SCHEMA": {"tf": 1.4142135623730951}, "sqlglot.expressions.Properties.Location.POST_WITH": {"tf": 1.4142135623730951}, "sqlglot.expressions.Properties.Location.POST_ALIAS": {"tf": 1.4142135623730951}, "sqlglot.expressions.Properties.Location.POST_EXPRESSION": {"tf": 1.4142135623730951}, "sqlglot.expressions.Properties.Location.POST_INDEX": {"tf": 1.4142135623730951}}, "df": 7, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dialects.dialect.Dialects.POSTGRES": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {"sqlglot.dialects.dialect.Dialects.PRESTO": {"tf": 1.4142135623730951}}, "df": 1}}}, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.tokens.TokenType.PRECEDING": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.tokens.TokenType.PRAGMA": {"tf": 1.4142135623730951}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.tokens.TokenType.PRIMARY_KEY": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.PROCEDURE": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.tokens.TokenType.PROPERTIES": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SERDE_PROPERTIES": {"tf": 1.4142135623730951}}, "df": 2}}}}}}}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.tokens.TokenType.L_PAREN": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.R_PAREN": {"tf": 1.4142135623730951}}, "df": 2}}, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.tokens.TokenType.PARAMETER": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SESSION_PARAMETER": {"tf": 1.4142135623730951}}, "df": 2}}}}}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.tokens.TokenType.PARTITION": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.PARTITION_BY": {"tf": 1.4142135623730951}}, "df": 2}}}}}}}}, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.tokens.TokenType.PLUS": {"tf": 1.4142135623730951}}, "df": 1}}, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.tokens.TokenType.PLACEHOLDER": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}}}, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.PIPE": {"tf": 1.4142135623730951}}, "df": 1}}, "v": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.PIVOT": {"tf": 1.4142135623730951}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.PERCENT": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "o": {"docs": {"sqlglot.tokens.TokenType.PSEUDO_TYPE": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "r": {"docs": {"sqlglot.tokens.TokenType.R_PAREN": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.R_BRACKET": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.R_BRACE": {"tf": 1.4142135623730951}}, "df": 3, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.dialect.Dialects.REDSHIFT": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.MATCH_RECOGNIZE": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.RECURSIVE": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.REPLACE": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.RESPECT_NULLS": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.tokens.TokenType.RETURNING": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}, "f": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.tokens.TokenType.REFERENCES": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}}, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.errors.ErrorLevel.RAISE": {"tf": 1.4142135623730951}}, "df": 1}}}, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.RANGE": {"tf": 1.4142135623730951}}, "df": 1}}}}, "o": {"docs": {}, "df": 0, "w": {"docs": {"sqlglot.tokens.TokenType.CURRENT_ROW": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ROW": {"tf": 1.4142135623730951}}, "df": 2, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.DataType.Type.ROWVERSION": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ROWVERSION": {"tf": 1.4142135623730951}}, "df": 2}}}}}}}, "s": {"docs": {"sqlglot.tokens.TokenType.ROWS": {"tf": 1.4142135623730951}}, "df": 1}}, "o": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.optimizer.scope.ScopeType.ROOT": {"tf": 1}}, "df": 1}}, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.tokens.TokenType.ROLLBACK": {"tf": 1.4142135623730951}}, "df": 1}}}}, "u": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.tokens.TokenType.ROLLUP": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.RIGHT": {"tf": 1.4142135623730951}}, "df": 1}}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.RLIKE": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.scope.ScopeType.DERIVED_TABLE": {"tf": 1}, "sqlglot.tokens.TokenType.TABLE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.TABLE_SAMPLE": {"tf": 1.4142135623730951}}, "df": 3, "a": {"docs": {}, "df": 0, "u": {"docs": {"sqlglot.dialects.dialect.Dialects.TABLEAU": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "o": {"docs": {"sqlglot.dialects.dialect.Dialects.TRINO": {"tf": 1.4142135623730951}}, "df": 1}}}, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.tokens.TokenType.TRAILING": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "u": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.TRUE": {"tf": 1.4142135623730951}}, "df": 1}}}, "s": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.dialects.dialect.Dialects.TSQL": {"tf": 1.4142135623730951}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.dialects.dialect.Dialects.TERADATA": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "x": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.DataType.Type.TEXT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.TEXT": {"tf": 1.4142135623730951}}, "df": 2}}, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.tokens.TokenType.TEMPORARY": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.DataType.Type.CHAR": {"tf": 1}, "sqlglot.expressions.DataType.Type.NCHAR": {"tf": 1}, "sqlglot.expressions.DataType.Type.VARCHAR": {"tf": 1}, "sqlglot.expressions.DataType.Type.NVARCHAR": {"tf": 1}, "sqlglot.expressions.DataType.Type.TEXT": {"tf": 1}, "sqlglot.expressions.DataType.Type.MEDIUMTEXT": {"tf": 1}, "sqlglot.expressions.DataType.Type.LONGTEXT": {"tf": 1}, "sqlglot.expressions.DataType.Type.MEDIUMBLOB": {"tf": 1}, "sqlglot.expressions.DataType.Type.LONGBLOB": {"tf": 1}, "sqlglot.expressions.DataType.Type.BINARY": {"tf": 1}, "sqlglot.expressions.DataType.Type.VARBINARY": {"tf": 1}, "sqlglot.expressions.DataType.Type.INT": {"tf": 1}, "sqlglot.expressions.DataType.Type.UINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.TINYINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.UTINYINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.SMALLINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.USMALLINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.BIGINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.UBIGINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.FLOAT": {"tf": 1}, "sqlglot.expressions.DataType.Type.DOUBLE": {"tf": 1}, "sqlglot.expressions.DataType.Type.DECIMAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.BIT": {"tf": 1}, "sqlglot.expressions.DataType.Type.BOOLEAN": {"tf": 1}, "sqlglot.expressions.DataType.Type.JSON": {"tf": 1}, "sqlglot.expressions.DataType.Type.JSONB": {"tf": 1}, "sqlglot.expressions.DataType.Type.INTERVAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.TIME": {"tf": 1}, "sqlglot.expressions.DataType.Type.TIMESTAMP": {"tf": 1}, "sqlglot.expressions.DataType.Type.TIMESTAMPTZ": {"tf": 1}, "sqlglot.expressions.DataType.Type.TIMESTAMPLTZ": {"tf": 1}, "sqlglot.expressions.DataType.Type.DATE": {"tf": 1}, "sqlglot.expressions.DataType.Type.DATETIME": {"tf": 1}, "sqlglot.expressions.DataType.Type.ARRAY": {"tf": 1}, "sqlglot.expressions.DataType.Type.MAP": {"tf": 1}, "sqlglot.expressions.DataType.Type.UUID": {"tf": 1}, "sqlglot.expressions.DataType.Type.GEOGRAPHY": {"tf": 1}, "sqlglot.expressions.DataType.Type.GEOMETRY": {"tf": 1}, "sqlglot.expressions.DataType.Type.STRUCT": {"tf": 1}, "sqlglot.expressions.DataType.Type.NULLABLE": {"tf": 1}, "sqlglot.expressions.DataType.Type.HLLSKETCH": {"tf": 1}, "sqlglot.expressions.DataType.Type.HSTORE": {"tf": 1}, "sqlglot.expressions.DataType.Type.SUPER": {"tf": 1}, "sqlglot.expressions.DataType.Type.SERIAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.SMALLSERIAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.BIGSERIAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.XML": {"tf": 1}, "sqlglot.expressions.DataType.Type.UNIQUEIDENTIFIER": {"tf": 1}, "sqlglot.expressions.DataType.Type.MONEY": {"tf": 1}, "sqlglot.expressions.DataType.Type.SMALLMONEY": {"tf": 1}, "sqlglot.expressions.DataType.Type.ROWVERSION": {"tf": 1}, "sqlglot.expressions.DataType.Type.IMAGE": {"tf": 1}, "sqlglot.expressions.DataType.Type.VARIANT": {"tf": 1}, "sqlglot.expressions.DataType.Type.OBJECT": {"tf": 1}, "sqlglot.expressions.DataType.Type.INET": {"tf": 1}, "sqlglot.expressions.DataType.Type.NULL": {"tf": 1}, "sqlglot.expressions.DataType.Type.UNKNOWN": {"tf": 1}, "sqlglot.tokens.TokenType.PSEUDO_TYPE": {"tf": 1.4142135623730951}}, "df": 58}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.DataType.Type.TINYINT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.TINYINT": {"tf": 1.4142135623730951}}, "df": 2}}}}}, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.DataType.Type.TIME": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.TIME": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.AT_TIME_ZONE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.CURRENT_TIME": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.WITH_TIME_ZONE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.WITH_LOCAL_TIME_ZONE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.WITHOUT_TIME_ZONE": {"tf": 1.4142135623730951}}, "df": 7, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.expressions.DataType.Type.TIMESTAMP": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.TIMESTAMP": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.CURRENT_TIMESTAMP": {"tf": 1.4142135623730951}}, "df": 3, "t": {"docs": {}, "df": 0, "z": {"docs": {"sqlglot.expressions.DataType.Type.TIMESTAMPTZ": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.TIMESTAMPTZ": {"tf": 1.4142135623730951}}, "df": 2}}, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "z": {"docs": {"sqlglot.expressions.DataType.Type.TIMESTAMPLTZ": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.TIMESTAMPLTZ": {"tf": 1.4142135623730951}}, "df": 2}}}}}}}}}}, "l": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.tokens.TokenType.TILDA": {"tf": 1.4142135623730951}}, "df": 1}}}}, "o": {"docs": {"sqlglot.tokens.TokenType.SIMILAR_TO": {"tf": 1.4142135623730951}}, "df": 1, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.L_PAREN": {"tf": 1}, "sqlglot.tokens.TokenType.R_PAREN": {"tf": 1}, "sqlglot.tokens.TokenType.L_BRACKET": {"tf": 1}, "sqlglot.tokens.TokenType.R_BRACKET": {"tf": 1}, "sqlglot.tokens.TokenType.L_BRACE": {"tf": 1}, "sqlglot.tokens.TokenType.R_BRACE": {"tf": 1}, "sqlglot.tokens.TokenType.COMMA": {"tf": 1}, "sqlglot.tokens.TokenType.DOT": {"tf": 1}, "sqlglot.tokens.TokenType.DASH": {"tf": 1}, "sqlglot.tokens.TokenType.PLUS": {"tf": 1}, "sqlglot.tokens.TokenType.COLON": {"tf": 1}, "sqlglot.tokens.TokenType.DCOLON": {"tf": 1}, "sqlglot.tokens.TokenType.SEMICOLON": {"tf": 1}, "sqlglot.tokens.TokenType.STAR": {"tf": 1}, "sqlglot.tokens.TokenType.BACKSLASH": {"tf": 1}, "sqlglot.tokens.TokenType.SLASH": {"tf": 1}, "sqlglot.tokens.TokenType.LT": {"tf": 1}, "sqlglot.tokens.TokenType.LTE": {"tf": 1}, "sqlglot.tokens.TokenType.GT": {"tf": 1}, "sqlglot.tokens.TokenType.GTE": {"tf": 1}, "sqlglot.tokens.TokenType.NOT": {"tf": 1}, "sqlglot.tokens.TokenType.EQ": {"tf": 1}, "sqlglot.tokens.TokenType.NEQ": {"tf": 1}, "sqlglot.tokens.TokenType.NULLSAFE_EQ": {"tf": 1}, "sqlglot.tokens.TokenType.AND": {"tf": 1}, "sqlglot.tokens.TokenType.OR": {"tf": 1}, "sqlglot.tokens.TokenType.AMP": {"tf": 1}, "sqlglot.tokens.TokenType.DPIPE": {"tf": 1}, "sqlglot.tokens.TokenType.PIPE": {"tf": 1}, "sqlglot.tokens.TokenType.CARET": {"tf": 1}, "sqlglot.tokens.TokenType.TILDA": {"tf": 1}, "sqlglot.tokens.TokenType.ARROW": {"tf": 1}, "sqlglot.tokens.TokenType.DARROW": {"tf": 1}, "sqlglot.tokens.TokenType.FARROW": {"tf": 1}, "sqlglot.tokens.TokenType.HASH": {"tf": 1}, "sqlglot.tokens.TokenType.HASH_ARROW": {"tf": 1}, "sqlglot.tokens.TokenType.DHASH_ARROW": {"tf": 1}, "sqlglot.tokens.TokenType.LR_ARROW": {"tf": 1}, "sqlglot.tokens.TokenType.LT_AT": {"tf": 1}, "sqlglot.tokens.TokenType.AT_GT": {"tf": 1}, "sqlglot.tokens.TokenType.DOLLAR": {"tf": 1}, "sqlglot.tokens.TokenType.PARAMETER": {"tf": 1}, "sqlglot.tokens.TokenType.SESSION_PARAMETER": {"tf": 1}, "sqlglot.tokens.TokenType.NATIONAL": {"tf": 1}, "sqlglot.tokens.TokenType.DAMP": {"tf": 1}, "sqlglot.tokens.TokenType.BLOCK_START": {"tf": 1}, "sqlglot.tokens.TokenType.BLOCK_END": {"tf": 1}, "sqlglot.tokens.TokenType.SPACE": {"tf": 1}, "sqlglot.tokens.TokenType.BREAK": {"tf": 1}, "sqlglot.tokens.TokenType.STRING": {"tf": 1}, "sqlglot.tokens.TokenType.NUMBER": {"tf": 1}, "sqlglot.tokens.TokenType.IDENTIFIER": {"tf": 1}, "sqlglot.tokens.TokenType.DATABASE": {"tf": 1}, "sqlglot.tokens.TokenType.COLUMN": {"tf": 1}, "sqlglot.tokens.TokenType.COLUMN_DEF": {"tf": 1}, "sqlglot.tokens.TokenType.SCHEMA": {"tf": 1}, "sqlglot.tokens.TokenType.TABLE": {"tf": 1}, "sqlglot.tokens.TokenType.VAR": {"tf": 1}, "sqlglot.tokens.TokenType.BIT_STRING": {"tf": 1}, "sqlglot.tokens.TokenType.HEX_STRING": {"tf": 1}, "sqlglot.tokens.TokenType.BYTE_STRING": {"tf": 1}, "sqlglot.tokens.TokenType.BIT": {"tf": 1}, "sqlglot.tokens.TokenType.BOOLEAN": {"tf": 1}, "sqlglot.tokens.TokenType.TINYINT": {"tf": 1}, "sqlglot.tokens.TokenType.UTINYINT": {"tf": 1}, "sqlglot.tokens.TokenType.SMALLINT": {"tf": 1}, "sqlglot.tokens.TokenType.USMALLINT": {"tf": 1}, "sqlglot.tokens.TokenType.INT": {"tf": 1}, "sqlglot.tokens.TokenType.UINT": {"tf": 1}, "sqlglot.tokens.TokenType.BIGINT": {"tf": 1}, "sqlglot.tokens.TokenType.UBIGINT": {"tf": 1}, "sqlglot.tokens.TokenType.FLOAT": {"tf": 1}, "sqlglot.tokens.TokenType.DOUBLE": {"tf": 1}, "sqlglot.tokens.TokenType.DECIMAL": {"tf": 1}, "sqlglot.tokens.TokenType.CHAR": {"tf": 1}, "sqlglot.tokens.TokenType.NCHAR": {"tf": 1}, "sqlglot.tokens.TokenType.VARCHAR": {"tf": 1}, "sqlglot.tokens.TokenType.NVARCHAR": {"tf": 1}, "sqlglot.tokens.TokenType.TEXT": {"tf": 1}, "sqlglot.tokens.TokenType.MEDIUMTEXT": {"tf": 1}, "sqlglot.tokens.TokenType.LONGTEXT": {"tf": 1}, "sqlglot.tokens.TokenType.MEDIUMBLOB": {"tf": 1}, "sqlglot.tokens.TokenType.LONGBLOB": {"tf": 1}, "sqlglot.tokens.TokenType.BINARY": {"tf": 1}, "sqlglot.tokens.TokenType.VARBINARY": {"tf": 1}, "sqlglot.tokens.TokenType.JSON": {"tf": 1}, "sqlglot.tokens.TokenType.JSONB": {"tf": 1}, "sqlglot.tokens.TokenType.TIME": {"tf": 1}, "sqlglot.tokens.TokenType.TIMESTAMP": {"tf": 1}, "sqlglot.tokens.TokenType.TIMESTAMPTZ": {"tf": 1}, "sqlglot.tokens.TokenType.TIMESTAMPLTZ": {"tf": 1}, "sqlglot.tokens.TokenType.DATETIME": {"tf": 1}, "sqlglot.tokens.TokenType.DATE": {"tf": 1}, "sqlglot.tokens.TokenType.UUID": {"tf": 1}, "sqlglot.tokens.TokenType.GEOGRAPHY": {"tf": 1}, "sqlglot.tokens.TokenType.NULLABLE": {"tf": 1}, "sqlglot.tokens.TokenType.GEOMETRY": {"tf": 1}, "sqlglot.tokens.TokenType.HLLSKETCH": {"tf": 1}, "sqlglot.tokens.TokenType.HSTORE": {"tf": 1}, "sqlglot.tokens.TokenType.SUPER": {"tf": 1}, "sqlglot.tokens.TokenType.SERIAL": {"tf": 1}, "sqlglot.tokens.TokenType.SMALLSERIAL": {"tf": 1}, "sqlglot.tokens.TokenType.BIGSERIAL": {"tf": 1}, "sqlglot.tokens.TokenType.XML": {"tf": 1}, "sqlglot.tokens.TokenType.UNIQUEIDENTIFIER": {"tf": 1}, "sqlglot.tokens.TokenType.MONEY": {"tf": 1}, "sqlglot.tokens.TokenType.SMALLMONEY": {"tf": 1}, "sqlglot.tokens.TokenType.ROWVERSION": {"tf": 1}, "sqlglot.tokens.TokenType.IMAGE": {"tf": 1}, "sqlglot.tokens.TokenType.VARIANT": {"tf": 1}, "sqlglot.tokens.TokenType.OBJECT": {"tf": 1}, "sqlglot.tokens.TokenType.INET": {"tf": 1}, "sqlglot.tokens.TokenType.ALIAS": {"tf": 1}, "sqlglot.tokens.TokenType.ALTER": {"tf": 1}, "sqlglot.tokens.TokenType.ALWAYS": {"tf": 1}, "sqlglot.tokens.TokenType.ALL": {"tf": 1}, "sqlglot.tokens.TokenType.ANTI": {"tf": 1}, "sqlglot.tokens.TokenType.ANY": {"tf": 1}, "sqlglot.tokens.TokenType.APPLY": {"tf": 1}, "sqlglot.tokens.TokenType.ARRAY": {"tf": 1}, "sqlglot.tokens.TokenType.ASC": {"tf": 1}, "sqlglot.tokens.TokenType.ASOF": {"tf": 1}, "sqlglot.tokens.TokenType.AT_TIME_ZONE": {"tf": 1}, "sqlglot.tokens.TokenType.AUTO_INCREMENT": {"tf": 1}, "sqlglot.tokens.TokenType.BEGIN": {"tf": 1}, "sqlglot.tokens.TokenType.BETWEEN": {"tf": 1}, "sqlglot.tokens.TokenType.BOTH": {"tf": 1}, "sqlglot.tokens.TokenType.BUCKET": {"tf": 1}, "sqlglot.tokens.TokenType.BY_DEFAULT": {"tf": 1}, "sqlglot.tokens.TokenType.CACHE": {"tf": 1}, "sqlglot.tokens.TokenType.CASCADE": {"tf": 1}, "sqlglot.tokens.TokenType.CASE": {"tf": 1}, "sqlglot.tokens.TokenType.CHARACTER_SET": {"tf": 1}, "sqlglot.tokens.TokenType.CLUSTER_BY": {"tf": 1}, "sqlglot.tokens.TokenType.COLLATE": {"tf": 1}, "sqlglot.tokens.TokenType.COMMAND": {"tf": 1}, "sqlglot.tokens.TokenType.COMMENT": {"tf": 1}, "sqlglot.tokens.TokenType.COMMIT": {"tf": 1}, "sqlglot.tokens.TokenType.COMPOUND": {"tf": 1}, "sqlglot.tokens.TokenType.CONSTRAINT": {"tf": 1}, "sqlglot.tokens.TokenType.CREATE": {"tf": 1}, "sqlglot.tokens.TokenType.CROSS": {"tf": 1}, "sqlglot.tokens.TokenType.CUBE": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_DATE": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_DATETIME": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_ROW": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_TIME": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_TIMESTAMP": {"tf": 1}, "sqlglot.tokens.TokenType.DEFAULT": {"tf": 1}, "sqlglot.tokens.TokenType.DELETE": {"tf": 1}, "sqlglot.tokens.TokenType.DESC": {"tf": 1}, "sqlglot.tokens.TokenType.DESCRIBE": {"tf": 1}, "sqlglot.tokens.TokenType.DISTINCT": {"tf": 1}, "sqlglot.tokens.TokenType.DISTINCT_FROM": {"tf": 1}, "sqlglot.tokens.TokenType.DISTRIBUTE_BY": {"tf": 1}, "sqlglot.tokens.TokenType.DIV": {"tf": 1}, "sqlglot.tokens.TokenType.DROP": {"tf": 1}, "sqlglot.tokens.TokenType.ELSE": {"tf": 1}, "sqlglot.tokens.TokenType.END": {"tf": 1}, "sqlglot.tokens.TokenType.ESCAPE": {"tf": 1}, "sqlglot.tokens.TokenType.EXCEPT": {"tf": 1}, "sqlglot.tokens.TokenType.EXECUTE": {"tf": 1}, "sqlglot.tokens.TokenType.EXISTS": {"tf": 1}, "sqlglot.tokens.TokenType.FALSE": {"tf": 1}, "sqlglot.tokens.TokenType.FETCH": {"tf": 1}, "sqlglot.tokens.TokenType.FILTER": {"tf": 1}, "sqlglot.tokens.TokenType.FINAL": {"tf": 1}, "sqlglot.tokens.TokenType.FIRST": {"tf": 1}, "sqlglot.tokens.TokenType.FOLLOWING": {"tf": 1}, "sqlglot.tokens.TokenType.FOR": {"tf": 1}, "sqlglot.tokens.TokenType.FOREIGN_KEY": {"tf": 1}, "sqlglot.tokens.TokenType.FORMAT": {"tf": 1}, "sqlglot.tokens.TokenType.FROM": {"tf": 1}, "sqlglot.tokens.TokenType.FULL": {"tf": 1}, "sqlglot.tokens.TokenType.FUNCTION": {"tf": 1}, "sqlglot.tokens.TokenType.GLOB": {"tf": 1}, "sqlglot.tokens.TokenType.GLOBAL": {"tf": 1}, "sqlglot.tokens.TokenType.GROUP_BY": {"tf": 1}, "sqlglot.tokens.TokenType.GROUPING_SETS": {"tf": 1}, "sqlglot.tokens.TokenType.HAVING": {"tf": 1}, "sqlglot.tokens.TokenType.HINT": {"tf": 1}, "sqlglot.tokens.TokenType.IF": {"tf": 1}, "sqlglot.tokens.TokenType.IGNORE_NULLS": {"tf": 1}, "sqlglot.tokens.TokenType.ILIKE": {"tf": 1}, "sqlglot.tokens.TokenType.ILIKE_ANY": {"tf": 1}, "sqlglot.tokens.TokenType.IN": {"tf": 1}, "sqlglot.tokens.TokenType.INDEX": {"tf": 1}, "sqlglot.tokens.TokenType.INNER": {"tf": 1}, "sqlglot.tokens.TokenType.INSERT": {"tf": 1}, "sqlglot.tokens.TokenType.INTERSECT": {"tf": 1}, "sqlglot.tokens.TokenType.INTERVAL": {"tf": 1}, "sqlglot.tokens.TokenType.INTO": {"tf": 1}, "sqlglot.tokens.TokenType.INTRODUCER": {"tf": 1}, "sqlglot.tokens.TokenType.IRLIKE": {"tf": 1}, "sqlglot.tokens.TokenType.IS": {"tf": 1}, "sqlglot.tokens.TokenType.ISNULL": {"tf": 1}, "sqlglot.tokens.TokenType.JOIN": {"tf": 1}, "sqlglot.tokens.TokenType.JOIN_MARKER": {"tf": 1}, "sqlglot.tokens.TokenType.LANGUAGE": {"tf": 1}, "sqlglot.tokens.TokenType.LATERAL": {"tf": 1}, "sqlglot.tokens.TokenType.LAZY": {"tf": 1}, "sqlglot.tokens.TokenType.LEADING": {"tf": 1}, "sqlglot.tokens.TokenType.LEFT": {"tf": 1}, "sqlglot.tokens.TokenType.LIKE": {"tf": 1}, "sqlglot.tokens.TokenType.LIKE_ANY": {"tf": 1}, "sqlglot.tokens.TokenType.LIMIT": {"tf": 1}, "sqlglot.tokens.TokenType.LOAD_DATA": {"tf": 1}, "sqlglot.tokens.TokenType.LOCAL": {"tf": 1}, "sqlglot.tokens.TokenType.MAP": {"tf": 1}, "sqlglot.tokens.TokenType.MATCH_RECOGNIZE": {"tf": 1}, "sqlglot.tokens.TokenType.MATERIALIZED": {"tf": 1}, "sqlglot.tokens.TokenType.MERGE": {"tf": 1}, "sqlglot.tokens.TokenType.MOD": {"tf": 1}, "sqlglot.tokens.TokenType.NATURAL": {"tf": 1}, "sqlglot.tokens.TokenType.NEXT": {"tf": 1}, "sqlglot.tokens.TokenType.NO_ACTION": {"tf": 1}, "sqlglot.tokens.TokenType.NOTNULL": {"tf": 1}, "sqlglot.tokens.TokenType.NULL": {"tf": 1}, "sqlglot.tokens.TokenType.NULLS_FIRST": {"tf": 1}, "sqlglot.tokens.TokenType.NULLS_LAST": {"tf": 1}, "sqlglot.tokens.TokenType.OFFSET": {"tf": 1}, "sqlglot.tokens.TokenType.ON": {"tf": 1}, "sqlglot.tokens.TokenType.ONLY": {"tf": 1}, "sqlglot.tokens.TokenType.OPTIONS": {"tf": 1}, "sqlglot.tokens.TokenType.ORDER_BY": {"tf": 1}, "sqlglot.tokens.TokenType.ORDERED": {"tf": 1}, "sqlglot.tokens.TokenType.ORDINALITY": {"tf": 1}, "sqlglot.tokens.TokenType.OUTER": {"tf": 1}, "sqlglot.tokens.TokenType.OUT_OF": {"tf": 1}, "sqlglot.tokens.TokenType.OVER": {"tf": 1}, "sqlglot.tokens.TokenType.OVERLAPS": {"tf": 1}, "sqlglot.tokens.TokenType.OVERWRITE": {"tf": 1}, "sqlglot.tokens.TokenType.PARTITION": {"tf": 1}, "sqlglot.tokens.TokenType.PARTITION_BY": {"tf": 1}, "sqlglot.tokens.TokenType.PERCENT": {"tf": 1}, "sqlglot.tokens.TokenType.PIVOT": {"tf": 1}, "sqlglot.tokens.TokenType.PLACEHOLDER": {"tf": 1}, "sqlglot.tokens.TokenType.PRAGMA": {"tf": 1}, "sqlglot.tokens.TokenType.PRECEDING": {"tf": 1}, "sqlglot.tokens.TokenType.PRIMARY_KEY": {"tf": 1}, "sqlglot.tokens.TokenType.PROCEDURE": {"tf": 1}, "sqlglot.tokens.TokenType.PROPERTIES": {"tf": 1}, "sqlglot.tokens.TokenType.PSEUDO_TYPE": {"tf": 1}, "sqlglot.tokens.TokenType.QUALIFY": {"tf": 1}, "sqlglot.tokens.TokenType.QUOTE": {"tf": 1}, "sqlglot.tokens.TokenType.RANGE": {"tf": 1}, "sqlglot.tokens.TokenType.RECURSIVE": {"tf": 1}, "sqlglot.tokens.TokenType.REPLACE": {"tf": 1}, "sqlglot.tokens.TokenType.RESPECT_NULLS": {"tf": 1}, "sqlglot.tokens.TokenType.RETURNING": {"tf": 1}, "sqlglot.tokens.TokenType.REFERENCES": {"tf": 1}, "sqlglot.tokens.TokenType.RIGHT": {"tf": 1}, "sqlglot.tokens.TokenType.RLIKE": {"tf": 1}, "sqlglot.tokens.TokenType.ROLLBACK": {"tf": 1}, "sqlglot.tokens.TokenType.ROLLUP": {"tf": 1}, "sqlglot.tokens.TokenType.ROW": {"tf": 1}, "sqlglot.tokens.TokenType.ROWS": {"tf": 1}, "sqlglot.tokens.TokenType.SEED": {"tf": 1}, "sqlglot.tokens.TokenType.SELECT": {"tf": 1}, "sqlglot.tokens.TokenType.SEMI": {"tf": 1}, "sqlglot.tokens.TokenType.SEPARATOR": {"tf": 1}, "sqlglot.tokens.TokenType.SERDE_PROPERTIES": {"tf": 1}, "sqlglot.tokens.TokenType.SET": {"tf": 1}, "sqlglot.tokens.TokenType.SHOW": {"tf": 1}, "sqlglot.tokens.TokenType.SIMILAR_TO": {"tf": 1}, "sqlglot.tokens.TokenType.SOME": {"tf": 1}, "sqlglot.tokens.TokenType.SORTKEY": {"tf": 1}, "sqlglot.tokens.TokenType.SORT_BY": {"tf": 1}, "sqlglot.tokens.TokenType.STRUCT": {"tf": 1}, "sqlglot.tokens.TokenType.TABLE_SAMPLE": {"tf": 1}, "sqlglot.tokens.TokenType.TEMPORARY": {"tf": 1}, "sqlglot.tokens.TokenType.TOP": {"tf": 1}, "sqlglot.tokens.TokenType.THEN": {"tf": 1}, "sqlglot.tokens.TokenType.TRAILING": {"tf": 1}, "sqlglot.tokens.TokenType.TRUE": {"tf": 1}, "sqlglot.tokens.TokenType.UNBOUNDED": {"tf": 1}, "sqlglot.tokens.TokenType.UNCACHE": {"tf": 1}, "sqlglot.tokens.TokenType.UNION": {"tf": 1}, "sqlglot.tokens.TokenType.UNLOGGED": {"tf": 1}, "sqlglot.tokens.TokenType.UNNEST": {"tf": 1}, "sqlglot.tokens.TokenType.UNPIVOT": {"tf": 1}, "sqlglot.tokens.TokenType.UPDATE": {"tf": 1}, "sqlglot.tokens.TokenType.USE": {"tf": 1}, "sqlglot.tokens.TokenType.USING": {"tf": 1}, "sqlglot.tokens.TokenType.VALUES": {"tf": 1}, "sqlglot.tokens.TokenType.VIEW": {"tf": 1}, "sqlglot.tokens.TokenType.VOLATILE": {"tf": 1}, "sqlglot.tokens.TokenType.WHEN": {"tf": 1}, "sqlglot.tokens.TokenType.WHERE": {"tf": 1}, "sqlglot.tokens.TokenType.WINDOW": {"tf": 1}, "sqlglot.tokens.TokenType.WITH": {"tf": 1}, "sqlglot.tokens.TokenType.WITH_TIME_ZONE": {"tf": 1}, "sqlglot.tokens.TokenType.WITH_LOCAL_TIME_ZONE": {"tf": 1}, "sqlglot.tokens.TokenType.WITHIN_GROUP": {"tf": 1}, "sqlglot.tokens.TokenType.WITHOUT_TIME_ZONE": {"tf": 1}, "sqlglot.tokens.TokenType.UNIQUE": {"tf": 1}}, "df": 296}}}}}}}, "p": {"docs": {"sqlglot.tokens.TokenType.TOP": {"tf": 1.4142135623730951}}, "df": 1}}, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.tokens.TokenType.THEN": {"tf": 1.4142135623730951}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.errors.ErrorLevel.IGNORE": {"tf": 1}, "sqlglot.errors.ErrorLevel.WARN": {"tf": 1}, "sqlglot.errors.ErrorLevel.RAISE": {"tf": 1}, "sqlglot.errors.ErrorLevel.IMMEDIATE": {"tf": 1}}, "df": 4}}}}}}}}}, "x": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.Properties.Location.POST_EXPRESSION": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.EXCEPT": {"tf": 1.4142135623730951}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.EXECUTE": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.tokens.TokenType.EXISTS": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "q": {"docs": {"sqlglot.tokens.TokenType.EQ": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.NULLSAFE_EQ": {"tf": 1.4142135623730951}}, "df": 2}, "n": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.tokens.TokenType.BLOCK_END": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.END": {"tf": 1.4142135623730951}}, "df": 2}}, "l": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.ELSE": {"tf": 1.4142135623730951}}, "df": 1}}}, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.ESCAPE": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.errors.ErrorLevel.IGNORE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.IGNORE_NULLS": {"tf": 1.4142135623730951}}, "df": 2}}}}}, "m": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.errors.ErrorLevel.IMMEDIATE": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.DataType.Type.IMAGE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.IMAGE": {"tf": 1.4142135623730951}}, "df": 2}}}}, "n": {"docs": {"sqlglot.tokens.TokenType.IN": {"tf": 1.4142135623730951}}, "df": 1, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "x": {"docs": {"sqlglot.expressions.Properties.Location.POST_INDEX": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.INDEX": {"tf": 1.4142135623730951}}, "df": 2}}}, "t": {"docs": {"sqlglot.expressions.DataType.Type.INT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.INT": {"tf": 1.4142135623730951}}, "df": 2, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.expressions.DataType.Type.INTERVAL": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.INTERVAL": {"tf": 1.4142135623730951}}, "df": 2}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.INTERSECT": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "o": {"docs": {"sqlglot.tokens.TokenType.INTO": {"tf": 1.4142135623730951}}, "df": 1}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.tokens.TokenType.INTRODUCER": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}, "e": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.DataType.Type.INET": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.INET": {"tf": 1.4142135623730951}}, "df": 2}}, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.AUTO_INCREMENT": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.tokens.TokenType.INNER": {"tf": 1.4142135623730951}}, "df": 1}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.INSERT": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.tokens.TokenType.IDENTIFIER": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}}, "f": {"docs": {"sqlglot.tokens.TokenType.IF": {"tf": 1.4142135623730951}}, "df": 1}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.ILIKE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ILIKE_ANY": {"tf": 1.4142135623730951}}, "df": 2}}}}, "r": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.IRLIKE": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "s": {"docs": {"sqlglot.tokens.TokenType.IS": {"tf": 1.4142135623730951}}, "df": 1, "n": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.tokens.TokenType.ISNULL": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "w": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.errors.ErrorLevel.WARN": {"tf": 1.4142135623730951}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.expressions.Properties.Location.POST_WITH": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.WITH": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.WITH_TIME_ZONE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.WITH_LOCAL_TIME_ZONE": {"tf": 1.4142135623730951}}, "df": 4, "i": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.tokens.TokenType.WITHIN_GROUP": {"tf": 1.4142135623730951}}, "df": 1}}, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.WITHOUT_TIME_ZONE": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {"sqlglot.tokens.TokenType.WINDOW": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.tokens.TokenType.WHEN": {"tf": 1.4142135623730951}}, "df": 1}, "r": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.WHERE": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Properties.Location.POST_NAME": {"tf": 1.4142135623730951}}, "df": 1}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.tokens.TokenType.NATIONAL": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.tokens.TokenType.NATURAL": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.DataType.Type.NCHAR": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.NCHAR": {"tf": 1.4142135623730951}}, "df": 2}}}}, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.DataType.Type.NVARCHAR": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.NVARCHAR": {"tf": 1.4142135623730951}}, "df": 2}}}}}}}, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.expressions.DataType.Type.NULL": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.NULL": {"tf": 1.4142135623730951}}, "df": 2, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.DataType.Type.NULLABLE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.NULLABLE": {"tf": 1.4142135623730951}}, "df": 2}}}}, "s": {"docs": {"sqlglot.tokens.TokenType.IGNORE_NULLS": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.NULLS_FIRST": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.NULLS_LAST": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.RESPECT_NULLS": {"tf": 1.4142135623730951}}, "df": 4, "a": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.NULLSAFE_EQ": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "m": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.tokens.TokenType.NUMBER": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "o": {"docs": {"sqlglot.tokens.TokenType.NO_ACTION": {"tf": 1.4142135623730951}}, "df": 1, "t": {"docs": {"sqlglot.tokens.TokenType.NOT": {"tf": 1.4142135623730951}}, "df": 1, "n": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.tokens.TokenType.NOTNULL": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "e": {"docs": {}, "df": 0, "q": {"docs": {"sqlglot.tokens.TokenType.NEQ": {"tf": 1.4142135623730951}}, "df": 1}, "x": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.NEXT": {"tf": 1.4142135623730951}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.Properties.Location.POST_ALIAS": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ALIAS": {"tf": 1.4142135623730951}}, "df": 2}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.tokens.TokenType.ALTER": {"tf": 1.4142135623730951}}, "df": 1}}}, "w": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.tokens.TokenType.ALWAYS": {"tf": 1.4142135623730951}}, "df": 1}}}}, "l": {"docs": {"sqlglot.tokens.TokenType.ALL": {"tf": 1.4142135623730951}}, "df": 1}}, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.DataType.Type.ARRAY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ARRAY": {"tf": 1.4142135623730951}}, "df": 2}}, "o": {"docs": {}, "df": 0, "w": {"docs": {"sqlglot.tokens.TokenType.ARROW": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.HASH_ARROW": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DHASH_ARROW": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.LR_ARROW": {"tf": 1.4142135623730951}}, "df": 4}}}}, "n": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.tokens.TokenType.AND": {"tf": 1.4142135623730951}}, "df": 1}, "t": {"docs": {}, "df": 0, "i": {"docs": {"sqlglot.tokens.TokenType.ANTI": {"tf": 1.4142135623730951}}, "df": 1}}, "y": {"docs": {"sqlglot.tokens.TokenType.ANY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ILIKE_ANY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.LIKE_ANY": {"tf": 1.4142135623730951}}, "df": 3}}, "m": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.tokens.TokenType.AMP": {"tf": 1.4142135623730951}}, "df": 1}}, "t": {"docs": {"sqlglot.tokens.TokenType.LT_AT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.AT_GT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.AT_TIME_ZONE": {"tf": 1.4142135623730951}}, "df": 3}, "p": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.tokens.TokenType.APPLY": {"tf": 1.4142135623730951}}, "df": 1}}}}, "s": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot.tokens.TokenType.ASC": {"tf": 1.4142135623730951}}, "df": 1}, "o": {"docs": {}, "df": 0, "f": {"docs": {"sqlglot.tokens.TokenType.ASOF": {"tf": 1.4142135623730951}}, "df": 1}}}, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {"sqlglot.tokens.TokenType.AUTO_INCREMENT": {"tf": 1.4142135623730951}}, "df": 1}}}, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.tokens.TokenType.NO_ACTION": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.Properties.Location.UNSUPPORTED": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}}, "i": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.UNIQUE": {"tf": 1.4142135623730951}}, "df": 1, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.DataType.Type.UNIQUEIDENTIFIER": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.UNIQUEIDENTIFIER": {"tf": 1.4142135623730951}}, "df": 2}}}}}}}}}}}}}, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.optimizer.scope.ScopeType.UNION": {"tf": 1}, "sqlglot.tokens.TokenType.UNION": {"tf": 1.4142135623730951}}, "df": 2}}}, "k": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.DataType.Type.UNKNOWN": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "b": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.tokens.TokenType.UNBOUNDED": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.UNCACHE": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.tokens.TokenType.UNLOGGED": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.UNNEST": {"tf": 1.4142135623730951}}, "df": 1}}}}, "p": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.UNPIVOT": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.DataType.Type.UINT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.UINT": {"tf": 1.4142135623730951}}, "df": 2}}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.DataType.Type.UTINYINT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.UTINYINT": {"tf": 1.4142135623730951}}, "df": 2}}}}}}}, "s": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.DataType.Type.USMALLINT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.USMALLINT": {"tf": 1.4142135623730951}}, "df": 2}}}}}}}, "e": {"docs": {"sqlglot.tokens.TokenType.USE": {"tf": 1.4142135623730951}}, "df": 1}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.tokens.TokenType.USING": {"tf": 1.4142135623730951}}, "df": 1}}}}, "b": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.DataType.Type.UBIGINT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.UBIGINT": {"tf": 1.4142135623730951}}, "df": 2}}}}}}, "u": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.DataType.Type.UUID": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.UUID": {"tf": 1.4142135623730951}}, "df": 2}}}, "d": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "f": {"docs": {"sqlglot.optimizer.scope.ScopeType.UDTF": {"tf": 1}}, "df": 1}}}, "p": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.UPDATE": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.tokens.TokenType.VAR": {"tf": 1.4142135623730951}}, "df": 1, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.DataType.Type.VARCHAR": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.VARCHAR": {"tf": 1.4142135623730951}}, "df": 2}}}}, "b": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.DataType.Type.VARBINARY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.VARBINARY": {"tf": 1.4142135623730951}}, "df": 2}}}}}}, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.DataType.Type.VARIANT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.VARIANT": {"tf": 1.4142135623730951}}, "df": 2}}}}}, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.tokens.TokenType.VALUES": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "w": {"docs": {"sqlglot.tokens.TokenType.VIEW": {"tf": 1.4142135623730951}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.VOLATILE": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}, "j": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.DataType.Type.JSON": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.JSON": {"tf": 1.4142135623730951}}, "df": 2, "b": {"docs": {"sqlglot.expressions.DataType.Type.JSONB": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.JSONB": {"tf": 1.4142135623730951}}, "df": 2}}}}, "o": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.tokens.TokenType.JOIN": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.JOIN_MARKER": {"tf": 1.4142135623730951}}, "df": 2}}}}, "z": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.AT_TIME_ZONE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.WITH_TIME_ZONE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.WITH_LOCAL_TIME_ZONE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.WITHOUT_TIME_ZONE": {"tf": 1.4142135623730951}}, "df": 4}}}}, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.tokens.TokenType.FOREIGN_KEY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.PRIMARY_KEY": {"tf": 1.4142135623730951}}, "df": 2}}}, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.tokens.TokenType.QUALIFY": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.QUOTE": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}, "signature": {"root": {"0": {"docs": {"sqlglot.diff.ChangeDistiller.__init__": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.__init__": {"tf": 1}, "sqlglot.generator.Generator.indent": {"tf": 1}, "sqlglot.parser.Parser.__init__": {"tf": 1}, "sqlglot.planner.Step.to_s": {"tf": 1}}, "df": 5, "x": {"7": {"docs": {}, "df": 0, "f": {"1": {"3": {"1": {"1": {"3": {"4": {"3": {"docs": {}, "df": 0, "d": {"0": {"0": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}}, "docs": {}, "df": 0}, "8": {"4": {"3": {"1": {"0": {"docs": {"sqlglot.lineage.lineage": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 2}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "4": {"3": {"0": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "9": {"6": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "f": {"0": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}}}, "7": {"4": {"9": {"0": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "5": {"docs": {}, "df": 0, "b": {"0": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}}, "6": {"docs": {}, "df": 0, "d": {"0": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}}, "7": {"docs": {}, "df": 0, "f": {"0": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0, "b": {"5": {"4": {"8": {"0": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "8": {"7": {"0": {"docs": {"sqlglot.lineage.lineage": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 2}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "d": {"0": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}}, "a": {"2": {"0": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0, "b": {"0": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}}, "e": {"docs": {}, "df": 0, "a": {"0": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}}}, "6": {"9": {"5": {"0": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0, "d": {"4": {"0": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}}, "7": {"1": {"docs": {}, "df": 0, "c": {"0": {"docs": {"sqlglot.lineage.lineage": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 2}, "docs": {}, "df": 0}}, "2": {"5": {"0": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0, "c": {"7": {"0": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}}, "docs": {}, "df": 0}}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}}, "docs": {}, "df": 0}}, "1": {"0": {"0": {"docs": {"sqlglot.parser.Parser.__init__": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "2": {"8": {"docs": {"sqlglot.optimizer.normalize.normalize": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "3": {"9": {"7": {"1": {"9": {"8": {"4": {"4": {"4": {"8": {"1": {"7": {"2": {"8": {"docs": {"sqlglot.dataframe.sql.Column.between": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "5": {"2": {"2": {"9": {"4": {"4": {"docs": {"sqlglot.dataframe.sql.Column.over": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "8": {"1": {"3": {"2": {"4": {"8": {"docs": {"sqlglot.dataframe.sql.WindowSpec.orderBy": {"tf": 1.4142135623730951}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "9": {"1": {"3": {"7": {"1": {"2": {"docs": {"sqlglot.dataframe.sql.WindowSpec.partitionBy": {"tf": 1.4142135623730951}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "8": {"9": {"5": {"3": {"6": {"docs": {"sqlglot.dataframe.sql.Window.orderBy": {"tf": 1.4142135623730951}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "5": {"0": {"5": {"3": {"7": {"7": {"6": {"docs": {"sqlglot.dataframe.sql.Window.partitionBy": {"tf": 1.4142135623730951}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "6": {"1": {"2": {"2": {"2": {"4": {"docs": {"sqlglot.dataframe.sql.Column.ensure_col": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "8": {"5": {"0": {"0": {"8": {"docs": {"sqlglot.dataframe.sql.DataFrame.repartition": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "7": {"9": {"5": {"2": {"3": {"2": {"docs": {"sqlglot.dataframe.sql.DataFrame.repartition": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "8": {"1": {"5": {"1": {"6": {"8": {"docs": {"sqlglot.dataframe.sql.Column.inverse_binary_op": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "9": {"0": {"6": {"8": {"9": {"6": {"docs": {"sqlglot.dataframe.sql.Column.invoke_expression_over_column": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "3": {"1": {"1": {"5": {"2": {"docs": {"sqlglot.dataframe.sql.Column.binary_op": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "5": {"0": {"9": {"4": {"4": {"docs": {"sqlglot.dataframe.sql.Column.invoke_anonymous_function": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "6": {"0": {"3": {"0": {"7": {"5": {"2": {"docs": {"sqlglot.dataframe.sql.Column.invoke_anonymous_function": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "1": {"0": {"5": {"6": {"6": {"4": {"docs": {"sqlglot.dataframe.sql.DataFrame.replace": {"tf": 1.4142135623730951}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "2": {"7": {"5": {"0": {"2": {"4": {"docs": {"sqlglot.dataframe.sql.Column.ensure_cols": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "3": {"7": {"9": {"7": {"2": {"8": {"docs": {"sqlglot.dataframe.sql.Column.isin": {"tf": 1.4142135623730951}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "5": {"0": {"7": {"9": {"5": {"2": {"docs": {"sqlglot.dataframe.sql.Column.between": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "8": {"6": {"9": {"5": {"5": {"2": {"docs": {"sqlglot.dataframe.sql.SparkSession.createDataFrame": {"tf": 1.4142135623730951}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "7": {"2": {"0": {"2": {"2": {"8": {"8": {"docs": {"sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "3": {"8": {"2": {"4": {"1": {"6": {"docs": {"sqlglot.dataframe.sql.SparkSession.createDataFrame": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "7": {"1": {"3": {"1": {"2": {"0": {"docs": {"sqlglot.dataframe.sql.Column.__init__": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "5": {"1": {"5": {"3": {"5": {"4": {"4": {"0": {"docs": {"sqlglot.dataframe.sql.DataFrame.__init__": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "7": {"0": {"7": {"0": {"2": {"4": {"docs": {"sqlglot.dataframe.sql.DataFrame.__init__": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {"sqlglot.dataframe.sql.DataFrame.__init__": {"tf": 1}, "sqlglot.optimizer.scope.Scope.__init__": {"tf": 1}, "sqlglot.tokens.Token.__init__": {"tf": 1.4142135623730951}}, "df": 3}, "2": {"docs": {"sqlglot.generator.Generator.__init__": {"tf": 1.4142135623730951}}, "df": 1}, "3": {"9": {"docs": {"sqlglot.dataframe.sql.SparkSession.createDataFrame": {"tf": 2.449489742783178}, "sqlglot.dataframe.sql.DataFrame.__init__": {"tf": 2}, "sqlglot.dataframe.sql.DataFrame.sql": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.join": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.dropna": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.replace": {"tf": 2}, "sqlglot.dataframe.sql.DataFrame.repartition": {"tf": 2}, "sqlglot.dataframe.sql.DataFrame.persist": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.__init__": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.ensure_col": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.ensure_cols": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.invoke_anonymous_function": {"tf": 2}, "sqlglot.dataframe.sql.Column.invoke_expression_over_column": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.binary_op": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.inverse_binary_op": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.isin": {"tf": 2}, "sqlglot.dataframe.sql.Column.between": {"tf": 2}, "sqlglot.dataframe.sql.Column.over": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrameNaFunctions.drop": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Window.partitionBy": {"tf": 2}, "sqlglot.dataframe.sql.Window.orderBy": {"tf": 2}, "sqlglot.dataframe.sql.WindowSpec.partitionBy": {"tf": 2}, "sqlglot.dataframe.sql.WindowSpec.orderBy": {"tf": 2}, "sqlglot.dialects.dialect.var_map_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Generator.tablesample_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.__init__": {"tf": 2}, "sqlglot.generator.Generator.sep": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.seg": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.properties": {"tf": 2.449489742783178}, "sqlglot.generator.Generator.table_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.tablesample_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.lambda_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.subquery_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.expressions": {"tf": 2}, "sqlglot.helper.csv": {"tf": 1.4142135623730951}, "sqlglot.optimizer.canonicalize.canonicalize": {"tf": 1.4142135623730951}, "sqlglot.serde.dump": {"tf": 1.4142135623730951}, "sqlglot.serde.load": {"tf": 1.4142135623730951}}, "df": 39}, "docs": {"sqlglot.generator.Generator.__init__": {"tf": 1}, "sqlglot.parser.Parser.__init__": {"tf": 1}}, "df": 2}, "6": {"docs": {"sqlglot.diff.ChangeDistiller.__init__": {"tf": 1.4142135623730951}}, "df": 1}, "8": {"0": {"docs": {"sqlglot.generator.Generator.__init__": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {"sqlglot.parse": {"tf": 10.099504938362077}, "sqlglot.parse_one": {"tf": 12.727922061357855}, "sqlglot.transpile": {"tf": 14}, "sqlglot.dataframe.sql.SparkSession.table": {"tf": 6}, "sqlglot.dataframe.sql.SparkSession.createDataFrame": {"tf": 12.806248474865697}, "sqlglot.dataframe.sql.SparkSession.sql": {"tf": 6}, "sqlglot.dataframe.sql.DataFrame.__init__": {"tf": 14.2828568570857}, "sqlglot.dataframe.sql.DataFrame.sql": {"tf": 6.4031242374328485}, "sqlglot.dataframe.sql.DataFrame.copy": {"tf": 5.830951894845301}, "sqlglot.dataframe.sql.DataFrame.select": {"tf": 6.324555320336759}, "sqlglot.dataframe.sql.DataFrame.alias": {"tf": 6.48074069840786}, "sqlglot.dataframe.sql.DataFrame.where": {"tf": 8.426149773176359}, "sqlglot.dataframe.sql.DataFrame.filter": {"tf": 8.426149773176359}, "sqlglot.dataframe.sql.DataFrame.groupBy": {"tf": 6.324555320336759}, "sqlglot.dataframe.sql.DataFrame.agg": {"tf": 6.324555320336759}, "sqlglot.dataframe.sql.DataFrame.join": {"tf": 12.041594578792296}, "sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 9.9498743710662}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 9.9498743710662}, "sqlglot.dataframe.sql.DataFrame.union": {"tf": 7.3484692283495345}, "sqlglot.dataframe.sql.DataFrame.unionAll": {"tf": 7.3484692283495345}, "sqlglot.dataframe.sql.DataFrame.unionByName": {"tf": 7.14142842854285}, "sqlglot.dataframe.sql.DataFrame.intersect": {"tf": 7.3484692283495345}, "sqlglot.dataframe.sql.DataFrame.intersectAll": {"tf": 7.3484692283495345}, "sqlglot.dataframe.sql.DataFrame.exceptAll": {"tf": 7.3484692283495345}, "sqlglot.dataframe.sql.DataFrame.distinct": {"tf": 5.291502622129181}, "sqlglot.dataframe.sql.DataFrame.dropDuplicates": {"tf": 5.656854249492381}, "sqlglot.dataframe.sql.DataFrame.dropna": {"tf": 10.677078252031311}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 10}, "sqlglot.dataframe.sql.DataFrame.replace": {"tf": 13.19090595827292}, "sqlglot.dataframe.sql.DataFrame.withColumn": {"tf": 7.937253933193772}, "sqlglot.dataframe.sql.DataFrame.withColumnRenamed": {"tf": 5.0990195135927845}, "sqlglot.dataframe.sql.DataFrame.drop": {"tf": 8.12403840463596}, "sqlglot.dataframe.sql.DataFrame.limit": {"tf": 6}, "sqlglot.dataframe.sql.DataFrame.hint": {"tf": 8}, "sqlglot.dataframe.sql.DataFrame.repartition": {"tf": 9.327379053088816}, "sqlglot.dataframe.sql.DataFrame.coalesce": {"tf": 6}, "sqlglot.dataframe.sql.DataFrame.cache": {"tf": 5.291502622129181}, "sqlglot.dataframe.sql.DataFrame.persist": {"tf": 6.782329983125268}, "sqlglot.dataframe.sql.GroupedData.__init__": {"tf": 9.16515138991168}, "sqlglot.dataframe.sql.GroupedData.agg": {"tf": 8.602325267042627}, "sqlglot.dataframe.sql.GroupedData.count": {"tf": 5.291502622129181}, "sqlglot.dataframe.sql.GroupedData.mean": {"tf": 6.164414002968976}, "sqlglot.dataframe.sql.GroupedData.avg": {"tf": 6.164414002968976}, "sqlglot.dataframe.sql.GroupedData.max": {"tf": 6.164414002968976}, "sqlglot.dataframe.sql.GroupedData.min": {"tf": 6.164414002968976}, "sqlglot.dataframe.sql.GroupedData.sum": {"tf": 6.164414002968976}, "sqlglot.dataframe.sql.GroupedData.pivot": {"tf": 6.164414002968976}, "sqlglot.dataframe.sql.Column.__init__": {"tf": 7.0710678118654755}, "sqlglot.dataframe.sql.Column.ensure_col": {"tf": 7.54983443527075}, "sqlglot.dataframe.sql.Column.ensure_cols": {"tf": 8.831760866327848}, "sqlglot.dataframe.sql.Column.invoke_anonymous_function": {"tf": 9.797958971132712}, "sqlglot.dataframe.sql.Column.invoke_expression_over_column": {"tf": 8.54400374531753}, "sqlglot.dataframe.sql.Column.binary_op": {"tf": 8.246211251235321}, "sqlglot.dataframe.sql.Column.inverse_binary_op": {"tf": 8.246211251235321}, "sqlglot.dataframe.sql.Column.unary_op": {"tf": 6.48074069840786}, "sqlglot.dataframe.sql.Column.ensure_literal": {"tf": 5.656854249492381}, "sqlglot.dataframe.sql.Column.copy": {"tf": 5.291502622129181}, "sqlglot.dataframe.sql.Column.set_table_name": {"tf": 6.6332495807108}, "sqlglot.dataframe.sql.Column.sql": {"tf": 4.242640687119285}, "sqlglot.dataframe.sql.Column.alias": {"tf": 6}, "sqlglot.dataframe.sql.Column.asc": {"tf": 5.291502622129181}, "sqlglot.dataframe.sql.Column.desc": {"tf": 5.291502622129181}, "sqlglot.dataframe.sql.Column.asc_nulls_first": {"tf": 5.291502622129181}, "sqlglot.dataframe.sql.Column.asc_nulls_last": {"tf": 5.291502622129181}, "sqlglot.dataframe.sql.Column.desc_nulls_first": {"tf": 5.291502622129181}, "sqlglot.dataframe.sql.Column.desc_nulls_last": {"tf": 5.291502622129181}, "sqlglot.dataframe.sql.Column.when": {"tf": 7.937253933193772}, "sqlglot.dataframe.sql.Column.otherwise": {"tf": 6}, "sqlglot.dataframe.sql.Column.isNull": {"tf": 5.291502622129181}, "sqlglot.dataframe.sql.Column.isNotNull": {"tf": 5.291502622129181}, "sqlglot.dataframe.sql.Column.cast": {"tf": 6.6332495807108}, "sqlglot.dataframe.sql.Column.startswith": {"tf": 8}, "sqlglot.dataframe.sql.Column.endswith": {"tf": 8}, "sqlglot.dataframe.sql.Column.rlike": {"tf": 6}, "sqlglot.dataframe.sql.Column.like": {"tf": 4.242640687119285}, "sqlglot.dataframe.sql.Column.ilike": {"tf": 4.242640687119285}, "sqlglot.dataframe.sql.Column.substr": {"tf": 9.9498743710662}, "sqlglot.dataframe.sql.Column.isin": {"tf": 7.937253933193772}, "sqlglot.dataframe.sql.Column.between": {"tf": 8.660254037844387}, "sqlglot.dataframe.sql.Column.over": {"tf": 7.211102550927978}, "sqlglot.dataframe.sql.DataFrameNaFunctions.__init__": {"tf": 5.291502622129181}, "sqlglot.dataframe.sql.DataFrameNaFunctions.drop": {"tf": 10.677078252031311}, "sqlglot.dataframe.sql.DataFrameNaFunctions.fill": {"tf": 10.908712114635714}, "sqlglot.dataframe.sql.DataFrameNaFunctions.replace": {"tf": 12.083045973594572}, "sqlglot.dataframe.sql.Window.partitionBy": {"tf": 9}, "sqlglot.dataframe.sql.Window.orderBy": {"tf": 9}, "sqlglot.dataframe.sql.Window.rowsBetween": {"tf": 6.6332495807108}, "sqlglot.dataframe.sql.Window.rangeBetween": {"tf": 6.6332495807108}, "sqlglot.dataframe.sql.WindowSpec.__init__": {"tf": 5.744562646538029}, "sqlglot.dataframe.sql.WindowSpec.copy": {"tf": 3.1622776601683795}, "sqlglot.dataframe.sql.WindowSpec.sql": {"tf": 4.242640687119285}, "sqlglot.dataframe.sql.WindowSpec.partitionBy": {"tf": 9}, "sqlglot.dataframe.sql.WindowSpec.orderBy": {"tf": 9}, "sqlglot.dataframe.sql.WindowSpec.rowsBetween": {"tf": 6.6332495807108}, "sqlglot.dataframe.sql.WindowSpec.rangeBetween": {"tf": 6.6332495807108}, "sqlglot.dataframe.sql.DataFrameReader.__init__": {"tf": 5.291502622129181}, "sqlglot.dataframe.sql.DataFrameReader.table": {"tf": 6}, "sqlglot.dataframe.sql.DataFrameWriter.__init__": {"tf": 10}, "sqlglot.dataframe.sql.DataFrameWriter.copy": {"tf": 5.830951894845301}, "sqlglot.dataframe.sql.DataFrameWriter.sql": {"tf": 4.795831523312719}, "sqlglot.dataframe.sql.DataFrameWriter.mode": {"tf": 6.557438524302}, "sqlglot.dataframe.sql.DataFrameWriter.insertInto": {"tf": 7.615773105863909}, "sqlglot.dataframe.sql.DataFrameWriter.saveAsTable": {"tf": 7.745966692414834}, "sqlglot.dialects.bigquery.BigQuery.Generator.array_sql": {"tf": 5.291502622129181}, "sqlglot.dialects.bigquery.BigQuery.Generator.transaction_sql": {"tf": 4.47213595499958}, "sqlglot.dialects.bigquery.BigQuery.Generator.commit_sql": {"tf": 4.47213595499958}, "sqlglot.dialects.bigquery.BigQuery.Generator.rollback_sql": {"tf": 4.47213595499958}, "sqlglot.dialects.bigquery.BigQuery.Generator.in_unnest_op": {"tf": 5.291502622129181}, "sqlglot.dialects.bigquery.BigQuery.Generator.except_op": {"tf": 5.291502622129181}, "sqlglot.dialects.bigquery.BigQuery.Generator.intersect_op": {"tf": 5.291502622129181}, "sqlglot.dialects.clickhouse.ClickHouse.Generator.cte_sql": {"tf": 5.291502622129181}, "sqlglot.dialects.dialect.Dialect.get_or_raise": {"tf": 9.273618495495704}, "sqlglot.dialects.dialect.Dialect.format_time": {"tf": 7.615773105863909}, "sqlglot.dialects.dialect.Dialect.parse": {"tf": 6.48074069840786}, "sqlglot.dialects.dialect.Dialect.parse_into": {"tf": 10.099504938362077}, "sqlglot.dialects.dialect.Dialect.generate": {"tf": 6.48074069840786}, "sqlglot.dialects.dialect.Dialect.transpile": {"tf": 5.5677643628300215}, "sqlglot.dialects.dialect.Dialect.tokenize": {"tf": 5.744562646538029}, "sqlglot.dialects.dialect.Dialect.parser": {"tf": 5.0990195135927845}, "sqlglot.dialects.dialect.Dialect.generator": {"tf": 5.0990195135927845}, "sqlglot.dialects.dialect.rename_func": {"tf": 6.928203230275509}, "sqlglot.dialects.dialect.approx_count_distinct_sql": {"tf": 6.48074069840786}, "sqlglot.dialects.dialect.if_sql": {"tf": 6.48074069840786}, "sqlglot.dialects.dialect.arrow_json_extract_sql": {"tf": 7.416198487095663}, "sqlglot.dialects.dialect.arrow_json_extract_scalar_sql": {"tf": 7.416198487095663}, "sqlglot.dialects.dialect.inline_array_sql": {"tf": 6.48074069840786}, "sqlglot.dialects.dialect.no_ilike_sql": {"tf": 6.48074069840786}, "sqlglot.dialects.dialect.no_paren_current_date_sql": {"tf": 6.48074069840786}, "sqlglot.dialects.dialect.no_recursive_cte_sql": {"tf": 6.48074069840786}, "sqlglot.dialects.dialect.no_safe_divide_sql": {"tf": 6.48074069840786}, "sqlglot.dialects.dialect.no_tablesample_sql": {"tf": 6.48074069840786}, "sqlglot.dialects.dialect.no_pivot_sql": {"tf": 6.48074069840786}, "sqlglot.dialects.dialect.no_trycast_sql": {"tf": 6.48074069840786}, "sqlglot.dialects.dialect.no_properties_sql": {"tf": 6.48074069840786}, "sqlglot.dialects.dialect.str_position_sql": {"tf": 6.48074069840786}, "sqlglot.dialects.dialect.struct_extract_sql": {"tf": 6.48074069840786}, "sqlglot.dialects.dialect.var_map_sql": {"tf": 8.48528137423857}, "sqlglot.dialects.dialect.format_time_lambda": {"tf": 8.660254037844387}, "sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 6.48074069840786}, "sqlglot.dialects.dialect.parse_date_delta": {"tf": 8}, "sqlglot.dialects.dialect.date_trunc_to_time": {"tf": 6.164414002968976}, "sqlglot.dialects.dialect.timestamptrunc_sql": {"tf": 6.48074069840786}, "sqlglot.dialects.dialect.locate_to_strposition": {"tf": 4.898979485566356}, "sqlglot.dialects.dialect.strposition_to_locate_sql": {"tf": 6.48074069840786}, "sqlglot.dialects.dialect.timestrtotime_sql": {"tf": 6.48074069840786}, "sqlglot.dialects.dialect.datestrtodate_sql": {"tf": 6.48074069840786}, "sqlglot.dialects.dialect.min_or_least": {"tf": 6.48074069840786}, "sqlglot.dialects.dialect.max_or_greatest": {"tf": 6.48074069840786}, "sqlglot.dialects.dialect.count_if_to_sum": {"tf": 6.48074069840786}, "sqlglot.dialects.dialect.trim_sql": {"tf": 6.48074069840786}, "sqlglot.dialects.dialect.str_to_time_sql": {"tf": 5.291502622129181}, "sqlglot.dialects.dialect.ts_or_ds_to_date_sql": {"tf": 4}, "sqlglot.dialects.drill.Drill.Generator.normalize_func": {"tf": 4.47213595499958}, "sqlglot.dialects.duckdb.DuckDB.Generator.tablesample_sql": {"tf": 6.855654600401044}, "sqlglot.dialects.hive.Hive.Generator.arrayagg_sql": {"tf": 5.291502622129181}, "sqlglot.dialects.hive.Hive.Generator.with_properties": {"tf": 5.291502622129181}, "sqlglot.dialects.hive.Hive.Generator.datatype_sql": {"tf": 5.291502622129181}, "sqlglot.dialects.mysql.MySQL.Generator.show_sql": {"tf": 5.291502622129181}, "sqlglot.dialects.oracle.Oracle.Generator.offset_sql": {"tf": 5.291502622129181}, "sqlglot.dialects.oracle.Oracle.Generator.column_sql": {"tf": 5.291502622129181}, "sqlglot.dialects.oracle.Oracle.Generator.xmltable_sql": {"tf": 5.291502622129181}, "sqlglot.dialects.presto.Presto.Generator.transaction_sql": {"tf": 3.7416573867739413}, "sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 5.291502622129181}, "sqlglot.dialects.redshift.Redshift.Generator.with_properties": {"tf": 5.291502622129181}, "sqlglot.dialects.redshift.Redshift.Generator.renametable_sql": {"tf": 5.291502622129181}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 5.291502622129181}, "sqlglot.dialects.snowflake.Snowflake.Generator.except_op": {"tf": 3.7416573867739413}, "sqlglot.dialects.snowflake.Snowflake.Generator.intersect_op": {"tf": 3.7416573867739413}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 5.291502622129181}, "sqlglot.dialects.snowflake.Snowflake.Generator.settag_sql": {"tf": 5.291502622129181}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 5.291502622129181}, "sqlglot.dialects.snowflake.Snowflake.Generator.describe_sql": {"tf": 5.291502622129181}, "sqlglot.dialects.snowflake.Snowflake.Generator.generatedasidentitycolumnconstraint_sql": {"tf": 5.477225575051661}, "sqlglot.dialects.spark.Spark.Generator.cast_sql": {"tf": 5.291502622129181}, "sqlglot.dialects.sqlite.SQLite.Generator.cast_sql": {"tf": 5.291502622129181}, "sqlglot.dialects.sqlite.SQLite.Generator.datediff_sql": {"tf": 5.291502622129181}, "sqlglot.dialects.sqlite.SQLite.Generator.groupconcat_sql": {"tf": 3.7416573867739413}, "sqlglot.dialects.sqlite.SQLite.Generator.least_sql": {"tf": 5.291502622129181}, "sqlglot.dialects.sqlite.SQLite.Generator.transaction_sql": {"tf": 5.291502622129181}, "sqlglot.dialects.teradata.Teradata.Generator.partitionedbyproperty_sql": {"tf": 5.291502622129181}, "sqlglot.dialects.teradata.Teradata.Generator.update_sql": {"tf": 5.291502622129181}, "sqlglot.dialects.teradata.Teradata.Generator.mod_sql": {"tf": 5.291502622129181}, "sqlglot.dialects.teradata.Teradata.Generator.datatype_sql": {"tf": 5.291502622129181}, "sqlglot.dialects.teradata.Teradata.Generator.rangen_sql": {"tf": 5.291502622129181}, "sqlglot.dialects.tsql.generate_date_delta_with_unit_sql": {"tf": 3.7416573867739413}, "sqlglot.dialects.tsql.TSQL.Generator.offset_sql": {"tf": 5.291502622129181}, "sqlglot.dialects.tsql.TSQL.Generator.systemtime_sql": {"tf": 5.291502622129181}, "sqlglot.dialects.tsql.TSQL.Generator.returnsproperty_sql": {"tf": 5.291502622129181}, "sqlglot.diff.Insert.__init__": {"tf": 4.47213595499958}, "sqlglot.diff.Remove.__init__": {"tf": 4.47213595499958}, "sqlglot.diff.Move.__init__": {"tf": 4.47213595499958}, "sqlglot.diff.Update.__init__": {"tf": 6.164414002968976}, "sqlglot.diff.Keep.__init__": {"tf": 6.164414002968976}, "sqlglot.diff.diff": {"tf": 12.96148139681572}, "sqlglot.diff.ChangeDistiller.__init__": {"tf": 5.656854249492381}, "sqlglot.diff.ChangeDistiller.diff": {"tf": 12.727922061357855}, "sqlglot.errors.ParseError.__init__": {"tf": 6.48074069840786}, "sqlglot.errors.ParseError.new": {"tf": 13.038404810405298}, "sqlglot.errors.concat_messages": {"tf": 5.385164807134504}, "sqlglot.errors.merge_errors": {"tf": 6.48074069840786}, "sqlglot.executor.execute": {"tf": 12.727922061357855}, "sqlglot.executor.context.Context.__init__": {"tf": 7.416198487095663}, "sqlglot.executor.context.Context.eval": {"tf": 3.7416573867739413}, "sqlglot.executor.context.Context.eval_tuple": {"tf": 3.7416573867739413}, "sqlglot.executor.context.Context.add_columns": {"tf": 4.69041575982343}, "sqlglot.executor.context.Context.table_iter": {"tf": 7.681145747868608}, "sqlglot.executor.context.Context.filter": {"tf": 4}, "sqlglot.executor.context.Context.sort": {"tf": 4}, "sqlglot.executor.context.Context.set_row": {"tf": 4.47213595499958}, "sqlglot.executor.context.Context.set_index": {"tf": 4.47213595499958}, "sqlglot.executor.context.Context.set_range": {"tf": 5.291502622129181}, "sqlglot.executor.env.reverse_key.__init__": {"tf": 2.8284271247461903}, "sqlglot.executor.env.filter_nulls": {"tf": 4.242640687119285}, "sqlglot.executor.env.null_if_any": {"tf": 3.4641016151377544}, "sqlglot.executor.env.str_position": {"tf": 4.69041575982343}, "sqlglot.executor.env.substring": {"tf": 5.0990195135927845}, "sqlglot.executor.env.cast": {"tf": 3.7416573867739413}, "sqlglot.executor.env.ordered": {"tf": 4.242640687119285}, "sqlglot.executor.env.interval": {"tf": 3.7416573867739413}, "sqlglot.executor.python.PythonExecutor.__init__": {"tf": 4.47213595499958}, "sqlglot.executor.python.PythonExecutor.execute": {"tf": 3.7416573867739413}, "sqlglot.executor.python.PythonExecutor.generate": {"tf": 3.7416573867739413}, "sqlglot.executor.python.PythonExecutor.generate_tuple": {"tf": 3.7416573867739413}, "sqlglot.executor.python.PythonExecutor.context": {"tf": 3.7416573867739413}, "sqlglot.executor.python.PythonExecutor.table": {"tf": 3.7416573867739413}, "sqlglot.executor.python.PythonExecutor.scan": {"tf": 4.242640687119285}, "sqlglot.executor.python.PythonExecutor.static": {"tf": 3.1622776601683795}, "sqlglot.executor.python.PythonExecutor.scan_table": {"tf": 3.7416573867739413}, "sqlglot.executor.python.PythonExecutor.scan_csv": {"tf": 3.7416573867739413}, "sqlglot.executor.python.PythonExecutor.join": {"tf": 4.242640687119285}, "sqlglot.executor.python.PythonExecutor.nested_loop_join": {"tf": 4.795831523312719}, "sqlglot.executor.python.PythonExecutor.hash_join": {"tf": 4.69041575982343}, "sqlglot.executor.python.PythonExecutor.aggregate": {"tf": 4.242640687119285}, "sqlglot.executor.python.PythonExecutor.sort": {"tf": 4.242640687119285}, "sqlglot.executor.python.PythonExecutor.set_operation": {"tf": 4.242640687119285}, "sqlglot.executor.table.Table.__init__": {"tf": 4.898979485566356}, "sqlglot.executor.table.Table.add_columns": {"tf": 4.69041575982343}, "sqlglot.executor.table.Table.append": {"tf": 3.7416573867739413}, "sqlglot.executor.table.Table.pop": {"tf": 3.1622776601683795}, "sqlglot.executor.table.TableIter.__init__": {"tf": 2.8284271247461903}, "sqlglot.executor.table.RangeReader.__init__": {"tf": 2.8284271247461903}, "sqlglot.executor.table.RowReader.__init__": {"tf": 4}, "sqlglot.executor.table.ensure_tables": {"tf": 5.744562646538029}, "sqlglot.expressions.Expression.__init__": {"tf": 3.7416573867739413}, "sqlglot.expressions.Expression.text": {"tf": 4}, "sqlglot.expressions.Expression.copy": {"tf": 3.1622776601683795}, "sqlglot.expressions.Expression.append": {"tf": 4.242640687119285}, "sqlglot.expressions.Expression.set": {"tf": 4.242640687119285}, "sqlglot.expressions.Expression.iter_expressions": {"tf": 5.744562646538029}, "sqlglot.expressions.Expression.find": {"tf": 6.6332495807108}, "sqlglot.expressions.Expression.find_all": {"tf": 6.6332495807108}, "sqlglot.expressions.Expression.find_ancestor": {"tf": 6}, "sqlglot.expressions.Expression.root": {"tf": 4.47213595499958}, "sqlglot.expressions.Expression.walk": {"tf": 5.0990195135927845}, "sqlglot.expressions.Expression.dfs": {"tf": 5.830951894845301}, "sqlglot.expressions.Expression.bfs": {"tf": 4.242640687119285}, "sqlglot.expressions.Expression.unnest": {"tf": 3.1622776601683795}, "sqlglot.expressions.Expression.unalias": {"tf": 3.1622776601683795}, "sqlglot.expressions.Expression.unnest_operands": {"tf": 3.1622776601683795}, "sqlglot.expressions.Expression.flatten": {"tf": 4.242640687119285}, "sqlglot.expressions.Expression.sql": {"tf": 9.055385138137417}, "sqlglot.expressions.Expression.transform": {"tf": 5.830951894845301}, "sqlglot.expressions.Expression.replace": {"tf": 3.7416573867739413}, "sqlglot.expressions.Expression.pop": {"tf": 3.1622776601683795}, "sqlglot.expressions.Expression.assert_is": {"tf": 3.872983346207417}, "sqlglot.expressions.Expression.error_messages": {"tf": 6}, "sqlglot.expressions.Expression.dump": {"tf": 3.1622776601683795}, "sqlglot.expressions.Expression.load": {"tf": 3.7416573867739413}, "sqlglot.expressions.Condition.and_": {"tf": 5.477225575051661}, "sqlglot.expressions.Condition.or_": {"tf": 5.477225575051661}, "sqlglot.expressions.Condition.not_": {"tf": 3.1622776601683795}, "sqlglot.expressions.Unionable.union": {"tf": 6}, "sqlglot.expressions.Unionable.intersect": {"tf": 6}, "sqlglot.expressions.Unionable.except_": {"tf": 6}, "sqlglot.expressions.Column.to_dot": {"tf": 4.47213595499958}, "sqlglot.expressions.Delete.delete": {"tf": 11.489125293076057}, "sqlglot.expressions.Delete.where": {"tf": 12.206555615733702}, "sqlglot.expressions.Delete.returning": {"tf": 11.489125293076057}, "sqlglot.expressions.Literal.number": {"tf": 4.898979485566356}, "sqlglot.expressions.Literal.string": {"tf": 4.898979485566356}, "sqlglot.expressions.Join.on": {"tf": 6.782329983125268}, "sqlglot.expressions.Join.using": {"tf": 6.782329983125268}, "sqlglot.expressions.Properties.from_dict": {"tf": 4.898979485566356}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 6}, "sqlglot.expressions.Subqueryable.limit": {"tf": 7.14142842854285}, "sqlglot.expressions.Subqueryable.with_": {"tf": 8.06225774829855}, "sqlglot.expressions.Union.limit": {"tf": 7.14142842854285}, "sqlglot.expressions.Union.select": {"tf": 12.206555615733702}, "sqlglot.expressions.Select.from_": {"tf": 7.874007874011811}, "sqlglot.expressions.Select.group_by": {"tf": 7.874007874011811}, "sqlglot.expressions.Select.order_by": {"tf": 7.874007874011811}, "sqlglot.expressions.Select.sort_by": {"tf": 7.874007874011811}, "sqlglot.expressions.Select.cluster_by": {"tf": 7.874007874011811}, "sqlglot.expressions.Select.limit": {"tf": 7.14142842854285}, "sqlglot.expressions.Select.offset": {"tf": 7.14142842854285}, "sqlglot.expressions.Select.select": {"tf": 12.206555615733702}, "sqlglot.expressions.Select.lateral": {"tf": 7.874007874011811}, "sqlglot.expressions.Select.join": {"tf": 9.797958971132712}, "sqlglot.expressions.Select.where": {"tf": 7.874007874011811}, "sqlglot.expressions.Select.having": {"tf": 7.874007874011811}, "sqlglot.expressions.Select.window": {"tf": 7.874007874011811}, "sqlglot.expressions.Select.qualify": {"tf": 7.874007874011811}, "sqlglot.expressions.Select.distinct": {"tf": 6}, "sqlglot.expressions.Select.ctas": {"tf": 7.745966692414834}, "sqlglot.expressions.Select.lock": {"tf": 7.14142842854285}, "sqlglot.expressions.Subquery.unnest": {"tf": 3.1622776601683795}, "sqlglot.expressions.DataType.build": {"tf": 11.357816691600547}, "sqlglot.expressions.DataType.is_type": {"tf": 5.656854249492381}, "sqlglot.expressions.Dot.build": {"tf": 6.557438524302}, "sqlglot.expressions.TimeUnit.__init__": {"tf": 3.1622776601683795}, "sqlglot.expressions.Func.from_arg_list": {"tf": 3.7416573867739413}, "sqlglot.expressions.Func.sql_names": {"tf": 3.1622776601683795}, "sqlglot.expressions.Func.sql_name": {"tf": 3.1622776601683795}, "sqlglot.expressions.Func.default_parser_mappings": {"tf": 3.1622776601683795}, "sqlglot.expressions.Cast.is_type": {"tf": 5.656854249492381}, "sqlglot.expressions.maybe_parse": {"tf": 14.866068747318506}, "sqlglot.expressions.union": {"tf": 6}, "sqlglot.expressions.intersect": {"tf": 6}, "sqlglot.expressions.except_": {"tf": 6}, "sqlglot.expressions.select": {"tf": 10.677078252031311}, "sqlglot.expressions.from_": {"tf": 6}, "sqlglot.expressions.update": {"tf": 13.892443989449804}, "sqlglot.expressions.delete": {"tf": 13.711309200802088}, "sqlglot.expressions.condition": {"tf": 5.830951894845301}, "sqlglot.expressions.and_": {"tf": 6}, "sqlglot.expressions.or_": {"tf": 6}, "sqlglot.expressions.not_": {"tf": 5.830951894845301}, "sqlglot.expressions.paren": {"tf": 4.47213595499958}, "sqlglot.expressions.to_identifier": {"tf": 4.242640687119285}, "sqlglot.expressions.to_interval": {"tf": 6.164414002968976}, "sqlglot.expressions.to_table": {"tf": 7.745966692414834}, "sqlglot.expressions.to_column": {"tf": 6.708203932499369}, "sqlglot.expressions.alias_": {"tf": 13.601470508735444}, "sqlglot.expressions.subquery": {"tf": 5.656854249492381}, "sqlglot.expressions.column": {"tf": 13.114877048604}, "sqlglot.expressions.cast": {"tf": 9.433981132056603}, "sqlglot.expressions.table_": {"tf": 7.54983443527075}, "sqlglot.expressions.values": {"tf": 10.44030650891055}, "sqlglot.expressions.var": {"tf": 6.928203230275509}, "sqlglot.expressions.rename_table": {"tf": 7.745966692414834}, "sqlglot.expressions.convert": {"tf": 4.47213595499958}, "sqlglot.expressions.replace_children": {"tf": 5.0990195135927845}, "sqlglot.expressions.column_table_names": {"tf": 3.1622776601683795}, "sqlglot.expressions.table_name": {"tf": 3.4641016151377544}, "sqlglot.expressions.replace_tables": {"tf": 3.7416573867739413}, "sqlglot.expressions.replace_placeholders": {"tf": 4.69041575982343}, "sqlglot.expressions.expand": {"tf": 8.306623862918075}, "sqlglot.expressions.func": {"tf": 10.04987562112089}, "sqlglot.expressions.true": {"tf": 2.6457513110645907}, "sqlglot.expressions.false": {"tf": 2.6457513110645907}, "sqlglot.expressions.null": {"tf": 2.6457513110645907}, "sqlglot.generator.Generator.__init__": {"tf": 15.033296378372908}, "sqlglot.generator.Generator.generate": {"tf": 7.937253933193772}, "sqlglot.generator.Generator.unsupported": {"tf": 4.47213595499958}, "sqlglot.generator.Generator.sep": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.seg": {"tf": 6}, "sqlglot.generator.Generator.pad_comment": {"tf": 4.47213595499958}, "sqlglot.generator.Generator.maybe_comment": {"tf": 6}, "sqlglot.generator.Generator.wrap": {"tf": 5.744562646538029}, "sqlglot.generator.Generator.no_identify": {"tf": 6.6332495807108}, "sqlglot.generator.Generator.normalize_func": {"tf": 4.47213595499958}, "sqlglot.generator.Generator.indent": {"tf": 9.327379053088816}, "sqlglot.generator.Generator.sql": {"tf": 8.94427190999916}, "sqlglot.generator.Generator.uncache_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.cache_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.characterset_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.column_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.columnposition_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.columndef_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.columnconstraint_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.autoincrementcolumnconstraint_sql": {"tf": 4.242640687119285}, "sqlglot.generator.Generator.compresscolumnconstraint_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.generatedasidentitycolumnconstraint_sql": {"tf": 5.477225575051661}, "sqlglot.generator.Generator.notnullcolumnconstraint_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.primarykeycolumnconstraint_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.uniquecolumnconstraint_sql": {"tf": 4.242640687119285}, "sqlglot.generator.Generator.create_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.describe_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.prepend_ctes": {"tf": 6}, "sqlglot.generator.Generator.with_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.cte_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.tablealias_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.bitstring_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.hexstring_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.datatype_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.directory_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.delete_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.drop_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.except_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.except_op": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.fetch_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.filter_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.hint_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.index_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.identifier_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.national_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.partition_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.properties_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.root_properties": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.properties": {"tf": 9.797958971132712}, "sqlglot.generator.Generator.with_properties": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.locate_properties": {"tf": 7.937253933193772}, "sqlglot.generator.Generator.property_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.likeproperty_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.fallbackproperty_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.journalproperty_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.freespaceproperty_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.afterjournalproperty_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.checksumproperty_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.mergeblockratioproperty_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.datablocksizeproperty_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.blockcompressionproperty_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.isolatedloadingproperty_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.lockingproperty_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.withdataproperty_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.insert_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.intersect_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.intersect_op": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.introducer_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.pseudotype_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.returning_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.rowformatdelimitedproperty_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.table_sql": {"tf": 6.6332495807108}, "sqlglot.generator.Generator.tablesample_sql": {"tf": 6.855654600401044}, "sqlglot.generator.Generator.pivot_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.tuple_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.update_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.values_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.var_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.into_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.from_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.group_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.having_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.join_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.lambda_sql": {"tf": 6.855654600401044}, "sqlglot.generator.Generator.lateral_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.limit_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.offset_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.setitem_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.set_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.pragma_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.lock_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.literal_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.loaddata_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.null_sql": {"tf": 4.47213595499958}, "sqlglot.generator.Generator.boolean_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.order_sql": {"tf": 6.48074069840786}, "sqlglot.generator.Generator.cluster_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.distribute_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.sort_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.ordered_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.matchrecognize_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.query_modifiers": {"tf": 6.164414002968976}, "sqlglot.generator.Generator.select_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.schema_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.star_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.structkwarg_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.parameter_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.sessionparameter_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.placeholder_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.subquery_sql": {"tf": 6.6332495807108}, "sqlglot.generator.Generator.qualify_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.union_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.union_op": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.unnest_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.where_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.window_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.partition_by_sql": {"tf": 6.557438524302}, "sqlglot.generator.Generator.window_spec_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.withingroup_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.between_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.bracket_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.all_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.any_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.exists_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.case_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.constraint_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.extract_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.trim_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.concat_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.check_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.foreignkey_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.primarykey_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.unique_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.if_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.matchagainst_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.jsonkeyvalue_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.jsonobject_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.in_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.in_unnest_op": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.interval_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.return_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.reference_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.anonymous_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.paren_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.neg_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.not_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.alias_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.aliases_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.attimezone_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.add_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.and_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.connector_sql": {"tf": 6}, "sqlglot.generator.Generator.bitwiseand_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.bitwiseleftshift_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.bitwisenot_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.bitwiseor_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.bitwiserightshift_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.bitwisexor_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.cast_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.currentdate_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.collate_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.command_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.comment_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.transaction_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.commit_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.rollback_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.altercolumn_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.renametable_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.altertable_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.droppartition_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.addconstraint_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.distinct_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.ignorenulls_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.respectnulls_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.intdiv_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.dpipe_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.div_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.overlaps_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.distance_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.dot_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.eq_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.escape_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.glob_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.gt_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.gte_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.ilike_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.ilikeany_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.is_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.like_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.likeany_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.similarto_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.lt_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.lte_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.mod_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.mul_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.neq_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.nullsafeeq_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.nullsafeneq_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.or_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.slice_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.sub_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.trycast_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.use_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.binary": {"tf": 6}, "sqlglot.generator.Generator.function_fallback_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.func": {"tf": 7.483314773547883}, "sqlglot.generator.Generator.format_args": {"tf": 6.708203932499369}, "sqlglot.generator.Generator.text_width": {"tf": 4.47213595499958}, "sqlglot.generator.Generator.format_time": {"tf": 5.744562646538029}, "sqlglot.generator.Generator.expressions": {"tf": 10.677078252031311}, "sqlglot.generator.Generator.op_expressions": {"tf": 7.3484692283495345}, "sqlglot.generator.Generator.naked_property": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.set_operation": {"tf": 6}, "sqlglot.generator.Generator.tag_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.token_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.userdefinedfunction_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.joinhint_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.kwarg_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.when_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.merge_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.tochar_sql": {"tf": 5.291502622129181}, "sqlglot.helper.seq_get": {"tf": 6.164414002968976}, "sqlglot.helper.ensure_list": {"tf": 3.1622776601683795}, "sqlglot.helper.ensure_collection": {"tf": 3.1622776601683795}, "sqlglot.helper.csv": {"tf": 5.477225575051661}, "sqlglot.helper.subclasses": {"tf": 9.38083151964686}, "sqlglot.helper.apply_index_offset": {"tf": 6.6332495807108}, "sqlglot.helper.camel_to_snake_case": {"tf": 4}, "sqlglot.helper.while_changing": {"tf": 7.483314773547883}, "sqlglot.helper.tsort": {"tf": 6.324555320336759}, "sqlglot.helper.open_file": {"tf": 3.872983346207417}, "sqlglot.helper.csv_reader": {"tf": 4.898979485566356}, "sqlglot.helper.find_new_name": {"tf": 5.385164807134504}, "sqlglot.helper.object_to_dict": {"tf": 4.69041575982343}, "sqlglot.helper.split_num_words": {"tf": 7.615773105863909}, "sqlglot.helper.is_iterable": {"tf": 4}, "sqlglot.helper.flatten": {"tf": 6.082762530298219}, "sqlglot.helper.count_params": {"tf": 4}, "sqlglot.helper.dict_depth": {"tf": 4}, "sqlglot.helper.first": {"tf": 5}, "sqlglot.helper.should_identify": {"tf": 5.385164807134504}, "sqlglot.lineage.Node.__init__": {"tf": 9}, "sqlglot.lineage.Node.walk": {"tf": 5}, "sqlglot.lineage.Node.to_html": {"tf": 5.0990195135927845}, "sqlglot.lineage.lineage": {"tf": 16.522711641858304}, "sqlglot.lineage.LineageHTML.__init__": {"tf": 10.44030650891055}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 5.830951894845301}, "sqlglot.optimizer.annotate_types.TypeAnnotator.__init__": {"tf": 5.291502622129181}, "sqlglot.optimizer.annotate_types.TypeAnnotator.annotate": {"tf": 3.7416573867739413}, "sqlglot.optimizer.canonicalize.canonicalize": {"tf": 7.0710678118654755}, "sqlglot.optimizer.canonicalize.add_text_to_concat": {"tf": 5.656854249492381}, "sqlglot.optimizer.canonicalize.coerce_type": {"tf": 5.656854249492381}, "sqlglot.optimizer.canonicalize.remove_redundant_casts": {"tf": 5.744562646538029}, "sqlglot.optimizer.canonicalize.ensure_bool_predicates": {"tf": 5.744562646538029}, "sqlglot.optimizer.eliminate_ctes.eliminate_ctes": {"tf": 3.1622776601683795}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 3.1622776601683795}, "sqlglot.optimizer.eliminate_joins.join_condition": {"tf": 3.1622776601683795}, "sqlglot.optimizer.eliminate_subqueries.eliminate_subqueries": {"tf": 3.1622776601683795}, "sqlglot.optimizer.expand_laterals.expand_laterals": {"tf": 5.744562646538029}, "sqlglot.optimizer.expand_multi_table_selects.expand_multi_table_selects": {"tf": 3.1622776601683795}, "sqlglot.optimizer.isolate_table_selects.isolate_table_selects": {"tf": 4.242640687119285}, "sqlglot.optimizer.lower_identities.lower_identities": {"tf": 3.1622776601683795}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 4.242640687119285}, "sqlglot.optimizer.merge_subqueries.merge_ctes": {"tf": 4.242640687119285}, "sqlglot.optimizer.merge_subqueries.merge_derived_tables": {"tf": 4.242640687119285}, "sqlglot.optimizer.normalize.normalize": {"tf": 7.280109889280518}, "sqlglot.optimizer.normalize.normalized": {"tf": 4.242640687119285}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 4.242640687119285}, "sqlglot.optimizer.normalize.distributive_law": {"tf": 5.0990195135927845}, "sqlglot.optimizer.optimize_joins.optimize_joins": {"tf": 3.1622776601683795}, "sqlglot.optimizer.optimize_joins.reorder_joins": {"tf": 3.1622776601683795}, "sqlglot.optimizer.optimize_joins.normalize": {"tf": 3.1622776601683795}, "sqlglot.optimizer.optimize_joins.other_table_names": {"tf": 3.7416573867739413}, "sqlglot.optimizer.optimizer.optimize": {"tf": 22.781571499789035}, "sqlglot.optimizer.pushdown_predicates.pushdown_predicates": {"tf": 3.1622776601683795}, "sqlglot.optimizer.pushdown_predicates.pushdown": {"tf": 4.242640687119285}, "sqlglot.optimizer.pushdown_predicates.pushdown_cnf": {"tf": 4.242640687119285}, "sqlglot.optimizer.pushdown_predicates.pushdown_dnf": {"tf": 4.242640687119285}, "sqlglot.optimizer.pushdown_predicates.nodes_for_predicate": {"tf": 4.242640687119285}, "sqlglot.optimizer.pushdown_predicates.replace_aliases": {"tf": 3.7416573867739413}, "sqlglot.optimizer.pushdown_projections.DEFAULT_SELECTION": {"tf": 2.6457513110645907}, "sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 5.0990195135927845}, "sqlglot.optimizer.qualify_columns.qualify_columns": {"tf": 3.7416573867739413}, "sqlglot.optimizer.qualify_columns.validate_qualify_columns": {"tf": 3.1622776601683795}, "sqlglot.optimizer.qualify_columns.Resolver.__init__": {"tf": 3.4641016151377544}, "sqlglot.optimizer.qualify_columns.Resolver.get_table": {"tf": 5.744562646538029}, "sqlglot.optimizer.qualify_columns.Resolver.get_source_columns": {"tf": 4.69041575982343}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"tf": 5.830951894845301}, "sqlglot.optimizer.scope.Scope.__init__": {"tf": 8.06225774829855}, "sqlglot.optimizer.scope.Scope.clear_cache": {"tf": 3.1622776601683795}, "sqlglot.optimizer.scope.Scope.branch": {"tf": 5.656854249492381}, "sqlglot.optimizer.scope.Scope.walk": {"tf": 4.242640687119285}, "sqlglot.optimizer.scope.Scope.find": {"tf": 4.898979485566356}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 4.898979485566356}, "sqlglot.optimizer.scope.Scope.replace": {"tf": 4.242640687119285}, "sqlglot.optimizer.scope.Scope.source_columns": {"tf": 3.7416573867739413}, "sqlglot.optimizer.scope.Scope.rename_source": {"tf": 4.242640687119285}, "sqlglot.optimizer.scope.Scope.add_source": {"tf": 4.242640687119285}, "sqlglot.optimizer.scope.Scope.remove_source": {"tf": 3.7416573867739413}, "sqlglot.optimizer.scope.Scope.traverse": {"tf": 3.1622776601683795}, "sqlglot.optimizer.scope.Scope.ref_count": {"tf": 3.1622776601683795}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 3.1622776601683795}, "sqlglot.optimizer.scope.build_scope": {"tf": 3.1622776601683795}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 4.242640687119285}, "sqlglot.optimizer.simplify.simplify": {"tf": 3.1622776601683795}, "sqlglot.optimizer.simplify.rewrite_between": {"tf": 5.744562646538029}, "sqlglot.optimizer.simplify.simplify_not": {"tf": 3.1622776601683795}, "sqlglot.optimizer.simplify.flatten": {"tf": 3.1622776601683795}, "sqlglot.optimizer.simplify.simplify_connectors": {"tf": 4.242640687119285}, "sqlglot.optimizer.simplify.remove_compliments": {"tf": 4.242640687119285}, "sqlglot.optimizer.simplify.uniq_sort": {"tf": 5.0990195135927845}, "sqlglot.optimizer.simplify.absorb_and_eliminate": {"tf": 4.242640687119285}, "sqlglot.optimizer.simplify.simplify_literals": {"tf": 4.242640687119285}, "sqlglot.optimizer.simplify.simplify_parens": {"tf": 3.1622776601683795}, "sqlglot.optimizer.simplify.remove_where_true": {"tf": 3.1622776601683795}, "sqlglot.optimizer.simplify.always_true": {"tf": 3.1622776601683795}, "sqlglot.optimizer.simplify.is_complement": {"tf": 3.7416573867739413}, "sqlglot.optimizer.simplify.is_false": {"tf": 4.898979485566356}, "sqlglot.optimizer.simplify.is_null": {"tf": 4.898979485566356}, "sqlglot.optimizer.simplify.eval_boolean": {"tf": 4.242640687119285}, "sqlglot.optimizer.simplify.extract_date": {"tf": 3.1622776601683795}, "sqlglot.optimizer.simplify.extract_interval": {"tf": 3.1622776601683795}, "sqlglot.optimizer.simplify.date_literal": {"tf": 3.1622776601683795}, "sqlglot.optimizer.simplify.boolean_literal": {"tf": 3.1622776601683795}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 3.1622776601683795}, "sqlglot.optimizer.unnest_subqueries.unnest": {"tf": 4.242640687119285}, "sqlglot.optimizer.unnest_subqueries.decorrelate": {"tf": 4.69041575982343}, "sqlglot.parser.parse_var_map": {"tf": 4.898979485566356}, "sqlglot.parser.parse_like": {"tf": 3.1622776601683795}, "sqlglot.parser.binary_range_parser": {"tf": 8.660254037844387}, "sqlglot.parser.Parser.__init__": {"tf": 11.269427669584644}, "sqlglot.parser.Parser.reset": {"tf": 3.1622776601683795}, "sqlglot.parser.Parser.parse": {"tf": 8.426149773176359}, "sqlglot.parser.Parser.parse_into": {"tf": 11.313708498984761}, "sqlglot.parser.Parser.check_errors": {"tf": 3.4641016151377544}, "sqlglot.parser.Parser.raise_error": {"tf": 6.855654600401044}, "sqlglot.parser.Parser.expression": {"tf": 8.54400374531753}, "sqlglot.parser.Parser.validate_expression": {"tf": 7.0710678118654755}, "sqlglot.planner.Plan.__init__": {"tf": 4.47213595499958}, "sqlglot.planner.Step.from_expression": {"tf": 8.602325267042627}, "sqlglot.planner.Step.add_dependency": {"tf": 5.291502622129181}, "sqlglot.planner.Step.to_s": {"tf": 5.0990195135927845}, "sqlglot.planner.Scan.from_expression": {"tf": 8.602325267042627}, "sqlglot.planner.Join.from_joins": {"tf": 8.888194417315589}, "sqlglot.planner.SetOperation.__init__": {"tf": 8.306623862918075}, "sqlglot.planner.SetOperation.from_expression": {"tf": 8.602325267042627}, "sqlglot.schema.Schema.add_table": {"tf": 9.539392014169456}, "sqlglot.schema.Schema.column_names": {"tf": 7.416198487095663}, "sqlglot.schema.Schema.get_column_type": {"tf": 7.745966692414834}, "sqlglot.schema.AbstractMappingSchema.__init__": {"tf": 4.795831523312719}, "sqlglot.schema.AbstractMappingSchema.table_parts": {"tf": 5.744562646538029}, "sqlglot.schema.AbstractMappingSchema.find": {"tf": 8.48528137423857}, "sqlglot.schema.MappingSchema.__init__": {"tf": 10.295630140987}, "sqlglot.schema.MappingSchema.from_mapping_schema": {"tf": 6.164414002968976}, "sqlglot.schema.MappingSchema.copy": {"tf": 5.0990195135927845}, "sqlglot.schema.MappingSchema.add_table": {"tf": 9.539392014169456}, "sqlglot.schema.MappingSchema.column_names": {"tf": 7.416198487095663}, "sqlglot.schema.MappingSchema.get_column_type": {"tf": 8.06225774829855}, "sqlglot.schema.ensure_schema": {"tf": 9.327379053088816}, "sqlglot.schema.ensure_column_mapping": {"tf": 7.483314773547883}, "sqlglot.schema.flatten_schema": {"tf": 7.54983443527075}, "sqlglot.serde.dump": {"tf": 11.045361017187261}, "sqlglot.serde.load": {"tf": 11.045361017187261}, "sqlglot.time.format_time": {"tf": 7.810249675906654}, "sqlglot.tokens.Token.__init__": {"tf": 9}, "sqlglot.tokens.Token.number": {"tf": 5.291502622129181}, "sqlglot.tokens.Token.string": {"tf": 5.291502622129181}, "sqlglot.tokens.Token.identifier": {"tf": 5.291502622129181}, "sqlglot.tokens.Token.var": {"tf": 5.291502622129181}, "sqlglot.tokens.Tokenizer.reset": {"tf": 3.4641016151377544}, "sqlglot.tokens.Tokenizer.tokenize": {"tf": 5.744562646538029}, "sqlglot.transforms.unalias_group": {"tf": 5.744562646538029}, "sqlglot.transforms.eliminate_distinct_on": {"tf": 5.744562646538029}, "sqlglot.transforms.eliminate_qualify": {"tf": 5.744562646538029}, "sqlglot.transforms.remove_precision_parameterized_types": {"tf": 5.744562646538029}, "sqlglot.transforms.preprocess": {"tf": 10.816653826391969}, "sqlglot.transforms.delegate": {"tf": 4}, "sqlglot.trie.new_trie": {"tf": 4.898979485566356}, "sqlglot.trie.in_trie": {"tf": 6.244997998398398}}, "df": 730, "s": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.parse": {"tf": 1}, "sqlglot.parse_one": {"tf": 1}, "sqlglot.transpile": {"tf": 1}, "sqlglot.dataframe.sql.SparkSession.table": {"tf": 1}, "sqlglot.dataframe.sql.SparkSession.createDataFrame": {"tf": 1}, "sqlglot.dataframe.sql.SparkSession.sql": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.copy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.select": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.alias": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.where": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.filter": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.groupBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.agg": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.join": {"tf": 2}, "sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.union": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.unionAll": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.unionByName": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.intersect": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.intersectAll": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.exceptAll": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.distinct": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.dropna": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.replace": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.withColumn": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.drop": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.limit": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.hint": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.repartition": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.coalesce": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.cache": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.persist": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.__init__": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.GroupedData.agg": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.GroupedData.count": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.mean": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.avg": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.max": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.min": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.sum": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.pivot": {"tf": 1}, "sqlglot.dataframe.sql.Column.ensure_cols": {"tf": 1}, "sqlglot.dataframe.sql.Column.invoke_anonymous_function": {"tf": 1}, "sqlglot.dataframe.sql.Column.invoke_expression_over_column": {"tf": 1}, "sqlglot.dataframe.sql.Column.binary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.inverse_binary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.unary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.ensure_literal": {"tf": 1}, "sqlglot.dataframe.sql.Column.copy": {"tf": 1}, "sqlglot.dataframe.sql.Column.set_table_name": {"tf": 1}, "sqlglot.dataframe.sql.Column.alias": {"tf": 1}, "sqlglot.dataframe.sql.Column.asc": {"tf": 1}, "sqlglot.dataframe.sql.Column.desc": {"tf": 1}, "sqlglot.dataframe.sql.Column.asc_nulls_first": {"tf": 1}, "sqlglot.dataframe.sql.Column.asc_nulls_last": {"tf": 1}, "sqlglot.dataframe.sql.Column.desc_nulls_first": {"tf": 1}, "sqlglot.dataframe.sql.Column.desc_nulls_last": {"tf": 1}, "sqlglot.dataframe.sql.Column.when": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.otherwise": {"tf": 1}, "sqlglot.dataframe.sql.Column.isNull": {"tf": 1}, "sqlglot.dataframe.sql.Column.isNotNull": {"tf": 1}, "sqlglot.dataframe.sql.Column.cast": {"tf": 1}, "sqlglot.dataframe.sql.Column.startswith": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.endswith": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.rlike": {"tf": 1}, "sqlglot.dataframe.sql.Column.substr": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Column.between": {"tf": 1}, "sqlglot.dataframe.sql.Column.over": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.drop": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.fill": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.replace": {"tf": 1}, "sqlglot.dataframe.sql.Window.partitionBy": {"tf": 1}, "sqlglot.dataframe.sql.Window.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.Window.rowsBetween": {"tf": 1}, "sqlglot.dataframe.sql.Window.rangeBetween": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.partitionBy": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.rowsBetween": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.rangeBetween": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameReader.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameReader.table": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.__init__": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrameWriter.copy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.mode": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.insertInto": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.parse": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.parse_into": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.transpile": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.tokenize": {"tf": 1}, "sqlglot.executor.execute": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1}, "sqlglot.expressions.to_table": {"tf": 1}, "sqlglot.expressions.to_column": {"tf": 1}, "sqlglot.generator.Generator.seg": {"tf": 1}, "sqlglot.generator.Generator.maybe_comment": {"tf": 1}, "sqlglot.generator.Generator.indent": {"tf": 1}, "sqlglot.generator.Generator.prepend_ctes": {"tf": 1}, "sqlglot.lineage.lineage": {"tf": 1}, "sqlglot.parser.Parser.parse": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 1}, "sqlglot.schema.Schema.add_table": {"tf": 1}, "sqlglot.schema.MappingSchema.add_table": {"tf": 1}, "sqlglot.schema.ensure_column_mapping": {"tf": 1}, "sqlglot.tokens.Tokenizer.tokenize": {"tf": 1}, "sqlglot.transforms.preprocess": {"tf": 1}}, "df": 109, "g": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.parse": {"tf": 1.7320508075688772}, "sqlglot.parse_one": {"tf": 2.23606797749979}, "sqlglot.transpile": {"tf": 2.23606797749979}, "sqlglot.dataframe.sql.SparkSession.table": {"tf": 1}, "sqlglot.dataframe.sql.SparkSession.createDataFrame": {"tf": 1}, "sqlglot.dataframe.sql.SparkSession.sql": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.__init__": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.copy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.select": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.alias": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.where": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.filter": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.groupBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.agg": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.join": {"tf": 2}, "sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.union": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.unionAll": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.unionByName": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.intersect": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.intersectAll": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.exceptAll": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.distinct": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.dropna": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.replace": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.withColumn": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.drop": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.limit": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.hint": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.repartition": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.coalesce": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.cache": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.persist": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.__init__": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.GroupedData.agg": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.GroupedData.count": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.mean": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.avg": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.max": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.min": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.sum": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.pivot": {"tf": 1}, "sqlglot.dataframe.sql.Column.__init__": {"tf": 1}, "sqlglot.dataframe.sql.Column.ensure_col": {"tf": 1}, "sqlglot.dataframe.sql.Column.ensure_cols": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.invoke_anonymous_function": {"tf": 1}, "sqlglot.dataframe.sql.Column.invoke_expression_over_column": {"tf": 1}, "sqlglot.dataframe.sql.Column.binary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.inverse_binary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.unary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.ensure_literal": {"tf": 1}, "sqlglot.dataframe.sql.Column.copy": {"tf": 1}, "sqlglot.dataframe.sql.Column.set_table_name": {"tf": 1}, "sqlglot.dataframe.sql.Column.alias": {"tf": 1}, "sqlglot.dataframe.sql.Column.asc": {"tf": 1}, "sqlglot.dataframe.sql.Column.desc": {"tf": 1}, "sqlglot.dataframe.sql.Column.asc_nulls_first": {"tf": 1}, "sqlglot.dataframe.sql.Column.asc_nulls_last": {"tf": 1}, "sqlglot.dataframe.sql.Column.desc_nulls_first": {"tf": 1}, "sqlglot.dataframe.sql.Column.desc_nulls_last": {"tf": 1}, "sqlglot.dataframe.sql.Column.when": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.otherwise": {"tf": 1}, "sqlglot.dataframe.sql.Column.isNull": {"tf": 1}, "sqlglot.dataframe.sql.Column.isNotNull": {"tf": 1}, "sqlglot.dataframe.sql.Column.cast": {"tf": 1}, "sqlglot.dataframe.sql.Column.startswith": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.endswith": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.rlike": {"tf": 1}, "sqlglot.dataframe.sql.Column.substr": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Column.between": {"tf": 1}, "sqlglot.dataframe.sql.Column.over": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.drop": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.fill": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.replace": {"tf": 1}, "sqlglot.dataframe.sql.Window.partitionBy": {"tf": 1}, "sqlglot.dataframe.sql.Window.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.Window.rowsBetween": {"tf": 1}, "sqlglot.dataframe.sql.Window.rangeBetween": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.__init__": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.partitionBy": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.rowsBetween": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.rangeBetween": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameReader.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameReader.table": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.__init__": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrameWriter.copy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.mode": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.insertInto": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.array_sql": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.in_unnest_op": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.except_op": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.intersect_op": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator.cte_sql": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.get_or_raise": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.Dialect.format_time": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialect.parse": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.parse_into": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.Dialect.generate": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.tokenize": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.parser": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.generator": {"tf": 1}, "sqlglot.dialects.dialect.rename_func": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.approx_count_distinct_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.if_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.arrow_json_extract_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.arrow_json_extract_scalar_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.inline_array_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.no_ilike_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.no_paren_current_date_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.no_recursive_cte_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.no_safe_divide_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.no_tablesample_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.no_pivot_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.no_trycast_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.no_properties_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.str_position_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.struct_extract_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.var_map_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.date_trunc_to_time": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.timestamptrunc_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.locate_to_strposition": {"tf": 1}, "sqlglot.dialects.dialect.strposition_to_locate_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.timestrtotime_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.datestrtodate_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.min_or_least": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.max_or_greatest": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.count_if_to_sum": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.trim_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.str_to_time_sql": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator.tablesample_sql": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator.arrayagg_sql": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator.with_properties": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator.show_sql": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator.offset_sql": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator.column_sql": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator.xmltable_sql": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.with_properties": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.renametable_sql": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.settag_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.describe_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.generatedasidentitycolumnconstraint_sql": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator.cast_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.cast_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.datediff_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.least_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.transaction_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.partitionedbyproperty_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.update_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.mod_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.rangen_sql": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator.offset_sql": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator.systemtime_sql": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator.returnsproperty_sql": {"tf": 1}, "sqlglot.diff.Insert.__init__": {"tf": 1}, "sqlglot.diff.Remove.__init__": {"tf": 1}, "sqlglot.diff.Move.__init__": {"tf": 1}, "sqlglot.diff.Update.__init__": {"tf": 1.4142135623730951}, "sqlglot.diff.Keep.__init__": {"tf": 1.4142135623730951}, "sqlglot.diff.diff": {"tf": 3}, "sqlglot.diff.ChangeDistiller.diff": {"tf": 3}, "sqlglot.errors.ParseError.new": {"tf": 1}, "sqlglot.errors.merge_errors": {"tf": 1}, "sqlglot.executor.execute": {"tf": 2.23606797749979}, "sqlglot.executor.context.Context.__init__": {"tf": 1}, "sqlglot.executor.context.Context.table_iter": {"tf": 1.4142135623730951}, "sqlglot.executor.table.ensure_tables": {"tf": 1}, "sqlglot.expressions.Expression.iter_expressions": {"tf": 1}, "sqlglot.expressions.Expression.root": {"tf": 1}, "sqlglot.expressions.Expression.sql": {"tf": 1.4142135623730951}, "sqlglot.expressions.Column.to_dot": {"tf": 1}, "sqlglot.expressions.Delete.delete": {"tf": 2}, "sqlglot.expressions.Delete.where": {"tf": 2}, "sqlglot.expressions.Delete.returning": {"tf": 2}, "sqlglot.expressions.Literal.number": {"tf": 1}, "sqlglot.expressions.Literal.string": {"tf": 1}, "sqlglot.expressions.Properties.from_dict": {"tf": 1}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 1}, "sqlglot.expressions.Subqueryable.limit": {"tf": 1}, "sqlglot.expressions.Union.limit": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 2}, "sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.expressions.Select.limit": {"tf": 1}, "sqlglot.expressions.Select.offset": {"tf": 1}, "sqlglot.expressions.Select.select": {"tf": 2}, "sqlglot.expressions.Select.lateral": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1}, "sqlglot.expressions.Select.where": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1}, "sqlglot.expressions.Select.window": {"tf": 1}, "sqlglot.expressions.Select.qualify": {"tf": 1}, "sqlglot.expressions.Select.distinct": {"tf": 1}, "sqlglot.expressions.Select.ctas": {"tf": 1}, "sqlglot.expressions.Select.lock": {"tf": 1}, "sqlglot.expressions.DataType.build": {"tf": 2.23606797749979}, "sqlglot.expressions.DataType.is_type": {"tf": 1}, "sqlglot.expressions.Dot.build": {"tf": 1.4142135623730951}, "sqlglot.expressions.Cast.is_type": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 2.449489742783178}, "sqlglot.expressions.select": {"tf": 2}, "sqlglot.expressions.from_": {"tf": 1}, "sqlglot.expressions.update": {"tf": 2.449489742783178}, "sqlglot.expressions.delete": {"tf": 2.449489742783178}, "sqlglot.expressions.condition": {"tf": 1}, "sqlglot.expressions.and_": {"tf": 1}, "sqlglot.expressions.or_": {"tf": 1}, "sqlglot.expressions.not_": {"tf": 1}, "sqlglot.expressions.paren": {"tf": 1}, "sqlglot.expressions.to_interval": {"tf": 1.4142135623730951}, "sqlglot.expressions.to_table": {"tf": 1.4142135623730951}, "sqlglot.expressions.to_column": {"tf": 1.4142135623730951}, "sqlglot.expressions.alias_": {"tf": 2.23606797749979}, "sqlglot.expressions.column": {"tf": 2.23606797749979}, "sqlglot.expressions.cast": {"tf": 2}, "sqlglot.expressions.table_": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1.4142135623730951}, "sqlglot.expressions.var": {"tf": 1.4142135623730951}, "sqlglot.expressions.rename_table": {"tf": 1.7320508075688772}, "sqlglot.expressions.convert": {"tf": 1}, "sqlglot.expressions.expand": {"tf": 1.7320508075688772}, "sqlglot.expressions.func": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.generate": {"tf": 1}, "sqlglot.generator.Generator.maybe_comment": {"tf": 1}, "sqlglot.generator.Generator.wrap": {"tf": 1}, "sqlglot.generator.Generator.sql": {"tf": 1}, "sqlglot.generator.Generator.uncache_sql": {"tf": 1}, "sqlglot.generator.Generator.cache_sql": {"tf": 1}, "sqlglot.generator.Generator.characterset_sql": {"tf": 1}, "sqlglot.generator.Generator.column_sql": {"tf": 1}, "sqlglot.generator.Generator.columnposition_sql": {"tf": 1}, "sqlglot.generator.Generator.columndef_sql": {"tf": 1}, "sqlglot.generator.Generator.columnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.compresscolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.generatedasidentitycolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.notnullcolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.primarykeycolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.create_sql": {"tf": 1}, "sqlglot.generator.Generator.describe_sql": {"tf": 1}, "sqlglot.generator.Generator.prepend_ctes": {"tf": 1}, "sqlglot.generator.Generator.with_sql": {"tf": 1}, "sqlglot.generator.Generator.cte_sql": {"tf": 1}, "sqlglot.generator.Generator.tablealias_sql": {"tf": 1}, "sqlglot.generator.Generator.bitstring_sql": {"tf": 1}, "sqlglot.generator.Generator.hexstring_sql": {"tf": 1}, "sqlglot.generator.Generator.datatype_sql": {"tf": 1}, "sqlglot.generator.Generator.directory_sql": {"tf": 1}, "sqlglot.generator.Generator.delete_sql": {"tf": 1}, "sqlglot.generator.Generator.drop_sql": {"tf": 1}, "sqlglot.generator.Generator.except_sql": {"tf": 1}, "sqlglot.generator.Generator.except_op": {"tf": 1}, "sqlglot.generator.Generator.fetch_sql": {"tf": 1}, "sqlglot.generator.Generator.filter_sql": {"tf": 1}, "sqlglot.generator.Generator.hint_sql": {"tf": 1}, "sqlglot.generator.Generator.index_sql": {"tf": 1}, "sqlglot.generator.Generator.identifier_sql": {"tf": 1}, "sqlglot.generator.Generator.national_sql": {"tf": 1}, "sqlglot.generator.Generator.partition_sql": {"tf": 1}, "sqlglot.generator.Generator.properties_sql": {"tf": 1}, "sqlglot.generator.Generator.root_properties": {"tf": 1}, "sqlglot.generator.Generator.properties": {"tf": 1}, "sqlglot.generator.Generator.with_properties": {"tf": 1}, "sqlglot.generator.Generator.locate_properties": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.property_sql": {"tf": 1}, "sqlglot.generator.Generator.likeproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.fallbackproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.journalproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.freespaceproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.afterjournalproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.checksumproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.mergeblockratioproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.datablocksizeproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.blockcompressionproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.isolatedloadingproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.lockingproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.withdataproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.insert_sql": {"tf": 1}, "sqlglot.generator.Generator.intersect_sql": {"tf": 1}, "sqlglot.generator.Generator.intersect_op": {"tf": 1}, "sqlglot.generator.Generator.introducer_sql": {"tf": 1}, "sqlglot.generator.Generator.pseudotype_sql": {"tf": 1}, "sqlglot.generator.Generator.returning_sql": {"tf": 1}, "sqlglot.generator.Generator.rowformatdelimitedproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.table_sql": {"tf": 1}, "sqlglot.generator.Generator.tablesample_sql": {"tf": 1}, "sqlglot.generator.Generator.pivot_sql": {"tf": 1}, "sqlglot.generator.Generator.tuple_sql": {"tf": 1}, "sqlglot.generator.Generator.update_sql": {"tf": 1}, "sqlglot.generator.Generator.values_sql": {"tf": 1}, "sqlglot.generator.Generator.var_sql": {"tf": 1}, "sqlglot.generator.Generator.into_sql": {"tf": 1}, "sqlglot.generator.Generator.from_sql": {"tf": 1}, "sqlglot.generator.Generator.group_sql": {"tf": 1}, "sqlglot.generator.Generator.having_sql": {"tf": 1}, "sqlglot.generator.Generator.join_sql": {"tf": 1}, "sqlglot.generator.Generator.lambda_sql": {"tf": 1}, "sqlglot.generator.Generator.lateral_sql": {"tf": 1}, "sqlglot.generator.Generator.limit_sql": {"tf": 1}, "sqlglot.generator.Generator.offset_sql": {"tf": 1}, "sqlglot.generator.Generator.setitem_sql": {"tf": 1}, "sqlglot.generator.Generator.set_sql": {"tf": 1}, "sqlglot.generator.Generator.pragma_sql": {"tf": 1}, "sqlglot.generator.Generator.lock_sql": {"tf": 1}, "sqlglot.generator.Generator.literal_sql": {"tf": 1}, "sqlglot.generator.Generator.loaddata_sql": {"tf": 1}, "sqlglot.generator.Generator.boolean_sql": {"tf": 1}, "sqlglot.generator.Generator.order_sql": {"tf": 1}, "sqlglot.generator.Generator.cluster_sql": {"tf": 1}, "sqlglot.generator.Generator.distribute_sql": {"tf": 1}, "sqlglot.generator.Generator.sort_sql": {"tf": 1}, "sqlglot.generator.Generator.ordered_sql": {"tf": 1}, "sqlglot.generator.Generator.matchrecognize_sql": {"tf": 1}, "sqlglot.generator.Generator.query_modifiers": {"tf": 1}, "sqlglot.generator.Generator.select_sql": {"tf": 1}, "sqlglot.generator.Generator.schema_sql": {"tf": 1}, "sqlglot.generator.Generator.star_sql": {"tf": 1}, "sqlglot.generator.Generator.structkwarg_sql": {"tf": 1}, "sqlglot.generator.Generator.parameter_sql": {"tf": 1}, "sqlglot.generator.Generator.sessionparameter_sql": {"tf": 1}, "sqlglot.generator.Generator.placeholder_sql": {"tf": 1}, "sqlglot.generator.Generator.subquery_sql": {"tf": 1}, "sqlglot.generator.Generator.qualify_sql": {"tf": 1}, "sqlglot.generator.Generator.union_sql": {"tf": 1}, "sqlglot.generator.Generator.union_op": {"tf": 1}, "sqlglot.generator.Generator.unnest_sql": {"tf": 1}, "sqlglot.generator.Generator.where_sql": {"tf": 1}, "sqlglot.generator.Generator.window_sql": {"tf": 1}, "sqlglot.generator.Generator.partition_by_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.window_spec_sql": {"tf": 1}, "sqlglot.generator.Generator.withingroup_sql": {"tf": 1}, "sqlglot.generator.Generator.between_sql": {"tf": 1}, "sqlglot.generator.Generator.bracket_sql": {"tf": 1}, "sqlglot.generator.Generator.all_sql": {"tf": 1}, "sqlglot.generator.Generator.any_sql": {"tf": 1}, "sqlglot.generator.Generator.exists_sql": {"tf": 1}, "sqlglot.generator.Generator.case_sql": {"tf": 1}, "sqlglot.generator.Generator.constraint_sql": {"tf": 1}, "sqlglot.generator.Generator.extract_sql": {"tf": 1}, "sqlglot.generator.Generator.trim_sql": {"tf": 1}, "sqlglot.generator.Generator.concat_sql": {"tf": 1}, "sqlglot.generator.Generator.check_sql": {"tf": 1}, "sqlglot.generator.Generator.foreignkey_sql": {"tf": 1}, "sqlglot.generator.Generator.primarykey_sql": {"tf": 1}, "sqlglot.generator.Generator.unique_sql": {"tf": 1}, "sqlglot.generator.Generator.if_sql": {"tf": 1}, "sqlglot.generator.Generator.matchagainst_sql": {"tf": 1}, "sqlglot.generator.Generator.jsonkeyvalue_sql": {"tf": 1}, "sqlglot.generator.Generator.jsonobject_sql": {"tf": 1}, "sqlglot.generator.Generator.in_sql": {"tf": 1}, "sqlglot.generator.Generator.in_unnest_op": {"tf": 1}, "sqlglot.generator.Generator.interval_sql": {"tf": 1}, "sqlglot.generator.Generator.return_sql": {"tf": 1}, "sqlglot.generator.Generator.reference_sql": {"tf": 1}, "sqlglot.generator.Generator.anonymous_sql": {"tf": 1}, "sqlglot.generator.Generator.paren_sql": {"tf": 1}, "sqlglot.generator.Generator.neg_sql": {"tf": 1}, "sqlglot.generator.Generator.not_sql": {"tf": 1}, "sqlglot.generator.Generator.alias_sql": {"tf": 1}, "sqlglot.generator.Generator.aliases_sql": {"tf": 1}, "sqlglot.generator.Generator.attimezone_sql": {"tf": 1}, "sqlglot.generator.Generator.add_sql": {"tf": 1}, "sqlglot.generator.Generator.and_sql": {"tf": 1}, "sqlglot.generator.Generator.connector_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwiseand_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwiseleftshift_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwisenot_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwiseor_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwiserightshift_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwisexor_sql": {"tf": 1}, "sqlglot.generator.Generator.cast_sql": {"tf": 1}, "sqlglot.generator.Generator.currentdate_sql": {"tf": 1}, "sqlglot.generator.Generator.collate_sql": {"tf": 1}, "sqlglot.generator.Generator.command_sql": {"tf": 1}, "sqlglot.generator.Generator.comment_sql": {"tf": 1}, "sqlglot.generator.Generator.transaction_sql": {"tf": 1}, "sqlglot.generator.Generator.commit_sql": {"tf": 1}, "sqlglot.generator.Generator.rollback_sql": {"tf": 1}, "sqlglot.generator.Generator.altercolumn_sql": {"tf": 1}, "sqlglot.generator.Generator.renametable_sql": {"tf": 1}, "sqlglot.generator.Generator.altertable_sql": {"tf": 1}, "sqlglot.generator.Generator.droppartition_sql": {"tf": 1}, "sqlglot.generator.Generator.addconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.distinct_sql": {"tf": 1}, "sqlglot.generator.Generator.ignorenulls_sql": {"tf": 1}, "sqlglot.generator.Generator.respectnulls_sql": {"tf": 1}, "sqlglot.generator.Generator.intdiv_sql": {"tf": 1}, "sqlglot.generator.Generator.dpipe_sql": {"tf": 1}, "sqlglot.generator.Generator.div_sql": {"tf": 1}, "sqlglot.generator.Generator.overlaps_sql": {"tf": 1}, "sqlglot.generator.Generator.distance_sql": {"tf": 1}, "sqlglot.generator.Generator.dot_sql": {"tf": 1}, "sqlglot.generator.Generator.eq_sql": {"tf": 1}, "sqlglot.generator.Generator.escape_sql": {"tf": 1}, "sqlglot.generator.Generator.glob_sql": {"tf": 1}, "sqlglot.generator.Generator.gt_sql": {"tf": 1}, "sqlglot.generator.Generator.gte_sql": {"tf": 1}, "sqlglot.generator.Generator.ilike_sql": {"tf": 1}, "sqlglot.generator.Generator.ilikeany_sql": {"tf": 1}, "sqlglot.generator.Generator.is_sql": {"tf": 1}, "sqlglot.generator.Generator.like_sql": {"tf": 1}, "sqlglot.generator.Generator.likeany_sql": {"tf": 1}, "sqlglot.generator.Generator.similarto_sql": {"tf": 1}, "sqlglot.generator.Generator.lt_sql": {"tf": 1}, "sqlglot.generator.Generator.lte_sql": {"tf": 1}, "sqlglot.generator.Generator.mod_sql": {"tf": 1}, "sqlglot.generator.Generator.mul_sql": {"tf": 1}, "sqlglot.generator.Generator.neq_sql": {"tf": 1}, "sqlglot.generator.Generator.nullsafeeq_sql": {"tf": 1}, "sqlglot.generator.Generator.nullsafeneq_sql": {"tf": 1}, "sqlglot.generator.Generator.or_sql": {"tf": 1}, "sqlglot.generator.Generator.slice_sql": {"tf": 1}, "sqlglot.generator.Generator.sub_sql": {"tf": 1}, "sqlglot.generator.Generator.trycast_sql": {"tf": 1}, "sqlglot.generator.Generator.use_sql": {"tf": 1}, "sqlglot.generator.Generator.binary": {"tf": 1}, "sqlglot.generator.Generator.function_fallback_sql": {"tf": 1}, "sqlglot.generator.Generator.func": {"tf": 1}, "sqlglot.generator.Generator.format_args": {"tf": 1}, "sqlglot.generator.Generator.format_time": {"tf": 1}, "sqlglot.generator.Generator.expressions": {"tf": 1}, "sqlglot.generator.Generator.op_expressions": {"tf": 1}, "sqlglot.generator.Generator.naked_property": {"tf": 1}, "sqlglot.generator.Generator.set_operation": {"tf": 1}, "sqlglot.generator.Generator.tag_sql": {"tf": 1}, "sqlglot.generator.Generator.token_sql": {"tf": 1}, "sqlglot.generator.Generator.userdefinedfunction_sql": {"tf": 1}, "sqlglot.generator.Generator.joinhint_sql": {"tf": 1}, "sqlglot.generator.Generator.kwarg_sql": {"tf": 1}, "sqlglot.generator.Generator.when_sql": {"tf": 1}, "sqlglot.generator.Generator.merge_sql": {"tf": 1}, "sqlglot.generator.Generator.tochar_sql": {"tf": 1}, "sqlglot.helper.while_changing": {"tf": 1.4142135623730951}, "sqlglot.helper.csv_reader": {"tf": 1}, "sqlglot.lineage.Node.__init__": {"tf": 1.7320508075688772}, "sqlglot.lineage.Node.walk": {"tf": 1}, "sqlglot.lineage.Node.to_html": {"tf": 1}, "sqlglot.lineage.lineage": {"tf": 2.6457513110645907}, "sqlglot.lineage.LineageHTML.__init__": {"tf": 1.7320508075688772}, "sqlglot.optimizer.canonicalize.canonicalize": {"tf": 1.4142135623730951}, "sqlglot.optimizer.canonicalize.add_text_to_concat": {"tf": 1.4142135623730951}, "sqlglot.optimizer.canonicalize.coerce_type": {"tf": 1.4142135623730951}, "sqlglot.optimizer.canonicalize.remove_redundant_casts": {"tf": 1.4142135623730951}, "sqlglot.optimizer.canonicalize.ensure_bool_predicates": {"tf": 1.4142135623730951}, "sqlglot.optimizer.expand_laterals.expand_laterals": {"tf": 1.4142135623730951}, "sqlglot.optimizer.normalize.normalize": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 2}, "sqlglot.optimizer.qualify_columns.Resolver.get_table": {"tf": 1}, "sqlglot.optimizer.simplify.rewrite_between": {"tf": 1.4142135623730951}, "sqlglot.optimizer.simplify.is_false": {"tf": 1}, "sqlglot.optimizer.simplify.is_null": {"tf": 1}, "sqlglot.parser.parse_var_map": {"tf": 1}, "sqlglot.parser.binary_range_parser": {"tf": 2}, "sqlglot.parser.Parser.__init__": {"tf": 1}, "sqlglot.parser.Parser.parse": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser.parse_into": {"tf": 2}, "sqlglot.parser.Parser.raise_error": {"tf": 1}, "sqlglot.parser.Parser.expression": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser.validate_expression": {"tf": 1}, "sqlglot.planner.Plan.__init__": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1.7320508075688772}, "sqlglot.planner.Step.add_dependency": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1.7320508075688772}, "sqlglot.planner.Join.from_joins": {"tf": 1.7320508075688772}, "sqlglot.planner.SetOperation.__init__": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1.7320508075688772}, "sqlglot.schema.Schema.add_table": {"tf": 1.4142135623730951}, "sqlglot.schema.Schema.column_names": {"tf": 1}, "sqlglot.schema.Schema.get_column_type": {"tf": 1.7320508075688772}, "sqlglot.schema.AbstractMappingSchema.table_parts": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema.find": {"tf": 1}, "sqlglot.schema.MappingSchema.__init__": {"tf": 1.4142135623730951}, "sqlglot.schema.MappingSchema.from_mapping_schema": {"tf": 1.4142135623730951}, "sqlglot.schema.MappingSchema.copy": {"tf": 1}, "sqlglot.schema.MappingSchema.add_table": {"tf": 1.4142135623730951}, "sqlglot.schema.MappingSchema.column_names": {"tf": 1}, "sqlglot.schema.MappingSchema.get_column_type": {"tf": 1.7320508075688772}, "sqlglot.schema.ensure_schema": {"tf": 1.7320508075688772}, "sqlglot.schema.ensure_column_mapping": {"tf": 1}, "sqlglot.serde.dump": {"tf": 1.4142135623730951}, "sqlglot.serde.load": {"tf": 1.4142135623730951}, "sqlglot.tokens.Token.__init__": {"tf": 1}, "sqlglot.tokens.Token.number": {"tf": 1}, "sqlglot.tokens.Token.string": {"tf": 1}, "sqlglot.tokens.Token.identifier": {"tf": 1}, "sqlglot.tokens.Token.var": {"tf": 1}, "sqlglot.tokens.Tokenizer.tokenize": {"tf": 1}, "sqlglot.transforms.unalias_group": {"tf": 1.4142135623730951}, "sqlglot.transforms.eliminate_distinct_on": {"tf": 1.4142135623730951}, "sqlglot.transforms.eliminate_qualify": {"tf": 1.4142135623730951}, "sqlglot.transforms.remove_precision_parameterized_types": {"tf": 1.4142135623730951}, "sqlglot.transforms.preprocess": {"tf": 2.449489742783178}}, "df": 504}}}}, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dataframe.sql.SparkSession.sql": {"tf": 1}}, "df": 1}}}}}, "s": {"docs": {"sqlglot.generator.Generator.query_modifiers": {"tf": 1}}, "df": 1}}}, "t": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.parse": {"tf": 1.4142135623730951}, "sqlglot.parse_one": {"tf": 2}, "sqlglot.transpile": {"tf": 2}, "sqlglot.dataframe.sql.SparkSession.table": {"tf": 1}, "sqlglot.dataframe.sql.SparkSession.createDataFrame": {"tf": 1}, "sqlglot.dataframe.sql.SparkSession.sql": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.__init__": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.sql": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.alias": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.join": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.dropDuplicates": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.dropna": {"tf": 2}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.replace": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.withColumn": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.withColumnRenamed": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.drop": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.hint": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.persist": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.agg": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.GroupedData.mean": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.avg": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.max": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.min": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.sum": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.pivot": {"tf": 1}, "sqlglot.dataframe.sql.Column.invoke_anonymous_function": {"tf": 1}, "sqlglot.dataframe.sql.Column.set_table_name": {"tf": 1}, "sqlglot.dataframe.sql.Column.sql": {"tf": 1}, "sqlglot.dataframe.sql.Column.alias": {"tf": 1}, "sqlglot.dataframe.sql.Column.cast": {"tf": 1}, "sqlglot.dataframe.sql.Column.startswith": {"tf": 1}, "sqlglot.dataframe.sql.Column.endswith": {"tf": 1}, "sqlglot.dataframe.sql.Column.rlike": {"tf": 1}, "sqlglot.dataframe.sql.Column.like": {"tf": 1}, "sqlglot.dataframe.sql.Column.ilike": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.drop": {"tf": 2}, "sqlglot.dataframe.sql.DataFrameNaFunctions.fill": {"tf": 2.23606797749979}, "sqlglot.dataframe.sql.DataFrameNaFunctions.replace": {"tf": 2}, "sqlglot.dataframe.sql.WindowSpec.sql": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameReader.table": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.sql": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.mode": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.insertInto": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.saveAsTable": {"tf": 1.7320508075688772}, "sqlglot.dialects.bigquery.BigQuery.Generator.array_sql": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.transaction_sql": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.commit_sql": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.rollback_sql": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.in_unnest_op": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.except_op": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.intersect_op": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator.cte_sql": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.get_or_raise": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.format_time": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.parse": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.parse_into": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.Dialect.generate": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.transpile": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialect.tokenize": {"tf": 1}, "sqlglot.dialects.dialect.rename_func": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.approx_count_distinct_sql": {"tf": 1}, "sqlglot.dialects.dialect.if_sql": {"tf": 1}, "sqlglot.dialects.dialect.arrow_json_extract_sql": {"tf": 1}, "sqlglot.dialects.dialect.arrow_json_extract_scalar_sql": {"tf": 1}, "sqlglot.dialects.dialect.inline_array_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_ilike_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_paren_current_date_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_recursive_cte_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_safe_divide_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_tablesample_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_pivot_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_trycast_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_properties_sql": {"tf": 1}, "sqlglot.dialects.dialect.str_position_sql": {"tf": 1}, "sqlglot.dialects.dialect.struct_extract_sql": {"tf": 1}, "sqlglot.dialects.dialect.var_map_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.format_time_lambda": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1}, "sqlglot.dialects.dialect.parse_date_delta": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.timestamptrunc_sql": {"tf": 1}, "sqlglot.dialects.dialect.strposition_to_locate_sql": {"tf": 1}, "sqlglot.dialects.dialect.timestrtotime_sql": {"tf": 1}, "sqlglot.dialects.dialect.datestrtodate_sql": {"tf": 1}, "sqlglot.dialects.dialect.min_or_least": {"tf": 1}, "sqlglot.dialects.dialect.max_or_greatest": {"tf": 1}, "sqlglot.dialects.dialect.count_if_to_sum": {"tf": 1}, "sqlglot.dialects.dialect.trim_sql": {"tf": 1}, "sqlglot.dialects.dialect.str_to_time_sql": {"tf": 1}, "sqlglot.dialects.dialect.ts_or_ds_to_date_sql": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator.normalize_func": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Generator.tablesample_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Generator.arrayagg_sql": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator.with_properties": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator.show_sql": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator.offset_sql": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator.column_sql": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator.xmltable_sql": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.with_properties": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.renametable_sql": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.settag_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.describe_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.generatedasidentitycolumnconstraint_sql": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator.cast_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.cast_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.datediff_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.least_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.transaction_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.partitionedbyproperty_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.update_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.mod_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.rangen_sql": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator.offset_sql": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator.systemtime_sql": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator.returnsproperty_sql": {"tf": 1}, "sqlglot.errors.ParseError.__init__": {"tf": 1.4142135623730951}, "sqlglot.errors.ParseError.new": {"tf": 2.449489742783178}, "sqlglot.errors.concat_messages": {"tf": 1}, "sqlglot.errors.merge_errors": {"tf": 1}, "sqlglot.executor.execute": {"tf": 1.4142135623730951}, "sqlglot.executor.context.Context.__init__": {"tf": 1}, "sqlglot.executor.context.Context.add_columns": {"tf": 1}, "sqlglot.executor.context.Context.table_iter": {"tf": 1}, "sqlglot.executor.table.Table.add_columns": {"tf": 1}, "sqlglot.expressions.Expression.text": {"tf": 1}, "sqlglot.expressions.Expression.iter_expressions": {"tf": 1}, "sqlglot.expressions.Expression.sql": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.error_messages": {"tf": 1}, "sqlglot.expressions.Delete.delete": {"tf": 1.4142135623730951}, "sqlglot.expressions.Delete.where": {"tf": 1.4142135623730951}, "sqlglot.expressions.Delete.returning": {"tf": 1.4142135623730951}, "sqlglot.expressions.Union.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.build": {"tf": 1.4142135623730951}, "sqlglot.expressions.maybe_parse": {"tf": 2.23606797749979}, "sqlglot.expressions.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.update": {"tf": 2}, "sqlglot.expressions.delete": {"tf": 2}, "sqlglot.expressions.to_interval": {"tf": 1}, "sqlglot.expressions.to_table": {"tf": 1}, "sqlglot.expressions.to_column": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 2}, "sqlglot.expressions.column": {"tf": 2}, "sqlglot.expressions.cast": {"tf": 1.4142135623730951}, "sqlglot.expressions.values": {"tf": 1.7320508075688772}, "sqlglot.expressions.var": {"tf": 1}, "sqlglot.expressions.rename_table": {"tf": 1.4142135623730951}, "sqlglot.expressions.table_name": {"tf": 1}, "sqlglot.expressions.expand": {"tf": 1}, "sqlglot.expressions.func": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.generate": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.unsupported": {"tf": 1}, "sqlglot.generator.Generator.sep": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.seg": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.pad_comment": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.maybe_comment": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.wrap": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.no_identify": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.normalize_func": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.indent": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.uncache_sql": {"tf": 1}, "sqlglot.generator.Generator.cache_sql": {"tf": 1}, "sqlglot.generator.Generator.characterset_sql": {"tf": 1}, "sqlglot.generator.Generator.column_sql": {"tf": 1}, "sqlglot.generator.Generator.columnposition_sql": {"tf": 1}, "sqlglot.generator.Generator.columndef_sql": {"tf": 1}, "sqlglot.generator.Generator.columnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.autoincrementcolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.compresscolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.generatedasidentitycolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.notnullcolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.primarykeycolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.uniquecolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.create_sql": {"tf": 1}, "sqlglot.generator.Generator.describe_sql": {"tf": 1}, "sqlglot.generator.Generator.prepend_ctes": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.with_sql": {"tf": 1}, "sqlglot.generator.Generator.cte_sql": {"tf": 1}, "sqlglot.generator.Generator.tablealias_sql": {"tf": 1}, "sqlglot.generator.Generator.bitstring_sql": {"tf": 1}, "sqlglot.generator.Generator.hexstring_sql": {"tf": 1}, "sqlglot.generator.Generator.datatype_sql": {"tf": 1}, "sqlglot.generator.Generator.directory_sql": {"tf": 1}, "sqlglot.generator.Generator.delete_sql": {"tf": 1}, "sqlglot.generator.Generator.drop_sql": {"tf": 1}, "sqlglot.generator.Generator.except_sql": {"tf": 1}, "sqlglot.generator.Generator.except_op": {"tf": 1}, "sqlglot.generator.Generator.fetch_sql": {"tf": 1}, "sqlglot.generator.Generator.filter_sql": {"tf": 1}, "sqlglot.generator.Generator.hint_sql": {"tf": 1}, "sqlglot.generator.Generator.index_sql": {"tf": 1}, "sqlglot.generator.Generator.identifier_sql": {"tf": 1}, "sqlglot.generator.Generator.national_sql": {"tf": 1}, "sqlglot.generator.Generator.partition_sql": {"tf": 1}, "sqlglot.generator.Generator.properties_sql": {"tf": 1}, "sqlglot.generator.Generator.root_properties": {"tf": 1}, "sqlglot.generator.Generator.properties": {"tf": 2}, "sqlglot.generator.Generator.with_properties": {"tf": 1}, "sqlglot.generator.Generator.property_sql": {"tf": 1}, "sqlglot.generator.Generator.likeproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.fallbackproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.journalproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.freespaceproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.afterjournalproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.checksumproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.mergeblockratioproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.datablocksizeproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.blockcompressionproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.isolatedloadingproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.lockingproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.withdataproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.insert_sql": {"tf": 1}, "sqlglot.generator.Generator.intersect_sql": {"tf": 1}, "sqlglot.generator.Generator.intersect_op": {"tf": 1}, "sqlglot.generator.Generator.introducer_sql": {"tf": 1}, "sqlglot.generator.Generator.pseudotype_sql": {"tf": 1}, "sqlglot.generator.Generator.returning_sql": {"tf": 1}, "sqlglot.generator.Generator.rowformatdelimitedproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.table_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.tablesample_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.pivot_sql": {"tf": 1}, "sqlglot.generator.Generator.tuple_sql": {"tf": 1}, "sqlglot.generator.Generator.update_sql": {"tf": 1}, "sqlglot.generator.Generator.values_sql": {"tf": 1}, "sqlglot.generator.Generator.var_sql": {"tf": 1}, "sqlglot.generator.Generator.into_sql": {"tf": 1}, "sqlglot.generator.Generator.from_sql": {"tf": 1}, "sqlglot.generator.Generator.group_sql": {"tf": 1}, "sqlglot.generator.Generator.having_sql": {"tf": 1}, "sqlglot.generator.Generator.join_sql": {"tf": 1}, "sqlglot.generator.Generator.lambda_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.lateral_sql": {"tf": 1}, "sqlglot.generator.Generator.limit_sql": {"tf": 1}, "sqlglot.generator.Generator.offset_sql": {"tf": 1}, "sqlglot.generator.Generator.setitem_sql": {"tf": 1}, "sqlglot.generator.Generator.set_sql": {"tf": 1}, "sqlglot.generator.Generator.pragma_sql": {"tf": 1}, "sqlglot.generator.Generator.lock_sql": {"tf": 1}, "sqlglot.generator.Generator.literal_sql": {"tf": 1}, "sqlglot.generator.Generator.loaddata_sql": {"tf": 1}, "sqlglot.generator.Generator.null_sql": {"tf": 1}, "sqlglot.generator.Generator.boolean_sql": {"tf": 1}, "sqlglot.generator.Generator.order_sql": {"tf": 1}, "sqlglot.generator.Generator.cluster_sql": {"tf": 1}, "sqlglot.generator.Generator.distribute_sql": {"tf": 1}, "sqlglot.generator.Generator.sort_sql": {"tf": 1}, "sqlglot.generator.Generator.ordered_sql": {"tf": 1}, "sqlglot.generator.Generator.matchrecognize_sql": {"tf": 1}, "sqlglot.generator.Generator.query_modifiers": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.select_sql": {"tf": 1}, "sqlglot.generator.Generator.schema_sql": {"tf": 1}, "sqlglot.generator.Generator.star_sql": {"tf": 1}, "sqlglot.generator.Generator.structkwarg_sql": {"tf": 1}, "sqlglot.generator.Generator.parameter_sql": {"tf": 1}, "sqlglot.generator.Generator.sessionparameter_sql": {"tf": 1}, "sqlglot.generator.Generator.placeholder_sql": {"tf": 1}, "sqlglot.generator.Generator.subquery_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.qualify_sql": {"tf": 1}, "sqlglot.generator.Generator.union_sql": {"tf": 1}, "sqlglot.generator.Generator.union_op": {"tf": 1}, "sqlglot.generator.Generator.unnest_sql": {"tf": 1}, "sqlglot.generator.Generator.where_sql": {"tf": 1}, "sqlglot.generator.Generator.window_sql": {"tf": 1}, "sqlglot.generator.Generator.partition_by_sql": {"tf": 1}, "sqlglot.generator.Generator.window_spec_sql": {"tf": 1}, "sqlglot.generator.Generator.withingroup_sql": {"tf": 1}, "sqlglot.generator.Generator.between_sql": {"tf": 1}, "sqlglot.generator.Generator.bracket_sql": {"tf": 1}, "sqlglot.generator.Generator.all_sql": {"tf": 1}, "sqlglot.generator.Generator.any_sql": {"tf": 1}, "sqlglot.generator.Generator.exists_sql": {"tf": 1}, "sqlglot.generator.Generator.case_sql": {"tf": 1}, "sqlglot.generator.Generator.constraint_sql": {"tf": 1}, "sqlglot.generator.Generator.extract_sql": {"tf": 1}, "sqlglot.generator.Generator.trim_sql": {"tf": 1}, "sqlglot.generator.Generator.concat_sql": {"tf": 1}, "sqlglot.generator.Generator.check_sql": {"tf": 1}, "sqlglot.generator.Generator.foreignkey_sql": {"tf": 1}, "sqlglot.generator.Generator.primarykey_sql": {"tf": 1}, "sqlglot.generator.Generator.unique_sql": {"tf": 1}, "sqlglot.generator.Generator.if_sql": {"tf": 1}, "sqlglot.generator.Generator.matchagainst_sql": {"tf": 1}, "sqlglot.generator.Generator.jsonkeyvalue_sql": {"tf": 1}, "sqlglot.generator.Generator.jsonobject_sql": {"tf": 1}, "sqlglot.generator.Generator.in_sql": {"tf": 1}, "sqlglot.generator.Generator.in_unnest_op": {"tf": 1}, "sqlglot.generator.Generator.interval_sql": {"tf": 1}, "sqlglot.generator.Generator.return_sql": {"tf": 1}, "sqlglot.generator.Generator.reference_sql": {"tf": 1}, "sqlglot.generator.Generator.anonymous_sql": {"tf": 1}, "sqlglot.generator.Generator.paren_sql": {"tf": 1}, "sqlglot.generator.Generator.neg_sql": {"tf": 1}, "sqlglot.generator.Generator.not_sql": {"tf": 1}, "sqlglot.generator.Generator.alias_sql": {"tf": 1}, "sqlglot.generator.Generator.aliases_sql": {"tf": 1}, "sqlglot.generator.Generator.attimezone_sql": {"tf": 1}, "sqlglot.generator.Generator.add_sql": {"tf": 1}, "sqlglot.generator.Generator.and_sql": {"tf": 1}, "sqlglot.generator.Generator.connector_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.bitwiseand_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwiseleftshift_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwisenot_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwiseor_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwiserightshift_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwisexor_sql": {"tf": 1}, "sqlglot.generator.Generator.cast_sql": {"tf": 1}, "sqlglot.generator.Generator.currentdate_sql": {"tf": 1}, "sqlglot.generator.Generator.collate_sql": {"tf": 1}, "sqlglot.generator.Generator.command_sql": {"tf": 1}, "sqlglot.generator.Generator.comment_sql": {"tf": 1}, "sqlglot.generator.Generator.transaction_sql": {"tf": 1}, "sqlglot.generator.Generator.commit_sql": {"tf": 1}, "sqlglot.generator.Generator.rollback_sql": {"tf": 1}, "sqlglot.generator.Generator.altercolumn_sql": {"tf": 1}, "sqlglot.generator.Generator.renametable_sql": {"tf": 1}, "sqlglot.generator.Generator.altertable_sql": {"tf": 1}, "sqlglot.generator.Generator.droppartition_sql": {"tf": 1}, "sqlglot.generator.Generator.addconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.distinct_sql": {"tf": 1}, "sqlglot.generator.Generator.ignorenulls_sql": {"tf": 1}, "sqlglot.generator.Generator.respectnulls_sql": {"tf": 1}, "sqlglot.generator.Generator.intdiv_sql": {"tf": 1}, "sqlglot.generator.Generator.dpipe_sql": {"tf": 1}, "sqlglot.generator.Generator.div_sql": {"tf": 1}, "sqlglot.generator.Generator.overlaps_sql": {"tf": 1}, "sqlglot.generator.Generator.distance_sql": {"tf": 1}, "sqlglot.generator.Generator.dot_sql": {"tf": 1}, "sqlglot.generator.Generator.eq_sql": {"tf": 1}, "sqlglot.generator.Generator.escape_sql": {"tf": 1}, "sqlglot.generator.Generator.glob_sql": {"tf": 1}, "sqlglot.generator.Generator.gt_sql": {"tf": 1}, "sqlglot.generator.Generator.gte_sql": {"tf": 1}, "sqlglot.generator.Generator.ilike_sql": {"tf": 1}, "sqlglot.generator.Generator.ilikeany_sql": {"tf": 1}, "sqlglot.generator.Generator.is_sql": {"tf": 1}, "sqlglot.generator.Generator.like_sql": {"tf": 1}, "sqlglot.generator.Generator.likeany_sql": {"tf": 1}, "sqlglot.generator.Generator.similarto_sql": {"tf": 1}, "sqlglot.generator.Generator.lt_sql": {"tf": 1}, "sqlglot.generator.Generator.lte_sql": {"tf": 1}, "sqlglot.generator.Generator.mod_sql": {"tf": 1}, "sqlglot.generator.Generator.mul_sql": {"tf": 1}, "sqlglot.generator.Generator.neq_sql": {"tf": 1}, "sqlglot.generator.Generator.nullsafeeq_sql": {"tf": 1}, "sqlglot.generator.Generator.nullsafeneq_sql": {"tf": 1}, "sqlglot.generator.Generator.or_sql": {"tf": 1}, "sqlglot.generator.Generator.slice_sql": {"tf": 1}, "sqlglot.generator.Generator.sub_sql": {"tf": 1}, "sqlglot.generator.Generator.trycast_sql": {"tf": 1}, "sqlglot.generator.Generator.use_sql": {"tf": 1}, "sqlglot.generator.Generator.binary": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.function_fallback_sql": {"tf": 1}, "sqlglot.generator.Generator.func": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.format_args": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.format_time": {"tf": 1}, "sqlglot.generator.Generator.expressions": {"tf": 2}, "sqlglot.generator.Generator.op_expressions": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.naked_property": {"tf": 1}, "sqlglot.generator.Generator.set_operation": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.tag_sql": {"tf": 1}, "sqlglot.generator.Generator.token_sql": {"tf": 1}, "sqlglot.generator.Generator.userdefinedfunction_sql": {"tf": 1}, "sqlglot.generator.Generator.joinhint_sql": {"tf": 1}, "sqlglot.generator.Generator.kwarg_sql": {"tf": 1}, "sqlglot.generator.Generator.when_sql": {"tf": 1}, "sqlglot.generator.Generator.merge_sql": {"tf": 1}, "sqlglot.generator.Generator.tochar_sql": {"tf": 1}, "sqlglot.helper.csv": {"tf": 1.4142135623730951}, "sqlglot.helper.subclasses": {"tf": 1}, "sqlglot.helper.camel_to_snake_case": {"tf": 1.4142135623730951}, "sqlglot.helper.open_file": {"tf": 1}, "sqlglot.helper.find_new_name": {"tf": 1.7320508075688772}, "sqlglot.helper.split_num_words": {"tf": 1.7320508075688772}, "sqlglot.helper.should_identify": {"tf": 1.4142135623730951}, "sqlglot.lineage.Node.__init__": {"tf": 1}, "sqlglot.lineage.lineage": {"tf": 2.23606797749979}, "sqlglot.lineage.LineageHTML.__init__": {"tf": 1}, "sqlglot.optimizer.canonicalize.canonicalize": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 2}, "sqlglot.optimizer.qualify_columns.Resolver.get_table": {"tf": 1}, "sqlglot.parser.Parser.__init__": {"tf": 1}, "sqlglot.parser.Parser.parse": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 1.7320508075688772}, "sqlglot.parser.Parser.raise_error": {"tf": 1}, "sqlglot.parser.Parser.expression": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Step.to_s": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.Join.from_joins": {"tf": 1}, "sqlglot.planner.SetOperation.__init__": {"tf": 1.4142135623730951}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}, "sqlglot.schema.Schema.add_table": {"tf": 1.4142135623730951}, "sqlglot.schema.Schema.column_names": {"tf": 1.4142135623730951}, "sqlglot.schema.Schema.get_column_type": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema.table_parts": {"tf": 1}, "sqlglot.schema.MappingSchema.__init__": {"tf": 1}, "sqlglot.schema.MappingSchema.add_table": {"tf": 1.4142135623730951}, "sqlglot.schema.MappingSchema.column_names": {"tf": 1.4142135623730951}, "sqlglot.schema.MappingSchema.get_column_type": {"tf": 1.4142135623730951}, "sqlglot.schema.ensure_schema": {"tf": 1}, "sqlglot.schema.ensure_column_mapping": {"tf": 1}, "sqlglot.schema.flatten_schema": {"tf": 1.4142135623730951}, "sqlglot.serde.dump": {"tf": 1.4142135623730951}, "sqlglot.serde.load": {"tf": 1.4142135623730951}, "sqlglot.time.format_time": {"tf": 2}, "sqlglot.tokens.Token.__init__": {"tf": 1.4142135623730951}, "sqlglot.tokens.Token.string": {"tf": 1}, "sqlglot.tokens.Token.identifier": {"tf": 1}, "sqlglot.tokens.Token.var": {"tf": 1}, "sqlglot.tokens.Tokenizer.tokenize": {"tf": 1}, "sqlglot.transforms.preprocess": {"tf": 1.4142135623730951}, "sqlglot.transforms.delegate": {"tf": 1}}, "df": 422, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dialects.dialect.str_position_sql": {"tf": 1}, "sqlglot.dialects.dialect.strposition_to_locate_sql": {"tf": 1}}, "df": 2}}}}}}}}, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.dialect.struct_extract_sql": {"tf": 1}}, "df": 1}}}}}}}, "k": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.generator.Generator.structkwarg_sql": {"tf": 1}}, "df": 1}}}}}, "t": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.schema.Schema.add_table": {"tf": 1}, "sqlglot.schema.MappingSchema.add_table": {"tf": 1}, "sqlglot.schema.ensure_column_mapping": {"tf": 1}}, "df": 3}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.expressions.Literal.string": {"tf": 1}, "sqlglot.generator.Generator.__init__": {"tf": 1}, "sqlglot.time.format_time": {"tf": 1}, "sqlglot.tokens.Token.string": {"tf": 1}}, "df": 4}}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.dataframe.sql.DataFrame.persist": {"tf": 1}}, "df": 1}}}}}}}}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.generator.Generator.star_sql": {"tf": 1}}, "df": 1, "t": {"docs": {"sqlglot.dataframe.sql.Window.rowsBetween": {"tf": 1}, "sqlglot.dataframe.sql.Window.rangeBetween": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.rowsBetween": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.rangeBetween": {"tf": 1}, "sqlglot.errors.ParseError.new": {"tf": 1}, "sqlglot.executor.context.Context.set_range": {"tf": 1}, "sqlglot.executor.env.substring": {"tf": 1}, "sqlglot.generator.Generator.__init__": {"tf": 1.4142135623730951}, "sqlglot.helper.split_num_words": {"tf": 1}}, "df": 9, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dataframe.sql.Column.substr": {"tf": 1}}, "df": 1}}}}}}, "e": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.executor.python.PythonExecutor.scan": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.scan_table": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.scan_csv": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.join": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.aggregate": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.sort": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.set_operation": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1.4142135623730951}, "sqlglot.planner.Step.add_dependency": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1.4142135623730951}, "sqlglot.planner.Join.from_joins": {"tf": 1.4142135623730951}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1.4142135623730951}}, "df": 12}}}, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "f": {"docs": {"sqlglot.dataframe.sql.SparkSession.table": {"tf": 1}, "sqlglot.dataframe.sql.SparkSession.createDataFrame": {"tf": 1}, "sqlglot.dataframe.sql.SparkSession.sql": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sql": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.copy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.select": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.alias": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.where": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.filter": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.groupBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.agg": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.join": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.union": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.unionAll": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.unionByName": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.intersect": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.intersectAll": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.exceptAll": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.distinct": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.dropDuplicates": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.dropna": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.replace": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.withColumn": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.withColumnRenamed": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.drop": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.limit": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.hint": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.repartition": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.coalesce": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.cache": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.persist": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.agg": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.count": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.mean": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.avg": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.max": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.min": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.sum": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.pivot": {"tf": 1}, "sqlglot.dataframe.sql.Column.binary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.inverse_binary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.unary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.copy": {"tf": 1}, "sqlglot.dataframe.sql.Column.set_table_name": {"tf": 1}, "sqlglot.dataframe.sql.Column.sql": {"tf": 1}, "sqlglot.dataframe.sql.Column.alias": {"tf": 1}, "sqlglot.dataframe.sql.Column.asc": {"tf": 1}, "sqlglot.dataframe.sql.Column.desc": {"tf": 1}, "sqlglot.dataframe.sql.Column.asc_nulls_first": {"tf": 1}, "sqlglot.dataframe.sql.Column.asc_nulls_last": {"tf": 1}, "sqlglot.dataframe.sql.Column.desc_nulls_first": {"tf": 1}, "sqlglot.dataframe.sql.Column.desc_nulls_last": {"tf": 1}, "sqlglot.dataframe.sql.Column.when": {"tf": 1}, "sqlglot.dataframe.sql.Column.otherwise": {"tf": 1}, "sqlglot.dataframe.sql.Column.isNull": {"tf": 1}, "sqlglot.dataframe.sql.Column.isNotNull": {"tf": 1}, "sqlglot.dataframe.sql.Column.cast": {"tf": 1}, "sqlglot.dataframe.sql.Column.startswith": {"tf": 1}, "sqlglot.dataframe.sql.Column.endswith": {"tf": 1}, "sqlglot.dataframe.sql.Column.rlike": {"tf": 1}, "sqlglot.dataframe.sql.Column.like": {"tf": 1}, "sqlglot.dataframe.sql.Column.ilike": {"tf": 1}, "sqlglot.dataframe.sql.Column.substr": {"tf": 1}, "sqlglot.dataframe.sql.Column.isin": {"tf": 1}, "sqlglot.dataframe.sql.Column.between": {"tf": 1}, "sqlglot.dataframe.sql.Column.over": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.drop": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.fill": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.replace": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.copy": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.sql": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.partitionBy": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.rowsBetween": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.rangeBetween": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameReader.table": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.copy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.sql": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.mode": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.insertInto": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.saveAsTable": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.array_sql": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.transaction_sql": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.commit_sql": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.rollback_sql": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.in_unnest_op": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.except_op": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.intersect_op": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator.cte_sql": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.parse": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.parse_into": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.generate": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.transpile": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.tokenize": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.parser": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.generator": {"tf": 1}, "sqlglot.dialects.dialect.approx_count_distinct_sql": {"tf": 1}, "sqlglot.dialects.dialect.if_sql": {"tf": 1}, "sqlglot.dialects.dialect.arrow_json_extract_sql": {"tf": 1}, "sqlglot.dialects.dialect.arrow_json_extract_scalar_sql": {"tf": 1}, "sqlglot.dialects.dialect.inline_array_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_ilike_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_paren_current_date_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_recursive_cte_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_safe_divide_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_tablesample_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_pivot_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_trycast_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_properties_sql": {"tf": 1}, "sqlglot.dialects.dialect.str_position_sql": {"tf": 1}, "sqlglot.dialects.dialect.struct_extract_sql": {"tf": 1}, "sqlglot.dialects.dialect.var_map_sql": {"tf": 1}, "sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1}, "sqlglot.dialects.dialect.timestamptrunc_sql": {"tf": 1}, "sqlglot.dialects.dialect.strposition_to_locate_sql": {"tf": 1}, "sqlglot.dialects.dialect.timestrtotime_sql": {"tf": 1}, "sqlglot.dialects.dialect.datestrtodate_sql": {"tf": 1}, "sqlglot.dialects.dialect.min_or_least": {"tf": 1}, "sqlglot.dialects.dialect.max_or_greatest": {"tf": 1}, "sqlglot.dialects.dialect.count_if_to_sum": {"tf": 1}, "sqlglot.dialects.dialect.trim_sql": {"tf": 1}, "sqlglot.dialects.dialect.str_to_time_sql": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator.normalize_func": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator.tablesample_sql": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator.arrayagg_sql": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator.with_properties": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator.show_sql": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator.offset_sql": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator.column_sql": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator.xmltable_sql": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator.transaction_sql": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.with_properties": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.renametable_sql": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.except_op": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.intersect_op": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.settag_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.describe_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.generatedasidentitycolumnconstraint_sql": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator.cast_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.cast_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.datediff_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.groupconcat_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.least_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.transaction_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.partitionedbyproperty_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.update_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.mod_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.rangen_sql": {"tf": 1}, "sqlglot.dialects.tsql.generate_date_delta_with_unit_sql": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator.offset_sql": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator.systemtime_sql": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator.returnsproperty_sql": {"tf": 1}, "sqlglot.diff.ChangeDistiller.diff": {"tf": 1}, "sqlglot.executor.context.Context.eval": {"tf": 1}, "sqlglot.executor.context.Context.eval_tuple": {"tf": 1}, "sqlglot.executor.context.Context.add_columns": {"tf": 1}, "sqlglot.executor.context.Context.table_iter": {"tf": 1}, "sqlglot.executor.context.Context.filter": {"tf": 1}, "sqlglot.executor.context.Context.sort": {"tf": 1}, "sqlglot.executor.context.Context.set_row": {"tf": 1}, "sqlglot.executor.context.Context.set_index": {"tf": 1}, "sqlglot.executor.context.Context.set_range": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.execute": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.generate": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.generate_tuple": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.context": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.table": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.scan": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.static": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.scan_table": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.scan_csv": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.join": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.nested_loop_join": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.hash_join": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.aggregate": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.sort": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.set_operation": {"tf": 1}, "sqlglot.executor.table.Table.add_columns": {"tf": 1}, "sqlglot.executor.table.Table.append": {"tf": 1}, "sqlglot.executor.table.Table.pop": {"tf": 1}, "sqlglot.expressions.Expression.text": {"tf": 1}, "sqlglot.expressions.Expression.copy": {"tf": 1}, "sqlglot.expressions.Expression.append": {"tf": 1}, "sqlglot.expressions.Expression.set": {"tf": 1}, "sqlglot.expressions.Expression.iter_expressions": {"tf": 1}, "sqlglot.expressions.Expression.find": {"tf": 1}, "sqlglot.expressions.Expression.find_all": {"tf": 1}, "sqlglot.expressions.Expression.find_ancestor": {"tf": 1}, "sqlglot.expressions.Expression.root": {"tf": 1}, "sqlglot.expressions.Expression.walk": {"tf": 1}, "sqlglot.expressions.Expression.dfs": {"tf": 1}, "sqlglot.expressions.Expression.bfs": {"tf": 1}, "sqlglot.expressions.Expression.unnest": {"tf": 1}, "sqlglot.expressions.Expression.unalias": {"tf": 1}, "sqlglot.expressions.Expression.unnest_operands": {"tf": 1}, "sqlglot.expressions.Expression.flatten": {"tf": 1}, "sqlglot.expressions.Expression.sql": {"tf": 1}, "sqlglot.expressions.Expression.transform": {"tf": 1}, "sqlglot.expressions.Expression.replace": {"tf": 1}, "sqlglot.expressions.Expression.pop": {"tf": 1}, "sqlglot.expressions.Expression.assert_is": {"tf": 1}, "sqlglot.expressions.Expression.error_messages": {"tf": 1}, "sqlglot.expressions.Expression.dump": {"tf": 1}, "sqlglot.expressions.Condition.and_": {"tf": 1}, "sqlglot.expressions.Condition.or_": {"tf": 1}, "sqlglot.expressions.Condition.not_": {"tf": 1}, "sqlglot.expressions.Unionable.union": {"tf": 1}, "sqlglot.expressions.Unionable.intersect": {"tf": 1}, "sqlglot.expressions.Unionable.except_": {"tf": 1}, "sqlglot.expressions.Column.to_dot": {"tf": 1}, "sqlglot.expressions.Delete.delete": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Delete.returning": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Join.using": {"tf": 1}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 1}, "sqlglot.expressions.Subqueryable.limit": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1}, "sqlglot.expressions.Union.limit": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.expressions.Select.limit": {"tf": 1}, "sqlglot.expressions.Select.offset": {"tf": 1}, "sqlglot.expressions.Select.select": {"tf": 1}, "sqlglot.expressions.Select.lateral": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1}, "sqlglot.expressions.Select.where": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1}, "sqlglot.expressions.Select.window": {"tf": 1}, "sqlglot.expressions.Select.qualify": {"tf": 1}, "sqlglot.expressions.Select.distinct": {"tf": 1}, "sqlglot.expressions.Select.ctas": {"tf": 1}, "sqlglot.expressions.Select.lock": {"tf": 1}, "sqlglot.expressions.Subquery.unnest": {"tf": 1}, "sqlglot.expressions.DataType.is_type": {"tf": 1}, "sqlglot.expressions.Dot.build": {"tf": 1}, "sqlglot.expressions.Cast.is_type": {"tf": 1}, "sqlglot.generator.Generator.generate": {"tf": 1}, "sqlglot.generator.Generator.unsupported": {"tf": 1}, "sqlglot.generator.Generator.sep": {"tf": 1}, "sqlglot.generator.Generator.seg": {"tf": 1}, "sqlglot.generator.Generator.pad_comment": {"tf": 1}, "sqlglot.generator.Generator.maybe_comment": {"tf": 1}, "sqlglot.generator.Generator.wrap": {"tf": 1}, "sqlglot.generator.Generator.no_identify": {"tf": 1}, "sqlglot.generator.Generator.normalize_func": {"tf": 1}, "sqlglot.generator.Generator.indent": {"tf": 1}, "sqlglot.generator.Generator.sql": {"tf": 1}, "sqlglot.generator.Generator.uncache_sql": {"tf": 1}, "sqlglot.generator.Generator.cache_sql": {"tf": 1}, "sqlglot.generator.Generator.characterset_sql": {"tf": 1}, "sqlglot.generator.Generator.column_sql": {"tf": 1}, "sqlglot.generator.Generator.columnposition_sql": {"tf": 1}, "sqlglot.generator.Generator.columndef_sql": {"tf": 1}, "sqlglot.generator.Generator.columnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.autoincrementcolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.compresscolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.generatedasidentitycolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.notnullcolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.primarykeycolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.uniquecolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.create_sql": {"tf": 1}, "sqlglot.generator.Generator.describe_sql": {"tf": 1}, "sqlglot.generator.Generator.prepend_ctes": {"tf": 1}, "sqlglot.generator.Generator.with_sql": {"tf": 1}, "sqlglot.generator.Generator.cte_sql": {"tf": 1}, "sqlglot.generator.Generator.tablealias_sql": {"tf": 1}, "sqlglot.generator.Generator.bitstring_sql": {"tf": 1}, "sqlglot.generator.Generator.hexstring_sql": {"tf": 1}, "sqlglot.generator.Generator.datatype_sql": {"tf": 1}, "sqlglot.generator.Generator.directory_sql": {"tf": 1}, "sqlglot.generator.Generator.delete_sql": {"tf": 1}, "sqlglot.generator.Generator.drop_sql": {"tf": 1}, "sqlglot.generator.Generator.except_sql": {"tf": 1}, "sqlglot.generator.Generator.except_op": {"tf": 1}, "sqlglot.generator.Generator.fetch_sql": {"tf": 1}, "sqlglot.generator.Generator.filter_sql": {"tf": 1}, "sqlglot.generator.Generator.hint_sql": {"tf": 1}, "sqlglot.generator.Generator.index_sql": {"tf": 1}, "sqlglot.generator.Generator.identifier_sql": {"tf": 1}, "sqlglot.generator.Generator.national_sql": {"tf": 1}, "sqlglot.generator.Generator.partition_sql": {"tf": 1}, "sqlglot.generator.Generator.properties_sql": {"tf": 1}, "sqlglot.generator.Generator.root_properties": {"tf": 1}, "sqlglot.generator.Generator.properties": {"tf": 1}, "sqlglot.generator.Generator.with_properties": {"tf": 1}, "sqlglot.generator.Generator.locate_properties": {"tf": 1}, "sqlglot.generator.Generator.property_sql": {"tf": 1}, "sqlglot.generator.Generator.likeproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.fallbackproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.journalproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.freespaceproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.afterjournalproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.checksumproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.mergeblockratioproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.datablocksizeproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.blockcompressionproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.isolatedloadingproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.lockingproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.withdataproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.insert_sql": {"tf": 1}, "sqlglot.generator.Generator.intersect_sql": {"tf": 1}, "sqlglot.generator.Generator.intersect_op": {"tf": 1}, "sqlglot.generator.Generator.introducer_sql": {"tf": 1}, "sqlglot.generator.Generator.pseudotype_sql": {"tf": 1}, "sqlglot.generator.Generator.returning_sql": {"tf": 1}, "sqlglot.generator.Generator.rowformatdelimitedproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.table_sql": {"tf": 1}, "sqlglot.generator.Generator.tablesample_sql": {"tf": 1}, "sqlglot.generator.Generator.pivot_sql": {"tf": 1}, "sqlglot.generator.Generator.tuple_sql": {"tf": 1}, "sqlglot.generator.Generator.update_sql": {"tf": 1}, "sqlglot.generator.Generator.values_sql": {"tf": 1}, "sqlglot.generator.Generator.var_sql": {"tf": 1}, "sqlglot.generator.Generator.into_sql": {"tf": 1}, "sqlglot.generator.Generator.from_sql": {"tf": 1}, "sqlglot.generator.Generator.group_sql": {"tf": 1}, "sqlglot.generator.Generator.having_sql": {"tf": 1}, "sqlglot.generator.Generator.join_sql": {"tf": 1}, "sqlglot.generator.Generator.lambda_sql": {"tf": 1}, "sqlglot.generator.Generator.lateral_sql": {"tf": 1}, "sqlglot.generator.Generator.limit_sql": {"tf": 1}, "sqlglot.generator.Generator.offset_sql": {"tf": 1}, "sqlglot.generator.Generator.setitem_sql": {"tf": 1}, "sqlglot.generator.Generator.set_sql": {"tf": 1}, "sqlglot.generator.Generator.pragma_sql": {"tf": 1}, "sqlglot.generator.Generator.lock_sql": {"tf": 1}, "sqlglot.generator.Generator.literal_sql": {"tf": 1}, "sqlglot.generator.Generator.loaddata_sql": {"tf": 1}, "sqlglot.generator.Generator.null_sql": {"tf": 1}, "sqlglot.generator.Generator.boolean_sql": {"tf": 1}, "sqlglot.generator.Generator.order_sql": {"tf": 1}, "sqlglot.generator.Generator.cluster_sql": {"tf": 1}, "sqlglot.generator.Generator.distribute_sql": {"tf": 1}, "sqlglot.generator.Generator.sort_sql": {"tf": 1}, "sqlglot.generator.Generator.ordered_sql": {"tf": 1}, "sqlglot.generator.Generator.matchrecognize_sql": {"tf": 1}, "sqlglot.generator.Generator.query_modifiers": {"tf": 1}, "sqlglot.generator.Generator.select_sql": {"tf": 1}, "sqlglot.generator.Generator.schema_sql": {"tf": 1}, "sqlglot.generator.Generator.star_sql": {"tf": 1}, "sqlglot.generator.Generator.structkwarg_sql": {"tf": 1}, "sqlglot.generator.Generator.parameter_sql": {"tf": 1}, "sqlglot.generator.Generator.sessionparameter_sql": {"tf": 1}, "sqlglot.generator.Generator.placeholder_sql": {"tf": 1}, "sqlglot.generator.Generator.subquery_sql": {"tf": 1}, "sqlglot.generator.Generator.qualify_sql": {"tf": 1}, "sqlglot.generator.Generator.union_sql": {"tf": 1}, "sqlglot.generator.Generator.union_op": {"tf": 1}, "sqlglot.generator.Generator.unnest_sql": {"tf": 1}, "sqlglot.generator.Generator.where_sql": {"tf": 1}, "sqlglot.generator.Generator.window_sql": {"tf": 1}, "sqlglot.generator.Generator.partition_by_sql": {"tf": 1}, "sqlglot.generator.Generator.window_spec_sql": {"tf": 1}, "sqlglot.generator.Generator.withingroup_sql": {"tf": 1}, "sqlglot.generator.Generator.between_sql": {"tf": 1}, "sqlglot.generator.Generator.bracket_sql": {"tf": 1}, "sqlglot.generator.Generator.all_sql": {"tf": 1}, "sqlglot.generator.Generator.any_sql": {"tf": 1}, "sqlglot.generator.Generator.exists_sql": {"tf": 1}, "sqlglot.generator.Generator.case_sql": {"tf": 1}, "sqlglot.generator.Generator.constraint_sql": {"tf": 1}, "sqlglot.generator.Generator.extract_sql": {"tf": 1}, "sqlglot.generator.Generator.trim_sql": {"tf": 1}, "sqlglot.generator.Generator.concat_sql": {"tf": 1}, "sqlglot.generator.Generator.check_sql": {"tf": 1}, "sqlglot.generator.Generator.foreignkey_sql": {"tf": 1}, "sqlglot.generator.Generator.primarykey_sql": {"tf": 1}, "sqlglot.generator.Generator.unique_sql": {"tf": 1}, "sqlglot.generator.Generator.if_sql": {"tf": 1}, "sqlglot.generator.Generator.matchagainst_sql": {"tf": 1}, "sqlglot.generator.Generator.jsonkeyvalue_sql": {"tf": 1}, "sqlglot.generator.Generator.jsonobject_sql": {"tf": 1}, "sqlglot.generator.Generator.in_sql": {"tf": 1}, "sqlglot.generator.Generator.in_unnest_op": {"tf": 1}, "sqlglot.generator.Generator.interval_sql": {"tf": 1}, "sqlglot.generator.Generator.return_sql": {"tf": 1}, "sqlglot.generator.Generator.reference_sql": {"tf": 1}, "sqlglot.generator.Generator.anonymous_sql": {"tf": 1}, "sqlglot.generator.Generator.paren_sql": {"tf": 1}, "sqlglot.generator.Generator.neg_sql": {"tf": 1}, "sqlglot.generator.Generator.not_sql": {"tf": 1}, "sqlglot.generator.Generator.alias_sql": {"tf": 1}, "sqlglot.generator.Generator.aliases_sql": {"tf": 1}, "sqlglot.generator.Generator.attimezone_sql": {"tf": 1}, "sqlglot.generator.Generator.add_sql": {"tf": 1}, "sqlglot.generator.Generator.and_sql": {"tf": 1}, "sqlglot.generator.Generator.connector_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwiseand_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwiseleftshift_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwisenot_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwiseor_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwiserightshift_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwisexor_sql": {"tf": 1}, "sqlglot.generator.Generator.cast_sql": {"tf": 1}, "sqlglot.generator.Generator.currentdate_sql": {"tf": 1}, "sqlglot.generator.Generator.collate_sql": {"tf": 1}, "sqlglot.generator.Generator.command_sql": {"tf": 1}, "sqlglot.generator.Generator.comment_sql": {"tf": 1}, "sqlglot.generator.Generator.transaction_sql": {"tf": 1}, "sqlglot.generator.Generator.commit_sql": {"tf": 1}, "sqlglot.generator.Generator.rollback_sql": {"tf": 1}, "sqlglot.generator.Generator.altercolumn_sql": {"tf": 1}, "sqlglot.generator.Generator.renametable_sql": {"tf": 1}, "sqlglot.generator.Generator.altertable_sql": {"tf": 1}, "sqlglot.generator.Generator.droppartition_sql": {"tf": 1}, "sqlglot.generator.Generator.addconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.distinct_sql": {"tf": 1}, "sqlglot.generator.Generator.ignorenulls_sql": {"tf": 1}, "sqlglot.generator.Generator.respectnulls_sql": {"tf": 1}, "sqlglot.generator.Generator.intdiv_sql": {"tf": 1}, "sqlglot.generator.Generator.dpipe_sql": {"tf": 1}, "sqlglot.generator.Generator.div_sql": {"tf": 1}, "sqlglot.generator.Generator.overlaps_sql": {"tf": 1}, "sqlglot.generator.Generator.distance_sql": {"tf": 1}, "sqlglot.generator.Generator.dot_sql": {"tf": 1}, "sqlglot.generator.Generator.eq_sql": {"tf": 1}, "sqlglot.generator.Generator.escape_sql": {"tf": 1}, "sqlglot.generator.Generator.glob_sql": {"tf": 1}, "sqlglot.generator.Generator.gt_sql": {"tf": 1}, "sqlglot.generator.Generator.gte_sql": {"tf": 1}, "sqlglot.generator.Generator.ilike_sql": {"tf": 1}, "sqlglot.generator.Generator.ilikeany_sql": {"tf": 1}, "sqlglot.generator.Generator.is_sql": {"tf": 1}, "sqlglot.generator.Generator.like_sql": {"tf": 1}, "sqlglot.generator.Generator.likeany_sql": {"tf": 1}, "sqlglot.generator.Generator.similarto_sql": {"tf": 1}, "sqlglot.generator.Generator.lt_sql": {"tf": 1}, "sqlglot.generator.Generator.lte_sql": {"tf": 1}, "sqlglot.generator.Generator.mod_sql": {"tf": 1}, "sqlglot.generator.Generator.mul_sql": {"tf": 1}, "sqlglot.generator.Generator.neq_sql": {"tf": 1}, "sqlglot.generator.Generator.nullsafeeq_sql": {"tf": 1}, "sqlglot.generator.Generator.nullsafeneq_sql": {"tf": 1}, "sqlglot.generator.Generator.or_sql": {"tf": 1}, "sqlglot.generator.Generator.slice_sql": {"tf": 1}, "sqlglot.generator.Generator.sub_sql": {"tf": 1}, "sqlglot.generator.Generator.trycast_sql": {"tf": 1}, "sqlglot.generator.Generator.use_sql": {"tf": 1}, "sqlglot.generator.Generator.binary": {"tf": 1}, "sqlglot.generator.Generator.function_fallback_sql": {"tf": 1}, "sqlglot.generator.Generator.func": {"tf": 1}, "sqlglot.generator.Generator.format_args": {"tf": 1}, "sqlglot.generator.Generator.text_width": {"tf": 1}, "sqlglot.generator.Generator.format_time": {"tf": 1}, "sqlglot.generator.Generator.expressions": {"tf": 1}, "sqlglot.generator.Generator.op_expressions": {"tf": 1}, "sqlglot.generator.Generator.naked_property": {"tf": 1}, "sqlglot.generator.Generator.set_operation": {"tf": 1}, "sqlglot.generator.Generator.tag_sql": {"tf": 1}, "sqlglot.generator.Generator.token_sql": {"tf": 1}, "sqlglot.generator.Generator.userdefinedfunction_sql": {"tf": 1}, "sqlglot.generator.Generator.joinhint_sql": {"tf": 1}, "sqlglot.generator.Generator.kwarg_sql": {"tf": 1}, "sqlglot.generator.Generator.when_sql": {"tf": 1}, "sqlglot.generator.Generator.merge_sql": {"tf": 1}, "sqlglot.generator.Generator.tochar_sql": {"tf": 1}, "sqlglot.lineage.Node.walk": {"tf": 1}, "sqlglot.lineage.Node.to_html": {"tf": 1}, "sqlglot.optimizer.annotate_types.TypeAnnotator.annotate": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.get_table": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.get_source_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.clear_cache": {"tf": 1}, "sqlglot.optimizer.scope.Scope.branch": {"tf": 1}, "sqlglot.optimizer.scope.Scope.walk": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1}, "sqlglot.optimizer.scope.Scope.replace": {"tf": 1}, "sqlglot.optimizer.scope.Scope.source_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.rename_source": {"tf": 1}, "sqlglot.optimizer.scope.Scope.add_source": {"tf": 1}, "sqlglot.optimizer.scope.Scope.remove_source": {"tf": 1}, "sqlglot.optimizer.scope.Scope.traverse": {"tf": 1}, "sqlglot.optimizer.scope.Scope.ref_count": {"tf": 1}, "sqlglot.parser.Parser.reset": {"tf": 1}, "sqlglot.parser.Parser.parse": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 1}, "sqlglot.parser.Parser.check_errors": {"tf": 1}, "sqlglot.parser.Parser.raise_error": {"tf": 1}, "sqlglot.parser.Parser.expression": {"tf": 1}, "sqlglot.parser.Parser.validate_expression": {"tf": 1}, "sqlglot.planner.Step.add_dependency": {"tf": 1}, "sqlglot.planner.Step.to_s": {"tf": 1}, "sqlglot.schema.Schema.add_table": {"tf": 1}, "sqlglot.schema.Schema.column_names": {"tf": 1}, "sqlglot.schema.Schema.get_column_type": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema.table_parts": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema.find": {"tf": 1}, "sqlglot.schema.MappingSchema.copy": {"tf": 1}, "sqlglot.schema.MappingSchema.add_table": {"tf": 1}, "sqlglot.schema.MappingSchema.column_names": {"tf": 1}, "sqlglot.schema.MappingSchema.get_column_type": {"tf": 1}, "sqlglot.tokens.Tokenizer.reset": {"tf": 1}, "sqlglot.tokens.Tokenizer.tokenize": {"tf": 1}}, "df": 507}, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe.sql.DataFrame.__init__": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.expressions.Subqueryable.limit": {"tf": 1}, "sqlglot.expressions.Union.limit": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.expressions.Select.limit": {"tf": 1}, "sqlglot.expressions.Select.offset": {"tf": 1}, "sqlglot.expressions.Select.select": {"tf": 1}, "sqlglot.expressions.Select.lateral": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1}, "sqlglot.expressions.Select.where": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1}, "sqlglot.expressions.Select.window": {"tf": 1}, "sqlglot.expressions.Select.qualify": {"tf": 1}, "sqlglot.expressions.Select.distinct": {"tf": 1}, "sqlglot.expressions.Select.lock": {"tf": 1}, "sqlglot.expressions.select": {"tf": 1}, "sqlglot.expressions.from_": {"tf": 1}, "sqlglot.generator.Generator.select_sql": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.unnest": {"tf": 1.4142135623730951}, "sqlglot.optimizer.unnest_subqueries.decorrelate": {"tf": 1.4142135623730951}}, "df": 25, "s": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1.4142135623730951}}, "df": 1}, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 1}}, "df": 1}}}}}}}}, "q": {"docs": {"sqlglot.helper.seq_get": {"tf": 1}}, "df": 1, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.SparkSession.createDataFrame": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.__init__": {"tf": 1}, "sqlglot.dialects.dialect.format_time_lambda": {"tf": 1}, "sqlglot.dialects.dialect.parse_date_delta": {"tf": 1}, "sqlglot.dialects.dialect.date_trunc_to_time": {"tf": 1}, "sqlglot.dialects.dialect.locate_to_strposition": {"tf": 1}, "sqlglot.errors.concat_messages": {"tf": 1}, "sqlglot.errors.merge_errors": {"tf": 1}, "sqlglot.expressions.Expression.error_messages": {"tf": 1}, "sqlglot.expressions.Dot.build": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1}, "sqlglot.helper.seq_get": {"tf": 1}, "sqlglot.lineage.lineage": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.unnest": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.decorrelate": {"tf": 1}, "sqlglot.parser.parse_var_map": {"tf": 1}, "sqlglot.trie.new_trie": {"tf": 1}, "sqlglot.trie.in_trie": {"tf": 1}}, "df": 19}}}}}}, "r": {"docs": {"sqlglot.dataframe.sql.DataFrame.persist": {"tf": 1}}, "df": 1}, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dataframe.sql.DataFrameReader.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.__init__": {"tf": 1}}, "df": 2, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.generator.Generator.sessionparameter_sql": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.dialects.duckdb.DuckDB.Generator.tablesample_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.tablesample_sql": {"tf": 1.4142135623730951}}, "df": 2}}, "t": {"docs": {"sqlglot.generator.Generator.set_sql": {"tf": 1}}, "df": 1, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.dialects.snowflake.Snowflake.Generator.settag_sql": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {"sqlglot.generator.Generator.setitem_sql": {"tf": 1}}, "df": 1}}}}}, "p": {"docs": {"sqlglot.generator.Generator.sep": {"tf": 1}, "sqlglot.generator.Generator.seg": {"tf": 1}, "sqlglot.generator.Generator.properties": {"tf": 1}, "sqlglot.generator.Generator.table_sql": {"tf": 1}, "sqlglot.generator.Generator.lambda_sql": {"tf": 1}, "sqlglot.generator.Generator.subquery_sql": {"tf": 1}, "sqlglot.generator.Generator.expressions": {"tf": 1}, "sqlglot.helper.csv": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1}}, "df": 9}}, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.dataframe.sql.SparkSession.createDataFrame": {"tf": 1}, "sqlglot.executor.execute": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.schema_sql": {"tf": 1}, "sqlglot.lineage.lineage": {"tf": 1.7320508075688772}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}, "sqlglot.optimizer.annotate_types.TypeAnnotator.__init__": {"tf": 1}, "sqlglot.optimizer.isolate_table_selects.isolate_table_selects": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1.7320508075688772}, "sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 1}, "sqlglot.optimizer.qualify_columns.qualify_columns": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.__init__": {"tf": 1}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"tf": 1}, "sqlglot.schema.MappingSchema.__init__": {"tf": 1}, "sqlglot.schema.MappingSchema.from_mapping_schema": {"tf": 1.7320508075688772}, "sqlglot.schema.MappingSchema.copy": {"tf": 1}, "sqlglot.schema.ensure_schema": {"tf": 1.7320508075688772}, "sqlglot.schema.flatten_schema": {"tf": 1}}, "df": 17}}}}, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.pushdown_predicates.pushdown": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_cnf": {"tf": 1.4142135623730951}, "sqlglot.optimizer.pushdown_predicates.pushdown_dnf": {"tf": 1.4142135623730951}, "sqlglot.optimizer.pushdown_predicates.nodes_for_predicate": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.__init__": {"tf": 1}, "sqlglot.optimizer.scope.Scope.__init__": {"tf": 1}, "sqlglot.optimizer.scope.Scope.branch": {"tf": 1}}, "df": 7, "t": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.scope.Scope.__init__": {"tf": 1}}, "df": 1}}}}}}}}, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {"sqlglot.dataframe.sql.SparkSession.createDataFrame": {"tf": 1}}, "df": 1}}}}}}}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.DataFrameWriter.mode": {"tf": 1}}, "df": 1}}}}}}, "f": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.canonicalize.canonicalize": {"tf": 1}}, "df": 1, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.no_safe_divide_sql": {"tf": 1}}, "df": 1}}}}}}}}}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.dataframe.sql.DataFrame.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sql": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameReader.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.__init__": {"tf": 1}}, "df": 4, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dataframe.sql.DataFrameReader.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.__init__": {"tf": 1}}, "df": 2}}}}}}}}}}}, "u": {"docs": {}, "df": 0, "b": {"docs": {"sqlglot.generator.Generator.sub_sql": {"tf": 1}}, "df": 1, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe.sql.DataFrame.dropDuplicates": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.dropna": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.replace": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.drop": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.fill": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.replace": {"tf": 1}}, "df": 7}}, "t": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.executor.env.str_position": {"tf": 1}}, "df": 1}}}, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.Subqueryable.subquery": {"tf": 1}, "sqlglot.generator.Generator.subquery_sql": {"tf": 1}}, "df": 2, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.expand": {"tf": 1}, "sqlglot.lineage.lineage": {"tf": 1}}, "df": 2}}}}}, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1.7320508075688772}}, "df": 1}}}}}}}}, "f": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "x": {"docs": {"sqlglot.generator.Generator.properties": {"tf": 1}}, "df": 1}}}}}, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {"sqlglot.dialects.mysql.MySQL.Generator.show_sql": {"tf": 1}}, "df": 1}}}, "y": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.tsql.TSQL.Generator.systemtime_sql": {"tf": 1}}, "df": 1}}}}}}}}}, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff.Update.__init__": {"tf": 1}, "sqlglot.diff.Keep.__init__": {"tf": 1}, "sqlglot.diff.diff": {"tf": 1}, "sqlglot.diff.ChangeDistiller.diff": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.nested_loop_join": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.hash_join": {"tf": 1}, "sqlglot.lineage.Node.__init__": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.replace_aliases": {"tf": 1}, "sqlglot.optimizer.scope.Scope.source_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.add_source": {"tf": 1}}, "df": 10, "s": {"docs": {"sqlglot.expressions.expand": {"tf": 1}, "sqlglot.lineage.lineage": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.nodes_for_predicate": {"tf": 1}, "sqlglot.optimizer.scope.Scope.__init__": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.branch": {"tf": 1}}, "df": 6}}}}}, "r": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.generator.Generator.sort_sql": {"tf": 1}}, "df": 1}}}, "k": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.generator.Generator.indent": {"tf": 1.4142135623730951}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {"sqlglot.generator.Generator.similarto_sql": {"tf": 1}}, "df": 1}}}}}}, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 1}}}}}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.generator.Generator.slice_sql": {"tf": 1}}, "df": 1}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.parse": {"tf": 1}, "sqlglot.parse_one": {"tf": 1}, "sqlglot.transpile": {"tf": 1}, "sqlglot.executor.execute": {"tf": 1}, "sqlglot.helper.csv_reader": {"tf": 1}}, "df": 5, "w": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dataframe.sql.DataFrameWriter.copy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.mode": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.insertInto": {"tf": 1}}, "df": 3}}}}}}, "c": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "v": {"docs": {"sqlglot.helper.csv_reader": {"tf": 1}}, "df": 1}}}}}, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.DataFrame.replace": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.replace": {"tf": 1}}, "df": 2}}}}}, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.dataframe.sql.Column.rlike": {"tf": 1}}, "df": 1}}}}, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.redshift.Redshift.Generator.renametable_sql": {"tf": 1}, "sqlglot.generator.Generator.renametable_sql": {"tf": 1}}, "df": 2}}}}}}}}}, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.generator.Generator.return_sql": {"tf": 1}}, "df": 1, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dialects.tsql.TSQL.Generator.returnsproperty_sql": {"tf": 1}}, "df": 1}}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.expressions.delete": {"tf": 1}, "sqlglot.generator.Generator.returning_sql": {"tf": 1}}, "df": 2}}}}}}}, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff.diff": {"tf": 1}, "sqlglot.diff.ChangeDistiller.diff": {"tf": 1}, "sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 1}}, "df": 3}}}}, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.executor.env.null_if_any": {"tf": 1}}, "df": 1}}}}}}, "c": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Subqueryable.with_": {"tf": 1}}, "df": 1}}}}}}}, "f": {"docs": {"sqlglot.optimizer.pushdown_predicates.pushdown": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_cnf": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_dnf": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.nodes_for_predicate": {"tf": 1}}, "df": 4, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.generator.Generator.reference_sql": {"tf": 1}}, "df": 1}}}}}}}, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.generator.Generator.respectnulls_sql": {"tf": 1}}, "df": 1}}}}}}}}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.executor.table.Table.__init__": {"tf": 1}, "sqlglot.executor.table.RowReader.__init__": {"tf": 1}}, "df": 2, "n": {"docs": {"sqlglot.dialects.teradata.Teradata.Generator.rangen_sql": {"tf": 1}}, "df": 1}}}}, "w": {"docs": {"sqlglot.parser.Parser.parse": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 1}}, "df": 2}, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.schema.AbstractMappingSchema.find": {"tf": 1}}, "df": 1}}}}, "o": {"docs": {}, "df": 0, "w": {"docs": {"sqlglot.executor.context.Context.set_row": {"tf": 1}, "sqlglot.executor.table.Table.append": {"tf": 1}}, "df": 2, "s": {"docs": {"sqlglot.executor.table.Table.__init__": {"tf": 1}}, "df": 1}, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.generator.Generator.rowformatdelimitedproperty_sql": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.generator.Generator.rollback_sql": {"tf": 1}}, "df": 1}}}}}}, "o": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.optimizer.scope.Scope.__init__": {"tf": 1}, "sqlglot.optimizer.simplify.simplify_connectors": {"tf": 1}, "sqlglot.optimizer.simplify.remove_compliments": {"tf": 1}, "sqlglot.optimizer.simplify.uniq_sort": {"tf": 1}, "sqlglot.optimizer.simplify.absorb_and_eliminate": {"tf": 1}, "sqlglot.optimizer.simplify.simplify_literals": {"tf": 1}}, "df": 6}}}, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.union": {"tf": 1}, "sqlglot.expressions.intersect": {"tf": 1}, "sqlglot.expressions.except_": {"tf": 1}, "sqlglot.planner.SetOperation.__init__": {"tf": 1}}, "df": 4}}}}, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.lineage.lineage": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 2}}}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.parse": {"tf": 1}, "sqlglot.parse_one": {"tf": 1.7320508075688772}, "sqlglot.transpile": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.SparkSession.createDataFrame": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.where": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.filter": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.join": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.dropna": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.replace": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.drop": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.hint": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.repartition": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.agg": {"tf": 1}, "sqlglot.dataframe.sql.Column.__init__": {"tf": 1}, "sqlglot.dataframe.sql.Column.ensure_col": {"tf": 1}, "sqlglot.dataframe.sql.Column.ensure_cols": {"tf": 1}, "sqlglot.dataframe.sql.Column.cast": {"tf": 1}, "sqlglot.dataframe.sql.Column.startswith": {"tf": 1}, "sqlglot.dataframe.sql.Column.endswith": {"tf": 1}, "sqlglot.dataframe.sql.Column.substr": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.isin": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.drop": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.fill": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrameNaFunctions.replace": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Window.partitionBy": {"tf": 1}, "sqlglot.dataframe.sql.Window.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.partitionBy": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.orderBy": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.get_or_raise": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.format_time": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.parse_into": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.format_time_lambda": {"tf": 1}, "sqlglot.diff.diff": {"tf": 1}, "sqlglot.diff.ChangeDistiller.diff": {"tf": 1}, "sqlglot.executor.execute": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.sql": {"tf": 1}, "sqlglot.expressions.Delete.delete": {"tf": 1.4142135623730951}, "sqlglot.expressions.Delete.where": {"tf": 1.4142135623730951}, "sqlglot.expressions.Delete.returning": {"tf": 1.4142135623730951}, "sqlglot.expressions.Union.select": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.build": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 2}, "sqlglot.expressions.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.update": {"tf": 1.7320508075688772}, "sqlglot.expressions.delete": {"tf": 2}, "sqlglot.expressions.to_table": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1.7320508075688772}, "sqlglot.expressions.column": {"tf": 1.7320508075688772}, "sqlglot.expressions.cast": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1}, "sqlglot.expressions.var": {"tf": 1}, "sqlglot.expressions.func": {"tf": 1}, "sqlglot.generator.Generator.sql": {"tf": 1}, "sqlglot.generator.Generator.union_sql": {"tf": 1}, "sqlglot.generator.Generator.union_op": {"tf": 1}, "sqlglot.generator.Generator.func": {"tf": 1}, "sqlglot.generator.Generator.format_args": {"tf": 1}, "sqlglot.helper.subclasses": {"tf": 1.4142135623730951}, "sqlglot.helper.flatten": {"tf": 1}, "sqlglot.lineage.lineage": {"tf": 1.4142135623730951}, "sqlglot.lineage.LineageHTML.__init__": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser.parse_into": {"tf": 1.4142135623730951}, "sqlglot.schema.Schema.add_table": {"tf": 1}, "sqlglot.schema.MappingSchema.__init__": {"tf": 1}, "sqlglot.schema.MappingSchema.add_table": {"tf": 1}, "sqlglot.schema.ensure_schema": {"tf": 1}, "sqlglot.schema.ensure_column_mapping": {"tf": 1}, "sqlglot.serde.dump": {"tf": 1.4142135623730951}, "sqlglot.serde.load": {"tf": 1.4142135623730951}}, "df": 74}}, "t": {"docs": {"sqlglot.dialects.dialect.parse_date_delta": {"tf": 1}, "sqlglot.executor.env.interval": {"tf": 1}}, "df": 2}, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.generator.Generator.unique_sql": {"tf": 1}}, "df": 1}}}}, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator.in_unnest_op": {"tf": 1}, "sqlglot.expressions.Expression.flatten": {"tf": 1}, "sqlglot.generator.Generator.__init__": {"tf": 1}, "sqlglot.generator.Generator.unnest_sql": {"tf": 1}, "sqlglot.generator.Generator.in_unnest_op": {"tf": 1.4142135623730951}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.parser.Parser.__init__": {"tf": 1}}, "df": 7}}}}, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.generator.Generator.__init__": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}}, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.generator.Generator.uncache_sql": {"tf": 1}}, "df": 1}}}}}, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 1}}, "df": 1}}}}}, "p": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.generator.Generator.__init__": {"tf": 1}}, "df": 1, "b": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.dataframe.sql.Column.between": {"tf": 1}}, "df": 1}}}}}}}}, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.teradata.Teradata.Generator.update_sql": {"tf": 1}, "sqlglot.diff.diff": {"tf": 1}, "sqlglot.diff.ChangeDistiller.diff": {"tf": 1}, "sqlglot.expressions.Select.lock": {"tf": 1}, "sqlglot.expressions.update": {"tf": 1}, "sqlglot.generator.Generator.update_sql": {"tf": 1}}, "df": 6}}}}}, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.expressions.Select.join": {"tf": 1}}, "df": 1}}}, "e": {"docs": {"sqlglot.generator.Generator.use_sql": {"tf": 1}}, "df": 1, "r": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.generator.Generator.userdefinedfunction_sql": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}, "d": {"docs": {"sqlglot.executor.table.ensure_tables": {"tf": 1}, "sqlglot.helper.dict_depth": {"tf": 1}}, "df": 2, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.parse": {"tf": 2}, "sqlglot.parse_one": {"tf": 2}, "sqlglot.transpile": {"tf": 2.8284271247461903}, "sqlglot.dataframe.sql.DataFrame.sql": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.get_or_raise": {"tf": 2.6457513110645907}, "sqlglot.dialects.dialect.format_time_lambda": {"tf": 1}, "sqlglot.dialects.dialect.ts_or_ds_to_date_sql": {"tf": 1}, "sqlglot.executor.execute": {"tf": 2}, "sqlglot.expressions.Expression.sql": {"tf": 2.23606797749979}, "sqlglot.expressions.Condition.and_": {"tf": 1}, "sqlglot.expressions.Condition.or_": {"tf": 1}, "sqlglot.expressions.Unionable.union": {"tf": 1}, "sqlglot.expressions.Unionable.intersect": {"tf": 1}, "sqlglot.expressions.Unionable.except_": {"tf": 1}, "sqlglot.expressions.Delete.delete": {"tf": 2.23606797749979}, "sqlglot.expressions.Delete.where": {"tf": 2.23606797749979}, "sqlglot.expressions.Delete.returning": {"tf": 2.23606797749979}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Join.using": {"tf": 1}, "sqlglot.expressions.Subqueryable.limit": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1}, "sqlglot.expressions.Union.limit": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 2.23606797749979}, "sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.expressions.Select.limit": {"tf": 1}, "sqlglot.expressions.Select.offset": {"tf": 1}, "sqlglot.expressions.Select.select": {"tf": 2.23606797749979}, "sqlglot.expressions.Select.lateral": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1}, "sqlglot.expressions.Select.where": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1}, "sqlglot.expressions.Select.window": {"tf": 1}, "sqlglot.expressions.Select.qualify": {"tf": 1}, "sqlglot.expressions.Select.ctas": {"tf": 1}, "sqlglot.expressions.DataType.build": {"tf": 2.23606797749979}, "sqlglot.expressions.maybe_parse": {"tf": 2.23606797749979}, "sqlglot.expressions.union": {"tf": 1}, "sqlglot.expressions.intersect": {"tf": 1}, "sqlglot.expressions.except_": {"tf": 1}, "sqlglot.expressions.select": {"tf": 2.23606797749979}, "sqlglot.expressions.from_": {"tf": 1}, "sqlglot.expressions.update": {"tf": 2.23606797749979}, "sqlglot.expressions.delete": {"tf": 2.23606797749979}, "sqlglot.expressions.condition": {"tf": 1}, "sqlglot.expressions.and_": {"tf": 1}, "sqlglot.expressions.or_": {"tf": 1}, "sqlglot.expressions.not_": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 2.23606797749979}, "sqlglot.expressions.subquery": {"tf": 1}, "sqlglot.expressions.func": {"tf": 2.23606797749979}, "sqlglot.lineage.lineage": {"tf": 2.23606797749979}, "sqlglot.lineage.LineageHTML.__init__": {"tf": 2.23606797749979}, "sqlglot.optimizer.optimizer.optimize": {"tf": 2.23606797749979}, "sqlglot.schema.MappingSchema.__init__": {"tf": 2.23606797749979}, "sqlglot.schema.ensure_schema": {"tf": 2.23606797749979}}, "df": 59, "s": {"docs": {"sqlglot.parse": {"tf": 1.4142135623730951}, "sqlglot.parse_one": {"tf": 1.4142135623730951}, "sqlglot.transpile": {"tf": 2}, "sqlglot.dialects.dialect.Dialect.get_or_raise": {"tf": 1.7320508075688772}, "sqlglot.executor.execute": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.sql": {"tf": 1.4142135623730951}, "sqlglot.expressions.Delete.delete": {"tf": 1.4142135623730951}, "sqlglot.expressions.Delete.where": {"tf": 1.4142135623730951}, "sqlglot.expressions.Delete.returning": {"tf": 1.4142135623730951}, "sqlglot.expressions.Union.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.build": {"tf": 1.4142135623730951}, "sqlglot.expressions.maybe_parse": {"tf": 1.4142135623730951}, "sqlglot.expressions.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.update": {"tf": 1.4142135623730951}, "sqlglot.expressions.delete": {"tf": 1.4142135623730951}, "sqlglot.expressions.alias_": {"tf": 1.4142135623730951}, "sqlglot.expressions.func": {"tf": 1.4142135623730951}, "sqlglot.lineage.lineage": {"tf": 1.4142135623730951}, "sqlglot.lineage.LineageHTML.__init__": {"tf": 1.4142135623730951}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1.4142135623730951}, "sqlglot.schema.MappingSchema.__init__": {"tf": 1.4142135623730951}, "sqlglot.schema.ensure_schema": {"tf": 1.4142135623730951}}, "df": 23}}}}}}, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe.sql.SparkSession.createDataFrame": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.replace": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.agg": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.fill": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.replace": {"tf": 1}, "sqlglot.dialects.dialect.parse_date_delta": {"tf": 1}, "sqlglot.errors.ParseError.__init__": {"tf": 1}, "sqlglot.errors.merge_errors": {"tf": 1}, "sqlglot.executor.execute": {"tf": 1.4142135623730951}, "sqlglot.executor.context.Context.__init__": {"tf": 1.4142135623730951}, "sqlglot.executor.table.ensure_tables": {"tf": 1}, "sqlglot.expressions.Properties.from_dict": {"tf": 1}, "sqlglot.expressions.update": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1}, "sqlglot.expressions.expand": {"tf": 1}, "sqlglot.generator.Generator.generate": {"tf": 1}, "sqlglot.generator.Generator.locate_properties": {"tf": 1}, "sqlglot.helper.tsort": {"tf": 1}, "sqlglot.helper.object_to_dict": {"tf": 1}, "sqlglot.helper.dict_depth": {"tf": 1}, "sqlglot.lineage.lineage": {"tf": 1.4142135623730951}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.Join.from_joins": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}, "sqlglot.schema.Schema.add_table": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema.__init__": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema.find": {"tf": 1}, "sqlglot.schema.MappingSchema.__init__": {"tf": 1.4142135623730951}, "sqlglot.schema.MappingSchema.add_table": {"tf": 1}, "sqlglot.schema.ensure_column_mapping": {"tf": 1}, "sqlglot.schema.flatten_schema": {"tf": 1}, "sqlglot.serde.dump": {"tf": 1.4142135623730951}, "sqlglot.serde.load": {"tf": 1.4142135623730951}, "sqlglot.time.format_time": {"tf": 1.4142135623730951}, "sqlglot.trie.new_trie": {"tf": 1}, "sqlglot.trie.in_trie": {"tf": 1.4142135623730951}}, "df": 38}}, "s": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.dataframe.sql.DataFrame.persist": {"tf": 1}}, "df": 1}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.Unionable.union": {"tf": 1}, "sqlglot.expressions.Unionable.intersect": {"tf": 1}, "sqlglot.expressions.Unionable.except_": {"tf": 1}, "sqlglot.expressions.Select.distinct": {"tf": 1}, "sqlglot.expressions.union": {"tf": 1}, "sqlglot.expressions.intersect": {"tf": 1}, "sqlglot.expressions.except_": {"tf": 1}, "sqlglot.generator.Generator.distinct_sql": {"tf": 1}, "sqlglot.planner.SetOperation.__init__": {"tf": 1}}, "df": 9}}}}, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.generator.Generator.distribute_sql": {"tf": 1}}, "df": 1}}}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.generator.Generator.distance_sql": {"tf": 1}, "sqlglot.optimizer.normalize.normalize": {"tf": 1}, "sqlglot.optimizer.normalize.distributive_law": {"tf": 1}}, "df": 3}}}}}}, "f": {"docs": {}, "df": 0, "f": {"docs": {"sqlglot.diff.diff": {"tf": 2.23606797749979}, "sqlglot.diff.ChangeDistiller.diff": {"tf": 2.23606797749979}}, "df": 2}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.generator.Generator.directory_sql": {"tf": 1}}, "df": 1}}}}}}}, "v": {"docs": {"sqlglot.generator.Generator.div_sql": {"tf": 1}}, "df": 1}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.dataframe.sql.SparkSession.createDataFrame": {"tf": 1}}, "df": 1, "f": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.SparkSession.table": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.SparkSession.createDataFrame": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.SparkSession.sql": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.copy": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.select": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.alias": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.where": {"tf": 2}, "sqlglot.dataframe.sql.DataFrame.filter": {"tf": 2}, "sqlglot.dataframe.sql.DataFrame.groupBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.agg": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.join": {"tf": 2.8284271247461903}, "sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 2}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 2}, "sqlglot.dataframe.sql.DataFrame.union": {"tf": 2.449489742783178}, "sqlglot.dataframe.sql.DataFrame.unionAll": {"tf": 2.449489742783178}, "sqlglot.dataframe.sql.DataFrame.unionByName": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.intersect": {"tf": 2.449489742783178}, "sqlglot.dataframe.sql.DataFrame.intersectAll": {"tf": 2.449489742783178}, "sqlglot.dataframe.sql.DataFrame.exceptAll": {"tf": 2.449489742783178}, "sqlglot.dataframe.sql.DataFrame.distinct": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.dropna": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.replace": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.withColumn": {"tf": 2}, "sqlglot.dataframe.sql.DataFrame.drop": {"tf": 2}, "sqlglot.dataframe.sql.DataFrame.limit": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.hint": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.repartition": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.coalesce": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.cache": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.persist": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.GroupedData.__init__": {"tf": 2.23606797749979}, "sqlglot.dataframe.sql.GroupedData.agg": {"tf": 2}, "sqlglot.dataframe.sql.GroupedData.count": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.GroupedData.mean": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.GroupedData.avg": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.GroupedData.max": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.GroupedData.min": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.GroupedData.sum": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.GroupedData.pivot": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Column.ensure_cols": {"tf": 1}, "sqlglot.dataframe.sql.Column.invoke_anonymous_function": {"tf": 1}, "sqlglot.dataframe.sql.Column.invoke_expression_over_column": {"tf": 1}, "sqlglot.dataframe.sql.Column.binary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.inverse_binary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.unary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.ensure_literal": {"tf": 1}, "sqlglot.dataframe.sql.Column.copy": {"tf": 1}, "sqlglot.dataframe.sql.Column.set_table_name": {"tf": 1}, "sqlglot.dataframe.sql.Column.alias": {"tf": 1}, "sqlglot.dataframe.sql.Column.asc": {"tf": 1}, "sqlglot.dataframe.sql.Column.desc": {"tf": 1}, "sqlglot.dataframe.sql.Column.asc_nulls_first": {"tf": 1}, "sqlglot.dataframe.sql.Column.asc_nulls_last": {"tf": 1}, "sqlglot.dataframe.sql.Column.desc_nulls_first": {"tf": 1}, "sqlglot.dataframe.sql.Column.desc_nulls_last": {"tf": 1}, "sqlglot.dataframe.sql.Column.when": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.otherwise": {"tf": 1}, "sqlglot.dataframe.sql.Column.isNull": {"tf": 1}, "sqlglot.dataframe.sql.Column.isNotNull": {"tf": 1}, "sqlglot.dataframe.sql.Column.cast": {"tf": 1}, "sqlglot.dataframe.sql.Column.startswith": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.endswith": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.rlike": {"tf": 1}, "sqlglot.dataframe.sql.Column.substr": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Column.between": {"tf": 1}, "sqlglot.dataframe.sql.Column.over": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.__init__": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrameNaFunctions.drop": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrameNaFunctions.fill": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrameNaFunctions.replace": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Window.partitionBy": {"tf": 1}, "sqlglot.dataframe.sql.Window.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.Window.rowsBetween": {"tf": 1}, "sqlglot.dataframe.sql.Window.rangeBetween": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.partitionBy": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.rowsBetween": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.rangeBetween": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameReader.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameReader.table": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrameWriter.__init__": {"tf": 2}, "sqlglot.dataframe.sql.DataFrameWriter.copy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.mode": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.insertInto": {"tf": 1}, "sqlglot.schema.Schema.add_table": {"tf": 1}, "sqlglot.schema.MappingSchema.add_table": {"tf": 1}, "sqlglot.schema.ensure_column_mapping": {"tf": 1}}, "df": 89, "w": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dataframe.sql.DataFrameWriter.copy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.mode": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.insertInto": {"tf": 1}}, "df": 3}}}}}}}}}}}, "t": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.Column.cast": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.datatype_sql": {"tf": 1}, "sqlglot.expressions.DataType.build": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.is_type": {"tf": 1}, "sqlglot.expressions.Cast.is_type": {"tf": 1}, "sqlglot.expressions.cast": {"tf": 1.4142135623730951}, "sqlglot.expressions.values": {"tf": 1}, "sqlglot.generator.Generator.datatype_sql": {"tf": 1}, "sqlglot.schema.Schema.get_column_type": {"tf": 1}, "sqlglot.schema.MappingSchema.get_column_type": {"tf": 1}, "sqlglot.serde.dump": {"tf": 1}, "sqlglot.serde.load": {"tf": 1}}, "df": 14}}}}, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.generator.Generator.datablocksizeproperty_sql": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}, "e": {"docs": {"sqlglot.optimizer.simplify.date_literal": {"tf": 1}}, "df": 1, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot.dialects.dialect.date_trunc_to_time": {"tf": 1}}, "df": 1}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.datestrtodate_sql": {"tf": 1}}, "df": 1}}}}}}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "f": {"docs": {"sqlglot.dialects.sqlite.SQLite.Generator.datediff_sql": {"tf": 1}}, "df": 1}}}}}}, "g": {"docs": {"sqlglot.helper.tsort": {"tf": 1}}, "df": 1}}, "f": {"docs": {"sqlglot.dataframe.sql.DataFrame.join": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.__init__": {"tf": 1}}, "df": 4}, "e": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.dialect.format_time_lambda": {"tf": 1}}, "df": 1}}}}}, "s": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot.executor.env.ordered": {"tf": 1}}, "df": 1, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.snowflake.Snowflake.Generator.describe_sql": {"tf": 1}, "sqlglot.generator.Generator.describe_sql": {"tf": 1}}, "df": 2}}, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.errors.ParseError.new": {"tf": 1}}, "df": 1}}}}}}}}}, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Delete.delete": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Delete.returning": {"tf": 1}, "sqlglot.expressions.delete": {"tf": 1}, "sqlglot.generator.Generator.delete_sql": {"tf": 1}}, "df": 5}}}}, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.planner.Step.add_dependency": {"tf": 1}}, "df": 1}}}}}}}, "t": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.schema.flatten_schema": {"tf": 1}}, "df": 1}}}}, "o": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.Column.to_dot": {"tf": 1}, "sqlglot.expressions.Dot.build": {"tf": 1}, "sqlglot.generator.Generator.dot_sql": {"tf": 1}}, "df": 3}, "w": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {"sqlglot.lineage.Node.__init__": {"tf": 1}}, "df": 1}}}}}}}}}, "t": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.DataType.build": {"tf": 1}, "sqlglot.expressions.DataType.is_type": {"tf": 1}, "sqlglot.expressions.Cast.is_type": {"tf": 1}}, "df": 3}}}}, "b": {"docs": {"sqlglot.expressions.column": {"tf": 1}, "sqlglot.expressions.table_": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"tf": 1}}, "df": 4}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.generator.Generator.drop_sql": {"tf": 1}}, "df": 1, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.generator.Generator.droppartition_sql": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "p": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.generator.Generator.dpipe_sql": {"tf": 1}}, "df": 1}}}}, "n": {"docs": {}, "df": 0, "f": {"docs": {"sqlglot.optimizer.normalize.normalize": {"tf": 1}, "sqlglot.optimizer.normalize.normalized": {"tf": 1}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1}, "sqlglot.optimizer.normalize.distributive_law": {"tf": 1}}, "df": 4}}}, "t": {"docs": {"sqlglot.diff.ChangeDistiller.__init__": {"tf": 1}, "sqlglot.helper.seq_get": {"tf": 1.4142135623730951}, "sqlglot.helper.tsort": {"tf": 1.7320508075688772}, "sqlglot.helper.first": {"tf": 1.4142135623730951}, "sqlglot.schema.AbstractMappingSchema.find": {"tf": 1}}, "df": 5, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.parse": {"tf": 1}, "sqlglot.parse_one": {"tf": 1.7320508075688772}, "sqlglot.transpile": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialect.get_or_raise": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialect.parse_into": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.format_time_lambda": {"tf": 1}, "sqlglot.dialects.dialect.parse_date_delta": {"tf": 1}, "sqlglot.executor.execute": {"tf": 1}, "sqlglot.expressions.Expression.find": {"tf": 1}, "sqlglot.expressions.Expression.find_all": {"tf": 1}, "sqlglot.expressions.Expression.find_ancestor": {"tf": 1}, "sqlglot.expressions.Expression.sql": {"tf": 1}, "sqlglot.expressions.Expression.assert_is": {"tf": 1}, "sqlglot.expressions.Delete.delete": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Delete.returning": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 1}, "sqlglot.expressions.Select.select": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1}, "sqlglot.expressions.DataType.build": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.is_type": {"tf": 1}, "sqlglot.expressions.Cast.is_type": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1.7320508075688772}, "sqlglot.expressions.select": {"tf": 1}, "sqlglot.expressions.update": {"tf": 1}, "sqlglot.expressions.delete": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1}, "sqlglot.expressions.cast": {"tf": 1}, "sqlglot.expressions.func": {"tf": 1}, "sqlglot.generator.Generator.token_sql": {"tf": 1}, "sqlglot.helper.subclasses": {"tf": 2.23606797749979}, "sqlglot.lineage.lineage": {"tf": 1}, "sqlglot.lineage.LineageHTML.__init__": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.optimizer.scope.Scope.__init__": {"tf": 1}, "sqlglot.optimizer.scope.Scope.branch": {"tf": 1}, "sqlglot.parser.binary_range_parser": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser.parse_into": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser.expression": {"tf": 1}, "sqlglot.planner.SetOperation.__init__": {"tf": 1}, "sqlglot.schema.MappingSchema.__init__": {"tf": 1}, "sqlglot.schema.ensure_schema": {"tf": 1}, "sqlglot.serde.dump": {"tf": 1}, "sqlglot.serde.load": {"tf": 1}, "sqlglot.tokens.Token.__init__": {"tf": 1}}, "df": 45, "s": {"docs": {"sqlglot.dataframe.sql.Column.cast": {"tf": 1}, "sqlglot.expressions.Expression.find": {"tf": 1}, "sqlglot.expressions.Expression.find_all": {"tf": 1}, "sqlglot.expressions.Expression.find_ancestor": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 1}, "sqlglot.schema.Schema.add_table": {"tf": 1}, "sqlglot.schema.MappingSchema.add_table": {"tf": 1}, "sqlglot.schema.ensure_column_mapping": {"tf": 1}}, "df": 11}}}}, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.transpile": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sql": {"tf": 1}, "sqlglot.executor.env.filter_nulls": {"tf": 1}, "sqlglot.expressions.Expression.find": {"tf": 1}, "sqlglot.expressions.Expression.find_all": {"tf": 1}, "sqlglot.expressions.Expression.walk": {"tf": 1}, "sqlglot.expressions.Expression.flatten": {"tf": 1}, "sqlglot.expressions.Expression.transform": {"tf": 1}, "sqlglot.expressions.Unionable.union": {"tf": 1}, "sqlglot.expressions.Unionable.intersect": {"tf": 1}, "sqlglot.expressions.Unionable.except_": {"tf": 1}, "sqlglot.expressions.Delete.delete": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1.4142135623730951}, "sqlglot.expressions.Delete.returning": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1.4142135623730951}, "sqlglot.expressions.Join.using": {"tf": 1.4142135623730951}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 1}, "sqlglot.expressions.Subqueryable.limit": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Union.limit": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.from_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.group_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.order_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.sort_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.cluster_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.limit": {"tf": 1}, "sqlglot.expressions.Select.offset": {"tf": 1}, "sqlglot.expressions.Select.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.lateral": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.join": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.where": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.having": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.window": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.qualify": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.distinct": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.ctas": {"tf": 1}, "sqlglot.expressions.Select.lock": {"tf": 1.4142135623730951}, "sqlglot.expressions.union": {"tf": 1}, "sqlglot.expressions.intersect": {"tf": 1}, "sqlglot.expressions.except_": {"tf": 1}, "sqlglot.expressions.expand": {"tf": 1}, "sqlglot.generator.Generator.__init__": {"tf": 1}, "sqlglot.generator.Generator.sql": {"tf": 1}, "sqlglot.generator.Generator.properties": {"tf": 1}, "sqlglot.generator.Generator.expressions": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1}, "sqlglot.lineage.LineageHTML.__init__": {"tf": 1}, "sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 1}, "sqlglot.optimizer.scope.Scope.walk": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1}, "sqlglot.optimizer.simplify.simplify_connectors": {"tf": 1}, "sqlglot.optimizer.simplify.remove_compliments": {"tf": 1}, "sqlglot.optimizer.simplify.uniq_sort": {"tf": 1}, "sqlglot.optimizer.simplify.absorb_and_eliminate": {"tf": 1}, "sqlglot.optimizer.simplify.simplify_literals": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema.find": {"tf": 1}}, "df": 59}}, "y": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.dialect.no_trycast_sql": {"tf": 1}, "sqlglot.generator.Generator.trycast_sql": {"tf": 1}}, "df": 2}}}}}, "i": {"docs": {}, "df": 0, "m": {"docs": {"sqlglot.dialects.dialect.trim_sql": {"tf": 1}, "sqlglot.generator.Generator.trim_sql": {"tf": 1}}, "df": 2}, "e": {"docs": {"sqlglot.generator.Generator.__init__": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema.find": {"tf": 1}, "sqlglot.time.format_time": {"tf": 1}, "sqlglot.trie.in_trie": {"tf": 1}}, "df": 4}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dialects.sqlite.SQLite.Generator.transaction_sql": {"tf": 1}, "sqlglot.generator.Generator.transaction_sql": {"tf": 1}}, "df": 2}}}}}}, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.transforms.preprocess": {"tf": 1}}, "df": 1}}}}}}}}}, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.Column.set_table_name": {"tf": 1}, "sqlglot.executor.execute": {"tf": 1.4142135623730951}, "sqlglot.executor.context.Context.__init__": {"tf": 1.4142135623730951}, "sqlglot.executor.context.Context.table_iter": {"tf": 1.4142135623730951}, "sqlglot.executor.table.TableIter.__init__": {"tf": 1}, "sqlglot.executor.table.RangeReader.__init__": {"tf": 1}, "sqlglot.executor.table.ensure_tables": {"tf": 1}, "sqlglot.expressions.Delete.delete": {"tf": 1}, "sqlglot.expressions.Select.ctas": {"tf": 1}, "sqlglot.expressions.update": {"tf": 1.4142135623730951}, "sqlglot.expressions.delete": {"tf": 1}, "sqlglot.expressions.to_table": {"tf": 1.4142135623730951}, "sqlglot.expressions.alias_": {"tf": 1}, "sqlglot.expressions.column": {"tf": 1}, "sqlglot.expressions.table_": {"tf": 1.4142135623730951}, "sqlglot.expressions.rename_table": {"tf": 1.4142135623730951}, "sqlglot.expressions.table_name": {"tf": 1}, "sqlglot.generator.Generator.table_sql": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1.4142135623730951}, "sqlglot.schema.Schema.add_table": {"tf": 1.4142135623730951}, "sqlglot.schema.Schema.column_names": {"tf": 1.4142135623730951}, "sqlglot.schema.Schema.get_column_type": {"tf": 1.4142135623730951}, "sqlglot.schema.AbstractMappingSchema.table_parts": {"tf": 1.4142135623730951}, "sqlglot.schema.AbstractMappingSchema.find": {"tf": 1.4142135623730951}, "sqlglot.schema.MappingSchema.add_table": {"tf": 1.4142135623730951}, "sqlglot.schema.MappingSchema.column_names": {"tf": 1.4142135623730951}, "sqlglot.schema.MappingSchema.get_column_type": {"tf": 1.4142135623730951}}, "df": 27, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.SparkSession.table": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameReader.table": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.insertInto": {"tf": 1}}, "df": 3}}}}, "s": {"docs": {"sqlglot.executor.execute": {"tf": 1}, "sqlglot.executor.context.Context.__init__": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.__init__": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.context": {"tf": 1}, "sqlglot.executor.table.ensure_tables": {"tf": 1}, "sqlglot.lineage.lineage": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_ctes": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_derived_tables": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 10, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.no_tablesample_sql": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator.tablesample_sql": {"tf": 1}, "sqlglot.generator.Generator.__init__": {"tf": 1}, "sqlglot.generator.Generator.tablesample_sql": {"tf": 1}, "sqlglot.parser.Parser.__init__": {"tf": 1}}, "df": 5}}}}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.executor.context.Context.table_iter": {"tf": 1}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.generator.Generator.tablealias_sql": {"tf": 1}}, "df": 1}}}}}}}}, "r": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.diff.Update.__init__": {"tf": 1}, "sqlglot.diff.Keep.__init__": {"tf": 1}, "sqlglot.diff.diff": {"tf": 1}, "sqlglot.diff.ChangeDistiller.diff": {"tf": 1}}, "df": 4}}}}, "g": {"docs": {"sqlglot.generator.Generator.tag_sql": {"tf": 1}}, "df": 1}, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.helper.find_new_name": {"tf": 1}}, "df": 1}}}}, "u": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.SparkSession.createDataFrame": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.dropna": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.drop": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.fill": {"tf": 1}, "sqlglot.diff.diff": {"tf": 1}, "sqlglot.diff.ChangeDistiller.diff": {"tf": 1}, "sqlglot.executor.context.Context.table_iter": {"tf": 1}, "sqlglot.executor.context.Context.set_row": {"tf": 1}, "sqlglot.expressions.Expression.iter_expressions": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1}, "sqlglot.generator.Generator.tuple_sql": {"tf": 1}, "sqlglot.helper.subclasses": {"tf": 1.4142135623730951}, "sqlglot.trie.in_trie": {"tf": 1}}, "df": 14}}}}, "h": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.dataframe.sql.DataFrame.dropna": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.drop": {"tf": 1}}, "df": 2}}}}, "i": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.executor.env.str_position": {"tf": 1}, "sqlglot.executor.env.substring": {"tf": 1}, "sqlglot.executor.env.cast": {"tf": 1}, "sqlglot.executor.env.ordered": {"tf": 1}, "sqlglot.executor.env.interval": {"tf": 1}}, "df": 5}}}, "o": {"docs": {"sqlglot.dataframe.sql.DataFrame.replace": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.replace": {"tf": 1}, "sqlglot.executor.env.cast": {"tf": 1}, "sqlglot.expressions.cast": {"tf": 1}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}, "sqlglot.optimizer.annotate_types.TypeAnnotator.__init__": {"tf": 1}, "sqlglot.transforms.preprocess": {"tf": 1}}, "df": 7, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dialects.dialect.Dialect.tokenize": {"tf": 1}, "sqlglot.generator.Generator.token_sql": {"tf": 1}, "sqlglot.parser.Parser.parse": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 1}, "sqlglot.parser.Parser.raise_error": {"tf": 1.4142135623730951}, "sqlglot.tokens.Token.__init__": {"tf": 1}, "sqlglot.tokens.Token.number": {"tf": 1}, "sqlglot.tokens.Token.string": {"tf": 1}, "sqlglot.tokens.Token.identifier": {"tf": 1}, "sqlglot.tokens.Token.var": {"tf": 1}, "sqlglot.tokens.Tokenizer.tokenize": {"tf": 1}}, "df": 11, "s": {"docs": {"sqlglot.dialects.dialect.Dialect.tokenize": {"tf": 1}, "sqlglot.generator.Generator.token_sql": {"tf": 1}, "sqlglot.parser.Parser.parse": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser.parse_into": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser.raise_error": {"tf": 1}, "sqlglot.tokens.Token.__init__": {"tf": 1}, "sqlglot.tokens.Token.number": {"tf": 1}, "sqlglot.tokens.Token.string": {"tf": 1}, "sqlglot.tokens.Token.identifier": {"tf": 1}, "sqlglot.tokens.Token.var": {"tf": 1}, "sqlglot.tokens.Tokenizer.tokenize": {"tf": 1}}, "df": 11}, "t": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.generator.Generator.token_sql": {"tf": 1}, "sqlglot.tokens.Token.__init__": {"tf": 1}}, "df": 2}}}}}}}, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.generator.Generator.tochar_sql": {"tf": 1}}, "df": 1}}}}}, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.generator.Generator.__init__": {"tf": 1.4142135623730951}}, "df": 1, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot.dialects.dialect.date_trunc_to_time": {"tf": 1}, "sqlglot.dialects.dialect.timestamptrunc_sql": {"tf": 1}}, "df": 2}}}}}}}}, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.timestrtotime_sql": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.generator.Generator.__init__": {"tf": 1}, "sqlglot.helper.should_identify": {"tf": 1}, "sqlglot.tokens.Token.__init__": {"tf": 1}}, "df": 3, "i": {"docs": {}, "df": 0, "o": {"docs": {"sqlglot.helper.open_file": {"tf": 1}}, "df": 1}}}}}}, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.parse": {"tf": 1}, "sqlglot.parse_one": {"tf": 1.4142135623730951}, "sqlglot.transpile": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.SparkSession.createDataFrame": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.__init__": {"tf": 2}, "sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.dropDuplicates": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.dropna": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.replace": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrameNaFunctions.drop": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrameNaFunctions.fill": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.replace": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrameWriter.__init__": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrameWriter.insertInto": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.saveAsTable": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.format_time_lambda": {"tf": 1}, "sqlglot.dialects.dialect.parse_date_delta": {"tf": 1}, "sqlglot.diff.diff": {"tf": 1}, "sqlglot.diff.ChangeDistiller.diff": {"tf": 1}, "sqlglot.errors.ParseError.__init__": {"tf": 1}, "sqlglot.errors.ParseError.new": {"tf": 2.6457513110645907}, "sqlglot.executor.execute": {"tf": 1.7320508075688772}, "sqlglot.executor.context.Context.__init__": {"tf": 1}, "sqlglot.executor.context.Context.add_columns": {"tf": 1}, "sqlglot.executor.context.Context.filter": {"tf": 1}, "sqlglot.executor.context.Context.sort": {"tf": 1}, "sqlglot.executor.context.Context.set_row": {"tf": 1}, "sqlglot.executor.context.Context.set_index": {"tf": 1}, "sqlglot.executor.context.Context.set_range": {"tf": 1}, "sqlglot.executor.env.str_position": {"tf": 1}, "sqlglot.executor.env.substring": {"tf": 1.4142135623730951}, "sqlglot.executor.python.PythonExecutor.__init__": {"tf": 1.4142135623730951}, "sqlglot.executor.table.Table.__init__": {"tf": 1.4142135623730951}, "sqlglot.executor.table.Table.add_columns": {"tf": 1}, "sqlglot.executor.table.RowReader.__init__": {"tf": 1}, "sqlglot.expressions.Expression.walk": {"tf": 1}, "sqlglot.expressions.Expression.dfs": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.bfs": {"tf": 1}, "sqlglot.expressions.Expression.sql": {"tf": 1}, "sqlglot.expressions.Expression.error_messages": {"tf": 1}, "sqlglot.expressions.Condition.and_": {"tf": 1}, "sqlglot.expressions.Condition.or_": {"tf": 1}, "sqlglot.expressions.Unionable.union": {"tf": 1}, "sqlglot.expressions.Unionable.intersect": {"tf": 1}, "sqlglot.expressions.Unionable.except_": {"tf": 1}, "sqlglot.expressions.Delete.delete": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Delete.returning": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Join.using": {"tf": 1}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 1}, "sqlglot.expressions.Subqueryable.limit": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Union.limit": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.expressions.Select.limit": {"tf": 1}, "sqlglot.expressions.Select.offset": {"tf": 1}, "sqlglot.expressions.Select.select": {"tf": 1}, "sqlglot.expressions.Select.lateral": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 2.23606797749979}, "sqlglot.expressions.Select.where": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1}, "sqlglot.expressions.Select.window": {"tf": 1}, "sqlglot.expressions.Select.qualify": {"tf": 1}, "sqlglot.expressions.Select.ctas": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.build": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1.7320508075688772}, "sqlglot.expressions.union": {"tf": 1}, "sqlglot.expressions.intersect": {"tf": 1}, "sqlglot.expressions.except_": {"tf": 1}, "sqlglot.expressions.select": {"tf": 1}, "sqlglot.expressions.from_": {"tf": 1}, "sqlglot.expressions.update": {"tf": 1.7320508075688772}, "sqlglot.expressions.delete": {"tf": 1.7320508075688772}, "sqlglot.expressions.condition": {"tf": 1}, "sqlglot.expressions.and_": {"tf": 1}, "sqlglot.expressions.or_": {"tf": 1}, "sqlglot.expressions.not_": {"tf": 1}, "sqlglot.expressions.to_identifier": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1.4142135623730951}, "sqlglot.expressions.subquery": {"tf": 1.4142135623730951}, "sqlglot.expressions.column": {"tf": 2}, "sqlglot.expressions.table_": {"tf": 2}, "sqlglot.expressions.values": {"tf": 1.4142135623730951}, "sqlglot.expressions.func": {"tf": 1}, "sqlglot.generator.Generator.__init__": {"tf": 3.1622776601683795}, "sqlglot.generator.Generator.generate": {"tf": 1}, "sqlglot.generator.Generator.unsupported": {"tf": 1}, "sqlglot.generator.Generator.indent": {"tf": 1}, "sqlglot.generator.Generator.sql": {"tf": 1}, "sqlglot.generator.Generator.expressions": {"tf": 1}, "sqlglot.lineage.lineage": {"tf": 1.7320508075688772}, "sqlglot.lineage.LineageHTML.__init__": {"tf": 1}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1.7320508075688772}, "sqlglot.optimizer.annotate_types.TypeAnnotator.__init__": {"tf": 1.7320508075688772}, "sqlglot.optimizer.isolate_table_selects.isolate_table_selects": {"tf": 1}, "sqlglot.optimizer.normalize.distributive_law": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 2}, "sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 1}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.Scope.__init__": {"tf": 2}, "sqlglot.optimizer.scope.Scope.branch": {"tf": 1}, "sqlglot.optimizer.simplify.uniq_sort": {"tf": 1}, "sqlglot.parser.Parser.__init__": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser.parse": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 1}, "sqlglot.parser.Parser.check_errors": {"tf": 1}, "sqlglot.parser.Parser.raise_error": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser.expression": {"tf": 1}, "sqlglot.parser.Parser.validate_expression": {"tf": 1.4142135623730951}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Step.add_dependency": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.Join.from_joins": {"tf": 1}, "sqlglot.planner.SetOperation.__init__": {"tf": 1.4142135623730951}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}, "sqlglot.schema.Schema.add_table": {"tf": 1.4142135623730951}, "sqlglot.schema.AbstractMappingSchema.__init__": {"tf": 1.4142135623730951}, "sqlglot.schema.AbstractMappingSchema.find": {"tf": 1}, "sqlglot.schema.MappingSchema.__init__": {"tf": 1.7320508075688772}, "sqlglot.schema.MappingSchema.add_table": {"tf": 1.4142135623730951}, "sqlglot.schema.ensure_schema": {"tf": 1}, "sqlglot.schema.flatten_schema": {"tf": 1}, "sqlglot.time.format_time": {"tf": 1}, "sqlglot.tokens.Tokenizer.reset": {"tf": 1}}, "df": 132, "t": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.parse": {"tf": 1}, "sqlglot.parse_one": {"tf": 1.4142135623730951}, "sqlglot.transpile": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.dropna": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.replace": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.hint": {"tf": 1}, "sqlglot.dataframe.sql.Column.__init__": {"tf": 1}, "sqlglot.dataframe.sql.Column.ensure_col": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.drop": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.fill": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.replace": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialect.get_or_raise": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.format_time": {"tf": 1}, "sqlglot.dialects.dialect.format_time_lambda": {"tf": 1}, "sqlglot.executor.execute": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.sql": {"tf": 1}, "sqlglot.expressions.Delete.delete": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Delete.returning": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 1}, "sqlglot.expressions.Select.select": {"tf": 1}, "sqlglot.expressions.DataType.build": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1.4142135623730951}, "sqlglot.expressions.select": {"tf": 1}, "sqlglot.expressions.update": {"tf": 1.7320508075688772}, "sqlglot.expressions.delete": {"tf": 1.7320508075688772}, "sqlglot.expressions.to_table": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1}, "sqlglot.expressions.column": {"tf": 1.7320508075688772}, "sqlglot.expressions.values": {"tf": 1}, "sqlglot.expressions.var": {"tf": 1}, "sqlglot.expressions.func": {"tf": 1}, "sqlglot.generator.Generator.sql": {"tf": 1}, "sqlglot.generator.Generator.func": {"tf": 1}, "sqlglot.generator.Generator.format_args": {"tf": 1}, "sqlglot.lineage.lineage": {"tf": 1.4142135623730951}, "sqlglot.lineage.LineageHTML.__init__": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1.4142135623730951}, "sqlglot.schema.Schema.add_table": {"tf": 1}, "sqlglot.schema.MappingSchema.__init__": {"tf": 1}, "sqlglot.schema.MappingSchema.add_table": {"tf": 1}, "sqlglot.schema.ensure_schema": {"tf": 1}, "sqlglot.schema.ensure_column_mapping": {"tf": 1}}, "df": 46}}}}}}, "t": {"docs": {"sqlglot.expressions.not_": {"tf": 1}, "sqlglot.generator.Generator.not_sql": {"tf": 1}}, "df": 2, "n": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.generator.Generator.notnullcolumnconstraint_sql": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}}, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.generator.Generator.__init__": {"tf": 1.4142135623730951}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 2}}}}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.lineage.Node.__init__": {"tf": 1}, "sqlglot.lineage.Node.walk": {"tf": 1}, "sqlglot.lineage.lineage": {"tf": 1}, "sqlglot.lineage.LineageHTML.__init__": {"tf": 1.4142135623730951}, "sqlglot.optimizer.canonicalize.add_text_to_concat": {"tf": 1}, "sqlglot.optimizer.canonicalize.coerce_type": {"tf": 1}, "sqlglot.serde.dump": {"tf": 1.4142135623730951}, "sqlglot.serde.load": {"tf": 1}}, "df": 8}}}, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.DataFrame.alias": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.hint": {"tf": 1}, "sqlglot.dataframe.sql.Column.invoke_anonymous_function": {"tf": 1}, "sqlglot.dataframe.sql.Column.set_table_name": {"tf": 1}, "sqlglot.dataframe.sql.Column.alias": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.saveAsTable": {"tf": 1}, "sqlglot.dialects.dialect.rename_func": {"tf": 1}, "sqlglot.dialects.dialect.var_map_sql": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator.normalize_func": {"tf": 1}, "sqlglot.expressions.to_identifier": {"tf": 1}, "sqlglot.expressions.var": {"tf": 1}, "sqlglot.expressions.rename_table": {"tf": 1.4142135623730951}, "sqlglot.expressions.func": {"tf": 1}, "sqlglot.generator.Generator.normalize_func": {"tf": 1}, "sqlglot.generator.Generator.func": {"tf": 1}, "sqlglot.helper.subclasses": {"tf": 1}, "sqlglot.helper.camel_to_snake_case": {"tf": 1}, "sqlglot.helper.open_file": {"tf": 1}, "sqlglot.lineage.Node.__init__": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.get_table": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.get_source_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.source_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.rename_source": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.add_source": {"tf": 1}, "sqlglot.optimizer.scope.Scope.remove_source": {"tf": 1}}, "df": 26}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.generator.Generator.national_sql": {"tf": 1}}, "df": 1}}}}}}}, "e": {"docs": {}, "df": 0, "w": {"docs": {"sqlglot.dataframe.sql.DataFrame.withColumnRenamed": {"tf": 1}, "sqlglot.expressions.rename_table": {"tf": 1}, "sqlglot.optimizer.scope.Scope.replace": {"tf": 1}, "sqlglot.optimizer.scope.Scope.rename_source": {"tf": 1}}, "df": 4}, "g": {"docs": {"sqlglot.generator.Generator.neg_sql": {"tf": 1}}, "df": 1}, "q": {"docs": {"sqlglot.generator.Generator.neq_sql": {"tf": 1}}, "df": 1}}, "u": {"docs": {}, "df": 0, "m": {"docs": {"sqlglot.dataframe.sql.DataFrame.limit": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1}}, "df": 2, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dataframe.sql.DataFrame.repartition": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.coalesce": {"tf": 1}}, "df": 2}}}}}}}}}}, "b": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.Literal.number": {"tf": 1}, "sqlglot.tokens.Token.number": {"tf": 1}}, "df": 2}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.executor.env.filter_nulls": {"tf": 1}, "sqlglot.generator.Generator.__init__": {"tf": 1}, "sqlglot.parser.Parser.__init__": {"tf": 1}}, "df": 3, "s": {"docs": {"sqlglot.executor.env.ordered": {"tf": 1}}, "df": 1, "a": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {"sqlglot.generator.Generator.nullsafeeq_sql": {"tf": 1}}, "df": 1}}, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {"sqlglot.generator.Generator.nullsafeneq_sql": {"tf": 1}}, "df": 1}}}}}}}}}}}, "o": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.dataframe.sql.DataFrame.__init__": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.__init__": {"tf": 1}, "sqlglot.generator.Generator.connector_sql": {"tf": 1}, "sqlglot.generator.Generator.binary": {"tf": 1}, "sqlglot.generator.Generator.op_expressions": {"tf": 1}, "sqlglot.generator.Generator.set_operation": {"tf": 1}, "sqlglot.planner.SetOperation.__init__": {"tf": 1}}, "df": 7, "t": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.parse": {"tf": 1}, "sqlglot.parse_one": {"tf": 1}, "sqlglot.transpile": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.parse": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.parse_into": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.generate": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.transpile": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.parser": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.generator": {"tf": 1}, "sqlglot.expressions.Expression.sql": {"tf": 1}, "sqlglot.expressions.Condition.and_": {"tf": 1}, "sqlglot.expressions.Condition.or_": {"tf": 1}, "sqlglot.expressions.Unionable.union": {"tf": 1}, "sqlglot.expressions.Unionable.intersect": {"tf": 1}, "sqlglot.expressions.Unionable.except_": {"tf": 1}, "sqlglot.expressions.Delete.delete": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Delete.returning": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Join.using": {"tf": 1}, "sqlglot.expressions.Subqueryable.limit": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1}, "sqlglot.expressions.Union.limit": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.expressions.Select.limit": {"tf": 1}, "sqlglot.expressions.Select.offset": {"tf": 1}, "sqlglot.expressions.Select.select": {"tf": 1}, "sqlglot.expressions.Select.lateral": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1}, "sqlglot.expressions.Select.where": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1}, "sqlglot.expressions.Select.window": {"tf": 1}, "sqlglot.expressions.Select.qualify": {"tf": 1}, "sqlglot.expressions.Select.ctas": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1}, "sqlglot.expressions.union": {"tf": 1}, "sqlglot.expressions.intersect": {"tf": 1}, "sqlglot.expressions.except_": {"tf": 1}, "sqlglot.expressions.select": {"tf": 1}, "sqlglot.expressions.from_": {"tf": 1}, "sqlglot.expressions.update": {"tf": 1}, "sqlglot.expressions.delete": {"tf": 1}, "sqlglot.expressions.condition": {"tf": 1}, "sqlglot.expressions.and_": {"tf": 1}, "sqlglot.expressions.or_": {"tf": 1}, "sqlglot.expressions.not_": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1}, "sqlglot.expressions.subquery": {"tf": 1}, "sqlglot.expressions.cast": {"tf": 1}, "sqlglot.lineage.Node.to_html": {"tf": 1}, "sqlglot.lineage.LineageHTML.__init__": {"tf": 1}}, "df": 56}, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.parse": {"tf": 1}, "sqlglot.transpile": {"tf": 1}, "sqlglot.dataframe.sql.SparkSession.createDataFrame": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.__init__": {"tf": 2}, "sqlglot.dataframe.sql.DataFrame.dropDuplicates": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.dropna": {"tf": 1}, "sqlglot.dataframe.sql.Column.invoke_anonymous_function": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.invoke_expression_over_column": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.drop": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.__init__": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrameWriter.mode": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.insertInto": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.saveAsTable": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialect.format_time": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.parse": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.parse_into": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.generate": {"tf": 1}, "sqlglot.dialects.dialect.parse_date_delta": {"tf": 1}, "sqlglot.diff.diff": {"tf": 1}, "sqlglot.diff.ChangeDistiller.diff": {"tf": 1}, "sqlglot.errors.ParseError.__init__": {"tf": 1}, "sqlglot.errors.ParseError.new": {"tf": 2.6457513110645907}, "sqlglot.executor.execute": {"tf": 1}, "sqlglot.executor.context.Context.__init__": {"tf": 1}, "sqlglot.executor.table.ensure_tables": {"tf": 1}, "sqlglot.expressions.Expression.find": {"tf": 1}, "sqlglot.expressions.Expression.find_ancestor": {"tf": 1}, "sqlglot.expressions.Expression.error_messages": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1}, "sqlglot.expressions.to_table": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1}, "sqlglot.expressions.column": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1}, "sqlglot.generator.Generator.generate": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.indent": {"tf": 1}, "sqlglot.generator.Generator.sql": {"tf": 1}, "sqlglot.generator.Generator.format_time": {"tf": 1}, "sqlglot.generator.Generator.expressions": {"tf": 1}, "sqlglot.helper.seq_get": {"tf": 1}, "sqlglot.helper.apply_index_offset": {"tf": 1.4142135623730951}, "sqlglot.helper.split_num_words": {"tf": 1}, "sqlglot.lineage.lineage": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1.4142135623730951}, "sqlglot.optimizer.qualify_columns.Resolver.get_table": {"tf": 1}, "sqlglot.parser.binary_range_parser": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser.__init__": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser.parse": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser.parse_into": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser.raise_error": {"tf": 1}, "sqlglot.parser.Parser.expression": {"tf": 1}, "sqlglot.parser.Parser.validate_expression": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.Join.from_joins": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema.find": {"tf": 1.4142135623730951}, "sqlglot.schema.MappingSchema.__init__": {"tf": 1.4142135623730951}, "sqlglot.schema.flatten_schema": {"tf": 1}, "sqlglot.time.format_time": {"tf": 1.4142135623730951}}, "df": 59}}}}, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.DataFrame.sql": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 2}}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dataframe.sql.DataFrame.__init__": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.GroupedData.__init__": {"tf": 1}}, "df": 2, "s": {"docs": {"sqlglot.dataframe.sql.DataFrame.__init__": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.__init__": {"tf": 1}}, "df": 2}}}}}}}}}, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe.sql.DataFrame.__init__": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.optimizer.scope.Scope.__init__": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dataframe.sql.DataFrame.join": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.union": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.unionAll": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.unionByName": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.intersect": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.intersectAll": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.exceptAll": {"tf": 1}, "sqlglot.dataframe.sql.Column.binary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.inverse_binary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.like": {"tf": 1}, "sqlglot.dataframe.sql.Column.ilike": {"tf": 1}}, "df": 11}}}}, "n": {"docs": {"sqlglot.dataframe.sql.DataFrame.join": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema.find": {"tf": 1}}, "df": 3, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.generator.Generator.__init__": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.get_source_columns": {"tf": 1}, "sqlglot.parser.Parser.__init__": {"tf": 1}, "sqlglot.schema.Schema.column_names": {"tf": 1}, "sqlglot.schema.MappingSchema.column_names": {"tf": 1}}, "df": 5}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.DataFrameWriter.insertInto": {"tf": 1}}, "df": 1}}}}}, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.generator.Generator.overlaps_sql": {"tf": 1}}, "df": 1}}}}}}}, "f": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.oracle.Oracle.Generator.offset_sql": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator.offset_sql": {"tf": 1}, "sqlglot.generator.Generator.__init__": {"tf": 1}, "sqlglot.generator.Generator.offset_sql": {"tf": 1}, "sqlglot.helper.apply_index_offset": {"tf": 1}, "sqlglot.parser.Parser.__init__": {"tf": 1}}, "df": 6}}}}}, "b": {"docs": {}, "df": 0, "j": {"docs": {"sqlglot.executor.env.reverse_key.__init__": {"tf": 1}, "sqlglot.expressions.Expression.load": {"tf": 1}, "sqlglot.helper.object_to_dict": {"tf": 1}, "sqlglot.serde.load": {"tf": 1}}, "df": 4}}, "r": {"docs": {"sqlglot.expressions.maybe_parse": {"tf": 1}, "sqlglot.expressions.or_": {"tf": 1}, "sqlglot.generator.Generator.or_sql": {"tf": 1}}, "df": 3, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.generator.Generator.order_sql": {"tf": 1}}, "df": 1, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.generator.Generator.__init__": {"tf": 1}, "sqlglot.parser.Parser.__init__": {"tf": 1}}, "df": 2}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.generator.Generator.ordered_sql": {"tf": 1}}, "df": 1}}}}}}, "l": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.rename_table": {"tf": 1}, "sqlglot.optimizer.scope.Scope.replace": {"tf": 1}, "sqlglot.optimizer.scope.Scope.rename_source": {"tf": 1}}, "df": 3}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.parse": {"tf": 1}, "sqlglot.transpile": {"tf": 1}, "sqlglot.dataframe.sql.SparkSession.createDataFrame": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sql": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.join": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.dropDuplicates": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.dropna": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.replace": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.GroupedData.__init__": {"tf": 1}, "sqlglot.dataframe.sql.Column.ensure_cols": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrameNaFunctions.drop": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.fill": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.replace": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Window.partitionBy": {"tf": 1}, "sqlglot.dataframe.sql.Window.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.partitionBy": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.sql": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.parse": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.parse_into": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.transpile": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.tokenize": {"tf": 1}, "sqlglot.diff.diff": {"tf": 1.4142135623730951}, "sqlglot.diff.ChangeDistiller.diff": {"tf": 1.4142135623730951}, "sqlglot.errors.ParseError.__init__": {"tf": 1}, "sqlglot.errors.merge_errors": {"tf": 1}, "sqlglot.expressions.Expression.error_messages": {"tf": 1}, "sqlglot.generator.Generator.locate_properties": {"tf": 1}, "sqlglot.helper.subclasses": {"tf": 1}, "sqlglot.helper.apply_index_offset": {"tf": 1.4142135623730951}, "sqlglot.helper.tsort": {"tf": 1.4142135623730951}, "sqlglot.helper.split_num_words": {"tf": 1}, "sqlglot.lineage.Node.__init__": {"tf": 1}, "sqlglot.optimizer.scope.Scope.__init__": {"tf": 1}, "sqlglot.parser.Parser.parse": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser.parse_into": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser.expression": {"tf": 1}, "sqlglot.parser.Parser.validate_expression": {"tf": 1}, "sqlglot.schema.Schema.add_table": {"tf": 1}, "sqlglot.schema.Schema.column_names": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema.table_parts": {"tf": 1}, "sqlglot.schema.MappingSchema.add_table": {"tf": 1}, "sqlglot.schema.MappingSchema.column_names": {"tf": 1}, "sqlglot.schema.ensure_column_mapping": {"tf": 1}, "sqlglot.schema.flatten_schema": {"tf": 1.7320508075688772}, "sqlglot.serde.dump": {"tf": 1.7320508075688772}, "sqlglot.serde.load": {"tf": 1.7320508075688772}, "sqlglot.tokens.Token.__init__": {"tf": 1}, "sqlglot.tokens.Tokenizer.tokenize": {"tf": 1}, "sqlglot.transforms.preprocess": {"tf": 1}}, "df": 54}}, "n": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.errors.ParseError.new": {"tf": 1}, "sqlglot.tokens.Token.__init__": {"tf": 1}}, "df": 2, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.lineage.Node.__init__": {"tf": 1}, "sqlglot.lineage.Node.walk": {"tf": 1}, "sqlglot.lineage.Node.to_html": {"tf": 1}, "sqlglot.lineage.lineage": {"tf": 1}, "sqlglot.lineage.LineageHTML.__init__": {"tf": 1}}, "df": 5, "h": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.lineage.Node.to_html": {"tf": 1}}, "df": 1}}}}}}}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.expressions.Literal.number": {"tf": 1}, "sqlglot.expressions.Literal.string": {"tf": 1}, "sqlglot.expressions.to_interval": {"tf": 1}, "sqlglot.generator.Generator.literal_sql": {"tf": 1}}, "df": 4}}}}}, "k": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.generator.Generator.like_sql": {"tf": 1}}, "df": 1, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.generator.Generator.likeproperty_sql": {"tf": 1}}, "df": 1}}}}}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.generator.Generator.likeany_sql": {"tf": 1}}, "df": 1}}}}}, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.generator.Generator.limit_sql": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.transpile": {"tf": 1}, "sqlglot.generator.Generator.__init__": {"tf": 1}, "sqlglot.generator.Generator.indent": {"tf": 1}, "sqlglot.parser.Parser.__init__": {"tf": 1}, "sqlglot.planner.Step.to_s": {"tf": 1}}, "df": 5}}}, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.dataframe.sql.Column.substr": {"tf": 1}, "sqlglot.executor.env.substring": {"tf": 1}}, "df": 2}}}}, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.sqlite.SQLite.Generator.least_sql": {"tf": 1}}, "df": 1}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.generator.Generator.__init__": {"tf": 1}}, "df": 1}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_ctes": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_derived_tables": {"tf": 1}}, "df": 3}}}, "f": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.union": {"tf": 1}, "sqlglot.expressions.intersect": {"tf": 1}, "sqlglot.expressions.except_": {"tf": 1}, "sqlglot.planner.SetOperation.__init__": {"tf": 1}}, "df": 4}}}, "t": {"docs": {"sqlglot.dataframe.sql.SparkSession.createDataFrame": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.__init__": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.replace": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.repartition": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.__init__": {"tf": 1}, "sqlglot.dataframe.sql.Column.ensure_col": {"tf": 1}, "sqlglot.dataframe.sql.Column.ensure_cols": {"tf": 1}, "sqlglot.dataframe.sql.Column.invoke_anonymous_function": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.invoke_expression_over_column": {"tf": 1}, "sqlglot.dataframe.sql.Column.binary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.inverse_binary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.isin": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.between": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.over": {"tf": 1}, "sqlglot.dataframe.sql.Window.partitionBy": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Window.orderBy": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.WindowSpec.partitionBy": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.WindowSpec.orderBy": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.__init__": {"tf": 1}, "sqlglot.generator.Generator.lt_sql": {"tf": 1}, "sqlglot.helper.open_file": {"tf": 1}, "sqlglot.lineage.Node.__init__": {"tf": 1}, "sqlglot.lineage.lineage": {"tf": 1.7320508075688772}, "sqlglot.optimizer.optimizer.optimize": {"tf": 4.358898943540674}, "sqlglot.optimizer.scope.Scope.__init__": {"tf": 1}}, "df": 26, "e": {"docs": {"sqlglot.generator.Generator.lte_sql": {"tf": 1}}, "df": 1}}, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe.sql.DataFrame.__init__": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.__init__": {"tf": 1}, "sqlglot.generator.Generator.indent": {"tf": 1}}, "df": 3}}, "m": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.generator.Generator.lambda_sql": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.generator.Generator.lateral_sql": {"tf": 1}, "sqlglot.optimizer.scope.Scope.__init__": {"tf": 1}}, "df": 2, "s": {"docs": {"sqlglot.lineage.lineage": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 2}}}}}}}, "o": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 1, "b": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.dataframe.sql.Column.between": {"tf": 1}}, "df": 1}}}}}}}}, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.generator.Generator.locate_properties": {"tf": 1}}, "df": 1}}}}}, "k": {"docs": {"sqlglot.generator.Generator.lock_sql": {"tf": 1}}, "df": 1, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.generator.Generator.lockingproperty_sql": {"tf": 1}}, "df": 1}}}}}}}}}}}}}, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.generator.Generator.loaddata_sql": {"tf": 1}}, "df": 1}}}}}}}}, "e": {"docs": {"sqlglot.dialects.dialect.format_time_lambda": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.parse_date_delta": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.generate_date_delta_with_unit_sql": {"tf": 1}, "sqlglot.expressions.Expression.find": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.find_all": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.find_ancestor": {"tf": 1.4142135623730951}, "sqlglot.helper.apply_index_offset": {"tf": 1.4142135623730951}, "sqlglot.helper.while_changing": {"tf": 1.4142135623730951}}, "df": 8, "x": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.dialects.dialect.format_time_lambda": {"tf": 1}, "sqlglot.dialects.dialect.parse_date_delta": {"tf": 1}, "sqlglot.parser.Parser.expression": {"tf": 1}}, "df": 3, "r": {"docs": {"sqlglot.parser.binary_range_parser": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.parse": {"tf": 1}, "sqlglot.parse_one": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.__init__": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Column.__init__": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.ensure_col": {"tf": 1}, "sqlglot.dataframe.sql.Column.ensure_cols": {"tf": 1}, "sqlglot.dataframe.sql.Column.invoke_expression_over_column": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.__init__": {"tf": 1.4142135623730951}, "sqlglot.dialects.bigquery.BigQuery.Generator.array_sql": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.in_unnest_op": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.except_op": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.intersect_op": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator.cte_sql": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.format_time": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.Dialect.parse": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.parse_into": {"tf": 2}, "sqlglot.dialects.dialect.Dialect.generate": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.rename_func": {"tf": 1}, "sqlglot.dialects.dialect.approx_count_distinct_sql": {"tf": 1}, "sqlglot.dialects.dialect.if_sql": {"tf": 1}, "sqlglot.dialects.dialect.arrow_json_extract_sql": {"tf": 1}, "sqlglot.dialects.dialect.arrow_json_extract_scalar_sql": {"tf": 1}, "sqlglot.dialects.dialect.inline_array_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_ilike_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_paren_current_date_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_recursive_cte_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_safe_divide_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_tablesample_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_pivot_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_trycast_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_properties_sql": {"tf": 1}, "sqlglot.dialects.dialect.str_position_sql": {"tf": 1}, "sqlglot.dialects.dialect.struct_extract_sql": {"tf": 1}, "sqlglot.dialects.dialect.var_map_sql": {"tf": 1}, "sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1}, "sqlglot.dialects.dialect.timestamptrunc_sql": {"tf": 1}, "sqlglot.dialects.dialect.locate_to_strposition": {"tf": 1}, "sqlglot.dialects.dialect.strposition_to_locate_sql": {"tf": 1}, "sqlglot.dialects.dialect.timestrtotime_sql": {"tf": 1}, "sqlglot.dialects.dialect.datestrtodate_sql": {"tf": 1}, "sqlglot.dialects.dialect.min_or_least": {"tf": 1}, "sqlglot.dialects.dialect.max_or_greatest": {"tf": 1}, "sqlglot.dialects.dialect.count_if_to_sum": {"tf": 1}, "sqlglot.dialects.dialect.trim_sql": {"tf": 1}, "sqlglot.dialects.dialect.str_to_time_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Generator.tablesample_sql": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator.arrayagg_sql": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator.show_sql": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator.offset_sql": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator.column_sql": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator.xmltable_sql": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator.transaction_sql": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.renametable_sql": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.except_op": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.intersect_op": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.settag_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.describe_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.generatedasidentitycolumnconstraint_sql": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator.cast_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.cast_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.datediff_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.groupconcat_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.least_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.transaction_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.partitionedbyproperty_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.update_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.mod_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.rangen_sql": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator.offset_sql": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator.systemtime_sql": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator.returnsproperty_sql": {"tf": 1}, "sqlglot.diff.Insert.__init__": {"tf": 1.4142135623730951}, "sqlglot.diff.Remove.__init__": {"tf": 1.4142135623730951}, "sqlglot.diff.Move.__init__": {"tf": 1.4142135623730951}, "sqlglot.diff.Update.__init__": {"tf": 1.4142135623730951}, "sqlglot.diff.Keep.__init__": {"tf": 1.4142135623730951}, "sqlglot.diff.diff": {"tf": 2}, "sqlglot.diff.ChangeDistiller.diff": {"tf": 2}, "sqlglot.errors.ParseError.new": {"tf": 1}, "sqlglot.executor.execute": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.generate": {"tf": 1}, "sqlglot.expressions.Expression.iter_expressions": {"tf": 1}, "sqlglot.expressions.Expression.find": {"tf": 1}, "sqlglot.expressions.Expression.find_all": {"tf": 1}, "sqlglot.expressions.Expression.find_ancestor": {"tf": 1}, "sqlglot.expressions.Expression.root": {"tf": 1}, "sqlglot.expressions.Expression.replace": {"tf": 1}, "sqlglot.expressions.Unionable.union": {"tf": 1}, "sqlglot.expressions.Unionable.intersect": {"tf": 1}, "sqlglot.expressions.Unionable.except_": {"tf": 1}, "sqlglot.expressions.Delete.delete": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Delete.returning": {"tf": 1.4142135623730951}, "sqlglot.expressions.Subqueryable.limit": {"tf": 1}, "sqlglot.expressions.Union.limit": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 1}, "sqlglot.expressions.Select.limit": {"tf": 1}, "sqlglot.expressions.Select.offset": {"tf": 1}, "sqlglot.expressions.Select.select": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1}, "sqlglot.expressions.Dot.build": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 2.23606797749979}, "sqlglot.expressions.select": {"tf": 1}, "sqlglot.expressions.update": {"tf": 1.4142135623730951}, "sqlglot.expressions.delete": {"tf": 1.7320508075688772}, "sqlglot.expressions.condition": {"tf": 1}, "sqlglot.expressions.not_": {"tf": 1}, "sqlglot.expressions.paren": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1.4142135623730951}, "sqlglot.expressions.subquery": {"tf": 1}, "sqlglot.expressions.cast": {"tf": 1.4142135623730951}, "sqlglot.expressions.var": {"tf": 1}, "sqlglot.expressions.convert": {"tf": 1}, "sqlglot.expressions.replace_children": {"tf": 1}, "sqlglot.expressions.column_table_names": {"tf": 1}, "sqlglot.expressions.replace_tables": {"tf": 1}, "sqlglot.expressions.replace_placeholders": {"tf": 1}, "sqlglot.expressions.expand": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.generate": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.maybe_comment": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.wrap": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.uncache_sql": {"tf": 1}, "sqlglot.generator.Generator.cache_sql": {"tf": 1}, "sqlglot.generator.Generator.characterset_sql": {"tf": 1}, "sqlglot.generator.Generator.column_sql": {"tf": 1}, "sqlglot.generator.Generator.columnposition_sql": {"tf": 1}, "sqlglot.generator.Generator.columndef_sql": {"tf": 1}, "sqlglot.generator.Generator.columnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.compresscolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.generatedasidentitycolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.notnullcolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.primarykeycolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.create_sql": {"tf": 1}, "sqlglot.generator.Generator.describe_sql": {"tf": 1}, "sqlglot.generator.Generator.prepend_ctes": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.with_sql": {"tf": 1}, "sqlglot.generator.Generator.cte_sql": {"tf": 1}, "sqlglot.generator.Generator.tablealias_sql": {"tf": 1}, "sqlglot.generator.Generator.bitstring_sql": {"tf": 1}, "sqlglot.generator.Generator.hexstring_sql": {"tf": 1}, "sqlglot.generator.Generator.datatype_sql": {"tf": 1}, "sqlglot.generator.Generator.directory_sql": {"tf": 1}, "sqlglot.generator.Generator.delete_sql": {"tf": 1}, "sqlglot.generator.Generator.drop_sql": {"tf": 1}, "sqlglot.generator.Generator.except_sql": {"tf": 1}, "sqlglot.generator.Generator.except_op": {"tf": 1}, "sqlglot.generator.Generator.fetch_sql": {"tf": 1}, "sqlglot.generator.Generator.filter_sql": {"tf": 1}, "sqlglot.generator.Generator.hint_sql": {"tf": 1}, "sqlglot.generator.Generator.index_sql": {"tf": 1}, "sqlglot.generator.Generator.identifier_sql": {"tf": 1}, "sqlglot.generator.Generator.national_sql": {"tf": 1}, "sqlglot.generator.Generator.partition_sql": {"tf": 1}, "sqlglot.generator.Generator.properties_sql": {"tf": 1}, "sqlglot.generator.Generator.property_sql": {"tf": 1}, "sqlglot.generator.Generator.likeproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.fallbackproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.journalproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.freespaceproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.afterjournalproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.checksumproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.mergeblockratioproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.datablocksizeproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.blockcompressionproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.isolatedloadingproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.lockingproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.withdataproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.insert_sql": {"tf": 1}, "sqlglot.generator.Generator.intersect_sql": {"tf": 1}, "sqlglot.generator.Generator.intersect_op": {"tf": 1}, "sqlglot.generator.Generator.introducer_sql": {"tf": 1}, "sqlglot.generator.Generator.pseudotype_sql": {"tf": 1}, "sqlglot.generator.Generator.returning_sql": {"tf": 1}, "sqlglot.generator.Generator.rowformatdelimitedproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.table_sql": {"tf": 1}, "sqlglot.generator.Generator.tablesample_sql": {"tf": 1}, "sqlglot.generator.Generator.pivot_sql": {"tf": 1}, "sqlglot.generator.Generator.tuple_sql": {"tf": 1}, "sqlglot.generator.Generator.update_sql": {"tf": 1}, "sqlglot.generator.Generator.values_sql": {"tf": 1}, "sqlglot.generator.Generator.var_sql": {"tf": 1}, "sqlglot.generator.Generator.into_sql": {"tf": 1}, "sqlglot.generator.Generator.from_sql": {"tf": 1}, "sqlglot.generator.Generator.group_sql": {"tf": 1}, "sqlglot.generator.Generator.having_sql": {"tf": 1}, "sqlglot.generator.Generator.join_sql": {"tf": 1}, "sqlglot.generator.Generator.lambda_sql": {"tf": 1}, "sqlglot.generator.Generator.lateral_sql": {"tf": 1}, "sqlglot.generator.Generator.limit_sql": {"tf": 1}, "sqlglot.generator.Generator.offset_sql": {"tf": 1}, "sqlglot.generator.Generator.setitem_sql": {"tf": 1}, "sqlglot.generator.Generator.set_sql": {"tf": 1}, "sqlglot.generator.Generator.pragma_sql": {"tf": 1}, "sqlglot.generator.Generator.lock_sql": {"tf": 1}, "sqlglot.generator.Generator.literal_sql": {"tf": 1}, "sqlglot.generator.Generator.loaddata_sql": {"tf": 1}, "sqlglot.generator.Generator.boolean_sql": {"tf": 1}, "sqlglot.generator.Generator.order_sql": {"tf": 1}, "sqlglot.generator.Generator.cluster_sql": {"tf": 1}, "sqlglot.generator.Generator.distribute_sql": {"tf": 1}, "sqlglot.generator.Generator.sort_sql": {"tf": 1}, "sqlglot.generator.Generator.ordered_sql": {"tf": 1}, "sqlglot.generator.Generator.matchrecognize_sql": {"tf": 1}, "sqlglot.generator.Generator.query_modifiers": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.select_sql": {"tf": 1}, "sqlglot.generator.Generator.schema_sql": {"tf": 1}, "sqlglot.generator.Generator.star_sql": {"tf": 1}, "sqlglot.generator.Generator.structkwarg_sql": {"tf": 1}, "sqlglot.generator.Generator.parameter_sql": {"tf": 1}, "sqlglot.generator.Generator.sessionparameter_sql": {"tf": 1}, "sqlglot.generator.Generator.placeholder_sql": {"tf": 1}, "sqlglot.generator.Generator.subquery_sql": {"tf": 1}, "sqlglot.generator.Generator.qualify_sql": {"tf": 1}, "sqlglot.generator.Generator.union_sql": {"tf": 1}, "sqlglot.generator.Generator.union_op": {"tf": 1}, "sqlglot.generator.Generator.unnest_sql": {"tf": 1}, "sqlglot.generator.Generator.where_sql": {"tf": 1}, "sqlglot.generator.Generator.window_sql": {"tf": 1}, "sqlglot.generator.Generator.partition_by_sql": {"tf": 1}, "sqlglot.generator.Generator.window_spec_sql": {"tf": 1}, "sqlglot.generator.Generator.withingroup_sql": {"tf": 1}, "sqlglot.generator.Generator.between_sql": {"tf": 1}, "sqlglot.generator.Generator.bracket_sql": {"tf": 1}, "sqlglot.generator.Generator.all_sql": {"tf": 1}, "sqlglot.generator.Generator.any_sql": {"tf": 1}, "sqlglot.generator.Generator.exists_sql": {"tf": 1}, "sqlglot.generator.Generator.case_sql": {"tf": 1}, "sqlglot.generator.Generator.constraint_sql": {"tf": 1}, "sqlglot.generator.Generator.extract_sql": {"tf": 1}, "sqlglot.generator.Generator.trim_sql": {"tf": 1}, "sqlglot.generator.Generator.concat_sql": {"tf": 1}, "sqlglot.generator.Generator.check_sql": {"tf": 1}, "sqlglot.generator.Generator.foreignkey_sql": {"tf": 1}, "sqlglot.generator.Generator.primarykey_sql": {"tf": 1}, "sqlglot.generator.Generator.unique_sql": {"tf": 1}, "sqlglot.generator.Generator.if_sql": {"tf": 1}, "sqlglot.generator.Generator.matchagainst_sql": {"tf": 1}, "sqlglot.generator.Generator.jsonkeyvalue_sql": {"tf": 1}, "sqlglot.generator.Generator.jsonobject_sql": {"tf": 1}, "sqlglot.generator.Generator.in_sql": {"tf": 1}, "sqlglot.generator.Generator.interval_sql": {"tf": 1}, "sqlglot.generator.Generator.return_sql": {"tf": 1}, "sqlglot.generator.Generator.reference_sql": {"tf": 1}, "sqlglot.generator.Generator.anonymous_sql": {"tf": 1}, "sqlglot.generator.Generator.paren_sql": {"tf": 1}, "sqlglot.generator.Generator.neg_sql": {"tf": 1}, "sqlglot.generator.Generator.not_sql": {"tf": 1}, "sqlglot.generator.Generator.alias_sql": {"tf": 1}, "sqlglot.generator.Generator.aliases_sql": {"tf": 1}, "sqlglot.generator.Generator.attimezone_sql": {"tf": 1}, "sqlglot.generator.Generator.add_sql": {"tf": 1}, "sqlglot.generator.Generator.and_sql": {"tf": 1}, "sqlglot.generator.Generator.connector_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwiseand_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwiseleftshift_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwisenot_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwiseor_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwiserightshift_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwisexor_sql": {"tf": 1}, "sqlglot.generator.Generator.cast_sql": {"tf": 1}, "sqlglot.generator.Generator.currentdate_sql": {"tf": 1}, "sqlglot.generator.Generator.collate_sql": {"tf": 1}, "sqlglot.generator.Generator.command_sql": {"tf": 1}, "sqlglot.generator.Generator.comment_sql": {"tf": 1}, "sqlglot.generator.Generator.transaction_sql": {"tf": 1}, "sqlglot.generator.Generator.commit_sql": {"tf": 1}, "sqlglot.generator.Generator.rollback_sql": {"tf": 1}, "sqlglot.generator.Generator.altercolumn_sql": {"tf": 1}, "sqlglot.generator.Generator.renametable_sql": {"tf": 1}, "sqlglot.generator.Generator.altertable_sql": {"tf": 1}, "sqlglot.generator.Generator.droppartition_sql": {"tf": 1}, "sqlglot.generator.Generator.addconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.distinct_sql": {"tf": 1}, "sqlglot.generator.Generator.ignorenulls_sql": {"tf": 1}, "sqlglot.generator.Generator.respectnulls_sql": {"tf": 1}, "sqlglot.generator.Generator.intdiv_sql": {"tf": 1}, "sqlglot.generator.Generator.dpipe_sql": {"tf": 1}, "sqlglot.generator.Generator.div_sql": {"tf": 1}, "sqlglot.generator.Generator.overlaps_sql": {"tf": 1}, "sqlglot.generator.Generator.distance_sql": {"tf": 1}, "sqlglot.generator.Generator.dot_sql": {"tf": 1}, "sqlglot.generator.Generator.eq_sql": {"tf": 1}, "sqlglot.generator.Generator.escape_sql": {"tf": 1}, "sqlglot.generator.Generator.glob_sql": {"tf": 1}, "sqlglot.generator.Generator.gt_sql": {"tf": 1}, "sqlglot.generator.Generator.gte_sql": {"tf": 1}, "sqlglot.generator.Generator.ilike_sql": {"tf": 1}, "sqlglot.generator.Generator.ilikeany_sql": {"tf": 1}, "sqlglot.generator.Generator.is_sql": {"tf": 1}, "sqlglot.generator.Generator.like_sql": {"tf": 1}, "sqlglot.generator.Generator.likeany_sql": {"tf": 1}, "sqlglot.generator.Generator.similarto_sql": {"tf": 1}, "sqlglot.generator.Generator.lt_sql": {"tf": 1}, "sqlglot.generator.Generator.lte_sql": {"tf": 1}, "sqlglot.generator.Generator.mod_sql": {"tf": 1}, "sqlglot.generator.Generator.mul_sql": {"tf": 1}, "sqlglot.generator.Generator.neq_sql": {"tf": 1}, "sqlglot.generator.Generator.nullsafeeq_sql": {"tf": 1}, "sqlglot.generator.Generator.nullsafeneq_sql": {"tf": 1}, "sqlglot.generator.Generator.or_sql": {"tf": 1}, "sqlglot.generator.Generator.slice_sql": {"tf": 1}, "sqlglot.generator.Generator.sub_sql": {"tf": 1}, "sqlglot.generator.Generator.trycast_sql": {"tf": 1}, "sqlglot.generator.Generator.use_sql": {"tf": 1}, "sqlglot.generator.Generator.binary": {"tf": 1}, "sqlglot.generator.Generator.function_fallback_sql": {"tf": 1}, "sqlglot.generator.Generator.func": {"tf": 1}, "sqlglot.generator.Generator.format_args": {"tf": 1}, "sqlglot.generator.Generator.format_time": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.expressions": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.op_expressions": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.naked_property": {"tf": 1}, "sqlglot.generator.Generator.set_operation": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.tag_sql": {"tf": 1}, "sqlglot.generator.Generator.userdefinedfunction_sql": {"tf": 1}, "sqlglot.generator.Generator.joinhint_sql": {"tf": 1}, "sqlglot.generator.Generator.kwarg_sql": {"tf": 1}, "sqlglot.generator.Generator.when_sql": {"tf": 1}, "sqlglot.generator.Generator.merge_sql": {"tf": 1}, "sqlglot.generator.Generator.tochar_sql": {"tf": 1}, "sqlglot.helper.while_changing": {"tf": 1.7320508075688772}, "sqlglot.lineage.Node.__init__": {"tf": 1.7320508075688772}, "sqlglot.lineage.lineage": {"tf": 1}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}, "sqlglot.optimizer.annotate_types.TypeAnnotator.annotate": {"tf": 1}, "sqlglot.optimizer.canonicalize.canonicalize": {"tf": 1.7320508075688772}, "sqlglot.optimizer.canonicalize.add_text_to_concat": {"tf": 1.4142135623730951}, "sqlglot.optimizer.canonicalize.coerce_type": {"tf": 1.4142135623730951}, "sqlglot.optimizer.canonicalize.remove_redundant_casts": {"tf": 1.7320508075688772}, "sqlglot.optimizer.canonicalize.ensure_bool_predicates": {"tf": 1.7320508075688772}, "sqlglot.optimizer.eliminate_ctes.eliminate_ctes": {"tf": 1}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 1}, "sqlglot.optimizer.eliminate_subqueries.eliminate_subqueries": {"tf": 1}, "sqlglot.optimizer.expand_laterals.expand_laterals": {"tf": 1.7320508075688772}, "sqlglot.optimizer.expand_multi_table_selects.expand_multi_table_selects": {"tf": 1}, "sqlglot.optimizer.isolate_table_selects.isolate_table_selects": {"tf": 1}, "sqlglot.optimizer.lower_identities.lower_identities": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_ctes": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_derived_tables": {"tf": 1}, "sqlglot.optimizer.normalize.normalize": {"tf": 1.4142135623730951}, "sqlglot.optimizer.normalize.normalized": {"tf": 1}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1}, "sqlglot.optimizer.normalize.distributive_law": {"tf": 1}, "sqlglot.optimizer.optimize_joins.optimize_joins": {"tf": 1}, "sqlglot.optimizer.optimize_joins.reorder_joins": {"tf": 1}, "sqlglot.optimizer.optimize_joins.normalize": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1.4142135623730951}, "sqlglot.optimizer.pushdown_predicates.pushdown_predicates": {"tf": 1}, "sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 1}, "sqlglot.optimizer.qualify_columns.qualify_columns": {"tf": 1}, "sqlglot.optimizer.qualify_columns.validate_qualify_columns": {"tf": 1}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"tf": 1}, "sqlglot.optimizer.scope.Scope.__init__": {"tf": 1}, "sqlglot.optimizer.scope.Scope.branch": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}, "sqlglot.optimizer.scope.build_scope": {"tf": 1}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1}, "sqlglot.optimizer.simplify.simplify": {"tf": 1}, "sqlglot.optimizer.simplify.rewrite_between": {"tf": 1.7320508075688772}, "sqlglot.optimizer.simplify.simplify_not": {"tf": 1}, "sqlglot.optimizer.simplify.flatten": {"tf": 1}, "sqlglot.optimizer.simplify.simplify_connectors": {"tf": 1}, "sqlglot.optimizer.simplify.remove_compliments": {"tf": 1}, "sqlglot.optimizer.simplify.uniq_sort": {"tf": 1}, "sqlglot.optimizer.simplify.absorb_and_eliminate": {"tf": 1}, "sqlglot.optimizer.simplify.simplify_literals": {"tf": 1}, "sqlglot.optimizer.simplify.simplify_parens": {"tf": 1}, "sqlglot.optimizer.simplify.remove_where_true": {"tf": 1}, "sqlglot.optimizer.simplify.always_true": {"tf": 1}, "sqlglot.optimizer.simplify.is_false": {"tf": 1}, "sqlglot.optimizer.simplify.is_null": {"tf": 1}, "sqlglot.optimizer.simplify.eval_boolean": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 1}, "sqlglot.parser.parse_var_map": {"tf": 1}, "sqlglot.parser.binary_range_parser": {"tf": 1.7320508075688772}, "sqlglot.parser.Parser.parse": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 2}, "sqlglot.parser.Parser.expression": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser.validate_expression": {"tf": 1.4142135623730951}, "sqlglot.planner.Plan.__init__": {"tf": 1.4142135623730951}, "sqlglot.planner.Step.from_expression": {"tf": 1.4142135623730951}, "sqlglot.planner.Scan.from_expression": {"tf": 1.4142135623730951}, "sqlglot.planner.SetOperation.__init__": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1.4142135623730951}, "sqlglot.serde.dump": {"tf": 1}, "sqlglot.serde.load": {"tf": 1}, "sqlglot.transforms.unalias_group": {"tf": 1.7320508075688772}, "sqlglot.transforms.eliminate_distinct_on": {"tf": 1.7320508075688772}, "sqlglot.transforms.eliminate_qualify": {"tf": 1.7320508075688772}, "sqlglot.transforms.remove_precision_parameterized_types": {"tf": 1.7320508075688772}, "sqlglot.transforms.preprocess": {"tf": 2}}, "df": 401, "s": {"docs": {"sqlglot.parse": {"tf": 1}, "sqlglot.parse_one": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.__init__": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.__init__": {"tf": 1}, "sqlglot.dataframe.sql.Column.ensure_col": {"tf": 1}, "sqlglot.dataframe.sql.Column.ensure_cols": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.__init__": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.array_sql": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.in_unnest_op": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.except_op": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.intersect_op": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator.cte_sql": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.format_time": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialect.parse": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.parse_into": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.Dialect.generate": {"tf": 1}, "sqlglot.dialects.dialect.rename_func": {"tf": 1}, "sqlglot.dialects.dialect.approx_count_distinct_sql": {"tf": 1}, "sqlglot.dialects.dialect.if_sql": {"tf": 1}, "sqlglot.dialects.dialect.arrow_json_extract_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.arrow_json_extract_scalar_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.inline_array_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_ilike_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_paren_current_date_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_recursive_cte_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_safe_divide_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_tablesample_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_pivot_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_trycast_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_properties_sql": {"tf": 1}, "sqlglot.dialects.dialect.str_position_sql": {"tf": 1}, "sqlglot.dialects.dialect.struct_extract_sql": {"tf": 1}, "sqlglot.dialects.dialect.var_map_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1}, "sqlglot.dialects.dialect.date_trunc_to_time": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.timestamptrunc_sql": {"tf": 1}, "sqlglot.dialects.dialect.locate_to_strposition": {"tf": 1}, "sqlglot.dialects.dialect.strposition_to_locate_sql": {"tf": 1}, "sqlglot.dialects.dialect.timestrtotime_sql": {"tf": 1}, "sqlglot.dialects.dialect.datestrtodate_sql": {"tf": 1}, "sqlglot.dialects.dialect.min_or_least": {"tf": 1}, "sqlglot.dialects.dialect.max_or_greatest": {"tf": 1}, "sqlglot.dialects.dialect.count_if_to_sum": {"tf": 1}, "sqlglot.dialects.dialect.trim_sql": {"tf": 1}, "sqlglot.dialects.dialect.str_to_time_sql": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator.tablesample_sql": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator.arrayagg_sql": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator.with_properties": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator.show_sql": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator.offset_sql": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator.column_sql": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator.xmltable_sql": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.with_properties": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.renametable_sql": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.settag_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.describe_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.generatedasidentitycolumnconstraint_sql": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator.cast_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.cast_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.datediff_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.least_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.transaction_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.partitionedbyproperty_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.update_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.mod_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.rangen_sql": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator.offset_sql": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator.systemtime_sql": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator.returnsproperty_sql": {"tf": 1}, "sqlglot.diff.Insert.__init__": {"tf": 1}, "sqlglot.diff.Remove.__init__": {"tf": 1}, "sqlglot.diff.Move.__init__": {"tf": 1}, "sqlglot.diff.Update.__init__": {"tf": 1.4142135623730951}, "sqlglot.diff.Keep.__init__": {"tf": 1.4142135623730951}, "sqlglot.diff.diff": {"tf": 2}, "sqlglot.diff.ChangeDistiller.diff": {"tf": 2}, "sqlglot.executor.execute": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.generate_tuple": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.table": {"tf": 1}, "sqlglot.expressions.Expression.iter_expressions": {"tf": 1}, "sqlglot.expressions.Expression.root": {"tf": 1}, "sqlglot.expressions.Condition.and_": {"tf": 1}, "sqlglot.expressions.Condition.or_": {"tf": 1}, "sqlglot.expressions.Column.to_dot": {"tf": 1}, "sqlglot.expressions.Delete.delete": {"tf": 1.4142135623730951}, "sqlglot.expressions.Delete.where": {"tf": 1.7320508075688772}, "sqlglot.expressions.Delete.returning": {"tf": 1.4142135623730951}, "sqlglot.expressions.Literal.number": {"tf": 1}, "sqlglot.expressions.Literal.string": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Join.using": {"tf": 1}, "sqlglot.expressions.Properties.from_dict": {"tf": 1}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 1}, "sqlglot.expressions.Subqueryable.limit": {"tf": 1}, "sqlglot.expressions.Union.limit": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.from_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.group_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.order_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.sort_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.cluster_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.limit": {"tf": 1}, "sqlglot.expressions.Select.offset": {"tf": 1}, "sqlglot.expressions.Select.select": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.lateral": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.join": {"tf": 1}, "sqlglot.expressions.Select.where": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.having": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.window": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.qualify": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.distinct": {"tf": 1}, "sqlglot.expressions.Select.ctas": {"tf": 1}, "sqlglot.expressions.Select.lock": {"tf": 1}, "sqlglot.expressions.DataType.build": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.is_type": {"tf": 1}, "sqlglot.expressions.Dot.build": {"tf": 1.7320508075688772}, "sqlglot.expressions.Cast.is_type": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 2}, "sqlglot.expressions.select": {"tf": 1.7320508075688772}, "sqlglot.expressions.from_": {"tf": 1.4142135623730951}, "sqlglot.expressions.update": {"tf": 2}, "sqlglot.expressions.delete": {"tf": 2}, "sqlglot.expressions.condition": {"tf": 1}, "sqlglot.expressions.and_": {"tf": 1.4142135623730951}, "sqlglot.expressions.or_": {"tf": 1.4142135623730951}, "sqlglot.expressions.not_": {"tf": 1}, "sqlglot.expressions.paren": {"tf": 1}, "sqlglot.expressions.to_interval": {"tf": 1.4142135623730951}, "sqlglot.expressions.to_table": {"tf": 1.4142135623730951}, "sqlglot.expressions.to_column": {"tf": 1.4142135623730951}, "sqlglot.expressions.alias_": {"tf": 1.7320508075688772}, "sqlglot.expressions.column": {"tf": 2.23606797749979}, "sqlglot.expressions.cast": {"tf": 2}, "sqlglot.expressions.table_": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1.4142135623730951}, "sqlglot.expressions.var": {"tf": 1.4142135623730951}, "sqlglot.expressions.rename_table": {"tf": 1.7320508075688772}, "sqlglot.expressions.convert": {"tf": 1}, "sqlglot.expressions.expand": {"tf": 1.7320508075688772}, "sqlglot.expressions.func": {"tf": 1}, "sqlglot.generator.Generator.generate": {"tf": 1}, "sqlglot.generator.Generator.maybe_comment": {"tf": 1}, "sqlglot.generator.Generator.wrap": {"tf": 1}, "sqlglot.generator.Generator.sql": {"tf": 1}, "sqlglot.generator.Generator.uncache_sql": {"tf": 1}, "sqlglot.generator.Generator.cache_sql": {"tf": 1}, "sqlglot.generator.Generator.characterset_sql": {"tf": 1}, "sqlglot.generator.Generator.column_sql": {"tf": 1}, "sqlglot.generator.Generator.columnposition_sql": {"tf": 1}, "sqlglot.generator.Generator.columndef_sql": {"tf": 1}, "sqlglot.generator.Generator.columnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.compresscolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.generatedasidentitycolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.notnullcolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.primarykeycolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.create_sql": {"tf": 1}, "sqlglot.generator.Generator.describe_sql": {"tf": 1}, "sqlglot.generator.Generator.prepend_ctes": {"tf": 1}, "sqlglot.generator.Generator.with_sql": {"tf": 1}, "sqlglot.generator.Generator.cte_sql": {"tf": 1}, "sqlglot.generator.Generator.tablealias_sql": {"tf": 1}, "sqlglot.generator.Generator.bitstring_sql": {"tf": 1}, "sqlglot.generator.Generator.hexstring_sql": {"tf": 1}, "sqlglot.generator.Generator.datatype_sql": {"tf": 1}, "sqlglot.generator.Generator.directory_sql": {"tf": 1}, "sqlglot.generator.Generator.delete_sql": {"tf": 1}, "sqlglot.generator.Generator.drop_sql": {"tf": 1}, "sqlglot.generator.Generator.except_sql": {"tf": 1}, "sqlglot.generator.Generator.except_op": {"tf": 1}, "sqlglot.generator.Generator.fetch_sql": {"tf": 1}, "sqlglot.generator.Generator.filter_sql": {"tf": 1}, "sqlglot.generator.Generator.hint_sql": {"tf": 1}, "sqlglot.generator.Generator.index_sql": {"tf": 1}, "sqlglot.generator.Generator.identifier_sql": {"tf": 1}, "sqlglot.generator.Generator.national_sql": {"tf": 1}, "sqlglot.generator.Generator.partition_sql": {"tf": 1}, "sqlglot.generator.Generator.properties_sql": {"tf": 1}, "sqlglot.generator.Generator.root_properties": {"tf": 1}, "sqlglot.generator.Generator.properties": {"tf": 1}, "sqlglot.generator.Generator.with_properties": {"tf": 1}, "sqlglot.generator.Generator.locate_properties": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.property_sql": {"tf": 1}, "sqlglot.generator.Generator.likeproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.fallbackproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.journalproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.freespaceproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.afterjournalproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.checksumproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.mergeblockratioproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.datablocksizeproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.blockcompressionproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.isolatedloadingproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.lockingproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.withdataproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.insert_sql": {"tf": 1}, "sqlglot.generator.Generator.intersect_sql": {"tf": 1}, "sqlglot.generator.Generator.intersect_op": {"tf": 1}, "sqlglot.generator.Generator.introducer_sql": {"tf": 1}, "sqlglot.generator.Generator.pseudotype_sql": {"tf": 1}, "sqlglot.generator.Generator.returning_sql": {"tf": 1}, "sqlglot.generator.Generator.rowformatdelimitedproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.table_sql": {"tf": 1}, "sqlglot.generator.Generator.tablesample_sql": {"tf": 1}, "sqlglot.generator.Generator.pivot_sql": {"tf": 1}, "sqlglot.generator.Generator.tuple_sql": {"tf": 1}, "sqlglot.generator.Generator.update_sql": {"tf": 1}, "sqlglot.generator.Generator.values_sql": {"tf": 1}, "sqlglot.generator.Generator.var_sql": {"tf": 1}, "sqlglot.generator.Generator.into_sql": {"tf": 1}, "sqlglot.generator.Generator.from_sql": {"tf": 1}, "sqlglot.generator.Generator.group_sql": {"tf": 1}, "sqlglot.generator.Generator.having_sql": {"tf": 1}, "sqlglot.generator.Generator.join_sql": {"tf": 1}, "sqlglot.generator.Generator.lambda_sql": {"tf": 1}, "sqlglot.generator.Generator.lateral_sql": {"tf": 1}, "sqlglot.generator.Generator.limit_sql": {"tf": 1}, "sqlglot.generator.Generator.offset_sql": {"tf": 1}, "sqlglot.generator.Generator.setitem_sql": {"tf": 1}, "sqlglot.generator.Generator.set_sql": {"tf": 1}, "sqlglot.generator.Generator.pragma_sql": {"tf": 1}, "sqlglot.generator.Generator.lock_sql": {"tf": 1}, "sqlglot.generator.Generator.literal_sql": {"tf": 1}, "sqlglot.generator.Generator.loaddata_sql": {"tf": 1}, "sqlglot.generator.Generator.boolean_sql": {"tf": 1}, "sqlglot.generator.Generator.order_sql": {"tf": 1}, "sqlglot.generator.Generator.cluster_sql": {"tf": 1}, "sqlglot.generator.Generator.distribute_sql": {"tf": 1}, "sqlglot.generator.Generator.sort_sql": {"tf": 1}, "sqlglot.generator.Generator.ordered_sql": {"tf": 1}, "sqlglot.generator.Generator.matchrecognize_sql": {"tf": 1}, "sqlglot.generator.Generator.query_modifiers": {"tf": 1}, "sqlglot.generator.Generator.select_sql": {"tf": 1}, "sqlglot.generator.Generator.schema_sql": {"tf": 1}, "sqlglot.generator.Generator.star_sql": {"tf": 1}, "sqlglot.generator.Generator.structkwarg_sql": {"tf": 1}, "sqlglot.generator.Generator.parameter_sql": {"tf": 1}, "sqlglot.generator.Generator.sessionparameter_sql": {"tf": 1}, "sqlglot.generator.Generator.placeholder_sql": {"tf": 1}, "sqlglot.generator.Generator.subquery_sql": {"tf": 1}, "sqlglot.generator.Generator.qualify_sql": {"tf": 1}, "sqlglot.generator.Generator.union_sql": {"tf": 1}, "sqlglot.generator.Generator.union_op": {"tf": 1}, "sqlglot.generator.Generator.unnest_sql": {"tf": 1}, "sqlglot.generator.Generator.where_sql": {"tf": 1}, "sqlglot.generator.Generator.window_sql": {"tf": 1}, "sqlglot.generator.Generator.partition_by_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.window_spec_sql": {"tf": 1}, "sqlglot.generator.Generator.withingroup_sql": {"tf": 1}, "sqlglot.generator.Generator.between_sql": {"tf": 1}, "sqlglot.generator.Generator.bracket_sql": {"tf": 1}, "sqlglot.generator.Generator.all_sql": {"tf": 1}, "sqlglot.generator.Generator.any_sql": {"tf": 1}, "sqlglot.generator.Generator.exists_sql": {"tf": 1}, "sqlglot.generator.Generator.case_sql": {"tf": 1}, "sqlglot.generator.Generator.constraint_sql": {"tf": 1}, "sqlglot.generator.Generator.extract_sql": {"tf": 1}, "sqlglot.generator.Generator.trim_sql": {"tf": 1}, "sqlglot.generator.Generator.concat_sql": {"tf": 1}, "sqlglot.generator.Generator.check_sql": {"tf": 1}, "sqlglot.generator.Generator.foreignkey_sql": {"tf": 1}, "sqlglot.generator.Generator.primarykey_sql": {"tf": 1}, "sqlglot.generator.Generator.unique_sql": {"tf": 1}, "sqlglot.generator.Generator.if_sql": {"tf": 1}, "sqlglot.generator.Generator.matchagainst_sql": {"tf": 1}, "sqlglot.generator.Generator.jsonkeyvalue_sql": {"tf": 1}, "sqlglot.generator.Generator.jsonobject_sql": {"tf": 1}, "sqlglot.generator.Generator.in_sql": {"tf": 1}, "sqlglot.generator.Generator.in_unnest_op": {"tf": 1}, "sqlglot.generator.Generator.interval_sql": {"tf": 1}, "sqlglot.generator.Generator.return_sql": {"tf": 1}, "sqlglot.generator.Generator.reference_sql": {"tf": 1}, "sqlglot.generator.Generator.anonymous_sql": {"tf": 1}, "sqlglot.generator.Generator.paren_sql": {"tf": 1}, "sqlglot.generator.Generator.neg_sql": {"tf": 1}, "sqlglot.generator.Generator.not_sql": {"tf": 1}, "sqlglot.generator.Generator.alias_sql": {"tf": 1}, "sqlglot.generator.Generator.aliases_sql": {"tf": 1}, "sqlglot.generator.Generator.attimezone_sql": {"tf": 1}, "sqlglot.generator.Generator.add_sql": {"tf": 1}, "sqlglot.generator.Generator.and_sql": {"tf": 1}, "sqlglot.generator.Generator.connector_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwiseand_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwiseleftshift_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwisenot_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwiseor_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwiserightshift_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwisexor_sql": {"tf": 1}, "sqlglot.generator.Generator.cast_sql": {"tf": 1}, "sqlglot.generator.Generator.currentdate_sql": {"tf": 1}, "sqlglot.generator.Generator.collate_sql": {"tf": 1}, "sqlglot.generator.Generator.command_sql": {"tf": 1}, "sqlglot.generator.Generator.comment_sql": {"tf": 1}, "sqlglot.generator.Generator.transaction_sql": {"tf": 1}, "sqlglot.generator.Generator.commit_sql": {"tf": 1}, "sqlglot.generator.Generator.rollback_sql": {"tf": 1}, "sqlglot.generator.Generator.altercolumn_sql": {"tf": 1}, "sqlglot.generator.Generator.renametable_sql": {"tf": 1}, "sqlglot.generator.Generator.altertable_sql": {"tf": 1}, "sqlglot.generator.Generator.droppartition_sql": {"tf": 1}, "sqlglot.generator.Generator.addconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.distinct_sql": {"tf": 1}, "sqlglot.generator.Generator.ignorenulls_sql": {"tf": 1}, "sqlglot.generator.Generator.respectnulls_sql": {"tf": 1}, "sqlglot.generator.Generator.intdiv_sql": {"tf": 1}, "sqlglot.generator.Generator.dpipe_sql": {"tf": 1}, "sqlglot.generator.Generator.div_sql": {"tf": 1}, "sqlglot.generator.Generator.overlaps_sql": {"tf": 1}, "sqlglot.generator.Generator.distance_sql": {"tf": 1}, "sqlglot.generator.Generator.dot_sql": {"tf": 1}, "sqlglot.generator.Generator.eq_sql": {"tf": 1}, "sqlglot.generator.Generator.escape_sql": {"tf": 1}, "sqlglot.generator.Generator.glob_sql": {"tf": 1}, "sqlglot.generator.Generator.gt_sql": {"tf": 1}, "sqlglot.generator.Generator.gte_sql": {"tf": 1}, "sqlglot.generator.Generator.ilike_sql": {"tf": 1}, "sqlglot.generator.Generator.ilikeany_sql": {"tf": 1}, "sqlglot.generator.Generator.is_sql": {"tf": 1}, "sqlglot.generator.Generator.like_sql": {"tf": 1}, "sqlglot.generator.Generator.likeany_sql": {"tf": 1}, "sqlglot.generator.Generator.similarto_sql": {"tf": 1}, "sqlglot.generator.Generator.lt_sql": {"tf": 1}, "sqlglot.generator.Generator.lte_sql": {"tf": 1}, "sqlglot.generator.Generator.mod_sql": {"tf": 1}, "sqlglot.generator.Generator.mul_sql": {"tf": 1}, "sqlglot.generator.Generator.neq_sql": {"tf": 1}, "sqlglot.generator.Generator.nullsafeeq_sql": {"tf": 1}, "sqlglot.generator.Generator.nullsafeneq_sql": {"tf": 1}, "sqlglot.generator.Generator.or_sql": {"tf": 1}, "sqlglot.generator.Generator.slice_sql": {"tf": 1}, "sqlglot.generator.Generator.sub_sql": {"tf": 1}, "sqlglot.generator.Generator.trycast_sql": {"tf": 1}, "sqlglot.generator.Generator.use_sql": {"tf": 1}, "sqlglot.generator.Generator.binary": {"tf": 1}, "sqlglot.generator.Generator.function_fallback_sql": {"tf": 1}, "sqlglot.generator.Generator.func": {"tf": 1}, "sqlglot.generator.Generator.format_args": {"tf": 1}, "sqlglot.generator.Generator.format_time": {"tf": 1}, "sqlglot.generator.Generator.expressions": {"tf": 1}, "sqlglot.generator.Generator.op_expressions": {"tf": 1}, "sqlglot.generator.Generator.naked_property": {"tf": 1}, "sqlglot.generator.Generator.set_operation": {"tf": 1}, "sqlglot.generator.Generator.tag_sql": {"tf": 1}, "sqlglot.generator.Generator.userdefinedfunction_sql": {"tf": 1}, "sqlglot.generator.Generator.joinhint_sql": {"tf": 1}, "sqlglot.generator.Generator.kwarg_sql": {"tf": 1}, "sqlglot.generator.Generator.when_sql": {"tf": 1}, "sqlglot.generator.Generator.merge_sql": {"tf": 1}, "sqlglot.generator.Generator.tochar_sql": {"tf": 1}, "sqlglot.helper.apply_index_offset": {"tf": 1}, "sqlglot.helper.while_changing": {"tf": 1.4142135623730951}, "sqlglot.helper.csv_reader": {"tf": 1}, "sqlglot.lineage.Node.__init__": {"tf": 1.4142135623730951}, "sqlglot.lineage.lineage": {"tf": 1.7320508075688772}, "sqlglot.optimizer.canonicalize.canonicalize": {"tf": 1.4142135623730951}, "sqlglot.optimizer.canonicalize.add_text_to_concat": {"tf": 1.4142135623730951}, "sqlglot.optimizer.canonicalize.coerce_type": {"tf": 1.4142135623730951}, "sqlglot.optimizer.canonicalize.remove_redundant_casts": {"tf": 1.4142135623730951}, "sqlglot.optimizer.canonicalize.ensure_bool_predicates": {"tf": 1.4142135623730951}, "sqlglot.optimizer.expand_laterals.expand_laterals": {"tf": 1.4142135623730951}, "sqlglot.optimizer.normalize.normalize": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.get_table": {"tf": 1}, "sqlglot.optimizer.simplify.rewrite_between": {"tf": 1.4142135623730951}, "sqlglot.optimizer.simplify.is_false": {"tf": 1}, "sqlglot.optimizer.simplify.is_null": {"tf": 1}, "sqlglot.parser.parse_var_map": {"tf": 1}, "sqlglot.parser.binary_range_parser": {"tf": 1.7320508075688772}, "sqlglot.parser.Parser.parse": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 1.7320508075688772}, "sqlglot.parser.Parser.expression": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser.validate_expression": {"tf": 1}, "sqlglot.planner.Plan.__init__": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.Join.from_joins": {"tf": 1}, "sqlglot.planner.SetOperation.__init__": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}, "sqlglot.schema.Schema.add_table": {"tf": 1}, "sqlglot.schema.Schema.column_names": {"tf": 1}, "sqlglot.schema.Schema.get_column_type": {"tf": 1.7320508075688772}, "sqlglot.schema.AbstractMappingSchema.table_parts": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema.find": {"tf": 1}, "sqlglot.schema.MappingSchema.add_table": {"tf": 1}, "sqlglot.schema.MappingSchema.column_names": {"tf": 1}, "sqlglot.schema.MappingSchema.get_column_type": {"tf": 1.7320508075688772}, "sqlglot.serde.dump": {"tf": 1.4142135623730951}, "sqlglot.serde.load": {"tf": 1.4142135623730951}, "sqlglot.transforms.unalias_group": {"tf": 1.4142135623730951}, "sqlglot.transforms.eliminate_distinct_on": {"tf": 1.4142135623730951}, "sqlglot.transforms.eliminate_qualify": {"tf": 1.4142135623730951}, "sqlglot.transforms.remove_precision_parameterized_types": {"tf": 1.4142135623730951}, "sqlglot.transforms.preprocess": {"tf": 2}}, "df": 398}}}}}}}, "s": {"docs": {"sqlglot.dataframe.sql.DataFrame.agg": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.agg": {"tf": 1}}, "df": 2}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.lineage.lineage": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1.4142135623730951}}, "df": 2}}}}, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.dataframe.sql.DataFrame.withColumnRenamed": {"tf": 1}}, "df": 1}}}, "s": {"docs": {"sqlglot.generator.Generator.exists_sql": {"tf": 1}}, "df": 1}}}}, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator.except_op": {"tf": 1}, "sqlglot.generator.Generator.except_sql": {"tf": 1}, "sqlglot.generator.Generator.except_op": {"tf": 1}}, "df": 3}}}, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.helper.subclasses": {"tf": 1}, "sqlglot.optimizer.optimize_joins.other_table_names": {"tf": 1}}, "df": 2}}}}}, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.executor.execute": {"tf": 1}, "sqlglot.executor.context.Context.__init__": {"tf": 1}, "sqlglot.executor.context.Context.table_iter": {"tf": 1.4142135623730951}, "sqlglot.executor.table.ensure_tables": {"tf": 1}}, "df": 4}}}}}}, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.generator.Generator.extract_sql": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.optimizer.unnest_subqueries.decorrelate": {"tf": 1}}, "df": 1}}}}}}}, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.transpile": {"tf": 1}, "sqlglot.parser.Parser.__init__": {"tf": 1.4142135623730951}}, "df": 2, "s": {"docs": {"sqlglot.transpile": {"tf": 1}, "sqlglot.errors.ParseError.__init__": {"tf": 1}, "sqlglot.errors.ParseError.new": {"tf": 1}, "sqlglot.errors.concat_messages": {"tf": 1}, "sqlglot.errors.merge_errors": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser.__init__": {"tf": 1.4142135623730951}}, "df": 6}, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.transpile": {"tf": 1}, "sqlglot.generator.Generator.__init__": {"tf": 1}, "sqlglot.parser.Parser.__init__": {"tf": 1}}, "df": 3}}}}}}}}}, "n": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.dataframe.sql.Window.rowsBetween": {"tf": 1}, "sqlglot.dataframe.sql.Window.rangeBetween": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.rowsBetween": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.rangeBetween": {"tf": 1}, "sqlglot.errors.ParseError.new": {"tf": 1}, "sqlglot.executor.context.Context.set_range": {"tf": 1}, "sqlglot.generator.Generator.__init__": {"tf": 1.4142135623730951}}, "df": 7}, "v": {"docs": {"sqlglot.executor.context.Context.__init__": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.__init__": {"tf": 1}}, "df": 2}}, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.executor.env.filter_nulls": {"tf": 1}}, "df": 1}}}}, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.generator.Generator.__init__": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.escape_sql": {"tf": 1}}, "df": 2}}}}}, "q": {"docs": {"sqlglot.generator.Generator.eq_sql": {"tf": 1}}, "df": 1}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1.7320508075688772}}, "df": 1}}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.generator.Generator.in_sql": {"tf": 1}}, "df": 1, "t": {"docs": {"sqlglot.dataframe.sql.DataFrame.dropna": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.replace": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.limit": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.hint": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.repartition": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.coalesce": {"tf": 1}, "sqlglot.dataframe.sql.Column.substr": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrameNaFunctions.drop": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.fill": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.replace": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Window.rowsBetween": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Window.rangeBetween": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.WindowSpec.rowsBetween": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.WindowSpec.rangeBetween": {"tf": 1.4142135623730951}, "sqlglot.errors.ParseError.new": {"tf": 1.4142135623730951}, "sqlglot.errors.concat_messages": {"tf": 1}, "sqlglot.executor.context.Context.set_index": {"tf": 1}, "sqlglot.executor.context.Context.set_range": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.generate": {"tf": 1}, "sqlglot.generator.Generator.indent": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.text_width": {"tf": 1}, "sqlglot.helper.seq_get": {"tf": 1}, "sqlglot.helper.apply_index_offset": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1}, "sqlglot.helper.count_params": {"tf": 1}, "sqlglot.helper.dict_depth": {"tf": 1}, "sqlglot.optimizer.normalize.normalize": {"tf": 1}, "sqlglot.parser.Parser.__init__": {"tf": 1.7320508075688772}, "sqlglot.planner.Step.to_s": {"tf": 1}, "sqlglot.schema.flatten_schema": {"tf": 1}, "sqlglot.serde.dump": {"tf": 1.4142135623730951}, "sqlglot.serde.load": {"tf": 1.4142135623730951}, "sqlglot.tokens.Token.__init__": {"tf": 1.4142135623730951}, "sqlglot.tokens.Token.number": {"tf": 1}, "sqlglot.trie.in_trie": {"tf": 1}}, "df": 35, "o": {"docs": {"sqlglot.parse_one": {"tf": 1}, "sqlglot.errors.ParseError.new": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1}, "sqlglot.generator.Generator.into_sql": {"tf": 1}}, "df": 4}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator.intersect_op": {"tf": 1}, "sqlglot.generator.Generator.intersect_sql": {"tf": 1}, "sqlglot.generator.Generator.intersect_op": {"tf": 1}}, "df": 3}}}}, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.expressions.to_interval": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.interval_sql": {"tf": 1}, "sqlglot.optimizer.simplify.extract_interval": {"tf": 1}}, "df": 3}}}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.generator.Generator.introducer_sql": {"tf": 1}}, "df": 1}}}}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {"sqlglot.generator.Generator.intdiv_sql": {"tf": 1}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe.sql.DataFrame.__init__": {"tf": 1}}, "df": 1}}, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dataframe.sql.DataFrame.join": {"tf": 1}}, "df": 1}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.diff.diff": {"tf": 1}, "sqlglot.diff.ChangeDistiller.diff": {"tf": 1}, "sqlglot.generator.Generator.insert_sql": {"tf": 1}}, "df": 3}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "x": {"docs": {"sqlglot.executor.context.Context.set_index": {"tf": 1}, "sqlglot.generator.Generator.__init__": {"tf": 1}, "sqlglot.generator.Generator.index_sql": {"tf": 1}, "sqlglot.helper.seq_get": {"tf": 1}, "sqlglot.parser.Parser.__init__": {"tf": 1}}, "df": 5}, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.generator.Generator.__init__": {"tf": 1}, "sqlglot.generator.Generator.expressions": {"tf": 1}}, "df": 2}}}}}, "d": {"docs": {"sqlglot.dataframe.sql.SparkSession.createDataFrame": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.__init__": {"tf": 2}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.replace": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.repartition": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.__init__": {"tf": 1}, "sqlglot.dataframe.sql.Column.ensure_col": {"tf": 1}, "sqlglot.dataframe.sql.Column.ensure_cols": {"tf": 1}, "sqlglot.dataframe.sql.Column.invoke_anonymous_function": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.invoke_expression_over_column": {"tf": 1}, "sqlglot.dataframe.sql.Column.binary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.inverse_binary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.isin": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.between": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.over": {"tf": 1}, "sqlglot.dataframe.sql.Window.partitionBy": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Window.orderBy": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.WindowSpec.partitionBy": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.WindowSpec.orderBy": {"tf": 1.4142135623730951}}, "df": 19, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.transpile": {"tf": 1}}, "df": 1}, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 1}}}}, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.alias_": {"tf": 1.4142135623730951}, "sqlglot.expressions.column": {"tf": 2}, "sqlglot.generator.Generator.__init__": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.identifier_sql": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.get_table": {"tf": 1}, "sqlglot.tokens.Token.identifier": {"tf": 1}}, "df": 6}}}, "y": {"docs": {"sqlglot.generator.Generator.__init__": {"tf": 1}, "sqlglot.helper.should_identify": {"tf": 1}, "sqlglot.optimizer.canonicalize.canonicalize": {"tf": 1}}, "df": 3}}}}}}}, "t": {"docs": {"sqlglot.helper.first": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.Column.isin": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.text_width": {"tf": 1}, "sqlglot.helper.flatten": {"tf": 1.4142135623730951}, "sqlglot.helper.first": {"tf": 1}, "sqlglot.planner.Join.from_joins": {"tf": 1}, "sqlglot.trie.new_trie": {"tf": 1}}, "df": 7}}}, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.executor.context.Context.table_iter": {"tf": 1}, "sqlglot.expressions.Expression.iter_expressions": {"tf": 1}, "sqlglot.expressions.Expression.find_all": {"tf": 1}, "sqlglot.helper.flatten": {"tf": 1}, "sqlglot.lineage.Node.walk": {"tf": 1}}, "df": 5}}}}}}}, "f": {"docs": {"sqlglot.dialects.dialect.if_sql": {"tf": 1}, "sqlglot.generator.Generator.if_sql": {"tf": 1}}, "df": 2}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.no_ilike_sql": {"tf": 1}, "sqlglot.generator.Generator.ilike_sql": {"tf": 1}}, "df": 2, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.generator.Generator.ilikeany_sql": {"tf": 1}}, "df": 1}}}}}}}, "s": {"docs": {"sqlglot.generator.Generator.is_sql": {"tf": 1}}, "df": 1, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 1, "d": {"docs": {"sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_ctes": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_derived_tables": {"tf": 1}}, "df": 3, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.generator.Generator.isolatedloadingproperty_sql": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}}}, "g": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.generator.Generator.ignorenulls_sql": {"tf": 1}}, "df": 1}}}}}}}}}}, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.lineage.LineageHTML.__init__": {"tf": 1}}, "df": 1}}}}}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.dataframe.sql.DataFrame.withColumn": {"tf": 1}, "sqlglot.errors.ParseError.new": {"tf": 1}, "sqlglot.expressions.column": {"tf": 1}, "sqlglot.tokens.Token.__init__": {"tf": 1}}, "df": 4, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.parse_one": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.replace": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.parse_into": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1}, "sqlglot.helper.find_new_name": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 1}}, "df": 6}}}}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.generator.Generator.collate_sql": {"tf": 1}}, "df": 1}}}}, "s": {"docs": {"sqlglot.dataframe.sql.DataFrame.select": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.groupBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.drop": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.repartition": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.__init__": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.mean": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.avg": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.max": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.min": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.sum": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.pivot": {"tf": 1}, "sqlglot.dataframe.sql.Column.isin": {"tf": 1}, "sqlglot.dataframe.sql.Window.partitionBy": {"tf": 1}, "sqlglot.dataframe.sql.Window.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.partitionBy": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.orderBy": {"tf": 1}}, "df": 18}, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dataframe.sql.DataFrame.where": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.filter": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.join": {"tf": 2}, "sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.withColumn": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.drop": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.GroupedData.__init__": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.GroupedData.agg": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.ensure_cols": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.invoke_anonymous_function": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Column.invoke_expression_over_column": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Column.binary_op": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.inverse_binary_op": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.unary_op": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.ensure_literal": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.copy": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.set_table_name": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.alias": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.asc": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.desc": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.asc_nulls_first": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.asc_nulls_last": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.desc_nulls_first": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.desc_nulls_last": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.when": {"tf": 2}, "sqlglot.dataframe.sql.Column.otherwise": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.isNull": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.isNotNull": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.startswith": {"tf": 2}, "sqlglot.dataframe.sql.Column.endswith": {"tf": 2}, "sqlglot.dataframe.sql.Column.rlike": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.substr": {"tf": 2.449489742783178}, "sqlglot.dataframe.sql.Column.between": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.over": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Generator.column_sql": {"tf": 1}, "sqlglot.executor.table.Table.__init__": {"tf": 1}, "sqlglot.executor.table.RowReader.__init__": {"tf": 1}, "sqlglot.expressions.to_column": {"tf": 1.4142135623730951}, "sqlglot.expressions.column": {"tf": 1}, "sqlglot.generator.Generator.__init__": {"tf": 1}, "sqlglot.generator.Generator.column_sql": {"tf": 1}, "sqlglot.lineage.lineage": {"tf": 1.4142135623730951}, "sqlglot.optimizer.qualify_columns.Resolver.get_table": {"tf": 1}, "sqlglot.optimizer.scope.Scope.__init__": {"tf": 1}, "sqlglot.parser.Parser.__init__": {"tf": 1}, "sqlglot.schema.Schema.add_table": {"tf": 1}, "sqlglot.schema.Schema.get_column_type": {"tf": 1.4142135623730951}, "sqlglot.schema.MappingSchema.add_table": {"tf": 1}, "sqlglot.schema.MappingSchema.get_column_type": {"tf": 1.4142135623730951}}, "df": 50, "s": {"docs": {"sqlglot.executor.context.Context.add_columns": {"tf": 1}, "sqlglot.executor.table.Table.__init__": {"tf": 1}, "sqlglot.executor.table.Table.add_columns": {"tf": 1}, "sqlglot.executor.table.RowReader.__init__": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1}, "sqlglot.lineage.lineage": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1.4142135623730951}, "sqlglot.optimizer.unnest_subqueries.decorrelate": {"tf": 1}}, "df": 8}, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.generator.Generator.columnposition_sql": {"tf": 1}}, "df": 1}}}}}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "f": {"docs": {"sqlglot.generator.Generator.columndef_sql": {"tf": 1}}, "df": 1}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.generator.Generator.columnconstraint_sql": {"tf": 1}}, "df": 1}}}}}}}}}}}}}, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.DataFrame.withColumn": {"tf": 1}}, "df": 1}}}}}, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dataframe.sql.DataFrame.__init__": {"tf": 1}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.errors.ParseError.new": {"tf": 1.4142135623730951}, "sqlglot.executor.context.Context.table_iter": {"tf": 1.4142135623730951}, "sqlglot.executor.python.PythonExecutor.scan": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.join": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.nested_loop_join": {"tf": 1.4142135623730951}, "sqlglot.executor.python.PythonExecutor.hash_join": {"tf": 1.4142135623730951}, "sqlglot.executor.python.PythonExecutor.aggregate": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.sort": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.set_operation": {"tf": 1}, "sqlglot.parser.Parser.__init__": {"tf": 1}}, "df": 10}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dataframe.sql.Column.when": {"tf": 1}, "sqlglot.executor.context.Context.filter": {"tf": 1}, "sqlglot.expressions.condition": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown": {"tf": 1}, "sqlglot.optimizer.simplify.boolean_literal": {"tf": 1}}, "df": 5}}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.generator.Generator.constraint_sql": {"tf": 1}}, "df": 1}}}}}}}, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.generator.Generator.concat_sql": {"tf": 1}}, "df": 1}}}, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.generator.Generator.connector_sql": {"tf": 1}}, "df": 1}}}}}}}, "p": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dataframe.sql.Column.set_table_name": {"tf": 1}, "sqlglot.expressions.Expression.transform": {"tf": 1}, "sqlglot.expressions.Delete.delete": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Delete.returning": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Join.using": {"tf": 1}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 1}, "sqlglot.expressions.Subqueryable.limit": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1}, "sqlglot.expressions.Union.limit": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.expressions.Select.limit": {"tf": 1}, "sqlglot.expressions.Select.offset": {"tf": 1}, "sqlglot.expressions.Select.select": {"tf": 1}, "sqlglot.expressions.Select.lateral": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1}, "sqlglot.expressions.Select.where": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1}, "sqlglot.expressions.Select.window": {"tf": 1}, "sqlglot.expressions.Select.qualify": {"tf": 1}, "sqlglot.expressions.Select.distinct": {"tf": 1}, "sqlglot.expressions.Select.ctas": {"tf": 1}, "sqlglot.expressions.Select.lock": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1}, "sqlglot.expressions.expand": {"tf": 1}}, "df": 31}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.optimizer.pushdown_predicates.pushdown": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_cnf": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_dnf": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.nodes_for_predicate": {"tf": 1}}, "df": 4, "i": {"docs": {}, "df": 0, "f": {"docs": {"sqlglot.dialects.dialect.count_if_to_sum": {"tf": 1}}, "df": 1}}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.executor.context.Context.eval": {"tf": 1}}, "df": 1, "s": {"docs": {"sqlglot.executor.context.Context.eval_tuple": {"tf": 1}}, "df": 1}}}, "m": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.generator.Generator.__init__": {"tf": 1}}, "df": 1, "n": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.generator.Generator.command_sql": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.generator.Generator.pad_comment": {"tf": 1}, "sqlglot.generator.Generator.sql": {"tf": 1}, "sqlglot.generator.Generator.comment_sql": {"tf": 1}}, "df": 3, "s": {"docs": {"sqlglot.generator.Generator.__init__": {"tf": 1}, "sqlglot.parser.Parser.expression": {"tf": 1}, "sqlglot.tokens.Token.__init__": {"tf": 1}}, "df": 3}}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.generator.Generator.commit_sql": {"tf": 1}}, "df": 1}}}, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.generator.Generator.compresscolumnconstraint_sql": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}, "sqlglot.optimizer.annotate_types.TypeAnnotator.__init__": {"tf": 1}}, "df": 2}}}}}}, "l": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dataframe.sql.Column.ensure_col": {"tf": 1}, "sqlglot.dataframe.sql.Column.ensure_cols": {"tf": 1}, "sqlglot.dataframe.sql.Column.invoke_anonymous_function": {"tf": 1}, "sqlglot.dataframe.sql.Column.invoke_expression_over_column": {"tf": 1}, "sqlglot.dataframe.sql.Column.ensure_literal": {"tf": 1}, "sqlglot.dataframe.sql.Window.partitionBy": {"tf": 1}, "sqlglot.dataframe.sql.Window.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.Window.rowsBetween": {"tf": 1}, "sqlglot.dataframe.sql.Window.rangeBetween": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.get_or_raise": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.format_time": {"tf": 1}, "sqlglot.errors.ParseError.new": {"tf": 1}, "sqlglot.expressions.Expression.load": {"tf": 1}, "sqlglot.expressions.Literal.number": {"tf": 1}, "sqlglot.expressions.Literal.string": {"tf": 1}, "sqlglot.expressions.Properties.from_dict": {"tf": 1}, "sqlglot.expressions.DataType.build": {"tf": 1}, "sqlglot.expressions.Func.from_arg_list": {"tf": 1}, "sqlglot.expressions.Func.sql_names": {"tf": 1}, "sqlglot.expressions.Func.sql_name": {"tf": 1}, "sqlglot.expressions.Func.default_parser_mappings": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.Join.from_joins": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}, "sqlglot.schema.MappingSchema.from_mapping_schema": {"tf": 1}, "sqlglot.tokens.Token.number": {"tf": 1}, "sqlglot.tokens.Token.string": {"tf": 1}, "sqlglot.tokens.Token.identifier": {"tf": 1}, "sqlglot.tokens.Token.var": {"tf": 1}}, "df": 30}, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dialects.dialect.format_time_lambda": {"tf": 1}, "sqlglot.dialects.dialect.parse_date_delta": {"tf": 1}, "sqlglot.helper.open_file": {"tf": 1}, "sqlglot.parser.Parser.expression": {"tf": 1}}, "df": 4, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.helper.subclasses": {"tf": 1}}, "df": 1}}}}}, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.generator.Generator.cluster_sql": {"tf": 1}}, "df": 1}}}}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.Column.invoke_expression_over_column": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.binary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.inverse_binary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.unary_op": {"tf": 1}, "sqlglot.dialects.dialect.rename_func": {"tf": 1}, "sqlglot.dialects.dialect.format_time_lambda": {"tf": 1}, "sqlglot.dialects.dialect.parse_date_delta": {"tf": 1}, "sqlglot.dialects.dialect.ts_or_ds_to_date_sql": {"tf": 1}, "sqlglot.generator.Generator.no_identify": {"tf": 1}, "sqlglot.helper.while_changing": {"tf": 1}, "sqlglot.helper.count_params": {"tf": 1}, "sqlglot.lineage.lineage": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.parser.binary_range_parser": {"tf": 1}, "sqlglot.transforms.preprocess": {"tf": 1.7320508075688772}, "sqlglot.transforms.delegate": {"tf": 1}}, "df": 16}}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.spark.Spark.Generator.cast_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.cast_sql": {"tf": 1}, "sqlglot.expressions.cast": {"tf": 1}, "sqlglot.generator.Generator.cast_sql": {"tf": 1}, "sqlglot.optimizer.simplify.extract_date": {"tf": 1}}, "df": 5}, "e": {"docs": {"sqlglot.generator.Generator.case_sql": {"tf": 1}}, "df": 1}}, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.expressions.column": {"tf": 1}, "sqlglot.expressions.table_": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"tf": 1}}, "df": 4}}}}}, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.generator.Generator.generate": {"tf": 1}, "sqlglot.generator.Generator.cache_sql": {"tf": 1}, "sqlglot.optimizer.normalize.distributive_law": {"tf": 1}, "sqlglot.optimizer.simplify.uniq_sort": {"tf": 1}}, "df": 4}}}, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 1}}}}}}}}}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.clickhouse.ClickHouse.Generator.cte_sql": {"tf": 1}, "sqlglot.generator.Generator.cte_sql": {"tf": 1}}, "df": 2, "s": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.Join.from_joins": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}}, "df": 5}}}, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.no_paren_current_date_sql": {"tf": 1}, "sqlglot.generator.Generator.currentdate_sql": {"tf": 1}}, "df": 2}}}}}}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1}, "sqlglot.expressions.Select.ctas": {"tf": 1}, "sqlglot.generator.Generator.create_sql": {"tf": 1}}, "df": 3}}}}}, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.generator.Generator.characterset_sql": {"tf": 1}}, "df": 1}}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.optimizer.scope.Scope.branch": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.generator.Generator.check_sql": {"tf": 1}}, "df": 1, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.generator.Generator.checksumproperty_sql": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}, "s": {"docs": {}, "df": 0, "v": {"docs": {"sqlglot.helper.csv_reader": {"tf": 1}}, "df": 1}}}, "w": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.transpile": {"tf": 1}}, "df": 1}}}, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.generator.Generator.properties": {"tf": 1}}, "df": 1}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {"sqlglot.dataframe.sql.Column.over": {"tf": 1}, "sqlglot.dataframe.sql.Window.partitionBy": {"tf": 1}, "sqlglot.dataframe.sql.Window.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.Window.rowsBetween": {"tf": 1}, "sqlglot.dataframe.sql.Window.rangeBetween": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.__init__": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.partitionBy": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.rowsBetween": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.rangeBetween": {"tf": 1}, "sqlglot.generator.Generator.window_sql": {"tf": 1}, "sqlglot.generator.Generator.partition_by_sql": {"tf": 1}}, "df": 12, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot.dataframe.sql.Window.partitionBy": {"tf": 1}, "sqlglot.dataframe.sql.Window.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.Window.rowsBetween": {"tf": 1}, "sqlglot.dataframe.sql.Window.rangeBetween": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.partitionBy": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.rowsBetween": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.rangeBetween": {"tf": 1}, "sqlglot.generator.Generator.window_spec_sql": {"tf": 1}}, "df": 9}}}}}}}}, "t": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.dialects.dialect.no_recursive_cte_sql": {"tf": 1}, "sqlglot.generator.Generator.with_sql": {"tf": 1}}, "df": 2, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.generator.Generator.withdataproperty_sql": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.generator.Generator.withingroup_sql": {"tf": 1}}, "df": 1}}}}}}}}}, "d": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.generator.Generator.__init__": {"tf": 1}}, "df": 1}}}}, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.update": {"tf": 1}, "sqlglot.expressions.delete": {"tf": 1}, "sqlglot.generator.Generator.where_sql": {"tf": 1}}, "df": 3}}, "n": {"docs": {"sqlglot.generator.Generator.when_sql": {"tf": 1}}, "df": 1}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.generator.Generator.__init__": {"tf": 1.4142135623730951}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.helper.split_num_words": {"tf": 1}}, "df": 1}}}}}, "b": {"docs": {"sqlglot.optimizer.simplify.is_complement": {"tf": 1}, "sqlglot.optimizer.simplify.eval_boolean": {"tf": 1}}, "df": 2, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.transpile": {"tf": 1}, "sqlglot.dataframe.sql.SparkSession.createDataFrame": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.where": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.filter": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.unionByName": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.replace": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrameNaFunctions.fill": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.replace": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrameWriter.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.insertInto": {"tf": 1}, "sqlglot.dialects.dialect.format_time_lambda": {"tf": 1}, "sqlglot.expressions.Delete.delete": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1.4142135623730951}, "sqlglot.expressions.Delete.returning": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.lock": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.is_type": {"tf": 1}, "sqlglot.expressions.Cast.is_type": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1.4142135623730951}, "sqlglot.expressions.column": {"tf": 1}, "sqlglot.generator.Generator.indent": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.sql": {"tf": 1}, "sqlglot.generator.Generator.properties": {"tf": 1}, "sqlglot.generator.Generator.order_sql": {"tf": 1}, "sqlglot.generator.Generator.expressions": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.op_expressions": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1}, "sqlglot.helper.is_iterable": {"tf": 1}, "sqlglot.helper.should_identify": {"tf": 1.4142135623730951}, "sqlglot.lineage.LineageHTML.__init__": {"tf": 1}, "sqlglot.optimizer.normalize.normalize": {"tf": 1}, "sqlglot.optimizer.simplify.is_false": {"tf": 1}, "sqlglot.optimizer.simplify.is_null": {"tf": 1}, "sqlglot.parser.Parser.__init__": {"tf": 1.4142135623730951}, "sqlglot.planner.SetOperation.__init__": {"tf": 1}, "sqlglot.schema.Schema.column_names": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema.find": {"tf": 1}, "sqlglot.schema.MappingSchema.column_names": {"tf": 1}, "sqlglot.serde.dump": {"tf": 1.4142135623730951}, "sqlglot.serde.load": {"tf": 1.4142135623730951}}, "df": 42, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.generator.Generator.boolean_sql": {"tf": 1}}, "df": 1}}}}}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.dataframe.sql.DataFrame.__init__": {"tf": 1}}, "df": 1}}}, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.generator.Generator.bracket_sql": {"tf": 1}}, "df": 1}}}}}}, "y": {"docs": {"sqlglot.dataframe.sql.GroupedData.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.__init__": {"tf": 1}}, "df": 2}, "f": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.Expression.find": {"tf": 1}, "sqlglot.expressions.Expression.find_all": {"tf": 1}, "sqlglot.expressions.Expression.walk": {"tf": 1}, "sqlglot.optimizer.scope.Scope.walk": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1}}, "df": 7}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.generator.Generator.bitstring_sql": {"tf": 1}}, "df": 1}}}}}}, "w": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.generator.Generator.bitwiseand_sql": {"tf": 1}}, "df": 1}}}, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.generator.Generator.bitwiseleftshift_sql": {"tf": 1}}, "df": 1}}}}}}}}}, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.generator.Generator.bitwisenot_sql": {"tf": 1}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.generator.Generator.bitwiseor_sql": {"tf": 1}}, "df": 1}}, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.generator.Generator.bitwiserightshift_sql": {"tf": 1}}, "df": 1}}}}}}}}}}, "x": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.generator.Generator.bitwisexor_sql": {"tf": 1}}, "df": 1}}}}}}}}, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.generator.Generator.binary": {"tf": 1}}, "df": 1}}}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.generator.Generator.blockcompressionproperty_sql": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.generator.Generator.between_sql": {"tf": 1}}, "df": 1}}}}}}, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.helper.find_new_name": {"tf": 1}}, "df": 1}}}}, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.dataframe.sql.SparkSession.createDataFrame": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.__init__": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.replace": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.repartition": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.__init__": {"tf": 1}, "sqlglot.dataframe.sql.Column.ensure_col": {"tf": 1}, "sqlglot.dataframe.sql.Column.ensure_cols": {"tf": 1}, "sqlglot.dataframe.sql.Column.invoke_anonymous_function": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.invoke_expression_over_column": {"tf": 1}, "sqlglot.dataframe.sql.Column.binary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.inverse_binary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.isin": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.between": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.over": {"tf": 1}, "sqlglot.dataframe.sql.Window.partitionBy": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Window.orderBy": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.WindowSpec.partitionBy": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.WindowSpec.orderBy": {"tf": 1.4142135623730951}}, "df": 19}}}}}}}, "p": {"docs": {"sqlglot.dialects.dialect.var_map_sql": {"tf": 1.7320508075688772}}, "df": 1, "p": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.dialects.dialect.parse_date_delta": {"tf": 1}, "sqlglot.expressions.replace_tables": {"tf": 1}, "sqlglot.generator.Generator.__init__": {"tf": 1}, "sqlglot.schema.Schema.add_table": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema.__init__": {"tf": 1}, "sqlglot.schema.MappingSchema.from_mapping_schema": {"tf": 1}, "sqlglot.schema.MappingSchema.add_table": {"tf": 1}, "sqlglot.schema.ensure_column_mapping": {"tf": 1}, "sqlglot.time.format_time": {"tf": 1}}, "df": 9, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.schema.MappingSchema.from_mapping_schema": {"tf": 1.4142135623730951}, "sqlglot.schema.MappingSchema.copy": {"tf": 1}}, "df": 2}}}}}}}}}}}, "x": {"docs": {"sqlglot.dialects.dialect.max_or_greatest": {"tf": 1}, "sqlglot.generator.Generator.__init__": {"tf": 1.4142135623730951}, "sqlglot.optimizer.normalize.normalize": {"tf": 1}, "sqlglot.optimizer.normalize.distributive_law": {"tf": 1}, "sqlglot.parser.Parser.__init__": {"tf": 1}}, "df": 5, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {"sqlglot.errors.concat_messages": {"tf": 1}}, "df": 1}}}}}, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff.diff": {"tf": 1}, "sqlglot.diff.ChangeDistiller.diff": {"tf": 1}}, "df": 2}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.generator.Generator.matchrecognize_sql": {"tf": 1}, "sqlglot.generator.Generator.partition_by_sql": {"tf": 1}}, "df": 2}}}}}}}}}, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.generator.Generator.matchagainst_sql": {"tf": 1}}, "df": 1}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dataframe.sql.DataFrame.persist": {"tf": 1}}, "df": 1}}}}, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.errors.ParseError.__init__": {"tf": 1}, "sqlglot.errors.ParseError.new": {"tf": 1}, "sqlglot.generator.Generator.unsupported": {"tf": 1}, "sqlglot.parser.Parser.__init__": {"tf": 1}, "sqlglot.parser.Parser.raise_error": {"tf": 1}}, "df": 5}}}}}, "r": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.generator.Generator.merge_sql": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 2, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.generator.Generator.mergeblockratioproperty_sql": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}}}, "o": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.dialects.teradata.Teradata.Generator.mod_sql": {"tf": 1}, "sqlglot.generator.Generator.mod_sql": {"tf": 1}}, "df": 2, "e": {"docs": {"sqlglot.dataframe.sql.DataFrameWriter.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.saveAsTable": {"tf": 1}}, "df": 2}, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.helper.subclasses": {"tf": 1}}, "df": 1}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff.diff": {"tf": 1}, "sqlglot.diff.ChangeDistiller.diff": {"tf": 1}}, "df": 2}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dialects.dialect.min_or_least": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1}}, "df": 2}, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.schema.AbstractMappingSchema.find": {"tf": 1}}, "df": 1}}}}}}, "u": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.generator.Generator.mul_sql": {"tf": 1}}, "df": 1, "t": {"docs": {}, "df": 0, "i": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 1}}}}}, "g": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe.sql.SparkSession.createDataFrame": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.__init__": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.replace": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.repartition": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.__init__": {"tf": 1}, "sqlglot.dataframe.sql.Column.ensure_col": {"tf": 1}, "sqlglot.dataframe.sql.Column.ensure_cols": {"tf": 1}, "sqlglot.dataframe.sql.Column.invoke_anonymous_function": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.invoke_expression_over_column": {"tf": 1}, "sqlglot.dataframe.sql.Column.binary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.inverse_binary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.isin": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.between": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.over": {"tf": 1}, "sqlglot.dataframe.sql.Window.partitionBy": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Window.orderBy": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.WindowSpec.partitionBy": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.WindowSpec.orderBy": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.__init__": {"tf": 1}, "sqlglot.generator.Generator.lambda_sql": {"tf": 1}, "sqlglot.generator.Generator.gt_sql": {"tf": 1}, "sqlglot.helper.open_file": {"tf": 1}, "sqlglot.lineage.Node.__init__": {"tf": 1}, "sqlglot.lineage.lineage": {"tf": 1.7320508075688772}, "sqlglot.optimizer.optimizer.optimize": {"tf": 4.358898943540674}, "sqlglot.optimizer.scope.Scope.__init__": {"tf": 1}}, "df": 27, "e": {"docs": {"sqlglot.generator.Generator.gte_sql": {"tf": 1}}, "df": 1}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.dataframe.sql.DataFrame.groupBy": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.__init__": {"tf": 1}, "sqlglot.generator.Generator.group_sql": {"tf": 1}}, "df": 3, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.dataframe.sql.DataFrame.groupBy": {"tf": 1}}, "df": 1}}}}}}}}}}, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dialects.dialect.Dialect.generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.rename_func": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.approx_count_distinct_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.if_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.arrow_json_extract_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.arrow_json_extract_scalar_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.inline_array_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.no_ilike_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.no_paren_current_date_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.no_recursive_cte_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.no_safe_divide_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.no_tablesample_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.no_pivot_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.no_trycast_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.no_properties_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.str_position_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.struct_extract_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.var_map_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.timestamptrunc_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.strposition_to_locate_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.timestrtotime_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.datestrtodate_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.min_or_least": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.max_or_greatest": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.count_if_to_sum": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.trim_sql": {"tf": 1.4142135623730951}, "sqlglot.transforms.preprocess": {"tf": 2}}, "df": 28}}, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.snowflake.Snowflake.Generator.generatedasidentitycolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.generatedasidentitycolumnconstraint_sql": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "b": {"docs": {"sqlglot.generator.Generator.glob_sql": {"tf": 1}}, "df": 1}}}}, "f": {"docs": {"sqlglot.diff.ChangeDistiller.__init__": {"tf": 1}}, "df": 1, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe.sql.SparkSession.createDataFrame": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.replace": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrameNaFunctions.fill": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.replace": {"tf": 1.4142135623730951}, "sqlglot.diff.ChangeDistiller.__init__": {"tf": 1.4142135623730951}, "sqlglot.serde.dump": {"tf": 1.4142135623730951}, "sqlglot.serde.load": {"tf": 1.4142135623730951}}, "df": 7}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.generator.Generator.order_sql": {"tf": 1}, "sqlglot.generator.Generator.expressions": {"tf": 1}, "sqlglot.generator.Generator.op_expressions": {"tf": 1}}, "df": 3}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.SparkSession.createDataFrame": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.unionByName": {"tf": 1}, "sqlglot.dataframe.sql.Column.set_table_name": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.__init__": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1}, "sqlglot.generator.Generator.__init__": {"tf": 2.23606797749979}, "sqlglot.generator.Generator.indent": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.order_sql": {"tf": 1}, "sqlglot.generator.Generator.expressions": {"tf": 1}, "sqlglot.generator.Generator.op_expressions": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_ctes": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_derived_tables": {"tf": 1}, "sqlglot.optimizer.normalize.normalize": {"tf": 1}, "sqlglot.optimizer.normalize.normalized": {"tf": 1}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.get_source_columns": {"tf": 1}, "sqlglot.parser.Parser.__init__": {"tf": 1.4142135623730951}, "sqlglot.planner.SetOperation.__init__": {"tf": 1}, "sqlglot.schema.Schema.column_names": {"tf": 1}, "sqlglot.schema.MappingSchema.column_names": {"tf": 1}}, "df": 22}}, "l": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.generator.Generator.fallbackproperty_sql": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.lineage.Node.__init__": {"tf": 1}}, "df": 1}}}}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.Expression.transform": {"tf": 1}, "sqlglot.expressions.replace_children": {"tf": 1}}, "df": 2, "c": {"docs": {"sqlglot.dataframe.sql.Column.invoke_anonymous_function": {"tf": 1}, "sqlglot.dialects.dialect.var_map_sql": {"tf": 1}, "sqlglot.executor.env.filter_nulls": {"tf": 1}, "sqlglot.expressions.func": {"tf": 1}, "sqlglot.generator.Generator.no_identify": {"tf": 1}, "sqlglot.generator.Generator.function_fallback_sql": {"tf": 1}, "sqlglot.helper.while_changing": {"tf": 1}}, "df": 7, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.helper.count_params": {"tf": 1}, "sqlglot.lineage.lineage": {"tf": 1.7320508075688772}, "sqlglot.optimizer.optimizer.optimize": {"tf": 4.358898943540674}}, "df": 3, "s": {"docs": {"sqlglot.generator.Generator.__init__": {"tf": 1}}, "df": 1}}}}}}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe.sql.DataFrameWriter.saveAsTable": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.generator.Generator.foreignkey_sql": {"tf": 1}, "sqlglot.generator.Generator.primarykey_sql": {"tf": 1}}, "df": 2}}}}}}}, "w": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "f": {"docs": {"sqlglot.serde.dump": {"tf": 1}, "sqlglot.serde.load": {"tf": 1}}, "df": 2}}}}}}}}}, "i": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.executor.env.ordered": {"tf": 1}, "sqlglot.generator.Generator.indent": {"tf": 1}}, "df": 2}}}, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.generator.Generator.filter_sql": {"tf": 1}}, "df": 1}}}, "e": {"docs": {"sqlglot.helper.open_file": {"tf": 1}}, "df": 1}, "l": {"docs": {"sqlglot.helper.split_num_words": {"tf": 1}}, "df": 1}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {"sqlglot.expressions.update": {"tf": 1}, "sqlglot.generator.Generator.from_sql": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1}}, "df": 3}}, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.generator.Generator.freespaceproperty_sql": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.generator.Generator.fetch_sql": {"tf": 1}}, "df": 1}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.dataframe.sql.SparkSession.createDataFrame": {"tf": 1}}, "df": 1}}}}}}}}}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.replace": {"tf": 1}, "sqlglot.dataframe.sql.Column.ensure_col": {"tf": 1}, "sqlglot.dataframe.sql.Column.ensure_literal": {"tf": 1}, "sqlglot.dataframe.sql.Column.when": {"tf": 1}, "sqlglot.dataframe.sql.Column.otherwise": {"tf": 1}, "sqlglot.dataframe.sql.Column.startswith": {"tf": 1}, "sqlglot.dataframe.sql.Column.endswith": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.fill": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.replace": {"tf": 1}, "sqlglot.expressions.Expression.append": {"tf": 1}, "sqlglot.expressions.Expression.set": {"tf": 1}, "sqlglot.expressions.convert": {"tf": 1}, "sqlglot.helper.ensure_list": {"tf": 1}, "sqlglot.helper.ensure_collection": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1}, "sqlglot.helper.is_iterable": {"tf": 1}}, "df": 17, "s": {"docs": {"sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.values_sql": {"tf": 1}, "sqlglot.helper.flatten": {"tf": 1}}, "df": 5}}}, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 1}}}}}}, "r": {"docs": {"sqlglot.expressions.var": {"tf": 1}, "sqlglot.generator.Generator.var_sql": {"tf": 1}, "sqlglot.tokens.Token.var": {"tf": 1}}, "df": 3, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.dialects.dialect.var_map_sql": {"tf": 1}}, "df": 1}}}}}, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.qualify_columns.Resolver.get_source_columns": {"tf": 1}, "sqlglot.schema.Schema.column_names": {"tf": 1}, "sqlglot.schema.MappingSchema.__init__": {"tf": 1}, "sqlglot.schema.MappingSchema.column_names": {"tf": 1}}, "df": 4}}}}}}}, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.dataframe.sql.DataFrame.__init__": {"tf": 1}}, "df": 1}}}}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.generator.Generator.parameter_sql": {"tf": 1}}, "df": 1, "s": {"docs": {"sqlglot.dataframe.sql.DataFrame.hint": {"tf": 1}}, "df": 1}}}}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dialects.dialect.Dialect.parser": {"tf": 1.4142135623730951}, "sqlglot.parser.binary_range_parser": {"tf": 1.4142135623730951}}, "df": 2}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.errors.ParseError.new": {"tf": 1}, "sqlglot.errors.merge_errors": {"tf": 1}}, "df": 2}}}}}}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.generator.Generator.partition_sql": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dialects.teradata.Teradata.Generator.partitionedbyproperty_sql": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.paren": {"tf": 1}, "sqlglot.generator.Generator.paren_sql": {"tf": 1}}, "df": 2, "t": {"docs": {"sqlglot.expressions.Expression.dfs": {"tf": 1}, "sqlglot.optimizer.scope.Scope.__init__": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.unnest": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.decorrelate": {"tf": 1}}, "df": 4}}}}, "t": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.expressions.to_table": {"tf": 1}, "sqlglot.expressions.to_column": {"tf": 1}}, "df": 2}}, "d": {"docs": {"sqlglot.generator.Generator.__init__": {"tf": 1}, "sqlglot.generator.Generator.indent": {"tf": 1}}, "df": 2}}, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.dialect.no_pivot_sql": {"tf": 1}, "sqlglot.generator.Generator.pivot_sql": {"tf": 1}}, "df": 2}}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dialects.dialect.no_properties_sql": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator.with_properties": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator.with_properties": {"tf": 1.4142135623730951}, "sqlglot.expressions.Properties.from_dict": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.ctas": {"tf": 1}, "sqlglot.expressions.update": {"tf": 1}, "sqlglot.generator.Generator.properties_sql": {"tf": 1}, "sqlglot.generator.Generator.root_properties": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.properties": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.with_properties": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.locate_properties": {"tf": 1.7320508075688772}}, "df": 11}}}, "y": {"docs": {"sqlglot.generator.Generator.locate_properties": {"tf": 1}, "sqlglot.generator.Generator.property_sql": {"tf": 1}, "sqlglot.generator.Generator.naked_property": {"tf": 1}}, "df": 3}}}}}, "j": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 1}}}}}}}}}, "e": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "x": {"docs": {"sqlglot.dialects.duckdb.DuckDB.Generator.tablesample_sql": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1}, "sqlglot.generator.Generator.properties": {"tf": 1}, "sqlglot.generator.Generator.tablesample_sql": {"tf": 1}, "sqlglot.generator.Generator.expressions": {"tf": 1}}, "df": 5}}}, "t": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.generator.Generator.__init__": {"tf": 1}}, "df": 1}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.pushdown_predicates.nodes_for_predicate": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.replace_aliases": {"tf": 1}}, "df": 2, "s": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_cnf": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_dnf": {"tf": 1}}, "df": 3}}}}}}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Expression.walk": {"tf": 1}, "sqlglot.expressions.Expression.dfs": {"tf": 1}, "sqlglot.expressions.Expression.bfs": {"tf": 1}}, "df": 3}}}, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.generator.Generator.primarykeycolumnconstraint_sql": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}}}}}, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.generator.Generator.pragma_sql": {"tf": 1}}, "df": 1}}}}}, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.executor.env.str_position": {"tf": 1}}, "df": 1}}}}}, "t": {"docs": {"sqlglot.generator.Generator.__init__": {"tf": 1}, "sqlglot.parser.Parser.__init__": {"tf": 1}}, "df": 2}}}, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.executor.python.PythonExecutor.execute": {"tf": 1}}, "df": 1, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.planner.Step.from_expression": {"tf": 1.4142135623730951}, "sqlglot.planner.Step.add_dependency": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1.4142135623730951}, "sqlglot.planner.Join.from_joins": {"tf": 1.4142135623730951}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1.4142135623730951}}, "df": 5}}}}, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.generator.Generator.placeholder_sql": {"tf": 1}}, "df": 1}}}}}}}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.generator.Generator.pseudotype_sql": {"tf": 1}}, "df": 1}}}}}}}}}, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.generator.Generator.hint_sql": {"tf": 1}}, "df": 1, "s": {"docs": {"sqlglot.dataframe.sql.DataFrame.__init__": {"tf": 1}}, "df": 1}}}, "g": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.errors.ParseError.new": {"tf": 1}}, "df": 1}}}}}}}}, "o": {"docs": {}, "df": 0, "w": {"docs": {"sqlglot.dataframe.sql.DataFrame.join": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.dropna": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.drop": {"tf": 1}}, "df": 3}}, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.generator.Generator.hexstring_sql": {"tf": 1}}, "df": 1}}}}}}}}, "a": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.generator.Generator.having_sql": {"tf": 1}}, "df": 1}}}}, "s": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.trie.new_trie": {"tf": 1}, "sqlglot.trie.in_trie": {"tf": 1}}, "df": 2}}}}}}}}, "k": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.generator.Generator.kwarg_sql": {"tf": 1}}, "df": 1, "s": {"docs": {"sqlglot.dataframe.sql.DataFrame.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sql": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.copy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.select": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.alias": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.where": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.filter": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.groupBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.agg": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.join": {"tf": 1}, "sqlglot.dataframe.sql.Column.invoke_expression_over_column": {"tf": 1}, "sqlglot.dataframe.sql.Column.binary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.inverse_binary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.unary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.sql": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.sql": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.copy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.sql": {"tf": 1}, "sqlglot.diff.diff": {"tf": 1}, "sqlglot.expressions.Expression.transform": {"tf": 1}, "sqlglot.expressions.DataType.build": {"tf": 1}, "sqlglot.expressions.to_table": {"tf": 1}, "sqlglot.expressions.to_column": {"tf": 1}, "sqlglot.expressions.replace_children": {"tf": 1}, "sqlglot.expressions.replace_placeholders": {"tf": 1}, "sqlglot.expressions.func": {"tf": 1}, "sqlglot.generator.Generator.no_identify": {"tf": 1}, "sqlglot.helper.object_to_dict": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.optimizer.scope.Scope.branch": {"tf": 1}, "sqlglot.parser.Parser.expression": {"tf": 1}, "sqlglot.schema.MappingSchema.copy": {"tf": 1}}, "df": 32}}}}}, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dataframe.sql.Column.binary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.inverse_binary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.unary_op": {"tf": 1}}, "df": 3}}}}, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.diff.diff": {"tf": 1}, "sqlglot.diff.ChangeDistiller.diff": {"tf": 1}}, "df": 2}}, "y": {"docs": {"sqlglot.executor.context.Context.sort": {"tf": 1}, "sqlglot.expressions.Expression.text": {"tf": 1}, "sqlglot.expressions.Expression.append": {"tf": 1}, "sqlglot.expressions.Expression.set": {"tf": 1}, "sqlglot.expressions.Expression.dfs": {"tf": 1}, "sqlglot.generator.Generator.sql": {"tf": 1}, "sqlglot.generator.Generator.expressions": {"tf": 1}, "sqlglot.trie.in_trie": {"tf": 1}}, "df": 8, "s": {"docs": {"sqlglot.schema.flatten_schema": {"tf": 1}}, "df": 1}, "w": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.trie.new_trie": {"tf": 1}}, "df": 1}}}}}}}}, "a": {"docs": {"sqlglot.optimizer.simplify.is_complement": {"tf": 1}, "sqlglot.optimizer.simplify.is_false": {"tf": 1}, "sqlglot.optimizer.simplify.is_null": {"tf": 1}, "sqlglot.optimizer.simplify.eval_boolean": {"tf": 1}}, "df": 4, "s": {"docs": {"sqlglot.expressions.Subqueryable.with_": {"tf": 1}, "sqlglot.generator.Generator.table_sql": {"tf": 1}, "sqlglot.generator.Generator.subquery_sql": {"tf": 1}}, "df": 3, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1}}, "df": 2}}}}}}}}, "n": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.dropna": {"tf": 1}, "sqlglot.dataframe.sql.Column.when": {"tf": 1}, "sqlglot.dataframe.sql.Column.otherwise": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.drop": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.fill": {"tf": 1}, "sqlglot.diff.diff": {"tf": 1}, "sqlglot.errors.ParseError.__init__": {"tf": 1}, "sqlglot.errors.concat_messages": {"tf": 1}, "sqlglot.errors.merge_errors": {"tf": 1}, "sqlglot.expressions.Expression.__init__": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1}, "sqlglot.generator.Generator.any_sql": {"tf": 1}, "sqlglot.helper.csv_reader": {"tf": 1}, "sqlglot.helper.object_to_dict": {"tf": 1}, "sqlglot.helper.is_iterable": {"tf": 1}, "sqlglot.helper.flatten": {"tf": 1.7320508075688772}, "sqlglot.lineage.LineageHTML.__init__": {"tf": 1}, "sqlglot.schema.ensure_schema": {"tf": 1}}, "df": 20}, "d": {"docs": {"sqlglot.dataframe.sql.DataFrame.persist": {"tf": 1}, "sqlglot.expressions.and_": {"tf": 1}, "sqlglot.generator.Generator.and_sql": {"tf": 1}}, "df": 3}, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.generator.Generator.anonymous_sql": {"tf": 1}}, "df": 1}}}}}}}, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}, "sqlglot.optimizer.annotate_types.TypeAnnotator.__init__": {"tf": 1}}, "df": 2}}}, "e": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 1}}}}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.generator.Generator.all_sql": {"tf": 1}}, "df": 1, "o": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dataframe.sql.DataFrame.unionByName": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.Subqueryable.subquery": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1}, "sqlglot.expressions.subquery": {"tf": 1}, "sqlglot.expressions.table_": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1}, "sqlglot.generator.Generator.__init__": {"tf": 1}, "sqlglot.generator.Generator.alias_sql": {"tf": 1}, "sqlglot.parser.Parser.__init__": {"tf": 1}}, "df": 10, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.generator.Generator.aliases_sql": {"tf": 1}}, "df": 1}}}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.rename_table": {"tf": 1}, "sqlglot.generator.Generator.altertable_sql": {"tf": 1}}, "df": 2}}}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.generator.Generator.altercolumn_sql": {"tf": 1}}, "df": 1}}}}}}}}}}, "r": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.expressions.Expression.append": {"tf": 1}, "sqlglot.expressions.Expression.set": {"tf": 1}}, "df": 2, "s": {"docs": {"sqlglot.dataframe.sql.Column.ensure_cols": {"tf": 1}, "sqlglot.dataframe.sql.Column.invoke_anonymous_function": {"tf": 1}, "sqlglot.dialects.dialect.date_trunc_to_time": {"tf": 1}, "sqlglot.dialects.dialect.locate_to_strposition": {"tf": 1}, "sqlglot.expressions.Expression.__init__": {"tf": 1}, "sqlglot.expressions.Expression.transform": {"tf": 1}, "sqlglot.expressions.Expression.error_messages": {"tf": 1}, "sqlglot.expressions.TimeUnit.__init__": {"tf": 1}, "sqlglot.expressions.Func.from_arg_list": {"tf": 1}, "sqlglot.expressions.replace_children": {"tf": 1}, "sqlglot.expressions.replace_placeholders": {"tf": 1}, "sqlglot.expressions.func": {"tf": 1}, "sqlglot.generator.Generator.no_identify": {"tf": 1}, "sqlglot.generator.Generator.func": {"tf": 1}, "sqlglot.generator.Generator.format_args": {"tf": 1}, "sqlglot.generator.Generator.text_width": {"tf": 1}, "sqlglot.helper.csv": {"tf": 1}, "sqlglot.parser.parse_var_map": {"tf": 1}, "sqlglot.parser.parse_like": {"tf": 1}, "sqlglot.parser.Parser.validate_expression": {"tf": 1}}, "df": 20}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator.array_sql": {"tf": 1}, "sqlglot.dialects.dialect.inline_array_sql": {"tf": 1}}, "df": 2, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.dialects.hive.Hive.Generator.arrayagg_sql": {"tf": 1}}, "df": 1}}}}}, "o": {"docs": {}, "df": 0, "w": {"docs": {"sqlglot.generator.Generator.lambda_sql": {"tf": 1}}, "df": 1}}}}, "p": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.dialect.approx_count_distinct_sql": {"tf": 1}}, "df": 1}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Join.using": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.expressions.Select.select": {"tf": 1}, "sqlglot.expressions.Select.lateral": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1}, "sqlglot.expressions.Select.where": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1}, "sqlglot.expressions.Select.window": {"tf": 1}, "sqlglot.expressions.Select.qualify": {"tf": 1}}, "df": 17}}}}}, "f": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "j": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.generator.Generator.afterjournalproperty_sql": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}, "t": {"docs": {"sqlglot.lineage.lineage": {"tf": 1.7320508075688772}, "sqlglot.optimizer.optimizer.optimize": {"tf": 4.358898943540674}}, "df": 2, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.generator.Generator.attimezone_sql": {"tf": 1}}, "df": 1}}}}}}}, "r": {"docs": {"sqlglot.transforms.delegate": {"tf": 1}}, "df": 1}}}, "d": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.generator.Generator.add_sql": {"tf": 1}}, "df": 1, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.generator.Generator.addconstraint_sql": {"tf": 1}}, "df": 1}}}}}}}}}}}}}, "j": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.dialect.arrow_json_extract_sql": {"tf": 1}}, "df": 1, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dialects.dialect.arrow_json_extract_scalar_sql": {"tf": 1}}, "df": 1}}}}}}}}}}}}}, "b": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.dialect.arrow_json_extract_sql": {"tf": 1}}, "df": 1, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dialects.dialect.arrow_json_extract_scalar_sql": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.generator.Generator.jsonkeyvalue_sql": {"tf": 1}}, "df": 1}}}}}}}}, "o": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "j": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.generator.Generator.jsonobject_sql": {"tf": 1}}, "df": 1}}}}}}}}}, "o": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.executor.python.PythonExecutor.nested_loop_join": {"tf": 1.4142135623730951}, "sqlglot.executor.python.PythonExecutor.hash_join": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.join": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.join_sql": {"tf": 1}, "sqlglot.optimizer.eliminate_joins.join_condition": {"tf": 1}, "sqlglot.optimizer.optimize_joins.other_table_names": {"tf": 1}, "sqlglot.planner.Join.from_joins": {"tf": 1}}, "df": 7, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.generator.Generator.joinhint_sql": {"tf": 1}}, "df": 1}}}}, "s": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1.4142135623730951}, "sqlglot.planner.Join.from_joins": {"tf": 1}}, "df": 2}}}, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.generator.Generator.journalproperty_sql": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}, "x": {"2": {"7": {"docs": {"sqlglot.helper.open_file": {"tf": 1.4142135623730951}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.oracle.Oracle.Generator.xmltable_sql": {"tf": 1}}, "df": 1}}}}}}}}, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.generator.Generator.__init__": {"tf": 1.4142135623730951}}, "df": 1, "d": {"docs": {"sqlglot.expressions.to_identifier": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1}, "sqlglot.expressions.column": {"tf": 1}, "sqlglot.expressions.table_": {"tf": 1}}, "df": 4}}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.generator.Generator.qualify_sql": {"tf": 1}, "sqlglot.lineage.lineage": {"tf": 1.4142135623730951}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1.7320508075688772}}, "df": 3}}}}}}}}}, "bases": {"root": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.bigquery.BigQuery": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Tokenizer": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Tokenizer": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Tokenizer": {"tf": 1}, "sqlglot.dialects.drill.Drill": {"tf": 1}, "sqlglot.dialects.drill.Drill.Tokenizer": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Tokenizer": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive": {"tf": 1}, "sqlglot.dialects.hive.Hive.Tokenizer": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Tokenizer": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Tokenizer": {"tf": 1}, "sqlglot.dialects.postgres.Postgres": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Tokenizer": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto": {"tf": 1}, "sqlglot.dialects.presto.Presto.Tokenizer": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Tokenizer": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Tokenizer": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Tokenizer": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Tokenizer": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Tokenizer": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Tokenizer": {"tf": 1}, "sqlglot.dialects.tsql.TSQL": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Tokenizer": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.errors.ErrorLevel": {"tf": 1}, "sqlglot.executor.python.Python": {"tf": 1}, "sqlglot.executor.python.Python.Tokenizer": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.executor.table.Tables": {"tf": 1}, "sqlglot.expressions.Properties.Location": {"tf": 1}, "sqlglot.expressions.DataType.Type": {"tf": 1}, "sqlglot.schema.MappingSchema": {"tf": 1}, "sqlglot.tokens.TokenType": {"tf": 1}}, "df": 82, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.errors.UnsupportedError": {"tf": 1}, "sqlglot.errors.ParseError": {"tf": 1}, "sqlglot.errors.TokenError": {"tf": 1}, "sqlglot.errors.OptimizeError": {"tf": 1}, "sqlglot.errors.SchemaError": {"tf": 1}, "sqlglot.errors.ExecuteError": {"tf": 1}}, "df": 6}}}}}}}}}}}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.dialects.databricks.Databricks": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Tokenizer": {"tf": 1.4142135623730951}}, "df": 4}}}}, "t": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dialects.dialect.Dialects": {"tf": 1}, "sqlglot.schema.MappingSchema": {"tf": 1}}, "df": 2}, "e": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.planner.Scan": {"tf": 1}, "sqlglot.planner.Join": {"tf": 1}, "sqlglot.planner.Aggregate": {"tf": 1}, "sqlglot.planner.Sort": {"tf": 1}, "sqlglot.planner.SetOperation": {"tf": 1}}, "df": 5}}}, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.executor.table.Tables": {"tf": 1}, "sqlglot.schema.MappingSchema": {"tf": 1.4142135623730951}}, "df": 2}}}}}, "u": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Union": {"tf": 1}, "sqlglot.expressions.Select": {"tf": 1}}, "df": 2}}}}, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.All": {"tf": 1}, "sqlglot.expressions.Any": {"tf": 1}, "sqlglot.expressions.Exists": {"tf": 1}}, "df": 3}}}}}}}}}}}}}}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.bigquery.BigQuery": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL": {"tf": 1.4142135623730951}, "sqlglot.executor.python.Python": {"tf": 1.4142135623730951}}, "df": 15, "s": {"docs": {"sqlglot.dialects.bigquery.BigQuery": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse": {"tf": 1}, "sqlglot.dialects.databricks.Databricks": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Tokenizer": {"tf": 1}, "sqlglot.dialects.drill.Drill": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB": {"tf": 1}, "sqlglot.dialects.hive.Hive": {"tf": 1}, "sqlglot.dialects.mysql.MySQL": {"tf": 1}, "sqlglot.dialects.oracle.Oracle": {"tf": 1}, "sqlglot.dialects.postgres.Postgres": {"tf": 1}, "sqlglot.dialects.presto.Presto": {"tf": 1}, "sqlglot.dialects.redshift.Redshift": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Tokenizer": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake": {"tf": 1}, "sqlglot.dialects.spark.Spark": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Tokenizer": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau": {"tf": 1}, "sqlglot.dialects.teradata.Teradata": {"tf": 1}, "sqlglot.dialects.trino.Trino": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Tokenizer": {"tf": 1}, "sqlglot.dialects.tsql.TSQL": {"tf": 1}, "sqlglot.executor.python.Python": {"tf": 1}}, "df": 33}}}}}}, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "[": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.schema.MappingSchema": {"tf": 1}}, "df": 1}}}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.UDTF": {"tf": 1}, "sqlglot.expressions.CTE": {"tf": 1}, "sqlglot.expressions.Subquery": {"tf": 1}}, "df": 3}}}}}}}}}}}}, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Tokenizer": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Tokenizer": {"tf": 1}, "sqlglot.dialects.drill.Drill.Tokenizer": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Tokenizer": {"tf": 1}, "sqlglot.dialects.hive.Hive.Tokenizer": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Tokenizer": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Tokenizer": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Tokenizer": {"tf": 1}, "sqlglot.dialects.presto.Presto.Tokenizer": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Tokenizer": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Tokenizer": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Tokenizer": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Tokenizer": {"tf": 1}, "sqlglot.executor.python.Python.Tokenizer": {"tf": 1}}, "df": 14}, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Tokenizer": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Tokenizer": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Tokenizer": {"tf": 1}, "sqlglot.dialects.drill.Drill.Tokenizer": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Tokenizer": {"tf": 1}, "sqlglot.dialects.hive.Hive.Tokenizer": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Tokenizer": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Tokenizer": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Tokenizer": {"tf": 1}, "sqlglot.dialects.presto.Presto.Tokenizer": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Tokenizer": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Tokenizer": {"tf": 1}, "sqlglot.dialects.spark.Spark.Tokenizer": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Tokenizer": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Tokenizer": {"tf": 1}, "sqlglot.dialects.trino.Trino.Tokenizer": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Tokenizer": {"tf": 1}, "sqlglot.executor.python.Python.Tokenizer": {"tf": 1}}, "df": 18}}}}}}}}, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.executor.table.Tables": {"tf": 1.4142135623730951}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.Interval": {"tf": 1}, "sqlglot.expressions.DateAdd": {"tf": 1}, "sqlglot.expressions.DateSub": {"tf": 1}, "sqlglot.expressions.DateDiff": {"tf": 1}, "sqlglot.expressions.DatetimeAdd": {"tf": 1}, "sqlglot.expressions.DatetimeSub": {"tf": 1}, "sqlglot.expressions.DatetimeDiff": {"tf": 1}, "sqlglot.expressions.DatetimeTrunc": {"tf": 1}, "sqlglot.expressions.TimestampAdd": {"tf": 1}, "sqlglot.expressions.TimestampSub": {"tf": 1}, "sqlglot.expressions.TimestampDiff": {"tf": 1}, "sqlglot.expressions.TimestampTrunc": {"tf": 1}, "sqlglot.expressions.TimeAdd": {"tf": 1}, "sqlglot.expressions.TimeSub": {"tf": 1}, "sqlglot.expressions.TimeDiff": {"tf": 1}, "sqlglot.expressions.TimeTrunc": {"tf": 1}, "sqlglot.expressions.TsOrDsAdd": {"tf": 1}}, "df": 17}}}}}}}, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.schema.AbstractMappingSchema": {"tf": 1}}, "df": 1}}}}}}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1.4142135623730951}}, "df": 18}}}}}, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dialects.redshift.Redshift": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Tokenizer": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.4142135623730951}}, "df": 4}}}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {"sqlglot.dialects.trino.Trino": {"tf": 1.4142135623730951}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.trino.Trino.Tokenizer": {"tf": 1.4142135623730951}}, "df": 3}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.SubqueryPredicate": {"tf": 1}, "sqlglot.expressions.EQ": {"tf": 1}, "sqlglot.expressions.NullSafeEQ": {"tf": 1}, "sqlglot.expressions.NullSafeNEQ": {"tf": 1}, "sqlglot.expressions.Glob": {"tf": 1}, "sqlglot.expressions.GT": {"tf": 1}, "sqlglot.expressions.GTE": {"tf": 1}, "sqlglot.expressions.ILike": {"tf": 1}, "sqlglot.expressions.ILikeAny": {"tf": 1}, "sqlglot.expressions.Is": {"tf": 1}, "sqlglot.expressions.Like": {"tf": 1}, "sqlglot.expressions.LikeAny": {"tf": 1}, "sqlglot.expressions.LT": {"tf": 1}, "sqlglot.expressions.LTE": {"tf": 1}, "sqlglot.expressions.NEQ": {"tf": 1}, "sqlglot.expressions.SimilarTo": {"tf": 1}, "sqlglot.expressions.Between": {"tf": 1}, "sqlglot.expressions.In": {"tf": 1}}, "df": 18}}}}}}}, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.AfterJournalProperty": {"tf": 1}, "sqlglot.expressions.AlgorithmProperty": {"tf": 1}, "sqlglot.expressions.AutoIncrementProperty": {"tf": 1}, "sqlglot.expressions.BlockCompressionProperty": {"tf": 1}, "sqlglot.expressions.CharacterSetProperty": {"tf": 1}, "sqlglot.expressions.ChecksumProperty": {"tf": 1}, "sqlglot.expressions.CollateProperty": {"tf": 1}, "sqlglot.expressions.DataBlocksizeProperty": {"tf": 1}, "sqlglot.expressions.DefinerProperty": {"tf": 1}, "sqlglot.expressions.DistKeyProperty": {"tf": 1}, "sqlglot.expressions.DistStyleProperty": {"tf": 1}, "sqlglot.expressions.EngineProperty": {"tf": 1}, "sqlglot.expressions.ExecuteAsProperty": {"tf": 1}, "sqlglot.expressions.ExternalProperty": {"tf": 1}, "sqlglot.expressions.FallbackProperty": {"tf": 1}, "sqlglot.expressions.FileFormatProperty": {"tf": 1}, "sqlglot.expressions.FreespaceProperty": {"tf": 1}, "sqlglot.expressions.IsolatedLoadingProperty": {"tf": 1}, "sqlglot.expressions.JournalProperty": {"tf": 1}, "sqlglot.expressions.LanguageProperty": {"tf": 1}, "sqlglot.expressions.LikeProperty": {"tf": 1}, "sqlglot.expressions.LocationProperty": {"tf": 1}, "sqlglot.expressions.LockingProperty": {"tf": 1}, "sqlglot.expressions.LogProperty": {"tf": 1}, "sqlglot.expressions.MaterializedProperty": {"tf": 1}, "sqlglot.expressions.MergeBlockRatioProperty": {"tf": 1}, "sqlglot.expressions.NoPrimaryIndexProperty": {"tf": 1}, "sqlglot.expressions.OnCommitProperty": {"tf": 1}, "sqlglot.expressions.PartitionedByProperty": {"tf": 1}, "sqlglot.expressions.ReturnsProperty": {"tf": 1}, "sqlglot.expressions.RowFormatDelimitedProperty": {"tf": 1}, "sqlglot.expressions.RowFormatSerdeProperty": {"tf": 1}, "sqlglot.expressions.SchemaCommentProperty": {"tf": 1}, "sqlglot.expressions.SerdeProperties": {"tf": 1}, "sqlglot.expressions.SetProperty": {"tf": 1}, "sqlglot.expressions.SortKeyProperty": {"tf": 1}, "sqlglot.expressions.SqlSecurityProperty": {"tf": 1}, "sqlglot.expressions.TableFormatProperty": {"tf": 1}, "sqlglot.expressions.TemporaryProperty": {"tf": 1}, "sqlglot.expressions.TransientProperty": {"tf": 1}, "sqlglot.expressions.VolatilityProperty": {"tf": 1}, "sqlglot.expressions.WithDataProperty": {"tf": 1}, "sqlglot.expressions.WithJournalTableProperty": {"tf": 1}}, "df": 43}}}}}}}}, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.executor.python.Python.Generator": {"tf": 1.4142135623730951}}, "df": 20}}}}, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "[": {"docs": {}, "df": 0, "~": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.schema.AbstractMappingSchema": {"tf": 1}}, "df": 1}}}}}}}}}}, "b": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dialects.dialect.Dialects": {"tf": 1}, "sqlglot.errors.SqlglotError": {"tf": 1}}, "df": 2}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.Add": {"tf": 1}, "sqlglot.expressions.Connector": {"tf": 1}, "sqlglot.expressions.BitwiseAnd": {"tf": 1}, "sqlglot.expressions.BitwiseLeftShift": {"tf": 1}, "sqlglot.expressions.BitwiseOr": {"tf": 1}, "sqlglot.expressions.BitwiseRightShift": {"tf": 1}, "sqlglot.expressions.BitwiseXor": {"tf": 1}, "sqlglot.expressions.Div": {"tf": 1}, "sqlglot.expressions.Overlaps": {"tf": 1}, "sqlglot.expressions.Dot": {"tf": 1}, "sqlglot.expressions.DPipe": {"tf": 1}, "sqlglot.expressions.EQ": {"tf": 1}, "sqlglot.expressions.NullSafeEQ": {"tf": 1}, "sqlglot.expressions.NullSafeNEQ": {"tf": 1}, "sqlglot.expressions.Distance": {"tf": 1}, "sqlglot.expressions.Escape": {"tf": 1}, "sqlglot.expressions.Glob": {"tf": 1}, "sqlglot.expressions.GT": {"tf": 1}, "sqlglot.expressions.GTE": {"tf": 1}, "sqlglot.expressions.ILike": {"tf": 1}, "sqlglot.expressions.ILikeAny": {"tf": 1}, "sqlglot.expressions.IntDiv": {"tf": 1}, "sqlglot.expressions.Is": {"tf": 1}, "sqlglot.expressions.Kwarg": {"tf": 1}, "sqlglot.expressions.Like": {"tf": 1}, "sqlglot.expressions.LikeAny": {"tf": 1}, "sqlglot.expressions.LT": {"tf": 1}, "sqlglot.expressions.LTE": {"tf": 1}, "sqlglot.expressions.Mod": {"tf": 1}, "sqlglot.expressions.Mul": {"tf": 1}, "sqlglot.expressions.NEQ": {"tf": 1}, "sqlglot.expressions.SimilarTo": {"tf": 1}, "sqlglot.expressions.Slice": {"tf": 1}, "sqlglot.expressions.Sub": {"tf": 1}, "sqlglot.expressions.ArrayOverlaps": {"tf": 1}, "sqlglot.expressions.ArrayContains": {"tf": 1}, "sqlglot.expressions.ArrayContained": {"tf": 1}, "sqlglot.expressions.Collate": {"tf": 1}, "sqlglot.expressions.JSONBContains": {"tf": 1}, "sqlglot.expressions.JSONExtract": {"tf": 1}, "sqlglot.expressions.Pow": {"tf": 1}}, "df": 41}}}}}}, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {"sqlglot.dialects.dialect.Dialects": {"tf": 1.4142135623730951}, "sqlglot.helper.AutoName": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.ScopeType": {"tf": 1.4142135623730951}}, "df": 3}}}, "x": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.errors.SqlglotError": {"tf": 1}}, "df": 1}}}}}}}, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.executor.table.Tables": {"tf": 1}}, "df": 1}}}}}}, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.Condition": {"tf": 1}, "sqlglot.expressions.DerivedTable": {"tf": 1}, "sqlglot.expressions.Unionable": {"tf": 1}, "sqlglot.expressions.Cache": {"tf": 1}, "sqlglot.expressions.Uncache": {"tf": 1}, "sqlglot.expressions.Create": {"tf": 1}, "sqlglot.expressions.Describe": {"tf": 1}, "sqlglot.expressions.Pragma": {"tf": 1}, "sqlglot.expressions.Set": {"tf": 1}, "sqlglot.expressions.SetItem": {"tf": 1}, "sqlglot.expressions.Show": {"tf": 1}, "sqlglot.expressions.UserDefinedFunction": {"tf": 1}, "sqlglot.expressions.CharacterSet": {"tf": 1}, "sqlglot.expressions.With": {"tf": 1}, "sqlglot.expressions.WithinGroup": {"tf": 1}, "sqlglot.expressions.TableAlias": {"tf": 1}, "sqlglot.expressions.ColumnPosition": {"tf": 1}, "sqlglot.expressions.ColumnDef": {"tf": 1}, "sqlglot.expressions.AlterColumn": {"tf": 1}, "sqlglot.expressions.RenameTable": {"tf": 1}, "sqlglot.expressions.SetTag": {"tf": 1}, "sqlglot.expressions.Comment": {"tf": 1}, "sqlglot.expressions.ColumnConstraint": {"tf": 1}, "sqlglot.expressions.ColumnConstraintKind": {"tf": 1}, "sqlglot.expressions.Constraint": {"tf": 1}, "sqlglot.expressions.Delete": {"tf": 1}, "sqlglot.expressions.Drop": {"tf": 1}, "sqlglot.expressions.Filter": {"tf": 1}, "sqlglot.expressions.Check": {"tf": 1}, "sqlglot.expressions.Directory": {"tf": 1}, "sqlglot.expressions.ForeignKey": {"tf": 1}, "sqlglot.expressions.PrimaryKey": {"tf": 1}, "sqlglot.expressions.Unique": {"tf": 1}, "sqlglot.expressions.Into": {"tf": 1}, "sqlglot.expressions.From": {"tf": 1}, "sqlglot.expressions.Having": {"tf": 1}, "sqlglot.expressions.Hint": {"tf": 1}, "sqlglot.expressions.JoinHint": {"tf": 1}, "sqlglot.expressions.Identifier": {"tf": 1}, "sqlglot.expressions.Index": {"tf": 1}, "sqlglot.expressions.Insert": {"tf": 1}, "sqlglot.expressions.Returning": {"tf": 1}, "sqlglot.expressions.Introducer": {"tf": 1}, "sqlglot.expressions.National": {"tf": 1}, "sqlglot.expressions.LoadData": {"tf": 1}, "sqlglot.expressions.Partition": {"tf": 1}, "sqlglot.expressions.Fetch": {"tf": 1}, "sqlglot.expressions.Group": {"tf": 1}, "sqlglot.expressions.Lambda": {"tf": 1}, "sqlglot.expressions.Limit": {"tf": 1}, "sqlglot.expressions.Join": {"tf": 1}, "sqlglot.expressions.MatchRecognize": {"tf": 1}, "sqlglot.expressions.Final": {"tf": 1}, "sqlglot.expressions.Offset": {"tf": 1}, "sqlglot.expressions.Order": {"tf": 1}, "sqlglot.expressions.Ordered": {"tf": 1}, "sqlglot.expressions.Property": {"tf": 1}, "sqlglot.expressions.Properties": {"tf": 1}, "sqlglot.expressions.Qualify": {"tf": 1}, "sqlglot.expressions.Return": {"tf": 1}, "sqlglot.expressions.Reference": {"tf": 1}, "sqlglot.expressions.Tuple": {"tf": 1}, "sqlglot.expressions.Table": {"tf": 1}, "sqlglot.expressions.SystemTime": {"tf": 1}, "sqlglot.expressions.Update": {"tf": 1}, "sqlglot.expressions.Var": {"tf": 1}, "sqlglot.expressions.Schema": {"tf": 1}, "sqlglot.expressions.Lock": {"tf": 1}, "sqlglot.expressions.TableSample": {"tf": 1}, "sqlglot.expressions.Tag": {"tf": 1}, "sqlglot.expressions.Pivot": {"tf": 1}, "sqlglot.expressions.Window": {"tf": 1}, "sqlglot.expressions.WindowSpec": {"tf": 1}, "sqlglot.expressions.Where": {"tf": 1}, "sqlglot.expressions.Star": {"tf": 1}, "sqlglot.expressions.Parameter": {"tf": 1}, "sqlglot.expressions.SessionParameter": {"tf": 1}, "sqlglot.expressions.Placeholder": {"tf": 1}, "sqlglot.expressions.DataType": {"tf": 1}, "sqlglot.expressions.PseudoType": {"tf": 1}, "sqlglot.expressions.StructKwarg": {"tf": 1}, "sqlglot.expressions.Command": {"tf": 1}, "sqlglot.expressions.Transaction": {"tf": 1}, "sqlglot.expressions.Commit": {"tf": 1}, "sqlglot.expressions.Rollback": {"tf": 1}, "sqlglot.expressions.AlterTable": {"tf": 1}, "sqlglot.expressions.AddConstraint": {"tf": 1}, "sqlglot.expressions.DropPartition": {"tf": 1}, "sqlglot.expressions.Binary": {"tf": 1}, "sqlglot.expressions.Unary": {"tf": 1}, "sqlglot.expressions.Alias": {"tf": 1}, "sqlglot.expressions.Aliases": {"tf": 1}, "sqlglot.expressions.AtTimeZone": {"tf": 1}, "sqlglot.expressions.Distinct": {"tf": 1}, "sqlglot.expressions.TimeUnit": {"tf": 1}, "sqlglot.expressions.IgnoreNulls": {"tf": 1}, "sqlglot.expressions.RespectNulls": {"tf": 1}, "sqlglot.expressions.JSONKeyValue": {"tf": 1}, "sqlglot.expressions.Use": {"tf": 1}, "sqlglot.expressions.Merge": {"tf": 1}}, "df": 100}}}}}}}}}}, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.spark.Spark": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Tokenizer": {"tf": 1.4142135623730951}}, "df": 4}}}, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.errors.ErrorLevel": {"tf": 1}, "sqlglot.expressions.Properties.Location": {"tf": 1}, "sqlglot.expressions.DataType.Type": {"tf": 1}, "sqlglot.tokens.TokenType": {"tf": 1}}, "df": 4}}}}}}, "m": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.dialects.starrocks.StarRocks": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.4142135623730951}}, "df": 3}}}}}, "a": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.errors.ErrorLevel": {"tf": 1}, "sqlglot.expressions.Properties.Location": {"tf": 1}, "sqlglot.expressions.DataType.Type": {"tf": 1}, "sqlglot.tokens.TokenType": {"tf": 1}}, "df": 4}}}}}}}, "b": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "[": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.executor.table.Tables": {"tf": 1}}, "df": 1}}}}}}}, "t": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.schema.MappingSchema": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}}}}}}}, "c": {"docs": {"sqlglot.schema.Schema": {"tf": 1.4142135623730951}}, "df": 1}}, "g": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot.expressions.Hll": {"tf": 1}, "sqlglot.expressions.ApproxDistinct": {"tf": 1}, "sqlglot.expressions.ArrayAgg": {"tf": 1}, "sqlglot.expressions.ArrayUnionAgg": {"tf": 1}, "sqlglot.expressions.Avg": {"tf": 1}, "sqlglot.expressions.AnyValue": {"tf": 1}, "sqlglot.expressions.Count": {"tf": 1}, "sqlglot.expressions.CountIf": {"tf": 1}, "sqlglot.expressions.ExponentialTimeDecayedAvg": {"tf": 1}, "sqlglot.expressions.GroupUniqArray": {"tf": 1}, "sqlglot.expressions.Histogram": {"tf": 1}, "sqlglot.expressions.LogicalOr": {"tf": 1}, "sqlglot.expressions.LogicalAnd": {"tf": 1}, "sqlglot.expressions.Max": {"tf": 1}, "sqlglot.expressions.Min": {"tf": 1}, "sqlglot.expressions.PercentileCont": {"tf": 1}, "sqlglot.expressions.PercentileDisc": {"tf": 1}, "sqlglot.expressions.Quantile": {"tf": 1}, "sqlglot.expressions.Quantiles": {"tf": 1}, "sqlglot.expressions.QuantileIf": {"tf": 1}, "sqlglot.expressions.SetAgg": {"tf": 1}, "sqlglot.expressions.Sum": {"tf": 1}, "sqlglot.expressions.Stddev": {"tf": 1}, "sqlglot.expressions.StddevPop": {"tf": 1}, "sqlglot.expressions.StddevSamp": {"tf": 1}, "sqlglot.expressions.Variance": {"tf": 1}, "sqlglot.expressions.VariancePop": {"tf": 1}}, "df": 27}}}}}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.Predicate": {"tf": 1}, "sqlglot.expressions.BitString": {"tf": 1}, "sqlglot.expressions.HexString": {"tf": 1}, "sqlglot.expressions.ByteString": {"tf": 1}, "sqlglot.expressions.Column": {"tf": 1}, "sqlglot.expressions.Literal": {"tf": 1}, "sqlglot.expressions.Null": {"tf": 1}, "sqlglot.expressions.Boolean": {"tf": 1}, "sqlglot.expressions.Connector": {"tf": 1}, "sqlglot.expressions.Not": {"tf": 1}, "sqlglot.expressions.Paren": {"tf": 1}, "sqlglot.expressions.Bracket": {"tf": 1}, "sqlglot.expressions.Func": {"tf": 1}}, "df": 13}}}}}}, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.And": {"tf": 1}, "sqlglot.expressions.Or": {"tf": 1}}, "df": 2}}}}}}, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.ConcatWs": {"tf": 1}}, "df": 1}}}}, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.AutoIncrementColumnConstraint": {"tf": 1}, "sqlglot.expressions.CaseSpecificColumnConstraint": {"tf": 1}, "sqlglot.expressions.CharacterSetColumnConstraint": {"tf": 1}, "sqlglot.expressions.CheckColumnConstraint": {"tf": 1}, "sqlglot.expressions.CollateColumnConstraint": {"tf": 1}, "sqlglot.expressions.CommentColumnConstraint": {"tf": 1}, "sqlglot.expressions.CompressColumnConstraint": {"tf": 1}, "sqlglot.expressions.DateFormatColumnConstraint": {"tf": 1}, "sqlglot.expressions.DefaultColumnConstraint": {"tf": 1}, "sqlglot.expressions.EncodeColumnConstraint": {"tf": 1}, "sqlglot.expressions.GeneratedAsIdentityColumnConstraint": {"tf": 1}, "sqlglot.expressions.InlineLengthColumnConstraint": {"tf": 1}, "sqlglot.expressions.NotNullColumnConstraint": {"tf": 1}, "sqlglot.expressions.PrimaryKeyColumnConstraint": {"tf": 1}, "sqlglot.expressions.TitleColumnConstraint": {"tf": 1}, "sqlglot.expressions.UniqueColumnConstraint": {"tf": 1}, "sqlglot.expressions.UppercaseColumnConstraint": {"tf": 1}, "sqlglot.expressions.PathColumnConstraint": {"tf": 1}}, "df": 18}}}}}}}}}}}}}}}}}}}, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.TryCast": {"tf": 1}}, "df": 1}}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.Except": {"tf": 1}, "sqlglot.expressions.Intersect": {"tf": 1}}, "df": 2, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.UDTF": {"tf": 1}, "sqlglot.expressions.Subqueryable": {"tf": 1}, "sqlglot.expressions.Subquery": {"tf": 1}}, "df": 3}}}}}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.BitwiseNot": {"tf": 1}, "sqlglot.expressions.Not": {"tf": 1}, "sqlglot.expressions.Paren": {"tf": 1}, "sqlglot.expressions.Neg": {"tf": 1}}, "df": 4}}}}, "d": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "f": {"docs": {"sqlglot.expressions.Lateral": {"tf": 1}, "sqlglot.expressions.Unnest": {"tf": 1}, "sqlglot.expressions.Values": {"tf": 1}}, "df": 3}}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.Cluster": {"tf": 1}, "sqlglot.expressions.Distribute": {"tf": 1}, "sqlglot.expressions.Sort": {"tf": 1}}, "df": 3}}}}}, "f": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot.expressions.AggFunc": {"tf": 1}, "sqlglot.expressions.Abs": {"tf": 1}, "sqlglot.expressions.Anonymous": {"tf": 1}, "sqlglot.expressions.Array": {"tf": 1}, "sqlglot.expressions.ToChar": {"tf": 1}, "sqlglot.expressions.GenerateSeries": {"tf": 1}, "sqlglot.expressions.ArrayAll": {"tf": 1}, "sqlglot.expressions.ArrayAny": {"tf": 1}, "sqlglot.expressions.ArrayConcat": {"tf": 1}, "sqlglot.expressions.ArrayContains": {"tf": 1}, "sqlglot.expressions.ArrayFilter": {"tf": 1}, "sqlglot.expressions.ArrayJoin": {"tf": 1}, "sqlglot.expressions.ArraySize": {"tf": 1}, "sqlglot.expressions.ArraySort": {"tf": 1}, "sqlglot.expressions.ArraySum": {"tf": 1}, "sqlglot.expressions.Case": {"tf": 1}, "sqlglot.expressions.Cast": {"tf": 1}, "sqlglot.expressions.Ceil": {"tf": 1}, "sqlglot.expressions.Coalesce": {"tf": 1}, "sqlglot.expressions.Concat": {"tf": 1}, "sqlglot.expressions.CurrentDate": {"tf": 1}, "sqlglot.expressions.CurrentDatetime": {"tf": 1}, "sqlglot.expressions.CurrentTime": {"tf": 1}, "sqlglot.expressions.CurrentTimestamp": {"tf": 1}, "sqlglot.expressions.DateAdd": {"tf": 1}, "sqlglot.expressions.DateSub": {"tf": 1}, "sqlglot.expressions.DateDiff": {"tf": 1}, "sqlglot.expressions.DateTrunc": {"tf": 1}, "sqlglot.expressions.DatetimeAdd": {"tf": 1}, "sqlglot.expressions.DatetimeSub": {"tf": 1}, "sqlglot.expressions.DatetimeDiff": {"tf": 1}, "sqlglot.expressions.DatetimeTrunc": {"tf": 1}, "sqlglot.expressions.DayOfWeek": {"tf": 1}, "sqlglot.expressions.DayOfMonth": {"tf": 1}, "sqlglot.expressions.DayOfYear": {"tf": 1}, "sqlglot.expressions.WeekOfYear": {"tf": 1}, "sqlglot.expressions.LastDateOfMonth": {"tf": 1}, "sqlglot.expressions.Extract": {"tf": 1}, "sqlglot.expressions.TimestampAdd": {"tf": 1}, "sqlglot.expressions.TimestampSub": {"tf": 1}, "sqlglot.expressions.TimestampDiff": {"tf": 1}, "sqlglot.expressions.TimestampTrunc": {"tf": 1}, "sqlglot.expressions.TimeAdd": {"tf": 1}, "sqlglot.expressions.TimeSub": {"tf": 1}, "sqlglot.expressions.TimeDiff": {"tf": 1}, "sqlglot.expressions.TimeTrunc": {"tf": 1}, "sqlglot.expressions.DateFromParts": {"tf": 1}, "sqlglot.expressions.DateStrToDate": {"tf": 1}, "sqlglot.expressions.DateToDateStr": {"tf": 1}, "sqlglot.expressions.DateToDi": {"tf": 1}, "sqlglot.expressions.Day": {"tf": 1}, "sqlglot.expressions.Decode": {"tf": 1}, "sqlglot.expressions.DiToDate": {"tf": 1}, "sqlglot.expressions.Encode": {"tf": 1}, "sqlglot.expressions.Exp": {"tf": 1}, "sqlglot.expressions.Explode": {"tf": 1}, "sqlglot.expressions.Floor": {"tf": 1}, "sqlglot.expressions.Greatest": {"tf": 1}, "sqlglot.expressions.GroupConcat": {"tf": 1}, "sqlglot.expressions.Hex": {"tf": 1}, "sqlglot.expressions.If": {"tf": 1}, "sqlglot.expressions.IfNull": {"tf": 1}, "sqlglot.expressions.Initcap": {"tf": 1}, "sqlglot.expressions.JSONObject": {"tf": 1}, "sqlglot.expressions.JSONExtract": {"tf": 1}, "sqlglot.expressions.JSONFormat": {"tf": 1}, "sqlglot.expressions.Least": {"tf": 1}, "sqlglot.expressions.Length": {"tf": 1}, "sqlglot.expressions.Levenshtein": {"tf": 1}, "sqlglot.expressions.Ln": {"tf": 1}, "sqlglot.expressions.Log": {"tf": 1}, "sqlglot.expressions.Log2": {"tf": 1}, "sqlglot.expressions.Log10": {"tf": 1}, "sqlglot.expressions.Lower": {"tf": 1}, "sqlglot.expressions.Map": {"tf": 1}, "sqlglot.expressions.VarMap": {"tf": 1}, "sqlglot.expressions.MatchAgainst": {"tf": 1}, "sqlglot.expressions.Month": {"tf": 1}, "sqlglot.expressions.Nvl2": {"tf": 1}, "sqlglot.expressions.Posexplode": {"tf": 1}, "sqlglot.expressions.Pow": {"tf": 1}, "sqlglot.expressions.RangeN": {"tf": 1}, "sqlglot.expressions.ReadCSV": {"tf": 1}, "sqlglot.expressions.Reduce": {"tf": 1}, "sqlglot.expressions.RegexpExtract": {"tf": 1}, "sqlglot.expressions.RegexpLike": {"tf": 1}, "sqlglot.expressions.RegexpILike": {"tf": 1}, "sqlglot.expressions.RegexpSplit": {"tf": 1}, "sqlglot.expressions.Repeat": {"tf": 1}, "sqlglot.expressions.Round": {"tf": 1}, "sqlglot.expressions.RowNumber": {"tf": 1}, "sqlglot.expressions.SafeDivide": {"tf": 1}, "sqlglot.expressions.SortArray": {"tf": 1}, "sqlglot.expressions.Split": {"tf": 1}, "sqlglot.expressions.Substring": {"tf": 1}, "sqlglot.expressions.StrPosition": {"tf": 1}, "sqlglot.expressions.StrToDate": {"tf": 1}, "sqlglot.expressions.StrToTime": {"tf": 1}, "sqlglot.expressions.StrToUnix": {"tf": 1}, "sqlglot.expressions.NumberToStr": {"tf": 1}, "sqlglot.expressions.Struct": {"tf": 1}, "sqlglot.expressions.StructExtract": {"tf": 1}, "sqlglot.expressions.Sqrt": {"tf": 1}, "sqlglot.expressions.TimeToStr": {"tf": 1}, "sqlglot.expressions.TimeToTimeStr": {"tf": 1}, "sqlglot.expressions.TimeToUnix": {"tf": 1}, "sqlglot.expressions.TimeStrToDate": {"tf": 1}, "sqlglot.expressions.TimeStrToTime": {"tf": 1}, "sqlglot.expressions.TimeStrToUnix": {"tf": 1}, "sqlglot.expressions.Trim": {"tf": 1}, "sqlglot.expressions.TsOrDsAdd": {"tf": 1}, "sqlglot.expressions.TsOrDsToDateStr": {"tf": 1}, "sqlglot.expressions.TsOrDsToDate": {"tf": 1}, "sqlglot.expressions.TsOrDiToDi": {"tf": 1}, "sqlglot.expressions.Unhex": {"tf": 1}, "sqlglot.expressions.UnixToStr": {"tf": 1}, "sqlglot.expressions.UnixToTime": {"tf": 1}, "sqlglot.expressions.UnixToTimeStr": {"tf": 1}, "sqlglot.expressions.Upper": {"tf": 1}, "sqlglot.expressions.Week": {"tf": 1}, "sqlglot.expressions.XMLTable": {"tf": 1}, "sqlglot.expressions.Year": {"tf": 1}, "sqlglot.expressions.When": {"tf": 1}}, "df": 123}}}}, "j": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.JSONExtractScalar": {"tf": 1}, "sqlglot.expressions.JSONBExtract": {"tf": 1}, "sqlglot.expressions.JSONBExtractScalar": {"tf": 1}}, "df": 3}}}}}}}}}}}, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.ApproxQuantile": {"tf": 1}}, "df": 1}}}}}}}}}}, "doc": {"root": {"0": {"0": {"0": {"9": {"9": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "1": {"0": {"7": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "9": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "3": {"6": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "3": {"4": {"2": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "6": {"2": {"5": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "5": {"2": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "1": {"0": {"5": {"4": {"5": {"5": {"2": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "1": {"2": {"6": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "6": {"8": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "3": {"0": {"8": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "9": {"9": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {"sqlglot": {"tf": 1.7320508075688772}}, "df": 1}, "2": {"docs": {"sqlglot": {"tf": 1.4142135623730951}}, "df": 1}, "3": {"2": {"8": {"0": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "9": {"1": {"7": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "6": {"9": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "4": {"4": {"1": {"0": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "9": {"5": {"8": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "6": {"6": {"7": {"1": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "7": {"6": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "8": {"0": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "5": {"4": {"3": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {"sqlglot": {"tf": 6.48074069840786}, "sqlglot.dataframe": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.persist": {"tf": 1.4142135623730951}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.diff": {"tf": 4.47213595499958}, "sqlglot.executor": {"tf": 2}, "sqlglot.expressions.Expression.output_name": {"tf": 1.7320508075688772}, "sqlglot.expressions.Column.output_name": {"tf": 1.7320508075688772}, "sqlglot.expressions.Identifier.output_name": {"tf": 1.7320508075688772}, "sqlglot.expressions.Literal.output_name": {"tf": 1.7320508075688772}, "sqlglot.expressions.Union.limit": {"tf": 1}, "sqlglot.expressions.Subquery.output_name": {"tf": 1.7320508075688772}, "sqlglot.expressions.Star.output_name": {"tf": 1.7320508075688772}, "sqlglot.expressions.Alias.output_name": {"tf": 1.7320508075688772}, "sqlglot.expressions.Cast.output_name": {"tf": 1.7320508075688772}, "sqlglot.helper.dict_depth": {"tf": 1}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1.4142135623730951}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 1.7320508075688772}, "sqlglot.parser.Parser": {"tf": 1}, "sqlglot.trie.new_trie": {"tf": 2}, "sqlglot.trie.in_trie": {"tf": 2.23606797749979}}, "df": 39, "/": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "1": {"0": {"0": {"0": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.diff": {"tf": 1}}, "df": 2}, "docs": {}, "df": 0}, "4": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "docs": {"sqlglot": {"tf": 1}, "sqlglot.diff": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.limit": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.offset": {"tf": 1.4142135623730951}}, "df": 4, "^": {"1": {"2": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}}, "1": {"4": {"5": {"docs": {}, "df": 0, "/": {"2": {"6": {"4": {"2": {"9": {"3": {"7": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}}, "docs": {}, "df": 0}, "docs": {"sqlglot": {"tf": 1}, "sqlglot.diff": {"tf": 1}}, "df": 2}, "2": {"2": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "3": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}, "6": {"3": {"2": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "9": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}, "3": {"1": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 1}}, "df": 2}, "4": {"1": {"3": {"4": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "5": {"1": {"docs": {"sqlglot": {"tf": 1.4142135623730951}}, "df": 1}, "7": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "6": {"1": {"8": {"0": {"8": {"8": {"0": {"2": {"8": {"2": {"9": {"5": {"docs": {"sqlglot": {"tf": 1.4142135623730951}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "7": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}, "8": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}, "9": {"8": {"6": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "9": {"6": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {"sqlglot": {"tf": 1}}, "df": 1}, "docs": {"sqlglot": {"tf": 6}, "sqlglot.dataframe": {"tf": 2}, "sqlglot.diff": {"tf": 4}, "sqlglot.executor": {"tf": 3.7416573867739413}, "sqlglot.expressions.Expression.output_name": {"tf": 1}, "sqlglot.expressions.Condition.and_": {"tf": 2}, "sqlglot.expressions.Condition.or_": {"tf": 2}, "sqlglot.expressions.Condition.not_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Predicate": {"tf": 1}, "sqlglot.expressions.Column.output_name": {"tf": 1}, "sqlglot.expressions.Identifier.output_name": {"tf": 1}, "sqlglot.expressions.Literal.output_name": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1.4142135623730951}, "sqlglot.expressions.Union.limit": {"tf": 2.449489742783178}, "sqlglot.expressions.Select.group_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.join": {"tf": 1.4142135623730951}, "sqlglot.expressions.Subquery.output_name": {"tf": 1}, "sqlglot.expressions.Star.output_name": {"tf": 1}, "sqlglot.expressions.Alias.output_name": {"tf": 1}, "sqlglot.expressions.Cast.output_name": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1.4142135623730951}, "sqlglot.expressions.update": {"tf": 2}, "sqlglot.expressions.delete": {"tf": 1.4142135623730951}, "sqlglot.expressions.condition": {"tf": 2.449489742783178}, "sqlglot.expressions.and_": {"tf": 2.449489742783178}, "sqlglot.expressions.or_": {"tf": 2.449489742783178}, "sqlglot.expressions.to_interval": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1.4142135623730951}, "sqlglot.expressions.cast": {"tf": 1.4142135623730951}, "sqlglot.expressions.values": {"tf": 1.4142135623730951}, "sqlglot.helper.split_num_words": {"tf": 1}, "sqlglot.helper.is_iterable": {"tf": 1}, "sqlglot.helper.flatten": {"tf": 2}, "sqlglot.helper.dict_depth": {"tf": 1.4142135623730951}, "sqlglot.optimizer.expand_laterals.expand_laterals": {"tf": 2.23606797749979}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_predicates": {"tf": 1.4142135623730951}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.selects": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1.4142135623730951}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 1.4142135623730951}, "sqlglot.transforms.unalias_group": {"tf": 1}, "sqlglot.trie.in_trie": {"tf": 1.4142135623730951}}, "df": 43, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.expressions.Func": {"tf": 1}}, "df": 2}}}, "2": {"0": {"0": {"7": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "1": {"4": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "2": {"1": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1}}, "df": 2}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "2": {"docs": {"sqlglot.dataframe": {"tf": 1.7320508075688772}}, "df": 1}, "4": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 2}, "5": {"1": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}, "5": {"docs": {"sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "6": {"4": {"2": {"9": {"8": {"2": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "6": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}, "docs": {"sqlglot": {"tf": 1}, "sqlglot.dataframe": {"tf": 1.7320508075688772}}, "df": 2}, "9": {"4": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {"sqlglot": {"tf": 3.3166247903554}, "sqlglot.dataframe": {"tf": 1.7320508075688772}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.diff": {"tf": 4.358898943540674}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.expressions.Expression.output_name": {"tf": 1}, "sqlglot.expressions.Column.output_name": {"tf": 1}, "sqlglot.expressions.Identifier.output_name": {"tf": 1}, "sqlglot.expressions.Literal.output_name": {"tf": 1}, "sqlglot.expressions.Subquery.output_name": {"tf": 1}, "sqlglot.expressions.Star.output_name": {"tf": 1}, "sqlglot.expressions.Alias.output_name": {"tf": 1}, "sqlglot.expressions.Cast.output_name": {"tf": 1}, "sqlglot.expressions.update": {"tf": 1.4142135623730951}, "sqlglot.expressions.alias_": {"tf": 1.4142135623730951}, "sqlglot.expressions.values": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.helper.is_iterable": {"tf": 1}, "sqlglot.helper.flatten": {"tf": 2}, "sqlglot.helper.dict_depth": {"tf": 1}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1.4142135623730951}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.optimizer.scope.Scope.selects": {"tf": 1.4142135623730951}, "sqlglot.trie.in_trie": {"tf": 1.4142135623730951}}, "df": 43}, "3": {"1": {"3": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "2": {"4": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "3": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}, "4": {"docs": {"sqlglot.dataframe": {"tf": 2.449489742783178}}, "df": 1}, "7": {"7": {"7": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "9": {"docs": {"sqlglot": {"tf": 6.855654600401044}, "sqlglot.dataframe": {"tf": 7.0710678118654755}, "sqlglot.dialects": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.output_name": {"tf": 2.449489742783178}, "sqlglot.expressions.Expression.assert_is": {"tf": 1.4142135623730951}, "sqlglot.expressions.Condition.and_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Condition.or_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Condition.not_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Unionable.union": {"tf": 1.4142135623730951}, "sqlglot.expressions.Unionable.intersect": {"tf": 1.4142135623730951}, "sqlglot.expressions.Unionable.except_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Column.output_name": {"tf": 2.449489742783178}, "sqlglot.expressions.Delete.delete": {"tf": 1.4142135623730951}, "sqlglot.expressions.Delete.where": {"tf": 2.8284271247461903}, "sqlglot.expressions.Delete.returning": {"tf": 1.4142135623730951}, "sqlglot.expressions.Identifier.output_name": {"tf": 2.449489742783178}, "sqlglot.expressions.Literal.output_name": {"tf": 2.449489742783178}, "sqlglot.expressions.Join.on": {"tf": 1.4142135623730951}, "sqlglot.expressions.Join.using": {"tf": 1.4142135623730951}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 1.4142135623730951}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Union.limit": {"tf": 1.4142135623730951}, "sqlglot.expressions.Union.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.from_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.group_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.order_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.sort_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.cluster_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.limit": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.offset": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.lateral": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.join": {"tf": 2.449489742783178}, "sqlglot.expressions.Select.where": {"tf": 2.8284271247461903}, "sqlglot.expressions.Select.having": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.distinct": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.ctas": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.lock": {"tf": 2.8284271247461903}, "sqlglot.expressions.Subquery.output_name": {"tf": 2.449489742783178}, "sqlglot.expressions.Star.output_name": {"tf": 2.449489742783178}, "sqlglot.expressions.Alias.output_name": {"tf": 2.449489742783178}, "sqlglot.expressions.Cast.output_name": {"tf": 2.449489742783178}, "sqlglot.expressions.union": {"tf": 1.4142135623730951}, "sqlglot.expressions.intersect": {"tf": 1.4142135623730951}, "sqlglot.expressions.except_": {"tf": 1.4142135623730951}, "sqlglot.expressions.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.from_": {"tf": 1.4142135623730951}, "sqlglot.expressions.update": {"tf": 1.4142135623730951}, "sqlglot.expressions.delete": {"tf": 1.4142135623730951}, "sqlglot.expressions.condition": {"tf": 2}, "sqlglot.expressions.and_": {"tf": 1.4142135623730951}, "sqlglot.expressions.or_": {"tf": 1.4142135623730951}, "sqlglot.expressions.not_": {"tf": 2}, "sqlglot.expressions.alias_": {"tf": 4}, "sqlglot.expressions.subquery": {"tf": 2.8284271247461903}, "sqlglot.expressions.cast": {"tf": 2.449489742783178}, "sqlglot.expressions.values": {"tf": 2}, "sqlglot.expressions.var": {"tf": 3.1622776601683795}, "sqlglot.expressions.column_table_names": {"tf": 2}, "sqlglot.expressions.table_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.replace_tables": {"tf": 1.4142135623730951}, "sqlglot.expressions.replace_placeholders": {"tf": 1.4142135623730951}, "sqlglot.expressions.expand": {"tf": 1.4142135623730951}, "sqlglot.expressions.func": {"tf": 2}, "sqlglot.helper.split_num_words": {"tf": 3.4641016151377544}, "sqlglot.helper.flatten": {"tf": 1.4142135623730951}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1.4142135623730951}, "sqlglot.optimizer.eliminate_ctes.eliminate_ctes": {"tf": 1.4142135623730951}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 1.4142135623730951}, "sqlglot.optimizer.eliminate_subqueries.eliminate_subqueries": {"tf": 2}, "sqlglot.optimizer.expand_laterals.expand_laterals": {"tf": 1.4142135623730951}, "sqlglot.optimizer.expand_multi_table_selects.expand_multi_table_selects": {"tf": 1.4142135623730951}, "sqlglot.optimizer.lower_identities.lower_identities": {"tf": 2}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1.4142135623730951}, "sqlglot.optimizer.normalize.normalize": {"tf": 1.4142135623730951}, "sqlglot.optimizer.optimize_joins.optimize_joins": {"tf": 1.4142135623730951}, "sqlglot.optimizer.pushdown_predicates.pushdown_predicates": {"tf": 1.4142135623730951}, "sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 1.4142135623730951}, "sqlglot.optimizer.qualify_columns.qualify_columns": {"tf": 1.4142135623730951}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 2.8284271247461903}, "sqlglot.optimizer.simplify.simplify": {"tf": 1.4142135623730951}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 1.4142135623730951}, "sqlglot.time.format_time": {"tf": 1.4142135623730951}, "sqlglot.transforms.unalias_group": {"tf": 1.4142135623730951}, "sqlglot.trie.new_trie": {"tf": 3.7416573867739413}, "sqlglot.trie.in_trie": {"tf": 2.8284271247461903}}, "df": 87}, "docs": {"sqlglot": {"tf": 3.1622776601683795}, "sqlglot.dataframe": {"tf": 1.7320508075688772}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.diff": {"tf": 3.1622776601683795}, "sqlglot.executor": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1.4142135623730951}, "sqlglot.helper.flatten": {"tf": 2}, "sqlglot.helper.dict_depth": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1}}, "df": 49}, "4": {"0": {"0": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "3": {"4": {"3": {"4": {"1": {"6": {"6": {"2": {"4": {"docs": {"sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}}, "df": 3}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "7": {"9": {"8": {"3": {"1": {"3": {"6": {"docs": {"sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}}, "df": 3}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "4": {"6": {"2": {"4": {"docs": {"sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}}, "df": 3}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "5": {"2": {"9": {"6": {"docs": {"sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}}, "df": 3}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "6": {"docs": {"sqlglot.diff.ChangeDistiller": {"tf": 1}}, "df": 1}, "8": {"docs": {"sqlglot.dataframe": {"tf": 1.7320508075688772}}, "df": 1}, "9": {"3": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {"sqlglot": {"tf": 2}, "sqlglot.dataframe": {"tf": 1.7320508075688772}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.diff": {"tf": 2.6457513110645907}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.helper.flatten": {"tf": 1.4142135623730951}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1}}, "df": 26}, "5": {"0": {"4": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}, "docs": {"sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1}}, "df": 19}, "3": {"1": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {"sqlglot": {"tf": 2.23606797749979}, "sqlglot.dataframe": {"tf": 1.7320508075688772}, "sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.expressions.to_interval": {"tf": 1}, "sqlglot.expressions.func": {"tf": 2}, "sqlglot.helper.flatten": {"tf": 1.4142135623730951}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1.4142135623730951}}, "df": 7}, "6": {"0": {"6": {"2": {"6": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "1": {"4": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {"sqlglot": {"tf": 1.7320508075688772}, "sqlglot.diff": {"tf": 2.23606797749979}}, "df": 2, "m": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}, "7": {"0": {"4": {"3": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "2": {"5": {"docs": {}, "df": 0, "\u2013": {"7": {"4": {"3": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}}, "docs": {}, "df": 0}, "6": {"7": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}, "9": {"1": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "2": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {"sqlglot": {"tf": 1}}, "df": 1}, "8": {"0": {"5": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}}, "df": 21}, "9": {"3": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 2}, "9": {"0": {"6": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "7": {"0": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "8": {"7": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {"sqlglot": {"tf": 1}}, "df": 1}, "docs": {"sqlglot": {"tf": 61.335144900782616}, "sqlglot.pretty": {"tf": 1.7320508075688772}, "sqlglot.schema": {"tf": 1.7320508075688772}, "sqlglot.parse": {"tf": 5.916079783099616}, "sqlglot.parse_one": {"tf": 6.324555320336759}, "sqlglot.transpile": {"tf": 7.211102550927978}, "sqlglot.dataframe": {"tf": 48.86716689148246}, "sqlglot.dataframe.sql": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.SparkSession": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.SparkSession.table": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.SparkSession.createDataFrame": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.SparkSession.sql": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.__init__": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.sql": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.copy": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.select": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.alias": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.where": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.filter": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.groupBy": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.agg": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.join": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 2.23606797749979}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 2.23606797749979}, "sqlglot.dataframe.sql.DataFrame.union": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.unionAll": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.unionByName": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.intersect": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.intersectAll": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.exceptAll": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.distinct": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.dropDuplicates": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.dropna": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 2.6457513110645907}, "sqlglot.dataframe.sql.DataFrame.replace": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.withColumn": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.withColumnRenamed": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.drop": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.limit": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.hint": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.repartition": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.coalesce": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.cache": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.persist": {"tf": 2}, "sqlglot.dataframe.sql.GroupedData": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.GroupedData.__init__": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.GroupedData.agg": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.GroupedData.count": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.GroupedData.mean": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.GroupedData.avg": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.GroupedData.max": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.GroupedData.min": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.GroupedData.sum": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.GroupedData.pivot": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Column": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Column.__init__": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Column.ensure_col": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Column.ensure_cols": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Column.invoke_anonymous_function": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Column.invoke_expression_over_column": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Column.binary_op": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Column.inverse_binary_op": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Column.unary_op": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Column.ensure_literal": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Column.copy": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Column.set_table_name": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Column.sql": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Column.alias": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Column.asc": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Column.desc": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Column.asc_nulls_first": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Column.asc_nulls_last": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Column.desc_nulls_first": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Column.desc_nulls_last": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Column.when": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Column.otherwise": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Column.isNull": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Column.isNotNull": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Column.cast": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.startswith": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Column.endswith": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Column.rlike": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Column.like": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Column.ilike": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Column.substr": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Column.isin": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Column.between": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Column.over": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrameNaFunctions": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrameNaFunctions.__init__": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrameNaFunctions.drop": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrameNaFunctions.fill": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrameNaFunctions.replace": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Window": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Window.partitionBy": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Window.orderBy": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Window.rowsBetween": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Window.rangeBetween": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.WindowSpec": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.WindowSpec.__init__": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.WindowSpec.copy": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.WindowSpec.sql": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.WindowSpec.partitionBy": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.WindowSpec.orderBy": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.WindowSpec.rowsBetween": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.WindowSpec.rangeBetween": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrameReader": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrameReader.__init__": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrameReader.table": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrameWriter": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrameWriter.__init__": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrameWriter.copy": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrameWriter.sql": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrameWriter.mode": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrameWriter.insertInto": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrameWriter.saveAsTable": {"tf": 1.7320508075688772}, "sqlglot.dialects": {"tf": 21.817424229271428}, "sqlglot.dialects.bigquery": {"tf": 1.7320508075688772}, "sqlglot.dialects.bigquery.BigQuery": {"tf": 1.7320508075688772}, "sqlglot.dialects.bigquery.BigQuery.Tokenizer": {"tf": 1.7320508075688772}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 6.082762530298219}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 11.532562594670797}, "sqlglot.dialects.bigquery.BigQuery.Generator.array_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.bigquery.BigQuery.Generator.transaction_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.bigquery.BigQuery.Generator.commit_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.bigquery.BigQuery.Generator.rollback_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.bigquery.BigQuery.Generator.in_unnest_op": {"tf": 1.7320508075688772}, "sqlglot.dialects.bigquery.BigQuery.Generator.except_op": {"tf": 1.7320508075688772}, "sqlglot.dialects.bigquery.BigQuery.Generator.intersect_op": {"tf": 1.7320508075688772}, "sqlglot.dialects.clickhouse": {"tf": 1.7320508075688772}, "sqlglot.dialects.clickhouse.ClickHouse": {"tf": 1.7320508075688772}, "sqlglot.dialects.clickhouse.ClickHouse.Tokenizer": {"tf": 1.7320508075688772}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 6.082762530298219}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 11.532562594670797}, "sqlglot.dialects.clickhouse.ClickHouse.Generator.cte_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.databricks": {"tf": 1.7320508075688772}, "sqlglot.dialects.databricks.Databricks": {"tf": 1.7320508075688772}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 6.082762530298219}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 11.532562594670797}, "sqlglot.dialects.databricks.Databricks.Tokenizer": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.Dialects": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.Dialects.DIALECT": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.Dialects.BIGQUERY": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.Dialects.CLICKHOUSE": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.Dialects.DUCKDB": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.Dialects.HIVE": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.Dialects.MYSQL": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.Dialects.ORACLE": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.Dialects.POSTGRES": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.Dialects.PRESTO": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.Dialects.REDSHIFT": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.Dialects.SNOWFLAKE": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.Dialects.SPARK": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.Dialects.SQLITE": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.Dialects.STARROCKS": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.Dialects.TABLEAU": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.Dialects.TRINO": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.Dialects.TSQL": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.Dialects.DATABRICKS": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.Dialects.DRILL": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.Dialects.TERADATA": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.Dialect": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.Dialect.get_or_raise": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.Dialect.format_time": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.Dialect.parse": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.Dialect.parse_into": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.Dialect.generate": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.Dialect.transpile": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.Dialect.tokenize": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.Dialect.parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.Dialect.generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.rename_func": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.approx_count_distinct_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.if_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.arrow_json_extract_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.arrow_json_extract_scalar_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.inline_array_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.no_ilike_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.no_paren_current_date_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.no_recursive_cte_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.no_safe_divide_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.no_tablesample_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.no_pivot_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.no_trycast_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.no_properties_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.str_position_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.struct_extract_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.var_map_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.format_time_lambda": {"tf": 5.744562646538029}, "sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.parse_date_delta": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.date_trunc_to_time": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.timestamptrunc_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.locate_to_strposition": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.strposition_to_locate_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.timestrtotime_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.datestrtodate_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.min_or_least": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.max_or_greatest": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.count_if_to_sum": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.trim_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.str_to_time_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.ts_or_ds_to_date_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.drill": {"tf": 1.7320508075688772}, "sqlglot.dialects.drill.Drill": {"tf": 1.7320508075688772}, "sqlglot.dialects.drill.Drill.Tokenizer": {"tf": 1.7320508075688772}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 6.082762530298219}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 11.532562594670797}, "sqlglot.dialects.drill.Drill.Generator.normalize_func": {"tf": 1.7320508075688772}, "sqlglot.dialects.duckdb": {"tf": 1.7320508075688772}, "sqlglot.dialects.duckdb.DuckDB": {"tf": 1.7320508075688772}, "sqlglot.dialects.duckdb.DuckDB.Tokenizer": {"tf": 1.7320508075688772}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 6.082762530298219}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 11.532562594670797}, "sqlglot.dialects.duckdb.DuckDB.Generator.tablesample_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.hive": {"tf": 1.7320508075688772}, "sqlglot.dialects.hive.Hive": {"tf": 1.7320508075688772}, "sqlglot.dialects.hive.Hive.Tokenizer": {"tf": 1.7320508075688772}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 6.082762530298219}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 11.532562594670797}, "sqlglot.dialects.hive.Hive.Generator.arrayagg_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.hive.Hive.Generator.with_properties": {"tf": 1.7320508075688772}, "sqlglot.dialects.hive.Hive.Generator.datatype_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.mysql": {"tf": 1.7320508075688772}, "sqlglot.dialects.mysql.MySQL": {"tf": 1.7320508075688772}, "sqlglot.dialects.mysql.MySQL.Tokenizer": {"tf": 1.7320508075688772}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 6.082762530298219}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 11.532562594670797}, "sqlglot.dialects.mysql.MySQL.Generator.show_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.oracle": {"tf": 1.7320508075688772}, "sqlglot.dialects.oracle.Oracle": {"tf": 1.7320508075688772}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 6.082762530298219}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 11.532562594670797}, "sqlglot.dialects.oracle.Oracle.Generator.offset_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.oracle.Oracle.Generator.column_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.oracle.Oracle.Generator.xmltable_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.oracle.Oracle.Tokenizer": {"tf": 1.7320508075688772}, "sqlglot.dialects.postgres": {"tf": 1.7320508075688772}, "sqlglot.dialects.postgres.Postgres": {"tf": 1.7320508075688772}, "sqlglot.dialects.postgres.Postgres.Tokenizer": {"tf": 1.7320508075688772}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 6.082762530298219}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 11.532562594670797}, "sqlglot.dialects.presto": {"tf": 1.7320508075688772}, "sqlglot.dialects.presto.Presto": {"tf": 1.7320508075688772}, "sqlglot.dialects.presto.Presto.Tokenizer": {"tf": 1.7320508075688772}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 6.082762530298219}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 11.532562594670797}, "sqlglot.dialects.presto.Presto.Generator.transaction_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.redshift": {"tf": 1.7320508075688772}, "sqlglot.dialects.redshift.Redshift": {"tf": 1.7320508075688772}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 6.082762530298219}, "sqlglot.dialects.redshift.Redshift.Tokenizer": {"tf": 1.7320508075688772}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 11.532562594670797}, "sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 3.3166247903554}, "sqlglot.dialects.redshift.Redshift.Generator.with_properties": {"tf": 2}, "sqlglot.dialects.redshift.Redshift.Generator.renametable_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 4.47213595499958}, "sqlglot.dialects.snowflake": {"tf": 1.7320508075688772}, "sqlglot.dialects.snowflake.Snowflake": {"tf": 1.7320508075688772}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 6.082762530298219}, "sqlglot.dialects.snowflake.Snowflake.Tokenizer": {"tf": 1.7320508075688772}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 11.532562594670797}, "sqlglot.dialects.snowflake.Snowflake.Generator.except_op": {"tf": 1.7320508075688772}, "sqlglot.dialects.snowflake.Snowflake.Generator.intersect_op": {"tf": 1.7320508075688772}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 2.8284271247461903}, "sqlglot.dialects.snowflake.Snowflake.Generator.settag_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 2.8284271247461903}, "sqlglot.dialects.snowflake.Snowflake.Generator.describe_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.snowflake.Snowflake.Generator.generatedasidentitycolumnconstraint_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.spark": {"tf": 1.7320508075688772}, "sqlglot.dialects.spark.Spark": {"tf": 1.7320508075688772}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 6.082762530298219}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 11.532562594670797}, "sqlglot.dialects.spark.Spark.Generator.cast_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.spark.Spark.Tokenizer": {"tf": 1.7320508075688772}, "sqlglot.dialects.sqlite": {"tf": 1.7320508075688772}, "sqlglot.dialects.sqlite.SQLite": {"tf": 1.7320508075688772}, "sqlglot.dialects.sqlite.SQLite.Tokenizer": {"tf": 1.7320508075688772}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 6.082762530298219}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 11.532562594670797}, "sqlglot.dialects.sqlite.SQLite.Generator.cast_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.sqlite.SQLite.Generator.datediff_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.sqlite.SQLite.Generator.groupconcat_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.sqlite.SQLite.Generator.least_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.sqlite.SQLite.Generator.transaction_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.starrocks": {"tf": 1.7320508075688772}, "sqlglot.dialects.starrocks.StarRocks": {"tf": 1.7320508075688772}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 6.082762530298219}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 11.532562594670797}, "sqlglot.dialects.tableau": {"tf": 1.7320508075688772}, "sqlglot.dialects.tableau.Tableau": {"tf": 1.7320508075688772}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 11.532562594670797}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 6.082762530298219}, "sqlglot.dialects.teradata": {"tf": 1.7320508075688772}, "sqlglot.dialects.teradata.Teradata": {"tf": 1.7320508075688772}, "sqlglot.dialects.teradata.Teradata.Tokenizer": {"tf": 1.7320508075688772}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 6.082762530298219}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 11.532562594670797}, "sqlglot.dialects.teradata.Teradata.Generator.partitionedbyproperty_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.teradata.Teradata.Generator.update_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.teradata.Teradata.Generator.mod_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.teradata.Teradata.Generator.datatype_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.teradata.Teradata.Generator.rangen_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.trino": {"tf": 1.7320508075688772}, "sqlglot.dialects.trino.Trino": {"tf": 1.7320508075688772}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 11.532562594670797}, "sqlglot.dialects.trino.Trino.Tokenizer": {"tf": 1.7320508075688772}, "sqlglot.dialects.tsql": {"tf": 1.7320508075688772}, "sqlglot.dialects.tsql.generate_date_delta_with_unit_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.tsql.TSQL": {"tf": 1.7320508075688772}, "sqlglot.dialects.tsql.TSQL.Tokenizer": {"tf": 1.7320508075688772}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 6.082762530298219}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 11.532562594670797}, "sqlglot.dialects.tsql.TSQL.Generator.offset_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.tsql.TSQL.Generator.systemtime_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.tsql.TSQL.Generator.returnsproperty_sql": {"tf": 1.7320508075688772}, "sqlglot.diff": {"tf": 50.556898639058154}, "sqlglot.diff.Insert": {"tf": 1.4142135623730951}, "sqlglot.diff.Insert.__init__": {"tf": 1.7320508075688772}, "sqlglot.diff.Remove": {"tf": 1.4142135623730951}, "sqlglot.diff.Remove.__init__": {"tf": 1.7320508075688772}, "sqlglot.diff.Move": {"tf": 1.4142135623730951}, "sqlglot.diff.Move.__init__": {"tf": 1.7320508075688772}, "sqlglot.diff.Update": {"tf": 1.4142135623730951}, "sqlglot.diff.Update.__init__": {"tf": 1.7320508075688772}, "sqlglot.diff.Keep": {"tf": 1.4142135623730951}, "sqlglot.diff.Keep.__init__": {"tf": 1.7320508075688772}, "sqlglot.diff.diff": {"tf": 11.313708498984761}, "sqlglot.diff.ChangeDistiller": {"tf": 2.6457513110645907}, "sqlglot.diff.ChangeDistiller.__init__": {"tf": 1.7320508075688772}, "sqlglot.diff.ChangeDistiller.diff": {"tf": 1.7320508075688772}, "sqlglot.errors": {"tf": 1.7320508075688772}, "sqlglot.errors.ErrorLevel": {"tf": 1.7320508075688772}, "sqlglot.errors.ErrorLevel.IGNORE": {"tf": 1.7320508075688772}, "sqlglot.errors.ErrorLevel.WARN": {"tf": 1.7320508075688772}, "sqlglot.errors.ErrorLevel.RAISE": {"tf": 1.7320508075688772}, "sqlglot.errors.ErrorLevel.IMMEDIATE": {"tf": 1.7320508075688772}, "sqlglot.errors.SqlglotError": {"tf": 1.7320508075688772}, "sqlglot.errors.UnsupportedError": {"tf": 1.7320508075688772}, "sqlglot.errors.ParseError": {"tf": 1.7320508075688772}, "sqlglot.errors.ParseError.__init__": {"tf": 1.7320508075688772}, "sqlglot.errors.ParseError.new": {"tf": 1.7320508075688772}, "sqlglot.errors.TokenError": {"tf": 1.7320508075688772}, "sqlglot.errors.OptimizeError": {"tf": 1.7320508075688772}, "sqlglot.errors.SchemaError": {"tf": 1.7320508075688772}, "sqlglot.errors.ExecuteError": {"tf": 1.7320508075688772}, "sqlglot.errors.concat_messages": {"tf": 1.7320508075688772}, "sqlglot.errors.merge_errors": {"tf": 1.7320508075688772}, "sqlglot.executor": {"tf": 35.11409973215888}, "sqlglot.executor.execute": {"tf": 7}, "sqlglot.executor.context": {"tf": 1.7320508075688772}, "sqlglot.executor.context.Context": {"tf": 3}, "sqlglot.executor.context.Context.__init__": {"tf": 1.7320508075688772}, "sqlglot.executor.context.Context.eval": {"tf": 1.7320508075688772}, "sqlglot.executor.context.Context.eval_tuple": {"tf": 1.7320508075688772}, "sqlglot.executor.context.Context.add_columns": {"tf": 1.7320508075688772}, "sqlglot.executor.context.Context.table_iter": {"tf": 1.7320508075688772}, "sqlglot.executor.context.Context.filter": {"tf": 1.7320508075688772}, "sqlglot.executor.context.Context.sort": {"tf": 1.7320508075688772}, "sqlglot.executor.context.Context.set_row": {"tf": 1.7320508075688772}, "sqlglot.executor.context.Context.set_index": {"tf": 1.7320508075688772}, "sqlglot.executor.context.Context.set_range": {"tf": 1.7320508075688772}, "sqlglot.executor.env": {"tf": 1.7320508075688772}, "sqlglot.executor.env.reverse_key": {"tf": 1.7320508075688772}, "sqlglot.executor.env.reverse_key.__init__": {"tf": 1.7320508075688772}, "sqlglot.executor.env.filter_nulls": {"tf": 1.7320508075688772}, "sqlglot.executor.env.null_if_any": {"tf": 4.58257569495584}, "sqlglot.executor.env.str_position": {"tf": 1.7320508075688772}, "sqlglot.executor.env.substring": {"tf": 1.7320508075688772}, "sqlglot.executor.env.cast": {"tf": 1.7320508075688772}, "sqlglot.executor.env.ordered": {"tf": 1.7320508075688772}, "sqlglot.executor.env.interval": {"tf": 1.7320508075688772}, "sqlglot.executor.python": {"tf": 1.7320508075688772}, "sqlglot.executor.python.PythonExecutor": {"tf": 1.7320508075688772}, "sqlglot.executor.python.PythonExecutor.__init__": {"tf": 1.7320508075688772}, "sqlglot.executor.python.PythonExecutor.execute": {"tf": 1.7320508075688772}, "sqlglot.executor.python.PythonExecutor.generate": {"tf": 1.7320508075688772}, "sqlglot.executor.python.PythonExecutor.generate_tuple": {"tf": 1.7320508075688772}, "sqlglot.executor.python.PythonExecutor.context": {"tf": 1.7320508075688772}, "sqlglot.executor.python.PythonExecutor.table": {"tf": 1.7320508075688772}, "sqlglot.executor.python.PythonExecutor.scan": {"tf": 1.7320508075688772}, "sqlglot.executor.python.PythonExecutor.static": {"tf": 1.7320508075688772}, "sqlglot.executor.python.PythonExecutor.scan_table": {"tf": 1.7320508075688772}, "sqlglot.executor.python.PythonExecutor.scan_csv": {"tf": 1.7320508075688772}, "sqlglot.executor.python.PythonExecutor.join": {"tf": 1.7320508075688772}, "sqlglot.executor.python.PythonExecutor.nested_loop_join": {"tf": 1.7320508075688772}, "sqlglot.executor.python.PythonExecutor.hash_join": {"tf": 1.7320508075688772}, "sqlglot.executor.python.PythonExecutor.aggregate": {"tf": 1.7320508075688772}, "sqlglot.executor.python.PythonExecutor.sort": {"tf": 1.7320508075688772}, "sqlglot.executor.python.PythonExecutor.set_operation": {"tf": 1.7320508075688772}, "sqlglot.executor.python.Python": {"tf": 1.7320508075688772}, "sqlglot.executor.python.Python.Tokenizer": {"tf": 1.7320508075688772}, "sqlglot.executor.python.Python.Generator": {"tf": 11.532562594670797}, "sqlglot.executor.table": {"tf": 1.7320508075688772}, "sqlglot.executor.table.Table": {"tf": 1.7320508075688772}, "sqlglot.executor.table.Table.__init__": {"tf": 1.7320508075688772}, "sqlglot.executor.table.Table.add_columns": {"tf": 1.7320508075688772}, "sqlglot.executor.table.Table.append": {"tf": 1.7320508075688772}, "sqlglot.executor.table.Table.pop": {"tf": 1.7320508075688772}, "sqlglot.executor.table.TableIter": {"tf": 1.7320508075688772}, "sqlglot.executor.table.TableIter.__init__": {"tf": 1.7320508075688772}, "sqlglot.executor.table.RangeReader": {"tf": 1.7320508075688772}, "sqlglot.executor.table.RangeReader.__init__": {"tf": 1.7320508075688772}, "sqlglot.executor.table.RowReader": {"tf": 1.7320508075688772}, "sqlglot.executor.table.RowReader.__init__": {"tf": 1.7320508075688772}, "sqlglot.executor.table.Tables": {"tf": 4}, "sqlglot.executor.table.ensure_tables": {"tf": 1.7320508075688772}, "sqlglot.expressions": {"tf": 4}, "sqlglot.expressions.Expression": {"tf": 10.954451150103322}, "sqlglot.expressions.Expression.__init__": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.this": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.expression": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.expressions": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.text": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.is_string": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.is_number": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.is_int": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.is_star": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.alias": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.output_name": {"tf": 11.313708498984761}, "sqlglot.expressions.Expression.copy": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.append": {"tf": 4.358898943540674}, "sqlglot.expressions.Expression.set": {"tf": 4.898979485566356}, "sqlglot.expressions.Expression.depth": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.iter_expressions": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.find": {"tf": 4.795831523312719}, "sqlglot.expressions.Expression.find_all": {"tf": 4.795831523312719}, "sqlglot.expressions.Expression.find_ancestor": {"tf": 4.795831523312719}, "sqlglot.expressions.Expression.parent_select": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.same_parent": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.root": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.walk": {"tf": 5.5677643628300215}, "sqlglot.expressions.Expression.dfs": {"tf": 3.4641016151377544}, "sqlglot.expressions.Expression.bfs": {"tf": 3.4641016151377544}, "sqlglot.expressions.Expression.unnest": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.unalias": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.unnest_operands": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.flatten": {"tf": 2.449489742783178}, "sqlglot.expressions.Expression.sql": {"tf": 5.477225575051661}, "sqlglot.expressions.Expression.transform": {"tf": 5.477225575051661}, "sqlglot.expressions.Expression.replace": {"tf": 5.5677643628300215}, "sqlglot.expressions.Expression.pop": {"tf": 3.4641016151377544}, "sqlglot.expressions.Expression.assert_is": {"tf": 9.643650760992955}, "sqlglot.expressions.Expression.error_messages": {"tf": 4.795831523312719}, "sqlglot.expressions.Expression.dump": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.load": {"tf": 2.23606797749979}, "sqlglot.expressions.Condition": {"tf": 1.7320508075688772}, "sqlglot.expressions.Condition.and_": {"tf": 9.746794344808963}, "sqlglot.expressions.Condition.or_": {"tf": 9.746794344808963}, "sqlglot.expressions.Condition.not_": {"tf": 7.874007874011811}, "sqlglot.expressions.Predicate": {"tf": 1.7320508075688772}, "sqlglot.expressions.DerivedTable": {"tf": 1.7320508075688772}, "sqlglot.expressions.Unionable": {"tf": 1.7320508075688772}, "sqlglot.expressions.Unionable.union": {"tf": 10.723805294763608}, "sqlglot.expressions.Unionable.intersect": {"tf": 10.677078252031311}, "sqlglot.expressions.Unionable.except_": {"tf": 10.723805294763608}, "sqlglot.expressions.UDTF": {"tf": 1.7320508075688772}, "sqlglot.expressions.Cache": {"tf": 1.7320508075688772}, "sqlglot.expressions.Uncache": {"tf": 1.7320508075688772}, "sqlglot.expressions.Create": {"tf": 1.7320508075688772}, "sqlglot.expressions.Describe": {"tf": 1.7320508075688772}, "sqlglot.expressions.Pragma": {"tf": 1.7320508075688772}, "sqlglot.expressions.Set": {"tf": 1.7320508075688772}, "sqlglot.expressions.SetItem": {"tf": 1.7320508075688772}, "sqlglot.expressions.Show": {"tf": 1.7320508075688772}, "sqlglot.expressions.UserDefinedFunction": {"tf": 1.7320508075688772}, "sqlglot.expressions.CharacterSet": {"tf": 1.7320508075688772}, "sqlglot.expressions.With": {"tf": 1.7320508075688772}, "sqlglot.expressions.WithinGroup": {"tf": 1.7320508075688772}, "sqlglot.expressions.CTE": {"tf": 1.7320508075688772}, "sqlglot.expressions.TableAlias": {"tf": 1.7320508075688772}, "sqlglot.expressions.BitString": {"tf": 1.7320508075688772}, "sqlglot.expressions.HexString": {"tf": 1.7320508075688772}, "sqlglot.expressions.ByteString": {"tf": 1.7320508075688772}, "sqlglot.expressions.Column": {"tf": 1.7320508075688772}, "sqlglot.expressions.Column.output_name": {"tf": 11.313708498984761}, "sqlglot.expressions.Column.parts": {"tf": 1.7320508075688772}, "sqlglot.expressions.Column.to_dot": {"tf": 1.7320508075688772}, "sqlglot.expressions.ColumnPosition": {"tf": 1.7320508075688772}, "sqlglot.expressions.ColumnDef": {"tf": 1.7320508075688772}, "sqlglot.expressions.AlterColumn": {"tf": 1.7320508075688772}, "sqlglot.expressions.RenameTable": {"tf": 1.7320508075688772}, "sqlglot.expressions.SetTag": {"tf": 1.7320508075688772}, "sqlglot.expressions.Comment": {"tf": 1.7320508075688772}, "sqlglot.expressions.ColumnConstraint": {"tf": 1.7320508075688772}, "sqlglot.expressions.ColumnConstraintKind": {"tf": 1.7320508075688772}, "sqlglot.expressions.AutoIncrementColumnConstraint": {"tf": 1.7320508075688772}, "sqlglot.expressions.CaseSpecificColumnConstraint": {"tf": 1.7320508075688772}, "sqlglot.expressions.CharacterSetColumnConstraint": {"tf": 1.7320508075688772}, "sqlglot.expressions.CheckColumnConstraint": {"tf": 1.7320508075688772}, "sqlglot.expressions.CollateColumnConstraint": {"tf": 1.7320508075688772}, "sqlglot.expressions.CommentColumnConstraint": {"tf": 1.7320508075688772}, "sqlglot.expressions.CompressColumnConstraint": {"tf": 1.7320508075688772}, "sqlglot.expressions.DateFormatColumnConstraint": {"tf": 1.7320508075688772}, "sqlglot.expressions.DefaultColumnConstraint": {"tf": 1.7320508075688772}, "sqlglot.expressions.EncodeColumnConstraint": {"tf": 1.7320508075688772}, "sqlglot.expressions.GeneratedAsIdentityColumnConstraint": {"tf": 1.7320508075688772}, "sqlglot.expressions.InlineLengthColumnConstraint": {"tf": 1.7320508075688772}, "sqlglot.expressions.NotNullColumnConstraint": {"tf": 1.7320508075688772}, "sqlglot.expressions.PrimaryKeyColumnConstraint": {"tf": 1.7320508075688772}, "sqlglot.expressions.TitleColumnConstraint": {"tf": 1.7320508075688772}, "sqlglot.expressions.UniqueColumnConstraint": {"tf": 1.7320508075688772}, "sqlglot.expressions.UppercaseColumnConstraint": {"tf": 1.7320508075688772}, "sqlglot.expressions.PathColumnConstraint": {"tf": 1.7320508075688772}, "sqlglot.expressions.Constraint": {"tf": 1.7320508075688772}, "sqlglot.expressions.Delete": {"tf": 1.7320508075688772}, "sqlglot.expressions.Delete.delete": {"tf": 9.055385138137417}, "sqlglot.expressions.Delete.where": {"tf": 10.198039027185569}, "sqlglot.expressions.Delete.returning": {"tf": 10.488088481701515}, "sqlglot.expressions.Drop": {"tf": 1.7320508075688772}, "sqlglot.expressions.Filter": {"tf": 1.7320508075688772}, "sqlglot.expressions.Check": {"tf": 1.7320508075688772}, "sqlglot.expressions.Directory": {"tf": 1.7320508075688772}, "sqlglot.expressions.ForeignKey": {"tf": 1.7320508075688772}, "sqlglot.expressions.PrimaryKey": {"tf": 1.7320508075688772}, "sqlglot.expressions.Unique": {"tf": 1.7320508075688772}, "sqlglot.expressions.Into": {"tf": 1.7320508075688772}, "sqlglot.expressions.From": {"tf": 1.7320508075688772}, "sqlglot.expressions.Having": {"tf": 1.7320508075688772}, "sqlglot.expressions.Hint": {"tf": 1.7320508075688772}, "sqlglot.expressions.JoinHint": {"tf": 1.7320508075688772}, "sqlglot.expressions.Identifier": {"tf": 1.7320508075688772}, "sqlglot.expressions.Identifier.output_name": {"tf": 11.313708498984761}, "sqlglot.expressions.Index": {"tf": 1.7320508075688772}, "sqlglot.expressions.Insert": {"tf": 1.7320508075688772}, "sqlglot.expressions.Returning": {"tf": 1.7320508075688772}, "sqlglot.expressions.Introducer": {"tf": 1.7320508075688772}, "sqlglot.expressions.National": {"tf": 1.7320508075688772}, "sqlglot.expressions.LoadData": {"tf": 1.7320508075688772}, "sqlglot.expressions.Partition": {"tf": 1.7320508075688772}, "sqlglot.expressions.Fetch": {"tf": 1.7320508075688772}, "sqlglot.expressions.Group": {"tf": 1.7320508075688772}, "sqlglot.expressions.Lambda": {"tf": 1.7320508075688772}, "sqlglot.expressions.Limit": {"tf": 1.7320508075688772}, "sqlglot.expressions.Literal": {"tf": 1.7320508075688772}, "sqlglot.expressions.Literal.number": {"tf": 1.7320508075688772}, "sqlglot.expressions.Literal.string": {"tf": 1.7320508075688772}, "sqlglot.expressions.Literal.output_name": {"tf": 11.313708498984761}, "sqlglot.expressions.Join": {"tf": 1.7320508075688772}, "sqlglot.expressions.Join.on": {"tf": 11.40175425099138}, "sqlglot.expressions.Join.using": {"tf": 11.704699910719626}, "sqlglot.expressions.Lateral": {"tf": 1.7320508075688772}, "sqlglot.expressions.MatchRecognize": {"tf": 1.7320508075688772}, "sqlglot.expressions.Final": {"tf": 1.7320508075688772}, "sqlglot.expressions.Offset": {"tf": 1.7320508075688772}, "sqlglot.expressions.Order": {"tf": 1.7320508075688772}, "sqlglot.expressions.Cluster": {"tf": 1.7320508075688772}, "sqlglot.expressions.Distribute": {"tf": 1.7320508075688772}, "sqlglot.expressions.Sort": {"tf": 1.7320508075688772}, "sqlglot.expressions.Ordered": {"tf": 1.7320508075688772}, "sqlglot.expressions.Property": {"tf": 1.7320508075688772}, "sqlglot.expressions.AfterJournalProperty": {"tf": 1.7320508075688772}, "sqlglot.expressions.AlgorithmProperty": {"tf": 1.7320508075688772}, "sqlglot.expressions.AutoIncrementProperty": {"tf": 1.7320508075688772}, "sqlglot.expressions.BlockCompressionProperty": {"tf": 1.7320508075688772}, "sqlglot.expressions.CharacterSetProperty": {"tf": 1.7320508075688772}, "sqlglot.expressions.ChecksumProperty": {"tf": 1.7320508075688772}, "sqlglot.expressions.CollateProperty": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataBlocksizeProperty": {"tf": 1.7320508075688772}, "sqlglot.expressions.DefinerProperty": {"tf": 1.7320508075688772}, "sqlglot.expressions.DistKeyProperty": {"tf": 1.7320508075688772}, "sqlglot.expressions.DistStyleProperty": {"tf": 1.7320508075688772}, "sqlglot.expressions.EngineProperty": {"tf": 1.7320508075688772}, "sqlglot.expressions.ExecuteAsProperty": {"tf": 1.7320508075688772}, "sqlglot.expressions.ExternalProperty": {"tf": 1.7320508075688772}, "sqlglot.expressions.FallbackProperty": {"tf": 1.7320508075688772}, "sqlglot.expressions.FileFormatProperty": {"tf": 1.7320508075688772}, "sqlglot.expressions.FreespaceProperty": {"tf": 1.7320508075688772}, "sqlglot.expressions.IsolatedLoadingProperty": {"tf": 1.7320508075688772}, "sqlglot.expressions.JournalProperty": {"tf": 1.7320508075688772}, "sqlglot.expressions.LanguageProperty": {"tf": 1.7320508075688772}, "sqlglot.expressions.LikeProperty": {"tf": 1.7320508075688772}, "sqlglot.expressions.LocationProperty": {"tf": 1.7320508075688772}, "sqlglot.expressions.LockingProperty": {"tf": 1.7320508075688772}, "sqlglot.expressions.LogProperty": {"tf": 1.7320508075688772}, "sqlglot.expressions.MaterializedProperty": {"tf": 1.7320508075688772}, "sqlglot.expressions.MergeBlockRatioProperty": {"tf": 1.7320508075688772}, "sqlglot.expressions.NoPrimaryIndexProperty": {"tf": 1.7320508075688772}, "sqlglot.expressions.OnCommitProperty": {"tf": 1.7320508075688772}, "sqlglot.expressions.PartitionedByProperty": {"tf": 1.7320508075688772}, "sqlglot.expressions.ReturnsProperty": {"tf": 1.7320508075688772}, "sqlglot.expressions.RowFormatDelimitedProperty": {"tf": 1.7320508075688772}, "sqlglot.expressions.RowFormatSerdeProperty": {"tf": 1.7320508075688772}, "sqlglot.expressions.SchemaCommentProperty": {"tf": 1.7320508075688772}, "sqlglot.expressions.SerdeProperties": {"tf": 1.7320508075688772}, "sqlglot.expressions.SetProperty": {"tf": 1.7320508075688772}, "sqlglot.expressions.SortKeyProperty": {"tf": 1.7320508075688772}, "sqlglot.expressions.SqlSecurityProperty": {"tf": 1.7320508075688772}, "sqlglot.expressions.TableFormatProperty": {"tf": 1.7320508075688772}, "sqlglot.expressions.TemporaryProperty": {"tf": 1.7320508075688772}, "sqlglot.expressions.TransientProperty": {"tf": 1.7320508075688772}, "sqlglot.expressions.VolatilityProperty": {"tf": 1.7320508075688772}, "sqlglot.expressions.WithDataProperty": {"tf": 1.7320508075688772}, "sqlglot.expressions.WithJournalTableProperty": {"tf": 1.7320508075688772}, "sqlglot.expressions.Properties": {"tf": 1.7320508075688772}, "sqlglot.expressions.Properties.Location": {"tf": 1.7320508075688772}, "sqlglot.expressions.Properties.Location.POST_CREATE": {"tf": 1.7320508075688772}, "sqlglot.expressions.Properties.Location.POST_NAME": {"tf": 1.7320508075688772}, "sqlglot.expressions.Properties.Location.POST_SCHEMA": {"tf": 1.7320508075688772}, "sqlglot.expressions.Properties.Location.POST_WITH": {"tf": 1.7320508075688772}, "sqlglot.expressions.Properties.Location.POST_ALIAS": {"tf": 1.7320508075688772}, "sqlglot.expressions.Properties.Location.POST_EXPRESSION": {"tf": 1.7320508075688772}, "sqlglot.expressions.Properties.Location.POST_INDEX": {"tf": 1.7320508075688772}, "sqlglot.expressions.Properties.Location.UNSUPPORTED": {"tf": 1.7320508075688772}, "sqlglot.expressions.Properties.from_dict": {"tf": 1.7320508075688772}, "sqlglot.expressions.Qualify": {"tf": 1.7320508075688772}, "sqlglot.expressions.Return": {"tf": 1.7320508075688772}, "sqlglot.expressions.Reference": {"tf": 1.7320508075688772}, "sqlglot.expressions.Tuple": {"tf": 1.7320508075688772}, "sqlglot.expressions.Subqueryable": {"tf": 1.7320508075688772}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 11.832159566199232}, "sqlglot.expressions.Subqueryable.limit": {"tf": 1.7320508075688772}, "sqlglot.expressions.Subqueryable.with_": {"tf": 12.767145334803704}, "sqlglot.expressions.Table": {"tf": 1.7320508075688772}, "sqlglot.expressions.SystemTime": {"tf": 1.7320508075688772}, "sqlglot.expressions.Union": {"tf": 1.7320508075688772}, "sqlglot.expressions.Union.limit": {"tf": 11.090536506409418}, "sqlglot.expressions.Union.select": {"tf": 10.723805294763608}, "sqlglot.expressions.Union.is_star": {"tf": 1.7320508075688772}, "sqlglot.expressions.Except": {"tf": 1.7320508075688772}, "sqlglot.expressions.Intersect": {"tf": 1.7320508075688772}, "sqlglot.expressions.Unnest": {"tf": 1.7320508075688772}, "sqlglot.expressions.Update": {"tf": 1.7320508075688772}, "sqlglot.expressions.Values": {"tf": 1.7320508075688772}, "sqlglot.expressions.Var": {"tf": 1.7320508075688772}, "sqlglot.expressions.Schema": {"tf": 1.7320508075688772}, "sqlglot.expressions.Lock": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.from_": {"tf": 11.135528725660043}, "sqlglot.expressions.Select.group_by": {"tf": 11.958260743101398}, "sqlglot.expressions.Select.order_by": {"tf": 11.704699910719626}, "sqlglot.expressions.Select.sort_by": {"tf": 11.704699910719626}, "sqlglot.expressions.Select.cluster_by": {"tf": 11.704699910719626}, "sqlglot.expressions.Select.limit": {"tf": 11.224972160321824}, "sqlglot.expressions.Select.offset": {"tf": 11.224972160321824}, "sqlglot.expressions.Select.select": {"tf": 10.246950765959598}, "sqlglot.expressions.Select.lateral": {"tf": 11.445523142259598}, "sqlglot.expressions.Select.join": {"tf": 19.026297590440446}, "sqlglot.expressions.Select.where": {"tf": 11.445523142259598}, "sqlglot.expressions.Select.having": {"tf": 12.288205727444508}, "sqlglot.expressions.Select.window": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.qualify": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.distinct": {"tf": 10.04987562112089}, "sqlglot.expressions.Select.ctas": {"tf": 11.357816691600547}, "sqlglot.expressions.Select.lock": {"tf": 14.696938456699069}, "sqlglot.expressions.Select.is_star": {"tf": 1.7320508075688772}, "sqlglot.expressions.Subquery": {"tf": 1.7320508075688772}, "sqlglot.expressions.Subquery.unnest": {"tf": 1.7320508075688772}, "sqlglot.expressions.Subquery.is_star": {"tf": 1.7320508075688772}, "sqlglot.expressions.Subquery.output_name": {"tf": 11.313708498984761}, "sqlglot.expressions.TableSample": {"tf": 1.7320508075688772}, "sqlglot.expressions.Tag": {"tf": 2.23606797749979}, "sqlglot.expressions.Pivot": {"tf": 1.7320508075688772}, "sqlglot.expressions.Window": {"tf": 1.7320508075688772}, "sqlglot.expressions.WindowSpec": {"tf": 1.7320508075688772}, "sqlglot.expressions.Where": {"tf": 1.7320508075688772}, "sqlglot.expressions.Star": {"tf": 1.7320508075688772}, "sqlglot.expressions.Star.output_name": {"tf": 11.313708498984761}, "sqlglot.expressions.Parameter": {"tf": 1.7320508075688772}, "sqlglot.expressions.SessionParameter": {"tf": 1.7320508075688772}, "sqlglot.expressions.Placeholder": {"tf": 1.7320508075688772}, "sqlglot.expressions.Null": {"tf": 1.7320508075688772}, "sqlglot.expressions.Boolean": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.CHAR": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.NCHAR": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.VARCHAR": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.NVARCHAR": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.TEXT": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.MEDIUMTEXT": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.LONGTEXT": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.MEDIUMBLOB": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.LONGBLOB": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.BINARY": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.VARBINARY": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.INT": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.UINT": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.TINYINT": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.UTINYINT": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.SMALLINT": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.USMALLINT": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.BIGINT": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.UBIGINT": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.FLOAT": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.DOUBLE": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.DECIMAL": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.BIT": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.BOOLEAN": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.JSON": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.JSONB": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.INTERVAL": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.TIME": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.TIMESTAMP": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.TIMESTAMPTZ": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.TIMESTAMPLTZ": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.DATE": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.DATETIME": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.ARRAY": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.MAP": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.UUID": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.GEOGRAPHY": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.GEOMETRY": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.STRUCT": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.NULLABLE": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.HLLSKETCH": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.HSTORE": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.SUPER": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.SERIAL": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.SMALLSERIAL": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.BIGSERIAL": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.XML": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.UNIQUEIDENTIFIER": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.MONEY": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.SMALLMONEY": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.ROWVERSION": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.IMAGE": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.VARIANT": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.OBJECT": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.INET": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.NULL": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.UNKNOWN": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.build": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.is_type": {"tf": 1.7320508075688772}, "sqlglot.expressions.PseudoType": {"tf": 1.7320508075688772}, "sqlglot.expressions.StructKwarg": {"tf": 1.7320508075688772}, "sqlglot.expressions.SubqueryPredicate": {"tf": 1.7320508075688772}, "sqlglot.expressions.All": {"tf": 1.7320508075688772}, "sqlglot.expressions.Any": {"tf": 1.7320508075688772}, "sqlglot.expressions.Exists": {"tf": 1.7320508075688772}, "sqlglot.expressions.Command": {"tf": 1.7320508075688772}, "sqlglot.expressions.Transaction": {"tf": 1.7320508075688772}, "sqlglot.expressions.Commit": {"tf": 1.7320508075688772}, "sqlglot.expressions.Rollback": {"tf": 1.7320508075688772}, "sqlglot.expressions.AlterTable": {"tf": 1.7320508075688772}, "sqlglot.expressions.AddConstraint": {"tf": 1.7320508075688772}, "sqlglot.expressions.DropPartition": {"tf": 1.7320508075688772}, "sqlglot.expressions.Binary": {"tf": 1.7320508075688772}, "sqlglot.expressions.Add": {"tf": 1.7320508075688772}, "sqlglot.expressions.Connector": {"tf": 1.7320508075688772}, "sqlglot.expressions.And": {"tf": 1.7320508075688772}, "sqlglot.expressions.Or": {"tf": 1.7320508075688772}, "sqlglot.expressions.BitwiseAnd": {"tf": 1.7320508075688772}, "sqlglot.expressions.BitwiseLeftShift": {"tf": 1.7320508075688772}, "sqlglot.expressions.BitwiseOr": {"tf": 1.7320508075688772}, "sqlglot.expressions.BitwiseRightShift": {"tf": 1.7320508075688772}, "sqlglot.expressions.BitwiseXor": {"tf": 1.7320508075688772}, "sqlglot.expressions.Div": {"tf": 1.7320508075688772}, "sqlglot.expressions.Overlaps": {"tf": 1.7320508075688772}, "sqlglot.expressions.Dot": {"tf": 1.7320508075688772}, "sqlglot.expressions.Dot.build": {"tf": 1.7320508075688772}, "sqlglot.expressions.DPipe": {"tf": 1.7320508075688772}, "sqlglot.expressions.EQ": {"tf": 1.7320508075688772}, "sqlglot.expressions.NullSafeEQ": {"tf": 1.7320508075688772}, "sqlglot.expressions.NullSafeNEQ": {"tf": 1.7320508075688772}, "sqlglot.expressions.Distance": {"tf": 1.7320508075688772}, "sqlglot.expressions.Escape": {"tf": 1.7320508075688772}, "sqlglot.expressions.Glob": {"tf": 1.7320508075688772}, "sqlglot.expressions.GT": {"tf": 1.7320508075688772}, "sqlglot.expressions.GTE": {"tf": 1.7320508075688772}, "sqlglot.expressions.ILike": {"tf": 1.7320508075688772}, "sqlglot.expressions.ILikeAny": {"tf": 1.7320508075688772}, "sqlglot.expressions.IntDiv": {"tf": 1.7320508075688772}, "sqlglot.expressions.Is": {"tf": 1.7320508075688772}, "sqlglot.expressions.Kwarg": {"tf": 1.7320508075688772}, "sqlglot.expressions.Like": {"tf": 1.7320508075688772}, "sqlglot.expressions.LikeAny": {"tf": 1.7320508075688772}, "sqlglot.expressions.LT": {"tf": 1.7320508075688772}, "sqlglot.expressions.LTE": {"tf": 1.7320508075688772}, "sqlglot.expressions.Mod": {"tf": 1.7320508075688772}, "sqlglot.expressions.Mul": {"tf": 1.7320508075688772}, "sqlglot.expressions.NEQ": {"tf": 1.7320508075688772}, "sqlglot.expressions.SimilarTo": {"tf": 1.7320508075688772}, "sqlglot.expressions.Slice": {"tf": 1.7320508075688772}, "sqlglot.expressions.Sub": {"tf": 1.7320508075688772}, "sqlglot.expressions.ArrayOverlaps": {"tf": 1.7320508075688772}, "sqlglot.expressions.Unary": {"tf": 1.7320508075688772}, "sqlglot.expressions.BitwiseNot": {"tf": 1.7320508075688772}, "sqlglot.expressions.Not": {"tf": 1.7320508075688772}, "sqlglot.expressions.Paren": {"tf": 1.7320508075688772}, "sqlglot.expressions.Neg": {"tf": 1.7320508075688772}, "sqlglot.expressions.Alias": {"tf": 1.7320508075688772}, "sqlglot.expressions.Alias.output_name": {"tf": 11.313708498984761}, "sqlglot.expressions.Aliases": {"tf": 1.7320508075688772}, "sqlglot.expressions.AtTimeZone": {"tf": 1.7320508075688772}, "sqlglot.expressions.Between": {"tf": 1.7320508075688772}, "sqlglot.expressions.Bracket": {"tf": 1.7320508075688772}, "sqlglot.expressions.Distinct": {"tf": 1.7320508075688772}, "sqlglot.expressions.In": {"tf": 1.7320508075688772}, "sqlglot.expressions.TimeUnit": {"tf": 1.7320508075688772}, "sqlglot.expressions.TimeUnit.__init__": {"tf": 1.7320508075688772}, "sqlglot.expressions.Interval": {"tf": 1.7320508075688772}, "sqlglot.expressions.IgnoreNulls": {"tf": 1.7320508075688772}, "sqlglot.expressions.RespectNulls": {"tf": 1.7320508075688772}, "sqlglot.expressions.Func": {"tf": 4.69041575982343}, "sqlglot.expressions.Func.from_arg_list": {"tf": 1.7320508075688772}, "sqlglot.expressions.Func.sql_names": {"tf": 1.7320508075688772}, "sqlglot.expressions.Func.sql_name": {"tf": 1.7320508075688772}, "sqlglot.expressions.Func.default_parser_mappings": {"tf": 1.7320508075688772}, "sqlglot.expressions.AggFunc": {"tf": 1.7320508075688772}, "sqlglot.expressions.Abs": {"tf": 1.7320508075688772}, "sqlglot.expressions.Anonymous": {"tf": 1.7320508075688772}, "sqlglot.expressions.Hll": {"tf": 1.7320508075688772}, "sqlglot.expressions.ApproxDistinct": {"tf": 1.7320508075688772}, "sqlglot.expressions.Array": {"tf": 1.7320508075688772}, "sqlglot.expressions.ToChar": {"tf": 1.7320508075688772}, "sqlglot.expressions.GenerateSeries": {"tf": 1.7320508075688772}, "sqlglot.expressions.ArrayAgg": {"tf": 1.7320508075688772}, "sqlglot.expressions.ArrayAll": {"tf": 1.7320508075688772}, "sqlglot.expressions.ArrayAny": {"tf": 1.7320508075688772}, "sqlglot.expressions.ArrayConcat": {"tf": 1.7320508075688772}, "sqlglot.expressions.ArrayContains": {"tf": 1.7320508075688772}, "sqlglot.expressions.ArrayContained": {"tf": 1.7320508075688772}, "sqlglot.expressions.ArrayFilter": {"tf": 1.7320508075688772}, "sqlglot.expressions.ArrayJoin": {"tf": 1.7320508075688772}, "sqlglot.expressions.ArraySize": {"tf": 1.7320508075688772}, "sqlglot.expressions.ArraySort": {"tf": 1.7320508075688772}, "sqlglot.expressions.ArraySum": {"tf": 1.7320508075688772}, "sqlglot.expressions.ArrayUnionAgg": {"tf": 1.7320508075688772}, "sqlglot.expressions.Avg": {"tf": 1.7320508075688772}, "sqlglot.expressions.AnyValue": {"tf": 1.7320508075688772}, "sqlglot.expressions.Case": {"tf": 1.7320508075688772}, "sqlglot.expressions.Cast": {"tf": 1.7320508075688772}, "sqlglot.expressions.Cast.output_name": {"tf": 11.313708498984761}, "sqlglot.expressions.Cast.is_type": {"tf": 1.7320508075688772}, "sqlglot.expressions.Collate": {"tf": 1.7320508075688772}, "sqlglot.expressions.TryCast": {"tf": 1.7320508075688772}, "sqlglot.expressions.Ceil": {"tf": 1.7320508075688772}, "sqlglot.expressions.Coalesce": {"tf": 1.7320508075688772}, "sqlglot.expressions.Concat": {"tf": 1.7320508075688772}, "sqlglot.expressions.ConcatWs": {"tf": 1.7320508075688772}, "sqlglot.expressions.Count": {"tf": 1.7320508075688772}, "sqlglot.expressions.CountIf": {"tf": 1.7320508075688772}, "sqlglot.expressions.CurrentDate": {"tf": 1.7320508075688772}, "sqlglot.expressions.CurrentDatetime": {"tf": 1.7320508075688772}, "sqlglot.expressions.CurrentTime": {"tf": 1.7320508075688772}, "sqlglot.expressions.CurrentTimestamp": {"tf": 1.7320508075688772}, "sqlglot.expressions.DateAdd": {"tf": 1.7320508075688772}, "sqlglot.expressions.DateSub": {"tf": 1.7320508075688772}, "sqlglot.expressions.DateDiff": {"tf": 1.7320508075688772}, "sqlglot.expressions.DateTrunc": {"tf": 1.7320508075688772}, "sqlglot.expressions.DatetimeAdd": {"tf": 1.7320508075688772}, "sqlglot.expressions.DatetimeSub": {"tf": 1.7320508075688772}, "sqlglot.expressions.DatetimeDiff": {"tf": 1.7320508075688772}, "sqlglot.expressions.DatetimeTrunc": {"tf": 1.7320508075688772}, "sqlglot.expressions.DayOfWeek": {"tf": 1.7320508075688772}, "sqlglot.expressions.DayOfMonth": {"tf": 1.7320508075688772}, "sqlglot.expressions.DayOfYear": {"tf": 1.7320508075688772}, "sqlglot.expressions.WeekOfYear": {"tf": 1.7320508075688772}, "sqlglot.expressions.LastDateOfMonth": {"tf": 1.7320508075688772}, "sqlglot.expressions.Extract": {"tf": 1.7320508075688772}, "sqlglot.expressions.TimestampAdd": {"tf": 1.7320508075688772}, "sqlglot.expressions.TimestampSub": {"tf": 1.7320508075688772}, "sqlglot.expressions.TimestampDiff": {"tf": 1.7320508075688772}, "sqlglot.expressions.TimestampTrunc": {"tf": 1.7320508075688772}, "sqlglot.expressions.TimeAdd": {"tf": 1.7320508075688772}, "sqlglot.expressions.TimeSub": {"tf": 1.7320508075688772}, "sqlglot.expressions.TimeDiff": {"tf": 1.7320508075688772}, "sqlglot.expressions.TimeTrunc": {"tf": 1.7320508075688772}, "sqlglot.expressions.DateFromParts": {"tf": 1.7320508075688772}, "sqlglot.expressions.DateStrToDate": {"tf": 1.7320508075688772}, "sqlglot.expressions.DateToDateStr": {"tf": 1.7320508075688772}, "sqlglot.expressions.DateToDi": {"tf": 1.7320508075688772}, "sqlglot.expressions.Day": {"tf": 1.7320508075688772}, "sqlglot.expressions.Decode": {"tf": 1.7320508075688772}, "sqlglot.expressions.DiToDate": {"tf": 1.7320508075688772}, "sqlglot.expressions.Encode": {"tf": 1.7320508075688772}, "sqlglot.expressions.Exp": {"tf": 1.7320508075688772}, "sqlglot.expressions.Explode": {"tf": 1.7320508075688772}, "sqlglot.expressions.ExponentialTimeDecayedAvg": {"tf": 1.7320508075688772}, "sqlglot.expressions.Floor": {"tf": 1.7320508075688772}, "sqlglot.expressions.Greatest": {"tf": 1.7320508075688772}, "sqlglot.expressions.GroupConcat": {"tf": 1.7320508075688772}, "sqlglot.expressions.GroupUniqArray": {"tf": 1.7320508075688772}, "sqlglot.expressions.Hex": {"tf": 1.7320508075688772}, "sqlglot.expressions.Histogram": {"tf": 1.7320508075688772}, "sqlglot.expressions.If": {"tf": 1.7320508075688772}, "sqlglot.expressions.IfNull": {"tf": 1.7320508075688772}, "sqlglot.expressions.Initcap": {"tf": 1.7320508075688772}, "sqlglot.expressions.JSONKeyValue": {"tf": 1.7320508075688772}, "sqlglot.expressions.JSONObject": {"tf": 1.7320508075688772}, "sqlglot.expressions.JSONBContains": {"tf": 1.7320508075688772}, "sqlglot.expressions.JSONExtract": {"tf": 1.7320508075688772}, "sqlglot.expressions.JSONExtractScalar": {"tf": 1.7320508075688772}, "sqlglot.expressions.JSONBExtract": {"tf": 1.7320508075688772}, "sqlglot.expressions.JSONBExtractScalar": {"tf": 1.7320508075688772}, "sqlglot.expressions.JSONFormat": {"tf": 1.7320508075688772}, "sqlglot.expressions.Least": {"tf": 1.7320508075688772}, "sqlglot.expressions.Length": {"tf": 1.7320508075688772}, "sqlglot.expressions.Levenshtein": {"tf": 1.7320508075688772}, "sqlglot.expressions.Ln": {"tf": 1.7320508075688772}, "sqlglot.expressions.Log": {"tf": 1.7320508075688772}, "sqlglot.expressions.Log2": {"tf": 1.7320508075688772}, "sqlglot.expressions.Log10": {"tf": 1.7320508075688772}, "sqlglot.expressions.LogicalOr": {"tf": 1.7320508075688772}, "sqlglot.expressions.LogicalAnd": {"tf": 1.7320508075688772}, "sqlglot.expressions.Lower": {"tf": 1.7320508075688772}, "sqlglot.expressions.Map": {"tf": 1.7320508075688772}, "sqlglot.expressions.VarMap": {"tf": 1.7320508075688772}, "sqlglot.expressions.MatchAgainst": {"tf": 1.7320508075688772}, "sqlglot.expressions.Max": {"tf": 1.7320508075688772}, "sqlglot.expressions.Min": {"tf": 1.7320508075688772}, "sqlglot.expressions.Month": {"tf": 1.7320508075688772}, "sqlglot.expressions.Nvl2": {"tf": 1.7320508075688772}, "sqlglot.expressions.Posexplode": {"tf": 1.7320508075688772}, "sqlglot.expressions.Pow": {"tf": 1.7320508075688772}, "sqlglot.expressions.PercentileCont": {"tf": 1.7320508075688772}, "sqlglot.expressions.PercentileDisc": {"tf": 1.7320508075688772}, "sqlglot.expressions.Quantile": {"tf": 1.7320508075688772}, "sqlglot.expressions.Quantiles": {"tf": 1.7320508075688772}, "sqlglot.expressions.QuantileIf": {"tf": 1.7320508075688772}, "sqlglot.expressions.ApproxQuantile": {"tf": 1.7320508075688772}, "sqlglot.expressions.RangeN": {"tf": 1.7320508075688772}, "sqlglot.expressions.ReadCSV": {"tf": 1.7320508075688772}, "sqlglot.expressions.Reduce": {"tf": 1.7320508075688772}, "sqlglot.expressions.RegexpExtract": {"tf": 1.7320508075688772}, "sqlglot.expressions.RegexpLike": {"tf": 1.7320508075688772}, "sqlglot.expressions.RegexpILike": {"tf": 1.7320508075688772}, "sqlglot.expressions.RegexpSplit": {"tf": 1.7320508075688772}, "sqlglot.expressions.Repeat": {"tf": 1.7320508075688772}, "sqlglot.expressions.Round": {"tf": 1.7320508075688772}, "sqlglot.expressions.RowNumber": {"tf": 1.7320508075688772}, "sqlglot.expressions.SafeDivide": {"tf": 1.7320508075688772}, "sqlglot.expressions.SetAgg": {"tf": 1.7320508075688772}, "sqlglot.expressions.SortArray": {"tf": 1.7320508075688772}, "sqlglot.expressions.Split": {"tf": 1.7320508075688772}, "sqlglot.expressions.Substring": {"tf": 1.7320508075688772}, "sqlglot.expressions.StrPosition": {"tf": 1.7320508075688772}, "sqlglot.expressions.StrToDate": {"tf": 1.7320508075688772}, "sqlglot.expressions.StrToTime": {"tf": 1.7320508075688772}, "sqlglot.expressions.StrToUnix": {"tf": 1.7320508075688772}, "sqlglot.expressions.NumberToStr": {"tf": 1.7320508075688772}, "sqlglot.expressions.Struct": {"tf": 1.7320508075688772}, "sqlglot.expressions.StructExtract": {"tf": 1.7320508075688772}, "sqlglot.expressions.Sum": {"tf": 1.7320508075688772}, "sqlglot.expressions.Sqrt": {"tf": 1.7320508075688772}, "sqlglot.expressions.Stddev": {"tf": 1.7320508075688772}, "sqlglot.expressions.StddevPop": {"tf": 1.7320508075688772}, "sqlglot.expressions.StddevSamp": {"tf": 1.7320508075688772}, "sqlglot.expressions.TimeToStr": {"tf": 1.7320508075688772}, "sqlglot.expressions.TimeToTimeStr": {"tf": 1.7320508075688772}, "sqlglot.expressions.TimeToUnix": {"tf": 1.7320508075688772}, "sqlglot.expressions.TimeStrToDate": {"tf": 1.7320508075688772}, "sqlglot.expressions.TimeStrToTime": {"tf": 1.7320508075688772}, "sqlglot.expressions.TimeStrToUnix": {"tf": 1.7320508075688772}, "sqlglot.expressions.Trim": {"tf": 1.7320508075688772}, "sqlglot.expressions.TsOrDsAdd": {"tf": 1.7320508075688772}, "sqlglot.expressions.TsOrDsToDateStr": {"tf": 1.7320508075688772}, "sqlglot.expressions.TsOrDsToDate": {"tf": 1.7320508075688772}, "sqlglot.expressions.TsOrDiToDi": {"tf": 1.7320508075688772}, "sqlglot.expressions.Unhex": {"tf": 1.7320508075688772}, "sqlglot.expressions.UnixToStr": {"tf": 1.7320508075688772}, "sqlglot.expressions.UnixToTime": {"tf": 1.7320508075688772}, "sqlglot.expressions.UnixToTimeStr": {"tf": 1.7320508075688772}, "sqlglot.expressions.Upper": {"tf": 1.7320508075688772}, "sqlglot.expressions.Variance": {"tf": 1.7320508075688772}, "sqlglot.expressions.VariancePop": {"tf": 1.7320508075688772}, "sqlglot.expressions.Week": {"tf": 1.7320508075688772}, "sqlglot.expressions.XMLTable": {"tf": 1.7320508075688772}, "sqlglot.expressions.Year": {"tf": 1.7320508075688772}, "sqlglot.expressions.Use": {"tf": 1.7320508075688772}, "sqlglot.expressions.Merge": {"tf": 1.7320508075688772}, "sqlglot.expressions.When": {"tf": 1.7320508075688772}, "sqlglot.expressions.maybe_parse": {"tf": 10.14889156509222}, "sqlglot.expressions.union": {"tf": 10.344080432788601}, "sqlglot.expressions.intersect": {"tf": 10.344080432788601}, "sqlglot.expressions.except_": {"tf": 10.392304845413264}, "sqlglot.expressions.select": {"tf": 9.797958971132712}, "sqlglot.expressions.from_": {"tf": 9.9498743710662}, "sqlglot.expressions.update": {"tf": 12}, "sqlglot.expressions.delete": {"tf": 9.433981132056603}, "sqlglot.expressions.condition": {"tf": 13.92838827718412}, "sqlglot.expressions.and_": {"tf": 9.848857801796104}, "sqlglot.expressions.or_": {"tf": 9.848857801796104}, "sqlglot.expressions.not_": {"tf": 8.831760866327848}, "sqlglot.expressions.paren": {"tf": 1.7320508075688772}, "sqlglot.expressions.to_identifier": {"tf": 5.291502622129181}, "sqlglot.expressions.to_interval": {"tf": 1.7320508075688772}, "sqlglot.expressions.to_table": {"tf": 5.196152422706632}, "sqlglot.expressions.to_column": {"tf": 5.291502622129181}, "sqlglot.expressions.alias_": {"tf": 12.649110640673518}, "sqlglot.expressions.subquery": {"tf": 10.198039027185569}, "sqlglot.expressions.column": {"tf": 6.082762530298219}, "sqlglot.expressions.cast": {"tf": 8.888194417315589}, "sqlglot.expressions.table_": {"tf": 5.916079783099616}, "sqlglot.expressions.values": {"tf": 8.888194417315589}, "sqlglot.expressions.var": {"tf": 10.488088481701515}, "sqlglot.expressions.rename_table": {"tf": 4.898979485566356}, "sqlglot.expressions.convert": {"tf": 5}, "sqlglot.expressions.replace_children": {"tf": 2}, "sqlglot.expressions.column_table_names": {"tf": 8.48528137423857}, "sqlglot.expressions.table_name": {"tf": 9.797958971132712}, "sqlglot.expressions.replace_tables": {"tf": 10.44030650891055}, "sqlglot.expressions.replace_placeholders": {"tf": 12.529964086141668}, "sqlglot.expressions.expand": {"tf": 10.770329614269007}, "sqlglot.expressions.func": {"tf": 12.884098726725126}, "sqlglot.expressions.true": {"tf": 1.7320508075688772}, "sqlglot.expressions.false": {"tf": 1.7320508075688772}, "sqlglot.expressions.null": {"tf": 1.7320508075688772}, "sqlglot.generator": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator": {"tf": 11.532562594670797}, "sqlglot.generator.Generator.__init__": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.generate": {"tf": 3}, "sqlglot.generator.Generator.unsupported": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.sep": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.seg": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.pad_comment": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.maybe_comment": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.wrap": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.no_identify": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.normalize_func": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.indent": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.uncache_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.cache_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.characterset_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.column_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.columnposition_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.columndef_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.columnconstraint_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.autoincrementcolumnconstraint_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.compresscolumnconstraint_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.generatedasidentitycolumnconstraint_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.notnullcolumnconstraint_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.primarykeycolumnconstraint_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.uniquecolumnconstraint_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.create_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.describe_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.prepend_ctes": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.with_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.cte_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.tablealias_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.bitstring_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.hexstring_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.datatype_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.directory_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.delete_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.drop_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.except_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.except_op": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.fetch_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.filter_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.hint_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.index_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.identifier_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.national_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.partition_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.properties_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.root_properties": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.properties": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.with_properties": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.locate_properties": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.property_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.likeproperty_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.fallbackproperty_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.journalproperty_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.freespaceproperty_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.afterjournalproperty_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.checksumproperty_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.mergeblockratioproperty_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.datablocksizeproperty_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.blockcompressionproperty_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.isolatedloadingproperty_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.lockingproperty_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.withdataproperty_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.insert_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.intersect_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.intersect_op": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.introducer_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.pseudotype_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.returning_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.rowformatdelimitedproperty_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.table_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.tablesample_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.pivot_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.tuple_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.update_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.values_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.var_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.into_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.from_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.group_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.having_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.join_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.lambda_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.lateral_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.limit_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.offset_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.setitem_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.set_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.pragma_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.lock_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.literal_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.loaddata_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.null_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.boolean_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.order_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.cluster_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.distribute_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.sort_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.ordered_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.matchrecognize_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.query_modifiers": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.select_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.schema_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.star_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.structkwarg_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.parameter_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.sessionparameter_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.placeholder_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.subquery_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.qualify_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.union_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.union_op": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.unnest_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.where_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.window_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.partition_by_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.window_spec_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.withingroup_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.between_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.bracket_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.all_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.any_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.exists_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.case_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.constraint_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.extract_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.trim_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.concat_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.check_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.foreignkey_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.primarykey_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.unique_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.if_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.matchagainst_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.jsonkeyvalue_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.jsonobject_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.in_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.in_unnest_op": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.interval_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.return_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.reference_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.anonymous_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.paren_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.neg_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.not_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.alias_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.aliases_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.attimezone_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.add_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.and_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.connector_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.bitwiseand_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.bitwiseleftshift_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.bitwisenot_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.bitwiseor_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.bitwiserightshift_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.bitwisexor_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.cast_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.currentdate_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.collate_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.command_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.comment_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.transaction_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.commit_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.rollback_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.altercolumn_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.renametable_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.altertable_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.droppartition_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.addconstraint_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.distinct_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.ignorenulls_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.respectnulls_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.intdiv_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.dpipe_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.div_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.overlaps_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.distance_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.dot_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.eq_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.escape_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.glob_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.gt_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.gte_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.ilike_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.ilikeany_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.is_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.like_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.likeany_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.similarto_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.lt_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.lte_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.mod_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.mul_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.neq_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.nullsafeeq_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.nullsafeneq_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.or_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.slice_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.sub_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.trycast_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.use_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.binary": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.function_fallback_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.func": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.format_args": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.text_width": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.format_time": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.expressions": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.op_expressions": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.naked_property": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.set_operation": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.tag_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.token_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.userdefinedfunction_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.joinhint_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.kwarg_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.when_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.merge_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.tochar_sql": {"tf": 1.7320508075688772}, "sqlglot.helper": {"tf": 1.7320508075688772}, "sqlglot.helper.AutoName": {"tf": 2.449489742783178}, "sqlglot.helper.seq_get": {"tf": 3.3166247903554}, "sqlglot.helper.ensure_list": {"tf": 4.795831523312719}, "sqlglot.helper.ensure_collection": {"tf": 5.196152422706632}, "sqlglot.helper.csv": {"tf": 5.291502622129181}, "sqlglot.helper.subclasses": {"tf": 5.744562646538029}, "sqlglot.helper.apply_index_offset": {"tf": 5.477225575051661}, "sqlglot.helper.camel_to_snake_case": {"tf": 2.23606797749979}, "sqlglot.helper.while_changing": {"tf": 5.291502622129181}, "sqlglot.helper.tsort": {"tf": 4.795831523312719}, "sqlglot.helper.open_file": {"tf": 1.7320508075688772}, "sqlglot.helper.csv_reader": {"tf": 5.477225575051661}, "sqlglot.helper.find_new_name": {"tf": 5.291502622129181}, "sqlglot.helper.object_to_dict": {"tf": 1.7320508075688772}, "sqlglot.helper.split_num_words": {"tf": 12.649110640673518}, "sqlglot.helper.is_iterable": {"tf": 8.94427190999916}, "sqlglot.helper.flatten": {"tf": 11.224972160321824}, "sqlglot.helper.count_params": {"tf": 1.7320508075688772}, "sqlglot.helper.dict_depth": {"tf": 11.489125293076057}, "sqlglot.helper.first": {"tf": 2.449489742783178}, "sqlglot.helper.should_identify": {"tf": 5.291502622129181}, "sqlglot.lineage": {"tf": 1.7320508075688772}, "sqlglot.lineage.Node": {"tf": 1.7320508075688772}, "sqlglot.lineage.Node.__init__": {"tf": 1.7320508075688772}, "sqlglot.lineage.Node.walk": {"tf": 1.7320508075688772}, "sqlglot.lineage.Node.to_html": {"tf": 1.7320508075688772}, "sqlglot.lineage.lineage": {"tf": 6.928203230275509}, "sqlglot.lineage.LineageHTML": {"tf": 2.6457513110645907}, "sqlglot.lineage.LineageHTML.__init__": {"tf": 1.7320508075688772}, "sqlglot.optimizer": {"tf": 1.7320508075688772}, "sqlglot.optimizer.annotate_types": {"tf": 1.7320508075688772}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 13.2664991614216}, "sqlglot.optimizer.annotate_types.TypeAnnotator": {"tf": 1.7320508075688772}, "sqlglot.optimizer.annotate_types.TypeAnnotator.__init__": {"tf": 1.7320508075688772}, "sqlglot.optimizer.annotate_types.TypeAnnotator.annotate": {"tf": 1.7320508075688772}, "sqlglot.optimizer.canonicalize": {"tf": 1.7320508075688772}, "sqlglot.optimizer.canonicalize.canonicalize": {"tf": 4.69041575982343}, "sqlglot.optimizer.canonicalize.add_text_to_concat": {"tf": 1.7320508075688772}, "sqlglot.optimizer.canonicalize.coerce_type": {"tf": 1.7320508075688772}, "sqlglot.optimizer.canonicalize.remove_redundant_casts": {"tf": 1.7320508075688772}, "sqlglot.optimizer.canonicalize.ensure_bool_predicates": {"tf": 1.7320508075688772}, "sqlglot.optimizer.eliminate_ctes": {"tf": 1.7320508075688772}, "sqlglot.optimizer.eliminate_ctes.eliminate_ctes": {"tf": 10.198039027185569}, "sqlglot.optimizer.eliminate_joins": {"tf": 1.7320508075688772}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 10.344080432788601}, "sqlglot.optimizer.eliminate_joins.join_condition": {"tf": 4.58257569495584}, "sqlglot.optimizer.eliminate_subqueries": {"tf": 1.7320508075688772}, "sqlglot.optimizer.eliminate_subqueries.eliminate_subqueries": {"tf": 12.727922061357855}, "sqlglot.optimizer.expand_laterals": {"tf": 1.7320508075688772}, "sqlglot.optimizer.expand_laterals.expand_laterals": {"tf": 10.63014581273465}, "sqlglot.optimizer.expand_multi_table_selects": {"tf": 1.7320508075688772}, "sqlglot.optimizer.expand_multi_table_selects.expand_multi_table_selects": {"tf": 7.874007874011811}, "sqlglot.optimizer.isolate_table_selects": {"tf": 1.7320508075688772}, "sqlglot.optimizer.isolate_table_selects.isolate_table_selects": {"tf": 1.7320508075688772}, "sqlglot.optimizer.lower_identities": {"tf": 1.7320508075688772}, "sqlglot.optimizer.lower_identities.lower_identities": {"tf": 9.797958971132712}, "sqlglot.optimizer.merge_subqueries": {"tf": 1.7320508075688772}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 11.180339887498949}, "sqlglot.optimizer.merge_subqueries.merge_ctes": {"tf": 1.7320508075688772}, "sqlglot.optimizer.merge_subqueries.merge_derived_tables": {"tf": 1.7320508075688772}, "sqlglot.optimizer.normalize": {"tf": 1.7320508075688772}, "sqlglot.optimizer.normalize.normalize": {"tf": 10.535653752852738}, "sqlglot.optimizer.normalize.normalized": {"tf": 1.7320508075688772}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 9.591663046625438}, "sqlglot.optimizer.normalize.distributive_law": {"tf": 2.23606797749979}, "sqlglot.optimizer.optimize_joins": {"tf": 1.7320508075688772}, "sqlglot.optimizer.optimize_joins.optimize_joins": {"tf": 7.874007874011811}, "sqlglot.optimizer.optimize_joins.reorder_joins": {"tf": 1.7320508075688772}, "sqlglot.optimizer.optimize_joins.normalize": {"tf": 1.7320508075688772}, "sqlglot.optimizer.optimize_joins.other_table_names": {"tf": 1.7320508075688772}, "sqlglot.optimizer.optimizer": {"tf": 1.7320508075688772}, "sqlglot.optimizer.optimizer.optimize": {"tf": 7.54983443527075}, "sqlglot.optimizer.pushdown_predicates": {"tf": 1.7320508075688772}, "sqlglot.optimizer.pushdown_predicates.pushdown_predicates": {"tf": 10.344080432788601}, "sqlglot.optimizer.pushdown_predicates.pushdown": {"tf": 1.7320508075688772}, "sqlglot.optimizer.pushdown_predicates.pushdown_cnf": {"tf": 1.7320508075688772}, "sqlglot.optimizer.pushdown_predicates.pushdown_dnf": {"tf": 1.7320508075688772}, "sqlglot.optimizer.pushdown_predicates.nodes_for_predicate": {"tf": 1.7320508075688772}, "sqlglot.optimizer.pushdown_predicates.replace_aliases": {"tf": 1.7320508075688772}, "sqlglot.optimizer.pushdown_projections": {"tf": 1.7320508075688772}, "sqlglot.optimizer.pushdown_projections.DEFAULT_SELECTION": {"tf": 1.7320508075688772}, "sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 10.44030650891055}, "sqlglot.optimizer.qualify_columns": {"tf": 1.7320508075688772}, "sqlglot.optimizer.qualify_columns.qualify_columns": {"tf": 11.575836902790225}, "sqlglot.optimizer.qualify_columns.validate_qualify_columns": {"tf": 2}, "sqlglot.optimizer.qualify_columns.Resolver": {"tf": 2.449489742783178}, "sqlglot.optimizer.qualify_columns.Resolver.__init__": {"tf": 1.7320508075688772}, "sqlglot.optimizer.qualify_columns.Resolver.get_table": {"tf": 4.795831523312719}, "sqlglot.optimizer.qualify_columns.Resolver.all_columns": {"tf": 1.4142135623730951}, "sqlglot.optimizer.qualify_columns.Resolver.get_source_columns": {"tf": 2}, "sqlglot.optimizer.qualify_tables": {"tf": 1.7320508075688772}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"tf": 10.862780491200215}, "sqlglot.optimizer.scope": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.ScopeType": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.ScopeType.ROOT": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.ScopeType.SUBQUERY": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.ScopeType.DERIVED_TABLE": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.ScopeType.CTE": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.ScopeType.UNION": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.ScopeType.UDTF": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.Scope": {"tf": 9.539392014169456}, "sqlglot.optimizer.scope.Scope.__init__": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.Scope.clear_cache": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.Scope.branch": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.walk": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.Scope.find": {"tf": 5.744562646538029}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 5.656854249492381}, "sqlglot.optimizer.scope.Scope.replace": {"tf": 5.477225575051661}, "sqlglot.optimizer.scope.Scope.tables": {"tf": 3.3166247903554}, "sqlglot.optimizer.scope.Scope.ctes": {"tf": 3.3166247903554}, "sqlglot.optimizer.scope.Scope.derived_tables": {"tf": 4.47213595499958}, "sqlglot.optimizer.scope.Scope.udtfs": {"tf": 3.3166247903554}, "sqlglot.optimizer.scope.Scope.subqueries": {"tf": 4.47213595499958}, "sqlglot.optimizer.scope.Scope.columns": {"tf": 3.4641016151377544}, "sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 3.872983346207417}, "sqlglot.optimizer.scope.Scope.cte_sources": {"tf": 3.3166247903554}, "sqlglot.optimizer.scope.Scope.selects": {"tf": 4}, "sqlglot.optimizer.scope.Scope.external_columns": {"tf": 3.4641016151377544}, "sqlglot.optimizer.scope.Scope.unqualified_columns": {"tf": 3.3166247903554}, "sqlglot.optimizer.scope.Scope.join_hints": {"tf": 3.1622776601683795}, "sqlglot.optimizer.scope.Scope.source_columns": {"tf": 4.898979485566356}, "sqlglot.optimizer.scope.Scope.is_subquery": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.is_derived_table": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.is_union": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.is_cte": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.is_root": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.is_udtf": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.Scope.is_correlated_subquery": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.rename_source": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.add_source": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.remove_source": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.traverse": {"tf": 3.3166247903554}, "sqlglot.optimizer.scope.Scope.ref_count": {"tf": 3.3166247903554}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 13.601470508735444}, "sqlglot.optimizer.scope.build_scope": {"tf": 4.69041575982343}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 5.385164807134504}, "sqlglot.optimizer.simplify": {"tf": 1.7320508075688772}, "sqlglot.optimizer.simplify.simplify": {"tf": 9.643650760992955}, "sqlglot.optimizer.simplify.rewrite_between": {"tf": 2.449489742783178}, "sqlglot.optimizer.simplify.simplify_not": {"tf": 2}, "sqlglot.optimizer.simplify.flatten": {"tf": 2}, "sqlglot.optimizer.simplify.simplify_connectors": {"tf": 1.7320508075688772}, "sqlglot.optimizer.simplify.remove_compliments": {"tf": 2.6457513110645907}, "sqlglot.optimizer.simplify.uniq_sort": {"tf": 2.449489742783178}, "sqlglot.optimizer.simplify.absorb_and_eliminate": {"tf": 2.8284271247461903}, "sqlglot.optimizer.simplify.simplify_literals": {"tf": 1.7320508075688772}, "sqlglot.optimizer.simplify.simplify_parens": {"tf": 1.7320508075688772}, "sqlglot.optimizer.simplify.remove_where_true": {"tf": 1.7320508075688772}, "sqlglot.optimizer.simplify.always_true": {"tf": 1.7320508075688772}, "sqlglot.optimizer.simplify.is_complement": {"tf": 1.7320508075688772}, "sqlglot.optimizer.simplify.is_false": {"tf": 1.7320508075688772}, "sqlglot.optimizer.simplify.is_null": {"tf": 1.7320508075688772}, "sqlglot.optimizer.simplify.eval_boolean": {"tf": 1.7320508075688772}, "sqlglot.optimizer.simplify.extract_date": {"tf": 1.7320508075688772}, "sqlglot.optimizer.simplify.extract_interval": {"tf": 1.7320508075688772}, "sqlglot.optimizer.simplify.date_literal": {"tf": 1.7320508075688772}, "sqlglot.optimizer.simplify.boolean_literal": {"tf": 1.7320508075688772}, "sqlglot.optimizer.unnest_subqueries": {"tf": 1.7320508075688772}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 9.899494936611665}, "sqlglot.optimizer.unnest_subqueries.unnest": {"tf": 1.7320508075688772}, "sqlglot.optimizer.unnest_subqueries.decorrelate": {"tf": 1.7320508075688772}, "sqlglot.parser": {"tf": 1.7320508075688772}, "sqlglot.parser.parse_var_map": {"tf": 1.7320508075688772}, "sqlglot.parser.parse_like": {"tf": 1.7320508075688772}, "sqlglot.parser.binary_range_parser": {"tf": 1.7320508075688772}, "sqlglot.parser.Parser": {"tf": 6.082762530298219}, "sqlglot.parser.Parser.__init__": {"tf": 1.7320508075688772}, "sqlglot.parser.Parser.reset": {"tf": 1.7320508075688772}, "sqlglot.parser.Parser.parse": {"tf": 5.291502622129181}, "sqlglot.parser.Parser.parse_into": {"tf": 5.744562646538029}, "sqlglot.parser.Parser.check_errors": {"tf": 1.7320508075688772}, "sqlglot.parser.Parser.raise_error": {"tf": 1.7320508075688772}, "sqlglot.parser.Parser.expression": {"tf": 5.744562646538029}, "sqlglot.parser.Parser.validate_expression": {"tf": 4.358898943540674}, "sqlglot.planner": {"tf": 1.7320508075688772}, "sqlglot.planner.Plan": {"tf": 1.7320508075688772}, "sqlglot.planner.Plan.__init__": {"tf": 1.7320508075688772}, "sqlglot.planner.Step": {"tf": 1.7320508075688772}, "sqlglot.planner.Step.from_expression": {"tf": 7.681145747868608}, "sqlglot.planner.Step.add_dependency": {"tf": 1.7320508075688772}, "sqlglot.planner.Step.to_s": {"tf": 1.7320508075688772}, "sqlglot.planner.Scan": {"tf": 1.7320508075688772}, "sqlglot.planner.Scan.from_expression": {"tf": 7.681145747868608}, "sqlglot.planner.Join": {"tf": 1.7320508075688772}, "sqlglot.planner.Join.from_joins": {"tf": 1.7320508075688772}, "sqlglot.planner.Aggregate": {"tf": 1.7320508075688772}, "sqlglot.planner.Sort": {"tf": 1.7320508075688772}, "sqlglot.planner.SetOperation": {"tf": 1.7320508075688772}, "sqlglot.planner.SetOperation.__init__": {"tf": 1.7320508075688772}, "sqlglot.planner.SetOperation.from_expression": {"tf": 7.681145747868608}, "sqlglot.schema.Schema": {"tf": 1.4142135623730951}, "sqlglot.schema.Schema.add_table": {"tf": 4.358898943540674}, "sqlglot.schema.Schema.column_names": {"tf": 5.477225575051661}, "sqlglot.schema.Schema.get_column_type": {"tf": 5.477225575051661}, "sqlglot.schema.Schema.supported_table_args": {"tf": 2.449489742783178}, "sqlglot.schema.AbstractMappingSchema": {"tf": 4}, "sqlglot.schema.AbstractMappingSchema.__init__": {"tf": 1.7320508075688772}, "sqlglot.schema.AbstractMappingSchema.table_parts": {"tf": 1.7320508075688772}, "sqlglot.schema.AbstractMappingSchema.find": {"tf": 1.7320508075688772}, "sqlglot.schema.MappingSchema": {"tf": 7.211102550927978}, "sqlglot.schema.MappingSchema.__init__": {"tf": 1.7320508075688772}, "sqlglot.schema.MappingSchema.from_mapping_schema": {"tf": 1.7320508075688772}, "sqlglot.schema.MappingSchema.copy": {"tf": 1.7320508075688772}, "sqlglot.schema.MappingSchema.add_table": {"tf": 4.58257569495584}, "sqlglot.schema.MappingSchema.column_names": {"tf": 5.477225575051661}, "sqlglot.schema.MappingSchema.get_column_type": {"tf": 5.477225575051661}, "sqlglot.schema.ensure_schema": {"tf": 1.7320508075688772}, "sqlglot.schema.ensure_column_mapping": {"tf": 1.7320508075688772}, "sqlglot.schema.flatten_schema": {"tf": 1.7320508075688772}, "sqlglot.serde": {"tf": 1.7320508075688772}, "sqlglot.serde.dump": {"tf": 1.7320508075688772}, "sqlglot.serde.load": {"tf": 2.23606797749979}, "sqlglot.time": {"tf": 1.7320508075688772}, "sqlglot.time.format_time": {"tf": 7.681145747868608}, "sqlglot.tokens": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.L_PAREN": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.R_PAREN": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.L_BRACKET": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.R_BRACKET": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.L_BRACE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.R_BRACE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.COMMA": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.DOT": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.DASH": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.PLUS": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.COLON": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.DCOLON": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.SEMICOLON": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.STAR": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.BACKSLASH": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.SLASH": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.LT": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.LTE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.GT": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.GTE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.NOT": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.EQ": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.NEQ": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.NULLSAFE_EQ": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.AND": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.OR": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.AMP": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.DPIPE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.PIPE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.CARET": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.TILDA": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.ARROW": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.DARROW": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.FARROW": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.HASH": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.HASH_ARROW": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.DHASH_ARROW": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.LR_ARROW": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.LT_AT": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.AT_GT": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.DOLLAR": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.PARAMETER": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.SESSION_PARAMETER": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.NATIONAL": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.DAMP": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.BLOCK_START": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.BLOCK_END": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.SPACE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.BREAK": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.STRING": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.NUMBER": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.IDENTIFIER": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.DATABASE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.COLUMN": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.COLUMN_DEF": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.SCHEMA": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.TABLE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.VAR": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.BIT_STRING": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.HEX_STRING": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.BYTE_STRING": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.BIT": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.BOOLEAN": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.TINYINT": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.UTINYINT": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.SMALLINT": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.USMALLINT": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.INT": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.UINT": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.BIGINT": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.UBIGINT": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.FLOAT": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.DOUBLE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.DECIMAL": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.CHAR": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.NCHAR": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.VARCHAR": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.NVARCHAR": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.TEXT": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.MEDIUMTEXT": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.LONGTEXT": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.MEDIUMBLOB": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.LONGBLOB": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.BINARY": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.VARBINARY": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.JSON": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.JSONB": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.TIME": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.TIMESTAMP": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.TIMESTAMPTZ": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.TIMESTAMPLTZ": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.DATETIME": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.DATE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.UUID": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.GEOGRAPHY": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.NULLABLE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.GEOMETRY": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.HLLSKETCH": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.HSTORE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.SUPER": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.SERIAL": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.SMALLSERIAL": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.BIGSERIAL": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.XML": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.UNIQUEIDENTIFIER": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.MONEY": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.SMALLMONEY": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.ROWVERSION": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.IMAGE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.VARIANT": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.OBJECT": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.INET": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.ALIAS": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.ALTER": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.ALWAYS": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.ALL": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.ANTI": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.ANY": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.APPLY": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.ARRAY": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.ASC": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.ASOF": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.AT_TIME_ZONE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.AUTO_INCREMENT": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.BEGIN": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.BETWEEN": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.BOTH": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.BUCKET": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.BY_DEFAULT": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.CACHE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.CASCADE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.CASE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.CHARACTER_SET": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.CLUSTER_BY": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.COLLATE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.COMMAND": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.COMMENT": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.COMMIT": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.COMPOUND": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.CONSTRAINT": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.CREATE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.CROSS": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.CUBE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.CURRENT_DATE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.CURRENT_DATETIME": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.CURRENT_ROW": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.CURRENT_TIME": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.CURRENT_TIMESTAMP": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.DEFAULT": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.DELETE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.DESC": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.DESCRIBE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.DISTINCT": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.DISTINCT_FROM": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.DISTRIBUTE_BY": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.DIV": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.DROP": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.ELSE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.END": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.ESCAPE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.EXCEPT": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.EXECUTE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.EXISTS": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.FALSE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.FETCH": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.FILTER": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.FINAL": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.FIRST": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.FOLLOWING": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.FOR": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.FOREIGN_KEY": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.FORMAT": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.FROM": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.FULL": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.FUNCTION": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.GLOB": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.GLOBAL": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.GROUP_BY": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.GROUPING_SETS": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.HAVING": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.HINT": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.IF": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.IGNORE_NULLS": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.ILIKE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.ILIKE_ANY": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.IN": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.INDEX": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.INNER": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.INSERT": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.INTERSECT": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.INTERVAL": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.INTO": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.INTRODUCER": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.IRLIKE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.IS": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.ISNULL": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.JOIN": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.JOIN_MARKER": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.LANGUAGE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.LATERAL": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.LAZY": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.LEADING": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.LEFT": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.LIKE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.LIKE_ANY": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.LIMIT": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.LOAD_DATA": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.LOCAL": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.MAP": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.MATCH_RECOGNIZE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.MATERIALIZED": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.MERGE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.MOD": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.NATURAL": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.NEXT": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.NO_ACTION": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.NOTNULL": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.NULL": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.NULLS_FIRST": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.NULLS_LAST": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.OFFSET": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.ON": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.ONLY": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.OPTIONS": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.ORDER_BY": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.ORDERED": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.ORDINALITY": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.OUTER": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.OUT_OF": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.OVER": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.OVERLAPS": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.OVERWRITE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.PARTITION": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.PARTITION_BY": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.PERCENT": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.PIVOT": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.PLACEHOLDER": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.PRAGMA": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.PRECEDING": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.PRIMARY_KEY": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.PROCEDURE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.PROPERTIES": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.PSEUDO_TYPE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.QUALIFY": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.QUOTE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.RANGE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.RECURSIVE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.REPLACE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.RESPECT_NULLS": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.RETURNING": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.REFERENCES": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.RIGHT": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.RLIKE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.ROLLBACK": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.ROLLUP": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.ROW": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.ROWS": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.SEED": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.SELECT": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.SEMI": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.SEPARATOR": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.SERDE_PROPERTIES": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.SET": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.SHOW": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.SIMILAR_TO": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.SOME": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.SORTKEY": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.SORT_BY": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.STRUCT": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.TABLE_SAMPLE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.TEMPORARY": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.TOP": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.THEN": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.TRAILING": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.TRUE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.UNBOUNDED": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.UNCACHE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.UNION": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.UNLOGGED": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.UNNEST": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.UNPIVOT": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.UPDATE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.USE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.USING": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.VALUES": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.VIEW": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.VOLATILE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.WHEN": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.WHERE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.WINDOW": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.WITH": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.WITH_TIME_ZONE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.WITH_LOCAL_TIME_ZONE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.WITHIN_GROUP": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.WITHOUT_TIME_ZONE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.UNIQUE": {"tf": 1.7320508075688772}, "sqlglot.tokens.Token": {"tf": 1.7320508075688772}, "sqlglot.tokens.Token.__init__": {"tf": 1.7320508075688772}, "sqlglot.tokens.Token.number": {"tf": 2.23606797749979}, "sqlglot.tokens.Token.string": {"tf": 2.23606797749979}, "sqlglot.tokens.Token.identifier": {"tf": 2.23606797749979}, "sqlglot.tokens.Token.var": {"tf": 2.23606797749979}, "sqlglot.tokens.Tokenizer": {"tf": 1.7320508075688772}, "sqlglot.tokens.Tokenizer.reset": {"tf": 1.7320508075688772}, "sqlglot.tokens.Tokenizer.tokenize": {"tf": 2.23606797749979}, "sqlglot.transforms": {"tf": 1.7320508075688772}, "sqlglot.transforms.unalias_group": {"tf": 9.327379053088816}, "sqlglot.transforms.eliminate_distinct_on": {"tf": 5.0990195135927845}, "sqlglot.transforms.eliminate_qualify": {"tf": 3.1622776601683795}, "sqlglot.transforms.remove_precision_parameterized_types": {"tf": 1.7320508075688772}, "sqlglot.transforms.preprocess": {"tf": 5.477225575051661}, "sqlglot.transforms.delegate": {"tf": 2.6457513110645907}, "sqlglot.trie": {"tf": 1.7320508075688772}, "sqlglot.trie.new_trie": {"tf": 9.327379053088816}, "sqlglot.trie.in_trie": {"tf": 13.228756555322953}}, "df": 1756, "s": {"docs": {"sqlglot": {"tf": 2.449489742783178}, "sqlglot.dataframe": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.diff": {"tf": 2.23606797749979}, "sqlglot.diff.Move": {"tf": 1}, "sqlglot.diff.diff": {"tf": 1}, "sqlglot.executor": {"tf": 3.4641016151377544}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.expressions.Expression.alias": {"tf": 1}, "sqlglot.expressions.Expression.append": {"tf": 1}, "sqlglot.expressions.Expression.find": {"tf": 1}, "sqlglot.expressions.Expression.find_all": {"tf": 1}, "sqlglot.expressions.Expression.find_ancestor": {"tf": 1}, "sqlglot.expressions.Expression.flatten": {"tf": 1}, "sqlglot.expressions.Func": {"tf": 1.7320508075688772}, "sqlglot.expressions.var": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.helper.AutoName": {"tf": 1}, "sqlglot.helper.ensure_list": {"tf": 1}, "sqlglot.helper.ensure_collection": {"tf": 1}, "sqlglot.helper.apply_index_offset": {"tf": 1}, "sqlglot.helper.tsort": {"tf": 1}, "sqlglot.helper.object_to_dict": {"tf": 1}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1}, "sqlglot.optimizer.scope.Scope.derived_tables": {"tf": 1}, "sqlglot.optimizer.scope.Scope.subqueries": {"tf": 1}, "sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}, "sqlglot.optimizer.simplify.simplify_not": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 1}, "sqlglot.parser.Parser.validate_expression": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1.4142135623730951}, "sqlglot.planner.Scan.from_expression": {"tf": 1.4142135623730951}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1.4142135623730951}, "sqlglot.transforms.eliminate_qualify": {"tf": 1.4142135623730951}}, "df": 57, "q": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot": {"tf": 5.5677643628300215}, "sqlglot.pretty": {"tf": 1}, "sqlglot.parse": {"tf": 2.23606797749979}, "sqlglot.parse_one": {"tf": 2.23606797749979}, "sqlglot.transpile": {"tf": 2.449489742783178}, "sqlglot.dataframe": {"tf": 6.48074069840786}, "sqlglot.dialects": {"tf": 2.23606797749979}, "sqlglot.dialects.bigquery": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.format_time_lambda": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 3.605551275463989}, "sqlglot.executor": {"tf": 6.324555320336759}, "sqlglot.executor.execute": {"tf": 2}, "sqlglot.executor.context.Context": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.generate": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.generate_tuple": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1.4142135623730951}, "sqlglot.expressions": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.expressions.Expression.sql": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.replace": {"tf": 1}, "sqlglot.expressions.Expression.assert_is": {"tf": 1}, "sqlglot.expressions.Condition.and_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Condition.or_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Condition.not_": {"tf": 1}, "sqlglot.expressions.Unionable.union": {"tf": 1.4142135623730951}, "sqlglot.expressions.Unionable.intersect": {"tf": 1.4142135623730951}, "sqlglot.expressions.Unionable.except_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Delete.delete": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1.4142135623730951}, "sqlglot.expressions.Delete.returning": {"tf": 1.4142135623730951}, "sqlglot.expressions.Join.on": {"tf": 1.4142135623730951}, "sqlglot.expressions.Join.using": {"tf": 1.4142135623730951}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1.7320508075688772}, "sqlglot.expressions.Union.limit": {"tf": 1.4142135623730951}, "sqlglot.expressions.Union.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.from_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.group_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.order_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.sort_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.cluster_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.limit": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.offset": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.lateral": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.join": {"tf": 2.449489742783178}, "sqlglot.expressions.Select.where": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.having": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.distinct": {"tf": 1}, "sqlglot.expressions.Select.ctas": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.lock": {"tf": 1.4142135623730951}, "sqlglot.expressions.Tag": {"tf": 1}, "sqlglot.expressions.Func": {"tf": 2}, "sqlglot.expressions.maybe_parse": {"tf": 2.23606797749979}, "sqlglot.expressions.union": {"tf": 1.7320508075688772}, "sqlglot.expressions.intersect": {"tf": 1.7320508075688772}, "sqlglot.expressions.except_": {"tf": 1.7320508075688772}, "sqlglot.expressions.select": {"tf": 2}, "sqlglot.expressions.from_": {"tf": 2}, "sqlglot.expressions.update": {"tf": 2}, "sqlglot.expressions.delete": {"tf": 1.7320508075688772}, "sqlglot.expressions.condition": {"tf": 2.23606797749979}, "sqlglot.expressions.and_": {"tf": 1.4142135623730951}, "sqlglot.expressions.or_": {"tf": 1.4142135623730951}, "sqlglot.expressions.not_": {"tf": 1.4142135623730951}, "sqlglot.expressions.to_table": {"tf": 1.4142135623730951}, "sqlglot.expressions.to_column": {"tf": 1.4142135623730951}, "sqlglot.expressions.alias_": {"tf": 1.7320508075688772}, "sqlglot.expressions.subquery": {"tf": 1.4142135623730951}, "sqlglot.expressions.cast": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1.4142135623730951}, "sqlglot.expressions.var": {"tf": 1}, "sqlglot.expressions.replace_tables": {"tf": 1}, "sqlglot.expressions.replace_placeholders": {"tf": 1}, "sqlglot.expressions.expand": {"tf": 1}, "sqlglot.expressions.func": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.generate": {"tf": 1.7320508075688772}, "sqlglot.lineage.lineage": {"tf": 2}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1.4142135623730951}, "sqlglot.optimizer.canonicalize.canonicalize": {"tf": 1}, "sqlglot.optimizer.eliminate_ctes.eliminate_ctes": {"tf": 1.7320508075688772}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 1.7320508075688772}, "sqlglot.optimizer.eliminate_subqueries.eliminate_subqueries": {"tf": 1.4142135623730951}, "sqlglot.optimizer.expand_laterals.expand_laterals": {"tf": 1.7320508075688772}, "sqlglot.optimizer.expand_multi_table_selects.expand_multi_table_selects": {"tf": 1}, "sqlglot.optimizer.lower_identities.lower_identities": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1.4142135623730951}, "sqlglot.optimizer.normalize.normalize": {"tf": 1}, "sqlglot.optimizer.optimize_joins.optimize_joins": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_predicates": {"tf": 1.7320508075688772}, "sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 1.7320508075688772}, "sqlglot.optimizer.qualify_columns.qualify_columns": {"tf": 1}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1.4142135623730951}, "sqlglot.optimizer.simplify.simplify": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 1}, "sqlglot.parser.Parser.parse": {"tf": 1.7320508075688772}, "sqlglot.parser.Parser.parse_into": {"tf": 1.4142135623730951}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}, "sqlglot.tokens.Tokenizer.tokenize": {"tf": 1.4142135623730951}, "sqlglot.transforms.unalias_group": {"tf": 1}, "sqlglot.transforms.preprocess": {"tf": 1.7320508075688772}}, "df": 127, "g": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot": {"tf": 6.324555320336759}, "sqlglot.schema": {"tf": 1}, "sqlglot.parse": {"tf": 1}, "sqlglot.parse_one": {"tf": 1.4142135623730951}, "sqlglot.transpile": {"tf": 1}, "sqlglot.dataframe": {"tf": 5}, "sqlglot.dataframe.sql.Column.cast": {"tf": 1}, "sqlglot.dialects": {"tf": 3}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.diff": {"tf": 2}, "sqlglot.executor": {"tf": 4.242640687119285}, "sqlglot.expressions": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.expressions.Expression.output_name": {"tf": 1}, "sqlglot.expressions.Expression.sql": {"tf": 1}, "sqlglot.expressions.Expression.assert_is": {"tf": 1.4142135623730951}, "sqlglot.expressions.Unionable.union": {"tf": 1.4142135623730951}, "sqlglot.expressions.Unionable.intersect": {"tf": 1.4142135623730951}, "sqlglot.expressions.Unionable.except_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Column.output_name": {"tf": 1}, "sqlglot.expressions.Identifier.output_name": {"tf": 1}, "sqlglot.expressions.Literal.output_name": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1.4142135623730951}, "sqlglot.expressions.Join.using": {"tf": 1.4142135623730951}, "sqlglot.expressions.Union.select": {"tf": 1}, "sqlglot.expressions.Subquery.output_name": {"tf": 1}, "sqlglot.expressions.Star.output_name": {"tf": 1}, "sqlglot.expressions.Alias.output_name": {"tf": 1}, "sqlglot.expressions.Cast.output_name": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1}, "sqlglot.expressions.column_table_names": {"tf": 1.7320508075688772}, "sqlglot.expressions.table_name": {"tf": 1}, "sqlglot.expressions.replace_tables": {"tf": 1.4142135623730951}, "sqlglot.expressions.replace_placeholders": {"tf": 1.4142135623730951}, "sqlglot.expressions.expand": {"tf": 1}, "sqlglot.expressions.func": {"tf": 1}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 2}, "sqlglot.optimizer.eliminate_ctes.eliminate_ctes": {"tf": 2}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 2}, "sqlglot.optimizer.eliminate_subqueries.eliminate_subqueries": {"tf": 2.23606797749979}, "sqlglot.optimizer.expand_laterals.expand_laterals": {"tf": 1.4142135623730951}, "sqlglot.optimizer.expand_multi_table_selects.expand_multi_table_selects": {"tf": 1}, "sqlglot.optimizer.lower_identities.lower_identities": {"tf": 2}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 2.449489742783178}, "sqlglot.optimizer.normalize.normalize": {"tf": 2}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1.7320508075688772}, "sqlglot.optimizer.optimize_joins.optimize_joins": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1.7320508075688772}, "sqlglot.optimizer.pushdown_predicates.pushdown_predicates": {"tf": 2.23606797749979}, "sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 2.23606797749979}, "sqlglot.optimizer.qualify_columns.qualify_columns": {"tf": 2.23606797749979}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"tf": 2.23606797749979}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1.4142135623730951}, "sqlglot.optimizer.simplify.simplify": {"tf": 2.23606797749979}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 2.23606797749979}, "sqlglot.parser.Parser": {"tf": 1}, "sqlglot.schema.Schema.get_column_type": {"tf": 1}, "sqlglot.schema.MappingSchema.get_column_type": {"tf": 1}, "sqlglot.transforms.unalias_group": {"tf": 1.4142135623730951}}, "df": 76, "\u2019": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.diff": {"tf": 1}}, "df": 2}}}}}, "o": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 1}}}, "f": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "f": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}}}, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 2}}}}}, "o": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}}}}}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot": {"tf": 1.7320508075688772}, "sqlglot.parse": {"tf": 1}, "sqlglot.parse_one": {"tf": 1}, "sqlglot.transpile": {"tf": 1.4142135623730951}, "sqlglot.dataframe": {"tf": 3.4641016151377544}, "sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1}, "sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.executor.execute": {"tf": 1}, "sqlglot.expressions.Expression.sql": {"tf": 1}}, "df": 11, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dataframe": {"tf": 3.3166247903554}}, "df": 1}}}}}}, "q": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1}}, "df": 3}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 2}}, "t": {"docs": {"sqlglot.helper.split_num_words": {"tf": 2.6457513110645907}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.transpile": {"tf": 1}, "sqlglot.expressions.Expression.find": {"tf": 1}, "sqlglot.expressions.Expression.find_all": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1}}, "df": 5}, "s": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 2.449489742783178}, "sqlglot.executor.python.Python.Generator": {"tf": 2.449489742783178}, "sqlglot.generator.Generator": {"tf": 2.449489742783178}}, "df": 21}}, "c": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.diff": {"tf": 1}}, "df": 2, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}, "y": {"docs": {"sqlglot.dialects": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1.4142135623730951}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1.4142135623730951}}, "df": 3}}, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.executor": {"tf": 1}, "sqlglot.expressions.Kwarg": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1}}, "df": 3}}}}}}, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dataframe": {"tf": 2.8284271247461903}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.executor": {"tf": 1}, "sqlglot.transforms.eliminate_qualify": {"tf": 1.4142135623730951}}, "df": 6}}}}}}}, "a": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Func": {"tf": 1}, "sqlglot.helper.camel_to_snake_case": {"tf": 1}}, "df": 2}}}}, "y": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}}}}}}, "x": {"docs": {"sqlglot": {"tf": 2}, "sqlglot.parse": {"tf": 1.4142135623730951}, "sqlglot.parse_one": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.persist": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.diff": {"tf": 1.7320508075688772}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.expressions.Expression.transform": {"tf": 1}, "sqlglot.expressions.union": {"tf": 1.4142135623730951}, "sqlglot.expressions.intersect": {"tf": 1.4142135623730951}, "sqlglot.expressions.except_": {"tf": 1.4142135623730951}, "sqlglot.expressions.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.from_": {"tf": 1.4142135623730951}, "sqlglot.expressions.update": {"tf": 1}, "sqlglot.expressions.delete": {"tf": 1}, "sqlglot.expressions.condition": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.generator.Generator.generate": {"tf": 1.4142135623730951}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1}, "sqlglot.parser.Parser.parse": {"tf": 1.4142135623730951}}, "df": 58}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "x": {"docs": {"sqlglot.optimizer.scope.walk_in_scope": {"tf": 1}}, "df": 1}}}}}, "s": {"docs": {"sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1}}, "df": 1}}, "u": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.not_": {"tf": 1.4142135623730951}}, "df": 1, "e": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}, "p": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.diff": {"tf": 1}}, "df": 2, "d": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}, "r": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dataframe": {"tf": 1}, "sqlglot.dialects": {"tf": 1}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.schema.Schema.supported_table_args": {"tf": 1}, "sqlglot.transforms.eliminate_distinct_on": {"tf": 1.4142135623730951}, "sqlglot.transforms.eliminate_qualify": {"tf": 1}}, "df": 7, "s": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.dialects.bigquery": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.renametable_sql": {"tf": 1}, "sqlglot.executor.env.null_if_any": {"tf": 1}}, "df": 4}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dataframe": {"tf": 2.23606797749979}, "sqlglot.dialects": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.expressions": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.expressions.Delete.returning": {"tf": 1}}, "df": 7}}}}}}}, "b": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.trie.in_trie": {"tf": 1}}, "df": 3, "c": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dialects": {"tf": 1}, "sqlglot.expressions": {"tf": 1}}, "df": 2, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.helper.subclasses": {"tf": 2}}, "df": 1}}}}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}, "t": {"docs": {"sqlglot.expressions.Func": {"tf": 1}}, "df": 1}}}}}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.replace_placeholders": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.optimizer.scope.Scope.find": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1}}, "df": 2}}}}}}, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}, "sqlglot.diff.diff": {"tf": 1}}, "df": 2}}}, "i": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.trie.in_trie": {"tf": 1.4142135623730951}}, "df": 1}}}}, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.expressions.expand": {"tf": 1}, "sqlglot.optimizer.eliminate_subqueries.eliminate_subqueries": {"tf": 1.7320508075688772}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope": {"tf": 1}, "sqlglot.optimizer.scope.Scope.subqueries": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.columns": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 2}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}, "sqlglot.transforms.eliminate_qualify": {"tf": 1}}, "df": 12}}}, "y": {"docs": {"sqlglot.executor": {"tf": 1}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 2.449489742783178}, "sqlglot.expressions.Subquery.unnest": {"tf": 1}, "sqlglot.expressions.subquery": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.Scope": {"tf": 1}, "sqlglot.optimizer.scope.Scope.derived_tables": {"tf": 1}, "sqlglot.optimizer.scope.Scope.subqueries": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_subquery": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_correlated_subquery": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}, "sqlglot.transforms.eliminate_distinct_on": {"tf": 1}, "sqlglot.transforms.eliminate_qualify": {"tf": 1}}, "df": 12, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Union.limit": {"tf": 1}, "sqlglot.optimizer.scope.Scope.subqueries": {"tf": 1}}, "df": 2, "s": {"docs": {"sqlglot.expressions.expand": {"tf": 1}}, "df": 1}}}}}}}}}}}, "s": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "i": {"docs": {"sqlglot": {"tf": 2.6457513110645907}}, "df": 1}}}, "m": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.diff": {"tf": 2}, "sqlglot.planner.Step.from_expression": {"tf": 1.4142135623730951}, "sqlglot.planner.Scan.from_expression": {"tf": 1.4142135623730951}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1.4142135623730951}}, "df": 5, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 1}, "sqlglot.parser.Parser.validate_expression": {"tf": 1}}, "df": 6}, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "c": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.diff": {"tf": 3}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.expressions": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.expressions.Expression.text": {"tf": 1}, "sqlglot.expressions.Expression.find": {"tf": 1}}, "df": 6}, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.parser.Parser.parse_into": {"tf": 1}}, "df": 1}}}}}}, "g": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}}}, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.transpile": {"tf": 1}, "sqlglot.dataframe": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 2.449489742783178}, "sqlglot.diff.diff": {"tf": 1}, "sqlglot.expressions.Expression.walk": {"tf": 1}, "sqlglot.expressions.Select.distinct": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1}, "sqlglot.helper.should_identify": {"tf": 1.4142135623730951}, "sqlglot.schema.MappingSchema": {"tf": 1}}, "df": 11, "n": {"docs": {"sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1}}, "df": 2}}}}, "w": {"docs": {"sqlglot.dataframe": {"tf": 1.4142135623730951}}, "df": 1, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}}}}, "s": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}, "r": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 2, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}, "r": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.dataframe": {"tf": 1.7320508075688772}}, "df": 1}}}}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Select.lock": {"tf": 1.4142135623730951}, "sqlglot.optimizer.qualify_columns.Resolver": {"tf": 1}}, "df": 2}}}}, "o": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.cast": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.with_properties": {"tf": 1}, "sqlglot.diff": {"tf": 2.449489742783178}, "sqlglot.executor": {"tf": 2.8284271247461903}, "sqlglot.generator.Generator.generate": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}, "sqlglot.transforms.eliminate_qualify": {"tf": 1}}, "df": 15, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.dialects": {"tf": 1}, "sqlglot.diff": {"tf": 2.23606797749979}, "sqlglot.executor": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.helper.subclasses": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 1}, "sqlglot.schema.Schema.add_table": {"tf": 1}, "sqlglot.transforms.eliminate_qualify": {"tf": 1}, "sqlglot.transforms.remove_precision_parameterized_types": {"tf": 1}}, "df": 12, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}}, "df": 1}}}}}, "w": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.transpile": {"tf": 2}, "sqlglot.diff": {"tf": 7.937253933193772}, "sqlglot.diff.diff": {"tf": 2.8284271247461903}, "sqlglot.executor": {"tf": 1}, "sqlglot.expressions.expand": {"tf": 1}, "sqlglot.expressions.func": {"tf": 1}, "sqlglot.optimizer.eliminate_joins.join_condition": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.get_source_columns": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 1}, "sqlglot.optimizer.scope.Scope.cte_sources": {"tf": 1}, "sqlglot.optimizer.scope.Scope.source_columns": {"tf": 2}, "sqlglot.optimizer.scope.Scope.rename_source": {"tf": 1}, "sqlglot.optimizer.scope.Scope.add_source": {"tf": 1}, "sqlglot.optimizer.scope.Scope.remove_source": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1.4142135623730951}, "sqlglot.planner.Scan.from_expression": {"tf": 1.4142135623730951}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1.4142135623730951}, "sqlglot.schema.Schema.get_column_type": {"tf": 1}, "sqlglot.schema.MappingSchema.get_column_type": {"tf": 1}}, "df": 22, "d": {"docs": {"sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}}, "df": 1}, "s": {"docs": {"sqlglot.expressions.expand": {"tf": 1.4142135623730951}, "sqlglot.lineage.lineage": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.all_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.cte_sources": {"tf": 1}, "sqlglot.optimizer.scope.Scope.external_columns": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1.4142135623730951}}, "df": 8}}}}}, "f": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}}, "df": 1}}}}}}, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.diff": {"tf": 2.23606797749979}}, "df": 1, "s": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}, "r": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.executor": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 2}, "sqlglot.optimizer.optimize_joins.reorder_joins": {"tf": 1}, "sqlglot.optimizer.simplify.uniq_sort": {"tf": 1}}, "df": 4, "s": {"docs": {"sqlglot.executor": {"tf": 1}, "sqlglot.helper.tsort": {"tf": 1}}, "df": 2}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.helper.tsort": {"tf": 1}}, "df": 1}}}}}, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.Expression.is_star": {"tf": 1}, "sqlglot.expressions.Union.is_star": {"tf": 1}, "sqlglot.expressions.Select.is_star": {"tf": 1}, "sqlglot.expressions.Subquery.is_star": {"tf": 1}}, "df": 4, "t": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator": {"tf": 1.4142135623730951}, "sqlglot.helper.split_num_words": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1}}, "df": 25, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.executor": {"tf": 1.4142135623730951}}, "df": 2}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.executor.python.Python.Generator": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator": {"tf": 1.4142135623730951}}, "df": 21}}}}, "s": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.parse": {"tf": 1}, "sqlglot.parse_one": {"tf": 1.4142135623730951}, "sqlglot.transpile": {"tf": 1}, "sqlglot.dataframe": {"tf": 1}, "sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1}, "sqlglot.executor": {"tf": 1}, "sqlglot.executor.execute": {"tf": 1}, "sqlglot.expressions.Expression.parent_select": {"tf": 1}, "sqlglot.expressions.Select.ctas": {"tf": 1}, "sqlglot.expressions.except_": {"tf": 1}, "sqlglot.expressions.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.from_": {"tf": 1.4142135623730951}, "sqlglot.expressions.update": {"tf": 2.23606797749979}, "sqlglot.expressions.delete": {"tf": 2}, "sqlglot.expressions.values": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}, "sqlglot.parser.Parser.parse": {"tf": 1}}, "df": 18, "s": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.transpile": {"tf": 1}, "sqlglot.dataframe": {"tf": 2.6457513110645907}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.transforms.eliminate_distinct_on": {"tf": 1}, "sqlglot.transforms.eliminate_qualify": {"tf": 1}}, "df": 28}}}}}}, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}}, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.dialects": {"tf": 1.4142135623730951}, "sqlglot.dialects.bigquery": {"tf": 1}, "sqlglot.optimizer.canonicalize.canonicalize": {"tf": 1}}, "df": 3, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}}}}}, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff.ChangeDistiller": {"tf": 1}}, "df": 1}}}}}, "g": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.diff": {"tf": 1}}, "df": 2}}, "b": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}, "r": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 3}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 3}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 3}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 3}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 3}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 3}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 3}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 3}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 3}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 3}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 3}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 3}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 3}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 3}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 3}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 3}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 3}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 3}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 3}, "sqlglot.executor.python.Python.Generator": {"tf": 3}, "sqlglot.expressions.Expression.append": {"tf": 1}, "sqlglot.expressions.Expression.set": {"tf": 1}, "sqlglot.expressions.Condition.and_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Condition.or_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Unionable.union": {"tf": 1.4142135623730951}, "sqlglot.expressions.Unionable.intersect": {"tf": 1.4142135623730951}, "sqlglot.expressions.Unionable.except_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Join.on": {"tf": 1.4142135623730951}, "sqlglot.expressions.Join.using": {"tf": 1.4142135623730951}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1.7320508075688772}, "sqlglot.expressions.Union.limit": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.from_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.group_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.order_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.sort_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.cluster_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.limit": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.offset": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.lateral": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.join": {"tf": 2.23606797749979}, "sqlglot.expressions.Select.where": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.having": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.ctas": {"tf": 1.4142135623730951}, "sqlglot.expressions.union": {"tf": 1.7320508075688772}, "sqlglot.expressions.intersect": {"tf": 1.7320508075688772}, "sqlglot.expressions.except_": {"tf": 1.7320508075688772}, "sqlglot.expressions.from_": {"tf": 1.4142135623730951}, "sqlglot.expressions.condition": {"tf": 1.4142135623730951}, "sqlglot.expressions.and_": {"tf": 1.4142135623730951}, "sqlglot.expressions.or_": {"tf": 1.4142135623730951}, "sqlglot.expressions.not_": {"tf": 1.4142135623730951}, "sqlglot.expressions.subquery": {"tf": 1.7320508075688772}, "sqlglot.expressions.table_": {"tf": 1.7320508075688772}, "sqlglot.expressions.table_name": {"tf": 1}, "sqlglot.expressions.replace_tables": {"tf": 1}, "sqlglot.expressions.replace_placeholders": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator": {"tf": 3}, "sqlglot.helper.ensure_collection": {"tf": 1}, "sqlglot.helper.is_iterable": {"tf": 1}, "sqlglot.helper.flatten": {"tf": 1}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.source_columns": {"tf": 1}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1}, "sqlglot.schema.MappingSchema": {"tf": 1}}, "df": 65, "f": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}}}, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe": {"tf": 2}, "sqlglot.diff": {"tf": 1}, "sqlglot.executor.execute": {"tf": 1}, "sqlglot.schema.Schema.add_table": {"tf": 1}, "sqlglot.schema.MappingSchema.add_table": {"tf": 1}}, "df": 5, "d": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.diff": {"tf": 1}}, "df": 2}, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe": {"tf": 2.23606797749979}}, "df": 1}}}}, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.dataframe": {"tf": 3.7416573867739413}}, "df": 1}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot": {"tf": 1.7320508075688772}, "sqlglot.parse": {"tf": 1.4142135623730951}, "sqlglot.parse_one": {"tf": 1.4142135623730951}, "sqlglot.transpile": {"tf": 2}, "sqlglot.dataframe": {"tf": 2.6457513110645907}, "sqlglot.dataframe.sql.Column.cast": {"tf": 1}, "sqlglot.dialects": {"tf": 1.4142135623730951}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 2.449489742783178}, "sqlglot.diff": {"tf": 3.1622776601683795}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.executor.python.Python.Generator": {"tf": 2.449489742783178}, "sqlglot.expressions.Expression.is_string": {"tf": 1}, "sqlglot.expressions.Expression.alias": {"tf": 1}, "sqlglot.expressions.Expression.output_name": {"tf": 1}, "sqlglot.expressions.Expression.sql": {"tf": 1.7320508075688772}, "sqlglot.expressions.Unionable.union": {"tf": 1}, "sqlglot.expressions.Unionable.intersect": {"tf": 1}, "sqlglot.expressions.Unionable.except_": {"tf": 1}, "sqlglot.expressions.Column.output_name": {"tf": 1}, "sqlglot.expressions.Identifier.output_name": {"tf": 1}, "sqlglot.expressions.Literal.output_name": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Union.limit": {"tf": 1}, "sqlglot.expressions.Select.limit": {"tf": 1}, "sqlglot.expressions.Select.offset": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.ctas": {"tf": 1}, "sqlglot.expressions.Subquery.output_name": {"tf": 1}, "sqlglot.expressions.Star.output_name": {"tf": 1}, "sqlglot.expressions.Alias.output_name": {"tf": 1}, "sqlglot.expressions.Func": {"tf": 1}, "sqlglot.expressions.Cast.output_name": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 2.449489742783178}, "sqlglot.expressions.union": {"tf": 1.4142135623730951}, "sqlglot.expressions.intersect": {"tf": 1.4142135623730951}, "sqlglot.expressions.except_": {"tf": 1.4142135623730951}, "sqlglot.expressions.select": {"tf": 1.7320508075688772}, "sqlglot.expressions.from_": {"tf": 1.7320508075688772}, "sqlglot.expressions.condition": {"tf": 1.7320508075688772}, "sqlglot.expressions.to_interval": {"tf": 1}, "sqlglot.expressions.to_table": {"tf": 1}, "sqlglot.expressions.to_column": {"tf": 1}, "sqlglot.expressions.table_name": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator": {"tf": 2.449489742783178}, "sqlglot.generator.Generator.generate": {"tf": 1.7320508075688772}, "sqlglot.helper.AutoName": {"tf": 1}, "sqlglot.helper.csv": {"tf": 1.7320508075688772}, "sqlglot.helper.should_identify": {"tf": 1}, "sqlglot.lineage.lineage": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1}, "sqlglot.parser.Parser.parse": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 1}, "sqlglot.schema.Schema.add_table": {"tf": 1}, "sqlglot.schema.MappingSchema.add_table": {"tf": 1}, "sqlglot.time.format_time": {"tf": 1.4142135623730951}, "sqlglot.tokens.Token.string": {"tf": 1.4142135623730951}, "sqlglot.tokens.Tokenizer.tokenize": {"tf": 1}, "sqlglot.transforms.preprocess": {"tf": 1}}, "df": 95, "s": {"docs": {"sqlglot.transpile": {"tf": 1}, "sqlglot.diff": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.expressions.Expression.text": {"tf": 1}, "sqlglot.expressions.Condition.and_": {"tf": 1}, "sqlglot.expressions.Condition.or_": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Delete.returning": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Join.using": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.expressions.Select.select": {"tf": 1}, "sqlglot.expressions.Select.lateral": {"tf": 1}, "sqlglot.expressions.Select.where": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1}, "sqlglot.expressions.and_": {"tf": 1}, "sqlglot.expressions.or_": {"tf": 1}, "sqlglot.expressions.not_": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1}, "sqlglot.expressions.subquery": {"tf": 1}, "sqlglot.trie.new_trie": {"tf": 1}}, "df": 26}, "t": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe": {"tf": 2.6457513110645907}}, "df": 1}}}}}}}, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}}, "df": 1}}}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.dataframe": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1.7320508075688772}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1.4142135623730951}, "sqlglot.planner.Scan.from_expression": {"tf": 1.4142135623730951}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1.4142135623730951}}, "df": 7, "s": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.diff.diff": {"tf": 1}, "sqlglot.executor": {"tf": 2.23606797749979}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}}, "df": 6}}, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.dataframe": {"tf": 1.4142135623730951}, "sqlglot.expressions.Func": {"tf": 1}}, "df": 2}}, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.DataFrame.persist": {"tf": 1}}, "df": 1}}}}, "p": {"docs": {"sqlglot.expressions.Expression.walk": {"tf": 1}}, "df": 1, "p": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.optimizer.scope.walk_in_scope": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 1}}, "df": 2}}}}, "s": {"docs": {"sqlglot.trie.in_trie": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}}, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}}, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 2}}}, "o": {"docs": {}, "df": 0, "w": {"docs": {"sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.generate": {"tf": 1}}, "df": 3}}, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot": {"tf": 6.164414002968976}, "sqlglot.dataframe": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.diff": {"tf": 2.8284271247461903}, "sqlglot.executor": {"tf": 3.605551275463989}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.expressions": {"tf": 1}, "sqlglot.expressions.Expression.output_name": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.parent_select": {"tf": 1}, "sqlglot.expressions.Expression.replace": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.assert_is": {"tf": 2}, "sqlglot.expressions.Unionable.union": {"tf": 2}, "sqlglot.expressions.Unionable.intersect": {"tf": 2}, "sqlglot.expressions.Unionable.except_": {"tf": 2}, "sqlglot.expressions.Column.output_name": {"tf": 1.7320508075688772}, "sqlglot.expressions.Identifier.output_name": {"tf": 1.7320508075688772}, "sqlglot.expressions.Literal.output_name": {"tf": 1.7320508075688772}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 2.449489742783178}, "sqlglot.expressions.Subqueryable.with_": {"tf": 2.449489742783178}, "sqlglot.expressions.Union.limit": {"tf": 2.449489742783178}, "sqlglot.expressions.Union.select": {"tf": 2.8284271247461903}, "sqlglot.expressions.Select.from_": {"tf": 2}, "sqlglot.expressions.Select.group_by": {"tf": 2}, "sqlglot.expressions.Select.order_by": {"tf": 2}, "sqlglot.expressions.Select.sort_by": {"tf": 2}, "sqlglot.expressions.Select.cluster_by": {"tf": 2}, "sqlglot.expressions.Select.limit": {"tf": 2}, "sqlglot.expressions.Select.offset": {"tf": 2}, "sqlglot.expressions.Select.select": {"tf": 2.23606797749979}, "sqlglot.expressions.Select.lateral": {"tf": 2}, "sqlglot.expressions.Select.join": {"tf": 3.1622776601683795}, "sqlglot.expressions.Select.where": {"tf": 2}, "sqlglot.expressions.Select.having": {"tf": 2}, "sqlglot.expressions.Select.distinct": {"tf": 2.23606797749979}, "sqlglot.expressions.Select.ctas": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.lock": {"tf": 2.449489742783178}, "sqlglot.expressions.Subquery.output_name": {"tf": 1.7320508075688772}, "sqlglot.expressions.Tag": {"tf": 1}, "sqlglot.expressions.Star.output_name": {"tf": 1.7320508075688772}, "sqlglot.expressions.Alias.output_name": {"tf": 1.7320508075688772}, "sqlglot.expressions.Cast.output_name": {"tf": 1.7320508075688772}, "sqlglot.expressions.union": {"tf": 2}, "sqlglot.expressions.intersect": {"tf": 2}, "sqlglot.expressions.except_": {"tf": 2}, "sqlglot.expressions.select": {"tf": 2.449489742783178}, "sqlglot.expressions.from_": {"tf": 2.23606797749979}, "sqlglot.expressions.condition": {"tf": 1.7320508075688772}, "sqlglot.expressions.alias_": {"tf": 1.4142135623730951}, "sqlglot.expressions.subquery": {"tf": 2.449489742783178}, "sqlglot.expressions.table_name": {"tf": 1}, "sqlglot.expressions.replace_tables": {"tf": 1.4142135623730951}, "sqlglot.expressions.replace_placeholders": {"tf": 1.4142135623730951}, "sqlglot.expressions.expand": {"tf": 2}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1.4142135623730951}, "sqlglot.optimizer.eliminate_ctes.eliminate_ctes": {"tf": 1.7320508075688772}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 1.7320508075688772}, "sqlglot.optimizer.eliminate_subqueries.eliminate_subqueries": {"tf": 3}, "sqlglot.optimizer.expand_laterals.expand_laterals": {"tf": 1.4142135623730951}, "sqlglot.optimizer.expand_multi_table_selects.expand_multi_table_selects": {"tf": 1.4142135623730951}, "sqlglot.optimizer.lower_identities.lower_identities": {"tf": 1.4142135623730951}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 2.6457513110645907}, "sqlglot.optimizer.optimize_joins.optimize_joins": {"tf": 1.4142135623730951}, "sqlglot.optimizer.pushdown_predicates.pushdown_predicates": {"tf": 2}, "sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 2}, "sqlglot.optimizer.qualify_columns.qualify_columns": {"tf": 1.4142135623730951}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope": {"tf": 2.6457513110645907}, "sqlglot.optimizer.scope.Scope.derived_tables": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.subqueries": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 1}, "sqlglot.optimizer.scope.Scope.selects": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 2.449489742783178}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 2}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}, "sqlglot.transforms.unalias_group": {"tf": 1.7320508075688772}, "sqlglot.transforms.eliminate_distinct_on": {"tf": 1.4142135623730951}, "sqlglot.transforms.eliminate_qualify": {"tf": 1}}, "df": 99, "s": {"docs": {"sqlglot.executor": {"tf": 1}, "sqlglot.optimizer.expand_multi_table_selects.expand_multi_table_selects": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1}, "sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 1}}, "df": 4}, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.Expression.output_name": {"tf": 1}, "sqlglot.expressions.Column.output_name": {"tf": 1}, "sqlglot.expressions.Identifier.output_name": {"tf": 1}, "sqlglot.expressions.Literal.output_name": {"tf": 1}, "sqlglot.expressions.Subquery.output_name": {"tf": 1}, "sqlglot.expressions.Star.output_name": {"tf": 1}, "sqlglot.expressions.Alias.output_name": {"tf": 1}, "sqlglot.expressions.Cast.output_name": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 1}}, "df": 9, "s": {"docs": {"sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1}, "sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 1.7320508075688772}, "sqlglot.transforms.eliminate_qualify": {"tf": 1}}, "df": 3}}, "|": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.optimizer.scope.Scope": {"tf": 1}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 1}}, "df": 1}}}}}}}, "f": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.dialects": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.executor.table.Tables": {"tf": 1}, "sqlglot.expressions.Expression.unnest": {"tf": 1}, "sqlglot.helper.count_params": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1}}, "df": 7}}, "e": {"docs": {"sqlglot": {"tf": 1.7320508075688772}, "sqlglot.dataframe": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 3, "n": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.transforms.eliminate_qualify": {"tf": 1}}, "df": 2}, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}, "q": {"docs": {"sqlglot.helper.seq_get": {"tf": 1}}, "df": 1, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.diff": {"tf": 2.23606797749979}, "sqlglot.diff.diff": {"tf": 1}, "sqlglot.expressions.Expression.error_messages": {"tf": 1}, "sqlglot.expressions.Dot.build": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1.4142135623730951}, "sqlglot.transforms.preprocess": {"tf": 1.4142135623730951}, "sqlglot.trie.new_trie": {"tf": 1}}, "df": 8, "s": {"docs": {"sqlglot.diff": {"tf": 2.449489742783178}}, "df": 1}}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}}}}}, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.diff": {"tf": 1.7320508075688772}}, "df": 2, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 2}}}}}}}}}}, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1.4142135623730951}}, "df": 1, "r": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1}, "sqlglot.diff": {"tf": 1}}, "df": 2}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Expression.dump": {"tf": 1}, "sqlglot.serde.dump": {"tf": 1}}, "df": 2}}}}}}}}}}, "t": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.transpile": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.7320508075688772}, "sqlglot.diff": {"tf": 5.916079783099616}, "sqlglot.executor": {"tf": 1}, "sqlglot.executor.context.Context": {"tf": 1.4142135623730951}, "sqlglot.executor.python.Python.Generator": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.set": {"tf": 1}, "sqlglot.expressions.Expression.walk": {"tf": 1}, "sqlglot.expressions.Expression.transform": {"tf": 1}, "sqlglot.expressions.Expression.error_messages": {"tf": 1}, "sqlglot.expressions.Unionable.union": {"tf": 1}, "sqlglot.expressions.Unionable.intersect": {"tf": 1}, "sqlglot.expressions.Unionable.except_": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Delete.returning": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Join.using": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Union.limit": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.expressions.Select.limit": {"tf": 1}, "sqlglot.expressions.Select.offset": {"tf": 1}, "sqlglot.expressions.Select.select": {"tf": 1}, "sqlglot.expressions.Select.lateral": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.where": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1}, "sqlglot.expressions.Select.distinct": {"tf": 1}, "sqlglot.expressions.Select.lock": {"tf": 1}, "sqlglot.expressions.Func": {"tf": 1.4142135623730951}, "sqlglot.expressions.union": {"tf": 1}, "sqlglot.expressions.intersect": {"tf": 1}, "sqlglot.expressions.except_": {"tf": 1}, "sqlglot.expressions.update": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.generate": {"tf": 1}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1}, "sqlglot.parser.Parser.expression": {"tf": 1}, "sqlglot.parser.Parser.validate_expression": {"tf": 1}, "sqlglot.schema.MappingSchema": {"tf": 1.7320508075688772}}, "df": 85, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "s": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.append": {"tf": 1}, "sqlglot.expressions.Expression.set": {"tf": 1}, "sqlglot.helper.first": {"tf": 1}}, "df": 4}, "t": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.parser.Parser.check_errors": {"tf": 1}, "sqlglot.parser.Parser.raise_error": {"tf": 1}}, "df": 3}}}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}}, "df": 1, "s": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.diff": {"tf": 1}}, "df": 2}}}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}}, "df": 1, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.Expression.assert_is": {"tf": 1}}, "df": 1}}}}}}, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dataframe": {"tf": 2.449489742783178}}, "df": 1}}}}}, "g": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.executor.python.Python.Generator": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator": {"tf": 1.4142135623730951}}, "df": 21}}}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.helper.subclasses": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1}, "sqlglot.optimizer.scope.Scope.traverse": {"tf": 1}, "sqlglot.trie.in_trie": {"tf": 1.4142135623730951}}, "df": 6, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.helper.find_new_name": {"tf": 1}}, "df": 1}, "d": {"docs": {"sqlglot.trie.in_trie": {"tf": 1}}, "df": 1}}}}}, "m": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}}}, "p": {"docs": {"sqlglot.helper.csv": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1}}, "df": 2, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.helper.csv": {"tf": 1}}, "df": 1}}}}}}}}, "s": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.schema": {"tf": 1}, "sqlglot.dataframe": {"tf": 4.242640687119285}, "sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 2.23606797749979}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.executor.execute": {"tf": 1.7320508075688772}, "sqlglot.expressions.to_table": {"tf": 1.7320508075688772}, "sqlglot.expressions.to_column": {"tf": 1}, "sqlglot.lineage.lineage": {"tf": 1.4142135623730951}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 2.6457513110645907}, "sqlglot.optimizer.lower_identities.lower_identities": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 2.449489742783178}, "sqlglot.optimizer.qualify_columns.qualify_columns": {"tf": 2.23606797749979}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 1}, "sqlglot.schema.Schema.get_column_type": {"tf": 1}, "sqlglot.schema.Schema.supported_table_args": {"tf": 1}, "sqlglot.schema.MappingSchema": {"tf": 2}, "sqlglot.schema.MappingSchema.get_column_type": {"tf": 1}}, "df": 20, "s": {"docs": {"sqlglot.schema.Schema": {"tf": 1}}, "df": 1}}}}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.executor": {"tf": 1.4142135623730951}}, "df": 2}}}, "p": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.diff": {"tf": 3.605551275463989}}, "df": 1, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 4.242640687119285}}, "df": 1, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}, "p": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.executor": {"tf": 1}, "sqlglot.executor.context.Context.__init__": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.all_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 3.3166247903554}, "sqlglot.optimizer.scope.Scope.branch": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1}, "sqlglot.optimizer.scope.Scope.replace": {"tf": 1}, "sqlglot.optimizer.scope.Scope.tables": {"tf": 1}, "sqlglot.optimizer.scope.Scope.ctes": {"tf": 1}, "sqlglot.optimizer.scope.Scope.derived_tables": {"tf": 1}, "sqlglot.optimizer.scope.Scope.udtfs": {"tf": 1}, "sqlglot.optimizer.scope.Scope.subqueries": {"tf": 1}, "sqlglot.optimizer.scope.Scope.columns": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 1}, "sqlglot.optimizer.scope.Scope.cte_sources": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.selects": {"tf": 1}, "sqlglot.optimizer.scope.Scope.external_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.unqualified_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.join_hints": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.source_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_subquery": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_derived_table": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_union": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_cte": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_root": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_udtf": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_correlated_subquery": {"tf": 1}, "sqlglot.optimizer.scope.Scope.rename_source": {"tf": 1}, "sqlglot.optimizer.scope.Scope.add_source": {"tf": 1}, "sqlglot.optimizer.scope.Scope.remove_source": {"tf": 1}, "sqlglot.optimizer.scope.Scope.traverse": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.Scope.ref_count": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.build_scope": {"tf": 2}}, "df": 35, "t": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.scope.Scope": {"tf": 1}}, "df": 1}}}}, "s": {"docs": {"sqlglot.optimizer.scope.Scope": {"tf": 3.605551275463989}, "sqlglot.optimizer.scope.Scope.external_columns": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 2.449489742783178}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1}}, "df": 4}}}}, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1, "s": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.executor": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}, "r": {"docs": {"sqlglot.executor.context.Context": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 1}}, "df": 2, "s": {"docs": {"sqlglot.executor.context.Context": {"tf": 1}}, "df": 1}}}}, "n": {"docs": {"sqlglot.executor": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1.4142135623730951}, "sqlglot.planner.Scan.from_expression": {"tf": 1.4142135623730951}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1.4142135623730951}}, "df": 4}}}, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser": {"tf": 1.4142135623730951}}, "df": 42, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dialects": {"tf": 1}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}}, "df": 3}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}}, "df": 21}}}}}}, "k": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.dataframe": {"tf": 1}}, "df": 2, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.dataframe": {"tf": 1}}, "df": 1}}}}}}, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1}, "sqlglot.optimizer.simplify.simplify": {"tf": 1.7320508075688772}}, "df": 3}, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.executor": {"tf": 1}, "sqlglot.optimizer.simplify.rewrite_between": {"tf": 1}}, "df": 2}}}}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.optimizer.simplify.simplify": {"tf": 1}}, "df": 1}}}}}, "e": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 2.449489742783178}, "sqlglot.executor.execute": {"tf": 1}}, "df": 3}, "y": {"docs": {"sqlglot.optimizer.pushdown_predicates.pushdown_cnf": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dataframe": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 2}, "sqlglot.executor": {"tf": 1}}, "df": 3, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.diff": {"tf": 4.242640687119285}}, "df": 1}}}}}}}}, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.transpile": {"tf": 1}, "sqlglot.dataframe": {"tf": 1}, "sqlglot.errors.ErrorLevel.RAISE": {"tf": 1}, "sqlglot.executor": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1}, "sqlglot.trie.new_trie": {"tf": 1}}, "df": 11}}}, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.dialects": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 4}}}, "z": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}}, "df": 21}}, "d": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 2.449489742783178}, "sqlglot.expressions.union": {"tf": 1.4142135623730951}, "sqlglot.expressions.intersect": {"tf": 1.4142135623730951}, "sqlglot.expressions.except_": {"tf": 1.4142135623730951}}, "df": 4}}, "g": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}}}, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.diff": {"tf": 2.6457513110645907}, "sqlglot.diff.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1}, "sqlglot.expressions.Expression.same_parent": {"tf": 1}, "sqlglot.expressions.Expression.flatten": {"tf": 1}, "sqlglot.expressions.Expression.transform": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 9}}, "f": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.helper.should_identify": {"tf": 1}}, "df": 22}}, "w": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}}}}, "y": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}, "w": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.expressions.Expression.replace": {"tf": 1}}, "df": 1, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}, "i": {"docs": {"sqlglot": {"tf": 1.7320508075688772}, "sqlglot.diff": {"tf": 4.795831523312719}, "sqlglot.executor": {"tf": 4.69041575982343}, "sqlglot.expressions.Expression": {"tf": 1}}, "df": 4, "s": {"docs": {"sqlglot": {"tf": 3.1622776601683795}, "sqlglot.transpile": {"tf": 1}, "sqlglot.dataframe": {"tf": 3.4641016151377544}, "sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.dialects": {"tf": 1.7320508075688772}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 2}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 2}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 2}, "sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 2}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 2}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 2}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 2}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 2}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 2}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 2}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 2}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 2}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 2}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 2}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 2}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 2}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 2}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 2}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 2}, "sqlglot.diff": {"tf": 7.54983443527075}, "sqlglot.diff.diff": {"tf": 1}, "sqlglot.diff.ChangeDistiller": {"tf": 1}, "sqlglot.executor": {"tf": 4.58257569495584}, "sqlglot.executor.context.Context": {"tf": 1.4142135623730951}, "sqlglot.executor.python.Python.Generator": {"tf": 2}, "sqlglot.executor.table.Tables": {"tf": 1}, "sqlglot.expressions": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 2.449489742783178}, "sqlglot.expressions.Expression.is_string": {"tf": 1}, "sqlglot.expressions.Expression.is_number": {"tf": 1}, "sqlglot.expressions.Expression.is_int": {"tf": 1}, "sqlglot.expressions.Expression.is_star": {"tf": 1}, "sqlglot.expressions.Expression.output_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.same_parent": {"tf": 1}, "sqlglot.expressions.Expression.unalias": {"tf": 1}, "sqlglot.expressions.Expression.transform": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.assert_is": {"tf": 2}, "sqlglot.expressions.Expression.error_messages": {"tf": 1.4142135623730951}, "sqlglot.expressions.Condition.and_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Condition.or_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Unionable.union": {"tf": 1.7320508075688772}, "sqlglot.expressions.Unionable.intersect": {"tf": 1.7320508075688772}, "sqlglot.expressions.Unionable.except_": {"tf": 1.7320508075688772}, "sqlglot.expressions.Column.output_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.Delete.where": {"tf": 1.4142135623730951}, "sqlglot.expressions.Delete.returning": {"tf": 1.4142135623730951}, "sqlglot.expressions.Identifier.output_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.Literal.output_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.Join.on": {"tf": 1.4142135623730951}, "sqlglot.expressions.Join.using": {"tf": 1.4142135623730951}, "sqlglot.expressions.Subqueryable.with_": {"tf": 2.23606797749979}, "sqlglot.expressions.Union.limit": {"tf": 2}, "sqlglot.expressions.Union.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.Union.is_star": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 2}, "sqlglot.expressions.Select.group_by": {"tf": 2.449489742783178}, "sqlglot.expressions.Select.order_by": {"tf": 2}, "sqlglot.expressions.Select.sort_by": {"tf": 2}, "sqlglot.expressions.Select.cluster_by": {"tf": 2}, "sqlglot.expressions.Select.limit": {"tf": 2}, "sqlglot.expressions.Select.offset": {"tf": 2}, "sqlglot.expressions.Select.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.lateral": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.join": {"tf": 2.449489742783178}, "sqlglot.expressions.Select.where": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.having": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.ctas": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.is_star": {"tf": 1}, "sqlglot.expressions.Subquery.is_star": {"tf": 1}, "sqlglot.expressions.Subquery.output_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.Star.output_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.Alias.output_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.Func": {"tf": 1.4142135623730951}, "sqlglot.expressions.Cast.output_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.maybe_parse": {"tf": 1.7320508075688772}, "sqlglot.expressions.union": {"tf": 2.23606797749979}, "sqlglot.expressions.intersect": {"tf": 2.23606797749979}, "sqlglot.expressions.except_": {"tf": 2.23606797749979}, "sqlglot.expressions.select": {"tf": 2.23606797749979}, "sqlglot.expressions.from_": {"tf": 2.23606797749979}, "sqlglot.expressions.condition": {"tf": 2.449489742783178}, "sqlglot.expressions.and_": {"tf": 1.7320508075688772}, "sqlglot.expressions.or_": {"tf": 1.7320508075688772}, "sqlglot.expressions.not_": {"tf": 1.7320508075688772}, "sqlglot.expressions.to_table": {"tf": 1.4142135623730951}, "sqlglot.expressions.to_column": {"tf": 1.7320508075688772}, "sqlglot.expressions.alias_": {"tf": 2}, "sqlglot.expressions.subquery": {"tf": 1.7320508075688772}, "sqlglot.expressions.values": {"tf": 1.4142135623730951}, "sqlglot.expressions.convert": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 2}, "sqlglot.generator.Generator.generate": {"tf": 1}, "sqlglot.helper.AutoName": {"tf": 1.4142135623730951}, "sqlglot.helper.seq_get": {"tf": 1}, "sqlglot.helper.ensure_list": {"tf": 1}, "sqlglot.helper.ensure_collection": {"tf": 1}, "sqlglot.helper.while_changing": {"tf": 1}, "sqlglot.helper.is_iterable": {"tf": 2.23606797749979}, "sqlglot.optimizer.lower_identities.lower_identities": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1.4142135623730951}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.Scope.replace": {"tf": 1}, "sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_subquery": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_derived_table": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_union": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_cte": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_root": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_udtf": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_correlated_subquery": {"tf": 1}, "sqlglot.optimizer.scope.Scope.ref_count": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1.4142135623730951}, "sqlglot.optimizer.simplify.rewrite_between": {"tf": 1.4142135623730951}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser.parse_into": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1}, "sqlglot.schema.MappingSchema.add_table": {"tf": 1}, "sqlglot.transforms.eliminate_distinct_on": {"tf": 1}, "sqlglot.transforms.eliminate_qualify": {"tf": 1.4142135623730951}, "sqlglot.transforms.delegate": {"tf": 1}, "sqlglot.trie.new_trie": {"tf": 1.7320508075688772}, "sqlglot.trie.in_trie": {"tf": 2.23606797749979}}, "df": 156, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 2}}}}}}}}, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe": {"tf": 1}}, "df": 1}}}, "n": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 2}, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1.7320508075688772}}, "df": 1}}}}}}}, "t": {"docs": {"sqlglot": {"tf": 3.1622776601683795}, "sqlglot.dataframe": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.cast": {"tf": 1}, "sqlglot.dialects": {"tf": 1.4142135623730951}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.with_properties": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.diff": {"tf": 3.7416573867739413}, "sqlglot.executor": {"tf": 4.898979485566356}, "sqlglot.executor.python.PythonExecutor.generate": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.expressions": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.alias": {"tf": 1}, "sqlglot.expressions.Expression.append": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.assert_is": {"tf": 1}, "sqlglot.expressions.Condition.and_": {"tf": 1}, "sqlglot.expressions.Condition.or_": {"tf": 1}, "sqlglot.expressions.Unionable.union": {"tf": 1}, "sqlglot.expressions.Unionable.intersect": {"tf": 1}, "sqlglot.expressions.Unionable.except_": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Delete.returning": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Join.using": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1}, "sqlglot.expressions.Union.limit": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.expressions.Select.limit": {"tf": 1}, "sqlglot.expressions.Select.offset": {"tf": 1}, "sqlglot.expressions.Select.select": {"tf": 1}, "sqlglot.expressions.Select.lateral": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.where": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1}, "sqlglot.expressions.Select.ctas": {"tf": 1}, "sqlglot.expressions.Select.lock": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1}, "sqlglot.expressions.union": {"tf": 1.4142135623730951}, "sqlglot.expressions.intersect": {"tf": 1.4142135623730951}, "sqlglot.expressions.except_": {"tf": 1.4142135623730951}, "sqlglot.expressions.alias_": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.helper.ensure_list": {"tf": 1.4142135623730951}, "sqlglot.helper.ensure_collection": {"tf": 1.4142135623730951}, "sqlglot.helper.apply_index_offset": {"tf": 1.4142135623730951}, "sqlglot.helper.open_file": {"tf": 1}, "sqlglot.helper.is_iterable": {"tf": 1.4142135623730951}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.get_table": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 1}, "sqlglot.parser.Parser.raise_error": {"tf": 1}, "sqlglot.parser.Parser.validate_expression": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}, "sqlglot.transforms.eliminate_qualify": {"tf": 1.4142135623730951}}, "df": 87, "e": {"docs": {}, "df": 0, "m": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.expressions.Func": {"tf": 1}}, "df": 2, "s": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.expressions.Func": {"tf": 1}, "sqlglot.parser.Parser.validate_expression": {"tf": 1}}, "df": 3}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1, "s": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.helper.is_iterable": {"tf": 2.23606797749979}, "sqlglot.helper.flatten": {"tf": 2}, "sqlglot.helper.first": {"tf": 1}}, "df": 3, "s": {"docs": {"sqlglot.helper.flatten": {"tf": 1}}, "df": 1}}}}}}}, "s": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dialects": {"tf": 1.7320508075688772}, "sqlglot.diff": {"tf": 2.6457513110645907}, "sqlglot.executor": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.pop": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 1}, "sqlglot.parser.Parser.validate_expression": {"tf": 1}, "sqlglot.tokens.Token.number": {"tf": 1}, "sqlglot.tokens.Token.string": {"tf": 1}, "sqlglot.tokens.Token.identifier": {"tf": 1}, "sqlglot.tokens.Token.var": {"tf": 1}}, "df": 12, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "f": {"docs": {"sqlglot.dialects.redshift.Redshift.Generator.renametable_sql": {"tf": 1}, "sqlglot.diff": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.same_parent": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}}, "df": 4}}}}, "\u2019": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}}, "n": {"docs": {"sqlglot": {"tf": 4.123105625617661}, "sqlglot.schema": {"tf": 1}, "sqlglot.transpile": {"tf": 1.4142135623730951}, "sqlglot.dataframe": {"tf": 3.605551275463989}, "sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.dialects": {"tf": 1.4142135623730951}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 2.8284271247461903}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 2.8284271247461903}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 2.8284271247461903}, "sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 2.8284271247461903}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 2.8284271247461903}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 2.8284271247461903}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 2.8284271247461903}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 2.8284271247461903}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 2.8284271247461903}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 2.8284271247461903}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 2.8284271247461903}, "sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 2.8284271247461903}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 2.449489742783178}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 2.8284271247461903}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 2.8284271247461903}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 2.8284271247461903}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 2.8284271247461903}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 2.8284271247461903}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 2.8284271247461903}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 2.8284271247461903}, "sqlglot.diff": {"tf": 8.12403840463596}, "sqlglot.diff.diff": {"tf": 1.7320508075688772}, "sqlglot.diff.ChangeDistiller": {"tf": 1.7320508075688772}, "sqlglot.executor": {"tf": 3.605551275463989}, "sqlglot.executor.execute": {"tf": 1}, "sqlglot.executor.env.null_if_any": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 2.8284271247461903}, "sqlglot.expressions": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 2.23606797749979}, "sqlglot.expressions.Expression.find": {"tf": 1}, "sqlglot.expressions.Expression.find_all": {"tf": 1}, "sqlglot.expressions.Expression.walk": {"tf": 1}, "sqlglot.expressions.Expression.dfs": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.bfs": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.transform": {"tf": 1}, "sqlglot.expressions.Expression.assert_is": {"tf": 1}, "sqlglot.expressions.Column.parts": {"tf": 1}, "sqlglot.expressions.Delete.delete": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Delete.returning": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Join.using": {"tf": 1}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1}, "sqlglot.expressions.Union.limit": {"tf": 1.4142135623730951}, "sqlglot.expressions.Union.select": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.group_by": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.order_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.sort_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.cluster_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.limit": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.offset": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.select": {"tf": 1}, "sqlglot.expressions.Select.lateral": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1}, "sqlglot.expressions.Select.where": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1}, "sqlglot.expressions.Select.distinct": {"tf": 1}, "sqlglot.expressions.Select.ctas": {"tf": 1}, "sqlglot.expressions.Select.lock": {"tf": 1}, "sqlglot.expressions.Kwarg": {"tf": 1}, "sqlglot.expressions.Func": {"tf": 1.4142135623730951}, "sqlglot.expressions.maybe_parse": {"tf": 1.4142135623730951}, "sqlglot.expressions.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.from_": {"tf": 1.4142135623730951}, "sqlglot.expressions.condition": {"tf": 1.4142135623730951}, "sqlglot.expressions.to_table": {"tf": 1}, "sqlglot.expressions.to_column": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1}, "sqlglot.expressions.column_table_names": {"tf": 1}, "sqlglot.expressions.replace_tables": {"tf": 1}, "sqlglot.expressions.replace_placeholders": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator": {"tf": 2.8284271247461903}, "sqlglot.helper.seq_get": {"tf": 1}, "sqlglot.helper.ensure_list": {"tf": 1}, "sqlglot.helper.ensure_collection": {"tf": 1}, "sqlglot.helper.subclasses": {"tf": 1}, "sqlglot.helper.apply_index_offset": {"tf": 1.4142135623730951}, "sqlglot.helper.tsort": {"tf": 1.4142135623730951}, "sqlglot.helper.open_file": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1}, "sqlglot.helper.flatten": {"tf": 1}, "sqlglot.helper.count_params": {"tf": 1}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1.4142135623730951}, "sqlglot.optimizer.normalize.normalize": {"tf": 1}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1.4142135623730951}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1.7320508075688772}, "sqlglot.optimizer.pushdown_predicates.pushdown_predicates": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_cnf": {"tf": 1.4142135623730951}, "sqlglot.optimizer.pushdown_predicates.pushdown_dnf": {"tf": 1.4142135623730951}, "sqlglot.optimizer.qualify_columns.Resolver.all_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1}, "sqlglot.optimizer.scope.Scope.tables": {"tf": 1}, "sqlglot.optimizer.scope.Scope.ctes": {"tf": 1}, "sqlglot.optimizer.scope.Scope.derived_tables": {"tf": 1}, "sqlglot.optimizer.scope.Scope.udtfs": {"tf": 1}, "sqlglot.optimizer.scope.Scope.subqueries": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.columns": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.Scope.external_columns": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.unqualified_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.join_hints": {"tf": 1}, "sqlglot.optimizer.scope.Scope.source_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.rename_source": {"tf": 1}, "sqlglot.optimizer.scope.Scope.traverse": {"tf": 1}, "sqlglot.optimizer.scope.Scope.ref_count": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser.raise_error": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}, "sqlglot.schema.Schema.get_column_type": {"tf": 1}, "sqlglot.schema.MappingSchema": {"tf": 1.4142135623730951}, "sqlglot.schema.MappingSchema.get_column_type": {"tf": 1}, "sqlglot.time.format_time": {"tf": 1}, "sqlglot.transforms.unalias_group": {"tf": 1}, "sqlglot.transforms.eliminate_qualify": {"tf": 2.6457513110645907}, "sqlglot.transforms.remove_precision_parameterized_types": {"tf": 1.7320508075688772}, "sqlglot.transforms.preprocess": {"tf": 1}, "sqlglot.trie.new_trie": {"tf": 1}, "sqlglot.trie.in_trie": {"tf": 2.449489742783178}}, "df": 157, "p": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.transpile": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1}, "sqlglot.expressions.Condition.and_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Condition.or_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Unionable.union": {"tf": 1.4142135623730951}, "sqlglot.expressions.Unionable.intersect": {"tf": 1.4142135623730951}, "sqlglot.expressions.Unionable.except_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Delete.delete": {"tf": 1.4142135623730951}, "sqlglot.expressions.Delete.where": {"tf": 1.4142135623730951}, "sqlglot.expressions.Delete.returning": {"tf": 1.4142135623730951}, "sqlglot.expressions.Join.on": {"tf": 1.4142135623730951}, "sqlglot.expressions.Join.using": {"tf": 1.4142135623730951}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Union.limit": {"tf": 1.4142135623730951}, "sqlglot.expressions.Union.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.from_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.group_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.order_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.sort_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.cluster_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.limit": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.offset": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.lateral": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.join": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.where": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.having": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.ctas": {"tf": 1.4142135623730951}, "sqlglot.expressions.maybe_parse": {"tf": 2}, "sqlglot.expressions.union": {"tf": 1.4142135623730951}, "sqlglot.expressions.intersect": {"tf": 1.4142135623730951}, "sqlglot.expressions.except_": {"tf": 1.4142135623730951}, "sqlglot.expressions.select": {"tf": 2}, "sqlglot.expressions.from_": {"tf": 2}, "sqlglot.expressions.update": {"tf": 1.4142135623730951}, "sqlglot.expressions.delete": {"tf": 1.4142135623730951}, "sqlglot.expressions.condition": {"tf": 2}, "sqlglot.expressions.and_": {"tf": 1.4142135623730951}, "sqlglot.expressions.or_": {"tf": 1.4142135623730951}, "sqlglot.expressions.not_": {"tf": 1.4142135623730951}, "sqlglot.expressions.alias_": {"tf": 1.4142135623730951}, "sqlglot.expressions.subquery": {"tf": 1.4142135623730951}, "sqlglot.lineage.lineage": {"tf": 1}}, "df": 43, "s": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}}}}}}}}}, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.scope.traverse_scope": {"tf": 1}}, "df": 1}}}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}}}}}}, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1}}, "df": 1}}}}}, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1}, "sqlglot.schema.Schema.column_names": {"tf": 1}, "sqlglot.schema.MappingSchema.column_names": {"tf": 1}, "sqlglot.transforms.eliminate_qualify": {"tf": 1.4142135623730951}}, "df": 43, "s": {"docs": {"sqlglot.expressions.maybe_parse": {"tf": 1}}, "df": 1}, "d": {"docs": {"sqlglot.expressions.subquery": {"tf": 1}, "sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 1}}, "df": 2}}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot": {"tf": 2.23606797749979}, "sqlglot.dataframe": {"tf": 1}}, "df": 2}}, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.Column.cast": {"tf": 1}, "sqlglot.executor.execute": {"tf": 1}, "sqlglot.expressions.Expression.transform": {"tf": 1}, "sqlglot.expressions.Expression.assert_is": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.load": {"tf": 1}, "sqlglot.expressions.Condition.and_": {"tf": 1}, "sqlglot.expressions.Condition.or_": {"tf": 1}, "sqlglot.expressions.Unionable.union": {"tf": 1}, "sqlglot.expressions.Unionable.intersect": {"tf": 1}, "sqlglot.expressions.Unionable.except_": {"tf": 1}, "sqlglot.expressions.Delete.delete": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1.4142135623730951}, "sqlglot.expressions.Delete.returning": {"tf": 1.4142135623730951}, "sqlglot.expressions.Join.on": {"tf": 1.4142135623730951}, "sqlglot.expressions.Join.using": {"tf": 1.4142135623730951}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1.7320508075688772}, "sqlglot.expressions.Union.limit": {"tf": 1.7320508075688772}, "sqlglot.expressions.Union.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.from_": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.group_by": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.order_by": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.sort_by": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.cluster_by": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.limit": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.offset": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.lateral": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.join": {"tf": 2}, "sqlglot.expressions.Select.where": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.having": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.distinct": {"tf": 1}, "sqlglot.expressions.Select.ctas": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.lock": {"tf": 1}, "sqlglot.expressions.union": {"tf": 1.4142135623730951}, "sqlglot.expressions.intersect": {"tf": 1.4142135623730951}, "sqlglot.expressions.except_": {"tf": 1.4142135623730951}, "sqlglot.expressions.select": {"tf": 1}, "sqlglot.expressions.from_": {"tf": 1}, "sqlglot.expressions.condition": {"tf": 1}, "sqlglot.expressions.and_": {"tf": 1}, "sqlglot.expressions.or_": {"tf": 1}, "sqlglot.expressions.not_": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1}, "sqlglot.expressions.subquery": {"tf": 1}, "sqlglot.expressions.column": {"tf": 1}, "sqlglot.expressions.table_": {"tf": 1}, "sqlglot.expressions.func": {"tf": 1}, "sqlglot.helper.count_params": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 1}, "sqlglot.optimizer.scope.Scope.ref_count": {"tf": 1}, "sqlglot.schema.Schema.add_table": {"tf": 1}, "sqlglot.schema.Schema.column_names": {"tf": 1}, "sqlglot.schema.MappingSchema.add_table": {"tf": 1}, "sqlglot.schema.MappingSchema.column_names": {"tf": 1}}, "df": 56, "s": {"docs": {"sqlglot.expressions.Expression.text": {"tf": 1}, "sqlglot.optimizer.scope.Scope.columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.external_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.source_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.traverse": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}}, "df": 6}}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.format_time_lambda": {"tf": 1}, "sqlglot.expressions.Expression.error_messages": {"tf": 1}, "sqlglot.expressions.func": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser.expression": {"tf": 1}, "sqlglot.parser.Parser.validate_expression": {"tf": 1}}, "df": 5, "d": {"docs": {"sqlglot.parser.Parser.validate_expression": {"tf": 1}}, "df": 1}}}}}}}}, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dataframe": {"tf": 1}, "sqlglot.diff": {"tf": 1.7320508075688772}, "sqlglot.executor": {"tf": 1}, "sqlglot.expressions.Expression.walk": {"tf": 1}, "sqlglot.optimizer.normalize.normalize": {"tf": 1}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1}, "sqlglot.optimizer.scope.Scope.replace": {"tf": 1}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 1}}, "df": 10}}}, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dataframe": {"tf": 1}}, "df": 1}}}}}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.diff": {"tf": 2.449489742783178}, "sqlglot.diff.diff": {"tf": 1.4142135623730951}}, "df": 3, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 2}, "sqlglot.diff.Insert": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1}}, "df": 3}}}}, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.lower_identities.lower_identities": {"tf": 1}}, "df": 1}}}}}}}}, "p": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.executor": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1}}, "df": 2}}}}}}, "t": {"6": {"4": {"docs": {"sqlglot": {"tf": 2.23606797749979}, "sqlglot.dialects": {"tf": 2.23606797749979}}, "df": 2}, "docs": {}, "df": 0}, "docs": {"sqlglot": {"tf": 2.6457513110645907}, "sqlglot.dataframe": {"tf": 2}, "sqlglot.dialects": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.7320508075688772}, "sqlglot.diff": {"tf": 2.23606797749979}, "sqlglot.executor.python.Python.Generator": {"tf": 1.7320508075688772}, "sqlglot.expressions.Union.limit": {"tf": 1}, "sqlglot.expressions.Select.limit": {"tf": 1}, "sqlglot.expressions.Select.offset": {"tf": 1}, "sqlglot.expressions.cast": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator": {"tf": 1.7320508075688772}, "sqlglot.helper.dict_depth": {"tf": 1}, "sqlglot.optimizer.normalize.normalize": {"tf": 1}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1}, "sqlglot.optimizer.qualify_columns.qualify_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.ref_count": {"tf": 1}}, "df": 34, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}, "d": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}}}}, "o": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.parse": {"tf": 1}, "sqlglot.parse_one": {"tf": 1.4142135623730951}, "sqlglot.transpile": {"tf": 1}, "sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1}, "sqlglot.diff": {"tf": 2.449489742783178}, "sqlglot.diff.diff": {"tf": 1}, "sqlglot.executor": {"tf": 4.242640687119285}, "sqlglot.executor.python.PythonExecutor.generate": {"tf": 1.4142135623730951}, "sqlglot.executor.python.PythonExecutor.generate_tuple": {"tf": 1}, "sqlglot.expressions.Expression.load": {"tf": 1}, "sqlglot.expressions.Column.to_dot": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Join.using": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.expressions.TimeUnit": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1.4142135623730951}, "sqlglot.expressions.update": {"tf": 1.4142135623730951}, "sqlglot.expressions.delete": {"tf": 1.4142135623730951}, "sqlglot.expressions.to_identifier": {"tf": 1}, "sqlglot.expressions.convert": {"tf": 1}, "sqlglot.expressions.expand": {"tf": 1}, "sqlglot.helper.ensure_list": {"tf": 1}, "sqlglot.helper.ensure_collection": {"tf": 1}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}, "sqlglot.optimizer.canonicalize.canonicalize": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1.4142135623730951}, "sqlglot.optimizer.normalize.normalize": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 1.7320508075688772}, "sqlglot.parser.Parser.parse_into": {"tf": 1.7320508075688772}, "sqlglot.serde.dump": {"tf": 1}, "sqlglot.serde.load": {"tf": 1}, "sqlglot.transforms.eliminate_qualify": {"tf": 1}}, "df": 41}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.expressions.to_interval": {"tf": 1}}, "df": 2}}}, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot": {"tf": 1}}, "df": 1, "s": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}}, "df": 21}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.generator.Generator.generate": {"tf": 1}}, "df": 1}}}}}}}, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}}}}, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}}, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.func": {"tf": 1.7320508075688772}, "sqlglot.helper.ensure_list": {"tf": 1}, "sqlglot.helper.ensure_collection": {"tf": 1}}, "df": 3, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}}, "f": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.Unionable.intersect": {"tf": 2.23606797749979}, "sqlglot.expressions.intersect": {"tf": 2.23606797749979}}, "df": 2}}}}}, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot": {"tf": 1.4142135623730951}}, "df": 1}}}}, "l": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.Expression.is_int": {"tf": 1}, "sqlglot.expressions.Union.limit": {"tf": 1}, "sqlglot.expressions.Select.limit": {"tf": 1}, "sqlglot.expressions.Select.offset": {"tf": 1}, "sqlglot.helper.apply_index_offset": {"tf": 1}}, "df": 5, "t": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe": {"tf": 2.6457513110645907}}, "df": 1}}}}}}}, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}, "\u2019": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}, "v": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.diff": {"tf": 1}}, "df": 2}, "d": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}}}, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.schema.Schema.column_names": {"tf": 1}, "sqlglot.schema.MappingSchema.column_names": {"tf": 1}}, "df": 2}}}}}}}, "f": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe": {"tf": 1}}, "df": 1}}}}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dataframe": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 2.23606797749979}, "sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}, "sqlglot.schema.Schema.add_table": {"tf": 1}}, "df": 6}}}}}, "s": {"docs": {"sqlglot.expressions.Expression": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}, "r": {"docs": {"sqlglot.executor": {"tf": 1}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}}, "df": 2, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.Expression": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.values": {"tf": 1}, "sqlglot.optimizer.canonicalize.canonicalize": {"tf": 1}}, "df": 2}}}}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "x": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1.4142135623730951}, "sqlglot.helper.seq_get": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser": {"tf": 1.4142135623730951}}, "df": 20}, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}}, "df": 21, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}}, "df": 21}}}}}}}}, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Expression": {"tf": 1}}, "df": 1, "s": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.diff.Insert": {"tf": 1}, "sqlglot.diff.Remove": {"tf": 1}, "sqlglot.diff.Move": {"tf": 1}, "sqlglot.diff.Update": {"tf": 1}, "sqlglot.diff.Keep": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1}}, "df": 46}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.helper.is_iterable": {"tf": 1}}, "df": 1}}}}}}, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.diff": {"tf": 2}}, "df": 1}}}}}}}, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.condition": {"tf": 1}}, "df": 1, "s": {"docs": {"sqlglot.expressions.union": {"tf": 1}, "sqlglot.expressions.intersect": {"tf": 1}, "sqlglot.expressions.except_": {"tf": 1}, "sqlglot.expressions.select": {"tf": 1}, "sqlglot.expressions.from_": {"tf": 1}}, "df": 5}}}}}}}}}, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.diff": {"tf": 3.1622776601683795}, "sqlglot.expressions.Expression.unalias": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1}, "sqlglot.optimizer.optimize_joins.normalize": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 1}, "sqlglot.optimizer.scope.Scope.branch": {"tf": 1}}, "df": 6, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}}, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.executor.table.Tables": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1}}, "df": 2}}}}}}}}}, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot": {"tf": 4.358898943540674}, "sqlglot.dataframe": {"tf": 4.47213595499958}, "sqlglot.dialects": {"tf": 2}, "sqlglot.diff": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.output_name": {"tf": 1}, "sqlglot.expressions.Expression.assert_is": {"tf": 1}, "sqlglot.expressions.Unionable.union": {"tf": 1}, "sqlglot.expressions.Unionable.intersect": {"tf": 1}, "sqlglot.expressions.Unionable.except_": {"tf": 1}, "sqlglot.expressions.Column.output_name": {"tf": 1}, "sqlglot.expressions.Identifier.output_name": {"tf": 1}, "sqlglot.expressions.Literal.output_name": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Join.using": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 1}, "sqlglot.expressions.Subquery.output_name": {"tf": 1}, "sqlglot.expressions.Star.output_name": {"tf": 1}, "sqlglot.expressions.Alias.output_name": {"tf": 1}, "sqlglot.expressions.Cast.output_name": {"tf": 1}, "sqlglot.expressions.column_table_names": {"tf": 1}, "sqlglot.expressions.table_name": {"tf": 1}, "sqlglot.expressions.replace_tables": {"tf": 1}, "sqlglot.expressions.replace_placeholders": {"tf": 1}, "sqlglot.expressions.expand": {"tf": 1}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}, "sqlglot.optimizer.eliminate_ctes.eliminate_ctes": {"tf": 1}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 1}, "sqlglot.optimizer.eliminate_subqueries.eliminate_subqueries": {"tf": 1}, "sqlglot.optimizer.expand_laterals.expand_laterals": {"tf": 1}, "sqlglot.optimizer.expand_multi_table_selects.expand_multi_table_selects": {"tf": 1}, "sqlglot.optimizer.lower_identities.lower_identities": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1}, "sqlglot.optimizer.normalize.normalize": {"tf": 1}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1}, "sqlglot.optimizer.optimize_joins.optimize_joins": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_predicates": {"tf": 1}, "sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 1}, "sqlglot.optimizer.qualify_columns.qualify_columns": {"tf": 1}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}, "sqlglot.optimizer.simplify.simplify": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 1}, "sqlglot.transforms.unalias_group": {"tf": 1}}, "df": 43, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1.4142135623730951}}, "df": 2, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dialects": {"tf": 1}, "sqlglot.schema.Schema.add_table": {"tf": 1}}, "df": 3}}}, "s": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.dialects": {"tf": 1}}, "df": 2}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1}, "sqlglot.dialects": {"tf": 1}, "sqlglot.diff": {"tf": 3.4641016151377544}, "sqlglot.diff.ChangeDistiller": {"tf": 1}, "sqlglot.executor": {"tf": 1.7320508075688772}, "sqlglot.expressions": {"tf": 1}}, "df": 7, "s": {"docs": {"sqlglot.dataframe": {"tf": 1}}, "df": 1}}}}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}}, "df": 1}}}}}}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 2}}}}}}}}, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}}, "df": 1}}}}, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.errors.ErrorLevel.IMMEDIATE": {"tf": 1}}, "df": 1}}}}}}}}}}, "d": {"docs": {"sqlglot": {"tf": 4.69041575982343}, "sqlglot.dataframe": {"tf": 3}, "sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.expressions.update": {"tf": 1.4142135623730951}, "sqlglot.expressions.delete": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.ref_count": {"tf": 1}}, "df": 6, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot": {"tf": 3}, "sqlglot.dialects": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 2}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 2}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 2}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 2}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 2}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 2}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 2}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 2}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 2}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 2}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 2}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 2}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 2}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 2}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 2}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 2}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 2}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 2}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 2}, "sqlglot.diff": {"tf": 3.3166247903554}, "sqlglot.diff.diff": {"tf": 2}, "sqlglot.executor.python.Python.Generator": {"tf": 2}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1.4142135623730951}, "sqlglot.expressions.to_identifier": {"tf": 2}, "sqlglot.expressions.replace_placeholders": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator": {"tf": 2}, "sqlglot.optimizer.canonicalize.canonicalize": {"tf": 1}, "sqlglot.tokens.Token.identifier": {"tf": 1.4142135623730951}}, "df": 31, "s": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.dialects": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 2}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 2}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 2}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 2}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 2}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 2}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 2}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 2}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 2}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 2}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 2}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 2}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 2}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 2}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 2}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 2}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 2}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 2}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 2}, "sqlglot.diff": {"tf": 2}, "sqlglot.executor.python.Python.Generator": {"tf": 2}, "sqlglot.expressions.Expression.text": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 2}, "sqlglot.optimizer.lower_identities.lower_identities": {"tf": 1.4142135623730951}}, "df": 26}}, "d": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.helper.should_identify": {"tf": 1.4142135623730951}}, "df": 2}}}, "y": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.helper.should_identify": {"tf": 1.4142135623730951}, "sqlglot.optimizer.canonicalize.canonicalize": {"tf": 1.4142135623730951}}, "df": 26, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}}, "df": 1}}}}}, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.transpile": {"tf": 1}}, "df": 1}, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.optimizer.lower_identities.lower_identities": {"tf": 1}}, "df": 1}}}}, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}, "a": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}, "sqlglot.transforms.eliminate_qualify": {"tf": 1}}, "df": 2}}, "s": {"docs": {"sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}}, "df": 3}}, "f": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.transpile": {"tf": 1.4142135623730951}, "sqlglot.dataframe": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1.7320508075688772}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 2.8284271247461903}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 2.8284271247461903}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 2.8284271247461903}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 2.8284271247461903}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 2.8284271247461903}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 2.8284271247461903}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 2.8284271247461903}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 2.8284271247461903}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 2.8284271247461903}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 2.8284271247461903}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 2.8284271247461903}, "sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 2.8284271247461903}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 2.8284271247461903}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 2.8284271247461903}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 2.8284271247461903}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 2.8284271247461903}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 2.8284271247461903}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 2.8284271247461903}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 2.8284271247461903}, "sqlglot.diff": {"tf": 4.69041575982343}, "sqlglot.executor": {"tf": 1.7320508075688772}, "sqlglot.executor.env.null_if_any": {"tf": 1.4142135623730951}, "sqlglot.executor.python.Python.Generator": {"tf": 2.8284271247461903}, "sqlglot.expressions.Expression.alias": {"tf": 1}, "sqlglot.expressions.Expression.output_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.append": {"tf": 1}, "sqlglot.expressions.Expression.find": {"tf": 1}, "sqlglot.expressions.Expression.same_parent": {"tf": 1}, "sqlglot.expressions.Expression.walk": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.unalias": {"tf": 1}, "sqlglot.expressions.Expression.transform": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.assert_is": {"tf": 1}, "sqlglot.expressions.Expression.error_messages": {"tf": 1}, "sqlglot.expressions.Condition.and_": {"tf": 1}, "sqlglot.expressions.Condition.or_": {"tf": 1}, "sqlglot.expressions.Unionable.union": {"tf": 1.7320508075688772}, "sqlglot.expressions.Unionable.intersect": {"tf": 1.7320508075688772}, "sqlglot.expressions.Unionable.except_": {"tf": 1.7320508075688772}, "sqlglot.expressions.Column.output_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.Delete.delete": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1.7320508075688772}, "sqlglot.expressions.Delete.returning": {"tf": 1.4142135623730951}, "sqlglot.expressions.Identifier.output_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.Literal.output_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.Join.on": {"tf": 1.7320508075688772}, "sqlglot.expressions.Join.using": {"tf": 1.7320508075688772}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 2}, "sqlglot.expressions.Union.limit": {"tf": 1.7320508075688772}, "sqlglot.expressions.Union.select": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.from_": {"tf": 2}, "sqlglot.expressions.Select.group_by": {"tf": 2.23606797749979}, "sqlglot.expressions.Select.order_by": {"tf": 2}, "sqlglot.expressions.Select.sort_by": {"tf": 2}, "sqlglot.expressions.Select.cluster_by": {"tf": 2}, "sqlglot.expressions.Select.limit": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.offset": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.select": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.lateral": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.join": {"tf": 2.449489742783178}, "sqlglot.expressions.Select.where": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.having": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.distinct": {"tf": 1}, "sqlglot.expressions.Select.ctas": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.lock": {"tf": 1.4142135623730951}, "sqlglot.expressions.Subquery.output_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.Star.output_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.Alias.output_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.Func": {"tf": 1}, "sqlglot.expressions.Cast.output_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.union": {"tf": 2}, "sqlglot.expressions.intersect": {"tf": 2}, "sqlglot.expressions.except_": {"tf": 2}, "sqlglot.expressions.select": {"tf": 1}, "sqlglot.expressions.from_": {"tf": 1}, "sqlglot.expressions.condition": {"tf": 1}, "sqlglot.expressions.and_": {"tf": 1}, "sqlglot.expressions.or_": {"tf": 1}, "sqlglot.expressions.not_": {"tf": 1}, "sqlglot.expressions.to_table": {"tf": 1}, "sqlglot.expressions.to_column": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1.4142135623730951}, "sqlglot.expressions.subquery": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1.4142135623730951}, "sqlglot.expressions.convert": {"tf": 1}, "sqlglot.expressions.func": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 2.8284271247461903}, "sqlglot.generator.Generator.generate": {"tf": 1}, "sqlglot.helper.seq_get": {"tf": 1}, "sqlglot.helper.ensure_list": {"tf": 1}, "sqlglot.helper.ensure_collection": {"tf": 1}, "sqlglot.helper.apply_index_offset": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1}, "sqlglot.helper.is_iterable": {"tf": 1.7320508075688772}, "sqlglot.helper.should_identify": {"tf": 1.4142135623730951}, "sqlglot.optimizer.eliminate_subqueries.eliminate_subqueries": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1.7320508075688772}, "sqlglot.optimizer.optimize_joins.optimize_joins": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1.4142135623730951}, "sqlglot.optimizer.pushdown_predicates.pushdown_cnf": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_dnf": {"tf": 1}, "sqlglot.optimizer.qualify_columns.validate_qualify_columns": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.get_table": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1}, "sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_subquery": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_derived_table": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_union": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_cte": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_root": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_udtf": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_correlated_subquery": {"tf": 1}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1.7320508075688772}, "sqlglot.parser.Parser.parse_into": {"tf": 1}, "sqlglot.parser.Parser.validate_expression": {"tf": 1}, "sqlglot.schema.MappingSchema": {"tf": 1}, "sqlglot.schema.MappingSchema.add_table": {"tf": 1}, "sqlglot.transforms.eliminate_qualify": {"tf": 1}}, "df": 144}, "b": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 2}}}, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1}}, "df": 2}}}}}}}}, "g": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.errors.ErrorLevel.IGNORE": {"tf": 1}}, "df": 2}}}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "v": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}}}, "\u2019": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}, "m": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.diff.ChangeDistiller": {"tf": 1}}, "df": 2}}}, "o": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.lineage.LineageHTML": {"tf": 1}}, "df": 1}}}}}}, "a": {"docs": {"sqlglot": {"tf": 7.615773105863909}, "sqlglot.parse": {"tf": 1}, "sqlglot.parse_one": {"tf": 1}, "sqlglot.transpile": {"tf": 1.4142135623730951}, "sqlglot.dataframe": {"tf": 3.1622776601683795}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.cast": {"tf": 1.4142135623730951}, "sqlglot.dialects": {"tf": 2.449489742783178}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 3}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 3}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 3}, "sqlglot.dialects.dialect.format_time_lambda": {"tf": 1}, "sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 3}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 3}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 3}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 3}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 3}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 3}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 3}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 3}, "sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 3}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 2.449489742783178}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 3}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 3}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 3}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 3}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 3}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 3}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 3}, "sqlglot.diff": {"tf": 8.94427190999916}, "sqlglot.diff.Insert": {"tf": 1}, "sqlglot.diff.diff": {"tf": 2.449489742783178}, "sqlglot.errors.ErrorLevel.RAISE": {"tf": 1}, "sqlglot.executor": {"tf": 8.660254037844387}, "sqlglot.executor.execute": {"tf": 1.7320508075688772}, "sqlglot.executor.env.null_if_any": {"tf": 1.4142135623730951}, "sqlglot.executor.python.PythonExecutor.generate": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 3}, "sqlglot.executor.table.Tables": {"tf": 1.4142135623730951}, "sqlglot.expressions": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression": {"tf": 2.6457513110645907}, "sqlglot.expressions.Expression.text": {"tf": 1}, "sqlglot.expressions.Expression.is_string": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.is_number": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.is_int": {"tf": 1}, "sqlglot.expressions.Expression.is_star": {"tf": 1}, "sqlglot.expressions.Expression.output_name": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.copy": {"tf": 1}, "sqlglot.expressions.Expression.append": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.find_all": {"tf": 1}, "sqlglot.expressions.Expression.find_ancestor": {"tf": 1}, "sqlglot.expressions.Expression.walk": {"tf": 1}, "sqlglot.expressions.Expression.dfs": {"tf": 1}, "sqlglot.expressions.Expression.bfs": {"tf": 1}, "sqlglot.expressions.Expression.unnest_operands": {"tf": 1}, "sqlglot.expressions.Expression.flatten": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.transform": {"tf": 2}, "sqlglot.expressions.Expression.replace": {"tf": 1}, "sqlglot.expressions.Expression.error_messages": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.dump": {"tf": 1}, "sqlglot.expressions.Expression.load": {"tf": 1}, "sqlglot.expressions.Unionable.union": {"tf": 1}, "sqlglot.expressions.Column.output_name": {"tf": 1.7320508075688772}, "sqlglot.expressions.Column.parts": {"tf": 1}, "sqlglot.expressions.Column.to_dot": {"tf": 1}, "sqlglot.expressions.Delete.delete": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1.4142135623730951}, "sqlglot.expressions.Identifier.output_name": {"tf": 1.7320508075688772}, "sqlglot.expressions.Literal.output_name": {"tf": 1.7320508075688772}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 1}, "sqlglot.expressions.Union.limit": {"tf": 1.4142135623730951}, "sqlglot.expressions.Union.select": {"tf": 2.449489742783178}, "sqlglot.expressions.Union.is_star": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.group_by": {"tf": 2}, "sqlglot.expressions.Select.order_by": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.sort_by": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.cluster_by": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.limit": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.offset": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.join": {"tf": 2}, "sqlglot.expressions.Select.where": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.ctas": {"tf": 1}, "sqlglot.expressions.Select.lock": {"tf": 2}, "sqlglot.expressions.Select.is_star": {"tf": 1}, "sqlglot.expressions.Subquery.is_star": {"tf": 1}, "sqlglot.expressions.Subquery.output_name": {"tf": 1.7320508075688772}, "sqlglot.expressions.Star.output_name": {"tf": 1.7320508075688772}, "sqlglot.expressions.Dot.build": {"tf": 1.4142135623730951}, "sqlglot.expressions.Alias.output_name": {"tf": 1.7320508075688772}, "sqlglot.expressions.TimeUnit": {"tf": 1}, "sqlglot.expressions.Func": {"tf": 1.7320508075688772}, "sqlglot.expressions.Cast.output_name": {"tf": 1.7320508075688772}, "sqlglot.expressions.maybe_parse": {"tf": 2.23606797749979}, "sqlglot.expressions.union": {"tf": 1}, "sqlglot.expressions.intersect": {"tf": 1}, "sqlglot.expressions.except_": {"tf": 1}, "sqlglot.expressions.select": {"tf": 2}, "sqlglot.expressions.from_": {"tf": 2.23606797749979}, "sqlglot.expressions.update": {"tf": 1.4142135623730951}, "sqlglot.expressions.delete": {"tf": 1.7320508075688772}, "sqlglot.expressions.condition": {"tf": 1.7320508075688772}, "sqlglot.expressions.not_": {"tf": 1.4142135623730951}, "sqlglot.expressions.to_interval": {"tf": 1}, "sqlglot.expressions.to_table": {"tf": 2.23606797749979}, "sqlglot.expressions.to_column": {"tf": 2}, "sqlglot.expressions.alias_": {"tf": 2}, "sqlglot.expressions.subquery": {"tf": 1.4142135623730951}, "sqlglot.expressions.column": {"tf": 1}, "sqlglot.expressions.cast": {"tf": 1.4142135623730951}, "sqlglot.expressions.table_": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1}, "sqlglot.expressions.var": {"tf": 1}, "sqlglot.expressions.convert": {"tf": 1.7320508075688772}, "sqlglot.expressions.replace_children": {"tf": 1}, "sqlglot.expressions.column_table_names": {"tf": 1.7320508075688772}, "sqlglot.expressions.table_name": {"tf": 2}, "sqlglot.expressions.replace_tables": {"tf": 1.4142135623730951}, "sqlglot.expressions.expand": {"tf": 1}, "sqlglot.expressions.func": {"tf": 1}, "sqlglot.expressions.true": {"tf": 1}, "sqlglot.expressions.false": {"tf": 1}, "sqlglot.expressions.null": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 3}, "sqlglot.generator.Generator.generate": {"tf": 1}, "sqlglot.helper.ensure_list": {"tf": 2.449489742783178}, "sqlglot.helper.ensure_collection": {"tf": 2.23606797749979}, "sqlglot.helper.csv": {"tf": 1}, "sqlglot.helper.subclasses": {"tf": 1}, "sqlglot.helper.apply_index_offset": {"tf": 1.7320508075688772}, "sqlglot.helper.while_changing": {"tf": 1.7320508075688772}, "sqlglot.helper.tsort": {"tf": 1.4142135623730951}, "sqlglot.helper.open_file": {"tf": 1}, "sqlglot.helper.csv_reader": {"tf": 1.7320508075688772}, "sqlglot.helper.find_new_name": {"tf": 1.4142135623730951}, "sqlglot.helper.object_to_dict": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 2}, "sqlglot.helper.is_iterable": {"tf": 1}, "sqlglot.helper.count_params": {"tf": 1}, "sqlglot.helper.dict_depth": {"tf": 2}, "sqlglot.helper.should_identify": {"tf": 1}, "sqlglot.lineage.lineage": {"tf": 2}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}, "sqlglot.optimizer.canonicalize.canonicalize": {"tf": 1.4142135623730951}, "sqlglot.optimizer.eliminate_ctes.eliminate_ctes": {"tf": 1.7320508075688772}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 1.4142135623730951}, "sqlglot.optimizer.eliminate_joins.join_condition": {"tf": 1}, "sqlglot.optimizer.eliminate_subqueries.eliminate_subqueries": {"tf": 2}, "sqlglot.optimizer.expand_laterals.expand_laterals": {"tf": 1.7320508075688772}, "sqlglot.optimizer.lower_identities.lower_identities": {"tf": 2}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 2.8284271247461903}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1}, "sqlglot.optimizer.optimize_joins.optimize_joins": {"tf": 2.8284271247461903}, "sqlglot.optimizer.optimizer.optimize": {"tf": 2.6457513110645907}, "sqlglot.optimizer.pushdown_predicates.pushdown_predicates": {"tf": 1.4142135623730951}, "sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 2.8284271247461903}, "sqlglot.optimizer.qualify_columns.Resolver": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.get_table": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.get_source_columns": {"tf": 1}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 2.6457513110645907}, "sqlglot.optimizer.scope.Scope.branch": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1}, "sqlglot.optimizer.scope.Scope.derived_tables": {"tf": 1}, "sqlglot.optimizer.scope.Scope.subqueries": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 2}, "sqlglot.optimizer.scope.Scope.selects": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.source_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_subquery": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_derived_table": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_union": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_cte": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_udtf": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_correlated_subquery": {"tf": 1}, "sqlglot.optimizer.scope.Scope.rename_source": {"tf": 1}, "sqlglot.optimizer.scope.Scope.add_source": {"tf": 1}, "sqlglot.optimizer.scope.Scope.remove_source": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 3}, "sqlglot.optimizer.scope.build_scope": {"tf": 1}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1}, "sqlglot.optimizer.simplify.flatten": {"tf": 2}, "sqlglot.optimizer.simplify.remove_compliments": {"tf": 2}, "sqlglot.optimizer.simplify.uniq_sort": {"tf": 1.7320508075688772}, "sqlglot.optimizer.simplify.absorb_and_eliminate": {"tf": 4.242640687119285}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 3.4641016151377544}, "sqlglot.parser.Parser": {"tf": 2.23606797749979}, "sqlglot.parser.Parser.parse": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser.parse_into": {"tf": 1.7320508075688772}, "sqlglot.parser.Parser.expression": {"tf": 1}, "sqlglot.parser.Parser.validate_expression": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 3.4641016151377544}, "sqlglot.planner.Scan.from_expression": {"tf": 3.4641016151377544}, "sqlglot.planner.SetOperation.from_expression": {"tf": 3.4641016151377544}, "sqlglot.schema.Schema.add_table": {"tf": 1.4142135623730951}, "sqlglot.schema.Schema.column_names": {"tf": 1}, "sqlglot.schema.Schema.get_column_type": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1.4142135623730951}, "sqlglot.schema.MappingSchema": {"tf": 1}, "sqlglot.schema.MappingSchema.add_table": {"tf": 1.7320508075688772}, "sqlglot.schema.MappingSchema.column_names": {"tf": 1}, "sqlglot.schema.MappingSchema.get_column_type": {"tf": 1}, "sqlglot.serde.dump": {"tf": 1}, "sqlglot.serde.load": {"tf": 1}, "sqlglot.time.format_time": {"tf": 1.4142135623730951}, "sqlglot.tokens.Token.number": {"tf": 1}, "sqlglot.tokens.Token.string": {"tf": 1}, "sqlglot.tokens.Tokenizer.tokenize": {"tf": 1}, "sqlglot.transforms.unalias_group": {"tf": 1.4142135623730951}, "sqlglot.transforms.eliminate_distinct_on": {"tf": 1.4142135623730951}, "sqlglot.transforms.eliminate_qualify": {"tf": 1}, "sqlglot.transforms.preprocess": {"tf": 2}, "sqlglot.transforms.delegate": {"tf": 1}, "sqlglot.trie.new_trie": {"tf": 2.23606797749979}, "sqlglot.trie.in_trie": {"tf": 2.449489742783178}}, "df": 236, "n": {"docs": {"sqlglot": {"tf": 2}, "sqlglot.dataframe": {"tf": 1.7320508075688772}, "sqlglot.dialects": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.Dialects": {"tf": 1}, "sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.7320508075688772}, "sqlglot.diff": {"tf": 3}, "sqlglot.diff.Remove": {"tf": 1}, "sqlglot.diff.Move": {"tf": 1}, "sqlglot.diff.Update": {"tf": 1}, "sqlglot.diff.Keep": {"tf": 1}, "sqlglot.errors.ErrorLevel": {"tf": 1}, "sqlglot.errors.ErrorLevel.IMMEDIATE": {"tf": 1}, "sqlglot.executor": {"tf": 2.449489742783178}, "sqlglot.executor.execute": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.generate_tuple": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression": {"tf": 2.6457513110645907}, "sqlglot.expressions.Expression.is_int": {"tf": 1}, "sqlglot.expressions.Expression.is_star": {"tf": 1}, "sqlglot.expressions.Expression.alias": {"tf": 1}, "sqlglot.expressions.Expression.output_name": {"tf": 1}, "sqlglot.expressions.Expression.unalias": {"tf": 1}, "sqlglot.expressions.Expression.transform": {"tf": 1}, "sqlglot.expressions.Expression.assert_is": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.load": {"tf": 1}, "sqlglot.expressions.Condition.and_": {"tf": 1}, "sqlglot.expressions.Condition.or_": {"tf": 1}, "sqlglot.expressions.Unionable.union": {"tf": 1}, "sqlglot.expressions.Unionable.intersect": {"tf": 1.4142135623730951}, "sqlglot.expressions.Unionable.except_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Column.output_name": {"tf": 1}, "sqlglot.expressions.Delete.delete": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1.4142135623730951}, "sqlglot.expressions.Delete.returning": {"tf": 1}, "sqlglot.expressions.Identifier.output_name": {"tf": 1}, "sqlglot.expressions.Literal.output_name": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1.4142135623730951}, "sqlglot.expressions.Join.using": {"tf": 1}, "sqlglot.expressions.Properties.Location": {"tf": 1}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 1.4142135623730951}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Union.limit": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 1}, "sqlglot.expressions.Union.is_star": {"tf": 1}, "sqlglot.expressions.Select.limit": {"tf": 1}, "sqlglot.expressions.Select.offset": {"tf": 1}, "sqlglot.expressions.Select.select": {"tf": 1}, "sqlglot.expressions.Select.lateral": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.where": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.having": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.ctas": {"tf": 1}, "sqlglot.expressions.Select.is_star": {"tf": 1}, "sqlglot.expressions.Subquery.is_star": {"tf": 1}, "sqlglot.expressions.Subquery.output_name": {"tf": 1}, "sqlglot.expressions.Star.output_name": {"tf": 1}, "sqlglot.expressions.DataType.Type": {"tf": 1}, "sqlglot.expressions.Alias.output_name": {"tf": 1}, "sqlglot.expressions.Cast.output_name": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1.7320508075688772}, "sqlglot.expressions.union": {"tf": 1.4142135623730951}, "sqlglot.expressions.intersect": {"tf": 1.4142135623730951}, "sqlglot.expressions.except_": {"tf": 1.4142135623730951}, "sqlglot.expressions.select": {"tf": 1.7320508075688772}, "sqlglot.expressions.from_": {"tf": 1}, "sqlglot.expressions.update": {"tf": 1}, "sqlglot.expressions.condition": {"tf": 1}, "sqlglot.expressions.and_": {"tf": 1.4142135623730951}, "sqlglot.expressions.or_": {"tf": 1.4142135623730951}, "sqlglot.expressions.not_": {"tf": 1}, "sqlglot.expressions.to_identifier": {"tf": 1.4142135623730951}, "sqlglot.expressions.to_interval": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1.4142135623730951}, "sqlglot.expressions.subquery": {"tf": 1}, "sqlglot.expressions.cast": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1}, "sqlglot.expressions.var": {"tf": 1}, "sqlglot.expressions.convert": {"tf": 1.4142135623730951}, "sqlglot.expressions.replace_children": {"tf": 1}, "sqlglot.expressions.column_table_names": {"tf": 1}, "sqlglot.expressions.replace_placeholders": {"tf": 1}, "sqlglot.expressions.expand": {"tf": 1}, "sqlglot.expressions.func": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.generate": {"tf": 1.4142135623730951}, "sqlglot.helper.apply_index_offset": {"tf": 1}, "sqlglot.helper.object_to_dict": {"tf": 1}, "sqlglot.helper.is_iterable": {"tf": 1.7320508075688772}, "sqlglot.helper.flatten": {"tf": 1}, "sqlglot.helper.first": {"tf": 1}, "sqlglot.helper.should_identify": {"tf": 1}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}, "sqlglot.optimizer.eliminate_ctes.eliminate_ctes": {"tf": 1}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 1}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1.4142135623730951}, "sqlglot.optimizer.qualify_columns.validate_qualify_columns": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}, "sqlglot.parser.Parser.raise_error": {"tf": 1}, "sqlglot.parser.Parser.expression": {"tf": 1}, "sqlglot.parser.Parser.validate_expression": {"tf": 1.4142135623730951}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}, "sqlglot.serde.dump": {"tf": 1}, "sqlglot.serde.load": {"tf": 1}, "sqlglot.tokens.TokenType": {"tf": 1}, "sqlglot.tokens.Token.identifier": {"tf": 1}, "sqlglot.tokens.Token.var": {"tf": 1}, "sqlglot.transforms.preprocess": {"tf": 1}}, "df": 131, "d": {"docs": {"sqlglot": {"tf": 5.196152422706632}, "sqlglot.parse_one": {"tf": 1}, "sqlglot.transpile": {"tf": 1.7320508075688772}, "sqlglot.dataframe": {"tf": 3.1622776601683795}, "sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1.4142135623730951}, "sqlglot.dialects": {"tf": 1.7320508075688772}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.7320508075688772}, "sqlglot.diff": {"tf": 7.0710678118654755}, "sqlglot.diff.diff": {"tf": 1.7320508075688772}, "sqlglot.diff.ChangeDistiller": {"tf": 1}, "sqlglot.errors.ErrorLevel.RAISE": {"tf": 1}, "sqlglot.executor": {"tf": 7.0710678118654755}, "sqlglot.executor.context.Context": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.generate": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.text": {"tf": 1}, "sqlglot.expressions.Expression.iter_expressions": {"tf": 1}, "sqlglot.expressions.Expression.find_all": {"tf": 1}, "sqlglot.expressions.Expression.flatten": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.transform": {"tf": 1.4142135623730951}, "sqlglot.expressions.Condition.and_": {"tf": 2}, "sqlglot.expressions.Unionable.union": {"tf": 1}, "sqlglot.expressions.Unionable.intersect": {"tf": 1}, "sqlglot.expressions.Unionable.except_": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1.4142135623730951}, "sqlglot.expressions.Join.on": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.where": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.having": {"tf": 1.4142135623730951}, "sqlglot.expressions.Func": {"tf": 1.4142135623730951}, "sqlglot.expressions.union": {"tf": 1}, "sqlglot.expressions.intersect": {"tf": 1}, "sqlglot.expressions.except_": {"tf": 1}, "sqlglot.expressions.condition": {"tf": 1.4142135623730951}, "sqlglot.expressions.and_": {"tf": 2.449489742783178}, "sqlglot.expressions.to_table": {"tf": 1}, "sqlglot.expressions.column_table_names": {"tf": 1.4142135623730951}, "sqlglot.expressions.replace_tables": {"tf": 1}, "sqlglot.expressions.replace_placeholders": {"tf": 1}, "sqlglot.expressions.func": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1.7320508075688772}, "sqlglot.helper.ensure_collection": {"tf": 1}, "sqlglot.helper.camel_to_snake_case": {"tf": 1}, "sqlglot.helper.open_file": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1}, "sqlglot.helper.is_iterable": {"tf": 1}, "sqlglot.helper.flatten": {"tf": 1.4142135623730951}, "sqlglot.helper.count_params": {"tf": 1.4142135623730951}, "sqlglot.lineage.lineage": {"tf": 1}, "sqlglot.optimizer.normalize.normalize": {"tf": 1.4142135623730951}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1.7320508075688772}, "sqlglot.optimizer.normalize.distributive_law": {"tf": 2.6457513110645907}, "sqlglot.optimizer.optimize_joins.optimize_joins": {"tf": 1.7320508075688772}, "sqlglot.optimizer.optimize_joins.normalize": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_predicates": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1}, "sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.selects": {"tf": 1}, "sqlglot.optimizer.simplify.simplify": {"tf": 1}, "sqlglot.optimizer.simplify.rewrite_between": {"tf": 1.4142135623730951}, "sqlglot.optimizer.simplify.simplify_not": {"tf": 1.4142135623730951}, "sqlglot.optimizer.simplify.flatten": {"tf": 2}, "sqlglot.optimizer.simplify.remove_compliments": {"tf": 1}, "sqlglot.optimizer.simplify.uniq_sort": {"tf": 2.449489742783178}, "sqlglot.optimizer.simplify.absorb_and_eliminate": {"tf": 2.8284271247461903}, "sqlglot.parser.Parser": {"tf": 1}, "sqlglot.parser.Parser.parse": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}, "sqlglot.transforms.remove_precision_parameterized_types": {"tf": 1}, "sqlglot.transforms.preprocess": {"tf": 1}, "sqlglot.trie.in_trie": {"tf": 1}}, "df": 119}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.diff": {"tf": 1}}, "df": 2}}}}}, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1}, "sqlglot.expressions.Union.limit": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.expressions.Select.limit": {"tf": 1}, "sqlglot.expressions.Select.offset": {"tf": 1}, "sqlglot.expressions.Select.ctas": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 1}}, "df": 14}}}}, "n": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.func": {"tf": 1}}, "df": 1}}}}}}}, "y": {"docs": {"sqlglot.dataframe": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.diff": {"tf": 2.23606797749979}, "sqlglot.executor": {"tf": 1}, "sqlglot.executor.env.null_if_any": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.expressions.Expression.append": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.expressions.Select.select": {"tf": 1}, "sqlglot.expressions.Select.lateral": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1}, "sqlglot.expressions.Select.where": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1}, "sqlglot.expressions.convert": {"tf": 1}, "sqlglot.helper.csv": {"tf": 1}, "sqlglot.optimizer.qualify_columns.validate_qualify_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 1}, "sqlglot.parser.Parser.check_errors": {"tf": 1}}, "df": 29, "w": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1}}, "df": 2}}}}, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.executor": {"tf": 1}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1.7320508075688772}, "sqlglot.optimizer.canonicalize.canonicalize": {"tf": 1}}, "df": 3, "d": {"docs": {"sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1.7320508075688772}}, "df": 1}}, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}}, "df": 1}}}}}}}}}, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dialects": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 3}}}, "l": {"docs": {"sqlglot.diff": {"tf": 2.23606797749979}, "sqlglot.diff.ChangeDistiller": {"tf": 1}}, "df": 2, "s": {"docs": {}, "df": 0, "o": {"docs": {"sqlglot": {"tf": 2.449489742783178}, "sqlglot.dialects": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 2.6457513110645907}, "sqlglot.executor": {"tf": 1}, "sqlglot.executor.env.null_if_any": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.expressions.Union.limit": {"tf": 1}, "sqlglot.expressions.Select.limit": {"tf": 1}, "sqlglot.expressions.Select.offset": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1}, "sqlglot.optimizer.eliminate_subqueries.eliminate_subqueries": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1}, "sqlglot.schema.Schema.add_table": {"tf": 1}, "sqlglot.transforms.eliminate_qualify": {"tf": 1}}, "df": 18}}, "l": {"docs": {"sqlglot": {"tf": 2.449489742783178}, "sqlglot.dataframe": {"tf": 1.4142135623730951}, "sqlglot.dialects": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.diff": {"tf": 2.6457513110645907}, "sqlglot.errors.ErrorLevel.IGNORE": {"tf": 1}, "sqlglot.errors.ErrorLevel.WARN": {"tf": 1}, "sqlglot.errors.ErrorLevel.RAISE": {"tf": 1}, "sqlglot.errors.SqlglotError": {"tf": 1}, "sqlglot.errors.UnsupportedError": {"tf": 1}, "sqlglot.errors.ParseError": {"tf": 1}, "sqlglot.errors.TokenError": {"tf": 1}, "sqlglot.errors.OptimizeError": {"tf": 1}, "sqlglot.errors.SchemaError": {"tf": 1}, "sqlglot.errors.ExecuteError": {"tf": 1}, "sqlglot.executor": {"tf": 2.8284271247461903}, "sqlglot.executor.env.null_if_any": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.expressions": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.expressions.Expression.iter_expressions": {"tf": 1}, "sqlglot.expressions.Expression.find_all": {"tf": 1}, "sqlglot.expressions.Expression.walk": {"tf": 1}, "sqlglot.expressions.Expression.dfs": {"tf": 1}, "sqlglot.expressions.Expression.bfs": {"tf": 1}, "sqlglot.expressions.Expression.transform": {"tf": 1}, "sqlglot.expressions.Expression.error_messages": {"tf": 1.4142135623730951}, "sqlglot.expressions.Delete.returning": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.expressions.Func": {"tf": 1}, "sqlglot.expressions.column_table_names": {"tf": 1}, "sqlglot.expressions.replace_tables": {"tf": 1}, "sqlglot.expressions.expand": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.helper.subclasses": {"tf": 1}, "sqlglot.helper.tsort": {"tf": 1}, "sqlglot.optimizer.lower_identities.lower_identities": {"tf": 1.4142135623730951}, "sqlglot.optimizer.pushdown_predicates.pushdown_dnf": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.all_columns": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope": {"tf": 2}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1}, "sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 1}, "sqlglot.optimizer.scope.Scope.source_columns": {"tf": 1}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1}, "sqlglot.parser.Parser.validate_expression": {"tf": 1}, "sqlglot.schema.MappingSchema": {"tf": 1}}, "df": 70, "o": {"docs": {}, "df": 0, "w": {"docs": {"sqlglot.transforms.remove_precision_parameterized_types": {"tf": 1}}, "df": 1, "s": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.executor.context.Context": {"tf": 1}}, "df": 2}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}, "/": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot": {"tf": 2}, "sqlglot.dataframe": {"tf": 2.23606797749979}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.alias": {"tf": 1}, "sqlglot.expressions.Expression.unalias": {"tf": 1}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 1.7320508075688772}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 2.8284271247461903}, "sqlglot.expressions.subquery": {"tf": 1.4142135623730951}, "sqlglot.expressions.values": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator": {"tf": 1.4142135623730951}, "sqlglot.optimizer.expand_laterals.expand_laterals": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 1}, "sqlglot.optimizer.scope.Scope.cte_sources": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1.4142135623730951}}, "df": 55, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.executor.python.Python.Generator": {"tf": 1.4142135623730951}, "sqlglot.expressions.Func": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1.4142135623730951}, "sqlglot.transforms.unalias_group": {"tf": 1}, "sqlglot.transforms.eliminate_qualify": {"tf": 1}}, "df": 24}, "d": {"docs": {"sqlglot.expressions.Expression.alias": {"tf": 1}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}}, "df": 6}}}}}, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 2}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.Select.join": {"tf": 1}, "sqlglot.expressions.rename_table": {"tf": 1.4142135623730951}, "sqlglot.helper.find_new_name": {"tf": 1}}, "df": 3, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}}, "w": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.7320508075688772}, "sqlglot.executor": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator": {"tf": 1.7320508075688772}, "sqlglot.helper.should_identify": {"tf": 1.4142135623730951}}, "df": 24}}}}, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1, "g": {"docs": {"sqlglot.parser.Parser.expression": {"tf": 1}}, "df": 1, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}, "g": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "m": {"docs": {"sqlglot.diff": {"tf": 5}, "sqlglot.diff.diff": {"tf": 1}, "sqlglot.diff.ChangeDistiller": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1}}, "df": 4, "s": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}}, "df": 1}, "\u2019": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.transform": {"tf": 1}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}, "sqlglot.optimizer.expand_laterals.expand_laterals": {"tf": 1}, "sqlglot.parser.Parser.validate_expression": {"tf": 1}}, "df": 5}}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 2.23606797749979}, "sqlglot.dataframe": {"tf": 1.7320508075688772}, "sqlglot.dialects": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 2.449489742783178}, "sqlglot.diff": {"tf": 4.47213595499958}, "sqlglot.diff.diff": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 3.605551275463989}, "sqlglot.executor.env.null_if_any": {"tf": 1.4142135623730951}, "sqlglot.executor.python.Python.Generator": {"tf": 2.449489742783178}, "sqlglot.expressions": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.text": {"tf": 1}, "sqlglot.expressions.Expression.flatten": {"tf": 1}, "sqlglot.expressions.Expression.error_messages": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Select.where": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1}, "sqlglot.expressions.Tag": {"tf": 1}, "sqlglot.expressions.Func": {"tf": 1}, "sqlglot.expressions.update": {"tf": 1}, "sqlglot.expressions.to_table": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1}, "sqlglot.expressions.func": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 2.449489742783178}, "sqlglot.helper.split_num_words": {"tf": 1}, "sqlglot.helper.flatten": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1}, "sqlglot.optimizer.optimize_joins.normalize": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_cnf": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_dnf": {"tf": 1.4142135623730951}, "sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 1}, "sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.cte_sources": {"tf": 1}, "sqlglot.optimizer.scope.Scope.selects": {"tf": 1}, "sqlglot.optimizer.scope.Scope.join_hints": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 2.23606797749979}, "sqlglot.parser.Parser.validate_expression": {"tf": 1}, "sqlglot.schema.MappingSchema": {"tf": 1.4142135623730951}, "sqlglot.schema.MappingSchema.add_table": {"tf": 1}}, "df": 79, "n": {"docs": {"sqlglot.optimizer.qualify_columns.validate_qualify_columns": {"tf": 1}}, "df": 1}}, "g": {"docs": {"sqlglot.expressions.Expression": {"tf": 2.6457513110645907}, "sqlglot.expressions.Expression.append": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.set": {"tf": 2}, "sqlglot.expressions.Expression.walk": {"tf": 1}, "sqlglot.expressions.TimeUnit": {"tf": 1}, "sqlglot.expressions.Func": {"tf": 1}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1}}, "df": 7, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.this": {"tf": 1}, "sqlglot.expressions.Expression.expression": {"tf": 1}, "sqlglot.expressions.Expression.expressions": {"tf": 1}, "sqlglot.expressions.Expression.text": {"tf": 1}, "sqlglot.expressions.Expression.transform": {"tf": 1}, "sqlglot.expressions.Expression.error_messages": {"tf": 1}, "sqlglot.expressions.Func": {"tf": 1.7320508075688772}, "sqlglot.helper.csv": {"tf": 1}, "sqlglot.helper.apply_index_offset": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 14, "s": {"docs": {"sqlglot.parse": {"tf": 1}, "sqlglot.parse_one": {"tf": 1}, "sqlglot.transpile": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.dialect.format_time_lambda": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.diff.diff": {"tf": 1}, "sqlglot.executor.execute": {"tf": 1}, "sqlglot.executor.env.null_if_any": {"tf": 1.7320508075688772}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.append": {"tf": 1}, "sqlglot.expressions.Expression.set": {"tf": 1}, "sqlglot.expressions.Expression.iter_expressions": {"tf": 1}, "sqlglot.expressions.Expression.find": {"tf": 1}, "sqlglot.expressions.Expression.find_all": {"tf": 1}, "sqlglot.expressions.Expression.find_ancestor": {"tf": 1}, "sqlglot.expressions.Expression.walk": {"tf": 1}, "sqlglot.expressions.Expression.sql": {"tf": 1}, "sqlglot.expressions.Expression.transform": {"tf": 1}, "sqlglot.expressions.Expression.replace": {"tf": 1}, "sqlglot.expressions.Expression.error_messages": {"tf": 1.4142135623730951}, "sqlglot.expressions.Condition.and_": {"tf": 1}, "sqlglot.expressions.Condition.or_": {"tf": 1}, "sqlglot.expressions.Unionable.union": {"tf": 1}, "sqlglot.expressions.Unionable.intersect": {"tf": 1}, "sqlglot.expressions.Unionable.except_": {"tf": 1}, "sqlglot.expressions.Delete.delete": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Delete.returning": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Join.using": {"tf": 1}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1}, "sqlglot.expressions.Union.limit": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.expressions.Select.limit": {"tf": 1}, "sqlglot.expressions.Select.offset": {"tf": 1}, "sqlglot.expressions.Select.select": {"tf": 1}, "sqlglot.expressions.Select.lateral": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1}, "sqlglot.expressions.Select.where": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1}, "sqlglot.expressions.Select.distinct": {"tf": 1}, "sqlglot.expressions.Select.ctas": {"tf": 1}, "sqlglot.expressions.Select.lock": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1}, "sqlglot.expressions.union": {"tf": 1}, "sqlglot.expressions.intersect": {"tf": 1}, "sqlglot.expressions.except_": {"tf": 1}, "sqlglot.expressions.select": {"tf": 1}, "sqlglot.expressions.from_": {"tf": 1}, "sqlglot.expressions.update": {"tf": 1}, "sqlglot.expressions.delete": {"tf": 1}, "sqlglot.expressions.condition": {"tf": 1}, "sqlglot.expressions.and_": {"tf": 1}, "sqlglot.expressions.or_": {"tf": 1}, "sqlglot.expressions.not_": {"tf": 1}, "sqlglot.expressions.to_identifier": {"tf": 1}, "sqlglot.expressions.to_table": {"tf": 1}, "sqlglot.expressions.to_column": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1}, "sqlglot.expressions.subquery": {"tf": 1}, "sqlglot.expressions.column": {"tf": 1}, "sqlglot.expressions.cast": {"tf": 1}, "sqlglot.expressions.table_": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1}, "sqlglot.expressions.var": {"tf": 1}, "sqlglot.expressions.rename_table": {"tf": 1}, "sqlglot.expressions.convert": {"tf": 1}, "sqlglot.expressions.column_table_names": {"tf": 1}, "sqlglot.expressions.table_name": {"tf": 1}, "sqlglot.expressions.replace_tables": {"tf": 1}, "sqlglot.expressions.replace_placeholders": {"tf": 1.4142135623730951}, "sqlglot.expressions.expand": {"tf": 1}, "sqlglot.expressions.func": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.helper.ensure_list": {"tf": 1}, "sqlglot.helper.ensure_collection": {"tf": 1}, "sqlglot.helper.csv": {"tf": 2}, "sqlglot.helper.subclasses": {"tf": 1}, "sqlglot.helper.apply_index_offset": {"tf": 1}, "sqlglot.helper.while_changing": {"tf": 1}, "sqlglot.helper.tsort": {"tf": 1}, "sqlglot.helper.csv_reader": {"tf": 1}, "sqlglot.helper.find_new_name": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1}, "sqlglot.helper.is_iterable": {"tf": 1}, "sqlglot.helper.flatten": {"tf": 1}, "sqlglot.helper.dict_depth": {"tf": 1}, "sqlglot.helper.should_identify": {"tf": 1}, "sqlglot.lineage.lineage": {"tf": 1}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}, "sqlglot.optimizer.canonicalize.canonicalize": {"tf": 1}, "sqlglot.optimizer.eliminate_ctes.eliminate_ctes": {"tf": 1}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 1}, "sqlglot.optimizer.eliminate_joins.join_condition": {"tf": 1}, "sqlglot.optimizer.eliminate_subqueries.eliminate_subqueries": {"tf": 1}, "sqlglot.optimizer.expand_laterals.expand_laterals": {"tf": 1}, "sqlglot.optimizer.lower_identities.lower_identities": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1}, "sqlglot.optimizer.normalize.normalize": {"tf": 1}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_predicates": {"tf": 1}, "sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 1}, "sqlglot.optimizer.qualify_columns.qualify_columns": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.get_table": {"tf": 1}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1}, "sqlglot.optimizer.scope.Scope.replace": {"tf": 1}, "sqlglot.optimizer.scope.Scope.source_columns": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}, "sqlglot.optimizer.scope.build_scope": {"tf": 1}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1}, "sqlglot.optimizer.simplify.simplify": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1}, "sqlglot.parser.Parser.parse": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 1}, "sqlglot.parser.Parser.expression": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser.validate_expression": {"tf": 1.4142135623730951}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}, "sqlglot.schema.Schema.add_table": {"tf": 1}, "sqlglot.schema.Schema.column_names": {"tf": 1}, "sqlglot.schema.Schema.get_column_type": {"tf": 1}, "sqlglot.schema.Schema.supported_table_args": {"tf": 1}, "sqlglot.schema.MappingSchema": {"tf": 1}, "sqlglot.schema.MappingSchema.add_table": {"tf": 1}, "sqlglot.schema.MappingSchema.column_names": {"tf": 1}, "sqlglot.schema.MappingSchema.get_column_type": {"tf": 1}, "sqlglot.transforms.unalias_group": {"tf": 1}, "sqlglot.transforms.eliminate_distinct_on": {"tf": 1}, "sqlglot.transforms.preprocess": {"tf": 1}, "sqlglot.trie.new_trie": {"tf": 1}, "sqlglot.trie.in_trie": {"tf": 1}}, "df": 180}}}}}}, "s": {"docs": {"sqlglot.executor.context.Context.__init__": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.text": {"tf": 1}, "sqlglot.expressions.Expression.iter_expressions": {"tf": 1}, "sqlglot.expressions.Expression.error_messages": {"tf": 1.4142135623730951}, "sqlglot.expressions.Func": {"tf": 1}, "sqlglot.expressions.replace_placeholders": {"tf": 1}, "sqlglot.expressions.func": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.generate": {"tf": 1}, "sqlglot.helper.csv": {"tf": 1}, "sqlglot.parser.Parser.validate_expression": {"tf": 1}, "sqlglot.time.format_time": {"tf": 1}}, "df": 12}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dialects": {"tf": 1}, "sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.generate_tuple": {"tf": 1}}, "df": 4, "s": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1}}, "df": 19}, "[": {"0": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1}}, "df": 19}, "1": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1}}, "df": 19}, "docs": {}, "df": 0}}}, "o": {"docs": {}, "df": 0, "w": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1.7320508075688772}}, "df": 3}}}}, "b": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.executor": {"tf": 1}, "sqlglot.expressions.Tag": {"tf": 1}}, "df": 2}}}}}}}}, "s": {"docs": {"sqlglot": {"tf": 4.47213595499958}, "sqlglot.transpile": {"tf": 1}, "sqlglot.dataframe": {"tf": 3}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.dialects": {"tf": 2.23606797749979}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator.with_properties": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 4}, "sqlglot.executor": {"tf": 4.242640687119285}, "sqlglot.executor.python.Python.Generator": {"tf": 1.4142135623730951}, "sqlglot.executor.table.Tables": {"tf": 1.4142135623730951}, "sqlglot.expressions": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.text": {"tf": 1}, "sqlglot.expressions.Expression.output_name": {"tf": 1}, "sqlglot.expressions.Expression.append": {"tf": 1}, "sqlglot.expressions.Expression.same_parent": {"tf": 1}, "sqlglot.expressions.Expression.unnest_operands": {"tf": 1}, "sqlglot.expressions.Expression.transform": {"tf": 1}, "sqlglot.expressions.Expression.load": {"tf": 1}, "sqlglot.expressions.Condition.and_": {"tf": 1}, "sqlglot.expressions.Condition.or_": {"tf": 1}, "sqlglot.expressions.Unionable.union": {"tf": 1}, "sqlglot.expressions.Unionable.intersect": {"tf": 1}, "sqlglot.expressions.Unionable.except_": {"tf": 1}, "sqlglot.expressions.Column.output_name": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Delete.returning": {"tf": 1}, "sqlglot.expressions.Identifier.output_name": {"tf": 1}, "sqlglot.expressions.Literal.output_name": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Join.using": {"tf": 1}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 2.6457513110645907}, "sqlglot.expressions.Union.limit": {"tf": 1.4142135623730951}, "sqlglot.expressions.Union.select": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.expressions.Select.limit": {"tf": 1}, "sqlglot.expressions.Select.offset": {"tf": 1}, "sqlglot.expressions.Select.select": {"tf": 1}, "sqlglot.expressions.Select.lateral": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.join": {"tf": 2.23606797749979}, "sqlglot.expressions.Select.where": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1}, "sqlglot.expressions.Select.ctas": {"tf": 2.23606797749979}, "sqlglot.expressions.Subquery.output_name": {"tf": 1}, "sqlglot.expressions.Star.output_name": {"tf": 1}, "sqlglot.expressions.Alias.output_name": {"tf": 1}, "sqlglot.expressions.Func": {"tf": 2}, "sqlglot.expressions.Cast.output_name": {"tf": 1}, "sqlglot.expressions.union": {"tf": 1.4142135623730951}, "sqlglot.expressions.intersect": {"tf": 1.4142135623730951}, "sqlglot.expressions.except_": {"tf": 1.4142135623730951}, "sqlglot.expressions.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.from_": {"tf": 1.4142135623730951}, "sqlglot.expressions.condition": {"tf": 1}, "sqlglot.expressions.and_": {"tf": 1}, "sqlglot.expressions.or_": {"tf": 1}, "sqlglot.expressions.not_": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1.7320508075688772}, "sqlglot.expressions.subquery": {"tf": 1.4142135623730951}, "sqlglot.expressions.cast": {"tf": 1}, "sqlglot.expressions.table_name": {"tf": 1}, "sqlglot.expressions.expand": {"tf": 1.4142135623730951}, "sqlglot.expressions.func": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1.4142135623730951}, "sqlglot.helper.ensure_list": {"tf": 1}, "sqlglot.helper.csv": {"tf": 1.4142135623730951}, "sqlglot.helper.open_file": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1}, "sqlglot.helper.flatten": {"tf": 1}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 2.23606797749979}, "sqlglot.optimizer.eliminate_ctes.eliminate_ctes": {"tf": 1}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 1}, "sqlglot.optimizer.eliminate_subqueries.eliminate_subqueries": {"tf": 3}, "sqlglot.optimizer.expand_laterals.expand_laterals": {"tf": 2.23606797749979}, "sqlglot.optimizer.lower_identities.lower_identities": {"tf": 1.4142135623730951}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1}, "sqlglot.optimizer.optimize_joins.normalize": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1.4142135623730951}, "sqlglot.optimizer.pushdown_predicates.pushdown_predicates": {"tf": 2}, "sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 2.6457513110645907}, "sqlglot.optimizer.qualify_columns.qualify_columns": {"tf": 1}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 2.23606797749979}, "sqlglot.optimizer.scope.Scope.selects": {"tf": 2}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1.4142135623730951}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 2.6457513110645907}, "sqlglot.parser.Parser": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 2}, "sqlglot.planner.Scan.from_expression": {"tf": 2}, "sqlglot.planner.SetOperation.from_expression": {"tf": 2}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1.4142135623730951}, "sqlglot.serde.load": {"tf": 1}, "sqlglot.tokens.Token.number": {"tf": 1}, "sqlglot.tokens.Token.string": {"tf": 1}, "sqlglot.tokens.Token.identifier": {"tf": 1}, "sqlglot.tokens.Token.var": {"tf": 1}, "sqlglot.transforms.unalias_group": {"tf": 1.4142135623730951}, "sqlglot.transforms.eliminate_qualify": {"tf": 1}, "sqlglot.transforms.preprocess": {"tf": 1}, "sqlglot.trie.new_trie": {"tf": 1}}, "df": 143, "t": {"docs": {"sqlglot": {"tf": 2.6457513110645907}, "sqlglot.diff": {"tf": 3.1622776601683795}, "sqlglot.executor": {"tf": 3.4641016151377544}, "sqlglot.expressions": {"tf": 1}, "sqlglot.expressions.Expression.pop": {"tf": 1}, "sqlglot.expressions.to_identifier": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1}, "sqlglot.optimizer.normalize.normalize": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_predicates": {"tf": 1}, "sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 1}, "sqlglot.optimizer.qualify_columns.qualify_columns": {"tf": 1}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"tf": 1}, "sqlglot.optimizer.simplify.simplify": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 1}, "sqlglot.serde.dump": {"tf": 1}, "sqlglot.serde.load": {"tf": 1}}, "df": 17, "s": {"docs": {"sqlglot.diff": {"tf": 2}}, "df": 1}}, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.diff": {"tf": 1}}, "df": 2}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.assert_is": {"tf": 1.4142135623730951}}, "df": 2, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.Expression.assert_is": {"tf": 1}}, "df": 1}}}}}, "s": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.dialects": {"tf": 1}, "sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1.4142135623730951}}, "df": 4}}}}}}}, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}, "sqlglot.optimizer.expand_laterals.expand_laterals": {"tf": 1}}, "df": 2}, "d": {"docs": {"sqlglot.schema.MappingSchema": {"tf": 1}}, "df": 1}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.optimizer.lower_identities.lower_identities": {"tf": 1}}, "df": 1}}}}}}, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1}}, "df": 2}}}}}}}, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}, "c": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}}}}, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dataframe.sql.Column.cast": {"tf": 1.4142135623730951}}, "df": 1}}}}, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 2}}, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 2}}}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.transpile": {"tf": 1}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.expressions.replace_tables": {"tf": 1}}, "df": 1, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 2}}}}}, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 2, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}, "sqlglot.executor": {"tf": 2.449489742783178}, "sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 1}}, "df": 3}}}}}, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}}, "s": {"docs": {"sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1}}, "df": 1}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.optimizer.qualify_columns.Resolver": {"tf": 1}}, "df": 3}}}}, "m": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}, "y": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot.helper.tsort": {"tf": 1}}, "df": 1}}}}}}, "p": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "x": {"docs": {"sqlglot": {"tf": 2}}, "df": 1, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}}, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.transforms.preprocess": {"tf": 1}}, "df": 2, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dialects.dialect.format_time_lambda": {"tf": 1}}, "df": 1}}}}}}}}, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.diff": {"tf": 2}, "sqlglot.executor": {"tf": 1}}, "df": 2, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.parse": {"tf": 1}, "sqlglot.parse_one": {"tf": 1}, "sqlglot.executor.execute": {"tf": 1}, "sqlglot.lineage.lineage": {"tf": 1}}, "df": 4, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.diff": {"tf": 1.7320508075688772}}, "df": 2}}}}, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.walk": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.helper.apply_index_offset": {"tf": 1.7320508075688772}, "sqlglot.helper.while_changing": {"tf": 1}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1}}, "df": 7}, "s": {"docs": {"sqlglot.executor": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.transform": {"tf": 1}, "sqlglot.helper.apply_index_offset": {"tf": 1}, "sqlglot.helper.while_changing": {"tf": 1}}, "df": 4}}}}, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 2.23606797749979}, "sqlglot.expressions.Expression.append": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1.4142135623730951}, "sqlglot.expressions.Join.on": {"tf": 1.4142135623730951}, "sqlglot.expressions.Join.using": {"tf": 1.4142135623730951}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Union.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.expressions.Select.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.lateral": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.join": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.where": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.having": {"tf": 1.4142135623730951}}, "df": 17, "s": {"docs": {"sqlglot.executor": {"tf": 1}, "sqlglot.expressions.Expression.append": {"tf": 1}, "sqlglot.parser.Parser.raise_error": {"tf": 1}}, "df": 3}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.optimizer.scope.Scope.external_columns": {"tf": 1}}, "df": 1, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}, "i": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dataframe": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 1}}, "df": 3}, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.DataFrame.persist": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 2}}}}}, "d": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.dataframe": {"tf": 2}, "sqlglot.diff": {"tf": 2.449489742783178}, "sqlglot.diff.diff": {"tf": 1.4142135623730951}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.expressions.Select.select": {"tf": 1}, "sqlglot.expressions.Select.lateral": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1}, "sqlglot.optimizer.scope.Scope.add_source": {"tf": 1}}, "df": 15, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dataframe": {"tf": 1}, "sqlglot.schema.MappingSchema": {"tf": 1}}, "df": 3}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1}, "sqlglot.executor.execute": {"tf": 1}}, "df": 3, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.expressions": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_dnf": {"tf": 1}}, "df": 4}}}}}}}}, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.dialects": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}}, "df": 4}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}, "s": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}, "j": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}, "g": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.dataframe": {"tf": 2.23606797749979}}, "df": 1, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.executor.context.Context": {"tf": 1}}, "df": 1, "s": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}}, "df": 4}, "/": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}}}}, "e": {"docs": {"sqlglot.executor": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}}, "df": 4}}}}}}}, "e": {"docs": {"sqlglot.dataframe": {"tf": 3.872983346207417}}, "df": 1}, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.maybe_parse": {"tf": 1}, "sqlglot.expressions.select": {"tf": 1}, "sqlglot.expressions.from_": {"tf": 1}, "sqlglot.expressions.condition": {"tf": 1}}, "df": 4, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.diff.diff": {"tf": 1}, "sqlglot.executor.execute": {"tf": 1}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}}, "df": 3}}}}}}, "b": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.func": {"tf": 1.4142135623730951}}, "df": 1, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.executor.table.Tables": {"tf": 1}, "sqlglot.schema.Schema": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1}}, "df": 5}}}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.optimizer.simplify.absorb_and_eliminate": {"tf": 1}}, "df": 1}}}}}}}}, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}, "sqlglot.executor": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}}, "df": 3}}, "v": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 2}, "sqlglot.expressions.Expression": {"tf": 1}}, "df": 2}}}, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}, "b": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}}}, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.executor": {"tf": 1}, "sqlglot.transforms.eliminate_qualify": {"tf": 1}}, "df": 2}}}, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dataframe": {"tf": 1.7320508075688772}}, "df": 1}}}}, "x": {"docs": {"sqlglot.dataframe.sql.DataFrame.persist": {"tf": 1}}, "df": 1}, "t": {"docs": {}, "df": 0, "o": {"docs": {"sqlglot.expressions.update": {"tf": 1}, "sqlglot.helper.AutoName": {"tf": 1}}, "df": 2, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.expressions.TimeUnit": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1}}, "df": 3}}}}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}}, "df": 1}}}}}, "g": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.helper.split_num_words": {"tf": 1}}, "df": 1}}}}}}}}, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1}}, "df": 19, "s": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}, "p": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}}, "df": 2}}, "f": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.diff": {"tf": 2.23606797749979}, "sqlglot.executor": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1}}, "df": 44}}}, "f": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}, "t": {"docs": {"sqlglot.diff": {"tf": 3.4641016151377544}, "sqlglot.executor": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.find": {"tf": 1}, "sqlglot.expressions.Expression.find_all": {"tf": 1}, "sqlglot.helper.seq_get": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1}, "sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 1}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 1}, "sqlglot.trie.in_trie": {"tf": 1}}, "df": 13, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.optimizer.normalize.normalize": {"tf": 1}}, "df": 1, "s": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}, "r": {"docs": {"sqlglot.transforms.delegate": {"tf": 1}}, "df": 1, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.expressions.Func": {"tf": 1}, "sqlglot.helper.object_to_dict": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 1}}, "df": 4}}}}}}}, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.parser.Parser.expression": {"tf": 1}}, "df": 1}}}}}, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.helper.find_new_name": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.all_columns": {"tf": 1}}, "df": 3}}}}}}}, "o": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "n": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1}}, "df": 2, "o": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.diff": {"tf": 2}, "sqlglot.executor.env.null_if_any": {"tf": 1}, "sqlglot.expressions.Expression.output_name": {"tf": 1}, "sqlglot.expressions.Expression.find": {"tf": 1}, "sqlglot.expressions.Column.output_name": {"tf": 1}, "sqlglot.expressions.Identifier.output_name": {"tf": 1}, "sqlglot.expressions.Literal.output_name": {"tf": 1}, "sqlglot.expressions.Subquery.output_name": {"tf": 1}, "sqlglot.expressions.Star.output_name": {"tf": 1}, "sqlglot.expressions.Alias.output_name": {"tf": 1}, "sqlglot.expressions.Cast.output_name": {"tf": 1}, "sqlglot.helper.should_identify": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1}}, "df": 15, "t": {"docs": {"sqlglot": {"tf": 2.449489742783178}, "sqlglot.transpile": {"tf": 1}, "sqlglot.dataframe": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1.4142135623730951}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.redshift.Redshift.Generator.renametable_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.7320508075688772}, "sqlglot.diff": {"tf": 3.605551275463989}, "sqlglot.executor": {"tf": 3}, "sqlglot.executor.python.Python.Generator": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.expressions.Expression.alias": {"tf": 1}, "sqlglot.expressions.Expression.assert_is": {"tf": 1}, "sqlglot.expressions.Condition.not_": {"tf": 2}, "sqlglot.expressions.Delete.returning": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1}, "sqlglot.expressions.not_": {"tf": 2}, "sqlglot.expressions.to_identifier": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1.4142135623730951}, "sqlglot.expressions.column": {"tf": 1}, "sqlglot.expressions.convert": {"tf": 1}, "sqlglot.expressions.expand": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1.7320508075688772}, "sqlglot.helper.flatten": {"tf": 1}, "sqlglot.helper.should_identify": {"tf": 1}, "sqlglot.optimizer.canonicalize.canonicalize": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1}, "sqlglot.optimizer.simplify.simplify_not": {"tf": 2.449489742783178}, "sqlglot.optimizer.simplify.remove_compliments": {"tf": 1.4142135623730951}, "sqlglot.optimizer.simplify.absorb_and_eliminate": {"tf": 2}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1}, "sqlglot.schema.MappingSchema": {"tf": 1}, "sqlglot.transforms.eliminate_qualify": {"tf": 1}, "sqlglot.transforms.remove_precision_parameterized_types": {"tf": 1}}, "df": 75, "e": {"docs": {"sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.diff.diff": {"tf": 1}, "sqlglot.expressions.func": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}}, "df": 8, "d": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.expressions.Select.group_by": {"tf": 1}}, "df": 1}}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 2.23606797749979}, "sqlglot.diff": {"tf": 7.745966692414834}, "sqlglot.diff.Insert": {"tf": 1}, "sqlglot.diff.Remove": {"tf": 1}, "sqlglot.diff.Move": {"tf": 1}, "sqlglot.diff.Update": {"tf": 1}, "sqlglot.diff.Keep": {"tf": 1}, "sqlglot.diff.diff": {"tf": 1.7320508075688772}, "sqlglot.executor": {"tf": 1}, "sqlglot.expressions": {"tf": 1}, "sqlglot.expressions.Expression.find": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.find_ancestor": {"tf": 1}, "sqlglot.expressions.Expression.walk": {"tf": 1}, "sqlglot.expressions.Expression.transform": {"tf": 2.23606797749979}, "sqlglot.expressions.Expression.replace": {"tf": 1}, "sqlglot.expressions.Func": {"tf": 1}, "sqlglot.expressions.to_identifier": {"tf": 1}, "sqlglot.expressions.cast": {"tf": 1}, "sqlglot.expressions.var": {"tf": 1}, "sqlglot.expressions.table_name": {"tf": 1}, "sqlglot.expressions.replace_tables": {"tf": 1}, "sqlglot.expressions.replace_placeholders": {"tf": 1}, "sqlglot.generator.Generator.generate": {"tf": 1}, "sqlglot.lineage.lineage": {"tf": 1}, "sqlglot.lineage.LineageHTML": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.Scope.replace": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.traverse": {"tf": 1}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1}}, "df": 29, "s": {"docs": {"sqlglot.diff": {"tf": 8.12403840463596}, "sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.expressions.Expression.find_all": {"tf": 1}, "sqlglot.expressions.Expression.walk": {"tf": 1}, "sqlglot.expressions.Expression.dfs": {"tf": 1}, "sqlglot.expressions.Expression.bfs": {"tf": 1}, "sqlglot.expressions.Expression.flatten": {"tf": 1}, "sqlglot.expressions.Expression.transform": {"tf": 1}, "sqlglot.helper.tsort": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1.4142135623730951}}, "df": 12}, "\u2019": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}, "n": {"docs": {"sqlglot.errors.SqlglotError": {"tf": 1}, "sqlglot.errors.UnsupportedError": {"tf": 1}, "sqlglot.errors.ParseError": {"tf": 1}, "sqlglot.errors.TokenError": {"tf": 1}, "sqlglot.errors.OptimizeError": {"tf": 1}, "sqlglot.errors.SchemaError": {"tf": 1}, "sqlglot.errors.ExecuteError": {"tf": 1}, "sqlglot.expressions.Expression.unnest": {"tf": 1}, "sqlglot.expressions.Subquery.unnest": {"tf": 1}, "sqlglot.helper.flatten": {"tf": 1.4142135623730951}}, "df": 10, "e": {"docs": {"sqlglot.dataframe": {"tf": 2}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.executor.env.null_if_any": {"tf": 1.4142135623730951}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.expressions.Expression.find": {"tf": 1}, "sqlglot.expressions.Expression.transform": {"tf": 1}, "sqlglot.expressions.update": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.helper.seq_get": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 2.23606797749979}, "sqlglot.helper.dict_depth": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1}, "sqlglot.schema.MappingSchema": {"tf": 1}}, "df": 32}}, "r": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.executor": {"tf": 1}, "sqlglot.optimizer.normalize.normalize": {"tf": 1.7320508075688772}}, "df": 2, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.7320508075688772}, "sqlglot.executor": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator": {"tf": 1.7320508075688772}, "sqlglot.optimizer.normalize.normalize": {"tf": 1.4142135623730951}}, "df": 23, "d": {"docs": {"sqlglot.optimizer.normalize.normalize": {"tf": 1}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1}}, "df": 2}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.optimizer.normalize.normalization_distance": {"tf": 1}}, "df": 1}}}}}}}}}}}, "w": {"docs": {"sqlglot.diff": {"tf": 2.6457513110645907}, "sqlglot.executor": {"tf": 1.4142135623730951}}, "df": 2}}, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 2}, "sqlglot.dataframe": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator.renametable_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.executor.table.Tables": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.expressions.Expression.output_name": {"tf": 2.23606797749979}, "sqlglot.expressions.Expression.append": {"tf": 1}, "sqlglot.expressions.Expression.set": {"tf": 1}, "sqlglot.expressions.Column.output_name": {"tf": 2.23606797749979}, "sqlglot.expressions.Column.parts": {"tf": 1}, "sqlglot.expressions.Identifier.output_name": {"tf": 2.23606797749979}, "sqlglot.expressions.Literal.output_name": {"tf": 2.23606797749979}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1}, "sqlglot.expressions.Select.ctas": {"tf": 1}, "sqlglot.expressions.Subquery.output_name": {"tf": 2.23606797749979}, "sqlglot.expressions.Star.output_name": {"tf": 2.23606797749979}, "sqlglot.expressions.Alias.output_name": {"tf": 2.23606797749979}, "sqlglot.expressions.Func": {"tf": 2.23606797749979}, "sqlglot.expressions.Cast.output_name": {"tf": 2.23606797749979}, "sqlglot.expressions.to_identifier": {"tf": 1.4142135623730951}, "sqlglot.expressions.alias_": {"tf": 1.4142135623730951}, "sqlglot.expressions.subquery": {"tf": 1}, "sqlglot.expressions.column": {"tf": 2}, "sqlglot.expressions.table_": {"tf": 1.7320508075688772}, "sqlglot.expressions.var": {"tf": 1.7320508075688772}, "sqlglot.expressions.rename_table": {"tf": 2}, "sqlglot.expressions.table_name": {"tf": 1.7320508075688772}, "sqlglot.expressions.expand": {"tf": 1}, "sqlglot.expressions.func": {"tf": 1.7320508075688772}, "sqlglot.helper.AutoName": {"tf": 1}, "sqlglot.helper.subclasses": {"tf": 1.4142135623730951}, "sqlglot.helper.camel_to_snake_case": {"tf": 1}, "sqlglot.helper.csv_reader": {"tf": 1}, "sqlglot.helper.find_new_name": {"tf": 1.7320508075688772}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.get_table": {"tf": 2}, "sqlglot.optimizer.qualify_columns.Resolver.get_source_columns": {"tf": 1}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope": {"tf": 1}, "sqlglot.optimizer.scope.Scope.source_columns": {"tf": 1.7320508075688772}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1}}, "df": 46, "s": {"docs": {"sqlglot.dataframe": {"tf": 1.7320508075688772}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.expressions.Func": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1.4142135623730951}, "sqlglot.expressions.column_table_names": {"tf": 2}, "sqlglot.expressions.replace_tables": {"tf": 1}, "sqlglot.expressions.replace_placeholders": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.helper.find_new_name": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}, "sqlglot.schema.Schema.column_names": {"tf": 1.4142135623730951}, "sqlglot.schema.MappingSchema.column_names": {"tf": 1.4142135623730951}}, "df": 33}, "d": {"docs": {"sqlglot.expressions.replace_placeholders": {"tf": 1}}, "df": 1}}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}}}}, "\u00ef": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "w": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dialects": {"tf": 1.4142135623730951}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.diff.Insert": {"tf": 1}, "sqlglot.executor": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.expressions.Expression.append": {"tf": 1}, "sqlglot.expressions.Expression.transform": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.replace": {"tf": 1.7320508075688772}, "sqlglot.expressions.Condition.and_": {"tf": 1}, "sqlglot.expressions.Condition.or_": {"tf": 1}, "sqlglot.expressions.Condition.not_": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Join.using": {"tf": 1}, "sqlglot.expressions.Select.where": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1}, "sqlglot.expressions.and_": {"tf": 1}, "sqlglot.expressions.or_": {"tf": 1}, "sqlglot.expressions.not_": {"tf": 1}, "sqlglot.expressions.subquery": {"tf": 1}, "sqlglot.expressions.var": {"tf": 1}, "sqlglot.expressions.rename_table": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.helper.find_new_name": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.branch": {"tf": 1}, "sqlglot.optimizer.scope.Scope.replace": {"tf": 1.7320508075688772}, "sqlglot.parser.Parser.expression": {"tf": 1}, "sqlglot.schema.MappingSchema.add_table": {"tf": 1}, "sqlglot.transforms.preprocess": {"tf": 1}, "sqlglot.transforms.delegate": {"tf": 1}, "sqlglot.trie.new_trie": {"tf": 1.4142135623730951}, "sqlglot.trie.in_trie": {"tf": 1.7320508075688772}}, "df": 52, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.helper.open_file": {"tf": 1}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.dialects": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.diff": {"tf": 2.449489742783178}, "sqlglot.executor": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}, "sqlglot.transforms.eliminate_qualify": {"tf": 1.4142135623730951}}, "df": 8, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dialects": {"tf": 1}, "sqlglot.diff.diff": {"tf": 1}}, "df": 3}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}, "x": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1.4142135623730951}}, "df": 3}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.schema.MappingSchema": {"tf": 1}, "sqlglot.trie.new_trie": {"tf": 1}}, "df": 3}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.helper.dict_depth": {"tf": 1}, "sqlglot.schema.MappingSchema": {"tf": 1}}, "df": 2}}}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}, "g": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "t": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "x": {"docs": {"sqlglot.executor": {"tf": 1.4142135623730951}}, "df": 1}}}}, "w": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.lineage.LineageHTML": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.Expression": {"tf": 1}}, "df": 1}}}}}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.Expression.find_ancestor": {"tf": 1}}, "df": 1}}}}}}, "u": {"docs": {}, "df": 0, "m": {"docs": {"sqlglot.dataframe": {"tf": 3}, "sqlglot.diff": {"tf": 2.23606797749979}, "sqlglot.helper.split_num_words": {"tf": 2}}, "df": 3, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dialects": {"tf": 1}}, "df": 2}}}}, "b": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 2.449489742783178}, "sqlglot.executor.python.Python.Generator": {"tf": 1.4142135623730951}, "sqlglot.expressions": {"tf": 1}, "sqlglot.expressions.Expression.is_number": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1.4142135623730951}, "sqlglot.helper.csv": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1.4142135623730951}, "sqlglot.helper.count_params": {"tf": 1}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1}, "sqlglot.optimizer.scope.Scope.ref_count": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1.4142135623730951}, "sqlglot.tokens.Token.number": {"tf": 1.4142135623730951}}, "df": 50}}}, "p": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1.4142135623730951}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1}, "sqlglot.executor.env.null_if_any": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1.4142135623730951}, "sqlglot.expressions.update": {"tf": 1.4142135623730951}, "sqlglot.expressions.null": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser": {"tf": 1.4142135623730951}}, "df": 45, "s": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 2}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 2}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 2}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 2}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 2}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 2}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 2}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 2}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 2}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 2}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 2}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 2}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 2}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 2}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 2}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 2}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 2}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 2}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 2}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 2}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 2}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 2}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 2}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 2}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 2}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 2}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 2}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 2}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 2}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 2}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 2}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 2}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 2}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 2}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 2}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 2}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 2}, "sqlglot.executor.python.Python.Generator": {"tf": 2}, "sqlglot.generator.Generator": {"tf": 2}, "sqlglot.parser.Parser": {"tf": 2}}, "df": 40}}}}, "^": {"2": {"docs": {"sqlglot.diff": {"tf": 2.23606797749979}}, "df": 1}, "docs": {}, "df": 0}, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}, "d": {"docs": {"sqlglot": {"tf": 3.1622776601683795}, "sqlglot.diff": {"tf": 2.8284271247461903}, "sqlglot.executor": {"tf": 2}, "sqlglot.expressions.column_table_names": {"tf": 1}, "sqlglot.helper.dict_depth": {"tf": 1}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1}}, "df": 6, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 1}, "sqlglot.optimizer.optimize_joins.optimize_joins": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1.4142135623730951}, "sqlglot.planner.Scan.from_expression": {"tf": 1.4142135623730951}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1.4142135623730951}}, "df": 6}}}}, "t": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.parser.Parser.check_errors": {"tf": 1}, "sqlglot.parser.Parser.raise_error": {"tf": 1}}, "df": 3}}}}}}, "t": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.expressions.Expression.depth": {"tf": 1}, "sqlglot.expressions.Expression.dfs": {"tf": 1}, "sqlglot.helper.dict_depth": {"tf": 2.6457513110645907}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1}, "sqlglot.optimizer.scope.Scope.traverse": {"tf": 1}}, "df": 6}}}, "v": {"docs": {"sqlglot": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1.4142135623730951}}, "df": 3}}}}}}}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}}, "df": 1, "s": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.scope.Scope.is_subquery": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_derived_table": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_union": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_cte": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_root": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_udtf": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_correlated_subquery": {"tf": 1}}, "df": 7, "s": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.7320508075688772}, "sqlglot.executor.python.Python.Generator": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.expressions.Func": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1.7320508075688772}, "sqlglot.parser.Parser": {"tf": 1}}, "df": 42}}}}}}}, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}, "s": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot.expressions.Select.order_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.sort_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.cluster_by": {"tf": 1.4142135623730951}}, "df": 3, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}}}, "b": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.diff.ChangeDistiller": {"tf": 1.4142135623730951}}, "df": 2}, "s": {"docs": {"sqlglot.schema.Schema.add_table": {"tf": 1}, "sqlglot.schema.MappingSchema.add_table": {"tf": 1}}, "df": 2}}}}}, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.transpile": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser": {"tf": 1}}, "df": 21}}, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}, "g": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 2}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.trie.new_trie": {"tf": 1}}, "df": 1}}}}}}, "p": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}, "f": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.diff": {"tf": 2}, "sqlglot.executor.env.null_if_any": {"tf": 1}, "sqlglot.executor.table.Tables": {"tf": 1.4142135623730951}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1.4142135623730951}}, "df": 5, "a": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.pretty": {"tf": 1}, "sqlglot.schema": {"tf": 1}, "sqlglot.dataframe": {"tf": 1.4142135623730951}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 2.6457513110645907}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 4.358898943540674}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 2.6457513110645907}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 4.358898943540674}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 2.6457513110645907}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 4.358898943540674}, "sqlglot.dialects.dialect.format_time_lambda": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 2.6457513110645907}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 4.358898943540674}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 2.6457513110645907}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 4.358898943540674}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 2.6457513110645907}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 4.358898943540674}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 2.6457513110645907}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 4.358898943540674}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 2.6457513110645907}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 4.358898943540674}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 2.6457513110645907}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 4.358898943540674}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 2.6457513110645907}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 4.358898943540674}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 2.6457513110645907}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 4.358898943540674}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 2.6457513110645907}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 4.358898943540674}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 2.6457513110645907}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 4.358898943540674}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 2.6457513110645907}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 4.358898943540674}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 2.6457513110645907}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 4.358898943540674}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 4.358898943540674}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 2.6457513110645907}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 2.6457513110645907}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 4.358898943540674}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 4.358898943540674}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 2.6457513110645907}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 4.358898943540674}, "sqlglot.executor.python.Python.Generator": {"tf": 4.358898943540674}, "sqlglot.executor.table.Tables": {"tf": 1.4142135623730951}, "sqlglot.expressions.Func": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 4.358898943540674}, "sqlglot.lineage.lineage": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1.7320508075688772}, "sqlglot.parser.Parser": {"tf": 2.6457513110645907}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1.4142135623730951}}, "df": 50, "s": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1}, "sqlglot.expressions.expand": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}}, "df": 23}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1, "d": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.executor.table.Tables": {"tf": 1}, "sqlglot.expressions.Func": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.udtfs": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_udtf": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1}, "sqlglot.transforms.remove_precision_parameterized_types": {"tf": 1}}, "df": 9}, "s": {"docs": {"sqlglot.optimizer.scope.Scope": {"tf": 1}}, "df": 1}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.dialects.redshift.Redshift.Generator.renametable_sql": {"tf": 1}}, "df": 1}}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.Expression": {"tf": 1}}, "df": 1, "s": {"docs": {"sqlglot.executor": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}}, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dialects": {"tf": 1}}, "df": 2}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1, "d": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}}, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.executor.env.null_if_any": {"tf": 1}}, "df": 1}}, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.executor.env.null_if_any": {"tf": 1}}, "df": 1}}}}}}}, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.executor.table.Tables": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1}}, "df": 2}}}}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 2}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 2}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 2}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 2}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 2}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 2}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 2}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 2}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 2}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 2}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 2}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 2}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 2}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 2}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 2}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 2}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 2}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 2}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 2}, "sqlglot.executor.python.Python.Generator": {"tf": 2}, "sqlglot.generator.Generator": {"tf": 2}}, "df": 21, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.helper.csv_reader": {"tf": 1}}, "df": 1, "s": {"docs": {"sqlglot.dialects": {"tf": 1}}, "df": 1}}}}}}}, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {"sqlglot.expressions.Delete.delete": {"tf": 2.449489742783178}, "sqlglot.expressions.Delete.where": {"tf": 1.7320508075688772}, "sqlglot.expressions.Delete.returning": {"tf": 1.7320508075688772}, "sqlglot.expressions.delete": {"tf": 2.23606797749979}}, "df": 4}}, "g": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.transforms.delegate": {"tf": 1}}, "df": 1, "s": {"docs": {"sqlglot.transforms.delegate": {"tf": 1}}, "df": 1}}}}}}}, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}, "e": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1, "d": {"docs": {"sqlglot.optimizer.eliminate_subqueries.eliminate_subqueries": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 2}, "sqlglot.optimizer.scope.Scope.derived_tables": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.Scope.is_derived_table": {"tf": 1}}, "df": 5}}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "u": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.optimizer.eliminate_subqueries.eliminate_subqueries": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.optimizer.eliminate_subqueries.eliminate_subqueries": {"tf": 1}}, "df": 1}}}}}}}}}}, "b": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.executor": {"tf": 1}, "sqlglot.parser.Parser.parse": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 1}}, "df": 3}}}, "e": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.expressions.Expression.copy": {"tf": 1}}, "df": 1}}, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.optimizer.simplify.simplify_not": {"tf": 1}}, "df": 1}}}}}}}, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "f": {"docs": {"sqlglot": {"tf": 2.23606797749979}, "sqlglot.diff": {"tf": 3.4641016151377544}, "sqlglot.diff.diff": {"tf": 1.4142135623730951}}, "df": 3, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}}, "df": 3, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dialects": {"tf": 1}, "sqlglot.diff": {"tf": 2.6457513110645907}, "sqlglot.executor": {"tf": 1}}, "df": 4, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.dataframe.sql.Column.cast": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1.4142135623730951}}, "df": 5}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects": {"tf": 1}}, "df": 1}}}}, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}}, "df": 1}}}, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot": {"tf": 2.6457513110645907}, "sqlglot.parse": {"tf": 1}, "sqlglot.parse_one": {"tf": 1}, "sqlglot.transpile": {"tf": 2.6457513110645907}, "sqlglot.dataframe": {"tf": 2.449489742783178}, "sqlglot.dialects": {"tf": 3.1622776601683795}, "sqlglot.dialects.dialect.format_time_lambda": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.executor.execute": {"tf": 1}, "sqlglot.expressions.Expression.sql": {"tf": 1.4142135623730951}, "sqlglot.expressions.Condition.and_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Condition.or_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Unionable.union": {"tf": 1.4142135623730951}, "sqlglot.expressions.Unionable.intersect": {"tf": 1.4142135623730951}, "sqlglot.expressions.Unionable.except_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Delete.delete": {"tf": 1.4142135623730951}, "sqlglot.expressions.Delete.where": {"tf": 1.4142135623730951}, "sqlglot.expressions.Delete.returning": {"tf": 1.7320508075688772}, "sqlglot.expressions.Join.on": {"tf": 1.4142135623730951}, "sqlglot.expressions.Join.using": {"tf": 1.4142135623730951}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Union.limit": {"tf": 1.4142135623730951}, "sqlglot.expressions.Union.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.from_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.group_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.order_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.sort_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.cluster_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.limit": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.offset": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.lateral": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.join": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.where": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.having": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.ctas": {"tf": 1.4142135623730951}, "sqlglot.expressions.maybe_parse": {"tf": 1.4142135623730951}, "sqlglot.expressions.union": {"tf": 1.4142135623730951}, "sqlglot.expressions.intersect": {"tf": 1.4142135623730951}, "sqlglot.expressions.except_": {"tf": 1.4142135623730951}, "sqlglot.expressions.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.from_": {"tf": 1.4142135623730951}, "sqlglot.expressions.update": {"tf": 1.4142135623730951}, "sqlglot.expressions.delete": {"tf": 1.4142135623730951}, "sqlglot.expressions.condition": {"tf": 1.4142135623730951}, "sqlglot.expressions.and_": {"tf": 1.4142135623730951}, "sqlglot.expressions.or_": {"tf": 1.4142135623730951}, "sqlglot.expressions.not_": {"tf": 1.4142135623730951}, "sqlglot.expressions.alias_": {"tf": 1.4142135623730951}, "sqlglot.expressions.subquery": {"tf": 1.4142135623730951}, "sqlglot.expressions.func": {"tf": 1.4142135623730951}, "sqlglot.lineage.lineage": {"tf": 1.4142135623730951}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1.4142135623730951}, "sqlglot.schema.MappingSchema": {"tf": 1.4142135623730951}}, "df": 54, "s": {"docs": {"sqlglot": {"tf": 2.6457513110645907}, "sqlglot.dataframe": {"tf": 1.7320508075688772}, "sqlglot.dialects": {"tf": 2}, "sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.expressions.Delete.returning": {"tf": 1}, "sqlglot.transforms.eliminate_distinct_on": {"tf": 1}, "sqlglot.transforms.eliminate_qualify": {"tf": 1}, "sqlglot.transforms.remove_precision_parameterized_types": {"tf": 1}}, "df": 9}}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot": {"tf": 2}, "sqlglot.dataframe": {"tf": 1}, "sqlglot.expressions.Unionable.union": {"tf": 1.4142135623730951}, "sqlglot.expressions.Unionable.intersect": {"tf": 1.4142135623730951}, "sqlglot.expressions.Unionable.except_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.distinct": {"tf": 2}, "sqlglot.expressions.union": {"tf": 1.4142135623730951}, "sqlglot.expressions.intersect": {"tf": 1.4142135623730951}, "sqlglot.expressions.except_": {"tf": 1.4142135623730951}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 1}, "sqlglot.transforms.eliminate_distinct_on": {"tf": 1.4142135623730951}}, "df": 11, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.diff": {"tf": 2.23606797749979}, "sqlglot.diff.ChangeDistiller": {"tf": 1}}, "df": 2}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.normalize.normalize": {"tf": 1.4142135623730951}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1.7320508075688772}}, "df": 2}}}}}, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1}}, "df": 19}}}}}}, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}, "o": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}, "j": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.normalize.normalize": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}}, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.expressions.Expression.dump": {"tf": 1}, "sqlglot.expressions.Expression.load": {"tf": 1}, "sqlglot.expressions.Select.ctas": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.helper.dict_depth": {"tf": 2.449489742783178}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1.4142135623730951}, "sqlglot.schema.MappingSchema": {"tf": 1.4142135623730951}, "sqlglot.serde.dump": {"tf": 1}, "sqlglot.serde.load": {"tf": 1}}, "df": 29, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.trie.new_trie": {"tf": 1}}, "df": 2}}}, "y": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.executor.context.Context.__init__": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.expressions.update": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1.4142135623730951}, "sqlglot.expressions.expand": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.helper.object_to_dict": {"tf": 1}, "sqlglot.helper.dict_depth": {"tf": 1.4142135623730951}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}, "sqlglot.time.format_time": {"tf": 1}}, "df": 32}}}}}}, "[": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.replace_tables": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 1}, "sqlglot.optimizer.scope.Scope.cte_sources": {"tf": 1}}, "df": 4}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.optimizer.scope.Scope.ref_count": {"tf": 1}}, "df": 1}}}}, "|": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}, "sqlglot.optimizer.qualify_columns.qualify_columns": {"tf": 1}}, "df": 2}}}}}}}}}, "e": {"docs": {"sqlglot.diff": {"tf": 2.23606797749979}}, "df": 1}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 2}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.helper.tsort": {"tf": 1}}, "df": 1}}}}}}, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}, "d": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 2}}, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "b": {"docs": {"sqlglot": {"tf": 1.7320508075688772}, "sqlglot.dataframe": {"tf": 1}}, "df": 2}}}}, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.parse": {"tf": 1}, "sqlglot.parse_one": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.executor.execute": {"tf": 1}, "sqlglot.expressions.Func": {"tf": 1.4142135623730951}, "sqlglot.expressions.expand": {"tf": 1}}, "df": 6}}}}, "e": {"docs": {"sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.diff": {"tf": 1}}, "df": 3}, "m": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.expressions.Expression.dump": {"tf": 1}, "sqlglot.expressions.Expression.load": {"tf": 1}, "sqlglot.serde.dump": {"tf": 1}, "sqlglot.serde.load": {"tf": 1}}, "df": 4}}, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 1}}, "df": 1}}}}}}}}, "o": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.diff": {"tf": 2.6457513110645907}, "sqlglot.executor": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 4, "c": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot": {"tf": 1.7320508075688772}, "sqlglot.transforms.eliminate_qualify": {"tf": 1}}, "df": 2}}}}}}}}}}, "s": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1}, "sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1}}, "df": 6, "n": {"docs": {"sqlglot.dataframe.sql.Column.cast": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.with_properties": {"tf": 1}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.expressions.func": {"tf": 1}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 1}}, "df": 5, "\u2019": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}}, "df": 1}}}}}, "u": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.dialects": {"tf": 1.4142135623730951}, "sqlglot.expressions.func": {"tf": 1.4142135623730951}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1.4142135623730951}}, "df": 4}}}}, "n": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.executor": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.expressions.Expression.error_messages": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1}, "sqlglot.optimizer.scope.Scope.external_columns": {"tf": 1}, "sqlglot.transforms.eliminate_distinct_on": {"tf": 1}, "sqlglot.transforms.eliminate_qualify": {"tf": 1}}, "df": 27, "e": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.dialects": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1}, "sqlglot.optimizer.simplify.rewrite_between": {"tf": 1.4142135623730951}}, "df": 5}, "\u2019": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}, "m": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}, "w": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.executor": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_dnf": {"tf": 1}}, "df": 2}}, "t": {"docs": {"sqlglot.expressions.Column.to_dot": {"tf": 1}, "sqlglot.expressions.Dot.build": {"tf": 1}}, "df": 2}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 2}, "sqlglot.optimizer.scope.Scope.replace": {"tf": 1}}, "df": 2, "/": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}}}, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}}}, "a": {"docs": {"sqlglot.dataframe": {"tf": 2.449489742783178}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 3.605551275463989}, "sqlglot.executor.execute": {"tf": 1.4142135623730951}, "sqlglot.executor.context.Context": {"tf": 1}, "sqlglot.expressions.cast": {"tf": 1}}, "df": 7, "t": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 3}, "sqlglot.dataframe.sql.Column.cast": {"tf": 1.4142135623730951}, "sqlglot.dialects": {"tf": 3}, "sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.expressions.cast": {"tf": 1}, "sqlglot.expressions.func": {"tf": 1}, "sqlglot.schema.Schema.get_column_type": {"tf": 1}, "sqlglot.schema.MappingSchema.get_column_type": {"tf": 1}}, "df": 8}}}}, "f": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe": {"tf": 4.58257569495584}, "sqlglot.executor": {"tf": 1}}, "df": 2, "s": {"docs": {"sqlglot.dataframe": {"tf": 1}}, "df": 1}}}}}}, "b": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.executor.execute": {"tf": 1}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1.7320508075688772}, "sqlglot.optimizer.qualify_columns.qualify_columns": {"tf": 1}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"tf": 1}, "sqlglot.schema.Schema": {"tf": 1}}, "df": 6}}}}}}, "g": {"docs": {"sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.helper.tsort": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 2.23606797749979}, "sqlglot.planner.Scan.from_expression": {"tf": 2.23606797749979}, "sqlglot.planner.SetOperation.from_expression": {"tf": 2.23606797749979}}, "df": 5}, "y": {"docs": {"sqlglot.expressions.to_interval": {"tf": 1}}, "df": 1}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.dataframe": {"tf": 1}}, "df": 1}}, "a": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}, "u": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}, "f": {"docs": {"sqlglot.dataframe": {"tf": 2.8284271247461903}}, "df": 1, "s": {"docs": {"sqlglot.expressions.Expression.walk": {"tf": 1}, "sqlglot.expressions.Expression.dfs": {"tf": 1}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1}}, "df": 3}}, "b": {"docs": {"sqlglot.dialects.redshift.Redshift.Generator.renametable_sql": {"tf": 1}, "sqlglot.executor": {"tf": 1}, "sqlglot.executor.execute": {"tf": 1.4142135623730951}, "sqlglot.expressions.Column.parts": {"tf": 1}, "sqlglot.expressions.column": {"tf": 1.4142135623730951}, "sqlglot.expressions.table_": {"tf": 1.4142135623730951}, "sqlglot.helper.split_num_words": {"tf": 2.449489742783178}, "sqlglot.optimizer.optimizer.optimize": {"tf": 2}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"tf": 2}, "sqlglot.schema.Schema.supported_table_args": {"tf": 1}, "sqlglot.schema.MappingSchema": {"tf": 2}}, "df": 11, "/": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}}}}, "y": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}, "n": {"docs": {}, "df": 0, "f": {"docs": {"sqlglot.executor": {"tf": 1}, "sqlglot.optimizer.normalize.normalize": {"tf": 1.4142135623730951}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1.4142135623730951}, "sqlglot.optimizer.pushdown_predicates.pushdown_dnf": {"tf": 1}}, "df": 4}}, "s": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}, "d": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.transforms.remove_precision_parameterized_types": {"tf": 1}}, "df": 1}}}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 3.872983346207417}, "sqlglot.parse": {"tf": 1}, "sqlglot.parse_one": {"tf": 1.4142135623730951}, "sqlglot.transpile": {"tf": 1}, "sqlglot.diff": {"tf": 2.23606797749979}, "sqlglot.diff.diff": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.output_name": {"tf": 2}, "sqlglot.expressions.Expression.assert_is": {"tf": 1}, "sqlglot.expressions.Condition.and_": {"tf": 1.7320508075688772}, "sqlglot.expressions.Condition.or_": {"tf": 1.7320508075688772}, "sqlglot.expressions.Unionable.union": {"tf": 1.7320508075688772}, "sqlglot.expressions.Unionable.intersect": {"tf": 1.7320508075688772}, "sqlglot.expressions.Unionable.except_": {"tf": 1.7320508075688772}, "sqlglot.expressions.Column.output_name": {"tf": 2}, "sqlglot.expressions.Delete.delete": {"tf": 1.4142135623730951}, "sqlglot.expressions.Delete.where": {"tf": 1.7320508075688772}, "sqlglot.expressions.Delete.returning": {"tf": 1.7320508075688772}, "sqlglot.expressions.Identifier.output_name": {"tf": 2}, "sqlglot.expressions.Literal.output_name": {"tf": 2}, "sqlglot.expressions.Join.on": {"tf": 2}, "sqlglot.expressions.Join.using": {"tf": 2}, "sqlglot.expressions.Subqueryable.with_": {"tf": 2}, "sqlglot.expressions.Union.limit": {"tf": 1.7320508075688772}, "sqlglot.expressions.Union.select": {"tf": 2.23606797749979}, "sqlglot.expressions.Select.from_": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.group_by": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.order_by": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.sort_by": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.cluster_by": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.limit": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.offset": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.select": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.lateral": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.join": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.where": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.having": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.ctas": {"tf": 1.7320508075688772}, "sqlglot.expressions.Subquery.output_name": {"tf": 2}, "sqlglot.expressions.Star.output_name": {"tf": 2}, "sqlglot.expressions.Alias.output_name": {"tf": 2}, "sqlglot.expressions.Cast.output_name": {"tf": 2}, "sqlglot.expressions.maybe_parse": {"tf": 2.23606797749979}, "sqlglot.expressions.union": {"tf": 1.4142135623730951}, "sqlglot.expressions.intersect": {"tf": 1.4142135623730951}, "sqlglot.expressions.except_": {"tf": 1.4142135623730951}, "sqlglot.expressions.select": {"tf": 1.7320508075688772}, "sqlglot.expressions.from_": {"tf": 1.7320508075688772}, "sqlglot.expressions.update": {"tf": 1.4142135623730951}, "sqlglot.expressions.delete": {"tf": 1.4142135623730951}, "sqlglot.expressions.condition": {"tf": 1.7320508075688772}, "sqlglot.expressions.and_": {"tf": 1.7320508075688772}, "sqlglot.expressions.or_": {"tf": 1.7320508075688772}, "sqlglot.expressions.not_": {"tf": 1.7320508075688772}, "sqlglot.expressions.alias_": {"tf": 1.7320508075688772}, "sqlglot.expressions.subquery": {"tf": 1.7320508075688772}, "sqlglot.expressions.column_table_names": {"tf": 1}, "sqlglot.expressions.table_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.replace_tables": {"tf": 1.4142135623730951}, "sqlglot.expressions.replace_placeholders": {"tf": 1.4142135623730951}, "sqlglot.expressions.expand": {"tf": 1.7320508075688772}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}, "sqlglot.optimizer.eliminate_ctes.eliminate_ctes": {"tf": 1}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 1}, "sqlglot.optimizer.eliminate_subqueries.eliminate_subqueries": {"tf": 1.4142135623730951}, "sqlglot.optimizer.expand_laterals.expand_laterals": {"tf": 1}, "sqlglot.optimizer.expand_multi_table_selects.expand_multi_table_selects": {"tf": 1.4142135623730951}, "sqlglot.optimizer.lower_identities.lower_identities": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1.4142135623730951}, "sqlglot.optimizer.normalize.normalize": {"tf": 1}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1}, "sqlglot.optimizer.optimize_joins.optimize_joins": {"tf": 1.4142135623730951}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_predicates": {"tf": 1}, "sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 1}, "sqlglot.optimizer.qualify_columns.qualify_columns": {"tf": 1}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}, "sqlglot.optimizer.simplify.simplify": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 1.4142135623730951}, "sqlglot.transforms.unalias_group": {"tf": 1}}, "df": 82, "r": {"docs": {"sqlglot": {"tf": 2.6457513110645907}, "sqlglot.parse": {"tf": 1.4142135623730951}, "sqlglot.parse_one": {"tf": 1.4142135623730951}, "sqlglot.transpile": {"tf": 1}, "sqlglot.dialects": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.executor": {"tf": 2.6457513110645907}, "sqlglot.parser.Parser": {"tf": 1}}, "df": 25, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}}}, "/": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}}}}}}, "s": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1}}, "df": 20}}}}}, "d": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.parse": {"tf": 1}, "sqlglot.parse_one": {"tf": 1.4142135623730951}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1.4142135623730951}, "sqlglot.expressions.update": {"tf": 1.4142135623730951}, "sqlglot.expressions.delete": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser": {"tf": 1}, "sqlglot.parser.Parser.parse": {"tf": 1}}, "df": 27}, "s": {"docs": {"sqlglot.parse": {"tf": 1}, "sqlglot.parse_one": {"tf": 1}, "sqlglot.transpile": {"tf": 1}, "sqlglot.executor": {"tf": 1}, "sqlglot.parser.Parser.parse": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 1}}, "df": 6}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.parse": {"tf": 1}, "sqlglot.parse_one": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 2}, "sqlglot.executor.execute": {"tf": 1}, "sqlglot.expressions.Func": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 1}}, "df": 7, "/": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}, "t": {"docs": {"sqlglot.dialects.redshift.Redshift.Generator.with_properties": {"tf": 1}, "sqlglot.diff": {"tf": 2.23606797749979}, "sqlglot.executor": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1}, "sqlglot.expressions.column": {"tf": 1}}, "df": 5, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "c": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.executor": {"tf": 1}, "sqlglot.optimizer.scope.Scope.source_columns": {"tf": 1}}, "df": 2, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}}, "s": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1}, "sqlglot.expressions.Column.parts": {"tf": 1}}, "df": 3}}, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.find_ancestor": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.parent_select": {"tf": 1}, "sqlglot.expressions.Expression.same_parent": {"tf": 1}, "sqlglot.expressions.Expression.walk": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_cnf": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1}}, "df": 9, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.Expression.unnest": {"tf": 1}}, "df": 1}}}}}, "s": {"docs": {"sqlglot.expressions.Expression.flatten": {"tf": 1}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.executor.table.Tables": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1}, "sqlglot.transforms.remove_precision_parameterized_types": {"tf": 1.4142135623730951}}, "df": 3}}}}, "s": {"docs": {"sqlglot.helper.count_params": {"tf": 1}}, "df": 1}}}}}}}}, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot": {"tf": 1}}, "df": 1, "/": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}}}}}, "s": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1}}, "df": 3, "w": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.dataframe": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}, "d": {"docs": {"sqlglot.expressions.Condition.and_": {"tf": 1}, "sqlglot.expressions.Condition.or_": {"tf": 1}, "sqlglot.expressions.Unionable.union": {"tf": 1}, "sqlglot.expressions.Unionable.intersect": {"tf": 1}, "sqlglot.expressions.Unionable.except_": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Delete.returning": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Join.using": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Union.limit": {"tf": 1.4142135623730951}, "sqlglot.expressions.Union.select": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.group_by": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.order_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.sort_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.cluster_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.limit": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.offset": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.select": {"tf": 1}, "sqlglot.expressions.Select.lateral": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.where": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1}, "sqlglot.expressions.Select.ctas": {"tf": 1}, "sqlglot.expressions.union": {"tf": 1.4142135623730951}, "sqlglot.expressions.intersect": {"tf": 1.4142135623730951}, "sqlglot.expressions.except_": {"tf": 1.4142135623730951}, "sqlglot.expressions.select": {"tf": 1}, "sqlglot.expressions.from_": {"tf": 1}, "sqlglot.expressions.condition": {"tf": 1}, "sqlglot.expressions.and_": {"tf": 1}, "sqlglot.expressions.or_": {"tf": 1}, "sqlglot.expressions.not_": {"tf": 1}, "sqlglot.expressions.to_table": {"tf": 1}, "sqlglot.expressions.to_column": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1}, "sqlglot.expressions.subquery": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.time.format_time": {"tf": 1}}, "df": 40}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}, "d": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}}, "df": 21, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}}, "df": 21}}}}}, "i": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.diff": {"tf": 2.6457513110645907}, "sqlglot.trie.in_trie": {"tf": 1}}, "df": 2, "s": {"docs": {"sqlglot.diff": {"tf": 3.4641016151377544}, "sqlglot.diff.diff": {"tf": 1}}, "df": 2}}}, "t": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.expressions.to_table": {"tf": 1.4142135623730951}, "sqlglot.expressions.to_column": {"tf": 1.4142135623730951}}, "df": 3, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.diff": {"tf": 2}, "sqlglot.diff.ChangeDistiller": {"tf": 1}}, "df": 2}}}}, "r": {"docs": {"sqlglot.dataframe": {"tf": 1}}, "df": 1, "e": {"docs": {"sqlglot.diff.diff": {"tf": 1}}, "df": 1, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {"sqlglot": {"tf": 1.7320508075688772}, "sqlglot.parse": {"tf": 1}, "sqlglot.parse_one": {"tf": 1}, "sqlglot.transpile": {"tf": 1.4142135623730951}, "sqlglot.dataframe": {"tf": 1}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.executor.execute": {"tf": 1}, "sqlglot.expressions.Expression.sql": {"tf": 1}}, "df": 8}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}}, "df": 22, "d": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 2}}}}, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}, "t": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot": {"tf": 1.7320508075688772}, "sqlglot.dataframe": {"tf": 2}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.executor.python.Python.Generator": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator": {"tf": 1.4142135623730951}}, "df": 24}}}, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.dataframe.sql.DataFrame.persist": {"tf": 1}}, "df": 1}}}}}}, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}}, "df": 2, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1.4142135623730951}, "sqlglot.transforms.remove_precision_parameterized_types": {"tf": 1.4142135623730951}}, "df": 2}}}, "e": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.eliminate_joins.join_condition": {"tf": 1}, "sqlglot.optimizer.optimize_joins.optimize_joins": {"tf": 1}, "sqlglot.optimizer.optimize_joins.reorder_joins": {"tf": 1}}, "df": 3, "s": {"docs": {"sqlglot.executor": {"tf": 1.7320508075688772}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_predicates": {"tf": 1.4142135623730951}, "sqlglot.optimizer.pushdown_predicates.pushdown_cnf": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_dnf": {"tf": 1.4142135623730951}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 1}}, "df": 6}}}}}}}, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "x": {"docs": {"sqlglot.expressions.maybe_parse": {"tf": 1.4142135623730951}, "sqlglot.trie.in_trie": {"tf": 1}}, "df": 2}}}}, "o": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot": {"tf": 1}}, "df": 1, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.executor": {"tf": 1}, "sqlglot.expressions": {"tf": 1}}, "df": 3}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}}, "j": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot": {"tf": 1.4142135623730951}}, "df": 1, "s": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.executor": {"tf": 1}, "sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 1.4142135623730951}, "sqlglot.planner.Step.from_expression": {"tf": 2}, "sqlglot.planner.Scan.from_expression": {"tf": 2}, "sqlglot.planner.SetOperation.from_expression": {"tf": 2}, "sqlglot.transforms.eliminate_qualify": {"tf": 1}}, "df": 7}}}}}}}}, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.expressions.Func": {"tf": 1}}, "df": 3, "d": {"docs": {"sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.error_messages": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1.4142135623730951}, "sqlglot.helper.apply_index_offset": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.schema.Schema.add_table": {"tf": 1}, "sqlglot.schema.MappingSchema": {"tf": 1}, "sqlglot.schema.MappingSchema.add_table": {"tf": 1}}, "df": 11}, "s": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}}, "df": 2}}, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1}}, "df": 1}, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dialects.redshift.Redshift.Generator.with_properties": {"tf": 1}, "sqlglot.expressions.Select.ctas": {"tf": 1.4142135623730951}, "sqlglot.expressions.update": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}}, "df": 4}}}}}}, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}, "d": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.diff.diff": {"tf": 1}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 1}, "sqlglot.parser.Parser.parse": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 1}}, "df": 5, "d": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}}, "df": 23}, "s": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1}}, "df": 42}}, "t": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}}, "df": 1}}}}, "c": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}}, "df": 1, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}, "d": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}}, "df": 1, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}}, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}}, "df": 1}}}, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}}}}}, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot": {"tf": 3.1622776601683795}, "sqlglot.dataframe": {"tf": 2}}, "df": 2}}, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 2.449489742783178}}, "df": 1}}, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dataframe": {"tf": 1.4142135623730951}}, "df": 1, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.dataframe": {"tf": 1}}, "df": 1}}}}, "y": {"docs": {"sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1}}, "df": 2}}}}}, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}}, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Expression.walk": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.parse": {"tf": 1}, "sqlglot.parser.Parser.parse": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}}, "df": 5, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {"sqlglot.executor": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1}}, "df": 2, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 2.23606797749979}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.time.format_time": {"tf": 1}}, "df": 3}}}}, "s": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 2}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.schema.MappingSchema.add_table": {"tf": 1}}, "df": 1}}}}}}, "m": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}}}}, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1}}, "df": 1}}}}}, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.executor": {"tf": 1.4142135623730951}}, "df": 1, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}, "s": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.optimizer.pushdown_predicates.pushdown_dnf": {"tf": 1}}, "df": 3, "d": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.executor": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_predicates": {"tf": 1.4142135623730951}, "sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 1}}, "df": 3}}}}}}}, "y": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot": {"tf": 2.23606797749979}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 4.898979485566356}, "sqlglot.executor.python.PythonExecutor.generate": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.generate_tuple": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.expressions.convert": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.helper.csv_reader": {"tf": 1}}, "df": 28, "\u2019": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}, "p": {"docs": {}, "df": 0, "i": {"docs": {"sqlglot": {"tf": 1}}, "df": 1, "k": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.dataframe": {"tf": 2.8284271247461903}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.dataframe.sql.Column.cast": {"tf": 1}}, "df": 3, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dataframe": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}}}}}}, "i": {"docs": {}, "df": 0, "p": {"3": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1.4142135623730951}}, "df": 2}}}}}}}, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}, "c": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}}, "df": 1, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}, "n": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.diff.ChangeDistiller": {"tf": 1}}, "df": 2}}}}}}, "d": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}, "f": {"docs": {"sqlglot.diff.ChangeDistiller": {"tf": 1}}, "df": 1}}, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 2}}}, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1}, "sqlglot.expressions.Expression.transform": {"tf": 1}, "sqlglot.expressions.Delete.delete": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Delete.returning": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Join.using": {"tf": 1}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1}, "sqlglot.expressions.Union.limit": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.expressions.Select.limit": {"tf": 1}, "sqlglot.expressions.Select.offset": {"tf": 1}, "sqlglot.expressions.Select.select": {"tf": 1}, "sqlglot.expressions.Select.lateral": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1}, "sqlglot.expressions.Select.where": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1}, "sqlglot.expressions.Select.distinct": {"tf": 1}, "sqlglot.expressions.Select.ctas": {"tf": 1}, "sqlglot.expressions.Select.lock": {"tf": 1}}, "df": 27, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.replace_placeholders": {"tf": 2}}, "df": 1}}}}}}}}}, "n": {"docs": {"sqlglot.executor": {"tf": 2.8284271247461903}}, "df": 1, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.executor": {"tf": 1.7320508075688772}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}, "r": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {"sqlglot.executor": {"tf": 1.7320508075688772}}, "df": 1}}}}}}, "u": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.optimizer.scope.Scope.columns": {"tf": 1}}, "df": 2}}}, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}}, "df": 1}}}}}, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects": {"tf": 1}, "sqlglot.diff": {"tf": 2}, "sqlglot.expressions.Expression.error_messages": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1}, "sqlglot.expressions.convert": {"tf": 1}, "sqlglot.optimizer.eliminate_subqueries.eliminate_subqueries": {"tf": 1}, "sqlglot.optimizer.optimize_joins.optimize_joins": {"tf": 1}}, "df": 7}, "y": {"docs": {"sqlglot.helper.subclasses": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1}}, "df": 2}}}}}, "t": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.diff": {"tf": 2.23606797749979}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.optimizer.scope.Scope.traverse": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1}}, "df": 43, "s": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.Delete.returning": {"tf": 1}}, "df": 1}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.diff.Move": {"tf": 1}, "sqlglot.helper.seq_get": {"tf": 1}}, "df": 3, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.expressions.replace_placeholders": {"tf": 1}}, "df": 1}}}}}}}}, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects": {"tf": 1}}, "df": 1}}}}}}, "p": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"tf": 1}}, "df": 2}}}}}, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.Expression.pop": {"tf": 1}}, "df": 1}}}}, "w": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}, "sqlglot.helper.while_changing": {"tf": 1}, "sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 1}, "sqlglot.trie.in_trie": {"tf": 1}}, "df": 4, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}, "p": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}, "h": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.executor": {"tf": 1.7320508075688772}}, "df": 1}}}}}}}}, "t": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.dataframe.sql.Column.cast": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.with_properties": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.diff": {"tf": 3.3166247903554}, "sqlglot.diff.Keep": {"tf": 1}, "sqlglot.executor": {"tf": 2.6457513110645907}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.expressions.Expression.error_messages": {"tf": 1}, "sqlglot.expressions.func": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_dnf": {"tf": 1}, "sqlglot.optimizer.qualify_columns.validate_qualify_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.external_columns": {"tf": 1}, "sqlglot.transforms.eliminate_distinct_on": {"tf": 1}, "sqlglot.transforms.eliminate_qualify": {"tf": 1.4142135623730951}, "sqlglot.trie.in_trie": {"tf": 1.4142135623730951}}, "df": 40, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1, "p": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 2.8284271247461903}, "sqlglot.transpile": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 3, "r": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 2}, "d": {"docs": {"sqlglot.transpile": {"tf": 1}}, "df": 1}, "s": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot": {"tf": 1.7320508075688772}, "sqlglot.dataframe": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1}}, "df": 3}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dialects": {"tf": 1}}, "df": 1}}}}}}}}, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1.7320508075688772}, "sqlglot.executor": {"tf": 1}}, "df": 2}}}}, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {"sqlglot": {"tf": 1.7320508075688772}, "sqlglot.diff": {"tf": 1.7320508075688772}, "sqlglot.diff.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.transforms.unalias_group": {"tf": 1}, "sqlglot.transforms.preprocess": {"tf": 2}}, "df": 6, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot": {"tf": 1.4142135623730951}}, "df": 1}, "d": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.transpile": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1}, "sqlglot.expressions.Expression.transform": {"tf": 1.7320508075688772}, "sqlglot.expressions.Func": {"tf": 1}, "sqlglot.expressions.replace_tables": {"tf": 1}, "sqlglot.expressions.replace_placeholders": {"tf": 1}, "sqlglot.expressions.expand": {"tf": 1}, "sqlglot.helper.while_changing": {"tf": 1.4142135623730951}, "sqlglot.transforms.unalias_group": {"tf": 1.4142135623730951}, "sqlglot.transforms.eliminate_distinct_on": {"tf": 1.4142135623730951}}, "df": 11}}, "s": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dialects": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1}, "sqlglot.expressions.expand": {"tf": 1}, "sqlglot.transforms.remove_precision_parameterized_types": {"tf": 1}, "sqlglot.transforms.preprocess": {"tf": 1.4142135623730951}, "sqlglot.transforms.delegate": {"tf": 1}}, "df": 7}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.Expression.transform": {"tf": 1}, "sqlglot.expressions.expand": {"tf": 1}, "sqlglot.helper.while_changing": {"tf": 1.4142135623730951}, "sqlglot.transforms.eliminate_qualify": {"tf": 1}}, "df": 4, "s": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.transforms.preprocess": {"tf": 1}}, "df": 3}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.executor": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1}, "sqlglot.optimizer.scope.Scope.traverse": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1.7320508075688772}}, "df": 5, "d": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.walk": {"tf": 1}}, "df": 2}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.expressions.Expression.walk": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1.4142135623730951}}, "df": 2, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}}, "df": 21}}}}}}, "e": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 2.6457513110645907}, "sqlglot.parse": {"tf": 1}, "sqlglot.parse_one": {"tf": 1.4142135623730951}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.diff": {"tf": 3.872983346207417}, "sqlglot.diff.Move": {"tf": 1}, "sqlglot.diff.diff": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.expressions.Expression.depth": {"tf": 1}, "sqlglot.expressions.Expression.find": {"tf": 1}, "sqlglot.expressions.Expression.find_all": {"tf": 1}, "sqlglot.expressions.Expression.root": {"tf": 1}, "sqlglot.expressions.Expression.walk": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.dfs": {"tf": 1}, "sqlglot.expressions.Expression.bfs": {"tf": 1}, "sqlglot.expressions.Expression.sql": {"tf": 1}, "sqlglot.expressions.Expression.transform": {"tf": 2.23606797749979}, "sqlglot.expressions.Expression.replace": {"tf": 1.7320508075688772}, "sqlglot.expressions.union": {"tf": 1.4142135623730951}, "sqlglot.expressions.intersect": {"tf": 1.4142135623730951}, "sqlglot.expressions.except_": {"tf": 1.4142135623730951}, "sqlglot.expressions.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.from_": {"tf": 1.4142135623730951}, "sqlglot.expressions.update": {"tf": 1}, "sqlglot.expressions.delete": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.generator.Generator.generate": {"tf": 1.4142135623730951}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}, "sqlglot.optimizer.scope.Scope.traverse": {"tf": 1}, "sqlglot.optimizer.scope.Scope.ref_count": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}, "sqlglot.optimizer.scope.build_scope": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1}, "sqlglot.parser.Parser.parse": {"tf": 1}}, "df": 72, "s": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.parse": {"tf": 1}, "sqlglot.diff": {"tf": 3.3166247903554}, "sqlglot.diff.diff": {"tf": 1.4142135623730951}, "sqlglot.expressions.condition": {"tf": 1}, "sqlglot.parser.Parser.parse": {"tf": 1.4142135623730951}}, "df": 6}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.Func": {"tf": 1}}, "df": 1}}}}}, "u": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 2}, "sqlglot.transpile": {"tf": 1}, "sqlglot.dataframe": {"tf": 2}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.dialect.format_time_lambda": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 2.449489742783178}, "sqlglot.executor": {"tf": 1.7320508075688772}, "sqlglot.executor.python.Python.Generator": {"tf": 2.449489742783178}, "sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.expressions.Expression.walk": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.transform": {"tf": 1}, "sqlglot.expressions.Unionable.union": {"tf": 1}, "sqlglot.expressions.Unionable.intersect": {"tf": 1}, "sqlglot.expressions.Unionable.except_": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Join.using": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.expressions.Select.select": {"tf": 1}, "sqlglot.expressions.Select.lateral": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1}, "sqlglot.expressions.Select.where": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1}, "sqlglot.expressions.Select.lock": {"tf": 1}, "sqlglot.expressions.Func": {"tf": 1}, "sqlglot.expressions.union": {"tf": 1}, "sqlglot.expressions.intersect": {"tf": 1}, "sqlglot.expressions.except_": {"tf": 1}, "sqlglot.expressions.expand": {"tf": 1}, "sqlglot.expressions.true": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 2.449489742783178}, "sqlglot.helper.is_iterable": {"tf": 1}, "sqlglot.helper.should_identify": {"tf": 1.7320508075688772}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1.4142135623730951}, "sqlglot.optimizer.optimize_joins.optimize_joins": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_predicates": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1}, "sqlglot.optimizer.simplify.simplify": {"tf": 1.7320508075688772}, "sqlglot.optimizer.simplify.remove_compliments": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 1}, "sqlglot.trie.new_trie": {"tf": 1.7320508075688772}, "sqlglot.trie.in_trie": {"tf": 1.7320508075688772}}, "df": 68}}, "y": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dataframe": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.diff": {"tf": 1.7320508075688772}, "sqlglot.executor.table.Tables": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 1.4142135623730951}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1}}, "df": 7}, "i": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.7320508075688772}, "sqlglot.executor.python.Python.Generator": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator": {"tf": 1.7320508075688772}, "sqlglot.time.format_time": {"tf": 1.4142135623730951}, "sqlglot.trie.new_trie": {"tf": 2.449489742783178}, "sqlglot.trie.in_trie": {"tf": 3.4641016151377544}}, "df": 24, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}}}, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1, "\u2019": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}}, "o": {"docs": {"sqlglot": {"tf": 4.358898943540674}, "sqlglot.pretty": {"tf": 1}, "sqlglot.parse": {"tf": 1.4142135623730951}, "sqlglot.parse_one": {"tf": 1.7320508075688772}, "sqlglot.transpile": {"tf": 2.23606797749979}, "sqlglot.dataframe": {"tf": 3.7416573867739413}, "sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 2.23606797749979}, "sqlglot.dialects": {"tf": 2}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 3.7416573867739413}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 3.7416573867739413}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 3.7416573867739413}, "sqlglot.dialects.dialect.format_time_lambda": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 3.7416573867739413}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 3.7416573867739413}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 3.7416573867739413}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 3.7416573867739413}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 3.7416573867739413}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 3.7416573867739413}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 3.7416573867739413}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 3.7416573867739413}, "sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 3.7416573867739413}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 2.23606797749979}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 2.23606797749979}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 3.7416573867739413}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 3.7416573867739413}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 3.7416573867739413}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 3.7416573867739413}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 3.7416573867739413}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 3.7416573867739413}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 3.7416573867739413}, "sqlglot.diff": {"tf": 8.48528137423857}, "sqlglot.diff.diff": {"tf": 2}, "sqlglot.executor": {"tf": 6.708203932499369}, "sqlglot.executor.execute": {"tf": 1.4142135623730951}, "sqlglot.executor.context.Context": {"tf": 2}, "sqlglot.executor.python.Python.Generator": {"tf": 3.7416573867739413}, "sqlglot.expressions": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 2.449489742783178}, "sqlglot.expressions.Expression.text": {"tf": 1}, "sqlglot.expressions.Expression.append": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.set": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.find": {"tf": 1}, "sqlglot.expressions.Expression.find_all": {"tf": 1}, "sqlglot.expressions.Expression.find_ancestor": {"tf": 1}, "sqlglot.expressions.Expression.walk": {"tf": 1}, "sqlglot.expressions.Expression.transform": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.error_messages": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.dump": {"tf": 1}, "sqlglot.expressions.Condition.and_": {"tf": 2}, "sqlglot.expressions.Condition.or_": {"tf": 2}, "sqlglot.expressions.Unionable.union": {"tf": 1.7320508075688772}, "sqlglot.expressions.Unionable.intersect": {"tf": 1.7320508075688772}, "sqlglot.expressions.Unionable.except_": {"tf": 1.7320508075688772}, "sqlglot.expressions.Delete.delete": {"tf": 2}, "sqlglot.expressions.Delete.where": {"tf": 2.449489742783178}, "sqlglot.expressions.Delete.returning": {"tf": 2}, "sqlglot.expressions.Join.on": {"tf": 2.449489742783178}, "sqlglot.expressions.Join.using": {"tf": 2.449489742783178}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 2.8284271247461903}, "sqlglot.expressions.Union.limit": {"tf": 2}, "sqlglot.expressions.Union.select": {"tf": 2.449489742783178}, "sqlglot.expressions.Select.from_": {"tf": 2.23606797749979}, "sqlglot.expressions.Select.group_by": {"tf": 2.449489742783178}, "sqlglot.expressions.Select.order_by": {"tf": 2.23606797749979}, "sqlglot.expressions.Select.sort_by": {"tf": 2.23606797749979}, "sqlglot.expressions.Select.cluster_by": {"tf": 2.23606797749979}, "sqlglot.expressions.Select.limit": {"tf": 2}, "sqlglot.expressions.Select.offset": {"tf": 2}, "sqlglot.expressions.Select.select": {"tf": 2.449489742783178}, "sqlglot.expressions.Select.lateral": {"tf": 2.449489742783178}, "sqlglot.expressions.Select.join": {"tf": 2.6457513110645907}, "sqlglot.expressions.Select.where": {"tf": 2.449489742783178}, "sqlglot.expressions.Select.having": {"tf": 2.449489742783178}, "sqlglot.expressions.Select.ctas": {"tf": 2.23606797749979}, "sqlglot.expressions.Func": {"tf": 2.449489742783178}, "sqlglot.expressions.maybe_parse": {"tf": 2.6457513110645907}, "sqlglot.expressions.union": {"tf": 2.23606797749979}, "sqlglot.expressions.intersect": {"tf": 2.23606797749979}, "sqlglot.expressions.except_": {"tf": 2.23606797749979}, "sqlglot.expressions.select": {"tf": 2}, "sqlglot.expressions.from_": {"tf": 2}, "sqlglot.expressions.update": {"tf": 2.23606797749979}, "sqlglot.expressions.delete": {"tf": 1.7320508075688772}, "sqlglot.expressions.condition": {"tf": 2}, "sqlglot.expressions.and_": {"tf": 2}, "sqlglot.expressions.or_": {"tf": 2}, "sqlglot.expressions.not_": {"tf": 2}, "sqlglot.expressions.to_identifier": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 2.6457513110645907}, "sqlglot.expressions.subquery": {"tf": 2.23606797749979}, "sqlglot.expressions.column": {"tf": 1}, "sqlglot.expressions.cast": {"tf": 2.23606797749979}, "sqlglot.expressions.values": {"tf": 2}, "sqlglot.expressions.column_table_names": {"tf": 1}, "sqlglot.expressions.replace_tables": {"tf": 1.4142135623730951}, "sqlglot.expressions.replace_placeholders": {"tf": 1.7320508075688772}, "sqlglot.expressions.expand": {"tf": 2}, "sqlglot.expressions.func": {"tf": 2.23606797749979}, "sqlglot.generator.Generator": {"tf": 3.7416573867739413}, "sqlglot.helper.csv": {"tf": 1}, "sqlglot.helper.subclasses": {"tf": 1.7320508075688772}, "sqlglot.helper.apply_index_offset": {"tf": 1.7320508075688772}, "sqlglot.helper.camel_to_snake_case": {"tf": 1}, "sqlglot.helper.while_changing": {"tf": 1.7320508075688772}, "sqlglot.helper.tsort": {"tf": 1}, "sqlglot.helper.find_new_name": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 2}, "sqlglot.helper.is_iterable": {"tf": 1}, "sqlglot.helper.flatten": {"tf": 1}, "sqlglot.helper.should_identify": {"tf": 1}, "sqlglot.lineage.lineage": {"tf": 1.7320508075688772}, "sqlglot.lineage.LineageHTML": {"tf": 1}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 2}, "sqlglot.optimizer.canonicalize.canonicalize": {"tf": 1.4142135623730951}, "sqlglot.optimizer.eliminate_ctes.eliminate_ctes": {"tf": 1}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 1}, "sqlglot.optimizer.expand_laterals.expand_laterals": {"tf": 1}, "sqlglot.optimizer.lower_identities.lower_identities": {"tf": 1.4142135623730951}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1.4142135623730951}, "sqlglot.optimizer.normalize.normalize": {"tf": 1.4142135623730951}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1.4142135623730951}, "sqlglot.optimizer.optimizer.optimize": {"tf": 2}, "sqlglot.optimizer.pushdown_predicates.pushdown_predicates": {"tf": 1.4142135623730951}, "sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 1.4142135623730951}, "sqlglot.optimizer.qualify_columns.qualify_columns": {"tf": 1.4142135623730951}, "sqlglot.optimizer.qualify_columns.Resolver.get_table": {"tf": 1}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.Scope": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.branch": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.Scope.replace": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.cte_sources": {"tf": 1}, "sqlglot.optimizer.scope.Scope.external_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.add_source": {"tf": 1}, "sqlglot.optimizer.scope.Scope.ref_count": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}, "sqlglot.optimizer.scope.build_scope": {"tf": 1}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1}, "sqlglot.optimizer.simplify.simplify": {"tf": 1.4142135623730951}, "sqlglot.optimizer.simplify.rewrite_between": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 1.7320508075688772}, "sqlglot.parser.Parser": {"tf": 1.7320508075688772}, "sqlglot.parser.Parser.parse": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 1.7320508075688772}, "sqlglot.parser.Parser.expression": {"tf": 2}, "sqlglot.parser.Parser.validate_expression": {"tf": 1.4142135623730951}, "sqlglot.planner.Step.from_expression": {"tf": 2.23606797749979}, "sqlglot.planner.Scan.from_expression": {"tf": 2.23606797749979}, "sqlglot.planner.SetOperation.from_expression": {"tf": 2.23606797749979}, "sqlglot.schema.Schema.add_table": {"tf": 1}, "sqlglot.schema.Schema.column_names": {"tf": 1}, "sqlglot.schema.MappingSchema": {"tf": 1.4142135623730951}, "sqlglot.schema.MappingSchema.column_names": {"tf": 1}, "sqlglot.time.format_time": {"tf": 1}, "sqlglot.tokens.Tokenizer.tokenize": {"tf": 1}, "sqlglot.transforms.unalias_group": {"tf": 1}, "sqlglot.transforms.eliminate_distinct_on": {"tf": 1}, "sqlglot.transforms.eliminate_qualify": {"tf": 2.449489742783178}, "sqlglot.transforms.remove_precision_parameterized_types": {"tf": 1}, "sqlglot.transforms.preprocess": {"tf": 1.7320508075688772}, "sqlglot.transforms.delegate": {"tf": 1.4142135623730951}, "sqlglot.trie.new_trie": {"tf": 1.7320508075688772}, "sqlglot.trie.in_trie": {"tf": 1}}, "df": 187, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1}}, "df": 2}}, "g": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.executor": {"tf": 2.23606797749979}, "sqlglot.parser.Parser.parse_into": {"tf": 1.4142135623730951}, "sqlglot.tokens.Token.number": {"tf": 1}, "sqlglot.tokens.Token.string": {"tf": 1}, "sqlglot.tokens.Token.identifier": {"tf": 1}, "sqlglot.tokens.Token.var": {"tf": 1}}, "df": 6, "s": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dialects": {"tf": 1.4142135623730951}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 2}, "sqlglot.parser.Parser": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser.parse": {"tf": 1.7320508075688772}, "sqlglot.parser.Parser.parse_into": {"tf": 1.7320508075688772}, "sqlglot.tokens.Tokenizer.tokenize": {"tf": 1}}, "df": 25}, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot": {"tf": 2}, "sqlglot.dialects": {"tf": 2.23606797749979}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.executor": {"tf": 2}, "sqlglot.parser.Parser": {"tf": 1}}, "df": 22}, "d": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.executor": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "t": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1.7320508075688772}, "sqlglot.dialects": {"tf": 1.7320508075688772}}, "df": 2}}}}}}}, "o": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.transforms.eliminate_qualify": {"tf": 1}}, "df": 2, "l": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.diff": {"tf": 1}}, "df": 2, "s": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1}}, "df": 2}, "k": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}, "k": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}, "p": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.helper.tsort": {"tf": 1.4142135623730951}, "sqlglot.optimizer.optimize_joins.reorder_joins": {"tf": 1}}, "df": 3}}}}}}}}}, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.diff": {"tf": 2}}, "df": 1}}}, "b": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}, "w": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}}, "h": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 4.242640687119285}, "sqlglot.schema": {"tf": 1.4142135623730951}, "sqlglot.parse": {"tf": 2}, "sqlglot.parse_one": {"tf": 2.6457513110645907}, "sqlglot.transpile": {"tf": 4}, "sqlglot.dataframe": {"tf": 4.358898943540674}, "sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 3}, "sqlglot.dataframe.sql.Column.cast": {"tf": 1}, "sqlglot.dialects": {"tf": 2.6457513110645907}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 2.6457513110645907}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 4.358898943540674}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 2.6457513110645907}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 4.358898943540674}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 2.6457513110645907}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 4.358898943540674}, "sqlglot.dialects.dialect.format_time_lambda": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 2}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 2.6457513110645907}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 4.358898943540674}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 2.6457513110645907}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 4.358898943540674}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 2.6457513110645907}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 4.358898943540674}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 2.6457513110645907}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 4.358898943540674}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 2.6457513110645907}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 4.358898943540674}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 2.6457513110645907}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 4.358898943540674}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 2.6457513110645907}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 4.358898943540674}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 2.6457513110645907}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 4.358898943540674}, "sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.renametable_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 2.6457513110645907}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 4.358898943540674}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 2.23606797749979}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 2.6457513110645907}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 4.358898943540674}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 2.6457513110645907}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 4.358898943540674}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 2.6457513110645907}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 4.358898943540674}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 4.358898943540674}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 2.6457513110645907}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 2.6457513110645907}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 4.358898943540674}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 4.358898943540674}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 2.6457513110645907}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 4.358898943540674}, "sqlglot.diff": {"tf": 15.066519173319364}, "sqlglot.diff.Move": {"tf": 1}, "sqlglot.diff.diff": {"tf": 3.7416573867739413}, "sqlglot.diff.ChangeDistiller": {"tf": 1.7320508075688772}, "sqlglot.errors.ErrorLevel.IMMEDIATE": {"tf": 1}, "sqlglot.executor": {"tf": 8.48528137423857}, "sqlglot.executor.execute": {"tf": 1.4142135623730951}, "sqlglot.executor.context.Context.__init__": {"tf": 1.7320508075688772}, "sqlglot.executor.env.null_if_any": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 4.358898943540674}, "sqlglot.expressions": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 3.1622776601683795}, "sqlglot.expressions.Expression.this": {"tf": 1}, "sqlglot.expressions.Expression.expression": {"tf": 1}, "sqlglot.expressions.Expression.expressions": {"tf": 1}, "sqlglot.expressions.Expression.text": {"tf": 1}, "sqlglot.expressions.Expression.alias": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.output_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.copy": {"tf": 1}, "sqlglot.expressions.Expression.append": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.set": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.depth": {"tf": 1}, "sqlglot.expressions.Expression.iter_expressions": {"tf": 1}, "sqlglot.expressions.Expression.find": {"tf": 2.23606797749979}, "sqlglot.expressions.Expression.find_all": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.find_ancestor": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.parent_select": {"tf": 1}, "sqlglot.expressions.Expression.same_parent": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.root": {"tf": 1}, "sqlglot.expressions.Expression.walk": {"tf": 2.23606797749979}, "sqlglot.expressions.Expression.dfs": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.bfs": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.unnest": {"tf": 1}, "sqlglot.expressions.Expression.unalias": {"tf": 1}, "sqlglot.expressions.Expression.flatten": {"tf": 1}, "sqlglot.expressions.Expression.sql": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.transform": {"tf": 2.6457513110645907}, "sqlglot.expressions.Expression.replace": {"tf": 1}, "sqlglot.expressions.Expression.pop": {"tf": 1}, "sqlglot.expressions.Expression.error_messages": {"tf": 1.4142135623730951}, "sqlglot.expressions.Condition.and_": {"tf": 2.23606797749979}, "sqlglot.expressions.Condition.or_": {"tf": 2.23606797749979}, "sqlglot.expressions.Condition.not_": {"tf": 1}, "sqlglot.expressions.Unionable.union": {"tf": 2.449489742783178}, "sqlglot.expressions.Unionable.intersect": {"tf": 2.449489742783178}, "sqlglot.expressions.Unionable.except_": {"tf": 2.449489742783178}, "sqlglot.expressions.Column.output_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.Column.parts": {"tf": 1}, "sqlglot.expressions.Column.to_dot": {"tf": 1}, "sqlglot.expressions.Delete.delete": {"tf": 2.449489742783178}, "sqlglot.expressions.Delete.where": {"tf": 2.8284271247461903}, "sqlglot.expressions.Delete.returning": {"tf": 2.449489742783178}, "sqlglot.expressions.Identifier.output_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.Literal.output_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.Join.on": {"tf": 2.8284271247461903}, "sqlglot.expressions.Join.using": {"tf": 3}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 1.4142135623730951}, "sqlglot.expressions.Subqueryable.with_": {"tf": 3.4641016151377544}, "sqlglot.expressions.Union.limit": {"tf": 2.449489742783178}, "sqlglot.expressions.Union.select": {"tf": 2.8284271247461903}, "sqlglot.expressions.Select.from_": {"tf": 2.6457513110645907}, "sqlglot.expressions.Select.group_by": {"tf": 2.8284271247461903}, "sqlglot.expressions.Select.order_by": {"tf": 2.6457513110645907}, "sqlglot.expressions.Select.sort_by": {"tf": 2.6457513110645907}, "sqlglot.expressions.Select.cluster_by": {"tf": 2.6457513110645907}, "sqlglot.expressions.Select.limit": {"tf": 2.449489742783178}, "sqlglot.expressions.Select.offset": {"tf": 2.449489742783178}, "sqlglot.expressions.Select.select": {"tf": 2.6457513110645907}, "sqlglot.expressions.Select.lateral": {"tf": 2.6457513110645907}, "sqlglot.expressions.Select.join": {"tf": 3.3166247903554}, "sqlglot.expressions.Select.where": {"tf": 2.8284271247461903}, "sqlglot.expressions.Select.having": {"tf": 2.8284271247461903}, "sqlglot.expressions.Select.distinct": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.ctas": {"tf": 2.449489742783178}, "sqlglot.expressions.Select.lock": {"tf": 1.7320508075688772}, "sqlglot.expressions.Subquery.unnest": {"tf": 1}, "sqlglot.expressions.Subquery.output_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.Star.output_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.Alias.output_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.Func": {"tf": 2.8284271247461903}, "sqlglot.expressions.Cast.output_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.maybe_parse": {"tf": 3.1622776601683795}, "sqlglot.expressions.union": {"tf": 3.1622776601683795}, "sqlglot.expressions.intersect": {"tf": 3.1622776601683795}, "sqlglot.expressions.except_": {"tf": 3.1622776601683795}, "sqlglot.expressions.select": {"tf": 3}, "sqlglot.expressions.from_": {"tf": 3.3166247903554}, "sqlglot.expressions.update": {"tf": 2.23606797749979}, "sqlglot.expressions.delete": {"tf": 2.23606797749979}, "sqlglot.expressions.condition": {"tf": 3}, "sqlglot.expressions.and_": {"tf": 2.23606797749979}, "sqlglot.expressions.or_": {"tf": 2.23606797749979}, "sqlglot.expressions.not_": {"tf": 2.23606797749979}, "sqlglot.expressions.to_identifier": {"tf": 1.7320508075688772}, "sqlglot.expressions.alias_": {"tf": 2.8284271247461903}, "sqlglot.expressions.subquery": {"tf": 2.449489742783178}, "sqlglot.expressions.cast": {"tf": 1.4142135623730951}, "sqlglot.expressions.values": {"tf": 2}, "sqlglot.expressions.var": {"tf": 2}, "sqlglot.expressions.rename_table": {"tf": 2}, "sqlglot.expressions.convert": {"tf": 1}, "sqlglot.expressions.replace_children": {"tf": 1}, "sqlglot.expressions.table_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.replace_tables": {"tf": 1.4142135623730951}, "sqlglot.expressions.replace_placeholders": {"tf": 1.4142135623730951}, "sqlglot.expressions.expand": {"tf": 1.7320508075688772}, "sqlglot.expressions.func": {"tf": 3}, "sqlglot.generator.Generator": {"tf": 4.358898943540674}, "sqlglot.generator.Generator.generate": {"tf": 2}, "sqlglot.helper.AutoName": {"tf": 1.4142135623730951}, "sqlglot.helper.seq_get": {"tf": 1}, "sqlglot.helper.ensure_list": {"tf": 1.7320508075688772}, "sqlglot.helper.ensure_collection": {"tf": 1.7320508075688772}, "sqlglot.helper.csv": {"tf": 1.7320508075688772}, "sqlglot.helper.subclasses": {"tf": 2.23606797749979}, "sqlglot.helper.apply_index_offset": {"tf": 2.449489742783178}, "sqlglot.helper.camel_to_snake_case": {"tf": 1}, "sqlglot.helper.while_changing": {"tf": 1.7320508075688772}, "sqlglot.helper.tsort": {"tf": 1.4142135623730951}, "sqlglot.helper.csv_reader": {"tf": 1}, "sqlglot.helper.find_new_name": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 2.6457513110645907}, "sqlglot.helper.is_iterable": {"tf": 1.7320508075688772}, "sqlglot.helper.flatten": {"tf": 1}, "sqlglot.helper.count_params": {"tf": 1}, "sqlglot.helper.dict_depth": {"tf": 1}, "sqlglot.helper.first": {"tf": 1}, "sqlglot.helper.should_identify": {"tf": 1}, "sqlglot.lineage.lineage": {"tf": 2.449489742783178}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1.4142135623730951}, "sqlglot.optimizer.canonicalize.canonicalize": {"tf": 1.4142135623730951}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 1}, "sqlglot.optimizer.eliminate_joins.join_condition": {"tf": 1}, "sqlglot.optimizer.lower_identities.lower_identities": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1}, "sqlglot.optimizer.normalize.normalize": {"tf": 1}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 2.449489742783178}, "sqlglot.optimizer.optimizer.optimize": {"tf": 2.8284271247461903}, "sqlglot.optimizer.pushdown_predicates.pushdown_cnf": {"tf": 1.4142135623730951}, "sqlglot.optimizer.pushdown_predicates.pushdown_dnf": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.get_table": {"tf": 2}, "sqlglot.optimizer.qualify_columns.Resolver.get_source_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 2.23606797749979}, "sqlglot.optimizer.scope.Scope.branch": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find": {"tf": 2.449489742783178}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.replace": {"tf": 1}, "sqlglot.optimizer.scope.Scope.selects": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.Scope.external_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.unqualified_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.join_hints": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.source_columns": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.is_root": {"tf": 1}, "sqlglot.optimizer.scope.Scope.traverse": {"tf": 1}, "sqlglot.optimizer.scope.Scope.ref_count": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.build_scope": {"tf": 1}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1.7320508075688772}, "sqlglot.parser.Parser": {"tf": 2.6457513110645907}, "sqlglot.parser.Parser.parse": {"tf": 1.7320508075688772}, "sqlglot.parser.Parser.parse_into": {"tf": 2.8284271247461903}, "sqlglot.parser.Parser.check_errors": {"tf": 1}, "sqlglot.parser.Parser.raise_error": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser.expression": {"tf": 2.23606797749979}, "sqlglot.parser.Parser.validate_expression": {"tf": 1.4142135623730951}, "sqlglot.planner.Step.from_expression": {"tf": 2.449489742783178}, "sqlglot.planner.Scan.from_expression": {"tf": 2.449489742783178}, "sqlglot.planner.SetOperation.from_expression": {"tf": 2.449489742783178}, "sqlglot.schema.Schema.add_table": {"tf": 1.7320508075688772}, "sqlglot.schema.Schema.column_names": {"tf": 1.7320508075688772}, "sqlglot.schema.Schema.get_column_type": {"tf": 2.23606797749979}, "sqlglot.schema.MappingSchema": {"tf": 2.23606797749979}, "sqlglot.schema.MappingSchema.add_table": {"tf": 2}, "sqlglot.schema.MappingSchema.column_names": {"tf": 1.7320508075688772}, "sqlglot.schema.MappingSchema.get_column_type": {"tf": 2.23606797749979}, "sqlglot.time.format_time": {"tf": 1}, "sqlglot.tokens.Tokenizer.tokenize": {"tf": 1}, "sqlglot.transforms.unalias_group": {"tf": 1.4142135623730951}, "sqlglot.transforms.eliminate_distinct_on": {"tf": 1.4142135623730951}, "sqlglot.transforms.eliminate_qualify": {"tf": 2.6457513110645907}, "sqlglot.transforms.remove_precision_parameterized_types": {"tf": 1.7320508075688772}, "sqlglot.transforms.preprocess": {"tf": 1.4142135623730951}, "sqlglot.trie.new_trie": {"tf": 2.23606797749979}, "sqlglot.trie.in_trie": {"tf": 2.23606797749979}}, "df": 239, "n": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dataframe": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1}, "sqlglot.diff": {"tf": 2.6457513110645907}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.executor.context.Context": {"tf": 1}, "sqlglot.executor.table.Tables": {"tf": 1}, "sqlglot.expressions.Expression.transform": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.to_table": {"tf": 1}, "sqlglot.expressions.to_column": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1.4142135623730951}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1}}, "df": 16}, "r": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dialects": {"tf": 1}, "sqlglot.diff": {"tf": 3.1622776601683795}, "sqlglot.executor": {"tf": 2}}, "df": 4, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1}, "sqlglot.diff": {"tf": 1}}, "df": 2}}}}, "\u2019": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}, "m": {"docs": {"sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.diff": {"tf": 2.23606797749979}, "sqlglot.helper.subclasses": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 1}, "sqlglot.transforms.eliminate_qualify": {"tf": 1.4142135623730951}}, "df": 6}, "y": {"docs": {"sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.dialects": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.diff": {"tf": 2}, "sqlglot.executor": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1}, "sqlglot.optimizer.optimize_joins.normalize": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 1}}, "df": 29}, "i": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dialects.redshift.Redshift.Generator.with_properties": {"tf": 1}, "sqlglot.diff": {"tf": 2.449489742783178}, "sqlglot.diff.ChangeDistiller": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1.4142135623730951}, "sqlglot.optimizer.pushdown_predicates.pushdown_dnf": {"tf": 1}, "sqlglot.parser.Parser.expression": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}}, "df": 9}}, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.expressions.Func": {"tf": 1}, "sqlglot.transforms.preprocess": {"tf": 1}}, "df": 4}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot": {"tf": 2}, "sqlglot.dataframe": {"tf": 3.1622776601683795}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.dialects": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.format_time_lambda": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 2.449489742783178}, "sqlglot.diff": {"tf": 5.744562646538029}, "sqlglot.diff.Insert": {"tf": 1}, "sqlglot.diff.Remove": {"tf": 1}, "sqlglot.diff.Move": {"tf": 1}, "sqlglot.diff.Update": {"tf": 1}, "sqlglot.diff.Keep": {"tf": 1}, "sqlglot.diff.diff": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 3.605551275463989}, "sqlglot.executor.env.null_if_any": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 2.23606797749979}, "sqlglot.expressions.Expression.text": {"tf": 1}, "sqlglot.expressions.Expression.find_all": {"tf": 1}, "sqlglot.expressions.Expression.walk": {"tf": 1}, "sqlglot.expressions.Expression.assert_is": {"tf": 1}, "sqlglot.expressions.Expression.error_messages": {"tf": 1.7320508075688772}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1.4142135623730951}, "sqlglot.expressions.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.from_": {"tf": 1.4142135623730951}, "sqlglot.expressions.condition": {"tf": 1.4142135623730951}, "sqlglot.expressions.to_table": {"tf": 1}, "sqlglot.expressions.to_column": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1}, "sqlglot.expressions.replace_placeholders": {"tf": 1.4142135623730951}, "sqlglot.helper.ensure_list": {"tf": 1}, "sqlglot.helper.ensure_collection": {"tf": 1}, "sqlglot.helper.apply_index_offset": {"tf": 1}, "sqlglot.helper.tsort": {"tf": 1}, "sqlglot.helper.open_file": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1.7320508075688772}, "sqlglot.helper.flatten": {"tf": 1}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1.4142135623730951}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_dnf": {"tf": 1}, "sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1}, "sqlglot.optimizer.scope.Scope.derived_tables": {"tf": 1}, "sqlglot.optimizer.scope.Scope.subqueries": {"tf": 1}, "sqlglot.optimizer.scope.Scope.columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.cte_sources": {"tf": 1}, "sqlglot.optimizer.scope.Scope.external_columns": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.join_hints": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.Scope.source_columns": {"tf": 1}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1}, "sqlglot.parser.Parser.validate_expression": {"tf": 1.4142135623730951}, "sqlglot.planner.Step.from_expression": {"tf": 1.4142135623730951}, "sqlglot.planner.Scan.from_expression": {"tf": 1.4142135623730951}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1.4142135623730951}, "sqlglot.schema.Schema.add_table": {"tf": 1}, "sqlglot.schema.MappingSchema": {"tf": 1}, "sqlglot.schema.MappingSchema.add_table": {"tf": 1}, "sqlglot.transforms.unalias_group": {"tf": 1}, "sqlglot.transforms.eliminate_distinct_on": {"tf": 1.4142135623730951}, "sqlglot.transforms.eliminate_qualify": {"tf": 1}, "sqlglot.transforms.preprocess": {"tf": 1.4142135623730951}, "sqlglot.transforms.delegate": {"tf": 1.4142135623730951}, "sqlglot.trie.new_trie": {"tf": 1}}, "df": 66}, "n": {"docs": {"sqlglot.diff": {"tf": 2.6457513110645907}, "sqlglot.helper.apply_index_offset": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}}, "df": 3, "k": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.optimizer.qualify_columns.Resolver": {"tf": 1}}, "df": 4}}, "k": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}, "s": {"docs": {"sqlglot": {"tf": 4.58257569495584}, "sqlglot.dataframe": {"tf": 2.449489742783178}, "sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.dataframe.sql.Column.cast": {"tf": 1}, "sqlglot.dialects": {"tf": 1.7320508075688772}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.diff": {"tf": 6.244997998398398}, "sqlglot.diff.diff": {"tf": 3.4641016151377544}, "sqlglot.executor": {"tf": 2.6457513110645907}, "sqlglot.executor.execute": {"tf": 1}, "sqlglot.executor.context.Context": {"tf": 1}, "sqlglot.executor.env.null_if_any": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.executor.table.Tables": {"tf": 1.4142135623730951}, "sqlglot.expressions": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 2.23606797749979}, "sqlglot.expressions.Expression.this": {"tf": 1}, "sqlglot.expressions.Expression.text": {"tf": 1}, "sqlglot.expressions.Expression.output_name": {"tf": 1}, "sqlglot.expressions.Expression.depth": {"tf": 1}, "sqlglot.expressions.Expression.find": {"tf": 1}, "sqlglot.expressions.Expression.find_all": {"tf": 1}, "sqlglot.expressions.Expression.root": {"tf": 1}, "sqlglot.expressions.Expression.walk": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.dfs": {"tf": 1}, "sqlglot.expressions.Expression.bfs": {"tf": 1}, "sqlglot.expressions.Expression.unalias": {"tf": 1}, "sqlglot.expressions.Expression.sql": {"tf": 1}, "sqlglot.expressions.Expression.replace": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.pop": {"tf": 1}, "sqlglot.expressions.Expression.assert_is": {"tf": 2.23606797749979}, "sqlglot.expressions.Expression.error_messages": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.dump": {"tf": 1}, "sqlglot.expressions.Condition.and_": {"tf": 1}, "sqlglot.expressions.Condition.or_": {"tf": 1}, "sqlglot.expressions.Condition.not_": {"tf": 1}, "sqlglot.expressions.Unionable.union": {"tf": 1}, "sqlglot.expressions.Unionable.intersect": {"tf": 1}, "sqlglot.expressions.Unionable.except_": {"tf": 1}, "sqlglot.expressions.Column.output_name": {"tf": 1}, "sqlglot.expressions.Delete.delete": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1.4142135623730951}, "sqlglot.expressions.Delete.returning": {"tf": 1}, "sqlglot.expressions.Identifier.output_name": {"tf": 1}, "sqlglot.expressions.Literal.output_name": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1.4142135623730951}, "sqlglot.expressions.Join.using": {"tf": 1.4142135623730951}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 1.4142135623730951}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1.7320508075688772}, "sqlglot.expressions.Union.limit": {"tf": 1.7320508075688772}, "sqlglot.expressions.Union.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.from_": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.group_by": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.order_by": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.sort_by": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.cluster_by": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.limit": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.offset": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.lateral": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.join": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.where": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.having": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.distinct": {"tf": 1}, "sqlglot.expressions.Select.ctas": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.lock": {"tf": 1.4142135623730951}, "sqlglot.expressions.Subquery.output_name": {"tf": 1}, "sqlglot.expressions.Star.output_name": {"tf": 1}, "sqlglot.expressions.Alias.output_name": {"tf": 1}, "sqlglot.expressions.Func": {"tf": 1.4142135623730951}, "sqlglot.expressions.Cast.output_name": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1.4142135623730951}, "sqlglot.expressions.union": {"tf": 1}, "sqlglot.expressions.intersect": {"tf": 1}, "sqlglot.expressions.except_": {"tf": 1}, "sqlglot.expressions.select": {"tf": 1}, "sqlglot.expressions.from_": {"tf": 1}, "sqlglot.expressions.condition": {"tf": 1.4142135623730951}, "sqlglot.expressions.and_": {"tf": 1}, "sqlglot.expressions.or_": {"tf": 1}, "sqlglot.expressions.not_": {"tf": 1.7320508075688772}, "sqlglot.expressions.alias_": {"tf": 1}, "sqlglot.expressions.subquery": {"tf": 1}, "sqlglot.expressions.var": {"tf": 1.4142135623730951}, "sqlglot.expressions.func": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.generator.Generator.generate": {"tf": 1.4142135623730951}, "sqlglot.helper.AutoName": {"tf": 1}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}, "sqlglot.optimizer.canonicalize.canonicalize": {"tf": 1}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 1}, "sqlglot.optimizer.eliminate_subqueries.eliminate_subqueries": {"tf": 1}, "sqlglot.optimizer.expand_laterals.expand_laterals": {"tf": 1}, "sqlglot.optimizer.lower_identities.lower_identities": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1.4142135623730951}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.all_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 3}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.replace": {"tf": 1}, "sqlglot.optimizer.scope.Scope.tables": {"tf": 1}, "sqlglot.optimizer.scope.Scope.ctes": {"tf": 1}, "sqlglot.optimizer.scope.Scope.derived_tables": {"tf": 1}, "sqlglot.optimizer.scope.Scope.udtfs": {"tf": 1}, "sqlglot.optimizer.scope.Scope.subqueries": {"tf": 1}, "sqlglot.optimizer.scope.Scope.columns": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 1}, "sqlglot.optimizer.scope.Scope.selects": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_subquery": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_derived_table": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_union": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_cte": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_root": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_udtf": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_correlated_subquery": {"tf": 1}, "sqlglot.optimizer.scope.Scope.rename_source": {"tf": 1}, "sqlglot.optimizer.scope.Scope.add_source": {"tf": 1}, "sqlglot.optimizer.scope.Scope.remove_source": {"tf": 1}, "sqlglot.optimizer.scope.Scope.traverse": {"tf": 1}, "sqlglot.optimizer.scope.Scope.ref_count": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}, "sqlglot.optimizer.simplify.rewrite_between": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}, "sqlglot.schema.Schema.supported_table_args": {"tf": 1.4142135623730951}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1.4142135623730951}, "sqlglot.transforms.eliminate_distinct_on": {"tf": 1}, "sqlglot.transforms.eliminate_qualify": {"tf": 1}, "sqlglot.transforms.remove_precision_parameterized_types": {"tf": 1}, "sqlglot.transforms.delegate": {"tf": 1}}, "df": 176}, "r": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 3, "t": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.find_all": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1}}, "df": 4}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.expressions.column_table_names": {"tf": 1}}, "df": 3, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 2}}}}}}}, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 2}}, "df": 1}}}}}}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.transpile": {"tf": 2}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.dialect.format_time_lambda": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.diff": {"tf": 7.280109889280518}, "sqlglot.diff.diff": {"tf": 2.8284271247461903}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.helper.subclasses": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 1}, "sqlglot.parser.Parser.expression": {"tf": 1}, "sqlglot.schema.Schema.get_column_type": {"tf": 1}, "sqlglot.schema.MappingSchema.get_column_type": {"tf": 1}, "sqlglot.time.format_time": {"tf": 1}, "sqlglot.trie.in_trie": {"tf": 1}}, "df": 33, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}}, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 2}, "sqlglot.dataframe": {"tf": 3.3166247903554}, "sqlglot.dataframe.sql.DataFrame.persist": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator.renametable_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 2}, "sqlglot.executor.execute": {"tf": 1.7320508075688772}, "sqlglot.executor.python.Python.Generator": {"tf": 1.4142135623730951}, "sqlglot.expressions.Column.parts": {"tf": 1}, "sqlglot.expressions.Delete.delete": {"tf": 1.7320508075688772}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.ctas": {"tf": 2.8284271247461903}, "sqlglot.expressions.update": {"tf": 1.4142135623730951}, "sqlglot.expressions.delete": {"tf": 1.4142135623730951}, "sqlglot.expressions.to_table": {"tf": 2.449489742783178}, "sqlglot.expressions.to_column": {"tf": 1.7320508075688772}, "sqlglot.expressions.alias_": {"tf": 1.7320508075688772}, "sqlglot.expressions.column": {"tf": 1.4142135623730951}, "sqlglot.expressions.table_": {"tf": 2}, "sqlglot.expressions.var": {"tf": 1}, "sqlglot.expressions.rename_table": {"tf": 2}, "sqlglot.expressions.column_table_names": {"tf": 1.7320508075688772}, "sqlglot.expressions.table_name": {"tf": 2.6457513110645907}, "sqlglot.expressions.replace_tables": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1.4142135623730951}, "sqlglot.helper.split_num_words": {"tf": 2.449489742783178}, "sqlglot.optimizer.expand_multi_table_selects.expand_multi_table_selects": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1.4142135623730951}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1.7320508075688772}, "sqlglot.optimizer.qualify_columns.Resolver.get_table": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.Scope": {"tf": 2.6457513110645907}, "sqlglot.optimizer.scope.Scope.tables": {"tf": 1}, "sqlglot.optimizer.scope.Scope.derived_tables": {"tf": 1}, "sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_derived_table": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_cte": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_udtf": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1}, "sqlglot.schema.Schema.add_table": {"tf": 2.23606797749979}, "sqlglot.schema.Schema.column_names": {"tf": 1.7320508075688772}, "sqlglot.schema.Schema.get_column_type": {"tf": 1.4142135623730951}, "sqlglot.schema.Schema.supported_table_args": {"tf": 1}, "sqlglot.schema.MappingSchema": {"tf": 2.449489742783178}, "sqlglot.schema.MappingSchema.add_table": {"tf": 2.23606797749979}, "sqlglot.schema.MappingSchema.column_names": {"tf": 1.7320508075688772}, "sqlglot.schema.MappingSchema.get_column_type": {"tf": 1.4142135623730951}}, "df": 86, "s": {"docs": {"sqlglot": {"tf": 2.449489742783178}, "sqlglot.dialects.redshift.Redshift.Generator.renametable_sql": {"tf": 1}, "sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1.7320508075688772}, "sqlglot.executor.execute": {"tf": 1.4142135623730951}, "sqlglot.executor.context.Context": {"tf": 1}, "sqlglot.executor.context.Context.__init__": {"tf": 1}, "sqlglot.expressions.replace_tables": {"tf": 1.4142135623730951}, "sqlglot.lineage.lineage": {"tf": 1.4142135623730951}, "sqlglot.optimizer.eliminate_subqueries.eliminate_subqueries": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 2}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1.4142135623730951}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope": {"tf": 1}, "sqlglot.optimizer.scope.Scope.tables": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.derived_tables": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 1}, "sqlglot.optimizer.scope.Scope.join_hints": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}, "sqlglot.schema.MappingSchema": {"tf": 1}}, "df": 22, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.executor.python.Python.Generator": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser": {"tf": 1.4142135623730951}}, "df": 40}}}}}}, "|": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.scope.Scope": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 1}}, "df": 2}}}}}, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 1}}, "df": 1}}}}}}, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.optimizer.scope.Scope": {"tf": 1}, "sqlglot.optimizer.scope.Scope.udtfs": {"tf": 1}}, "df": 2}}}}}, "k": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1.7320508075688772}}, "df": 4, "s": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.transform": {"tf": 1}}, "df": 3}, "n": {"docs": {"sqlglot.helper.find_new_name": {"tf": 1.4142135623730951}}, "df": 1}}}, "s": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}, "g": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.Tag": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.executor": {"tf": 1.7320508075688772}, "sqlglot.helper.is_iterable": {"tf": 1}}, "df": 3, "s": {"docs": {"sqlglot": {"tf": 1.7320508075688772}, "sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 2}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 2}}}}}, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}}}}}}, "x": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dialects": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.diff": {"tf": 1.7320508075688772}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.helper.should_identify": {"tf": 1.7320508075688772}, "sqlglot.tokens.Token.number": {"tf": 1}, "sqlglot.tokens.Token.string": {"tf": 1}, "sqlglot.tokens.Token.identifier": {"tf": 1}, "sqlglot.tokens.Token.var": {"tf": 1}}, "df": 30, "u": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.expressions.Expression.text": {"tf": 1}}, "df": 1}}}}}, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}, "m": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 2}}, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}}, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}, "a": {"docs": {}, "df": 0, "m": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dataframe": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.dialect.format_time_lambda": {"tf": 1.7320508075688772}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 2.449489742783178}, "sqlglot.diff": {"tf": 1.7320508075688772}, "sqlglot.executor": {"tf": 1.7320508075688772}, "sqlglot.executor.python.Python.Generator": {"tf": 2.449489742783178}, "sqlglot.generator.Generator": {"tf": 2.449489742783178}, "sqlglot.time.format_time": {"tf": 2.23606797749979}}, "df": 27, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}}}, "s": {"docs": {"sqlglot.optimizer.scope.Scope.ref_count": {"tf": 1}}, "df": 1}}}, "n": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dialects": {"tf": 1}}, "df": 2}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "\u2019": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}, "b": {"docs": {}, "df": 0, "l": {"1": {"docs": {"sqlglot.expressions.Select.join": {"tf": 2}}, "df": 1}, "2": {"docs": {"sqlglot.expressions.Subqueryable.with_": {"tf": 2}, "sqlglot.expressions.Select.lateral": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.join": {"tf": 2.8284271247461903}}, "df": 3}, "docs": {"sqlglot": {"tf": 2.449489742783178}, "sqlglot.expressions.Expression.replace": {"tf": 1.4142135623730951}, "sqlglot.expressions.Delete.delete": {"tf": 1.4142135623730951}, "sqlglot.expressions.Delete.where": {"tf": 1.4142135623730951}, "sqlglot.expressions.Delete.returning": {"tf": 1.4142135623730951}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 1.4142135623730951}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.from_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.group_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.order_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.sort_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.cluster_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.limit": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.offset": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.lateral": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.join": {"tf": 2}, "sqlglot.expressions.Select.where": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.having": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.distinct": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.ctas": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.lock": {"tf": 2}, "sqlglot.expressions.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.from_": {"tf": 1.4142135623730951}, "sqlglot.expressions.condition": {"tf": 1.4142135623730951}, "sqlglot.expressions.subquery": {"tf": 1.4142135623730951}, "sqlglot.expressions.replace_placeholders": {"tf": 1.4142135623730951}, "sqlglot.optimizer.qualify_columns.qualify_columns": {"tf": 2}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"tf": 1.7320508075688772}}, "df": 28}}, "w": {"docs": {}, "df": 0, "o": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1}, "sqlglot.diff": {"tf": 5}, "sqlglot.executor": {"tf": 1}}, "df": 5}, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 3.1622776601683795}, "sqlglot.dataframe": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 2.23606797749979}, "sqlglot.dialects": {"tf": 3.1622776601683795}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 2.23606797749979}, "sqlglot.executor": {"tf": 1}, "sqlglot.executor.execute": {"tf": 1.7320508075688772}, "sqlglot.executor.table.Tables": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.find": {"tf": 1}, "sqlglot.expressions.Expression.find_all": {"tf": 1}, "sqlglot.expressions.Expression.find_ancestor": {"tf": 1}, "sqlglot.expressions.Expression.assert_is": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.join": {"tf": 2.23606797749979}, "sqlglot.expressions.Select.lock": {"tf": 1}, "sqlglot.expressions.cast": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1.4142135623730951}, "sqlglot.helper.flatten": {"tf": 1}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 2.23606797749979}, "sqlglot.optimizer.canonicalize.canonicalize": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.Scope": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser.parse_into": {"tf": 1.4142135623730951}, "sqlglot.schema.Schema.get_column_type": {"tf": 1.4142135623730951}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1.7320508075688772}, "sqlglot.schema.MappingSchema": {"tf": 2}, "sqlglot.schema.MappingSchema.get_column_type": {"tf": 1.4142135623730951}}, "df": 30, "s": {"docs": {"sqlglot.dataframe": {"tf": 5.656854249492381}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.dialects": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.executor.table.Tables": {"tf": 1}, "sqlglot.expressions": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.find": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.find_all": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.find_ancestor": {"tf": 1.4142135623730951}, "sqlglot.expressions.Func": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1}, "sqlglot.helper.is_iterable": {"tf": 1}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 2}, "sqlglot.optimizer.canonicalize.canonicalize": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser.parse_into": {"tf": 1.4142135623730951}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1}, "sqlglot.transforms.remove_precision_parameterized_types": {"tf": 1.4142135623730951}}, "df": 21}, "o": {"docs": {}, "df": 0, "f": {"docs": {"sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.dialects": {"tf": 1}}, "df": 1, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.executor.table.Tables": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1}}, "df": 2}}}}}}}}, "p": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot.executor": {"tf": 1.4142135623730951}}, "df": 1, "h": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.diff.ChangeDistiller": {"tf": 1}, "sqlglot.expressions.to_identifier": {"tf": 1}}, "df": 3}}, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.executor.python.PythonExecutor.generate_tuple": {"tf": 1}, "sqlglot.expressions.Expression.unnest_operands": {"tf": 1}, "sqlglot.helper.ensure_list": {"tf": 1}, "sqlglot.optimizer.eliminate_joins.join_condition": {"tf": 1}}, "df": 4, "[": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "[": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.optimizer.eliminate_joins.join_condition": {"tf": 1}}, "df": 1}}}}}}}}, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.optimizer.scope.walk_in_scope": {"tf": 1}}, "df": 1}}}}}}}}}, "o": {"docs": {"sqlglot": {"tf": 2}, "sqlglot.diff": {"tf": 2.23606797749979}, "sqlglot.trie.new_trie": {"tf": 1.4142135623730951}}, "df": 3, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.optimizer.eliminate_ctes.eliminate_ctes": {"tf": 1}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 1}, "sqlglot.optimizer.expand_laterals.expand_laterals": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1}, "sqlglot.optimizer.optimize_joins.optimize_joins": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_predicates": {"tf": 1}, "sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 1}}, "df": 11, "r": {"docs": {"sqlglot": {"tf": 2.23606797749979}, "sqlglot.schema": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.lineage.lineage": {"tf": 1}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1.4142135623730951}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1.4142135623730951}, "sqlglot.optimizer.qualify_columns.qualify_columns": {"tf": 1}}, "df": 9, "/": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}}}}, "d": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.diff": {"tf": 2}, "sqlglot.executor": {"tf": 1}, "sqlglot.optimizer.eliminate_ctes.eliminate_ctes": {"tf": 1}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 1}, "sqlglot.optimizer.expand_laterals.expand_laterals": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1.4142135623730951}, "sqlglot.optimizer.pushdown_predicates.pushdown_predicates": {"tf": 1}, "sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 1}}, "df": 10}, "s": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.optimizer.qualify_columns.validate_qualify_columns": {"tf": 1}}, "df": 1}}}}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1}}, "df": 1, "s": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1.4142135623730951}}, "df": 2}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.executor": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}}, "df": 2}}}}}}, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.executor": {"tf": 1}, "sqlglot.helper.should_identify": {"tf": 1}}, "df": 2, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression": {"tf": 1.4142135623730951}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 1}, "sqlglot.expressions.Select.ctas": {"tf": 1}, "sqlglot.expressions.to_table": {"tf": 1}, "sqlglot.expressions.to_column": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.generate": {"tf": 1}, "sqlglot.optimizer.optimize_joins.normalize": {"tf": 1}, "sqlglot.parser.Parser.expression": {"tf": 1}, "sqlglot.parser.Parser.validate_expression": {"tf": 1}, "sqlglot.schema.MappingSchema": {"tf": 1}, "sqlglot.time.format_time": {"tf": 1}}, "df": 13, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1.4142135623730951}}, "df": 2}}, "[": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.optimizer.scope.walk_in_scope": {"tf": 1}}, "df": 1}}}}}}, "s": {"docs": {"sqlglot.parse": {"tf": 1}, "sqlglot.parse_one": {"tf": 1}, "sqlglot.transpile": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.persist": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.executor": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.expressions.Expression.sql": {"tf": 1}, "sqlglot.expressions.Condition.and_": {"tf": 1}, "sqlglot.expressions.Condition.or_": {"tf": 1}, "sqlglot.expressions.Unionable.union": {"tf": 1}, "sqlglot.expressions.Unionable.intersect": {"tf": 1}, "sqlglot.expressions.Unionable.except_": {"tf": 1}, "sqlglot.expressions.Delete.delete": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Delete.returning": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Join.using": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1}, "sqlglot.expressions.Union.limit": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.expressions.Select.limit": {"tf": 1}, "sqlglot.expressions.Select.offset": {"tf": 1}, "sqlglot.expressions.Select.select": {"tf": 1}, "sqlglot.expressions.Select.lateral": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1}, "sqlglot.expressions.Select.where": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1}, "sqlglot.expressions.Select.ctas": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1}, "sqlglot.expressions.union": {"tf": 1}, "sqlglot.expressions.intersect": {"tf": 1}, "sqlglot.expressions.except_": {"tf": 1}, "sqlglot.expressions.select": {"tf": 1}, "sqlglot.expressions.from_": {"tf": 1}, "sqlglot.expressions.update": {"tf": 1}, "sqlglot.expressions.delete": {"tf": 1}, "sqlglot.expressions.condition": {"tf": 1}, "sqlglot.expressions.and_": {"tf": 1}, "sqlglot.expressions.or_": {"tf": 1}, "sqlglot.expressions.not_": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1}, "sqlglot.expressions.subquery": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1}}, "df": 86}}}}, "s": {"docs": {"sqlglot.parse": {"tf": 1}, "sqlglot.parse_one": {"tf": 1}, "sqlglot.transpile": {"tf": 1}, "sqlglot.expressions.Expression.sql": {"tf": 1}, "sqlglot.expressions.Condition.and_": {"tf": 1}, "sqlglot.expressions.Condition.or_": {"tf": 1}, "sqlglot.expressions.Unionable.union": {"tf": 1}, "sqlglot.expressions.Unionable.intersect": {"tf": 1}, "sqlglot.expressions.Unionable.except_": {"tf": 1}, "sqlglot.expressions.Delete.delete": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Delete.returning": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Join.using": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1}, "sqlglot.expressions.Union.limit": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.expressions.Select.limit": {"tf": 1}, "sqlglot.expressions.Select.offset": {"tf": 1}, "sqlglot.expressions.Select.select": {"tf": 1}, "sqlglot.expressions.Select.lateral": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1}, "sqlglot.expressions.Select.where": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1}, "sqlglot.expressions.Select.ctas": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1}, "sqlglot.expressions.union": {"tf": 1}, "sqlglot.expressions.intersect": {"tf": 1}, "sqlglot.expressions.except_": {"tf": 1}, "sqlglot.expressions.select": {"tf": 1}, "sqlglot.expressions.from_": {"tf": 1}, "sqlglot.expressions.update": {"tf": 1}, "sqlglot.expressions.delete": {"tf": 1}, "sqlglot.expressions.condition": {"tf": 1}, "sqlglot.expressions.and_": {"tf": 1}, "sqlglot.expressions.or_": {"tf": 1}, "sqlglot.expressions.not_": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1}, "sqlglot.expressions.subquery": {"tf": 1}}, "df": 44}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dataframe": {"tf": 1}}, "df": 1, "s": {"docs": {"sqlglot.dataframe": {"tf": 2.23606797749979}, "sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 3}}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Select.where": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1}, "sqlglot.expressions.and_": {"tf": 1}, "sqlglot.expressions.or_": {"tf": 1}, "sqlglot.expressions.not_": {"tf": 1}}, "df": 7, "s": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.Expression.unnest_operands": {"tf": 1}}, "df": 1}}}}}, "n": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.executor": {"tf": 1}, "sqlglot.helper.open_file": {"tf": 1}}, "df": 3}}, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}, "y": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}}}}, "r": {"docs": {"sqlglot": {"tf": 3.605551275463989}, "sqlglot.dataframe": {"tf": 2}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.7320508075688772}, "sqlglot.diff": {"tf": 3.7416573867739413}, "sqlglot.executor": {"tf": 2.6457513110645907}, "sqlglot.executor.execute": {"tf": 1}, "sqlglot.executor.context.Context": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1.7320508075688772}, "sqlglot.executor.table.Tables": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.text": {"tf": 1}, "sqlglot.expressions.Expression.alias": {"tf": 1}, "sqlglot.expressions.Expression.append": {"tf": 1}, "sqlglot.expressions.Expression.find": {"tf": 1}, "sqlglot.expressions.Expression.unnest": {"tf": 1}, "sqlglot.expressions.Expression.transform": {"tf": 1}, "sqlglot.expressions.Expression.replace": {"tf": 1}, "sqlglot.expressions.Condition.and_": {"tf": 1}, "sqlglot.expressions.Condition.or_": {"tf": 2.23606797749979}, "sqlglot.expressions.Delete.delete": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1.7320508075688772}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Join.using": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 1}, "sqlglot.expressions.Select.select": {"tf": 1}, "sqlglot.expressions.Select.lateral": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1}, "sqlglot.expressions.Select.where": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.having": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 2.23606797749979}, "sqlglot.expressions.select": {"tf": 1}, "sqlglot.expressions.or_": {"tf": 2.449489742783178}, "sqlglot.expressions.to_identifier": {"tf": 1}, "sqlglot.expressions.to_interval": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1.4142135623730951}, "sqlglot.expressions.column": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1}, "sqlglot.expressions.var": {"tf": 1}, "sqlglot.expressions.table_name": {"tf": 1}, "sqlglot.expressions.expand": {"tf": 1}, "sqlglot.expressions.func": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1.7320508075688772}, "sqlglot.helper.seq_get": {"tf": 1}, "sqlglot.helper.ensure_list": {"tf": 1.7320508075688772}, "sqlglot.helper.ensure_collection": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1}, "sqlglot.helper.should_identify": {"tf": 1}, "sqlglot.lineage.lineage": {"tf": 1}, "sqlglot.optimizer.canonicalize.canonicalize": {"tf": 1}, "sqlglot.optimizer.normalize.normalize": {"tf": 2}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1}, "sqlglot.optimizer.normalize.distributive_law": {"tf": 2.8284271247461903}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1}, "sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 1}, "sqlglot.optimizer.simplify.simplify_not": {"tf": 1.4142135623730951}, "sqlglot.optimizer.simplify.flatten": {"tf": 2}, "sqlglot.optimizer.simplify.remove_compliments": {"tf": 1}, "sqlglot.optimizer.simplify.absorb_and_eliminate": {"tf": 2.8284271247461903}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 1}, "sqlglot.parser.Parser.check_errors": {"tf": 1}, "sqlglot.parser.Parser.raise_error": {"tf": 1}, "sqlglot.schema.Schema.add_table": {"tf": 1.4142135623730951}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1}, "sqlglot.schema.MappingSchema.add_table": {"tf": 1.4142135623730951}, "sqlglot.trie.new_trie": {"tf": 1}, "sqlglot.trie.in_trie": {"tf": 1}}, "df": 87, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot": {"tf": 2.6457513110645907}, "sqlglot.diff": {"tf": 2}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.walk": {"tf": 1}, "sqlglot.expressions.Expression.dfs": {"tf": 1}, "sqlglot.expressions.Expression.bfs": {"tf": 1}, "sqlglot.expressions.Column.parts": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 2.23606797749979}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1}, "sqlglot.expressions.replace_placeholders": {"tf": 1}, "sqlglot.helper.tsort": {"tf": 1.4142135623730951}, "sqlglot.optimizer.optimize_joins.reorder_joins": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 1}, "sqlglot.optimizer.scope.Scope.traverse": {"tf": 1}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1}, "sqlglot.transforms.eliminate_qualify": {"tf": 1}, "sqlglot.transforms.preprocess": {"tf": 1}}, "df": 20, "s": {"docs": {"sqlglot": {"tf": 1.4142135623730951}}, "df": 1}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1.4142135623730951}}, "df": 3}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.executor.python.Python.Generator": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser": {"tf": 1.4142135623730951}}, "df": 40}}}}}}, "g": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "/": {"3": {"docs": {"sqlglot.dataframe.sql.DataFrame.persist": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}}, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "/": {"4": {"3": {"3": {"9": {"2": {"3": {"0": {"docs": {"sqlglot.diff.ChangeDistiller": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}}}}}}}}}}}, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.helper.apply_index_offset": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_dnf": {"tf": 1}, "sqlglot.parser.Parser.parse": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 1}}, "df": 5}}}}}}}, "f": {"docs": {"sqlglot": {"tf": 3}, "sqlglot.parse": {"tf": 1}, "sqlglot.transpile": {"tf": 1.7320508075688772}, "sqlglot.dataframe": {"tf": 3.1622776601683795}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Column.cast": {"tf": 1}, "sqlglot.dialects": {"tf": 1.4142135623730951}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.redshift.Redshift.Generator.with_properties": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 2.23606797749979}, "sqlglot.diff": {"tf": 10.488088481701515}, "sqlglot.diff.diff": {"tf": 2}, "sqlglot.diff.ChangeDistiller": {"tf": 1}, "sqlglot.executor": {"tf": 4.69041575982343}, "sqlglot.executor.execute": {"tf": 1.4142135623730951}, "sqlglot.executor.context.Context": {"tf": 1}, "sqlglot.executor.context.Context.__init__": {"tf": 1.4142135623730951}, "sqlglot.executor.env.null_if_any": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.generate_tuple": {"tf": 1.4142135623730951}, "sqlglot.executor.python.Python.Generator": {"tf": 2.23606797749979}, "sqlglot.expressions": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression": {"tf": 2}, "sqlglot.expressions.Expression.text": {"tf": 1}, "sqlglot.expressions.Expression.alias": {"tf": 1}, "sqlglot.expressions.Expression.output_name": {"tf": 1}, "sqlglot.expressions.Expression.copy": {"tf": 1}, "sqlglot.expressions.Expression.append": {"tf": 1}, "sqlglot.expressions.Expression.set": {"tf": 1}, "sqlglot.expressions.Expression.depth": {"tf": 1}, "sqlglot.expressions.Expression.find": {"tf": 1}, "sqlglot.expressions.Expression.find_all": {"tf": 1}, "sqlglot.expressions.Expression.root": {"tf": 1}, "sqlglot.expressions.Expression.walk": {"tf": 1}, "sqlglot.expressions.Expression.sql": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.assert_is": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.error_messages": {"tf": 1.4142135623730951}, "sqlglot.expressions.Column.output_name": {"tf": 1}, "sqlglot.expressions.Column.parts": {"tf": 1}, "sqlglot.expressions.Identifier.output_name": {"tf": 1}, "sqlglot.expressions.Literal.output_name": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1}, "sqlglot.expressions.Select.ctas": {"tf": 1}, "sqlglot.expressions.Subquery.output_name": {"tf": 1}, "sqlglot.expressions.Star.output_name": {"tf": 1}, "sqlglot.expressions.Dot.build": {"tf": 1}, "sqlglot.expressions.Alias.output_name": {"tf": 1}, "sqlglot.expressions.Cast.output_name": {"tf": 1}, "sqlglot.expressions.select": {"tf": 1}, "sqlglot.expressions.from_": {"tf": 1}, "sqlglot.expressions.update": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1.7320508075688772}, "sqlglot.expressions.var": {"tf": 1}, "sqlglot.expressions.rename_table": {"tf": 1.4142135623730951}, "sqlglot.expressions.replace_children": {"tf": 1.4142135623730951}, "sqlglot.expressions.column_table_names": {"tf": 1}, "sqlglot.expressions.table_name": {"tf": 1}, "sqlglot.expressions.replace_tables": {"tf": 1}, "sqlglot.expressions.expand": {"tf": 1}, "sqlglot.expressions.func": {"tf": 2.23606797749979}, "sqlglot.generator.Generator": {"tf": 2.23606797749979}, "sqlglot.generator.Generator.generate": {"tf": 1}, "sqlglot.helper.AutoName": {"tf": 1}, "sqlglot.helper.seq_get": {"tf": 1}, "sqlglot.helper.ensure_list": {"tf": 1}, "sqlglot.helper.ensure_collection": {"tf": 1}, "sqlglot.helper.csv": {"tf": 1}, "sqlglot.helper.subclasses": {"tf": 2}, "sqlglot.helper.tsort": {"tf": 1}, "sqlglot.helper.find_new_name": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 2}, "sqlglot.helper.flatten": {"tf": 1}, "sqlglot.helper.count_params": {"tf": 1.4142135623730951}, "sqlglot.helper.dict_depth": {"tf": 1}, "sqlglot.lineage.lineage": {"tf": 2}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1.4142135623730951}, "sqlglot.optimizer.canonicalize.canonicalize": {"tf": 1}, "sqlglot.optimizer.eliminate_joins.join_condition": {"tf": 1}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1.7320508075688772}, "sqlglot.optimizer.optimizer.optimize": {"tf": 2.23606797749979}, "sqlglot.optimizer.qualify_columns.Resolver.all_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 3.3166247903554}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1}, "sqlglot.optimizer.scope.Scope.replace": {"tf": 1}, "sqlglot.optimizer.scope.Scope.tables": {"tf": 1}, "sqlglot.optimizer.scope.Scope.ctes": {"tf": 1}, "sqlglot.optimizer.scope.Scope.derived_tables": {"tf": 1}, "sqlglot.optimizer.scope.Scope.udtfs": {"tf": 1}, "sqlglot.optimizer.scope.Scope.subqueries": {"tf": 1}, "sqlglot.optimizer.scope.Scope.columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 1}, "sqlglot.optimizer.scope.Scope.cte_sources": {"tf": 1}, "sqlglot.optimizer.scope.Scope.selects": {"tf": 1}, "sqlglot.optimizer.scope.Scope.source_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.ref_count": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 2.23606797749979}, "sqlglot.parser.Parser.parse": {"tf": 2}, "sqlglot.parser.Parser.parse_into": {"tf": 2}, "sqlglot.parser.Parser.raise_error": {"tf": 1}, "sqlglot.parser.Parser.expression": {"tf": 1}, "sqlglot.parser.Parser.validate_expression": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}, "sqlglot.schema.Schema.add_table": {"tf": 1}, "sqlglot.schema.Schema.column_names": {"tf": 1}, "sqlglot.schema.Schema.get_column_type": {"tf": 1}, "sqlglot.schema.MappingSchema": {"tf": 1.7320508075688772}, "sqlglot.schema.MappingSchema.add_table": {"tf": 1}, "sqlglot.schema.MappingSchema.column_names": {"tf": 1}, "sqlglot.schema.MappingSchema.get_column_type": {"tf": 1}, "sqlglot.time.format_time": {"tf": 1}, "sqlglot.tokens.Tokenizer.tokenize": {"tf": 1}, "sqlglot.transforms.preprocess": {"tf": 1.4142135623730951}, "sqlglot.trie.new_trie": {"tf": 1.7320508075688772}, "sqlglot.trie.in_trie": {"tf": 1}}, "df": 158, "f": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.offset": {"tf": 2.23606797749979}, "sqlglot.expressions.Select.distinct": {"tf": 1}, "sqlglot.helper.apply_index_offset": {"tf": 2.23606797749979}, "sqlglot.parser.Parser": {"tf": 1.4142135623730951}}, "df": 22}}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}, "u": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.diff": {"tf": 2.23606797749979}, "sqlglot.executor": {"tf": 1}, "sqlglot.expressions.Expression.replace": {"tf": 1}, "sqlglot.helper.seq_get": {"tf": 1}, "sqlglot.trie.new_trie": {"tf": 1}}, "df": 5, "p": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.dataframe": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.7320508075688772}, "sqlglot.diff": {"tf": 2.23606797749979}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.executor.python.Python.Generator": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.output_name": {"tf": 2.23606797749979}, "sqlglot.expressions.Expression.sql": {"tf": 1}, "sqlglot.expressions.Column.output_name": {"tf": 2.23606797749979}, "sqlglot.expressions.Identifier.output_name": {"tf": 2.23606797749979}, "sqlglot.expressions.Literal.output_name": {"tf": 2.23606797749979}, "sqlglot.expressions.Subquery.output_name": {"tf": 2.23606797749979}, "sqlglot.expressions.Star.output_name": {"tf": 2.23606797749979}, "sqlglot.expressions.Alias.output_name": {"tf": 2.23606797749979}, "sqlglot.expressions.Cast.output_name": {"tf": 2.23606797749979}, "sqlglot.generator.Generator": {"tf": 1.7320508075688772}}, "df": 34, "s": {"docs": {"sqlglot.optimizer.scope.Scope.selects": {"tf": 1}}, "df": 1}}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.Select.lateral": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.join": {"tf": 1.4142135623730951}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1.4142135623730951}, "sqlglot.optimizer.optimize_joins.normalize": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.Scope.external_columns": {"tf": 1}, "sqlglot.transforms.eliminate_qualify": {"tf": 1.4142135623730951}}, "df": 7}}}, "r": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.diff": {"tf": 2.449489742783178}, "sqlglot.executor": {"tf": 1}}, "df": 3}}, "n": {"docs": {"sqlglot": {"tf": 2.8284271247461903}, "sqlglot.dataframe": {"tf": 1.7320508075688772}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.diff": {"tf": 4.795831523312719}, "sqlglot.diff.ChangeDistiller": {"tf": 1}, "sqlglot.errors.ErrorLevel.IMMEDIATE": {"tf": 1}, "sqlglot.executor": {"tf": 3}, "sqlglot.executor.context.Context": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.expressions.Delete.delete": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.join": {"tf": 2.449489742783178}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.generator.Generator.generate": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1.4142135623730951}, "sqlglot.optimizer.canonicalize.canonicalize": {"tf": 1.4142135623730951}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 1}, "sqlglot.optimizer.optimize_joins.optimize_joins": {"tf": 2}, "sqlglot.optimizer.optimize_joins.reorder_joins": {"tf": 1}, "sqlglot.optimizer.simplify.rewrite_between": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 1}, "sqlglot.parser.Parser.check_errors": {"tf": 1}, "sqlglot.parser.Parser.raise_error": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1.4142135623730951}, "sqlglot.planner.Scan.from_expression": {"tf": 1.4142135623730951}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1.4142135623730951}, "sqlglot.schema.MappingSchema": {"tf": 1}, "sqlglot.transforms.eliminate_distinct_on": {"tf": 1.4142135623730951}}, "df": 46, "e": {"docs": {"sqlglot": {"tf": 4.242640687119285}, "sqlglot.parse": {"tf": 1}, "sqlglot.dataframe": {"tf": 1}, "sqlglot.diff": {"tf": 3.3166247903554}, "sqlglot.diff.diff": {"tf": 1.7320508075688772}, "sqlglot.executor": {"tf": 1}, "sqlglot.executor.execute": {"tf": 1}, "sqlglot.executor.table.Tables": {"tf": 1}, "sqlglot.expressions.Expression.output_name": {"tf": 2}, "sqlglot.expressions.Expression.find": {"tf": 1}, "sqlglot.expressions.Expression.find_all": {"tf": 1}, "sqlglot.expressions.Expression.assert_is": {"tf": 1}, "sqlglot.expressions.Condition.and_": {"tf": 1}, "sqlglot.expressions.Condition.or_": {"tf": 1}, "sqlglot.expressions.Unionable.union": {"tf": 1}, "sqlglot.expressions.Unionable.intersect": {"tf": 1}, "sqlglot.expressions.Unionable.except_": {"tf": 1}, "sqlglot.expressions.Column.output_name": {"tf": 2}, "sqlglot.expressions.Identifier.output_name": {"tf": 2}, "sqlglot.expressions.Literal.output_name": {"tf": 2}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Join.using": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.Subquery.output_name": {"tf": 2}, "sqlglot.expressions.Star.output_name": {"tf": 2}, "sqlglot.expressions.Alias.output_name": {"tf": 2}, "sqlglot.expressions.Cast.output_name": {"tf": 2}, "sqlglot.expressions.union": {"tf": 1}, "sqlglot.expressions.intersect": {"tf": 1}, "sqlglot.expressions.except_": {"tf": 1}, "sqlglot.expressions.select": {"tf": 1}, "sqlglot.expressions.column_table_names": {"tf": 1}, "sqlglot.expressions.table_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.replace_tables": {"tf": 1.4142135623730951}, "sqlglot.expressions.replace_placeholders": {"tf": 1.4142135623730951}, "sqlglot.expressions.expand": {"tf": 1.7320508075688772}, "sqlglot.helper.ensure_list": {"tf": 1}, "sqlglot.helper.apply_index_offset": {"tf": 1}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}, "sqlglot.optimizer.eliminate_ctes.eliminate_ctes": {"tf": 1}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 1}, "sqlglot.optimizer.eliminate_subqueries.eliminate_subqueries": {"tf": 1.4142135623730951}, "sqlglot.optimizer.expand_laterals.expand_laterals": {"tf": 1}, "sqlglot.optimizer.expand_multi_table_selects.expand_multi_table_selects": {"tf": 1.4142135623730951}, "sqlglot.optimizer.lower_identities.lower_identities": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1.4142135623730951}, "sqlglot.optimizer.normalize.normalize": {"tf": 1}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1}, "sqlglot.optimizer.optimize_joins.optimize_joins": {"tf": 1.4142135623730951}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_predicates": {"tf": 1}, "sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 1}, "sqlglot.optimizer.qualify_columns.qualify_columns": {"tf": 1}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}, "sqlglot.optimizer.simplify.simplify": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 1}, "sqlglot.parser.Parser.parse": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1}, "sqlglot.schema.MappingSchema": {"tf": 1}, "sqlglot.transforms.unalias_group": {"tf": 1}}, "df": 64, "s": {"docs": {"sqlglot.diff": {"tf": 2}, "sqlglot.expressions.Expression.transform": {"tf": 1}}, "df": 2}}, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.dataframe.sql.Column.cast": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 2}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 2}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 2}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 2}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 2}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 2}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 2}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 2}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 2}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 2}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 2}, "sqlglot.dialects.redshift.Redshift.Generator.renametable_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 2}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 2}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 2}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 2}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 2}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 2}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 2}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 2}, "sqlglot.diff": {"tf": 2.449489742783178}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.executor.python.Python.Generator": {"tf": 2}, "sqlglot.expressions.Expression.text": {"tf": 1}, "sqlglot.expressions.Expression.find_all": {"tf": 1}, "sqlglot.expressions.Unionable.union": {"tf": 1}, "sqlglot.expressions.Unionable.intersect": {"tf": 1}, "sqlglot.expressions.Unionable.except_": {"tf": 1}, "sqlglot.expressions.union": {"tf": 1}, "sqlglot.expressions.intersect": {"tf": 1}, "sqlglot.expressions.except_": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 2}, "sqlglot.generator.Generator.generate": {"tf": 1}, "sqlglot.lineage.lineage": {"tf": 1}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_dnf": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1}, "sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 1}, "sqlglot.optimizer.simplify.rewrite_between": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1}, "sqlglot.schema.Schema.column_names": {"tf": 1}, "sqlglot.schema.MappingSchema.add_table": {"tf": 1}, "sqlglot.schema.MappingSchema.column_names": {"tf": 1}, "sqlglot.transforms.remove_precision_parameterized_types": {"tf": 1}}, "df": 65}}, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 2}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1}}, "df": 3}}, "t": {"docs": {}, "df": 0, "o": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}, "b": {"docs": {}, "df": 0, "j": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.find_all": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.walk": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.dfs": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.bfs": {"tf": 1.4142135623730951}, "sqlglot.expressions.Dot.build": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1}, "sqlglot.expressions.convert": {"tf": 1.7320508075688772}, "sqlglot.helper.object_to_dict": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1}}, "df": 12, "s": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.diff.diff": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1}, "sqlglot.expressions.update": {"tf": 1}, "sqlglot.helper.flatten": {"tf": 1}}, "df": 6}}}}}, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.parse": {"tf": 1}, "sqlglot.parse_one": {"tf": 1}, "sqlglot.transpile": {"tf": 1}, "sqlglot.dataframe": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1}, "sqlglot.expressions.Expression.sql": {"tf": 1}, "sqlglot.expressions.Condition.and_": {"tf": 1}, "sqlglot.expressions.Condition.or_": {"tf": 1}, "sqlglot.expressions.Unionable.union": {"tf": 1}, "sqlglot.expressions.Unionable.intersect": {"tf": 1}, "sqlglot.expressions.Unionable.except_": {"tf": 1}, "sqlglot.expressions.Delete.delete": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Delete.returning": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Join.using": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1}, "sqlglot.expressions.Union.limit": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.expressions.Select.limit": {"tf": 1}, "sqlglot.expressions.Select.offset": {"tf": 1}, "sqlglot.expressions.Select.select": {"tf": 1}, "sqlglot.expressions.Select.lateral": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1}, "sqlglot.expressions.Select.where": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1}, "sqlglot.expressions.Select.ctas": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1}, "sqlglot.expressions.union": {"tf": 1}, "sqlglot.expressions.intersect": {"tf": 1}, "sqlglot.expressions.except_": {"tf": 1}, "sqlglot.expressions.select": {"tf": 1}, "sqlglot.expressions.from_": {"tf": 1}, "sqlglot.expressions.update": {"tf": 1}, "sqlglot.expressions.delete": {"tf": 1}, "sqlglot.expressions.condition": {"tf": 1}, "sqlglot.expressions.and_": {"tf": 1}, "sqlglot.expressions.or_": {"tf": 1}, "sqlglot.expressions.not_": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1}, "sqlglot.expressions.subquery": {"tf": 1}, "sqlglot.transforms.remove_precision_parameterized_types": {"tf": 1}}, "df": 48, "w": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Expression.walk": {"tf": 1}, "sqlglot.expressions.Expression.transform": {"tf": 1}, "sqlglot.expressions.Expression.assert_is": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Join.using": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.expressions.Select.select": {"tf": 1}, "sqlglot.expressions.Select.lateral": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1}, "sqlglot.expressions.Select.where": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1}, "sqlglot.helper.ensure_list": {"tf": 1}, "sqlglot.helper.ensure_collection": {"tf": 1}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1}, "sqlglot.transforms.eliminate_qualify": {"tf": 1}}, "df": 22}}}}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1.7320508075688772}}, "df": 5, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 2}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}}, "df": 1, "p": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}, "s": {"docs": {"sqlglot.dataframe": {"tf": 2}}, "df": 1}, "w": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dialects": {"tf": 1}, "sqlglot.executor": {"tf": 1.4142135623730951}}, "df": 2}}, "l": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.rename_table": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.replace": {"tf": 1.7320508075688772}}, "df": 2}}}, "e": {"docs": {"sqlglot": {"tf": 2}, "sqlglot.schema": {"tf": 1}, "sqlglot.dialects": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 3.1622776601683795}, "sqlglot.executor": {"tf": 1}, "sqlglot.executor.env.null_if_any": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.expressions.Expression.error_messages": {"tf": 1}, "sqlglot.expressions.column_table_names": {"tf": 1}, "sqlglot.schema.Schema.supported_table_args": {"tf": 1}}, "df": 10, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 2}, "sqlglot.dataframe": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 4}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}}, "df": 6, "s": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.dialects": {"tf": 1}, "sqlglot.executor": {"tf": 2}}, "df": 3}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}}}, "d": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.7320508075688772}, "sqlglot.diff": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator": {"tf": 1.7320508075688772}, "sqlglot.helper.split_num_words": {"tf": 1}}, "df": 24, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.executor.python.Python.Generator": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator": {"tf": 1.4142135623730951}}, "df": 21}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.executor": {"tf": 1.4142135623730951}}, "df": 1}}}, "v": {"docs": {"sqlglot.executor.context.Context.__init__": {"tf": 1}}, "df": 1, "i": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dataframe": {"tf": 1.7320508075688772}}, "df": 1}}}}}, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dialects": {"tf": 1}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}}}}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}}, "df": 21}}}}}}}, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.Expression": {"tf": 1}}, "df": 1}}}}}}}}}}, "u": {"docs": {}, "df": 0, "m": {"docs": {"sqlglot.helper.AutoName": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dialects.dialect.Dialects": {"tf": 1}, "sqlglot.errors.ErrorLevel": {"tf": 1}, "sqlglot.expressions.Properties.Location": {"tf": 1}, "sqlglot.expressions.DataType.Type": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType": {"tf": 1}, "sqlglot.tokens.TokenType": {"tf": 1}}, "df": 6}}}}}}}}}, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.executor": {"tf": 1}, "sqlglot.optimizer.scope.Scope.replace": {"tf": 1}}, "df": 2, "s": {"docs": {"sqlglot.helper.ensure_list": {"tf": 1}, "sqlglot.helper.ensure_collection": {"tf": 1}}, "df": 2}}}}}, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Expression": {"tf": 1}}, "df": 1}}}}}, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot": {"tf": 1.7320508075688772}, "sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver": {"tf": 1}}, "df": 4}}, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.executor": {"tf": 1.7320508075688772}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}}, "df": 4}}}, "y": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 2}, "e": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}, "c": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.transpile": {"tf": 1}, "sqlglot.dialects": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 2.449489742783178}, "sqlglot.diff.diff": {"tf": 1}, "sqlglot.executor": {"tf": 2.8284271247461903}, "sqlglot.expressions.Expression": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.transform": {"tf": 1}, "sqlglot.expressions.column": {"tf": 1}, "sqlglot.generator.Generator.generate": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_cnf": {"tf": 1}, "sqlglot.optimizer.scope.Scope.ref_count": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 1}}, "df": 13}}, "r": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 2}}}}, "x": {"docs": {"sqlglot.dataframe": {"tf": 2.23606797749979}}, "df": 1, "p": {"docs": {"sqlglot": {"tf": 4.123105625617661}, "sqlglot.dialects": {"tf": 3.3166247903554}, "sqlglot.dialects.dialect.format_time_lambda": {"tf": 1}, "sqlglot.expressions.replace_children": {"tf": 1}, "sqlglot.expressions.table_name": {"tf": 1.7320508075688772}, "sqlglot.expressions.replace_tables": {"tf": 1}, "sqlglot.expressions.replace_placeholders": {"tf": 1.7320508075688772}, "sqlglot.optimizer.eliminate_joins.join_condition": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1}, "sqlglot.optimizer.scope.Scope.replace": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}, "sqlglot.optimizer.scope.build_scope": {"tf": 1}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1}, "sqlglot.parser.Parser.expression": {"tf": 1}, "sqlglot.schema.Schema.get_column_type": {"tf": 1}, "sqlglot.schema.MappingSchema.get_column_type": {"tf": 1}}, "df": 19, "r": {"docs": {"sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1.4142135623730951}}, "df": 1, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot": {"tf": 3.4641016151377544}, "sqlglot.parse_one": {"tf": 1}, "sqlglot.dialects": {"tf": 1}, "sqlglot.dialects.dialect.format_time_lambda": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 2.23606797749979}, "sqlglot.diff.diff": {"tf": 2.6457513110645907}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.executor.python.PythonExecutor.generate": {"tf": 1}, "sqlglot.expressions": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression": {"tf": 3.7416573867739413}, "sqlglot.expressions.Expression.expression": {"tf": 1}, "sqlglot.expressions.Expression.text": {"tf": 1}, "sqlglot.expressions.Expression.is_string": {"tf": 1}, "sqlglot.expressions.Expression.is_number": {"tf": 1}, "sqlglot.expressions.Expression.is_int": {"tf": 1}, "sqlglot.expressions.Expression.is_star": {"tf": 1}, "sqlglot.expressions.Expression.alias": {"tf": 1}, "sqlglot.expressions.Expression.output_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.copy": {"tf": 1}, "sqlglot.expressions.Expression.append": {"tf": 1}, "sqlglot.expressions.Expression.set": {"tf": 1}, "sqlglot.expressions.Expression.iter_expressions": {"tf": 1}, "sqlglot.expressions.Expression.find": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.find_all": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.find_ancestor": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.root": {"tf": 1}, "sqlglot.expressions.Expression.unalias": {"tf": 1}, "sqlglot.expressions.Expression.replace": {"tf": 2}, "sqlglot.expressions.Expression.pop": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.assert_is": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.error_messages": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.dump": {"tf": 1}, "sqlglot.expressions.Expression.load": {"tf": 1.4142135623730951}, "sqlglot.expressions.Condition.and_": {"tf": 1.7320508075688772}, "sqlglot.expressions.Condition.or_": {"tf": 1.7320508075688772}, "sqlglot.expressions.Unionable.union": {"tf": 2.449489742783178}, "sqlglot.expressions.Unionable.intersect": {"tf": 2.449489742783178}, "sqlglot.expressions.Unionable.except_": {"tf": 2.449489742783178}, "sqlglot.expressions.Column.output_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.Column.to_dot": {"tf": 1}, "sqlglot.expressions.Delete.delete": {"tf": 2.23606797749979}, "sqlglot.expressions.Delete.where": {"tf": 2.23606797749979}, "sqlglot.expressions.Delete.returning": {"tf": 2.23606797749979}, "sqlglot.expressions.Identifier.output_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.Literal.output_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.Join.on": {"tf": 2.449489742783178}, "sqlglot.expressions.Join.using": {"tf": 2.23606797749979}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 1.7320508075688772}, "sqlglot.expressions.Subqueryable.with_": {"tf": 3}, "sqlglot.expressions.Union.limit": {"tf": 2.449489742783178}, "sqlglot.expressions.Union.select": {"tf": 1.7320508075688772}, "sqlglot.expressions.Union.is_star": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 2.8284271247461903}, "sqlglot.expressions.Select.group_by": {"tf": 3}, "sqlglot.expressions.Select.order_by": {"tf": 2.8284271247461903}, "sqlglot.expressions.Select.sort_by": {"tf": 2.8284271247461903}, "sqlglot.expressions.Select.cluster_by": {"tf": 2.8284271247461903}, "sqlglot.expressions.Select.limit": {"tf": 2.6457513110645907}, "sqlglot.expressions.Select.offset": {"tf": 2.6457513110645907}, "sqlglot.expressions.Select.select": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.lateral": {"tf": 2}, "sqlglot.expressions.Select.join": {"tf": 3}, "sqlglot.expressions.Select.where": {"tf": 2.449489742783178}, "sqlglot.expressions.Select.having": {"tf": 2.449489742783178}, "sqlglot.expressions.Select.distinct": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.ctas": {"tf": 2.23606797749979}, "sqlglot.expressions.Select.lock": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.is_star": {"tf": 1}, "sqlglot.expressions.Subquery.is_star": {"tf": 1}, "sqlglot.expressions.Subquery.output_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.Star.output_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.Alias.output_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.Func": {"tf": 1.4142135623730951}, "sqlglot.expressions.Cast.output_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.maybe_parse": {"tf": 3}, "sqlglot.expressions.union": {"tf": 2.6457513110645907}, "sqlglot.expressions.intersect": {"tf": 2.6457513110645907}, "sqlglot.expressions.except_": {"tf": 2.449489742783178}, "sqlglot.expressions.select": {"tf": 1.7320508075688772}, "sqlglot.expressions.from_": {"tf": 2.449489742783178}, "sqlglot.expressions.condition": {"tf": 2.8284271247461903}, "sqlglot.expressions.and_": {"tf": 1.7320508075688772}, "sqlglot.expressions.or_": {"tf": 1.7320508075688772}, "sqlglot.expressions.not_": {"tf": 2}, "sqlglot.expressions.to_interval": {"tf": 1}, "sqlglot.expressions.to_table": {"tf": 1.4142135623730951}, "sqlglot.expressions.to_column": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 2.23606797749979}, "sqlglot.expressions.subquery": {"tf": 2.6457513110645907}, "sqlglot.expressions.cast": {"tf": 1.7320508075688772}, "sqlglot.expressions.table_": {"tf": 1.7320508075688772}, "sqlglot.expressions.values": {"tf": 1}, "sqlglot.expressions.var": {"tf": 1}, "sqlglot.expressions.rename_table": {"tf": 1.4142135623730951}, "sqlglot.expressions.convert": {"tf": 1.7320508075688772}, "sqlglot.expressions.replace_children": {"tf": 1}, "sqlglot.expressions.column_table_names": {"tf": 2}, "sqlglot.expressions.table_name": {"tf": 1}, "sqlglot.expressions.replace_tables": {"tf": 2.23606797749979}, "sqlglot.expressions.replace_placeholders": {"tf": 2.23606797749979}, "sqlglot.expressions.expand": {"tf": 2.23606797749979}, "sqlglot.expressions.func": {"tf": 1}, "sqlglot.expressions.true": {"tf": 1}, "sqlglot.expressions.false": {"tf": 1}, "sqlglot.expressions.null": {"tf": 1}, "sqlglot.generator.Generator.generate": {"tf": 1.4142135623730951}, "sqlglot.helper.apply_index_offset": {"tf": 1.7320508075688772}, "sqlglot.helper.while_changing": {"tf": 2}, "sqlglot.helper.csv_reader": {"tf": 1}, "sqlglot.lineage.lineage": {"tf": 1}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 2.8284271247461903}, "sqlglot.optimizer.canonicalize.canonicalize": {"tf": 1.7320508075688772}, "sqlglot.optimizer.eliminate_ctes.eliminate_ctes": {"tf": 2.8284271247461903}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 2.8284271247461903}, "sqlglot.optimizer.eliminate_joins.join_condition": {"tf": 1.4142135623730951}, "sqlglot.optimizer.eliminate_subqueries.eliminate_subqueries": {"tf": 3}, "sqlglot.optimizer.expand_laterals.expand_laterals": {"tf": 2.23606797749979}, "sqlglot.optimizer.lower_identities.lower_identities": {"tf": 2.6457513110645907}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 3}, "sqlglot.optimizer.normalize.normalize": {"tf": 2.449489742783178}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 2.449489742783178}, "sqlglot.optimizer.optimizer.optimize": {"tf": 2}, "sqlglot.optimizer.pushdown_predicates.pushdown_predicates": {"tf": 2.6457513110645907}, "sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 2.6457513110645907}, "sqlglot.optimizer.qualify_columns.qualify_columns": {"tf": 2.6457513110645907}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"tf": 2.6457513110645907}, "sqlglot.optimizer.scope.Scope": {"tf": 2}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 2}, "sqlglot.optimizer.scope.Scope.replace": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.Scope.selects": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.is_cte": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 3}, "sqlglot.optimizer.scope.build_scope": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 2}, "sqlglot.optimizer.simplify.simplify": {"tf": 2.6457513110645907}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 2.6457513110645907}, "sqlglot.parser.Parser.parse_into": {"tf": 2.23606797749979}, "sqlglot.parser.Parser.expression": {"tf": 2.23606797749979}, "sqlglot.parser.Parser.validate_expression": {"tf": 2}, "sqlglot.planner.Step.from_expression": {"tf": 2.6457513110645907}, "sqlglot.planner.Scan.from_expression": {"tf": 2.6457513110645907}, "sqlglot.planner.SetOperation.from_expression": {"tf": 2.6457513110645907}, "sqlglot.schema.Schema.add_table": {"tf": 1}, "sqlglot.schema.Schema.column_names": {"tf": 1}, "sqlglot.schema.MappingSchema.add_table": {"tf": 1}, "sqlglot.schema.MappingSchema.column_names": {"tf": 1}, "sqlglot.transforms.unalias_group": {"tf": 1.7320508075688772}, "sqlglot.transforms.eliminate_distinct_on": {"tf": 1.7320508075688772}, "sqlglot.transforms.preprocess": {"tf": 1.4142135623730951}}, "df": 152, "s": {"docs": {"sqlglot": {"tf": 2.6457513110645907}, "sqlglot.dialects": {"tf": 1.4142135623730951}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.dialect.format_time_lambda": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.diff.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.executor.context.Context": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.generate_tuple": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.expressions": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression": {"tf": 2.23606797749979}, "sqlglot.expressions.Expression.expressions": {"tf": 1}, "sqlglot.expressions.Expression.output_name": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.replace": {"tf": 1}, "sqlglot.expressions.Expression.assert_is": {"tf": 1}, "sqlglot.expressions.Condition.and_": {"tf": 1.7320508075688772}, "sqlglot.expressions.Condition.or_": {"tf": 1.7320508075688772}, "sqlglot.expressions.Unionable.union": {"tf": 1}, "sqlglot.expressions.Unionable.intersect": {"tf": 1}, "sqlglot.expressions.Unionable.except_": {"tf": 1}, "sqlglot.expressions.Column.output_name": {"tf": 1.7320508075688772}, "sqlglot.expressions.Delete.delete": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 2.449489742783178}, "sqlglot.expressions.Delete.returning": {"tf": 1.4142135623730951}, "sqlglot.expressions.Identifier.output_name": {"tf": 1.7320508075688772}, "sqlglot.expressions.Literal.output_name": {"tf": 1.7320508075688772}, "sqlglot.expressions.Join.on": {"tf": 2.449489742783178}, "sqlglot.expressions.Join.using": {"tf": 2.23606797749979}, "sqlglot.expressions.Subqueryable.with_": {"tf": 2}, "sqlglot.expressions.Union.limit": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 2.23606797749979}, "sqlglot.expressions.Select.from_": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.group_by": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.order_by": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.sort_by": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.cluster_by": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.limit": {"tf": 1}, "sqlglot.expressions.Select.offset": {"tf": 1}, "sqlglot.expressions.Select.select": {"tf": 2.449489742783178}, "sqlglot.expressions.Select.lateral": {"tf": 2.449489742783178}, "sqlglot.expressions.Select.join": {"tf": 2.23606797749979}, "sqlglot.expressions.Select.where": {"tf": 2.449489742783178}, "sqlglot.expressions.Select.having": {"tf": 2.449489742783178}, "sqlglot.expressions.Subquery.output_name": {"tf": 1.7320508075688772}, "sqlglot.expressions.Star.output_name": {"tf": 1.7320508075688772}, "sqlglot.expressions.Dot.build": {"tf": 1}, "sqlglot.expressions.Alias.output_name": {"tf": 1.7320508075688772}, "sqlglot.expressions.Func": {"tf": 1}, "sqlglot.expressions.Cast.output_name": {"tf": 1.7320508075688772}, "sqlglot.expressions.maybe_parse": {"tf": 1.4142135623730951}, "sqlglot.expressions.union": {"tf": 1}, "sqlglot.expressions.intersect": {"tf": 1}, "sqlglot.expressions.except_": {"tf": 1}, "sqlglot.expressions.select": {"tf": 2.23606797749979}, "sqlglot.expressions.from_": {"tf": 1.7320508075688772}, "sqlglot.expressions.update": {"tf": 1.4142135623730951}, "sqlglot.expressions.delete": {"tf": 1.4142135623730951}, "sqlglot.expressions.condition": {"tf": 1}, "sqlglot.expressions.and_": {"tf": 1.4142135623730951}, "sqlglot.expressions.or_": {"tf": 1.4142135623730951}, "sqlglot.expressions.not_": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1}, "sqlglot.expressions.subquery": {"tf": 1}, "sqlglot.expressions.func": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.helper.apply_index_offset": {"tf": 1.7320508075688772}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}, "sqlglot.optimizer.expand_multi_table_selects.expand_multi_table_selects": {"tf": 1}, "sqlglot.optimizer.scope.Scope.selects": {"tf": 1.7320508075688772}, "sqlglot.optimizer.simplify.simplify": {"tf": 1}, "sqlglot.transforms.remove_precision_parameterized_types": {"tf": 1.4142135623730951}}, "df": 90}, "|": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Expression.replace": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 2}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.expressions.Expression.iter_expressions": {"tf": 1}}, "df": 1}}}, "e": {"docs": {"sqlglot.expressions.Select.lateral": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope": {"tf": 1.4142135623730951}}, "df": 2}}}, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1}}, "df": 40}}}}}}}, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot": {"tf": 1.4142135623730951}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.values": {"tf": 1}, "sqlglot.helper.count_params": {"tf": 1}}, "df": 2}}}}, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1}}, "df": 2}}}}, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.executor": {"tf": 1}, "sqlglot.expressions.expand": {"tf": 1.4142135623730951}, "sqlglot.optimizer.expand_laterals.expand_laterals": {"tf": 1.4142135623730951}, "sqlglot.optimizer.expand_multi_table_selects.expand_multi_table_selects": {"tf": 1}}, "df": 4, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.expressions.expand": {"tf": 1}}, "df": 1}}}}}}, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions": {"tf": 1}}, "df": 1}}}, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.optimizer.normalize.normalization_distance": {"tf": 1}}, "df": 1}}}}}}}}}, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 2}, "sqlglot.dataframe": {"tf": 1.4142135623730951}, "sqlglot.dialects": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 2.23606797749979}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.executor.table.Tables": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.expressions.Expression.output_name": {"tf": 1}, "sqlglot.expressions.Expression.replace": {"tf": 1}, "sqlglot.expressions.Condition.and_": {"tf": 1}, "sqlglot.expressions.Condition.or_": {"tf": 1}, "sqlglot.expressions.Condition.not_": {"tf": 1}, "sqlglot.expressions.Unionable.union": {"tf": 1}, "sqlglot.expressions.Unionable.intersect": {"tf": 1}, "sqlglot.expressions.Unionable.except_": {"tf": 1}, "sqlglot.expressions.Column.output_name": {"tf": 1}, "sqlglot.expressions.Delete.delete": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Delete.returning": {"tf": 1}, "sqlglot.expressions.Identifier.output_name": {"tf": 1}, "sqlglot.expressions.Literal.output_name": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Join.using": {"tf": 1}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1}, "sqlglot.expressions.Union.limit": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.expressions.Select.limit": {"tf": 1}, "sqlglot.expressions.Select.offset": {"tf": 1}, "sqlglot.expressions.Select.select": {"tf": 1}, "sqlglot.expressions.Select.lateral": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1}, "sqlglot.expressions.Select.where": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1}, "sqlglot.expressions.Select.distinct": {"tf": 1}, "sqlglot.expressions.Select.ctas": {"tf": 1}, "sqlglot.expressions.Subquery.output_name": {"tf": 1}, "sqlglot.expressions.Star.output_name": {"tf": 1}, "sqlglot.expressions.Alias.output_name": {"tf": 1}, "sqlglot.expressions.Cast.output_name": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1}, "sqlglot.expressions.union": {"tf": 1}, "sqlglot.expressions.intersect": {"tf": 1}, "sqlglot.expressions.except_": {"tf": 1}, "sqlglot.expressions.select": {"tf": 1}, "sqlglot.expressions.from_": {"tf": 1}, "sqlglot.expressions.update": {"tf": 1}, "sqlglot.expressions.delete": {"tf": 1}, "sqlglot.expressions.condition": {"tf": 1}, "sqlglot.expressions.and_": {"tf": 1}, "sqlglot.expressions.or_": {"tf": 1}, "sqlglot.expressions.not_": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1}, "sqlglot.expressions.subquery": {"tf": 1}, "sqlglot.expressions.cast": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1}, "sqlglot.expressions.var": {"tf": 1}, "sqlglot.expressions.column_table_names": {"tf": 1}, "sqlglot.helper.dict_depth": {"tf": 1}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}, "sqlglot.optimizer.eliminate_ctes.eliminate_ctes": {"tf": 1}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 1}, "sqlglot.optimizer.eliminate_subqueries.eliminate_subqueries": {"tf": 1}, "sqlglot.optimizer.expand_laterals.expand_laterals": {"tf": 1}, "sqlglot.optimizer.expand_multi_table_selects.expand_multi_table_selects": {"tf": 1}, "sqlglot.optimizer.lower_identities.lower_identities": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1}, "sqlglot.optimizer.normalize.normalize": {"tf": 1}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1}, "sqlglot.optimizer.optimize_joins.optimize_joins": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_predicates": {"tf": 1}, "sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 1}, "sqlglot.optimizer.qualify_columns.qualify_columns": {"tf": 1}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.Scope.derived_tables": {"tf": 1}, "sqlglot.optimizer.scope.Scope.subqueries": {"tf": 1}, "sqlglot.optimizer.scope.Scope.selects": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}, "sqlglot.optimizer.simplify.simplify": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1}, "sqlglot.transforms.unalias_group": {"tf": 1}, "sqlglot.trie.new_trie": {"tf": 1}}, "df": 92, "s": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.dataframe": {"tf": 1.4142135623730951}, "sqlglot.diff.diff": {"tf": 1}, "sqlglot.expressions.Expression.assert_is": {"tf": 1}, "sqlglot.expressions.Select.lock": {"tf": 1}, "sqlglot.expressions.table_name": {"tf": 1}, "sqlglot.expressions.replace_tables": {"tf": 1}, "sqlglot.expressions.replace_placeholders": {"tf": 1}, "sqlglot.expressions.expand": {"tf": 1}, "sqlglot.expressions.func": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1}, "sqlglot.helper.is_iterable": {"tf": 1}, "sqlglot.helper.flatten": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}, "sqlglot.time.format_time": {"tf": 1}, "sqlglot.trie.in_trie": {"tf": 1}}, "df": 16}}}}}, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot": {"tf": 1.7320508075688772}, "sqlglot.executor": {"tf": 2.8284271247461903}, "sqlglot.executor.context.Context": {"tf": 1}, "sqlglot.executor.context.Context.__init__": {"tf": 1.4142135623730951}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}}, "df": 7}}, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.dataframe": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1.4142135623730951}}, "df": 2}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}, "e": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.dataframe": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}}, "df": 6, "s": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}, "d": {"docs": {"sqlglot.executor": {"tf": 1}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}}, "df": 2}}}}}}, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.executor.table.Tables": {"tf": 1}, "sqlglot.expressions.Unionable.except_": {"tf": 2.23606797749979}, "sqlglot.expressions.except_": {"tf": 2.23606797749979}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1}}, "df": 5, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.errors.ErrorLevel.RAISE": {"tf": 1}, "sqlglot.errors.ErrorLevel.IMMEDIATE": {"tf": 1}}, "df": 4, "s": {"docs": {"sqlglot.errors.SqlglotError": {"tf": 1}, "sqlglot.errors.UnsupportedError": {"tf": 1}, "sqlglot.errors.ParseError": {"tf": 1}, "sqlglot.errors.TokenError": {"tf": 1}, "sqlglot.errors.OptimizeError": {"tf": 1}, "sqlglot.errors.SchemaError": {"tf": 1}, "sqlglot.errors.ExecuteError": {"tf": 1}}, "df": 7}}}}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.expressions.Expression.error_messages": {"tf": 1}}, "df": 2}}}, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.helper.subclasses": {"tf": 1.4142135623730951}}, "df": 2}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.expressions.Expression.transform": {"tf": 1}, "sqlglot.helper.ensure_collection": {"tf": 1}, "sqlglot.helper.subclasses": {"tf": 1}, "sqlglot.helper.is_iterable": {"tf": 1}}, "df": 4}}}}, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.expressions.func": {"tf": 1}}, "df": 2}}}}}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.diff": {"tf": 1}}, "df": 2, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dataframe": {"tf": 1.4142135623730951}}, "df": 1}}, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.dataframe": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}}}, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects": {"tf": 1}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1}}, "df": 1}}, "v": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.dialects": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1.4142135623730951}}, "df": 2}}}}}, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.optimizer.eliminate_joins.join_condition": {"tf": 1}}, "df": 1, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}}, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.executor": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1}, "sqlglot.optimizer.scope.Scope.join_hints": {"tf": 1}}, "df": 3, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.diff.Remove": {"tf": 1}, "sqlglot.diff.Move": {"tf": 1}, "sqlglot.diff.Update": {"tf": 1}, "sqlglot.diff.Keep": {"tf": 1}, "sqlglot.expressions.Delete.delete": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Join.using": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.expressions.Select.select": {"tf": 1}, "sqlglot.expressions.Select.lateral": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1}, "sqlglot.expressions.Select.where": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1}, "sqlglot.expressions.func": {"tf": 1}, "sqlglot.transforms.delegate": {"tf": 1}}, "df": 22}}}}}, "t": {"docs": {"sqlglot.errors.SqlglotError": {"tf": 1}, "sqlglot.errors.UnsupportedError": {"tf": 1}, "sqlglot.errors.ParseError": {"tf": 1}, "sqlglot.errors.TokenError": {"tf": 1}, "sqlglot.errors.OptimizeError": {"tf": 1}, "sqlglot.errors.SchemaError": {"tf": 1}, "sqlglot.errors.ExecuteError": {"tf": 1}}, "df": 7}}}, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.transpile": {"tf": 1.4142135623730951}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 2.449489742783178}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 2.449489742783178}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 2.449489742783178}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 2.449489742783178}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 2.449489742783178}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 2.449489742783178}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 2.449489742783178}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 2.449489742783178}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 2.449489742783178}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 2.449489742783178}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 2.449489742783178}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 2.449489742783178}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 2.449489742783178}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 2.449489742783178}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 2.449489742783178}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 2.449489742783178}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 2.449489742783178}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 2.449489742783178}, "sqlglot.errors.ErrorLevel.IMMEDIATE": {"tf": 1}, "sqlglot.executor": {"tf": 1}, "sqlglot.expressions.Expression.assert_is": {"tf": 1}, "sqlglot.expressions.Expression.error_messages": {"tf": 1}, "sqlglot.expressions.convert": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 2.449489742783178}, "sqlglot.parser.Parser.check_errors": {"tf": 1}, "sqlglot.parser.Parser.raise_error": {"tf": 1.4142135623730951}}, "df": 28, "s": {"docs": {"sqlglot": {"tf": 3.1622776601683795}, "sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.errors.ErrorLevel.IGNORE": {"tf": 1}, "sqlglot.errors.ErrorLevel.WARN": {"tf": 1}, "sqlglot.errors.ErrorLevel.RAISE": {"tf": 1}, "sqlglot.expressions.Expression.error_messages": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1}, "sqlglot.parser.Parser.check_errors": {"tf": 1}, "sqlglot.parser.Parser.raise_error": {"tf": 1}}, "df": 28}, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.7320508075688772}, "sqlglot.executor.python.Python.Generator": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator": {"tf": 1.7320508075688772}, "sqlglot.parser.Parser": {"tf": 1.4142135623730951}}, "df": 40}}}}}}}}}, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1.4142135623730951}}, "df": 3, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions": {"tf": 1}}, "df": 1, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.executor": {"tf": 1}, "sqlglot.executor.context.Context": {"tf": 1}}, "df": 2, "u": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1}, "sqlglot.executor.context.Context": {"tf": 1}}, "df": 2, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}, "s": {"docs": {"sqlglot.executor": {"tf": 1}, "sqlglot.executor.context.Context": {"tf": 1}}, "df": 2}}, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.executor.context.Context": {"tf": 1}}, "df": 1}}}}}}}}, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}, "f": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 2}}}, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.executor.context.Context": {"tf": 1}}, "df": 1, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}}}}}, "g": {"docs": {"sqlglot.parse": {"tf": 1}, "sqlglot.parse_one": {"tf": 1}, "sqlglot.transpile": {"tf": 1.4142135623730951}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.executor.execute": {"tf": 1}, "sqlglot.expressions.Expression.sql": {"tf": 1}, "sqlglot.expressions.update": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1}}, "df": 25}, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe": {"tf": 4.123105625617661}}, "df": 1, "s": {"docs": {"sqlglot.dataframe": {"tf": 3}}, "df": 1}}}}}}, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.Expression.alias": {"tf": 1}, "sqlglot.expressions.Expression.output_name": {"tf": 1}, "sqlglot.expressions.Column.output_name": {"tf": 1}, "sqlglot.expressions.Identifier.output_name": {"tf": 1}, "sqlglot.expressions.Literal.output_name": {"tf": 1}, "sqlglot.expressions.Subquery.output_name": {"tf": 1}, "sqlglot.expressions.Star.output_name": {"tf": 1}, "sqlglot.expressions.Alias.output_name": {"tf": 1}, "sqlglot.expressions.Cast.output_name": {"tf": 1}}, "df": 9}}}, "b": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}, "s": {"docs": {"sqlglot.helper.subclasses": {"tf": 1.4142135623730951}}, "df": 1, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 2}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 2}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 2}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 2}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 2}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 2}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 2}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 2}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 2}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 2}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 2}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 2}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 2}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 2}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 2}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 2}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 2}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 2}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 2}, "sqlglot.diff": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 2}, "sqlglot.generator.Generator": {"tf": 2}}, "df": 22}}}}, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1}}, "df": 2}}}}}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.optimizer.lower_identities.lower_identities": {"tf": 1}}, "df": 2}}}}}}}}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.normalize.normalization_distance": {"tf": 1}}, "df": 1, "d": {"docs": {"sqlglot.optimizer.normalize.normalize": {"tf": 1}}, "df": 1}}}}}}}}, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.helper.first": {"tf": 1}}, "df": 1, "s": {"docs": {"sqlglot.diff": {"tf": 2.8284271247461903}, "sqlglot.helper.flatten": {"tf": 1.4142135623730951}}, "df": 2}, "\u2019": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 2.449489742783178}, "sqlglot.expressions.Select.lock": {"tf": 1}, "sqlglot.helper.ensure_list": {"tf": 1}, "sqlglot.helper.ensure_collection": {"tf": 1}}, "df": 4}}, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.eliminate_ctes.eliminate_ctes": {"tf": 1}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 1}, "sqlglot.optimizer.eliminate_subqueries.eliminate_subqueries": {"tf": 1.4142135623730951}}, "df": 3}, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.optimizer.simplify.absorb_and_eliminate": {"tf": 1}}, "df": 1}}}}}}}}}}, "y": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1}, "sqlglot.executor.execute": {"tf": 1}, "sqlglot.executor.context.Context": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 1}, "sqlglot.trie.new_trie": {"tf": 1}, "sqlglot.trie.in_trie": {"tf": 1}}, "df": 9}}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.diff": {"tf": 3.872983346207417}}, "df": 1, "s": {"docs": {"sqlglot.diff": {"tf": 3}}, "df": 1}}}, "u": {"docs": {}, "df": 0, ":": {"8": {"0": {"9": {"0": {"docs": {}, "df": 0, "/": {"1": {"1": {"5": {"docs": {}, "df": 0, "/": {"1": {"docs": {}, "df": 0, "/": {"1": {"9": {"9": {"5": {"docs": {"sqlglot.diff.ChangeDistiller": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}}, "docs": {}, "df": 0}}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}}}, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}}, "df": 1, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.diff": {"tf": 2.23606797749979}}, "df": 1}}}}}, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.expressions.convert": {"tf": 1}}, "df": 2, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.transforms.eliminate_qualify": {"tf": 1}}, "df": 1}}}}}}}}}}}, "t": {"docs": {"sqlglot.diff": {"tf": 2.23606797749979}, "sqlglot.diff.ChangeDistiller": {"tf": 1}}, "df": 2, "c": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.executor.table.Tables": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1}}, "df": 3}}, "u": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {"sqlglot.executor": {"tf": 1.7320508075688772}}, "df": 1}}}}}}}}}, "c": {"docs": {"sqlglot": {"tf": 3.605551275463989}, "sqlglot.diff": {"tf": 3.4641016151377544}, "sqlglot.diff.diff": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.output_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.flatten": {"tf": 1.4142135623730951}, "sqlglot.expressions.Column.output_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.Identifier.output_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.Literal.output_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.Subquery.output_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.Star.output_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.Alias.output_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.Cast.output_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.column_table_names": {"tf": 1.7320508075688772}, "sqlglot.expressions.table_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.replace_tables": {"tf": 1.4142135623730951}, "sqlglot.optimizer.expand_laterals.expand_laterals": {"tf": 1.4142135623730951}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 1.4142135623730951}, "sqlglot.optimizer.simplify.flatten": {"tf": 2}, "sqlglot.optimizer.simplify.uniq_sort": {"tf": 1.4142135623730951}, "sqlglot.trie.in_trie": {"tf": 1}}, "df": 23, "a": {"docs": {"sqlglot.trie.in_trie": {"tf": 1}}, "df": 1, "n": {"docs": {"sqlglot": {"tf": 3.872983346207417}, "sqlglot.dataframe": {"tf": 2}, "sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1}, "sqlglot.dialects.dialect.format_time_lambda": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 4.242640687119285}, "sqlglot.executor": {"tf": 4}, "sqlglot.executor.execute": {"tf": 1}, "sqlglot.executor.context.Context": {"tf": 1.4142135623730951}, "sqlglot.executor.table.Tables": {"tf": 1}, "sqlglot.expressions.Expression.text": {"tf": 1}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 1}, "sqlglot.expressions.Union.limit": {"tf": 1}, "sqlglot.expressions.Select.limit": {"tf": 1}, "sqlglot.expressions.Select.offset": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1}, "sqlglot.helper.flatten": {"tf": 1}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_cnf": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_dnf": {"tf": 1.4142135623730951}, "sqlglot.optimizer.qualify_columns.Resolver": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.get_table": {"tf": 1}, "sqlglot.optimizer.scope.Scope.replace": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1}, "sqlglot.time.format_time": {"tf": 1}, "sqlglot.transforms.eliminate_qualify": {"tf": 1}, "sqlglot.transforms.preprocess": {"tf": 1}}, "df": 30, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.diff": {"tf": 1.7320508075688772}, "sqlglot.executor": {"tf": 1.7320508075688772}}, "df": 3, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.canonicalize.canonicalize": {"tf": 1}}, "df": 1}}}}}}}}}, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dataframe": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 3}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 2.6457513110645907}}, "df": 1, "s": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot": {"tf": 2.6457513110645907}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.dataframe.sql.Column.cast": {"tf": 1}, "sqlglot.expressions.cast": {"tf": 2.449489742783178}, "sqlglot.expressions.func": {"tf": 1.4142135623730951}, "sqlglot.helper.ensure_list": {"tf": 1}}, "df": 6, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.values": {"tf": 1}}, "df": 1}}, "s": {"docs": {"sqlglot.helper.ensure_list": {"tf": 1}}, "df": 1}}, "e": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.diff": {"tf": 2.6457513110645907}, "sqlglot.executor.env.null_if_any": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.expressions.Func": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1.4142135623730951}, "sqlglot.expressions.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.from_": {"tf": 1.4142135623730951}, "sqlglot.expressions.condition": {"tf": 1.4142135623730951}, "sqlglot.helper.camel_to_snake_case": {"tf": 1}, "sqlglot.helper.count_params": {"tf": 1}, "sqlglot.helper.should_identify": {"tf": 1}, "sqlglot.optimizer.lower_identities.lower_identities": {"tf": 1.7320508075688772}}, "df": 14, "s": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.diff": {"tf": 2.23606797749979}, "sqlglot.executor": {"tf": 1.4142135623730951}}, "df": 5}, "d": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}}, "df": 21}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.helper.csv_reader": {"tf": 1}}, "df": 1, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.dialects": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1.4142135623730951}, "sqlglot.transforms.preprocess": {"tf": 1}}, "df": 4}, "r": {"docs": {"sqlglot.diff.diff": {"tf": 1}}, "df": 1}}, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.format_time_lambda": {"tf": 1}, "sqlglot.expressions.Expression.walk": {"tf": 1}}, "df": 2}}}}}, "c": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1}}, "df": 1, "d": {"docs": {"sqlglot.diff.diff": {"tf": 1}}, "df": 1}}, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.executor": {"tf": 1.7320508075688772}}, "df": 1}}}}}, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.diff": {"tf": 1}}, "df": 2}}}, "e": {"docs": {"sqlglot.dataframe.sql.DataFrame.persist": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 1}, "sqlglot.generator.Generator.generate": {"tf": 1.4142135623730951}}, "df": 3}}}, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1}}, "df": 19, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "e": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}}, "df": 2}}, "t": {"docs": {"sqlglot.trie.in_trie": {"tf": 2}}, "df": 1, "c": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.executor.execute": {"tf": 1}, "sqlglot.expressions.Column.parts": {"tf": 1}, "sqlglot.expressions.to_table": {"tf": 1.7320508075688772}, "sqlglot.expressions.column": {"tf": 1.4142135623730951}, "sqlglot.expressions.table_": {"tf": 1.4142135623730951}, "sqlglot.optimizer.optimizer.optimize": {"tf": 2}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"tf": 1.4142135623730951}, "sqlglot.schema.Schema.supported_table_args": {"tf": 1}, "sqlglot.schema.MappingSchema": {"tf": 1.4142135623730951}}, "df": 9}}}}}, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1, "l": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.helper.camel_to_snake_case": {"tf": 1}}, "df": 1}}}}}}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 3}}, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.func": {"tf": 1}}, "df": 1, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.dialects": {"tf": 1}, "sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.expressions.Expression.text": {"tf": 1}, "sqlglot.expressions.Expression.transform": {"tf": 1}, "sqlglot.expressions.union": {"tf": 1.4142135623730951}, "sqlglot.expressions.intersect": {"tf": 1.4142135623730951}, "sqlglot.expressions.except_": {"tf": 1.4142135623730951}, "sqlglot.helper.AutoName": {"tf": 1}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1.4142135623730951}, "sqlglot.planner.Scan.from_expression": {"tf": 1.4142135623730951}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1.4142135623730951}, "sqlglot.tokens.Tokenizer.tokenize": {"tf": 1}, "sqlglot.trie.new_trie": {"tf": 1}}, "df": 15}}}}}}}}, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.optimizer.scope.Scope.columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_correlated_subquery": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 1}}, "df": 3}}}}}}}, "e": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1}}, "df": 2}}, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.diff": {"tf": 1}}, "df": 2}}}}}}}, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.helper.open_file": {"tf": 1}}, "df": 1}}}}}}, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.diff": {"tf": 2}, "sqlglot.executor": {"tf": 1}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1.4142135623730951}}, "df": 4, "d": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 2.449489742783178}}, "df": 1, "d": {"docs": {"sqlglot.diff": {"tf": 2.23606797749979}}, "df": 1}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.diff": {"tf": 2.449489742783178}}, "df": 1}}, "s": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.optimizer.simplify.rewrite_between": {"tf": 1}}, "df": 1}}}}}}, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 2}}, "df": 1, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}, "x": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1}}, "df": 2}}}}}, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.optimizer.simplify.remove_compliments": {"tf": 1}}, "df": 1}}}}}}}, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.expressions.condition": {"tf": 1}}, "df": 2}}}}, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.executor.python.PythonExecutor.generate": {"tf": 1}}, "df": 1, "r": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}, "m": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot": {"tf": 3.7416573867739413}}, "df": 1, "s": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.executor.python.Python.Generator": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser.expression": {"tf": 1.4142135623730951}}, "df": 25}}}}, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.dialects": {"tf": 1}, "sqlglot.diff": {"tf": 3.4641016151377544}, "sqlglot.errors.SqlglotError": {"tf": 1}, "sqlglot.errors.UnsupportedError": {"tf": 1}, "sqlglot.errors.ParseError": {"tf": 1}, "sqlglot.errors.TokenError": {"tf": 1}, "sqlglot.errors.OptimizeError": {"tf": 1}, "sqlglot.errors.SchemaError": {"tf": 1}, "sqlglot.errors.ExecuteError": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1}, "sqlglot.optimizer.eliminate_subqueries.eliminate_subqueries": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_cte": {"tf": 1}}, "df": 13, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}, "a": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.executor.python.Python.Generator": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator": {"tf": 1.4142135623730951}}, "df": 21, "n": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.dataframe": {"tf": 1.4142135623730951}}, "df": 1}}}}, "b": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.and_": {"tf": 1}, "sqlglot.expressions.or_": {"tf": 1}}, "df": 2, "d": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Select.where": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1}}, "df": 5}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 2, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}}}, "e": {"docs": {"sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1}, "sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 3, "s": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1}}, "df": 41}}, "/": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "/": {"8": {"docs": {"sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.transforms.eliminate_qualify": {"tf": 1}}, "df": 1}}}}}}}}, "n": {"docs": {}, "df": 0, "f": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}}}}}}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {"sqlglot.transpile": {"tf": 1}}, "df": 1}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.optimizer.scope.traverse_scope": {"tf": 1}}, "df": 1}}}}}}, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dataframe": {"tf": 1}}, "df": 2, "s": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}}}, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}, "x": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.executor.context.Context": {"tf": 1.4142135623730951}, "sqlglot.executor.context.Context.__init__": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1.4142135623730951}, "sqlglot.planner.Step.from_expression": {"tf": 2}, "sqlglot.planner.Scan.from_expression": {"tf": 2}, "sqlglot.planner.SetOperation.from_expression": {"tf": 2}}, "df": 28}}}, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.helper.flatten": {"tf": 1}, "sqlglot.transforms.eliminate_qualify": {"tf": 1}}, "df": 23, "s": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.expressions": {"tf": 1}, "sqlglot.helper.apply_index_offset": {"tf": 1}, "sqlglot.helper.tsort": {"tf": 1}}, "df": 5}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.executor": {"tf": 1}, "sqlglot.lineage.lineage": {"tf": 1}}, "df": 2}}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.expressions.Condition.and_": {"tf": 1.7320508075688772}, "sqlglot.expressions.Condition.or_": {"tf": 1.7320508075688772}, "sqlglot.expressions.Condition.not_": {"tf": 1.7320508075688772}, "sqlglot.expressions.condition": {"tf": 2}, "sqlglot.expressions.and_": {"tf": 1}, "sqlglot.expressions.or_": {"tf": 1}, "sqlglot.expressions.not_": {"tf": 1.4142135623730951}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 1}, "sqlglot.optimizer.eliminate_joins.join_condition": {"tf": 1}}, "df": 10, "s": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.expressions.and_": {"tf": 1}, "sqlglot.expressions.or_": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_dnf": {"tf": 1}}, "df": 4}, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.expressions.update": {"tf": 1}, "sqlglot.expressions.delete": {"tf": 1.4142135623730951}}, "df": 2}}}}}}}}, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe": {"tf": 1}}, "df": 1, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dataframe": {"tf": 1.4142135623730951}, "sqlglot.optimizer.simplify.uniq_sort": {"tf": 1}}, "df": 2}}}}}}, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dataframe": {"tf": 1}}, "df": 1}}}, "r": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Join.using": {"tf": 1}}, "df": 1}}}}}}}}, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dialects": {"tf": 1}, "sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 2, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}}, "df": 22}}, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.executor": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1}}, "df": 20}}}}, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.Expression.transform": {"tf": 1}}, "df": 1}}}}}}}, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 2.8284271247461903}, "sqlglot.executor.python.PythonExecutor.generate": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.generate_tuple": {"tf": 1}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 1}, "sqlglot.expressions.Select.ctas": {"tf": 1}, "sqlglot.expressions.convert": {"tf": 1}, "sqlglot.optimizer.lower_identities.lower_identities": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 1.7320508075688772}, "sqlglot.transforms.eliminate_distinct_on": {"tf": 1}, "sqlglot.transforms.eliminate_qualify": {"tf": 1}}, "df": 11, "s": {"docs": {"sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1}, "sqlglot.executor": {"tf": 1}, "sqlglot.expressions.Column.to_dot": {"tf": 1}, "sqlglot.expressions.TimeUnit": {"tf": 1}, "sqlglot.helper.camel_to_snake_case": {"tf": 1}, "sqlglot.optimizer.canonicalize.canonicalize": {"tf": 1}, "sqlglot.time.format_time": {"tf": 1}, "sqlglot.transforms.preprocess": {"tf": 1.4142135623730951}}, "df": 9}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.executor": {"tf": 2.449489742783178}, "sqlglot.expressions.update": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1}, "sqlglot.time.format_time": {"tf": 1}}, "df": 4}}}, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.convert": {"tf": 1}, "sqlglot.optimizer.normalize.normalize": {"tf": 1}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1}}, "df": 3, "s": {"docs": {"sqlglot.optimizer.canonicalize.canonicalize": {"tf": 1}}, "df": 1}}}}}}, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.executor.context.Context": {"tf": 1}}, "df": 1}}}}}}}, "j": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.executor": {"tf": 1}, "sqlglot.optimizer.normalize.normalize": {"tf": 1}}, "df": 2}}}}}}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.parse": {"tf": 1}, "sqlglot.parse_one": {"tf": 1}, "sqlglot.transpile": {"tf": 1}, "sqlglot.dataframe": {"tf": 1}, "sqlglot.dialects": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.diff": {"tf": 3.605551275463989}, "sqlglot.executor": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.generate": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.generate_tuple": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.expressions.Condition.and_": {"tf": 1}, "sqlglot.expressions.Condition.or_": {"tf": 1}, "sqlglot.expressions.Unionable.union": {"tf": 1}, "sqlglot.expressions.Unionable.intersect": {"tf": 1}, "sqlglot.expressions.Unionable.except_": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Delete.returning": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Join.using": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Union.limit": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.expressions.Select.limit": {"tf": 1}, "sqlglot.expressions.Select.offset": {"tf": 1}, "sqlglot.expressions.Select.select": {"tf": 1}, "sqlglot.expressions.Select.lateral": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1}, "sqlglot.expressions.Select.where": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1}, "sqlglot.expressions.Select.ctas": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1}, "sqlglot.expressions.union": {"tf": 1.4142135623730951}, "sqlglot.expressions.intersect": {"tf": 1.4142135623730951}, "sqlglot.expressions.except_": {"tf": 1.4142135623730951}, "sqlglot.expressions.select": {"tf": 1}, "sqlglot.expressions.from_": {"tf": 1}, "sqlglot.expressions.condition": {"tf": 1}, "sqlglot.expressions.and_": {"tf": 1}, "sqlglot.expressions.or_": {"tf": 1}, "sqlglot.expressions.not_": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1}, "sqlglot.expressions.subquery": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}}, "df": 69}}, "l": {"1": {"docs": {"sqlglot.expressions.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.from_": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope": {"tf": 1.4142135623730951}}, "df": 3}, "2": {"docs": {"sqlglot.expressions.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.from_": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope": {"tf": 1.4142135623730951}}, "df": 3}, "docs": {"sqlglot": {"tf": 1.7320508075688772}, "sqlglot.dataframe": {"tf": 3.1622776601683795}, "sqlglot.executor.execute": {"tf": 1.7320508075688772}, "sqlglot.expressions.column": {"tf": 1}, "sqlglot.expressions.replace_placeholders": {"tf": 1.4142135623730951}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1.7320508075688772}, "sqlglot.optimizer.qualify_columns.qualify_columns": {"tf": 2}, "sqlglot.schema.MappingSchema": {"tf": 1.7320508075688772}}, "df": 8, "a": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.dataframe": {"tf": 2}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 2.6457513110645907}}, "df": 3}, "b": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.dataframe": {"tf": 2}}, "df": 2}, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot": {"tf": 3.3166247903554}, "sqlglot.dataframe": {"tf": 2.23606797749979}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1.7320508075688772}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 3.1622776601683795}, "sqlglot.diff.diff": {"tf": 2}, "sqlglot.executor": {"tf": 1}, "sqlglot.executor.context.Context": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.output_name": {"tf": 1}, "sqlglot.expressions.Expression.replace": {"tf": 1.7320508075688772}, "sqlglot.expressions.Column.output_name": {"tf": 1}, "sqlglot.expressions.Column.parts": {"tf": 1}, "sqlglot.expressions.Column.to_dot": {"tf": 1}, "sqlglot.expressions.Identifier.output_name": {"tf": 1}, "sqlglot.expressions.Literal.output_name": {"tf": 1}, "sqlglot.expressions.Subquery.output_name": {"tf": 1}, "sqlglot.expressions.Star.output_name": {"tf": 1}, "sqlglot.expressions.Alias.output_name": {"tf": 1}, "sqlglot.expressions.Cast.output_name": {"tf": 1}, "sqlglot.expressions.to_column": {"tf": 2.449489742783178}, "sqlglot.expressions.column": {"tf": 2}, "sqlglot.expressions.table_": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1.7320508075688772}, "sqlglot.expressions.var": {"tf": 1}, "sqlglot.expressions.column_table_names": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1.4142135623730951}, "sqlglot.lineage.lineage": {"tf": 1.7320508075688772}, "sqlglot.optimizer.expand_laterals.expand_laterals": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.get_table": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.Scope": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.Scope.columns": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.external_columns": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.unqualified_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.source_columns": {"tf": 1.4142135623730951}, "sqlglot.schema.Schema.add_table": {"tf": 1.7320508075688772}, "sqlglot.schema.Schema.column_names": {"tf": 1.4142135623730951}, "sqlglot.schema.Schema.get_column_type": {"tf": 2}, "sqlglot.schema.MappingSchema.add_table": {"tf": 1.7320508075688772}, "sqlglot.schema.MappingSchema.column_names": {"tf": 1.4142135623730951}, "sqlglot.schema.MappingSchema.get_column_type": {"tf": 2}, "sqlglot.transforms.eliminate_qualify": {"tf": 1}}, "df": 63, "s": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1}, "sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1.7320508075688772}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.executor.context.Context": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1}, "sqlglot.expressions.column_table_names": {"tf": 1}, "sqlglot.lineage.lineage": {"tf": 1}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}, "sqlglot.optimizer.expand_laterals.expand_laterals": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1.4142135623730951}, "sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 1}, "sqlglot.optimizer.qualify_columns.qualify_columns": {"tf": 1.4142135623730951}, "sqlglot.optimizer.qualify_columns.validate_qualify_columns": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.all_columns": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.get_source_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 1}, "sqlglot.optimizer.scope.Scope.columns": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.external_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.unqualified_columns": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.source_columns": {"tf": 1}, "sqlglot.schema.Schema.column_names": {"tf": 1}, "sqlglot.schema.MappingSchema": {"tf": 1.4142135623730951}, "sqlglot.schema.MappingSchema.column_names": {"tf": 1}}, "df": 29}, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.executor.execute": {"tf": 1}}, "df": 1}}}}}, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.errors.ErrorLevel.RAISE": {"tf": 1}}, "df": 1, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.parse": {"tf": 1.4142135623730951}, "sqlglot.helper.ensure_collection": {"tf": 1.4142135623730951}, "sqlglot.helper.subclasses": {"tf": 1}, "sqlglot.helper.find_new_name": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 1}, "sqlglot.trie.new_trie": {"tf": 1}}, "df": 6, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}}, "s": {"docs": {"sqlglot.schema.MappingSchema": {"tf": 1.7320508075688772}}, "df": 1}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.dataframe": {"tf": 1}, "sqlglot.diff": {"tf": 2.449489742783178}, "sqlglot.expressions.Select.group_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.having": {"tf": 2}, "sqlglot.optimizer.scope.Scope.ref_count": {"tf": 1.4142135623730951}}, "df": 6, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe": {"tf": 2.23606797749979}}, "df": 1}}}}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.helper.count_params": {"tf": 1}}, "df": 2}}}}}, "l": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}, "sqlglot.executor": {"tf": 2.23606797749979}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}}, "df": 3, "n": {"docs": {}, "df": 0, "\u2019": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.dataframe": {"tf": 1}}, "df": 1}}}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}, "s": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}, "t": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1}}, "df": 2, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}, "g": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "\u2019": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}, "e": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.diff": {"tf": 2.23606797749979}}, "df": 1}}}}}}}}, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}}, "df": 1}, "d": {"docs": {"sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}}, "df": 1}}}}}, "p": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.copy": {"tf": 1}, "sqlglot.expressions.Expression.transform": {"tf": 1}, "sqlglot.expressions.Delete.delete": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Delete.returning": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Join.using": {"tf": 1}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1}, "sqlglot.expressions.Union.limit": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.expressions.Select.limit": {"tf": 1}, "sqlglot.expressions.Select.offset": {"tf": 1}, "sqlglot.expressions.Select.select": {"tf": 1}, "sqlglot.expressions.Select.lateral": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1}, "sqlglot.expressions.Select.where": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1}, "sqlglot.expressions.Select.distinct": {"tf": 1}, "sqlglot.expressions.Select.ctas": {"tf": 1}, "sqlglot.expressions.Select.lock": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1.4142135623730951}, "sqlglot.expressions.expand": {"tf": 1.4142135623730951}}, "df": 29}}}, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {"sqlglot": {"tf": 2.449489742783178}, "sqlglot.dataframe": {"tf": 1.4142135623730951}, "sqlglot.dialects": {"tf": 1.4142135623730951}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.schema.MappingSchema": {"tf": 1}}, "df": 26, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}}}}}, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.executor": {"tf": 1}, "sqlglot.executor.context.Context.__init__": {"tf": 1}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1}, "sqlglot.optimizer.scope.Scope.branch": {"tf": 1}, "sqlglot.optimizer.scope.Scope.external_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.unqualified_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.source_columns": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}}, "df": 8, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dataframe": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.cast": {"tf": 1}, "sqlglot.executor": {"tf": 1.4142135623730951}}, "df": 3}}}}}}, "s": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dataframe": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1}, "sqlglot.expressions.Expression.error_messages": {"tf": 1}, "sqlglot.helper.is_iterable": {"tf": 1}, "sqlglot.helper.should_identify": {"tf": 1}}, "df": 7, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}}, "df": 1}}}, "s": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1}, "sqlglot.expressions.Expression.is_string": {"tf": 1}, "sqlglot.expressions.Expression.is_number": {"tf": 1}, "sqlglot.expressions.Expression.is_int": {"tf": 1}, "sqlglot.expressions.Expression.is_star": {"tf": 1}, "sqlglot.expressions.Expression.error_messages": {"tf": 1}, "sqlglot.expressions.Union.is_star": {"tf": 1}, "sqlglot.expressions.Select.is_star": {"tf": 1}, "sqlglot.expressions.Subquery.is_star": {"tf": 1}, "sqlglot.helper.is_iterable": {"tf": 1}, "sqlglot.helper.should_identify": {"tf": 1}, "sqlglot.trie.in_trie": {"tf": 1}}, "df": 13}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 2}}}, "g": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 3.3166247903554}, "sqlglot.diff.ChangeDistiller": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1}}, "df": 3, "s": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.diff": {"tf": 2.6457513110645907}, "sqlglot.diff.diff": {"tf": 1}}, "df": 3}, "d": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}, "sqlglot.diff.Move": {"tf": 1}, "sqlglot.diff.Keep": {"tf": 1}}, "df": 3}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 2.449489742783178}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.executor.python.Python.Generator": {"tf": 2.449489742783178}, "sqlglot.generator.Generator": {"tf": 2.449489742783178}, "sqlglot.trie.new_trie": {"tf": 1}}, "df": 23, "s": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1}}, "df": 41}}}}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}}}, "w": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}, "sqlglot.diff.ChangeDistiller": {"tf": 1}}, "df": 2}}}}}, "t": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.Expression.assert_is": {"tf": 1}}, "df": 1}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.transforms.preprocess": {"tf": 1}}, "df": 1}}}}}}, "o": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 2, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1, "n": {"docs": {"sqlglot.parser.Parser.check_errors": {"tf": 1}, "sqlglot.parser.Parser.raise_error": {"tf": 1}}, "df": 2}}}}, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.unnest": {"tf": 1}, "sqlglot.expressions.Expression.flatten": {"tf": 1}, "sqlglot.expressions.replace_children": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 2.23606797749979}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1}}, "df": 7, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.diff": {"tf": 2.8284271247461903}, "sqlglot.expressions.replace_children": {"tf": 1}}, "df": 2}}}}}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.ctes": {"tf": 1}}, "df": 4, "s": {"docs": {"sqlglot.optimizer.eliminate_ctes.eliminate_ctes": {"tf": 1.4142135623730951}, "sqlglot.optimizer.eliminate_subqueries.eliminate_subqueries": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 1}, "sqlglot.optimizer.scope.Scope.ctes": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.cte_sources": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1.4142135623730951}, "sqlglot.planner.Scan.from_expression": {"tf": 1.4142135623730951}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1.4142135623730951}}, "df": 9}}, "x": {"docs": {"sqlglot.dataframe": {"tf": 1.7320508075688772}}, "df": 1}, "a": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.Select.ctas": {"tf": 1}}, "df": 1}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.expressions.Delete.delete": {"tf": 1}, "sqlglot.expressions.Select.ctas": {"tf": 2}, "sqlglot.expressions.to_table": {"tf": 1}, "sqlglot.expressions.to_column": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1.4142135623730951}, "sqlglot.transforms.delegate": {"tf": 1}, "sqlglot.trie.new_trie": {"tf": 1}}, "df": 10, "d": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.helper.object_to_dict": {"tf": 1}}, "df": 2, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe": {"tf": 2.23606797749979}}, "df": 1}}}}}}}}}, "s": {"docs": {"sqlglot.executor": {"tf": 1}, "sqlglot.expressions.update": {"tf": 1}, "sqlglot.parser.Parser.expression": {"tf": 1}, "sqlglot.transforms.preprocess": {"tf": 1}, "sqlglot.trie.new_trie": {"tf": 1}}, "df": 5}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.helper.AutoName": {"tf": 1}, "sqlglot.transforms.delegate": {"tf": 1}}, "df": 24}}, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}, "a": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}, "f": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.diff": {"tf": 3.3166247903554}, "sqlglot.expressions.Expression.find": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1.4142135623730951}}, "df": 4}}}}}}, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.optimizer.expand_multi_table_selects.expand_multi_table_selects": {"tf": 1}, "sqlglot.optimizer.optimize_joins.optimize_joins": {"tf": 1.4142135623730951}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 1}}, "df": 3}}}}, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot": {"tf": 2}, "sqlglot.dataframe": {"tf": 2.23606797749979}, "sqlglot.dataframe.sql.Column.cast": {"tf": 1.4142135623730951}, "sqlglot.dialects": {"tf": 2}, "sqlglot.dialects.dialect.format_time_lambda": {"tf": 1.4142135623730951}, "sqlglot.errors.SqlglotError": {"tf": 1}, "sqlglot.errors.UnsupportedError": {"tf": 1}, "sqlglot.errors.ParseError": {"tf": 1}, "sqlglot.errors.TokenError": {"tf": 1}, "sqlglot.errors.OptimizeError": {"tf": 1}, "sqlglot.errors.SchemaError": {"tf": 1}, "sqlglot.errors.ExecuteError": {"tf": 1}, "sqlglot.executor.table.Tables": {"tf": 2}, "sqlglot.expressions.Expression": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.same_parent": {"tf": 1}, "sqlglot.expressions.Expression.flatten": {"tf": 1}, "sqlglot.expressions.Func": {"tf": 1.4142135623730951}, "sqlglot.expressions.func": {"tf": 1}, "sqlglot.helper.subclasses": {"tf": 1.4142135623730951}, "sqlglot.helper.count_params": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver": {"tf": 1}, "sqlglot.parser.Parser.expression": {"tf": 1.4142135623730951}, "sqlglot.schema.Schema": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema": {"tf": 2}}, "df": 24, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dialects": {"tf": 1.4142135623730951}, "sqlglot.helper.AutoName": {"tf": 1}, "sqlglot.helper.subclasses": {"tf": 1.4142135623730951}, "sqlglot.schema.Schema.add_table": {"tf": 1}}, "df": 4}}}}, "i": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe": {"tf": 1.7320508075688772}}, "df": 1}}, "m": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 1}, "sqlglot.transforms.eliminate_qualify": {"tf": 2}}, "df": 2, "s": {"docs": {"sqlglot.transforms.unalias_group": {"tf": 1}}, "df": 1}}}}}, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe": {"tf": 2.23606797749979}}, "df": 1}}}}, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.dataframe": {"tf": 1}}, "df": 1}}, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe": {"tf": 1.4142135623730951}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.Select.cluster_by": {"tf": 2}}, "df": 1}}}}}, "s": {"docs": {"sqlglot.helper.count_params": {"tf": 1}}, "df": 1}}, "s": {"docs": {"sqlglot.dataframe": {"tf": 2}}, "df": 1, "v": {"docs": {"sqlglot.helper.csv": {"tf": 1.4142135623730951}, "sqlglot.helper.csv_reader": {"tf": 2}}, "df": 2}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}, "i": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}, "n": {"docs": {}, "df": 0, "f": {"docs": {"sqlglot.executor": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_cnf": {"tf": 1}}, "df": 2, "/": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "f": {"docs": {"sqlglot.optimizer.normalize.normalize": {"tf": 1}}, "df": 1}}}}}}}, "b": {"docs": {"sqlglot": {"tf": 4.795831523312719}, "sqlglot.diff": {"tf": 3.7416573867739413}, "sqlglot.diff.diff": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 2.23606797749979}, "sqlglot.executor.env.null_if_any": {"tf": 1}, "sqlglot.expressions.Expression.output_name": {"tf": 1}, "sqlglot.expressions.Expression.flatten": {"tf": 1.4142135623730951}, "sqlglot.expressions.Column.output_name": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1.4142135623730951}, "sqlglot.expressions.Identifier.output_name": {"tf": 1}, "sqlglot.expressions.Literal.output_name": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 2}, "sqlglot.expressions.Select.join": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.where": {"tf": 1.4142135623730951}, "sqlglot.expressions.Subquery.output_name": {"tf": 1}, "sqlglot.expressions.Star.output_name": {"tf": 1}, "sqlglot.expressions.Alias.output_name": {"tf": 1}, "sqlglot.expressions.Cast.output_name": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1.4142135623730951}, "sqlglot.expressions.column_table_names": {"tf": 1}, "sqlglot.expressions.table_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.replace_tables": {"tf": 1.4142135623730951}, "sqlglot.expressions.replace_placeholders": {"tf": 1.4142135623730951}, "sqlglot.helper.dict_depth": {"tf": 1.4142135623730951}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 1.7320508075688772}, "sqlglot.optimizer.expand_laterals.expand_laterals": {"tf": 1.7320508075688772}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1}, "sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.selects": {"tf": 1.4142135623730951}, "sqlglot.optimizer.simplify.flatten": {"tf": 2}, "sqlglot.optimizer.simplify.uniq_sort": {"tf": 1.7320508075688772}, "sqlglot.optimizer.simplify.absorb_and_eliminate": {"tf": 3.1622776601683795}, "sqlglot.planner.Step.from_expression": {"tf": 1.4142135623730951}, "sqlglot.planner.Scan.from_expression": {"tf": 1.4142135623730951}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1.4142135623730951}, "sqlglot.transforms.unalias_group": {"tf": 1.7320508075688772}, "sqlglot.trie.new_trie": {"tf": 1.4142135623730951}}, "df": 37, "e": {"docs": {"sqlglot": {"tf": 3}, "sqlglot.transpile": {"tf": 1.4142135623730951}, "sqlglot.dataframe": {"tf": 3}, "sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.dialects": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.dialect.format_time_lambda": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 2}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.diff": {"tf": 4.242640687119285}, "sqlglot.diff.diff": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 4}, "sqlglot.executor.execute": {"tf": 1}, "sqlglot.executor.context.Context": {"tf": 1.4142135623730951}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.executor.table.Tables": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.text": {"tf": 1}, "sqlglot.expressions.Expression.walk": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.transform": {"tf": 1}, "sqlglot.expressions.Condition.and_": {"tf": 1}, "sqlglot.expressions.Condition.or_": {"tf": 1}, "sqlglot.expressions.Unionable.union": {"tf": 1}, "sqlglot.expressions.Unionable.intersect": {"tf": 1}, "sqlglot.expressions.Unionable.except_": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Delete.returning": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Join.using": {"tf": 1}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1}, "sqlglot.expressions.Union.limit": {"tf": 1.4142135623730951}, "sqlglot.expressions.Union.select": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.expressions.Select.limit": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.offset": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.select": {"tf": 1}, "sqlglot.expressions.Select.lateral": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.where": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1}, "sqlglot.expressions.Select.distinct": {"tf": 1}, "sqlglot.expressions.Select.ctas": {"tf": 1}, "sqlglot.expressions.Select.lock": {"tf": 1.4142135623730951}, "sqlglot.expressions.Func": {"tf": 1.4142135623730951}, "sqlglot.expressions.union": {"tf": 1.4142135623730951}, "sqlglot.expressions.intersect": {"tf": 1.4142135623730951}, "sqlglot.expressions.except_": {"tf": 1.4142135623730951}, "sqlglot.expressions.alias_": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1.4142135623730951}, "sqlglot.expressions.replace_tables": {"tf": 1}, "sqlglot.expressions.replace_placeholders": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.helper.apply_index_offset": {"tf": 1.4142135623730951}, "sqlglot.helper.while_changing": {"tf": 1.4142135623730951}, "sqlglot.helper.tsort": {"tf": 1}, "sqlglot.helper.open_file": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1.7320508075688772}, "sqlglot.helper.flatten": {"tf": 1}, "sqlglot.helper.should_identify": {"tf": 1.4142135623730951}, "sqlglot.lineage.lineage": {"tf": 1}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 2.449489742783178}, "sqlglot.optimizer.qualify_columns.Resolver.get_table": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 1}, "sqlglot.optimizer.scope.Scope.replace": {"tf": 1}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1.4142135623730951}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}, "sqlglot.schema.Schema.add_table": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1.4142135623730951}, "sqlglot.schema.MappingSchema": {"tf": 1.7320508075688772}, "sqlglot.time.format_time": {"tf": 1}, "sqlglot.transforms.unalias_group": {"tf": 1}, "sqlglot.transforms.eliminate_distinct_on": {"tf": 1}, "sqlglot.transforms.eliminate_qualify": {"tf": 1.4142135623730951}, "sqlglot.transforms.remove_precision_parameterized_types": {"tf": 1}, "sqlglot.transforms.preprocess": {"tf": 1.4142135623730951}, "sqlglot.trie.in_trie": {"tf": 1}}, "df": 103, "t": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 2.8284271247461903}, "sqlglot.diff.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1}, "sqlglot.optimizer.simplify.rewrite_between": {"tf": 1}}, "df": 6}}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.diff": {"tf": 2}, "sqlglot.diff.diff": {"tf": 1}}, "df": 2}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dialects.dialect.format_time_lambda": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 3}}}, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot": {"tf": 1.7320508075688772}}, "df": 1}}}}}}}, "e": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 3}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}}, "df": 23}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.transforms.eliminate_qualify": {"tf": 1}}, "df": 1}}}}, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.executor": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}}, "df": 23}}}}, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 2}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.optimizer.canonicalize.canonicalize": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}, "sqlglot.optimizer.simplify.rewrite_between": {"tf": 1}}, "df": 26}}}, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.expressions.var": {"tf": 1}}, "df": 3, "s": {"docs": {"sqlglot.diff": {"tf": 2.449489742783178}, "sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 1}}, "df": 2}}}}}, "e": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.diff": {"tf": 2.449489742783178}, "sqlglot.diff.Insert": {"tf": 1}, "sqlglot.diff.Remove": {"tf": 1}, "sqlglot.diff.Update": {"tf": 1}, "sqlglot.diff.Keep": {"tf": 1}, "sqlglot.executor": {"tf": 2.23606797749979}}, "df": 6}}, "y": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}, "g": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.diff.ChangeDistiller": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 2}}}, "i": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dataframe": {"tf": 2.449489742783178}, "sqlglot.dialects.bigquery": {"tf": 1}}, "df": 3}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.dialects": {"tf": 1.4142135623730951}}, "df": 2}}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {"sqlglot.diff": {"tf": 3.872983346207417}}, "df": 1, "s": {"docs": {"sqlglot.diff": {"tf": 2}}, "df": 1}}}}, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}, "u": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot": {"tf": 1.7320508075688772}, "sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.expressions": {"tf": 1}, "sqlglot.expressions.Dot.build": {"tf": 1}, "sqlglot.expressions.subquery": {"tf": 1}, "sqlglot.expressions.column": {"tf": 1}, "sqlglot.expressions.table_": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1}, "sqlglot.expressions.var": {"tf": 1}, "sqlglot.expressions.rename_table": {"tf": 1}, "sqlglot.expressions.func": {"tf": 1.4142135623730951}, "sqlglot.lineage.lineage": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.build_scope": {"tf": 1.4142135623730951}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}}, "df": 16, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.diff": {"tf": 2}, "sqlglot.executor": {"tf": 1}, "sqlglot.lineage.lineage": {"tf": 1}}, "df": 4}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.executor": {"tf": 1.4142135623730951}}, "df": 2}}, "s": {"docs": {"sqlglot.expressions.Unionable.union": {"tf": 1}, "sqlglot.expressions.Unionable.intersect": {"tf": 1}, "sqlglot.expressions.Unionable.except_": {"tf": 1}, "sqlglot.expressions.delete": {"tf": 1}, "sqlglot.expressions.to_identifier": {"tf": 1}, "sqlglot.expressions.to_interval": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}}, "df": 9}}, "t": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 2}}, "df": 2}}}, "g": {"docs": {"sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}}, "df": 2}, "t": {"docs": {"sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.diff": {"tf": 2.6457513110645907}, "sqlglot.executor": {"tf": 2.23606797749979}, "sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 1}, "sqlglot.transforms.eliminate_distinct_on": {"tf": 1}, "sqlglot.transforms.eliminate_qualify": {"tf": 1}}, "df": 6}, "l": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}, "y": {"docs": {"sqlglot": {"tf": 2.449489742783178}, "sqlglot.pretty": {"tf": 1}, "sqlglot.schema": {"tf": 1}, "sqlglot.dataframe": {"tf": 2}, "sqlglot.dialects": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.diff": {"tf": 4.47213595499958}, "sqlglot.diff.diff": {"tf": 1}, "sqlglot.diff.ChangeDistiller": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 2.23606797749979}, "sqlglot.executor.table.Tables": {"tf": 1}, "sqlglot.expressions": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.load": {"tf": 1}, "sqlglot.expressions.Delete.returning": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 2}, "sqlglot.expressions.Select.order_by": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.sort_by": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.cluster_by": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.having": {"tf": 1.4142135623730951}, "sqlglot.expressions.Func": {"tf": 1}, "sqlglot.expressions.expand": {"tf": 1}, "sqlglot.generator.Generator.generate": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1.4142135623730951}, "sqlglot.helper.count_params": {"tf": 1}, "sqlglot.lineage.lineage": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1}, "sqlglot.optimizer.optimize_joins.reorder_joins": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1.4142135623730951}, "sqlglot.planner.Scan.from_expression": {"tf": 1.4142135623730951}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1.4142135623730951}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1}, "sqlglot.serde.load": {"tf": 1}, "sqlglot.transforms.unalias_group": {"tf": 1.7320508075688772}, "sqlglot.transforms.preprocess": {"tf": 1}, "sqlglot.trie.new_trie": {"tf": 1.4142135623730951}}, "df": 61, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.executor.python.PythonExecutor.generate_tuple": {"tf": 1}}, "df": 1, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.executor.python.PythonExecutor.generate": {"tf": 1}}, "df": 1}}}}, "s": {"docs": {"sqlglot.helper.ensure_collection": {"tf": 1}, "sqlglot.helper.is_iterable": {"tf": 1}, "sqlglot.helper.flatten": {"tf": 1}}, "df": 3}}}}, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}}}, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}}, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}, "z": {"docs": {"sqlglot": {"tf": 2.8284271247461903}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.expressions.update": {"tf": 1.4142135623730951}}, "df": 3}, "r": {"docs": {"sqlglot": {"tf": 2.8284271247461903}, "sqlglot.executor": {"tf": 2}, "sqlglot.expressions.alias_": {"tf": 2}, "sqlglot.expressions.subquery": {"tf": 1.4142135623730951}, "sqlglot.optimizer.lower_identities.lower_identities": {"tf": 2}}, "df": 5, "e": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}, "a": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "c": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}, "e": {"docs": {"sqlglot.dialects": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.errors.SqlglotError": {"tf": 1}, "sqlglot.errors.UnsupportedError": {"tf": 1}, "sqlglot.errors.ParseError": {"tf": 1}, "sqlglot.errors.TokenError": {"tf": 1}, "sqlglot.errors.OptimizeError": {"tf": 1}, "sqlglot.errors.SchemaError": {"tf": 1}, "sqlglot.errors.ExecuteError": {"tf": 1}, "sqlglot.executor.table.Tables": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.expressions.Func": {"tf": 1}, "sqlglot.helper.find_new_name": {"tf": 1.4142135623730951}, "sqlglot.schema.Schema": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1}}, "df": 15, "d": {"docs": {"sqlglot.diff": {"tf": 2.449489742783178}, "sqlglot.diff.ChangeDistiller": {"tf": 1}, "sqlglot.executor": {"tf": 2}, "sqlglot.optimizer.optimize_joins.optimize_joins": {"tf": 1}, "sqlglot.optimizer.optimize_joins.reorder_joins": {"tf": 1}, "sqlglot.schema.MappingSchema": {"tf": 1}}, "df": 6}}}, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}}, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dialects": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 2.449489742783178}, "sqlglot.executor.python.Python.Generator": {"tf": 2.449489742783178}, "sqlglot.expressions.Expression.walk": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.transform": {"tf": 1}, "sqlglot.expressions.Unionable.union": {"tf": 1}, "sqlglot.expressions.Unionable.intersect": {"tf": 1}, "sqlglot.expressions.Unionable.except_": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1.4142135623730951}, "sqlglot.expressions.Join.using": {"tf": 1.4142135623730951}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1.7320508075688772}, "sqlglot.expressions.Union.limit": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.group_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.order_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.sort_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.cluster_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.limit": {"tf": 1}, "sqlglot.expressions.Select.offset": {"tf": 1}, "sqlglot.expressions.Select.lateral": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.join": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.where": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.having": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.distinct": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.ctas": {"tf": 1}, "sqlglot.expressions.Func": {"tf": 1}, "sqlglot.expressions.union": {"tf": 1}, "sqlglot.expressions.intersect": {"tf": 1}, "sqlglot.expressions.except_": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 2.449489742783178}, "sqlglot.helper.is_iterable": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1}, "sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1}}, "df": 57, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dialects": {"tf": 1}, "sqlglot.executor": {"tf": 1}, "sqlglot.expressions.true": {"tf": 1}, "sqlglot.expressions.false": {"tf": 1}}, "df": 5, "s": {"docs": {"sqlglot.expressions.Expression": {"tf": 1}}, "df": 1}}}}}}, "t": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.transpile": {"tf": 1}, "sqlglot.diff": {"tf": 2}, "sqlglot.executor": {"tf": 1}, "sqlglot.helper.flatten": {"tf": 1}}, "df": 4}, "t": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.helper.seq_get": {"tf": 1}}, "df": 1}}}}, "b": {"docs": {"sqlglot.trie.in_trie": {"tf": 1}}, "df": 1}}, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dialects": {"tf": 1}}, "df": 1}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}, "e": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}, "d": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.expressions.Expression.bfs": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1}}, "df": 3}}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.expressions.Expression.walk": {"tf": 1}, "sqlglot.optimizer.scope.Scope.branch": {"tf": 1}}, "df": 2}}}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}, "c": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.optimizer.pushdown_predicates.pushdown_cnf": {"tf": 1}}, "df": 1, "s": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_dnf": {"tf": 1}}, "df": 2}}}}, "a": {"docs": {"sqlglot.expressions.Unionable.union": {"tf": 1.4142135623730951}, "sqlglot.expressions.Unionable.intersect": {"tf": 1.4142135623730951}, "sqlglot.expressions.Unionable.except_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Join.using": {"tf": 1.4142135623730951}, "sqlglot.expressions.union": {"tf": 1.4142135623730951}, "sqlglot.expressions.intersect": {"tf": 1.4142135623730951}, "sqlglot.expressions.except_": {"tf": 1.4142135623730951}, "sqlglot.helper.flatten": {"tf": 1.4142135623730951}, "sqlglot.trie.new_trie": {"tf": 1}}, "df": 9, "n": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}, "c": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.expressions.not_": {"tf": 1.4142135623730951}}, "df": 1}}, "b": {"docs": {"sqlglot.trie.new_trie": {"tf": 1}}, "df": 1}}}, "f": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.Expression.walk": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.bfs": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1.4142135623730951}}, "df": 5}}}, "u": {"docs": {"sqlglot.executor": {"tf": 2}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 1.7320508075688772}}, "df": 2, "s": {"docs": {"sqlglot.expressions.Expression": {"tf": 1}}, "df": 1, "e": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dataframe": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 2.23606797749979}, "sqlglot.diff": {"tf": 2}, "sqlglot.executor": {"tf": 1.7320508075688772}, "sqlglot.executor.python.Python.Generator": {"tf": 2.23606797749979}, "sqlglot.expressions.Condition.and_": {"tf": 1}, "sqlglot.expressions.Condition.or_": {"tf": 1}, "sqlglot.expressions.Unionable.union": {"tf": 1}, "sqlglot.expressions.Unionable.intersect": {"tf": 1}, "sqlglot.expressions.Unionable.except_": {"tf": 1}, "sqlglot.expressions.Delete.delete": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Delete.returning": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Join.using": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1}, "sqlglot.expressions.Union.limit": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.expressions.Select.limit": {"tf": 1}, "sqlglot.expressions.Select.offset": {"tf": 1}, "sqlglot.expressions.Select.select": {"tf": 1}, "sqlglot.expressions.Select.lateral": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.where": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1}, "sqlglot.expressions.Select.ctas": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1}, "sqlglot.expressions.union": {"tf": 1}, "sqlglot.expressions.intersect": {"tf": 1}, "sqlglot.expressions.except_": {"tf": 1}, "sqlglot.expressions.select": {"tf": 1}, "sqlglot.expressions.from_": {"tf": 1}, "sqlglot.expressions.update": {"tf": 1}, "sqlglot.expressions.delete": {"tf": 1}, "sqlglot.expressions.condition": {"tf": 1}, "sqlglot.expressions.and_": {"tf": 1}, "sqlglot.expressions.or_": {"tf": 1}, "sqlglot.expressions.not_": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1.4142135623730951}, "sqlglot.expressions.subquery": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator": {"tf": 2.23606797749979}, "sqlglot.generator.Generator.generate": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser": {"tf": 1}}, "df": 90, "d": {"docs": {"sqlglot": {"tf": 2}, "sqlglot.schema": {"tf": 1}, "sqlglot.transpile": {"tf": 1.4142135623730951}, "sqlglot.dataframe": {"tf": 1}, "sqlglot.dialects.dialect.format_time_lambda": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 1.7320508075688772}, "sqlglot.diff.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1.7320508075688772}, "sqlglot.executor.context.Context": {"tf": 1.4142135623730951}, "sqlglot.executor.table.Tables": {"tf": 1}, "sqlglot.expressions": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.text": {"tf": 1}, "sqlglot.expressions.Expression.walk": {"tf": 1}, "sqlglot.expressions.Expression.error_messages": {"tf": 1.4142135623730951}, "sqlglot.expressions.Condition.and_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Condition.or_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Unionable.union": {"tf": 1.4142135623730951}, "sqlglot.expressions.Unionable.intersect": {"tf": 1.4142135623730951}, "sqlglot.expressions.Unionable.except_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Delete.delete": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1.4142135623730951}, "sqlglot.expressions.Delete.returning": {"tf": 1.4142135623730951}, "sqlglot.expressions.Join.on": {"tf": 1.4142135623730951}, "sqlglot.expressions.Join.using": {"tf": 1.4142135623730951}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1.7320508075688772}, "sqlglot.expressions.Union.limit": {"tf": 1.4142135623730951}, "sqlglot.expressions.Union.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.from_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.group_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.order_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.sort_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.cluster_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.limit": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.offset": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.lateral": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.join": {"tf": 2}, "sqlglot.expressions.Select.where": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.having": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.ctas": {"tf": 1.4142135623730951}, "sqlglot.expressions.Tag": {"tf": 1}, "sqlglot.expressions.Func": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1}, "sqlglot.expressions.union": {"tf": 1.7320508075688772}, "sqlglot.expressions.intersect": {"tf": 1.7320508075688772}, "sqlglot.expressions.except_": {"tf": 1.7320508075688772}, "sqlglot.expressions.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.from_": {"tf": 1.4142135623730951}, "sqlglot.expressions.update": {"tf": 1}, "sqlglot.expressions.delete": {"tf": 1}, "sqlglot.expressions.condition": {"tf": 1.4142135623730951}, "sqlglot.expressions.and_": {"tf": 1.4142135623730951}, "sqlglot.expressions.or_": {"tf": 1.4142135623730951}, "sqlglot.expressions.not_": {"tf": 1.4142135623730951}, "sqlglot.expressions.alias_": {"tf": 1.4142135623730951}, "sqlglot.expressions.subquery": {"tf": 1.4142135623730951}, "sqlglot.expressions.func": {"tf": 1.4142135623730951}, "sqlglot.helper.AutoName": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1}, "sqlglot.lineage.lineage": {"tf": 1}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.optimizer.scope.Scope.replace": {"tf": 1}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1}, "sqlglot.parser.Parser.parse": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 1}, "sqlglot.parser.Parser.validate_expression": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1}, "sqlglot.schema.MappingSchema": {"tf": 1}, "sqlglot.transforms.preprocess": {"tf": 1}, "sqlglot.trie.new_trie": {"tf": 1}}, "df": 73}, "s": {"docs": {"sqlglot": {"tf": 1.7320508075688772}, "sqlglot.dialects": {"tf": 1}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression": {"tf": 1}}, "df": 4}, "f": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.executor": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.expressions.Expression.assert_is": {"tf": 1}, "sqlglot.helper.first": {"tf": 1}, "sqlglot.transforms.eliminate_distinct_on": {"tf": 1}, "sqlglot.transforms.delegate": {"tf": 1}}, "df": 7}}}, "r": {"docs": {"sqlglot": {"tf": 2.23606797749979}, "sqlglot.dataframe": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope": {"tf": 1}, "sqlglot.optimizer.scope.Scope.udtfs": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_udtf": {"tf": 1}}, "df": 5, "s": {"docs": {"sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 5}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dataframe": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.diff": {"tf": 2}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.expressions.Join.using": {"tf": 2}, "sqlglot.expressions.Select.join": {"tf": 2}, "sqlglot.lineage.LineageHTML": {"tf": 1}, "sqlglot.transforms.eliminate_qualify": {"tf": 1}, "sqlglot.transforms.preprocess": {"tf": 1}}, "df": 11}}}, "u": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dialects": {"tf": 1}}, "df": 1}}}}}}, "n": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}}}}, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator": {"tf": 1.4142135623730951}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 1.4142135623730951}}, "df": 23, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.Expression.unnest_operands": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 1}}, "df": 2}}}}}, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.replace_placeholders": {"tf": 1}}, "df": 1}}}}}, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 2.23606797749979}, "sqlglot.executor.python.Python.Generator": {"tf": 2.23606797749979}, "sqlglot.generator.Generator": {"tf": 2.23606797749979}}, "df": 22, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}}, "df": 21}}}}}}}, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe": {"tf": 1}}, "df": 1}}}}}}}}}, "r": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}, "c": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.trie.in_trie": {"tf": 1}}, "df": 1}}}}}}}}}}, "i": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}}}, "t": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.executor": {"tf": 1}, "sqlglot.expressions.TimeUnit": {"tf": 1}}, "df": 3}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.dialects": {"tf": 1}, "sqlglot.executor": {"tf": 1}, "sqlglot.helper.open_file": {"tf": 1}}, "df": 3}}}}}}, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.Unionable.union": {"tf": 2.23606797749979}, "sqlglot.expressions.Union.limit": {"tf": 1.4142135623730951}, "sqlglot.expressions.Union.select": {"tf": 2.449489742783178}, "sqlglot.expressions.union": {"tf": 2.23606797749979}, "sqlglot.optimizer.scope.Scope": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.Scope.is_union": {"tf": 1}}, "df": 6, "s": {"docs": {"sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1.4142135623730951}}, "df": 1}, "/": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}}}, "q": {"docs": {"sqlglot.optimizer.simplify.uniq_sort": {"tf": 1}}, "df": 1, "u": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.expressions.column_table_names": {"tf": 1}}, "df": 3}}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1}}, "df": 2}}}}}, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 1}}}}, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}}, "df": 2, "d": {"docs": {"sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1.7320508075688772}, "sqlglot.optimizer.lower_identities.lower_identities": {"tf": 1}}, "df": 3}}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.optimizer.scope.Scope.unqualified_columns": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1, "l": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}}, "df": 1}}}}}}}, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 4}}, "df": 1}}}}}}}, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}}}, "f": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.helper.apply_index_offset": {"tf": 1}}, "df": 1}}}}}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.transforms.unalias_group": {"tf": 1}}, "df": 1}}}}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.helper.while_changing": {"tf": 1}}, "df": 1}}}, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.optimizer.eliminate_ctes.eliminate_ctes": {"tf": 1}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 1}, "sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 1.7320508075688772}}, "df": 3}}}}}, "p": {"docs": {"sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1}, "sqlglot.diff": {"tf": 1.7320508075688772}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.replace": {"tf": 1}}, "df": 5, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}}, "df": 21}}}}, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.executor.python.Python.Generator": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator": {"tf": 1.4142135623730951}, "sqlglot.helper.should_identify": {"tf": 1}}, "df": 22}}}, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 2}, "sqlglot.diff.diff": {"tf": 1}, "sqlglot.expressions.Select.lock": {"tf": 2}, "sqlglot.expressions.update": {"tf": 2.23606797749979}, "sqlglot.schema.Schema.add_table": {"tf": 1}, "sqlglot.schema.MappingSchema.add_table": {"tf": 1}}, "df": 6, "s": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.schema.MappingSchema.add_table": {"tf": 1}}, "df": 2}, "d": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.diff.Update": {"tf": 1}}, "df": 2}}}}}}, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}}}, "d": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}, "t": {"docs": {}, "df": 0, "f": {"docs": {"sqlglot.optimizer.scope.Scope": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.udtfs": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_udtf": {"tf": 1}}, "df": 3, "s": {"docs": {"sqlglot.optimizer.scope.Scope.udtfs": {"tf": 1}}, "df": 1}}}}}, "f": {"docs": {"sqlglot": {"tf": 3}, "sqlglot.dataframe": {"tf": 4.69041575982343}, "sqlglot.dialects": {"tf": 1}, "sqlglot.diff": {"tf": 2.8284271247461903}, "sqlglot.trie.new_trie": {"tf": 1}}, "df": 5, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot": {"tf": 3.4641016151377544}, "sqlglot.parse_one": {"tf": 1.4142135623730951}, "sqlglot.dataframe": {"tf": 2.8284271247461903}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.dialects": {"tf": 1.7320508075688772}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.dialect.format_time_lambda": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.diff": {"tf": 6.855654600401044}, "sqlglot.diff.diff": {"tf": 1.4142135623730951}, "sqlglot.errors.SqlglotError": {"tf": 1}, "sqlglot.errors.UnsupportedError": {"tf": 1}, "sqlglot.errors.ParseError": {"tf": 1}, "sqlglot.errors.TokenError": {"tf": 1}, "sqlglot.errors.OptimizeError": {"tf": 1}, "sqlglot.errors.SchemaError": {"tf": 1}, "sqlglot.errors.ExecuteError": {"tf": 1}, "sqlglot.executor": {"tf": 4}, "sqlglot.executor.context.Context": {"tf": 1}, "sqlglot.executor.table.Tables": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression": {"tf": 2}, "sqlglot.expressions.Expression.text": {"tf": 1}, "sqlglot.expressions.Expression.iter_expressions": {"tf": 1}, "sqlglot.expressions.Expression.replace": {"tf": 1}, "sqlglot.expressions.Expression.assert_is": {"tf": 1}, "sqlglot.expressions.Expression.error_messages": {"tf": 1}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 1}, "sqlglot.expressions.Select.lock": {"tf": 2.23606797749979}, "sqlglot.expressions.Tag": {"tf": 1}, "sqlglot.expressions.Func": {"tf": 1.4142135623730951}, "sqlglot.expressions.union": {"tf": 1}, "sqlglot.expressions.intersect": {"tf": 1}, "sqlglot.expressions.except_": {"tf": 1}, "sqlglot.expressions.select": {"tf": 1}, "sqlglot.expressions.from_": {"tf": 1}, "sqlglot.expressions.update": {"tf": 1}, "sqlglot.expressions.delete": {"tf": 1}, "sqlglot.expressions.condition": {"tf": 1}, "sqlglot.helper.AutoName": {"tf": 1}, "sqlglot.helper.subclasses": {"tf": 1.4142135623730951}, "sqlglot.helper.find_new_name": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1}, "sqlglot.helper.dict_depth": {"tf": 1}, "sqlglot.helper.first": {"tf": 1}, "sqlglot.lineage.lineage": {"tf": 1.4142135623730951}, "sqlglot.optimizer.qualify_columns.Resolver": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.get_table": {"tf": 1.4142135623730951}, "sqlglot.optimizer.qualify_columns.Resolver.get_source_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 3}, "sqlglot.optimizer.scope.Scope.derived_tables": {"tf": 1}, "sqlglot.optimizer.scope.Scope.subqueries": {"tf": 1}, "sqlglot.optimizer.scope.Scope.selects": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.source_columns": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.build_scope": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 1}, "sqlglot.parser.Parser.expression": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1.4142135623730951}, "sqlglot.planner.Scan.from_expression": {"tf": 1.4142135623730951}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1.4142135623730951}, "sqlglot.schema.Schema": {"tf": 1}, "sqlglot.schema.Schema.column_names": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1.4142135623730951}, "sqlglot.schema.MappingSchema": {"tf": 1}, "sqlglot.schema.MappingSchema.column_names": {"tf": 1}, "sqlglot.time.format_time": {"tf": 1}, "sqlglot.transforms.eliminate_distinct_on": {"tf": 1}, "sqlglot.transforms.eliminate_qualify": {"tf": 1}, "sqlglot.transforms.remove_precision_parameterized_types": {"tf": 1}, "sqlglot.transforms.delegate": {"tf": 1}}, "df": 87, "m": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 1.7320508075688772}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.helper.AutoName": {"tf": 1}, "sqlglot.optimizer.canonicalize.canonicalize": {"tf": 1}, "sqlglot.optimizer.normalize.normalize": {"tf": 1.7320508075688772}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_cnf": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_dnf": {"tf": 1.4142135623730951}}, "df": 10, "a": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.pretty": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.format_time_lambda": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.executor.python.Python.Generator": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator": {"tf": 1.4142135623730951}, "sqlglot.helper.csv": {"tf": 1}, "sqlglot.time.format_time": {"tf": 1.7320508075688772}}, "df": 26, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1}}, "df": 3}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.format_time_lambda": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.7320508075688772}, "sqlglot.executor.python.Python.Generator": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator": {"tf": 1.7320508075688772}, "sqlglot.helper.csv": {"tf": 1}}, "df": 23}}}, "s": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.helper.csv": {"tf": 1}}, "df": 2}}, "l": {"docs": {"sqlglot.helper.count_params": {"tf": 1}}, "df": 1, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}, "s": {"docs": {"sqlglot.executor.execute": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.schema.MappingSchema": {"tf": 1}}, "df": 3}}, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.expressions.to_identifier": {"tf": 1}, "sqlglot.expressions.column": {"tf": 1}, "sqlglot.optimizer.canonicalize.canonicalize": {"tf": 1}}, "df": 4, "s": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}, "o": {"docs": {"sqlglot": {"tf": 3.1622776601683795}, "sqlglot.executor.env.null_if_any": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1.4142135623730951}, "sqlglot.expressions.Unionable.union": {"tf": 1.4142135623730951}, "sqlglot.expressions.Unionable.intersect": {"tf": 1.4142135623730951}, "sqlglot.expressions.Unionable.except_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Join.using": {"tf": 1.4142135623730951}, "sqlglot.expressions.union": {"tf": 1.4142135623730951}, "sqlglot.expressions.intersect": {"tf": 1.4142135623730951}, "sqlglot.expressions.except_": {"tf": 1.4142135623730951}, "sqlglot.expressions.alias_": {"tf": 1.4142135623730951}, "sqlglot.expressions.replace_placeholders": {"tf": 1.4142135623730951}, "sqlglot.optimizer.lower_identities.lower_identities": {"tf": 1.4142135623730951}, "sqlglot.trie.new_trie": {"tf": 1}}, "df": 14}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.errors.ErrorLevel.IMMEDIATE": {"tf": 1}, "sqlglot.executor": {"tf": 1}, "sqlglot.expressions.Expression.find": {"tf": 1}, "sqlglot.expressions.Expression.error_messages": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1}, "sqlglot.parser.Parser.check_errors": {"tf": 1}}, "df": 8, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 2, "s": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}}}}, "/": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.optimizer.qualify_columns.Resolver.get_table": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dataframe": {"tf": 1}, "sqlglot.dialects": {"tf": 1}, "sqlglot.diff": {"tf": 2.8284271247461903}, "sqlglot.executor": {"tf": 1.7320508075688772}, "sqlglot.executor.execute": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.optimizer.scope.Scope.selects": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1.4142135623730951}, "sqlglot.planner.Scan.from_expression": {"tf": 1.4142135623730951}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1.4142135623730951}, "sqlglot.schema.MappingSchema": {"tf": 1}}, "df": 12}}}, "s": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}, "sqlglot.executor.table.Tables": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1}}, "df": 3}}}}, "k": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}, "c": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 2}}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {"sqlglot": {"tf": 6.557438524302}, "sqlglot.dataframe": {"tf": 4.58257569495584}, "sqlglot.dialects": {"tf": 2}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.diff": {"tf": 4.358898943540674}, "sqlglot.executor": {"tf": 4}, "sqlglot.executor.table.Tables": {"tf": 1}, "sqlglot.expressions.Expression.output_name": {"tf": 1}, "sqlglot.expressions.Expression.transform": {"tf": 1}, "sqlglot.expressions.Expression.replace": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.pop": {"tf": 1}, "sqlglot.expressions.Expression.assert_is": {"tf": 1.4142135623730951}, "sqlglot.expressions.Unionable.union": {"tf": 2}, "sqlglot.expressions.Unionable.intersect": {"tf": 2}, "sqlglot.expressions.Unionable.except_": {"tf": 2}, "sqlglot.expressions.Column.output_name": {"tf": 1}, "sqlglot.expressions.Delete.delete": {"tf": 1.4142135623730951}, "sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Delete.returning": {"tf": 1}, "sqlglot.expressions.Identifier.output_name": {"tf": 1}, "sqlglot.expressions.Literal.output_name": {"tf": 1}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 2}, "sqlglot.expressions.Subqueryable.with_": {"tf": 2}, "sqlglot.expressions.Union.limit": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 2.6457513110645907}, "sqlglot.expressions.Select.from_": {"tf": 2.449489742783178}, "sqlglot.expressions.Select.group_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.order_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.sort_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.cluster_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.limit": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.offset": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.lateral": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.join": {"tf": 2.449489742783178}, "sqlglot.expressions.Select.where": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.having": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.distinct": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.ctas": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.lock": {"tf": 2}, "sqlglot.expressions.Subquery.output_name": {"tf": 1}, "sqlglot.expressions.Star.output_name": {"tf": 1}, "sqlglot.expressions.Alias.output_name": {"tf": 1}, "sqlglot.expressions.Cast.output_name": {"tf": 1}, "sqlglot.expressions.union": {"tf": 2.23606797749979}, "sqlglot.expressions.intersect": {"tf": 2.23606797749979}, "sqlglot.expressions.except_": {"tf": 2.23606797749979}, "sqlglot.expressions.select": {"tf": 1.7320508075688772}, "sqlglot.expressions.from_": {"tf": 2.23606797749979}, "sqlglot.expressions.update": {"tf": 2}, "sqlglot.expressions.delete": {"tf": 1}, "sqlglot.expressions.condition": {"tf": 1.4142135623730951}, "sqlglot.expressions.to_interval": {"tf": 1}, "sqlglot.expressions.to_table": {"tf": 1}, "sqlglot.expressions.to_column": {"tf": 1}, "sqlglot.expressions.subquery": {"tf": 1.7320508075688772}, "sqlglot.expressions.table_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.replace_tables": {"tf": 1.7320508075688772}, "sqlglot.expressions.replace_placeholders": {"tf": 1.7320508075688772}, "sqlglot.expressions.expand": {"tf": 2.23606797749979}, "sqlglot.helper.subclasses": {"tf": 1}, "sqlglot.helper.camel_to_snake_case": {"tf": 1}, "sqlglot.helper.object_to_dict": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1.4142135623730951}, "sqlglot.helper.first": {"tf": 1}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1.4142135623730951}, "sqlglot.optimizer.eliminate_ctes.eliminate_ctes": {"tf": 2}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 2}, "sqlglot.optimizer.eliminate_joins.join_condition": {"tf": 1}, "sqlglot.optimizer.eliminate_subqueries.eliminate_subqueries": {"tf": 3}, "sqlglot.optimizer.expand_laterals.expand_laterals": {"tf": 1.4142135623730951}, "sqlglot.optimizer.expand_multi_table_selects.expand_multi_table_selects": {"tf": 2}, "sqlglot.optimizer.lower_identities.lower_identities": {"tf": 1.4142135623730951}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 2.8284271247461903}, "sqlglot.optimizer.normalize.normalize": {"tf": 1}, "sqlglot.optimizer.optimize_joins.optimize_joins": {"tf": 1.7320508075688772}, "sqlglot.optimizer.optimize_joins.normalize": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_predicates": {"tf": 2}, "sqlglot.optimizer.pushdown_predicates.pushdown_dnf": {"tf": 1}, "sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 2}, "sqlglot.optimizer.qualify_columns.qualify_columns": {"tf": 1.4142135623730951}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope": {"tf": 2.449489742783178}, "sqlglot.optimizer.scope.Scope.branch": {"tf": 1}, "sqlglot.optimizer.scope.Scope.derived_tables": {"tf": 1}, "sqlglot.optimizer.scope.Scope.subqueries": {"tf": 1}, "sqlglot.optimizer.scope.Scope.columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.selects": {"tf": 1}, "sqlglot.optimizer.scope.Scope.remove_source": {"tf": 1}, "sqlglot.optimizer.scope.Scope.traverse": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 2.23606797749979}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 2}, "sqlglot.parser.Parser": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1.7320508075688772}, "sqlglot.planner.Scan.from_expression": {"tf": 1.7320508075688772}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1.7320508075688772}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1}, "sqlglot.transforms.unalias_group": {"tf": 1.4142135623730951}, "sqlglot.transforms.remove_precision_parameterized_types": {"tf": 1}, "sqlglot.trie.new_trie": {"tf": 1}}, "df": 121, "s": {"docs": {"sqlglot.optimizer.pushdown_predicates.pushdown_predicates": {"tf": 1}}, "df": 1}}}, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.dialects": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 2}}}}}}}, "e": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1}, "sqlglot.expressions.Expression.transform": {"tf": 1}, "sqlglot.expressions.replace_children": {"tf": 1}}, "df": 4, "c": {"docs": {"sqlglot.expressions.Expression.error_messages": {"tf": 1}, "sqlglot.expressions.Kwarg": {"tf": 1}, "sqlglot.expressions.func": {"tf": 2}, "sqlglot.helper.while_changing": {"tf": 1}, "sqlglot.parser.Parser.validate_expression": {"tf": 1}}, "df": 5, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.executor": {"tf": 1}, "sqlglot.executor.env.null_if_any": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.expressions.Expression.transform": {"tf": 2}, "sqlglot.expressions.Expression.error_messages": {"tf": 1}, "sqlglot.expressions.Func": {"tf": 1.7320508075688772}, "sqlglot.expressions.func": {"tf": 2.23606797749979}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.helper.csv_reader": {"tf": 1}, "sqlglot.helper.count_params": {"tf": 1}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_udtf": {"tf": 1}, "sqlglot.transforms.eliminate_distinct_on": {"tf": 1}, "sqlglot.transforms.preprocess": {"tf": 1.4142135623730951}}, "df": 35, "s": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dataframe": {"tf": 2.23606797749979}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.executor.context.Context": {"tf": 1}, "sqlglot.executor.context.Context.__init__": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.expressions": {"tf": 1}, "sqlglot.expressions.Kwarg": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 1}, "sqlglot.optimizer.scope.Scope.udtfs": {"tf": 1}, "sqlglot.transforms.eliminate_distinct_on": {"tf": 1}, "sqlglot.transforms.eliminate_qualify": {"tf": 1}, "sqlglot.transforms.preprocess": {"tf": 1}, "sqlglot.transforms.delegate": {"tf": 1}}, "df": 34}, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dataframe": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.dataframe.sql.Column.cast": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 4}}}}}}}}}}}, "g": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.diff": {"tf": 1}}, "df": 2}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.executor": {"tf": 1}, "sqlglot.expressions.table_name": {"tf": 1}}, "df": 3, "y": {"docs": {"sqlglot.optimizer.qualify_columns.qualify_columns": {"tf": 1}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"tf": 1}}, "df": 2}}}, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"6": {"4": {"docs": {"sqlglot": {"tf": 1.7320508075688772}, "sqlglot.dialects": {"tf": 1.7320508075688772}}, "df": 2}, "docs": {}, "df": 0}, "docs": {"sqlglot": {"tf": 1.7320508075688772}, "sqlglot.dialects": {"tf": 1}}, "df": 2}}, "r": {"docs": {}, "df": 0, "\u00e9": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.helper.flatten": {"tf": 1.4142135623730951}}, "df": 1, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}, "s": {"docs": {"sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.helper.flatten": {"tf": 1}}, "df": 6}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.helper.flatten": {"tf": 1}}, "df": 1}}}}}}, "g": {"docs": {"sqlglot.expressions.Unionable.union": {"tf": 1}, "sqlglot.expressions.Unionable.intersect": {"tf": 1}, "sqlglot.expressions.Unionable.except_": {"tf": 1}, "sqlglot.expressions.union": {"tf": 1}, "sqlglot.expressions.intersect": {"tf": 1}, "sqlglot.expressions.except_": {"tf": 1}}, "df": 6}}, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}, "sqlglot.diff.ChangeDistiller": {"tf": 1}}, "df": 2}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot": {"tf": 2.449489742783178}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.diff": {"tf": 2}, "sqlglot.executor": {"tf": 1}, "sqlglot.expressions.Expression.replace": {"tf": 1}, "sqlglot.expressions.column_table_names": {"tf": 1}, "sqlglot.expressions.table_name": {"tf": 1}, "sqlglot.helper.subclasses": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.get_table": {"tf": 1}}, "df": 10, "/": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe": {"tf": 1}}, "df": 1}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.transforms.preprocess": {"tf": 1}}, "df": 2, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1.7320508075688772}}, "df": 3}}, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}, "e": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.parse_one": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 2.8284271247461903}, "sqlglot.errors.ErrorLevel.IMMEDIATE": {"tf": 1}, "sqlglot.executor": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.find": {"tf": 1}, "sqlglot.expressions.Expression.dfs": {"tf": 1}, "sqlglot.expressions.Expression.bfs": {"tf": 1}, "sqlglot.expressions.Expression.unnest": {"tf": 1}, "sqlglot.expressions.Subquery.unnest": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1}, "sqlglot.helper.first": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.traverse": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 1}}, "df": 15}}}, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.helper.open_file": {"tf": 1}}, "df": 2, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.transforms.eliminate_qualify": {"tf": 1}}, "df": 1, "s": {"docs": {"sqlglot.executor": {"tf": 1.4142135623730951}}, "df": 1}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.transforms.eliminate_qualify": {"tf": 1}}, "df": 1}}}}}, "l": {"docs": {"sqlglot.helper.split_num_words": {"tf": 1.4142135623730951}}, "df": 1}}, "g": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 2.23606797749979}}, "df": 1}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}, "x": {"docs": {"sqlglot.helper.while_changing": {"tf": 1}}, "df": 1}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 3.1622776601683795}, "sqlglot.dataframe": {"tf": 3.4641016151377544}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.7320508075688772}, "sqlglot.diff": {"tf": 1}, "sqlglot.diff.diff": {"tf": 2}, "sqlglot.executor": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.expressions.Delete.delete": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Delete.returning": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Join.using": {"tf": 1}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Union.limit": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.expressions.Select.limit": {"tf": 1}, "sqlglot.expressions.Select.offset": {"tf": 1}, "sqlglot.expressions.Select.select": {"tf": 1}, "sqlglot.expressions.Select.lateral": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1}, "sqlglot.expressions.Select.where": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1}, "sqlglot.expressions.Select.distinct": {"tf": 1}, "sqlglot.expressions.Select.ctas": {"tf": 1}, "sqlglot.expressions.Select.lock": {"tf": 1.4142135623730951}, "sqlglot.expressions.maybe_parse": {"tf": 1.4142135623730951}, "sqlglot.expressions.false": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1.7320508075688772}, "sqlglot.helper.split_num_words": {"tf": 1}, "sqlglot.helper.is_iterable": {"tf": 1}, "sqlglot.optimizer.normalize.normalize": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1}, "sqlglot.optimizer.simplify.remove_compliments": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1}}, "df": 78}}, "l": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1.7320508075688772}}, "df": 2, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}}, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 2}}}}}}}, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.dataframe": {"tf": 1}}, "df": 1}}}}}}, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.dataframe": {"tf": 1}}, "df": 1}}}}}}, "w": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}, "l": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe": {"tf": 2}}, "df": 1}}}}}, "l": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.expressions.Union.limit": {"tf": 1}, "sqlglot.trie.new_trie": {"tf": 1}}, "df": 3, "i": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1.7320508075688772}, "sqlglot.dataframe": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 2.23606797749979}, "sqlglot.expressions.Predicate": {"tf": 1}, "sqlglot.expressions.Tag": {"tf": 1}, "sqlglot.expressions.Kwarg": {"tf": 1}, "sqlglot.expressions.to_interval": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_cnf": {"tf": 1}}, "df": 9}}, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot": {"tf": 1.4142135623730951}}, "df": 1}, "e": {"docs": {"sqlglot": {"tf": 2}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}}, "df": 22, "s": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}}, "df": 22}, "/": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}}, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.lineage.lineage": {"tf": 2}}, "df": 1}}}}, "k": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.generate": {"tf": 1}, "sqlglot.expressions.Expression.is_string": {"tf": 1}, "sqlglot.expressions.Expression.is_number": {"tf": 1}, "sqlglot.expressions.Expression.is_int": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1}, "sqlglot.helper.apply_index_offset": {"tf": 1}}, "df": 8, "s": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.expressions.Expression.text": {"tf": 1}}, "df": 2}}}}}, "t": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 2}, "sqlglot.executor": {"tf": 1}}, "df": 2, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dataframe": {"tf": 1.7320508075688772}}, "df": 1}}}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.transpile": {"tf": 1.7320508075688772}, "sqlglot.dataframe": {"tf": 1.7320508075688772}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.diff.diff": {"tf": 2.23606797749979}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.expressions.Expression.append": {"tf": 2}, "sqlglot.expressions.Expression.iter_expressions": {"tf": 1}, "sqlglot.expressions.Expression.error_messages": {"tf": 1}, "sqlglot.expressions.Join.using": {"tf": 1}, "sqlglot.expressions.Func": {"tf": 1.7320508075688772}, "sqlglot.expressions.alias_": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1}, "sqlglot.expressions.column_table_names": {"tf": 1.4142135623730951}, "sqlglot.helper.ensure_list": {"tf": 2}, "sqlglot.helper.ensure_collection": {"tf": 1.4142135623730951}, "sqlglot.helper.subclasses": {"tf": 1}, "sqlglot.helper.apply_index_offset": {"tf": 1.4142135623730951}, "sqlglot.helper.tsort": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1.4142135623730951}, "sqlglot.helper.flatten": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope": {"tf": 3}, "sqlglot.optimizer.scope.Scope.tables": {"tf": 1}, "sqlglot.optimizer.scope.Scope.ctes": {"tf": 1}, "sqlglot.optimizer.scope.Scope.derived_tables": {"tf": 1}, "sqlglot.optimizer.scope.Scope.udtfs": {"tf": 1}, "sqlglot.optimizer.scope.Scope.subqueries": {"tf": 1}, "sqlglot.optimizer.scope.Scope.columns": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1.7320508075688772}, "sqlglot.parser.Parser": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser.parse": {"tf": 2}, "sqlglot.parser.Parser.parse_into": {"tf": 2}, "sqlglot.parser.Parser.raise_error": {"tf": 1}, "sqlglot.parser.Parser.expression": {"tf": 1}, "sqlglot.parser.Parser.validate_expression": {"tf": 1}, "sqlglot.schema.Schema.column_names": {"tf": 1}, "sqlglot.schema.MappingSchema.column_names": {"tf": 1}, "sqlglot.tokens.Tokenizer.tokenize": {"tf": 1}}, "df": 56, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}, "[": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.optimizer.eliminate_joins.join_condition": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 1}}, "df": 2}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.scope.Scope": {"tf": 2.449489742783178}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}}, "df": 2}}}}}, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.optimizer.scope.Scope.tables": {"tf": 1}, "sqlglot.optimizer.scope.Scope.ctes": {"tf": 1}, "sqlglot.optimizer.scope.Scope.derived_tables": {"tf": 1}, "sqlglot.optimizer.scope.Scope.udtfs": {"tf": 1}, "sqlglot.optimizer.scope.Scope.subqueries": {"tf": 1}, "sqlglot.optimizer.scope.Scope.columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.selects": {"tf": 1}, "sqlglot.optimizer.scope.Scope.external_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.unqualified_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.join_hints": {"tf": 1}, "sqlglot.optimizer.scope.Scope.source_columns": {"tf": 1}}, "df": 11}}}}}}, "b": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1}}, "df": 3}}}}}, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.expressions.Expression.error_messages": {"tf": 1}, "sqlglot.expressions.Union.limit": {"tf": 2.23606797749979}, "sqlglot.expressions.Select.limit": {"tf": 2.23606797749979}}, "df": 4, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.Union.limit": {"tf": 1}}, "df": 1}}}}}, "g": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}}}}}, "o": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dataframe": {"tf": 1}}, "df": 2, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}, "k": {"docs": {"sqlglot.expressions.Select.lock": {"tf": 1.4142135623730951}}, "df": 1, "e": {"docs": {"sqlglot.dataframe": {"tf": 1.7320508075688772}}, "df": 1}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.expressions.Select.lock": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}}, "df": 1}}}}}, "g": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.errors.ErrorLevel.WARN": {"tf": 1}}, "df": 2, "i": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot.dialects": {"tf": 1}}, "df": 1, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.executor": {"tf": 2.23606797749979}, "sqlglot.expressions.condition": {"tf": 1.4142135623730951}, "sqlglot.expressions.and_": {"tf": 1}, "sqlglot.expressions.or_": {"tf": 1}}, "df": 4}}}}, "s": {"docs": {"sqlglot.parser.Parser.check_errors": {"tf": 1}}, "df": 1}}, "w": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.executor.python.Python.Generator": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator": {"tf": 1.4142135623730951}, "sqlglot.optimizer.lower_identities.lower_identities": {"tf": 1.7320508075688772}}, "df": 22}}}, "t": {"docs": {"sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1}, "sqlglot.diff": {"tf": 2}, "sqlglot.executor": {"tf": 1}}, "df": 3}, "o": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}}, "s": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}, "u": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.executor.table.Tables": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1}}, "df": 2}}}, "p": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}, "a": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.Expression.load": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver": {"tf": 1}, "sqlglot.serde.load": {"tf": 1}}, "df": 3}}}, "e": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot": {"tf": 1}}, "df": 1, "s": {"docs": {"sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1}}, "df": 2}, "\u2019": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}}, "f": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.join": {"tf": 1.4142135623730951}, "sqlglot.expressions.union": {"tf": 1.4142135623730951}, "sqlglot.expressions.intersect": {"tf": 1.4142135623730951}, "sqlglot.expressions.except_": {"tf": 1.4142135623730951}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 1.4142135623730951}}, "df": 10}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.transpile": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.persist": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.executor.python.Python.Generator": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser": {"tf": 1.7320508075688772}, "sqlglot.parser.Parser.check_errors": {"tf": 1}, "sqlglot.parser.Parser.raise_error": {"tf": 1}}, "df": 45}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1, "s": {"docs": {"sqlglot.executor": {"tf": 1}, "sqlglot.generator.Generator.generate": {"tf": 1}}, "df": 2}}}}}}}, "a": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.executor.python.Python.Generator": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator": {"tf": 1.4142135623730951}}, "df": 21}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1.7320508075688772}}, "df": 1, "s": {"docs": {"sqlglot.diff": {"tf": 5.196152422706632}}, "df": 1}}}, "f": {"docs": {"sqlglot.diff": {"tf": 6.324555320336759}, "sqlglot.expressions.Expression.text": {"tf": 1}}, "df": 2}, "r": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.Expression.find": {"tf": 1}, "sqlglot.expressions.Expression.find_all": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1}}, "df": 4}}}, "n": {"docs": {"sqlglot.diff": {"tf": 3.1622776601683795}, "sqlglot.expressions.Func": {"tf": 1}}, "df": 2, "g": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1.4142135623730951}, "sqlglot.expressions.Func": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1.4142135623730951}}, "df": 24}}}}, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}, "s": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}, "x": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}, "a": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1, "m": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dialects": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.expressions.replace_children": {"tf": 1}}, "df": 4}}}}, "c": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.diff": {"tf": 1}}, "df": 2, "s": {"docs": {"sqlglot.dataframe": {"tf": 1}}, "df": 1}}}, "r": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1}}, "df": 43, "r": {"docs": {"sqlglot.expressions.condition": {"tf": 1}}, "df": 1}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.executor": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.expressions.Func": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1}}, "df": 42}}, "b": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.executor": {"tf": 1}, "sqlglot.schema.MappingSchema": {"tf": 1}}, "df": 2, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.expressions.Select.lateral": {"tf": 1.7320508075688772}, "sqlglot.optimizer.expand_laterals.expand_laterals": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 1.7320508075688772}}, "df": 3, "s": {"docs": {"sqlglot.optimizer.expand_laterals.expand_laterals": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 1}}, "df": 2}}}}}}, "y": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}, "z": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.optimizer.qualify_columns.Resolver": {"tf": 1}}, "df": 1}}}}, "w": {"docs": {"sqlglot.optimizer.simplify.simplify_not": {"tf": 1}}, "df": 1}}, "t": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dataframe": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.where": {"tf": 1.4142135623730951}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}, "sqlglot.optimizer.scope.Scope.derived_tables": {"tf": 1}, "sqlglot.optimizer.scope.Scope.subqueries": {"tf": 1}, "sqlglot.optimizer.simplify.rewrite_between": {"tf": 1}}, "df": 9, "/": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.simplify.rewrite_between": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe": {"tf": 2.23606797749979}}, "df": 1}}}}, "c": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 2}}, "df": 1}}, "l": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}, "r": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1}}, "df": 2, "e": {"docs": {"sqlglot.dialects": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 1}}, "df": 3, "a": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot": {"tf": 2.6457513110645907}, "sqlglot.parse": {"tf": 1}, "sqlglot.parse_one": {"tf": 1}, "sqlglot.transpile": {"tf": 1}, "sqlglot.dataframe": {"tf": 1}, "sqlglot.executor.execute": {"tf": 1}, "sqlglot.expressions.Select.lock": {"tf": 1}, "sqlglot.helper.csv_reader": {"tf": 1.4142135623730951}}, "df": 8, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.dataframe": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.helper.csv_reader": {"tf": 1.4142135623730951}}, "df": 1}}, "c": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "v": {"docs": {"sqlglot.helper.csv_reader": {"tf": 1}}, "df": 1}}}}, "l": {"docs": {"sqlglot": {"tf": 1.7320508075688772}}, "df": 1, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}, "d": {"docs": {"sqlglot.helper.while_changing": {"tf": 1}}, "df": 1}}}}, "s": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1, "s": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 2}}}}}, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.schema.Schema.add_table": {"tf": 1}}, "df": 4, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}}}, "d": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.executor.env.null_if_any": {"tf": 1.4142135623730951}, "sqlglot.expressions.values": {"tf": 1}}, "df": 4}, "s": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1}}, "df": 2}}}}}}, "f": {"docs": {"sqlglot.dataframe.sql.DataFrame.persist": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.diff.diff": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.transforms.eliminate_qualify": {"tf": 1.4142135623730951}}, "df": 4, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.optimizer.scope.Scope.columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.external_columns": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.join_hints": {"tf": 1}, "sqlglot.optimizer.scope.Scope.source_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.ref_count": {"tf": 1}}, "df": 6, "s": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.diff.diff": {"tf": 1}, "sqlglot.executor.context.Context": {"tf": 1.4142135623730951}, "sqlglot.optimizer.expand_laterals.expand_laterals": {"tf": 1}, "sqlglot.optimizer.optimize_joins.reorder_joins": {"tf": 1}, "sqlglot.transforms.unalias_group": {"tf": 1}}, "df": 7}, "d": {"docs": {"sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.diff.diff": {"tf": 1}, "sqlglot.expressions.column_table_names": {"tf": 1}, "sqlglot.expressions.expand": {"tf": 1}, "sqlglot.optimizer.scope.Scope.join_hints": {"tf": 1}, "sqlglot.optimizer.scope.Scope.ref_count": {"tf": 1}, "sqlglot.transforms.eliminate_qualify": {"tf": 1}}, "df": 7}, "/": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.transforms.eliminate_qualify": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}}}}}}, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}}, "c": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1.4142135623730951}}, "df": 4, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.expressions.Expression.transform": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 1}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}, "sqlglot.serde.dump": {"tf": 1}, "sqlglot.serde.load": {"tf": 1}}, "df": 6}}}}}}}}, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.diff": {"tf": 1}}, "df": 2}}}}}}}, "r": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.parser.Parser.raise_error": {"tf": 1}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Expression": {"tf": 1}}, "df": 1}}}}}, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.dataframe": {"tf": 1}, "sqlglot.dialects.dialect.format_time_lambda": {"tf": 1}, "sqlglot.diff": {"tf": 2.23606797749979}, "sqlglot.executor.env.null_if_any": {"tf": 1}, "sqlglot.executor.table.Tables": {"tf": 1.4142135623730951}, "sqlglot.expressions.Column.parts": {"tf": 1}, "sqlglot.expressions.column_table_names": {"tf": 1}, "sqlglot.helper.open_file": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1.4142135623730951}}, "df": 11, "s": {"docs": {"sqlglot.parse": {"tf": 1}, "sqlglot.parse_one": {"tf": 1.4142135623730951}, "sqlglot.transpile": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.format_time_lambda": {"tf": 1}, "sqlglot.diff.diff": {"tf": 1.4142135623730951}, "sqlglot.executor.execute": {"tf": 1}, "sqlglot.expressions.Expression.text": {"tf": 1}, "sqlglot.expressions.Expression.alias": {"tf": 1}, "sqlglot.expressions.Expression.copy": {"tf": 1}, "sqlglot.expressions.Expression.depth": {"tf": 1}, "sqlglot.expressions.Expression.find": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.find_all": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.find_ancestor": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.parent_select": {"tf": 1}, "sqlglot.expressions.Expression.same_parent": {"tf": 1}, "sqlglot.expressions.Expression.root": {"tf": 1}, "sqlglot.expressions.Expression.walk": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.dfs": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.bfs": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.unnest": {"tf": 1}, "sqlglot.expressions.Expression.unalias": {"tf": 1}, "sqlglot.expressions.Expression.unnest_operands": {"tf": 1}, "sqlglot.expressions.Expression.flatten": {"tf": 1}, "sqlglot.expressions.Expression.sql": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.transform": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.replace": {"tf": 1}, "sqlglot.expressions.Expression.pop": {"tf": 1}, "sqlglot.expressions.Expression.assert_is": {"tf": 1}, "sqlglot.expressions.Expression.error_messages": {"tf": 1}, "sqlglot.expressions.Condition.and_": {"tf": 1}, "sqlglot.expressions.Condition.or_": {"tf": 1}, "sqlglot.expressions.Condition.not_": {"tf": 1}, "sqlglot.expressions.Unionable.union": {"tf": 1}, "sqlglot.expressions.Unionable.intersect": {"tf": 1}, "sqlglot.expressions.Unionable.except_": {"tf": 1}, "sqlglot.expressions.Delete.delete": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Delete.returning": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Join.using": {"tf": 1}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1}, "sqlglot.expressions.Union.limit": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.expressions.Select.limit": {"tf": 1}, "sqlglot.expressions.Select.offset": {"tf": 1}, "sqlglot.expressions.Select.select": {"tf": 1}, "sqlglot.expressions.Select.lateral": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1}, "sqlglot.expressions.Select.where": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1}, "sqlglot.expressions.Select.distinct": {"tf": 1}, "sqlglot.expressions.Select.ctas": {"tf": 1}, "sqlglot.expressions.Select.lock": {"tf": 1}, "sqlglot.expressions.Subquery.unnest": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1}, "sqlglot.expressions.union": {"tf": 1}, "sqlglot.expressions.intersect": {"tf": 1}, "sqlglot.expressions.except_": {"tf": 1}, "sqlglot.expressions.select": {"tf": 1}, "sqlglot.expressions.from_": {"tf": 1}, "sqlglot.expressions.update": {"tf": 1}, "sqlglot.expressions.delete": {"tf": 1}, "sqlglot.expressions.condition": {"tf": 1}, "sqlglot.expressions.and_": {"tf": 1}, "sqlglot.expressions.or_": {"tf": 1}, "sqlglot.expressions.not_": {"tf": 1}, "sqlglot.expressions.to_identifier": {"tf": 1}, "sqlglot.expressions.to_table": {"tf": 1}, "sqlglot.expressions.to_column": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1}, "sqlglot.expressions.subquery": {"tf": 1}, "sqlglot.expressions.column": {"tf": 1}, "sqlglot.expressions.cast": {"tf": 1}, "sqlglot.expressions.table_": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1}, "sqlglot.expressions.var": {"tf": 1}, "sqlglot.expressions.rename_table": {"tf": 1}, "sqlglot.expressions.convert": {"tf": 1}, "sqlglot.expressions.column_table_names": {"tf": 1}, "sqlglot.expressions.table_name": {"tf": 1}, "sqlglot.expressions.replace_tables": {"tf": 1}, "sqlglot.expressions.replace_placeholders": {"tf": 1}, "sqlglot.expressions.expand": {"tf": 1}, "sqlglot.expressions.func": {"tf": 1.4142135623730951}, "sqlglot.expressions.true": {"tf": 1}, "sqlglot.expressions.false": {"tf": 1}, "sqlglot.expressions.null": {"tf": 1}, "sqlglot.generator.Generator.generate": {"tf": 1}, "sqlglot.helper.seq_get": {"tf": 1}, "sqlglot.helper.ensure_list": {"tf": 1}, "sqlglot.helper.ensure_collection": {"tf": 1}, "sqlglot.helper.csv": {"tf": 1}, "sqlglot.helper.subclasses": {"tf": 1.4142135623730951}, "sqlglot.helper.apply_index_offset": {"tf": 1}, "sqlglot.helper.camel_to_snake_case": {"tf": 1}, "sqlglot.helper.while_changing": {"tf": 1}, "sqlglot.helper.tsort": {"tf": 1}, "sqlglot.helper.csv_reader": {"tf": 1}, "sqlglot.helper.find_new_name": {"tf": 1}, "sqlglot.helper.object_to_dict": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1}, "sqlglot.helper.is_iterable": {"tf": 1}, "sqlglot.helper.count_params": {"tf": 1}, "sqlglot.helper.dict_depth": {"tf": 1}, "sqlglot.helper.first": {"tf": 1}, "sqlglot.helper.should_identify": {"tf": 1.4142135623730951}, "sqlglot.lineage.lineage": {"tf": 1}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}, "sqlglot.optimizer.eliminate_ctes.eliminate_ctes": {"tf": 1}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 1}, "sqlglot.optimizer.eliminate_joins.join_condition": {"tf": 1}, "sqlglot.optimizer.eliminate_subqueries.eliminate_subqueries": {"tf": 1}, "sqlglot.optimizer.expand_laterals.expand_laterals": {"tf": 1}, "sqlglot.optimizer.lower_identities.lower_identities": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1}, "sqlglot.optimizer.normalize.normalize": {"tf": 1}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_predicates": {"tf": 1}, "sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 1}, "sqlglot.optimizer.qualify_columns.qualify_columns": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.get_table": {"tf": 1}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1}, "sqlglot.optimizer.scope.Scope.tables": {"tf": 1}, "sqlglot.optimizer.scope.Scope.ctes": {"tf": 1}, "sqlglot.optimizer.scope.Scope.derived_tables": {"tf": 1}, "sqlglot.optimizer.scope.Scope.udtfs": {"tf": 1}, "sqlglot.optimizer.scope.Scope.subqueries": {"tf": 1}, "sqlglot.optimizer.scope.Scope.columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 1}, "sqlglot.optimizer.scope.Scope.cte_sources": {"tf": 1}, "sqlglot.optimizer.scope.Scope.selects": {"tf": 1}, "sqlglot.optimizer.scope.Scope.external_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.unqualified_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.join_hints": {"tf": 1}, "sqlglot.optimizer.scope.Scope.source_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.ref_count": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.build_scope": {"tf": 1}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1}, "sqlglot.optimizer.simplify.simplify": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 1}, "sqlglot.parser.Parser.parse": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser.parse_into": {"tf": 1}, "sqlglot.parser.Parser.expression": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}, "sqlglot.schema.Schema.column_names": {"tf": 1}, "sqlglot.schema.Schema.get_column_type": {"tf": 1}, "sqlglot.schema.MappingSchema.column_names": {"tf": 1}, "sqlglot.schema.MappingSchema.get_column_type": {"tf": 1}, "sqlglot.time.format_time": {"tf": 1}, "sqlglot.tokens.Token.number": {"tf": 1}, "sqlglot.tokens.Token.string": {"tf": 1}, "sqlglot.tokens.Token.identifier": {"tf": 1}, "sqlglot.tokens.Token.var": {"tf": 1}, "sqlglot.tokens.Tokenizer.tokenize": {"tf": 1}, "sqlglot.transforms.unalias_group": {"tf": 1}, "sqlglot.transforms.eliminate_distinct_on": {"tf": 1}, "sqlglot.transforms.preprocess": {"tf": 1}, "sqlglot.trie.new_trie": {"tf": 1}, "sqlglot.trie.in_trie": {"tf": 1}}, "df": 171}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.transpile": {"tf": 1}, "sqlglot.dataframe": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.expressions.Expression.output_name": {"tf": 1}, "sqlglot.expressions.Expression.load": {"tf": 1}, "sqlglot.expressions.Column.output_name": {"tf": 1}, "sqlglot.expressions.Identifier.output_name": {"tf": 1}, "sqlglot.expressions.Literal.output_name": {"tf": 1}, "sqlglot.expressions.Subquery.output_name": {"tf": 1}, "sqlglot.expressions.Star.output_name": {"tf": 1}, "sqlglot.expressions.Alias.output_name": {"tf": 1}, "sqlglot.expressions.Cast.output_name": {"tf": 1}, "sqlglot.expressions.to_table": {"tf": 1}, "sqlglot.expressions.to_column": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.helper.subclasses": {"tf": 1}, "sqlglot.helper.apply_index_offset": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1}, "sqlglot.serde.load": {"tf": 1}}, "df": 38}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.expressions.Delete.returning": {"tf": 1.7320508075688772}, "sqlglot.expressions.delete": {"tf": 1.4142135623730951}}, "df": 2}}}}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}}}, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.expressions.Expression": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.Expression.this": {"tf": 1}, "sqlglot.expressions.Expression.expression": {"tf": 1}, "sqlglot.expressions.Expression.expressions": {"tf": 1}}, "df": 3}}}}}}}, "w": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.optimizer.eliminate_subqueries.eliminate_subqueries": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1}, "sqlglot.optimizer.normalize.normalize": {"tf": 1.4142135623730951}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_predicates": {"tf": 1}, "sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 1}, "sqlglot.optimizer.qualify_columns.qualify_columns": {"tf": 1}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"tf": 1}, "sqlglot.optimizer.simplify.simplify": {"tf": 1}, "sqlglot.optimizer.simplify.rewrite_between": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 1}}, "df": 12}}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 2}}}}}}}, "p": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.expressions.var": {"tf": 1.4142135623730951}}, "df": 2, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.expressions": {"tf": 1}, "sqlglot.trie.new_trie": {"tf": 1}}, "df": 3}}, "s": {"docs": {"sqlglot.transpile": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 1.7320508075688772}, "sqlglot.diff.diff": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}}, "df": 25}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.text": {"tf": 1}, "sqlglot.expressions.Expression.sql": {"tf": 1}}, "df": 4, "s": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.executor.context.Context.__init__": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.schema.Schema.add_table": {"tf": 1}, "sqlglot.schema.MappingSchema.add_table": {"tf": 1}}, "df": 4}}}}}}}}}, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.executor": {"tf": 1}, "sqlglot.expressions.Expression.replace": {"tf": 1}, "sqlglot.expressions.Delete.delete": {"tf": 1}, "sqlglot.expressions.replace_children": {"tf": 1}, "sqlglot.expressions.replace_tables": {"tf": 1.4142135623730951}, "sqlglot.expressions.replace_placeholders": {"tf": 1.4142135623730951}, "sqlglot.optimizer.expand_multi_table_selects.expand_multi_table_selects": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_cnf": {"tf": 1}, "sqlglot.optimizer.scope.Scope.replace": {"tf": 1.4142135623730951}, "sqlglot.transforms.unalias_group": {"tf": 1}}, "df": 11, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1.4142135623730951}}, "df": 2}}}}, "d": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.expressions.replace_tables": {"tf": 1}, "sqlglot.expressions.replace_placeholders": {"tf": 1}}, "df": 3}}}}, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.Column.cast": {"tf": 1}}, "df": 1}}}}}}}, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.with_properties": {"tf": 1}, "sqlglot.diff": {"tf": 3.1622776601683795}, "sqlglot.diff.diff": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.pop": {"tf": 1}, "sqlglot.optimizer.eliminate_ctes.eliminate_ctes": {"tf": 1}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 1}, "sqlglot.optimizer.optimize_joins.normalize": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_dnf": {"tf": 1}, "sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.Scope.remove_source": {"tf": 1}}, "df": 12, "d": {"docs": {"sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1}, "sqlglot.diff": {"tf": 2}, "sqlglot.diff.Remove": {"tf": 1}, "sqlglot.expressions.Expression.transform": {"tf": 1}}, "df": 4}, "s": {"docs": {"sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 1}, "sqlglot.optimizer.optimize_joins.optimize_joins": {"tf": 1}, "sqlglot.transforms.remove_precision_parameterized_types": {"tf": 1}}, "df": 3}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.optimizer.simplify.remove_compliments": {"tf": 1}}, "df": 1}}}}}, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.diff": {"tf": 2}, "sqlglot.optimizer.eliminate_joins.join_condition": {"tf": 1}}, "df": 2}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.scope.Scope": {"tf": 1}}, "df": 1, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}}, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.Predicate": {"tf": 1}}, "df": 1}}}}}}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dataframe": {"tf": 1}}, "df": 1}}}}, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1}, "sqlglot.executor.context.Context": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1}}, "df": 43}}}}}, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.optimizer.canonicalize.canonicalize": {"tf": 1}}, "df": 2}, "d": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}, "y": {"docs": {"sqlglot.optimizer.canonicalize.canonicalize": {"tf": 1}}, "df": 1}}, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe": {"tf": 2}, "sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.expressions.replace_children": {"tf": 1}, "sqlglot.helper.camel_to_snake_case": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1.4142135623730951}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}}, "df": 10, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.parse": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.schema.Schema.get_column_type": {"tf": 1}, "sqlglot.schema.MappingSchema.get_column_type": {"tf": 1}, "sqlglot.transforms.preprocess": {"tf": 1.4142135623730951}}, "df": 5}}}, "s": {"docs": {"sqlglot.dataframe": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.diff.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 4}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}, "t": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}}, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}, "sqlglot.parser.Parser.expression": {"tf": 1}}, "df": 2, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.helper.count_params": {"tf": 1}}, "df": 1}}}}}, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}}}, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}, "t": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Join.using": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 1}, "sqlglot.expressions.Select.select": {"tf": 1}, "sqlglot.expressions.Select.lateral": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1}, "sqlglot.expressions.Select.where": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1}}, "df": 10}}}, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.optimizer.qualify_columns.Resolver": {"tf": 1}}, "df": 1}}}, "e": {"docs": {"sqlglot.optimizer.qualify_columns.Resolver.get_source_columns": {"tf": 1}}, "df": 1}}}}}, "g": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.executor.execute": {"tf": 1}, "sqlglot.schema.Schema.add_table": {"tf": 1}, "sqlglot.schema.MappingSchema.add_table": {"tf": 1}}, "df": 4, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.dataframe": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.helper.flatten": {"tf": 1}}, "df": 1}}}}}}, "y": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dataframe": {"tf": 1.7320508075688772}}, "df": 1}}}, "d": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.redshift.Redshift.Generator.with_properties": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.renametable_sql": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1.4142135623730951}}, "df": 3}}}}}, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.dialects.redshift.Redshift.Generator.renametable_sql": {"tf": 1}}, "df": 1}}}, "e": {"docs": {"sqlglot.expressions.rename_table": {"tf": 1}, "sqlglot.optimizer.scope.Scope.rename_source": {"tf": 1}}, "df": 2}}}}, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.optimizer.optimize_joins.optimize_joins": {"tf": 1}, "sqlglot.optimizer.optimize_joins.reorder_joins": {"tf": 1}}, "df": 2, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}}}}, "o": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}}, "w": {"docs": {"sqlglot.dataframe": {"tf": 2.449489742783178}, "sqlglot.executor.context.Context": {"tf": 1}}, "df": 2, "s": {"docs": {"sqlglot.executor": {"tf": 1}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 1}}, "df": 2}}, "o": {"docs": {}, "df": 0, "m": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}, "t": {"docs": {"sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.expressions.Expression.root": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_root": {"tf": 1}, "sqlglot.optimizer.scope.build_scope": {"tf": 1}}, "df": 5}}, "u": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.errors.ErrorLevel.RAISE": {"tf": 1}, "sqlglot.errors.ErrorLevel.IMMEDIATE": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.optimizer.qualify_columns.validate_qualify_columns": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1.4142135623730951}}, "df": 44, "s": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.expressions.Expression.assert_is": {"tf": 1}, "sqlglot.expressions.convert": {"tf": 1}, "sqlglot.parser.Parser.check_errors": {"tf": 1}, "sqlglot.parser.Parser.raise_error": {"tf": 1}}, "df": 5}, "d": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1}}, "df": 40}}}}, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.executor.context.Context": {"tf": 1}}, "df": 2}}, "k": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}}}, "d": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "o": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}, "e": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}, "j": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}, "w": {"docs": {"sqlglot.executor": {"tf": 1}, "sqlglot.parser.Parser.parse": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 1}}, "df": 3}}, "u": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot": {"tf": 1.7320508075688772}, "sqlglot.dataframe": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1}, "sqlglot.executor": {"tf": 2.23606797749979}, "sqlglot.executor.execute": {"tf": 1}, "sqlglot.optimizer.expand_laterals.expand_laterals": {"tf": 1}}, "df": 6, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.executor": {"tf": 1.7320508075688772}}, "df": 2}}}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1}, "sqlglot.diff": {"tf": 2.449489742783178}}, "df": 3}}}}, "s": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 1, "s": {"docs": {"sqlglot.executor": {"tf": 2.23606797749979}, "sqlglot.lineage.lineage": {"tf": 1.4142135623730951}, "sqlglot.optimizer.optimizer.optimize": {"tf": 2}}, "df": 3}}}}, "d": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.dataframe": {"tf": 1}}, "df": 1}}, "\u00e9": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.union": {"tf": 1.4142135623730951}, "sqlglot.expressions.intersect": {"tf": 1.4142135623730951}, "sqlglot.expressions.except_": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope": {"tf": 1}}, "df": 4}}}}}, "w": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "t": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}}, "df": 21}}, "o": {"docs": {}, "df": 0, "m": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}, "t": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot": {"tf": 2.6457513110645907}, "sqlglot.transpile": {"tf": 1}, "sqlglot.dataframe": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.dialects": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator.with_properties": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 4.58257569495584}, "sqlglot.executor": {"tf": 3.4641016151377544}, "sqlglot.executor.context.Context": {"tf": 1}, "sqlglot.executor.env.null_if_any": {"tf": 1}, "sqlglot.executor.table.Tables": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.this": {"tf": 1}, "sqlglot.expressions.Expression.expression": {"tf": 1}, "sqlglot.expressions.Expression.expressions": {"tf": 1}, "sqlglot.expressions.Expression.replace": {"tf": 1}, "sqlglot.expressions.Condition.and_": {"tf": 1}, "sqlglot.expressions.Condition.or_": {"tf": 1}, "sqlglot.expressions.Condition.not_": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.where": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1}, "sqlglot.expressions.Dot.build": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1}, "sqlglot.expressions.and_": {"tf": 1}, "sqlglot.expressions.or_": {"tf": 1}, "sqlglot.expressions.not_": {"tf": 1}, "sqlglot.expressions.subquery": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1}, "sqlglot.expressions.replace_children": {"tf": 1}, "sqlglot.helper.apply_index_offset": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}, "sqlglot.optimizer.eliminate_ctes.eliminate_ctes": {"tf": 1}, "sqlglot.optimizer.eliminate_subqueries.eliminate_subqueries": {"tf": 1.4142135623730951}, "sqlglot.optimizer.expand_multi_table_selects.expand_multi_table_selects": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.optimizer.scope.Scope.replace": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 1}, "sqlglot.parser.Parser.expression": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1}, "sqlglot.tokens.Token.number": {"tf": 1}, "sqlglot.tokens.Token.string": {"tf": 1}, "sqlglot.tokens.Token.identifier": {"tf": 1}, "sqlglot.tokens.Token.var": {"tf": 1}, "sqlglot.transforms.eliminate_distinct_on": {"tf": 1}}, "df": 48, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.transform": {"tf": 1}, "sqlglot.helper.count_params": {"tf": 1}}, "df": 6}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.diff.Move": {"tf": 1}, "sqlglot.executor.context.Context.__init__": {"tf": 1}, "sqlglot.optimizer.scope.Scope.join_hints": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}}, "df": 5}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.transpile": {"tf": 1}, "sqlglot.dataframe": {"tf": 2}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1.4142135623730951}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1.7320508075688772}, "sqlglot.executor.python.Python.Generator": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.walk": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.transform": {"tf": 1}, "sqlglot.expressions.Condition.and_": {"tf": 1}, "sqlglot.expressions.Condition.or_": {"tf": 1}, "sqlglot.expressions.Unionable.union": {"tf": 1}, "sqlglot.expressions.Unionable.intersect": {"tf": 1}, "sqlglot.expressions.Unionable.except_": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Delete.returning": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Join.using": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1}, "sqlglot.expressions.Union.limit": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.expressions.Select.limit": {"tf": 1}, "sqlglot.expressions.Select.offset": {"tf": 1}, "sqlglot.expressions.Select.select": {"tf": 1}, "sqlglot.expressions.Select.lateral": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.where": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1}, "sqlglot.expressions.Select.ctas": {"tf": 1}, "sqlglot.expressions.Select.lock": {"tf": 1.4142135623730951}, "sqlglot.expressions.Func": {"tf": 1.4142135623730951}, "sqlglot.expressions.union": {"tf": 1.4142135623730951}, "sqlglot.expressions.intersect": {"tf": 1.4142135623730951}, "sqlglot.expressions.except_": {"tf": 1.4142135623730951}, "sqlglot.expressions.values": {"tf": 1.4142135623730951}, "sqlglot.expressions.var": {"tf": 1}, "sqlglot.expressions.replace_placeholders": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator": {"tf": 1.4142135623730951}, "sqlglot.helper.apply_index_offset": {"tf": 1.4142135623730951}, "sqlglot.lineage.lineage": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope": {"tf": 1}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser.parse_into": {"tf": 1}, "sqlglot.schema.MappingSchema": {"tf": 1}, "sqlglot.transforms.unalias_group": {"tf": 1}, "sqlglot.transforms.eliminate_distinct_on": {"tf": 1}, "sqlglot.transforms.preprocess": {"tf": 1}}, "df": 74}}, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.transforms.eliminate_distinct_on": {"tf": 1.4142135623730951}, "sqlglot.transforms.eliminate_qualify": {"tf": 1}}, "df": 3}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dialects": {"tf": 1}, "sqlglot.diff": {"tf": 2.8284271247461903}, "sqlglot.executor": {"tf": 1}, "sqlglot.executor.context.Context": {"tf": 1}}, "df": 5}}, "c": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.transpile": {"tf": 1}, "sqlglot.dataframe": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 2.23606797749979}, "sqlglot.diff": {"tf": 4}, "sqlglot.diff.diff": {"tf": 1.4142135623730951}, "sqlglot.diff.ChangeDistiller": {"tf": 1}, "sqlglot.executor": {"tf": 1.7320508075688772}, "sqlglot.executor.context.Context": {"tf": 1}, "sqlglot.executor.env.null_if_any": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 2.23606797749979}, "sqlglot.expressions": {"tf": 1}, "sqlglot.expressions.Expression.find": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.find_all": {"tf": 1}, "sqlglot.expressions.Expression.walk": {"tf": 1}, "sqlglot.expressions.Expression.dfs": {"tf": 1}, "sqlglot.expressions.Expression.bfs": {"tf": 1}, "sqlglot.expressions.Expression.flatten": {"tf": 1}, "sqlglot.expressions.Expression.transform": {"tf": 1}, "sqlglot.expressions.Delete.delete": {"tf": 1}, "sqlglot.expressions.update": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 2.23606797749979}, "sqlglot.generator.Generator.generate": {"tf": 1}, "sqlglot.lineage.lineage": {"tf": 1}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 1}, "sqlglot.schema.MappingSchema": {"tf": 1}, "sqlglot.trie.new_trie": {"tf": 1}}, "df": 51}}, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 3}, "sqlglot.dataframe": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 2}, "sqlglot.executor": {"tf": 3}, "sqlglot.expressions.Delete.where": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.where": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.lock": {"tf": 2}, "sqlglot.expressions.update": {"tf": 2}, "sqlglot.expressions.delete": {"tf": 2}, "sqlglot.expressions.condition": {"tf": 2.449489742783178}, "sqlglot.expressions.replace_placeholders": {"tf": 1.4142135623730951}, "sqlglot.helper.AutoName": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_predicates": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.Scope.subqueries": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 2}, "sqlglot.transforms.eliminate_qualify": {"tf": 1.4142135623730951}, "sqlglot.trie.in_trie": {"tf": 1.4142135623730951}}, "df": 20}}, "n": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.dataframe": {"tf": 1.7320508075688772}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.renametable_sql": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.diff": {"tf": 3.4641016151377544}, "sqlglot.executor": {"tf": 2}, "sqlglot.executor.context.Context": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1}}, "df": 52}, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.pretty": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.diff": {"tf": 1.7320508075688772}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.is_string": {"tf": 1}, "sqlglot.expressions.Expression.is_number": {"tf": 1}, "sqlglot.expressions.Expression.is_int": {"tf": 1}, "sqlglot.expressions.Expression.is_star": {"tf": 1}, "sqlglot.expressions.Union.is_star": {"tf": 1}, "sqlglot.expressions.Select.distinct": {"tf": 1}, "sqlglot.expressions.Select.is_star": {"tf": 1}, "sqlglot.expressions.Subquery.is_star": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1}, "sqlglot.expressions.to_identifier": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1.4142135623730951}, "sqlglot.expressions.column": {"tf": 1}, "sqlglot.expressions.expand": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.helper.should_identify": {"tf": 1}, "sqlglot.optimizer.canonicalize.canonicalize": {"tf": 1}, "sqlglot.schema.Schema.column_names": {"tf": 1}, "sqlglot.schema.MappingSchema.column_names": {"tf": 1}, "sqlglot.trie.in_trie": {"tf": 1}}, "df": 42}}}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe": {"tf": 1.4142135623730951}, "sqlglot.dialects": {"tf": 1}, "sqlglot.diff": {"tf": 2.23606797749979}, "sqlglot.executor": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 6, "e": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1}}, "df": 2}}}}}}, "o": {"docs": {"sqlglot.expressions.Expression.flatten": {"tf": 1}, "sqlglot.expressions.var": {"tf": 1}}, "df": 2, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}, "\u2019": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}, "y": {"docs": {"sqlglot.executor": {"tf": 2}}, "df": 1}}, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 2}}}, "e": {"docs": {"sqlglot": {"tf": 2}, "sqlglot.transpile": {"tf": 1}, "sqlglot.dataframe": {"tf": 1}, "sqlglot.dialects": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 5}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dataframe": {"tf": 1}, "sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 2}}, "df": 4}}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}, "p": {"docs": {"sqlglot.expressions.Condition.not_": {"tf": 1}, "sqlglot.expressions.not_": {"tf": 1}}, "df": 2, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.Union.limit": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.expressions.Select.limit": {"tf": 1}, "sqlglot.expressions.Select.offset": {"tf": 1}, "sqlglot.helper.ensure_list": {"tf": 1}, "sqlglot.helper.ensure_collection": {"tf": 1}, "sqlglot.helper.apply_index_offset": {"tf": 1.4142135623730951}}, "df": 11}}}, "s": {"docs": {"sqlglot.helper.ensure_list": {"tf": 1}, "sqlglot.helper.ensure_collection": {"tf": 1}}, "df": 2}}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}}, "df": 22}, "e": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}}, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1.4142135623730951}, "sqlglot.helper.subclasses": {"tf": 1.4142135623730951}}, "df": 4, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}, "y": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dataframe": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1.4142135623730951}}, "df": 4, "s": {"docs": {"sqlglot.dataframe": {"tf": 1}}, "df": 1}}, "s": {"docs": {"sqlglot.diff": {"tf": 2.6457513110645907}, "sqlglot.executor": {"tf": 2.6457513110645907}, "sqlglot.expressions.Expression.find": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1}, "sqlglot.parser.Parser.validate_expression": {"tf": 1}, "sqlglot.trie.in_trie": {"tf": 1}}, "df": 6, "n": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}, "l": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}, "e": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.dialects": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator.with_properties": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 2.23606797749979}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 2.449489742783178}, "sqlglot.diff": {"tf": 5.5677643628300215}, "sqlglot.executor": {"tf": 2.23606797749979}, "sqlglot.helper.subclasses": {"tf": 1.4142135623730951}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_cnf": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_dnf": {"tf": 1.4142135623730951}, "sqlglot.optimizer.qualify_columns.Resolver": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1.4142135623730951}, "sqlglot.transforms.eliminate_qualify": {"tf": 1.7320508075688772}, "sqlglot.trie.in_trie": {"tf": 1}}, "df": 17, "l": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}}, "l": {"docs": {"sqlglot.dialects": {"tf": 1}, "sqlglot.diff": {"tf": 1.7320508075688772}, "sqlglot.expressions.Func": {"tf": 1}}, "df": 3}}, "r": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 2.449489742783178}, "sqlglot.executor": {"tf": 1}, "sqlglot.expressions.Expression.error_messages": {"tf": 1.4142135623730951}}, "df": 3}}, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 2}}, "\u2019": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}}, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.diff": {"tf": 1.7320508075688772}, "sqlglot.executor": {"tf": 1.7320508075688772}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 1}}, "df": 5, "n": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1, "\u2019": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}, "n": {"docs": {"sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.transforms.eliminate_qualify": {"tf": 1}}, "df": 2}, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}, "t": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}, "k": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 2.23606797749979}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}}, "df": 5, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}, "l": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}, "d": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.helper.split_num_words": {"tf": 2.8284271247461903}}, "df": 1}}}}, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.TimeUnit": {"tf": 1}, "sqlglot.expressions.Func": {"tf": 1}, "sqlglot.expressions.var": {"tf": 2.449489742783178}, "sqlglot.tokens.Token.var": {"tf": 1.4142135623730951}}, "df": 4, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot": {"tf": 1.4142135623730951}}, "df": 1}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dialects": {"tf": 1.4142135623730951}}, "df": 1, "s": {"docs": {"sqlglot.dialects": {"tf": 1}, "sqlglot.diff": {"tf": 1}}, "df": 2}}}}}, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Func": {"tf": 1}, "sqlglot.expressions.var": {"tf": 1.4142135623730951}}, "df": 2, "s": {"docs": {"sqlglot.executor.table.Tables": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1}}, "df": 2}}}}}, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}, "y": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 2.23606797749979}}, "df": 1}}}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.Expression.error_messages": {"tf": 1}}, "df": 1, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}, "e": {"docs": {"sqlglot.executor": {"tf": 1}, "sqlglot.parser.Parser.validate_expression": {"tf": 1}}, "df": 2, "d": {"docs": {"sqlglot.parser.Parser.expression": {"tf": 1}}, "df": 1}, "s": {"docs": {"sqlglot.parser.Parser.validate_expression": {"tf": 1}}, "df": 1}}}}}}, "u": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1}, "sqlglot.diff": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.append": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.set": {"tf": 1.7320508075688772}, "sqlglot.expressions.Func": {"tf": 1}, "sqlglot.expressions.convert": {"tf": 1.4142135623730951}, "sqlglot.helper.AutoName": {"tf": 1}, "sqlglot.helper.seq_get": {"tf": 1}, "sqlglot.helper.ensure_list": {"tf": 2.23606797749979}, "sqlglot.helper.ensure_collection": {"tf": 2.23606797749979}, "sqlglot.helper.split_num_words": {"tf": 2}, "sqlglot.helper.is_iterable": {"tf": 2}, "sqlglot.helper.flatten": {"tf": 1}, "sqlglot.trie.in_trie": {"tf": 1.7320508075688772}}, "df": 15, "s": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 2.23606797749979}, "sqlglot.expressions.Expression.error_messages": {"tf": 1}, "sqlglot.expressions.Func": {"tf": 1}, "sqlglot.expressions.values": {"tf": 2.8284271247461903}, "sqlglot.helper.split_num_words": {"tf": 1.4142135623730951}, "sqlglot.helper.flatten": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser.expression": {"tf": 1}}, "df": 11}}}}}, "e": {"docs": {"sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}}, "df": 2, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot": {"tf": 1.7320508075688772}, "sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1}, "sqlglot.diff": {"tf": 1.7320508075688772}, "sqlglot.executor": {"tf": 1.4142135623730951}}, "df": 4}, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot": {"tf": 1}}, "df": 1, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}, "a": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}, "b": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 1}}, "df": 2}}}}, "s": {"docs": {"sqlglot.executor.context.Context": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "s": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1}}, "df": 19}, "i": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.lineage.LineageHTML": {"tf": 1}}, "df": 1, "u": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.Expression.find_all": {"tf": 1}, "sqlglot.expressions.Expression.walk": {"tf": 1}, "sqlglot.expressions.Expression.dfs": {"tf": 1}, "sqlglot.expressions.Expression.bfs": {"tf": 1}, "sqlglot.expressions.Expression.transform": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1}}, "df": 7}}, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.schema.Schema.column_names": {"tf": 1}, "sqlglot.schema.MappingSchema": {"tf": 1.7320508075688772}, "sqlglot.schema.MappingSchema.column_names": {"tf": 1}}, "df": 3}}}}}, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}, "e": {"docs": {}, "df": 0, "w": {"docs": {"sqlglot.expressions.Select.lateral": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 1.4142135623730951}}, "df": 2}}}, "\u00e4": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}, "t": {"docs": {"sqlglot.executor.table.Tables": {"tf": 2.23606797749979}, "sqlglot.schema.AbstractMappingSchema": {"tf": 2.23606797749979}}, "df": 2}}, "g": {"docs": {"sqlglot.schema": {"tf": 1}, "sqlglot.diff": {"tf": 1.7320508075688772}, "sqlglot.executor": {"tf": 1}, "sqlglot.executor.env.null_if_any": {"tf": 1}, "sqlglot.expressions.Expression.error_messages": {"tf": 1}, "sqlglot.schema.Schema.supported_table_args": {"tf": 1}}, "df": 6, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dialects": {"tf": 1}, "sqlglot.executor": {"tf": 1}, "sqlglot.executor.table.Tables": {"tf": 1.7320508075688772}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1.7320508075688772}}, "df": 5, "[": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.executor.table.Tables": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1}}, "df": 2}}}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot": {"tf": 2}, "sqlglot.transpile": {"tf": 1.4142135623730951}, "sqlglot.dataframe": {"tf": 1}, "sqlglot.dialects": {"tf": 2.23606797749979}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.find_all": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.walk": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.dfs": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.bfs": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.flatten": {"tf": 1}, "sqlglot.expressions.Expression.sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator": {"tf": 1.4142135623730951}, "sqlglot.lineage.LineageHTML": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1}, "sqlglot.transforms.preprocess": {"tf": 1.4142135623730951}, "sqlglot.transforms.delegate": {"tf": 1.4142135623730951}}, "df": 38}}, "e": {"docs": {"sqlglot.dataframe": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 2}, "sqlglot.executor": {"tf": 1.4142135623730951}}, "df": 3, "d": {"docs": {"sqlglot.pretty": {"tf": 1}, "sqlglot.diff": {"tf": 1}}, "df": 2}, "s": {"docs": {"sqlglot.generator.Generator.generate": {"tf": 1}}, "df": 1}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.expressions.Tag": {"tf": 1}}, "df": 5}}, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dialects": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.expressions.Func": {"tf": 1}}, "df": 3}}}}, "l": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1}}, "df": 1}}}}}}}, "t": {"docs": {"sqlglot": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1}, "sqlglot.diff": {"tf": 2.449489742783178}, "sqlglot.executor": {"tf": 1}, "sqlglot.expressions.table_name": {"tf": 1}, "sqlglot.helper.dict_depth": {"tf": 1}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.get_table": {"tf": 1}, "sqlglot.optimizer.scope.Scope.source_columns": {"tf": 1}, "sqlglot.schema.Schema.column_names": {"tf": 1}, "sqlglot.schema.Schema.get_column_type": {"tf": 1}, "sqlglot.schema.MappingSchema.column_names": {"tf": 1}, "sqlglot.schema.MappingSchema.get_column_type": {"tf": 1}, "sqlglot.trie.in_trie": {"tf": 1}}, "df": 15, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe": {"tf": 1}}, "df": 1}}}}}}}}, "s": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 1}}, "df": 3}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {"sqlglot.executor.table.Tables": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1}}, "df": 2}}}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}, "o": {"docs": {"sqlglot": {"tf": 1}}, "df": 1, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 2}}, "o": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe": {"tf": 1}}, "df": 1}}}, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.executor": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1}}, "df": 2}}}}, "u": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 2}}}, "m": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}}, "df": 1}}}}}}, "t": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dataframe": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 5.656854249492381}, "sqlglot.diff.diff": {"tf": 1.7320508075688772}, "sqlglot.executor": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.output_name": {"tf": 3.4641016151377544}, "sqlglot.expressions.Expression.replace": {"tf": 3}, "sqlglot.expressions.Expression.assert_is": {"tf": 2.449489742783178}, "sqlglot.expressions.Condition.and_": {"tf": 1.7320508075688772}, "sqlglot.expressions.Condition.or_": {"tf": 1.7320508075688772}, "sqlglot.expressions.Condition.not_": {"tf": 1.7320508075688772}, "sqlglot.expressions.Predicate": {"tf": 1.4142135623730951}, "sqlglot.expressions.Unionable.union": {"tf": 2.449489742783178}, "sqlglot.expressions.Unionable.intersect": {"tf": 2.449489742783178}, "sqlglot.expressions.Unionable.except_": {"tf": 2.449489742783178}, "sqlglot.expressions.Column.output_name": {"tf": 3.4641016151377544}, "sqlglot.expressions.Delete.delete": {"tf": 1.7320508075688772}, "sqlglot.expressions.Delete.where": {"tf": 1.7320508075688772}, "sqlglot.expressions.Delete.returning": {"tf": 1.7320508075688772}, "sqlglot.expressions.Identifier.output_name": {"tf": 3.4641016151377544}, "sqlglot.expressions.Literal.output_name": {"tf": 3.4641016151377544}, "sqlglot.expressions.Join.on": {"tf": 2.449489742783178}, "sqlglot.expressions.Join.using": {"tf": 2.449489742783178}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 2.449489742783178}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1.7320508075688772}, "sqlglot.expressions.Union.limit": {"tf": 1.7320508075688772}, "sqlglot.expressions.Union.select": {"tf": 2.449489742783178}, "sqlglot.expressions.Select.from_": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.group_by": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.order_by": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.sort_by": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.cluster_by": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.limit": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.offset": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.select": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.lateral": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.join": {"tf": 3}, "sqlglot.expressions.Select.where": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.having": {"tf": 2.23606797749979}, "sqlglot.expressions.Select.distinct": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.ctas": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.lock": {"tf": 2.449489742783178}, "sqlglot.expressions.Subquery.output_name": {"tf": 3.4641016151377544}, "sqlglot.expressions.Star.output_name": {"tf": 3.4641016151377544}, "sqlglot.expressions.Kwarg": {"tf": 1}, "sqlglot.expressions.Alias.output_name": {"tf": 3.4641016151377544}, "sqlglot.expressions.Cast.output_name": {"tf": 3.4641016151377544}, "sqlglot.expressions.maybe_parse": {"tf": 2.449489742783178}, "sqlglot.expressions.union": {"tf": 1.7320508075688772}, "sqlglot.expressions.intersect": {"tf": 1.7320508075688772}, "sqlglot.expressions.except_": {"tf": 1.7320508075688772}, "sqlglot.expressions.select": {"tf": 1.7320508075688772}, "sqlglot.expressions.from_": {"tf": 1.7320508075688772}, "sqlglot.expressions.update": {"tf": 2.23606797749979}, "sqlglot.expressions.delete": {"tf": 2.23606797749979}, "sqlglot.expressions.condition": {"tf": 3.4641016151377544}, "sqlglot.expressions.and_": {"tf": 1.7320508075688772}, "sqlglot.expressions.or_": {"tf": 1.7320508075688772}, "sqlglot.expressions.not_": {"tf": 1.7320508075688772}, "sqlglot.expressions.alias_": {"tf": 2.449489742783178}, "sqlglot.expressions.subquery": {"tf": 1.7320508075688772}, "sqlglot.expressions.cast": {"tf": 1.7320508075688772}, "sqlglot.expressions.values": {"tf": 1.7320508075688772}, "sqlglot.expressions.var": {"tf": 2.449489742783178}, "sqlglot.expressions.column_table_names": {"tf": 2.449489742783178}, "sqlglot.expressions.table_name": {"tf": 2.449489742783178}, "sqlglot.expressions.replace_tables": {"tf": 2.449489742783178}, "sqlglot.expressions.replace_placeholders": {"tf": 2.449489742783178}, "sqlglot.expressions.expand": {"tf": 2.449489742783178}, "sqlglot.expressions.func": {"tf": 2.449489742783178}, "sqlglot.helper.split_num_words": {"tf": 3}, "sqlglot.helper.is_iterable": {"tf": 2.449489742783178}, "sqlglot.helper.flatten": {"tf": 2.449489742783178}, "sqlglot.helper.dict_depth": {"tf": 3.872983346207417}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 4}, "sqlglot.optimizer.eliminate_ctes.eliminate_ctes": {"tf": 3.4641016151377544}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 3.4641016151377544}, "sqlglot.optimizer.eliminate_subqueries.eliminate_subqueries": {"tf": 3.872983346207417}, "sqlglot.optimizer.expand_laterals.expand_laterals": {"tf": 3.4641016151377544}, "sqlglot.optimizer.expand_multi_table_selects.expand_multi_table_selects": {"tf": 2.449489742783178}, "sqlglot.optimizer.lower_identities.lower_identities": {"tf": 3}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 3}, "sqlglot.optimizer.normalize.normalize": {"tf": 3}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 3}, "sqlglot.optimizer.optimize_joins.optimize_joins": {"tf": 2.449489742783178}, "sqlglot.optimizer.pushdown_predicates.pushdown_predicates": {"tf": 3.4641016151377544}, "sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 3.4641016151377544}, "sqlglot.optimizer.qualify_columns.qualify_columns": {"tf": 3.4641016151377544}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"tf": 3}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 3.872983346207417}, "sqlglot.optimizer.simplify.simplify": {"tf": 3}, "sqlglot.optimizer.simplify.rewrite_between": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 3}, "sqlglot.time.format_time": {"tf": 1.7320508075688772}, "sqlglot.transforms.unalias_group": {"tf": 2.449489742783178}, "sqlglot.trie.new_trie": {"tf": 1.7320508075688772}, "sqlglot.trie.in_trie": {"tf": 3}}, "df": 98}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dataframe": {"tf": 1}, "sqlglot.executor": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 2.6457513110645907}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1.4142135623730951}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 1.4142135623730951}, "sqlglot.planner.Step.from_expression": {"tf": 1.4142135623730951}, "sqlglot.planner.Scan.from_expression": {"tf": 1.4142135623730951}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1.4142135623730951}, "sqlglot.transforms.unalias_group": {"tf": 2}}, "df": 13, "b": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dataframe": {"tf": 2.23606797749979}}, "df": 1}}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}}, "p": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.helper.tsort": {"tf": 1.7320508075688772}, "sqlglot.lineage.lineage": {"tf": 1}}, "df": 3}}, "m": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 2.23606797749979}}, "df": 1}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}}}, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.maybe_parse": {"tf": 1}}, "df": 1}}}}}}}}, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}}, "df": 1}}}}}}, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1, "n": {"docs": {"sqlglot.parse": {"tf": 1}, "sqlglot.parse_one": {"tf": 1}, "sqlglot.transpile": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1.7320508075688772}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.transform": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1}, "sqlglot.expressions.replace_placeholders": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.generator.Generator.generate": {"tf": 1}, "sqlglot.helper.apply_index_offset": {"tf": 1}, "sqlglot.helper.while_changing": {"tf": 1}, "sqlglot.helper.tsort": {"tf": 1}, "sqlglot.helper.csv_reader": {"tf": 1}, "sqlglot.helper.should_identify": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.get_source_columns": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 1.4142135623730951}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}, "sqlglot.time.format_time": {"tf": 1}}, "df": 42}}}, "t": {"docs": {"sqlglot.diff": {"tf": 2}}, "df": 1, "h": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "b": {"docs": {"sqlglot.lineage.LineageHTML": {"tf": 1}}, "df": 1}}}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}, "z": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.helper.open_file": {"tf": 1}}, "df": 1}}}}, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.diff": {"tf": 1.7320508075688772}, "sqlglot.executor": {"tf": 1.7320508075688772}}, "df": 3}}, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 2}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot": {"tf": 2}, "sqlglot.diff": {"tf": 1.7320508075688772}, "sqlglot.executor": {"tf": 2.8284271247461903}, "sqlglot.lineage.lineage": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}}, "df": 6}, "d": {"docs": {"sqlglot.executor.context.Context": {"tf": 1}}, "df": 1}}}, "y": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.dataframe": {"tf": 1.4142135623730951}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.diff": {"tf": 2.449489742783178}, "sqlglot.executor": {"tf": 3.7416573867739413}, "sqlglot.executor.execute": {"tf": 1}, "sqlglot.lineage.lineage": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser": {"tf": 1}, "sqlglot.transforms.eliminate_qualify": {"tf": 1}}, "df": 28, "b": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "u": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot": {"tf": 14.594519519326424}, "sqlglot.dataframe": {"tf": 10.392304845413264}, "sqlglot.dialects": {"tf": 5.385164807134504}, "sqlglot.diff": {"tf": 5.830951894845301}, "sqlglot.diff.diff": {"tf": 2}, "sqlglot.executor": {"tf": 3.7416573867739413}, "sqlglot.expressions.Expression": {"tf": 2}, "sqlglot.expressions.Expression.output_name": {"tf": 2.449489742783178}, "sqlglot.expressions.Expression.assert_is": {"tf": 2}, "sqlglot.expressions.Condition.and_": {"tf": 2}, "sqlglot.expressions.Condition.or_": {"tf": 2}, "sqlglot.expressions.Condition.not_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Unionable.union": {"tf": 2}, "sqlglot.expressions.Unionable.intersect": {"tf": 2}, "sqlglot.expressions.Unionable.except_": {"tf": 2}, "sqlglot.expressions.Column.output_name": {"tf": 2.449489742783178}, "sqlglot.expressions.Delete.delete": {"tf": 1.4142135623730951}, "sqlglot.expressions.Delete.where": {"tf": 2.449489742783178}, "sqlglot.expressions.Delete.returning": {"tf": 2.449489742783178}, "sqlglot.expressions.Identifier.output_name": {"tf": 2.449489742783178}, "sqlglot.expressions.Literal.output_name": {"tf": 2.449489742783178}, "sqlglot.expressions.Join.on": {"tf": 2}, "sqlglot.expressions.Join.using": {"tf": 2.449489742783178}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 2.449489742783178}, "sqlglot.expressions.Subqueryable.with_": {"tf": 2.8284271247461903}, "sqlglot.expressions.Union.limit": {"tf": 2}, "sqlglot.expressions.Union.select": {"tf": 2}, "sqlglot.expressions.Select.from_": {"tf": 2}, "sqlglot.expressions.Select.group_by": {"tf": 2.8284271247461903}, "sqlglot.expressions.Select.order_by": {"tf": 2.449489742783178}, "sqlglot.expressions.Select.sort_by": {"tf": 2.449489742783178}, "sqlglot.expressions.Select.cluster_by": {"tf": 2.449489742783178}, "sqlglot.expressions.Select.limit": {"tf": 2}, "sqlglot.expressions.Select.offset": {"tf": 2}, "sqlglot.expressions.Select.select": {"tf": 2}, "sqlglot.expressions.Select.lateral": {"tf": 2.449489742783178}, "sqlglot.expressions.Select.join": {"tf": 5.477225575051661}, "sqlglot.expressions.Select.where": {"tf": 2.8284271247461903}, "sqlglot.expressions.Select.having": {"tf": 3.1622776601683795}, "sqlglot.expressions.Select.distinct": {"tf": 2}, "sqlglot.expressions.Select.ctas": {"tf": 2.449489742783178}, "sqlglot.expressions.Select.lock": {"tf": 4.47213595499958}, "sqlglot.expressions.Subquery.output_name": {"tf": 2.449489742783178}, "sqlglot.expressions.Star.output_name": {"tf": 2.449489742783178}, "sqlglot.expressions.Alias.output_name": {"tf": 2.449489742783178}, "sqlglot.expressions.Cast.output_name": {"tf": 2.449489742783178}, "sqlglot.expressions.maybe_parse": {"tf": 2}, "sqlglot.expressions.union": {"tf": 2}, "sqlglot.expressions.intersect": {"tf": 2}, "sqlglot.expressions.except_": {"tf": 2}, "sqlglot.expressions.select": {"tf": 2.449489742783178}, "sqlglot.expressions.from_": {"tf": 2.449489742783178}, "sqlglot.expressions.update": {"tf": 4}, "sqlglot.expressions.delete": {"tf": 2}, "sqlglot.expressions.condition": {"tf": 3.1622776601683795}, "sqlglot.expressions.and_": {"tf": 2.449489742783178}, "sqlglot.expressions.or_": {"tf": 2.449489742783178}, "sqlglot.expressions.not_": {"tf": 2}, "sqlglot.expressions.values": {"tf": 1.4142135623730951}, "sqlglot.expressions.column_table_names": {"tf": 1.4142135623730951}, "sqlglot.expressions.table_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.replace_tables": {"tf": 2.449489742783178}, "sqlglot.expressions.replace_placeholders": {"tf": 3.1622776601683795}, "sqlglot.expressions.expand": {"tf": 2.449489742783178}, "sqlglot.expressions.func": {"tf": 2.449489742783178}, "sqlglot.helper.split_num_words": {"tf": 3.4641016151377544}, "sqlglot.helper.is_iterable": {"tf": 1.4142135623730951}, "sqlglot.helper.flatten": {"tf": 1.4142135623730951}, "sqlglot.helper.dict_depth": {"tf": 3.1622776601683795}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 3.1622776601683795}, "sqlglot.optimizer.eliminate_ctes.eliminate_ctes": {"tf": 1.4142135623730951}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 1.4142135623730951}, "sqlglot.optimizer.eliminate_subqueries.eliminate_subqueries": {"tf": 2}, "sqlglot.optimizer.expand_laterals.expand_laterals": {"tf": 1.4142135623730951}, "sqlglot.optimizer.expand_multi_table_selects.expand_multi_table_selects": {"tf": 1.4142135623730951}, "sqlglot.optimizer.lower_identities.lower_identities": {"tf": 2}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1.4142135623730951}, "sqlglot.optimizer.normalize.normalize": {"tf": 1.4142135623730951}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1.4142135623730951}, "sqlglot.optimizer.optimize_joins.optimize_joins": {"tf": 1.4142135623730951}, "sqlglot.optimizer.pushdown_predicates.pushdown_predicates": {"tf": 1.4142135623730951}, "sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 1.4142135623730951}, "sqlglot.optimizer.qualify_columns.qualify_columns": {"tf": 2.8284271247461903}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"tf": 2}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1.4142135623730951}, "sqlglot.optimizer.simplify.simplify": {"tf": 1.4142135623730951}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 1.4142135623730951}, "sqlglot.time.format_time": {"tf": 2.449489742783178}, "sqlglot.transforms.unalias_group": {"tf": 1.4142135623730951}, "sqlglot.trie.new_trie": {"tf": 2.449489742783178}, "sqlglot.trie.in_trie": {"tf": 3.4641016151377544}}, "df": 91, "e": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 2}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 2}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 2}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 2}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 2}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 2}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 2}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 2}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 2}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 2}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 2}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 2}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 2}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 2}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 2}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 2}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 2}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 2}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 2}, "sqlglot.executor.python.Python.Generator": {"tf": 2}, "sqlglot.expressions.to_identifier": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1}, "sqlglot.expressions.column": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 2}, "sqlglot.optimizer.lower_identities.lower_identities": {"tf": 1}}, "df": 26, "d": {"docs": {"sqlglot": {"tf": 3}, "sqlglot.diff.diff": {"tf": 2}, "sqlglot.expressions.maybe_parse": {"tf": 1}, "sqlglot.expressions.to_identifier": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1.4142135623730951}, "sqlglot.expressions.column": {"tf": 1}, "sqlglot.optimizer.lower_identities.lower_identities": {"tf": 1}}, "df": 7}, "s": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dialects": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.executor.python.Python.Generator": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator": {"tf": 1.4142135623730951}}, "df": 25}}}, "k": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 2}}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}, "sqlglot.optimizer.expand_laterals.expand_laterals": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1.4142135623730951}, "sqlglot.optimizer.qualify_columns.qualify_columns": {"tf": 1.4142135623730951}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"tf": 1.4142135623730951}, "sqlglot.transforms.eliminate_qualify": {"tf": 1.7320508075688772}}, "df": 7, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.lineage.lineage": {"tf": 1}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}, "d": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.optimizer.qualify_columns.qualify_columns": {"tf": 1.4142135623730951}, "sqlglot.optimizer.qualify_columns.validate_qualify_columns": {"tf": 1}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"tf": 1.4142135623730951}}, "df": 4}}}}}}}}}, "y": {"docs": {"sqlglot": {"tf": 3.3166247903554}, "sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 3.4641016151377544}, "sqlglot.expressions.Expression.replace": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.assert_is": {"tf": 1.4142135623730951}, "sqlglot.expressions.Condition.and_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Condition.or_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Predicate": {"tf": 1.4142135623730951}, "sqlglot.expressions.Join.on": {"tf": 1.4142135623730951}, "sqlglot.expressions.Union.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.lateral": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.join": {"tf": 3.1622776601683795}, "sqlglot.expressions.Select.having": {"tf": 2}, "sqlglot.expressions.Kwarg": {"tf": 1}, "sqlglot.expressions.update": {"tf": 1.4142135623730951}, "sqlglot.expressions.condition": {"tf": 1.4142135623730951}, "sqlglot.expressions.and_": {"tf": 1.4142135623730951}, "sqlglot.expressions.or_": {"tf": 1.4142135623730951}, "sqlglot.expressions.var": {"tf": 1}, "sqlglot.expressions.expand": {"tf": 1.4142135623730951}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 2}, "sqlglot.optimizer.eliminate_ctes.eliminate_ctes": {"tf": 1}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 2}, "sqlglot.optimizer.eliminate_subqueries.eliminate_subqueries": {"tf": 3}, "sqlglot.optimizer.expand_multi_table_selects.expand_multi_table_selects": {"tf": 1.4142135623730951}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 2}, "sqlglot.optimizer.normalize.normalize": {"tf": 1.4142135623730951}, "sqlglot.optimizer.normalize.distributive_law": {"tf": 2.8284271247461903}, "sqlglot.optimizer.optimize_joins.optimize_joins": {"tf": 2}, "sqlglot.optimizer.pushdown_predicates.pushdown_predicates": {"tf": 2}, "sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 2}, "sqlglot.optimizer.scope.Scope": {"tf": 2.23606797749979}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1.7320508075688772}, "sqlglot.optimizer.simplify.rewrite_between": {"tf": 1.4142135623730951}, "sqlglot.optimizer.simplify.simplify_not": {"tf": 2}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 2.8284271247461903}, "sqlglot.planner.Step.from_expression": {"tf": 2.8284271247461903}, "sqlglot.planner.Scan.from_expression": {"tf": 2.8284271247461903}, "sqlglot.planner.SetOperation.from_expression": {"tf": 2.8284271247461903}, "sqlglot.time.format_time": {"tf": 1.4142135623730951}}, "df": 41, "o": {"docs": {}, "df": 0, "u": {"docs": {"sqlglot": {"tf": 2.23606797749979}, "sqlglot.dataframe": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 2}, "sqlglot.executor": {"tf": 2}, "sqlglot.generator.Generator.generate": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1.4142135623730951}}, "df": 8, "r": {"docs": {"sqlglot.dataframe": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 4}}}, "y": {"docs": {"sqlglot": {"tf": 1}}, "df": 1, "y": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.time.format_time": {"tf": 1.4142135623730951}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1, "s": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.expressions.Expression.iter_expressions": {"tf": 1}, "sqlglot.expressions.Expression.find_all": {"tf": 1}, "sqlglot.expressions.Expression.flatten": {"tf": 1}, "sqlglot.helper.csv_reader": {"tf": 1}, "sqlglot.helper.flatten": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.traverse": {"tf": 1}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1}}, "df": 9}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}, "e": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 2}, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}, "h": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1}}, "df": 2, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 2, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}}}}}, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 2}, "sqlglot.parse": {"tf": 1}, "sqlglot.parse_one": {"tf": 1}, "sqlglot.transpile": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1}, "sqlglot.executor.execute": {"tf": 1}, "sqlglot.expressions.Expression.sql": {"tf": 1}}, "df": 7}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}, "y": {"docs": {"sqlglot.expressions.Expression": {"tf": 1}}, "df": 1}}}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {"sqlglot.diff": {"tf": 3.7416573867739413}}, "df": 1, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}}, "df": 1}}}}}}}}, "m": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "f": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.optimizer.scope.Scope.join_hints": {"tf": 1.4142135623730951}}, "df": 1}}}}, "o": {"docs": {}, "df": 0, "w": {"docs": {"sqlglot.dataframe": {"tf": 1.4142135623730951}, "sqlglot.dialects": {"tf": 1}, "sqlglot.diff": {"tf": 2.449489742783178}, "sqlglot.executor": {"tf": 1.4142135623730951}}, "df": 4, "e": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1.7320508075688772}}, "df": 3}}}}}, "p": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}, "l": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.executor.context.Context": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.diff": {"tf": 1}}, "df": 2}, "d": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1}}, "df": 19}, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}, "p": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1, "q": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}, "p": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "l": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.diff": {"tf": 1.7320508075688772}, "sqlglot.diff.diff": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1}}, "df": 4, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dialects.dialect.format_time_lambda": {"tf": 1}, "sqlglot.expressions": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver": {"tf": 1}}, "df": 3, "s": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}, "f": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.expressions.condition": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}, "sqlglot.parser.Parser.parse": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 1}}, "df": 4}}}}}, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 2.23606797749979}, "sqlglot.diff.diff": {"tf": 1}}, "df": 2}}}}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1}}, "df": 2}}, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}, "v": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.with_properties": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1}, "sqlglot.diff": {"tf": 4.69041575982343}, "sqlglot.executor": {"tf": 1.7320508075688772}, "sqlglot.optimizer.qualify_columns.qualify_columns": {"tf": 1}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 1}}, "df": 9, "n": {"docs": {}, "df": 0, "\u2019": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.executor": {"tf": 2}, "sqlglot.expressions.Select.having": {"tf": 1.7320508075688772}}, "df": 2}}}}, "s": {"docs": {"sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1}, "sqlglot.dialects": {"tf": 1}, "sqlglot.diff": {"tf": 2.23606797749979}, "sqlglot.diff.Insert": {"tf": 1}, "sqlglot.diff.Remove": {"tf": 1}, "sqlglot.diff.Move": {"tf": 1}, "sqlglot.diff.Update": {"tf": 1}, "sqlglot.executor": {"tf": 2.449489742783178}, "sqlglot.expressions.Expression.output_name": {"tf": 1}, "sqlglot.expressions.Column.output_name": {"tf": 1}, "sqlglot.expressions.Identifier.output_name": {"tf": 1}, "sqlglot.expressions.Literal.output_name": {"tf": 1}, "sqlglot.expressions.Subquery.output_name": {"tf": 1}, "sqlglot.expressions.Star.output_name": {"tf": 1}, "sqlglot.expressions.Alias.output_name": {"tf": 1}, "sqlglot.expressions.Cast.output_name": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 19, "n": {"docs": {"sqlglot.diff.Keep": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 2, "\u2019": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}, "h": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.generator.Generator.generate": {"tf": 1.4142135623730951}}, "df": 2, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.expressions.Expression": {"tf": 1}}, "df": 1}}}}}, "d": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}, "sqlglot.executor": {"tf": 1}}, "df": 2}, "n": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.union": {"tf": 1.4142135623730951}, "sqlglot.expressions.intersect": {"tf": 1.4142135623730951}, "sqlglot.expressions.except_": {"tf": 1.4142135623730951}}, "df": 3, "y": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1}}, "df": 2}}, "w": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}}}}, "l": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1, "f": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}, "p": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}, "u": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "o": {"docs": {"sqlglot.dataframe": {"tf": 1.7320508075688772}}, "df": 1}}, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "\u2019": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}, "t": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, ":": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.dataframe.sql.DataFrame.persist": {"tf": 1}}, "df": 1}}}}}, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff.ChangeDistiller": {"tf": 1}}, "df": 1}}}}}}}}}}, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "j": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.lineage.LineageHTML": {"tf": 1}}, "df": 1}}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "v": {"docs": {"sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1}}, "df": 1}}, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.transforms.eliminate_qualify": {"tf": 1}}, "df": 1}}}}}}}}, ":": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff.ChangeDistiller": {"tf": 1}}, "df": 1}}}}}}}}}}}, "m": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.dataframe.sql.DataFrame.persist": {"tf": 1}, "sqlglot.lineage.LineageHTML": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1}}, "df": 3}}}}, "m": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1.7320508075688772}}, "df": 3, "a": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dataframe": {"tf": 1}, "sqlglot.dialects": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.helper.open_file": {"tf": 1}, "sqlglot.schema.Schema.add_table": {"tf": 1}}, "df": 9, "b": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.maybe_parse": {"tf": 1.4142135623730951}}, "df": 1}}}, "k": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 2}, "sqlglot.dataframe": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1.7320508075688772}, "sqlglot.diff": {"tf": 1}}, "df": 6, "s": {"docs": {"sqlglot.dialects": {"tf": 1}, "sqlglot.executor": {"tf": 1}, "sqlglot.executor.env.null_if_any": {"tf": 1}, "sqlglot.optimizer.lower_identities.lower_identities": {"tf": 1}}, "df": 4}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.parser.Parser.validate_expression": {"tf": 1}}, "df": 2}}}}, "p": {"docs": {"sqlglot.expressions.Func": {"tf": 1}}, "df": 1, "p": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.dialects": {"tf": 1.4142135623730951}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.executor.execute": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1.4142135623730951}, "sqlglot.executor.table.Tables": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.expressions.Select.ctas": {"tf": 1}, "sqlglot.expressions.replace_tables": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator": {"tf": 1.4142135623730951}, "sqlglot.lineage.lineage": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 1}, "sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 1}, "sqlglot.optimizer.scope.Scope.cte_sources": {"tf": 1}, "sqlglot.optimizer.scope.Scope.ref_count": {"tf": 1}, "sqlglot.schema.Schema.add_table": {"tf": 1.4142135623730951}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1.7320508075688772}, "sqlglot.schema.MappingSchema": {"tf": 1.7320508075688772}, "sqlglot.schema.MappingSchema.add_table": {"tf": 1.7320508075688772}, "sqlglot.time.format_time": {"tf": 1.4142135623730951}}, "df": 39, "s": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.schema.MappingSchema": {"tf": 1}}, "df": 22}, "[": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.executor.table.Tables": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1}}, "df": 2}, "e": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.executor.table.Tables": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1}}, "df": 2}}}}}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.replace_tables": {"tf": 1}, "sqlglot.expressions.replace_placeholders": {"tf": 1}}, "df": 2}}}, "s": {"docs": {"sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1.4142135623730951}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}}, "df": 5}}, "i": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1.4142135623730951}}, "df": 3, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions": {"tf": 1}}, "df": 1}}}}, "n": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.diff": {"tf": 1.7320508075688772}, "sqlglot.executor": {"tf": 1.7320508075688772}, "sqlglot.optimizer.canonicalize.canonicalize": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 1.4142135623730951}}, "df": 6}, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.Expression.error_messages": {"tf": 1}, "sqlglot.parser.Parser.validate_expression": {"tf": 1}}, "df": 2}}}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dataframe": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.diff": {"tf": 2}, "sqlglot.expressions.Expression.find": {"tf": 1}, "sqlglot.expressions.Expression.find_all": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.find_ancestor": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1.4142135623730951}}, "df": 7, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.expressions.Expression.find": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1.4142135623730951}}, "df": 5}, "d": {"docs": {"sqlglot.diff": {"tf": 2.23606797749979}, "sqlglot.diff.diff": {"tf": 1}}, "df": 2}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.diff": {"tf": 7.14142842854285}, "sqlglot.diff.diff": {"tf": 1}, "sqlglot.expressions.Expression.find_ancestor": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1}}, "df": 4, "s": {"docs": {"sqlglot.diff": {"tf": 3}, "sqlglot.diff.diff": {"tf": 1}}, "df": 2}}}}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}, "h": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}, "x": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.7320508075688772}, "sqlglot.diff": {"tf": 2.449489742783178}, "sqlglot.executor.python.Python.Generator": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator": {"tf": 1.7320508075688772}, "sqlglot.optimizer.normalize.normalize": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1}}, "df": 43, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1}}, "df": 40}}, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.optimizer.normalize.normalize": {"tf": 1}}, "df": 1}}}}}, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.diff.ChangeDistiller": {"tf": 1}}, "df": 2, "e": {"docs": {}, "df": 0, "z": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}, "o": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}, "e": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}, "sqlglot.executor": {"tf": 1}}, "df": 2, "t": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.dataframe": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 3}}}}, "l": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.optimizer.canonicalize.canonicalize": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}, "sqlglot.transforms.delegate": {"tf": 1}}, "df": 46, "s": {"docs": {"sqlglot.helper.count_params": {"tf": 1}, "sqlglot.transforms.delegate": {"tf": 1}}, "df": 2}}}}, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1, "s": {"docs": {"sqlglot.executor": {"tf": 1.7320508075688772}}, "df": 1}}}}}, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser": {"tf": 1.4142135623730951}}, "df": 19, "s": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.executor": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.expressions.Expression.error_messages": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1}, "sqlglot.parser.Parser.parse": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 1}}, "df": 44}}}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1}}, "df": 1, "t": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}, "r": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 2}}, "df": 1, "s": {"docs": {"sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1}}, "df": 1}}}}}, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot": {"tf": 1.7320508075688772}, "sqlglot.expressions.Delete.delete": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Delete.returning": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Join.using": {"tf": 1}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1}, "sqlglot.expressions.Union.limit": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.expressions.Select.limit": {"tf": 1}, "sqlglot.expressions.Select.offset": {"tf": 1}, "sqlglot.expressions.Select.select": {"tf": 1}, "sqlglot.expressions.Select.lateral": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1}, "sqlglot.expressions.Select.where": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1}, "sqlglot.expressions.Select.distinct": {"tf": 1}, "sqlglot.expressions.Select.ctas": {"tf": 1}, "sqlglot.expressions.Select.lock": {"tf": 1}}, "df": 25}, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.expressions.Expression.transform": {"tf": 1}}, "df": 2}}}}}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.Expression.transform": {"tf": 1}, "sqlglot.expressions.Delete.delete": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Delete.returning": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Join.using": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.expressions.Select.limit": {"tf": 1}, "sqlglot.expressions.Select.offset": {"tf": 1}, "sqlglot.expressions.Select.select": {"tf": 1}, "sqlglot.expressions.Select.lateral": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1}, "sqlglot.expressions.Select.where": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1}, "sqlglot.expressions.Select.distinct": {"tf": 1}, "sqlglot.expressions.Select.lock": {"tf": 1}}, "df": 22}}}}}, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.expressions": {"tf": 1}, "sqlglot.helper.subclasses": {"tf": 1.4142135623730951}}, "df": 4}}}, "e": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.expressions.Select.lock": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.helper.open_file": {"tf": 1}}, "df": 23, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.dataframe": {"tf": 1}}, "df": 1}}}}}, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot": {"tf": 1.4142135623730951}}, "df": 1, "s": {"docs": {"sqlglot.expressions.to_interval": {"tf": 1}}, "df": 1}}}, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.diff": {"tf": 3.1622776601683795}, "sqlglot.diff.diff": {"tf": 1}}, "df": 3, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 2}}, "df": 1}}}}}, "d": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}}, "z": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "r": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1}, "sqlglot.diff": {"tf": 2.6457513110645907}, "sqlglot.executor": {"tf": 2}, "sqlglot.executor.table.Tables": {"tf": 1}, "sqlglot.helper.apply_index_offset": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1}}, "df": 8}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe": {"tf": 1.4142135623730951}, "sqlglot.dialects": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1}}, "df": 5, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1}}, "df": 3}}}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}, "c": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.executor": {"tf": 1.4142135623730951}}, "df": 1}}}, "s": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.optimizer.expand_multi_table_selects.expand_multi_table_selects": {"tf": 1}}, "df": 2, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}, "e": {"docs": {"sqlglot.executor": {"tf": 1.7320508075688772}, "sqlglot.expressions.Condition.and_": {"tf": 1}, "sqlglot.expressions.Condition.or_": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Select.where": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1}, "sqlglot.expressions.select": {"tf": 1}, "sqlglot.expressions.and_": {"tf": 1}, "sqlglot.expressions.or_": {"tf": 1}, "sqlglot.optimizer.expand_multi_table_selects.expand_multi_table_selects": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1}}, "df": 12}}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.diff.diff": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}}, "df": 5}}, "c": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1.4142135623730951}}, "df": 2}}, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.expressions.func": {"tf": 1}}, "df": 2}}}}}}}, "y": {"docs": {"sqlglot.diff": {"tf": 2.449489742783178}, "sqlglot.executor": {"tf": 2.23606797749979}, "sqlglot.expressions.update": {"tf": 1.4142135623730951}, "sqlglot.expressions.delete": {"tf": 1.4142135623730951}}, "df": 4, "s": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.parse": {"tf": 1}, "sqlglot.parse_one": {"tf": 1}, "sqlglot.transpile": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.executor.execute": {"tf": 1}, "sqlglot.expressions.Expression.sql": {"tf": 1}, "sqlglot.expressions.Select.lock": {"tf": 1.4142135623730951}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1}}, "df": 9}}, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "f": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 2.6457513110645907}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 2}}}, "x": {"docs": {"sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}}, "df": 1, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1}}, "df": 2}}}}, "g": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.executor.table.Tables": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1}}, "df": 8}}}, "n": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.helper.split_num_words": {"tf": 1}}, "df": 2, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {"sqlglot.helper.split_num_words": {"tf": 1}}, "df": 1}}}}}, "d": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}, "s": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}}}}}, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.schema.MappingSchema": {"tf": 1}}, "df": 1}}}}}}, "j": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1, "o": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot": {"tf": 3}, "sqlglot.executor": {"tf": 2.449489742783178}, "sqlglot.expressions.Join.on": {"tf": 2.23606797749979}, "sqlglot.expressions.Join.using": {"tf": 2.23606797749979}, "sqlglot.expressions.Select.join": {"tf": 3.7416573867739413}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 1.4142135623730951}, "sqlglot.optimizer.eliminate_joins.join_condition": {"tf": 2.23606797749979}, "sqlglot.optimizer.eliminate_subqueries.eliminate_subqueries": {"tf": 1.4142135623730951}, "sqlglot.optimizer.expand_multi_table_selects.expand_multi_table_selects": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 2}, "sqlglot.optimizer.optimize_joins.optimize_joins": {"tf": 2}, "sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 1}, "sqlglot.optimizer.scope.Scope.join_hints": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 1.4142135623730951}, "sqlglot.planner.Step.from_expression": {"tf": 1.4142135623730951}, "sqlglot.planner.Scan.from_expression": {"tf": 1.4142135623730951}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1.4142135623730951}}, "df": 17, "s": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 1.7320508075688772}, "sqlglot.optimizer.expand_multi_table_selects.expand_multi_table_selects": {"tf": 1}, "sqlglot.optimizer.optimize_joins.optimize_joins": {"tf": 1.7320508075688772}, "sqlglot.optimizer.optimize_joins.reorder_joins": {"tf": 1}, "sqlglot.optimizer.optimize_joins.normalize": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_predicates": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 1.4142135623730951}}, "df": 9}, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.optimizer.scope.Scope.join_hints": {"tf": 1}}, "df": 1}}}}}}, "h": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dataframe": {"tf": 1.7320508075688772}}, "df": 1}}, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}, "b": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1}, "sqlglot.diff": {"tf": 2.23606797749979}, "sqlglot.executor": {"tf": 2.23606797749979}}, "df": 5}}, "n": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.dataframe": {"tf": 1.7320508075688772}}, "df": 1}}, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}, "v": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 2}}}, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}, "v": {"docs": {}, "df": 0, "m": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}, "s": {"docs": {"sqlglot.lineage.LineageHTML": {"tf": 1}}, "df": 1, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.Expression.dump": {"tf": 1}, "sqlglot.serde.dump": {"tf": 1}}, "df": 2}}}}, "x": {"docs": {"sqlglot": {"tf": 4.898979485566356}, "sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 4.358898943540674}, "sqlglot.expressions.Expression.replace": {"tf": 1}, "sqlglot.expressions.Expression.assert_is": {"tf": 1.4142135623730951}, "sqlglot.expressions.Condition.and_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Condition.or_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Condition.not_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Predicate": {"tf": 1.7320508075688772}, "sqlglot.expressions.Delete.where": {"tf": 2}, "sqlglot.expressions.Join.on": {"tf": 1.4142135623730951}, "sqlglot.expressions.Join.using": {"tf": 1.4142135623730951}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 2}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Union.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.from_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.group_by": {"tf": 2}, "sqlglot.expressions.Select.order_by": {"tf": 2}, "sqlglot.expressions.Select.sort_by": {"tf": 2}, "sqlglot.expressions.Select.cluster_by": {"tf": 2}, "sqlglot.expressions.Select.limit": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.offset": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.lateral": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.join": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.where": {"tf": 2.449489742783178}, "sqlglot.expressions.Select.having": {"tf": 2}, "sqlglot.expressions.Select.distinct": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.ctas": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.lock": {"tf": 2.8284271247461903}, "sqlglot.expressions.Tag": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1.4142135623730951}, "sqlglot.expressions.update": {"tf": 1.4142135623730951}, "sqlglot.expressions.condition": {"tf": 2}, "sqlglot.expressions.and_": {"tf": 1.4142135623730951}, "sqlglot.expressions.or_": {"tf": 1.4142135623730951}, "sqlglot.expressions.subquery": {"tf": 2}, "sqlglot.expressions.cast": {"tf": 1.4142135623730951}, "sqlglot.expressions.var": {"tf": 2}, "sqlglot.expressions.expand": {"tf": 1.7320508075688772}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1.7320508075688772}, "sqlglot.optimizer.eliminate_ctes.eliminate_ctes": {"tf": 1}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 2.23606797749979}, "sqlglot.optimizer.eliminate_subqueries.eliminate_subqueries": {"tf": 2.23606797749979}, "sqlglot.optimizer.expand_laterals.expand_laterals": {"tf": 2.23606797749979}, "sqlglot.optimizer.expand_multi_table_selects.expand_multi_table_selects": {"tf": 1.4142135623730951}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 2.8284271247461903}, "sqlglot.optimizer.normalize.normalize": {"tf": 1.4142135623730951}, "sqlglot.optimizer.normalize.distributive_law": {"tf": 2.449489742783178}, "sqlglot.optimizer.optimize_joins.optimize_joins": {"tf": 2}, "sqlglot.optimizer.pushdown_predicates.pushdown_predicates": {"tf": 2}, "sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 2.23606797749979}, "sqlglot.optimizer.scope.Scope": {"tf": 2.6457513110645907}, "sqlglot.optimizer.scope.Scope.subqueries": {"tf": 1}, "sqlglot.optimizer.scope.Scope.selects": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 2}, "sqlglot.optimizer.simplify.rewrite_between": {"tf": 1.7320508075688772}, "sqlglot.optimizer.simplify.simplify_not": {"tf": 2}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 2.449489742783178}, "sqlglot.planner.Step.from_expression": {"tf": 4}, "sqlglot.planner.Scan.from_expression": {"tf": 4}, "sqlglot.planner.SetOperation.from_expression": {"tf": 4}, "sqlglot.transforms.unalias_group": {"tf": 1.4142135623730951}}, "df": 63, "a": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}, "z": {"docs": {"sqlglot": {"tf": 3}, "sqlglot.expressions.Expression.assert_is": {"tf": 1.4142135623730951}, "sqlglot.expressions.Union.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.lateral": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.join": {"tf": 1.4142135623730951}, "sqlglot.expressions.update": {"tf": 1.4142135623730951}, "sqlglot.expressions.and_": {"tf": 1.4142135623730951}, "sqlglot.expressions.or_": {"tf": 1.4142135623730951}, "sqlglot.expressions.expand": {"tf": 1.4142135623730951}, "sqlglot.optimizer.eliminate_ctes.eliminate_ctes": {"tf": 1.4142135623730951}, "sqlglot.optimizer.eliminate_subqueries.eliminate_subqueries": {"tf": 1.4142135623730951}, "sqlglot.optimizer.normalize.normalize": {"tf": 1.7320508075688772}, "sqlglot.optimizer.normalize.distributive_law": {"tf": 2.23606797749979}, "sqlglot.optimizer.optimize_joins.optimize_joins": {"tf": 2.449489742783178}, "sqlglot.optimizer.simplify.rewrite_between": {"tf": 1.4142135623730951}}, "df": 15, "e": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.diff": {"tf": 3.605551275463989}, "sqlglot.diff.diff": {"tf": 1.7320508075688772}, "sqlglot.executor": {"tf": 1}}, "df": 4}}, "y": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.executor.table.Tables": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression": {"tf": 2}, "sqlglot.expressions.Expression.this": {"tf": 1}, "sqlglot.expressions.Expression.expression": {"tf": 1}, "sqlglot.expressions.Expression.expressions": {"tf": 1}, "sqlglot.expressions.Expression.text": {"tf": 1}, "sqlglot.expressions.Expression.append": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.set": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.iter_expressions": {"tf": 1}, "sqlglot.expressions.Expression.walk": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.optimizer.eliminate_joins.join_condition": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1.4142135623730951}, "sqlglot.trie.in_trie": {"tf": 2}}, "df": 35, "w": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.executor": {"tf": 1}, "sqlglot.expressions.replace_placeholders": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.trie.new_trie": {"tf": 1}, "sqlglot.trie.in_trie": {"tf": 1}}, "df": 5, "s": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.dialects": {"tf": 1.4142135623730951}, "sqlglot.trie.new_trie": {"tf": 2}}, "df": 3}}}}}, "s": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator": {"tf": 1}}, "df": 24}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.executor.table.Tables": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1}}, "df": 2}}}}, "d": {"docs": {"sqlglot.trie.new_trie": {"tf": 1}}, "df": 1}}}, "r": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}}}, "p": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.optimizer.scope.Scope.replace": {"tf": 1}}, "df": 1}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe": {"tf": 1.7320508075688772}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 3, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}, "n": {"docs": {"sqlglot.diff.diff": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {"sqlglot.executor.table.Tables": {"tf": 1.4142135623730951}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1.4142135623730951}}, "df": 2}, "w": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.expressions.Kwarg": {"tf": 1.4142135623730951}}, "df": 1, "s": {"docs": {"sqlglot.expressions.Condition.and_": {"tf": 1}, "sqlglot.expressions.Condition.or_": {"tf": 1}, "sqlglot.expressions.Unionable.union": {"tf": 1}, "sqlglot.expressions.Unionable.intersect": {"tf": 1}, "sqlglot.expressions.Unionable.except_": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Join.using": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1}, "sqlglot.expressions.Union.limit": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.expressions.Select.limit": {"tf": 1}, "sqlglot.expressions.Select.offset": {"tf": 1}, "sqlglot.expressions.Select.lateral": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1}, "sqlglot.expressions.Select.where": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1}, "sqlglot.expressions.Select.ctas": {"tf": 1}, "sqlglot.expressions.union": {"tf": 1}, "sqlglot.expressions.intersect": {"tf": 1}, "sqlglot.expressions.except_": {"tf": 1}, "sqlglot.expressions.replace_placeholders": {"tf": 1}, "sqlglot.expressions.func": {"tf": 1.7320508075688772}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser.expression": {"tf": 1}}, "df": 28}}}}}}}}}, "pipeline": ["trimmer"], "_isPrebuiltIndex": true}; + /** pdoc search index */const docs = {"version": "0.9.5", "fields": ["qualname", "fullname", "annotation", "default_value", "signature", "bases", "doc"], "ref": "fullname", "documentStore": {"docs": {"sqlglot": {"fullname": "sqlglot", "modulename": "sqlglot", "kind": "module", "doc": "

\"SQLGlot

\n\n

SQLGlot is a no-dependency SQL parser, transpiler, optimizer, and engine. It can be used to format SQL or translate between 19 different dialects like DuckDB, Presto, Spark, Snowflake, and BigQuery. It aims to read a wide variety of SQL inputs and output syntactically correct SQL in the targeted dialects.

\n\n

It is a very comprehensive generic SQL parser with a robust test suite. It is also quite performant, while being written purely in Python.

\n\n

You can easily customize the parser, analyze queries, traverse expression trees, and programmatically build SQL.

\n\n

Syntax errors are highlighted and dialect incompatibilities can warn or raise depending on configurations. However, it should be noted that SQL validation is not SQLGlot\u2019s goal, so some syntax errors may go unnoticed.

\n\n

Contributions are very welcome in SQLGlot; read the contribution guide to get started!

\n\n

Table of Contents

\n\n\n\n

Install

\n\n

From PyPI:

\n\n
pip3 install sqlglot\n
\n\n

Or with a local checkout:

\n\n
make install\n
\n\n

Requirements for development (optional):

\n\n
make install-dev\n
\n\n

Get in Touch

\n\n

We'd love to hear from you. Join our community Slack channel!

\n\n

Examples

\n\n

Formatting and Transpiling

\n\n

Easily translate from one dialect to another. For example, date/time functions vary from dialects and can be hard to deal with:

\n\n
\n
import sqlglot\nsqlglot.transpile("SELECT EPOCH_MS(1618088028295)", read="duckdb", write="hive")[0]\n
\n
\n\n
\n
'SELECT FROM_UNIXTIME(1618088028295 / 1000)'\n
\n
\n\n

SQLGlot can even translate custom time formats:

\n\n
\n
import sqlglot\nsqlglot.transpile("SELECT STRFTIME(x, '%y-%-m-%S')", read="duckdb", write="hive")[0]\n
\n
\n\n
\n
"SELECT DATE_FORMAT(x, 'yy-M-ss')"\n
\n
\n\n

As another example, let's suppose that we want to read in a SQL query that contains a CTE and a cast to REAL, and then transpile it to Spark, which uses backticks for identifiers and FLOAT instead of REAL:

\n\n
\n
import sqlglot\n\nsql = """WITH baz AS (SELECT a, c FROM foo WHERE a = 1) SELECT f.a, b.b, baz.c, CAST("b"."a" AS REAL) d FROM foo f JOIN bar b ON f.a = b.a LEFT JOIN baz ON f.a = baz.a"""\nprint(sqlglot.transpile(sql, write="spark", identify=True, pretty=True)[0])\n
\n
\n\n
\n
WITH `baz` AS (\n  SELECT\n    `a`,\n    `c`\n  FROM `foo`\n  WHERE\n    `a` = 1\n)\nSELECT\n  `f`.`a`,\n  `b`.`b`,\n  `baz`.`c`,\n  CAST(`b`.`a` AS FLOAT) AS `d`\nFROM `foo` AS `f`\nJOIN `bar` AS `b`\n  ON `f`.`a` = `b`.`a`\nLEFT JOIN `baz`\n  ON `f`.`a` = `baz`.`a`\n
\n
\n\n

Comments are also preserved in a best-effort basis when transpiling SQL code:

\n\n
\n
sql = """\n/* multi\n   line\n   comment\n*/\nSELECT\n  tbl.cola /* comment 1 */ + tbl.colb /* comment 2 */,\n  CAST(x AS INT), # comment 3\n  y               -- comment 4\nFROM\n  bar /* comment 5 */,\n  tbl #          comment 6\n"""\n\nprint(sqlglot.transpile(sql, read='mysql', pretty=True)[0])\n
\n
\n\n
\n
/* multi\n   line\n   comment\n*/\nSELECT\n  tbl.cola /* comment 1 */ + tbl.colb /* comment 2 */,\n  CAST(x AS INT), /* comment 3 */\n  y /* comment 4 */\nFROM bar /* comment 5 */, tbl /*          comment 6 */\n
\n
\n\n

Metadata

\n\n

You can explore SQL with expression helpers to do things like find columns and tables:

\n\n
\n
from sqlglot import parse_one, exp\n\n# print all column references (a and b)\nfor column in parse_one("SELECT a, b + 1 AS c FROM d").find_all(exp.Column):\n    print(column.alias_or_name)\n\n# find all projections in select statements (a and c)\nfor select in parse_one("SELECT a, b + 1 AS c FROM d").find_all(exp.Select):\n    for projection in select.expressions:\n        print(projection.alias_or_name)\n\n# find all tables (x, y, z)\nfor table in parse_one("SELECT * FROM x JOIN y JOIN z").find_all(exp.Table):\n    print(table.name)\n
\n
\n\n

Parser Errors

\n\n

When the parser detects an error in the syntax, it raises a ParserError:

\n\n
\n
import sqlglot\nsqlglot.transpile("SELECT foo( FROM bar")\n
\n
\n\n
sqlglot.errors.ParseError: Expecting ). Line 1, Col: 13.\n  select foo( FROM bar\n              ~~~~\n
\n\n

Structured syntax errors are accessible for programmatic use:

\n\n
\n
import sqlglot\ntry:\n    sqlglot.transpile("SELECT foo( FROM bar")\nexcept sqlglot.errors.ParseError as e:\n    print(e.errors)\n
\n
\n\n
\n
[{\n  'description': 'Expecting )',\n  'line': 1,\n  'col': 13,\n  'start_context': 'SELECT foo( ',\n  'highlight': 'FROM',\n  'end_context': ' bar'\n}]\n
\n
\n\n

Unsupported Errors

\n\n

Presto APPROX_DISTINCT supports the accuracy argument which is not supported in Hive:

\n\n
\n
import sqlglot\nsqlglot.transpile("SELECT APPROX_DISTINCT(a, 0.1) FROM foo", read="presto", write="hive")\n
\n
\n\n
\n
APPROX_COUNT_DISTINCT does not support accuracy\n'SELECT APPROX_COUNT_DISTINCT(a) FROM foo'\n
\n
\n\n

Build and Modify SQL

\n\n

SQLGlot supports incrementally building sql expressions:

\n\n
\n
from sqlglot import select, condition\n\nwhere = condition("x=1").and_("y=1")\nselect("*").from_("y").where(where).sql()\n
\n
\n\n
\n
'SELECT * FROM y WHERE x = 1 AND y = 1'\n
\n
\n\n

You can also modify a parsed tree:

\n\n
\n
from sqlglot import parse_one\nparse_one("SELECT x FROM y").from_("z").sql()\n
\n
\n\n
\n
'SELECT x FROM y, z'\n
\n
\n\n

There is also a way to recursively transform the parsed tree by applying a mapping function to each tree node:

\n\n
\n
from sqlglot import exp, parse_one\n\nexpression_tree = parse_one("SELECT a FROM x")\n\ndef transformer(node):\n    if isinstance(node, exp.Column) and node.name == "a":\n        return parse_one("FUN(a)")\n    return node\n\ntransformed_tree = expression_tree.transform(transformer)\ntransformed_tree.sql()\n
\n
\n\n
\n
'SELECT FUN(a) FROM x'\n
\n
\n\n

SQL Optimizer

\n\n

SQLGlot can rewrite queries into an \"optimized\" form. It performs a variety of techniques to create a new canonical AST. This AST can be used to standardize queries or provide the foundations for implementing an actual engine. For example:

\n\n
\n
import sqlglot\nfrom sqlglot.optimizer import optimize\n\nprint(\n    optimize(\n        sqlglot.parse_one("""\n            SELECT A OR (B OR (C AND D))\n            FROM x\n            WHERE Z = date '2021-01-01' + INTERVAL '1' month OR 1 = 0\n        """),\n        schema={"x": {"A": "INT", "B": "INT", "C": "INT", "D": "INT", "Z": "STRING"}}\n    ).sql(pretty=True)\n)\n
\n
\n\n
\n
SELECT\n  (\n    "x"."a" OR "x"."b" OR "x"."c"\n  ) AND (\n    "x"."a" OR "x"."b" OR "x"."d"\n  ) AS "_col_0"\nFROM "x" AS "x"\nWHERE\n  CAST("x"."z" AS DATE) = CAST('2021-02-01' AS DATE)\n
\n
\n\n

AST Introspection

\n\n

You can see the AST version of the sql by calling repr:

\n\n
\n
from sqlglot import parse_one\nprint(repr(parse_one("SELECT a + 1 AS z")))\n
\n
\n\n
\n
(SELECT expressions:\n  (ALIAS this:\n    (ADD this:\n      (COLUMN this:\n        (IDENTIFIER this: a, quoted: False)), expression:\n      (LITERAL this: 1, is_string: False)), alias:\n    (IDENTIFIER this: z, quoted: False)))\n
\n
\n\n

AST Diff

\n\n

SQLGlot can calculate the difference between two expressions and output changes in a form of a sequence of actions needed to transform a source expression into a target one:

\n\n
\n
from sqlglot import diff, parse_one\ndiff(parse_one("SELECT a + b, c, d"), parse_one("SELECT c, a - b, d"))\n
\n
\n\n
\n
[\n  Remove(expression=(ADD this:\n    (COLUMN this:\n      (IDENTIFIER this: a, quoted: False)), expression:\n    (COLUMN this:\n      (IDENTIFIER this: b, quoted: False)))),\n  Insert(expression=(SUB this:\n    (COLUMN this:\n      (IDENTIFIER this: a, quoted: False)), expression:\n    (COLUMN this:\n      (IDENTIFIER this: b, quoted: False)))),\n  Move(expression=(COLUMN this:\n    (IDENTIFIER this: c, quoted: False))),\n  Keep(source=(IDENTIFIER this: b, quoted: False), target=(IDENTIFIER this: b, quoted: False)),\n  ...\n]\n
\n
\n\n

See also: Semantic Diff for SQL.

\n\n

Custom Dialects

\n\n

Dialects can be added by subclassing Dialect:

\n\n
\n
from sqlglot import exp\nfrom sqlglot.dialects.dialect import Dialect\nfrom sqlglot.generator import Generator\nfrom sqlglot.tokens import Tokenizer, TokenType\n\n\nclass Custom(Dialect):\n    class Tokenizer(Tokenizer):\n        QUOTES = ["'", '"']\n        IDENTIFIERS = ["`"]\n\n        KEYWORDS = {\n            **Tokenizer.KEYWORDS,\n            "INT64": TokenType.BIGINT,\n            "FLOAT64": TokenType.DOUBLE,\n        }\n\n    class Generator(Generator):\n        TRANSFORMS = {exp.Array: lambda self, e: f"[{self.expressions(e)}]"}\n\n        TYPE_MAPPING = {\n            exp.DataType.Type.TINYINT: "INT64",\n            exp.DataType.Type.SMALLINT: "INT64",\n            exp.DataType.Type.INT: "INT64",\n            exp.DataType.Type.BIGINT: "INT64",\n            exp.DataType.Type.DECIMAL: "NUMERIC",\n            exp.DataType.Type.FLOAT: "FLOAT64",\n            exp.DataType.Type.DOUBLE: "FLOAT64",\n            exp.DataType.Type.BOOLEAN: "BOOL",\n            exp.DataType.Type.TEXT: "STRING",\n        }\n\nprint(Dialect["custom"])\n
\n
\n\n
<class '__main__.Custom'>\n
\n\n

SQL Execution

\n\n

One can even interpret SQL queries using SQLGlot, where the tables are represented as Python dictionaries. Although the engine is not very fast (it's not supposed to be) and is in a relatively early stage of development, it can be useful for unit testing and running SQL natively across Python objects. Additionally, the foundation can be easily integrated with fast compute kernels (arrow, pandas). Below is an example showcasing the execution of a SELECT expression that involves aggregations and JOINs:

\n\n
\n
from sqlglot.executor import execute\n\ntables = {\n    "sushi": [\n        {"id": 1, "price": 1.0},\n        {"id": 2, "price": 2.0},\n        {"id": 3, "price": 3.0},\n    ],\n    "order_items": [\n        {"sushi_id": 1, "order_id": 1},\n        {"sushi_id": 1, "order_id": 1},\n        {"sushi_id": 2, "order_id": 1},\n        {"sushi_id": 3, "order_id": 2},\n    ],\n    "orders": [\n        {"id": 1, "user_id": 1},\n        {"id": 2, "user_id": 2},\n    ],\n}\n\nexecute(\n    """\n    SELECT\n      o.user_id,\n      SUM(s.price) AS price\n    FROM orders o\n    JOIN order_items i\n      ON o.id = i.order_id\n    JOIN sushi s\n      ON i.sushi_id = s.id\n    GROUP BY o.user_id\n    """,\n    tables=tables\n)\n
\n
\n\n
\n
user_id price\n      1   4.0\n      2   3.0\n
\n
\n\n

See also: Writing a Python SQL engine from scratch.

\n\n

Used By

\n\n\n\n

Documentation

\n\n

SQLGlot uses pdoc to serve its API documentation:

\n\n
make docs-serve\n
\n\n

Run Tests and Lint

\n\n
make check  # Set SKIP_INTEGRATION=1 to skip integration tests\n
\n\n

Benchmarks

\n\n

Benchmarks run on Python 3.10.5 in seconds.

\n\n\n\n\n \n \n \n \n \n \n \n\n\n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n\n\n
Querysqlglotsqlfluffsqltreesqlparsemoz_sql_parsersqloxide
tpch0.01308 (1.0)1.60626 (122.7)0.01168 (0.893)0.04958 (3.791)0.08543 (6.531)0.00136 (0.104)
short0.00109 (1.0)0.14134 (129.2)0.00099 (0.906)0.00342 (3.131)0.00652 (5.970)8.76E-5 (0.080)
long0.01399 (1.0)2.12632 (151.9)0.01126 (0.805)0.04410 (3.151)0.06671 (4.767)0.00107 (0.076)
crazy0.03969 (1.0)24.3777 (614.1)0.03917 (0.987)11.7043 (294.8)1.03280 (26.02)0.00625 (0.157)
\n\n

Optional Dependencies

\n\n

SQLGlot uses dateutil to simplify literal timedelta expressions. The optimizer will not simplify expressions like the following if the module cannot be found:

\n\n
\n
x + interval '1' month\n
\n
\n\n
\n"}, "sqlglot.pretty": {"fullname": "sqlglot.pretty", "modulename": "sqlglot", "qualname": "pretty", "kind": "variable", "doc": "

Whether to format generated SQL by default.

\n", "default_value": "False"}, "sqlglot.schema": {"fullname": "sqlglot.schema", "modulename": "sqlglot.schema", "kind": "module", "doc": "

\n"}, "sqlglot.parse": {"fullname": "sqlglot.parse", "modulename": "sqlglot", "qualname": "parse", "kind": "function", "doc": "

Parses the given SQL string into a collection of syntax trees, one per parsed SQL statement.

\n\n
Arguments:
\n\n
    \n
  • sql: the SQL code string to parse.
  • \n
  • read: the SQL dialect to apply during parsing (eg. \"spark\", \"hive\", \"presto\", \"mysql\").
  • \n
  • **opts: other sqlglot.parser.Parser options.
  • \n
\n\n
Returns:
\n\n
\n

The resulting syntax tree collection.

\n
\n", "signature": "(\tsql: str,\tread: Union[str, sqlglot.dialects.dialect.Dialect, Type[sqlglot.dialects.dialect.Dialect], NoneType] = None,\t**opts) -> List[Optional[sqlglot.expressions.Expression]]:", "funcdef": "def"}, "sqlglot.parse_one": {"fullname": "sqlglot.parse_one", "modulename": "sqlglot", "qualname": "parse_one", "kind": "function", "doc": "

Parses the given SQL string and returns a syntax tree for the first parsed SQL statement.

\n\n
Arguments:
\n\n
    \n
  • sql: the SQL code string to parse.
  • \n
  • read: the SQL dialect to apply during parsing (eg. \"spark\", \"hive\", \"presto\", \"mysql\").
  • \n
  • into: the SQLGlot Expression to parse into.
  • \n
  • **opts: other sqlglot.parser.Parser options.
  • \n
\n\n
Returns:
\n\n
\n

The syntax tree for the first parsed statement.

\n
\n", "signature": "(\tsql: str,\tread: Union[str, sqlglot.dialects.dialect.Dialect, Type[sqlglot.dialects.dialect.Dialect], NoneType] = None,\tinto: Union[str, Type[sqlglot.expressions.Expression], Collection[Union[str, Type[sqlglot.expressions.Expression]]], NoneType] = None,\t**opts) -> sqlglot.expressions.Expression:", "funcdef": "def"}, "sqlglot.transpile": {"fullname": "sqlglot.transpile", "modulename": "sqlglot", "qualname": "transpile", "kind": "function", "doc": "

Parses the given SQL string in accordance with the source dialect and returns a list of SQL strings transformed\nto conform to the target dialect. Each string in the returned list represents a single transformed SQL statement.

\n\n
Arguments:
\n\n
    \n
  • sql: the SQL code string to transpile.
  • \n
  • read: the source dialect used to parse the input string (eg. \"spark\", \"hive\", \"presto\", \"mysql\").
  • \n
  • write: the target dialect into which the input should be transformed (eg. \"spark\", \"hive\", \"presto\", \"mysql\").
  • \n
  • identity: if set to True and if the target dialect is not specified the source dialect will be used as both:\nthe source and the target dialect.
  • \n
  • error_level: the desired error level of the parser.
  • \n
  • **opts: other sqlglot.generator.Generator options.
  • \n
\n\n
Returns:
\n\n
\n

The list of transpiled SQL statements.

\n
\n", "signature": "(\tsql: str,\tread: Union[str, sqlglot.dialects.dialect.Dialect, Type[sqlglot.dialects.dialect.Dialect], NoneType] = None,\twrite: Union[str, sqlglot.dialects.dialect.Dialect, Type[sqlglot.dialects.dialect.Dialect], NoneType] = None,\tidentity: bool = True,\terror_level: Optional[sqlglot.errors.ErrorLevel] = None,\t**opts) -> List[str]:", "funcdef": "def"}, "sqlglot.dataframe": {"fullname": "sqlglot.dataframe", "modulename": "sqlglot.dataframe", "kind": "module", "doc": "

PySpark DataFrame SQL Generator

\n\n

This is a drop-in replacement for the PySpark DataFrame API that will generate SQL instead of executing DataFrame operations directly. This, when combined with the transpiling support in SQLGlot, allows one to write PySpark DataFrame code and execute it on other engines like DuckDB, Presto, Spark, Snowflake, and BigQuery.

\n\n

Currently many of the common operations are covered and more functionality will be added over time. Please open an issue or PR with your feedback or contribution to help influence what should be prioritized next and make sure your use case is properly supported.

\n\n

How to use

\n\n

Instructions

\n\n
    \n
  • Install SQLGlot and that is all that is required to just generate SQL. The examples show generating SQL and then executing that SQL on a specific engine and that will require that engine's client library.
  • \n
  • Find/replace all from pyspark.sql with from sqlglot.dataframe.
  • \n
  • Prior to any spark.read.table or spark.table run sqlglot.schema.add_table('<table_name>', <column_structure>).\n
      \n
    • The column structure can be defined the following ways:\n
        \n
      • Dictionary where the keys are column names and values are string of the Spark SQL type name.\n
          \n
        • Ex: {'cola': 'string', 'colb': 'int'}
        • \n
      • \n
      • PySpark DataFrame StructType similar to when using createDataFrame.\n
          \n
        • Ex: StructType([StructField('cola', StringType()), StructField('colb', IntegerType())])
        • \n
      • \n
      • A string of names and types similar to what is supported in createDataFrame.\n
          \n
        • Ex: cola: STRING, colb: INT
        • \n
      • \n
      • [Not Recommended] A list of string column names without type.\n
          \n
        • Ex: ['cola', 'colb']
        • \n
        • The lack of types may limit functionality in future releases.
        • \n
      • \n
    • \n
    • See Registering Custom Schema for information on how to skip this step if the information is stored externally.
    • \n
  • \n
  • Add .sql(pretty=True) to your final DataFrame command to return a list of sql statements to run that command.\n
      \n
    • In most cases a single SQL statement is returned. Currently the only exception is when caching DataFrames which isn't supported in other dialects.
    • \n
    • Spark is the default output dialect. See dialects for a full list of dialects.
    • \n
    • Ex: .sql(pretty=True, dialect='bigquery')
    • \n
  • \n
\n\n

Examples

\n\n
\n
import sqlglot\nfrom sqlglot.dataframe.sql.session import SparkSession\nfrom sqlglot.dataframe.sql import functions as F\n\nsqlglot.schema.add_table('employee', {\n  'employee_id': 'INT',\n  'fname': 'STRING',\n  'lname': 'STRING',\n  'age': 'INT',\n})  # Register the table structure prior to reading from the table\n\nspark = SparkSession()\n\ndf = (\n    spark\n    .table('employee')\n    .groupBy(F.col("age"))\n    .agg(F.countDistinct(F.col("employee_id")).alias("num_employees")) \n)\n\nprint(df.sql(pretty=True))  # Spark will be the dialect used by default\n
\n
\n\n
SELECT\n  `employee`.`age` AS `age`,\n  COUNT(DISTINCT `employee`.`employee_id`) AS `num_employees`\nFROM `employee` AS `employee`\nGROUP BY\n  `employee`.`age`\n
\n\n

Registering Custom Schema Class

\n\n

The step of adding sqlglot.schema.add_table can be skipped if you have the column structure stored externally like in a file or from an external metadata table. This can be done by writing a class that implements the sqlglot.schema.Schema abstract class and then assigning that class to sqlglot.schema.

\n\n
\n
import sqlglot\nfrom sqlglot.dataframe.sql.session import SparkSession\nfrom sqlglot.dataframe.sql import functions as F\nfrom sqlglot.schema import Schema\n\n\nclass ExternalSchema(Schema):\n  ...\n\nsqlglot.schema = ExternalSchema()\n\nspark = SparkSession()\n\ndf = (\n    spark\n    .table('employee')\n    .groupBy(F.col("age"))\n    .agg(F.countDistinct(F.col("employee_id")).alias("num_employees")) \n)\n\nprint(df.sql(pretty=True))\n
\n
\n\n

Example Implementations

\n\n

Bigquery

\n\n
\n
from google.cloud import bigquery\nfrom sqlglot.dataframe.sql.session import SparkSession\nfrom sqlglot.dataframe.sql import types\nfrom sqlglot.dataframe.sql import functions as F\n\nclient = bigquery.Client()\n\ndata = [\n    (1, "Jack", "Shephard", 34),\n    (2, "John", "Locke", 48),\n    (3, "Kate", "Austen", 34),\n    (4, "Claire", "Littleton", 22),\n    (5, "Hugo", "Reyes", 26),\n]\nschema = types.StructType([\n    types.StructField('employee_id', types.IntegerType(), False),\n    types.StructField('fname', types.StringType(), False),\n    types.StructField('lname', types.StringType(), False),\n    types.StructField('age', types.IntegerType(), False),\n])\n\nsql_statements = (\n    SparkSession()\n    .createDataFrame(data, schema)\n    .groupBy(F.col("age"))\n    .agg(F.countDistinct(F.col("employee_id")).alias("num_employees"))\n    .sql(dialect="bigquery")\n)\n\nresult = None\nfor sql in sql_statements:\n  result = client.query(sql)\n\nassert result is not None\nfor row in client.query(result):\n    print(f"Age: {row['age']}, Num Employees: {row['num_employees']}")\n
\n
\n\n

Snowflake

\n\n
\n
import os\n\nimport snowflake.connector\nfrom sqlglot.dataframe.session import SparkSession\nfrom sqlglot.dataframe import types\nfrom sqlglot.dataframe import functions as F\n\nctx = snowflake.connector.connect(\n    user=os.environ["SNOWFLAKE_USER"],\n    password=os.environ["SNOWFLAKE_PASS"],\n    account=os.environ["SNOWFLAKE_ACCOUNT"]\n)\ncs = ctx.cursor()\n\ndata = [\n    (1, "Jack", "Shephard", 34),\n    (2, "John", "Locke", 48),\n    (3, "Kate", "Austen", 34),\n    (4, "Claire", "Littleton", 22),\n    (5, "Hugo", "Reyes", 26),\n]\nschema = types.StructType([\n    types.StructField('employee_id', types.IntegerType(), False),\n    types.StructField('fname', types.StringType(), False),\n    types.StructField('lname', types.StringType(), False),\n    types.StructField('age', types.IntegerType(), False),\n])\n\nsql_statements = (\n    SparkSession()\n    .createDataFrame(data, schema)\n    .groupBy(F.col("age"))\n    .agg(F.countDistinct(F.col("lname")).alias("num_employees"))\n    .sql(dialect="snowflake")\n)\n\ntry:\n    for sql in sql_statements:\n        cs.execute(sql)\n    results = cs.fetchall()\n    for row in results:\n        print(f"Age: {row[0]}, Num Employees: {row[1]}")\nfinally:\n    cs.close()\nctx.close()\n
\n
\n\n

Spark

\n\n
\n
from pyspark.sql.session import SparkSession as PySparkSession\nfrom sqlglot.dataframe.sql.session import SparkSession\nfrom sqlglot.dataframe.sql import types\nfrom sqlglot.dataframe.sql import functions as F\n\ndata = [\n    (1, "Jack", "Shephard", 34),\n    (2, "John", "Locke", 48),\n    (3, "Kate", "Austen", 34),\n    (4, "Claire", "Littleton", 22),\n    (5, "Hugo", "Reyes", 26),\n]\nschema = types.StructType([\n    types.StructField('employee_id', types.IntegerType(), False),\n    types.StructField('fname', types.StringType(), False),\n    types.StructField('lname', types.StringType(), False),\n    types.StructField('age', types.IntegerType(), False),\n])\n\nsql_statements = (\n    SparkSession()\n    .createDataFrame(data, schema)\n    .groupBy(F.col("age"))\n    .agg(F.countDistinct(F.col("employee_id")).alias("num_employees"))\n    .sql(dialect="spark")\n)\n\npyspark = PySparkSession.builder.master("local[*]").getOrCreate()\n\ndf = None\nfor sql in sql_statements:\n    df = pyspark.sql(sql)\n\nassert df is not None\ndf.show()\n
\n
\n\n

Unsupportable Operations

\n\n

Any operation that lacks a way to represent it in SQL cannot be supported by this tool. An example of this would be rdd operations. Since the DataFrame API though is mostly modeled around SQL concepts most operations can be supported.

\n"}, "sqlglot.dataframe.sql": {"fullname": "sqlglot.dataframe.sql", "modulename": "sqlglot.dataframe.sql", "kind": "module", "doc": "

\n"}, "sqlglot.dataframe.sql.SparkSession": {"fullname": "sqlglot.dataframe.sql.SparkSession", "modulename": "sqlglot.dataframe.sql", "qualname": "SparkSession", "kind": "class", "doc": "

\n"}, "sqlglot.dataframe.sql.SparkSession.table": {"fullname": "sqlglot.dataframe.sql.SparkSession.table", "modulename": "sqlglot.dataframe.sql", "qualname": "SparkSession.table", "kind": "function", "doc": "

\n", "signature": "(self, tableName: str) -> sqlglot.dataframe.sql.dataframe.DataFrame:", "funcdef": "def"}, "sqlglot.dataframe.sql.SparkSession.createDataFrame": {"fullname": "sqlglot.dataframe.sql.SparkSession.createDataFrame", "modulename": "sqlglot.dataframe.sql", "qualname": "SparkSession.createDataFrame", "kind": "function", "doc": "

\n", "signature": "(\tself,\tdata: Sequence[Union[Dict[str, <MagicMock id='140377708850400'>], List[<MagicMock id='140377708850400'>], Tuple]],\tschema: Optional[<MagicMock id='140377708766032'>] = None,\tsamplingRatio: Optional[float] = None,\tverifySchema: bool = False) -> sqlglot.dataframe.sql.dataframe.DataFrame:", "funcdef": "def"}, "sqlglot.dataframe.sql.SparkSession.sql": {"fullname": "sqlglot.dataframe.sql.SparkSession.sql", "modulename": "sqlglot.dataframe.sql", "qualname": "SparkSession.sql", "kind": "function", "doc": "

\n", "signature": "(self, sqlQuery: str) -> sqlglot.dataframe.sql.dataframe.DataFrame:", "funcdef": "def"}, "sqlglot.dataframe.sql.DataFrame": {"fullname": "sqlglot.dataframe.sql.DataFrame", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrame", "kind": "class", "doc": "

\n"}, "sqlglot.dataframe.sql.DataFrame.__init__": {"fullname": "sqlglot.dataframe.sql.DataFrame.__init__", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrame.__init__", "kind": "function", "doc": "

\n", "signature": "(\tspark: <MagicMock id='140377712280432'>,\texpression: sqlglot.expressions.Select,\tbranch_id: Optional[str] = None,\tsequence_id: Optional[str] = None,\tlast_op: sqlglot.dataframe.sql.operations.Operation = <Operation.INIT: -1>,\tpending_hints: Optional[List[sqlglot.expressions.Expression]] = None,\toutput_expression_container: Optional[<MagicMock id='140377711871072'>] = None,\t**kwargs)"}, "sqlglot.dataframe.sql.DataFrame.sql": {"fullname": "sqlglot.dataframe.sql.DataFrame.sql", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrame.sql", "kind": "function", "doc": "

\n", "signature": "(self, dialect='spark', optimize=True, **kwargs) -> List[str]:", "funcdef": "def"}, "sqlglot.dataframe.sql.DataFrame.copy": {"fullname": "sqlglot.dataframe.sql.DataFrame.copy", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrame.copy", "kind": "function", "doc": "

\n", "signature": "(self, **kwargs) -> sqlglot.dataframe.sql.dataframe.DataFrame:", "funcdef": "def"}, "sqlglot.dataframe.sql.DataFrame.select": {"fullname": "sqlglot.dataframe.sql.DataFrame.select", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrame.select", "kind": "function", "doc": "

\n", "signature": "(self, *cols, **kwargs) -> sqlglot.dataframe.sql.dataframe.DataFrame:", "funcdef": "def"}, "sqlglot.dataframe.sql.DataFrame.alias": {"fullname": "sqlglot.dataframe.sql.DataFrame.alias", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrame.alias", "kind": "function", "doc": "

\n", "signature": "(self, name: str, **kwargs) -> sqlglot.dataframe.sql.dataframe.DataFrame:", "funcdef": "def"}, "sqlglot.dataframe.sql.DataFrame.where": {"fullname": "sqlglot.dataframe.sql.DataFrame.where", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrame.where", "kind": "function", "doc": "

\n", "signature": "(\tself,\tcolumn: Union[sqlglot.dataframe.sql.column.Column, bool],\t**kwargs) -> sqlglot.dataframe.sql.dataframe.DataFrame:", "funcdef": "def"}, "sqlglot.dataframe.sql.DataFrame.filter": {"fullname": "sqlglot.dataframe.sql.DataFrame.filter", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrame.filter", "kind": "function", "doc": "

\n", "signature": "(\tself,\tcolumn: Union[sqlglot.dataframe.sql.column.Column, bool],\t**kwargs) -> sqlglot.dataframe.sql.dataframe.DataFrame:", "funcdef": "def"}, "sqlglot.dataframe.sql.DataFrame.groupBy": {"fullname": "sqlglot.dataframe.sql.DataFrame.groupBy", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrame.groupBy", "kind": "function", "doc": "

\n", "signature": "(self, *cols, **kwargs) -> sqlglot.dataframe.sql.group.GroupedData:", "funcdef": "def"}, "sqlglot.dataframe.sql.DataFrame.agg": {"fullname": "sqlglot.dataframe.sql.DataFrame.agg", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrame.agg", "kind": "function", "doc": "

\n", "signature": "(self, *exprs, **kwargs) -> sqlglot.dataframe.sql.dataframe.DataFrame:", "funcdef": "def"}, "sqlglot.dataframe.sql.DataFrame.join": {"fullname": "sqlglot.dataframe.sql.DataFrame.join", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrame.join", "kind": "function", "doc": "

\n", "signature": "(\tself,\tother_df: sqlglot.dataframe.sql.dataframe.DataFrame,\ton: Union[str, List[str], sqlglot.dataframe.sql.column.Column, List[sqlglot.dataframe.sql.column.Column]],\thow: str = 'inner',\t**kwargs) -> sqlglot.dataframe.sql.dataframe.DataFrame:", "funcdef": "def"}, "sqlglot.dataframe.sql.DataFrame.orderBy": {"fullname": "sqlglot.dataframe.sql.DataFrame.orderBy", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrame.orderBy", "kind": "function", "doc": "

This implementation lets any ordered columns take priority over whatever is provided in ascending. Spark\nhas irregular behavior and can result in runtime errors. Users shouldn't be mixing the two anyways so this\nis unlikely to come up.

\n", "signature": "(\tself,\t*cols: Union[str, sqlglot.dataframe.sql.column.Column],\tascending: Union[Any, List[Any], NoneType] = None) -> sqlglot.dataframe.sql.dataframe.DataFrame:", "funcdef": "def"}, "sqlglot.dataframe.sql.DataFrame.sort": {"fullname": "sqlglot.dataframe.sql.DataFrame.sort", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrame.sort", "kind": "function", "doc": "

This implementation lets any ordered columns take priority over whatever is provided in ascending. Spark\nhas irregular behavior and can result in runtime errors. Users shouldn't be mixing the two anyways so this\nis unlikely to come up.

\n", "signature": "(\tself,\t*cols: Union[str, sqlglot.dataframe.sql.column.Column],\tascending: Union[Any, List[Any], NoneType] = None) -> sqlglot.dataframe.sql.dataframe.DataFrame:", "funcdef": "def"}, "sqlglot.dataframe.sql.DataFrame.union": {"fullname": "sqlglot.dataframe.sql.DataFrame.union", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrame.union", "kind": "function", "doc": "

\n", "signature": "(\tself,\tother: sqlglot.dataframe.sql.dataframe.DataFrame) -> sqlglot.dataframe.sql.dataframe.DataFrame:", "funcdef": "def"}, "sqlglot.dataframe.sql.DataFrame.unionAll": {"fullname": "sqlglot.dataframe.sql.DataFrame.unionAll", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrame.unionAll", "kind": "function", "doc": "

\n", "signature": "(\tself,\tother: sqlglot.dataframe.sql.dataframe.DataFrame) -> sqlglot.dataframe.sql.dataframe.DataFrame:", "funcdef": "def"}, "sqlglot.dataframe.sql.DataFrame.unionByName": {"fullname": "sqlglot.dataframe.sql.DataFrame.unionByName", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrame.unionByName", "kind": "function", "doc": "

\n", "signature": "(\tself,\tother: sqlglot.dataframe.sql.dataframe.DataFrame,\tallowMissingColumns: bool = False):", "funcdef": "def"}, "sqlglot.dataframe.sql.DataFrame.intersect": {"fullname": "sqlglot.dataframe.sql.DataFrame.intersect", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrame.intersect", "kind": "function", "doc": "

\n", "signature": "(\tself,\tother: sqlglot.dataframe.sql.dataframe.DataFrame) -> sqlglot.dataframe.sql.dataframe.DataFrame:", "funcdef": "def"}, "sqlglot.dataframe.sql.DataFrame.intersectAll": {"fullname": "sqlglot.dataframe.sql.DataFrame.intersectAll", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrame.intersectAll", "kind": "function", "doc": "

\n", "signature": "(\tself,\tother: sqlglot.dataframe.sql.dataframe.DataFrame) -> sqlglot.dataframe.sql.dataframe.DataFrame:", "funcdef": "def"}, "sqlglot.dataframe.sql.DataFrame.exceptAll": {"fullname": "sqlglot.dataframe.sql.DataFrame.exceptAll", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrame.exceptAll", "kind": "function", "doc": "

\n", "signature": "(\tself,\tother: sqlglot.dataframe.sql.dataframe.DataFrame) -> sqlglot.dataframe.sql.dataframe.DataFrame:", "funcdef": "def"}, "sqlglot.dataframe.sql.DataFrame.distinct": {"fullname": "sqlglot.dataframe.sql.DataFrame.distinct", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrame.distinct", "kind": "function", "doc": "

\n", "signature": "(self) -> sqlglot.dataframe.sql.dataframe.DataFrame:", "funcdef": "def"}, "sqlglot.dataframe.sql.DataFrame.dropDuplicates": {"fullname": "sqlglot.dataframe.sql.DataFrame.dropDuplicates", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrame.dropDuplicates", "kind": "function", "doc": "

\n", "signature": "(self, subset: Optional[List[str]] = None):", "funcdef": "def"}, "sqlglot.dataframe.sql.DataFrame.dropna": {"fullname": "sqlglot.dataframe.sql.DataFrame.dropna", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrame.dropna", "kind": "function", "doc": "

\n", "signature": "(\tself,\thow: str = 'any',\tthresh: Optional[int] = None,\tsubset: Union[str, Tuple[str, ...], List[str], NoneType] = None) -> sqlglot.dataframe.sql.dataframe.DataFrame:", "funcdef": "def"}, "sqlglot.dataframe.sql.DataFrame.fillna": {"fullname": "sqlglot.dataframe.sql.DataFrame.fillna", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrame.fillna", "kind": "function", "doc": "

Functionality Difference: If you provide a value to replace a null and that type conflicts\nwith the type of the column then PySpark will just ignore your replacement.\nThis will try to cast them to be the same in some cases. So they won't always match.\nBest to not mix types so make sure replacement is the same type as the column

\n\n

Possibility for improvement: Use typeof function to get the type of the column\nand check if it matches the type of the value provided. If not then make it null.

\n", "signature": "(\tself,\tvalue: <MagicMock id='140377707652544'>,\tsubset: Union[str, Tuple[str, ...], List[str], NoneType] = None) -> sqlglot.dataframe.sql.dataframe.DataFrame:", "funcdef": "def"}, "sqlglot.dataframe.sql.DataFrame.replace": {"fullname": "sqlglot.dataframe.sql.DataFrame.replace", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrame.replace", "kind": "function", "doc": "

\n", "signature": "(\tself,\tto_replace: Union[bool, int, float, str, List, Dict],\tvalue: Union[bool, int, float, str, List, NoneType] = None,\tsubset: Union[Collection[<MagicMock id='140377707950480'>], <MagicMock id='140377707950480'>, NoneType] = None) -> sqlglot.dataframe.sql.dataframe.DataFrame:", "funcdef": "def"}, "sqlglot.dataframe.sql.DataFrame.withColumn": {"fullname": "sqlglot.dataframe.sql.DataFrame.withColumn", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrame.withColumn", "kind": "function", "doc": "

\n", "signature": "(\tself,\tcolName: str,\tcol: sqlglot.dataframe.sql.column.Column) -> sqlglot.dataframe.sql.dataframe.DataFrame:", "funcdef": "def"}, "sqlglot.dataframe.sql.DataFrame.withColumnRenamed": {"fullname": "sqlglot.dataframe.sql.DataFrame.withColumnRenamed", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrame.withColumnRenamed", "kind": "function", "doc": "

\n", "signature": "(self, existing: str, new: str):", "funcdef": "def"}, "sqlglot.dataframe.sql.DataFrame.drop": {"fullname": "sqlglot.dataframe.sql.DataFrame.drop", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrame.drop", "kind": "function", "doc": "

\n", "signature": "(\tself,\t*cols: Union[str, sqlglot.dataframe.sql.column.Column]) -> sqlglot.dataframe.sql.dataframe.DataFrame:", "funcdef": "def"}, "sqlglot.dataframe.sql.DataFrame.limit": {"fullname": "sqlglot.dataframe.sql.DataFrame.limit", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrame.limit", "kind": "function", "doc": "

\n", "signature": "(self, num: int) -> sqlglot.dataframe.sql.dataframe.DataFrame:", "funcdef": "def"}, "sqlglot.dataframe.sql.DataFrame.hint": {"fullname": "sqlglot.dataframe.sql.DataFrame.hint", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrame.hint", "kind": "function", "doc": "

\n", "signature": "(\tself,\tname: str,\t*parameters: Union[str, int, NoneType]) -> sqlglot.dataframe.sql.dataframe.DataFrame:", "funcdef": "def"}, "sqlglot.dataframe.sql.DataFrame.repartition": {"fullname": "sqlglot.dataframe.sql.DataFrame.repartition", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrame.repartition", "kind": "function", "doc": "

\n", "signature": "(\tself,\tnumPartitions: Union[int, <MagicMock id='140377708152048'>],\t*cols: <MagicMock id='140377708084144'>) -> sqlglot.dataframe.sql.dataframe.DataFrame:", "funcdef": "def"}, "sqlglot.dataframe.sql.DataFrame.coalesce": {"fullname": "sqlglot.dataframe.sql.DataFrame.coalesce", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrame.coalesce", "kind": "function", "doc": "

\n", "signature": "(self, numPartitions: int) -> sqlglot.dataframe.sql.dataframe.DataFrame:", "funcdef": "def"}, "sqlglot.dataframe.sql.DataFrame.cache": {"fullname": "sqlglot.dataframe.sql.DataFrame.cache", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrame.cache", "kind": "function", "doc": "

\n", "signature": "(self) -> sqlglot.dataframe.sql.dataframe.DataFrame:", "funcdef": "def"}, "sqlglot.dataframe.sql.DataFrame.persist": {"fullname": "sqlglot.dataframe.sql.DataFrame.persist", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrame.persist", "kind": "function", "doc": "

Storage Level Options: https://spark.apache.org/docs/3.0.0-preview/sql-ref-syntax-aux-cache-cache-table.html

\n", "signature": "(\tself,\tstorageLevel: str = 'MEMORY_AND_DISK_SER') -> sqlglot.dataframe.sql.dataframe.DataFrame:", "funcdef": "def"}, "sqlglot.dataframe.sql.GroupedData": {"fullname": "sqlglot.dataframe.sql.GroupedData", "modulename": "sqlglot.dataframe.sql", "qualname": "GroupedData", "kind": "class", "doc": "

\n"}, "sqlglot.dataframe.sql.GroupedData.__init__": {"fullname": "sqlglot.dataframe.sql.GroupedData.__init__", "modulename": "sqlglot.dataframe.sql", "qualname": "GroupedData.__init__", "kind": "function", "doc": "

\n", "signature": "(\tdf: sqlglot.dataframe.sql.dataframe.DataFrame,\tgroup_by_cols: List[sqlglot.dataframe.sql.column.Column],\tlast_op: sqlglot.dataframe.sql.operations.Operation)"}, "sqlglot.dataframe.sql.GroupedData.agg": {"fullname": "sqlglot.dataframe.sql.GroupedData.agg", "modulename": "sqlglot.dataframe.sql", "qualname": "GroupedData.agg", "kind": "function", "doc": "

\n", "signature": "(\tself,\t*exprs: Union[sqlglot.dataframe.sql.column.Column, Dict[str, str]]) -> sqlglot.dataframe.sql.dataframe.DataFrame:", "funcdef": "def"}, "sqlglot.dataframe.sql.GroupedData.count": {"fullname": "sqlglot.dataframe.sql.GroupedData.count", "modulename": "sqlglot.dataframe.sql", "qualname": "GroupedData.count", "kind": "function", "doc": "

\n", "signature": "(self) -> sqlglot.dataframe.sql.dataframe.DataFrame:", "funcdef": "def"}, "sqlglot.dataframe.sql.GroupedData.mean": {"fullname": "sqlglot.dataframe.sql.GroupedData.mean", "modulename": "sqlglot.dataframe.sql", "qualname": "GroupedData.mean", "kind": "function", "doc": "

\n", "signature": "(self, *cols: str) -> sqlglot.dataframe.sql.dataframe.DataFrame:", "funcdef": "def"}, "sqlglot.dataframe.sql.GroupedData.avg": {"fullname": "sqlglot.dataframe.sql.GroupedData.avg", "modulename": "sqlglot.dataframe.sql", "qualname": "GroupedData.avg", "kind": "function", "doc": "

\n", "signature": "(self, *cols: str) -> sqlglot.dataframe.sql.dataframe.DataFrame:", "funcdef": "def"}, "sqlglot.dataframe.sql.GroupedData.max": {"fullname": "sqlglot.dataframe.sql.GroupedData.max", "modulename": "sqlglot.dataframe.sql", "qualname": "GroupedData.max", "kind": "function", "doc": "

\n", "signature": "(self, *cols: str) -> sqlglot.dataframe.sql.dataframe.DataFrame:", "funcdef": "def"}, "sqlglot.dataframe.sql.GroupedData.min": {"fullname": "sqlglot.dataframe.sql.GroupedData.min", "modulename": "sqlglot.dataframe.sql", "qualname": "GroupedData.min", "kind": "function", "doc": "

\n", "signature": "(self, *cols: str) -> sqlglot.dataframe.sql.dataframe.DataFrame:", "funcdef": "def"}, "sqlglot.dataframe.sql.GroupedData.sum": {"fullname": "sqlglot.dataframe.sql.GroupedData.sum", "modulename": "sqlglot.dataframe.sql", "qualname": "GroupedData.sum", "kind": "function", "doc": "

\n", "signature": "(self, *cols: str) -> sqlglot.dataframe.sql.dataframe.DataFrame:", "funcdef": "def"}, "sqlglot.dataframe.sql.GroupedData.pivot": {"fullname": "sqlglot.dataframe.sql.GroupedData.pivot", "modulename": "sqlglot.dataframe.sql", "qualname": "GroupedData.pivot", "kind": "function", "doc": "

\n", "signature": "(self, *cols: str) -> sqlglot.dataframe.sql.dataframe.DataFrame:", "funcdef": "def"}, "sqlglot.dataframe.sql.Column": {"fullname": "sqlglot.dataframe.sql.Column", "modulename": "sqlglot.dataframe.sql", "qualname": "Column", "kind": "class", "doc": "

\n"}, "sqlglot.dataframe.sql.Column.__init__": {"fullname": "sqlglot.dataframe.sql.Column.__init__", "modulename": "sqlglot.dataframe.sql", "qualname": "Column.__init__", "kind": "function", "doc": "

\n", "signature": "(\texpression: Union[<MagicMock id='140377710043744'>, sqlglot.expressions.Expression, NoneType])"}, "sqlglot.dataframe.sql.Column.ensure_col": {"fullname": "sqlglot.dataframe.sql.Column.ensure_col", "modulename": "sqlglot.dataframe.sql", "qualname": "Column.ensure_col", "kind": "function", "doc": "

\n", "signature": "(\tcls,\tvalue: Union[<MagicMock id='140377708259664'>, sqlglot.expressions.Expression, NoneType]):", "funcdef": "def"}, "sqlglot.dataframe.sql.Column.ensure_cols": {"fullname": "sqlglot.dataframe.sql.Column.ensure_cols", "modulename": "sqlglot.dataframe.sql", "qualname": "Column.ensure_cols", "kind": "function", "doc": "

\n", "signature": "(\tcls,\targs: List[Union[<MagicMock id='140377708547664'>, sqlglot.expressions.Expression]]) -> List[sqlglot.dataframe.sql.column.Column]:", "funcdef": "def"}, "sqlglot.dataframe.sql.Column.invoke_anonymous_function": {"fullname": "sqlglot.dataframe.sql.Column.invoke_anonymous_function", "modulename": "sqlglot.dataframe.sql", "qualname": "Column.invoke_anonymous_function", "kind": "function", "doc": "

\n", "signature": "(\tcls,\tcolumn: Optional[<MagicMock id='140377708420048'>],\tfunc_name: str,\t*args: Optional[<MagicMock id='140377708523584'>]) -> sqlglot.dataframe.sql.column.Column:", "funcdef": "def"}, "sqlglot.dataframe.sql.Column.invoke_expression_over_column": {"fullname": "sqlglot.dataframe.sql.Column.invoke_expression_over_column", "modulename": "sqlglot.dataframe.sql", "qualname": "Column.invoke_expression_over_column", "kind": "function", "doc": "

\n", "signature": "(\tcls,\tcolumn: Optional[<MagicMock id='140377708376176'>],\tcallable_expression: Callable,\t**kwargs) -> sqlglot.dataframe.sql.column.Column:", "funcdef": "def"}, "sqlglot.dataframe.sql.Column.binary_op": {"fullname": "sqlglot.dataframe.sql.Column.binary_op", "modulename": "sqlglot.dataframe.sql", "qualname": "Column.binary_op", "kind": "function", "doc": "

\n", "signature": "(\tself,\tklass: Callable,\tother: <MagicMock id='140377706598112'>,\t**kwargs) -> sqlglot.dataframe.sql.column.Column:", "funcdef": "def"}, "sqlglot.dataframe.sql.Column.inverse_binary_op": {"fullname": "sqlglot.dataframe.sql.Column.inverse_binary_op", "modulename": "sqlglot.dataframe.sql", "qualname": "Column.inverse_binary_op", "kind": "function", "doc": "

\n", "signature": "(\tself,\tklass: Callable,\tother: <MagicMock id='140377706608240'>,\t**kwargs) -> sqlglot.dataframe.sql.column.Column:", "funcdef": "def"}, "sqlglot.dataframe.sql.Column.unary_op": {"fullname": "sqlglot.dataframe.sql.Column.unary_op", "modulename": "sqlglot.dataframe.sql", "qualname": "Column.unary_op", "kind": "function", "doc": "

\n", "signature": "(self, klass: Callable, **kwargs) -> sqlglot.dataframe.sql.column.Column:", "funcdef": "def"}, "sqlglot.dataframe.sql.Column.ensure_literal": {"fullname": "sqlglot.dataframe.sql.Column.ensure_literal", "modulename": "sqlglot.dataframe.sql", "qualname": "Column.ensure_literal", "kind": "function", "doc": "

\n", "signature": "(cls, value) -> sqlglot.dataframe.sql.column.Column:", "funcdef": "def"}, "sqlglot.dataframe.sql.Column.copy": {"fullname": "sqlglot.dataframe.sql.Column.copy", "modulename": "sqlglot.dataframe.sql", "qualname": "Column.copy", "kind": "function", "doc": "

\n", "signature": "(self) -> sqlglot.dataframe.sql.column.Column:", "funcdef": "def"}, "sqlglot.dataframe.sql.Column.set_table_name": {"fullname": "sqlglot.dataframe.sql.Column.set_table_name", "modulename": "sqlglot.dataframe.sql", "qualname": "Column.set_table_name", "kind": "function", "doc": "

\n", "signature": "(self, table_name: str, copy=False) -> sqlglot.dataframe.sql.column.Column:", "funcdef": "def"}, "sqlglot.dataframe.sql.Column.sql": {"fullname": "sqlglot.dataframe.sql.Column.sql", "modulename": "sqlglot.dataframe.sql", "qualname": "Column.sql", "kind": "function", "doc": "

\n", "signature": "(self, **kwargs) -> str:", "funcdef": "def"}, "sqlglot.dataframe.sql.Column.alias": {"fullname": "sqlglot.dataframe.sql.Column.alias", "modulename": "sqlglot.dataframe.sql", "qualname": "Column.alias", "kind": "function", "doc": "

\n", "signature": "(self, name: str) -> sqlglot.dataframe.sql.column.Column:", "funcdef": "def"}, "sqlglot.dataframe.sql.Column.asc": {"fullname": "sqlglot.dataframe.sql.Column.asc", "modulename": "sqlglot.dataframe.sql", "qualname": "Column.asc", "kind": "function", "doc": "

\n", "signature": "(self) -> sqlglot.dataframe.sql.column.Column:", "funcdef": "def"}, "sqlglot.dataframe.sql.Column.desc": {"fullname": "sqlglot.dataframe.sql.Column.desc", "modulename": "sqlglot.dataframe.sql", "qualname": "Column.desc", "kind": "function", "doc": "

\n", "signature": "(self) -> sqlglot.dataframe.sql.column.Column:", "funcdef": "def"}, "sqlglot.dataframe.sql.Column.asc_nulls_first": {"fullname": "sqlglot.dataframe.sql.Column.asc_nulls_first", "modulename": "sqlglot.dataframe.sql", "qualname": "Column.asc_nulls_first", "kind": "function", "doc": "

\n", "signature": "(self) -> sqlglot.dataframe.sql.column.Column:", "funcdef": "def"}, "sqlglot.dataframe.sql.Column.asc_nulls_last": {"fullname": "sqlglot.dataframe.sql.Column.asc_nulls_last", "modulename": "sqlglot.dataframe.sql", "qualname": "Column.asc_nulls_last", "kind": "function", "doc": "

\n", "signature": "(self) -> sqlglot.dataframe.sql.column.Column:", "funcdef": "def"}, "sqlglot.dataframe.sql.Column.desc_nulls_first": {"fullname": "sqlglot.dataframe.sql.Column.desc_nulls_first", "modulename": "sqlglot.dataframe.sql", "qualname": "Column.desc_nulls_first", "kind": "function", "doc": "

\n", "signature": "(self) -> sqlglot.dataframe.sql.column.Column:", "funcdef": "def"}, "sqlglot.dataframe.sql.Column.desc_nulls_last": {"fullname": "sqlglot.dataframe.sql.Column.desc_nulls_last", "modulename": "sqlglot.dataframe.sql", "qualname": "Column.desc_nulls_last", "kind": "function", "doc": "

\n", "signature": "(self) -> sqlglot.dataframe.sql.column.Column:", "funcdef": "def"}, "sqlglot.dataframe.sql.Column.when": {"fullname": "sqlglot.dataframe.sql.Column.when", "modulename": "sqlglot.dataframe.sql", "qualname": "Column.when", "kind": "function", "doc": "

\n", "signature": "(\tself,\tcondition: sqlglot.dataframe.sql.column.Column,\tvalue: Any) -> sqlglot.dataframe.sql.column.Column:", "funcdef": "def"}, "sqlglot.dataframe.sql.Column.otherwise": {"fullname": "sqlglot.dataframe.sql.Column.otherwise", "modulename": "sqlglot.dataframe.sql", "qualname": "Column.otherwise", "kind": "function", "doc": "

\n", "signature": "(self, value: Any) -> sqlglot.dataframe.sql.column.Column:", "funcdef": "def"}, "sqlglot.dataframe.sql.Column.isNull": {"fullname": "sqlglot.dataframe.sql.Column.isNull", "modulename": "sqlglot.dataframe.sql", "qualname": "Column.isNull", "kind": "function", "doc": "

\n", "signature": "(self) -> sqlglot.dataframe.sql.column.Column:", "funcdef": "def"}, "sqlglot.dataframe.sql.Column.isNotNull": {"fullname": "sqlglot.dataframe.sql.Column.isNotNull", "modulename": "sqlglot.dataframe.sql", "qualname": "Column.isNotNull", "kind": "function", "doc": "

\n", "signature": "(self) -> sqlglot.dataframe.sql.column.Column:", "funcdef": "def"}, "sqlglot.dataframe.sql.Column.cast": {"fullname": "sqlglot.dataframe.sql.Column.cast", "modulename": "sqlglot.dataframe.sql", "qualname": "Column.cast", "kind": "function", "doc": "

Functionality Difference: PySpark cast accepts a datatype instance of the datatype class\nSqlglot doesn't currently replicate this class so it only accepts a string

\n", "signature": "(self, dataType: Union[str, sqlglot.dataframe.sql.types.DataType]):", "funcdef": "def"}, "sqlglot.dataframe.sql.Column.startswith": {"fullname": "sqlglot.dataframe.sql.Column.startswith", "modulename": "sqlglot.dataframe.sql", "qualname": "Column.startswith", "kind": "function", "doc": "

\n", "signature": "(\tself,\tvalue: Union[str, sqlglot.dataframe.sql.column.Column]) -> sqlglot.dataframe.sql.column.Column:", "funcdef": "def"}, "sqlglot.dataframe.sql.Column.endswith": {"fullname": "sqlglot.dataframe.sql.Column.endswith", "modulename": "sqlglot.dataframe.sql", "qualname": "Column.endswith", "kind": "function", "doc": "

\n", "signature": "(\tself,\tvalue: Union[str, sqlglot.dataframe.sql.column.Column]) -> sqlglot.dataframe.sql.column.Column:", "funcdef": "def"}, "sqlglot.dataframe.sql.Column.rlike": {"fullname": "sqlglot.dataframe.sql.Column.rlike", "modulename": "sqlglot.dataframe.sql", "qualname": "Column.rlike", "kind": "function", "doc": "

\n", "signature": "(self, regexp: str) -> sqlglot.dataframe.sql.column.Column:", "funcdef": "def"}, "sqlglot.dataframe.sql.Column.like": {"fullname": "sqlglot.dataframe.sql.Column.like", "modulename": "sqlglot.dataframe.sql", "qualname": "Column.like", "kind": "function", "doc": "

\n", "signature": "(self, other: str):", "funcdef": "def"}, "sqlglot.dataframe.sql.Column.ilike": {"fullname": "sqlglot.dataframe.sql.Column.ilike", "modulename": "sqlglot.dataframe.sql", "qualname": "Column.ilike", "kind": "function", "doc": "

\n", "signature": "(self, other: str):", "funcdef": "def"}, "sqlglot.dataframe.sql.Column.substr": {"fullname": "sqlglot.dataframe.sql.Column.substr", "modulename": "sqlglot.dataframe.sql", "qualname": "Column.substr", "kind": "function", "doc": "

\n", "signature": "(\tself,\tstartPos: Union[int, sqlglot.dataframe.sql.column.Column],\tlength: Union[int, sqlglot.dataframe.sql.column.Column]) -> sqlglot.dataframe.sql.column.Column:", "funcdef": "def"}, "sqlglot.dataframe.sql.Column.isin": {"fullname": "sqlglot.dataframe.sql.Column.isin", "modulename": "sqlglot.dataframe.sql", "qualname": "Column.isin", "kind": "function", "doc": "

\n", "signature": "(\tself,\t*cols: Union[<MagicMock id='140377706743696'>, Iterable[<MagicMock id='140377706743696'>]]):", "funcdef": "def"}, "sqlglot.dataframe.sql.Column.between": {"fullname": "sqlglot.dataframe.sql.Column.between", "modulename": "sqlglot.dataframe.sql", "qualname": "Column.between", "kind": "function", "doc": "

\n", "signature": "(\tself,\tlowerBound: <MagicMock id='140377706814464'>,\tupperBound: <MagicMock id='140377706852560'>) -> sqlglot.dataframe.sql.column.Column:", "funcdef": "def"}, "sqlglot.dataframe.sql.Column.over": {"fullname": "sqlglot.dataframe.sql.Column.over", "modulename": "sqlglot.dataframe.sql", "qualname": "Column.over", "kind": "function", "doc": "

\n", "signature": "(\tself,\twindow: <MagicMock id='140377706910272'>) -> sqlglot.dataframe.sql.column.Column:", "funcdef": "def"}, "sqlglot.dataframe.sql.DataFrameNaFunctions": {"fullname": "sqlglot.dataframe.sql.DataFrameNaFunctions", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrameNaFunctions", "kind": "class", "doc": "

\n"}, "sqlglot.dataframe.sql.DataFrameNaFunctions.__init__": {"fullname": "sqlglot.dataframe.sql.DataFrameNaFunctions.__init__", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrameNaFunctions.__init__", "kind": "function", "doc": "

\n", "signature": "(df: sqlglot.dataframe.sql.dataframe.DataFrame)"}, "sqlglot.dataframe.sql.DataFrameNaFunctions.drop": {"fullname": "sqlglot.dataframe.sql.DataFrameNaFunctions.drop", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrameNaFunctions.drop", "kind": "function", "doc": "

\n", "signature": "(\tself,\thow: str = 'any',\tthresh: Optional[int] = None,\tsubset: Union[str, Tuple[str, ...], List[str], NoneType] = None) -> sqlglot.dataframe.sql.dataframe.DataFrame:", "funcdef": "def"}, "sqlglot.dataframe.sql.DataFrameNaFunctions.fill": {"fullname": "sqlglot.dataframe.sql.DataFrameNaFunctions.fill", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrameNaFunctions.fill", "kind": "function", "doc": "

\n", "signature": "(\tself,\tvalue: Union[int, bool, float, str, Dict[str, Any]],\tsubset: Union[str, Tuple[str, ...], List[str], NoneType] = None) -> sqlglot.dataframe.sql.dataframe.DataFrame:", "funcdef": "def"}, "sqlglot.dataframe.sql.DataFrameNaFunctions.replace": {"fullname": "sqlglot.dataframe.sql.DataFrameNaFunctions.replace", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrameNaFunctions.replace", "kind": "function", "doc": "

\n", "signature": "(\tself,\tto_replace: Union[bool, int, float, str, List, Dict],\tvalue: Union[bool, int, float, str, List, NoneType] = None,\tsubset: Union[str, List[str], NoneType] = None) -> sqlglot.dataframe.sql.dataframe.DataFrame:", "funcdef": "def"}, "sqlglot.dataframe.sql.Window": {"fullname": "sqlglot.dataframe.sql.Window", "modulename": "sqlglot.dataframe.sql", "qualname": "Window", "kind": "class", "doc": "

\n"}, "sqlglot.dataframe.sql.Window.partitionBy": {"fullname": "sqlglot.dataframe.sql.Window.partitionBy", "modulename": "sqlglot.dataframe.sql", "qualname": "Window.partitionBy", "kind": "function", "doc": "

\n", "signature": "(\tcls,\t*cols: Union[<MagicMock id='140377707221328'>, List[<MagicMock id='140377707221328'>]]) -> sqlglot.dataframe.sql.window.WindowSpec:", "funcdef": "def"}, "sqlglot.dataframe.sql.Window.orderBy": {"fullname": "sqlglot.dataframe.sql.Window.orderBy", "modulename": "sqlglot.dataframe.sql", "qualname": "Window.orderBy", "kind": "function", "doc": "

\n", "signature": "(\tcls,\t*cols: Union[<MagicMock id='140377707360368'>, List[<MagicMock id='140377707360368'>]]) -> sqlglot.dataframe.sql.window.WindowSpec:", "funcdef": "def"}, "sqlglot.dataframe.sql.Window.rowsBetween": {"fullname": "sqlglot.dataframe.sql.Window.rowsBetween", "modulename": "sqlglot.dataframe.sql", "qualname": "Window.rowsBetween", "kind": "function", "doc": "

\n", "signature": "(cls, start: int, end: int) -> sqlglot.dataframe.sql.window.WindowSpec:", "funcdef": "def"}, "sqlglot.dataframe.sql.Window.rangeBetween": {"fullname": "sqlglot.dataframe.sql.Window.rangeBetween", "modulename": "sqlglot.dataframe.sql", "qualname": "Window.rangeBetween", "kind": "function", "doc": "

\n", "signature": "(cls, start: int, end: int) -> sqlglot.dataframe.sql.window.WindowSpec:", "funcdef": "def"}, "sqlglot.dataframe.sql.WindowSpec": {"fullname": "sqlglot.dataframe.sql.WindowSpec", "modulename": "sqlglot.dataframe.sql", "qualname": "WindowSpec", "kind": "class", "doc": "

\n"}, "sqlglot.dataframe.sql.WindowSpec.__init__": {"fullname": "sqlglot.dataframe.sql.WindowSpec.__init__", "modulename": "sqlglot.dataframe.sql", "qualname": "WindowSpec.__init__", "kind": "function", "doc": "

\n", "signature": "(expression: sqlglot.expressions.Expression = (WINDOW ))"}, "sqlglot.dataframe.sql.WindowSpec.copy": {"fullname": "sqlglot.dataframe.sql.WindowSpec.copy", "modulename": "sqlglot.dataframe.sql", "qualname": "WindowSpec.copy", "kind": "function", "doc": "

\n", "signature": "(self):", "funcdef": "def"}, "sqlglot.dataframe.sql.WindowSpec.sql": {"fullname": "sqlglot.dataframe.sql.WindowSpec.sql", "modulename": "sqlglot.dataframe.sql", "qualname": "WindowSpec.sql", "kind": "function", "doc": "

\n", "signature": "(self, **kwargs) -> str:", "funcdef": "def"}, "sqlglot.dataframe.sql.WindowSpec.partitionBy": {"fullname": "sqlglot.dataframe.sql.WindowSpec.partitionBy", "modulename": "sqlglot.dataframe.sql", "qualname": "WindowSpec.partitionBy", "kind": "function", "doc": "

\n", "signature": "(\tself,\t*cols: Union[<MagicMock id='140377707291568'>, List[<MagicMock id='140377707291568'>]]) -> sqlglot.dataframe.sql.window.WindowSpec:", "funcdef": "def"}, "sqlglot.dataframe.sql.WindowSpec.orderBy": {"fullname": "sqlglot.dataframe.sql.WindowSpec.orderBy", "modulename": "sqlglot.dataframe.sql", "qualname": "WindowSpec.orderBy", "kind": "function", "doc": "

\n", "signature": "(\tself,\t*cols: Union[<MagicMock id='140377707161408'>, List[<MagicMock id='140377707161408'>]]) -> sqlglot.dataframe.sql.window.WindowSpec:", "funcdef": "def"}, "sqlglot.dataframe.sql.WindowSpec.rowsBetween": {"fullname": "sqlglot.dataframe.sql.WindowSpec.rowsBetween", "modulename": "sqlglot.dataframe.sql", "qualname": "WindowSpec.rowsBetween", "kind": "function", "doc": "

\n", "signature": "(self, start: int, end: int) -> sqlglot.dataframe.sql.window.WindowSpec:", "funcdef": "def"}, "sqlglot.dataframe.sql.WindowSpec.rangeBetween": {"fullname": "sqlglot.dataframe.sql.WindowSpec.rangeBetween", "modulename": "sqlglot.dataframe.sql", "qualname": "WindowSpec.rangeBetween", "kind": "function", "doc": "

\n", "signature": "(self, start: int, end: int) -> sqlglot.dataframe.sql.window.WindowSpec:", "funcdef": "def"}, "sqlglot.dataframe.sql.DataFrameReader": {"fullname": "sqlglot.dataframe.sql.DataFrameReader", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrameReader", "kind": "class", "doc": "

\n"}, "sqlglot.dataframe.sql.DataFrameReader.__init__": {"fullname": "sqlglot.dataframe.sql.DataFrameReader.__init__", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrameReader.__init__", "kind": "function", "doc": "

\n", "signature": "(spark: sqlglot.dataframe.sql.session.SparkSession)"}, "sqlglot.dataframe.sql.DataFrameReader.table": {"fullname": "sqlglot.dataframe.sql.DataFrameReader.table", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrameReader.table", "kind": "function", "doc": "

\n", "signature": "(self, tableName: str) -> sqlglot.dataframe.sql.dataframe.DataFrame:", "funcdef": "def"}, "sqlglot.dataframe.sql.DataFrameWriter": {"fullname": "sqlglot.dataframe.sql.DataFrameWriter", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrameWriter", "kind": "class", "doc": "

\n"}, "sqlglot.dataframe.sql.DataFrameWriter.__init__": {"fullname": "sqlglot.dataframe.sql.DataFrameWriter.__init__", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrameWriter.__init__", "kind": "function", "doc": "

\n", "signature": "(\tdf: sqlglot.dataframe.sql.dataframe.DataFrame,\tspark: Optional[sqlglot.dataframe.sql.session.SparkSession] = None,\tmode: Optional[str] = None,\tby_name: bool = False)"}, "sqlglot.dataframe.sql.DataFrameWriter.copy": {"fullname": "sqlglot.dataframe.sql.DataFrameWriter.copy", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrameWriter.copy", "kind": "function", "doc": "

\n", "signature": "(self, **kwargs) -> sqlglot.dataframe.sql.readwriter.DataFrameWriter:", "funcdef": "def"}, "sqlglot.dataframe.sql.DataFrameWriter.sql": {"fullname": "sqlglot.dataframe.sql.DataFrameWriter.sql", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrameWriter.sql", "kind": "function", "doc": "

\n", "signature": "(self, **kwargs) -> List[str]:", "funcdef": "def"}, "sqlglot.dataframe.sql.DataFrameWriter.mode": {"fullname": "sqlglot.dataframe.sql.DataFrameWriter.mode", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrameWriter.mode", "kind": "function", "doc": "

\n", "signature": "(\tself,\tsaveMode: Optional[str]) -> sqlglot.dataframe.sql.readwriter.DataFrameWriter:", "funcdef": "def"}, "sqlglot.dataframe.sql.DataFrameWriter.insertInto": {"fullname": "sqlglot.dataframe.sql.DataFrameWriter.insertInto", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrameWriter.insertInto", "kind": "function", "doc": "

\n", "signature": "(\tself,\ttableName: str,\toverwrite: Optional[bool] = None) -> sqlglot.dataframe.sql.readwriter.DataFrameWriter:", "funcdef": "def"}, "sqlglot.dataframe.sql.DataFrameWriter.saveAsTable": {"fullname": "sqlglot.dataframe.sql.DataFrameWriter.saveAsTable", "modulename": "sqlglot.dataframe.sql", "qualname": "DataFrameWriter.saveAsTable", "kind": "function", "doc": "

\n", "signature": "(\tself,\tname: str,\tformat: Optional[str] = None,\tmode: Optional[str] = None):", "funcdef": "def"}, "sqlglot.dialects": {"fullname": "sqlglot.dialects", "modulename": "sqlglot.dialects", "kind": "module", "doc": "

Dialects

\n\n

While there is a SQL standard, most SQL engines support a variation of that standard. This makes it difficult\nto write portable SQL code. SQLGlot bridges all the different variations, called \"dialects\", with an extensible\nSQL transpilation framework.

\n\n

The base sqlglot.dialects.dialect.Dialect class implements a generic dialect that aims to be as universal as possible.

\n\n

Each SQL variation has its own Dialect subclass, extending the corresponding Tokenizer, Parser and Generator\nclasses as needed.

\n\n

Implementing a custom Dialect

\n\n

Consider the following example:

\n\n
\n
from sqlglot import exp\nfrom sqlglot.dialects.dialect import Dialect\nfrom sqlglot.generator import Generator\nfrom sqlglot.tokens import Tokenizer, TokenType\n\n\nclass Custom(Dialect):\n    class Tokenizer(Tokenizer):\n        QUOTES = ["'", '"']\n        IDENTIFIERS = ["`"]\n\n        KEYWORDS = {\n            **Tokenizer.KEYWORDS,\n            "INT64": TokenType.BIGINT,\n            "FLOAT64": TokenType.DOUBLE,\n        }\n\n    class Generator(Generator):\n        TRANSFORMS = {exp.Array: lambda self, e: f"[{self.expressions(e)}]"}\n\n        TYPE_MAPPING = {\n            exp.DataType.Type.TINYINT: "INT64",\n            exp.DataType.Type.SMALLINT: "INT64",\n            exp.DataType.Type.INT: "INT64",\n            exp.DataType.Type.BIGINT: "INT64",\n            exp.DataType.Type.DECIMAL: "NUMERIC",\n            exp.DataType.Type.FLOAT: "FLOAT64",\n            exp.DataType.Type.DOUBLE: "FLOAT64",\n            exp.DataType.Type.BOOLEAN: "BOOL",\n            exp.DataType.Type.TEXT: "STRING",\n        }\n
\n
\n\n

This is a typical example of adding a new dialect implementation in SQLGlot: we specify its identifier and string\ndelimiters, as well as what tokens it uses for its types and how they're associated with SQLGlot types. Since\nthe Expression classes are common for each dialect supported in SQLGlot, we may also need to override the generation\nlogic for some expressions; this is usually done by adding new entries to the TRANSFORMS mapping.

\n\n
\n"}, "sqlglot.dialects.bigquery": {"fullname": "sqlglot.dialects.bigquery", "modulename": "sqlglot.dialects.bigquery", "kind": "module", "doc": "

Supports BigQuery Standard SQL.

\n"}, "sqlglot.dialects.bigquery.BigQuery": {"fullname": "sqlglot.dialects.bigquery.BigQuery", "modulename": "sqlglot.dialects.bigquery", "qualname": "BigQuery", "kind": "class", "doc": "

\n", "bases": "sqlglot.dialects.dialect.Dialect"}, "sqlglot.dialects.bigquery.BigQuery.Tokenizer": {"fullname": "sqlglot.dialects.bigquery.BigQuery.Tokenizer", "modulename": "sqlglot.dialects.bigquery", "qualname": "BigQuery.Tokenizer", "kind": "class", "doc": "

\n", "bases": "sqlglot.tokens.Tokenizer"}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"fullname": "sqlglot.dialects.bigquery.BigQuery.Parser", "modulename": "sqlglot.dialects.bigquery", "qualname": "BigQuery.Parser", "kind": "class", "doc": "

Parser consumes a list of tokens produced by the sqlglot.tokens.Tokenizer and produces\na parsed syntax tree.

\n\n
Arguments:
\n\n
    \n
  • error_level: the desired error level.\nDefault: ErrorLevel.RAISE
  • \n
  • error_message_context: determines the amount of context to capture from a\nquery string when displaying the error message (in number of characters).\nDefault: 50.
  • \n
  • index_offset: Index offset for arrays eg ARRAY[0] vs ARRAY[1] as the head of a list.\nDefault: 0
  • \n
  • alias_post_tablesample: If the table alias comes after tablesample.\nDefault: False
  • \n
  • max_errors: Maximum number of error messages to include in a raised ParseError.\nThis is only relevant if error_level is ErrorLevel.RAISE.\nDefault: 3
  • \n
  • null_ordering: Indicates the default null ordering method to use if not explicitly set.\nOptions are \"nulls_are_small\", \"nulls_are_large\", \"nulls_are_last\".\nDefault: \"nulls_are_small\"
  • \n
\n", "bases": "sqlglot.parser.Parser"}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"fullname": "sqlglot.dialects.bigquery.BigQuery.Generator", "modulename": "sqlglot.dialects.bigquery", "qualname": "BigQuery.Generator", "kind": "class", "doc": "

Generator interprets the given syntax tree and produces a SQL string as an output.

\n\n
Arguments:
\n\n
    \n
  • time_mapping (dict): the dictionary of custom time mappings in which the key\nrepresents a python time format and the output the target time format
  • \n
  • time_trie (trie): a trie of the time_mapping keys
  • \n
  • pretty (bool): if set to True the returned string will be formatted. Default: False.
  • \n
  • quote_start (str): specifies which starting character to use to delimit quotes. Default: '.
  • \n
  • quote_end (str): specifies which ending character to use to delimit quotes. Default: '.
  • \n
  • identifier_start (str): specifies which starting character to use to delimit identifiers. Default: \".
  • \n
  • identifier_end (str): specifies which ending character to use to delimit identifiers. Default: \".
  • \n
  • identify (bool | str): 'always': always quote, 'safe': quote identifiers if they don't contain an upcase, True defaults to always.
  • \n
  • normalize (bool): if set to True all identifiers will lower cased
  • \n
  • string_escape (str): specifies a string escape character. Default: '.
  • \n
  • identifier_escape (str): specifies an identifier escape character. Default: \".
  • \n
  • pad (int): determines padding in a formatted string. Default: 2.
  • \n
  • indent (int): determines the size of indentation in a formatted string. Default: 4.
  • \n
  • unnest_column_only (bool): if true unnest table aliases are considered only as column aliases
  • \n
  • normalize_functions (str): normalize function names, \"upper\", \"lower\", or None\nDefault: \"upper\"
  • \n
  • alias_post_tablesample (bool): if the table alias comes after tablesample\nDefault: False
  • \n
  • unsupported_level (ErrorLevel): determines the generator's behavior when it encounters\nunsupported expressions. Default ErrorLevel.WARN.
  • \n
  • null_ordering (str): Indicates the default null ordering method to use if not explicitly set.\nOptions are \"nulls_are_small\", \"nulls_are_large\", \"nulls_are_last\".\nDefault: \"nulls_are_small\"
  • \n
  • max_unsupported (int): Maximum number of unsupported messages to include in a raised UnsupportedError.\nThis is only relevant if unsupported_level is ErrorLevel.RAISE.\nDefault: 3
  • \n
  • leading_comma (bool): if the the comma is leading or trailing in select statements\nDefault: False
  • \n
  • max_text_width: The max number of characters in a segment before creating new lines in pretty mode.\nThe default is on the smaller end because the length only represents a segment and not the true\nline length.\nDefault: 80
  • \n
  • comments: Whether or not to preserve comments in the output SQL code.\nDefault: True
  • \n
\n", "bases": "sqlglot.generator.Generator"}, "sqlglot.dialects.bigquery.BigQuery.Generator.array_sql": {"fullname": "sqlglot.dialects.bigquery.BigQuery.Generator.array_sql", "modulename": "sqlglot.dialects.bigquery", "qualname": "BigQuery.Generator.array_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Array) -> str:", "funcdef": "def"}, "sqlglot.dialects.bigquery.BigQuery.Generator.transaction_sql": {"fullname": "sqlglot.dialects.bigquery.BigQuery.Generator.transaction_sql", "modulename": "sqlglot.dialects.bigquery", "qualname": "BigQuery.Generator.transaction_sql", "kind": "function", "doc": "

\n", "signature": "(self, *_) -> str:", "funcdef": "def"}, "sqlglot.dialects.bigquery.BigQuery.Generator.commit_sql": {"fullname": "sqlglot.dialects.bigquery.BigQuery.Generator.commit_sql", "modulename": "sqlglot.dialects.bigquery", "qualname": "BigQuery.Generator.commit_sql", "kind": "function", "doc": "

\n", "signature": "(self, *_) -> str:", "funcdef": "def"}, "sqlglot.dialects.bigquery.BigQuery.Generator.rollback_sql": {"fullname": "sqlglot.dialects.bigquery.BigQuery.Generator.rollback_sql", "modulename": "sqlglot.dialects.bigquery", "qualname": "BigQuery.Generator.rollback_sql", "kind": "function", "doc": "

\n", "signature": "(self, *_) -> str:", "funcdef": "def"}, "sqlglot.dialects.bigquery.BigQuery.Generator.in_unnest_op": {"fullname": "sqlglot.dialects.bigquery.BigQuery.Generator.in_unnest_op", "modulename": "sqlglot.dialects.bigquery", "qualname": "BigQuery.Generator.in_unnest_op", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Unnest) -> str:", "funcdef": "def"}, "sqlglot.dialects.bigquery.BigQuery.Generator.except_op": {"fullname": "sqlglot.dialects.bigquery.BigQuery.Generator.except_op", "modulename": "sqlglot.dialects.bigquery", "qualname": "BigQuery.Generator.except_op", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Except) -> str:", "funcdef": "def"}, "sqlglot.dialects.bigquery.BigQuery.Generator.intersect_op": {"fullname": "sqlglot.dialects.bigquery.BigQuery.Generator.intersect_op", "modulename": "sqlglot.dialects.bigquery", "qualname": "BigQuery.Generator.intersect_op", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Intersect) -> str:", "funcdef": "def"}, "sqlglot.dialects.clickhouse": {"fullname": "sqlglot.dialects.clickhouse", "modulename": "sqlglot.dialects.clickhouse", "kind": "module", "doc": "

\n"}, "sqlglot.dialects.clickhouse.ClickHouse": {"fullname": "sqlglot.dialects.clickhouse.ClickHouse", "modulename": "sqlglot.dialects.clickhouse", "qualname": "ClickHouse", "kind": "class", "doc": "

\n", "bases": "sqlglot.dialects.dialect.Dialect"}, "sqlglot.dialects.clickhouse.ClickHouse.Tokenizer": {"fullname": "sqlglot.dialects.clickhouse.ClickHouse.Tokenizer", "modulename": "sqlglot.dialects.clickhouse", "qualname": "ClickHouse.Tokenizer", "kind": "class", "doc": "

\n", "bases": "sqlglot.tokens.Tokenizer"}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"fullname": "sqlglot.dialects.clickhouse.ClickHouse.Parser", "modulename": "sqlglot.dialects.clickhouse", "qualname": "ClickHouse.Parser", "kind": "class", "doc": "

Parser consumes a list of tokens produced by the sqlglot.tokens.Tokenizer and produces\na parsed syntax tree.

\n\n
Arguments:
\n\n
    \n
  • error_level: the desired error level.\nDefault: ErrorLevel.RAISE
  • \n
  • error_message_context: determines the amount of context to capture from a\nquery string when displaying the error message (in number of characters).\nDefault: 50.
  • \n
  • index_offset: Index offset for arrays eg ARRAY[0] vs ARRAY[1] as the head of a list.\nDefault: 0
  • \n
  • alias_post_tablesample: If the table alias comes after tablesample.\nDefault: False
  • \n
  • max_errors: Maximum number of error messages to include in a raised ParseError.\nThis is only relevant if error_level is ErrorLevel.RAISE.\nDefault: 3
  • \n
  • null_ordering: Indicates the default null ordering method to use if not explicitly set.\nOptions are \"nulls_are_small\", \"nulls_are_large\", \"nulls_are_last\".\nDefault: \"nulls_are_small\"
  • \n
\n", "bases": "sqlglot.parser.Parser"}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"fullname": "sqlglot.dialects.clickhouse.ClickHouse.Generator", "modulename": "sqlglot.dialects.clickhouse", "qualname": "ClickHouse.Generator", "kind": "class", "doc": "

Generator interprets the given syntax tree and produces a SQL string as an output.

\n\n
Arguments:
\n\n
    \n
  • time_mapping (dict): the dictionary of custom time mappings in which the key\nrepresents a python time format and the output the target time format
  • \n
  • time_trie (trie): a trie of the time_mapping keys
  • \n
  • pretty (bool): if set to True the returned string will be formatted. Default: False.
  • \n
  • quote_start (str): specifies which starting character to use to delimit quotes. Default: '.
  • \n
  • quote_end (str): specifies which ending character to use to delimit quotes. Default: '.
  • \n
  • identifier_start (str): specifies which starting character to use to delimit identifiers. Default: \".
  • \n
  • identifier_end (str): specifies which ending character to use to delimit identifiers. Default: \".
  • \n
  • identify (bool | str): 'always': always quote, 'safe': quote identifiers if they don't contain an upcase, True defaults to always.
  • \n
  • normalize (bool): if set to True all identifiers will lower cased
  • \n
  • string_escape (str): specifies a string escape character. Default: '.
  • \n
  • identifier_escape (str): specifies an identifier escape character. Default: \".
  • \n
  • pad (int): determines padding in a formatted string. Default: 2.
  • \n
  • indent (int): determines the size of indentation in a formatted string. Default: 4.
  • \n
  • unnest_column_only (bool): if true unnest table aliases are considered only as column aliases
  • \n
  • normalize_functions (str): normalize function names, \"upper\", \"lower\", or None\nDefault: \"upper\"
  • \n
  • alias_post_tablesample (bool): if the table alias comes after tablesample\nDefault: False
  • \n
  • unsupported_level (ErrorLevel): determines the generator's behavior when it encounters\nunsupported expressions. Default ErrorLevel.WARN.
  • \n
  • null_ordering (str): Indicates the default null ordering method to use if not explicitly set.\nOptions are \"nulls_are_small\", \"nulls_are_large\", \"nulls_are_last\".\nDefault: \"nulls_are_small\"
  • \n
  • max_unsupported (int): Maximum number of unsupported messages to include in a raised UnsupportedError.\nThis is only relevant if unsupported_level is ErrorLevel.RAISE.\nDefault: 3
  • \n
  • leading_comma (bool): if the the comma is leading or trailing in select statements\nDefault: False
  • \n
  • max_text_width: The max number of characters in a segment before creating new lines in pretty mode.\nThe default is on the smaller end because the length only represents a segment and not the true\nline length.\nDefault: 80
  • \n
  • comments: Whether or not to preserve comments in the output SQL code.\nDefault: True
  • \n
\n", "bases": "sqlglot.generator.Generator"}, "sqlglot.dialects.clickhouse.ClickHouse.Generator.cte_sql": {"fullname": "sqlglot.dialects.clickhouse.ClickHouse.Generator.cte_sql", "modulename": "sqlglot.dialects.clickhouse", "qualname": "ClickHouse.Generator.cte_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.CTE) -> str:", "funcdef": "def"}, "sqlglot.dialects.databricks": {"fullname": "sqlglot.dialects.databricks", "modulename": "sqlglot.dialects.databricks", "kind": "module", "doc": "

\n"}, "sqlglot.dialects.databricks.Databricks": {"fullname": "sqlglot.dialects.databricks.Databricks", "modulename": "sqlglot.dialects.databricks", "qualname": "Databricks", "kind": "class", "doc": "

\n", "bases": "sqlglot.dialects.spark.Spark"}, "sqlglot.dialects.databricks.Databricks.Parser": {"fullname": "sqlglot.dialects.databricks.Databricks.Parser", "modulename": "sqlglot.dialects.databricks", "qualname": "Databricks.Parser", "kind": "class", "doc": "

Parser consumes a list of tokens produced by the sqlglot.tokens.Tokenizer and produces\na parsed syntax tree.

\n\n
Arguments:
\n\n
    \n
  • error_level: the desired error level.\nDefault: ErrorLevel.RAISE
  • \n
  • error_message_context: determines the amount of context to capture from a\nquery string when displaying the error message (in number of characters).\nDefault: 50.
  • \n
  • index_offset: Index offset for arrays eg ARRAY[0] vs ARRAY[1] as the head of a list.\nDefault: 0
  • \n
  • alias_post_tablesample: If the table alias comes after tablesample.\nDefault: False
  • \n
  • max_errors: Maximum number of error messages to include in a raised ParseError.\nThis is only relevant if error_level is ErrorLevel.RAISE.\nDefault: 3
  • \n
  • null_ordering: Indicates the default null ordering method to use if not explicitly set.\nOptions are \"nulls_are_small\", \"nulls_are_large\", \"nulls_are_last\".\nDefault: \"nulls_are_small\"
  • \n
\n", "bases": "sqlglot.dialects.spark.Spark.Parser"}, "sqlglot.dialects.databricks.Databricks.Generator": {"fullname": "sqlglot.dialects.databricks.Databricks.Generator", "modulename": "sqlglot.dialects.databricks", "qualname": "Databricks.Generator", "kind": "class", "doc": "

Generator interprets the given syntax tree and produces a SQL string as an output.

\n\n
Arguments:
\n\n
    \n
  • time_mapping (dict): the dictionary of custom time mappings in which the key\nrepresents a python time format and the output the target time format
  • \n
  • time_trie (trie): a trie of the time_mapping keys
  • \n
  • pretty (bool): if set to True the returned string will be formatted. Default: False.
  • \n
  • quote_start (str): specifies which starting character to use to delimit quotes. Default: '.
  • \n
  • quote_end (str): specifies which ending character to use to delimit quotes. Default: '.
  • \n
  • identifier_start (str): specifies which starting character to use to delimit identifiers. Default: \".
  • \n
  • identifier_end (str): specifies which ending character to use to delimit identifiers. Default: \".
  • \n
  • identify (bool | str): 'always': always quote, 'safe': quote identifiers if they don't contain an upcase, True defaults to always.
  • \n
  • normalize (bool): if set to True all identifiers will lower cased
  • \n
  • string_escape (str): specifies a string escape character. Default: '.
  • \n
  • identifier_escape (str): specifies an identifier escape character. Default: \".
  • \n
  • pad (int): determines padding in a formatted string. Default: 2.
  • \n
  • indent (int): determines the size of indentation in a formatted string. Default: 4.
  • \n
  • unnest_column_only (bool): if true unnest table aliases are considered only as column aliases
  • \n
  • normalize_functions (str): normalize function names, \"upper\", \"lower\", or None\nDefault: \"upper\"
  • \n
  • alias_post_tablesample (bool): if the table alias comes after tablesample\nDefault: False
  • \n
  • unsupported_level (ErrorLevel): determines the generator's behavior when it encounters\nunsupported expressions. Default ErrorLevel.WARN.
  • \n
  • null_ordering (str): Indicates the default null ordering method to use if not explicitly set.\nOptions are \"nulls_are_small\", \"nulls_are_large\", \"nulls_are_last\".\nDefault: \"nulls_are_small\"
  • \n
  • max_unsupported (int): Maximum number of unsupported messages to include in a raised UnsupportedError.\nThis is only relevant if unsupported_level is ErrorLevel.RAISE.\nDefault: 3
  • \n
  • leading_comma (bool): if the the comma is leading or trailing in select statements\nDefault: False
  • \n
  • max_text_width: The max number of characters in a segment before creating new lines in pretty mode.\nThe default is on the smaller end because the length only represents a segment and not the true\nline length.\nDefault: 80
  • \n
  • comments: Whether or not to preserve comments in the output SQL code.\nDefault: True
  • \n
\n", "bases": "sqlglot.dialects.spark.Spark.Generator"}, "sqlglot.dialects.databricks.Databricks.Tokenizer": {"fullname": "sqlglot.dialects.databricks.Databricks.Tokenizer", "modulename": "sqlglot.dialects.databricks", "qualname": "Databricks.Tokenizer", "kind": "class", "doc": "

\n", "bases": "sqlglot.dialects.spark.Spark.Tokenizer"}, "sqlglot.dialects.dialect": {"fullname": "sqlglot.dialects.dialect", "modulename": "sqlglot.dialects.dialect", "kind": "module", "doc": "

\n"}, "sqlglot.dialects.dialect.Dialects": {"fullname": "sqlglot.dialects.dialect.Dialects", "modulename": "sqlglot.dialects.dialect", "qualname": "Dialects", "kind": "class", "doc": "

An enumeration.

\n", "bases": "builtins.str, enum.Enum"}, "sqlglot.dialects.dialect.Dialects.DIALECT": {"fullname": "sqlglot.dialects.dialect.Dialects.DIALECT", "modulename": "sqlglot.dialects.dialect", "qualname": "Dialects.DIALECT", "kind": "variable", "doc": "

\n", "default_value": "<Dialects.DIALECT: ''>"}, "sqlglot.dialects.dialect.Dialects.BIGQUERY": {"fullname": "sqlglot.dialects.dialect.Dialects.BIGQUERY", "modulename": "sqlglot.dialects.dialect", "qualname": "Dialects.BIGQUERY", "kind": "variable", "doc": "

\n", "default_value": "<Dialects.BIGQUERY: 'bigquery'>"}, "sqlglot.dialects.dialect.Dialects.CLICKHOUSE": {"fullname": "sqlglot.dialects.dialect.Dialects.CLICKHOUSE", "modulename": "sqlglot.dialects.dialect", "qualname": "Dialects.CLICKHOUSE", "kind": "variable", "doc": "

\n", "default_value": "<Dialects.CLICKHOUSE: 'clickhouse'>"}, "sqlglot.dialects.dialect.Dialects.DUCKDB": {"fullname": "sqlglot.dialects.dialect.Dialects.DUCKDB", "modulename": "sqlglot.dialects.dialect", "qualname": "Dialects.DUCKDB", "kind": "variable", "doc": "

\n", "default_value": "<Dialects.DUCKDB: 'duckdb'>"}, "sqlglot.dialects.dialect.Dialects.HIVE": {"fullname": "sqlglot.dialects.dialect.Dialects.HIVE", "modulename": "sqlglot.dialects.dialect", "qualname": "Dialects.HIVE", "kind": "variable", "doc": "

\n", "default_value": "<Dialects.HIVE: 'hive'>"}, "sqlglot.dialects.dialect.Dialects.MYSQL": {"fullname": "sqlglot.dialects.dialect.Dialects.MYSQL", "modulename": "sqlglot.dialects.dialect", "qualname": "Dialects.MYSQL", "kind": "variable", "doc": "

\n", "default_value": "<Dialects.MYSQL: 'mysql'>"}, "sqlglot.dialects.dialect.Dialects.ORACLE": {"fullname": "sqlglot.dialects.dialect.Dialects.ORACLE", "modulename": "sqlglot.dialects.dialect", "qualname": "Dialects.ORACLE", "kind": "variable", "doc": "

\n", "default_value": "<Dialects.ORACLE: 'oracle'>"}, "sqlglot.dialects.dialect.Dialects.POSTGRES": {"fullname": "sqlglot.dialects.dialect.Dialects.POSTGRES", "modulename": "sqlglot.dialects.dialect", "qualname": "Dialects.POSTGRES", "kind": "variable", "doc": "

\n", "default_value": "<Dialects.POSTGRES: 'postgres'>"}, "sqlglot.dialects.dialect.Dialects.PRESTO": {"fullname": "sqlglot.dialects.dialect.Dialects.PRESTO", "modulename": "sqlglot.dialects.dialect", "qualname": "Dialects.PRESTO", "kind": "variable", "doc": "

\n", "default_value": "<Dialects.PRESTO: 'presto'>"}, "sqlglot.dialects.dialect.Dialects.REDSHIFT": {"fullname": "sqlglot.dialects.dialect.Dialects.REDSHIFT", "modulename": "sqlglot.dialects.dialect", "qualname": "Dialects.REDSHIFT", "kind": "variable", "doc": "

\n", "default_value": "<Dialects.REDSHIFT: 'redshift'>"}, "sqlglot.dialects.dialect.Dialects.SNOWFLAKE": {"fullname": "sqlglot.dialects.dialect.Dialects.SNOWFLAKE", "modulename": "sqlglot.dialects.dialect", "qualname": "Dialects.SNOWFLAKE", "kind": "variable", "doc": "

\n", "default_value": "<Dialects.SNOWFLAKE: 'snowflake'>"}, "sqlglot.dialects.dialect.Dialects.SPARK": {"fullname": "sqlglot.dialects.dialect.Dialects.SPARK", "modulename": "sqlglot.dialects.dialect", "qualname": "Dialects.SPARK", "kind": "variable", "doc": "

\n", "default_value": "<Dialects.SPARK: 'spark'>"}, "sqlglot.dialects.dialect.Dialects.SQLITE": {"fullname": "sqlglot.dialects.dialect.Dialects.SQLITE", "modulename": "sqlglot.dialects.dialect", "qualname": "Dialects.SQLITE", "kind": "variable", "doc": "

\n", "default_value": "<Dialects.SQLITE: 'sqlite'>"}, "sqlglot.dialects.dialect.Dialects.STARROCKS": {"fullname": "sqlglot.dialects.dialect.Dialects.STARROCKS", "modulename": "sqlglot.dialects.dialect", "qualname": "Dialects.STARROCKS", "kind": "variable", "doc": "

\n", "default_value": "<Dialects.STARROCKS: 'starrocks'>"}, "sqlglot.dialects.dialect.Dialects.TABLEAU": {"fullname": "sqlglot.dialects.dialect.Dialects.TABLEAU", "modulename": "sqlglot.dialects.dialect", "qualname": "Dialects.TABLEAU", "kind": "variable", "doc": "

\n", "default_value": "<Dialects.TABLEAU: 'tableau'>"}, "sqlglot.dialects.dialect.Dialects.TRINO": {"fullname": "sqlglot.dialects.dialect.Dialects.TRINO", "modulename": "sqlglot.dialects.dialect", "qualname": "Dialects.TRINO", "kind": "variable", "doc": "

\n", "default_value": "<Dialects.TRINO: 'trino'>"}, "sqlglot.dialects.dialect.Dialects.TSQL": {"fullname": "sqlglot.dialects.dialect.Dialects.TSQL", "modulename": "sqlglot.dialects.dialect", "qualname": "Dialects.TSQL", "kind": "variable", "doc": "

\n", "default_value": "<Dialects.TSQL: 'tsql'>"}, "sqlglot.dialects.dialect.Dialects.DATABRICKS": {"fullname": "sqlglot.dialects.dialect.Dialects.DATABRICKS", "modulename": "sqlglot.dialects.dialect", "qualname": "Dialects.DATABRICKS", "kind": "variable", "doc": "

\n", "default_value": "<Dialects.DATABRICKS: 'databricks'>"}, "sqlglot.dialects.dialect.Dialects.DRILL": {"fullname": "sqlglot.dialects.dialect.Dialects.DRILL", "modulename": "sqlglot.dialects.dialect", "qualname": "Dialects.DRILL", "kind": "variable", "doc": "

\n", "default_value": "<Dialects.DRILL: 'drill'>"}, "sqlglot.dialects.dialect.Dialects.TERADATA": {"fullname": "sqlglot.dialects.dialect.Dialects.TERADATA", "modulename": "sqlglot.dialects.dialect", "qualname": "Dialects.TERADATA", "kind": "variable", "doc": "

\n", "default_value": "<Dialects.TERADATA: 'teradata'>"}, "sqlglot.dialects.dialect.Dialect": {"fullname": "sqlglot.dialects.dialect.Dialect", "modulename": "sqlglot.dialects.dialect", "qualname": "Dialect", "kind": "class", "doc": "

\n"}, "sqlglot.dialects.dialect.Dialect.get_or_raise": {"fullname": "sqlglot.dialects.dialect.Dialect.get_or_raise", "modulename": "sqlglot.dialects.dialect", "qualname": "Dialect.get_or_raise", "kind": "function", "doc": "

\n", "signature": "(\tcls,\tdialect: Union[str, sqlglot.dialects.dialect.Dialect, Type[sqlglot.dialects.dialect.Dialect], NoneType]) -> Type[sqlglot.dialects.dialect.Dialect]:", "funcdef": "def"}, "sqlglot.dialects.dialect.Dialect.format_time": {"fullname": "sqlglot.dialects.dialect.Dialect.format_time", "modulename": "sqlglot.dialects.dialect", "qualname": "Dialect.format_time", "kind": "function", "doc": "

\n", "signature": "(\tcls,\texpression: Union[str, sqlglot.expressions.Expression, NoneType]) -> Optional[sqlglot.expressions.Expression]:", "funcdef": "def"}, "sqlglot.dialects.dialect.Dialect.parse": {"fullname": "sqlglot.dialects.dialect.Dialect.parse", "modulename": "sqlglot.dialects.dialect", "qualname": "Dialect.parse", "kind": "function", "doc": "

\n", "signature": "(self, sql: str, **opts) -> List[Optional[sqlglot.expressions.Expression]]:", "funcdef": "def"}, "sqlglot.dialects.dialect.Dialect.parse_into": {"fullname": "sqlglot.dialects.dialect.Dialect.parse_into", "modulename": "sqlglot.dialects.dialect", "qualname": "Dialect.parse_into", "kind": "function", "doc": "

\n", "signature": "(\tself,\texpression_type: Union[str, Type[sqlglot.expressions.Expression], Collection[Union[str, Type[sqlglot.expressions.Expression]]]],\tsql: str,\t**opts) -> List[Optional[sqlglot.expressions.Expression]]:", "funcdef": "def"}, "sqlglot.dialects.dialect.Dialect.generate": {"fullname": "sqlglot.dialects.dialect.Dialect.generate", "modulename": "sqlglot.dialects.dialect", "qualname": "Dialect.generate", "kind": "function", "doc": "

\n", "signature": "(\tself,\texpression: Optional[sqlglot.expressions.Expression],\t**opts) -> str:", "funcdef": "def"}, "sqlglot.dialects.dialect.Dialect.transpile": {"fullname": "sqlglot.dialects.dialect.Dialect.transpile", "modulename": "sqlglot.dialects.dialect", "qualname": "Dialect.transpile", "kind": "function", "doc": "

\n", "signature": "(self, sql: str, **opts) -> List[str]:", "funcdef": "def"}, "sqlglot.dialects.dialect.Dialect.tokenize": {"fullname": "sqlglot.dialects.dialect.Dialect.tokenize", "modulename": "sqlglot.dialects.dialect", "qualname": "Dialect.tokenize", "kind": "function", "doc": "

\n", "signature": "(self, sql: str) -> List[sqlglot.tokens.Token]:", "funcdef": "def"}, "sqlglot.dialects.dialect.Dialect.parser": {"fullname": "sqlglot.dialects.dialect.Dialect.parser", "modulename": "sqlglot.dialects.dialect", "qualname": "Dialect.parser", "kind": "function", "doc": "

\n", "signature": "(self, **opts) -> sqlglot.parser.Parser:", "funcdef": "def"}, "sqlglot.dialects.dialect.Dialect.generator": {"fullname": "sqlglot.dialects.dialect.Dialect.generator", "modulename": "sqlglot.dialects.dialect", "qualname": "Dialect.generator", "kind": "function", "doc": "

\n", "signature": "(self, **opts) -> sqlglot.generator.Generator:", "funcdef": "def"}, "sqlglot.dialects.dialect.rename_func": {"fullname": "sqlglot.dialects.dialect.rename_func", "modulename": "sqlglot.dialects.dialect", "qualname": "rename_func", "kind": "function", "doc": "

\n", "signature": "(\tname: str) -> Callable[[sqlglot.generator.Generator, sqlglot.expressions.Expression], str]:", "funcdef": "def"}, "sqlglot.dialects.dialect.approx_count_distinct_sql": {"fullname": "sqlglot.dialects.dialect.approx_count_distinct_sql", "modulename": "sqlglot.dialects.dialect", "qualname": "approx_count_distinct_sql", "kind": "function", "doc": "

\n", "signature": "(\tself: sqlglot.generator.Generator,\texpression: sqlglot.expressions.ApproxDistinct) -> str:", "funcdef": "def"}, "sqlglot.dialects.dialect.if_sql": {"fullname": "sqlglot.dialects.dialect.if_sql", "modulename": "sqlglot.dialects.dialect", "qualname": "if_sql", "kind": "function", "doc": "

\n", "signature": "(\tself: sqlglot.generator.Generator,\texpression: sqlglot.expressions.If) -> str:", "funcdef": "def"}, "sqlglot.dialects.dialect.arrow_json_extract_sql": {"fullname": "sqlglot.dialects.dialect.arrow_json_extract_sql", "modulename": "sqlglot.dialects.dialect", "qualname": "arrow_json_extract_sql", "kind": "function", "doc": "

\n", "signature": "(\tself: sqlglot.generator.Generator,\texpression: sqlglot.expressions.JSONExtract | sqlglot.expressions.JSONBExtract) -> str:", "funcdef": "def"}, "sqlglot.dialects.dialect.arrow_json_extract_scalar_sql": {"fullname": "sqlglot.dialects.dialect.arrow_json_extract_scalar_sql", "modulename": "sqlglot.dialects.dialect", "qualname": "arrow_json_extract_scalar_sql", "kind": "function", "doc": "

\n", "signature": "(\tself: sqlglot.generator.Generator,\texpression: sqlglot.expressions.JSONExtractScalar | sqlglot.expressions.JSONBExtractScalar) -> str:", "funcdef": "def"}, "sqlglot.dialects.dialect.inline_array_sql": {"fullname": "sqlglot.dialects.dialect.inline_array_sql", "modulename": "sqlglot.dialects.dialect", "qualname": "inline_array_sql", "kind": "function", "doc": "

\n", "signature": "(\tself: sqlglot.generator.Generator,\texpression: sqlglot.expressions.Array) -> str:", "funcdef": "def"}, "sqlglot.dialects.dialect.no_ilike_sql": {"fullname": "sqlglot.dialects.dialect.no_ilike_sql", "modulename": "sqlglot.dialects.dialect", "qualname": "no_ilike_sql", "kind": "function", "doc": "

\n", "signature": "(\tself: sqlglot.generator.Generator,\texpression: sqlglot.expressions.ILike) -> str:", "funcdef": "def"}, "sqlglot.dialects.dialect.no_paren_current_date_sql": {"fullname": "sqlglot.dialects.dialect.no_paren_current_date_sql", "modulename": "sqlglot.dialects.dialect", "qualname": "no_paren_current_date_sql", "kind": "function", "doc": "

\n", "signature": "(\tself: sqlglot.generator.Generator,\texpression: sqlglot.expressions.CurrentDate) -> str:", "funcdef": "def"}, "sqlglot.dialects.dialect.no_recursive_cte_sql": {"fullname": "sqlglot.dialects.dialect.no_recursive_cte_sql", "modulename": "sqlglot.dialects.dialect", "qualname": "no_recursive_cte_sql", "kind": "function", "doc": "

\n", "signature": "(\tself: sqlglot.generator.Generator,\texpression: sqlglot.expressions.With) -> str:", "funcdef": "def"}, "sqlglot.dialects.dialect.no_safe_divide_sql": {"fullname": "sqlglot.dialects.dialect.no_safe_divide_sql", "modulename": "sqlglot.dialects.dialect", "qualname": "no_safe_divide_sql", "kind": "function", "doc": "

\n", "signature": "(\tself: sqlglot.generator.Generator,\texpression: sqlglot.expressions.SafeDivide) -> str:", "funcdef": "def"}, "sqlglot.dialects.dialect.no_tablesample_sql": {"fullname": "sqlglot.dialects.dialect.no_tablesample_sql", "modulename": "sqlglot.dialects.dialect", "qualname": "no_tablesample_sql", "kind": "function", "doc": "

\n", "signature": "(\tself: sqlglot.generator.Generator,\texpression: sqlglot.expressions.TableSample) -> str:", "funcdef": "def"}, "sqlglot.dialects.dialect.no_pivot_sql": {"fullname": "sqlglot.dialects.dialect.no_pivot_sql", "modulename": "sqlglot.dialects.dialect", "qualname": "no_pivot_sql", "kind": "function", "doc": "

\n", "signature": "(\tself: sqlglot.generator.Generator,\texpression: sqlglot.expressions.Pivot) -> str:", "funcdef": "def"}, "sqlglot.dialects.dialect.no_trycast_sql": {"fullname": "sqlglot.dialects.dialect.no_trycast_sql", "modulename": "sqlglot.dialects.dialect", "qualname": "no_trycast_sql", "kind": "function", "doc": "

\n", "signature": "(\tself: sqlglot.generator.Generator,\texpression: sqlglot.expressions.TryCast) -> str:", "funcdef": "def"}, "sqlglot.dialects.dialect.no_properties_sql": {"fullname": "sqlglot.dialects.dialect.no_properties_sql", "modulename": "sqlglot.dialects.dialect", "qualname": "no_properties_sql", "kind": "function", "doc": "

\n", "signature": "(\tself: sqlglot.generator.Generator,\texpression: sqlglot.expressions.Properties) -> str:", "funcdef": "def"}, "sqlglot.dialects.dialect.no_comment_column_constraint_sql": {"fullname": "sqlglot.dialects.dialect.no_comment_column_constraint_sql", "modulename": "sqlglot.dialects.dialect", "qualname": "no_comment_column_constraint_sql", "kind": "function", "doc": "

\n", "signature": "(\tself: sqlglot.generator.Generator,\texpression: sqlglot.expressions.CommentColumnConstraint) -> str:", "funcdef": "def"}, "sqlglot.dialects.dialect.str_position_sql": {"fullname": "sqlglot.dialects.dialect.str_position_sql", "modulename": "sqlglot.dialects.dialect", "qualname": "str_position_sql", "kind": "function", "doc": "

\n", "signature": "(\tself: sqlglot.generator.Generator,\texpression: sqlglot.expressions.StrPosition) -> str:", "funcdef": "def"}, "sqlglot.dialects.dialect.struct_extract_sql": {"fullname": "sqlglot.dialects.dialect.struct_extract_sql", "modulename": "sqlglot.dialects.dialect", "qualname": "struct_extract_sql", "kind": "function", "doc": "

\n", "signature": "(\tself: sqlglot.generator.Generator,\texpression: sqlglot.expressions.StructExtract) -> str:", "funcdef": "def"}, "sqlglot.dialects.dialect.var_map_sql": {"fullname": "sqlglot.dialects.dialect.var_map_sql", "modulename": "sqlglot.dialects.dialect", "qualname": "var_map_sql", "kind": "function", "doc": "

\n", "signature": "(\tself: sqlglot.generator.Generator,\texpression: sqlglot.expressions.Map | sqlglot.expressions.VarMap,\tmap_func_name: str = 'MAP') -> str:", "funcdef": "def"}, "sqlglot.dialects.dialect.format_time_lambda": {"fullname": "sqlglot.dialects.dialect.format_time_lambda", "modulename": "sqlglot.dialects.dialect", "qualname": "format_time_lambda", "kind": "function", "doc": "

Helper used for time expressions.

\n\n
Arguments:
\n\n
    \n
  • exp_class: the expression class to instantiate.
  • \n
  • dialect: target sql dialect.
  • \n
  • default: the default format, True being time.
  • \n
\n\n
Returns:
\n\n
\n

A callable that can be used to return the appropriately formatted time expression.

\n
\n", "signature": "(\texp_class: Type[~E],\tdialect: str,\tdefault: Union[bool, str, NoneType] = None) -> Callable[[Sequence], ~E]:", "funcdef": "def"}, "sqlglot.dialects.dialect.create_with_partitions_sql": {"fullname": "sqlglot.dialects.dialect.create_with_partitions_sql", "modulename": "sqlglot.dialects.dialect", "qualname": "create_with_partitions_sql", "kind": "function", "doc": "

In Hive and Spark, the PARTITIONED BY property acts as an extension of a table's schema. When the\nPARTITIONED BY value is an array of column names, they are transformed into a schema. The corresponding\ncolumns are removed from the create statement.

\n", "signature": "(\tself: sqlglot.generator.Generator,\texpression: sqlglot.expressions.Create) -> str:", "funcdef": "def"}, "sqlglot.dialects.dialect.parse_date_delta": {"fullname": "sqlglot.dialects.dialect.parse_date_delta", "modulename": "sqlglot.dialects.dialect", "qualname": "parse_date_delta", "kind": "function", "doc": "

\n", "signature": "(\texp_class: Type[~E],\tunit_mapping: Optional[Dict[str, str]] = None) -> Callable[[Sequence], ~E]:", "funcdef": "def"}, "sqlglot.dialects.dialect.parse_date_delta_with_interval": {"fullname": "sqlglot.dialects.dialect.parse_date_delta_with_interval", "modulename": "sqlglot.dialects.dialect", "qualname": "parse_date_delta_with_interval", "kind": "function", "doc": "

\n", "signature": "(expression_class: Type[~E]) -> Callable[[Sequence], Optional[~E]]:", "funcdef": "def"}, "sqlglot.dialects.dialect.date_trunc_to_time": {"fullname": "sqlglot.dialects.dialect.date_trunc_to_time", "modulename": "sqlglot.dialects.dialect", "qualname": "date_trunc_to_time", "kind": "function", "doc": "

\n", "signature": "(\targs: Sequence) -> sqlglot.expressions.DateTrunc | sqlglot.expressions.TimestampTrunc:", "funcdef": "def"}, "sqlglot.dialects.dialect.timestamptrunc_sql": {"fullname": "sqlglot.dialects.dialect.timestamptrunc_sql", "modulename": "sqlglot.dialects.dialect", "qualname": "timestamptrunc_sql", "kind": "function", "doc": "

\n", "signature": "(\tself: sqlglot.generator.Generator,\texpression: sqlglot.expressions.TimestampTrunc) -> str:", "funcdef": "def"}, "sqlglot.dialects.dialect.locate_to_strposition": {"fullname": "sqlglot.dialects.dialect.locate_to_strposition", "modulename": "sqlglot.dialects.dialect", "qualname": "locate_to_strposition", "kind": "function", "doc": "

\n", "signature": "(args: Sequence) -> sqlglot.expressions.Expression:", "funcdef": "def"}, "sqlglot.dialects.dialect.strposition_to_locate_sql": {"fullname": "sqlglot.dialects.dialect.strposition_to_locate_sql", "modulename": "sqlglot.dialects.dialect", "qualname": "strposition_to_locate_sql", "kind": "function", "doc": "

\n", "signature": "(\tself: sqlglot.generator.Generator,\texpression: sqlglot.expressions.StrPosition) -> str:", "funcdef": "def"}, "sqlglot.dialects.dialect.timestrtotime_sql": {"fullname": "sqlglot.dialects.dialect.timestrtotime_sql", "modulename": "sqlglot.dialects.dialect", "qualname": "timestrtotime_sql", "kind": "function", "doc": "

\n", "signature": "(\tself: sqlglot.generator.Generator,\texpression: sqlglot.expressions.TimeStrToTime) -> str:", "funcdef": "def"}, "sqlglot.dialects.dialect.datestrtodate_sql": {"fullname": "sqlglot.dialects.dialect.datestrtodate_sql", "modulename": "sqlglot.dialects.dialect", "qualname": "datestrtodate_sql", "kind": "function", "doc": "

\n", "signature": "(\tself: sqlglot.generator.Generator,\texpression: sqlglot.expressions.DateStrToDate) -> str:", "funcdef": "def"}, "sqlglot.dialects.dialect.min_or_least": {"fullname": "sqlglot.dialects.dialect.min_or_least", "modulename": "sqlglot.dialects.dialect", "qualname": "min_or_least", "kind": "function", "doc": "

\n", "signature": "(\tself: sqlglot.generator.Generator,\texpression: sqlglot.expressions.Min) -> str:", "funcdef": "def"}, "sqlglot.dialects.dialect.max_or_greatest": {"fullname": "sqlglot.dialects.dialect.max_or_greatest", "modulename": "sqlglot.dialects.dialect", "qualname": "max_or_greatest", "kind": "function", "doc": "

\n", "signature": "(\tself: sqlglot.generator.Generator,\texpression: sqlglot.expressions.Max) -> str:", "funcdef": "def"}, "sqlglot.dialects.dialect.count_if_to_sum": {"fullname": "sqlglot.dialects.dialect.count_if_to_sum", "modulename": "sqlglot.dialects.dialect", "qualname": "count_if_to_sum", "kind": "function", "doc": "

\n", "signature": "(\tself: sqlglot.generator.Generator,\texpression: sqlglot.expressions.CountIf) -> str:", "funcdef": "def"}, "sqlglot.dialects.dialect.trim_sql": {"fullname": "sqlglot.dialects.dialect.trim_sql", "modulename": "sqlglot.dialects.dialect", "qualname": "trim_sql", "kind": "function", "doc": "

\n", "signature": "(\tself: sqlglot.generator.Generator,\texpression: sqlglot.expressions.Trim) -> str:", "funcdef": "def"}, "sqlglot.dialects.dialect.str_to_time_sql": {"fullname": "sqlglot.dialects.dialect.str_to_time_sql", "modulename": "sqlglot.dialects.dialect", "qualname": "str_to_time_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Expression) -> str:", "funcdef": "def"}, "sqlglot.dialects.dialect.ts_or_ds_to_date_sql": {"fullname": "sqlglot.dialects.dialect.ts_or_ds_to_date_sql", "modulename": "sqlglot.dialects.dialect", "qualname": "ts_or_ds_to_date_sql", "kind": "function", "doc": "

\n", "signature": "(dialect: str) -> Callable:", "funcdef": "def"}, "sqlglot.dialects.drill": {"fullname": "sqlglot.dialects.drill", "modulename": "sqlglot.dialects.drill", "kind": "module", "doc": "

\n"}, "sqlglot.dialects.drill.Drill": {"fullname": "sqlglot.dialects.drill.Drill", "modulename": "sqlglot.dialects.drill", "qualname": "Drill", "kind": "class", "doc": "

\n", "bases": "sqlglot.dialects.dialect.Dialect"}, "sqlglot.dialects.drill.Drill.Tokenizer": {"fullname": "sqlglot.dialects.drill.Drill.Tokenizer", "modulename": "sqlglot.dialects.drill", "qualname": "Drill.Tokenizer", "kind": "class", "doc": "

\n", "bases": "sqlglot.tokens.Tokenizer"}, "sqlglot.dialects.drill.Drill.Parser": {"fullname": "sqlglot.dialects.drill.Drill.Parser", "modulename": "sqlglot.dialects.drill", "qualname": "Drill.Parser", "kind": "class", "doc": "

Parser consumes a list of tokens produced by the sqlglot.tokens.Tokenizer and produces\na parsed syntax tree.

\n\n
Arguments:
\n\n
    \n
  • error_level: the desired error level.\nDefault: ErrorLevel.RAISE
  • \n
  • error_message_context: determines the amount of context to capture from a\nquery string when displaying the error message (in number of characters).\nDefault: 50.
  • \n
  • index_offset: Index offset for arrays eg ARRAY[0] vs ARRAY[1] as the head of a list.\nDefault: 0
  • \n
  • alias_post_tablesample: If the table alias comes after tablesample.\nDefault: False
  • \n
  • max_errors: Maximum number of error messages to include in a raised ParseError.\nThis is only relevant if error_level is ErrorLevel.RAISE.\nDefault: 3
  • \n
  • null_ordering: Indicates the default null ordering method to use if not explicitly set.\nOptions are \"nulls_are_small\", \"nulls_are_large\", \"nulls_are_last\".\nDefault: \"nulls_are_small\"
  • \n
\n", "bases": "sqlglot.parser.Parser"}, "sqlglot.dialects.drill.Drill.Generator": {"fullname": "sqlglot.dialects.drill.Drill.Generator", "modulename": "sqlglot.dialects.drill", "qualname": "Drill.Generator", "kind": "class", "doc": "

Generator interprets the given syntax tree and produces a SQL string as an output.

\n\n
Arguments:
\n\n
    \n
  • time_mapping (dict): the dictionary of custom time mappings in which the key\nrepresents a python time format and the output the target time format
  • \n
  • time_trie (trie): a trie of the time_mapping keys
  • \n
  • pretty (bool): if set to True the returned string will be formatted. Default: False.
  • \n
  • quote_start (str): specifies which starting character to use to delimit quotes. Default: '.
  • \n
  • quote_end (str): specifies which ending character to use to delimit quotes. Default: '.
  • \n
  • identifier_start (str): specifies which starting character to use to delimit identifiers. Default: \".
  • \n
  • identifier_end (str): specifies which ending character to use to delimit identifiers. Default: \".
  • \n
  • identify (bool | str): 'always': always quote, 'safe': quote identifiers if they don't contain an upcase, True defaults to always.
  • \n
  • normalize (bool): if set to True all identifiers will lower cased
  • \n
  • string_escape (str): specifies a string escape character. Default: '.
  • \n
  • identifier_escape (str): specifies an identifier escape character. Default: \".
  • \n
  • pad (int): determines padding in a formatted string. Default: 2.
  • \n
  • indent (int): determines the size of indentation in a formatted string. Default: 4.
  • \n
  • unnest_column_only (bool): if true unnest table aliases are considered only as column aliases
  • \n
  • normalize_functions (str): normalize function names, \"upper\", \"lower\", or None\nDefault: \"upper\"
  • \n
  • alias_post_tablesample (bool): if the table alias comes after tablesample\nDefault: False
  • \n
  • unsupported_level (ErrorLevel): determines the generator's behavior when it encounters\nunsupported expressions. Default ErrorLevel.WARN.
  • \n
  • null_ordering (str): Indicates the default null ordering method to use if not explicitly set.\nOptions are \"nulls_are_small\", \"nulls_are_large\", \"nulls_are_last\".\nDefault: \"nulls_are_small\"
  • \n
  • max_unsupported (int): Maximum number of unsupported messages to include in a raised UnsupportedError.\nThis is only relevant if unsupported_level is ErrorLevel.RAISE.\nDefault: 3
  • \n
  • leading_comma (bool): if the the comma is leading or trailing in select statements\nDefault: False
  • \n
  • max_text_width: The max number of characters in a segment before creating new lines in pretty mode.\nThe default is on the smaller end because the length only represents a segment and not the true\nline length.\nDefault: 80
  • \n
  • comments: Whether or not to preserve comments in the output SQL code.\nDefault: True
  • \n
\n", "bases": "sqlglot.generator.Generator"}, "sqlglot.dialects.drill.Drill.Generator.normalize_func": {"fullname": "sqlglot.dialects.drill.Drill.Generator.normalize_func", "modulename": "sqlglot.dialects.drill", "qualname": "Drill.Generator.normalize_func", "kind": "function", "doc": "

\n", "signature": "(self, name: str) -> str:", "funcdef": "def"}, "sqlglot.dialects.duckdb": {"fullname": "sqlglot.dialects.duckdb", "modulename": "sqlglot.dialects.duckdb", "kind": "module", "doc": "

\n"}, "sqlglot.dialects.duckdb.DuckDB": {"fullname": "sqlglot.dialects.duckdb.DuckDB", "modulename": "sqlglot.dialects.duckdb", "qualname": "DuckDB", "kind": "class", "doc": "

\n", "bases": "sqlglot.dialects.dialect.Dialect"}, "sqlglot.dialects.duckdb.DuckDB.Tokenizer": {"fullname": "sqlglot.dialects.duckdb.DuckDB.Tokenizer", "modulename": "sqlglot.dialects.duckdb", "qualname": "DuckDB.Tokenizer", "kind": "class", "doc": "

\n", "bases": "sqlglot.tokens.Tokenizer"}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"fullname": "sqlglot.dialects.duckdb.DuckDB.Parser", "modulename": "sqlglot.dialects.duckdb", "qualname": "DuckDB.Parser", "kind": "class", "doc": "

Parser consumes a list of tokens produced by the sqlglot.tokens.Tokenizer and produces\na parsed syntax tree.

\n\n
Arguments:
\n\n
    \n
  • error_level: the desired error level.\nDefault: ErrorLevel.RAISE
  • \n
  • error_message_context: determines the amount of context to capture from a\nquery string when displaying the error message (in number of characters).\nDefault: 50.
  • \n
  • index_offset: Index offset for arrays eg ARRAY[0] vs ARRAY[1] as the head of a list.\nDefault: 0
  • \n
  • alias_post_tablesample: If the table alias comes after tablesample.\nDefault: False
  • \n
  • max_errors: Maximum number of error messages to include in a raised ParseError.\nThis is only relevant if error_level is ErrorLevel.RAISE.\nDefault: 3
  • \n
  • null_ordering: Indicates the default null ordering method to use if not explicitly set.\nOptions are \"nulls_are_small\", \"nulls_are_large\", \"nulls_are_last\".\nDefault: \"nulls_are_small\"
  • \n
\n", "bases": "sqlglot.parser.Parser"}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"fullname": "sqlglot.dialects.duckdb.DuckDB.Generator", "modulename": "sqlglot.dialects.duckdb", "qualname": "DuckDB.Generator", "kind": "class", "doc": "

Generator interprets the given syntax tree and produces a SQL string as an output.

\n\n
Arguments:
\n\n
    \n
  • time_mapping (dict): the dictionary of custom time mappings in which the key\nrepresents a python time format and the output the target time format
  • \n
  • time_trie (trie): a trie of the time_mapping keys
  • \n
  • pretty (bool): if set to True the returned string will be formatted. Default: False.
  • \n
  • quote_start (str): specifies which starting character to use to delimit quotes. Default: '.
  • \n
  • quote_end (str): specifies which ending character to use to delimit quotes. Default: '.
  • \n
  • identifier_start (str): specifies which starting character to use to delimit identifiers. Default: \".
  • \n
  • identifier_end (str): specifies which ending character to use to delimit identifiers. Default: \".
  • \n
  • identify (bool | str): 'always': always quote, 'safe': quote identifiers if they don't contain an upcase, True defaults to always.
  • \n
  • normalize (bool): if set to True all identifiers will lower cased
  • \n
  • string_escape (str): specifies a string escape character. Default: '.
  • \n
  • identifier_escape (str): specifies an identifier escape character. Default: \".
  • \n
  • pad (int): determines padding in a formatted string. Default: 2.
  • \n
  • indent (int): determines the size of indentation in a formatted string. Default: 4.
  • \n
  • unnest_column_only (bool): if true unnest table aliases are considered only as column aliases
  • \n
  • normalize_functions (str): normalize function names, \"upper\", \"lower\", or None\nDefault: \"upper\"
  • \n
  • alias_post_tablesample (bool): if the table alias comes after tablesample\nDefault: False
  • \n
  • unsupported_level (ErrorLevel): determines the generator's behavior when it encounters\nunsupported expressions. Default ErrorLevel.WARN.
  • \n
  • null_ordering (str): Indicates the default null ordering method to use if not explicitly set.\nOptions are \"nulls_are_small\", \"nulls_are_large\", \"nulls_are_last\".\nDefault: \"nulls_are_small\"
  • \n
  • max_unsupported (int): Maximum number of unsupported messages to include in a raised UnsupportedError.\nThis is only relevant if unsupported_level is ErrorLevel.RAISE.\nDefault: 3
  • \n
  • leading_comma (bool): if the the comma is leading or trailing in select statements\nDefault: False
  • \n
  • max_text_width: The max number of characters in a segment before creating new lines in pretty mode.\nThe default is on the smaller end because the length only represents a segment and not the true\nline length.\nDefault: 80
  • \n
  • comments: Whether or not to preserve comments in the output SQL code.\nDefault: True
  • \n
\n", "bases": "sqlglot.generator.Generator"}, "sqlglot.dialects.duckdb.DuckDB.Generator.tablesample_sql": {"fullname": "sqlglot.dialects.duckdb.DuckDB.Generator.tablesample_sql", "modulename": "sqlglot.dialects.duckdb", "qualname": "DuckDB.Generator.tablesample_sql", "kind": "function", "doc": "

\n", "signature": "(\tself,\texpression: sqlglot.expressions.TableSample,\tseed_prefix: str = 'SEED') -> str:", "funcdef": "def"}, "sqlglot.dialects.hive": {"fullname": "sqlglot.dialects.hive", "modulename": "sqlglot.dialects.hive", "kind": "module", "doc": "

\n"}, "sqlglot.dialects.hive.Hive": {"fullname": "sqlglot.dialects.hive.Hive", "modulename": "sqlglot.dialects.hive", "qualname": "Hive", "kind": "class", "doc": "

\n", "bases": "sqlglot.dialects.dialect.Dialect"}, "sqlglot.dialects.hive.Hive.Tokenizer": {"fullname": "sqlglot.dialects.hive.Hive.Tokenizer", "modulename": "sqlglot.dialects.hive", "qualname": "Hive.Tokenizer", "kind": "class", "doc": "

\n", "bases": "sqlglot.tokens.Tokenizer"}, "sqlglot.dialects.hive.Hive.Parser": {"fullname": "sqlglot.dialects.hive.Hive.Parser", "modulename": "sqlglot.dialects.hive", "qualname": "Hive.Parser", "kind": "class", "doc": "

Parser consumes a list of tokens produced by the sqlglot.tokens.Tokenizer and produces\na parsed syntax tree.

\n\n
Arguments:
\n\n
    \n
  • error_level: the desired error level.\nDefault: ErrorLevel.RAISE
  • \n
  • error_message_context: determines the amount of context to capture from a\nquery string when displaying the error message (in number of characters).\nDefault: 50.
  • \n
  • index_offset: Index offset for arrays eg ARRAY[0] vs ARRAY[1] as the head of a list.\nDefault: 0
  • \n
  • alias_post_tablesample: If the table alias comes after tablesample.\nDefault: False
  • \n
  • max_errors: Maximum number of error messages to include in a raised ParseError.\nThis is only relevant if error_level is ErrorLevel.RAISE.\nDefault: 3
  • \n
  • null_ordering: Indicates the default null ordering method to use if not explicitly set.\nOptions are \"nulls_are_small\", \"nulls_are_large\", \"nulls_are_last\".\nDefault: \"nulls_are_small\"
  • \n
\n", "bases": "sqlglot.parser.Parser"}, "sqlglot.dialects.hive.Hive.Generator": {"fullname": "sqlglot.dialects.hive.Hive.Generator", "modulename": "sqlglot.dialects.hive", "qualname": "Hive.Generator", "kind": "class", "doc": "

Generator interprets the given syntax tree and produces a SQL string as an output.

\n\n
Arguments:
\n\n
    \n
  • time_mapping (dict): the dictionary of custom time mappings in which the key\nrepresents a python time format and the output the target time format
  • \n
  • time_trie (trie): a trie of the time_mapping keys
  • \n
  • pretty (bool): if set to True the returned string will be formatted. Default: False.
  • \n
  • quote_start (str): specifies which starting character to use to delimit quotes. Default: '.
  • \n
  • quote_end (str): specifies which ending character to use to delimit quotes. Default: '.
  • \n
  • identifier_start (str): specifies which starting character to use to delimit identifiers. Default: \".
  • \n
  • identifier_end (str): specifies which ending character to use to delimit identifiers. Default: \".
  • \n
  • identify (bool | str): 'always': always quote, 'safe': quote identifiers if they don't contain an upcase, True defaults to always.
  • \n
  • normalize (bool): if set to True all identifiers will lower cased
  • \n
  • string_escape (str): specifies a string escape character. Default: '.
  • \n
  • identifier_escape (str): specifies an identifier escape character. Default: \".
  • \n
  • pad (int): determines padding in a formatted string. Default: 2.
  • \n
  • indent (int): determines the size of indentation in a formatted string. Default: 4.
  • \n
  • unnest_column_only (bool): if true unnest table aliases are considered only as column aliases
  • \n
  • normalize_functions (str): normalize function names, \"upper\", \"lower\", or None\nDefault: \"upper\"
  • \n
  • alias_post_tablesample (bool): if the table alias comes after tablesample\nDefault: False
  • \n
  • unsupported_level (ErrorLevel): determines the generator's behavior when it encounters\nunsupported expressions. Default ErrorLevel.WARN.
  • \n
  • null_ordering (str): Indicates the default null ordering method to use if not explicitly set.\nOptions are \"nulls_are_small\", \"nulls_are_large\", \"nulls_are_last\".\nDefault: \"nulls_are_small\"
  • \n
  • max_unsupported (int): Maximum number of unsupported messages to include in a raised UnsupportedError.\nThis is only relevant if unsupported_level is ErrorLevel.RAISE.\nDefault: 3
  • \n
  • leading_comma (bool): if the the comma is leading or trailing in select statements\nDefault: False
  • \n
  • max_text_width: The max number of characters in a segment before creating new lines in pretty mode.\nThe default is on the smaller end because the length only represents a segment and not the true\nline length.\nDefault: 80
  • \n
  • comments: Whether or not to preserve comments in the output SQL code.\nDefault: True
  • \n
\n", "bases": "sqlglot.generator.Generator"}, "sqlglot.dialects.hive.Hive.Generator.arrayagg_sql": {"fullname": "sqlglot.dialects.hive.Hive.Generator.arrayagg_sql", "modulename": "sqlglot.dialects.hive", "qualname": "Hive.Generator.arrayagg_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.ArrayAgg) -> str:", "funcdef": "def"}, "sqlglot.dialects.hive.Hive.Generator.with_properties": {"fullname": "sqlglot.dialects.hive.Hive.Generator.with_properties", "modulename": "sqlglot.dialects.hive", "qualname": "Hive.Generator.with_properties", "kind": "function", "doc": "

\n", "signature": "(self, properties: sqlglot.expressions.Properties) -> str:", "funcdef": "def"}, "sqlglot.dialects.hive.Hive.Generator.datatype_sql": {"fullname": "sqlglot.dialects.hive.Hive.Generator.datatype_sql", "modulename": "sqlglot.dialects.hive", "qualname": "Hive.Generator.datatype_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.DataType) -> str:", "funcdef": "def"}, "sqlglot.dialects.mysql": {"fullname": "sqlglot.dialects.mysql", "modulename": "sqlglot.dialects.mysql", "kind": "module", "doc": "

\n"}, "sqlglot.dialects.mysql.MySQL": {"fullname": "sqlglot.dialects.mysql.MySQL", "modulename": "sqlglot.dialects.mysql", "qualname": "MySQL", "kind": "class", "doc": "

\n", "bases": "sqlglot.dialects.dialect.Dialect"}, "sqlglot.dialects.mysql.MySQL.Tokenizer": {"fullname": "sqlglot.dialects.mysql.MySQL.Tokenizer", "modulename": "sqlglot.dialects.mysql", "qualname": "MySQL.Tokenizer", "kind": "class", "doc": "

\n", "bases": "sqlglot.tokens.Tokenizer"}, "sqlglot.dialects.mysql.MySQL.Parser": {"fullname": "sqlglot.dialects.mysql.MySQL.Parser", "modulename": "sqlglot.dialects.mysql", "qualname": "MySQL.Parser", "kind": "class", "doc": "

Parser consumes a list of tokens produced by the sqlglot.tokens.Tokenizer and produces\na parsed syntax tree.

\n\n
Arguments:
\n\n
    \n
  • error_level: the desired error level.\nDefault: ErrorLevel.RAISE
  • \n
  • error_message_context: determines the amount of context to capture from a\nquery string when displaying the error message (in number of characters).\nDefault: 50.
  • \n
  • index_offset: Index offset for arrays eg ARRAY[0] vs ARRAY[1] as the head of a list.\nDefault: 0
  • \n
  • alias_post_tablesample: If the table alias comes after tablesample.\nDefault: False
  • \n
  • max_errors: Maximum number of error messages to include in a raised ParseError.\nThis is only relevant if error_level is ErrorLevel.RAISE.\nDefault: 3
  • \n
  • null_ordering: Indicates the default null ordering method to use if not explicitly set.\nOptions are \"nulls_are_small\", \"nulls_are_large\", \"nulls_are_last\".\nDefault: \"nulls_are_small\"
  • \n
\n", "bases": "sqlglot.parser.Parser"}, "sqlglot.dialects.mysql.MySQL.Generator": {"fullname": "sqlglot.dialects.mysql.MySQL.Generator", "modulename": "sqlglot.dialects.mysql", "qualname": "MySQL.Generator", "kind": "class", "doc": "

Generator interprets the given syntax tree and produces a SQL string as an output.

\n\n
Arguments:
\n\n
    \n
  • time_mapping (dict): the dictionary of custom time mappings in which the key\nrepresents a python time format and the output the target time format
  • \n
  • time_trie (trie): a trie of the time_mapping keys
  • \n
  • pretty (bool): if set to True the returned string will be formatted. Default: False.
  • \n
  • quote_start (str): specifies which starting character to use to delimit quotes. Default: '.
  • \n
  • quote_end (str): specifies which ending character to use to delimit quotes. Default: '.
  • \n
  • identifier_start (str): specifies which starting character to use to delimit identifiers. Default: \".
  • \n
  • identifier_end (str): specifies which ending character to use to delimit identifiers. Default: \".
  • \n
  • identify (bool | str): 'always': always quote, 'safe': quote identifiers if they don't contain an upcase, True defaults to always.
  • \n
  • normalize (bool): if set to True all identifiers will lower cased
  • \n
  • string_escape (str): specifies a string escape character. Default: '.
  • \n
  • identifier_escape (str): specifies an identifier escape character. Default: \".
  • \n
  • pad (int): determines padding in a formatted string. Default: 2.
  • \n
  • indent (int): determines the size of indentation in a formatted string. Default: 4.
  • \n
  • unnest_column_only (bool): if true unnest table aliases are considered only as column aliases
  • \n
  • normalize_functions (str): normalize function names, \"upper\", \"lower\", or None\nDefault: \"upper\"
  • \n
  • alias_post_tablesample (bool): if the table alias comes after tablesample\nDefault: False
  • \n
  • unsupported_level (ErrorLevel): determines the generator's behavior when it encounters\nunsupported expressions. Default ErrorLevel.WARN.
  • \n
  • null_ordering (str): Indicates the default null ordering method to use if not explicitly set.\nOptions are \"nulls_are_small\", \"nulls_are_large\", \"nulls_are_last\".\nDefault: \"nulls_are_small\"
  • \n
  • max_unsupported (int): Maximum number of unsupported messages to include in a raised UnsupportedError.\nThis is only relevant if unsupported_level is ErrorLevel.RAISE.\nDefault: 3
  • \n
  • leading_comma (bool): if the the comma is leading or trailing in select statements\nDefault: False
  • \n
  • max_text_width: The max number of characters in a segment before creating new lines in pretty mode.\nThe default is on the smaller end because the length only represents a segment and not the true\nline length.\nDefault: 80
  • \n
  • comments: Whether or not to preserve comments in the output SQL code.\nDefault: True
  • \n
\n", "bases": "sqlglot.generator.Generator"}, "sqlglot.dialects.mysql.MySQL.Generator.show_sql": {"fullname": "sqlglot.dialects.mysql.MySQL.Generator.show_sql", "modulename": "sqlglot.dialects.mysql", "qualname": "MySQL.Generator.show_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Show) -> str:", "funcdef": "def"}, "sqlglot.dialects.oracle": {"fullname": "sqlglot.dialects.oracle", "modulename": "sqlglot.dialects.oracle", "kind": "module", "doc": "

\n"}, "sqlglot.dialects.oracle.Oracle": {"fullname": "sqlglot.dialects.oracle.Oracle", "modulename": "sqlglot.dialects.oracle", "qualname": "Oracle", "kind": "class", "doc": "

\n", "bases": "sqlglot.dialects.dialect.Dialect"}, "sqlglot.dialects.oracle.Oracle.Parser": {"fullname": "sqlglot.dialects.oracle.Oracle.Parser", "modulename": "sqlglot.dialects.oracle", "qualname": "Oracle.Parser", "kind": "class", "doc": "

Parser consumes a list of tokens produced by the sqlglot.tokens.Tokenizer and produces\na parsed syntax tree.

\n\n
Arguments:
\n\n
    \n
  • error_level: the desired error level.\nDefault: ErrorLevel.RAISE
  • \n
  • error_message_context: determines the amount of context to capture from a\nquery string when displaying the error message (in number of characters).\nDefault: 50.
  • \n
  • index_offset: Index offset for arrays eg ARRAY[0] vs ARRAY[1] as the head of a list.\nDefault: 0
  • \n
  • alias_post_tablesample: If the table alias comes after tablesample.\nDefault: False
  • \n
  • max_errors: Maximum number of error messages to include in a raised ParseError.\nThis is only relevant if error_level is ErrorLevel.RAISE.\nDefault: 3
  • \n
  • null_ordering: Indicates the default null ordering method to use if not explicitly set.\nOptions are \"nulls_are_small\", \"nulls_are_large\", \"nulls_are_last\".\nDefault: \"nulls_are_small\"
  • \n
\n", "bases": "sqlglot.parser.Parser"}, "sqlglot.dialects.oracle.Oracle.Generator": {"fullname": "sqlglot.dialects.oracle.Oracle.Generator", "modulename": "sqlglot.dialects.oracle", "qualname": "Oracle.Generator", "kind": "class", "doc": "

Generator interprets the given syntax tree and produces a SQL string as an output.

\n\n
Arguments:
\n\n
    \n
  • time_mapping (dict): the dictionary of custom time mappings in which the key\nrepresents a python time format and the output the target time format
  • \n
  • time_trie (trie): a trie of the time_mapping keys
  • \n
  • pretty (bool): if set to True the returned string will be formatted. Default: False.
  • \n
  • quote_start (str): specifies which starting character to use to delimit quotes. Default: '.
  • \n
  • quote_end (str): specifies which ending character to use to delimit quotes. Default: '.
  • \n
  • identifier_start (str): specifies which starting character to use to delimit identifiers. Default: \".
  • \n
  • identifier_end (str): specifies which ending character to use to delimit identifiers. Default: \".
  • \n
  • identify (bool | str): 'always': always quote, 'safe': quote identifiers if they don't contain an upcase, True defaults to always.
  • \n
  • normalize (bool): if set to True all identifiers will lower cased
  • \n
  • string_escape (str): specifies a string escape character. Default: '.
  • \n
  • identifier_escape (str): specifies an identifier escape character. Default: \".
  • \n
  • pad (int): determines padding in a formatted string. Default: 2.
  • \n
  • indent (int): determines the size of indentation in a formatted string. Default: 4.
  • \n
  • unnest_column_only (bool): if true unnest table aliases are considered only as column aliases
  • \n
  • normalize_functions (str): normalize function names, \"upper\", \"lower\", or None\nDefault: \"upper\"
  • \n
  • alias_post_tablesample (bool): if the table alias comes after tablesample\nDefault: False
  • \n
  • unsupported_level (ErrorLevel): determines the generator's behavior when it encounters\nunsupported expressions. Default ErrorLevel.WARN.
  • \n
  • null_ordering (str): Indicates the default null ordering method to use if not explicitly set.\nOptions are \"nulls_are_small\", \"nulls_are_large\", \"nulls_are_last\".\nDefault: \"nulls_are_small\"
  • \n
  • max_unsupported (int): Maximum number of unsupported messages to include in a raised UnsupportedError.\nThis is only relevant if unsupported_level is ErrorLevel.RAISE.\nDefault: 3
  • \n
  • leading_comma (bool): if the the comma is leading or trailing in select statements\nDefault: False
  • \n
  • max_text_width: The max number of characters in a segment before creating new lines in pretty mode.\nThe default is on the smaller end because the length only represents a segment and not the true\nline length.\nDefault: 80
  • \n
  • comments: Whether or not to preserve comments in the output SQL code.\nDefault: True
  • \n
\n", "bases": "sqlglot.generator.Generator"}, "sqlglot.dialects.oracle.Oracle.Generator.offset_sql": {"fullname": "sqlglot.dialects.oracle.Oracle.Generator.offset_sql", "modulename": "sqlglot.dialects.oracle", "qualname": "Oracle.Generator.offset_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Offset) -> str:", "funcdef": "def"}, "sqlglot.dialects.oracle.Oracle.Generator.column_sql": {"fullname": "sqlglot.dialects.oracle.Oracle.Generator.column_sql", "modulename": "sqlglot.dialects.oracle", "qualname": "Oracle.Generator.column_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Column) -> str:", "funcdef": "def"}, "sqlglot.dialects.oracle.Oracle.Generator.xmltable_sql": {"fullname": "sqlglot.dialects.oracle.Oracle.Generator.xmltable_sql", "modulename": "sqlglot.dialects.oracle", "qualname": "Oracle.Generator.xmltable_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.XMLTable) -> str:", "funcdef": "def"}, "sqlglot.dialects.oracle.Oracle.Tokenizer": {"fullname": "sqlglot.dialects.oracle.Oracle.Tokenizer", "modulename": "sqlglot.dialects.oracle", "qualname": "Oracle.Tokenizer", "kind": "class", "doc": "

\n", "bases": "sqlglot.tokens.Tokenizer"}, "sqlglot.dialects.postgres": {"fullname": "sqlglot.dialects.postgres", "modulename": "sqlglot.dialects.postgres", "kind": "module", "doc": "

\n"}, "sqlglot.dialects.postgres.Postgres": {"fullname": "sqlglot.dialects.postgres.Postgres", "modulename": "sqlglot.dialects.postgres", "qualname": "Postgres", "kind": "class", "doc": "

\n", "bases": "sqlglot.dialects.dialect.Dialect"}, "sqlglot.dialects.postgres.Postgres.Tokenizer": {"fullname": "sqlglot.dialects.postgres.Postgres.Tokenizer", "modulename": "sqlglot.dialects.postgres", "qualname": "Postgres.Tokenizer", "kind": "class", "doc": "

\n", "bases": "sqlglot.tokens.Tokenizer"}, "sqlglot.dialects.postgres.Postgres.Parser": {"fullname": "sqlglot.dialects.postgres.Postgres.Parser", "modulename": "sqlglot.dialects.postgres", "qualname": "Postgres.Parser", "kind": "class", "doc": "

Parser consumes a list of tokens produced by the sqlglot.tokens.Tokenizer and produces\na parsed syntax tree.

\n\n
Arguments:
\n\n
    \n
  • error_level: the desired error level.\nDefault: ErrorLevel.RAISE
  • \n
  • error_message_context: determines the amount of context to capture from a\nquery string when displaying the error message (in number of characters).\nDefault: 50.
  • \n
  • index_offset: Index offset for arrays eg ARRAY[0] vs ARRAY[1] as the head of a list.\nDefault: 0
  • \n
  • alias_post_tablesample: If the table alias comes after tablesample.\nDefault: False
  • \n
  • max_errors: Maximum number of error messages to include in a raised ParseError.\nThis is only relevant if error_level is ErrorLevel.RAISE.\nDefault: 3
  • \n
  • null_ordering: Indicates the default null ordering method to use if not explicitly set.\nOptions are \"nulls_are_small\", \"nulls_are_large\", \"nulls_are_last\".\nDefault: \"nulls_are_small\"
  • \n
\n", "bases": "sqlglot.parser.Parser"}, "sqlglot.dialects.postgres.Postgres.Generator": {"fullname": "sqlglot.dialects.postgres.Postgres.Generator", "modulename": "sqlglot.dialects.postgres", "qualname": "Postgres.Generator", "kind": "class", "doc": "

Generator interprets the given syntax tree and produces a SQL string as an output.

\n\n
Arguments:
\n\n
    \n
  • time_mapping (dict): the dictionary of custom time mappings in which the key\nrepresents a python time format and the output the target time format
  • \n
  • time_trie (trie): a trie of the time_mapping keys
  • \n
  • pretty (bool): if set to True the returned string will be formatted. Default: False.
  • \n
  • quote_start (str): specifies which starting character to use to delimit quotes. Default: '.
  • \n
  • quote_end (str): specifies which ending character to use to delimit quotes. Default: '.
  • \n
  • identifier_start (str): specifies which starting character to use to delimit identifiers. Default: \".
  • \n
  • identifier_end (str): specifies which ending character to use to delimit identifiers. Default: \".
  • \n
  • identify (bool | str): 'always': always quote, 'safe': quote identifiers if they don't contain an upcase, True defaults to always.
  • \n
  • normalize (bool): if set to True all identifiers will lower cased
  • \n
  • string_escape (str): specifies a string escape character. Default: '.
  • \n
  • identifier_escape (str): specifies an identifier escape character. Default: \".
  • \n
  • pad (int): determines padding in a formatted string. Default: 2.
  • \n
  • indent (int): determines the size of indentation in a formatted string. Default: 4.
  • \n
  • unnest_column_only (bool): if true unnest table aliases are considered only as column aliases
  • \n
  • normalize_functions (str): normalize function names, \"upper\", \"lower\", or None\nDefault: \"upper\"
  • \n
  • alias_post_tablesample (bool): if the table alias comes after tablesample\nDefault: False
  • \n
  • unsupported_level (ErrorLevel): determines the generator's behavior when it encounters\nunsupported expressions. Default ErrorLevel.WARN.
  • \n
  • null_ordering (str): Indicates the default null ordering method to use if not explicitly set.\nOptions are \"nulls_are_small\", \"nulls_are_large\", \"nulls_are_last\".\nDefault: \"nulls_are_small\"
  • \n
  • max_unsupported (int): Maximum number of unsupported messages to include in a raised UnsupportedError.\nThis is only relevant if unsupported_level is ErrorLevel.RAISE.\nDefault: 3
  • \n
  • leading_comma (bool): if the the comma is leading or trailing in select statements\nDefault: False
  • \n
  • max_text_width: The max number of characters in a segment before creating new lines in pretty mode.\nThe default is on the smaller end because the length only represents a segment and not the true\nline length.\nDefault: 80
  • \n
  • comments: Whether or not to preserve comments in the output SQL code.\nDefault: True
  • \n
\n", "bases": "sqlglot.generator.Generator"}, "sqlglot.dialects.presto": {"fullname": "sqlglot.dialects.presto", "modulename": "sqlglot.dialects.presto", "kind": "module", "doc": "

\n"}, "sqlglot.dialects.presto.Presto": {"fullname": "sqlglot.dialects.presto.Presto", "modulename": "sqlglot.dialects.presto", "qualname": "Presto", "kind": "class", "doc": "

\n", "bases": "sqlglot.dialects.dialect.Dialect"}, "sqlglot.dialects.presto.Presto.Tokenizer": {"fullname": "sqlglot.dialects.presto.Presto.Tokenizer", "modulename": "sqlglot.dialects.presto", "qualname": "Presto.Tokenizer", "kind": "class", "doc": "

\n", "bases": "sqlglot.tokens.Tokenizer"}, "sqlglot.dialects.presto.Presto.Parser": {"fullname": "sqlglot.dialects.presto.Presto.Parser", "modulename": "sqlglot.dialects.presto", "qualname": "Presto.Parser", "kind": "class", "doc": "

Parser consumes a list of tokens produced by the sqlglot.tokens.Tokenizer and produces\na parsed syntax tree.

\n\n
Arguments:
\n\n
    \n
  • error_level: the desired error level.\nDefault: ErrorLevel.RAISE
  • \n
  • error_message_context: determines the amount of context to capture from a\nquery string when displaying the error message (in number of characters).\nDefault: 50.
  • \n
  • index_offset: Index offset for arrays eg ARRAY[0] vs ARRAY[1] as the head of a list.\nDefault: 0
  • \n
  • alias_post_tablesample: If the table alias comes after tablesample.\nDefault: False
  • \n
  • max_errors: Maximum number of error messages to include in a raised ParseError.\nThis is only relevant if error_level is ErrorLevel.RAISE.\nDefault: 3
  • \n
  • null_ordering: Indicates the default null ordering method to use if not explicitly set.\nOptions are \"nulls_are_small\", \"nulls_are_large\", \"nulls_are_last\".\nDefault: \"nulls_are_small\"
  • \n
\n", "bases": "sqlglot.parser.Parser"}, "sqlglot.dialects.presto.Presto.Generator": {"fullname": "sqlglot.dialects.presto.Presto.Generator", "modulename": "sqlglot.dialects.presto", "qualname": "Presto.Generator", "kind": "class", "doc": "

Generator interprets the given syntax tree and produces a SQL string as an output.

\n\n
Arguments:
\n\n
    \n
  • time_mapping (dict): the dictionary of custom time mappings in which the key\nrepresents a python time format and the output the target time format
  • \n
  • time_trie (trie): a trie of the time_mapping keys
  • \n
  • pretty (bool): if set to True the returned string will be formatted. Default: False.
  • \n
  • quote_start (str): specifies which starting character to use to delimit quotes. Default: '.
  • \n
  • quote_end (str): specifies which ending character to use to delimit quotes. Default: '.
  • \n
  • identifier_start (str): specifies which starting character to use to delimit identifiers. Default: \".
  • \n
  • identifier_end (str): specifies which ending character to use to delimit identifiers. Default: \".
  • \n
  • identify (bool | str): 'always': always quote, 'safe': quote identifiers if they don't contain an upcase, True defaults to always.
  • \n
  • normalize (bool): if set to True all identifiers will lower cased
  • \n
  • string_escape (str): specifies a string escape character. Default: '.
  • \n
  • identifier_escape (str): specifies an identifier escape character. Default: \".
  • \n
  • pad (int): determines padding in a formatted string. Default: 2.
  • \n
  • indent (int): determines the size of indentation in a formatted string. Default: 4.
  • \n
  • unnest_column_only (bool): if true unnest table aliases are considered only as column aliases
  • \n
  • normalize_functions (str): normalize function names, \"upper\", \"lower\", or None\nDefault: \"upper\"
  • \n
  • alias_post_tablesample (bool): if the table alias comes after tablesample\nDefault: False
  • \n
  • unsupported_level (ErrorLevel): determines the generator's behavior when it encounters\nunsupported expressions. Default ErrorLevel.WARN.
  • \n
  • null_ordering (str): Indicates the default null ordering method to use if not explicitly set.\nOptions are \"nulls_are_small\", \"nulls_are_large\", \"nulls_are_last\".\nDefault: \"nulls_are_small\"
  • \n
  • max_unsupported (int): Maximum number of unsupported messages to include in a raised UnsupportedError.\nThis is only relevant if unsupported_level is ErrorLevel.RAISE.\nDefault: 3
  • \n
  • leading_comma (bool): if the the comma is leading or trailing in select statements\nDefault: False
  • \n
  • max_text_width: The max number of characters in a segment before creating new lines in pretty mode.\nThe default is on the smaller end because the length only represents a segment and not the true\nline length.\nDefault: 80
  • \n
  • comments: Whether or not to preserve comments in the output SQL code.\nDefault: True
  • \n
\n", "bases": "sqlglot.generator.Generator"}, "sqlglot.dialects.presto.Presto.Generator.interval_sql": {"fullname": "sqlglot.dialects.presto.Presto.Generator.interval_sql", "modulename": "sqlglot.dialects.presto", "qualname": "Presto.Generator.interval_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Interval) -> str:", "funcdef": "def"}, "sqlglot.dialects.presto.Presto.Generator.transaction_sql": {"fullname": "sqlglot.dialects.presto.Presto.Generator.transaction_sql", "modulename": "sqlglot.dialects.presto", "qualname": "Presto.Generator.transaction_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Transaction) -> str:", "funcdef": "def"}, "sqlglot.dialects.redshift": {"fullname": "sqlglot.dialects.redshift", "modulename": "sqlglot.dialects.redshift", "kind": "module", "doc": "

\n"}, "sqlglot.dialects.redshift.Redshift": {"fullname": "sqlglot.dialects.redshift.Redshift", "modulename": "sqlglot.dialects.redshift", "qualname": "Redshift", "kind": "class", "doc": "

\n", "bases": "sqlglot.dialects.postgres.Postgres"}, "sqlglot.dialects.redshift.Redshift.Parser": {"fullname": "sqlglot.dialects.redshift.Redshift.Parser", "modulename": "sqlglot.dialects.redshift", "qualname": "Redshift.Parser", "kind": "class", "doc": "

Parser consumes a list of tokens produced by the sqlglot.tokens.Tokenizer and produces\na parsed syntax tree.

\n\n
Arguments:
\n\n
    \n
  • error_level: the desired error level.\nDefault: ErrorLevel.RAISE
  • \n
  • error_message_context: determines the amount of context to capture from a\nquery string when displaying the error message (in number of characters).\nDefault: 50.
  • \n
  • index_offset: Index offset for arrays eg ARRAY[0] vs ARRAY[1] as the head of a list.\nDefault: 0
  • \n
  • alias_post_tablesample: If the table alias comes after tablesample.\nDefault: False
  • \n
  • max_errors: Maximum number of error messages to include in a raised ParseError.\nThis is only relevant if error_level is ErrorLevel.RAISE.\nDefault: 3
  • \n
  • null_ordering: Indicates the default null ordering method to use if not explicitly set.\nOptions are \"nulls_are_small\", \"nulls_are_large\", \"nulls_are_last\".\nDefault: \"nulls_are_small\"
  • \n
\n", "bases": "sqlglot.dialects.postgres.Postgres.Parser"}, "sqlglot.dialects.redshift.Redshift.Tokenizer": {"fullname": "sqlglot.dialects.redshift.Redshift.Tokenizer", "modulename": "sqlglot.dialects.redshift", "qualname": "Redshift.Tokenizer", "kind": "class", "doc": "

\n", "bases": "sqlglot.dialects.postgres.Postgres.Tokenizer"}, "sqlglot.dialects.redshift.Redshift.Generator": {"fullname": "sqlglot.dialects.redshift.Redshift.Generator", "modulename": "sqlglot.dialects.redshift", "qualname": "Redshift.Generator", "kind": "class", "doc": "

Generator interprets the given syntax tree and produces a SQL string as an output.

\n\n
Arguments:
\n\n
    \n
  • time_mapping (dict): the dictionary of custom time mappings in which the key\nrepresents a python time format and the output the target time format
  • \n
  • time_trie (trie): a trie of the time_mapping keys
  • \n
  • pretty (bool): if set to True the returned string will be formatted. Default: False.
  • \n
  • quote_start (str): specifies which starting character to use to delimit quotes. Default: '.
  • \n
  • quote_end (str): specifies which ending character to use to delimit quotes. Default: '.
  • \n
  • identifier_start (str): specifies which starting character to use to delimit identifiers. Default: \".
  • \n
  • identifier_end (str): specifies which ending character to use to delimit identifiers. Default: \".
  • \n
  • identify (bool | str): 'always': always quote, 'safe': quote identifiers if they don't contain an upcase, True defaults to always.
  • \n
  • normalize (bool): if set to True all identifiers will lower cased
  • \n
  • string_escape (str): specifies a string escape character. Default: '.
  • \n
  • identifier_escape (str): specifies an identifier escape character. Default: \".
  • \n
  • pad (int): determines padding in a formatted string. Default: 2.
  • \n
  • indent (int): determines the size of indentation in a formatted string. Default: 4.
  • \n
  • unnest_column_only (bool): if true unnest table aliases are considered only as column aliases
  • \n
  • normalize_functions (str): normalize function names, \"upper\", \"lower\", or None\nDefault: \"upper\"
  • \n
  • alias_post_tablesample (bool): if the table alias comes after tablesample\nDefault: False
  • \n
  • unsupported_level (ErrorLevel): determines the generator's behavior when it encounters\nunsupported expressions. Default ErrorLevel.WARN.
  • \n
  • null_ordering (str): Indicates the default null ordering method to use if not explicitly set.\nOptions are \"nulls_are_small\", \"nulls_are_large\", \"nulls_are_last\".\nDefault: \"nulls_are_small\"
  • \n
  • max_unsupported (int): Maximum number of unsupported messages to include in a raised UnsupportedError.\nThis is only relevant if unsupported_level is ErrorLevel.RAISE.\nDefault: 3
  • \n
  • leading_comma (bool): if the the comma is leading or trailing in select statements\nDefault: False
  • \n
  • max_text_width: The max number of characters in a segment before creating new lines in pretty mode.\nThe default is on the smaller end because the length only represents a segment and not the true\nline length.\nDefault: 80
  • \n
  • comments: Whether or not to preserve comments in the output SQL code.\nDefault: True
  • \n
\n", "bases": "sqlglot.dialects.postgres.Postgres.Generator"}, "sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"fullname": "sqlglot.dialects.redshift.Redshift.Generator.values_sql", "modulename": "sqlglot.dialects.redshift", "qualname": "Redshift.Generator.values_sql", "kind": "function", "doc": "

Converts VALUES... expression into a series of unions.

\n\n

Note: If you have a lot of unions then this will result in a large number of recursive statements to\nevaluate the expression. You may need to increase sys.setrecursionlimit to run and it can also be\nvery slow.

\n", "signature": "(self, expression: sqlglot.expressions.Values) -> str:", "funcdef": "def"}, "sqlglot.dialects.redshift.Redshift.Generator.with_properties": {"fullname": "sqlglot.dialects.redshift.Redshift.Generator.with_properties", "modulename": "sqlglot.dialects.redshift", "qualname": "Redshift.Generator.with_properties", "kind": "function", "doc": "

Redshift doesn't have WITH as part of their with_properties so we remove it

\n", "signature": "(self, properties: sqlglot.expressions.Properties) -> str:", "funcdef": "def"}, "sqlglot.dialects.redshift.Redshift.Generator.renametable_sql": {"fullname": "sqlglot.dialects.redshift.Redshift.Generator.renametable_sql", "modulename": "sqlglot.dialects.redshift", "qualname": "Redshift.Generator.renametable_sql", "kind": "function", "doc": "

Redshift only supports defining the table name itself (not the db) when renaming tables

\n", "signature": "(self, expression: sqlglot.expressions.RenameTable) -> str:", "funcdef": "def"}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"fullname": "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql", "modulename": "sqlglot.dialects.redshift", "qualname": "Redshift.Generator.datatype_sql", "kind": "function", "doc": "

Redshift converts the TEXT data type to VARCHAR(255) by default when people more generally mean\nVARCHAR of max length which is VARCHAR(max) in Redshift. Therefore if we get a TEXT data type\nwithout precision we convert it to VARCHAR(max) and if it does have precision then we just convert\nTEXT to VARCHAR.

\n", "signature": "(self, expression: sqlglot.expressions.DataType) -> str:", "funcdef": "def"}, "sqlglot.dialects.snowflake": {"fullname": "sqlglot.dialects.snowflake", "modulename": "sqlglot.dialects.snowflake", "kind": "module", "doc": "

\n"}, "sqlglot.dialects.snowflake.Snowflake": {"fullname": "sqlglot.dialects.snowflake.Snowflake", "modulename": "sqlglot.dialects.snowflake", "qualname": "Snowflake", "kind": "class", "doc": "

\n", "bases": "sqlglot.dialects.dialect.Dialect"}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"fullname": "sqlglot.dialects.snowflake.Snowflake.Parser", "modulename": "sqlglot.dialects.snowflake", "qualname": "Snowflake.Parser", "kind": "class", "doc": "

Parser consumes a list of tokens produced by the sqlglot.tokens.Tokenizer and produces\na parsed syntax tree.

\n\n
Arguments:
\n\n
    \n
  • error_level: the desired error level.\nDefault: ErrorLevel.RAISE
  • \n
  • error_message_context: determines the amount of context to capture from a\nquery string when displaying the error message (in number of characters).\nDefault: 50.
  • \n
  • index_offset: Index offset for arrays eg ARRAY[0] vs ARRAY[1] as the head of a list.\nDefault: 0
  • \n
  • alias_post_tablesample: If the table alias comes after tablesample.\nDefault: False
  • \n
  • max_errors: Maximum number of error messages to include in a raised ParseError.\nThis is only relevant if error_level is ErrorLevel.RAISE.\nDefault: 3
  • \n
  • null_ordering: Indicates the default null ordering method to use if not explicitly set.\nOptions are \"nulls_are_small\", \"nulls_are_large\", \"nulls_are_last\".\nDefault: \"nulls_are_small\"
  • \n
\n", "bases": "sqlglot.parser.Parser"}, "sqlglot.dialects.snowflake.Snowflake.Tokenizer": {"fullname": "sqlglot.dialects.snowflake.Snowflake.Tokenizer", "modulename": "sqlglot.dialects.snowflake", "qualname": "Snowflake.Tokenizer", "kind": "class", "doc": "

\n", "bases": "sqlglot.tokens.Tokenizer"}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"fullname": "sqlglot.dialects.snowflake.Snowflake.Generator", "modulename": "sqlglot.dialects.snowflake", "qualname": "Snowflake.Generator", "kind": "class", "doc": "

Generator interprets the given syntax tree and produces a SQL string as an output.

\n\n
Arguments:
\n\n
    \n
  • time_mapping (dict): the dictionary of custom time mappings in which the key\nrepresents a python time format and the output the target time format
  • \n
  • time_trie (trie): a trie of the time_mapping keys
  • \n
  • pretty (bool): if set to True the returned string will be formatted. Default: False.
  • \n
  • quote_start (str): specifies which starting character to use to delimit quotes. Default: '.
  • \n
  • quote_end (str): specifies which ending character to use to delimit quotes. Default: '.
  • \n
  • identifier_start (str): specifies which starting character to use to delimit identifiers. Default: \".
  • \n
  • identifier_end (str): specifies which ending character to use to delimit identifiers. Default: \".
  • \n
  • identify (bool | str): 'always': always quote, 'safe': quote identifiers if they don't contain an upcase, True defaults to always.
  • \n
  • normalize (bool): if set to True all identifiers will lower cased
  • \n
  • string_escape (str): specifies a string escape character. Default: '.
  • \n
  • identifier_escape (str): specifies an identifier escape character. Default: \".
  • \n
  • pad (int): determines padding in a formatted string. Default: 2.
  • \n
  • indent (int): determines the size of indentation in a formatted string. Default: 4.
  • \n
  • unnest_column_only (bool): if true unnest table aliases are considered only as column aliases
  • \n
  • normalize_functions (str): normalize function names, \"upper\", \"lower\", or None\nDefault: \"upper\"
  • \n
  • alias_post_tablesample (bool): if the table alias comes after tablesample\nDefault: False
  • \n
  • unsupported_level (ErrorLevel): determines the generator's behavior when it encounters\nunsupported expressions. Default ErrorLevel.WARN.
  • \n
  • null_ordering (str): Indicates the default null ordering method to use if not explicitly set.\nOptions are \"nulls_are_small\", \"nulls_are_large\", \"nulls_are_last\".\nDefault: \"nulls_are_small\"
  • \n
  • max_unsupported (int): Maximum number of unsupported messages to include in a raised UnsupportedError.\nThis is only relevant if unsupported_level is ErrorLevel.RAISE.\nDefault: 3
  • \n
  • leading_comma (bool): if the the comma is leading or trailing in select statements\nDefault: False
  • \n
  • max_text_width: The max number of characters in a segment before creating new lines in pretty mode.\nThe default is on the smaller end because the length only represents a segment and not the true\nline length.\nDefault: 80
  • \n
  • comments: Whether or not to preserve comments in the output SQL code.\nDefault: True
  • \n
\n", "bases": "sqlglot.generator.Generator"}, "sqlglot.dialects.snowflake.Snowflake.Generator.except_op": {"fullname": "sqlglot.dialects.snowflake.Snowflake.Generator.except_op", "modulename": "sqlglot.dialects.snowflake", "qualname": "Snowflake.Generator.except_op", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Except) -> str:", "funcdef": "def"}, "sqlglot.dialects.snowflake.Snowflake.Generator.intersect_op": {"fullname": "sqlglot.dialects.snowflake.Snowflake.Generator.intersect_op", "modulename": "sqlglot.dialects.snowflake", "qualname": "Snowflake.Generator.intersect_op", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Intersect) -> str:", "funcdef": "def"}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"fullname": "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql", "modulename": "sqlglot.dialects.snowflake", "qualname": "Snowflake.Generator.values_sql", "kind": "function", "doc": "

Due to a bug in Snowflake we want to make sure that all columns in a VALUES table alias are unquoted.

\n\n

We also want to make sure that after we find matches where we need to unquote a column that we prevent users\nfrom adding quotes to the column by using the identify argument when generating the SQL.

\n", "signature": "(self, expression: sqlglot.expressions.Values) -> str:", "funcdef": "def"}, "sqlglot.dialects.snowflake.Snowflake.Generator.settag_sql": {"fullname": "sqlglot.dialects.snowflake.Snowflake.Generator.settag_sql", "modulename": "sqlglot.dialects.snowflake", "qualname": "Snowflake.Generator.settag_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.SetTag) -> str:", "funcdef": "def"}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"fullname": "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql", "modulename": "sqlglot.dialects.snowflake", "qualname": "Snowflake.Generator.select_sql", "kind": "function", "doc": "

Due to a bug in Snowflake we want to make sure that all columns in a VALUES table alias are unquoted and also\nthat all columns in a SELECT are unquoted. We also want to make sure that after we find matches where we need\nto unquote a column that we prevent users from adding quotes to the column by using the identify argument when\ngenerating the SQL.

\n\n

Note: We make an assumption that any columns referenced in a VALUES expression should be unquoted throughout the\nexpression. This might not be true in a case where the same column name can be sourced from another table that can\nproperly quote but should be true in most cases.

\n", "signature": "(self, expression: sqlglot.expressions.Select) -> str:", "funcdef": "def"}, "sqlglot.dialects.snowflake.Snowflake.Generator.describe_sql": {"fullname": "sqlglot.dialects.snowflake.Snowflake.Generator.describe_sql", "modulename": "sqlglot.dialects.snowflake", "qualname": "Snowflake.Generator.describe_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Describe) -> str:", "funcdef": "def"}, "sqlglot.dialects.snowflake.Snowflake.Generator.generatedasidentitycolumnconstraint_sql": {"fullname": "sqlglot.dialects.snowflake.Snowflake.Generator.generatedasidentitycolumnconstraint_sql", "modulename": "sqlglot.dialects.snowflake", "qualname": "Snowflake.Generator.generatedasidentitycolumnconstraint_sql", "kind": "function", "doc": "

\n", "signature": "(\tself,\texpression: sqlglot.expressions.GeneratedAsIdentityColumnConstraint) -> str:", "funcdef": "def"}, "sqlglot.dialects.spark": {"fullname": "sqlglot.dialects.spark", "modulename": "sqlglot.dialects.spark", "kind": "module", "doc": "

\n"}, "sqlglot.dialects.spark.Spark": {"fullname": "sqlglot.dialects.spark.Spark", "modulename": "sqlglot.dialects.spark", "qualname": "Spark", "kind": "class", "doc": "

\n", "bases": "sqlglot.dialects.hive.Hive"}, "sqlglot.dialects.spark.Spark.Parser": {"fullname": "sqlglot.dialects.spark.Spark.Parser", "modulename": "sqlglot.dialects.spark", "qualname": "Spark.Parser", "kind": "class", "doc": "

Parser consumes a list of tokens produced by the sqlglot.tokens.Tokenizer and produces\na parsed syntax tree.

\n\n
Arguments:
\n\n
    \n
  • error_level: the desired error level.\nDefault: ErrorLevel.RAISE
  • \n
  • error_message_context: determines the amount of context to capture from a\nquery string when displaying the error message (in number of characters).\nDefault: 50.
  • \n
  • index_offset: Index offset for arrays eg ARRAY[0] vs ARRAY[1] as the head of a list.\nDefault: 0
  • \n
  • alias_post_tablesample: If the table alias comes after tablesample.\nDefault: False
  • \n
  • max_errors: Maximum number of error messages to include in a raised ParseError.\nThis is only relevant if error_level is ErrorLevel.RAISE.\nDefault: 3
  • \n
  • null_ordering: Indicates the default null ordering method to use if not explicitly set.\nOptions are \"nulls_are_small\", \"nulls_are_large\", \"nulls_are_last\".\nDefault: \"nulls_are_small\"
  • \n
\n", "bases": "sqlglot.dialects.hive.Hive.Parser"}, "sqlglot.dialects.spark.Spark.Generator": {"fullname": "sqlglot.dialects.spark.Spark.Generator", "modulename": "sqlglot.dialects.spark", "qualname": "Spark.Generator", "kind": "class", "doc": "

Generator interprets the given syntax tree and produces a SQL string as an output.

\n\n
Arguments:
\n\n
    \n
  • time_mapping (dict): the dictionary of custom time mappings in which the key\nrepresents a python time format and the output the target time format
  • \n
  • time_trie (trie): a trie of the time_mapping keys
  • \n
  • pretty (bool): if set to True the returned string will be formatted. Default: False.
  • \n
  • quote_start (str): specifies which starting character to use to delimit quotes. Default: '.
  • \n
  • quote_end (str): specifies which ending character to use to delimit quotes. Default: '.
  • \n
  • identifier_start (str): specifies which starting character to use to delimit identifiers. Default: \".
  • \n
  • identifier_end (str): specifies which ending character to use to delimit identifiers. Default: \".
  • \n
  • identify (bool | str): 'always': always quote, 'safe': quote identifiers if they don't contain an upcase, True defaults to always.
  • \n
  • normalize (bool): if set to True all identifiers will lower cased
  • \n
  • string_escape (str): specifies a string escape character. Default: '.
  • \n
  • identifier_escape (str): specifies an identifier escape character. Default: \".
  • \n
  • pad (int): determines padding in a formatted string. Default: 2.
  • \n
  • indent (int): determines the size of indentation in a formatted string. Default: 4.
  • \n
  • unnest_column_only (bool): if true unnest table aliases are considered only as column aliases
  • \n
  • normalize_functions (str): normalize function names, \"upper\", \"lower\", or None\nDefault: \"upper\"
  • \n
  • alias_post_tablesample (bool): if the table alias comes after tablesample\nDefault: False
  • \n
  • unsupported_level (ErrorLevel): determines the generator's behavior when it encounters\nunsupported expressions. Default ErrorLevel.WARN.
  • \n
  • null_ordering (str): Indicates the default null ordering method to use if not explicitly set.\nOptions are \"nulls_are_small\", \"nulls_are_large\", \"nulls_are_last\".\nDefault: \"nulls_are_small\"
  • \n
  • max_unsupported (int): Maximum number of unsupported messages to include in a raised UnsupportedError.\nThis is only relevant if unsupported_level is ErrorLevel.RAISE.\nDefault: 3
  • \n
  • leading_comma (bool): if the the comma is leading or trailing in select statements\nDefault: False
  • \n
  • max_text_width: The max number of characters in a segment before creating new lines in pretty mode.\nThe default is on the smaller end because the length only represents a segment and not the true\nline length.\nDefault: 80
  • \n
  • comments: Whether or not to preserve comments in the output SQL code.\nDefault: True
  • \n
\n", "bases": "sqlglot.dialects.hive.Hive.Generator"}, "sqlglot.dialects.spark.Spark.Generator.cast_sql": {"fullname": "sqlglot.dialects.spark.Spark.Generator.cast_sql", "modulename": "sqlglot.dialects.spark", "qualname": "Spark.Generator.cast_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Cast) -> str:", "funcdef": "def"}, "sqlglot.dialects.spark.Spark.Tokenizer": {"fullname": "sqlglot.dialects.spark.Spark.Tokenizer", "modulename": "sqlglot.dialects.spark", "qualname": "Spark.Tokenizer", "kind": "class", "doc": "

\n", "bases": "sqlglot.dialects.hive.Hive.Tokenizer"}, "sqlglot.dialects.sqlite": {"fullname": "sqlglot.dialects.sqlite", "modulename": "sqlglot.dialects.sqlite", "kind": "module", "doc": "

\n"}, "sqlglot.dialects.sqlite.SQLite": {"fullname": "sqlglot.dialects.sqlite.SQLite", "modulename": "sqlglot.dialects.sqlite", "qualname": "SQLite", "kind": "class", "doc": "

\n", "bases": "sqlglot.dialects.dialect.Dialect"}, "sqlglot.dialects.sqlite.SQLite.Tokenizer": {"fullname": "sqlglot.dialects.sqlite.SQLite.Tokenizer", "modulename": "sqlglot.dialects.sqlite", "qualname": "SQLite.Tokenizer", "kind": "class", "doc": "

\n", "bases": "sqlglot.tokens.Tokenizer"}, "sqlglot.dialects.sqlite.SQLite.Parser": {"fullname": "sqlglot.dialects.sqlite.SQLite.Parser", "modulename": "sqlglot.dialects.sqlite", "qualname": "SQLite.Parser", "kind": "class", "doc": "

Parser consumes a list of tokens produced by the sqlglot.tokens.Tokenizer and produces\na parsed syntax tree.

\n\n
Arguments:
\n\n
    \n
  • error_level: the desired error level.\nDefault: ErrorLevel.RAISE
  • \n
  • error_message_context: determines the amount of context to capture from a\nquery string when displaying the error message (in number of characters).\nDefault: 50.
  • \n
  • index_offset: Index offset for arrays eg ARRAY[0] vs ARRAY[1] as the head of a list.\nDefault: 0
  • \n
  • alias_post_tablesample: If the table alias comes after tablesample.\nDefault: False
  • \n
  • max_errors: Maximum number of error messages to include in a raised ParseError.\nThis is only relevant if error_level is ErrorLevel.RAISE.\nDefault: 3
  • \n
  • null_ordering: Indicates the default null ordering method to use if not explicitly set.\nOptions are \"nulls_are_small\", \"nulls_are_large\", \"nulls_are_last\".\nDefault: \"nulls_are_small\"
  • \n
\n", "bases": "sqlglot.parser.Parser"}, "sqlglot.dialects.sqlite.SQLite.Generator": {"fullname": "sqlglot.dialects.sqlite.SQLite.Generator", "modulename": "sqlglot.dialects.sqlite", "qualname": "SQLite.Generator", "kind": "class", "doc": "

Generator interprets the given syntax tree and produces a SQL string as an output.

\n\n
Arguments:
\n\n
    \n
  • time_mapping (dict): the dictionary of custom time mappings in which the key\nrepresents a python time format and the output the target time format
  • \n
  • time_trie (trie): a trie of the time_mapping keys
  • \n
  • pretty (bool): if set to True the returned string will be formatted. Default: False.
  • \n
  • quote_start (str): specifies which starting character to use to delimit quotes. Default: '.
  • \n
  • quote_end (str): specifies which ending character to use to delimit quotes. Default: '.
  • \n
  • identifier_start (str): specifies which starting character to use to delimit identifiers. Default: \".
  • \n
  • identifier_end (str): specifies which ending character to use to delimit identifiers. Default: \".
  • \n
  • identify (bool | str): 'always': always quote, 'safe': quote identifiers if they don't contain an upcase, True defaults to always.
  • \n
  • normalize (bool): if set to True all identifiers will lower cased
  • \n
  • string_escape (str): specifies a string escape character. Default: '.
  • \n
  • identifier_escape (str): specifies an identifier escape character. Default: \".
  • \n
  • pad (int): determines padding in a formatted string. Default: 2.
  • \n
  • indent (int): determines the size of indentation in a formatted string. Default: 4.
  • \n
  • unnest_column_only (bool): if true unnest table aliases are considered only as column aliases
  • \n
  • normalize_functions (str): normalize function names, \"upper\", \"lower\", or None\nDefault: \"upper\"
  • \n
  • alias_post_tablesample (bool): if the table alias comes after tablesample\nDefault: False
  • \n
  • unsupported_level (ErrorLevel): determines the generator's behavior when it encounters\nunsupported expressions. Default ErrorLevel.WARN.
  • \n
  • null_ordering (str): Indicates the default null ordering method to use if not explicitly set.\nOptions are \"nulls_are_small\", \"nulls_are_large\", \"nulls_are_last\".\nDefault: \"nulls_are_small\"
  • \n
  • max_unsupported (int): Maximum number of unsupported messages to include in a raised UnsupportedError.\nThis is only relevant if unsupported_level is ErrorLevel.RAISE.\nDefault: 3
  • \n
  • leading_comma (bool): if the the comma is leading or trailing in select statements\nDefault: False
  • \n
  • max_text_width: The max number of characters in a segment before creating new lines in pretty mode.\nThe default is on the smaller end because the length only represents a segment and not the true\nline length.\nDefault: 80
  • \n
  • comments: Whether or not to preserve comments in the output SQL code.\nDefault: True
  • \n
\n", "bases": "sqlglot.generator.Generator"}, "sqlglot.dialects.sqlite.SQLite.Generator.cast_sql": {"fullname": "sqlglot.dialects.sqlite.SQLite.Generator.cast_sql", "modulename": "sqlglot.dialects.sqlite", "qualname": "SQLite.Generator.cast_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Cast) -> str:", "funcdef": "def"}, "sqlglot.dialects.sqlite.SQLite.Generator.datediff_sql": {"fullname": "sqlglot.dialects.sqlite.SQLite.Generator.datediff_sql", "modulename": "sqlglot.dialects.sqlite", "qualname": "SQLite.Generator.datediff_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.DateDiff) -> str:", "funcdef": "def"}, "sqlglot.dialects.sqlite.SQLite.Generator.groupconcat_sql": {"fullname": "sqlglot.dialects.sqlite.SQLite.Generator.groupconcat_sql", "modulename": "sqlglot.dialects.sqlite", "qualname": "SQLite.Generator.groupconcat_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression):", "funcdef": "def"}, "sqlglot.dialects.sqlite.SQLite.Generator.least_sql": {"fullname": "sqlglot.dialects.sqlite.SQLite.Generator.least_sql", "modulename": "sqlglot.dialects.sqlite", "qualname": "SQLite.Generator.least_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Least) -> str:", "funcdef": "def"}, "sqlglot.dialects.sqlite.SQLite.Generator.transaction_sql": {"fullname": "sqlglot.dialects.sqlite.SQLite.Generator.transaction_sql", "modulename": "sqlglot.dialects.sqlite", "qualname": "SQLite.Generator.transaction_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Transaction) -> str:", "funcdef": "def"}, "sqlglot.dialects.starrocks": {"fullname": "sqlglot.dialects.starrocks", "modulename": "sqlglot.dialects.starrocks", "kind": "module", "doc": "

\n"}, "sqlglot.dialects.starrocks.StarRocks": {"fullname": "sqlglot.dialects.starrocks.StarRocks", "modulename": "sqlglot.dialects.starrocks", "qualname": "StarRocks", "kind": "class", "doc": "

\n", "bases": "sqlglot.dialects.mysql.MySQL"}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"fullname": "sqlglot.dialects.starrocks.StarRocks.Parser", "modulename": "sqlglot.dialects.starrocks", "qualname": "StarRocks.Parser", "kind": "class", "doc": "

Parser consumes a list of tokens produced by the sqlglot.tokens.Tokenizer and produces\na parsed syntax tree.

\n\n
Arguments:
\n\n
    \n
  • error_level: the desired error level.\nDefault: ErrorLevel.RAISE
  • \n
  • error_message_context: determines the amount of context to capture from a\nquery string when displaying the error message (in number of characters).\nDefault: 50.
  • \n
  • index_offset: Index offset for arrays eg ARRAY[0] vs ARRAY[1] as the head of a list.\nDefault: 0
  • \n
  • alias_post_tablesample: If the table alias comes after tablesample.\nDefault: False
  • \n
  • max_errors: Maximum number of error messages to include in a raised ParseError.\nThis is only relevant if error_level is ErrorLevel.RAISE.\nDefault: 3
  • \n
  • null_ordering: Indicates the default null ordering method to use if not explicitly set.\nOptions are \"nulls_are_small\", \"nulls_are_large\", \"nulls_are_last\".\nDefault: \"nulls_are_small\"
  • \n
\n", "bases": "sqlglot.dialects.mysql.MySQL.Parser"}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"fullname": "sqlglot.dialects.starrocks.StarRocks.Generator", "modulename": "sqlglot.dialects.starrocks", "qualname": "StarRocks.Generator", "kind": "class", "doc": "

Generator interprets the given syntax tree and produces a SQL string as an output.

\n\n
Arguments:
\n\n
    \n
  • time_mapping (dict): the dictionary of custom time mappings in which the key\nrepresents a python time format and the output the target time format
  • \n
  • time_trie (trie): a trie of the time_mapping keys
  • \n
  • pretty (bool): if set to True the returned string will be formatted. Default: False.
  • \n
  • quote_start (str): specifies which starting character to use to delimit quotes. Default: '.
  • \n
  • quote_end (str): specifies which ending character to use to delimit quotes. Default: '.
  • \n
  • identifier_start (str): specifies which starting character to use to delimit identifiers. Default: \".
  • \n
  • identifier_end (str): specifies which ending character to use to delimit identifiers. Default: \".
  • \n
  • identify (bool | str): 'always': always quote, 'safe': quote identifiers if they don't contain an upcase, True defaults to always.
  • \n
  • normalize (bool): if set to True all identifiers will lower cased
  • \n
  • string_escape (str): specifies a string escape character. Default: '.
  • \n
  • identifier_escape (str): specifies an identifier escape character. Default: \".
  • \n
  • pad (int): determines padding in a formatted string. Default: 2.
  • \n
  • indent (int): determines the size of indentation in a formatted string. Default: 4.
  • \n
  • unnest_column_only (bool): if true unnest table aliases are considered only as column aliases
  • \n
  • normalize_functions (str): normalize function names, \"upper\", \"lower\", or None\nDefault: \"upper\"
  • \n
  • alias_post_tablesample (bool): if the table alias comes after tablesample\nDefault: False
  • \n
  • unsupported_level (ErrorLevel): determines the generator's behavior when it encounters\nunsupported expressions. Default ErrorLevel.WARN.
  • \n
  • null_ordering (str): Indicates the default null ordering method to use if not explicitly set.\nOptions are \"nulls_are_small\", \"nulls_are_large\", \"nulls_are_last\".\nDefault: \"nulls_are_small\"
  • \n
  • max_unsupported (int): Maximum number of unsupported messages to include in a raised UnsupportedError.\nThis is only relevant if unsupported_level is ErrorLevel.RAISE.\nDefault: 3
  • \n
  • leading_comma (bool): if the the comma is leading or trailing in select statements\nDefault: False
  • \n
  • max_text_width: The max number of characters in a segment before creating new lines in pretty mode.\nThe default is on the smaller end because the length only represents a segment and not the true\nline length.\nDefault: 80
  • \n
  • comments: Whether or not to preserve comments in the output SQL code.\nDefault: True
  • \n
\n", "bases": "sqlglot.dialects.mysql.MySQL.Generator"}, "sqlglot.dialects.tableau": {"fullname": "sqlglot.dialects.tableau", "modulename": "sqlglot.dialects.tableau", "kind": "module", "doc": "

\n"}, "sqlglot.dialects.tableau.Tableau": {"fullname": "sqlglot.dialects.tableau.Tableau", "modulename": "sqlglot.dialects.tableau", "qualname": "Tableau", "kind": "class", "doc": "

\n", "bases": "sqlglot.dialects.dialect.Dialect"}, "sqlglot.dialects.tableau.Tableau.Generator": {"fullname": "sqlglot.dialects.tableau.Tableau.Generator", "modulename": "sqlglot.dialects.tableau", "qualname": "Tableau.Generator", "kind": "class", "doc": "

Generator interprets the given syntax tree and produces a SQL string as an output.

\n\n
Arguments:
\n\n
    \n
  • time_mapping (dict): the dictionary of custom time mappings in which the key\nrepresents a python time format and the output the target time format
  • \n
  • time_trie (trie): a trie of the time_mapping keys
  • \n
  • pretty (bool): if set to True the returned string will be formatted. Default: False.
  • \n
  • quote_start (str): specifies which starting character to use to delimit quotes. Default: '.
  • \n
  • quote_end (str): specifies which ending character to use to delimit quotes. Default: '.
  • \n
  • identifier_start (str): specifies which starting character to use to delimit identifiers. Default: \".
  • \n
  • identifier_end (str): specifies which ending character to use to delimit identifiers. Default: \".
  • \n
  • identify (bool | str): 'always': always quote, 'safe': quote identifiers if they don't contain an upcase, True defaults to always.
  • \n
  • normalize (bool): if set to True all identifiers will lower cased
  • \n
  • string_escape (str): specifies a string escape character. Default: '.
  • \n
  • identifier_escape (str): specifies an identifier escape character. Default: \".
  • \n
  • pad (int): determines padding in a formatted string. Default: 2.
  • \n
  • indent (int): determines the size of indentation in a formatted string. Default: 4.
  • \n
  • unnest_column_only (bool): if true unnest table aliases are considered only as column aliases
  • \n
  • normalize_functions (str): normalize function names, \"upper\", \"lower\", or None\nDefault: \"upper\"
  • \n
  • alias_post_tablesample (bool): if the table alias comes after tablesample\nDefault: False
  • \n
  • unsupported_level (ErrorLevel): determines the generator's behavior when it encounters\nunsupported expressions. Default ErrorLevel.WARN.
  • \n
  • null_ordering (str): Indicates the default null ordering method to use if not explicitly set.\nOptions are \"nulls_are_small\", \"nulls_are_large\", \"nulls_are_last\".\nDefault: \"nulls_are_small\"
  • \n
  • max_unsupported (int): Maximum number of unsupported messages to include in a raised UnsupportedError.\nThis is only relevant if unsupported_level is ErrorLevel.RAISE.\nDefault: 3
  • \n
  • leading_comma (bool): if the the comma is leading or trailing in select statements\nDefault: False
  • \n
  • max_text_width: The max number of characters in a segment before creating new lines in pretty mode.\nThe default is on the smaller end because the length only represents a segment and not the true\nline length.\nDefault: 80
  • \n
  • comments: Whether or not to preserve comments in the output SQL code.\nDefault: True
  • \n
\n", "bases": "sqlglot.generator.Generator"}, "sqlglot.dialects.tableau.Tableau.Parser": {"fullname": "sqlglot.dialects.tableau.Tableau.Parser", "modulename": "sqlglot.dialects.tableau", "qualname": "Tableau.Parser", "kind": "class", "doc": "

Parser consumes a list of tokens produced by the sqlglot.tokens.Tokenizer and produces\na parsed syntax tree.

\n\n
Arguments:
\n\n
    \n
  • error_level: the desired error level.\nDefault: ErrorLevel.RAISE
  • \n
  • error_message_context: determines the amount of context to capture from a\nquery string when displaying the error message (in number of characters).\nDefault: 50.
  • \n
  • index_offset: Index offset for arrays eg ARRAY[0] vs ARRAY[1] as the head of a list.\nDefault: 0
  • \n
  • alias_post_tablesample: If the table alias comes after tablesample.\nDefault: False
  • \n
  • max_errors: Maximum number of error messages to include in a raised ParseError.\nThis is only relevant if error_level is ErrorLevel.RAISE.\nDefault: 3
  • \n
  • null_ordering: Indicates the default null ordering method to use if not explicitly set.\nOptions are \"nulls_are_small\", \"nulls_are_large\", \"nulls_are_last\".\nDefault: \"nulls_are_small\"
  • \n
\n", "bases": "sqlglot.parser.Parser"}, "sqlglot.dialects.teradata": {"fullname": "sqlglot.dialects.teradata", "modulename": "sqlglot.dialects.teradata", "kind": "module", "doc": "

\n"}, "sqlglot.dialects.teradata.Teradata": {"fullname": "sqlglot.dialects.teradata.Teradata", "modulename": "sqlglot.dialects.teradata", "qualname": "Teradata", "kind": "class", "doc": "

\n", "bases": "sqlglot.dialects.dialect.Dialect"}, "sqlglot.dialects.teradata.Teradata.Tokenizer": {"fullname": "sqlglot.dialects.teradata.Teradata.Tokenizer", "modulename": "sqlglot.dialects.teradata", "qualname": "Teradata.Tokenizer", "kind": "class", "doc": "

\n", "bases": "sqlglot.tokens.Tokenizer"}, "sqlglot.dialects.teradata.Teradata.Parser": {"fullname": "sqlglot.dialects.teradata.Teradata.Parser", "modulename": "sqlglot.dialects.teradata", "qualname": "Teradata.Parser", "kind": "class", "doc": "

Parser consumes a list of tokens produced by the sqlglot.tokens.Tokenizer and produces\na parsed syntax tree.

\n\n
Arguments:
\n\n
    \n
  • error_level: the desired error level.\nDefault: ErrorLevel.RAISE
  • \n
  • error_message_context: determines the amount of context to capture from a\nquery string when displaying the error message (in number of characters).\nDefault: 50.
  • \n
  • index_offset: Index offset for arrays eg ARRAY[0] vs ARRAY[1] as the head of a list.\nDefault: 0
  • \n
  • alias_post_tablesample: If the table alias comes after tablesample.\nDefault: False
  • \n
  • max_errors: Maximum number of error messages to include in a raised ParseError.\nThis is only relevant if error_level is ErrorLevel.RAISE.\nDefault: 3
  • \n
  • null_ordering: Indicates the default null ordering method to use if not explicitly set.\nOptions are \"nulls_are_small\", \"nulls_are_large\", \"nulls_are_last\".\nDefault: \"nulls_are_small\"
  • \n
\n", "bases": "sqlglot.parser.Parser"}, "sqlglot.dialects.teradata.Teradata.Generator": {"fullname": "sqlglot.dialects.teradata.Teradata.Generator", "modulename": "sqlglot.dialects.teradata", "qualname": "Teradata.Generator", "kind": "class", "doc": "

Generator interprets the given syntax tree and produces a SQL string as an output.

\n\n
Arguments:
\n\n
    \n
  • time_mapping (dict): the dictionary of custom time mappings in which the key\nrepresents a python time format and the output the target time format
  • \n
  • time_trie (trie): a trie of the time_mapping keys
  • \n
  • pretty (bool): if set to True the returned string will be formatted. Default: False.
  • \n
  • quote_start (str): specifies which starting character to use to delimit quotes. Default: '.
  • \n
  • quote_end (str): specifies which ending character to use to delimit quotes. Default: '.
  • \n
  • identifier_start (str): specifies which starting character to use to delimit identifiers. Default: \".
  • \n
  • identifier_end (str): specifies which ending character to use to delimit identifiers. Default: \".
  • \n
  • identify (bool | str): 'always': always quote, 'safe': quote identifiers if they don't contain an upcase, True defaults to always.
  • \n
  • normalize (bool): if set to True all identifiers will lower cased
  • \n
  • string_escape (str): specifies a string escape character. Default: '.
  • \n
  • identifier_escape (str): specifies an identifier escape character. Default: \".
  • \n
  • pad (int): determines padding in a formatted string. Default: 2.
  • \n
  • indent (int): determines the size of indentation in a formatted string. Default: 4.
  • \n
  • unnest_column_only (bool): if true unnest table aliases are considered only as column aliases
  • \n
  • normalize_functions (str): normalize function names, \"upper\", \"lower\", or None\nDefault: \"upper\"
  • \n
  • alias_post_tablesample (bool): if the table alias comes after tablesample\nDefault: False
  • \n
  • unsupported_level (ErrorLevel): determines the generator's behavior when it encounters\nunsupported expressions. Default ErrorLevel.WARN.
  • \n
  • null_ordering (str): Indicates the default null ordering method to use if not explicitly set.\nOptions are \"nulls_are_small\", \"nulls_are_large\", \"nulls_are_last\".\nDefault: \"nulls_are_small\"
  • \n
  • max_unsupported (int): Maximum number of unsupported messages to include in a raised UnsupportedError.\nThis is only relevant if unsupported_level is ErrorLevel.RAISE.\nDefault: 3
  • \n
  • leading_comma (bool): if the the comma is leading or trailing in select statements\nDefault: False
  • \n
  • max_text_width: The max number of characters in a segment before creating new lines in pretty mode.\nThe default is on the smaller end because the length only represents a segment and not the true\nline length.\nDefault: 80
  • \n
  • comments: Whether or not to preserve comments in the output SQL code.\nDefault: True
  • \n
\n", "bases": "sqlglot.generator.Generator"}, "sqlglot.dialects.teradata.Teradata.Generator.partitionedbyproperty_sql": {"fullname": "sqlglot.dialects.teradata.Teradata.Generator.partitionedbyproperty_sql", "modulename": "sqlglot.dialects.teradata", "qualname": "Teradata.Generator.partitionedbyproperty_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.PartitionedByProperty) -> str:", "funcdef": "def"}, "sqlglot.dialects.teradata.Teradata.Generator.update_sql": {"fullname": "sqlglot.dialects.teradata.Teradata.Generator.update_sql", "modulename": "sqlglot.dialects.teradata", "qualname": "Teradata.Generator.update_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Update) -> str:", "funcdef": "def"}, "sqlglot.dialects.teradata.Teradata.Generator.mod_sql": {"fullname": "sqlglot.dialects.teradata.Teradata.Generator.mod_sql", "modulename": "sqlglot.dialects.teradata", "qualname": "Teradata.Generator.mod_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Mod) -> str:", "funcdef": "def"}, "sqlglot.dialects.teradata.Teradata.Generator.datatype_sql": {"fullname": "sqlglot.dialects.teradata.Teradata.Generator.datatype_sql", "modulename": "sqlglot.dialects.teradata", "qualname": "Teradata.Generator.datatype_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.DataType) -> str:", "funcdef": "def"}, "sqlglot.dialects.teradata.Teradata.Generator.rangen_sql": {"fullname": "sqlglot.dialects.teradata.Teradata.Generator.rangen_sql", "modulename": "sqlglot.dialects.teradata", "qualname": "Teradata.Generator.rangen_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.RangeN) -> str:", "funcdef": "def"}, "sqlglot.dialects.trino": {"fullname": "sqlglot.dialects.trino", "modulename": "sqlglot.dialects.trino", "kind": "module", "doc": "

\n"}, "sqlglot.dialects.trino.Trino": {"fullname": "sqlglot.dialects.trino.Trino", "modulename": "sqlglot.dialects.trino", "qualname": "Trino", "kind": "class", "doc": "

\n", "bases": "sqlglot.dialects.presto.Presto"}, "sqlglot.dialects.trino.Trino.Generator": {"fullname": "sqlglot.dialects.trino.Trino.Generator", "modulename": "sqlglot.dialects.trino", "qualname": "Trino.Generator", "kind": "class", "doc": "

Generator interprets the given syntax tree and produces a SQL string as an output.

\n\n
Arguments:
\n\n
    \n
  • time_mapping (dict): the dictionary of custom time mappings in which the key\nrepresents a python time format and the output the target time format
  • \n
  • time_trie (trie): a trie of the time_mapping keys
  • \n
  • pretty (bool): if set to True the returned string will be formatted. Default: False.
  • \n
  • quote_start (str): specifies which starting character to use to delimit quotes. Default: '.
  • \n
  • quote_end (str): specifies which ending character to use to delimit quotes. Default: '.
  • \n
  • identifier_start (str): specifies which starting character to use to delimit identifiers. Default: \".
  • \n
  • identifier_end (str): specifies which ending character to use to delimit identifiers. Default: \".
  • \n
  • identify (bool | str): 'always': always quote, 'safe': quote identifiers if they don't contain an upcase, True defaults to always.
  • \n
  • normalize (bool): if set to True all identifiers will lower cased
  • \n
  • string_escape (str): specifies a string escape character. Default: '.
  • \n
  • identifier_escape (str): specifies an identifier escape character. Default: \".
  • \n
  • pad (int): determines padding in a formatted string. Default: 2.
  • \n
  • indent (int): determines the size of indentation in a formatted string. Default: 4.
  • \n
  • unnest_column_only (bool): if true unnest table aliases are considered only as column aliases
  • \n
  • normalize_functions (str): normalize function names, \"upper\", \"lower\", or None\nDefault: \"upper\"
  • \n
  • alias_post_tablesample (bool): if the table alias comes after tablesample\nDefault: False
  • \n
  • unsupported_level (ErrorLevel): determines the generator's behavior when it encounters\nunsupported expressions. Default ErrorLevel.WARN.
  • \n
  • null_ordering (str): Indicates the default null ordering method to use if not explicitly set.\nOptions are \"nulls_are_small\", \"nulls_are_large\", \"nulls_are_last\".\nDefault: \"nulls_are_small\"
  • \n
  • max_unsupported (int): Maximum number of unsupported messages to include in a raised UnsupportedError.\nThis is only relevant if unsupported_level is ErrorLevel.RAISE.\nDefault: 3
  • \n
  • leading_comma (bool): if the the comma is leading or trailing in select statements\nDefault: False
  • \n
  • max_text_width: The max number of characters in a segment before creating new lines in pretty mode.\nThe default is on the smaller end because the length only represents a segment and not the true\nline length.\nDefault: 80
  • \n
  • comments: Whether or not to preserve comments in the output SQL code.\nDefault: True
  • \n
\n", "bases": "sqlglot.dialects.presto.Presto.Generator"}, "sqlglot.dialects.trino.Trino.Tokenizer": {"fullname": "sqlglot.dialects.trino.Trino.Tokenizer", "modulename": "sqlglot.dialects.trino", "qualname": "Trino.Tokenizer", "kind": "class", "doc": "

\n", "bases": "sqlglot.dialects.presto.Presto.Tokenizer"}, "sqlglot.dialects.tsql": {"fullname": "sqlglot.dialects.tsql", "modulename": "sqlglot.dialects.tsql", "kind": "module", "doc": "

\n"}, "sqlglot.dialects.tsql.generate_date_delta_with_unit_sql": {"fullname": "sqlglot.dialects.tsql.generate_date_delta_with_unit_sql", "modulename": "sqlglot.dialects.tsql", "qualname": "generate_date_delta_with_unit_sql", "kind": "function", "doc": "

\n", "signature": "(self, e):", "funcdef": "def"}, "sqlglot.dialects.tsql.TSQL": {"fullname": "sqlglot.dialects.tsql.TSQL", "modulename": "sqlglot.dialects.tsql", "qualname": "TSQL", "kind": "class", "doc": "

\n", "bases": "sqlglot.dialects.dialect.Dialect"}, "sqlglot.dialects.tsql.TSQL.Tokenizer": {"fullname": "sqlglot.dialects.tsql.TSQL.Tokenizer", "modulename": "sqlglot.dialects.tsql", "qualname": "TSQL.Tokenizer", "kind": "class", "doc": "

\n", "bases": "sqlglot.tokens.Tokenizer"}, "sqlglot.dialects.tsql.TSQL.Parser": {"fullname": "sqlglot.dialects.tsql.TSQL.Parser", "modulename": "sqlglot.dialects.tsql", "qualname": "TSQL.Parser", "kind": "class", "doc": "

Parser consumes a list of tokens produced by the sqlglot.tokens.Tokenizer and produces\na parsed syntax tree.

\n\n
Arguments:
\n\n
    \n
  • error_level: the desired error level.\nDefault: ErrorLevel.RAISE
  • \n
  • error_message_context: determines the amount of context to capture from a\nquery string when displaying the error message (in number of characters).\nDefault: 50.
  • \n
  • index_offset: Index offset for arrays eg ARRAY[0] vs ARRAY[1] as the head of a list.\nDefault: 0
  • \n
  • alias_post_tablesample: If the table alias comes after tablesample.\nDefault: False
  • \n
  • max_errors: Maximum number of error messages to include in a raised ParseError.\nThis is only relevant if error_level is ErrorLevel.RAISE.\nDefault: 3
  • \n
  • null_ordering: Indicates the default null ordering method to use if not explicitly set.\nOptions are \"nulls_are_small\", \"nulls_are_large\", \"nulls_are_last\".\nDefault: \"nulls_are_small\"
  • \n
\n", "bases": "sqlglot.parser.Parser"}, "sqlglot.dialects.tsql.TSQL.Generator": {"fullname": "sqlglot.dialects.tsql.TSQL.Generator", "modulename": "sqlglot.dialects.tsql", "qualname": "TSQL.Generator", "kind": "class", "doc": "

Generator interprets the given syntax tree and produces a SQL string as an output.

\n\n
Arguments:
\n\n
    \n
  • time_mapping (dict): the dictionary of custom time mappings in which the key\nrepresents a python time format and the output the target time format
  • \n
  • time_trie (trie): a trie of the time_mapping keys
  • \n
  • pretty (bool): if set to True the returned string will be formatted. Default: False.
  • \n
  • quote_start (str): specifies which starting character to use to delimit quotes. Default: '.
  • \n
  • quote_end (str): specifies which ending character to use to delimit quotes. Default: '.
  • \n
  • identifier_start (str): specifies which starting character to use to delimit identifiers. Default: \".
  • \n
  • identifier_end (str): specifies which ending character to use to delimit identifiers. Default: \".
  • \n
  • identify (bool | str): 'always': always quote, 'safe': quote identifiers if they don't contain an upcase, True defaults to always.
  • \n
  • normalize (bool): if set to True all identifiers will lower cased
  • \n
  • string_escape (str): specifies a string escape character. Default: '.
  • \n
  • identifier_escape (str): specifies an identifier escape character. Default: \".
  • \n
  • pad (int): determines padding in a formatted string. Default: 2.
  • \n
  • indent (int): determines the size of indentation in a formatted string. Default: 4.
  • \n
  • unnest_column_only (bool): if true unnest table aliases are considered only as column aliases
  • \n
  • normalize_functions (str): normalize function names, \"upper\", \"lower\", or None\nDefault: \"upper\"
  • \n
  • alias_post_tablesample (bool): if the table alias comes after tablesample\nDefault: False
  • \n
  • unsupported_level (ErrorLevel): determines the generator's behavior when it encounters\nunsupported expressions. Default ErrorLevel.WARN.
  • \n
  • null_ordering (str): Indicates the default null ordering method to use if not explicitly set.\nOptions are \"nulls_are_small\", \"nulls_are_large\", \"nulls_are_last\".\nDefault: \"nulls_are_small\"
  • \n
  • max_unsupported (int): Maximum number of unsupported messages to include in a raised UnsupportedError.\nThis is only relevant if unsupported_level is ErrorLevel.RAISE.\nDefault: 3
  • \n
  • leading_comma (bool): if the the comma is leading or trailing in select statements\nDefault: False
  • \n
  • max_text_width: The max number of characters in a segment before creating new lines in pretty mode.\nThe default is on the smaller end because the length only represents a segment and not the true\nline length.\nDefault: 80
  • \n
  • comments: Whether or not to preserve comments in the output SQL code.\nDefault: True
  • \n
\n", "bases": "sqlglot.generator.Generator"}, "sqlglot.dialects.tsql.TSQL.Generator.offset_sql": {"fullname": "sqlglot.dialects.tsql.TSQL.Generator.offset_sql", "modulename": "sqlglot.dialects.tsql", "qualname": "TSQL.Generator.offset_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Offset) -> str:", "funcdef": "def"}, "sqlglot.dialects.tsql.TSQL.Generator.systemtime_sql": {"fullname": "sqlglot.dialects.tsql.TSQL.Generator.systemtime_sql", "modulename": "sqlglot.dialects.tsql", "qualname": "TSQL.Generator.systemtime_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.SystemTime) -> str:", "funcdef": "def"}, "sqlglot.dialects.tsql.TSQL.Generator.returnsproperty_sql": {"fullname": "sqlglot.dialects.tsql.TSQL.Generator.returnsproperty_sql", "modulename": "sqlglot.dialects.tsql", "qualname": "TSQL.Generator.returnsproperty_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.ReturnsProperty) -> str:", "funcdef": "def"}, "sqlglot.diff": {"fullname": "sqlglot.diff", "modulename": "sqlglot.diff", "kind": "module", "doc": "

Semantic Diff for SQL

\n\n

by Iaroslav Zeigerman

\n\n

Motivation

\n\n

Software is constantly changing and evolving, and identifying what has changed and reviewing those changes is an integral part of the development process. SQL code is no exception to this.

\n\n

Text-based diff tools such as git diff, when applied to a code base, have certain limitations. First, they can only detect insertions and deletions, not movements or updates of individual pieces of code. Second, such tools can only detect changes between lines of text, which is too coarse for something as granular and detailed as source code. Additionally, the outcome of such a diff is dependent on the underlying code formatting, and yields different results if the formatting should change.

\n\n

Consider the following diff generated by Git:

\n\n

\"Git

\n\n

Semantically the query hasn\u2019t changed. The two arguments b and c have been swapped (moved), posing no impact on the output of the query. Yet Git replaced the whole affected expression alongside a bulk of unrelated elements.

\n\n

The alternative to text-based diffing is to compare Abstract Syntax Trees (AST) instead. The main advantage of ASTs are that they are a direct product of code parsing, which represents the underlying code structure at any desired level of granularity. Comparing ASTs may yield extremely precise diffs; changes such as code movements and updates can also be detected. Even more importantly, this approach facilitates additional use cases beyond eyeballing two versions of source code side by side.

\n\n

The use cases I had in mind for SQL when I decided to embark on this journey of semantic diffing were the following:

\n\n
    \n
  • Query similarity score. Identifying which parts the two queries have in common to automatically suggest opportunities for consolidation, creation of intermediate/staging tables, and so on.
  • \n
  • Differentiating between cosmetic / structural changes and functional ones. For example when a nested query is refactored into a common table expression (CTE), this kind of change doesn\u2019t have any functional impact on either a query or its outcome.
  • \n
  • Automatic suggestions about the need to retroactively backfill data. This is especially important for pipelines that populate very large tables for which restatement is a runtime-intensive procedure. The ability to discern between simple code movements and actual modifications can help assess the impact of a change and make suggestions accordingly.
  • \n
\n\n

The implementation discussed in this post is now a part of the SQLGlot library. You can find a complete source code in the diff.py module. The choice of SQLglot was an obvious one due to its simple but powerful API, lack of external dependencies and, more importantly, extensive list of supported SQL dialects.

\n\n

The Search for a Solution

\n\n

When it comes to any diffing tool (not just a semantic one), the primary challenge is to match as many elements of compared entities as possible. Once such a set of matching elements is available, deriving a sequence of changes becomes an easy task.

\n\n

If our elements have unique identifiers associated with them (for example, an element\u2019s ID in DOM), the matching problem is trivial. However, the SQL syntax trees that we are comparing have neither unique keys nor object identifiers that can be used for the purposes of matching. So, how do we suppose to find pairs of nodes that are related?

\n\n

To better illustrate the problem, consider comparing the following SQL expressions: SELECT a + b + c, d, e and SELECT a - b + c, e, f. Matching individual nodes from respective syntax trees can be visualized as follows:

\n\n

\"Figure\nFigure 1: Example of node matching for two SQL expression trees.

\n\n

By looking at the figure of node matching for two SQL expression trees above, we conclude that the following changes should be captured by our solution:

\n\n
    \n
  • Inserted nodes: Sub and f. These are the nodes from the target AST which do not have a matching node in the source AST.
  • \n
  • Removed nodes: Add and d. These are the nodes from the source AST which do not have a counterpart in the target AST.
  • \n
  • Remaining nodes must be identified as unchanged.
  • \n
\n\n

It should be clear at this point that if we manage to match nodes in the source tree with their counterparts in the target tree, then computing the diff becomes a trivial matter.

\n\n

Na\u00efve Brute-Force

\n\n

The na\u00efve solution would be to try all different permutations of node pair combinations, and see which set of pairs performs the best based on some type of heuristics. The runtime cost of such a solution quickly reaches the escape velocity; if both trees had only 10 nodes each, the number of such sets would approximately be 10! ^ 2 = 3.6M ^ 2 ~= 13 * 10^12. This is a very bad case of factorial complexity (to be precise, it\u2019s actually much worse - O(n! ^ 2) - but I couldn\u2019t come up with a name for it), so there is little need to explore this approach any further.

\n\n

Myers Algorithm

\n\n

After the na\u00efve approach was proven to be infeasible, the next question I asked myself was \u201chow does git diff work?\u201d. This question led me to discover the Myers diff algorithm [1]. This algorithm has been designed to compare sequences of strings. At its core, it\u2019s looking for the shortest path on a graph of possible edits that transform the first sequence into the second one, while heavily rewarding those paths that lead to longest subsequences of unchanged elements. There\u2019s a lot of material out there describing this algorithm in greater detail. I found James Coglan\u2019s series of blog posts to be the most comprehensive.

\n\n

Therefore, I had this \u201cbrilliant\u201d (actually not) idea to transform trees into sequences by traversing them in topological order, and then applying the Myers algorithm on resulting sequences while using a custom heuristics when checking the equality of two nodes. Unsurprisingly, comparing sequences of strings is quite different from comparing hierarchical tree structures, and by flattening trees into sequences, we lose a lot of relevant context. This resulted in a terrible performance of this algorithm on ASTs. It often matched completely unrelated nodes, even when the two trees were mostly the same, and produced extremely inaccurate lists of changes overall. After playing around with it a little and tweaking my equality heuristics to improve accuracy, I ultimately scrapped the whole implementation and went back to the drawing board.

\n\n

Change Distiller

\n\n

The algorithm I settled on at the end was Change Distiller, created by Fluri et al. [2], which in turn is an improvement over the core idea described by Chawathe et al. [3].

\n\n

The algorithm consists of two high-level steps:

\n\n
    \n
  1. Finding appropriate matchings between pairs of nodes that are part of compared ASTs. Identifying what is meant by \u201cappropriate\u201d matching is also a part of this step.
  2. \n
  3. Generating the so-called \u201cedit script\u201d from the matching set built in the 1st step. The edit script is a sequence of edit operations (for example, insert, remove, update, etc.) on individual tree nodes, such that when applied as transformations on the source AST, it eventually becomes the target AST. In general, the shorter the sequence, the better. The length of the edit script can be used to compare the performance of different algorithms, though this is not the only metric that matters.
  4. \n
\n\n

The rest of this section is dedicated to the Python implementation of the steps above using the AST implementation provided by the SQLGlot library.

\n\n

Building the Matching Set

\n\n

Matching Leaves

\n\n

We begin composing the matching set by matching the leaf nodes. Leaf nodes are the nodes that do not have any children nodes (such as literals, identifiers, etc.). In order to match them, we gather all the leaf nodes from the source tree and generate a cartesian product with all the leaves from the target tree, while comparing pairs created this way and assigning them a similarity score. During this stage, we also exclude pairs that don\u2019t pass basic matching criteria. Then, we pick pairs that scored the highest while making sure that each node is matched no more than once.

\n\n

Using the example provided at the beginning of the post, the process of building an initial set of candidate matchings can be seen on Figure 2.

\n\n

\"Figure\nFigure 2: Building a set of candidate matchings between leaf nodes. The third item in each triplet represents a similarity score between two nodes.

\n\n

First, let\u2019s analyze the similarity score. Then, we\u2019ll discuss matching criteria.

\n\n

The similarity score proposed by Fluri et al. [2] is a dice coefficient applied to bigrams of respective node values. A bigram is a sequence of two adjacent elements from a string computed in a sliding window fashion:

\n\n
\n
def bigram(string):\n    count = max(0, len(string) - 1)\n    return [string[i : i + 2] for i in range(count)]\n
\n
\n\n

For reasons that will become clear shortly, we actually need to compute bigram histograms rather than just sequences:

\n\n
\n
from collections import defaultdict\n\ndef bigram_histo(string):\n    count = max(0, len(string) - 1)\n    bigram_histo = defaultdict(int)\n    for i in range(count):\n        bigram_histo[string[i : i + 2]] += 1\n    return bigram_histo\n
\n
\n\n

The dice coefficient formula looks like following:

\n\n

\"Dice

\n\n

Where X is a bigram of the source node and Y is a bigram of the second one. What this essentially does is count the number of bigram elements the two nodes have in common, multiply it by 2, and then divide by the total number of elements in both bigrams. This is where bigram histograms come in handy:

\n\n
\n
def dice_coefficient(source, target):\n    source_histo = bigram_histo(source.sql())\n    target_histo = bigram_histo(target.sql())\n\n    total_grams = (\n        sum(source_histo.values()) + sum(target_histo.values())\n    )\n    if not total_grams:\n        return 1.0 if source == target else 0.0\n\n    overlap_len = 0\n    overlapping_grams = set(source_histo) & set(target_histo)\n    for g in overlapping_grams:\n        overlap_len += min(source_histo[g], target_histo[g])\n\n    return 2 * overlap_len / total_grams\n
\n
\n\n

To compute a bigram given a tree node, we first transform the node into its canonical SQL representation,so that the Literal(123) node becomes just \u201c123\u201d and the Identifier(\u201ca\u201d) node becomes just \u201ca\u201d. We also handle a scenario when strings are too short to derive bigrams. In this case, we fallback to checking the two nodes for equality.

\n\n

Now when we know how to compute the similarity score, we can take care of the matching criteria for leaf nodes. In the original paper [2], the matching criteria is formalized as follows:

\n\n

\"Matching

\n\n

The two nodes are matched if two conditions are met:

\n\n
    \n
  1. The node labels match (in our case labels are just node types).
  2. \n
  3. The similarity score for node values is greater than or equal to some threshold \u201cf\u201d. The authors of the paper recommend setting the value of \u201cf\u201d to 0.6.
  4. \n
\n\n

With building blocks in place, we can now build a matching set for leaf nodes. First, we generate a list of candidates for matching:

\n\n
\n
from heapq import heappush, heappop\n\ncandidate_matchings = []\nsource_leaves = _get_leaves(self._source)\ntarget_leaves = _get_leaves(self._target)\nfor source_leaf in source_leaves:\n    for target_leaf in target_leaves:\n        if _is_same_type(source_leaf, target_leaf):\n            similarity_score = dice_coefficient(\n                source_leaf, target_leaf\n            )\n            if similarity_score >= 0.6:\n                heappush(\n                    candidate_matchings,\n                    (\n                        -similarity_score,\n                        len(candidate_matchings),\n                        source_leaf,\n                        target_leaf,\n                    ),\n                )\n
\n
\n\n

In the implementation above, we push each matching pair onto the heap to automatically maintain the correct order based on the assigned similarity score.

\n\n

Finally, we build the initial matching set by picking leaf pairs with the highest score:

\n\n
\n
matching_set = set()\nwhile candidate_matchings:\n    _, _, source_leaf, target_leaf = heappop(candidate_matchings)\n    if (\n        source_leaf in unmatched_source_nodes\n        and target_leaf in unmatched_target_nodes\n    ):\n        matching_set.add((source_leaf, target_leaf))\n        unmatched_source_nodes.remove(source_leaf)\n        unmatched_target_nodes.remove(target_leaf)\n
\n
\n\n

To finalize the matching set, we should now proceed with matching inner nodes.

\n\n

Matching Inner Nodes

\n\n

Matching inner nodes is quite similar to matching leaf nodes, with the following two distinctions:

\n\n
    \n
  • Rather than ranking a set of possible candidates, we pick the first node pair that passes the matching criteria.
  • \n
  • The matching criteria itself has been extended to account for the number of leaf nodes the pair of inner nodes have in common.
  • \n
\n\n

\"Figure\nFigure 3: Matching inner nodes based on their type as well as how many of their leaf nodes have been previously matched.

\n\n

Let\u2019s start with the matching criteria. The criteria is formalized as follows:

\n\n

\"Matching

\n\n

Alongside already familiar similarity score and node type criteria, there is a new one in the middle: the ratio of leaf nodes that the two nodes have in common must exceed some threshold \u201ct\u201d. The recommended value for \u201ct\u201d is also 0.6. Counting the number of common leaf nodes is pretty straightforward, since we already have the complete matching set for leaves. All we need to do is count how many matching pairs do leaf nodes from the two compared inner nodes form.

\n\n

There are two additional heuristics associated with this matching criteria:

\n\n
    \n
  • Inner node similarity weighting: if the similarity score between the node values doesn\u2019t pass the threshold \u201cf\u201d but the ratio of common leaf nodes (\u201ct\u201d) is greater than or equal to 0.8, then the matching is considered successful.
  • \n
  • The threshold \u201ct\u201d is reduced to 0.4 for inner nodes with the number of leaf nodes equal to 4 or less, in order to decrease the false negative rate for small subtrees.
  • \n
\n\n

We now only have to iterate through the remaining unmatched nodes and form matching pairs based on the outlined criteria:

\n\n
\n
leaves_matching_set = matching_set.copy()\n\nfor source_node in unmatched_source_nodes.copy():\n    for target_node in unmatched_target_nodes:\n        if _is_same_type(source_node, target_node):\n            source_leaves = set(_get_leaves(source_node))\n            target_leaves = set(_get_leaves(target_node))\n\n            max_leaves_num = max(len(source_leaves), len(target_leaves))\n            if max_leaves_num:\n                common_leaves_num = sum(\n                    1 if s in source_leaves and t in target_leaves else 0\n                    for s, t in leaves_matching_set\n                )\n                leaf_similarity_score = common_leaves_num / max_leaves_num\n            else:\n                leaf_similarity_score = 0.0\n\n            adjusted_t = (\n                0.6\n                if min(len(source_leaves), len(target_leaves)) > 4\n                else 0.4\n            )\n\n            if leaf_similarity_score >= 0.8 or (\n                leaf_similarity_score >= adjusted_t\n                and dice_coefficient(source_node, target_node) >= 0.6\n            ):\n                matching_set.add((source_node, target_node))\n                unmatched_source_nodes.remove(source_node)\n                unmatched_target_nodes.remove(target_node)\n                break\n
\n
\n\n

After the matching set is formed, we can proceed with generation of the edit script, which will be the algorithm\u2019s output.

\n\n

Generating the Edit Script

\n\n

At this point, we should have the following 3 sets at our disposal:

\n\n
    \n
  • The set of matched node pairs.
  • \n
  • The set of remaining unmatched nodes from the source tree.
  • \n
  • The set of remaining unmatched nodes from the target tree.
  • \n
\n\n

We can derive 3 kinds of edits from the matching set: either the node\u2019s value was updated (Update), the node was moved to a different position within the tree (Move), or the node remained unchanged (Keep). Note that the Move case is not mutually exclusive with the other two. The node could have been updated or could have remained the same while at the same time its position within its parent node or the parent node itself could have changed. All unmatched nodes from the source tree are the ones that were removed (Remove), while unmatched nodes from the target tree are the ones that were inserted (Insert).

\n\n

The latter two cases are pretty straightforward to implement:

\n\n
\n
edit_script = []\n\nfor removed_node in unmatched_source_nodes:\n    edit_script.append(Remove(removed_node))\nfor inserted_node in unmatched_target_nodes:\n    edit_script.append(Insert(inserted_node))\n
\n
\n\n

Traversing the matching set requires a little more thought:

\n\n
\n
for source_node, target_node in matching_set:\n    if (\n        not isinstance(source_node, LEAF_EXPRESSION_TYPES)\n        or source_node == target_node\n    ):\n        move_edits = generate_move_edits(\n            source_node, target_node, matching_set\n        )\n        edit_script.extend(move_edits)\n        edit_script.append(Keep(source_node, target_node))\n    else:\n        edit_script.append(Update(source_node, target_node))\n
\n
\n\n

If a matching pair represents a pair of leaf nodes, we check if they are the same to decide whether an update took place. For inner node pairs, we also need to compare the positions of their respective children to detect node movements. Chawathe et al. [3] suggest applying the longest common subsequence (LCS) algorithm which, no surprise here, was described by Myers himself [1]. There is a small catch, however: instead of checking the equality of two children nodes, we need to check whether the two nodes form a pair that is a part of our matching set.

\n\n

Now with this knowledge, the implementation becomes straightforward:

\n\n
\n
def generate_move_edits(source, target, matching_set):\n    source_children = _get_child_nodes(source)\n    target_children = _get_child_nodes(target)\n\n    lcs = set(\n        _longest_common_subsequence(\n            source_children,\n            target_children,\n            lambda l, r: (l, r) in matching_set\n        )\n    )\n\n    move_edits = []\n    for node in source_children:\n        if node not in lcs and node not in unmatched_source_nodes:\n            move_edits.append(Move(node))\n\n    return move_edits\n
\n
\n\n

I left out the implementation of the LCS algorithm itself here, but there are plenty of implementation choices out there that can be easily looked up.

\n\n

Output

\n\n

The implemented algorithm produces the output that resembles the following:

\n\n
\n
>>> from sqlglot import parse_one, diff\n>>> diff(parse_one("SELECT a + b + c, d, e"), parse_one("SELECT a - b + c, e, f"))\n\nRemove(Add)\nRemove(Column(d))\nRemove(Identifier(d))\nInsert(Sub)\nInsert(Column(f))\nInsert(Identifier(f))\nKeep(Select, Select)\nKeep(Add, Add)\nKeep(Column(a), Column(a))\nKeep(Identifier(a), Identifier(a))\nKeep(Column(b), Column(b))\nKeep(Identifier(b), Identifier(b))\nKeep(Column(c), Column(c))\nKeep(Identifier(c), Identifier(c))\nKeep(Column(e), Column(e))\nKeep(Identifier(e), Identifier(e))\n
\n
\n\n

Note that the output above is abbreviated. The string representation of actual AST nodes is significantly more verbose.

\n\n

The implementation works especially well when coupled with the SQLGlot\u2019s query optimizer which can be used to produce canonical representations of compared queries:

\n\n
\n
>>> schema={"t": {"a": "INT", "b": "INT", "c": "INT", "d": "INT"}}\n>>> source = """\n... SELECT 1 + 1 + a\n... FROM t\n... WHERE b = 1 OR (c = 2 AND d = 3)\n... """\n>>> target = """\n... SELECT 2 + a\n... FROM t\n... WHERE (b = 1 OR c = 2) AND (b = 1 OR d = 3)\n... """\n>>> optimized_source = optimize(parse_one(source), schema=schema)\n>>> optimized_target = optimize(parse_one(target), schema=schema)\n>>> edit_script = diff(optimized_source, optimized_target)\n>>> sum(0 if isinstance(e, Keep) else 1 for e in edit_script)\n0\n
\n
\n\n

Optimizations

\n\n

The worst case runtime complexity of this algorithm is not exactly stellar: O(n^2 * log n^2). This is because of the leaf matching process, which involves ranking a cartesian product between all leaf nodes of compared trees. Unsurprisingly, the algorithm takes a considerable time to finish for bigger queries.

\n\n

There are still a few basic things we can do in our implementation to help improve performance:

\n\n
    \n
  • Refer to individual node objects using their identifiers (Python\u2019s id()) instead of direct references in sets. This helps avoid costly recursive hash calculations and equality checks.
  • \n
  • Cache bigram histograms to avoid computing them more than once for the same node.
  • \n
  • Compute the canonical SQL string representation for each tree once while caching string representations of all inner nodes. This prevents redundant tree traversals when bigrams are computed.
  • \n
\n\n

At the time of writing only the first two optimizations have been implemented, so there is an opportunity to contribute for anyone who\u2019s interested.

\n\n

Alternative Solutions

\n\n

This section is dedicated to solutions that I\u2019ve investigated, but haven\u2019t tried.

\n\n

First, this section wouldn\u2019t be complete without Tristan Hume\u2019s blog post. Tristan\u2019s solution has a lot in common with the Myers algorithm plus heuristics that is much more clever than what I came up with. The implementation relies on a combination of dynamic programming and A* search algorithm to explore the space of possible matchings and pick the best ones. It seemed to have worked well for Tistan\u2019s specific use case, but after my negative experience with the Myers algorithm, I decided to try something different.

\n\n

Another notable approach is the Gumtree algorithm by Falleri et al. [4]. I discovered this paper after I\u2019d already implemented the algorithm that is the main focus of this post. In sections 5.2 and 5.3 of their paper, the authors compare the two algorithms side by side and claim that Gumtree is significantly better in terms of both runtime performance and accuracy when evaluated on 12 792 pairs of Java source files. This doesn\u2019t surprise me, as the algorithm takes the height of subtrees into account. In my tests, I definitely saw scenarios in which this context would have helped. On top of that, the authors promise O(n^2) runtime complexity in the worst case which, given the Change Distiller's O(n^2 * log n^2), looks particularly tempting. I hope to try this algorithm out at some point, and there is a good chance you see me writing about it in my future posts.

\n\n

Conclusion

\n\n

The Change Distiller algorithm yielded quite satisfactory results in most of my tests. The scenarios in which it fell short mostly concerned identical (or very similar) subtrees located in different parts of the AST. In those cases, node mismatches were frequent and, as a result, edit scripts were somewhat suboptimal.

\n\n

Additionally, the runtime performance of the algorithm leaves a lot to be desired. On trees with 1000 leaf nodes each, the algorithm takes a little under 2 seconds to complete. My implementation still has room for improvement, but this should give you a rough idea of what to expect. It appears that the Gumtree algorithm [4] can help address both of these points. I hope to find bandwidth to work on it soon and then compare the two algorithms side-by-side to find out which one performs better on SQL specifically. In the meantime, Change Distiller definitely gets the job done, and I can now proceed with applying it to some of the use cases I mentioned at the beginning of this post.

\n\n

I\u2019m also curious to learn whether other folks in the industry faced a similar problem, and how they approached it. If you did something similar, I\u2019m interested to hear about your experience.

\n\n

References

\n\n

[1] Eugene W. Myers. An O(ND) Difference Algorithm and Its Variations. Algorithmica 1(2): 251-266 (1986)

\n\n

[2] B. Fluri, M. Wursch, M. Pinzger, and H. Gall. Change Distilling: Tree differencing for fine-grained source code change extraction. IEEE Trans. Software Eng., 33(11):725\u2013743, 2007.

\n\n

[3] S.S. Chawathe, A. Rajaraman, H. Garcia-Molina, and J. Widom. Change Detection in Hierarchically Structured Information. Proc. ACM Sigmod Int\u2019l Conf. Management of Data, pp. 493-504, June 1996

\n\n

[4] Jean-R\u00e9my Falleri, Flor\u00e9al Morandat, Xavier Blanc, Matias Martinez, Martin Monperrus. Fine-grained and Accurate Source Code Differencing. Proceedings of the International Conference on Automated Software Engineering, 2014, V\u00e4steras, Sweden. pp.313-324, 10.1145/2642937.2642982. hal-01054552

\n\n
\n"}, "sqlglot.diff.Insert": {"fullname": "sqlglot.diff.Insert", "modulename": "sqlglot.diff", "qualname": "Insert", "kind": "class", "doc": "

Indicates that a new node has been inserted

\n"}, "sqlglot.diff.Insert.__init__": {"fullname": "sqlglot.diff.Insert.__init__", "modulename": "sqlglot.diff", "qualname": "Insert.__init__", "kind": "function", "doc": "

\n", "signature": "(expression: sqlglot.expressions.Expression)"}, "sqlglot.diff.Remove": {"fullname": "sqlglot.diff.Remove", "modulename": "sqlglot.diff", "qualname": "Remove", "kind": "class", "doc": "

Indicates that an existing node has been removed

\n"}, "sqlglot.diff.Remove.__init__": {"fullname": "sqlglot.diff.Remove.__init__", "modulename": "sqlglot.diff", "qualname": "Remove.__init__", "kind": "function", "doc": "

\n", "signature": "(expression: sqlglot.expressions.Expression)"}, "sqlglot.diff.Move": {"fullname": "sqlglot.diff.Move", "modulename": "sqlglot.diff", "qualname": "Move", "kind": "class", "doc": "

Indicates that an existing node's position within the tree has changed

\n"}, "sqlglot.diff.Move.__init__": {"fullname": "sqlglot.diff.Move.__init__", "modulename": "sqlglot.diff", "qualname": "Move.__init__", "kind": "function", "doc": "

\n", "signature": "(expression: sqlglot.expressions.Expression)"}, "sqlglot.diff.Update": {"fullname": "sqlglot.diff.Update", "modulename": "sqlglot.diff", "qualname": "Update", "kind": "class", "doc": "

Indicates that an existing node has been updated

\n"}, "sqlglot.diff.Update.__init__": {"fullname": "sqlglot.diff.Update.__init__", "modulename": "sqlglot.diff", "qualname": "Update.__init__", "kind": "function", "doc": "

\n", "signature": "(\tsource: sqlglot.expressions.Expression,\ttarget: sqlglot.expressions.Expression)"}, "sqlglot.diff.Keep": {"fullname": "sqlglot.diff.Keep", "modulename": "sqlglot.diff", "qualname": "Keep", "kind": "class", "doc": "

Indicates that an existing node hasn't been changed

\n"}, "sqlglot.diff.Keep.__init__": {"fullname": "sqlglot.diff.Keep.__init__", "modulename": "sqlglot.diff", "qualname": "Keep.__init__", "kind": "function", "doc": "

\n", "signature": "(\tsource: sqlglot.expressions.Expression,\ttarget: sqlglot.expressions.Expression)"}, "sqlglot.diff.diff": {"fullname": "sqlglot.diff.diff", "modulename": "sqlglot.diff", "qualname": "diff", "kind": "function", "doc": "

Returns the list of changes between the source and the target expressions.

\n\n
Examples:
\n\n
\n
\n
>>> diff(parse_one("a + b"), parse_one("a + c"))\n[\n    Remove(expression=(COLUMN this: (IDENTIFIER this: b, quoted: False))),\n    Insert(expression=(COLUMN this: (IDENTIFIER this: c, quoted: False))),\n    Keep(\n        source=(ADD this: ...),\n        target=(ADD this: ...)\n    ),\n    Keep(\n        source=(COLUMN this: (IDENTIFIER this: a, quoted: False)),\n        target=(COLUMN this: (IDENTIFIER this: a, quoted: False))\n    ),\n]\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • source: the source expression.
  • \n
  • target: the target expression against which the diff should be calculated.
  • \n
  • matchings: the list of pre-matched node pairs which is used to help the algorithm's\nheuristics produce better results for subtrees that are known by a caller to be matching.\nNote: expression references in this list must refer to the same node objects that are\nreferenced in source / target trees.
  • \n
\n\n
Returns:
\n\n
\n

the list of Insert, Remove, Move, Update and Keep objects for each node in the source and the\n target expression trees. This list represents a sequence of steps needed to transform the source\n expression tree into the target one.

\n
\n", "signature": "(\tsource: sqlglot.expressions.Expression,\ttarget: sqlglot.expressions.Expression,\tmatchings: Optional[List[Tuple[sqlglot.expressions.Expression, sqlglot.expressions.Expression]]] = None,\t**kwargs: Any) -> List[Union[sqlglot.diff.Insert, sqlglot.diff.Remove, sqlglot.diff.Move, sqlglot.diff.Update, sqlglot.diff.Keep]]:", "funcdef": "def"}, "sqlglot.diff.ChangeDistiller": {"fullname": "sqlglot.diff.ChangeDistiller", "modulename": "sqlglot.diff", "qualname": "ChangeDistiller", "kind": "class", "doc": "

The implementation of the Change Distiller algorithm described by Beat Fluri and Martin Pinzger in\ntheir paper https://ieeexplore.ieee.org/document/4339230, which in turn is based on the algorithm by\nChawathe et al. described in http://ilpubs.stanford.edu:8090/115/1/1995-46.pdf.

\n"}, "sqlglot.diff.ChangeDistiller.__init__": {"fullname": "sqlglot.diff.ChangeDistiller.__init__", "modulename": "sqlglot.diff", "qualname": "ChangeDistiller.__init__", "kind": "function", "doc": "

\n", "signature": "(f: float = 0.6, t: float = 0.6)"}, "sqlglot.diff.ChangeDistiller.diff": {"fullname": "sqlglot.diff.ChangeDistiller.diff", "modulename": "sqlglot.diff", "qualname": "ChangeDistiller.diff", "kind": "function", "doc": "

\n", "signature": "(\tself,\tsource: sqlglot.expressions.Expression,\ttarget: sqlglot.expressions.Expression,\tmatchings: Optional[List[Tuple[sqlglot.expressions.Expression, sqlglot.expressions.Expression]]] = None) -> List[Union[sqlglot.diff.Insert, sqlglot.diff.Remove, sqlglot.diff.Move, sqlglot.diff.Update, sqlglot.diff.Keep]]:", "funcdef": "def"}, "sqlglot.errors": {"fullname": "sqlglot.errors", "modulename": "sqlglot.errors", "kind": "module", "doc": "

\n"}, "sqlglot.errors.ErrorLevel": {"fullname": "sqlglot.errors.ErrorLevel", "modulename": "sqlglot.errors", "qualname": "ErrorLevel", "kind": "class", "doc": "

An enumeration.

\n", "bases": "sqlglot.helper.AutoName"}, "sqlglot.errors.ErrorLevel.IGNORE": {"fullname": "sqlglot.errors.ErrorLevel.IGNORE", "modulename": "sqlglot.errors", "qualname": "ErrorLevel.IGNORE", "kind": "variable", "doc": "

Ignore all errors.

\n", "default_value": "<ErrorLevel.IGNORE: 'IGNORE'>"}, "sqlglot.errors.ErrorLevel.WARN": {"fullname": "sqlglot.errors.ErrorLevel.WARN", "modulename": "sqlglot.errors", "qualname": "ErrorLevel.WARN", "kind": "variable", "doc": "

Log all errors.

\n", "default_value": "<ErrorLevel.WARN: 'WARN'>"}, "sqlglot.errors.ErrorLevel.RAISE": {"fullname": "sqlglot.errors.ErrorLevel.RAISE", "modulename": "sqlglot.errors", "qualname": "ErrorLevel.RAISE", "kind": "variable", "doc": "

Collect all errors and raise a single exception.

\n", "default_value": "<ErrorLevel.RAISE: 'RAISE'>"}, "sqlglot.errors.ErrorLevel.IMMEDIATE": {"fullname": "sqlglot.errors.ErrorLevel.IMMEDIATE", "modulename": "sqlglot.errors", "qualname": "ErrorLevel.IMMEDIATE", "kind": "variable", "doc": "

Immediately raise an exception on the first error found.

\n", "default_value": "<ErrorLevel.IMMEDIATE: 'IMMEDIATE'>"}, "sqlglot.errors.SqlglotError": {"fullname": "sqlglot.errors.SqlglotError", "modulename": "sqlglot.errors", "qualname": "SqlglotError", "kind": "class", "doc": "

Common base class for all non-exit exceptions.

\n", "bases": "builtins.Exception"}, "sqlglot.errors.UnsupportedError": {"fullname": "sqlglot.errors.UnsupportedError", "modulename": "sqlglot.errors", "qualname": "UnsupportedError", "kind": "class", "doc": "

Common base class for all non-exit exceptions.

\n", "bases": "SqlglotError"}, "sqlglot.errors.ParseError": {"fullname": "sqlglot.errors.ParseError", "modulename": "sqlglot.errors", "qualname": "ParseError", "kind": "class", "doc": "

Common base class for all non-exit exceptions.

\n", "bases": "SqlglotError"}, "sqlglot.errors.ParseError.__init__": {"fullname": "sqlglot.errors.ParseError.__init__", "modulename": "sqlglot.errors", "qualname": "ParseError.__init__", "kind": "function", "doc": "

\n", "signature": "(message: str, errors: Optional[List[Dict[str, Any]]] = None)"}, "sqlglot.errors.ParseError.new": {"fullname": "sqlglot.errors.ParseError.new", "modulename": "sqlglot.errors", "qualname": "ParseError.new", "kind": "function", "doc": "

\n", "signature": "(\tcls,\tmessage: str,\tdescription: Optional[str] = None,\tline: Optional[int] = None,\tcol: Optional[int] = None,\tstart_context: Optional[str] = None,\thighlight: Optional[str] = None,\tend_context: Optional[str] = None,\tinto_expression: Optional[str] = None) -> sqlglot.errors.ParseError:", "funcdef": "def"}, "sqlglot.errors.TokenError": {"fullname": "sqlglot.errors.TokenError", "modulename": "sqlglot.errors", "qualname": "TokenError", "kind": "class", "doc": "

Common base class for all non-exit exceptions.

\n", "bases": "SqlglotError"}, "sqlglot.errors.OptimizeError": {"fullname": "sqlglot.errors.OptimizeError", "modulename": "sqlglot.errors", "qualname": "OptimizeError", "kind": "class", "doc": "

Common base class for all non-exit exceptions.

\n", "bases": "SqlglotError"}, "sqlglot.errors.SchemaError": {"fullname": "sqlglot.errors.SchemaError", "modulename": "sqlglot.errors", "qualname": "SchemaError", "kind": "class", "doc": "

Common base class for all non-exit exceptions.

\n", "bases": "SqlglotError"}, "sqlglot.errors.ExecuteError": {"fullname": "sqlglot.errors.ExecuteError", "modulename": "sqlglot.errors", "qualname": "ExecuteError", "kind": "class", "doc": "

Common base class for all non-exit exceptions.

\n", "bases": "SqlglotError"}, "sqlglot.errors.concat_messages": {"fullname": "sqlglot.errors.concat_messages", "modulename": "sqlglot.errors", "qualname": "concat_messages", "kind": "function", "doc": "

\n", "signature": "(errors: Sequence[Any], maximum: int) -> str:", "funcdef": "def"}, "sqlglot.errors.merge_errors": {"fullname": "sqlglot.errors.merge_errors", "modulename": "sqlglot.errors", "qualname": "merge_errors", "kind": "function", "doc": "

\n", "signature": "(errors: Sequence[sqlglot.errors.ParseError]) -> List[Dict[str, Any]]:", "funcdef": "def"}, "sqlglot.executor": {"fullname": "sqlglot.executor", "modulename": "sqlglot.executor", "kind": "module", "doc": "

Writing a Python SQL engine from scratch

\n\n

Toby Mao

\n\n

Introduction

\n\n

When I first started writing SQLGlot in early 2021, my goal was just to translate SQL queries from SparkSQL to Presto and vice versa. However, over the last year and a half, I've ended up with a full-fledged SQL engine. SQLGlot can now parse and transpile between 18 SQL dialects and can execute all 24 TPC-H SQL queries. The parser and engine are all written from scratch using Python.

\n\n

This post will cover why I went through the effort of creating a Python SQL engine and how a simple query goes from a string to actually transforming data. The following steps are briefly summarized:

\n\n\n\n

Why?

\n\n

I started working on SQLGlot because of my work on the experimentation and metrics platform at Netflix, where I built tools that allowed data scientists to define and compute SQL-based metrics. Netflix relied on multiple engines to query data (Spark, Presto, and Druid), so my team built the metrics platform around PyPika, a Python SQL query builder. This way, definitions could be reused across multiple engines. However, it became quickly apparent that writing python code to programmatically generate SQL was challenging for data scientists, especially those with academic backgrounds, since they were mostly familiar with R and SQL. At the time, the only Python SQL parser was sqlparse, which is not actually a parser but a tokenizer, so having users write raw SQL into the platform wasn't really an option. Some time later, I randomly stumbled across Crafting Interpreters and realized that I could use it as a guide towards creating my own SQL parser/transpiler.

\n\n

Why did I do this? Isn't a Python SQL engine going to be extremely slow?

\n\n

The main reason why I ended up building a SQL engine was...just for entertainment. It's been fun learning about all the things required to actually run a SQL query, and seeing it actually work is extremely rewarding. Before SQLGlot, I had zero experience with lexers, parsers, or compilers.

\n\n

In terms of practical use cases, I planned to use the Python SQL engine for unit testing SQL pipelines. Big data pipelines are tough to test because many of the engines are not open source and cannot be run locally. With SQLGlot, you can take a SQL query targeting a warehouse such as Snowflake and seamlessly run it in CI on mock Python data. It's easy to mock data and create arbitrary UDFs because everything is just Python. Although the implementation is slow and unsuitable for large amounts of data (> 1 million rows), there's very little overhead/startup and you can run queries on test data in a couple of milliseconds.

\n\n

Finally, the components that have been built to support execution can be used as a foundation for a faster engine. I'm inspired by what Apache Calcite has done for the JVM world. Even though Python is commonly used for data, there hasn't been a Calcite for Python. So, you could say that SQLGlot aims to be that framework. For example, it wouldn't take much work to replace the Python execution engine with numpy/pandas/arrow to become a respectably-performing query engine. The implementation would be able to leverage the parser, optimizer, and logical planner, only needing to implement physical execution. There is a lot of work in the Python ecosystem around high performance vectorized computation, which I think could benefit from a pure Python-based AST/plan. Parsing and planning doesn't have to be fast when the bottleneck of running queries is processing terabytes of data. So, having a Python-based ecosystem around SQL is beneficial given the ease of development in Python, despite not having bare metal performance.

\n\n

Parts of SQLGlot's toolkit are being used today by the following:

\n\n
    \n
  • Ibis: A Python library that provides a lightweight, universal interface for data wrangling.\n
      \n
    • Uses the Python SQL expression builder and leverages the optimizer/planner to convert SQL into dataframe operations.
    • \n
  • \n
  • mysql-mimic: Pure-Python implementation of the MySQL server wire protocol\n
      \n
    • Parses / transforms SQL and executes INFORMATION_SCHEMA queries.
    • \n
  • \n
  • Quokka: Push-based vectorized query engine\n
      \n
    • Parse and optimizes SQL.
    • \n
  • \n
  • Splink: Fast, accurate and scalable probabilistic data linkage using your choice of SQL backend.\n
      \n
    • Transpiles queries.
    • \n
  • \n
\n\n

How?

\n\n

There are many steps involved with actually running a simple query like:

\n\n
\n
SELECT\n  bar.a,\n  b + 1 AS b\nFROM bar\nJOIN baz\n  ON bar.a = baz.a\nWHERE bar.a > 1\n
\n
\n\n

In this post, I'll walk through all the steps SQLGlot takes to run this query over Python objects.

\n\n

Tokenizing

\n\n

The first step is to convert the sql string into a list of tokens. SQLGlot's tokenizer is quite simple and can be found here. In a while loop, it checks each character and either appends the character to the current token, or makes a new token.

\n\n

Running the SQLGlot tokenizer shows the output.

\n\n

\"Tokenizer

\n\n

Each keyword has been converted to a SQLGlot Token object. Each token has some metadata associated with it, like line/column information for error messages. Comments are also a part of the token, so that comments can be preserved.

\n\n

Parsing

\n\n

Once a SQL statement is tokenized, we don't need to worry about white space and other formatting, so it's easier to work with. We can now convert the list of tokens into an AST. The SQLGlot parser is a handwritten recursive descent parser.

\n\n

Similar to the tokenizer, it consumes the tokens sequentially, but it instead uses a recursive algorithm. The tokens are converted into a single AST node that presents the SQL query. The SQLGlot parser was designed to support various dialects, so it contains many options for overriding parsing functionality.

\n\n

\"Parser

\n\n

The AST is a generic representation of a given SQL query. Each dialect can override or implement its own generator, which can convert an AST object into syntatically-correct SQL.

\n\n

Optimizing

\n\n

Once we have our AST, we can transform it into an equivalent query that produces the same results more efficiently. When optimizing queries, most engines first convert the AST into a logical plan and then optimize the plan. However, I chose to optimize the AST directly for the following reasons:

\n\n
    \n
  1. It's easier to debug and validate the optimizations when the input and output are both SQL.

  2. \n
  3. Rules can be applied a la carte to transform SQL into a more desirable form.

  4. \n
  5. I wanted a way to generate 'canonical sql'. Having a canonical representation of SQL is useful for understanding if two queries are semantically equivalent (e.g. SELECT 1 + 1 and SELECT 2).

  6. \n
\n\n

I've yet to find another engine that takes this approach, but I'm quite happy with this decision. The optimizer currently does not perform any \"physical optimizations\" such as join reordering. Those are left to the execution layer, as additional statistics and information could become relevant.

\n\n

\"Optimizer

\n\n

The optimizer currently has 17 rules. Each of these rules is applied, transforming the AST in place. The combination of these rules creates \"canonical\" sql that can then be more easily converted into a logical plan and executed.

\n\n

Some example rules are:

\n\n

qualify_tables and qualify_columns

\n\n
    \n
  • Adds all db/catalog qualifiers to tables and forces an alias.
  • \n
  • Ensure each column is unambiguous and expand stars.
  • \n
\n\n
\n
SELECT * FROM x;\n\nSELECT "db"."x" AS "x";\n
\n
\n\n

simplify

\n\n

Boolean and math simplification. Check out all the test cases.

\n\n
\n
((NOT FALSE) AND (x = x)) AND (TRUE OR 1 <> 3);\nx = x;\n\n1 + 1;\n2;\n
\n
\n\n

normalize

\n\n

Attempts to convert all predicates into conjunctive normal form.

\n\n
\n
-- DNF\n(A AND B) OR (B AND C AND D);\n\n-- CNF\n(A OR C) AND (A OR D) AND B;\n
\n
\n\n

unnest_subqueries

\n\n

Converts subqueries in predicates into joins.

\n\n
\n
-- The subquery can be converted into a left join\nSELECT *\nFROM x AS x\nWHERE (\n  SELECT y.a AS a\n  FROM y AS y\n  WHERE x.a = y.a\n) = 1;\n\nSELECT *\nFROM x AS x\nLEFT JOIN (\n  SELECT y.a AS a\n  FROM y AS y\n  WHERE TRUE\n  GROUP BY y.a\n) AS "_u_0"\n  ON x.a = "_u_0".a\nWHERE ("_u_0".a = 1 AND NOT "_u_0".a IS NULL)\n
\n
\n\n

pushdown_predicates

\n\n

Push down filters into the innermost query.

\n\n
\n
SELECT *\nFROM (\n  SELECT *\n  FROM x AS x\n) AS y\nWHERE y.a = 1;\n\nSELECT *\nFROM (\n  SELECT *\n  FROM x AS x\n  WHERE y.a = 1\n) AS y WHERE TRUE\n
\n
\n\n

annotate_types

\n\n

Infer all types throughout the AST given schema information and function type definitions.

\n\n

Planning

\n\n

After the SQL AST has been \"optimized\", it's much easier to convert into a logical plan. The AST is traversed and converted into a DAG consisting of one of five steps. The different steps are:

\n\n

Scan

\n\n

Selects columns from a table, applies projections, and finally filters the table.

\n\n

Sort

\n\n

Sorts a table for order by expressions.

\n\n

Set

\n\n

Applies the operators union/union all/except/intersect.

\n\n

Aggregate

\n\n

Applies an aggregation/group by.

\n\n

Join

\n\n

Joins multiple tables together.

\n\n

\"Planner

\n\n

The logical plan is quite simple and contains the information required to convert it into a physical plan (execution).

\n\n

Executing

\n\n

Finally, we can actually execute the SQL query. The Python engine is not fast, but it's very small (~400 LOC)! It iterates the DAG with a queue and runs each step, passing each intermediary table to the next step.

\n\n

In order to keep things simple, it evaluates expressions with eval. Because SQLGlot was built primarily to be a transpiler, it was simple to create a \"Python SQL\" dialect. So a SQL expression x + 1 can just be converted into scope['x'] + 1.

\n\n

\"Executor

\n\n

What's next

\n\n

SQLGlot's main focus will always be on parsing/transpiling, but I plan to continue development on the execution engine. I'd like to pass TPC-DS. If someone doesn't beat me to it, I may even take a stab at writing a Pandas/Arrow execution engine.

\n\n

I'm hoping that over time, SQLGlot will spark the Python SQL ecosystem just like Calcite has for Java.

\n\n

Special thanks

\n\n

SQLGlot would not be what it is without it's core contributors. In particular, the execution engine would not exist without Barak Alon and George Sittas.

\n\n

Get in touch

\n\n

If you'd like to chat more about SQLGlot, please join my Slack Channel!

\n\n
\n"}, "sqlglot.executor.execute": {"fullname": "sqlglot.executor.execute", "modulename": "sqlglot.executor", "qualname": "execute", "kind": "function", "doc": "

Run a sql query against data.

\n\n
Arguments:
\n\n
    \n
  • sql: a sql statement.
  • \n
  • schema: database schema.\nThis can either be an instance of Schema or a mapping in one of the following forms:\n
      \n
    1. {table: {col: type}}
    2. \n
    3. {db: {table: {col: type}}}
    4. \n
    5. {catalog: {db: {table: {col: type}}}}
    6. \n
  • \n
  • read: the SQL dialect to apply during parsing (eg. \"spark\", \"hive\", \"presto\", \"mysql\").
  • \n
  • tables: additional tables to register.
  • \n
\n\n
Returns:
\n\n
\n

Simple columnar data structure.

\n
\n", "signature": "(\tsql: str | sqlglot.expressions.Expression,\tschema: Union[Dict, sqlglot.schema.Schema, NoneType] = None,\tread: Union[str, sqlglot.dialects.dialect.Dialect, Type[sqlglot.dialects.dialect.Dialect], NoneType] = None,\ttables: Optional[Dict] = None) -> sqlglot.executor.table.Table:", "funcdef": "def"}, "sqlglot.executor.context": {"fullname": "sqlglot.executor.context", "modulename": "sqlglot.executor.context", "kind": "module", "doc": "

\n"}, "sqlglot.executor.context.Context": {"fullname": "sqlglot.executor.context.Context", "modulename": "sqlglot.executor.context", "qualname": "Context", "kind": "class", "doc": "

Execution context for sql expressions.

\n\n

Context is used to hold relevant data tables which can then be queried on with eval.

\n\n

References to columns can either be scalar or vectors. When set_row is used, column references\nevaluate to scalars while set_range evaluates to vectors. This allows convenient and efficient\nevaluation of aggregation functions.

\n"}, "sqlglot.executor.context.Context.__init__": {"fullname": "sqlglot.executor.context.Context.__init__", "modulename": "sqlglot.executor.context", "qualname": "Context.__init__", "kind": "function", "doc": "

Args\n tables: representing the scope of the current execution context.\n env: dictionary of functions within the execution context.

\n", "signature": "(\ttables: Dict[str, sqlglot.executor.table.Table],\tenv: Optional[Dict] = None)"}, "sqlglot.executor.context.Context.eval": {"fullname": "sqlglot.executor.context.Context.eval", "modulename": "sqlglot.executor.context", "qualname": "Context.eval", "kind": "function", "doc": "

\n", "signature": "(self, code):", "funcdef": "def"}, "sqlglot.executor.context.Context.eval_tuple": {"fullname": "sqlglot.executor.context.Context.eval_tuple", "modulename": "sqlglot.executor.context", "qualname": "Context.eval_tuple", "kind": "function", "doc": "

\n", "signature": "(self, codes):", "funcdef": "def"}, "sqlglot.executor.context.Context.add_columns": {"fullname": "sqlglot.executor.context.Context.add_columns", "modulename": "sqlglot.executor.context", "qualname": "Context.add_columns", "kind": "function", "doc": "

\n", "signature": "(self, *columns: str) -> None:", "funcdef": "def"}, "sqlglot.executor.context.Context.table_iter": {"fullname": "sqlglot.executor.context.Context.table_iter", "modulename": "sqlglot.executor.context", "qualname": "Context.table_iter", "kind": "function", "doc": "

\n", "signature": "(\tself,\ttable: str) -> Iterator[Tuple[sqlglot.executor.table.TableIter, sqlglot.executor.context.Context]]:", "funcdef": "def"}, "sqlglot.executor.context.Context.filter": {"fullname": "sqlglot.executor.context.Context.filter", "modulename": "sqlglot.executor.context", "qualname": "Context.filter", "kind": "function", "doc": "

\n", "signature": "(self, condition) -> None:", "funcdef": "def"}, "sqlglot.executor.context.Context.sort": {"fullname": "sqlglot.executor.context.Context.sort", "modulename": "sqlglot.executor.context", "qualname": "Context.sort", "kind": "function", "doc": "

\n", "signature": "(self, key) -> None:", "funcdef": "def"}, "sqlglot.executor.context.Context.set_row": {"fullname": "sqlglot.executor.context.Context.set_row", "modulename": "sqlglot.executor.context", "qualname": "Context.set_row", "kind": "function", "doc": "

\n", "signature": "(self, row: Tuple) -> None:", "funcdef": "def"}, "sqlglot.executor.context.Context.set_index": {"fullname": "sqlglot.executor.context.Context.set_index", "modulename": "sqlglot.executor.context", "qualname": "Context.set_index", "kind": "function", "doc": "

\n", "signature": "(self, index: int) -> None:", "funcdef": "def"}, "sqlglot.executor.context.Context.set_range": {"fullname": "sqlglot.executor.context.Context.set_range", "modulename": "sqlglot.executor.context", "qualname": "Context.set_range", "kind": "function", "doc": "

\n", "signature": "(self, start: int, end: int) -> None:", "funcdef": "def"}, "sqlglot.executor.env": {"fullname": "sqlglot.executor.env", "modulename": "sqlglot.executor.env", "kind": "module", "doc": "

\n"}, "sqlglot.executor.env.reverse_key": {"fullname": "sqlglot.executor.env.reverse_key", "modulename": "sqlglot.executor.env", "qualname": "reverse_key", "kind": "class", "doc": "

\n"}, "sqlglot.executor.env.reverse_key.__init__": {"fullname": "sqlglot.executor.env.reverse_key.__init__", "modulename": "sqlglot.executor.env", "qualname": "reverse_key.__init__", "kind": "function", "doc": "

\n", "signature": "(obj)"}, "sqlglot.executor.env.filter_nulls": {"fullname": "sqlglot.executor.env.filter_nulls", "modulename": "sqlglot.executor.env", "qualname": "filter_nulls", "kind": "function", "doc": "

\n", "signature": "(func, empty_null=True):", "funcdef": "def"}, "sqlglot.executor.env.null_if_any": {"fullname": "sqlglot.executor.env.null_if_any", "modulename": "sqlglot.executor.env", "qualname": "null_if_any", "kind": "function", "doc": "

Decorator that makes a function return None if any of the required arguments are None.

\n\n

This also supports decoration with no arguments, e.g.:

\n\n
@null_if_any\ndef foo(a, b): ...\n
\n\n

In which case all arguments are required.

\n", "signature": "(*required):", "funcdef": "def"}, "sqlglot.executor.env.str_position": {"fullname": "sqlglot.executor.env.str_position", "modulename": "sqlglot.executor.env", "qualname": "str_position", "kind": "function", "doc": "

\n", "signature": "(substr, this, position=None):", "funcdef": "def"}, "sqlglot.executor.env.substring": {"fullname": "sqlglot.executor.env.substring", "modulename": "sqlglot.executor.env", "qualname": "substring", "kind": "function", "doc": "

\n", "signature": "(this, start=None, length=None):", "funcdef": "def"}, "sqlglot.executor.env.cast": {"fullname": "sqlglot.executor.env.cast", "modulename": "sqlglot.executor.env", "qualname": "cast", "kind": "function", "doc": "

\n", "signature": "(this, to):", "funcdef": "def"}, "sqlglot.executor.env.ordered": {"fullname": "sqlglot.executor.env.ordered", "modulename": "sqlglot.executor.env", "qualname": "ordered", "kind": "function", "doc": "

\n", "signature": "(this, desc, nulls_first):", "funcdef": "def"}, "sqlglot.executor.env.interval": {"fullname": "sqlglot.executor.env.interval", "modulename": "sqlglot.executor.env", "qualname": "interval", "kind": "function", "doc": "

\n", "signature": "(this, unit):", "funcdef": "def"}, "sqlglot.executor.python": {"fullname": "sqlglot.executor.python", "modulename": "sqlglot.executor.python", "kind": "module", "doc": "

\n"}, "sqlglot.executor.python.PythonExecutor": {"fullname": "sqlglot.executor.python.PythonExecutor", "modulename": "sqlglot.executor.python", "qualname": "PythonExecutor", "kind": "class", "doc": "

\n"}, "sqlglot.executor.python.PythonExecutor.__init__": {"fullname": "sqlglot.executor.python.PythonExecutor.__init__", "modulename": "sqlglot.executor.python", "qualname": "PythonExecutor.__init__", "kind": "function", "doc": "

\n", "signature": "(env=None, tables=None)"}, "sqlglot.executor.python.PythonExecutor.execute": {"fullname": "sqlglot.executor.python.PythonExecutor.execute", "modulename": "sqlglot.executor.python", "qualname": "PythonExecutor.execute", "kind": "function", "doc": "

\n", "signature": "(self, plan):", "funcdef": "def"}, "sqlglot.executor.python.PythonExecutor.generate": {"fullname": "sqlglot.executor.python.PythonExecutor.generate", "modulename": "sqlglot.executor.python", "qualname": "PythonExecutor.generate", "kind": "function", "doc": "

Convert a SQL expression into literal Python code and compile it into bytecode.

\n", "signature": "(self, expression):", "funcdef": "def"}, "sqlglot.executor.python.PythonExecutor.generate_tuple": {"fullname": "sqlglot.executor.python.PythonExecutor.generate_tuple", "modulename": "sqlglot.executor.python", "qualname": "PythonExecutor.generate_tuple", "kind": "function", "doc": "

Convert an array of SQL expressions into tuple of Python byte code.

\n", "signature": "(self, expressions):", "funcdef": "def"}, "sqlglot.executor.python.PythonExecutor.context": {"fullname": "sqlglot.executor.python.PythonExecutor.context", "modulename": "sqlglot.executor.python", "qualname": "PythonExecutor.context", "kind": "function", "doc": "

\n", "signature": "(self, tables):", "funcdef": "def"}, "sqlglot.executor.python.PythonExecutor.table": {"fullname": "sqlglot.executor.python.PythonExecutor.table", "modulename": "sqlglot.executor.python", "qualname": "PythonExecutor.table", "kind": "function", "doc": "

\n", "signature": "(self, expressions):", "funcdef": "def"}, "sqlglot.executor.python.PythonExecutor.scan": {"fullname": "sqlglot.executor.python.PythonExecutor.scan", "modulename": "sqlglot.executor.python", "qualname": "PythonExecutor.scan", "kind": "function", "doc": "

\n", "signature": "(self, step, context):", "funcdef": "def"}, "sqlglot.executor.python.PythonExecutor.static": {"fullname": "sqlglot.executor.python.PythonExecutor.static", "modulename": "sqlglot.executor.python", "qualname": "PythonExecutor.static", "kind": "function", "doc": "

\n", "signature": "(self):", "funcdef": "def"}, "sqlglot.executor.python.PythonExecutor.scan_table": {"fullname": "sqlglot.executor.python.PythonExecutor.scan_table", "modulename": "sqlglot.executor.python", "qualname": "PythonExecutor.scan_table", "kind": "function", "doc": "

\n", "signature": "(self, step):", "funcdef": "def"}, "sqlglot.executor.python.PythonExecutor.scan_csv": {"fullname": "sqlglot.executor.python.PythonExecutor.scan_csv", "modulename": "sqlglot.executor.python", "qualname": "PythonExecutor.scan_csv", "kind": "function", "doc": "

\n", "signature": "(self, step):", "funcdef": "def"}, "sqlglot.executor.python.PythonExecutor.join": {"fullname": "sqlglot.executor.python.PythonExecutor.join", "modulename": "sqlglot.executor.python", "qualname": "PythonExecutor.join", "kind": "function", "doc": "

\n", "signature": "(self, step, context):", "funcdef": "def"}, "sqlglot.executor.python.PythonExecutor.nested_loop_join": {"fullname": "sqlglot.executor.python.PythonExecutor.nested_loop_join", "modulename": "sqlglot.executor.python", "qualname": "PythonExecutor.nested_loop_join", "kind": "function", "doc": "

\n", "signature": "(self, _join, source_context, join_context):", "funcdef": "def"}, "sqlglot.executor.python.PythonExecutor.hash_join": {"fullname": "sqlglot.executor.python.PythonExecutor.hash_join", "modulename": "sqlglot.executor.python", "qualname": "PythonExecutor.hash_join", "kind": "function", "doc": "

\n", "signature": "(self, join, source_context, join_context):", "funcdef": "def"}, "sqlglot.executor.python.PythonExecutor.aggregate": {"fullname": "sqlglot.executor.python.PythonExecutor.aggregate", "modulename": "sqlglot.executor.python", "qualname": "PythonExecutor.aggregate", "kind": "function", "doc": "

\n", "signature": "(self, step, context):", "funcdef": "def"}, "sqlglot.executor.python.PythonExecutor.sort": {"fullname": "sqlglot.executor.python.PythonExecutor.sort", "modulename": "sqlglot.executor.python", "qualname": "PythonExecutor.sort", "kind": "function", "doc": "

\n", "signature": "(self, step, context):", "funcdef": "def"}, "sqlglot.executor.python.PythonExecutor.set_operation": {"fullname": "sqlglot.executor.python.PythonExecutor.set_operation", "modulename": "sqlglot.executor.python", "qualname": "PythonExecutor.set_operation", "kind": "function", "doc": "

\n", "signature": "(self, step, context):", "funcdef": "def"}, "sqlglot.executor.python.Python": {"fullname": "sqlglot.executor.python.Python", "modulename": "sqlglot.executor.python", "qualname": "Python", "kind": "class", "doc": "

\n", "bases": "sqlglot.dialects.dialect.Dialect"}, "sqlglot.executor.python.Python.Tokenizer": {"fullname": "sqlglot.executor.python.Python.Tokenizer", "modulename": "sqlglot.executor.python", "qualname": "Python.Tokenizer", "kind": "class", "doc": "

\n", "bases": "sqlglot.tokens.Tokenizer"}, "sqlglot.executor.python.Python.Generator": {"fullname": "sqlglot.executor.python.Python.Generator", "modulename": "sqlglot.executor.python", "qualname": "Python.Generator", "kind": "class", "doc": "

Generator interprets the given syntax tree and produces a SQL string as an output.

\n\n
Arguments:
\n\n
    \n
  • time_mapping (dict): the dictionary of custom time mappings in which the key\nrepresents a python time format and the output the target time format
  • \n
  • time_trie (trie): a trie of the time_mapping keys
  • \n
  • pretty (bool): if set to True the returned string will be formatted. Default: False.
  • \n
  • quote_start (str): specifies which starting character to use to delimit quotes. Default: '.
  • \n
  • quote_end (str): specifies which ending character to use to delimit quotes. Default: '.
  • \n
  • identifier_start (str): specifies which starting character to use to delimit identifiers. Default: \".
  • \n
  • identifier_end (str): specifies which ending character to use to delimit identifiers. Default: \".
  • \n
  • identify (bool | str): 'always': always quote, 'safe': quote identifiers if they don't contain an upcase, True defaults to always.
  • \n
  • normalize (bool): if set to True all identifiers will lower cased
  • \n
  • string_escape (str): specifies a string escape character. Default: '.
  • \n
  • identifier_escape (str): specifies an identifier escape character. Default: \".
  • \n
  • pad (int): determines padding in a formatted string. Default: 2.
  • \n
  • indent (int): determines the size of indentation in a formatted string. Default: 4.
  • \n
  • unnest_column_only (bool): if true unnest table aliases are considered only as column aliases
  • \n
  • normalize_functions (str): normalize function names, \"upper\", \"lower\", or None\nDefault: \"upper\"
  • \n
  • alias_post_tablesample (bool): if the table alias comes after tablesample\nDefault: False
  • \n
  • unsupported_level (ErrorLevel): determines the generator's behavior when it encounters\nunsupported expressions. Default ErrorLevel.WARN.
  • \n
  • null_ordering (str): Indicates the default null ordering method to use if not explicitly set.\nOptions are \"nulls_are_small\", \"nulls_are_large\", \"nulls_are_last\".\nDefault: \"nulls_are_small\"
  • \n
  • max_unsupported (int): Maximum number of unsupported messages to include in a raised UnsupportedError.\nThis is only relevant if unsupported_level is ErrorLevel.RAISE.\nDefault: 3
  • \n
  • leading_comma (bool): if the the comma is leading or trailing in select statements\nDefault: False
  • \n
  • max_text_width: The max number of characters in a segment before creating new lines in pretty mode.\nThe default is on the smaller end because the length only represents a segment and not the true\nline length.\nDefault: 80
  • \n
  • comments: Whether or not to preserve comments in the output SQL code.\nDefault: True
  • \n
\n", "bases": "sqlglot.generator.Generator"}, "sqlglot.executor.table": {"fullname": "sqlglot.executor.table", "modulename": "sqlglot.executor.table", "kind": "module", "doc": "

\n"}, "sqlglot.executor.table.Table": {"fullname": "sqlglot.executor.table.Table", "modulename": "sqlglot.executor.table", "qualname": "Table", "kind": "class", "doc": "

\n"}, "sqlglot.executor.table.Table.__init__": {"fullname": "sqlglot.executor.table.Table.__init__", "modulename": "sqlglot.executor.table", "qualname": "Table.__init__", "kind": "function", "doc": "

\n", "signature": "(columns, rows=None, column_range=None)"}, "sqlglot.executor.table.Table.add_columns": {"fullname": "sqlglot.executor.table.Table.add_columns", "modulename": "sqlglot.executor.table", "qualname": "Table.add_columns", "kind": "function", "doc": "

\n", "signature": "(self, *columns: str) -> None:", "funcdef": "def"}, "sqlglot.executor.table.Table.append": {"fullname": "sqlglot.executor.table.Table.append", "modulename": "sqlglot.executor.table", "qualname": "Table.append", "kind": "function", "doc": "

\n", "signature": "(self, row):", "funcdef": "def"}, "sqlglot.executor.table.Table.pop": {"fullname": "sqlglot.executor.table.Table.pop", "modulename": "sqlglot.executor.table", "qualname": "Table.pop", "kind": "function", "doc": "

\n", "signature": "(self):", "funcdef": "def"}, "sqlglot.executor.table.TableIter": {"fullname": "sqlglot.executor.table.TableIter", "modulename": "sqlglot.executor.table", "qualname": "TableIter", "kind": "class", "doc": "

\n"}, "sqlglot.executor.table.TableIter.__init__": {"fullname": "sqlglot.executor.table.TableIter.__init__", "modulename": "sqlglot.executor.table", "qualname": "TableIter.__init__", "kind": "function", "doc": "

\n", "signature": "(table)"}, "sqlglot.executor.table.RangeReader": {"fullname": "sqlglot.executor.table.RangeReader", "modulename": "sqlglot.executor.table", "qualname": "RangeReader", "kind": "class", "doc": "

\n"}, "sqlglot.executor.table.RangeReader.__init__": {"fullname": "sqlglot.executor.table.RangeReader.__init__", "modulename": "sqlglot.executor.table", "qualname": "RangeReader.__init__", "kind": "function", "doc": "

\n", "signature": "(table)"}, "sqlglot.executor.table.RowReader": {"fullname": "sqlglot.executor.table.RowReader", "modulename": "sqlglot.executor.table", "qualname": "RowReader", "kind": "class", "doc": "

\n"}, "sqlglot.executor.table.RowReader.__init__": {"fullname": "sqlglot.executor.table.RowReader.__init__", "modulename": "sqlglot.executor.table", "qualname": "RowReader.__init__", "kind": "function", "doc": "

\n", "signature": "(columns, column_range=None)"}, "sqlglot.executor.table.Tables": {"fullname": "sqlglot.executor.table.Tables", "modulename": "sqlglot.executor.table", "qualname": "Tables", "kind": "class", "doc": "

Abstract base class for generic types.

\n\n

A generic type is typically declared by inheriting from\nthis class parameterized with one or more type variables.\nFor example, a generic mapping type might be defined as::

\n\n

class Mapping(Generic[KT, VT]):\n def __getitem__(self, key: KT) -> VT:\n ...\n # Etc.

\n\n

This class can then be used as follows::

\n\n

def lookup_name(mapping: Mapping[KT, VT], key: KT, default: VT) -> VT:\n try:\n return mapping[key]\n except KeyError:\n return default

\n", "bases": "sqlglot.schema.AbstractMappingSchema[sqlglot.executor.table.Table]"}, "sqlglot.executor.table.ensure_tables": {"fullname": "sqlglot.executor.table.ensure_tables", "modulename": "sqlglot.executor.table", "qualname": "ensure_tables", "kind": "function", "doc": "

\n", "signature": "(d: Optional[Dict]) -> sqlglot.executor.table.Tables:", "funcdef": "def"}, "sqlglot.expressions": {"fullname": "sqlglot.expressions", "modulename": "sqlglot.expressions", "kind": "module", "doc": "

Expressions

\n\n

Every AST node in SQLGlot is represented by a subclass of Expression.

\n\n

This module contains the implementation of all supported Expression types. Additionally,\nit exposes a number of helper functions, which are mainly used to programmatically build\nSQL expressions, such as sqlglot.expressions.select.

\n\n
\n"}, "sqlglot.expressions.Expression": {"fullname": "sqlglot.expressions.Expression", "modulename": "sqlglot.expressions", "qualname": "Expression", "kind": "class", "doc": "

The base class for all expressions in a syntax tree. Each Expression encapsulates any necessary\ncontext, such as its child expressions, their names (arg keys), and whether a given child expression\nis optional or not.

\n\n
Attributes:
\n\n
    \n
  • key: a unique key for each class in the Expression hierarchy. This is useful for hashing\nand representing expressions as strings.
  • \n
  • arg_types: determines what arguments (child nodes) are supported by an expression. It\nmaps arg keys to booleans that indicate whether the corresponding args are optional.
  • \n
\n\n
Example:
\n\n
\n
\n
>>> class Foo(Expression):\n...     arg_types = {"this": True, "expression": False}\n
\n
\n \n

The above definition informs us that Foo is an Expression that requires an argument called\n \"this\" and may also optionally receive an argument called \"expression\".

\n
\n\n
Arguments:
\n\n
    \n
  • args: a mapping used for retrieving the arguments of an expression, given their arg keys.
  • \n
  • parent: a reference to the parent expression (or None, in case of root expressions).
  • \n
  • arg_key: the arg key an expression is associated with, i.e. the name its parent expression\nuses to refer to it.
  • \n
  • comments: a list of comments that are associated with a given expression. This is used in\norder to preserve comments when transpiling SQL code.
  • \n
  • _type: the sqlglot.expressions.DataType type of an expression. This is inferred by the\noptimizer, in order to enable some transformations that require type information.
  • \n
\n"}, "sqlglot.expressions.Expression.__init__": {"fullname": "sqlglot.expressions.Expression.__init__", "modulename": "sqlglot.expressions", "qualname": "Expression.__init__", "kind": "function", "doc": "

\n", "signature": "(**args: Any)"}, "sqlglot.expressions.Expression.this": {"fullname": "sqlglot.expressions.Expression.this", "modulename": "sqlglot.expressions", "qualname": "Expression.this", "kind": "variable", "doc": "

Retrieves the argument with key \"this\".

\n"}, "sqlglot.expressions.Expression.expression": {"fullname": "sqlglot.expressions.Expression.expression", "modulename": "sqlglot.expressions", "qualname": "Expression.expression", "kind": "variable", "doc": "

Retrieves the argument with key \"expression\".

\n"}, "sqlglot.expressions.Expression.expressions": {"fullname": "sqlglot.expressions.Expression.expressions", "modulename": "sqlglot.expressions", "qualname": "Expression.expressions", "kind": "variable", "doc": "

Retrieves the argument with key \"expressions\".

\n"}, "sqlglot.expressions.Expression.text": {"fullname": "sqlglot.expressions.Expression.text", "modulename": "sqlglot.expressions", "qualname": "Expression.text", "kind": "function", "doc": "

Returns a textual representation of the argument corresponding to \"key\". This can only be used\nfor args that are strings or leaf Expression instances, such as identifiers and literals.

\n", "signature": "(self, key) -> str:", "funcdef": "def"}, "sqlglot.expressions.Expression.is_string": {"fullname": "sqlglot.expressions.Expression.is_string", "modulename": "sqlglot.expressions", "qualname": "Expression.is_string", "kind": "variable", "doc": "

Checks whether a Literal expression is a string.

\n", "annotation": ": bool"}, "sqlglot.expressions.Expression.is_number": {"fullname": "sqlglot.expressions.Expression.is_number", "modulename": "sqlglot.expressions", "qualname": "Expression.is_number", "kind": "variable", "doc": "

Checks whether a Literal expression is a number.

\n", "annotation": ": bool"}, "sqlglot.expressions.Expression.is_int": {"fullname": "sqlglot.expressions.Expression.is_int", "modulename": "sqlglot.expressions", "qualname": "Expression.is_int", "kind": "variable", "doc": "

Checks whether a Literal expression is an integer.

\n", "annotation": ": bool"}, "sqlglot.expressions.Expression.is_star": {"fullname": "sqlglot.expressions.Expression.is_star", "modulename": "sqlglot.expressions", "qualname": "Expression.is_star", "kind": "variable", "doc": "

Checks whether an expression is a star.

\n", "annotation": ": bool"}, "sqlglot.expressions.Expression.alias": {"fullname": "sqlglot.expressions.Expression.alias", "modulename": "sqlglot.expressions", "qualname": "Expression.alias", "kind": "variable", "doc": "

Returns the alias of the expression, or an empty string if it's not aliased.

\n", "annotation": ": str"}, "sqlglot.expressions.Expression.output_name": {"fullname": "sqlglot.expressions.Expression.output_name", "modulename": "sqlglot.expressions", "qualname": "Expression.output_name", "kind": "variable", "doc": "

Name of the output column if this expression is a selection.

\n\n

If the Expression has no output name, an empty string is returned.

\n\n
Example:
\n\n
\n
\n
>>> from sqlglot import parse_one\n>>> parse_one("SELECT a").expressions[0].output_name\n'a'\n>>> parse_one("SELECT b AS c").expressions[0].output_name\n'c'\n>>> parse_one("SELECT 1 + 2").expressions[0].output_name\n''\n
\n
\n
\n"}, "sqlglot.expressions.Expression.copy": {"fullname": "sqlglot.expressions.Expression.copy", "modulename": "sqlglot.expressions", "qualname": "Expression.copy", "kind": "function", "doc": "

Returns a deep copy of the expression.

\n", "signature": "(self):", "funcdef": "def"}, "sqlglot.expressions.Expression.append": {"fullname": "sqlglot.expressions.Expression.append", "modulename": "sqlglot.expressions", "qualname": "Expression.append", "kind": "function", "doc": "

Appends value to arg_key if it's a list or sets it as a new list.

\n\n
Arguments:
\n\n
    \n
  • arg_key (str): name of the list expression arg
  • \n
  • value (Any): value to append to the list
  • \n
\n", "signature": "(self, arg_key, value):", "funcdef": "def"}, "sqlglot.expressions.Expression.set": {"fullname": "sqlglot.expressions.Expression.set", "modulename": "sqlglot.expressions", "qualname": "Expression.set", "kind": "function", "doc": "

Sets arg_key to value.

\n\n
Arguments:
\n\n
    \n
  • arg_key (str): name of the expression arg.
  • \n
  • value: value to set the arg to.
  • \n
\n", "signature": "(self, arg_key, value):", "funcdef": "def"}, "sqlglot.expressions.Expression.depth": {"fullname": "sqlglot.expressions.Expression.depth", "modulename": "sqlglot.expressions", "qualname": "Expression.depth", "kind": "variable", "doc": "

Returns the depth of this tree.

\n"}, "sqlglot.expressions.Expression.iter_expressions": {"fullname": "sqlglot.expressions.Expression.iter_expressions", "modulename": "sqlglot.expressions", "qualname": "Expression.iter_expressions", "kind": "function", "doc": "

Yields the key and expression for all arguments, exploding list args.

\n", "signature": "(self) -> Iterator[Tuple[str, sqlglot.expressions.Expression]]:", "funcdef": "def"}, "sqlglot.expressions.Expression.find": {"fullname": "sqlglot.expressions.Expression.find", "modulename": "sqlglot.expressions", "qualname": "Expression.find", "kind": "function", "doc": "

Returns the first node in this tree which matches at least one of\nthe specified types.

\n\n
Arguments:
\n\n
    \n
  • expression_types: the expression type(s) to match.
  • \n
\n\n
Returns:
\n\n
\n

The node which matches the criteria or None if no such node was found.

\n
\n", "signature": "(self, *expression_types: Type[~E], bfs=True) -> Optional[~E]:", "funcdef": "def"}, "sqlglot.expressions.Expression.find_all": {"fullname": "sqlglot.expressions.Expression.find_all", "modulename": "sqlglot.expressions", "qualname": "Expression.find_all", "kind": "function", "doc": "

Returns a generator object which visits all nodes in this tree and only\nyields those that match at least one of the specified expression types.

\n\n
Arguments:
\n\n
    \n
  • expression_types: the expression type(s) to match.
  • \n
\n\n
Returns:
\n\n
\n

The generator object.

\n
\n", "signature": "(self, *expression_types: Type[~E], bfs=True) -> Iterator[~E]:", "funcdef": "def"}, "sqlglot.expressions.Expression.find_ancestor": {"fullname": "sqlglot.expressions.Expression.find_ancestor", "modulename": "sqlglot.expressions", "qualname": "Expression.find_ancestor", "kind": "function", "doc": "

Returns a nearest parent matching expression_types.

\n\n
Arguments:
\n\n
    \n
  • expression_types: the expression type(s) to match.
  • \n
\n\n
Returns:
\n\n
\n

The parent node.

\n
\n", "signature": "(self, *expression_types: Type[~E]) -> Optional[~E]:", "funcdef": "def"}, "sqlglot.expressions.Expression.parent_select": {"fullname": "sqlglot.expressions.Expression.parent_select", "modulename": "sqlglot.expressions", "qualname": "Expression.parent_select", "kind": "variable", "doc": "

Returns the parent select statement.

\n"}, "sqlglot.expressions.Expression.same_parent": {"fullname": "sqlglot.expressions.Expression.same_parent", "modulename": "sqlglot.expressions", "qualname": "Expression.same_parent", "kind": "variable", "doc": "

Returns if the parent is the same class as itself.

\n"}, "sqlglot.expressions.Expression.root": {"fullname": "sqlglot.expressions.Expression.root", "modulename": "sqlglot.expressions", "qualname": "Expression.root", "kind": "function", "doc": "

Returns the root expression of this tree.

\n", "signature": "(self) -> sqlglot.expressions.Expression:", "funcdef": "def"}, "sqlglot.expressions.Expression.walk": {"fullname": "sqlglot.expressions.Expression.walk", "modulename": "sqlglot.expressions", "qualname": "Expression.walk", "kind": "function", "doc": "

Returns a generator object which visits all nodes in this tree.

\n\n
Arguments:
\n\n
    \n
  • bfs (bool): if set to True the BFS traversal order will be applied,\notherwise the DFS traversal will be used instead.
  • \n
  • prune ((node, parent, arg_key) -> bool): callable that returns True if\nthe generator should stop traversing this branch of the tree.
  • \n
\n\n
Returns:
\n\n
\n

the generator object.

\n
\n", "signature": "(self, bfs=True, prune=None):", "funcdef": "def"}, "sqlglot.expressions.Expression.dfs": {"fullname": "sqlglot.expressions.Expression.dfs", "modulename": "sqlglot.expressions", "qualname": "Expression.dfs", "kind": "function", "doc": "

Returns a generator object which visits all nodes in this tree in\nthe DFS (Depth-first) order.

\n\n
Returns:
\n\n
\n

The generator object.

\n
\n", "signature": "(self, parent=None, key=None, prune=None):", "funcdef": "def"}, "sqlglot.expressions.Expression.bfs": {"fullname": "sqlglot.expressions.Expression.bfs", "modulename": "sqlglot.expressions", "qualname": "Expression.bfs", "kind": "function", "doc": "

Returns a generator object which visits all nodes in this tree in\nthe BFS (Breadth-first) order.

\n\n
Returns:
\n\n
\n

The generator object.

\n
\n", "signature": "(self, prune=None):", "funcdef": "def"}, "sqlglot.expressions.Expression.unnest": {"fullname": "sqlglot.expressions.Expression.unnest", "modulename": "sqlglot.expressions", "qualname": "Expression.unnest", "kind": "function", "doc": "

Returns the first non parenthesis child or self.

\n", "signature": "(self):", "funcdef": "def"}, "sqlglot.expressions.Expression.unalias": {"fullname": "sqlglot.expressions.Expression.unalias", "modulename": "sqlglot.expressions", "qualname": "Expression.unalias", "kind": "function", "doc": "

Returns the inner expression if this is an Alias.

\n", "signature": "(self):", "funcdef": "def"}, "sqlglot.expressions.Expression.unnest_operands": {"fullname": "sqlglot.expressions.Expression.unnest_operands", "modulename": "sqlglot.expressions", "qualname": "Expression.unnest_operands", "kind": "function", "doc": "

Returns unnested operands as a tuple.

\n", "signature": "(self):", "funcdef": "def"}, "sqlglot.expressions.Expression.flatten": {"fullname": "sqlglot.expressions.Expression.flatten", "modulename": "sqlglot.expressions", "qualname": "Expression.flatten", "kind": "function", "doc": "

Returns a generator which yields child nodes who's parents are the same class.

\n\n

A AND B AND C -> [A, B, C]

\n", "signature": "(self, unnest=True):", "funcdef": "def"}, "sqlglot.expressions.Expression.sql": {"fullname": "sqlglot.expressions.Expression.sql", "modulename": "sqlglot.expressions", "qualname": "Expression.sql", "kind": "function", "doc": "

Returns SQL string representation of this tree.

\n\n
Arguments:
\n\n
    \n
  • dialect: the dialect of the output SQL string (eg. \"spark\", \"hive\", \"presto\", \"mysql\").
  • \n
  • opts: other sqlglot.generator.Generator options.
  • \n
\n\n
Returns:
\n\n
\n

The SQL string.

\n
\n", "signature": "(\tself,\tdialect: Union[str, sqlglot.dialects.dialect.Dialect, Type[sqlglot.dialects.dialect.Dialect], NoneType] = None,\t**opts) -> str:", "funcdef": "def"}, "sqlglot.expressions.Expression.transform": {"fullname": "sqlglot.expressions.Expression.transform", "modulename": "sqlglot.expressions", "qualname": "Expression.transform", "kind": "function", "doc": "

Recursively visits all tree nodes (excluding already transformed ones)\nand applies the given transformation function to each node.

\n\n
Arguments:
\n\n
    \n
  • fun (function): a function which takes a node as an argument and returns a\nnew transformed node or the same node without modifications. If the function\nreturns None, then the corresponding node will be removed from the syntax tree.
  • \n
  • copy (bool): if set to True a new tree instance is constructed, otherwise the tree is\nmodified in place.
  • \n
\n\n
Returns:
\n\n
\n

The transformed tree.

\n
\n", "signature": "(self, fun, *args, copy=True, **kwargs):", "funcdef": "def"}, "sqlglot.expressions.Expression.replace": {"fullname": "sqlglot.expressions.Expression.replace", "modulename": "sqlglot.expressions", "qualname": "Expression.replace", "kind": "function", "doc": "

Swap out this expression with a new expression.

\n\n

For example::

\n\n
>>> tree = Select().select(\"x\").from_(\"tbl\")\n>>> tree.find(Column).replace(Column(this=\"y\"))\n(COLUMN this: y)\n>>> tree.sql()\n'SELECT y FROM tbl'\n
\n\n
Arguments:
\n\n
    \n
  • expression (Expression|None): new node
  • \n
\n\n
Returns:
\n\n
\n

The new expression or expressions.

\n
\n", "signature": "(self, expression):", "funcdef": "def"}, "sqlglot.expressions.Expression.pop": {"fullname": "sqlglot.expressions.Expression.pop", "modulename": "sqlglot.expressions", "qualname": "Expression.pop", "kind": "function", "doc": "

Remove this expression from its AST.

\n\n
Returns:
\n\n
\n

The popped expression.

\n
\n", "signature": "(self):", "funcdef": "def"}, "sqlglot.expressions.Expression.assert_is": {"fullname": "sqlglot.expressions.Expression.assert_is", "modulename": "sqlglot.expressions", "qualname": "Expression.assert_is", "kind": "function", "doc": "

Assert that this Expression is an instance of type_.

\n\n

If it is NOT an instance of type_, this raises an assertion error.\nOtherwise, this returns this expression.

\n\n
Examples:
\n\n
\n

This is useful for type security in chained expressions:

\n \n
\n
>>> import sqlglot\n>>> sqlglot.parse_one("SELECT x from y").assert_is(Select).select("z").sql()\n'SELECT x, z FROM y'\n
\n
\n
\n", "signature": "(self, type_):", "funcdef": "def"}, "sqlglot.expressions.Expression.error_messages": {"fullname": "sqlglot.expressions.Expression.error_messages", "modulename": "sqlglot.expressions", "qualname": "Expression.error_messages", "kind": "function", "doc": "

Checks if this expression is valid (e.g. all mandatory args are set).

\n\n
Arguments:
\n\n
    \n
  • args: a sequence of values that were used to instantiate a Func expression. This is used\nto check that the provided arguments don't exceed the function argument limit.
  • \n
\n\n
Returns:
\n\n
\n

A list of error messages for all possible errors that were found.

\n
\n", "signature": "(self, args: Optional[Sequence] = None) -> List[str]:", "funcdef": "def"}, "sqlglot.expressions.Expression.dump": {"fullname": "sqlglot.expressions.Expression.dump", "modulename": "sqlglot.expressions", "qualname": "Expression.dump", "kind": "function", "doc": "

Dump this Expression to a JSON-serializable dict.

\n", "signature": "(self):", "funcdef": "def"}, "sqlglot.expressions.Expression.load": {"fullname": "sqlglot.expressions.Expression.load", "modulename": "sqlglot.expressions", "qualname": "Expression.load", "kind": "function", "doc": "

Load a dict (as returned by Expression.dump) into an Expression instance.

\n", "signature": "(cls, obj):", "funcdef": "def"}, "sqlglot.expressions.Condition": {"fullname": "sqlglot.expressions.Condition", "modulename": "sqlglot.expressions", "qualname": "Condition", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Condition.and_": {"fullname": "sqlglot.expressions.Condition.and_", "modulename": "sqlglot.expressions", "qualname": "Condition.and_", "kind": "function", "doc": "

AND this condition with one or multiple expressions.

\n\n
Example:
\n\n
\n
\n
>>> condition("x=1").and_("y=1").sql()\n'x = 1 AND y = 1'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • *expressions (str | Expression): the SQL code strings to parse.\nIf an Expression instance is passed, it will be used as-is.
  • \n
  • dialect (str): the dialect used to parse the input expression.
  • \n
  • opts (kwargs): other options to use to parse the input expressions.
  • \n
\n\n
Returns:
\n\n
\n

And: the new condition.

\n
\n", "signature": "(self, *expressions, dialect=None, **opts):", "funcdef": "def"}, "sqlglot.expressions.Condition.or_": {"fullname": "sqlglot.expressions.Condition.or_", "modulename": "sqlglot.expressions", "qualname": "Condition.or_", "kind": "function", "doc": "

OR this condition with one or multiple expressions.

\n\n
Example:
\n\n
\n
\n
>>> condition("x=1").or_("y=1").sql()\n'x = 1 OR y = 1'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • *expressions (str | Expression): the SQL code strings to parse.\nIf an Expression instance is passed, it will be used as-is.
  • \n
  • dialect (str): the dialect used to parse the input expression.
  • \n
  • opts (kwargs): other options to use to parse the input expressions.
  • \n
\n\n
Returns:
\n\n
\n

Or: the new condition.

\n
\n", "signature": "(self, *expressions, dialect=None, **opts):", "funcdef": "def"}, "sqlglot.expressions.Condition.not_": {"fullname": "sqlglot.expressions.Condition.not_", "modulename": "sqlglot.expressions", "qualname": "Condition.not_", "kind": "function", "doc": "

Wrap this condition with NOT.

\n\n
Example:
\n\n
\n
\n
>>> condition("x=1").not_().sql()\n'NOT x = 1'\n
\n
\n
\n\n
Returns:
\n\n
\n

Not: the new condition.

\n
\n", "signature": "(self):", "funcdef": "def"}, "sqlglot.expressions.Predicate": {"fullname": "sqlglot.expressions.Predicate", "modulename": "sqlglot.expressions", "qualname": "Predicate", "kind": "class", "doc": "

Relationships like x = y, x > 1, x >= y.

\n", "bases": "Condition"}, "sqlglot.expressions.DerivedTable": {"fullname": "sqlglot.expressions.DerivedTable", "modulename": "sqlglot.expressions", "qualname": "DerivedTable", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Unionable": {"fullname": "sqlglot.expressions.Unionable", "modulename": "sqlglot.expressions", "qualname": "Unionable", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Unionable.union": {"fullname": "sqlglot.expressions.Unionable.union", "modulename": "sqlglot.expressions", "qualname": "Unionable.union", "kind": "function", "doc": "

Builds a UNION expression.

\n\n
Example:
\n\n
\n
\n
>>> import sqlglot\n>>> sqlglot.parse_one("SELECT * FROM foo").union("SELECT * FROM bla").sql()\n'SELECT * FROM foo UNION SELECT * FROM bla'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • expression (str | Expression): the SQL code string.\nIf an Expression instance is passed, it will be used as-is.
  • \n
  • distinct (bool): set the DISTINCT flag if and only if this is true.
  • \n
  • dialect (str): the dialect used to parse the input expression.
  • \n
  • opts (kwargs): other options to use to parse the input expressions.
  • \n
\n\n
Returns:
\n\n
\n

Union: the Union expression.

\n
\n", "signature": "(self, expression, distinct=True, dialect=None, **opts):", "funcdef": "def"}, "sqlglot.expressions.Unionable.intersect": {"fullname": "sqlglot.expressions.Unionable.intersect", "modulename": "sqlglot.expressions", "qualname": "Unionable.intersect", "kind": "function", "doc": "

Builds an INTERSECT expression.

\n\n
Example:
\n\n
\n
\n
>>> import sqlglot\n>>> sqlglot.parse_one("SELECT * FROM foo").intersect("SELECT * FROM bla").sql()\n'SELECT * FROM foo INTERSECT SELECT * FROM bla'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • expression (str | Expression): the SQL code string.\nIf an Expression instance is passed, it will be used as-is.
  • \n
  • distinct (bool): set the DISTINCT flag if and only if this is true.
  • \n
  • dialect (str): the dialect used to parse the input expression.
  • \n
  • opts (kwargs): other options to use to parse the input expressions.
  • \n
\n\n
Returns:
\n\n
\n

Intersect: the Intersect expression

\n
\n", "signature": "(self, expression, distinct=True, dialect=None, **opts):", "funcdef": "def"}, "sqlglot.expressions.Unionable.except_": {"fullname": "sqlglot.expressions.Unionable.except_", "modulename": "sqlglot.expressions", "qualname": "Unionable.except_", "kind": "function", "doc": "

Builds an EXCEPT expression.

\n\n
Example:
\n\n
\n
\n
>>> import sqlglot\n>>> sqlglot.parse_one("SELECT * FROM foo").except_("SELECT * FROM bla").sql()\n'SELECT * FROM foo EXCEPT SELECT * FROM bla'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • expression (str | Expression): the SQL code string.\nIf an Expression instance is passed, it will be used as-is.
  • \n
  • distinct (bool): set the DISTINCT flag if and only if this is true.
  • \n
  • dialect (str): the dialect used to parse the input expression.
  • \n
  • opts (kwargs): other options to use to parse the input expressions.
  • \n
\n\n
Returns:
\n\n
\n

Except: the Except expression

\n
\n", "signature": "(self, expression, distinct=True, dialect=None, **opts):", "funcdef": "def"}, "sqlglot.expressions.UDTF": {"fullname": "sqlglot.expressions.UDTF", "modulename": "sqlglot.expressions", "qualname": "UDTF", "kind": "class", "doc": "

\n", "bases": "DerivedTable, Unionable"}, "sqlglot.expressions.Cache": {"fullname": "sqlglot.expressions.Cache", "modulename": "sqlglot.expressions", "qualname": "Cache", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Uncache": {"fullname": "sqlglot.expressions.Uncache", "modulename": "sqlglot.expressions", "qualname": "Uncache", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Create": {"fullname": "sqlglot.expressions.Create", "modulename": "sqlglot.expressions", "qualname": "Create", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Describe": {"fullname": "sqlglot.expressions.Describe", "modulename": "sqlglot.expressions", "qualname": "Describe", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Pragma": {"fullname": "sqlglot.expressions.Pragma", "modulename": "sqlglot.expressions", "qualname": "Pragma", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Set": {"fullname": "sqlglot.expressions.Set", "modulename": "sqlglot.expressions", "qualname": "Set", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.SetItem": {"fullname": "sqlglot.expressions.SetItem", "modulename": "sqlglot.expressions", "qualname": "SetItem", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Show": {"fullname": "sqlglot.expressions.Show", "modulename": "sqlglot.expressions", "qualname": "Show", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.UserDefinedFunction": {"fullname": "sqlglot.expressions.UserDefinedFunction", "modulename": "sqlglot.expressions", "qualname": "UserDefinedFunction", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.CharacterSet": {"fullname": "sqlglot.expressions.CharacterSet", "modulename": "sqlglot.expressions", "qualname": "CharacterSet", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.With": {"fullname": "sqlglot.expressions.With", "modulename": "sqlglot.expressions", "qualname": "With", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.WithinGroup": {"fullname": "sqlglot.expressions.WithinGroup", "modulename": "sqlglot.expressions", "qualname": "WithinGroup", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.CTE": {"fullname": "sqlglot.expressions.CTE", "modulename": "sqlglot.expressions", "qualname": "CTE", "kind": "class", "doc": "

\n", "bases": "DerivedTable"}, "sqlglot.expressions.TableAlias": {"fullname": "sqlglot.expressions.TableAlias", "modulename": "sqlglot.expressions", "qualname": "TableAlias", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.BitString": {"fullname": "sqlglot.expressions.BitString", "modulename": "sqlglot.expressions", "qualname": "BitString", "kind": "class", "doc": "

\n", "bases": "Condition"}, "sqlglot.expressions.HexString": {"fullname": "sqlglot.expressions.HexString", "modulename": "sqlglot.expressions", "qualname": "HexString", "kind": "class", "doc": "

\n", "bases": "Condition"}, "sqlglot.expressions.ByteString": {"fullname": "sqlglot.expressions.ByteString", "modulename": "sqlglot.expressions", "qualname": "ByteString", "kind": "class", "doc": "

\n", "bases": "Condition"}, "sqlglot.expressions.Column": {"fullname": "sqlglot.expressions.Column", "modulename": "sqlglot.expressions", "qualname": "Column", "kind": "class", "doc": "

\n", "bases": "Condition"}, "sqlglot.expressions.Column.output_name": {"fullname": "sqlglot.expressions.Column.output_name", "modulename": "sqlglot.expressions", "qualname": "Column.output_name", "kind": "variable", "doc": "

Name of the output column if this expression is a selection.

\n\n

If the Expression has no output name, an empty string is returned.

\n\n
Example:
\n\n
\n
\n
>>> from sqlglot import parse_one\n>>> parse_one("SELECT a").expressions[0].output_name\n'a'\n>>> parse_one("SELECT b AS c").expressions[0].output_name\n'c'\n>>> parse_one("SELECT 1 + 2").expressions[0].output_name\n''\n
\n
\n
\n", "annotation": ": str"}, "sqlglot.expressions.Column.parts": {"fullname": "sqlglot.expressions.Column.parts", "modulename": "sqlglot.expressions", "qualname": "Column.parts", "kind": "variable", "doc": "

Return the parts of a column in order catalog, db, table, name.

\n", "annotation": ": List[sqlglot.expressions.Identifier]"}, "sqlglot.expressions.Column.to_dot": {"fullname": "sqlglot.expressions.Column.to_dot", "modulename": "sqlglot.expressions", "qualname": "Column.to_dot", "kind": "function", "doc": "

Converts the column into a dot expression.

\n", "signature": "(self) -> sqlglot.expressions.Dot:", "funcdef": "def"}, "sqlglot.expressions.ColumnPosition": {"fullname": "sqlglot.expressions.ColumnPosition", "modulename": "sqlglot.expressions", "qualname": "ColumnPosition", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.ColumnDef": {"fullname": "sqlglot.expressions.ColumnDef", "modulename": "sqlglot.expressions", "qualname": "ColumnDef", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.AlterColumn": {"fullname": "sqlglot.expressions.AlterColumn", "modulename": "sqlglot.expressions", "qualname": "AlterColumn", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.RenameTable": {"fullname": "sqlglot.expressions.RenameTable", "modulename": "sqlglot.expressions", "qualname": "RenameTable", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.SetTag": {"fullname": "sqlglot.expressions.SetTag", "modulename": "sqlglot.expressions", "qualname": "SetTag", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Comment": {"fullname": "sqlglot.expressions.Comment", "modulename": "sqlglot.expressions", "qualname": "Comment", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.ColumnConstraint": {"fullname": "sqlglot.expressions.ColumnConstraint", "modulename": "sqlglot.expressions", "qualname": "ColumnConstraint", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.ColumnConstraintKind": {"fullname": "sqlglot.expressions.ColumnConstraintKind", "modulename": "sqlglot.expressions", "qualname": "ColumnConstraintKind", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.AutoIncrementColumnConstraint": {"fullname": "sqlglot.expressions.AutoIncrementColumnConstraint", "modulename": "sqlglot.expressions", "qualname": "AutoIncrementColumnConstraint", "kind": "class", "doc": "

\n", "bases": "ColumnConstraintKind"}, "sqlglot.expressions.CaseSpecificColumnConstraint": {"fullname": "sqlglot.expressions.CaseSpecificColumnConstraint", "modulename": "sqlglot.expressions", "qualname": "CaseSpecificColumnConstraint", "kind": "class", "doc": "

\n", "bases": "ColumnConstraintKind"}, "sqlglot.expressions.CharacterSetColumnConstraint": {"fullname": "sqlglot.expressions.CharacterSetColumnConstraint", "modulename": "sqlglot.expressions", "qualname": "CharacterSetColumnConstraint", "kind": "class", "doc": "

\n", "bases": "ColumnConstraintKind"}, "sqlglot.expressions.CheckColumnConstraint": {"fullname": "sqlglot.expressions.CheckColumnConstraint", "modulename": "sqlglot.expressions", "qualname": "CheckColumnConstraint", "kind": "class", "doc": "

\n", "bases": "ColumnConstraintKind"}, "sqlglot.expressions.CollateColumnConstraint": {"fullname": "sqlglot.expressions.CollateColumnConstraint", "modulename": "sqlglot.expressions", "qualname": "CollateColumnConstraint", "kind": "class", "doc": "

\n", "bases": "ColumnConstraintKind"}, "sqlglot.expressions.CommentColumnConstraint": {"fullname": "sqlglot.expressions.CommentColumnConstraint", "modulename": "sqlglot.expressions", "qualname": "CommentColumnConstraint", "kind": "class", "doc": "

\n", "bases": "ColumnConstraintKind"}, "sqlglot.expressions.CompressColumnConstraint": {"fullname": "sqlglot.expressions.CompressColumnConstraint", "modulename": "sqlglot.expressions", "qualname": "CompressColumnConstraint", "kind": "class", "doc": "

\n", "bases": "ColumnConstraintKind"}, "sqlglot.expressions.DateFormatColumnConstraint": {"fullname": "sqlglot.expressions.DateFormatColumnConstraint", "modulename": "sqlglot.expressions", "qualname": "DateFormatColumnConstraint", "kind": "class", "doc": "

\n", "bases": "ColumnConstraintKind"}, "sqlglot.expressions.DefaultColumnConstraint": {"fullname": "sqlglot.expressions.DefaultColumnConstraint", "modulename": "sqlglot.expressions", "qualname": "DefaultColumnConstraint", "kind": "class", "doc": "

\n", "bases": "ColumnConstraintKind"}, "sqlglot.expressions.EncodeColumnConstraint": {"fullname": "sqlglot.expressions.EncodeColumnConstraint", "modulename": "sqlglot.expressions", "qualname": "EncodeColumnConstraint", "kind": "class", "doc": "

\n", "bases": "ColumnConstraintKind"}, "sqlglot.expressions.GeneratedAsIdentityColumnConstraint": {"fullname": "sqlglot.expressions.GeneratedAsIdentityColumnConstraint", "modulename": "sqlglot.expressions", "qualname": "GeneratedAsIdentityColumnConstraint", "kind": "class", "doc": "

\n", "bases": "ColumnConstraintKind"}, "sqlglot.expressions.InlineLengthColumnConstraint": {"fullname": "sqlglot.expressions.InlineLengthColumnConstraint", "modulename": "sqlglot.expressions", "qualname": "InlineLengthColumnConstraint", "kind": "class", "doc": "

\n", "bases": "ColumnConstraintKind"}, "sqlglot.expressions.NotNullColumnConstraint": {"fullname": "sqlglot.expressions.NotNullColumnConstraint", "modulename": "sqlglot.expressions", "qualname": "NotNullColumnConstraint", "kind": "class", "doc": "

\n", "bases": "ColumnConstraintKind"}, "sqlglot.expressions.OnUpdateColumnConstraint": {"fullname": "sqlglot.expressions.OnUpdateColumnConstraint", "modulename": "sqlglot.expressions", "qualname": "OnUpdateColumnConstraint", "kind": "class", "doc": "

\n", "bases": "ColumnConstraintKind"}, "sqlglot.expressions.PrimaryKeyColumnConstraint": {"fullname": "sqlglot.expressions.PrimaryKeyColumnConstraint", "modulename": "sqlglot.expressions", "qualname": "PrimaryKeyColumnConstraint", "kind": "class", "doc": "

\n", "bases": "ColumnConstraintKind"}, "sqlglot.expressions.TitleColumnConstraint": {"fullname": "sqlglot.expressions.TitleColumnConstraint", "modulename": "sqlglot.expressions", "qualname": "TitleColumnConstraint", "kind": "class", "doc": "

\n", "bases": "ColumnConstraintKind"}, "sqlglot.expressions.UniqueColumnConstraint": {"fullname": "sqlglot.expressions.UniqueColumnConstraint", "modulename": "sqlglot.expressions", "qualname": "UniqueColumnConstraint", "kind": "class", "doc": "

\n", "bases": "ColumnConstraintKind"}, "sqlglot.expressions.UppercaseColumnConstraint": {"fullname": "sqlglot.expressions.UppercaseColumnConstraint", "modulename": "sqlglot.expressions", "qualname": "UppercaseColumnConstraint", "kind": "class", "doc": "

\n", "bases": "ColumnConstraintKind"}, "sqlglot.expressions.PathColumnConstraint": {"fullname": "sqlglot.expressions.PathColumnConstraint", "modulename": "sqlglot.expressions", "qualname": "PathColumnConstraint", "kind": "class", "doc": "

\n", "bases": "ColumnConstraintKind"}, "sqlglot.expressions.Constraint": {"fullname": "sqlglot.expressions.Constraint", "modulename": "sqlglot.expressions", "qualname": "Constraint", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Delete": {"fullname": "sqlglot.expressions.Delete", "modulename": "sqlglot.expressions", "qualname": "Delete", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Delete.delete": {"fullname": "sqlglot.expressions.Delete.delete", "modulename": "sqlglot.expressions", "qualname": "Delete.delete", "kind": "function", "doc": "

Create a DELETE expression or replace the table on an existing DELETE expression.

\n\n
Example:
\n\n
\n
\n
>>> delete("tbl").sql()\n'DELETE FROM tbl'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • table: the table from which to delete.
  • \n
  • dialect: the dialect used to parse the input expression.
  • \n
  • copy: if False, modify this expression instance in-place.
  • \n
  • opts: other options to use to parse the input expressions.
  • \n
\n\n
Returns:
\n\n
\n

Delete: the modified expression.

\n
\n", "signature": "(\tself,\ttable: Union[str, sqlglot.expressions.Expression],\tdialect: Union[str, sqlglot.dialects.dialect.Dialect, Type[sqlglot.dialects.dialect.Dialect], NoneType] = None,\tcopy: bool = True,\t**opts) -> sqlglot.expressions.Delete:", "funcdef": "def"}, "sqlglot.expressions.Delete.where": {"fullname": "sqlglot.expressions.Delete.where", "modulename": "sqlglot.expressions", "qualname": "Delete.where", "kind": "function", "doc": "

Append to or set the WHERE expressions.

\n\n
Example:
\n\n
\n
\n
>>> delete("tbl").where("x = 'a' OR x < 'b'").sql()\n"DELETE FROM tbl WHERE x = 'a' OR x < 'b'"\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • *expressions: the SQL code strings to parse.\nIf an Expression instance is passed, it will be used as-is.\nMultiple expressions are combined with an AND operator.
  • \n
  • append: if True, AND the new expressions to any existing expression.\nOtherwise, this resets the expression.
  • \n
  • dialect: the dialect used to parse the input expressions.
  • \n
  • copy: if False, modify this expression instance in-place.
  • \n
  • opts: other options to use to parse the input expressions.
  • \n
\n\n
Returns:
\n\n
\n

Delete: the modified expression.

\n
\n", "signature": "(\tself,\t*expressions: Union[str, sqlglot.expressions.Expression],\tappend: bool = True,\tdialect: Union[str, sqlglot.dialects.dialect.Dialect, Type[sqlglot.dialects.dialect.Dialect], NoneType] = None,\tcopy: bool = True,\t**opts) -> sqlglot.expressions.Delete:", "funcdef": "def"}, "sqlglot.expressions.Delete.returning": {"fullname": "sqlglot.expressions.Delete.returning", "modulename": "sqlglot.expressions", "qualname": "Delete.returning", "kind": "function", "doc": "

Set the RETURNING expression. Not supported by all dialects.

\n\n
Example:
\n\n
\n
\n
>>> delete("tbl").returning("*", dialect="postgres").sql()\n'DELETE FROM tbl RETURNING *'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • expression: the SQL code strings to parse.\nIf an Expression instance is passed, it will be used as-is.
  • \n
  • dialect: the dialect used to parse the input expressions.
  • \n
  • copy: if False, modify this expression instance in-place.
  • \n
  • opts: other options to use to parse the input expressions.
  • \n
\n\n
Returns:
\n\n
\n

Delete: the modified expression.

\n
\n", "signature": "(\tself,\texpression: Union[str, sqlglot.expressions.Expression],\tdialect: Union[str, sqlglot.dialects.dialect.Dialect, Type[sqlglot.dialects.dialect.Dialect], NoneType] = None,\tcopy: bool = True,\t**opts) -> sqlglot.expressions.Delete:", "funcdef": "def"}, "sqlglot.expressions.Drop": {"fullname": "sqlglot.expressions.Drop", "modulename": "sqlglot.expressions", "qualname": "Drop", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Filter": {"fullname": "sqlglot.expressions.Filter", "modulename": "sqlglot.expressions", "qualname": "Filter", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Check": {"fullname": "sqlglot.expressions.Check", "modulename": "sqlglot.expressions", "qualname": "Check", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Directory": {"fullname": "sqlglot.expressions.Directory", "modulename": "sqlglot.expressions", "qualname": "Directory", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.ForeignKey": {"fullname": "sqlglot.expressions.ForeignKey", "modulename": "sqlglot.expressions", "qualname": "ForeignKey", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.PrimaryKey": {"fullname": "sqlglot.expressions.PrimaryKey", "modulename": "sqlglot.expressions", "qualname": "PrimaryKey", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Unique": {"fullname": "sqlglot.expressions.Unique", "modulename": "sqlglot.expressions", "qualname": "Unique", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Into": {"fullname": "sqlglot.expressions.Into", "modulename": "sqlglot.expressions", "qualname": "Into", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.From": {"fullname": "sqlglot.expressions.From", "modulename": "sqlglot.expressions", "qualname": "From", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Having": {"fullname": "sqlglot.expressions.Having", "modulename": "sqlglot.expressions", "qualname": "Having", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Hint": {"fullname": "sqlglot.expressions.Hint", "modulename": "sqlglot.expressions", "qualname": "Hint", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.JoinHint": {"fullname": "sqlglot.expressions.JoinHint", "modulename": "sqlglot.expressions", "qualname": "JoinHint", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Identifier": {"fullname": "sqlglot.expressions.Identifier", "modulename": "sqlglot.expressions", "qualname": "Identifier", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Identifier.output_name": {"fullname": "sqlglot.expressions.Identifier.output_name", "modulename": "sqlglot.expressions", "qualname": "Identifier.output_name", "kind": "variable", "doc": "

Name of the output column if this expression is a selection.

\n\n

If the Expression has no output name, an empty string is returned.

\n\n
Example:
\n\n
\n
\n
>>> from sqlglot import parse_one\n>>> parse_one("SELECT a").expressions[0].output_name\n'a'\n>>> parse_one("SELECT b AS c").expressions[0].output_name\n'c'\n>>> parse_one("SELECT 1 + 2").expressions[0].output_name\n''\n
\n
\n
\n"}, "sqlglot.expressions.Index": {"fullname": "sqlglot.expressions.Index", "modulename": "sqlglot.expressions", "qualname": "Index", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Insert": {"fullname": "sqlglot.expressions.Insert", "modulename": "sqlglot.expressions", "qualname": "Insert", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.OnConflict": {"fullname": "sqlglot.expressions.OnConflict", "modulename": "sqlglot.expressions", "qualname": "OnConflict", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Returning": {"fullname": "sqlglot.expressions.Returning", "modulename": "sqlglot.expressions", "qualname": "Returning", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Introducer": {"fullname": "sqlglot.expressions.Introducer", "modulename": "sqlglot.expressions", "qualname": "Introducer", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.National": {"fullname": "sqlglot.expressions.National", "modulename": "sqlglot.expressions", "qualname": "National", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.LoadData": {"fullname": "sqlglot.expressions.LoadData", "modulename": "sqlglot.expressions", "qualname": "LoadData", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Partition": {"fullname": "sqlglot.expressions.Partition", "modulename": "sqlglot.expressions", "qualname": "Partition", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Fetch": {"fullname": "sqlglot.expressions.Fetch", "modulename": "sqlglot.expressions", "qualname": "Fetch", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Group": {"fullname": "sqlglot.expressions.Group", "modulename": "sqlglot.expressions", "qualname": "Group", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Lambda": {"fullname": "sqlglot.expressions.Lambda", "modulename": "sqlglot.expressions", "qualname": "Lambda", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Limit": {"fullname": "sqlglot.expressions.Limit", "modulename": "sqlglot.expressions", "qualname": "Limit", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Literal": {"fullname": "sqlglot.expressions.Literal", "modulename": "sqlglot.expressions", "qualname": "Literal", "kind": "class", "doc": "

\n", "bases": "Condition"}, "sqlglot.expressions.Literal.number": {"fullname": "sqlglot.expressions.Literal.number", "modulename": "sqlglot.expressions", "qualname": "Literal.number", "kind": "function", "doc": "

\n", "signature": "(cls, number) -> sqlglot.expressions.Literal:", "funcdef": "def"}, "sqlglot.expressions.Literal.string": {"fullname": "sqlglot.expressions.Literal.string", "modulename": "sqlglot.expressions", "qualname": "Literal.string", "kind": "function", "doc": "

\n", "signature": "(cls, string) -> sqlglot.expressions.Literal:", "funcdef": "def"}, "sqlglot.expressions.Literal.output_name": {"fullname": "sqlglot.expressions.Literal.output_name", "modulename": "sqlglot.expressions", "qualname": "Literal.output_name", "kind": "variable", "doc": "

Name of the output column if this expression is a selection.

\n\n

If the Expression has no output name, an empty string is returned.

\n\n
Example:
\n\n
\n
\n
>>> from sqlglot import parse_one\n>>> parse_one("SELECT a").expressions[0].output_name\n'a'\n>>> parse_one("SELECT b AS c").expressions[0].output_name\n'c'\n>>> parse_one("SELECT 1 + 2").expressions[0].output_name\n''\n
\n
\n
\n"}, "sqlglot.expressions.Join": {"fullname": "sqlglot.expressions.Join", "modulename": "sqlglot.expressions", "qualname": "Join", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Join.on": {"fullname": "sqlglot.expressions.Join.on", "modulename": "sqlglot.expressions", "qualname": "Join.on", "kind": "function", "doc": "

Append to or set the ON expressions.

\n\n
Example:
\n\n
\n
\n
>>> import sqlglot\n>>> sqlglot.parse_one("JOIN x", into=Join).on("y = 1").sql()\n'JOIN x ON y = 1'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • *expressions (str | Expression): the SQL code strings to parse.\nIf an Expression instance is passed, it will be used as-is.\nMultiple expressions are combined with an AND operator.
  • \n
  • append (bool): if True, AND the new expressions to any existing expression.\nOtherwise, this resets the expression.
  • \n
  • dialect (str): the dialect used to parse the input expressions.
  • \n
  • copy (bool): if False, modify this expression instance in-place.
  • \n
  • opts (kwargs): other options to use to parse the input expressions.
  • \n
\n\n
Returns:
\n\n
\n

Join: the modified join expression.

\n
\n", "signature": "(self, *expressions, append=True, dialect=None, copy=True, **opts):", "funcdef": "def"}, "sqlglot.expressions.Join.using": {"fullname": "sqlglot.expressions.Join.using", "modulename": "sqlglot.expressions", "qualname": "Join.using", "kind": "function", "doc": "

Append to or set the USING expressions.

\n\n
Example:
\n\n
\n
\n
>>> import sqlglot\n>>> sqlglot.parse_one("JOIN x", into=Join).using("foo", "bla").sql()\n'JOIN x USING (foo, bla)'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • *expressions (str | Expression): the SQL code strings to parse.\nIf an Expression instance is passed, it will be used as-is.
  • \n
  • append (bool): if True, concatenate the new expressions to the existing \"using\" list.\nOtherwise, this resets the expression.
  • \n
  • dialect (str): the dialect used to parse the input expressions.
  • \n
  • copy (bool): if False, modify this expression instance in-place.
  • \n
  • opts (kwargs): other options to use to parse the input expressions.
  • \n
\n\n
Returns:
\n\n
\n

Join: the modified join expression.

\n
\n", "signature": "(self, *expressions, append=True, dialect=None, copy=True, **opts):", "funcdef": "def"}, "sqlglot.expressions.Lateral": {"fullname": "sqlglot.expressions.Lateral", "modulename": "sqlglot.expressions", "qualname": "Lateral", "kind": "class", "doc": "

\n", "bases": "UDTF"}, "sqlglot.expressions.MatchRecognize": {"fullname": "sqlglot.expressions.MatchRecognize", "modulename": "sqlglot.expressions", "qualname": "MatchRecognize", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Final": {"fullname": "sqlglot.expressions.Final", "modulename": "sqlglot.expressions", "qualname": "Final", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Offset": {"fullname": "sqlglot.expressions.Offset", "modulename": "sqlglot.expressions", "qualname": "Offset", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Order": {"fullname": "sqlglot.expressions.Order", "modulename": "sqlglot.expressions", "qualname": "Order", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Cluster": {"fullname": "sqlglot.expressions.Cluster", "modulename": "sqlglot.expressions", "qualname": "Cluster", "kind": "class", "doc": "

\n", "bases": "Order"}, "sqlglot.expressions.Distribute": {"fullname": "sqlglot.expressions.Distribute", "modulename": "sqlglot.expressions", "qualname": "Distribute", "kind": "class", "doc": "

\n", "bases": "Order"}, "sqlglot.expressions.Sort": {"fullname": "sqlglot.expressions.Sort", "modulename": "sqlglot.expressions", "qualname": "Sort", "kind": "class", "doc": "

\n", "bases": "Order"}, "sqlglot.expressions.Ordered": {"fullname": "sqlglot.expressions.Ordered", "modulename": "sqlglot.expressions", "qualname": "Ordered", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Property": {"fullname": "sqlglot.expressions.Property", "modulename": "sqlglot.expressions", "qualname": "Property", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.AfterJournalProperty": {"fullname": "sqlglot.expressions.AfterJournalProperty", "modulename": "sqlglot.expressions", "qualname": "AfterJournalProperty", "kind": "class", "doc": "

\n", "bases": "Property"}, "sqlglot.expressions.AlgorithmProperty": {"fullname": "sqlglot.expressions.AlgorithmProperty", "modulename": "sqlglot.expressions", "qualname": "AlgorithmProperty", "kind": "class", "doc": "

\n", "bases": "Property"}, "sqlglot.expressions.AutoIncrementProperty": {"fullname": "sqlglot.expressions.AutoIncrementProperty", "modulename": "sqlglot.expressions", "qualname": "AutoIncrementProperty", "kind": "class", "doc": "

\n", "bases": "Property"}, "sqlglot.expressions.BlockCompressionProperty": {"fullname": "sqlglot.expressions.BlockCompressionProperty", "modulename": "sqlglot.expressions", "qualname": "BlockCompressionProperty", "kind": "class", "doc": "

\n", "bases": "Property"}, "sqlglot.expressions.CharacterSetProperty": {"fullname": "sqlglot.expressions.CharacterSetProperty", "modulename": "sqlglot.expressions", "qualname": "CharacterSetProperty", "kind": "class", "doc": "

\n", "bases": "Property"}, "sqlglot.expressions.ChecksumProperty": {"fullname": "sqlglot.expressions.ChecksumProperty", "modulename": "sqlglot.expressions", "qualname": "ChecksumProperty", "kind": "class", "doc": "

\n", "bases": "Property"}, "sqlglot.expressions.CollateProperty": {"fullname": "sqlglot.expressions.CollateProperty", "modulename": "sqlglot.expressions", "qualname": "CollateProperty", "kind": "class", "doc": "

\n", "bases": "Property"}, "sqlglot.expressions.DataBlocksizeProperty": {"fullname": "sqlglot.expressions.DataBlocksizeProperty", "modulename": "sqlglot.expressions", "qualname": "DataBlocksizeProperty", "kind": "class", "doc": "

\n", "bases": "Property"}, "sqlglot.expressions.DefinerProperty": {"fullname": "sqlglot.expressions.DefinerProperty", "modulename": "sqlglot.expressions", "qualname": "DefinerProperty", "kind": "class", "doc": "

\n", "bases": "Property"}, "sqlglot.expressions.DistKeyProperty": {"fullname": "sqlglot.expressions.DistKeyProperty", "modulename": "sqlglot.expressions", "qualname": "DistKeyProperty", "kind": "class", "doc": "

\n", "bases": "Property"}, "sqlglot.expressions.DistStyleProperty": {"fullname": "sqlglot.expressions.DistStyleProperty", "modulename": "sqlglot.expressions", "qualname": "DistStyleProperty", "kind": "class", "doc": "

\n", "bases": "Property"}, "sqlglot.expressions.EngineProperty": {"fullname": "sqlglot.expressions.EngineProperty", "modulename": "sqlglot.expressions", "qualname": "EngineProperty", "kind": "class", "doc": "

\n", "bases": "Property"}, "sqlglot.expressions.ExecuteAsProperty": {"fullname": "sqlglot.expressions.ExecuteAsProperty", "modulename": "sqlglot.expressions", "qualname": "ExecuteAsProperty", "kind": "class", "doc": "

\n", "bases": "Property"}, "sqlglot.expressions.ExternalProperty": {"fullname": "sqlglot.expressions.ExternalProperty", "modulename": "sqlglot.expressions", "qualname": "ExternalProperty", "kind": "class", "doc": "

\n", "bases": "Property"}, "sqlglot.expressions.FallbackProperty": {"fullname": "sqlglot.expressions.FallbackProperty", "modulename": "sqlglot.expressions", "qualname": "FallbackProperty", "kind": "class", "doc": "

\n", "bases": "Property"}, "sqlglot.expressions.FileFormatProperty": {"fullname": "sqlglot.expressions.FileFormatProperty", "modulename": "sqlglot.expressions", "qualname": "FileFormatProperty", "kind": "class", "doc": "

\n", "bases": "Property"}, "sqlglot.expressions.FreespaceProperty": {"fullname": "sqlglot.expressions.FreespaceProperty", "modulename": "sqlglot.expressions", "qualname": "FreespaceProperty", "kind": "class", "doc": "

\n", "bases": "Property"}, "sqlglot.expressions.InputOutputFormat": {"fullname": "sqlglot.expressions.InputOutputFormat", "modulename": "sqlglot.expressions", "qualname": "InputOutputFormat", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.IsolatedLoadingProperty": {"fullname": "sqlglot.expressions.IsolatedLoadingProperty", "modulename": "sqlglot.expressions", "qualname": "IsolatedLoadingProperty", "kind": "class", "doc": "

\n", "bases": "Property"}, "sqlglot.expressions.JournalProperty": {"fullname": "sqlglot.expressions.JournalProperty", "modulename": "sqlglot.expressions", "qualname": "JournalProperty", "kind": "class", "doc": "

\n", "bases": "Property"}, "sqlglot.expressions.LanguageProperty": {"fullname": "sqlglot.expressions.LanguageProperty", "modulename": "sqlglot.expressions", "qualname": "LanguageProperty", "kind": "class", "doc": "

\n", "bases": "Property"}, "sqlglot.expressions.LikeProperty": {"fullname": "sqlglot.expressions.LikeProperty", "modulename": "sqlglot.expressions", "qualname": "LikeProperty", "kind": "class", "doc": "

\n", "bases": "Property"}, "sqlglot.expressions.LocationProperty": {"fullname": "sqlglot.expressions.LocationProperty", "modulename": "sqlglot.expressions", "qualname": "LocationProperty", "kind": "class", "doc": "

\n", "bases": "Property"}, "sqlglot.expressions.LockingProperty": {"fullname": "sqlglot.expressions.LockingProperty", "modulename": "sqlglot.expressions", "qualname": "LockingProperty", "kind": "class", "doc": "

\n", "bases": "Property"}, "sqlglot.expressions.LogProperty": {"fullname": "sqlglot.expressions.LogProperty", "modulename": "sqlglot.expressions", "qualname": "LogProperty", "kind": "class", "doc": "

\n", "bases": "Property"}, "sqlglot.expressions.MaterializedProperty": {"fullname": "sqlglot.expressions.MaterializedProperty", "modulename": "sqlglot.expressions", "qualname": "MaterializedProperty", "kind": "class", "doc": "

\n", "bases": "Property"}, "sqlglot.expressions.MergeBlockRatioProperty": {"fullname": "sqlglot.expressions.MergeBlockRatioProperty", "modulename": "sqlglot.expressions", "qualname": "MergeBlockRatioProperty", "kind": "class", "doc": "

\n", "bases": "Property"}, "sqlglot.expressions.NoPrimaryIndexProperty": {"fullname": "sqlglot.expressions.NoPrimaryIndexProperty", "modulename": "sqlglot.expressions", "qualname": "NoPrimaryIndexProperty", "kind": "class", "doc": "

\n", "bases": "Property"}, "sqlglot.expressions.OnCommitProperty": {"fullname": "sqlglot.expressions.OnCommitProperty", "modulename": "sqlglot.expressions", "qualname": "OnCommitProperty", "kind": "class", "doc": "

\n", "bases": "Property"}, "sqlglot.expressions.PartitionedByProperty": {"fullname": "sqlglot.expressions.PartitionedByProperty", "modulename": "sqlglot.expressions", "qualname": "PartitionedByProperty", "kind": "class", "doc": "

\n", "bases": "Property"}, "sqlglot.expressions.ReturnsProperty": {"fullname": "sqlglot.expressions.ReturnsProperty", "modulename": "sqlglot.expressions", "qualname": "ReturnsProperty", "kind": "class", "doc": "

\n", "bases": "Property"}, "sqlglot.expressions.RowFormatProperty": {"fullname": "sqlglot.expressions.RowFormatProperty", "modulename": "sqlglot.expressions", "qualname": "RowFormatProperty", "kind": "class", "doc": "

\n", "bases": "Property"}, "sqlglot.expressions.RowFormatDelimitedProperty": {"fullname": "sqlglot.expressions.RowFormatDelimitedProperty", "modulename": "sqlglot.expressions", "qualname": "RowFormatDelimitedProperty", "kind": "class", "doc": "

\n", "bases": "Property"}, "sqlglot.expressions.RowFormatSerdeProperty": {"fullname": "sqlglot.expressions.RowFormatSerdeProperty", "modulename": "sqlglot.expressions", "qualname": "RowFormatSerdeProperty", "kind": "class", "doc": "

\n", "bases": "Property"}, "sqlglot.expressions.SchemaCommentProperty": {"fullname": "sqlglot.expressions.SchemaCommentProperty", "modulename": "sqlglot.expressions", "qualname": "SchemaCommentProperty", "kind": "class", "doc": "

\n", "bases": "Property"}, "sqlglot.expressions.SerdeProperties": {"fullname": "sqlglot.expressions.SerdeProperties", "modulename": "sqlglot.expressions", "qualname": "SerdeProperties", "kind": "class", "doc": "

\n", "bases": "Property"}, "sqlglot.expressions.SetProperty": {"fullname": "sqlglot.expressions.SetProperty", "modulename": "sqlglot.expressions", "qualname": "SetProperty", "kind": "class", "doc": "

\n", "bases": "Property"}, "sqlglot.expressions.SortKeyProperty": {"fullname": "sqlglot.expressions.SortKeyProperty", "modulename": "sqlglot.expressions", "qualname": "SortKeyProperty", "kind": "class", "doc": "

\n", "bases": "Property"}, "sqlglot.expressions.SqlSecurityProperty": {"fullname": "sqlglot.expressions.SqlSecurityProperty", "modulename": "sqlglot.expressions", "qualname": "SqlSecurityProperty", "kind": "class", "doc": "

\n", "bases": "Property"}, "sqlglot.expressions.StabilityProperty": {"fullname": "sqlglot.expressions.StabilityProperty", "modulename": "sqlglot.expressions", "qualname": "StabilityProperty", "kind": "class", "doc": "

\n", "bases": "Property"}, "sqlglot.expressions.TableFormatProperty": {"fullname": "sqlglot.expressions.TableFormatProperty", "modulename": "sqlglot.expressions", "qualname": "TableFormatProperty", "kind": "class", "doc": "

\n", "bases": "Property"}, "sqlglot.expressions.TemporaryProperty": {"fullname": "sqlglot.expressions.TemporaryProperty", "modulename": "sqlglot.expressions", "qualname": "TemporaryProperty", "kind": "class", "doc": "

\n", "bases": "Property"}, "sqlglot.expressions.TransientProperty": {"fullname": "sqlglot.expressions.TransientProperty", "modulename": "sqlglot.expressions", "qualname": "TransientProperty", "kind": "class", "doc": "

\n", "bases": "Property"}, "sqlglot.expressions.VolatileProperty": {"fullname": "sqlglot.expressions.VolatileProperty", "modulename": "sqlglot.expressions", "qualname": "VolatileProperty", "kind": "class", "doc": "

\n", "bases": "Property"}, "sqlglot.expressions.WithDataProperty": {"fullname": "sqlglot.expressions.WithDataProperty", "modulename": "sqlglot.expressions", "qualname": "WithDataProperty", "kind": "class", "doc": "

\n", "bases": "Property"}, "sqlglot.expressions.WithJournalTableProperty": {"fullname": "sqlglot.expressions.WithJournalTableProperty", "modulename": "sqlglot.expressions", "qualname": "WithJournalTableProperty", "kind": "class", "doc": "

\n", "bases": "Property"}, "sqlglot.expressions.Properties": {"fullname": "sqlglot.expressions.Properties", "modulename": "sqlglot.expressions", "qualname": "Properties", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Properties.Location": {"fullname": "sqlglot.expressions.Properties.Location", "modulename": "sqlglot.expressions", "qualname": "Properties.Location", "kind": "class", "doc": "

An enumeration.

\n", "bases": "sqlglot.helper.AutoName"}, "sqlglot.expressions.Properties.Location.POST_CREATE": {"fullname": "sqlglot.expressions.Properties.Location.POST_CREATE", "modulename": "sqlglot.expressions", "qualname": "Properties.Location.POST_CREATE", "kind": "variable", "doc": "

\n", "default_value": "<Location.POST_CREATE: 'POST_CREATE'>"}, "sqlglot.expressions.Properties.Location.POST_NAME": {"fullname": "sqlglot.expressions.Properties.Location.POST_NAME", "modulename": "sqlglot.expressions", "qualname": "Properties.Location.POST_NAME", "kind": "variable", "doc": "

\n", "default_value": "<Location.POST_NAME: 'POST_NAME'>"}, "sqlglot.expressions.Properties.Location.POST_SCHEMA": {"fullname": "sqlglot.expressions.Properties.Location.POST_SCHEMA", "modulename": "sqlglot.expressions", "qualname": "Properties.Location.POST_SCHEMA", "kind": "variable", "doc": "

\n", "default_value": "<Location.POST_SCHEMA: 'POST_SCHEMA'>"}, "sqlglot.expressions.Properties.Location.POST_WITH": {"fullname": "sqlglot.expressions.Properties.Location.POST_WITH", "modulename": "sqlglot.expressions", "qualname": "Properties.Location.POST_WITH", "kind": "variable", "doc": "

\n", "default_value": "<Location.POST_WITH: 'POST_WITH'>"}, "sqlglot.expressions.Properties.Location.POST_ALIAS": {"fullname": "sqlglot.expressions.Properties.Location.POST_ALIAS", "modulename": "sqlglot.expressions", "qualname": "Properties.Location.POST_ALIAS", "kind": "variable", "doc": "

\n", "default_value": "<Location.POST_ALIAS: 'POST_ALIAS'>"}, "sqlglot.expressions.Properties.Location.POST_EXPRESSION": {"fullname": "sqlglot.expressions.Properties.Location.POST_EXPRESSION", "modulename": "sqlglot.expressions", "qualname": "Properties.Location.POST_EXPRESSION", "kind": "variable", "doc": "

\n", "default_value": "<Location.POST_EXPRESSION: 'POST_EXPRESSION'>"}, "sqlglot.expressions.Properties.Location.POST_INDEX": {"fullname": "sqlglot.expressions.Properties.Location.POST_INDEX", "modulename": "sqlglot.expressions", "qualname": "Properties.Location.POST_INDEX", "kind": "variable", "doc": "

\n", "default_value": "<Location.POST_INDEX: 'POST_INDEX'>"}, "sqlglot.expressions.Properties.Location.UNSUPPORTED": {"fullname": "sqlglot.expressions.Properties.Location.UNSUPPORTED", "modulename": "sqlglot.expressions", "qualname": "Properties.Location.UNSUPPORTED", "kind": "variable", "doc": "

\n", "default_value": "<Location.UNSUPPORTED: 'UNSUPPORTED'>"}, "sqlglot.expressions.Properties.from_dict": {"fullname": "sqlglot.expressions.Properties.from_dict", "modulename": "sqlglot.expressions", "qualname": "Properties.from_dict", "kind": "function", "doc": "

\n", "signature": "(cls, properties_dict) -> sqlglot.expressions.Properties:", "funcdef": "def"}, "sqlglot.expressions.Qualify": {"fullname": "sqlglot.expressions.Qualify", "modulename": "sqlglot.expressions", "qualname": "Qualify", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Return": {"fullname": "sqlglot.expressions.Return", "modulename": "sqlglot.expressions", "qualname": "Return", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Reference": {"fullname": "sqlglot.expressions.Reference", "modulename": "sqlglot.expressions", "qualname": "Reference", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Tuple": {"fullname": "sqlglot.expressions.Tuple", "modulename": "sqlglot.expressions", "qualname": "Tuple", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Subqueryable": {"fullname": "sqlglot.expressions.Subqueryable", "modulename": "sqlglot.expressions", "qualname": "Subqueryable", "kind": "class", "doc": "

\n", "bases": "Unionable"}, "sqlglot.expressions.Subqueryable.subquery": {"fullname": "sqlglot.expressions.Subqueryable.subquery", "modulename": "sqlglot.expressions", "qualname": "Subqueryable.subquery", "kind": "function", "doc": "

Convert this expression to an aliased expression that can be used as a Subquery.

\n\n
Example:
\n\n
\n
\n
>>> subquery = Select().select("x").from_("tbl").subquery()\n>>> Select().select("x").from_(subquery).sql()\n'SELECT x FROM (SELECT x FROM tbl)'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • alias (str | Identifier): an optional alias for the subquery
  • \n
  • copy (bool): if False, modify this expression instance in-place.
  • \n
\n\n
Returns:
\n\n
\n

Alias: the subquery

\n
\n", "signature": "(self, alias=None, copy=True) -> sqlglot.expressions.Subquery:", "funcdef": "def"}, "sqlglot.expressions.Subqueryable.limit": {"fullname": "sqlglot.expressions.Subqueryable.limit", "modulename": "sqlglot.expressions", "qualname": "Subqueryable.limit", "kind": "function", "doc": "

\n", "signature": "(\tself,\texpression,\tdialect=None,\tcopy=True,\t**opts) -> sqlglot.expressions.Select:", "funcdef": "def"}, "sqlglot.expressions.Subqueryable.with_": {"fullname": "sqlglot.expressions.Subqueryable.with_", "modulename": "sqlglot.expressions", "qualname": "Subqueryable.with_", "kind": "function", "doc": "

Append to or set the common table expressions.

\n\n
Example:
\n\n
\n
\n
>>> Select().with_("tbl2", as_="SELECT * FROM tbl").select("x").from_("tbl2").sql()\n'WITH tbl2 AS (SELECT * FROM tbl) SELECT x FROM tbl2'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • alias (str | Expression): the SQL code string to parse as the table name.\nIf an Expression instance is passed, this is used as-is.
  • \n
  • as_ (str | Expression): the SQL code string to parse as the table expression.\nIf an Expression instance is passed, it will be used as-is.
  • \n
  • recursive (bool): set the RECURSIVE part of the expression. Defaults to False.
  • \n
  • append (bool): if True, add to any existing expressions.\nOtherwise, this resets the expressions.
  • \n
  • dialect (str): the dialect used to parse the input expression.
  • \n
  • copy (bool): if False, modify this expression instance in-place.
  • \n
  • opts (kwargs): other options to use to parse the input expressions.
  • \n
\n\n
Returns:
\n\n
\n

Select: the modified expression.

\n
\n", "signature": "(\tself,\talias,\tas_,\trecursive=None,\tappend=True,\tdialect=None,\tcopy=True,\t**opts):", "funcdef": "def"}, "sqlglot.expressions.Table": {"fullname": "sqlglot.expressions.Table", "modulename": "sqlglot.expressions", "qualname": "Table", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.SystemTime": {"fullname": "sqlglot.expressions.SystemTime", "modulename": "sqlglot.expressions", "qualname": "SystemTime", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Union": {"fullname": "sqlglot.expressions.Union", "modulename": "sqlglot.expressions", "qualname": "Union", "kind": "class", "doc": "

\n", "bases": "Subqueryable"}, "sqlglot.expressions.Union.limit": {"fullname": "sqlglot.expressions.Union.limit", "modulename": "sqlglot.expressions", "qualname": "Union.limit", "kind": "function", "doc": "

Set the LIMIT expression.

\n\n
Example:
\n\n
\n
\n
>>> select("1").union(select("1")).limit(1).sql()\n'SELECT * FROM (SELECT 1 UNION SELECT 1) AS _l_0 LIMIT 1'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • expression (str | int | Expression): the SQL code string to parse.\nThis can also be an integer.\nIf a Limit instance is passed, this is used as-is.\nIf another Expression instance is passed, it will be wrapped in a Limit.
  • \n
  • dialect (str): the dialect used to parse the input expression.
  • \n
  • copy (bool): if False, modify this expression instance in-place.
  • \n
  • opts (kwargs): other options to use to parse the input expressions.
  • \n
\n\n
Returns:
\n\n
\n

Select: The limited subqueryable.

\n
\n", "signature": "(\tself,\texpression,\tdialect=None,\tcopy=True,\t**opts) -> sqlglot.expressions.Select:", "funcdef": "def"}, "sqlglot.expressions.Union.select": {"fullname": "sqlglot.expressions.Union.select", "modulename": "sqlglot.expressions", "qualname": "Union.select", "kind": "function", "doc": "

Append to or set the SELECT of the union recursively.

\n\n
Example:
\n\n
\n
\n
>>> from sqlglot import parse_one\n>>> parse_one("select a from x union select a from y union select a from z").select("b").sql()\n'SELECT a, b FROM x UNION SELECT a, b FROM y UNION SELECT a, b FROM z'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • *expressions: the SQL code strings to parse.\nIf an Expression instance is passed, it will be used as-is.
  • \n
  • append: if True, add to any existing expressions.\nOtherwise, this resets the expressions.
  • \n
  • dialect: the dialect used to parse the input expressions.
  • \n
  • copy: if False, modify this expression instance in-place.
  • \n
  • opts: other options to use to parse the input expressions.
  • \n
\n\n
Returns:
\n\n
\n

Union: the modified expression.

\n
\n", "signature": "(\tself,\t*expressions: Union[str, sqlglot.expressions.Expression],\tappend: bool = True,\tdialect: Union[str, sqlglot.dialects.dialect.Dialect, Type[sqlglot.dialects.dialect.Dialect], NoneType] = None,\tcopy: bool = True,\t**opts) -> sqlglot.expressions.Union:", "funcdef": "def"}, "sqlglot.expressions.Union.is_star": {"fullname": "sqlglot.expressions.Union.is_star", "modulename": "sqlglot.expressions", "qualname": "Union.is_star", "kind": "variable", "doc": "

Checks whether an expression is a star.

\n", "annotation": ": bool"}, "sqlglot.expressions.Except": {"fullname": "sqlglot.expressions.Except", "modulename": "sqlglot.expressions", "qualname": "Except", "kind": "class", "doc": "

\n", "bases": "Union"}, "sqlglot.expressions.Intersect": {"fullname": "sqlglot.expressions.Intersect", "modulename": "sqlglot.expressions", "qualname": "Intersect", "kind": "class", "doc": "

\n", "bases": "Union"}, "sqlglot.expressions.Unnest": {"fullname": "sqlglot.expressions.Unnest", "modulename": "sqlglot.expressions", "qualname": "Unnest", "kind": "class", "doc": "

\n", "bases": "UDTF"}, "sqlglot.expressions.Update": {"fullname": "sqlglot.expressions.Update", "modulename": "sqlglot.expressions", "qualname": "Update", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Values": {"fullname": "sqlglot.expressions.Values", "modulename": "sqlglot.expressions", "qualname": "Values", "kind": "class", "doc": "

\n", "bases": "UDTF"}, "sqlglot.expressions.Var": {"fullname": "sqlglot.expressions.Var", "modulename": "sqlglot.expressions", "qualname": "Var", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Schema": {"fullname": "sqlglot.expressions.Schema", "modulename": "sqlglot.expressions", "qualname": "Schema", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Lock": {"fullname": "sqlglot.expressions.Lock", "modulename": "sqlglot.expressions", "qualname": "Lock", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Select": {"fullname": "sqlglot.expressions.Select", "modulename": "sqlglot.expressions", "qualname": "Select", "kind": "class", "doc": "

\n", "bases": "Subqueryable"}, "sqlglot.expressions.Select.from_": {"fullname": "sqlglot.expressions.Select.from_", "modulename": "sqlglot.expressions", "qualname": "Select.from_", "kind": "function", "doc": "

Set the FROM expression.

\n\n
Example:
\n\n
\n
\n
>>> Select().from_("tbl").select("x").sql()\n'SELECT x FROM tbl'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • *expressions (str | Expression): the SQL code strings to parse.\nIf a From instance is passed, this is used as-is.\nIf another Expression instance is passed, it will be wrapped in a From.
  • \n
  • append (bool): if True, add to any existing expressions.\nOtherwise, this flattens all the From expression into a single expression.
  • \n
  • dialect (str): the dialect used to parse the input expression.
  • \n
  • copy (bool): if False, modify this expression instance in-place.
  • \n
  • opts (kwargs): other options to use to parse the input expressions.
  • \n
\n\n
Returns:
\n\n
\n

Select: the modified expression.

\n
\n", "signature": "(\tself,\t*expressions,\tappend=True,\tdialect=None,\tcopy=True,\t**opts) -> sqlglot.expressions.Select:", "funcdef": "def"}, "sqlglot.expressions.Select.group_by": {"fullname": "sqlglot.expressions.Select.group_by", "modulename": "sqlglot.expressions", "qualname": "Select.group_by", "kind": "function", "doc": "

Set the GROUP BY expression.

\n\n
Example:
\n\n
\n
\n
>>> Select().from_("tbl").select("x", "COUNT(1)").group_by("x").sql()\n'SELECT x, COUNT(1) FROM tbl GROUP BY x'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • *expressions (str | Expression): the SQL code strings to parse.\nIf a Group instance is passed, this is used as-is.\nIf another Expression instance is passed, it will be wrapped in a Group.\nIf nothing is passed in then a group by is not applied to the expression
  • \n
  • append (bool): if True, add to any existing expressions.\nOtherwise, this flattens all the Group expression into a single expression.
  • \n
  • dialect (str): the dialect used to parse the input expression.
  • \n
  • copy (bool): if False, modify this expression instance in-place.
  • \n
  • opts (kwargs): other options to use to parse the input expressions.
  • \n
\n\n
Returns:
\n\n
\n

Select: the modified expression.

\n
\n", "signature": "(\tself,\t*expressions,\tappend=True,\tdialect=None,\tcopy=True,\t**opts) -> sqlglot.expressions.Select:", "funcdef": "def"}, "sqlglot.expressions.Select.order_by": {"fullname": "sqlglot.expressions.Select.order_by", "modulename": "sqlglot.expressions", "qualname": "Select.order_by", "kind": "function", "doc": "

Set the ORDER BY expression.

\n\n
Example:
\n\n
\n
\n
>>> Select().from_("tbl").select("x").order_by("x DESC").sql()\n'SELECT x FROM tbl ORDER BY x DESC'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • *expressions (str | Expression): the SQL code strings to parse.\nIf a Group instance is passed, this is used as-is.\nIf another Expression instance is passed, it will be wrapped in a Order.
  • \n
  • append (bool): if True, add to any existing expressions.\nOtherwise, this flattens all the Order expression into a single expression.
  • \n
  • dialect (str): the dialect used to parse the input expression.
  • \n
  • copy (bool): if False, modify this expression instance in-place.
  • \n
  • opts (kwargs): other options to use to parse the input expressions.
  • \n
\n\n
Returns:
\n\n
\n

Select: the modified expression.

\n
\n", "signature": "(\tself,\t*expressions,\tappend=True,\tdialect=None,\tcopy=True,\t**opts) -> sqlglot.expressions.Select:", "funcdef": "def"}, "sqlglot.expressions.Select.sort_by": {"fullname": "sqlglot.expressions.Select.sort_by", "modulename": "sqlglot.expressions", "qualname": "Select.sort_by", "kind": "function", "doc": "

Set the SORT BY expression.

\n\n
Example:
\n\n
\n
\n
>>> Select().from_("tbl").select("x").sort_by("x DESC").sql()\n'SELECT x FROM tbl SORT BY x DESC'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • *expressions (str | Expression): the SQL code strings to parse.\nIf a Group instance is passed, this is used as-is.\nIf another Expression instance is passed, it will be wrapped in a SORT.
  • \n
  • append (bool): if True, add to any existing expressions.\nOtherwise, this flattens all the Order expression into a single expression.
  • \n
  • dialect (str): the dialect used to parse the input expression.
  • \n
  • copy (bool): if False, modify this expression instance in-place.
  • \n
  • opts (kwargs): other options to use to parse the input expressions.
  • \n
\n\n
Returns:
\n\n
\n

Select: the modified expression.

\n
\n", "signature": "(\tself,\t*expressions,\tappend=True,\tdialect=None,\tcopy=True,\t**opts) -> sqlglot.expressions.Select:", "funcdef": "def"}, "sqlglot.expressions.Select.cluster_by": {"fullname": "sqlglot.expressions.Select.cluster_by", "modulename": "sqlglot.expressions", "qualname": "Select.cluster_by", "kind": "function", "doc": "

Set the CLUSTER BY expression.

\n\n
Example:
\n\n
\n
\n
>>> Select().from_("tbl").select("x").cluster_by("x DESC").sql()\n'SELECT x FROM tbl CLUSTER BY x DESC'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • *expressions (str | Expression): the SQL code strings to parse.\nIf a Group instance is passed, this is used as-is.\nIf another Expression instance is passed, it will be wrapped in a Cluster.
  • \n
  • append (bool): if True, add to any existing expressions.\nOtherwise, this flattens all the Order expression into a single expression.
  • \n
  • dialect (str): the dialect used to parse the input expression.
  • \n
  • copy (bool): if False, modify this expression instance in-place.
  • \n
  • opts (kwargs): other options to use to parse the input expressions.
  • \n
\n\n
Returns:
\n\n
\n

Select: the modified expression.

\n
\n", "signature": "(\tself,\t*expressions,\tappend=True,\tdialect=None,\tcopy=True,\t**opts) -> sqlglot.expressions.Select:", "funcdef": "def"}, "sqlglot.expressions.Select.limit": {"fullname": "sqlglot.expressions.Select.limit", "modulename": "sqlglot.expressions", "qualname": "Select.limit", "kind": "function", "doc": "

Set the LIMIT expression.

\n\n
Example:
\n\n
\n
\n
>>> Select().from_("tbl").select("x").limit(10).sql()\n'SELECT x FROM tbl LIMIT 10'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • expression (str | int | Expression): the SQL code string to parse.\nThis can also be an integer.\nIf a Limit instance is passed, this is used as-is.\nIf another Expression instance is passed, it will be wrapped in a Limit.
  • \n
  • dialect (str): the dialect used to parse the input expression.
  • \n
  • copy (bool): if False, modify this expression instance in-place.
  • \n
  • opts (kwargs): other options to use to parse the input expressions.
  • \n
\n\n
Returns:
\n\n
\n

Select: the modified expression.

\n
\n", "signature": "(\tself,\texpression,\tdialect=None,\tcopy=True,\t**opts) -> sqlglot.expressions.Select:", "funcdef": "def"}, "sqlglot.expressions.Select.offset": {"fullname": "sqlglot.expressions.Select.offset", "modulename": "sqlglot.expressions", "qualname": "Select.offset", "kind": "function", "doc": "

Set the OFFSET expression.

\n\n
Example:
\n\n
\n
\n
>>> Select().from_("tbl").select("x").offset(10).sql()\n'SELECT x FROM tbl OFFSET 10'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • expression (str | int | Expression): the SQL code string to parse.\nThis can also be an integer.\nIf a Offset instance is passed, this is used as-is.\nIf another Expression instance is passed, it will be wrapped in a Offset.
  • \n
  • dialect (str): the dialect used to parse the input expression.
  • \n
  • copy (bool): if False, modify this expression instance in-place.
  • \n
  • opts (kwargs): other options to use to parse the input expressions.
  • \n
\n\n
Returns:
\n\n
\n

Select: the modified expression.

\n
\n", "signature": "(\tself,\texpression,\tdialect=None,\tcopy=True,\t**opts) -> sqlglot.expressions.Select:", "funcdef": "def"}, "sqlglot.expressions.Select.select": {"fullname": "sqlglot.expressions.Select.select", "modulename": "sqlglot.expressions", "qualname": "Select.select", "kind": "function", "doc": "

Append to or set the SELECT expressions.

\n\n
Example:
\n\n
\n
\n
>>> Select().select("x", "y").sql()\n'SELECT x, y'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • *expressions: the SQL code strings to parse.\nIf an Expression instance is passed, it will be used as-is.
  • \n
  • append: if True, add to any existing expressions.\nOtherwise, this resets the expressions.
  • \n
  • dialect: the dialect used to parse the input expressions.
  • \n
  • copy: if False, modify this expression instance in-place.
  • \n
  • opts: other options to use to parse the input expressions.
  • \n
\n\n
Returns:
\n\n
\n

Select: the modified expression.

\n
\n", "signature": "(\tself,\t*expressions: Union[str, sqlglot.expressions.Expression],\tappend: bool = True,\tdialect: Union[str, sqlglot.dialects.dialect.Dialect, Type[sqlglot.dialects.dialect.Dialect], NoneType] = None,\tcopy: bool = True,\t**opts) -> sqlglot.expressions.Select:", "funcdef": "def"}, "sqlglot.expressions.Select.lateral": {"fullname": "sqlglot.expressions.Select.lateral", "modulename": "sqlglot.expressions", "qualname": "Select.lateral", "kind": "function", "doc": "

Append to or set the LATERAL expressions.

\n\n
Example:
\n\n
\n
\n
>>> Select().select("x").lateral("OUTER explode(y) tbl2 AS z").from_("tbl").sql()\n'SELECT x FROM tbl LATERAL VIEW OUTER EXPLODE(y) tbl2 AS z'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • *expressions (str | Expression): the SQL code strings to parse.\nIf an Expression instance is passed, it will be used as-is.
  • \n
  • append (bool): if True, add to any existing expressions.\nOtherwise, this resets the expressions.
  • \n
  • dialect (str): the dialect used to parse the input expressions.
  • \n
  • copy (bool): if False, modify this expression instance in-place.
  • \n
  • opts (kwargs): other options to use to parse the input expressions.
  • \n
\n\n
Returns:
\n\n
\n

Select: the modified expression.

\n
\n", "signature": "(\tself,\t*expressions,\tappend=True,\tdialect=None,\tcopy=True,\t**opts) -> sqlglot.expressions.Select:", "funcdef": "def"}, "sqlglot.expressions.Select.join": {"fullname": "sqlglot.expressions.Select.join", "modulename": "sqlglot.expressions", "qualname": "Select.join", "kind": "function", "doc": "

Append to or set the JOIN expressions.

\n\n
Example:
\n\n
\n
\n
>>> Select().select("*").from_("tbl").join("tbl2", on="tbl1.y = tbl2.y").sql()\n'SELECT * FROM tbl JOIN tbl2 ON tbl1.y = tbl2.y'\n
\n
\n \n
\n
>>> Select().select("1").from_("a").join("b", using=["x", "y", "z"]).sql()\n'SELECT 1 FROM a JOIN b USING (x, y, z)'\n
\n
\n \n

Use join_type to change the type of join:

\n \n
\n
>>> Select().select("*").from_("tbl").join("tbl2", on="tbl1.y = tbl2.y", join_type="left outer").sql()\n'SELECT * FROM tbl LEFT OUTER JOIN tbl2 ON tbl1.y = tbl2.y'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • expression (str | Expression): the SQL code string to parse.\nIf an Expression instance is passed, it will be used as-is.
  • \n
  • on (str | Expression): optionally specify the join \"on\" criteria as a SQL string.\nIf an Expression instance is passed, it will be used as-is.
  • \n
  • using (str | Expression): optionally specify the join \"using\" criteria as a SQL string.\nIf an Expression instance is passed, it will be used as-is.
  • \n
  • append (bool): if True, add to any existing expressions.\nOtherwise, this resets the expressions.
  • \n
  • join_type (str): If set, alter the parsed join type
  • \n
  • dialect (str): the dialect used to parse the input expressions.
  • \n
  • copy (bool): if False, modify this expression instance in-place.
  • \n
  • opts (kwargs): other options to use to parse the input expressions.
  • \n
\n\n
Returns:
\n\n
\n

Select: the modified expression.

\n
\n", "signature": "(\tself,\texpression,\ton=None,\tusing=None,\tappend=True,\tjoin_type=None,\tjoin_alias=None,\tdialect=None,\tcopy=True,\t**opts) -> sqlglot.expressions.Select:", "funcdef": "def"}, "sqlglot.expressions.Select.where": {"fullname": "sqlglot.expressions.Select.where", "modulename": "sqlglot.expressions", "qualname": "Select.where", "kind": "function", "doc": "

Append to or set the WHERE expressions.

\n\n
Example:
\n\n
\n
\n
>>> Select().select("x").from_("tbl").where("x = 'a' OR x < 'b'").sql()\n"SELECT x FROM tbl WHERE x = 'a' OR x < 'b'"\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • *expressions (str | Expression): the SQL code strings to parse.\nIf an Expression instance is passed, it will be used as-is.\nMultiple expressions are combined with an AND operator.
  • \n
  • append (bool): if True, AND the new expressions to any existing expression.\nOtherwise, this resets the expression.
  • \n
  • dialect (str): the dialect used to parse the input expressions.
  • \n
  • copy (bool): if False, modify this expression instance in-place.
  • \n
  • opts (kwargs): other options to use to parse the input expressions.
  • \n
\n\n
Returns:
\n\n
\n

Select: the modified expression.

\n
\n", "signature": "(\tself,\t*expressions,\tappend=True,\tdialect=None,\tcopy=True,\t**opts) -> sqlglot.expressions.Select:", "funcdef": "def"}, "sqlglot.expressions.Select.having": {"fullname": "sqlglot.expressions.Select.having", "modulename": "sqlglot.expressions", "qualname": "Select.having", "kind": "function", "doc": "

Append to or set the HAVING expressions.

\n\n
Example:
\n\n
\n
\n
>>> Select().select("x", "COUNT(y)").from_("tbl").group_by("x").having("COUNT(y) > 3").sql()\n'SELECT x, COUNT(y) FROM tbl GROUP BY x HAVING COUNT(y) > 3'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • *expressions (str | Expression): the SQL code strings to parse.\nIf an Expression instance is passed, it will be used as-is.\nMultiple expressions are combined with an AND operator.
  • \n
  • append (bool): if True, AND the new expressions to any existing expression.\nOtherwise, this resets the expression.
  • \n
  • dialect (str): the dialect used to parse the input expressions.
  • \n
  • copy (bool): if False, modify this expression instance in-place.
  • \n
  • opts (kwargs): other options to use to parse the input expressions.
  • \n
\n\n
Returns:
\n\n
\n

Select: the modified expression.

\n
\n", "signature": "(\tself,\t*expressions,\tappend=True,\tdialect=None,\tcopy=True,\t**opts) -> sqlglot.expressions.Select:", "funcdef": "def"}, "sqlglot.expressions.Select.window": {"fullname": "sqlglot.expressions.Select.window", "modulename": "sqlglot.expressions", "qualname": "Select.window", "kind": "function", "doc": "

\n", "signature": "(\tself,\t*expressions,\tappend=True,\tdialect=None,\tcopy=True,\t**opts) -> sqlglot.expressions.Select:", "funcdef": "def"}, "sqlglot.expressions.Select.qualify": {"fullname": "sqlglot.expressions.Select.qualify", "modulename": "sqlglot.expressions", "qualname": "Select.qualify", "kind": "function", "doc": "

\n", "signature": "(\tself,\t*expressions,\tappend=True,\tdialect=None,\tcopy=True,\t**opts) -> sqlglot.expressions.Select:", "funcdef": "def"}, "sqlglot.expressions.Select.distinct": {"fullname": "sqlglot.expressions.Select.distinct", "modulename": "sqlglot.expressions", "qualname": "Select.distinct", "kind": "function", "doc": "

Set the OFFSET expression.

\n\n
Example:
\n\n
\n
\n
>>> Select().from_("tbl").select("x").distinct().sql()\n'SELECT DISTINCT x FROM tbl'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • distinct (bool): whether the Select should be distinct
  • \n
  • copy (bool): if False, modify this expression instance in-place.
  • \n
\n\n
Returns:
\n\n
\n

Select: the modified expression.

\n
\n", "signature": "(self, distinct=True, copy=True) -> sqlglot.expressions.Select:", "funcdef": "def"}, "sqlglot.expressions.Select.ctas": {"fullname": "sqlglot.expressions.Select.ctas", "modulename": "sqlglot.expressions", "qualname": "Select.ctas", "kind": "function", "doc": "

Convert this expression to a CREATE TABLE AS statement.

\n\n
Example:
\n\n
\n
\n
>>> Select().select("*").from_("tbl").ctas("x").sql()\n'CREATE TABLE x AS SELECT * FROM tbl'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • table (str | Expression): the SQL code string to parse as the table name.\nIf another Expression instance is passed, it will be used as-is.
  • \n
  • properties (dict): an optional mapping of table properties
  • \n
  • dialect (str): the dialect used to parse the input table.
  • \n
  • copy (bool): if False, modify this expression instance in-place.
  • \n
  • opts (kwargs): other options to use to parse the input table.
  • \n
\n\n
Returns:
\n\n
\n

Create: the CREATE TABLE AS expression

\n
\n", "signature": "(\tself,\ttable,\tproperties=None,\tdialect=None,\tcopy=True,\t**opts) -> sqlglot.expressions.Create:", "funcdef": "def"}, "sqlglot.expressions.Select.lock": {"fullname": "sqlglot.expressions.Select.lock", "modulename": "sqlglot.expressions", "qualname": "Select.lock", "kind": "function", "doc": "

Set the locking read mode for this expression.

\n\n
Examples:
\n\n
\n
\n
>>> Select().select("x").from_("tbl").where("x = 'a'").lock().sql("mysql")\n"SELECT x FROM tbl WHERE x = 'a' FOR UPDATE"\n
\n
\n \n
\n
>>> Select().select("x").from_("tbl").where("x = 'a'").lock(update=False).sql("mysql")\n"SELECT x FROM tbl WHERE x = 'a' FOR SHARE"\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • update: if True, the locking type will be FOR UPDATE, else it will be FOR SHARE.
  • \n
  • copy: if False, modify this expression instance in-place.
  • \n
\n\n
Returns:
\n\n
\n

The modified expression.

\n
\n", "signature": "(\tself,\tupdate: bool = True,\tcopy: bool = True) -> sqlglot.expressions.Select:", "funcdef": "def"}, "sqlglot.expressions.Select.is_star": {"fullname": "sqlglot.expressions.Select.is_star", "modulename": "sqlglot.expressions", "qualname": "Select.is_star", "kind": "variable", "doc": "

Checks whether an expression is a star.

\n", "annotation": ": bool"}, "sqlglot.expressions.Subquery": {"fullname": "sqlglot.expressions.Subquery", "modulename": "sqlglot.expressions", "qualname": "Subquery", "kind": "class", "doc": "

\n", "bases": "DerivedTable, Unionable"}, "sqlglot.expressions.Subquery.unnest": {"fullname": "sqlglot.expressions.Subquery.unnest", "modulename": "sqlglot.expressions", "qualname": "Subquery.unnest", "kind": "function", "doc": "

Returns the first non subquery.

\n", "signature": "(self):", "funcdef": "def"}, "sqlglot.expressions.Subquery.is_star": {"fullname": "sqlglot.expressions.Subquery.is_star", "modulename": "sqlglot.expressions", "qualname": "Subquery.is_star", "kind": "variable", "doc": "

Checks whether an expression is a star.

\n", "annotation": ": bool"}, "sqlglot.expressions.Subquery.output_name": {"fullname": "sqlglot.expressions.Subquery.output_name", "modulename": "sqlglot.expressions", "qualname": "Subquery.output_name", "kind": "variable", "doc": "

Name of the output column if this expression is a selection.

\n\n

If the Expression has no output name, an empty string is returned.

\n\n
Example:
\n\n
\n
\n
>>> from sqlglot import parse_one\n>>> parse_one("SELECT a").expressions[0].output_name\n'a'\n>>> parse_one("SELECT b AS c").expressions[0].output_name\n'c'\n>>> parse_one("SELECT 1 + 2").expressions[0].output_name\n''\n
\n
\n
\n"}, "sqlglot.expressions.TableSample": {"fullname": "sqlglot.expressions.TableSample", "modulename": "sqlglot.expressions", "qualname": "TableSample", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Tag": {"fullname": "sqlglot.expressions.Tag", "modulename": "sqlglot.expressions", "qualname": "Tag", "kind": "class", "doc": "

Tags are used for generating arbitrary sql like SELECT x.

\n", "bases": "Expression"}, "sqlglot.expressions.Pivot": {"fullname": "sqlglot.expressions.Pivot", "modulename": "sqlglot.expressions", "qualname": "Pivot", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Window": {"fullname": "sqlglot.expressions.Window", "modulename": "sqlglot.expressions", "qualname": "Window", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.WindowSpec": {"fullname": "sqlglot.expressions.WindowSpec", "modulename": "sqlglot.expressions", "qualname": "WindowSpec", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Where": {"fullname": "sqlglot.expressions.Where", "modulename": "sqlglot.expressions", "qualname": "Where", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Star": {"fullname": "sqlglot.expressions.Star", "modulename": "sqlglot.expressions", "qualname": "Star", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Star.output_name": {"fullname": "sqlglot.expressions.Star.output_name", "modulename": "sqlglot.expressions", "qualname": "Star.output_name", "kind": "variable", "doc": "

Name of the output column if this expression is a selection.

\n\n

If the Expression has no output name, an empty string is returned.

\n\n
Example:
\n\n
\n
\n
>>> from sqlglot import parse_one\n>>> parse_one("SELECT a").expressions[0].output_name\n'a'\n>>> parse_one("SELECT b AS c").expressions[0].output_name\n'c'\n>>> parse_one("SELECT 1 + 2").expressions[0].output_name\n''\n
\n
\n
\n"}, "sqlglot.expressions.Parameter": {"fullname": "sqlglot.expressions.Parameter", "modulename": "sqlglot.expressions", "qualname": "Parameter", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.SessionParameter": {"fullname": "sqlglot.expressions.SessionParameter", "modulename": "sqlglot.expressions", "qualname": "SessionParameter", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Placeholder": {"fullname": "sqlglot.expressions.Placeholder", "modulename": "sqlglot.expressions", "qualname": "Placeholder", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Null": {"fullname": "sqlglot.expressions.Null", "modulename": "sqlglot.expressions", "qualname": "Null", "kind": "class", "doc": "

\n", "bases": "Condition"}, "sqlglot.expressions.Boolean": {"fullname": "sqlglot.expressions.Boolean", "modulename": "sqlglot.expressions", "qualname": "Boolean", "kind": "class", "doc": "

\n", "bases": "Condition"}, "sqlglot.expressions.DataType": {"fullname": "sqlglot.expressions.DataType", "modulename": "sqlglot.expressions", "qualname": "DataType", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.DataType.Type": {"fullname": "sqlglot.expressions.DataType.Type", "modulename": "sqlglot.expressions", "qualname": "DataType.Type", "kind": "class", "doc": "

An enumeration.

\n", "bases": "sqlglot.helper.AutoName"}, "sqlglot.expressions.DataType.Type.CHAR": {"fullname": "sqlglot.expressions.DataType.Type.CHAR", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.CHAR", "kind": "variable", "doc": "

\n", "default_value": "<Type.CHAR: 'CHAR'>"}, "sqlglot.expressions.DataType.Type.NCHAR": {"fullname": "sqlglot.expressions.DataType.Type.NCHAR", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.NCHAR", "kind": "variable", "doc": "

\n", "default_value": "<Type.NCHAR: 'NCHAR'>"}, "sqlglot.expressions.DataType.Type.VARCHAR": {"fullname": "sqlglot.expressions.DataType.Type.VARCHAR", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.VARCHAR", "kind": "variable", "doc": "

\n", "default_value": "<Type.VARCHAR: 'VARCHAR'>"}, "sqlglot.expressions.DataType.Type.NVARCHAR": {"fullname": "sqlglot.expressions.DataType.Type.NVARCHAR", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.NVARCHAR", "kind": "variable", "doc": "

\n", "default_value": "<Type.NVARCHAR: 'NVARCHAR'>"}, "sqlglot.expressions.DataType.Type.TEXT": {"fullname": "sqlglot.expressions.DataType.Type.TEXT", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.TEXT", "kind": "variable", "doc": "

\n", "default_value": "<Type.TEXT: 'TEXT'>"}, "sqlglot.expressions.DataType.Type.MEDIUMTEXT": {"fullname": "sqlglot.expressions.DataType.Type.MEDIUMTEXT", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.MEDIUMTEXT", "kind": "variable", "doc": "

\n", "default_value": "<Type.MEDIUMTEXT: 'MEDIUMTEXT'>"}, "sqlglot.expressions.DataType.Type.LONGTEXT": {"fullname": "sqlglot.expressions.DataType.Type.LONGTEXT", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.LONGTEXT", "kind": "variable", "doc": "

\n", "default_value": "<Type.LONGTEXT: 'LONGTEXT'>"}, "sqlglot.expressions.DataType.Type.MEDIUMBLOB": {"fullname": "sqlglot.expressions.DataType.Type.MEDIUMBLOB", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.MEDIUMBLOB", "kind": "variable", "doc": "

\n", "default_value": "<Type.MEDIUMBLOB: 'MEDIUMBLOB'>"}, "sqlglot.expressions.DataType.Type.LONGBLOB": {"fullname": "sqlglot.expressions.DataType.Type.LONGBLOB", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.LONGBLOB", "kind": "variable", "doc": "

\n", "default_value": "<Type.LONGBLOB: 'LONGBLOB'>"}, "sqlglot.expressions.DataType.Type.BINARY": {"fullname": "sqlglot.expressions.DataType.Type.BINARY", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.BINARY", "kind": "variable", "doc": "

\n", "default_value": "<Type.BINARY: 'BINARY'>"}, "sqlglot.expressions.DataType.Type.VARBINARY": {"fullname": "sqlglot.expressions.DataType.Type.VARBINARY", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.VARBINARY", "kind": "variable", "doc": "

\n", "default_value": "<Type.VARBINARY: 'VARBINARY'>"}, "sqlglot.expressions.DataType.Type.INT": {"fullname": "sqlglot.expressions.DataType.Type.INT", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.INT", "kind": "variable", "doc": "

\n", "default_value": "<Type.INT: 'INT'>"}, "sqlglot.expressions.DataType.Type.UINT": {"fullname": "sqlglot.expressions.DataType.Type.UINT", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.UINT", "kind": "variable", "doc": "

\n", "default_value": "<Type.UINT: 'UINT'>"}, "sqlglot.expressions.DataType.Type.TINYINT": {"fullname": "sqlglot.expressions.DataType.Type.TINYINT", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.TINYINT", "kind": "variable", "doc": "

\n", "default_value": "<Type.TINYINT: 'TINYINT'>"}, "sqlglot.expressions.DataType.Type.UTINYINT": {"fullname": "sqlglot.expressions.DataType.Type.UTINYINT", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.UTINYINT", "kind": "variable", "doc": "

\n", "default_value": "<Type.UTINYINT: 'UTINYINT'>"}, "sqlglot.expressions.DataType.Type.SMALLINT": {"fullname": "sqlglot.expressions.DataType.Type.SMALLINT", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.SMALLINT", "kind": "variable", "doc": "

\n", "default_value": "<Type.SMALLINT: 'SMALLINT'>"}, "sqlglot.expressions.DataType.Type.USMALLINT": {"fullname": "sqlglot.expressions.DataType.Type.USMALLINT", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.USMALLINT", "kind": "variable", "doc": "

\n", "default_value": "<Type.USMALLINT: 'USMALLINT'>"}, "sqlglot.expressions.DataType.Type.BIGINT": {"fullname": "sqlglot.expressions.DataType.Type.BIGINT", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.BIGINT", "kind": "variable", "doc": "

\n", "default_value": "<Type.BIGINT: 'BIGINT'>"}, "sqlglot.expressions.DataType.Type.UBIGINT": {"fullname": "sqlglot.expressions.DataType.Type.UBIGINT", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.UBIGINT", "kind": "variable", "doc": "

\n", "default_value": "<Type.UBIGINT: 'UBIGINT'>"}, "sqlglot.expressions.DataType.Type.FLOAT": {"fullname": "sqlglot.expressions.DataType.Type.FLOAT", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.FLOAT", "kind": "variable", "doc": "

\n", "default_value": "<Type.FLOAT: 'FLOAT'>"}, "sqlglot.expressions.DataType.Type.DOUBLE": {"fullname": "sqlglot.expressions.DataType.Type.DOUBLE", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.DOUBLE", "kind": "variable", "doc": "

\n", "default_value": "<Type.DOUBLE: 'DOUBLE'>"}, "sqlglot.expressions.DataType.Type.DECIMAL": {"fullname": "sqlglot.expressions.DataType.Type.DECIMAL", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.DECIMAL", "kind": "variable", "doc": "

\n", "default_value": "<Type.DECIMAL: 'DECIMAL'>"}, "sqlglot.expressions.DataType.Type.BIGDECIMAL": {"fullname": "sqlglot.expressions.DataType.Type.BIGDECIMAL", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.BIGDECIMAL", "kind": "variable", "doc": "

\n", "default_value": "<Type.BIGDECIMAL: 'BIGDECIMAL'>"}, "sqlglot.expressions.DataType.Type.BIT": {"fullname": "sqlglot.expressions.DataType.Type.BIT", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.BIT", "kind": "variable", "doc": "

\n", "default_value": "<Type.BIT: 'BIT'>"}, "sqlglot.expressions.DataType.Type.BOOLEAN": {"fullname": "sqlglot.expressions.DataType.Type.BOOLEAN", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.BOOLEAN", "kind": "variable", "doc": "

\n", "default_value": "<Type.BOOLEAN: 'BOOLEAN'>"}, "sqlglot.expressions.DataType.Type.JSON": {"fullname": "sqlglot.expressions.DataType.Type.JSON", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.JSON", "kind": "variable", "doc": "

\n", "default_value": "<Type.JSON: 'JSON'>"}, "sqlglot.expressions.DataType.Type.JSONB": {"fullname": "sqlglot.expressions.DataType.Type.JSONB", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.JSONB", "kind": "variable", "doc": "

\n", "default_value": "<Type.JSONB: 'JSONB'>"}, "sqlglot.expressions.DataType.Type.INTERVAL": {"fullname": "sqlglot.expressions.DataType.Type.INTERVAL", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.INTERVAL", "kind": "variable", "doc": "

\n", "default_value": "<Type.INTERVAL: 'INTERVAL'>"}, "sqlglot.expressions.DataType.Type.TIME": {"fullname": "sqlglot.expressions.DataType.Type.TIME", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.TIME", "kind": "variable", "doc": "

\n", "default_value": "<Type.TIME: 'TIME'>"}, "sqlglot.expressions.DataType.Type.TIMESTAMP": {"fullname": "sqlglot.expressions.DataType.Type.TIMESTAMP", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.TIMESTAMP", "kind": "variable", "doc": "

\n", "default_value": "<Type.TIMESTAMP: 'TIMESTAMP'>"}, "sqlglot.expressions.DataType.Type.TIMESTAMPTZ": {"fullname": "sqlglot.expressions.DataType.Type.TIMESTAMPTZ", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.TIMESTAMPTZ", "kind": "variable", "doc": "

\n", "default_value": "<Type.TIMESTAMPTZ: 'TIMESTAMPTZ'>"}, "sqlglot.expressions.DataType.Type.TIMESTAMPLTZ": {"fullname": "sqlglot.expressions.DataType.Type.TIMESTAMPLTZ", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.TIMESTAMPLTZ", "kind": "variable", "doc": "

\n", "default_value": "<Type.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>"}, "sqlglot.expressions.DataType.Type.DATE": {"fullname": "sqlglot.expressions.DataType.Type.DATE", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.DATE", "kind": "variable", "doc": "

\n", "default_value": "<Type.DATE: 'DATE'>"}, "sqlglot.expressions.DataType.Type.DATETIME": {"fullname": "sqlglot.expressions.DataType.Type.DATETIME", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.DATETIME", "kind": "variable", "doc": "

\n", "default_value": "<Type.DATETIME: 'DATETIME'>"}, "sqlglot.expressions.DataType.Type.ARRAY": {"fullname": "sqlglot.expressions.DataType.Type.ARRAY", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.ARRAY", "kind": "variable", "doc": "

\n", "default_value": "<Type.ARRAY: 'ARRAY'>"}, "sqlglot.expressions.DataType.Type.MAP": {"fullname": "sqlglot.expressions.DataType.Type.MAP", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.MAP", "kind": "variable", "doc": "

\n", "default_value": "<Type.MAP: 'MAP'>"}, "sqlglot.expressions.DataType.Type.UUID": {"fullname": "sqlglot.expressions.DataType.Type.UUID", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.UUID", "kind": "variable", "doc": "

\n", "default_value": "<Type.UUID: 'UUID'>"}, "sqlglot.expressions.DataType.Type.GEOGRAPHY": {"fullname": "sqlglot.expressions.DataType.Type.GEOGRAPHY", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.GEOGRAPHY", "kind": "variable", "doc": "

\n", "default_value": "<Type.GEOGRAPHY: 'GEOGRAPHY'>"}, "sqlglot.expressions.DataType.Type.GEOMETRY": {"fullname": "sqlglot.expressions.DataType.Type.GEOMETRY", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.GEOMETRY", "kind": "variable", "doc": "

\n", "default_value": "<Type.GEOMETRY: 'GEOMETRY'>"}, "sqlglot.expressions.DataType.Type.STRUCT": {"fullname": "sqlglot.expressions.DataType.Type.STRUCT", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.STRUCT", "kind": "variable", "doc": "

\n", "default_value": "<Type.STRUCT: 'STRUCT'>"}, "sqlglot.expressions.DataType.Type.NULLABLE": {"fullname": "sqlglot.expressions.DataType.Type.NULLABLE", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.NULLABLE", "kind": "variable", "doc": "

\n", "default_value": "<Type.NULLABLE: 'NULLABLE'>"}, "sqlglot.expressions.DataType.Type.HLLSKETCH": {"fullname": "sqlglot.expressions.DataType.Type.HLLSKETCH", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.HLLSKETCH", "kind": "variable", "doc": "

\n", "default_value": "<Type.HLLSKETCH: 'HLLSKETCH'>"}, "sqlglot.expressions.DataType.Type.HSTORE": {"fullname": "sqlglot.expressions.DataType.Type.HSTORE", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.HSTORE", "kind": "variable", "doc": "

\n", "default_value": "<Type.HSTORE: 'HSTORE'>"}, "sqlglot.expressions.DataType.Type.SUPER": {"fullname": "sqlglot.expressions.DataType.Type.SUPER", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.SUPER", "kind": "variable", "doc": "

\n", "default_value": "<Type.SUPER: 'SUPER'>"}, "sqlglot.expressions.DataType.Type.SERIAL": {"fullname": "sqlglot.expressions.DataType.Type.SERIAL", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.SERIAL", "kind": "variable", "doc": "

\n", "default_value": "<Type.SERIAL: 'SERIAL'>"}, "sqlglot.expressions.DataType.Type.SMALLSERIAL": {"fullname": "sqlglot.expressions.DataType.Type.SMALLSERIAL", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.SMALLSERIAL", "kind": "variable", "doc": "

\n", "default_value": "<Type.SMALLSERIAL: 'SMALLSERIAL'>"}, "sqlglot.expressions.DataType.Type.BIGSERIAL": {"fullname": "sqlglot.expressions.DataType.Type.BIGSERIAL", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.BIGSERIAL", "kind": "variable", "doc": "

\n", "default_value": "<Type.BIGSERIAL: 'BIGSERIAL'>"}, "sqlglot.expressions.DataType.Type.XML": {"fullname": "sqlglot.expressions.DataType.Type.XML", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.XML", "kind": "variable", "doc": "

\n", "default_value": "<Type.XML: 'XML'>"}, "sqlglot.expressions.DataType.Type.UNIQUEIDENTIFIER": {"fullname": "sqlglot.expressions.DataType.Type.UNIQUEIDENTIFIER", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.UNIQUEIDENTIFIER", "kind": "variable", "doc": "

\n", "default_value": "<Type.UNIQUEIDENTIFIER: 'UNIQUEIDENTIFIER'>"}, "sqlglot.expressions.DataType.Type.MONEY": {"fullname": "sqlglot.expressions.DataType.Type.MONEY", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.MONEY", "kind": "variable", "doc": "

\n", "default_value": "<Type.MONEY: 'MONEY'>"}, "sqlglot.expressions.DataType.Type.SMALLMONEY": {"fullname": "sqlglot.expressions.DataType.Type.SMALLMONEY", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.SMALLMONEY", "kind": "variable", "doc": "

\n", "default_value": "<Type.SMALLMONEY: 'SMALLMONEY'>"}, "sqlglot.expressions.DataType.Type.ROWVERSION": {"fullname": "sqlglot.expressions.DataType.Type.ROWVERSION", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.ROWVERSION", "kind": "variable", "doc": "

\n", "default_value": "<Type.ROWVERSION: 'ROWVERSION'>"}, "sqlglot.expressions.DataType.Type.IMAGE": {"fullname": "sqlglot.expressions.DataType.Type.IMAGE", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.IMAGE", "kind": "variable", "doc": "

\n", "default_value": "<Type.IMAGE: 'IMAGE'>"}, "sqlglot.expressions.DataType.Type.VARIANT": {"fullname": "sqlglot.expressions.DataType.Type.VARIANT", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.VARIANT", "kind": "variable", "doc": "

\n", "default_value": "<Type.VARIANT: 'VARIANT'>"}, "sqlglot.expressions.DataType.Type.OBJECT": {"fullname": "sqlglot.expressions.DataType.Type.OBJECT", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.OBJECT", "kind": "variable", "doc": "

\n", "default_value": "<Type.OBJECT: 'OBJECT'>"}, "sqlglot.expressions.DataType.Type.INET": {"fullname": "sqlglot.expressions.DataType.Type.INET", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.INET", "kind": "variable", "doc": "

\n", "default_value": "<Type.INET: 'INET'>"}, "sqlglot.expressions.DataType.Type.NULL": {"fullname": "sqlglot.expressions.DataType.Type.NULL", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.NULL", "kind": "variable", "doc": "

\n", "default_value": "<Type.NULL: 'NULL'>"}, "sqlglot.expressions.DataType.Type.UNKNOWN": {"fullname": "sqlglot.expressions.DataType.Type.UNKNOWN", "modulename": "sqlglot.expressions", "qualname": "DataType.Type.UNKNOWN", "kind": "variable", "doc": "

\n", "default_value": "<Type.UNKNOWN: 'UNKNOWN'>"}, "sqlglot.expressions.DataType.build": {"fullname": "sqlglot.expressions.DataType.build", "modulename": "sqlglot.expressions", "qualname": "DataType.build", "kind": "function", "doc": "

\n", "signature": "(\tcls,\tdtype: str | sqlglot.expressions.DataType | sqlglot.expressions.DataType.Type,\tdialect: Union[str, sqlglot.dialects.dialect.Dialect, Type[sqlglot.dialects.dialect.Dialect], NoneType] = None,\t**kwargs) -> sqlglot.expressions.DataType:", "funcdef": "def"}, "sqlglot.expressions.DataType.is_type": {"fullname": "sqlglot.expressions.DataType.is_type", "modulename": "sqlglot.expressions", "qualname": "DataType.is_type", "kind": "function", "doc": "

\n", "signature": "(self, dtype: sqlglot.expressions.DataType.Type) -> bool:", "funcdef": "def"}, "sqlglot.expressions.PseudoType": {"fullname": "sqlglot.expressions.PseudoType", "modulename": "sqlglot.expressions", "qualname": "PseudoType", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.StructKwarg": {"fullname": "sqlglot.expressions.StructKwarg", "modulename": "sqlglot.expressions", "qualname": "StructKwarg", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.SubqueryPredicate": {"fullname": "sqlglot.expressions.SubqueryPredicate", "modulename": "sqlglot.expressions", "qualname": "SubqueryPredicate", "kind": "class", "doc": "

\n", "bases": "Predicate"}, "sqlglot.expressions.All": {"fullname": "sqlglot.expressions.All", "modulename": "sqlglot.expressions", "qualname": "All", "kind": "class", "doc": "

\n", "bases": "SubqueryPredicate"}, "sqlglot.expressions.Any": {"fullname": "sqlglot.expressions.Any", "modulename": "sqlglot.expressions", "qualname": "Any", "kind": "class", "doc": "

\n", "bases": "SubqueryPredicate"}, "sqlglot.expressions.Exists": {"fullname": "sqlglot.expressions.Exists", "modulename": "sqlglot.expressions", "qualname": "Exists", "kind": "class", "doc": "

\n", "bases": "SubqueryPredicate"}, "sqlglot.expressions.Command": {"fullname": "sqlglot.expressions.Command", "modulename": "sqlglot.expressions", "qualname": "Command", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Transaction": {"fullname": "sqlglot.expressions.Transaction", "modulename": "sqlglot.expressions", "qualname": "Transaction", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Commit": {"fullname": "sqlglot.expressions.Commit", "modulename": "sqlglot.expressions", "qualname": "Commit", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Rollback": {"fullname": "sqlglot.expressions.Rollback", "modulename": "sqlglot.expressions", "qualname": "Rollback", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.AlterTable": {"fullname": "sqlglot.expressions.AlterTable", "modulename": "sqlglot.expressions", "qualname": "AlterTable", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.AddConstraint": {"fullname": "sqlglot.expressions.AddConstraint", "modulename": "sqlglot.expressions", "qualname": "AddConstraint", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.DropPartition": {"fullname": "sqlglot.expressions.DropPartition", "modulename": "sqlglot.expressions", "qualname": "DropPartition", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Binary": {"fullname": "sqlglot.expressions.Binary", "modulename": "sqlglot.expressions", "qualname": "Binary", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Add": {"fullname": "sqlglot.expressions.Add", "modulename": "sqlglot.expressions", "qualname": "Add", "kind": "class", "doc": "

\n", "bases": "Binary"}, "sqlglot.expressions.Connector": {"fullname": "sqlglot.expressions.Connector", "modulename": "sqlglot.expressions", "qualname": "Connector", "kind": "class", "doc": "

\n", "bases": "Binary, Condition"}, "sqlglot.expressions.And": {"fullname": "sqlglot.expressions.And", "modulename": "sqlglot.expressions", "qualname": "And", "kind": "class", "doc": "

\n", "bases": "Connector"}, "sqlglot.expressions.Or": {"fullname": "sqlglot.expressions.Or", "modulename": "sqlglot.expressions", "qualname": "Or", "kind": "class", "doc": "

\n", "bases": "Connector"}, "sqlglot.expressions.BitwiseAnd": {"fullname": "sqlglot.expressions.BitwiseAnd", "modulename": "sqlglot.expressions", "qualname": "BitwiseAnd", "kind": "class", "doc": "

\n", "bases": "Binary"}, "sqlglot.expressions.BitwiseLeftShift": {"fullname": "sqlglot.expressions.BitwiseLeftShift", "modulename": "sqlglot.expressions", "qualname": "BitwiseLeftShift", "kind": "class", "doc": "

\n", "bases": "Binary"}, "sqlglot.expressions.BitwiseOr": {"fullname": "sqlglot.expressions.BitwiseOr", "modulename": "sqlglot.expressions", "qualname": "BitwiseOr", "kind": "class", "doc": "

\n", "bases": "Binary"}, "sqlglot.expressions.BitwiseRightShift": {"fullname": "sqlglot.expressions.BitwiseRightShift", "modulename": "sqlglot.expressions", "qualname": "BitwiseRightShift", "kind": "class", "doc": "

\n", "bases": "Binary"}, "sqlglot.expressions.BitwiseXor": {"fullname": "sqlglot.expressions.BitwiseXor", "modulename": "sqlglot.expressions", "qualname": "BitwiseXor", "kind": "class", "doc": "

\n", "bases": "Binary"}, "sqlglot.expressions.Div": {"fullname": "sqlglot.expressions.Div", "modulename": "sqlglot.expressions", "qualname": "Div", "kind": "class", "doc": "

\n", "bases": "Binary"}, "sqlglot.expressions.Overlaps": {"fullname": "sqlglot.expressions.Overlaps", "modulename": "sqlglot.expressions", "qualname": "Overlaps", "kind": "class", "doc": "

\n", "bases": "Binary"}, "sqlglot.expressions.Dot": {"fullname": "sqlglot.expressions.Dot", "modulename": "sqlglot.expressions", "qualname": "Dot", "kind": "class", "doc": "

\n", "bases": "Binary"}, "sqlglot.expressions.Dot.build": {"fullname": "sqlglot.expressions.Dot.build", "modulename": "sqlglot.expressions", "qualname": "Dot.build", "kind": "function", "doc": "

Build a Dot object with a sequence of expressions.

\n", "signature": "(\tself,\texpressions: Sequence[sqlglot.expressions.Expression]) -> sqlglot.expressions.Dot:", "funcdef": "def"}, "sqlglot.expressions.DPipe": {"fullname": "sqlglot.expressions.DPipe", "modulename": "sqlglot.expressions", "qualname": "DPipe", "kind": "class", "doc": "

\n", "bases": "Binary"}, "sqlglot.expressions.EQ": {"fullname": "sqlglot.expressions.EQ", "modulename": "sqlglot.expressions", "qualname": "EQ", "kind": "class", "doc": "

\n", "bases": "Binary, Predicate"}, "sqlglot.expressions.NullSafeEQ": {"fullname": "sqlglot.expressions.NullSafeEQ", "modulename": "sqlglot.expressions", "qualname": "NullSafeEQ", "kind": "class", "doc": "

\n", "bases": "Binary, Predicate"}, "sqlglot.expressions.NullSafeNEQ": {"fullname": "sqlglot.expressions.NullSafeNEQ", "modulename": "sqlglot.expressions", "qualname": "NullSafeNEQ", "kind": "class", "doc": "

\n", "bases": "Binary, Predicate"}, "sqlglot.expressions.Distance": {"fullname": "sqlglot.expressions.Distance", "modulename": "sqlglot.expressions", "qualname": "Distance", "kind": "class", "doc": "

\n", "bases": "Binary"}, "sqlglot.expressions.Escape": {"fullname": "sqlglot.expressions.Escape", "modulename": "sqlglot.expressions", "qualname": "Escape", "kind": "class", "doc": "

\n", "bases": "Binary"}, "sqlglot.expressions.Glob": {"fullname": "sqlglot.expressions.Glob", "modulename": "sqlglot.expressions", "qualname": "Glob", "kind": "class", "doc": "

\n", "bases": "Binary, Predicate"}, "sqlglot.expressions.GT": {"fullname": "sqlglot.expressions.GT", "modulename": "sqlglot.expressions", "qualname": "GT", "kind": "class", "doc": "

\n", "bases": "Binary, Predicate"}, "sqlglot.expressions.GTE": {"fullname": "sqlglot.expressions.GTE", "modulename": "sqlglot.expressions", "qualname": "GTE", "kind": "class", "doc": "

\n", "bases": "Binary, Predicate"}, "sqlglot.expressions.ILike": {"fullname": "sqlglot.expressions.ILike", "modulename": "sqlglot.expressions", "qualname": "ILike", "kind": "class", "doc": "

\n", "bases": "Binary, Predicate"}, "sqlglot.expressions.ILikeAny": {"fullname": "sqlglot.expressions.ILikeAny", "modulename": "sqlglot.expressions", "qualname": "ILikeAny", "kind": "class", "doc": "

\n", "bases": "Binary, Predicate"}, "sqlglot.expressions.IntDiv": {"fullname": "sqlglot.expressions.IntDiv", "modulename": "sqlglot.expressions", "qualname": "IntDiv", "kind": "class", "doc": "

\n", "bases": "Binary"}, "sqlglot.expressions.Is": {"fullname": "sqlglot.expressions.Is", "modulename": "sqlglot.expressions", "qualname": "Is", "kind": "class", "doc": "

\n", "bases": "Binary, Predicate"}, "sqlglot.expressions.Kwarg": {"fullname": "sqlglot.expressions.Kwarg", "modulename": "sqlglot.expressions", "qualname": "Kwarg", "kind": "class", "doc": "

Kwarg in special functions like func(kwarg => y).

\n", "bases": "Binary"}, "sqlglot.expressions.Like": {"fullname": "sqlglot.expressions.Like", "modulename": "sqlglot.expressions", "qualname": "Like", "kind": "class", "doc": "

\n", "bases": "Binary, Predicate"}, "sqlglot.expressions.LikeAny": {"fullname": "sqlglot.expressions.LikeAny", "modulename": "sqlglot.expressions", "qualname": "LikeAny", "kind": "class", "doc": "

\n", "bases": "Binary, Predicate"}, "sqlglot.expressions.LT": {"fullname": "sqlglot.expressions.LT", "modulename": "sqlglot.expressions", "qualname": "LT", "kind": "class", "doc": "

\n", "bases": "Binary, Predicate"}, "sqlglot.expressions.LTE": {"fullname": "sqlglot.expressions.LTE", "modulename": "sqlglot.expressions", "qualname": "LTE", "kind": "class", "doc": "

\n", "bases": "Binary, Predicate"}, "sqlglot.expressions.Mod": {"fullname": "sqlglot.expressions.Mod", "modulename": "sqlglot.expressions", "qualname": "Mod", "kind": "class", "doc": "

\n", "bases": "Binary"}, "sqlglot.expressions.Mul": {"fullname": "sqlglot.expressions.Mul", "modulename": "sqlglot.expressions", "qualname": "Mul", "kind": "class", "doc": "

\n", "bases": "Binary"}, "sqlglot.expressions.NEQ": {"fullname": "sqlglot.expressions.NEQ", "modulename": "sqlglot.expressions", "qualname": "NEQ", "kind": "class", "doc": "

\n", "bases": "Binary, Predicate"}, "sqlglot.expressions.SimilarTo": {"fullname": "sqlglot.expressions.SimilarTo", "modulename": "sqlglot.expressions", "qualname": "SimilarTo", "kind": "class", "doc": "

\n", "bases": "Binary, Predicate"}, "sqlglot.expressions.Slice": {"fullname": "sqlglot.expressions.Slice", "modulename": "sqlglot.expressions", "qualname": "Slice", "kind": "class", "doc": "

\n", "bases": "Binary"}, "sqlglot.expressions.Sub": {"fullname": "sqlglot.expressions.Sub", "modulename": "sqlglot.expressions", "qualname": "Sub", "kind": "class", "doc": "

\n", "bases": "Binary"}, "sqlglot.expressions.ArrayOverlaps": {"fullname": "sqlglot.expressions.ArrayOverlaps", "modulename": "sqlglot.expressions", "qualname": "ArrayOverlaps", "kind": "class", "doc": "

\n", "bases": "Binary"}, "sqlglot.expressions.Unary": {"fullname": "sqlglot.expressions.Unary", "modulename": "sqlglot.expressions", "qualname": "Unary", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.BitwiseNot": {"fullname": "sqlglot.expressions.BitwiseNot", "modulename": "sqlglot.expressions", "qualname": "BitwiseNot", "kind": "class", "doc": "

\n", "bases": "Unary"}, "sqlglot.expressions.Not": {"fullname": "sqlglot.expressions.Not", "modulename": "sqlglot.expressions", "qualname": "Not", "kind": "class", "doc": "

\n", "bases": "Unary, Condition"}, "sqlglot.expressions.Paren": {"fullname": "sqlglot.expressions.Paren", "modulename": "sqlglot.expressions", "qualname": "Paren", "kind": "class", "doc": "

\n", "bases": "Unary, Condition"}, "sqlglot.expressions.Neg": {"fullname": "sqlglot.expressions.Neg", "modulename": "sqlglot.expressions", "qualname": "Neg", "kind": "class", "doc": "

\n", "bases": "Unary"}, "sqlglot.expressions.Alias": {"fullname": "sqlglot.expressions.Alias", "modulename": "sqlglot.expressions", "qualname": "Alias", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Alias.output_name": {"fullname": "sqlglot.expressions.Alias.output_name", "modulename": "sqlglot.expressions", "qualname": "Alias.output_name", "kind": "variable", "doc": "

Name of the output column if this expression is a selection.

\n\n

If the Expression has no output name, an empty string is returned.

\n\n
Example:
\n\n
\n
\n
>>> from sqlglot import parse_one\n>>> parse_one("SELECT a").expressions[0].output_name\n'a'\n>>> parse_one("SELECT b AS c").expressions[0].output_name\n'c'\n>>> parse_one("SELECT 1 + 2").expressions[0].output_name\n''\n
\n
\n
\n"}, "sqlglot.expressions.Aliases": {"fullname": "sqlglot.expressions.Aliases", "modulename": "sqlglot.expressions", "qualname": "Aliases", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.AtTimeZone": {"fullname": "sqlglot.expressions.AtTimeZone", "modulename": "sqlglot.expressions", "qualname": "AtTimeZone", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Between": {"fullname": "sqlglot.expressions.Between", "modulename": "sqlglot.expressions", "qualname": "Between", "kind": "class", "doc": "

\n", "bases": "Predicate"}, "sqlglot.expressions.Bracket": {"fullname": "sqlglot.expressions.Bracket", "modulename": "sqlglot.expressions", "qualname": "Bracket", "kind": "class", "doc": "

\n", "bases": "Condition"}, "sqlglot.expressions.Distinct": {"fullname": "sqlglot.expressions.Distinct", "modulename": "sqlglot.expressions", "qualname": "Distinct", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.In": {"fullname": "sqlglot.expressions.In", "modulename": "sqlglot.expressions", "qualname": "In", "kind": "class", "doc": "

\n", "bases": "Predicate"}, "sqlglot.expressions.TimeUnit": {"fullname": "sqlglot.expressions.TimeUnit", "modulename": "sqlglot.expressions", "qualname": "TimeUnit", "kind": "class", "doc": "

Automatically converts unit arg into a var.

\n", "bases": "Expression"}, "sqlglot.expressions.TimeUnit.__init__": {"fullname": "sqlglot.expressions.TimeUnit.__init__", "modulename": "sqlglot.expressions", "qualname": "TimeUnit.__init__", "kind": "function", "doc": "

\n", "signature": "(**args)"}, "sqlglot.expressions.Interval": {"fullname": "sqlglot.expressions.Interval", "modulename": "sqlglot.expressions", "qualname": "Interval", "kind": "class", "doc": "

\n", "bases": "TimeUnit"}, "sqlglot.expressions.IgnoreNulls": {"fullname": "sqlglot.expressions.IgnoreNulls", "modulename": "sqlglot.expressions", "qualname": "IgnoreNulls", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.RespectNulls": {"fullname": "sqlglot.expressions.RespectNulls", "modulename": "sqlglot.expressions", "qualname": "RespectNulls", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Func": {"fullname": "sqlglot.expressions.Func", "modulename": "sqlglot.expressions", "qualname": "Func", "kind": "class", "doc": "

The base class for all function expressions.

\n\n
Attributes:
\n\n
    \n
  • is_var_len_args (bool): if set to True the last argument defined in arg_types will be\ntreated as a variable length argument and the argument's value will be stored as a list.
  • \n
  • _sql_names (list): determines the SQL name (1st item in the list) and aliases (subsequent items)\nfor this function expression. These values are used to map this node to a name during parsing\nas well as to provide the function's name during SQL string generation. By default the SQL\nname is set to the expression's class name transformed to snake case.
  • \n
\n", "bases": "Condition"}, "sqlglot.expressions.Func.from_arg_list": {"fullname": "sqlglot.expressions.Func.from_arg_list", "modulename": "sqlglot.expressions", "qualname": "Func.from_arg_list", "kind": "function", "doc": "

\n", "signature": "(cls, args):", "funcdef": "def"}, "sqlglot.expressions.Func.sql_names": {"fullname": "sqlglot.expressions.Func.sql_names", "modulename": "sqlglot.expressions", "qualname": "Func.sql_names", "kind": "function", "doc": "

\n", "signature": "(cls):", "funcdef": "def"}, "sqlglot.expressions.Func.sql_name": {"fullname": "sqlglot.expressions.Func.sql_name", "modulename": "sqlglot.expressions", "qualname": "Func.sql_name", "kind": "function", "doc": "

\n", "signature": "(cls):", "funcdef": "def"}, "sqlglot.expressions.Func.default_parser_mappings": {"fullname": "sqlglot.expressions.Func.default_parser_mappings", "modulename": "sqlglot.expressions", "qualname": "Func.default_parser_mappings", "kind": "function", "doc": "

\n", "signature": "(cls):", "funcdef": "def"}, "sqlglot.expressions.AggFunc": {"fullname": "sqlglot.expressions.AggFunc", "modulename": "sqlglot.expressions", "qualname": "AggFunc", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.Abs": {"fullname": "sqlglot.expressions.Abs", "modulename": "sqlglot.expressions", "qualname": "Abs", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.Anonymous": {"fullname": "sqlglot.expressions.Anonymous", "modulename": "sqlglot.expressions", "qualname": "Anonymous", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.Hll": {"fullname": "sqlglot.expressions.Hll", "modulename": "sqlglot.expressions", "qualname": "Hll", "kind": "class", "doc": "

\n", "bases": "AggFunc"}, "sqlglot.expressions.ApproxDistinct": {"fullname": "sqlglot.expressions.ApproxDistinct", "modulename": "sqlglot.expressions", "qualname": "ApproxDistinct", "kind": "class", "doc": "

\n", "bases": "AggFunc"}, "sqlglot.expressions.Array": {"fullname": "sqlglot.expressions.Array", "modulename": "sqlglot.expressions", "qualname": "Array", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.ToChar": {"fullname": "sqlglot.expressions.ToChar", "modulename": "sqlglot.expressions", "qualname": "ToChar", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.GenerateSeries": {"fullname": "sqlglot.expressions.GenerateSeries", "modulename": "sqlglot.expressions", "qualname": "GenerateSeries", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.ArrayAgg": {"fullname": "sqlglot.expressions.ArrayAgg", "modulename": "sqlglot.expressions", "qualname": "ArrayAgg", "kind": "class", "doc": "

\n", "bases": "AggFunc"}, "sqlglot.expressions.ArrayAll": {"fullname": "sqlglot.expressions.ArrayAll", "modulename": "sqlglot.expressions", "qualname": "ArrayAll", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.ArrayAny": {"fullname": "sqlglot.expressions.ArrayAny", "modulename": "sqlglot.expressions", "qualname": "ArrayAny", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.ArrayConcat": {"fullname": "sqlglot.expressions.ArrayConcat", "modulename": "sqlglot.expressions", "qualname": "ArrayConcat", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.ArrayContains": {"fullname": "sqlglot.expressions.ArrayContains", "modulename": "sqlglot.expressions", "qualname": "ArrayContains", "kind": "class", "doc": "

\n", "bases": "Binary, Func"}, "sqlglot.expressions.ArrayContained": {"fullname": "sqlglot.expressions.ArrayContained", "modulename": "sqlglot.expressions", "qualname": "ArrayContained", "kind": "class", "doc": "

\n", "bases": "Binary"}, "sqlglot.expressions.ArrayFilter": {"fullname": "sqlglot.expressions.ArrayFilter", "modulename": "sqlglot.expressions", "qualname": "ArrayFilter", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.ArrayJoin": {"fullname": "sqlglot.expressions.ArrayJoin", "modulename": "sqlglot.expressions", "qualname": "ArrayJoin", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.ArraySize": {"fullname": "sqlglot.expressions.ArraySize", "modulename": "sqlglot.expressions", "qualname": "ArraySize", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.ArraySort": {"fullname": "sqlglot.expressions.ArraySort", "modulename": "sqlglot.expressions", "qualname": "ArraySort", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.ArraySum": {"fullname": "sqlglot.expressions.ArraySum", "modulename": "sqlglot.expressions", "qualname": "ArraySum", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.ArrayUnionAgg": {"fullname": "sqlglot.expressions.ArrayUnionAgg", "modulename": "sqlglot.expressions", "qualname": "ArrayUnionAgg", "kind": "class", "doc": "

\n", "bases": "AggFunc"}, "sqlglot.expressions.Avg": {"fullname": "sqlglot.expressions.Avg", "modulename": "sqlglot.expressions", "qualname": "Avg", "kind": "class", "doc": "

\n", "bases": "AggFunc"}, "sqlglot.expressions.AnyValue": {"fullname": "sqlglot.expressions.AnyValue", "modulename": "sqlglot.expressions", "qualname": "AnyValue", "kind": "class", "doc": "

\n", "bases": "AggFunc"}, "sqlglot.expressions.Case": {"fullname": "sqlglot.expressions.Case", "modulename": "sqlglot.expressions", "qualname": "Case", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.Cast": {"fullname": "sqlglot.expressions.Cast", "modulename": "sqlglot.expressions", "qualname": "Cast", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.Cast.output_name": {"fullname": "sqlglot.expressions.Cast.output_name", "modulename": "sqlglot.expressions", "qualname": "Cast.output_name", "kind": "variable", "doc": "

Name of the output column if this expression is a selection.

\n\n

If the Expression has no output name, an empty string is returned.

\n\n
Example:
\n\n
\n
\n
>>> from sqlglot import parse_one\n>>> parse_one("SELECT a").expressions[0].output_name\n'a'\n>>> parse_one("SELECT b AS c").expressions[0].output_name\n'c'\n>>> parse_one("SELECT 1 + 2").expressions[0].output_name\n''\n
\n
\n
\n"}, "sqlglot.expressions.Cast.is_type": {"fullname": "sqlglot.expressions.Cast.is_type", "modulename": "sqlglot.expressions", "qualname": "Cast.is_type", "kind": "function", "doc": "

\n", "signature": "(self, dtype: sqlglot.expressions.DataType.Type) -> bool:", "funcdef": "def"}, "sqlglot.expressions.Collate": {"fullname": "sqlglot.expressions.Collate", "modulename": "sqlglot.expressions", "qualname": "Collate", "kind": "class", "doc": "

\n", "bases": "Binary"}, "sqlglot.expressions.TryCast": {"fullname": "sqlglot.expressions.TryCast", "modulename": "sqlglot.expressions", "qualname": "TryCast", "kind": "class", "doc": "

\n", "bases": "Cast"}, "sqlglot.expressions.Ceil": {"fullname": "sqlglot.expressions.Ceil", "modulename": "sqlglot.expressions", "qualname": "Ceil", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.Coalesce": {"fullname": "sqlglot.expressions.Coalesce", "modulename": "sqlglot.expressions", "qualname": "Coalesce", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.Concat": {"fullname": "sqlglot.expressions.Concat", "modulename": "sqlglot.expressions", "qualname": "Concat", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.ConcatWs": {"fullname": "sqlglot.expressions.ConcatWs", "modulename": "sqlglot.expressions", "qualname": "ConcatWs", "kind": "class", "doc": "

\n", "bases": "Concat"}, "sqlglot.expressions.Count": {"fullname": "sqlglot.expressions.Count", "modulename": "sqlglot.expressions", "qualname": "Count", "kind": "class", "doc": "

\n", "bases": "AggFunc"}, "sqlglot.expressions.CountIf": {"fullname": "sqlglot.expressions.CountIf", "modulename": "sqlglot.expressions", "qualname": "CountIf", "kind": "class", "doc": "

\n", "bases": "AggFunc"}, "sqlglot.expressions.CurrentDate": {"fullname": "sqlglot.expressions.CurrentDate", "modulename": "sqlglot.expressions", "qualname": "CurrentDate", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.CurrentDatetime": {"fullname": "sqlglot.expressions.CurrentDatetime", "modulename": "sqlglot.expressions", "qualname": "CurrentDatetime", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.CurrentTime": {"fullname": "sqlglot.expressions.CurrentTime", "modulename": "sqlglot.expressions", "qualname": "CurrentTime", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.CurrentTimestamp": {"fullname": "sqlglot.expressions.CurrentTimestamp", "modulename": "sqlglot.expressions", "qualname": "CurrentTimestamp", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.CurrentUser": {"fullname": "sqlglot.expressions.CurrentUser", "modulename": "sqlglot.expressions", "qualname": "CurrentUser", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.DateAdd": {"fullname": "sqlglot.expressions.DateAdd", "modulename": "sqlglot.expressions", "qualname": "DateAdd", "kind": "class", "doc": "

\n", "bases": "Func, TimeUnit"}, "sqlglot.expressions.DateSub": {"fullname": "sqlglot.expressions.DateSub", "modulename": "sqlglot.expressions", "qualname": "DateSub", "kind": "class", "doc": "

\n", "bases": "Func, TimeUnit"}, "sqlglot.expressions.DateDiff": {"fullname": "sqlglot.expressions.DateDiff", "modulename": "sqlglot.expressions", "qualname": "DateDiff", "kind": "class", "doc": "

\n", "bases": "Func, TimeUnit"}, "sqlglot.expressions.DateTrunc": {"fullname": "sqlglot.expressions.DateTrunc", "modulename": "sqlglot.expressions", "qualname": "DateTrunc", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.DatetimeAdd": {"fullname": "sqlglot.expressions.DatetimeAdd", "modulename": "sqlglot.expressions", "qualname": "DatetimeAdd", "kind": "class", "doc": "

\n", "bases": "Func, TimeUnit"}, "sqlglot.expressions.DatetimeSub": {"fullname": "sqlglot.expressions.DatetimeSub", "modulename": "sqlglot.expressions", "qualname": "DatetimeSub", "kind": "class", "doc": "

\n", "bases": "Func, TimeUnit"}, "sqlglot.expressions.DatetimeDiff": {"fullname": "sqlglot.expressions.DatetimeDiff", "modulename": "sqlglot.expressions", "qualname": "DatetimeDiff", "kind": "class", "doc": "

\n", "bases": "Func, TimeUnit"}, "sqlglot.expressions.DatetimeTrunc": {"fullname": "sqlglot.expressions.DatetimeTrunc", "modulename": "sqlglot.expressions", "qualname": "DatetimeTrunc", "kind": "class", "doc": "

\n", "bases": "Func, TimeUnit"}, "sqlglot.expressions.DayOfWeek": {"fullname": "sqlglot.expressions.DayOfWeek", "modulename": "sqlglot.expressions", "qualname": "DayOfWeek", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.DayOfMonth": {"fullname": "sqlglot.expressions.DayOfMonth", "modulename": "sqlglot.expressions", "qualname": "DayOfMonth", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.DayOfYear": {"fullname": "sqlglot.expressions.DayOfYear", "modulename": "sqlglot.expressions", "qualname": "DayOfYear", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.WeekOfYear": {"fullname": "sqlglot.expressions.WeekOfYear", "modulename": "sqlglot.expressions", "qualname": "WeekOfYear", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.LastDateOfMonth": {"fullname": "sqlglot.expressions.LastDateOfMonth", "modulename": "sqlglot.expressions", "qualname": "LastDateOfMonth", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.Extract": {"fullname": "sqlglot.expressions.Extract", "modulename": "sqlglot.expressions", "qualname": "Extract", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.TimestampAdd": {"fullname": "sqlglot.expressions.TimestampAdd", "modulename": "sqlglot.expressions", "qualname": "TimestampAdd", "kind": "class", "doc": "

\n", "bases": "Func, TimeUnit"}, "sqlglot.expressions.TimestampSub": {"fullname": "sqlglot.expressions.TimestampSub", "modulename": "sqlglot.expressions", "qualname": "TimestampSub", "kind": "class", "doc": "

\n", "bases": "Func, TimeUnit"}, "sqlglot.expressions.TimestampDiff": {"fullname": "sqlglot.expressions.TimestampDiff", "modulename": "sqlglot.expressions", "qualname": "TimestampDiff", "kind": "class", "doc": "

\n", "bases": "Func, TimeUnit"}, "sqlglot.expressions.TimestampTrunc": {"fullname": "sqlglot.expressions.TimestampTrunc", "modulename": "sqlglot.expressions", "qualname": "TimestampTrunc", "kind": "class", "doc": "

\n", "bases": "Func, TimeUnit"}, "sqlglot.expressions.TimeAdd": {"fullname": "sqlglot.expressions.TimeAdd", "modulename": "sqlglot.expressions", "qualname": "TimeAdd", "kind": "class", "doc": "

\n", "bases": "Func, TimeUnit"}, "sqlglot.expressions.TimeSub": {"fullname": "sqlglot.expressions.TimeSub", "modulename": "sqlglot.expressions", "qualname": "TimeSub", "kind": "class", "doc": "

\n", "bases": "Func, TimeUnit"}, "sqlglot.expressions.TimeDiff": {"fullname": "sqlglot.expressions.TimeDiff", "modulename": "sqlglot.expressions", "qualname": "TimeDiff", "kind": "class", "doc": "

\n", "bases": "Func, TimeUnit"}, "sqlglot.expressions.TimeTrunc": {"fullname": "sqlglot.expressions.TimeTrunc", "modulename": "sqlglot.expressions", "qualname": "TimeTrunc", "kind": "class", "doc": "

\n", "bases": "Func, TimeUnit"}, "sqlglot.expressions.DateFromParts": {"fullname": "sqlglot.expressions.DateFromParts", "modulename": "sqlglot.expressions", "qualname": "DateFromParts", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.DateStrToDate": {"fullname": "sqlglot.expressions.DateStrToDate", "modulename": "sqlglot.expressions", "qualname": "DateStrToDate", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.DateToDateStr": {"fullname": "sqlglot.expressions.DateToDateStr", "modulename": "sqlglot.expressions", "qualname": "DateToDateStr", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.DateToDi": {"fullname": "sqlglot.expressions.DateToDi", "modulename": "sqlglot.expressions", "qualname": "DateToDi", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.Day": {"fullname": "sqlglot.expressions.Day", "modulename": "sqlglot.expressions", "qualname": "Day", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.Decode": {"fullname": "sqlglot.expressions.Decode", "modulename": "sqlglot.expressions", "qualname": "Decode", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.DiToDate": {"fullname": "sqlglot.expressions.DiToDate", "modulename": "sqlglot.expressions", "qualname": "DiToDate", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.Encode": {"fullname": "sqlglot.expressions.Encode", "modulename": "sqlglot.expressions", "qualname": "Encode", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.Exp": {"fullname": "sqlglot.expressions.Exp", "modulename": "sqlglot.expressions", "qualname": "Exp", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.Explode": {"fullname": "sqlglot.expressions.Explode", "modulename": "sqlglot.expressions", "qualname": "Explode", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.ExponentialTimeDecayedAvg": {"fullname": "sqlglot.expressions.ExponentialTimeDecayedAvg", "modulename": "sqlglot.expressions", "qualname": "ExponentialTimeDecayedAvg", "kind": "class", "doc": "

\n", "bases": "AggFunc"}, "sqlglot.expressions.Floor": {"fullname": "sqlglot.expressions.Floor", "modulename": "sqlglot.expressions", "qualname": "Floor", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.Greatest": {"fullname": "sqlglot.expressions.Greatest", "modulename": "sqlglot.expressions", "qualname": "Greatest", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.GroupConcat": {"fullname": "sqlglot.expressions.GroupConcat", "modulename": "sqlglot.expressions", "qualname": "GroupConcat", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.GroupUniqArray": {"fullname": "sqlglot.expressions.GroupUniqArray", "modulename": "sqlglot.expressions", "qualname": "GroupUniqArray", "kind": "class", "doc": "

\n", "bases": "AggFunc"}, "sqlglot.expressions.Hex": {"fullname": "sqlglot.expressions.Hex", "modulename": "sqlglot.expressions", "qualname": "Hex", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.Histogram": {"fullname": "sqlglot.expressions.Histogram", "modulename": "sqlglot.expressions", "qualname": "Histogram", "kind": "class", "doc": "

\n", "bases": "AggFunc"}, "sqlglot.expressions.If": {"fullname": "sqlglot.expressions.If", "modulename": "sqlglot.expressions", "qualname": "If", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.IfNull": {"fullname": "sqlglot.expressions.IfNull", "modulename": "sqlglot.expressions", "qualname": "IfNull", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.Initcap": {"fullname": "sqlglot.expressions.Initcap", "modulename": "sqlglot.expressions", "qualname": "Initcap", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.JSONKeyValue": {"fullname": "sqlglot.expressions.JSONKeyValue", "modulename": "sqlglot.expressions", "qualname": "JSONKeyValue", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.JSONObject": {"fullname": "sqlglot.expressions.JSONObject", "modulename": "sqlglot.expressions", "qualname": "JSONObject", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.JSONBContains": {"fullname": "sqlglot.expressions.JSONBContains", "modulename": "sqlglot.expressions", "qualname": "JSONBContains", "kind": "class", "doc": "

\n", "bases": "Binary"}, "sqlglot.expressions.JSONExtract": {"fullname": "sqlglot.expressions.JSONExtract", "modulename": "sqlglot.expressions", "qualname": "JSONExtract", "kind": "class", "doc": "

\n", "bases": "Binary, Func"}, "sqlglot.expressions.JSONExtractScalar": {"fullname": "sqlglot.expressions.JSONExtractScalar", "modulename": "sqlglot.expressions", "qualname": "JSONExtractScalar", "kind": "class", "doc": "

\n", "bases": "JSONExtract"}, "sqlglot.expressions.JSONBExtract": {"fullname": "sqlglot.expressions.JSONBExtract", "modulename": "sqlglot.expressions", "qualname": "JSONBExtract", "kind": "class", "doc": "

\n", "bases": "JSONExtract"}, "sqlglot.expressions.JSONBExtractScalar": {"fullname": "sqlglot.expressions.JSONBExtractScalar", "modulename": "sqlglot.expressions", "qualname": "JSONBExtractScalar", "kind": "class", "doc": "

\n", "bases": "JSONExtract"}, "sqlglot.expressions.JSONFormat": {"fullname": "sqlglot.expressions.JSONFormat", "modulename": "sqlglot.expressions", "qualname": "JSONFormat", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.Least": {"fullname": "sqlglot.expressions.Least", "modulename": "sqlglot.expressions", "qualname": "Least", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.Length": {"fullname": "sqlglot.expressions.Length", "modulename": "sqlglot.expressions", "qualname": "Length", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.Levenshtein": {"fullname": "sqlglot.expressions.Levenshtein", "modulename": "sqlglot.expressions", "qualname": "Levenshtein", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.Ln": {"fullname": "sqlglot.expressions.Ln", "modulename": "sqlglot.expressions", "qualname": "Ln", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.Log": {"fullname": "sqlglot.expressions.Log", "modulename": "sqlglot.expressions", "qualname": "Log", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.Log2": {"fullname": "sqlglot.expressions.Log2", "modulename": "sqlglot.expressions", "qualname": "Log2", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.Log10": {"fullname": "sqlglot.expressions.Log10", "modulename": "sqlglot.expressions", "qualname": "Log10", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.LogicalOr": {"fullname": "sqlglot.expressions.LogicalOr", "modulename": "sqlglot.expressions", "qualname": "LogicalOr", "kind": "class", "doc": "

\n", "bases": "AggFunc"}, "sqlglot.expressions.LogicalAnd": {"fullname": "sqlglot.expressions.LogicalAnd", "modulename": "sqlglot.expressions", "qualname": "LogicalAnd", "kind": "class", "doc": "

\n", "bases": "AggFunc"}, "sqlglot.expressions.Lower": {"fullname": "sqlglot.expressions.Lower", "modulename": "sqlglot.expressions", "qualname": "Lower", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.Map": {"fullname": "sqlglot.expressions.Map", "modulename": "sqlglot.expressions", "qualname": "Map", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.StarMap": {"fullname": "sqlglot.expressions.StarMap", "modulename": "sqlglot.expressions", "qualname": "StarMap", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.VarMap": {"fullname": "sqlglot.expressions.VarMap", "modulename": "sqlglot.expressions", "qualname": "VarMap", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.MatchAgainst": {"fullname": "sqlglot.expressions.MatchAgainst", "modulename": "sqlglot.expressions", "qualname": "MatchAgainst", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.Max": {"fullname": "sqlglot.expressions.Max", "modulename": "sqlglot.expressions", "qualname": "Max", "kind": "class", "doc": "

\n", "bases": "AggFunc"}, "sqlglot.expressions.MD5": {"fullname": "sqlglot.expressions.MD5", "modulename": "sqlglot.expressions", "qualname": "MD5", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.Min": {"fullname": "sqlglot.expressions.Min", "modulename": "sqlglot.expressions", "qualname": "Min", "kind": "class", "doc": "

\n", "bases": "AggFunc"}, "sqlglot.expressions.Month": {"fullname": "sqlglot.expressions.Month", "modulename": "sqlglot.expressions", "qualname": "Month", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.Nvl2": {"fullname": "sqlglot.expressions.Nvl2", "modulename": "sqlglot.expressions", "qualname": "Nvl2", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.Posexplode": {"fullname": "sqlglot.expressions.Posexplode", "modulename": "sqlglot.expressions", "qualname": "Posexplode", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.Pow": {"fullname": "sqlglot.expressions.Pow", "modulename": "sqlglot.expressions", "qualname": "Pow", "kind": "class", "doc": "

\n", "bases": "Binary, Func"}, "sqlglot.expressions.PercentileCont": {"fullname": "sqlglot.expressions.PercentileCont", "modulename": "sqlglot.expressions", "qualname": "PercentileCont", "kind": "class", "doc": "

\n", "bases": "AggFunc"}, "sqlglot.expressions.PercentileDisc": {"fullname": "sqlglot.expressions.PercentileDisc", "modulename": "sqlglot.expressions", "qualname": "PercentileDisc", "kind": "class", "doc": "

\n", "bases": "AggFunc"}, "sqlglot.expressions.Quantile": {"fullname": "sqlglot.expressions.Quantile", "modulename": "sqlglot.expressions", "qualname": "Quantile", "kind": "class", "doc": "

\n", "bases": "AggFunc"}, "sqlglot.expressions.Quantiles": {"fullname": "sqlglot.expressions.Quantiles", "modulename": "sqlglot.expressions", "qualname": "Quantiles", "kind": "class", "doc": "

\n", "bases": "AggFunc"}, "sqlglot.expressions.QuantileIf": {"fullname": "sqlglot.expressions.QuantileIf", "modulename": "sqlglot.expressions", "qualname": "QuantileIf", "kind": "class", "doc": "

\n", "bases": "AggFunc"}, "sqlglot.expressions.ApproxQuantile": {"fullname": "sqlglot.expressions.ApproxQuantile", "modulename": "sqlglot.expressions", "qualname": "ApproxQuantile", "kind": "class", "doc": "

\n", "bases": "Quantile"}, "sqlglot.expressions.RangeN": {"fullname": "sqlglot.expressions.RangeN", "modulename": "sqlglot.expressions", "qualname": "RangeN", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.ReadCSV": {"fullname": "sqlglot.expressions.ReadCSV", "modulename": "sqlglot.expressions", "qualname": "ReadCSV", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.Reduce": {"fullname": "sqlglot.expressions.Reduce", "modulename": "sqlglot.expressions", "qualname": "Reduce", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.RegexpExtract": {"fullname": "sqlglot.expressions.RegexpExtract", "modulename": "sqlglot.expressions", "qualname": "RegexpExtract", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.RegexpLike": {"fullname": "sqlglot.expressions.RegexpLike", "modulename": "sqlglot.expressions", "qualname": "RegexpLike", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.RegexpILike": {"fullname": "sqlglot.expressions.RegexpILike", "modulename": "sqlglot.expressions", "qualname": "RegexpILike", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.RegexpSplit": {"fullname": "sqlglot.expressions.RegexpSplit", "modulename": "sqlglot.expressions", "qualname": "RegexpSplit", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.Repeat": {"fullname": "sqlglot.expressions.Repeat", "modulename": "sqlglot.expressions", "qualname": "Repeat", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.Round": {"fullname": "sqlglot.expressions.Round", "modulename": "sqlglot.expressions", "qualname": "Round", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.RowNumber": {"fullname": "sqlglot.expressions.RowNumber", "modulename": "sqlglot.expressions", "qualname": "RowNumber", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.SafeDivide": {"fullname": "sqlglot.expressions.SafeDivide", "modulename": "sqlglot.expressions", "qualname": "SafeDivide", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.SetAgg": {"fullname": "sqlglot.expressions.SetAgg", "modulename": "sqlglot.expressions", "qualname": "SetAgg", "kind": "class", "doc": "

\n", "bases": "AggFunc"}, "sqlglot.expressions.SHA": {"fullname": "sqlglot.expressions.SHA", "modulename": "sqlglot.expressions", "qualname": "SHA", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.SHA2": {"fullname": "sqlglot.expressions.SHA2", "modulename": "sqlglot.expressions", "qualname": "SHA2", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.SortArray": {"fullname": "sqlglot.expressions.SortArray", "modulename": "sqlglot.expressions", "qualname": "SortArray", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.Split": {"fullname": "sqlglot.expressions.Split", "modulename": "sqlglot.expressions", "qualname": "Split", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.Substring": {"fullname": "sqlglot.expressions.Substring", "modulename": "sqlglot.expressions", "qualname": "Substring", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.StrPosition": {"fullname": "sqlglot.expressions.StrPosition", "modulename": "sqlglot.expressions", "qualname": "StrPosition", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.StrToDate": {"fullname": "sqlglot.expressions.StrToDate", "modulename": "sqlglot.expressions", "qualname": "StrToDate", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.StrToTime": {"fullname": "sqlglot.expressions.StrToTime", "modulename": "sqlglot.expressions", "qualname": "StrToTime", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.StrToUnix": {"fullname": "sqlglot.expressions.StrToUnix", "modulename": "sqlglot.expressions", "qualname": "StrToUnix", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.NumberToStr": {"fullname": "sqlglot.expressions.NumberToStr", "modulename": "sqlglot.expressions", "qualname": "NumberToStr", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.Struct": {"fullname": "sqlglot.expressions.Struct", "modulename": "sqlglot.expressions", "qualname": "Struct", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.StructExtract": {"fullname": "sqlglot.expressions.StructExtract", "modulename": "sqlglot.expressions", "qualname": "StructExtract", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.Sum": {"fullname": "sqlglot.expressions.Sum", "modulename": "sqlglot.expressions", "qualname": "Sum", "kind": "class", "doc": "

\n", "bases": "AggFunc"}, "sqlglot.expressions.Sqrt": {"fullname": "sqlglot.expressions.Sqrt", "modulename": "sqlglot.expressions", "qualname": "Sqrt", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.Stddev": {"fullname": "sqlglot.expressions.Stddev", "modulename": "sqlglot.expressions", "qualname": "Stddev", "kind": "class", "doc": "

\n", "bases": "AggFunc"}, "sqlglot.expressions.StddevPop": {"fullname": "sqlglot.expressions.StddevPop", "modulename": "sqlglot.expressions", "qualname": "StddevPop", "kind": "class", "doc": "

\n", "bases": "AggFunc"}, "sqlglot.expressions.StddevSamp": {"fullname": "sqlglot.expressions.StddevSamp", "modulename": "sqlglot.expressions", "qualname": "StddevSamp", "kind": "class", "doc": "

\n", "bases": "AggFunc"}, "sqlglot.expressions.TimeToStr": {"fullname": "sqlglot.expressions.TimeToStr", "modulename": "sqlglot.expressions", "qualname": "TimeToStr", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.TimeToTimeStr": {"fullname": "sqlglot.expressions.TimeToTimeStr", "modulename": "sqlglot.expressions", "qualname": "TimeToTimeStr", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.TimeToUnix": {"fullname": "sqlglot.expressions.TimeToUnix", "modulename": "sqlglot.expressions", "qualname": "TimeToUnix", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.TimeStrToDate": {"fullname": "sqlglot.expressions.TimeStrToDate", "modulename": "sqlglot.expressions", "qualname": "TimeStrToDate", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.TimeStrToTime": {"fullname": "sqlglot.expressions.TimeStrToTime", "modulename": "sqlglot.expressions", "qualname": "TimeStrToTime", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.TimeStrToUnix": {"fullname": "sqlglot.expressions.TimeStrToUnix", "modulename": "sqlglot.expressions", "qualname": "TimeStrToUnix", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.Trim": {"fullname": "sqlglot.expressions.Trim", "modulename": "sqlglot.expressions", "qualname": "Trim", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.TsOrDsAdd": {"fullname": "sqlglot.expressions.TsOrDsAdd", "modulename": "sqlglot.expressions", "qualname": "TsOrDsAdd", "kind": "class", "doc": "

\n", "bases": "Func, TimeUnit"}, "sqlglot.expressions.TsOrDsToDateStr": {"fullname": "sqlglot.expressions.TsOrDsToDateStr", "modulename": "sqlglot.expressions", "qualname": "TsOrDsToDateStr", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.TsOrDsToDate": {"fullname": "sqlglot.expressions.TsOrDsToDate", "modulename": "sqlglot.expressions", "qualname": "TsOrDsToDate", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.TsOrDiToDi": {"fullname": "sqlglot.expressions.TsOrDiToDi", "modulename": "sqlglot.expressions", "qualname": "TsOrDiToDi", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.Unhex": {"fullname": "sqlglot.expressions.Unhex", "modulename": "sqlglot.expressions", "qualname": "Unhex", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.UnixToStr": {"fullname": "sqlglot.expressions.UnixToStr", "modulename": "sqlglot.expressions", "qualname": "UnixToStr", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.UnixToTime": {"fullname": "sqlglot.expressions.UnixToTime", "modulename": "sqlglot.expressions", "qualname": "UnixToTime", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.UnixToTimeStr": {"fullname": "sqlglot.expressions.UnixToTimeStr", "modulename": "sqlglot.expressions", "qualname": "UnixToTimeStr", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.Upper": {"fullname": "sqlglot.expressions.Upper", "modulename": "sqlglot.expressions", "qualname": "Upper", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.Variance": {"fullname": "sqlglot.expressions.Variance", "modulename": "sqlglot.expressions", "qualname": "Variance", "kind": "class", "doc": "

\n", "bases": "AggFunc"}, "sqlglot.expressions.VariancePop": {"fullname": "sqlglot.expressions.VariancePop", "modulename": "sqlglot.expressions", "qualname": "VariancePop", "kind": "class", "doc": "

\n", "bases": "AggFunc"}, "sqlglot.expressions.Week": {"fullname": "sqlglot.expressions.Week", "modulename": "sqlglot.expressions", "qualname": "Week", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.XMLTable": {"fullname": "sqlglot.expressions.XMLTable", "modulename": "sqlglot.expressions", "qualname": "XMLTable", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.Year": {"fullname": "sqlglot.expressions.Year", "modulename": "sqlglot.expressions", "qualname": "Year", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.Use": {"fullname": "sqlglot.expressions.Use", "modulename": "sqlglot.expressions", "qualname": "Use", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.Merge": {"fullname": "sqlglot.expressions.Merge", "modulename": "sqlglot.expressions", "qualname": "Merge", "kind": "class", "doc": "

\n", "bases": "Expression"}, "sqlglot.expressions.When": {"fullname": "sqlglot.expressions.When", "modulename": "sqlglot.expressions", "qualname": "When", "kind": "class", "doc": "

\n", "bases": "Func"}, "sqlglot.expressions.maybe_parse": {"fullname": "sqlglot.expressions.maybe_parse", "modulename": "sqlglot.expressions", "qualname": "maybe_parse", "kind": "function", "doc": "

Gracefully handle a possible string or expression.

\n\n
Example:
\n\n
\n
\n
>>> maybe_parse("1")\n(LITERAL this: 1, is_string: False)\n>>> maybe_parse(to_identifier("x"))\n(IDENTIFIER this: x, quoted: False)\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • sql_or_expression: the SQL code string or an expression
  • \n
  • into: the SQLGlot Expression to parse into
  • \n
  • dialect: the dialect used to parse the input expressions (in the case that an\ninput expression is a SQL string).
  • \n
  • prefix: a string to prefix the sql with before it gets parsed\n(automatically includes a space)
  • \n
  • copy: whether or not to copy the expression.
  • \n
  • **opts: other options to use to parse the input expressions (again, in the case\nthat an input expression is a SQL string).
  • \n
\n\n
Returns:
\n\n
\n

Expression: the parsed or given expression.

\n
\n", "signature": "(\tsql_or_expression: Union[str, sqlglot.expressions.Expression],\t*,\tinto: Union[str, Type[sqlglot.expressions.Expression], Collection[Union[str, Type[sqlglot.expressions.Expression]]], NoneType] = None,\tdialect: Union[str, sqlglot.dialects.dialect.Dialect, Type[sqlglot.dialects.dialect.Dialect], NoneType] = None,\tprefix: Optional[str] = None,\tcopy: bool = False,\t**opts) -> sqlglot.expressions.Expression:", "funcdef": "def"}, "sqlglot.expressions.union": {"fullname": "sqlglot.expressions.union", "modulename": "sqlglot.expressions", "qualname": "union", "kind": "function", "doc": "

Initializes a syntax tree from one UNION expression.

\n\n
Example:
\n\n
\n
\n
>>> union("SELECT * FROM foo", "SELECT * FROM bla").sql()\n'SELECT * FROM foo UNION SELECT * FROM bla'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • left (str | Expression): the SQL code string corresponding to the left-hand side.\nIf an Expression instance is passed, it will be used as-is.
  • \n
  • right (str | Expression): the SQL code string corresponding to the right-hand side.\nIf an Expression instance is passed, it will be used as-is.
  • \n
  • distinct (bool): set the DISTINCT flag if and only if this is true.
  • \n
  • dialect (str): the dialect used to parse the input expression.
  • \n
  • opts (kwargs): other options to use to parse the input expressions.
  • \n
\n\n
Returns:
\n\n
\n

Union: the syntax tree for the UNION expression.

\n
\n", "signature": "(left, right, distinct=True, dialect=None, **opts):", "funcdef": "def"}, "sqlglot.expressions.intersect": {"fullname": "sqlglot.expressions.intersect", "modulename": "sqlglot.expressions", "qualname": "intersect", "kind": "function", "doc": "

Initializes a syntax tree from one INTERSECT expression.

\n\n
Example:
\n\n
\n
\n
>>> intersect("SELECT * FROM foo", "SELECT * FROM bla").sql()\n'SELECT * FROM foo INTERSECT SELECT * FROM bla'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • left (str | Expression): the SQL code string corresponding to the left-hand side.\nIf an Expression instance is passed, it will be used as-is.
  • \n
  • right (str | Expression): the SQL code string corresponding to the right-hand side.\nIf an Expression instance is passed, it will be used as-is.
  • \n
  • distinct (bool): set the DISTINCT flag if and only if this is true.
  • \n
  • dialect (str): the dialect used to parse the input expression.
  • \n
  • opts (kwargs): other options to use to parse the input expressions.
  • \n
\n\n
Returns:
\n\n
\n

Intersect: the syntax tree for the INTERSECT expression.

\n
\n", "signature": "(left, right, distinct=True, dialect=None, **opts):", "funcdef": "def"}, "sqlglot.expressions.except_": {"fullname": "sqlglot.expressions.except_", "modulename": "sqlglot.expressions", "qualname": "except_", "kind": "function", "doc": "

Initializes a syntax tree from one EXCEPT expression.

\n\n
Example:
\n\n
\n
\n
>>> except_("SELECT * FROM foo", "SELECT * FROM bla").sql()\n'SELECT * FROM foo EXCEPT SELECT * FROM bla'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • left (str | Expression): the SQL code string corresponding to the left-hand side.\nIf an Expression instance is passed, it will be used as-is.
  • \n
  • right (str | Expression): the SQL code string corresponding to the right-hand side.\nIf an Expression instance is passed, it will be used as-is.
  • \n
  • distinct (bool): set the DISTINCT flag if and only if this is true.
  • \n
  • dialect (str): the dialect used to parse the input expression.
  • \n
  • opts (kwargs): other options to use to parse the input expressions.
  • \n
\n\n
Returns:
\n\n
\n

Except: the syntax tree for the EXCEPT statement.

\n
\n", "signature": "(left, right, distinct=True, dialect=None, **opts):", "funcdef": "def"}, "sqlglot.expressions.select": {"fullname": "sqlglot.expressions.select", "modulename": "sqlglot.expressions", "qualname": "select", "kind": "function", "doc": "

Initializes a syntax tree from one or multiple SELECT expressions.

\n\n
Example:
\n\n
\n
\n
>>> select("col1", "col2").from_("tbl").sql()\n'SELECT col1, col2 FROM tbl'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • *expressions: the SQL code string to parse as the expressions of a\nSELECT statement. If an Expression instance is passed, this is used as-is.
  • \n
  • dialect: the dialect used to parse the input expressions (in the case that an\ninput expression is a SQL string).
  • \n
  • **opts: other options to use to parse the input expressions (again, in the case\nthat an input expression is a SQL string).
  • \n
\n\n
Returns:
\n\n
\n

Select: the syntax tree for the SELECT statement.

\n
\n", "signature": "(\t*expressions: Union[str, sqlglot.expressions.Expression],\tdialect: Union[str, sqlglot.dialects.dialect.Dialect, Type[sqlglot.dialects.dialect.Dialect], NoneType] = None,\t**opts) -> sqlglot.expressions.Select:", "funcdef": "def"}, "sqlglot.expressions.from_": {"fullname": "sqlglot.expressions.from_", "modulename": "sqlglot.expressions", "qualname": "from_", "kind": "function", "doc": "

Initializes a syntax tree from a FROM expression.

\n\n
Example:
\n\n
\n
\n
>>> from_("tbl").select("col1", "col2").sql()\n'SELECT col1, col2 FROM tbl'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • *expressions (str | Expression): the SQL code string to parse as the FROM expressions of a\nSELECT statement. If an Expression instance is passed, this is used as-is.
  • \n
  • dialect (str): the dialect used to parse the input expression (in the case that the\ninput expression is a SQL string).
  • \n
  • **opts: other options to use to parse the input expressions (again, in the case\nthat the input expression is a SQL string).
  • \n
\n\n
Returns:
\n\n
\n

Select: the syntax tree for the SELECT statement.

\n
\n", "signature": "(*expressions, dialect=None, **opts) -> sqlglot.expressions.Select:", "funcdef": "def"}, "sqlglot.expressions.update": {"fullname": "sqlglot.expressions.update", "modulename": "sqlglot.expressions", "qualname": "update", "kind": "function", "doc": "

Creates an update statement.

\n\n
Example:
\n\n
\n
\n
>>> update("my_table", {"x": 1, "y": "2", "z": None}, from_="baz", where="id > 1").sql()\n"UPDATE my_table SET x = 1, y = '2', z = NULL FROM baz WHERE id > 1"\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • *properties: dictionary of properties to set which are\nauto converted to sql objects eg None -> NULL
  • \n
  • where: sql conditional parsed into a WHERE statement
  • \n
  • from_: sql statement parsed into a FROM statement
  • \n
  • dialect: the dialect used to parse the input expressions.
  • \n
  • **opts: other options to use to parse the input expressions.
  • \n
\n\n
Returns:
\n\n
\n

Update: the syntax tree for the UPDATE statement.

\n
\n", "signature": "(\ttable: str | sqlglot.expressions.Table,\tproperties: dict,\twhere: Union[str, sqlglot.expressions.Expression, NoneType] = None,\tfrom_: Union[str, sqlglot.expressions.Expression, NoneType] = None,\tdialect: Union[str, sqlglot.dialects.dialect.Dialect, Type[sqlglot.dialects.dialect.Dialect], NoneType] = None,\t**opts) -> sqlglot.expressions.Update:", "funcdef": "def"}, "sqlglot.expressions.delete": {"fullname": "sqlglot.expressions.delete", "modulename": "sqlglot.expressions", "qualname": "delete", "kind": "function", "doc": "

Builds a delete statement.

\n\n
Example:
\n\n
\n
\n
>>> delete("my_table", where="id > 1").sql()\n'DELETE FROM my_table WHERE id > 1'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • where: sql conditional parsed into a WHERE statement
  • \n
  • returning: sql conditional parsed into a RETURNING statement
  • \n
  • dialect: the dialect used to parse the input expressions.
  • \n
  • **opts: other options to use to parse the input expressions.
  • \n
\n\n
Returns:
\n\n
\n

Delete: the syntax tree for the DELETE statement.

\n
\n", "signature": "(\ttable: Union[str, sqlglot.expressions.Expression],\twhere: Union[str, sqlglot.expressions.Expression, NoneType] = None,\treturning: Union[str, sqlglot.expressions.Expression, NoneType] = None,\tdialect: Union[str, sqlglot.dialects.dialect.Dialect, Type[sqlglot.dialects.dialect.Dialect], NoneType] = None,\t**opts) -> sqlglot.expressions.Delete:", "funcdef": "def"}, "sqlglot.expressions.condition": {"fullname": "sqlglot.expressions.condition", "modulename": "sqlglot.expressions", "qualname": "condition", "kind": "function", "doc": "

Initialize a logical condition expression.

\n\n
Example:
\n\n
\n
\n
>>> condition("x=1").sql()\n'x = 1'\n
\n
\n \n

This is helpful for composing larger logical syntax trees:

\n \n
\n
>>> where = condition("x=1")\n>>> where = where.and_("y=1")\n>>> Select().from_("tbl").select("*").where(where).sql()\n'SELECT * FROM tbl WHERE x = 1 AND y = 1'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • *expression (str | Expression): the SQL code string to parse.\nIf an Expression instance is passed, this is used as-is.
  • \n
  • dialect (str): the dialect used to parse the input expression (in the case that the\ninput expression is a SQL string).
  • \n
  • **opts: other options to use to parse the input expressions (again, in the case\nthat the input expression is a SQL string).
  • \n
\n\n
Returns:
\n\n
\n

Condition: the expression

\n
\n", "signature": "(expression, dialect=None, **opts) -> sqlglot.expressions.Condition:", "funcdef": "def"}, "sqlglot.expressions.and_": {"fullname": "sqlglot.expressions.and_", "modulename": "sqlglot.expressions", "qualname": "and_", "kind": "function", "doc": "

Combine multiple conditions with an AND logical operator.

\n\n
Example:
\n\n
\n
\n
>>> and_("x=1", and_("y=1", "z=1")).sql()\n'x = 1 AND (y = 1 AND z = 1)'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • *expressions (str | Expression): the SQL code strings to parse.\nIf an Expression instance is passed, this is used as-is.
  • \n
  • dialect (str): the dialect used to parse the input expression.
  • \n
  • **opts: other options to use to parse the input expressions.
  • \n
\n\n
Returns:
\n\n
\n

And: the new condition

\n
\n", "signature": "(*expressions, dialect=None, **opts) -> sqlglot.expressions.And:", "funcdef": "def"}, "sqlglot.expressions.or_": {"fullname": "sqlglot.expressions.or_", "modulename": "sqlglot.expressions", "qualname": "or_", "kind": "function", "doc": "

Combine multiple conditions with an OR logical operator.

\n\n
Example:
\n\n
\n
\n
>>> or_("x=1", or_("y=1", "z=1")).sql()\n'x = 1 OR (y = 1 OR z = 1)'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • *expressions (str | Expression): the SQL code strings to parse.\nIf an Expression instance is passed, this is used as-is.
  • \n
  • dialect (str): the dialect used to parse the input expression.
  • \n
  • **opts: other options to use to parse the input expressions.
  • \n
\n\n
Returns:
\n\n
\n

Or: the new condition

\n
\n", "signature": "(*expressions, dialect=None, **opts) -> sqlglot.expressions.Or:", "funcdef": "def"}, "sqlglot.expressions.not_": {"fullname": "sqlglot.expressions.not_", "modulename": "sqlglot.expressions", "qualname": "not_", "kind": "function", "doc": "

Wrap a condition with a NOT operator.

\n\n
Example:
\n\n
\n
\n
>>> not_("this_suit='black'").sql()\n"NOT this_suit = 'black'"\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • expression (str | Expression): the SQL code strings to parse.\nIf an Expression instance is passed, this is used as-is.
  • \n
  • dialect (str): the dialect used to parse the input expression.
  • \n
  • **opts: other options to use to parse the input expressions.
  • \n
\n\n
Returns:
\n\n
\n

Not: the new condition

\n
\n", "signature": "(expression, dialect=None, **opts) -> sqlglot.expressions.Not:", "funcdef": "def"}, "sqlglot.expressions.paren": {"fullname": "sqlglot.expressions.paren", "modulename": "sqlglot.expressions", "qualname": "paren", "kind": "function", "doc": "

\n", "signature": "(expression) -> sqlglot.expressions.Paren:", "funcdef": "def"}, "sqlglot.expressions.to_identifier": {"fullname": "sqlglot.expressions.to_identifier", "modulename": "sqlglot.expressions", "qualname": "to_identifier", "kind": "function", "doc": "

Builds an identifier.

\n\n
Arguments:
\n\n
    \n
  • name: The name to turn into an identifier.
  • \n
  • quoted: Whether or not force quote the identifier.
  • \n
\n\n
Returns:
\n\n
\n

The identifier ast node.

\n
\n", "signature": "(name, quoted=None):", "funcdef": "def"}, "sqlglot.expressions.to_interval": {"fullname": "sqlglot.expressions.to_interval", "modulename": "sqlglot.expressions", "qualname": "to_interval", "kind": "function", "doc": "

Builds an interval expression from a string like '1 day' or '5 months'.

\n", "signature": "(\tinterval: str | sqlglot.expressions.Literal) -> sqlglot.expressions.Interval:", "funcdef": "def"}, "sqlglot.expressions.to_table": {"fullname": "sqlglot.expressions.to_table", "modulename": "sqlglot.expressions", "qualname": "to_table", "kind": "function", "doc": "

Create a table expression from a [catalog].[schema].[table] sql path. Catalog and schema are optional.\nIf a table is passed in then that table is returned.

\n\n
Arguments:
\n\n
    \n
  • sql_path: a [catalog].[schema].[table] string.
  • \n
\n\n
Returns:
\n\n
\n

A table expression.

\n
\n", "signature": "(\tsql_path: Union[str, sqlglot.expressions.Table, NoneType],\t**kwargs) -> Optional[sqlglot.expressions.Table]:", "funcdef": "def"}, "sqlglot.expressions.to_column": {"fullname": "sqlglot.expressions.to_column", "modulename": "sqlglot.expressions", "qualname": "to_column", "kind": "function", "doc": "

Create a column from a [table].[column] sql path. Schema is optional.

\n\n

If a column is passed in then that column is returned.

\n\n
Arguments:
\n\n
    \n
  • sql_path: [table].[column] string
  • \n
\n\n
Returns:
\n\n
\n

Table: A column expression

\n
\n", "signature": "(\tsql_path: str | sqlglot.expressions.Column,\t**kwargs) -> sqlglot.expressions.Column:", "funcdef": "def"}, "sqlglot.expressions.alias_": {"fullname": "sqlglot.expressions.alias_", "modulename": "sqlglot.expressions", "qualname": "alias_", "kind": "function", "doc": "

Create an Alias expression.

\n\n
Example:
\n\n
\n
\n
>>> alias_('foo', 'bar').sql()\n'foo AS bar'\n
\n
\n \n
\n
>>> alias_('(select 1, 2)', 'bar', table=['a', 'b']).sql()\n'(SELECT 1, 2) AS bar(a, b)'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • expression: the SQL code strings to parse.\nIf an Expression instance is passed, this is used as-is.
  • \n
  • alias: the alias name to use. If the name has\nspecial characters it is quoted.
  • \n
  • table: Whether or not to create a table alias, can also be a list of columns.
  • \n
  • quoted: whether or not to quote the alias
  • \n
  • dialect: the dialect used to parse the input expression.
  • \n
  • **opts: other options to use to parse the input expressions.
  • \n
\n\n
Returns:
\n\n
\n

Alias: the aliased expression

\n
\n", "signature": "(\texpression: Union[str, sqlglot.expressions.Expression],\talias: str | sqlglot.expressions.Identifier,\ttable: Union[bool, Sequence[str | sqlglot.expressions.Identifier]] = False,\tquoted: Optional[bool] = None,\tdialect: Union[str, sqlglot.dialects.dialect.Dialect, Type[sqlglot.dialects.dialect.Dialect], NoneType] = None,\t**opts):", "funcdef": "def"}, "sqlglot.expressions.subquery": {"fullname": "sqlglot.expressions.subquery", "modulename": "sqlglot.expressions", "qualname": "subquery", "kind": "function", "doc": "

Build a subquery expression.

\n\n
Example:
\n\n
\n
\n
>>> subquery('select x from tbl', 'bar').select('x').sql()\n'SELECT x FROM (SELECT x FROM tbl) AS bar'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • expression (str | Expression): the SQL code strings to parse.\nIf an Expression instance is passed, this is used as-is.
  • \n
  • alias (str | Expression): the alias name to use.
  • \n
  • dialect (str): the dialect used to parse the input expression.
  • \n
  • **opts: other options to use to parse the input expressions.
  • \n
\n\n
Returns:
\n\n
\n

Select: a new select with the subquery expression included

\n
\n", "signature": "(expression, alias=None, dialect=None, **opts):", "funcdef": "def"}, "sqlglot.expressions.column": {"fullname": "sqlglot.expressions.column", "modulename": "sqlglot.expressions", "qualname": "column", "kind": "function", "doc": "

Build a Column.

\n\n
Arguments:
\n\n
    \n
  • col: column name
  • \n
  • table: table name
  • \n
  • db: db name
  • \n
  • catalog: catalog name
  • \n
  • quoted: whether or not to force quote each part
  • \n
\n\n
Returns:
\n\n
\n

Column: column instance

\n
\n", "signature": "(\tcol: str | sqlglot.expressions.Identifier,\ttable: Union[str, sqlglot.expressions.Identifier, NoneType] = None,\tdb: Union[str, sqlglot.expressions.Identifier, NoneType] = None,\tcatalog: Union[str, sqlglot.expressions.Identifier, NoneType] = None,\tquoted: Optional[bool] = None) -> sqlglot.expressions.Column:", "funcdef": "def"}, "sqlglot.expressions.cast": {"fullname": "sqlglot.expressions.cast", "modulename": "sqlglot.expressions", "qualname": "cast", "kind": "function", "doc": "

Cast an expression to a data type.

\n\n
Example:
\n\n
\n
\n
>>> cast('x + 1', 'int').sql()\n'CAST(x + 1 AS INT)'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • expression: The expression to cast.
  • \n
  • to: The datatype to cast to.
  • \n
\n\n
Returns:
\n\n
\n

A cast node.

\n
\n", "signature": "(\texpression: Union[str, sqlglot.expressions.Expression],\tto: str | sqlglot.expressions.DataType | sqlglot.expressions.DataType.Type,\t**opts) -> sqlglot.expressions.Cast:", "funcdef": "def"}, "sqlglot.expressions.table_": {"fullname": "sqlglot.expressions.table_", "modulename": "sqlglot.expressions", "qualname": "table_", "kind": "function", "doc": "

Build a Table.

\n\n
Arguments:
\n\n
    \n
  • table (str | Expression): column name
  • \n
  • db (str | Expression): db name
  • \n
  • catalog (str | Expression): catalog name
  • \n
\n\n
Returns:
\n\n
\n

Table: table instance

\n
\n", "signature": "(\ttable,\tdb=None,\tcatalog=None,\tquoted=None,\talias=None) -> sqlglot.expressions.Table:", "funcdef": "def"}, "sqlglot.expressions.values": {"fullname": "sqlglot.expressions.values", "modulename": "sqlglot.expressions", "qualname": "values", "kind": "function", "doc": "

Build VALUES statement.

\n\n
Example:
\n\n
\n
\n
>>> values([(1, '2')]).sql()\n"VALUES (1, '2')"\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • values: values statements that will be converted to SQL
  • \n
  • alias: optional alias
  • \n
  • columns: Optional list of ordered column names or ordered dictionary of column names to types.\nIf either are provided then an alias is also required.\nIf a dictionary is provided then the first column of the values will be casted to the expected type\nin order to help with type inference.
  • \n
\n\n
Returns:
\n\n
\n

Values: the Values expression object

\n
\n", "signature": "(\tvalues: Iterable[Tuple[Any, ...]],\talias: Optional[str] = None,\tcolumns: Union[Iterable[str], Dict[str, sqlglot.expressions.DataType], NoneType] = None) -> sqlglot.expressions.Values:", "funcdef": "def"}, "sqlglot.expressions.var": {"fullname": "sqlglot.expressions.var", "modulename": "sqlglot.expressions", "qualname": "var", "kind": "function", "doc": "

Build a SQL variable.

\n\n
Example:
\n\n
\n
\n
>>> repr(var('x'))\n'(VAR this: x)'\n
\n
\n \n
\n
>>> repr(var(column('x', table='y')))\n'(VAR this: x)'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • name: The name of the var or an expression who's name will become the var.
  • \n
\n\n
Returns:
\n\n
\n

The new variable node.

\n
\n", "signature": "(\tname: Union[str, sqlglot.expressions.Expression, NoneType]) -> sqlglot.expressions.Var:", "funcdef": "def"}, "sqlglot.expressions.rename_table": {"fullname": "sqlglot.expressions.rename_table", "modulename": "sqlglot.expressions", "qualname": "rename_table", "kind": "function", "doc": "

Build ALTER TABLE... RENAME... expression

\n\n
Arguments:
\n\n
    \n
  • old_name: The old name of the table
  • \n
  • new_name: The new name of the table
  • \n
\n\n
Returns:
\n\n
\n

Alter table expression

\n
\n", "signature": "(\told_name: str | sqlglot.expressions.Table,\tnew_name: str | sqlglot.expressions.Table) -> sqlglot.expressions.AlterTable:", "funcdef": "def"}, "sqlglot.expressions.convert": {"fullname": "sqlglot.expressions.convert", "modulename": "sqlglot.expressions", "qualname": "convert", "kind": "function", "doc": "

Convert a python value into an expression object.

\n\n

Raises an error if a conversion is not possible.

\n\n
Arguments:
\n\n
    \n
  • value (Any): a python object
  • \n
\n\n
Returns:
\n\n
\n

Expression: the equivalent expression object

\n
\n", "signature": "(value) -> sqlglot.expressions.Expression:", "funcdef": "def"}, "sqlglot.expressions.replace_children": {"fullname": "sqlglot.expressions.replace_children", "modulename": "sqlglot.expressions", "qualname": "replace_children", "kind": "function", "doc": "

Replace children of an expression with the result of a lambda fun(child) -> exp.

\n", "signature": "(expression, fun, *args, **kwargs):", "funcdef": "def"}, "sqlglot.expressions.column_table_names": {"fullname": "sqlglot.expressions.column_table_names", "modulename": "sqlglot.expressions", "qualname": "column_table_names", "kind": "function", "doc": "

Return all table names referenced through columns in an expression.

\n\n
Example:
\n\n
\n
\n
>>> import sqlglot\n>>> column_table_names(sqlglot.parse_one("a.b AND c.d AND c.e"))\n['c', 'a']\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • expression (sqlglot.Expression): expression to find table names
  • \n
\n\n
Returns:
\n\n
\n

list: A list of unique names

\n
\n", "signature": "(expression):", "funcdef": "def"}, "sqlglot.expressions.table_name": {"fullname": "sqlglot.expressions.table_name", "modulename": "sqlglot.expressions", "qualname": "table_name", "kind": "function", "doc": "

Get the full name of a table as a string.

\n\n
Arguments:
\n\n
    \n
  • table (exp.Table | str): table expression node or string.
  • \n
\n\n
Examples:
\n\n
\n
\n
>>> from sqlglot import exp, parse_one\n>>> table_name(parse_one("select * from a.b.c").find(exp.Table))\n'a.b.c'\n
\n
\n
\n\n
Returns:
\n\n
\n

The table name.

\n
\n", "signature": "(table) -> str:", "funcdef": "def"}, "sqlglot.expressions.replace_tables": {"fullname": "sqlglot.expressions.replace_tables", "modulename": "sqlglot.expressions", "qualname": "replace_tables", "kind": "function", "doc": "

Replace all tables in expression according to the mapping.

\n\n
Arguments:
\n\n
    \n
  • expression (sqlglot.Expression): expression node to be transformed and replaced.
  • \n
  • mapping (Dict[str, str]): mapping of table names.
  • \n
\n\n
Examples:
\n\n
\n
\n
>>> from sqlglot import exp, parse_one\n>>> replace_tables(parse_one("select * from a.b"), {"a.b": "c"}).sql()\n'SELECT * FROM c'\n
\n
\n
\n\n
Returns:
\n\n
\n

The mapped expression.

\n
\n", "signature": "(expression, mapping):", "funcdef": "def"}, "sqlglot.expressions.replace_placeholders": {"fullname": "sqlglot.expressions.replace_placeholders", "modulename": "sqlglot.expressions", "qualname": "replace_placeholders", "kind": "function", "doc": "

Replace placeholders in an expression.

\n\n
Arguments:
\n\n
    \n
  • expression (sqlglot.Expression): expression node to be transformed and replaced.
  • \n
  • args: positional names that will substitute unnamed placeholders in the given order.
  • \n
  • kwargs: keyword arguments that will substitute named placeholders.
  • \n
\n\n
Examples:
\n\n
\n
\n
>>> from sqlglot import exp, parse_one\n>>> replace_placeholders(\n...     parse_one("select * from :tbl where ? = ?"),\n...     exp.to_identifier("str_col"), "b", tbl=exp.to_identifier("foo")\n... ).sql()\n"SELECT * FROM foo WHERE str_col = 'b'"\n
\n
\n
\n\n
Returns:
\n\n
\n

The mapped expression.

\n
\n", "signature": "(expression, *args, **kwargs):", "funcdef": "def"}, "sqlglot.expressions.expand": {"fullname": "sqlglot.expressions.expand", "modulename": "sqlglot.expressions", "qualname": "expand", "kind": "function", "doc": "

Transforms an expression by expanding all referenced sources into subqueries.

\n\n
Examples:
\n\n
\n
\n
>>> from sqlglot import parse_one\n>>> expand(parse_one("select * from x AS z"), {"x": parse_one("select * from y")}).sql()\n'SELECT * FROM (SELECT * FROM y) AS z /* source: x */'\n
\n
\n \n
\n
>>> expand(parse_one("select * from x AS z"), {"x": parse_one("select * from y"), "y": parse_one("select * from z")}).sql()\n'SELECT * FROM (SELECT * FROM (SELECT * FROM z) AS y /* source: y */) AS z /* source: x */'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • expression: The expression to expand.
  • \n
  • sources: A dictionary of name to Subqueryables.
  • \n
  • copy: Whether or not to copy the expression during transformation. Defaults to True.
  • \n
\n\n
Returns:
\n\n
\n

The transformed expression.

\n
\n", "signature": "(\texpression: sqlglot.expressions.Expression,\tsources: Dict[str, sqlglot.expressions.Subqueryable],\tcopy: bool = True) -> sqlglot.expressions.Expression:", "funcdef": "def"}, "sqlglot.expressions.func": {"fullname": "sqlglot.expressions.func", "modulename": "sqlglot.expressions", "qualname": "func", "kind": "function", "doc": "

Returns a Func expression.

\n\n
Examples:
\n\n
\n
\n
>>> func("abs", 5).sql()\n'ABS(5)'\n
\n
\n \n
\n
>>> func("cast", this=5, to=DataType.build("DOUBLE")).sql()\n'CAST(5 AS DOUBLE)'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • name: the name of the function to build.
  • \n
  • args: the args used to instantiate the function of interest.
  • \n
  • dialect: the source dialect.
  • \n
  • kwargs: the kwargs used to instantiate the function of interest.
  • \n
\n\n
Note:
\n\n
\n

The arguments args and kwargs are mutually exclusive.

\n
\n\n
Returns:
\n\n
\n

An instance of the function of interest, or an anonymous function, if name doesn't\n correspond to an existing sqlglot.expressions.Func class.

\n
\n", "signature": "(\tname: str,\t*args,\tdialect: Union[str, sqlglot.dialects.dialect.Dialect, Type[sqlglot.dialects.dialect.Dialect], NoneType] = None,\t**kwargs) -> sqlglot.expressions.Func:", "funcdef": "def"}, "sqlglot.expressions.true": {"fullname": "sqlglot.expressions.true", "modulename": "sqlglot.expressions", "qualname": "true", "kind": "function", "doc": "

Returns a true Boolean expression.

\n", "signature": "():", "funcdef": "def"}, "sqlglot.expressions.false": {"fullname": "sqlglot.expressions.false", "modulename": "sqlglot.expressions", "qualname": "false", "kind": "function", "doc": "

Returns a false Boolean expression.

\n", "signature": "():", "funcdef": "def"}, "sqlglot.expressions.null": {"fullname": "sqlglot.expressions.null", "modulename": "sqlglot.expressions", "qualname": "null", "kind": "function", "doc": "

Returns a Null expression.

\n", "signature": "():", "funcdef": "def"}, "sqlglot.generator": {"fullname": "sqlglot.generator", "modulename": "sqlglot.generator", "kind": "module", "doc": "

\n"}, "sqlglot.generator.Generator": {"fullname": "sqlglot.generator.Generator", "modulename": "sqlglot.generator", "qualname": "Generator", "kind": "class", "doc": "

Generator interprets the given syntax tree and produces a SQL string as an output.

\n\n
Arguments:
\n\n
    \n
  • time_mapping (dict): the dictionary of custom time mappings in which the key\nrepresents a python time format and the output the target time format
  • \n
  • time_trie (trie): a trie of the time_mapping keys
  • \n
  • pretty (bool): if set to True the returned string will be formatted. Default: False.
  • \n
  • quote_start (str): specifies which starting character to use to delimit quotes. Default: '.
  • \n
  • quote_end (str): specifies which ending character to use to delimit quotes. Default: '.
  • \n
  • identifier_start (str): specifies which starting character to use to delimit identifiers. Default: \".
  • \n
  • identifier_end (str): specifies which ending character to use to delimit identifiers. Default: \".
  • \n
  • identify (bool | str): 'always': always quote, 'safe': quote identifiers if they don't contain an upcase, True defaults to always.
  • \n
  • normalize (bool): if set to True all identifiers will lower cased
  • \n
  • string_escape (str): specifies a string escape character. Default: '.
  • \n
  • identifier_escape (str): specifies an identifier escape character. Default: \".
  • \n
  • pad (int): determines padding in a formatted string. Default: 2.
  • \n
  • indent (int): determines the size of indentation in a formatted string. Default: 4.
  • \n
  • unnest_column_only (bool): if true unnest table aliases are considered only as column aliases
  • \n
  • normalize_functions (str): normalize function names, \"upper\", \"lower\", or None\nDefault: \"upper\"
  • \n
  • alias_post_tablesample (bool): if the table alias comes after tablesample\nDefault: False
  • \n
  • unsupported_level (ErrorLevel): determines the generator's behavior when it encounters\nunsupported expressions. Default ErrorLevel.WARN.
  • \n
  • null_ordering (str): Indicates the default null ordering method to use if not explicitly set.\nOptions are \"nulls_are_small\", \"nulls_are_large\", \"nulls_are_last\".\nDefault: \"nulls_are_small\"
  • \n
  • max_unsupported (int): Maximum number of unsupported messages to include in a raised UnsupportedError.\nThis is only relevant if unsupported_level is ErrorLevel.RAISE.\nDefault: 3
  • \n
  • leading_comma (bool): if the the comma is leading or trailing in select statements\nDefault: False
  • \n
  • max_text_width: The max number of characters in a segment before creating new lines in pretty mode.\nThe default is on the smaller end because the length only represents a segment and not the true\nline length.\nDefault: 80
  • \n
  • comments: Whether or not to preserve comments in the output SQL code.\nDefault: True
  • \n
\n"}, "sqlglot.generator.Generator.__init__": {"fullname": "sqlglot.generator.Generator.__init__", "modulename": "sqlglot.generator", "qualname": "Generator.__init__", "kind": "function", "doc": "

\n", "signature": "(\ttime_mapping=None,\ttime_trie=None,\tpretty=None,\tquote_start=None,\tquote_end=None,\tidentifier_start=None,\tidentifier_end=None,\tidentify=False,\tnormalize=False,\tstring_escape=None,\tidentifier_escape=None,\tpad=2,\tindent=2,\tindex_offset=0,\tunnest_column_only=False,\talias_post_tablesample=False,\tnormalize_functions='upper',\tunsupported_level=<ErrorLevel.WARN: 'WARN'>,\tnull_ordering=None,\tmax_unsupported=3,\tleading_comma=False,\tmax_text_width=80,\tcomments=True)"}, "sqlglot.generator.Generator.generate": {"fullname": "sqlglot.generator.Generator.generate", "modulename": "sqlglot.generator", "qualname": "Generator.generate", "kind": "function", "doc": "

Generates a SQL string by interpreting the given syntax tree.

\n\n

Args\n expression: the syntax tree.\n cache: an optional sql string cache. this leverages the hash of an expression which is slow, so only use this if you set _hash on each node.

\n\n

Returns\n the SQL string.

\n", "signature": "(\tself,\texpression: Optional[sqlglot.expressions.Expression],\tcache: Optional[Dict[int, str]] = None) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.unsupported": {"fullname": "sqlglot.generator.Generator.unsupported", "modulename": "sqlglot.generator", "qualname": "Generator.unsupported", "kind": "function", "doc": "

\n", "signature": "(self, message: str) -> None:", "funcdef": "def"}, "sqlglot.generator.Generator.sep": {"fullname": "sqlglot.generator.Generator.sep", "modulename": "sqlglot.generator", "qualname": "Generator.sep", "kind": "function", "doc": "

\n", "signature": "(self, sep: str = ' ') -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.seg": {"fullname": "sqlglot.generator.Generator.seg", "modulename": "sqlglot.generator", "qualname": "Generator.seg", "kind": "function", "doc": "

\n", "signature": "(self, sql: str, sep: str = ' ') -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.pad_comment": {"fullname": "sqlglot.generator.Generator.pad_comment", "modulename": "sqlglot.generator", "qualname": "Generator.pad_comment", "kind": "function", "doc": "

\n", "signature": "(self, comment: str) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.maybe_comment": {"fullname": "sqlglot.generator.Generator.maybe_comment", "modulename": "sqlglot.generator", "qualname": "Generator.maybe_comment", "kind": "function", "doc": "

\n", "signature": "(\tself,\tsql: str,\texpression: Optional[sqlglot.expressions.Expression] = None,\tcomments: Optional[List[str]] = None) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.wrap": {"fullname": "sqlglot.generator.Generator.wrap", "modulename": "sqlglot.generator", "qualname": "Generator.wrap", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Expression | str) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.no_identify": {"fullname": "sqlglot.generator.Generator.no_identify", "modulename": "sqlglot.generator", "qualname": "Generator.no_identify", "kind": "function", "doc": "

\n", "signature": "(self, func: Callable[..., str], *args, **kwargs) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.normalize_func": {"fullname": "sqlglot.generator.Generator.normalize_func", "modulename": "sqlglot.generator", "qualname": "Generator.normalize_func", "kind": "function", "doc": "

\n", "signature": "(self, name: str) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.indent": {"fullname": "sqlglot.generator.Generator.indent", "modulename": "sqlglot.generator", "qualname": "Generator.indent", "kind": "function", "doc": "

\n", "signature": "(\tself,\tsql: str,\tlevel: int = 0,\tpad: Optional[int] = None,\tskip_first: bool = False,\tskip_last: bool = False) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.sql": {"fullname": "sqlglot.generator.Generator.sql", "modulename": "sqlglot.generator", "qualname": "Generator.sql", "kind": "function", "doc": "

\n", "signature": "(\tself,\texpression: Union[str, sqlglot.expressions.Expression, NoneType],\tkey: Optional[str] = None,\tcomment: bool = True) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.uncache_sql": {"fullname": "sqlglot.generator.Generator.uncache_sql", "modulename": "sqlglot.generator", "qualname": "Generator.uncache_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Uncache) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.cache_sql": {"fullname": "sqlglot.generator.Generator.cache_sql", "modulename": "sqlglot.generator", "qualname": "Generator.cache_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Cache) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.characterset_sql": {"fullname": "sqlglot.generator.Generator.characterset_sql", "modulename": "sqlglot.generator", "qualname": "Generator.characterset_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.CharacterSet) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.column_sql": {"fullname": "sqlglot.generator.Generator.column_sql", "modulename": "sqlglot.generator", "qualname": "Generator.column_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Column) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.columnposition_sql": {"fullname": "sqlglot.generator.Generator.columnposition_sql", "modulename": "sqlglot.generator", "qualname": "Generator.columnposition_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.ColumnPosition) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.columndef_sql": {"fullname": "sqlglot.generator.Generator.columndef_sql", "modulename": "sqlglot.generator", "qualname": "Generator.columndef_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.ColumnDef) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.columnconstraint_sql": {"fullname": "sqlglot.generator.Generator.columnconstraint_sql", "modulename": "sqlglot.generator", "qualname": "Generator.columnconstraint_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.ColumnConstraint) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.autoincrementcolumnconstraint_sql": {"fullname": "sqlglot.generator.Generator.autoincrementcolumnconstraint_sql", "modulename": "sqlglot.generator", "qualname": "Generator.autoincrementcolumnconstraint_sql", "kind": "function", "doc": "

\n", "signature": "(self, _) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.compresscolumnconstraint_sql": {"fullname": "sqlglot.generator.Generator.compresscolumnconstraint_sql", "modulename": "sqlglot.generator", "qualname": "Generator.compresscolumnconstraint_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.CompressColumnConstraint) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.generatedasidentitycolumnconstraint_sql": {"fullname": "sqlglot.generator.Generator.generatedasidentitycolumnconstraint_sql", "modulename": "sqlglot.generator", "qualname": "Generator.generatedasidentitycolumnconstraint_sql", "kind": "function", "doc": "

\n", "signature": "(\tself,\texpression: sqlglot.expressions.GeneratedAsIdentityColumnConstraint) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.notnullcolumnconstraint_sql": {"fullname": "sqlglot.generator.Generator.notnullcolumnconstraint_sql", "modulename": "sqlglot.generator", "qualname": "Generator.notnullcolumnconstraint_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.NotNullColumnConstraint) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.primarykeycolumnconstraint_sql": {"fullname": "sqlglot.generator.Generator.primarykeycolumnconstraint_sql", "modulename": "sqlglot.generator", "qualname": "Generator.primarykeycolumnconstraint_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.PrimaryKeyColumnConstraint) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.uniquecolumnconstraint_sql": {"fullname": "sqlglot.generator.Generator.uniquecolumnconstraint_sql", "modulename": "sqlglot.generator", "qualname": "Generator.uniquecolumnconstraint_sql", "kind": "function", "doc": "

\n", "signature": "(self, _) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.create_sql": {"fullname": "sqlglot.generator.Generator.create_sql", "modulename": "sqlglot.generator", "qualname": "Generator.create_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Create) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.describe_sql": {"fullname": "sqlglot.generator.Generator.describe_sql", "modulename": "sqlglot.generator", "qualname": "Generator.describe_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Describe) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.prepend_ctes": {"fullname": "sqlglot.generator.Generator.prepend_ctes", "modulename": "sqlglot.generator", "qualname": "Generator.prepend_ctes", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Expression, sql: str) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.with_sql": {"fullname": "sqlglot.generator.Generator.with_sql", "modulename": "sqlglot.generator", "qualname": "Generator.with_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.With) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.cte_sql": {"fullname": "sqlglot.generator.Generator.cte_sql", "modulename": "sqlglot.generator", "qualname": "Generator.cte_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.CTE) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.tablealias_sql": {"fullname": "sqlglot.generator.Generator.tablealias_sql", "modulename": "sqlglot.generator", "qualname": "Generator.tablealias_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.TableAlias) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.bitstring_sql": {"fullname": "sqlglot.generator.Generator.bitstring_sql", "modulename": "sqlglot.generator", "qualname": "Generator.bitstring_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.BitString) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.hexstring_sql": {"fullname": "sqlglot.generator.Generator.hexstring_sql", "modulename": "sqlglot.generator", "qualname": "Generator.hexstring_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.HexString) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.bytestring_sql": {"fullname": "sqlglot.generator.Generator.bytestring_sql", "modulename": "sqlglot.generator", "qualname": "Generator.bytestring_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.ByteString) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.datatype_sql": {"fullname": "sqlglot.generator.Generator.datatype_sql", "modulename": "sqlglot.generator", "qualname": "Generator.datatype_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.DataType) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.directory_sql": {"fullname": "sqlglot.generator.Generator.directory_sql", "modulename": "sqlglot.generator", "qualname": "Generator.directory_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Directory) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.delete_sql": {"fullname": "sqlglot.generator.Generator.delete_sql", "modulename": "sqlglot.generator", "qualname": "Generator.delete_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Delete) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.drop_sql": {"fullname": "sqlglot.generator.Generator.drop_sql", "modulename": "sqlglot.generator", "qualname": "Generator.drop_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Drop) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.except_sql": {"fullname": "sqlglot.generator.Generator.except_sql", "modulename": "sqlglot.generator", "qualname": "Generator.except_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Except) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.except_op": {"fullname": "sqlglot.generator.Generator.except_op", "modulename": "sqlglot.generator", "qualname": "Generator.except_op", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Except) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.fetch_sql": {"fullname": "sqlglot.generator.Generator.fetch_sql", "modulename": "sqlglot.generator", "qualname": "Generator.fetch_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Fetch) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.filter_sql": {"fullname": "sqlglot.generator.Generator.filter_sql", "modulename": "sqlglot.generator", "qualname": "Generator.filter_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Filter) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.hint_sql": {"fullname": "sqlglot.generator.Generator.hint_sql", "modulename": "sqlglot.generator", "qualname": "Generator.hint_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Hint) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.index_sql": {"fullname": "sqlglot.generator.Generator.index_sql", "modulename": "sqlglot.generator", "qualname": "Generator.index_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Index) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.identifier_sql": {"fullname": "sqlglot.generator.Generator.identifier_sql", "modulename": "sqlglot.generator", "qualname": "Generator.identifier_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Identifier) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.inputoutputformat_sql": {"fullname": "sqlglot.generator.Generator.inputoutputformat_sql", "modulename": "sqlglot.generator", "qualname": "Generator.inputoutputformat_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.InputOutputFormat) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.national_sql": {"fullname": "sqlglot.generator.Generator.national_sql", "modulename": "sqlglot.generator", "qualname": "Generator.national_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.National) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.partition_sql": {"fullname": "sqlglot.generator.Generator.partition_sql", "modulename": "sqlglot.generator", "qualname": "Generator.partition_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Partition) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.properties_sql": {"fullname": "sqlglot.generator.Generator.properties_sql", "modulename": "sqlglot.generator", "qualname": "Generator.properties_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Properties) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.root_properties": {"fullname": "sqlglot.generator.Generator.root_properties", "modulename": "sqlglot.generator", "qualname": "Generator.root_properties", "kind": "function", "doc": "

\n", "signature": "(self, properties: sqlglot.expressions.Properties) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.properties": {"fullname": "sqlglot.generator.Generator.properties", "modulename": "sqlglot.generator", "qualname": "Generator.properties", "kind": "function", "doc": "

\n", "signature": "(\tself,\tproperties: sqlglot.expressions.Properties,\tprefix: str = '',\tsep: str = ', ',\tsuffix: str = '',\twrapped: bool = True) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.with_properties": {"fullname": "sqlglot.generator.Generator.with_properties", "modulename": "sqlglot.generator", "qualname": "Generator.with_properties", "kind": "function", "doc": "

\n", "signature": "(self, properties: sqlglot.expressions.Properties) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.locate_properties": {"fullname": "sqlglot.generator.Generator.locate_properties", "modulename": "sqlglot.generator", "qualname": "Generator.locate_properties", "kind": "function", "doc": "

\n", "signature": "(\tself,\tproperties: sqlglot.expressions.Properties) -> Dict[sqlglot.expressions.Properties.Location, list[sqlglot.expressions.Property]]:", "funcdef": "def"}, "sqlglot.generator.Generator.property_sql": {"fullname": "sqlglot.generator.Generator.property_sql", "modulename": "sqlglot.generator", "qualname": "Generator.property_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Property) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.likeproperty_sql": {"fullname": "sqlglot.generator.Generator.likeproperty_sql", "modulename": "sqlglot.generator", "qualname": "Generator.likeproperty_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.LikeProperty) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.fallbackproperty_sql": {"fullname": "sqlglot.generator.Generator.fallbackproperty_sql", "modulename": "sqlglot.generator", "qualname": "Generator.fallbackproperty_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.FallbackProperty) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.journalproperty_sql": {"fullname": "sqlglot.generator.Generator.journalproperty_sql", "modulename": "sqlglot.generator", "qualname": "Generator.journalproperty_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.JournalProperty) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.freespaceproperty_sql": {"fullname": "sqlglot.generator.Generator.freespaceproperty_sql", "modulename": "sqlglot.generator", "qualname": "Generator.freespaceproperty_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.FreespaceProperty) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.afterjournalproperty_sql": {"fullname": "sqlglot.generator.Generator.afterjournalproperty_sql", "modulename": "sqlglot.generator", "qualname": "Generator.afterjournalproperty_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.AfterJournalProperty) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.checksumproperty_sql": {"fullname": "sqlglot.generator.Generator.checksumproperty_sql", "modulename": "sqlglot.generator", "qualname": "Generator.checksumproperty_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.ChecksumProperty) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.mergeblockratioproperty_sql": {"fullname": "sqlglot.generator.Generator.mergeblockratioproperty_sql", "modulename": "sqlglot.generator", "qualname": "Generator.mergeblockratioproperty_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.MergeBlockRatioProperty) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.datablocksizeproperty_sql": {"fullname": "sqlglot.generator.Generator.datablocksizeproperty_sql", "modulename": "sqlglot.generator", "qualname": "Generator.datablocksizeproperty_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.DataBlocksizeProperty) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.blockcompressionproperty_sql": {"fullname": "sqlglot.generator.Generator.blockcompressionproperty_sql", "modulename": "sqlglot.generator", "qualname": "Generator.blockcompressionproperty_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.BlockCompressionProperty) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.isolatedloadingproperty_sql": {"fullname": "sqlglot.generator.Generator.isolatedloadingproperty_sql", "modulename": "sqlglot.generator", "qualname": "Generator.isolatedloadingproperty_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.IsolatedLoadingProperty) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.lockingproperty_sql": {"fullname": "sqlglot.generator.Generator.lockingproperty_sql", "modulename": "sqlglot.generator", "qualname": "Generator.lockingproperty_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.LockingProperty) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.withdataproperty_sql": {"fullname": "sqlglot.generator.Generator.withdataproperty_sql", "modulename": "sqlglot.generator", "qualname": "Generator.withdataproperty_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.WithDataProperty) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.insert_sql": {"fullname": "sqlglot.generator.Generator.insert_sql", "modulename": "sqlglot.generator", "qualname": "Generator.insert_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Insert) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.intersect_sql": {"fullname": "sqlglot.generator.Generator.intersect_sql", "modulename": "sqlglot.generator", "qualname": "Generator.intersect_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Intersect) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.intersect_op": {"fullname": "sqlglot.generator.Generator.intersect_op", "modulename": "sqlglot.generator", "qualname": "Generator.intersect_op", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Intersect) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.introducer_sql": {"fullname": "sqlglot.generator.Generator.introducer_sql", "modulename": "sqlglot.generator", "qualname": "Generator.introducer_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Introducer) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.pseudotype_sql": {"fullname": "sqlglot.generator.Generator.pseudotype_sql", "modulename": "sqlglot.generator", "qualname": "Generator.pseudotype_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.PseudoType) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.onconflict_sql": {"fullname": "sqlglot.generator.Generator.onconflict_sql", "modulename": "sqlglot.generator", "qualname": "Generator.onconflict_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.OnConflict) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.returning_sql": {"fullname": "sqlglot.generator.Generator.returning_sql", "modulename": "sqlglot.generator", "qualname": "Generator.returning_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Returning) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.rowformatdelimitedproperty_sql": {"fullname": "sqlglot.generator.Generator.rowformatdelimitedproperty_sql", "modulename": "sqlglot.generator", "qualname": "Generator.rowformatdelimitedproperty_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.RowFormatDelimitedProperty) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.table_sql": {"fullname": "sqlglot.generator.Generator.table_sql", "modulename": "sqlglot.generator", "qualname": "Generator.table_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Table, sep: str = ' AS ') -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.tablesample_sql": {"fullname": "sqlglot.generator.Generator.tablesample_sql", "modulename": "sqlglot.generator", "qualname": "Generator.tablesample_sql", "kind": "function", "doc": "

\n", "signature": "(\tself,\texpression: sqlglot.expressions.TableSample,\tseed_prefix: str = 'SEED') -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.pivot_sql": {"fullname": "sqlglot.generator.Generator.pivot_sql", "modulename": "sqlglot.generator", "qualname": "Generator.pivot_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Pivot) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.tuple_sql": {"fullname": "sqlglot.generator.Generator.tuple_sql", "modulename": "sqlglot.generator", "qualname": "Generator.tuple_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Tuple) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.update_sql": {"fullname": "sqlglot.generator.Generator.update_sql", "modulename": "sqlglot.generator", "qualname": "Generator.update_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Update) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.values_sql": {"fullname": "sqlglot.generator.Generator.values_sql", "modulename": "sqlglot.generator", "qualname": "Generator.values_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Values) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.var_sql": {"fullname": "sqlglot.generator.Generator.var_sql", "modulename": "sqlglot.generator", "qualname": "Generator.var_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Var) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.into_sql": {"fullname": "sqlglot.generator.Generator.into_sql", "modulename": "sqlglot.generator", "qualname": "Generator.into_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Into) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.from_sql": {"fullname": "sqlglot.generator.Generator.from_sql", "modulename": "sqlglot.generator", "qualname": "Generator.from_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.From) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.group_sql": {"fullname": "sqlglot.generator.Generator.group_sql", "modulename": "sqlglot.generator", "qualname": "Generator.group_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Group) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.having_sql": {"fullname": "sqlglot.generator.Generator.having_sql", "modulename": "sqlglot.generator", "qualname": "Generator.having_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Having) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.join_sql": {"fullname": "sqlglot.generator.Generator.join_sql", "modulename": "sqlglot.generator", "qualname": "Generator.join_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Join) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.lambda_sql": {"fullname": "sqlglot.generator.Generator.lambda_sql", "modulename": "sqlglot.generator", "qualname": "Generator.lambda_sql", "kind": "function", "doc": "

\n", "signature": "(\tself,\texpression: sqlglot.expressions.Lambda,\tarrow_sep: str = '->') -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.lateral_sql": {"fullname": "sqlglot.generator.Generator.lateral_sql", "modulename": "sqlglot.generator", "qualname": "Generator.lateral_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Lateral) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.limit_sql": {"fullname": "sqlglot.generator.Generator.limit_sql", "modulename": "sqlglot.generator", "qualname": "Generator.limit_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Limit) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.offset_sql": {"fullname": "sqlglot.generator.Generator.offset_sql", "modulename": "sqlglot.generator", "qualname": "Generator.offset_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Offset) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.setitem_sql": {"fullname": "sqlglot.generator.Generator.setitem_sql", "modulename": "sqlglot.generator", "qualname": "Generator.setitem_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.SetItem) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.set_sql": {"fullname": "sqlglot.generator.Generator.set_sql", "modulename": "sqlglot.generator", "qualname": "Generator.set_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Set) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.pragma_sql": {"fullname": "sqlglot.generator.Generator.pragma_sql", "modulename": "sqlglot.generator", "qualname": "Generator.pragma_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Pragma) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.lock_sql": {"fullname": "sqlglot.generator.Generator.lock_sql", "modulename": "sqlglot.generator", "qualname": "Generator.lock_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Lock) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.literal_sql": {"fullname": "sqlglot.generator.Generator.literal_sql", "modulename": "sqlglot.generator", "qualname": "Generator.literal_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Literal) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.loaddata_sql": {"fullname": "sqlglot.generator.Generator.loaddata_sql", "modulename": "sqlglot.generator", "qualname": "Generator.loaddata_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.LoadData) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.null_sql": {"fullname": "sqlglot.generator.Generator.null_sql", "modulename": "sqlglot.generator", "qualname": "Generator.null_sql", "kind": "function", "doc": "

\n", "signature": "(self, *_) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.boolean_sql": {"fullname": "sqlglot.generator.Generator.boolean_sql", "modulename": "sqlglot.generator", "qualname": "Generator.boolean_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Boolean) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.order_sql": {"fullname": "sqlglot.generator.Generator.order_sql", "modulename": "sqlglot.generator", "qualname": "Generator.order_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Order, flat: bool = False) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.cluster_sql": {"fullname": "sqlglot.generator.Generator.cluster_sql", "modulename": "sqlglot.generator", "qualname": "Generator.cluster_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Cluster) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.distribute_sql": {"fullname": "sqlglot.generator.Generator.distribute_sql", "modulename": "sqlglot.generator", "qualname": "Generator.distribute_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Distribute) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.sort_sql": {"fullname": "sqlglot.generator.Generator.sort_sql", "modulename": "sqlglot.generator", "qualname": "Generator.sort_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Sort) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.ordered_sql": {"fullname": "sqlglot.generator.Generator.ordered_sql", "modulename": "sqlglot.generator", "qualname": "Generator.ordered_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Ordered) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.matchrecognize_sql": {"fullname": "sqlglot.generator.Generator.matchrecognize_sql", "modulename": "sqlglot.generator", "qualname": "Generator.matchrecognize_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.MatchRecognize) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.query_modifiers": {"fullname": "sqlglot.generator.Generator.query_modifiers", "modulename": "sqlglot.generator", "qualname": "Generator.query_modifiers", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Expression, *sqls: str) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.select_sql": {"fullname": "sqlglot.generator.Generator.select_sql", "modulename": "sqlglot.generator", "qualname": "Generator.select_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Select) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.schema_sql": {"fullname": "sqlglot.generator.Generator.schema_sql", "modulename": "sqlglot.generator", "qualname": "Generator.schema_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Schema) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.star_sql": {"fullname": "sqlglot.generator.Generator.star_sql", "modulename": "sqlglot.generator", "qualname": "Generator.star_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Star) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.structkwarg_sql": {"fullname": "sqlglot.generator.Generator.structkwarg_sql", "modulename": "sqlglot.generator", "qualname": "Generator.structkwarg_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.StructKwarg) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.parameter_sql": {"fullname": "sqlglot.generator.Generator.parameter_sql", "modulename": "sqlglot.generator", "qualname": "Generator.parameter_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Parameter) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.sessionparameter_sql": {"fullname": "sqlglot.generator.Generator.sessionparameter_sql", "modulename": "sqlglot.generator", "qualname": "Generator.sessionparameter_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.SessionParameter) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.placeholder_sql": {"fullname": "sqlglot.generator.Generator.placeholder_sql", "modulename": "sqlglot.generator", "qualname": "Generator.placeholder_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Placeholder) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.subquery_sql": {"fullname": "sqlglot.generator.Generator.subquery_sql", "modulename": "sqlglot.generator", "qualname": "Generator.subquery_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Subquery, sep: str = ' AS ') -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.qualify_sql": {"fullname": "sqlglot.generator.Generator.qualify_sql", "modulename": "sqlglot.generator", "qualname": "Generator.qualify_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Qualify) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.union_sql": {"fullname": "sqlglot.generator.Generator.union_sql", "modulename": "sqlglot.generator", "qualname": "Generator.union_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Union) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.union_op": {"fullname": "sqlglot.generator.Generator.union_op", "modulename": "sqlglot.generator", "qualname": "Generator.union_op", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Union) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.unnest_sql": {"fullname": "sqlglot.generator.Generator.unnest_sql", "modulename": "sqlglot.generator", "qualname": "Generator.unnest_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Unnest) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.where_sql": {"fullname": "sqlglot.generator.Generator.where_sql", "modulename": "sqlglot.generator", "qualname": "Generator.where_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Where) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.window_sql": {"fullname": "sqlglot.generator.Generator.window_sql", "modulename": "sqlglot.generator", "qualname": "Generator.window_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Window) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.partition_by_sql": {"fullname": "sqlglot.generator.Generator.partition_by_sql", "modulename": "sqlglot.generator", "qualname": "Generator.partition_by_sql", "kind": "function", "doc": "

\n", "signature": "(\tself,\texpression: sqlglot.expressions.Window | sqlglot.expressions.MatchRecognize) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.window_spec_sql": {"fullname": "sqlglot.generator.Generator.window_spec_sql", "modulename": "sqlglot.generator", "qualname": "Generator.window_spec_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.WindowSpec) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.withingroup_sql": {"fullname": "sqlglot.generator.Generator.withingroup_sql", "modulename": "sqlglot.generator", "qualname": "Generator.withingroup_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.WithinGroup) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.between_sql": {"fullname": "sqlglot.generator.Generator.between_sql", "modulename": "sqlglot.generator", "qualname": "Generator.between_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Between) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.bracket_sql": {"fullname": "sqlglot.generator.Generator.bracket_sql", "modulename": "sqlglot.generator", "qualname": "Generator.bracket_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Bracket) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.all_sql": {"fullname": "sqlglot.generator.Generator.all_sql", "modulename": "sqlglot.generator", "qualname": "Generator.all_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.All) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.any_sql": {"fullname": "sqlglot.generator.Generator.any_sql", "modulename": "sqlglot.generator", "qualname": "Generator.any_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Any) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.exists_sql": {"fullname": "sqlglot.generator.Generator.exists_sql", "modulename": "sqlglot.generator", "qualname": "Generator.exists_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Exists) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.case_sql": {"fullname": "sqlglot.generator.Generator.case_sql", "modulename": "sqlglot.generator", "qualname": "Generator.case_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Case) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.constraint_sql": {"fullname": "sqlglot.generator.Generator.constraint_sql", "modulename": "sqlglot.generator", "qualname": "Generator.constraint_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Constraint) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.extract_sql": {"fullname": "sqlglot.generator.Generator.extract_sql", "modulename": "sqlglot.generator", "qualname": "Generator.extract_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Extract) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.trim_sql": {"fullname": "sqlglot.generator.Generator.trim_sql", "modulename": "sqlglot.generator", "qualname": "Generator.trim_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Trim) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.concat_sql": {"fullname": "sqlglot.generator.Generator.concat_sql", "modulename": "sqlglot.generator", "qualname": "Generator.concat_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Concat) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.check_sql": {"fullname": "sqlglot.generator.Generator.check_sql", "modulename": "sqlglot.generator", "qualname": "Generator.check_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Check) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.foreignkey_sql": {"fullname": "sqlglot.generator.Generator.foreignkey_sql", "modulename": "sqlglot.generator", "qualname": "Generator.foreignkey_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.ForeignKey) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.primarykey_sql": {"fullname": "sqlglot.generator.Generator.primarykey_sql", "modulename": "sqlglot.generator", "qualname": "Generator.primarykey_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.ForeignKey) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.unique_sql": {"fullname": "sqlglot.generator.Generator.unique_sql", "modulename": "sqlglot.generator", "qualname": "Generator.unique_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Unique) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.if_sql": {"fullname": "sqlglot.generator.Generator.if_sql", "modulename": "sqlglot.generator", "qualname": "Generator.if_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.If) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.matchagainst_sql": {"fullname": "sqlglot.generator.Generator.matchagainst_sql", "modulename": "sqlglot.generator", "qualname": "Generator.matchagainst_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.MatchAgainst) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.jsonkeyvalue_sql": {"fullname": "sqlglot.generator.Generator.jsonkeyvalue_sql", "modulename": "sqlglot.generator", "qualname": "Generator.jsonkeyvalue_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.JSONKeyValue) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.jsonobject_sql": {"fullname": "sqlglot.generator.Generator.jsonobject_sql", "modulename": "sqlglot.generator", "qualname": "Generator.jsonobject_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.JSONObject) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.in_sql": {"fullname": "sqlglot.generator.Generator.in_sql", "modulename": "sqlglot.generator", "qualname": "Generator.in_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.In) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.in_unnest_op": {"fullname": "sqlglot.generator.Generator.in_unnest_op", "modulename": "sqlglot.generator", "qualname": "Generator.in_unnest_op", "kind": "function", "doc": "

\n", "signature": "(self, unnest: sqlglot.expressions.Unnest) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.interval_sql": {"fullname": "sqlglot.generator.Generator.interval_sql", "modulename": "sqlglot.generator", "qualname": "Generator.interval_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Interval) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.return_sql": {"fullname": "sqlglot.generator.Generator.return_sql", "modulename": "sqlglot.generator", "qualname": "Generator.return_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Return) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.reference_sql": {"fullname": "sqlglot.generator.Generator.reference_sql", "modulename": "sqlglot.generator", "qualname": "Generator.reference_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Reference) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.anonymous_sql": {"fullname": "sqlglot.generator.Generator.anonymous_sql", "modulename": "sqlglot.generator", "qualname": "Generator.anonymous_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Anonymous) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.paren_sql": {"fullname": "sqlglot.generator.Generator.paren_sql", "modulename": "sqlglot.generator", "qualname": "Generator.paren_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Paren) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.neg_sql": {"fullname": "sqlglot.generator.Generator.neg_sql", "modulename": "sqlglot.generator", "qualname": "Generator.neg_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Neg) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.not_sql": {"fullname": "sqlglot.generator.Generator.not_sql", "modulename": "sqlglot.generator", "qualname": "Generator.not_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Not) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.alias_sql": {"fullname": "sqlglot.generator.Generator.alias_sql", "modulename": "sqlglot.generator", "qualname": "Generator.alias_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Alias) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.aliases_sql": {"fullname": "sqlglot.generator.Generator.aliases_sql", "modulename": "sqlglot.generator", "qualname": "Generator.aliases_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Aliases) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.attimezone_sql": {"fullname": "sqlglot.generator.Generator.attimezone_sql", "modulename": "sqlglot.generator", "qualname": "Generator.attimezone_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.AtTimeZone) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.add_sql": {"fullname": "sqlglot.generator.Generator.add_sql", "modulename": "sqlglot.generator", "qualname": "Generator.add_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Add) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.and_sql": {"fullname": "sqlglot.generator.Generator.and_sql", "modulename": "sqlglot.generator", "qualname": "Generator.and_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.And) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.connector_sql": {"fullname": "sqlglot.generator.Generator.connector_sql", "modulename": "sqlglot.generator", "qualname": "Generator.connector_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Connector, op: str) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.bitwiseand_sql": {"fullname": "sqlglot.generator.Generator.bitwiseand_sql", "modulename": "sqlglot.generator", "qualname": "Generator.bitwiseand_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.BitwiseAnd) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.bitwiseleftshift_sql": {"fullname": "sqlglot.generator.Generator.bitwiseleftshift_sql", "modulename": "sqlglot.generator", "qualname": "Generator.bitwiseleftshift_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.BitwiseLeftShift) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.bitwisenot_sql": {"fullname": "sqlglot.generator.Generator.bitwisenot_sql", "modulename": "sqlglot.generator", "qualname": "Generator.bitwisenot_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.BitwiseNot) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.bitwiseor_sql": {"fullname": "sqlglot.generator.Generator.bitwiseor_sql", "modulename": "sqlglot.generator", "qualname": "Generator.bitwiseor_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.BitwiseOr) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.bitwiserightshift_sql": {"fullname": "sqlglot.generator.Generator.bitwiserightshift_sql", "modulename": "sqlglot.generator", "qualname": "Generator.bitwiserightshift_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.BitwiseRightShift) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.bitwisexor_sql": {"fullname": "sqlglot.generator.Generator.bitwisexor_sql", "modulename": "sqlglot.generator", "qualname": "Generator.bitwisexor_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.BitwiseXor) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.cast_sql": {"fullname": "sqlglot.generator.Generator.cast_sql", "modulename": "sqlglot.generator", "qualname": "Generator.cast_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Cast) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.currentdate_sql": {"fullname": "sqlglot.generator.Generator.currentdate_sql", "modulename": "sqlglot.generator", "qualname": "Generator.currentdate_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.CurrentDate) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.collate_sql": {"fullname": "sqlglot.generator.Generator.collate_sql", "modulename": "sqlglot.generator", "qualname": "Generator.collate_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Collate) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.command_sql": {"fullname": "sqlglot.generator.Generator.command_sql", "modulename": "sqlglot.generator", "qualname": "Generator.command_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Command) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.comment_sql": {"fullname": "sqlglot.generator.Generator.comment_sql", "modulename": "sqlglot.generator", "qualname": "Generator.comment_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Comment) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.transaction_sql": {"fullname": "sqlglot.generator.Generator.transaction_sql", "modulename": "sqlglot.generator", "qualname": "Generator.transaction_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Transaction) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.commit_sql": {"fullname": "sqlglot.generator.Generator.commit_sql", "modulename": "sqlglot.generator", "qualname": "Generator.commit_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Commit) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.rollback_sql": {"fullname": "sqlglot.generator.Generator.rollback_sql", "modulename": "sqlglot.generator", "qualname": "Generator.rollback_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Rollback) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.altercolumn_sql": {"fullname": "sqlglot.generator.Generator.altercolumn_sql", "modulename": "sqlglot.generator", "qualname": "Generator.altercolumn_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.AlterColumn) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.renametable_sql": {"fullname": "sqlglot.generator.Generator.renametable_sql", "modulename": "sqlglot.generator", "qualname": "Generator.renametable_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.RenameTable) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.altertable_sql": {"fullname": "sqlglot.generator.Generator.altertable_sql", "modulename": "sqlglot.generator", "qualname": "Generator.altertable_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.AlterTable) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.droppartition_sql": {"fullname": "sqlglot.generator.Generator.droppartition_sql", "modulename": "sqlglot.generator", "qualname": "Generator.droppartition_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.DropPartition) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.addconstraint_sql": {"fullname": "sqlglot.generator.Generator.addconstraint_sql", "modulename": "sqlglot.generator", "qualname": "Generator.addconstraint_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.AddConstraint) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.distinct_sql": {"fullname": "sqlglot.generator.Generator.distinct_sql", "modulename": "sqlglot.generator", "qualname": "Generator.distinct_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Distinct) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.ignorenulls_sql": {"fullname": "sqlglot.generator.Generator.ignorenulls_sql", "modulename": "sqlglot.generator", "qualname": "Generator.ignorenulls_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.IgnoreNulls) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.respectnulls_sql": {"fullname": "sqlglot.generator.Generator.respectnulls_sql", "modulename": "sqlglot.generator", "qualname": "Generator.respectnulls_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.RespectNulls) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.intdiv_sql": {"fullname": "sqlglot.generator.Generator.intdiv_sql", "modulename": "sqlglot.generator", "qualname": "Generator.intdiv_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.IntDiv) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.dpipe_sql": {"fullname": "sqlglot.generator.Generator.dpipe_sql", "modulename": "sqlglot.generator", "qualname": "Generator.dpipe_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.DPipe) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.div_sql": {"fullname": "sqlglot.generator.Generator.div_sql", "modulename": "sqlglot.generator", "qualname": "Generator.div_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Div) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.overlaps_sql": {"fullname": "sqlglot.generator.Generator.overlaps_sql", "modulename": "sqlglot.generator", "qualname": "Generator.overlaps_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Overlaps) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.distance_sql": {"fullname": "sqlglot.generator.Generator.distance_sql", "modulename": "sqlglot.generator", "qualname": "Generator.distance_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Distance) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.dot_sql": {"fullname": "sqlglot.generator.Generator.dot_sql", "modulename": "sqlglot.generator", "qualname": "Generator.dot_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Dot) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.eq_sql": {"fullname": "sqlglot.generator.Generator.eq_sql", "modulename": "sqlglot.generator", "qualname": "Generator.eq_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.EQ) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.escape_sql": {"fullname": "sqlglot.generator.Generator.escape_sql", "modulename": "sqlglot.generator", "qualname": "Generator.escape_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Escape) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.glob_sql": {"fullname": "sqlglot.generator.Generator.glob_sql", "modulename": "sqlglot.generator", "qualname": "Generator.glob_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Glob) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.gt_sql": {"fullname": "sqlglot.generator.Generator.gt_sql", "modulename": "sqlglot.generator", "qualname": "Generator.gt_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.GT) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.gte_sql": {"fullname": "sqlglot.generator.Generator.gte_sql", "modulename": "sqlglot.generator", "qualname": "Generator.gte_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.GTE) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.ilike_sql": {"fullname": "sqlglot.generator.Generator.ilike_sql", "modulename": "sqlglot.generator", "qualname": "Generator.ilike_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.ILike) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.ilikeany_sql": {"fullname": "sqlglot.generator.Generator.ilikeany_sql", "modulename": "sqlglot.generator", "qualname": "Generator.ilikeany_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.ILikeAny) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.is_sql": {"fullname": "sqlglot.generator.Generator.is_sql", "modulename": "sqlglot.generator", "qualname": "Generator.is_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Is) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.like_sql": {"fullname": "sqlglot.generator.Generator.like_sql", "modulename": "sqlglot.generator", "qualname": "Generator.like_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Like) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.likeany_sql": {"fullname": "sqlglot.generator.Generator.likeany_sql", "modulename": "sqlglot.generator", "qualname": "Generator.likeany_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.LikeAny) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.similarto_sql": {"fullname": "sqlglot.generator.Generator.similarto_sql", "modulename": "sqlglot.generator", "qualname": "Generator.similarto_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.SimilarTo) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.lt_sql": {"fullname": "sqlglot.generator.Generator.lt_sql", "modulename": "sqlglot.generator", "qualname": "Generator.lt_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.LT) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.lte_sql": {"fullname": "sqlglot.generator.Generator.lte_sql", "modulename": "sqlglot.generator", "qualname": "Generator.lte_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.LTE) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.mod_sql": {"fullname": "sqlglot.generator.Generator.mod_sql", "modulename": "sqlglot.generator", "qualname": "Generator.mod_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Mod) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.mul_sql": {"fullname": "sqlglot.generator.Generator.mul_sql", "modulename": "sqlglot.generator", "qualname": "Generator.mul_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Mul) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.neq_sql": {"fullname": "sqlglot.generator.Generator.neq_sql", "modulename": "sqlglot.generator", "qualname": "Generator.neq_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.NEQ) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.nullsafeeq_sql": {"fullname": "sqlglot.generator.Generator.nullsafeeq_sql", "modulename": "sqlglot.generator", "qualname": "Generator.nullsafeeq_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.NullSafeEQ) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.nullsafeneq_sql": {"fullname": "sqlglot.generator.Generator.nullsafeneq_sql", "modulename": "sqlglot.generator", "qualname": "Generator.nullsafeneq_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.NullSafeNEQ) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.or_sql": {"fullname": "sqlglot.generator.Generator.or_sql", "modulename": "sqlglot.generator", "qualname": "Generator.or_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Or) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.slice_sql": {"fullname": "sqlglot.generator.Generator.slice_sql", "modulename": "sqlglot.generator", "qualname": "Generator.slice_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Slice) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.sub_sql": {"fullname": "sqlglot.generator.Generator.sub_sql", "modulename": "sqlglot.generator", "qualname": "Generator.sub_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Sub) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.trycast_sql": {"fullname": "sqlglot.generator.Generator.trycast_sql", "modulename": "sqlglot.generator", "qualname": "Generator.trycast_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.TryCast) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.use_sql": {"fullname": "sqlglot.generator.Generator.use_sql", "modulename": "sqlglot.generator", "qualname": "Generator.use_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Use) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.binary": {"fullname": "sqlglot.generator.Generator.binary", "modulename": "sqlglot.generator", "qualname": "Generator.binary", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Binary, op: str) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.function_fallback_sql": {"fullname": "sqlglot.generator.Generator.function_fallback_sql", "modulename": "sqlglot.generator", "qualname": "Generator.function_fallback_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Func) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.func": {"fullname": "sqlglot.generator.Generator.func", "modulename": "sqlglot.generator", "qualname": "Generator.func", "kind": "function", "doc": "

\n", "signature": "(\tself,\tname: str,\t*args: Union[str, sqlglot.expressions.Expression, NoneType]) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.format_args": {"fullname": "sqlglot.generator.Generator.format_args", "modulename": "sqlglot.generator", "qualname": "Generator.format_args", "kind": "function", "doc": "

\n", "signature": "(self, *args: Union[str, sqlglot.expressions.Expression, NoneType]) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.text_width": {"fullname": "sqlglot.generator.Generator.text_width", "modulename": "sqlglot.generator", "qualname": "Generator.text_width", "kind": "function", "doc": "

\n", "signature": "(self, args: Iterable) -> int:", "funcdef": "def"}, "sqlglot.generator.Generator.format_time": {"fullname": "sqlglot.generator.Generator.format_time", "modulename": "sqlglot.generator", "qualname": "Generator.format_time", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Expression) -> Optional[str]:", "funcdef": "def"}, "sqlglot.generator.Generator.expressions": {"fullname": "sqlglot.generator.Generator.expressions", "modulename": "sqlglot.generator", "qualname": "Generator.expressions", "kind": "function", "doc": "

\n", "signature": "(\tself,\texpression: Optional[sqlglot.expressions.Expression] = None,\tkey: Optional[str] = None,\tsqls: Optional[List[str]] = None,\tflat: bool = False,\tindent: bool = True,\tsep: str = ', ',\tprefix: str = '') -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.op_expressions": {"fullname": "sqlglot.generator.Generator.op_expressions", "modulename": "sqlglot.generator", "qualname": "Generator.op_expressions", "kind": "function", "doc": "

\n", "signature": "(\tself,\top: str,\texpression: sqlglot.expressions.Expression,\tflat: bool = False) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.naked_property": {"fullname": "sqlglot.generator.Generator.naked_property", "modulename": "sqlglot.generator", "qualname": "Generator.naked_property", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Property) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.set_operation": {"fullname": "sqlglot.generator.Generator.set_operation", "modulename": "sqlglot.generator", "qualname": "Generator.set_operation", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Expression, op: str) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.tag_sql": {"fullname": "sqlglot.generator.Generator.tag_sql", "modulename": "sqlglot.generator", "qualname": "Generator.tag_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Tag) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.token_sql": {"fullname": "sqlglot.generator.Generator.token_sql", "modulename": "sqlglot.generator", "qualname": "Generator.token_sql", "kind": "function", "doc": "

\n", "signature": "(self, token_type: sqlglot.tokens.TokenType) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.userdefinedfunction_sql": {"fullname": "sqlglot.generator.Generator.userdefinedfunction_sql", "modulename": "sqlglot.generator", "qualname": "Generator.userdefinedfunction_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.UserDefinedFunction) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.joinhint_sql": {"fullname": "sqlglot.generator.Generator.joinhint_sql", "modulename": "sqlglot.generator", "qualname": "Generator.joinhint_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.JoinHint) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.kwarg_sql": {"fullname": "sqlglot.generator.Generator.kwarg_sql", "modulename": "sqlglot.generator", "qualname": "Generator.kwarg_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Kwarg) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.when_sql": {"fullname": "sqlglot.generator.Generator.when_sql", "modulename": "sqlglot.generator", "qualname": "Generator.when_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.When) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.merge_sql": {"fullname": "sqlglot.generator.Generator.merge_sql", "modulename": "sqlglot.generator", "qualname": "Generator.merge_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Merge) -> str:", "funcdef": "def"}, "sqlglot.generator.Generator.tochar_sql": {"fullname": "sqlglot.generator.Generator.tochar_sql", "modulename": "sqlglot.generator", "qualname": "Generator.tochar_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.ToChar) -> str:", "funcdef": "def"}, "sqlglot.helper": {"fullname": "sqlglot.helper", "modulename": "sqlglot.helper", "kind": "module", "doc": "

\n"}, "sqlglot.helper.AutoName": {"fullname": "sqlglot.helper.AutoName", "modulename": "sqlglot.helper", "qualname": "AutoName", "kind": "class", "doc": "

This is used for creating enum classes where auto() is the string form of the corresponding value's name.

\n", "bases": "enum.Enum"}, "sqlglot.helper.seq_get": {"fullname": "sqlglot.helper.seq_get", "modulename": "sqlglot.helper", "qualname": "seq_get", "kind": "function", "doc": "

Returns the value in seq at position index, or None if index is out of bounds.

\n", "signature": "(seq: Sequence[~T], index: int) -> Optional[~T]:", "funcdef": "def"}, "sqlglot.helper.ensure_list": {"fullname": "sqlglot.helper.ensure_list", "modulename": "sqlglot.helper", "qualname": "ensure_list", "kind": "function", "doc": "

Ensures that a value is a list, otherwise casts or wraps it into one.

\n\n
Arguments:
\n\n
    \n
  • value: the value of interest.
  • \n
\n\n
Returns:
\n\n
\n

The value cast as a list if it's a list or a tuple, or else the value wrapped in a list.

\n
\n", "signature": "(value):", "funcdef": "def"}, "sqlglot.helper.ensure_collection": {"fullname": "sqlglot.helper.ensure_collection", "modulename": "sqlglot.helper", "qualname": "ensure_collection", "kind": "function", "doc": "

Ensures that a value is a collection (excluding str and bytes), otherwise wraps it into a list.

\n\n
Arguments:
\n\n
    \n
  • value: the value of interest.
  • \n
\n\n
Returns:
\n\n
\n

The value if it's a collection, or else the value wrapped in a list.

\n
\n", "signature": "(value):", "funcdef": "def"}, "sqlglot.helper.csv": {"fullname": "sqlglot.helper.csv", "modulename": "sqlglot.helper", "qualname": "csv", "kind": "function", "doc": "

Formats any number of string arguments as CSV.

\n\n
Arguments:
\n\n
    \n
  • args: the string arguments to format.
  • \n
  • sep: the argument separator.
  • \n
\n\n
Returns:
\n\n
\n

The arguments formatted as a CSV string.

\n
\n", "signature": "(*args, sep: str = ', ') -> str:", "funcdef": "def"}, "sqlglot.helper.subclasses": {"fullname": "sqlglot.helper.subclasses", "modulename": "sqlglot.helper", "qualname": "subclasses", "kind": "function", "doc": "

Returns all subclasses for a collection of classes, possibly excluding some of them.

\n\n
Arguments:
\n\n
    \n
  • module_name: the name of the module to search for subclasses in.
  • \n
  • classes: class(es) we want to find the subclasses of.
  • \n
  • exclude: class(es) we want to exclude from the returned list.
  • \n
\n\n
Returns:
\n\n
\n

The target subclasses.

\n
\n", "signature": "(\tmodule_name: str,\tclasses: Union[Type, Tuple[Type, ...]],\texclude: Union[Type, Tuple[Type, ...]] = ()) -> List[Type]:", "funcdef": "def"}, "sqlglot.helper.apply_index_offset": {"fullname": "sqlglot.helper.apply_index_offset", "modulename": "sqlglot.helper", "qualname": "apply_index_offset", "kind": "function", "doc": "

Applies an offset to a given integer literal expression.

\n\n
Arguments:
\n\n
    \n
  • this: the target of the index
  • \n
  • expressions: the expression the offset will be applied to, wrapped in a list.
  • \n
  • offset: the offset that will be applied.
  • \n
\n\n
Returns:
\n\n
\n

The original expression with the offset applied to it, wrapped in a list. If the provided\n expressions argument contains more than one expressions, it's returned unaffected.

\n
\n", "signature": "(\tthis: sqlglot.expressions.Expression,\texpressions: List[Optional[~E]],\toffset: int) -> List[Optional[~E]]:", "funcdef": "def"}, "sqlglot.helper.camel_to_snake_case": {"fullname": "sqlglot.helper.camel_to_snake_case", "modulename": "sqlglot.helper", "qualname": "camel_to_snake_case", "kind": "function", "doc": "

Converts name from camelCase to snake_case and returns the result.

\n", "signature": "(name: str) -> str:", "funcdef": "def"}, "sqlglot.helper.while_changing": {"fullname": "sqlglot.helper.while_changing", "modulename": "sqlglot.helper", "qualname": "while_changing", "kind": "function", "doc": "

Applies a transformation to a given expression until a fix point is reached.

\n\n
Arguments:
\n\n
    \n
  • expression: the expression to be transformed.
  • \n
  • func: the transformation to be applied.
  • \n
\n\n
Returns:
\n\n
\n

The transformed expression.

\n
\n", "signature": "(\texpression: sqlglot.expressions.Expression,\tfunc: Callable[[sqlglot.expressions.Expression], ~E]) -> ~E:", "funcdef": "def"}, "sqlglot.helper.tsort": {"fullname": "sqlglot.helper.tsort", "modulename": "sqlglot.helper", "qualname": "tsort", "kind": "function", "doc": "

Sorts a given directed acyclic graph in topological order.

\n\n
Arguments:
\n\n
    \n
  • dag: the graph to be sorted.
  • \n
\n\n
Returns:
\n\n
\n

A list that contains all of the graph's nodes in topological order.

\n
\n", "signature": "(dag: Dict[~T, List[~T]]) -> List[~T]:", "funcdef": "def"}, "sqlglot.helper.open_file": {"fullname": "sqlglot.helper.open_file", "modulename": "sqlglot.helper", "qualname": "open_file", "kind": "function", "doc": "

Open a file that may be compressed as gzip and return it in universal newline mode.

\n", "signature": "(file_name: str) -> <class 'TextIO'>:", "funcdef": "def"}, "sqlglot.helper.csv_reader": {"fullname": "sqlglot.helper.csv_reader", "modulename": "sqlglot.helper", "qualname": "csv_reader", "kind": "function", "doc": "

Returns a csv reader given the expression READ_CSV(name, ['delimiter', '|', ...]).

\n\n
Arguments:
\n\n
    \n
  • read_csv: a ReadCSV function call
  • \n
\n\n
Yields:
\n\n
\n

A python csv reader.

\n
\n", "signature": "(read_csv: sqlglot.expressions.ReadCSV) -> Any:", "funcdef": "def"}, "sqlglot.helper.find_new_name": {"fullname": "sqlglot.helper.find_new_name", "modulename": "sqlglot.helper", "qualname": "find_new_name", "kind": "function", "doc": "

Searches for a new name.

\n\n
Arguments:
\n\n
    \n
  • taken: a collection of taken names.
  • \n
  • base: base name to alter.
  • \n
\n\n
Returns:
\n\n
\n

The new, available name.

\n
\n", "signature": "(taken: Collection[str], base: str) -> str:", "funcdef": "def"}, "sqlglot.helper.object_to_dict": {"fullname": "sqlglot.helper.object_to_dict", "modulename": "sqlglot.helper", "qualname": "object_to_dict", "kind": "function", "doc": "

Returns a dictionary created from an object's attributes.

\n", "signature": "(obj: Any, **kwargs) -> Dict:", "funcdef": "def"}, "sqlglot.helper.split_num_words": {"fullname": "sqlglot.helper.split_num_words", "modulename": "sqlglot.helper", "qualname": "split_num_words", "kind": "function", "doc": "

Perform a split on a value and return N words as a result with None used for words that don't exist.

\n\n
Arguments:
\n\n
    \n
  • value: the value to be split.
  • \n
  • sep: the value to use to split on.
  • \n
  • min_num_words: the minimum number of words that are going to be in the result.
  • \n
  • fill_from_start: indicates that if None values should be inserted at the start or end of the list.
  • \n
\n\n
Examples:
\n\n
\n
\n
>>> split_num_words("db.table", ".", 3)\n[None, 'db', 'table']\n>>> split_num_words("db.table", ".", 3, fill_from_start=False)\n['db', 'table', None]\n>>> split_num_words("db.table", ".", 1)\n['db', 'table']\n
\n
\n
\n\n
Returns:
\n\n
\n

The list of words returned by split, possibly augmented by a number of None values.

\n
\n", "signature": "(\tvalue: str,\tsep: str,\tmin_num_words: int,\tfill_from_start: bool = True) -> List[Optional[str]]:", "funcdef": "def"}, "sqlglot.helper.is_iterable": {"fullname": "sqlglot.helper.is_iterable", "modulename": "sqlglot.helper", "qualname": "is_iterable", "kind": "function", "doc": "

Checks if the value is an iterable, excluding the types str and bytes.

\n\n
Examples:
\n\n
\n
\n
>>> is_iterable([1,2])\nTrue\n>>> is_iterable("test")\nFalse\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • value: the value to check if it is an iterable.
  • \n
\n\n
Returns:
\n\n
\n

A bool value indicating if it is an iterable.

\n
\n", "signature": "(value: Any) -> bool:", "funcdef": "def"}, "sqlglot.helper.flatten": {"fullname": "sqlglot.helper.flatten", "modulename": "sqlglot.helper", "qualname": "flatten", "kind": "function", "doc": "

Flattens an iterable that can contain both iterable and non-iterable elements. Objects of\ntype str and bytes are not regarded as iterables.

\n\n
Examples:
\n\n
\n
\n
>>> list(flatten([[1, 2], 3, {4}, (5, "bla")]))\n[1, 2, 3, 4, 5, 'bla']\n>>> list(flatten([1, 2, 3]))\n[1, 2, 3]\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • values: the value to be flattened.
  • \n
\n\n
Yields:
\n\n
\n

Non-iterable elements in values.

\n
\n", "signature": "(values: Iterable[Union[Iterable[Any], Any]]) -> Iterator[Any]:", "funcdef": "def"}, "sqlglot.helper.count_params": {"fullname": "sqlglot.helper.count_params", "modulename": "sqlglot.helper", "qualname": "count_params", "kind": "function", "doc": "

Returns the number of formal parameters expected by a function, without counting \"self\"\nand \"cls\", in case of instance and class methods, respectively.

\n", "signature": "(function: Callable) -> int:", "funcdef": "def"}, "sqlglot.helper.dict_depth": {"fullname": "sqlglot.helper.dict_depth", "modulename": "sqlglot.helper", "qualname": "dict_depth", "kind": "function", "doc": "

Get the nesting depth of a dictionary.

\n\n
For example:
\n\n
\n
\n
>>> dict_depth(None)\n0\n>>> dict_depth({})\n1\n>>> dict_depth({"a": "b"})\n1\n>>> dict_depth({"a": {}})\n2\n>>> dict_depth({"a": {"b": {}}})\n3\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • d (dict): dictionary
  • \n
\n\n
Returns:
\n\n
\n

int: depth

\n
\n", "signature": "(d: Dict) -> int:", "funcdef": "def"}, "sqlglot.helper.first": {"fullname": "sqlglot.helper.first", "modulename": "sqlglot.helper", "qualname": "first", "kind": "function", "doc": "

Returns the first element from an iterable.

\n\n

Useful for sets.

\n", "signature": "(it: Iterable[~T]) -> ~T:", "funcdef": "def"}, "sqlglot.helper.should_identify": {"fullname": "sqlglot.helper.should_identify", "modulename": "sqlglot.helper", "qualname": "should_identify", "kind": "function", "doc": "

Checks if text should be identified given an identify option.

\n\n
Arguments:
\n\n
    \n
  • text: the text to check.
  • \n
  • identify: \"always\" | True - always returns true, \"safe\" - true if no upper case
  • \n
\n\n
Returns:
\n\n
\n

Whether or not a string should be identified.

\n
\n", "signature": "(text: str, identify: str | bool) -> bool:", "funcdef": "def"}, "sqlglot.lineage": {"fullname": "sqlglot.lineage", "modulename": "sqlglot.lineage", "kind": "module", "doc": "

\n"}, "sqlglot.lineage.Node": {"fullname": "sqlglot.lineage.Node", "modulename": "sqlglot.lineage", "qualname": "Node", "kind": "class", "doc": "

\n"}, "sqlglot.lineage.Node.__init__": {"fullname": "sqlglot.lineage.Node.__init__", "modulename": "sqlglot.lineage", "qualname": "Node.__init__", "kind": "function", "doc": "

\n", "signature": "(\tname: str,\texpression: sqlglot.expressions.Expression,\tsource: sqlglot.expressions.Expression,\tdownstream: List[sqlglot.lineage.Node] = <factory>,\talias: str = '')"}, "sqlglot.lineage.Node.walk": {"fullname": "sqlglot.lineage.Node.walk", "modulename": "sqlglot.lineage", "qualname": "Node.walk", "kind": "function", "doc": "

\n", "signature": "(self) -> Iterator[sqlglot.lineage.Node]:", "funcdef": "def"}, "sqlglot.lineage.Node.to_html": {"fullname": "sqlglot.lineage.Node.to_html", "modulename": "sqlglot.lineage", "qualname": "Node.to_html", "kind": "function", "doc": "

\n", "signature": "(self, **opts) -> sqlglot.lineage.LineageHTML:", "funcdef": "def"}, "sqlglot.lineage.lineage": {"fullname": "sqlglot.lineage.lineage", "modulename": "sqlglot.lineage", "qualname": "lineage", "kind": "function", "doc": "

Build the lineage graph for a column of a SQL query.

\n\n
Arguments:
\n\n
    \n
  • column: The column to build the lineage for.
  • \n
  • sql: The SQL string or expression.
  • \n
  • schema: The schema of tables.
  • \n
  • sources: A mapping of queries which will be used to continue building lineage.
  • \n
  • rules: Optimizer rules to apply, by default only qualifying tables and columns.
  • \n
  • dialect: The dialect of input SQL.
  • \n
\n\n
Returns:
\n\n
\n

A lineage node.

\n
\n", "signature": "(\tcolumn: str | sqlglot.expressions.Column,\tsql: str | sqlglot.expressions.Expression,\tschema: Union[Dict, sqlglot.schema.Schema, NoneType] = None,\tsources: Optional[Dict[str, str | sqlglot.expressions.Subqueryable]] = None,\trules: Sequence[Callable] = (<function qualify_tables at 0x7fac3cdc5630>, <function qualify_columns at 0x7fac3cdc4550>, <function expand_laterals at 0x7fac3cd8eb90>),\tdialect: Union[str, sqlglot.dialects.dialect.Dialect, Type[sqlglot.dialects.dialect.Dialect], NoneType] = None) -> sqlglot.lineage.Node:", "funcdef": "def"}, "sqlglot.lineage.LineageHTML": {"fullname": "sqlglot.lineage.LineageHTML", "modulename": "sqlglot.lineage", "qualname": "LineageHTML", "kind": "class", "doc": "

Node to HTML generator using vis.js.

\n\n

https://visjs.github.io/vis-network/docs/network/

\n"}, "sqlglot.lineage.LineageHTML.__init__": {"fullname": "sqlglot.lineage.LineageHTML.__init__", "modulename": "sqlglot.lineage", "qualname": "LineageHTML.__init__", "kind": "function", "doc": "

\n", "signature": "(\tnode: sqlglot.lineage.Node,\tdialect: Union[str, sqlglot.dialects.dialect.Dialect, Type[sqlglot.dialects.dialect.Dialect], NoneType] = None,\timports: bool = True,\t**opts: Any)"}, "sqlglot.optimizer": {"fullname": "sqlglot.optimizer", "modulename": "sqlglot.optimizer", "kind": "module", "doc": "

\n"}, "sqlglot.optimizer.annotate_types": {"fullname": "sqlglot.optimizer.annotate_types", "modulename": "sqlglot.optimizer.annotate_types", "kind": "module", "doc": "

\n"}, "sqlglot.optimizer.annotate_types.annotate_types": {"fullname": "sqlglot.optimizer.annotate_types.annotate_types", "modulename": "sqlglot.optimizer.annotate_types", "qualname": "annotate_types", "kind": "function", "doc": "

Recursively infer & annotate types in an expression syntax tree against a schema.\nAssumes that we've already executed the optimizer's qualify_columns step.

\n\n
Example:
\n\n
\n
\n
>>> import sqlglot\n>>> schema = {"y": {"cola": "SMALLINT"}}\n>>> sql = "SELECT x.cola + 2.5 AS cola FROM (SELECT y.cola AS cola FROM y AS y) AS x"\n>>> annotated_expr = annotate_types(sqlglot.parse_one(sql), schema=schema)\n>>> annotated_expr.expressions[0].type.this  # Get the type of "x.cola + 2.5 AS cola"\n<Type.DOUBLE: 'DOUBLE'>\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • expression (sqlglot.Expression): Expression to annotate.
  • \n
  • schema (dict|sqlglot.optimizer.Schema): Database schema.
  • \n
  • annotators (dict): Maps expression type to corresponding annotation function.
  • \n
  • coerces_to (dict): Maps expression type to set of types that it can be coerced into.
  • \n
\n\n
Returns:
\n\n
\n

sqlglot.Expression: expression annotated with types

\n
\n", "signature": "(expression, schema=None, annotators=None, coerces_to=None):", "funcdef": "def"}, "sqlglot.optimizer.annotate_types.TypeAnnotator": {"fullname": "sqlglot.optimizer.annotate_types.TypeAnnotator", "modulename": "sqlglot.optimizer.annotate_types", "qualname": "TypeAnnotator", "kind": "class", "doc": "

\n"}, "sqlglot.optimizer.annotate_types.TypeAnnotator.__init__": {"fullname": "sqlglot.optimizer.annotate_types.TypeAnnotator.__init__", "modulename": "sqlglot.optimizer.annotate_types", "qualname": "TypeAnnotator.__init__", "kind": "function", "doc": "

\n", "signature": "(schema=None, annotators=None, coerces_to=None)"}, "sqlglot.optimizer.annotate_types.TypeAnnotator.annotate": {"fullname": "sqlglot.optimizer.annotate_types.TypeAnnotator.annotate", "modulename": "sqlglot.optimizer.annotate_types", "qualname": "TypeAnnotator.annotate", "kind": "function", "doc": "

\n", "signature": "(self, expression):", "funcdef": "def"}, "sqlglot.optimizer.canonicalize": {"fullname": "sqlglot.optimizer.canonicalize", "modulename": "sqlglot.optimizer.canonicalize", "kind": "module", "doc": "

\n"}, "sqlglot.optimizer.canonicalize.canonicalize": {"fullname": "sqlglot.optimizer.canonicalize.canonicalize", "modulename": "sqlglot.optimizer.canonicalize", "qualname": "canonicalize", "kind": "function", "doc": "

Converts a sql expression into a standard form.

\n\n

This method relies on annotate_types because many of the\nconversions rely on type inference.

\n\n
Arguments:
\n\n
    \n
  • expression: The expression to canonicalize.
  • \n
  • identify: Whether or not to force identify identifier.
  • \n
\n", "signature": "(\texpression: sqlglot.expressions.Expression,\tidentify: str = 'safe') -> sqlglot.expressions.Expression:", "funcdef": "def"}, "sqlglot.optimizer.canonicalize.add_text_to_concat": {"fullname": "sqlglot.optimizer.canonicalize.add_text_to_concat", "modulename": "sqlglot.optimizer.canonicalize", "qualname": "add_text_to_concat", "kind": "function", "doc": "

\n", "signature": "(node: sqlglot.expressions.Expression) -> sqlglot.expressions.Expression:", "funcdef": "def"}, "sqlglot.optimizer.canonicalize.coerce_type": {"fullname": "sqlglot.optimizer.canonicalize.coerce_type", "modulename": "sqlglot.optimizer.canonicalize", "qualname": "coerce_type", "kind": "function", "doc": "

\n", "signature": "(node: sqlglot.expressions.Expression) -> sqlglot.expressions.Expression:", "funcdef": "def"}, "sqlglot.optimizer.canonicalize.remove_redundant_casts": {"fullname": "sqlglot.optimizer.canonicalize.remove_redundant_casts", "modulename": "sqlglot.optimizer.canonicalize", "qualname": "remove_redundant_casts", "kind": "function", "doc": "

\n", "signature": "(\texpression: sqlglot.expressions.Expression) -> sqlglot.expressions.Expression:", "funcdef": "def"}, "sqlglot.optimizer.canonicalize.ensure_bool_predicates": {"fullname": "sqlglot.optimizer.canonicalize.ensure_bool_predicates", "modulename": "sqlglot.optimizer.canonicalize", "qualname": "ensure_bool_predicates", "kind": "function", "doc": "

\n", "signature": "(\texpression: sqlglot.expressions.Expression) -> sqlglot.expressions.Expression:", "funcdef": "def"}, "sqlglot.optimizer.eliminate_ctes": {"fullname": "sqlglot.optimizer.eliminate_ctes", "modulename": "sqlglot.optimizer.eliminate_ctes", "kind": "module", "doc": "

\n"}, "sqlglot.optimizer.eliminate_ctes.eliminate_ctes": {"fullname": "sqlglot.optimizer.eliminate_ctes.eliminate_ctes", "modulename": "sqlglot.optimizer.eliminate_ctes", "qualname": "eliminate_ctes", "kind": "function", "doc": "

Remove unused CTEs from an expression.

\n\n
Example:
\n\n
\n
\n
>>> import sqlglot\n>>> sql = "WITH y AS (SELECT a FROM x) SELECT a FROM z"\n>>> expression = sqlglot.parse_one(sql)\n>>> eliminate_ctes(expression).sql()\n'SELECT a FROM z'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • expression (sqlglot.Expression): expression to optimize
  • \n
\n\n
Returns:
\n\n
\n

sqlglot.Expression: optimized expression

\n
\n", "signature": "(expression):", "funcdef": "def"}, "sqlglot.optimizer.eliminate_joins": {"fullname": "sqlglot.optimizer.eliminate_joins", "modulename": "sqlglot.optimizer.eliminate_joins", "kind": "module", "doc": "

\n"}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"fullname": "sqlglot.optimizer.eliminate_joins.eliminate_joins", "modulename": "sqlglot.optimizer.eliminate_joins", "qualname": "eliminate_joins", "kind": "function", "doc": "

Remove unused joins from an expression.

\n\n

This only removes joins when we know that the join condition doesn't produce duplicate rows.

\n\n
Example:
\n\n
\n
\n
>>> import sqlglot\n>>> sql = "SELECT x.a FROM x LEFT JOIN (SELECT DISTINCT y.b FROM y) AS y ON x.b = y.b"\n>>> expression = sqlglot.parse_one(sql)\n>>> eliminate_joins(expression).sql()\n'SELECT x.a FROM x'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • expression (sqlglot.Expression): expression to optimize
  • \n
\n\n
Returns:
\n\n
\n

sqlglot.Expression: optimized expression

\n
\n", "signature": "(expression):", "funcdef": "def"}, "sqlglot.optimizer.eliminate_joins.join_condition": {"fullname": "sqlglot.optimizer.eliminate_joins.join_condition", "modulename": "sqlglot.optimizer.eliminate_joins", "qualname": "join_condition", "kind": "function", "doc": "

Extract the join condition from a join expression.

\n\n
Arguments:
\n\n
    \n
  • join (exp.Join)
  • \n
\n\n
Returns:
\n\n
\n

tuple[list[str], list[str], exp.Expression]:\n Tuple of (source key, join key, remaining predicate)

\n
\n", "signature": "(join):", "funcdef": "def"}, "sqlglot.optimizer.eliminate_subqueries": {"fullname": "sqlglot.optimizer.eliminate_subqueries", "modulename": "sqlglot.optimizer.eliminate_subqueries", "kind": "module", "doc": "

\n"}, "sqlglot.optimizer.eliminate_subqueries.eliminate_subqueries": {"fullname": "sqlglot.optimizer.eliminate_subqueries.eliminate_subqueries", "modulename": "sqlglot.optimizer.eliminate_subqueries", "qualname": "eliminate_subqueries", "kind": "function", "doc": "

Rewrite derived tables as CTES, deduplicating if possible.

\n\n
Example:
\n\n
\n
\n
>>> import sqlglot\n>>> expression = sqlglot.parse_one("SELECT a FROM (SELECT * FROM x) AS y")\n>>> eliminate_subqueries(expression).sql()\n'WITH y AS (SELECT * FROM x) SELECT a FROM y AS y'\n
\n
\n
\n\n
This also deduplicates common subqueries:
\n\n
\n
\n
>>> expression = sqlglot.parse_one("SELECT a FROM (SELECT * FROM x) AS y JOIN (SELECT * FROM x) AS z")\n>>> eliminate_subqueries(expression).sql()\n'WITH y AS (SELECT * FROM x) SELECT a FROM y AS y JOIN y AS z'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • expression (sqlglot.Expression): expression
  • \n
\n\n
Returns:
\n\n
\n

sqlglot.Expression: expression

\n
\n", "signature": "(expression):", "funcdef": "def"}, "sqlglot.optimizer.expand_laterals": {"fullname": "sqlglot.optimizer.expand_laterals", "modulename": "sqlglot.optimizer.expand_laterals", "kind": "module", "doc": "

\n"}, "sqlglot.optimizer.expand_laterals.expand_laterals": {"fullname": "sqlglot.optimizer.expand_laterals.expand_laterals", "modulename": "sqlglot.optimizer.expand_laterals", "qualname": "expand_laterals", "kind": "function", "doc": "

Expand lateral column alias references.

\n\n

This assumes qualify_columns as already run.

\n\n
Example:
\n\n
\n
\n
>>> import sqlglot\n>>> sql = "SELECT x.a + 1 AS b, b + 1 AS c FROM x"\n>>> expression = sqlglot.parse_one(sql)\n>>> expand_laterals(expression).sql()\n'SELECT x.a + 1 AS b, x.a + 1 + 1 AS c FROM x'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • expression: expression to optimize
  • \n
\n\n
Returns:
\n\n
\n

optimized expression

\n
\n", "signature": "(\texpression: sqlglot.expressions.Expression) -> sqlglot.expressions.Expression:", "funcdef": "def"}, "sqlglot.optimizer.expand_multi_table_selects": {"fullname": "sqlglot.optimizer.expand_multi_table_selects", "modulename": "sqlglot.optimizer.expand_multi_table_selects", "kind": "module", "doc": "

\n"}, "sqlglot.optimizer.expand_multi_table_selects.expand_multi_table_selects": {"fullname": "sqlglot.optimizer.expand_multi_table_selects.expand_multi_table_selects", "modulename": "sqlglot.optimizer.expand_multi_table_selects", "qualname": "expand_multi_table_selects", "kind": "function", "doc": "

Replace multiple FROM expressions with JOINs.

\n\n
Example:
\n\n
\n
\n
>>> from sqlglot import parse_one\n>>> expand_multi_table_selects(parse_one("SELECT * FROM x, y")).sql()\n'SELECT * FROM x CROSS JOIN y'\n
\n
\n
\n", "signature": "(expression):", "funcdef": "def"}, "sqlglot.optimizer.isolate_table_selects": {"fullname": "sqlglot.optimizer.isolate_table_selects", "modulename": "sqlglot.optimizer.isolate_table_selects", "kind": "module", "doc": "

\n"}, "sqlglot.optimizer.isolate_table_selects.isolate_table_selects": {"fullname": "sqlglot.optimizer.isolate_table_selects.isolate_table_selects", "modulename": "sqlglot.optimizer.isolate_table_selects", "qualname": "isolate_table_selects", "kind": "function", "doc": "

\n", "signature": "(expression, schema=None):", "funcdef": "def"}, "sqlglot.optimizer.lower_identities": {"fullname": "sqlglot.optimizer.lower_identities", "modulename": "sqlglot.optimizer.lower_identities", "kind": "module", "doc": "

\n"}, "sqlglot.optimizer.lower_identities.lower_identities": {"fullname": "sqlglot.optimizer.lower_identities.lower_identities", "modulename": "sqlglot.optimizer.lower_identities", "qualname": "lower_identities", "kind": "function", "doc": "

Convert all unquoted identifiers to lower case.

\n\n

Assuming the schema is all lower case, this essentially makes identifiers case-insensitive.

\n\n
Example:
\n\n
\n
\n
>>> import sqlglot\n>>> expression = sqlglot.parse_one('SELECT Bar.A AS A FROM "Foo".Bar')\n>>> lower_identities(expression).sql()\n'SELECT bar.a AS A FROM "Foo".bar'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • expression (sqlglot.Expression): expression to quote
  • \n
\n\n
Returns:
\n\n
\n

sqlglot.Expression: quoted expression

\n
\n", "signature": "(expression):", "funcdef": "def"}, "sqlglot.optimizer.merge_subqueries": {"fullname": "sqlglot.optimizer.merge_subqueries", "modulename": "sqlglot.optimizer.merge_subqueries", "kind": "module", "doc": "

\n"}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"fullname": "sqlglot.optimizer.merge_subqueries.merge_subqueries", "modulename": "sqlglot.optimizer.merge_subqueries", "qualname": "merge_subqueries", "kind": "function", "doc": "

Rewrite sqlglot AST to merge derived tables into the outer query.

\n\n

This also merges CTEs if they are selected from only once.

\n\n
Example:
\n\n
\n
\n
>>> import sqlglot\n>>> expression = sqlglot.parse_one("SELECT a FROM (SELECT x.a FROM x) JOIN y")\n>>> merge_subqueries(expression).sql()\n'SELECT x.a FROM x JOIN y'\n
\n
\n
\n\n

If leave_tables_isolated is True, this will not merge inner queries into outer\nqueries if it would result in multiple table selects in a single query:

\n\n
\n
\n
\n

expression = sqlglot.parse_one(\"SELECT a FROM (SELECT x.a FROM x) JOIN y\")\n merge_subqueries(expression, leave_tables_isolated=True).sql()\n 'SELECT a FROM (SELECT x.a FROM x) JOIN y'

\n
\n
\n
\n\n

Inspired by https://dev.mysql.com/doc/refman/8.0/en/derived-table-optimization.html

\n\n
Arguments:
\n\n
    \n
  • expression (sqlglot.Expression): expression to optimize
  • \n
  • leave_tables_isolated (bool):
  • \n
\n\n
Returns:
\n\n
\n

sqlglot.Expression: optimized expression

\n
\n", "signature": "(expression, leave_tables_isolated=False):", "funcdef": "def"}, "sqlglot.optimizer.merge_subqueries.merge_ctes": {"fullname": "sqlglot.optimizer.merge_subqueries.merge_ctes", "modulename": "sqlglot.optimizer.merge_subqueries", "qualname": "merge_ctes", "kind": "function", "doc": "

\n", "signature": "(expression, leave_tables_isolated=False):", "funcdef": "def"}, "sqlglot.optimizer.merge_subqueries.merge_derived_tables": {"fullname": "sqlglot.optimizer.merge_subqueries.merge_derived_tables", "modulename": "sqlglot.optimizer.merge_subqueries", "qualname": "merge_derived_tables", "kind": "function", "doc": "

\n", "signature": "(expression, leave_tables_isolated=False):", "funcdef": "def"}, "sqlglot.optimizer.normalize": {"fullname": "sqlglot.optimizer.normalize", "modulename": "sqlglot.optimizer.normalize", "kind": "module", "doc": "

\n"}, "sqlglot.optimizer.normalize.normalize": {"fullname": "sqlglot.optimizer.normalize.normalize", "modulename": "sqlglot.optimizer.normalize", "qualname": "normalize", "kind": "function", "doc": "

Rewrite sqlglot AST into conjunctive normal form or disjunctive normal form.

\n\n
Example:
\n\n
\n
\n
>>> import sqlglot\n>>> expression = sqlglot.parse_one("(x AND y) OR z")\n>>> normalize(expression, dnf=False).sql()\n'(x OR z) AND (y OR z)'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • expression: expression to normalize
  • \n
  • dnf: rewrite in disjunctive normal form instead.
  • \n
  • max_distance (int): the maximal estimated distance from cnf/dnf to attempt conversion
  • \n
\n\n
Returns:
\n\n
\n

sqlglot.Expression: normalized expression

\n
\n", "signature": "(\texpression: sqlglot.expressions.Expression,\tdnf: bool = False,\tmax_distance: int = 128):", "funcdef": "def"}, "sqlglot.optimizer.normalize.normalized": {"fullname": "sqlglot.optimizer.normalize.normalized", "modulename": "sqlglot.optimizer.normalize", "qualname": "normalized", "kind": "function", "doc": "

\n", "signature": "(expression, dnf=False):", "funcdef": "def"}, "sqlglot.optimizer.normalize.normalization_distance": {"fullname": "sqlglot.optimizer.normalize.normalization_distance", "modulename": "sqlglot.optimizer.normalize", "qualname": "normalization_distance", "kind": "function", "doc": "

The difference in the number of predicates between the current expression and the normalized form.

\n\n

This is used as an estimate of the cost of the conversion which is exponential in complexity.

\n\n
Example:
\n\n
\n
\n
>>> import sqlglot\n>>> expression = sqlglot.parse_one("(a AND b) OR (c AND d)")\n>>> normalization_distance(expression)\n4\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • expression (sqlglot.Expression): expression to compute distance
  • \n
  • dnf (bool): compute to dnf distance instead
  • \n
\n\n
Returns:
\n\n
\n

int: difference

\n
\n", "signature": "(expression, dnf=False):", "funcdef": "def"}, "sqlglot.optimizer.normalize.distributive_law": {"fullname": "sqlglot.optimizer.normalize.distributive_law", "modulename": "sqlglot.optimizer.normalize", "qualname": "distributive_law", "kind": "function", "doc": "

x OR (y AND z) -> (x OR y) AND (x OR z)\n(x AND y) OR (y AND z) -> (x OR y) AND (x OR z) AND (y OR y) AND (y OR z)

\n", "signature": "(expression, dnf, max_distance, cache=None):", "funcdef": "def"}, "sqlglot.optimizer.optimize_joins": {"fullname": "sqlglot.optimizer.optimize_joins", "modulename": "sqlglot.optimizer.optimize_joins", "kind": "module", "doc": "

\n"}, "sqlglot.optimizer.optimize_joins.optimize_joins": {"fullname": "sqlglot.optimizer.optimize_joins.optimize_joins", "modulename": "sqlglot.optimizer.optimize_joins", "qualname": "optimize_joins", "kind": "function", "doc": "

Removes cross joins if possible and reorder joins based on predicate dependencies.

\n\n
Example:
\n\n
\n
\n
>>> from sqlglot import parse_one\n>>> optimize_joins(parse_one("SELECT * FROM x CROSS JOIN y JOIN z ON x.a = z.a AND y.a = z.a")).sql()\n'SELECT * FROM x JOIN z ON x.a = z.a AND TRUE JOIN y ON y.a = z.a'\n
\n
\n
\n", "signature": "(expression):", "funcdef": "def"}, "sqlglot.optimizer.optimize_joins.reorder_joins": {"fullname": "sqlglot.optimizer.optimize_joins.reorder_joins", "modulename": "sqlglot.optimizer.optimize_joins", "qualname": "reorder_joins", "kind": "function", "doc": "

Reorder joins by topological sort order based on predicate references.

\n", "signature": "(expression):", "funcdef": "def"}, "sqlglot.optimizer.optimize_joins.normalize": {"fullname": "sqlglot.optimizer.optimize_joins.normalize", "modulename": "sqlglot.optimizer.optimize_joins", "qualname": "normalize", "kind": "function", "doc": "

Remove INNER and OUTER from joins as they are optional.

\n", "signature": "(expression):", "funcdef": "def"}, "sqlglot.optimizer.optimize_joins.other_table_names": {"fullname": "sqlglot.optimizer.optimize_joins.other_table_names", "modulename": "sqlglot.optimizer.optimize_joins", "qualname": "other_table_names", "kind": "function", "doc": "

\n", "signature": "(join, exclude):", "funcdef": "def"}, "sqlglot.optimizer.optimizer": {"fullname": "sqlglot.optimizer.optimizer", "modulename": "sqlglot.optimizer.optimizer", "kind": "module", "doc": "

\n"}, "sqlglot.optimizer.optimizer.optimize": {"fullname": "sqlglot.optimizer.optimizer.optimize", "modulename": "sqlglot.optimizer.optimizer", "qualname": "optimize", "kind": "function", "doc": "

Rewrite a sqlglot AST into an optimized form.

\n\n
Arguments:
\n\n
    \n
  • expression: expression to optimize
  • \n
  • schema: database schema.\nThis can either be an instance of sqlglot.optimizer.Schema or a mapping in one of\nthe following forms:\n 1. {table: {col: type}}\n 2. {db: {table: {col: type}}}\n 3. {catalog: {db: {table: {col: type}}}}\nIf no schema is provided then the default schema defined at sqlgot.schema will be used
  • \n
  • db: specify the default database, as might be set by a USE DATABASE db statement
  • \n
  • catalog: specify the default catalog, as might be set by a USE CATALOG c statement
  • \n
  • dialect: The dialect to parse the sql string.
  • \n
  • rules: sequence of optimizer rules to use.\nMany of the rules require tables and columns to be qualified.\nDo not remove qualify_tables or qualify_columns from the sequence of rules unless you know\nwhat you're doing!
  • \n
  • *kwargs: If a rule has a keyword argument with a same name in *kwargs, it will be passed in.
  • \n
\n\n
Returns:
\n\n
\n

sqlglot.Expression: optimized expression

\n
\n", "signature": "(\texpression: str | sqlglot.expressions.Expression,\tschema: Union[dict, sqlglot.schema.Schema, NoneType] = None,\tdb: Optional[str] = None,\tcatalog: Optional[str] = None,\tdialect: Union[str, sqlglot.dialects.dialect.Dialect, Type[sqlglot.dialects.dialect.Dialect], NoneType] = None,\trules: Sequence[Callable] = (<function lower_identities at 0x7fac3cd8eef0>, <function qualify_tables at 0x7fac3cdc5630>, <function isolate_table_selects at 0x7fac3cd8edd0>, <function qualify_columns at 0x7fac3cdc4550>, <function expand_laterals at 0x7fac3cd8eb90>, <function pushdown_projections at 0x7fac3cdc5000>, <function validate_qualify_columns at 0x7fac3cdc45e0>, <function normalize at 0x7fac3cd8c9d0>, <function unnest_subqueries at 0x7fac3cdc5750>, <function expand_multi_table_selects at 0x7fac3cd8ed40>, <function pushdown_predicates at 0x7fac3cdc40d0>, <function optimize_joins at 0x7fac3cd8fc70>, <function eliminate_subqueries at 0x7fac3cd8e7a0>, <function merge_subqueries at 0x7fac3cd8f1c0>, <function eliminate_joins at 0x7fac3cd8c8b0>, <function eliminate_ctes at 0x7fac3cd8c790>, <function annotate_types at 0x7fac3cd5cdc0>, <function canonicalize at 0x7fac3cd8c1f0>, <function simplify at 0x7fac3cd8caf0>),\t**kwargs):", "funcdef": "def"}, "sqlglot.optimizer.pushdown_predicates": {"fullname": "sqlglot.optimizer.pushdown_predicates", "modulename": "sqlglot.optimizer.pushdown_predicates", "kind": "module", "doc": "

\n"}, "sqlglot.optimizer.pushdown_predicates.pushdown_predicates": {"fullname": "sqlglot.optimizer.pushdown_predicates.pushdown_predicates", "modulename": "sqlglot.optimizer.pushdown_predicates", "qualname": "pushdown_predicates", "kind": "function", "doc": "

Rewrite sqlglot AST to pushdown predicates in FROMS and JOINS

\n\n
Example:
\n\n
\n
\n
>>> import sqlglot\n>>> sql = "SELECT * FROM (SELECT * FROM x AS x) AS y WHERE y.a = 1"\n>>> expression = sqlglot.parse_one(sql)\n>>> pushdown_predicates(expression).sql()\n'SELECT * FROM (SELECT * FROM x AS x WHERE y.a = 1) AS y WHERE TRUE'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • expression (sqlglot.Expression): expression to optimize
  • \n
\n\n
Returns:
\n\n
\n

sqlglot.Expression: optimized expression

\n
\n", "signature": "(expression):", "funcdef": "def"}, "sqlglot.optimizer.pushdown_predicates.pushdown": {"fullname": "sqlglot.optimizer.pushdown_predicates.pushdown", "modulename": "sqlglot.optimizer.pushdown_predicates", "qualname": "pushdown", "kind": "function", "doc": "

\n", "signature": "(condition, sources, scope_ref_count):", "funcdef": "def"}, "sqlglot.optimizer.pushdown_predicates.pushdown_cnf": {"fullname": "sqlglot.optimizer.pushdown_predicates.pushdown_cnf", "modulename": "sqlglot.optimizer.pushdown_predicates", "qualname": "pushdown_cnf", "kind": "function", "doc": "

If the predicates are in CNF like form, we can simply replace each block in the parent.

\n", "signature": "(predicates, scope, scope_ref_count):", "funcdef": "def"}, "sqlglot.optimizer.pushdown_predicates.pushdown_dnf": {"fullname": "sqlglot.optimizer.pushdown_predicates.pushdown_dnf", "modulename": "sqlglot.optimizer.pushdown_predicates", "qualname": "pushdown_dnf", "kind": "function", "doc": "

If the predicates are in DNF form, we can only push down conditions that are in all blocks.\nAdditionally, we can't remove predicates from their original form.

\n", "signature": "(predicates, scope, scope_ref_count):", "funcdef": "def"}, "sqlglot.optimizer.pushdown_predicates.nodes_for_predicate": {"fullname": "sqlglot.optimizer.pushdown_predicates.nodes_for_predicate", "modulename": "sqlglot.optimizer.pushdown_predicates", "qualname": "nodes_for_predicate", "kind": "function", "doc": "

\n", "signature": "(predicate, sources, scope_ref_count):", "funcdef": "def"}, "sqlglot.optimizer.pushdown_predicates.replace_aliases": {"fullname": "sqlglot.optimizer.pushdown_predicates.replace_aliases", "modulename": "sqlglot.optimizer.pushdown_predicates", "qualname": "replace_aliases", "kind": "function", "doc": "

\n", "signature": "(source, predicate):", "funcdef": "def"}, "sqlglot.optimizer.pushdown_projections": {"fullname": "sqlglot.optimizer.pushdown_projections", "modulename": "sqlglot.optimizer.pushdown_projections", "kind": "module", "doc": "

\n"}, "sqlglot.optimizer.pushdown_projections.DEFAULT_SELECTION": {"fullname": "sqlglot.optimizer.pushdown_projections.DEFAULT_SELECTION", "modulename": "sqlglot.optimizer.pushdown_projections", "qualname": "DEFAULT_SELECTION", "kind": "function", "doc": "

\n", "signature": "():", "funcdef": "def"}, "sqlglot.optimizer.pushdown_projections.pushdown_projections": {"fullname": "sqlglot.optimizer.pushdown_projections.pushdown_projections", "modulename": "sqlglot.optimizer.pushdown_projections", "qualname": "pushdown_projections", "kind": "function", "doc": "

Rewrite sqlglot AST to remove unused columns projections.

\n\n
Example:
\n\n
\n
\n
>>> import sqlglot\n>>> sql = "SELECT y.a AS a FROM (SELECT x.a AS a, x.b AS b FROM x) AS y"\n>>> expression = sqlglot.parse_one(sql)\n>>> pushdown_projections(expression).sql()\n'SELECT y.a AS a FROM (SELECT x.a AS a FROM x) AS y'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • expression (sqlglot.Expression): expression to optimize
  • \n
  • remove_unused_selections (bool): remove selects that are unused
  • \n
\n\n
Returns:
\n\n
\n

sqlglot.Expression: optimized expression

\n
\n", "signature": "(expression, schema=None, remove_unused_selections=True):", "funcdef": "def"}, "sqlglot.optimizer.qualify_columns": {"fullname": "sqlglot.optimizer.qualify_columns", "modulename": "sqlglot.optimizer.qualify_columns", "kind": "module", "doc": "

\n"}, "sqlglot.optimizer.qualify_columns.qualify_columns": {"fullname": "sqlglot.optimizer.qualify_columns.qualify_columns", "modulename": "sqlglot.optimizer.qualify_columns", "qualname": "qualify_columns", "kind": "function", "doc": "

Rewrite sqlglot AST to have fully qualified columns.

\n\n
Example:
\n\n
\n
\n
>>> import sqlglot\n>>> schema = {"tbl": {"col": "INT"}}\n>>> expression = sqlglot.parse_one("SELECT col FROM tbl")\n>>> qualify_columns(expression, schema).sql()\n'SELECT tbl.col AS col FROM tbl'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • expression (sqlglot.Expression): expression to qualify
  • \n
  • schema (dict|sqlglot.optimizer.Schema): Database schema
  • \n
\n\n
Returns:
\n\n
\n

sqlglot.Expression: qualified expression

\n
\n", "signature": "(expression, schema):", "funcdef": "def"}, "sqlglot.optimizer.qualify_columns.validate_qualify_columns": {"fullname": "sqlglot.optimizer.qualify_columns.validate_qualify_columns", "modulename": "sqlglot.optimizer.qualify_columns", "qualname": "validate_qualify_columns", "kind": "function", "doc": "

Raise an OptimizeError if any columns aren't qualified

\n", "signature": "(expression):", "funcdef": "def"}, "sqlglot.optimizer.qualify_columns.Resolver": {"fullname": "sqlglot.optimizer.qualify_columns.Resolver", "modulename": "sqlglot.optimizer.qualify_columns", "qualname": "Resolver", "kind": "class", "doc": "

Helper for resolving columns.

\n\n

This is a class so we can lazily load some things and easily share them across functions.

\n"}, "sqlglot.optimizer.qualify_columns.Resolver.__init__": {"fullname": "sqlglot.optimizer.qualify_columns.Resolver.__init__", "modulename": "sqlglot.optimizer.qualify_columns", "qualname": "Resolver.__init__", "kind": "function", "doc": "

\n", "signature": "(scope, schema)"}, "sqlglot.optimizer.qualify_columns.Resolver.get_table": {"fullname": "sqlglot.optimizer.qualify_columns.Resolver.get_table", "modulename": "sqlglot.optimizer.qualify_columns", "qualname": "Resolver.get_table", "kind": "function", "doc": "

Get the table for a column name.

\n\n
Arguments:
\n\n
    \n
  • column_name: The column name to find the table for.
  • \n
\n\n
Returns:
\n\n
\n

The table name if it can be found/inferred.

\n
\n", "signature": "(self, column_name: str) -> Optional[sqlglot.expressions.Identifier]:", "funcdef": "def"}, "sqlglot.optimizer.qualify_columns.Resolver.all_columns": {"fullname": "sqlglot.optimizer.qualify_columns.Resolver.all_columns", "modulename": "sqlglot.optimizer.qualify_columns", "qualname": "Resolver.all_columns", "kind": "variable", "doc": "

All available columns of all sources in this scope

\n"}, "sqlglot.optimizer.qualify_columns.Resolver.get_source_columns": {"fullname": "sqlglot.optimizer.qualify_columns.Resolver.get_source_columns", "modulename": "sqlglot.optimizer.qualify_columns", "qualname": "Resolver.get_source_columns", "kind": "function", "doc": "

Resolve the source columns for a given source name

\n", "signature": "(self, name, only_visible=False):", "funcdef": "def"}, "sqlglot.optimizer.qualify_tables": {"fullname": "sqlglot.optimizer.qualify_tables", "modulename": "sqlglot.optimizer.qualify_tables", "kind": "module", "doc": "

\n"}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"fullname": "sqlglot.optimizer.qualify_tables.qualify_tables", "modulename": "sqlglot.optimizer.qualify_tables", "qualname": "qualify_tables", "kind": "function", "doc": "

Rewrite sqlglot AST to have fully qualified tables.

\n\n
Example:
\n\n
\n
\n
>>> import sqlglot\n>>> expression = sqlglot.parse_one("SELECT 1 FROM tbl")\n>>> qualify_tables(expression, db="db").sql()\n'SELECT 1 FROM db.tbl AS tbl'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • expression (sqlglot.Expression): expression to qualify
  • \n
  • db (str): Database name
  • \n
  • catalog (str): Catalog name
  • \n
  • schema: A schema to populate
  • \n
\n\n
Returns:
\n\n
\n

sqlglot.Expression: qualified expression

\n
\n", "signature": "(expression, db=None, catalog=None, schema=None):", "funcdef": "def"}, "sqlglot.optimizer.scope": {"fullname": "sqlglot.optimizer.scope", "modulename": "sqlglot.optimizer.scope", "kind": "module", "doc": "

\n"}, "sqlglot.optimizer.scope.ScopeType": {"fullname": "sqlglot.optimizer.scope.ScopeType", "modulename": "sqlglot.optimizer.scope", "qualname": "ScopeType", "kind": "class", "doc": "

An enumeration.

\n", "bases": "enum.Enum"}, "sqlglot.optimizer.scope.ScopeType.ROOT": {"fullname": "sqlglot.optimizer.scope.ScopeType.ROOT", "modulename": "sqlglot.optimizer.scope", "qualname": "ScopeType.ROOT", "kind": "variable", "doc": "

\n", "default_value": "<ScopeType.ROOT: 1>"}, "sqlglot.optimizer.scope.ScopeType.SUBQUERY": {"fullname": "sqlglot.optimizer.scope.ScopeType.SUBQUERY", "modulename": "sqlglot.optimizer.scope", "qualname": "ScopeType.SUBQUERY", "kind": "variable", "doc": "

\n", "default_value": "<ScopeType.SUBQUERY: 2>"}, "sqlglot.optimizer.scope.ScopeType.DERIVED_TABLE": {"fullname": "sqlglot.optimizer.scope.ScopeType.DERIVED_TABLE", "modulename": "sqlglot.optimizer.scope", "qualname": "ScopeType.DERIVED_TABLE", "kind": "variable", "doc": "

\n", "default_value": "<ScopeType.DERIVED_TABLE: 3>"}, "sqlglot.optimizer.scope.ScopeType.CTE": {"fullname": "sqlglot.optimizer.scope.ScopeType.CTE", "modulename": "sqlglot.optimizer.scope", "qualname": "ScopeType.CTE", "kind": "variable", "doc": "

\n", "default_value": "<ScopeType.CTE: 4>"}, "sqlglot.optimizer.scope.ScopeType.UNION": {"fullname": "sqlglot.optimizer.scope.ScopeType.UNION", "modulename": "sqlglot.optimizer.scope", "qualname": "ScopeType.UNION", "kind": "variable", "doc": "

\n", "default_value": "<ScopeType.UNION: 5>"}, "sqlglot.optimizer.scope.ScopeType.UDTF": {"fullname": "sqlglot.optimizer.scope.ScopeType.UDTF", "modulename": "sqlglot.optimizer.scope", "qualname": "ScopeType.UDTF", "kind": "variable", "doc": "

\n", "default_value": "<ScopeType.UDTF: 6>"}, "sqlglot.optimizer.scope.Scope": {"fullname": "sqlglot.optimizer.scope.Scope", "modulename": "sqlglot.optimizer.scope", "qualname": "Scope", "kind": "class", "doc": "

Selection scope.

\n\n
Attributes:
\n\n
    \n
  • expression (exp.Select|exp.Union): Root expression of this scope
  • \n
  • sources (dict[str, exp.Table|Scope]): Mapping of source name to either\na Table expression or another Scope instance. For example:\n SELECT * FROM x {\"x\": Table(this=\"x\")}\n SELECT * FROM x AS y {\"y\": Table(this=\"x\")}\n SELECT * FROM (SELECT ...) AS y {\"y\": Scope(...)}
  • \n
  • lateral_sources (dict[str, exp.Table|Scope]): Sources from laterals\nFor example:\n SELECT c FROM x LATERAL VIEW EXPLODE (a) AS c;\nThe LATERAL VIEW EXPLODE gets x as a source.
  • \n
  • outer_column_list (list[str]): If this is a derived table or CTE, and the outer query\ndefines a column list of it's alias of this scope, this is that list of columns.\nFor example:\n SELECT * FROM (SELECT ...) AS y(col1, col2)\nThe inner query would have [\"col1\", \"col2\"] for its outer_column_list
  • \n
  • parent (Scope): Parent scope
  • \n
  • scope_type (ScopeType): Type of this scope, relative to it's parent
  • \n
  • subquery_scopes (list[Scope]): List of all child scopes for subqueries
  • \n
  • cte_scopes (list[Scope]): List of all child scopes for CTEs
  • \n
  • derived_table_scopes (list[Scope]): List of all child scopes for derived_tables
  • \n
  • udtf_scopes (list[Scope]): List of all child scopes for user defined tabular functions
  • \n
  • table_scopes (list[Scope]): derived_table_scopes + udtf_scopes, in the order that they're defined
  • \n
  • union_scopes (list[Scope, Scope]): If this Scope is for a Union expression, this will be\na list of the left and right child scopes.
  • \n
\n"}, "sqlglot.optimizer.scope.Scope.__init__": {"fullname": "sqlglot.optimizer.scope.Scope.__init__", "modulename": "sqlglot.optimizer.scope", "qualname": "Scope.__init__", "kind": "function", "doc": "

\n", "signature": "(\texpression,\tsources=None,\touter_column_list=None,\tparent=None,\tscope_type=<ScopeType.ROOT: 1>,\tlateral_sources=None)"}, "sqlglot.optimizer.scope.Scope.clear_cache": {"fullname": "sqlglot.optimizer.scope.Scope.clear_cache", "modulename": "sqlglot.optimizer.scope", "qualname": "Scope.clear_cache", "kind": "function", "doc": "

\n", "signature": "(self):", "funcdef": "def"}, "sqlglot.optimizer.scope.Scope.branch": {"fullname": "sqlglot.optimizer.scope.Scope.branch", "modulename": "sqlglot.optimizer.scope", "qualname": "Scope.branch", "kind": "function", "doc": "

Branch from the current scope to a new, inner scope

\n", "signature": "(self, expression, scope_type, chain_sources=None, **kwargs):", "funcdef": "def"}, "sqlglot.optimizer.scope.Scope.walk": {"fullname": "sqlglot.optimizer.scope.Scope.walk", "modulename": "sqlglot.optimizer.scope", "qualname": "Scope.walk", "kind": "function", "doc": "

\n", "signature": "(self, bfs=True):", "funcdef": "def"}, "sqlglot.optimizer.scope.Scope.find": {"fullname": "sqlglot.optimizer.scope.Scope.find", "modulename": "sqlglot.optimizer.scope", "qualname": "Scope.find", "kind": "function", "doc": "

Returns the first node in this scope which matches at least one of the specified types.

\n\n

This does NOT traverse into subscopes.

\n\n
Arguments:
\n\n
    \n
  • expression_types (type): the expression type(s) to match.
  • \n
  • bfs (bool): True to use breadth-first search, False to use depth-first.
  • \n
\n\n
Returns:
\n\n
\n

exp.Expression: the node which matches the criteria or None if no node matching\n the criteria was found.

\n
\n", "signature": "(self, *expression_types, bfs=True):", "funcdef": "def"}, "sqlglot.optimizer.scope.Scope.find_all": {"fullname": "sqlglot.optimizer.scope.Scope.find_all", "modulename": "sqlglot.optimizer.scope", "qualname": "Scope.find_all", "kind": "function", "doc": "

Returns a generator object which visits all nodes in this scope and only yields those that\nmatch at least one of the specified expression types.

\n\n

This does NOT traverse into subscopes.

\n\n
Arguments:
\n\n
    \n
  • expression_types (type): the expression type(s) to match.
  • \n
  • bfs (bool): True to use breadth-first search, False to use depth-first.
  • \n
\n\n
Yields:
\n\n
\n

exp.Expression: nodes

\n
\n", "signature": "(self, *expression_types, bfs=True):", "funcdef": "def"}, "sqlglot.optimizer.scope.Scope.replace": {"fullname": "sqlglot.optimizer.scope.Scope.replace", "modulename": "sqlglot.optimizer.scope", "qualname": "Scope.replace", "kind": "function", "doc": "

Replace old with new.

\n\n

This can be used instead of exp.Expression.replace to ensure the Scope is kept up-to-date.

\n\n
Arguments:
\n\n
    \n
  • old (exp.Expression): old node
  • \n
  • new (exp.Expression): new node
  • \n
\n", "signature": "(self, old, new):", "funcdef": "def"}, "sqlglot.optimizer.scope.Scope.tables": {"fullname": "sqlglot.optimizer.scope.Scope.tables", "modulename": "sqlglot.optimizer.scope", "qualname": "Scope.tables", "kind": "variable", "doc": "

List of tables in this scope.

\n\n
Returns:
\n\n
\n

list[exp.Table]: tables

\n
\n"}, "sqlglot.optimizer.scope.Scope.ctes": {"fullname": "sqlglot.optimizer.scope.Scope.ctes", "modulename": "sqlglot.optimizer.scope", "qualname": "Scope.ctes", "kind": "variable", "doc": "

List of CTEs in this scope.

\n\n
Returns:
\n\n
\n

list[exp.CTE]: ctes

\n
\n"}, "sqlglot.optimizer.scope.Scope.derived_tables": {"fullname": "sqlglot.optimizer.scope.Scope.derived_tables", "modulename": "sqlglot.optimizer.scope", "qualname": "Scope.derived_tables", "kind": "variable", "doc": "

List of derived tables in this scope.

\n\n
For example:
\n\n
\n

SELECT * FROM (SELECT ...) <- that's a derived table

\n
\n\n
Returns:
\n\n
\n

list[exp.Subquery]: derived tables

\n
\n"}, "sqlglot.optimizer.scope.Scope.udtfs": {"fullname": "sqlglot.optimizer.scope.Scope.udtfs", "modulename": "sqlglot.optimizer.scope", "qualname": "Scope.udtfs", "kind": "variable", "doc": "

List of \"User Defined Tabular Functions\" in this scope.

\n\n
Returns:
\n\n
\n

list[exp.UDTF]: UDTFs

\n
\n"}, "sqlglot.optimizer.scope.Scope.subqueries": {"fullname": "sqlglot.optimizer.scope.Scope.subqueries", "modulename": "sqlglot.optimizer.scope", "qualname": "Scope.subqueries", "kind": "variable", "doc": "

List of subqueries in this scope.

\n\n
For example:
\n\n
\n

SELECT * FROM x WHERE a IN (SELECT ...) <- that's a subquery

\n
\n\n
Returns:
\n\n
\n

list[exp.Subqueryable]: subqueries

\n
\n"}, "sqlglot.optimizer.scope.Scope.columns": {"fullname": "sqlglot.optimizer.scope.Scope.columns", "modulename": "sqlglot.optimizer.scope", "qualname": "Scope.columns", "kind": "variable", "doc": "

List of columns in this scope.

\n\n
Returns:
\n\n
\n

list[exp.Column]: Column instances in this scope, plus any\n Columns that reference this scope from correlated subqueries.

\n
\n"}, "sqlglot.optimizer.scope.Scope.selected_sources": {"fullname": "sqlglot.optimizer.scope.Scope.selected_sources", "modulename": "sqlglot.optimizer.scope", "qualname": "Scope.selected_sources", "kind": "variable", "doc": "

Mapping of nodes and sources that are actually selected from in this scope.

\n\n

That is, all tables in a schema are selectable at any point. But a\ntable only becomes a selected source if it's included in a FROM or JOIN clause.

\n\n
Returns:
\n\n
\n

dict[str, (exp.Table|exp.Select, exp.Table|Scope)]: selected sources and nodes

\n
\n"}, "sqlglot.optimizer.scope.Scope.cte_sources": {"fullname": "sqlglot.optimizer.scope.Scope.cte_sources", "modulename": "sqlglot.optimizer.scope", "qualname": "Scope.cte_sources", "kind": "variable", "doc": "

Sources that are CTEs.

\n\n
Returns:
\n\n
\n

dict[str, Scope]: Mapping of source alias to Scope

\n
\n"}, "sqlglot.optimizer.scope.Scope.selects": {"fullname": "sqlglot.optimizer.scope.Scope.selects", "modulename": "sqlglot.optimizer.scope", "qualname": "Scope.selects", "kind": "variable", "doc": "

Select expressions of this scope.

\n\n

For example, for the following expression:\n SELECT 1 as a, 2 as b FROM x

\n\n

The outputs are the \"1 as a\" and \"2 as b\" expressions.

\n\n
Returns:
\n\n
\n

list[exp.Expression]: expressions

\n
\n"}, "sqlglot.optimizer.scope.Scope.external_columns": {"fullname": "sqlglot.optimizer.scope.Scope.external_columns", "modulename": "sqlglot.optimizer.scope", "qualname": "Scope.external_columns", "kind": "variable", "doc": "

Columns that appear to reference sources in outer scopes.

\n\n
Returns:
\n\n
\n

list[exp.Column]: Column instances that don't reference\n sources in the current scope.

\n
\n"}, "sqlglot.optimizer.scope.Scope.unqualified_columns": {"fullname": "sqlglot.optimizer.scope.Scope.unqualified_columns", "modulename": "sqlglot.optimizer.scope", "qualname": "Scope.unqualified_columns", "kind": "variable", "doc": "

Unqualified columns in the current scope.

\n\n
Returns:
\n\n
\n

list[exp.Column]: Unqualified columns

\n
\n"}, "sqlglot.optimizer.scope.Scope.join_hints": {"fullname": "sqlglot.optimizer.scope.Scope.join_hints", "modulename": "sqlglot.optimizer.scope", "qualname": "Scope.join_hints", "kind": "variable", "doc": "

Hints that exist in the scope that reference tables

\n\n
Returns:
\n\n
\n

list[exp.JoinHint]: Join hints that are referenced within the scope

\n
\n"}, "sqlglot.optimizer.scope.Scope.source_columns": {"fullname": "sqlglot.optimizer.scope.Scope.source_columns", "modulename": "sqlglot.optimizer.scope", "qualname": "Scope.source_columns", "kind": "function", "doc": "

Get all columns in the current scope for a particular source.

\n\n
Arguments:
\n\n
    \n
  • source_name (str): Name of the source
  • \n
\n\n
Returns:
\n\n
\n

list[exp.Column]: Column instances that reference source_name

\n
\n", "signature": "(self, source_name):", "funcdef": "def"}, "sqlglot.optimizer.scope.Scope.is_subquery": {"fullname": "sqlglot.optimizer.scope.Scope.is_subquery", "modulename": "sqlglot.optimizer.scope", "qualname": "Scope.is_subquery", "kind": "variable", "doc": "

Determine if this scope is a subquery

\n"}, "sqlglot.optimizer.scope.Scope.is_derived_table": {"fullname": "sqlglot.optimizer.scope.Scope.is_derived_table", "modulename": "sqlglot.optimizer.scope", "qualname": "Scope.is_derived_table", "kind": "variable", "doc": "

Determine if this scope is a derived table

\n"}, "sqlglot.optimizer.scope.Scope.is_union": {"fullname": "sqlglot.optimizer.scope.Scope.is_union", "modulename": "sqlglot.optimizer.scope", "qualname": "Scope.is_union", "kind": "variable", "doc": "

Determine if this scope is a union

\n"}, "sqlglot.optimizer.scope.Scope.is_cte": {"fullname": "sqlglot.optimizer.scope.Scope.is_cte", "modulename": "sqlglot.optimizer.scope", "qualname": "Scope.is_cte", "kind": "variable", "doc": "

Determine if this scope is a common table expression

\n"}, "sqlglot.optimizer.scope.Scope.is_root": {"fullname": "sqlglot.optimizer.scope.Scope.is_root", "modulename": "sqlglot.optimizer.scope", "qualname": "Scope.is_root", "kind": "variable", "doc": "

Determine if this is the root scope

\n"}, "sqlglot.optimizer.scope.Scope.is_udtf": {"fullname": "sqlglot.optimizer.scope.Scope.is_udtf", "modulename": "sqlglot.optimizer.scope", "qualname": "Scope.is_udtf", "kind": "variable", "doc": "

Determine if this scope is a UDTF (User Defined Table Function)

\n"}, "sqlglot.optimizer.scope.Scope.is_correlated_subquery": {"fullname": "sqlglot.optimizer.scope.Scope.is_correlated_subquery", "modulename": "sqlglot.optimizer.scope", "qualname": "Scope.is_correlated_subquery", "kind": "variable", "doc": "

Determine if this scope is a correlated subquery

\n"}, "sqlglot.optimizer.scope.Scope.rename_source": {"fullname": "sqlglot.optimizer.scope.Scope.rename_source", "modulename": "sqlglot.optimizer.scope", "qualname": "Scope.rename_source", "kind": "function", "doc": "

Rename a source in this scope

\n", "signature": "(self, old_name, new_name):", "funcdef": "def"}, "sqlglot.optimizer.scope.Scope.add_source": {"fullname": "sqlglot.optimizer.scope.Scope.add_source", "modulename": "sqlglot.optimizer.scope", "qualname": "Scope.add_source", "kind": "function", "doc": "

Add a source to this scope

\n", "signature": "(self, name, source):", "funcdef": "def"}, "sqlglot.optimizer.scope.Scope.remove_source": {"fullname": "sqlglot.optimizer.scope.Scope.remove_source", "modulename": "sqlglot.optimizer.scope", "qualname": "Scope.remove_source", "kind": "function", "doc": "

Remove a source from this scope

\n", "signature": "(self, name):", "funcdef": "def"}, "sqlglot.optimizer.scope.Scope.traverse": {"fullname": "sqlglot.optimizer.scope.Scope.traverse", "modulename": "sqlglot.optimizer.scope", "qualname": "Scope.traverse", "kind": "function", "doc": "

Traverse the scope tree from this node.

\n\n
Yields:
\n\n
\n

Scope: scope instances in depth-first-search post-order

\n
\n", "signature": "(self):", "funcdef": "def"}, "sqlglot.optimizer.scope.Scope.ref_count": {"fullname": "sqlglot.optimizer.scope.Scope.ref_count", "modulename": "sqlglot.optimizer.scope", "qualname": "Scope.ref_count", "kind": "function", "doc": "

Count the number of times each scope in this tree is referenced.

\n\n
Returns:
\n\n
\n

dict[int, int]: Mapping of Scope instance ID to reference count

\n
\n", "signature": "(self):", "funcdef": "def"}, "sqlglot.optimizer.scope.traverse_scope": {"fullname": "sqlglot.optimizer.scope.traverse_scope", "modulename": "sqlglot.optimizer.scope", "qualname": "traverse_scope", "kind": "function", "doc": "

Traverse an expression by it's \"scopes\".

\n\n

\"Scope\" represents the current context of a Select statement.

\n\n

This is helpful for optimizing queries, where we need more information than\nthe expression tree itself. For example, we might care about the source\nnames within a subquery. Returns a list because a generator could result in\nincomplete properties which is confusing.

\n\n
Examples:
\n\n
\n
\n
>>> import sqlglot\n>>> expression = sqlglot.parse_one("SELECT a FROM (SELECT a FROM x) AS y")\n>>> scopes = traverse_scope(expression)\n>>> scopes[0].expression.sql(), list(scopes[0].sources)\n('SELECT a FROM x', ['x'])\n>>> scopes[1].expression.sql(), list(scopes[1].sources)\n('SELECT a FROM (SELECT a FROM x) AS y', ['y'])\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • expression (exp.Expression): expression to traverse
  • \n
\n\n
Returns:
\n\n
\n

list[Scope]: scope instances

\n
\n", "signature": "(expression):", "funcdef": "def"}, "sqlglot.optimizer.scope.build_scope": {"fullname": "sqlglot.optimizer.scope.build_scope", "modulename": "sqlglot.optimizer.scope", "qualname": "build_scope", "kind": "function", "doc": "

Build a scope tree.

\n\n
Arguments:
\n\n
    \n
  • expression (exp.Expression): expression to build the scope tree for
  • \n
\n\n
Returns:
\n\n
\n

Scope: root scope

\n
\n", "signature": "(expression):", "funcdef": "def"}, "sqlglot.optimizer.scope.walk_in_scope": {"fullname": "sqlglot.optimizer.scope.walk_in_scope", "modulename": "sqlglot.optimizer.scope", "qualname": "walk_in_scope", "kind": "function", "doc": "

Returns a generator object which visits all nodes in the syntrax tree, stopping at\nnodes that start child scopes.

\n\n
Arguments:
\n\n
    \n
  • expression (exp.Expression):
  • \n
  • bfs (bool): if set to True the BFS traversal order will be applied,\notherwise the DFS traversal will be used instead.
  • \n
\n\n
Yields:
\n\n
\n

tuple[exp.Expression, Optional[exp.Expression], str]: node, parent, arg key

\n
\n", "signature": "(expression, bfs=True):", "funcdef": "def"}, "sqlglot.optimizer.simplify": {"fullname": "sqlglot.optimizer.simplify", "modulename": "sqlglot.optimizer.simplify", "kind": "module", "doc": "

\n"}, "sqlglot.optimizer.simplify.simplify": {"fullname": "sqlglot.optimizer.simplify.simplify", "modulename": "sqlglot.optimizer.simplify", "qualname": "simplify", "kind": "function", "doc": "

Rewrite sqlglot AST to simplify expressions.

\n\n
Example:
\n\n
\n
\n
>>> import sqlglot\n>>> expression = sqlglot.parse_one("TRUE AND TRUE")\n>>> simplify(expression).sql()\n'TRUE'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • expression (sqlglot.Expression): expression to simplify
  • \n
\n\n
Returns:
\n\n
\n

sqlglot.Expression: simplified expression

\n
\n", "signature": "(expression):", "funcdef": "def"}, "sqlglot.optimizer.simplify.rewrite_between": {"fullname": "sqlglot.optimizer.simplify.rewrite_between", "modulename": "sqlglot.optimizer.simplify", "qualname": "rewrite_between", "kind": "function", "doc": "

Rewrite x between y and z to x >= y AND x <= z.

\n\n

This is done because comparison simplification is only done on lt/lte/gt/gte.

\n", "signature": "(\texpression: sqlglot.expressions.Expression) -> sqlglot.expressions.Expression:", "funcdef": "def"}, "sqlglot.optimizer.simplify.simplify_not": {"fullname": "sqlglot.optimizer.simplify.simplify_not", "modulename": "sqlglot.optimizer.simplify", "qualname": "simplify_not", "kind": "function", "doc": "

Demorgan's Law\nNOT (x OR y) -> NOT x AND NOT y\nNOT (x AND y) -> NOT x OR NOT y

\n", "signature": "(expression):", "funcdef": "def"}, "sqlglot.optimizer.simplify.flatten": {"fullname": "sqlglot.optimizer.simplify.flatten", "modulename": "sqlglot.optimizer.simplify", "qualname": "flatten", "kind": "function", "doc": "

A AND (B AND C) -> A AND B AND C\nA OR (B OR C) -> A OR B OR C

\n", "signature": "(expression):", "funcdef": "def"}, "sqlglot.optimizer.simplify.simplify_connectors": {"fullname": "sqlglot.optimizer.simplify.simplify_connectors", "modulename": "sqlglot.optimizer.simplify", "qualname": "simplify_connectors", "kind": "function", "doc": "

\n", "signature": "(expression, root=True):", "funcdef": "def"}, "sqlglot.optimizer.simplify.remove_compliments": {"fullname": "sqlglot.optimizer.simplify.remove_compliments", "modulename": "sqlglot.optimizer.simplify", "qualname": "remove_compliments", "kind": "function", "doc": "

Removing compliments.

\n\n

A AND NOT A -> FALSE\nA OR NOT A -> TRUE

\n", "signature": "(expression, root=True):", "funcdef": "def"}, "sqlglot.optimizer.simplify.uniq_sort": {"fullname": "sqlglot.optimizer.simplify.uniq_sort", "modulename": "sqlglot.optimizer.simplify", "qualname": "uniq_sort", "kind": "function", "doc": "

Uniq and sort a connector.

\n\n

C AND A AND B AND B -> A AND B AND C

\n", "signature": "(expression, cache=None, root=True):", "funcdef": "def"}, "sqlglot.optimizer.simplify.absorb_and_eliminate": {"fullname": "sqlglot.optimizer.simplify.absorb_and_eliminate", "modulename": "sqlglot.optimizer.simplify", "qualname": "absorb_and_eliminate", "kind": "function", "doc": "

absorption:\n A AND (A OR B) -> A\n A OR (A AND B) -> A\n A AND (NOT A OR B) -> A AND B\n A OR (NOT A AND B) -> A OR B\nelimination:\n (A AND B) OR (A AND NOT B) -> A\n (A OR B) AND (A OR NOT B) -> A

\n", "signature": "(expression, root=True):", "funcdef": "def"}, "sqlglot.optimizer.simplify.simplify_literals": {"fullname": "sqlglot.optimizer.simplify.simplify_literals", "modulename": "sqlglot.optimizer.simplify", "qualname": "simplify_literals", "kind": "function", "doc": "

\n", "signature": "(expression, root=True):", "funcdef": "def"}, "sqlglot.optimizer.simplify.simplify_parens": {"fullname": "sqlglot.optimizer.simplify.simplify_parens", "modulename": "sqlglot.optimizer.simplify", "qualname": "simplify_parens", "kind": "function", "doc": "

\n", "signature": "(expression):", "funcdef": "def"}, "sqlglot.optimizer.simplify.remove_where_true": {"fullname": "sqlglot.optimizer.simplify.remove_where_true", "modulename": "sqlglot.optimizer.simplify", "qualname": "remove_where_true", "kind": "function", "doc": "

\n", "signature": "(expression):", "funcdef": "def"}, "sqlglot.optimizer.simplify.always_true": {"fullname": "sqlglot.optimizer.simplify.always_true", "modulename": "sqlglot.optimizer.simplify", "qualname": "always_true", "kind": "function", "doc": "

\n", "signature": "(expression):", "funcdef": "def"}, "sqlglot.optimizer.simplify.is_complement": {"fullname": "sqlglot.optimizer.simplify.is_complement", "modulename": "sqlglot.optimizer.simplify", "qualname": "is_complement", "kind": "function", "doc": "

\n", "signature": "(a, b):", "funcdef": "def"}, "sqlglot.optimizer.simplify.is_false": {"fullname": "sqlglot.optimizer.simplify.is_false", "modulename": "sqlglot.optimizer.simplify", "qualname": "is_false", "kind": "function", "doc": "

\n", "signature": "(a: sqlglot.expressions.Expression) -> bool:", "funcdef": "def"}, "sqlglot.optimizer.simplify.is_null": {"fullname": "sqlglot.optimizer.simplify.is_null", "modulename": "sqlglot.optimizer.simplify", "qualname": "is_null", "kind": "function", "doc": "

\n", "signature": "(a: sqlglot.expressions.Expression) -> bool:", "funcdef": "def"}, "sqlglot.optimizer.simplify.eval_boolean": {"fullname": "sqlglot.optimizer.simplify.eval_boolean", "modulename": "sqlglot.optimizer.simplify", "qualname": "eval_boolean", "kind": "function", "doc": "

\n", "signature": "(expression, a, b):", "funcdef": "def"}, "sqlglot.optimizer.simplify.extract_date": {"fullname": "sqlglot.optimizer.simplify.extract_date", "modulename": "sqlglot.optimizer.simplify", "qualname": "extract_date", "kind": "function", "doc": "

\n", "signature": "(cast):", "funcdef": "def"}, "sqlglot.optimizer.simplify.extract_interval": {"fullname": "sqlglot.optimizer.simplify.extract_interval", "modulename": "sqlglot.optimizer.simplify", "qualname": "extract_interval", "kind": "function", "doc": "

\n", "signature": "(interval):", "funcdef": "def"}, "sqlglot.optimizer.simplify.date_literal": {"fullname": "sqlglot.optimizer.simplify.date_literal", "modulename": "sqlglot.optimizer.simplify", "qualname": "date_literal", "kind": "function", "doc": "

\n", "signature": "(date):", "funcdef": "def"}, "sqlglot.optimizer.simplify.boolean_literal": {"fullname": "sqlglot.optimizer.simplify.boolean_literal", "modulename": "sqlglot.optimizer.simplify", "qualname": "boolean_literal", "kind": "function", "doc": "

\n", "signature": "(condition):", "funcdef": "def"}, "sqlglot.optimizer.unnest_subqueries": {"fullname": "sqlglot.optimizer.unnest_subqueries", "modulename": "sqlglot.optimizer.unnest_subqueries", "kind": "module", "doc": "

\n"}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"fullname": "sqlglot.optimizer.unnest_subqueries.unnest_subqueries", "modulename": "sqlglot.optimizer.unnest_subqueries", "qualname": "unnest_subqueries", "kind": "function", "doc": "

Rewrite sqlglot AST to convert some predicates with subqueries into joins.

\n\n

Convert scalar subqueries into cross joins.\nConvert correlated or vectorized subqueries into a group by so it is not a many to many left join.

\n\n
Example:
\n\n
\n
\n
>>> import sqlglot\n>>> expression = sqlglot.parse_one("SELECT * FROM x AS x WHERE (SELECT y.a AS a FROM y AS y WHERE x.a = y.a) = 1 ")\n>>> unnest_subqueries(expression).sql()\n'SELECT * FROM x AS x LEFT JOIN (SELECT y.a AS a FROM y AS y WHERE TRUE GROUP BY y.a) AS _u_0 ON x.a = _u_0.a WHERE _u_0.a = 1'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • expression (sqlglot.Expression): expression to unnest
  • \n
\n\n
Returns:
\n\n
\n

sqlglot.Expression: unnested expression

\n
\n", "signature": "(expression):", "funcdef": "def"}, "sqlglot.optimizer.unnest_subqueries.unnest": {"fullname": "sqlglot.optimizer.unnest_subqueries.unnest", "modulename": "sqlglot.optimizer.unnest_subqueries", "qualname": "unnest", "kind": "function", "doc": "

\n", "signature": "(select, parent_select, sequence):", "funcdef": "def"}, "sqlglot.optimizer.unnest_subqueries.decorrelate": {"fullname": "sqlglot.optimizer.unnest_subqueries.decorrelate", "modulename": "sqlglot.optimizer.unnest_subqueries", "qualname": "decorrelate", "kind": "function", "doc": "

\n", "signature": "(select, parent_select, external_columns, sequence):", "funcdef": "def"}, "sqlglot.parser": {"fullname": "sqlglot.parser", "modulename": "sqlglot.parser", "kind": "module", "doc": "

\n"}, "sqlglot.parser.parse_var_map": {"fullname": "sqlglot.parser.parse_var_map", "modulename": "sqlglot.parser", "qualname": "parse_var_map", "kind": "function", "doc": "

\n", "signature": "(args: Sequence) -> sqlglot.expressions.Expression:", "funcdef": "def"}, "sqlglot.parser.parse_like": {"fullname": "sqlglot.parser.parse_like", "modulename": "sqlglot.parser", "qualname": "parse_like", "kind": "function", "doc": "

\n", "signature": "(args):", "funcdef": "def"}, "sqlglot.parser.binary_range_parser": {"fullname": "sqlglot.parser.binary_range_parser", "modulename": "sqlglot.parser", "qualname": "binary_range_parser", "kind": "function", "doc": "

\n", "signature": "(\texpr_type: Type[sqlglot.expressions.Expression]) -> Callable[[sqlglot.parser.Parser, Optional[sqlglot.expressions.Expression]], Optional[sqlglot.expressions.Expression]]:", "funcdef": "def"}, "sqlglot.parser.Parser": {"fullname": "sqlglot.parser.Parser", "modulename": "sqlglot.parser", "qualname": "Parser", "kind": "class", "doc": "

Parser consumes a list of tokens produced by the sqlglot.tokens.Tokenizer and produces\na parsed syntax tree.

\n\n
Arguments:
\n\n
    \n
  • error_level: the desired error level.\nDefault: ErrorLevel.RAISE
  • \n
  • error_message_context: determines the amount of context to capture from a\nquery string when displaying the error message (in number of characters).\nDefault: 50.
  • \n
  • index_offset: Index offset for arrays eg ARRAY[0] vs ARRAY[1] as the head of a list.\nDefault: 0
  • \n
  • alias_post_tablesample: If the table alias comes after tablesample.\nDefault: False
  • \n
  • max_errors: Maximum number of error messages to include in a raised ParseError.\nThis is only relevant if error_level is ErrorLevel.RAISE.\nDefault: 3
  • \n
  • null_ordering: Indicates the default null ordering method to use if not explicitly set.\nOptions are \"nulls_are_small\", \"nulls_are_large\", \"nulls_are_last\".\nDefault: \"nulls_are_small\"
  • \n
\n"}, "sqlglot.parser.Parser.__init__": {"fullname": "sqlglot.parser.Parser.__init__", "modulename": "sqlglot.parser", "qualname": "Parser.__init__", "kind": "function", "doc": "

\n", "signature": "(\terror_level: Optional[sqlglot.errors.ErrorLevel] = None,\terror_message_context: int = 100,\tindex_offset: int = 0,\tunnest_column_only: bool = False,\talias_post_tablesample: bool = False,\tmax_errors: int = 3,\tnull_ordering: Optional[str] = None)"}, "sqlglot.parser.Parser.reset": {"fullname": "sqlglot.parser.Parser.reset", "modulename": "sqlglot.parser", "qualname": "Parser.reset", "kind": "function", "doc": "

\n", "signature": "(self):", "funcdef": "def"}, "sqlglot.parser.Parser.parse": {"fullname": "sqlglot.parser.Parser.parse", "modulename": "sqlglot.parser", "qualname": "Parser.parse", "kind": "function", "doc": "

Parses a list of tokens and returns a list of syntax trees, one tree\nper parsed SQL statement.

\n\n
Arguments:
\n\n
    \n
  • raw_tokens: the list of tokens.
  • \n
  • sql: the original SQL string, used to produce helpful debug messages.
  • \n
\n\n
Returns:
\n\n
\n

The list of syntax trees.

\n
\n", "signature": "(\tself,\traw_tokens: List[sqlglot.tokens.Token],\tsql: Optional[str] = None) -> List[Optional[sqlglot.expressions.Expression]]:", "funcdef": "def"}, "sqlglot.parser.Parser.parse_into": {"fullname": "sqlglot.parser.Parser.parse_into", "modulename": "sqlglot.parser", "qualname": "Parser.parse_into", "kind": "function", "doc": "

Parses a list of tokens into a given Expression type. If a collection of Expression\ntypes is given instead, this method will try to parse the token list into each one\nof them, stopping at the first for which the parsing succeeds.

\n\n
Arguments:
\n\n
    \n
  • expression_types: the expression type(s) to try and parse the token list into.
  • \n
  • raw_tokens: the list of tokens.
  • \n
  • sql: the original SQL string, used to produce helpful debug messages.
  • \n
\n\n
Returns:
\n\n
\n

The target Expression.

\n
\n", "signature": "(\tself,\texpression_types: Union[str, Type[sqlglot.expressions.Expression], Collection[Union[str, Type[sqlglot.expressions.Expression]]]],\traw_tokens: List[sqlglot.tokens.Token],\tsql: Optional[str] = None) -> List[Optional[sqlglot.expressions.Expression]]:", "funcdef": "def"}, "sqlglot.parser.Parser.check_errors": {"fullname": "sqlglot.parser.Parser.check_errors", "modulename": "sqlglot.parser", "qualname": "Parser.check_errors", "kind": "function", "doc": "

Logs or raises any found errors, depending on the chosen error level setting.

\n", "signature": "(self) -> None:", "funcdef": "def"}, "sqlglot.parser.Parser.raise_error": {"fullname": "sqlglot.parser.Parser.raise_error", "modulename": "sqlglot.parser", "qualname": "Parser.raise_error", "kind": "function", "doc": "

Appends an error in the list of recorded errors or raises it, depending on the chosen\nerror level setting.

\n", "signature": "(self, message: str, token: Optional[sqlglot.tokens.Token] = None) -> None:", "funcdef": "def"}, "sqlglot.parser.Parser.expression": {"fullname": "sqlglot.parser.Parser.expression", "modulename": "sqlglot.parser", "qualname": "Parser.expression", "kind": "function", "doc": "

Creates a new, validated Expression.

\n\n
Arguments:
\n\n
    \n
  • exp_class: the expression class to instantiate.
  • \n
  • comments: an optional list of comments to attach to the expression.
  • \n
  • kwargs: the arguments to set for the expression along with their respective values.
  • \n
\n\n
Returns:
\n\n
\n

The target expression.

\n
\n", "signature": "(\tself,\texp_class: Type[~E],\tcomments: Optional[List[str]] = None,\t**kwargs) -> ~E:", "funcdef": "def"}, "sqlglot.parser.Parser.validate_expression": {"fullname": "sqlglot.parser.Parser.validate_expression", "modulename": "sqlglot.parser", "qualname": "Parser.validate_expression", "kind": "function", "doc": "

Validates an already instantiated expression, making sure that all its mandatory arguments\nare set.

\n\n
Arguments:
\n\n
    \n
  • expression: the expression to validate.
  • \n
  • args: an optional list of items that was used to instantiate the expression, if it's a Func.
  • \n
\n", "signature": "(\tself,\texpression: sqlglot.expressions.Expression,\targs: Optional[List] = None) -> None:", "funcdef": "def"}, "sqlglot.planner": {"fullname": "sqlglot.planner", "modulename": "sqlglot.planner", "kind": "module", "doc": "

\n"}, "sqlglot.planner.Plan": {"fullname": "sqlglot.planner.Plan", "modulename": "sqlglot.planner", "qualname": "Plan", "kind": "class", "doc": "

\n"}, "sqlglot.planner.Plan.__init__": {"fullname": "sqlglot.planner.Plan.__init__", "modulename": "sqlglot.planner", "qualname": "Plan.__init__", "kind": "function", "doc": "

\n", "signature": "(expression: sqlglot.expressions.Expression)"}, "sqlglot.planner.Step": {"fullname": "sqlglot.planner.Step", "modulename": "sqlglot.planner", "qualname": "Step", "kind": "class", "doc": "

\n"}, "sqlglot.planner.Step.from_expression": {"fullname": "sqlglot.planner.Step.from_expression", "modulename": "sqlglot.planner", "qualname": "Step.from_expression", "kind": "function", "doc": "

Builds a DAG of Steps from a SQL expression so that it's easier to execute in an engine.\nNote: the expression's tables and subqueries must be aliased for this method to work. For\nexample, given the following expression:

\n\n

SELECT\n x.a,\n SUM(x.b)\nFROM x AS x\nJOIN y AS y\n ON x.a = y.a\nGROUP BY x.a

\n\n

the following DAG is produced (the expression IDs might differ per execution):

\n\n
    \n
  • Aggregate: x (4347984624)\nContext:\n Aggregations:\n - SUM(x.b)\n Group:\n - x.a\nProjections:\n
      \n
    • x.a
    • \n
    • \"x\".\"\"\nDependencies:\n
        \n
      • Join: x (4347985296)\nContext:\ny:\nOn: x.a = y.a\nProjections:\nDependencies:
      • \n
    • \n
    • Scan: x (4347983136)\nContext:\n Source: x AS x\nProjections:
    • \n
    • Scan: y (4343416624)\nContext:\n Source: y AS y\nProjections:
    • \n
  • \n
\n\n
Arguments:
\n\n
    \n
  • expression: the expression to build the DAG from.
  • \n
  • ctes: a dictionary that maps CTEs to their corresponding Step DAG by name.
  • \n
\n\n
Returns:
\n\n
\n

A Step DAG corresponding to expression.

\n
\n", "signature": "(\tcls,\texpression: sqlglot.expressions.Expression,\tctes: Optional[Dict[str, sqlglot.planner.Step]] = None) -> sqlglot.planner.Step:", "funcdef": "def"}, "sqlglot.planner.Step.add_dependency": {"fullname": "sqlglot.planner.Step.add_dependency", "modulename": "sqlglot.planner", "qualname": "Step.add_dependency", "kind": "function", "doc": "

\n", "signature": "(self, dependency: sqlglot.planner.Step) -> None:", "funcdef": "def"}, "sqlglot.planner.Step.to_s": {"fullname": "sqlglot.planner.Step.to_s", "modulename": "sqlglot.planner", "qualname": "Step.to_s", "kind": "function", "doc": "

\n", "signature": "(self, level: int = 0) -> str:", "funcdef": "def"}, "sqlglot.planner.Scan": {"fullname": "sqlglot.planner.Scan", "modulename": "sqlglot.planner", "qualname": "Scan", "kind": "class", "doc": "

\n", "bases": "Step"}, "sqlglot.planner.Scan.from_expression": {"fullname": "sqlglot.planner.Scan.from_expression", "modulename": "sqlglot.planner", "qualname": "Scan.from_expression", "kind": "function", "doc": "

Builds a DAG of Steps from a SQL expression so that it's easier to execute in an engine.\nNote: the expression's tables and subqueries must be aliased for this method to work. For\nexample, given the following expression:

\n\n

SELECT\n x.a,\n SUM(x.b)\nFROM x AS x\nJOIN y AS y\n ON x.a = y.a\nGROUP BY x.a

\n\n

the following DAG is produced (the expression IDs might differ per execution):

\n\n
    \n
  • Aggregate: x (4347984624)\nContext:\n Aggregations:\n - SUM(x.b)\n Group:\n - x.a\nProjections:\n
      \n
    • x.a
    • \n
    • \"x\".\"\"\nDependencies:\n
        \n
      • Join: x (4347985296)\nContext:\ny:\nOn: x.a = y.a\nProjections:\nDependencies:
      • \n
    • \n
    • Scan: x (4347983136)\nContext:\n Source: x AS x\nProjections:
    • \n
    • Scan: y (4343416624)\nContext:\n Source: y AS y\nProjections:
    • \n
  • \n
\n\n
Arguments:
\n\n
    \n
  • expression: the expression to build the DAG from.
  • \n
  • ctes: a dictionary that maps CTEs to their corresponding Step DAG by name.
  • \n
\n\n
Returns:
\n\n
\n

A Step DAG corresponding to expression.

\n
\n", "signature": "(\tcls,\texpression: sqlglot.expressions.Expression,\tctes: Optional[Dict[str, sqlglot.planner.Step]] = None) -> sqlglot.planner.Step:", "funcdef": "def"}, "sqlglot.planner.Join": {"fullname": "sqlglot.planner.Join", "modulename": "sqlglot.planner", "qualname": "Join", "kind": "class", "doc": "

\n", "bases": "Step"}, "sqlglot.planner.Join.from_joins": {"fullname": "sqlglot.planner.Join.from_joins", "modulename": "sqlglot.planner", "qualname": "Join.from_joins", "kind": "function", "doc": "

\n", "signature": "(\tcls,\tjoins: Iterable[sqlglot.expressions.Join],\tctes: Optional[Dict[str, sqlglot.planner.Step]] = None) -> sqlglot.planner.Step:", "funcdef": "def"}, "sqlglot.planner.Aggregate": {"fullname": "sqlglot.planner.Aggregate", "modulename": "sqlglot.planner", "qualname": "Aggregate", "kind": "class", "doc": "

\n", "bases": "Step"}, "sqlglot.planner.Sort": {"fullname": "sqlglot.planner.Sort", "modulename": "sqlglot.planner", "qualname": "Sort", "kind": "class", "doc": "

\n", "bases": "Step"}, "sqlglot.planner.SetOperation": {"fullname": "sqlglot.planner.SetOperation", "modulename": "sqlglot.planner", "qualname": "SetOperation", "kind": "class", "doc": "

\n", "bases": "Step"}, "sqlglot.planner.SetOperation.__init__": {"fullname": "sqlglot.planner.SetOperation.__init__", "modulename": "sqlglot.planner", "qualname": "SetOperation.__init__", "kind": "function", "doc": "

\n", "signature": "(\top: Type[sqlglot.expressions.Expression],\tleft: str | None,\tright: str | None,\tdistinct: bool = False)"}, "sqlglot.planner.SetOperation.from_expression": {"fullname": "sqlglot.planner.SetOperation.from_expression", "modulename": "sqlglot.planner", "qualname": "SetOperation.from_expression", "kind": "function", "doc": "

Builds a DAG of Steps from a SQL expression so that it's easier to execute in an engine.\nNote: the expression's tables and subqueries must be aliased for this method to work. For\nexample, given the following expression:

\n\n

SELECT\n x.a,\n SUM(x.b)\nFROM x AS x\nJOIN y AS y\n ON x.a = y.a\nGROUP BY x.a

\n\n

the following DAG is produced (the expression IDs might differ per execution):

\n\n
    \n
  • Aggregate: x (4347984624)\nContext:\n Aggregations:\n - SUM(x.b)\n Group:\n - x.a\nProjections:\n
      \n
    • x.a
    • \n
    • \"x\".\"\"\nDependencies:\n
        \n
      • Join: x (4347985296)\nContext:\ny:\nOn: x.a = y.a\nProjections:\nDependencies:
      • \n
    • \n
    • Scan: x (4347983136)\nContext:\n Source: x AS x\nProjections:
    • \n
    • Scan: y (4343416624)\nContext:\n Source: y AS y\nProjections:
    • \n
  • \n
\n\n
Arguments:
\n\n
    \n
  • expression: the expression to build the DAG from.
  • \n
  • ctes: a dictionary that maps CTEs to their corresponding Step DAG by name.
  • \n
\n\n
Returns:
\n\n
\n

A Step DAG corresponding to expression.

\n
\n", "signature": "(\tcls,\texpression: sqlglot.expressions.Expression,\tctes: Optional[Dict[str, sqlglot.planner.Step]] = None) -> sqlglot.planner.Step:", "funcdef": "def"}, "sqlglot.schema.Schema": {"fullname": "sqlglot.schema.Schema", "modulename": "sqlglot.schema", "qualname": "Schema", "kind": "class", "doc": "

Abstract base class for database schemas

\n", "bases": "abc.ABC"}, "sqlglot.schema.Schema.add_table": {"fullname": "sqlglot.schema.Schema.add_table", "modulename": "sqlglot.schema", "qualname": "Schema.add_table", "kind": "function", "doc": "

Register or update a table. Some implementing classes may require column information to also be provided.

\n\n
Arguments:
\n\n
    \n
  • table: table expression instance or string representing the table.
  • \n
  • column_mapping: a column mapping that describes the structure of the table.
  • \n
\n", "signature": "(\tself,\ttable: sqlglot.expressions.Table | str,\tcolumn_mapping: Union[Dict, str, sqlglot.dataframe.sql.types.StructType, List, NoneType] = None) -> None:", "funcdef": "def"}, "sqlglot.schema.Schema.column_names": {"fullname": "sqlglot.schema.Schema.column_names", "modulename": "sqlglot.schema", "qualname": "Schema.column_names", "kind": "function", "doc": "

Get the column names for a table.

\n\n
Arguments:
\n\n
    \n
  • table: the Table expression instance.
  • \n
  • only_visible: whether to include invisible columns.
  • \n
\n\n
Returns:
\n\n
\n

The list of column names.

\n
\n", "signature": "(\tself,\ttable: sqlglot.expressions.Table | str,\tonly_visible: bool = False) -> List[str]:", "funcdef": "def"}, "sqlglot.schema.Schema.get_column_type": {"fullname": "sqlglot.schema.Schema.get_column_type", "modulename": "sqlglot.schema", "qualname": "Schema.get_column_type", "kind": "function", "doc": "

Get the sqlglot.exp.DataType type of a column in the schema.

\n\n
Arguments:
\n\n
    \n
  • table: the source table.
  • \n
  • column: the target column.
  • \n
\n\n
Returns:
\n\n
\n

The resulting column type.

\n
\n", "signature": "(\tself,\ttable: sqlglot.expressions.Table | str,\tcolumn: sqlglot.expressions.Column) -> sqlglot.expressions.DataType:", "funcdef": "def"}, "sqlglot.schema.Schema.supported_table_args": {"fullname": "sqlglot.schema.Schema.supported_table_args", "modulename": "sqlglot.schema", "qualname": "Schema.supported_table_args", "kind": "variable", "doc": "

Table arguments this schema support, e.g. (\"this\", \"db\", \"catalog\")

\n", "annotation": ": Tuple[str, ...]"}, "sqlglot.schema.AbstractMappingSchema": {"fullname": "sqlglot.schema.AbstractMappingSchema", "modulename": "sqlglot.schema", "qualname": "AbstractMappingSchema", "kind": "class", "doc": "

Abstract base class for generic types.

\n\n

A generic type is typically declared by inheriting from\nthis class parameterized with one or more type variables.\nFor example, a generic mapping type might be defined as::

\n\n

class Mapping(Generic[KT, VT]):\n def __getitem__(self, key: KT) -> VT:\n ...\n # Etc.

\n\n

This class can then be used as follows::

\n\n

def lookup_name(mapping: Mapping[KT, VT], key: KT, default: VT) -> VT:\n try:\n return mapping[key]\n except KeyError:\n return default

\n", "bases": "typing.Generic[~T]"}, "sqlglot.schema.AbstractMappingSchema.__init__": {"fullname": "sqlglot.schema.AbstractMappingSchema.__init__", "modulename": "sqlglot.schema", "qualname": "AbstractMappingSchema.__init__", "kind": "function", "doc": "

\n", "signature": "(mapping: dict | None = None)"}, "sqlglot.schema.AbstractMappingSchema.table_parts": {"fullname": "sqlglot.schema.AbstractMappingSchema.table_parts", "modulename": "sqlglot.schema", "qualname": "AbstractMappingSchema.table_parts", "kind": "function", "doc": "

\n", "signature": "(self, table: sqlglot.expressions.Table) -> List[str]:", "funcdef": "def"}, "sqlglot.schema.AbstractMappingSchema.find": {"fullname": "sqlglot.schema.AbstractMappingSchema.find", "modulename": "sqlglot.schema", "qualname": "AbstractMappingSchema.find", "kind": "function", "doc": "

\n", "signature": "(\tself,\ttable: sqlglot.expressions.Table,\ttrie: Optional[Dict] = None,\traise_on_missing: bool = True) -> Optional[~T]:", "funcdef": "def"}, "sqlglot.schema.MappingSchema": {"fullname": "sqlglot.schema.MappingSchema", "modulename": "sqlglot.schema", "qualname": "MappingSchema", "kind": "class", "doc": "

Schema based on a nested mapping.

\n\n
Arguments:
\n\n
    \n
  • schema (dict): Mapping in one of the following forms:\n
      \n
    1. {table: {col: type}}
    2. \n
    3. {db: {table: {col: type}}}
    4. \n
    5. {catalog: {db: {table: {col: type}}}}
    6. \n
    7. None - Tables will be added later
    8. \n
  • \n
  • visible (dict): Optional mapping of which columns in the schema are visible. If not provided, all columns\nare assumed to be visible. The nesting should mirror that of the schema:\n
      \n
    1. {table: set(cols)}}
    2. \n
    3. {db: {table: set(cols)}}}
    4. \n
    5. {catalog: {db: {table: set(*cols)}}}}
    6. \n
  • \n
  • dialect (str): The dialect to be used for custom type mappings.
  • \n
\n", "bases": "sqlglot.schema.AbstractMappingSchema[typing.Dict[str, str]], Schema"}, "sqlglot.schema.MappingSchema.__init__": {"fullname": "sqlglot.schema.MappingSchema.__init__", "modulename": "sqlglot.schema", "qualname": "MappingSchema.__init__", "kind": "function", "doc": "

\n", "signature": "(\tschema: Optional[Dict] = None,\tvisible: Optional[Dict] = None,\tdialect: Union[str, sqlglot.dialects.dialect.Dialect, Type[sqlglot.dialects.dialect.Dialect], NoneType] = None)"}, "sqlglot.schema.MappingSchema.from_mapping_schema": {"fullname": "sqlglot.schema.MappingSchema.from_mapping_schema", "modulename": "sqlglot.schema", "qualname": "MappingSchema.from_mapping_schema", "kind": "function", "doc": "

\n", "signature": "(\tcls,\tmapping_schema: sqlglot.schema.MappingSchema) -> sqlglot.schema.MappingSchema:", "funcdef": "def"}, "sqlglot.schema.MappingSchema.copy": {"fullname": "sqlglot.schema.MappingSchema.copy", "modulename": "sqlglot.schema", "qualname": "MappingSchema.copy", "kind": "function", "doc": "

\n", "signature": "(self, **kwargs) -> sqlglot.schema.MappingSchema:", "funcdef": "def"}, "sqlglot.schema.MappingSchema.add_table": {"fullname": "sqlglot.schema.MappingSchema.add_table", "modulename": "sqlglot.schema", "qualname": "MappingSchema.add_table", "kind": "function", "doc": "

Register or update a table. Updates are only performed if a new column mapping is provided.

\n\n
Arguments:
\n\n
    \n
  • table: the Table expression instance or string representing the table.
  • \n
  • column_mapping: a column mapping that describes the structure of the table.
  • \n
\n", "signature": "(\tself,\ttable: sqlglot.expressions.Table | str,\tcolumn_mapping: Union[Dict, str, sqlglot.dataframe.sql.types.StructType, List, NoneType] = None) -> None:", "funcdef": "def"}, "sqlglot.schema.MappingSchema.column_names": {"fullname": "sqlglot.schema.MappingSchema.column_names", "modulename": "sqlglot.schema", "qualname": "MappingSchema.column_names", "kind": "function", "doc": "

Get the column names for a table.

\n\n
Arguments:
\n\n
    \n
  • table: the Table expression instance.
  • \n
  • only_visible: whether to include invisible columns.
  • \n
\n\n
Returns:
\n\n
\n

The list of column names.

\n
\n", "signature": "(\tself,\ttable: sqlglot.expressions.Table | str,\tonly_visible: bool = False) -> List[str]:", "funcdef": "def"}, "sqlglot.schema.MappingSchema.get_column_type": {"fullname": "sqlglot.schema.MappingSchema.get_column_type", "modulename": "sqlglot.schema", "qualname": "MappingSchema.get_column_type", "kind": "function", "doc": "

Get the sqlglot.exp.DataType type of a column in the schema.

\n\n
Arguments:
\n\n
    \n
  • table: the source table.
  • \n
  • column: the target column.
  • \n
\n\n
Returns:
\n\n
\n

The resulting column type.

\n
\n", "signature": "(\tself,\ttable: sqlglot.expressions.Table | str,\tcolumn: sqlglot.expressions.Column | str) -> sqlglot.expressions.DataType:", "funcdef": "def"}, "sqlglot.schema.ensure_schema": {"fullname": "sqlglot.schema.ensure_schema", "modulename": "sqlglot.schema", "qualname": "ensure_schema", "kind": "function", "doc": "

\n", "signature": "(\tschema: Any,\tdialect: Union[str, sqlglot.dialects.dialect.Dialect, Type[sqlglot.dialects.dialect.Dialect], NoneType] = None) -> sqlglot.schema.Schema:", "funcdef": "def"}, "sqlglot.schema.ensure_column_mapping": {"fullname": "sqlglot.schema.ensure_column_mapping", "modulename": "sqlglot.schema", "qualname": "ensure_column_mapping", "kind": "function", "doc": "

\n", "signature": "(\tmapping: Union[Dict, str, sqlglot.dataframe.sql.types.StructType, List, NoneType]) -> Dict:", "funcdef": "def"}, "sqlglot.schema.flatten_schema": {"fullname": "sqlglot.schema.flatten_schema", "modulename": "sqlglot.schema", "qualname": "flatten_schema", "kind": "function", "doc": "

\n", "signature": "(\tschema: Dict,\tdepth: int,\tkeys: Optional[List[str]] = None) -> List[List[str]]:", "funcdef": "def"}, "sqlglot.serde": {"fullname": "sqlglot.serde", "modulename": "sqlglot.serde", "kind": "module", "doc": "

\n"}, "sqlglot.serde.dump": {"fullname": "sqlglot.serde.dump", "modulename": "sqlglot.serde", "qualname": "dump", "kind": "function", "doc": "

Recursively dump an AST into a JSON-serializable dict.

\n", "signature": "(\tnode: Union[List[ForwardRef('Node')], sqlglot.expressions.DataType.Type, sqlglot.expressions.Expression, dict, list, str, float, int, bool]) -> Union[dict, list, str, float, int, bool]:", "funcdef": "def"}, "sqlglot.serde.load": {"fullname": "sqlglot.serde.load", "modulename": "sqlglot.serde", "qualname": "load", "kind": "function", "doc": "

Recursively load a dict (as returned by dump) into an AST.

\n", "signature": "(\tobj: Union[dict, list, str, float, int, bool]) -> Union[List[ForwardRef('Node')], sqlglot.expressions.DataType.Type, sqlglot.expressions.Expression, dict, list, str, float, int, bool]:", "funcdef": "def"}, "sqlglot.time": {"fullname": "sqlglot.time", "modulename": "sqlglot.time", "kind": "module", "doc": "

\n"}, "sqlglot.time.format_time": {"fullname": "sqlglot.time.format_time", "modulename": "sqlglot.time", "qualname": "format_time", "kind": "function", "doc": "

Converts a time string given a mapping.

\n\n
Examples:
\n\n
\n
\n
>>> format_time("%Y", {"%Y": "YYYY"})\n'YYYY'\n
\n
\n \n

Args:\n mapping: dictionary of time format to target time format.\n trie: optional trie, can be passed in for performance.

\n \n

Returns:\n The converted time string.

\n
\n", "signature": "(\tstring: str,\tmapping: Dict[str, str],\ttrie: Optional[Dict] = None) -> Optional[str]:", "funcdef": "def"}, "sqlglot.tokens": {"fullname": "sqlglot.tokens", "modulename": "sqlglot.tokens", "kind": "module", "doc": "

\n"}, "sqlglot.tokens.TokenType": {"fullname": "sqlglot.tokens.TokenType", "modulename": "sqlglot.tokens", "qualname": "TokenType", "kind": "class", "doc": "

An enumeration.

\n", "bases": "sqlglot.helper.AutoName"}, "sqlglot.tokens.TokenType.L_PAREN": {"fullname": "sqlglot.tokens.TokenType.L_PAREN", "modulename": "sqlglot.tokens", "qualname": "TokenType.L_PAREN", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.L_PAREN: 'L_PAREN'>"}, "sqlglot.tokens.TokenType.R_PAREN": {"fullname": "sqlglot.tokens.TokenType.R_PAREN", "modulename": "sqlglot.tokens", "qualname": "TokenType.R_PAREN", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.R_PAREN: 'R_PAREN'>"}, "sqlglot.tokens.TokenType.L_BRACKET": {"fullname": "sqlglot.tokens.TokenType.L_BRACKET", "modulename": "sqlglot.tokens", "qualname": "TokenType.L_BRACKET", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.L_BRACKET: 'L_BRACKET'>"}, "sqlglot.tokens.TokenType.R_BRACKET": {"fullname": "sqlglot.tokens.TokenType.R_BRACKET", "modulename": "sqlglot.tokens", "qualname": "TokenType.R_BRACKET", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.R_BRACKET: 'R_BRACKET'>"}, "sqlglot.tokens.TokenType.L_BRACE": {"fullname": "sqlglot.tokens.TokenType.L_BRACE", "modulename": "sqlglot.tokens", "qualname": "TokenType.L_BRACE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.L_BRACE: 'L_BRACE'>"}, "sqlglot.tokens.TokenType.R_BRACE": {"fullname": "sqlglot.tokens.TokenType.R_BRACE", "modulename": "sqlglot.tokens", "qualname": "TokenType.R_BRACE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.R_BRACE: 'R_BRACE'>"}, "sqlglot.tokens.TokenType.COMMA": {"fullname": "sqlglot.tokens.TokenType.COMMA", "modulename": "sqlglot.tokens", "qualname": "TokenType.COMMA", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.COMMA: 'COMMA'>"}, "sqlglot.tokens.TokenType.DOT": {"fullname": "sqlglot.tokens.TokenType.DOT", "modulename": "sqlglot.tokens", "qualname": "TokenType.DOT", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.DOT: 'DOT'>"}, "sqlglot.tokens.TokenType.DASH": {"fullname": "sqlglot.tokens.TokenType.DASH", "modulename": "sqlglot.tokens", "qualname": "TokenType.DASH", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.DASH: 'DASH'>"}, "sqlglot.tokens.TokenType.PLUS": {"fullname": "sqlglot.tokens.TokenType.PLUS", "modulename": "sqlglot.tokens", "qualname": "TokenType.PLUS", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.PLUS: 'PLUS'>"}, "sqlglot.tokens.TokenType.COLON": {"fullname": "sqlglot.tokens.TokenType.COLON", "modulename": "sqlglot.tokens", "qualname": "TokenType.COLON", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.COLON: 'COLON'>"}, "sqlglot.tokens.TokenType.DCOLON": {"fullname": "sqlglot.tokens.TokenType.DCOLON", "modulename": "sqlglot.tokens", "qualname": "TokenType.DCOLON", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.DCOLON: 'DCOLON'>"}, "sqlglot.tokens.TokenType.SEMICOLON": {"fullname": "sqlglot.tokens.TokenType.SEMICOLON", "modulename": "sqlglot.tokens", "qualname": "TokenType.SEMICOLON", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.SEMICOLON: 'SEMICOLON'>"}, "sqlglot.tokens.TokenType.STAR": {"fullname": "sqlglot.tokens.TokenType.STAR", "modulename": "sqlglot.tokens", "qualname": "TokenType.STAR", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.STAR: 'STAR'>"}, "sqlglot.tokens.TokenType.BACKSLASH": {"fullname": "sqlglot.tokens.TokenType.BACKSLASH", "modulename": "sqlglot.tokens", "qualname": "TokenType.BACKSLASH", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.BACKSLASH: 'BACKSLASH'>"}, "sqlglot.tokens.TokenType.SLASH": {"fullname": "sqlglot.tokens.TokenType.SLASH", "modulename": "sqlglot.tokens", "qualname": "TokenType.SLASH", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.SLASH: 'SLASH'>"}, "sqlglot.tokens.TokenType.LT": {"fullname": "sqlglot.tokens.TokenType.LT", "modulename": "sqlglot.tokens", "qualname": "TokenType.LT", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.LT: 'LT'>"}, "sqlglot.tokens.TokenType.LTE": {"fullname": "sqlglot.tokens.TokenType.LTE", "modulename": "sqlglot.tokens", "qualname": "TokenType.LTE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.LTE: 'LTE'>"}, "sqlglot.tokens.TokenType.GT": {"fullname": "sqlglot.tokens.TokenType.GT", "modulename": "sqlglot.tokens", "qualname": "TokenType.GT", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.GT: 'GT'>"}, "sqlglot.tokens.TokenType.GTE": {"fullname": "sqlglot.tokens.TokenType.GTE", "modulename": "sqlglot.tokens", "qualname": "TokenType.GTE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.GTE: 'GTE'>"}, "sqlglot.tokens.TokenType.NOT": {"fullname": "sqlglot.tokens.TokenType.NOT", "modulename": "sqlglot.tokens", "qualname": "TokenType.NOT", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.NOT: 'NOT'>"}, "sqlglot.tokens.TokenType.EQ": {"fullname": "sqlglot.tokens.TokenType.EQ", "modulename": "sqlglot.tokens", "qualname": "TokenType.EQ", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.EQ: 'EQ'>"}, "sqlglot.tokens.TokenType.NEQ": {"fullname": "sqlglot.tokens.TokenType.NEQ", "modulename": "sqlglot.tokens", "qualname": "TokenType.NEQ", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.NEQ: 'NEQ'>"}, "sqlglot.tokens.TokenType.NULLSAFE_EQ": {"fullname": "sqlglot.tokens.TokenType.NULLSAFE_EQ", "modulename": "sqlglot.tokens", "qualname": "TokenType.NULLSAFE_EQ", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.NULLSAFE_EQ: 'NULLSAFE_EQ'>"}, "sqlglot.tokens.TokenType.AND": {"fullname": "sqlglot.tokens.TokenType.AND", "modulename": "sqlglot.tokens", "qualname": "TokenType.AND", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.AND: 'AND'>"}, "sqlglot.tokens.TokenType.OR": {"fullname": "sqlglot.tokens.TokenType.OR", "modulename": "sqlglot.tokens", "qualname": "TokenType.OR", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.OR: 'OR'>"}, "sqlglot.tokens.TokenType.AMP": {"fullname": "sqlglot.tokens.TokenType.AMP", "modulename": "sqlglot.tokens", "qualname": "TokenType.AMP", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.AMP: 'AMP'>"}, "sqlglot.tokens.TokenType.DPIPE": {"fullname": "sqlglot.tokens.TokenType.DPIPE", "modulename": "sqlglot.tokens", "qualname": "TokenType.DPIPE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.DPIPE: 'DPIPE'>"}, "sqlglot.tokens.TokenType.PIPE": {"fullname": "sqlglot.tokens.TokenType.PIPE", "modulename": "sqlglot.tokens", "qualname": "TokenType.PIPE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.PIPE: 'PIPE'>"}, "sqlglot.tokens.TokenType.CARET": {"fullname": "sqlglot.tokens.TokenType.CARET", "modulename": "sqlglot.tokens", "qualname": "TokenType.CARET", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.CARET: 'CARET'>"}, "sqlglot.tokens.TokenType.TILDA": {"fullname": "sqlglot.tokens.TokenType.TILDA", "modulename": "sqlglot.tokens", "qualname": "TokenType.TILDA", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.TILDA: 'TILDA'>"}, "sqlglot.tokens.TokenType.ARROW": {"fullname": "sqlglot.tokens.TokenType.ARROW", "modulename": "sqlglot.tokens", "qualname": "TokenType.ARROW", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.ARROW: 'ARROW'>"}, "sqlglot.tokens.TokenType.DARROW": {"fullname": "sqlglot.tokens.TokenType.DARROW", "modulename": "sqlglot.tokens", "qualname": "TokenType.DARROW", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.DARROW: 'DARROW'>"}, "sqlglot.tokens.TokenType.FARROW": {"fullname": "sqlglot.tokens.TokenType.FARROW", "modulename": "sqlglot.tokens", "qualname": "TokenType.FARROW", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.FARROW: 'FARROW'>"}, "sqlglot.tokens.TokenType.HASH": {"fullname": "sqlglot.tokens.TokenType.HASH", "modulename": "sqlglot.tokens", "qualname": "TokenType.HASH", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.HASH: 'HASH'>"}, "sqlglot.tokens.TokenType.HASH_ARROW": {"fullname": "sqlglot.tokens.TokenType.HASH_ARROW", "modulename": "sqlglot.tokens", "qualname": "TokenType.HASH_ARROW", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.HASH_ARROW: 'HASH_ARROW'>"}, "sqlglot.tokens.TokenType.DHASH_ARROW": {"fullname": "sqlglot.tokens.TokenType.DHASH_ARROW", "modulename": "sqlglot.tokens", "qualname": "TokenType.DHASH_ARROW", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.DHASH_ARROW: 'DHASH_ARROW'>"}, "sqlglot.tokens.TokenType.LR_ARROW": {"fullname": "sqlglot.tokens.TokenType.LR_ARROW", "modulename": "sqlglot.tokens", "qualname": "TokenType.LR_ARROW", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.LR_ARROW: 'LR_ARROW'>"}, "sqlglot.tokens.TokenType.LT_AT": {"fullname": "sqlglot.tokens.TokenType.LT_AT", "modulename": "sqlglot.tokens", "qualname": "TokenType.LT_AT", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.LT_AT: 'LT_AT'>"}, "sqlglot.tokens.TokenType.AT_GT": {"fullname": "sqlglot.tokens.TokenType.AT_GT", "modulename": "sqlglot.tokens", "qualname": "TokenType.AT_GT", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.AT_GT: 'AT_GT'>"}, "sqlglot.tokens.TokenType.DOLLAR": {"fullname": "sqlglot.tokens.TokenType.DOLLAR", "modulename": "sqlglot.tokens", "qualname": "TokenType.DOLLAR", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.DOLLAR: 'DOLLAR'>"}, "sqlglot.tokens.TokenType.PARAMETER": {"fullname": "sqlglot.tokens.TokenType.PARAMETER", "modulename": "sqlglot.tokens", "qualname": "TokenType.PARAMETER", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.PARAMETER: 'PARAMETER'>"}, "sqlglot.tokens.TokenType.SESSION_PARAMETER": {"fullname": "sqlglot.tokens.TokenType.SESSION_PARAMETER", "modulename": "sqlglot.tokens", "qualname": "TokenType.SESSION_PARAMETER", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.SESSION_PARAMETER: 'SESSION_PARAMETER'>"}, "sqlglot.tokens.TokenType.NATIONAL": {"fullname": "sqlglot.tokens.TokenType.NATIONAL", "modulename": "sqlglot.tokens", "qualname": "TokenType.NATIONAL", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.NATIONAL: 'NATIONAL'>"}, "sqlglot.tokens.TokenType.DAMP": {"fullname": "sqlglot.tokens.TokenType.DAMP", "modulename": "sqlglot.tokens", "qualname": "TokenType.DAMP", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.DAMP: 'DAMP'>"}, "sqlglot.tokens.TokenType.BLOCK_START": {"fullname": "sqlglot.tokens.TokenType.BLOCK_START", "modulename": "sqlglot.tokens", "qualname": "TokenType.BLOCK_START", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.BLOCK_START: 'BLOCK_START'>"}, "sqlglot.tokens.TokenType.BLOCK_END": {"fullname": "sqlglot.tokens.TokenType.BLOCK_END", "modulename": "sqlglot.tokens", "qualname": "TokenType.BLOCK_END", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.BLOCK_END: 'BLOCK_END'>"}, "sqlglot.tokens.TokenType.SPACE": {"fullname": "sqlglot.tokens.TokenType.SPACE", "modulename": "sqlglot.tokens", "qualname": "TokenType.SPACE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.SPACE: 'SPACE'>"}, "sqlglot.tokens.TokenType.BREAK": {"fullname": "sqlglot.tokens.TokenType.BREAK", "modulename": "sqlglot.tokens", "qualname": "TokenType.BREAK", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.BREAK: 'BREAK'>"}, "sqlglot.tokens.TokenType.STRING": {"fullname": "sqlglot.tokens.TokenType.STRING", "modulename": "sqlglot.tokens", "qualname": "TokenType.STRING", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.STRING: 'STRING'>"}, "sqlglot.tokens.TokenType.NUMBER": {"fullname": "sqlglot.tokens.TokenType.NUMBER", "modulename": "sqlglot.tokens", "qualname": "TokenType.NUMBER", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.NUMBER: 'NUMBER'>"}, "sqlglot.tokens.TokenType.IDENTIFIER": {"fullname": "sqlglot.tokens.TokenType.IDENTIFIER", "modulename": "sqlglot.tokens", "qualname": "TokenType.IDENTIFIER", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.IDENTIFIER: 'IDENTIFIER'>"}, "sqlglot.tokens.TokenType.DATABASE": {"fullname": "sqlglot.tokens.TokenType.DATABASE", "modulename": "sqlglot.tokens", "qualname": "TokenType.DATABASE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.DATABASE: 'DATABASE'>"}, "sqlglot.tokens.TokenType.COLUMN": {"fullname": "sqlglot.tokens.TokenType.COLUMN", "modulename": "sqlglot.tokens", "qualname": "TokenType.COLUMN", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.COLUMN: 'COLUMN'>"}, "sqlglot.tokens.TokenType.COLUMN_DEF": {"fullname": "sqlglot.tokens.TokenType.COLUMN_DEF", "modulename": "sqlglot.tokens", "qualname": "TokenType.COLUMN_DEF", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.COLUMN_DEF: 'COLUMN_DEF'>"}, "sqlglot.tokens.TokenType.SCHEMA": {"fullname": "sqlglot.tokens.TokenType.SCHEMA", "modulename": "sqlglot.tokens", "qualname": "TokenType.SCHEMA", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.SCHEMA: 'SCHEMA'>"}, "sqlglot.tokens.TokenType.TABLE": {"fullname": "sqlglot.tokens.TokenType.TABLE", "modulename": "sqlglot.tokens", "qualname": "TokenType.TABLE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.TABLE: 'TABLE'>"}, "sqlglot.tokens.TokenType.VAR": {"fullname": "sqlglot.tokens.TokenType.VAR", "modulename": "sqlglot.tokens", "qualname": "TokenType.VAR", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.VAR: 'VAR'>"}, "sqlglot.tokens.TokenType.BIT_STRING": {"fullname": "sqlglot.tokens.TokenType.BIT_STRING", "modulename": "sqlglot.tokens", "qualname": "TokenType.BIT_STRING", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.BIT_STRING: 'BIT_STRING'>"}, "sqlglot.tokens.TokenType.HEX_STRING": {"fullname": "sqlglot.tokens.TokenType.HEX_STRING", "modulename": "sqlglot.tokens", "qualname": "TokenType.HEX_STRING", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.HEX_STRING: 'HEX_STRING'>"}, "sqlglot.tokens.TokenType.BYTE_STRING": {"fullname": "sqlglot.tokens.TokenType.BYTE_STRING", "modulename": "sqlglot.tokens", "qualname": "TokenType.BYTE_STRING", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.BYTE_STRING: 'BYTE_STRING'>"}, "sqlglot.tokens.TokenType.BIT": {"fullname": "sqlglot.tokens.TokenType.BIT", "modulename": "sqlglot.tokens", "qualname": "TokenType.BIT", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.BIT: 'BIT'>"}, "sqlglot.tokens.TokenType.BOOLEAN": {"fullname": "sqlglot.tokens.TokenType.BOOLEAN", "modulename": "sqlglot.tokens", "qualname": "TokenType.BOOLEAN", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.BOOLEAN: 'BOOLEAN'>"}, "sqlglot.tokens.TokenType.TINYINT": {"fullname": "sqlglot.tokens.TokenType.TINYINT", "modulename": "sqlglot.tokens", "qualname": "TokenType.TINYINT", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.TINYINT: 'TINYINT'>"}, "sqlglot.tokens.TokenType.UTINYINT": {"fullname": "sqlglot.tokens.TokenType.UTINYINT", "modulename": "sqlglot.tokens", "qualname": "TokenType.UTINYINT", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.UTINYINT: 'UTINYINT'>"}, "sqlglot.tokens.TokenType.SMALLINT": {"fullname": "sqlglot.tokens.TokenType.SMALLINT", "modulename": "sqlglot.tokens", "qualname": "TokenType.SMALLINT", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.SMALLINT: 'SMALLINT'>"}, "sqlglot.tokens.TokenType.USMALLINT": {"fullname": "sqlglot.tokens.TokenType.USMALLINT", "modulename": "sqlglot.tokens", "qualname": "TokenType.USMALLINT", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.USMALLINT: 'USMALLINT'>"}, "sqlglot.tokens.TokenType.INT": {"fullname": "sqlglot.tokens.TokenType.INT", "modulename": "sqlglot.tokens", "qualname": "TokenType.INT", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.INT: 'INT'>"}, "sqlglot.tokens.TokenType.UINT": {"fullname": "sqlglot.tokens.TokenType.UINT", "modulename": "sqlglot.tokens", "qualname": "TokenType.UINT", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.UINT: 'UINT'>"}, "sqlglot.tokens.TokenType.BIGINT": {"fullname": "sqlglot.tokens.TokenType.BIGINT", "modulename": "sqlglot.tokens", "qualname": "TokenType.BIGINT", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.BIGINT: 'BIGINT'>"}, "sqlglot.tokens.TokenType.UBIGINT": {"fullname": "sqlglot.tokens.TokenType.UBIGINT", "modulename": "sqlglot.tokens", "qualname": "TokenType.UBIGINT", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.UBIGINT: 'UBIGINT'>"}, "sqlglot.tokens.TokenType.FLOAT": {"fullname": "sqlglot.tokens.TokenType.FLOAT", "modulename": "sqlglot.tokens", "qualname": "TokenType.FLOAT", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.FLOAT: 'FLOAT'>"}, "sqlglot.tokens.TokenType.DOUBLE": {"fullname": "sqlglot.tokens.TokenType.DOUBLE", "modulename": "sqlglot.tokens", "qualname": "TokenType.DOUBLE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.DOUBLE: 'DOUBLE'>"}, "sqlglot.tokens.TokenType.DECIMAL": {"fullname": "sqlglot.tokens.TokenType.DECIMAL", "modulename": "sqlglot.tokens", "qualname": "TokenType.DECIMAL", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.DECIMAL: 'DECIMAL'>"}, "sqlglot.tokens.TokenType.BIGDECIMAL": {"fullname": "sqlglot.tokens.TokenType.BIGDECIMAL", "modulename": "sqlglot.tokens", "qualname": "TokenType.BIGDECIMAL", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.BIGDECIMAL: 'BIGDECIMAL'>"}, "sqlglot.tokens.TokenType.CHAR": {"fullname": "sqlglot.tokens.TokenType.CHAR", "modulename": "sqlglot.tokens", "qualname": "TokenType.CHAR", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.CHAR: 'CHAR'>"}, "sqlglot.tokens.TokenType.NCHAR": {"fullname": "sqlglot.tokens.TokenType.NCHAR", "modulename": "sqlglot.tokens", "qualname": "TokenType.NCHAR", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.NCHAR: 'NCHAR'>"}, "sqlglot.tokens.TokenType.VARCHAR": {"fullname": "sqlglot.tokens.TokenType.VARCHAR", "modulename": "sqlglot.tokens", "qualname": "TokenType.VARCHAR", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.VARCHAR: 'VARCHAR'>"}, "sqlglot.tokens.TokenType.NVARCHAR": {"fullname": "sqlglot.tokens.TokenType.NVARCHAR", "modulename": "sqlglot.tokens", "qualname": "TokenType.NVARCHAR", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.NVARCHAR: 'NVARCHAR'>"}, "sqlglot.tokens.TokenType.TEXT": {"fullname": "sqlglot.tokens.TokenType.TEXT", "modulename": "sqlglot.tokens", "qualname": "TokenType.TEXT", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.TEXT: 'TEXT'>"}, "sqlglot.tokens.TokenType.MEDIUMTEXT": {"fullname": "sqlglot.tokens.TokenType.MEDIUMTEXT", "modulename": "sqlglot.tokens", "qualname": "TokenType.MEDIUMTEXT", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.MEDIUMTEXT: 'MEDIUMTEXT'>"}, "sqlglot.tokens.TokenType.LONGTEXT": {"fullname": "sqlglot.tokens.TokenType.LONGTEXT", "modulename": "sqlglot.tokens", "qualname": "TokenType.LONGTEXT", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.LONGTEXT: 'LONGTEXT'>"}, "sqlglot.tokens.TokenType.MEDIUMBLOB": {"fullname": "sqlglot.tokens.TokenType.MEDIUMBLOB", "modulename": "sqlglot.tokens", "qualname": "TokenType.MEDIUMBLOB", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.MEDIUMBLOB: 'MEDIUMBLOB'>"}, "sqlglot.tokens.TokenType.LONGBLOB": {"fullname": "sqlglot.tokens.TokenType.LONGBLOB", "modulename": "sqlglot.tokens", "qualname": "TokenType.LONGBLOB", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.LONGBLOB: 'LONGBLOB'>"}, "sqlglot.tokens.TokenType.BINARY": {"fullname": "sqlglot.tokens.TokenType.BINARY", "modulename": "sqlglot.tokens", "qualname": "TokenType.BINARY", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.BINARY: 'BINARY'>"}, "sqlglot.tokens.TokenType.VARBINARY": {"fullname": "sqlglot.tokens.TokenType.VARBINARY", "modulename": "sqlglot.tokens", "qualname": "TokenType.VARBINARY", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.VARBINARY: 'VARBINARY'>"}, "sqlglot.tokens.TokenType.JSON": {"fullname": "sqlglot.tokens.TokenType.JSON", "modulename": "sqlglot.tokens", "qualname": "TokenType.JSON", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.JSON: 'JSON'>"}, "sqlglot.tokens.TokenType.JSONB": {"fullname": "sqlglot.tokens.TokenType.JSONB", "modulename": "sqlglot.tokens", "qualname": "TokenType.JSONB", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.JSONB: 'JSONB'>"}, "sqlglot.tokens.TokenType.TIME": {"fullname": "sqlglot.tokens.TokenType.TIME", "modulename": "sqlglot.tokens", "qualname": "TokenType.TIME", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.TIME: 'TIME'>"}, "sqlglot.tokens.TokenType.TIMESTAMP": {"fullname": "sqlglot.tokens.TokenType.TIMESTAMP", "modulename": "sqlglot.tokens", "qualname": "TokenType.TIMESTAMP", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.TIMESTAMP: 'TIMESTAMP'>"}, "sqlglot.tokens.TokenType.TIMESTAMPTZ": {"fullname": "sqlglot.tokens.TokenType.TIMESTAMPTZ", "modulename": "sqlglot.tokens", "qualname": "TokenType.TIMESTAMPTZ", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>"}, "sqlglot.tokens.TokenType.TIMESTAMPLTZ": {"fullname": "sqlglot.tokens.TokenType.TIMESTAMPLTZ", "modulename": "sqlglot.tokens", "qualname": "TokenType.TIMESTAMPLTZ", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>"}, "sqlglot.tokens.TokenType.DATETIME": {"fullname": "sqlglot.tokens.TokenType.DATETIME", "modulename": "sqlglot.tokens", "qualname": "TokenType.DATETIME", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.DATETIME: 'DATETIME'>"}, "sqlglot.tokens.TokenType.DATE": {"fullname": "sqlglot.tokens.TokenType.DATE", "modulename": "sqlglot.tokens", "qualname": "TokenType.DATE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.DATE: 'DATE'>"}, "sqlglot.tokens.TokenType.UUID": {"fullname": "sqlglot.tokens.TokenType.UUID", "modulename": "sqlglot.tokens", "qualname": "TokenType.UUID", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.UUID: 'UUID'>"}, "sqlglot.tokens.TokenType.GEOGRAPHY": {"fullname": "sqlglot.tokens.TokenType.GEOGRAPHY", "modulename": "sqlglot.tokens", "qualname": "TokenType.GEOGRAPHY", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.GEOGRAPHY: 'GEOGRAPHY'>"}, "sqlglot.tokens.TokenType.NULLABLE": {"fullname": "sqlglot.tokens.TokenType.NULLABLE", "modulename": "sqlglot.tokens", "qualname": "TokenType.NULLABLE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.NULLABLE: 'NULLABLE'>"}, "sqlglot.tokens.TokenType.GEOMETRY": {"fullname": "sqlglot.tokens.TokenType.GEOMETRY", "modulename": "sqlglot.tokens", "qualname": "TokenType.GEOMETRY", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.GEOMETRY: 'GEOMETRY'>"}, "sqlglot.tokens.TokenType.HLLSKETCH": {"fullname": "sqlglot.tokens.TokenType.HLLSKETCH", "modulename": "sqlglot.tokens", "qualname": "TokenType.HLLSKETCH", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.HLLSKETCH: 'HLLSKETCH'>"}, "sqlglot.tokens.TokenType.HSTORE": {"fullname": "sqlglot.tokens.TokenType.HSTORE", "modulename": "sqlglot.tokens", "qualname": "TokenType.HSTORE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.HSTORE: 'HSTORE'>"}, "sqlglot.tokens.TokenType.SUPER": {"fullname": "sqlglot.tokens.TokenType.SUPER", "modulename": "sqlglot.tokens", "qualname": "TokenType.SUPER", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.SUPER: 'SUPER'>"}, "sqlglot.tokens.TokenType.SERIAL": {"fullname": "sqlglot.tokens.TokenType.SERIAL", "modulename": "sqlglot.tokens", "qualname": "TokenType.SERIAL", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.SERIAL: 'SERIAL'>"}, "sqlglot.tokens.TokenType.SMALLSERIAL": {"fullname": "sqlglot.tokens.TokenType.SMALLSERIAL", "modulename": "sqlglot.tokens", "qualname": "TokenType.SMALLSERIAL", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.SMALLSERIAL: 'SMALLSERIAL'>"}, "sqlglot.tokens.TokenType.BIGSERIAL": {"fullname": "sqlglot.tokens.TokenType.BIGSERIAL", "modulename": "sqlglot.tokens", "qualname": "TokenType.BIGSERIAL", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.BIGSERIAL: 'BIGSERIAL'>"}, "sqlglot.tokens.TokenType.XML": {"fullname": "sqlglot.tokens.TokenType.XML", "modulename": "sqlglot.tokens", "qualname": "TokenType.XML", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.XML: 'XML'>"}, "sqlglot.tokens.TokenType.UNIQUEIDENTIFIER": {"fullname": "sqlglot.tokens.TokenType.UNIQUEIDENTIFIER", "modulename": "sqlglot.tokens", "qualname": "TokenType.UNIQUEIDENTIFIER", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.UNIQUEIDENTIFIER: 'UNIQUEIDENTIFIER'>"}, "sqlglot.tokens.TokenType.MONEY": {"fullname": "sqlglot.tokens.TokenType.MONEY", "modulename": "sqlglot.tokens", "qualname": "TokenType.MONEY", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.MONEY: 'MONEY'>"}, "sqlglot.tokens.TokenType.SMALLMONEY": {"fullname": "sqlglot.tokens.TokenType.SMALLMONEY", "modulename": "sqlglot.tokens", "qualname": "TokenType.SMALLMONEY", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.SMALLMONEY: 'SMALLMONEY'>"}, "sqlglot.tokens.TokenType.ROWVERSION": {"fullname": "sqlglot.tokens.TokenType.ROWVERSION", "modulename": "sqlglot.tokens", "qualname": "TokenType.ROWVERSION", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.ROWVERSION: 'ROWVERSION'>"}, "sqlglot.tokens.TokenType.IMAGE": {"fullname": "sqlglot.tokens.TokenType.IMAGE", "modulename": "sqlglot.tokens", "qualname": "TokenType.IMAGE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.IMAGE: 'IMAGE'>"}, "sqlglot.tokens.TokenType.VARIANT": {"fullname": "sqlglot.tokens.TokenType.VARIANT", "modulename": "sqlglot.tokens", "qualname": "TokenType.VARIANT", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.VARIANT: 'VARIANT'>"}, "sqlglot.tokens.TokenType.OBJECT": {"fullname": "sqlglot.tokens.TokenType.OBJECT", "modulename": "sqlglot.tokens", "qualname": "TokenType.OBJECT", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.OBJECT: 'OBJECT'>"}, "sqlglot.tokens.TokenType.INET": {"fullname": "sqlglot.tokens.TokenType.INET", "modulename": "sqlglot.tokens", "qualname": "TokenType.INET", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.INET: 'INET'>"}, "sqlglot.tokens.TokenType.ALIAS": {"fullname": "sqlglot.tokens.TokenType.ALIAS", "modulename": "sqlglot.tokens", "qualname": "TokenType.ALIAS", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.ALIAS: 'ALIAS'>"}, "sqlglot.tokens.TokenType.ALTER": {"fullname": "sqlglot.tokens.TokenType.ALTER", "modulename": "sqlglot.tokens", "qualname": "TokenType.ALTER", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.ALTER: 'ALTER'>"}, "sqlglot.tokens.TokenType.ALWAYS": {"fullname": "sqlglot.tokens.TokenType.ALWAYS", "modulename": "sqlglot.tokens", "qualname": "TokenType.ALWAYS", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.ALWAYS: 'ALWAYS'>"}, "sqlglot.tokens.TokenType.ALL": {"fullname": "sqlglot.tokens.TokenType.ALL", "modulename": "sqlglot.tokens", "qualname": "TokenType.ALL", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.ALL: 'ALL'>"}, "sqlglot.tokens.TokenType.ANTI": {"fullname": "sqlglot.tokens.TokenType.ANTI", "modulename": "sqlglot.tokens", "qualname": "TokenType.ANTI", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.ANTI: 'ANTI'>"}, "sqlglot.tokens.TokenType.ANY": {"fullname": "sqlglot.tokens.TokenType.ANY", "modulename": "sqlglot.tokens", "qualname": "TokenType.ANY", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.ANY: 'ANY'>"}, "sqlglot.tokens.TokenType.APPLY": {"fullname": "sqlglot.tokens.TokenType.APPLY", "modulename": "sqlglot.tokens", "qualname": "TokenType.APPLY", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.APPLY: 'APPLY'>"}, "sqlglot.tokens.TokenType.ARRAY": {"fullname": "sqlglot.tokens.TokenType.ARRAY", "modulename": "sqlglot.tokens", "qualname": "TokenType.ARRAY", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.ARRAY: 'ARRAY'>"}, "sqlglot.tokens.TokenType.ASC": {"fullname": "sqlglot.tokens.TokenType.ASC", "modulename": "sqlglot.tokens", "qualname": "TokenType.ASC", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.ASC: 'ASC'>"}, "sqlglot.tokens.TokenType.ASOF": {"fullname": "sqlglot.tokens.TokenType.ASOF", "modulename": "sqlglot.tokens", "qualname": "TokenType.ASOF", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.ASOF: 'ASOF'>"}, "sqlglot.tokens.TokenType.AT_TIME_ZONE": {"fullname": "sqlglot.tokens.TokenType.AT_TIME_ZONE", "modulename": "sqlglot.tokens", "qualname": "TokenType.AT_TIME_ZONE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.AT_TIME_ZONE: 'AT_TIME_ZONE'>"}, "sqlglot.tokens.TokenType.AUTO_INCREMENT": {"fullname": "sqlglot.tokens.TokenType.AUTO_INCREMENT", "modulename": "sqlglot.tokens", "qualname": "TokenType.AUTO_INCREMENT", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>"}, "sqlglot.tokens.TokenType.BEGIN": {"fullname": "sqlglot.tokens.TokenType.BEGIN", "modulename": "sqlglot.tokens", "qualname": "TokenType.BEGIN", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.BEGIN: 'BEGIN'>"}, "sqlglot.tokens.TokenType.BETWEEN": {"fullname": "sqlglot.tokens.TokenType.BETWEEN", "modulename": "sqlglot.tokens", "qualname": "TokenType.BETWEEN", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.BETWEEN: 'BETWEEN'>"}, "sqlglot.tokens.TokenType.BOTH": {"fullname": "sqlglot.tokens.TokenType.BOTH", "modulename": "sqlglot.tokens", "qualname": "TokenType.BOTH", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.BOTH: 'BOTH'>"}, "sqlglot.tokens.TokenType.BUCKET": {"fullname": "sqlglot.tokens.TokenType.BUCKET", "modulename": "sqlglot.tokens", "qualname": "TokenType.BUCKET", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.BUCKET: 'BUCKET'>"}, "sqlglot.tokens.TokenType.BY_DEFAULT": {"fullname": "sqlglot.tokens.TokenType.BY_DEFAULT", "modulename": "sqlglot.tokens", "qualname": "TokenType.BY_DEFAULT", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.BY_DEFAULT: 'BY_DEFAULT'>"}, "sqlglot.tokens.TokenType.CACHE": {"fullname": "sqlglot.tokens.TokenType.CACHE", "modulename": "sqlglot.tokens", "qualname": "TokenType.CACHE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.CACHE: 'CACHE'>"}, "sqlglot.tokens.TokenType.CASCADE": {"fullname": "sqlglot.tokens.TokenType.CASCADE", "modulename": "sqlglot.tokens", "qualname": "TokenType.CASCADE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.CASCADE: 'CASCADE'>"}, "sqlglot.tokens.TokenType.CASE": {"fullname": "sqlglot.tokens.TokenType.CASE", "modulename": "sqlglot.tokens", "qualname": "TokenType.CASE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.CASE: 'CASE'>"}, "sqlglot.tokens.TokenType.CHARACTER_SET": {"fullname": "sqlglot.tokens.TokenType.CHARACTER_SET", "modulename": "sqlglot.tokens", "qualname": "TokenType.CHARACTER_SET", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.CHARACTER_SET: 'CHARACTER_SET'>"}, "sqlglot.tokens.TokenType.CLUSTER_BY": {"fullname": "sqlglot.tokens.TokenType.CLUSTER_BY", "modulename": "sqlglot.tokens", "qualname": "TokenType.CLUSTER_BY", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.CLUSTER_BY: 'CLUSTER_BY'>"}, "sqlglot.tokens.TokenType.COLLATE": {"fullname": "sqlglot.tokens.TokenType.COLLATE", "modulename": "sqlglot.tokens", "qualname": "TokenType.COLLATE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.COLLATE: 'COLLATE'>"}, "sqlglot.tokens.TokenType.COMMAND": {"fullname": "sqlglot.tokens.TokenType.COMMAND", "modulename": "sqlglot.tokens", "qualname": "TokenType.COMMAND", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.COMMAND: 'COMMAND'>"}, "sqlglot.tokens.TokenType.COMMENT": {"fullname": "sqlglot.tokens.TokenType.COMMENT", "modulename": "sqlglot.tokens", "qualname": "TokenType.COMMENT", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.COMMENT: 'COMMENT'>"}, "sqlglot.tokens.TokenType.COMMIT": {"fullname": "sqlglot.tokens.TokenType.COMMIT", "modulename": "sqlglot.tokens", "qualname": "TokenType.COMMIT", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.COMMIT: 'COMMIT'>"}, "sqlglot.tokens.TokenType.COMPOUND": {"fullname": "sqlglot.tokens.TokenType.COMPOUND", "modulename": "sqlglot.tokens", "qualname": "TokenType.COMPOUND", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.COMPOUND: 'COMPOUND'>"}, "sqlglot.tokens.TokenType.CONSTRAINT": {"fullname": "sqlglot.tokens.TokenType.CONSTRAINT", "modulename": "sqlglot.tokens", "qualname": "TokenType.CONSTRAINT", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.CONSTRAINT: 'CONSTRAINT'>"}, "sqlglot.tokens.TokenType.CREATE": {"fullname": "sqlglot.tokens.TokenType.CREATE", "modulename": "sqlglot.tokens", "qualname": "TokenType.CREATE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.CREATE: 'CREATE'>"}, "sqlglot.tokens.TokenType.CROSS": {"fullname": "sqlglot.tokens.TokenType.CROSS", "modulename": "sqlglot.tokens", "qualname": "TokenType.CROSS", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.CROSS: 'CROSS'>"}, "sqlglot.tokens.TokenType.CUBE": {"fullname": "sqlglot.tokens.TokenType.CUBE", "modulename": "sqlglot.tokens", "qualname": "TokenType.CUBE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.CUBE: 'CUBE'>"}, "sqlglot.tokens.TokenType.CURRENT_DATE": {"fullname": "sqlglot.tokens.TokenType.CURRENT_DATE", "modulename": "sqlglot.tokens", "qualname": "TokenType.CURRENT_DATE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.CURRENT_DATE: 'CURRENT_DATE'>"}, "sqlglot.tokens.TokenType.CURRENT_DATETIME": {"fullname": "sqlglot.tokens.TokenType.CURRENT_DATETIME", "modulename": "sqlglot.tokens", "qualname": "TokenType.CURRENT_DATETIME", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.CURRENT_DATETIME: 'CURRENT_DATETIME'>"}, "sqlglot.tokens.TokenType.CURRENT_ROW": {"fullname": "sqlglot.tokens.TokenType.CURRENT_ROW", "modulename": "sqlglot.tokens", "qualname": "TokenType.CURRENT_ROW", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.CURRENT_ROW: 'CURRENT_ROW'>"}, "sqlglot.tokens.TokenType.CURRENT_TIME": {"fullname": "sqlglot.tokens.TokenType.CURRENT_TIME", "modulename": "sqlglot.tokens", "qualname": "TokenType.CURRENT_TIME", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.CURRENT_TIME: 'CURRENT_TIME'>"}, "sqlglot.tokens.TokenType.CURRENT_TIMESTAMP": {"fullname": "sqlglot.tokens.TokenType.CURRENT_TIMESTAMP", "modulename": "sqlglot.tokens", "qualname": "TokenType.CURRENT_TIMESTAMP", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'>"}, "sqlglot.tokens.TokenType.CURRENT_USER": {"fullname": "sqlglot.tokens.TokenType.CURRENT_USER", "modulename": "sqlglot.tokens", "qualname": "TokenType.CURRENT_USER", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.CURRENT_USER: 'CURRENT_USER'>"}, "sqlglot.tokens.TokenType.DEFAULT": {"fullname": "sqlglot.tokens.TokenType.DEFAULT", "modulename": "sqlglot.tokens", "qualname": "TokenType.DEFAULT", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.DEFAULT: 'DEFAULT'>"}, "sqlglot.tokens.TokenType.DELETE": {"fullname": "sqlglot.tokens.TokenType.DELETE", "modulename": "sqlglot.tokens", "qualname": "TokenType.DELETE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.DELETE: 'DELETE'>"}, "sqlglot.tokens.TokenType.DESC": {"fullname": "sqlglot.tokens.TokenType.DESC", "modulename": "sqlglot.tokens", "qualname": "TokenType.DESC", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.DESC: 'DESC'>"}, "sqlglot.tokens.TokenType.DESCRIBE": {"fullname": "sqlglot.tokens.TokenType.DESCRIBE", "modulename": "sqlglot.tokens", "qualname": "TokenType.DESCRIBE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.DESCRIBE: 'DESCRIBE'>"}, "sqlglot.tokens.TokenType.DISTINCT": {"fullname": "sqlglot.tokens.TokenType.DISTINCT", "modulename": "sqlglot.tokens", "qualname": "TokenType.DISTINCT", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.DISTINCT: 'DISTINCT'>"}, "sqlglot.tokens.TokenType.DISTINCT_FROM": {"fullname": "sqlglot.tokens.TokenType.DISTINCT_FROM", "modulename": "sqlglot.tokens", "qualname": "TokenType.DISTINCT_FROM", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.DISTINCT_FROM: 'DISTINCT_FROM'>"}, "sqlglot.tokens.TokenType.DISTRIBUTE_BY": {"fullname": "sqlglot.tokens.TokenType.DISTRIBUTE_BY", "modulename": "sqlglot.tokens", "qualname": "TokenType.DISTRIBUTE_BY", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.DISTRIBUTE_BY: 'DISTRIBUTE_BY'>"}, "sqlglot.tokens.TokenType.DIV": {"fullname": "sqlglot.tokens.TokenType.DIV", "modulename": "sqlglot.tokens", "qualname": "TokenType.DIV", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.DIV: 'DIV'>"}, "sqlglot.tokens.TokenType.DROP": {"fullname": "sqlglot.tokens.TokenType.DROP", "modulename": "sqlglot.tokens", "qualname": "TokenType.DROP", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.DROP: 'DROP'>"}, "sqlglot.tokens.TokenType.ELSE": {"fullname": "sqlglot.tokens.TokenType.ELSE", "modulename": "sqlglot.tokens", "qualname": "TokenType.ELSE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.ELSE: 'ELSE'>"}, "sqlglot.tokens.TokenType.END": {"fullname": "sqlglot.tokens.TokenType.END", "modulename": "sqlglot.tokens", "qualname": "TokenType.END", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.END: 'END'>"}, "sqlglot.tokens.TokenType.ESCAPE": {"fullname": "sqlglot.tokens.TokenType.ESCAPE", "modulename": "sqlglot.tokens", "qualname": "TokenType.ESCAPE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.ESCAPE: 'ESCAPE'>"}, "sqlglot.tokens.TokenType.EXCEPT": {"fullname": "sqlglot.tokens.TokenType.EXCEPT", "modulename": "sqlglot.tokens", "qualname": "TokenType.EXCEPT", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.EXCEPT: 'EXCEPT'>"}, "sqlglot.tokens.TokenType.EXECUTE": {"fullname": "sqlglot.tokens.TokenType.EXECUTE", "modulename": "sqlglot.tokens", "qualname": "TokenType.EXECUTE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.EXECUTE: 'EXECUTE'>"}, "sqlglot.tokens.TokenType.EXISTS": {"fullname": "sqlglot.tokens.TokenType.EXISTS", "modulename": "sqlglot.tokens", "qualname": "TokenType.EXISTS", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.EXISTS: 'EXISTS'>"}, "sqlglot.tokens.TokenType.FALSE": {"fullname": "sqlglot.tokens.TokenType.FALSE", "modulename": "sqlglot.tokens", "qualname": "TokenType.FALSE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.FALSE: 'FALSE'>"}, "sqlglot.tokens.TokenType.FETCH": {"fullname": "sqlglot.tokens.TokenType.FETCH", "modulename": "sqlglot.tokens", "qualname": "TokenType.FETCH", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.FETCH: 'FETCH'>"}, "sqlglot.tokens.TokenType.FILTER": {"fullname": "sqlglot.tokens.TokenType.FILTER", "modulename": "sqlglot.tokens", "qualname": "TokenType.FILTER", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.FILTER: 'FILTER'>"}, "sqlglot.tokens.TokenType.FINAL": {"fullname": "sqlglot.tokens.TokenType.FINAL", "modulename": "sqlglot.tokens", "qualname": "TokenType.FINAL", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.FINAL: 'FINAL'>"}, "sqlglot.tokens.TokenType.FIRST": {"fullname": "sqlglot.tokens.TokenType.FIRST", "modulename": "sqlglot.tokens", "qualname": "TokenType.FIRST", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.FIRST: 'FIRST'>"}, "sqlglot.tokens.TokenType.FOLLOWING": {"fullname": "sqlglot.tokens.TokenType.FOLLOWING", "modulename": "sqlglot.tokens", "qualname": "TokenType.FOLLOWING", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.FOLLOWING: 'FOLLOWING'>"}, "sqlglot.tokens.TokenType.FOR": {"fullname": "sqlglot.tokens.TokenType.FOR", "modulename": "sqlglot.tokens", "qualname": "TokenType.FOR", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.FOR: 'FOR'>"}, "sqlglot.tokens.TokenType.FOREIGN_KEY": {"fullname": "sqlglot.tokens.TokenType.FOREIGN_KEY", "modulename": "sqlglot.tokens", "qualname": "TokenType.FOREIGN_KEY", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.FOREIGN_KEY: 'FOREIGN_KEY'>"}, "sqlglot.tokens.TokenType.FORMAT": {"fullname": "sqlglot.tokens.TokenType.FORMAT", "modulename": "sqlglot.tokens", "qualname": "TokenType.FORMAT", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.FORMAT: 'FORMAT'>"}, "sqlglot.tokens.TokenType.FROM": {"fullname": "sqlglot.tokens.TokenType.FROM", "modulename": "sqlglot.tokens", "qualname": "TokenType.FROM", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.FROM: 'FROM'>"}, "sqlglot.tokens.TokenType.FULL": {"fullname": "sqlglot.tokens.TokenType.FULL", "modulename": "sqlglot.tokens", "qualname": "TokenType.FULL", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.FULL: 'FULL'>"}, "sqlglot.tokens.TokenType.FUNCTION": {"fullname": "sqlglot.tokens.TokenType.FUNCTION", "modulename": "sqlglot.tokens", "qualname": "TokenType.FUNCTION", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.FUNCTION: 'FUNCTION'>"}, "sqlglot.tokens.TokenType.GLOB": {"fullname": "sqlglot.tokens.TokenType.GLOB", "modulename": "sqlglot.tokens", "qualname": "TokenType.GLOB", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.GLOB: 'GLOB'>"}, "sqlglot.tokens.TokenType.GLOBAL": {"fullname": "sqlglot.tokens.TokenType.GLOBAL", "modulename": "sqlglot.tokens", "qualname": "TokenType.GLOBAL", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.GLOBAL: 'GLOBAL'>"}, "sqlglot.tokens.TokenType.GROUP_BY": {"fullname": "sqlglot.tokens.TokenType.GROUP_BY", "modulename": "sqlglot.tokens", "qualname": "TokenType.GROUP_BY", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.GROUP_BY: 'GROUP_BY'>"}, "sqlglot.tokens.TokenType.GROUPING_SETS": {"fullname": "sqlglot.tokens.TokenType.GROUPING_SETS", "modulename": "sqlglot.tokens", "qualname": "TokenType.GROUPING_SETS", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.GROUPING_SETS: 'GROUPING_SETS'>"}, "sqlglot.tokens.TokenType.HAVING": {"fullname": "sqlglot.tokens.TokenType.HAVING", "modulename": "sqlglot.tokens", "qualname": "TokenType.HAVING", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.HAVING: 'HAVING'>"}, "sqlglot.tokens.TokenType.HINT": {"fullname": "sqlglot.tokens.TokenType.HINT", "modulename": "sqlglot.tokens", "qualname": "TokenType.HINT", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.HINT: 'HINT'>"}, "sqlglot.tokens.TokenType.IF": {"fullname": "sqlglot.tokens.TokenType.IF", "modulename": "sqlglot.tokens", "qualname": "TokenType.IF", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.IF: 'IF'>"}, "sqlglot.tokens.TokenType.IGNORE_NULLS": {"fullname": "sqlglot.tokens.TokenType.IGNORE_NULLS", "modulename": "sqlglot.tokens", "qualname": "TokenType.IGNORE_NULLS", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.IGNORE_NULLS: 'IGNORE_NULLS'>"}, "sqlglot.tokens.TokenType.ILIKE": {"fullname": "sqlglot.tokens.TokenType.ILIKE", "modulename": "sqlglot.tokens", "qualname": "TokenType.ILIKE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.ILIKE: 'ILIKE'>"}, "sqlglot.tokens.TokenType.ILIKE_ANY": {"fullname": "sqlglot.tokens.TokenType.ILIKE_ANY", "modulename": "sqlglot.tokens", "qualname": "TokenType.ILIKE_ANY", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.ILIKE_ANY: 'ILIKE_ANY'>"}, "sqlglot.tokens.TokenType.IN": {"fullname": "sqlglot.tokens.TokenType.IN", "modulename": "sqlglot.tokens", "qualname": "TokenType.IN", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.IN: 'IN'>"}, "sqlglot.tokens.TokenType.INDEX": {"fullname": "sqlglot.tokens.TokenType.INDEX", "modulename": "sqlglot.tokens", "qualname": "TokenType.INDEX", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.INDEX: 'INDEX'>"}, "sqlglot.tokens.TokenType.INNER": {"fullname": "sqlglot.tokens.TokenType.INNER", "modulename": "sqlglot.tokens", "qualname": "TokenType.INNER", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.INNER: 'INNER'>"}, "sqlglot.tokens.TokenType.INSERT": {"fullname": "sqlglot.tokens.TokenType.INSERT", "modulename": "sqlglot.tokens", "qualname": "TokenType.INSERT", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.INSERT: 'INSERT'>"}, "sqlglot.tokens.TokenType.INTERSECT": {"fullname": "sqlglot.tokens.TokenType.INTERSECT", "modulename": "sqlglot.tokens", "qualname": "TokenType.INTERSECT", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.INTERSECT: 'INTERSECT'>"}, "sqlglot.tokens.TokenType.INTERVAL": {"fullname": "sqlglot.tokens.TokenType.INTERVAL", "modulename": "sqlglot.tokens", "qualname": "TokenType.INTERVAL", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.INTERVAL: 'INTERVAL'>"}, "sqlglot.tokens.TokenType.INTO": {"fullname": "sqlglot.tokens.TokenType.INTO", "modulename": "sqlglot.tokens", "qualname": "TokenType.INTO", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.INTO: 'INTO'>"}, "sqlglot.tokens.TokenType.INTRODUCER": {"fullname": "sqlglot.tokens.TokenType.INTRODUCER", "modulename": "sqlglot.tokens", "qualname": "TokenType.INTRODUCER", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.INTRODUCER: 'INTRODUCER'>"}, "sqlglot.tokens.TokenType.IRLIKE": {"fullname": "sqlglot.tokens.TokenType.IRLIKE", "modulename": "sqlglot.tokens", "qualname": "TokenType.IRLIKE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.IRLIKE: 'IRLIKE'>"}, "sqlglot.tokens.TokenType.IS": {"fullname": "sqlglot.tokens.TokenType.IS", "modulename": "sqlglot.tokens", "qualname": "TokenType.IS", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.IS: 'IS'>"}, "sqlglot.tokens.TokenType.ISNULL": {"fullname": "sqlglot.tokens.TokenType.ISNULL", "modulename": "sqlglot.tokens", "qualname": "TokenType.ISNULL", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.ISNULL: 'ISNULL'>"}, "sqlglot.tokens.TokenType.JOIN": {"fullname": "sqlglot.tokens.TokenType.JOIN", "modulename": "sqlglot.tokens", "qualname": "TokenType.JOIN", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.JOIN: 'JOIN'>"}, "sqlglot.tokens.TokenType.JOIN_MARKER": {"fullname": "sqlglot.tokens.TokenType.JOIN_MARKER", "modulename": "sqlglot.tokens", "qualname": "TokenType.JOIN_MARKER", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.JOIN_MARKER: 'JOIN_MARKER'>"}, "sqlglot.tokens.TokenType.LANGUAGE": {"fullname": "sqlglot.tokens.TokenType.LANGUAGE", "modulename": "sqlglot.tokens", "qualname": "TokenType.LANGUAGE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.LANGUAGE: 'LANGUAGE'>"}, "sqlglot.tokens.TokenType.LATERAL": {"fullname": "sqlglot.tokens.TokenType.LATERAL", "modulename": "sqlglot.tokens", "qualname": "TokenType.LATERAL", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.LATERAL: 'LATERAL'>"}, "sqlglot.tokens.TokenType.LAZY": {"fullname": "sqlglot.tokens.TokenType.LAZY", "modulename": "sqlglot.tokens", "qualname": "TokenType.LAZY", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.LAZY: 'LAZY'>"}, "sqlglot.tokens.TokenType.LEADING": {"fullname": "sqlglot.tokens.TokenType.LEADING", "modulename": "sqlglot.tokens", "qualname": "TokenType.LEADING", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.LEADING: 'LEADING'>"}, "sqlglot.tokens.TokenType.LEFT": {"fullname": "sqlglot.tokens.TokenType.LEFT", "modulename": "sqlglot.tokens", "qualname": "TokenType.LEFT", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.LEFT: 'LEFT'>"}, "sqlglot.tokens.TokenType.LIKE": {"fullname": "sqlglot.tokens.TokenType.LIKE", "modulename": "sqlglot.tokens", "qualname": "TokenType.LIKE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.LIKE: 'LIKE'>"}, "sqlglot.tokens.TokenType.LIKE_ANY": {"fullname": "sqlglot.tokens.TokenType.LIKE_ANY", "modulename": "sqlglot.tokens", "qualname": "TokenType.LIKE_ANY", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.LIKE_ANY: 'LIKE_ANY'>"}, "sqlglot.tokens.TokenType.LIMIT": {"fullname": "sqlglot.tokens.TokenType.LIMIT", "modulename": "sqlglot.tokens", "qualname": "TokenType.LIMIT", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.LIMIT: 'LIMIT'>"}, "sqlglot.tokens.TokenType.LOAD_DATA": {"fullname": "sqlglot.tokens.TokenType.LOAD_DATA", "modulename": "sqlglot.tokens", "qualname": "TokenType.LOAD_DATA", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.LOAD_DATA: 'LOAD_DATA'>"}, "sqlglot.tokens.TokenType.LOCAL": {"fullname": "sqlglot.tokens.TokenType.LOCAL", "modulename": "sqlglot.tokens", "qualname": "TokenType.LOCAL", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.LOCAL: 'LOCAL'>"}, "sqlglot.tokens.TokenType.MAP": {"fullname": "sqlglot.tokens.TokenType.MAP", "modulename": "sqlglot.tokens", "qualname": "TokenType.MAP", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.MAP: 'MAP'>"}, "sqlglot.tokens.TokenType.MATCH_RECOGNIZE": {"fullname": "sqlglot.tokens.TokenType.MATCH_RECOGNIZE", "modulename": "sqlglot.tokens", "qualname": "TokenType.MATCH_RECOGNIZE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.MATCH_RECOGNIZE: 'MATCH_RECOGNIZE'>"}, "sqlglot.tokens.TokenType.MATERIALIZED": {"fullname": "sqlglot.tokens.TokenType.MATERIALIZED", "modulename": "sqlglot.tokens", "qualname": "TokenType.MATERIALIZED", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.MATERIALIZED: 'MATERIALIZED'>"}, "sqlglot.tokens.TokenType.MERGE": {"fullname": "sqlglot.tokens.TokenType.MERGE", "modulename": "sqlglot.tokens", "qualname": "TokenType.MERGE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.MERGE: 'MERGE'>"}, "sqlglot.tokens.TokenType.MOD": {"fullname": "sqlglot.tokens.TokenType.MOD", "modulename": "sqlglot.tokens", "qualname": "TokenType.MOD", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.MOD: 'MOD'>"}, "sqlglot.tokens.TokenType.NATURAL": {"fullname": "sqlglot.tokens.TokenType.NATURAL", "modulename": "sqlglot.tokens", "qualname": "TokenType.NATURAL", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.NATURAL: 'NATURAL'>"}, "sqlglot.tokens.TokenType.NEXT": {"fullname": "sqlglot.tokens.TokenType.NEXT", "modulename": "sqlglot.tokens", "qualname": "TokenType.NEXT", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.NEXT: 'NEXT'>"}, "sqlglot.tokens.TokenType.NO_ACTION": {"fullname": "sqlglot.tokens.TokenType.NO_ACTION", "modulename": "sqlglot.tokens", "qualname": "TokenType.NO_ACTION", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.NO_ACTION: 'NO_ACTION'>"}, "sqlglot.tokens.TokenType.NOTNULL": {"fullname": "sqlglot.tokens.TokenType.NOTNULL", "modulename": "sqlglot.tokens", "qualname": "TokenType.NOTNULL", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.NOTNULL: 'NOTNULL'>"}, "sqlglot.tokens.TokenType.NULL": {"fullname": "sqlglot.tokens.TokenType.NULL", "modulename": "sqlglot.tokens", "qualname": "TokenType.NULL", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.NULL: 'NULL'>"}, "sqlglot.tokens.TokenType.NULLS_FIRST": {"fullname": "sqlglot.tokens.TokenType.NULLS_FIRST", "modulename": "sqlglot.tokens", "qualname": "TokenType.NULLS_FIRST", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.NULLS_FIRST: 'NULLS_FIRST'>"}, "sqlglot.tokens.TokenType.NULLS_LAST": {"fullname": "sqlglot.tokens.TokenType.NULLS_LAST", "modulename": "sqlglot.tokens", "qualname": "TokenType.NULLS_LAST", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.NULLS_LAST: 'NULLS_LAST'>"}, "sqlglot.tokens.TokenType.OFFSET": {"fullname": "sqlglot.tokens.TokenType.OFFSET", "modulename": "sqlglot.tokens", "qualname": "TokenType.OFFSET", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.OFFSET: 'OFFSET'>"}, "sqlglot.tokens.TokenType.ON": {"fullname": "sqlglot.tokens.TokenType.ON", "modulename": "sqlglot.tokens", "qualname": "TokenType.ON", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.ON: 'ON'>"}, "sqlglot.tokens.TokenType.ONLY": {"fullname": "sqlglot.tokens.TokenType.ONLY", "modulename": "sqlglot.tokens", "qualname": "TokenType.ONLY", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.ONLY: 'ONLY'>"}, "sqlglot.tokens.TokenType.OPTIONS": {"fullname": "sqlglot.tokens.TokenType.OPTIONS", "modulename": "sqlglot.tokens", "qualname": "TokenType.OPTIONS", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.OPTIONS: 'OPTIONS'>"}, "sqlglot.tokens.TokenType.ORDER_BY": {"fullname": "sqlglot.tokens.TokenType.ORDER_BY", "modulename": "sqlglot.tokens", "qualname": "TokenType.ORDER_BY", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.ORDER_BY: 'ORDER_BY'>"}, "sqlglot.tokens.TokenType.ORDERED": {"fullname": "sqlglot.tokens.TokenType.ORDERED", "modulename": "sqlglot.tokens", "qualname": "TokenType.ORDERED", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.ORDERED: 'ORDERED'>"}, "sqlglot.tokens.TokenType.ORDINALITY": {"fullname": "sqlglot.tokens.TokenType.ORDINALITY", "modulename": "sqlglot.tokens", "qualname": "TokenType.ORDINALITY", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.ORDINALITY: 'ORDINALITY'>"}, "sqlglot.tokens.TokenType.OUTER": {"fullname": "sqlglot.tokens.TokenType.OUTER", "modulename": "sqlglot.tokens", "qualname": "TokenType.OUTER", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.OUTER: 'OUTER'>"}, "sqlglot.tokens.TokenType.OUT_OF": {"fullname": "sqlglot.tokens.TokenType.OUT_OF", "modulename": "sqlglot.tokens", "qualname": "TokenType.OUT_OF", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.OUT_OF: 'OUT_OF'>"}, "sqlglot.tokens.TokenType.OVER": {"fullname": "sqlglot.tokens.TokenType.OVER", "modulename": "sqlglot.tokens", "qualname": "TokenType.OVER", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.OVER: 'OVER'>"}, "sqlglot.tokens.TokenType.OVERLAPS": {"fullname": "sqlglot.tokens.TokenType.OVERLAPS", "modulename": "sqlglot.tokens", "qualname": "TokenType.OVERLAPS", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.OVERLAPS: 'OVERLAPS'>"}, "sqlglot.tokens.TokenType.OVERWRITE": {"fullname": "sqlglot.tokens.TokenType.OVERWRITE", "modulename": "sqlglot.tokens", "qualname": "TokenType.OVERWRITE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.OVERWRITE: 'OVERWRITE'>"}, "sqlglot.tokens.TokenType.PARTITION": {"fullname": "sqlglot.tokens.TokenType.PARTITION", "modulename": "sqlglot.tokens", "qualname": "TokenType.PARTITION", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.PARTITION: 'PARTITION'>"}, "sqlglot.tokens.TokenType.PARTITION_BY": {"fullname": "sqlglot.tokens.TokenType.PARTITION_BY", "modulename": "sqlglot.tokens", "qualname": "TokenType.PARTITION_BY", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.PARTITION_BY: 'PARTITION_BY'>"}, "sqlglot.tokens.TokenType.PERCENT": {"fullname": "sqlglot.tokens.TokenType.PERCENT", "modulename": "sqlglot.tokens", "qualname": "TokenType.PERCENT", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.PERCENT: 'PERCENT'>"}, "sqlglot.tokens.TokenType.PIVOT": {"fullname": "sqlglot.tokens.TokenType.PIVOT", "modulename": "sqlglot.tokens", "qualname": "TokenType.PIVOT", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.PIVOT: 'PIVOT'>"}, "sqlglot.tokens.TokenType.PLACEHOLDER": {"fullname": "sqlglot.tokens.TokenType.PLACEHOLDER", "modulename": "sqlglot.tokens", "qualname": "TokenType.PLACEHOLDER", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.PLACEHOLDER: 'PLACEHOLDER'>"}, "sqlglot.tokens.TokenType.PRAGMA": {"fullname": "sqlglot.tokens.TokenType.PRAGMA", "modulename": "sqlglot.tokens", "qualname": "TokenType.PRAGMA", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.PRAGMA: 'PRAGMA'>"}, "sqlglot.tokens.TokenType.PRECEDING": {"fullname": "sqlglot.tokens.TokenType.PRECEDING", "modulename": "sqlglot.tokens", "qualname": "TokenType.PRECEDING", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.PRECEDING: 'PRECEDING'>"}, "sqlglot.tokens.TokenType.PRIMARY_KEY": {"fullname": "sqlglot.tokens.TokenType.PRIMARY_KEY", "modulename": "sqlglot.tokens", "qualname": "TokenType.PRIMARY_KEY", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.PRIMARY_KEY: 'PRIMARY_KEY'>"}, "sqlglot.tokens.TokenType.PROCEDURE": {"fullname": "sqlglot.tokens.TokenType.PROCEDURE", "modulename": "sqlglot.tokens", "qualname": "TokenType.PROCEDURE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.PROCEDURE: 'PROCEDURE'>"}, "sqlglot.tokens.TokenType.PROPERTIES": {"fullname": "sqlglot.tokens.TokenType.PROPERTIES", "modulename": "sqlglot.tokens", "qualname": "TokenType.PROPERTIES", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.PROPERTIES: 'PROPERTIES'>"}, "sqlglot.tokens.TokenType.PSEUDO_TYPE": {"fullname": "sqlglot.tokens.TokenType.PSEUDO_TYPE", "modulename": "sqlglot.tokens", "qualname": "TokenType.PSEUDO_TYPE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.PSEUDO_TYPE: 'PSEUDO_TYPE'>"}, "sqlglot.tokens.TokenType.QUALIFY": {"fullname": "sqlglot.tokens.TokenType.QUALIFY", "modulename": "sqlglot.tokens", "qualname": "TokenType.QUALIFY", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.QUALIFY: 'QUALIFY'>"}, "sqlglot.tokens.TokenType.QUOTE": {"fullname": "sqlglot.tokens.TokenType.QUOTE", "modulename": "sqlglot.tokens", "qualname": "TokenType.QUOTE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.QUOTE: 'QUOTE'>"}, "sqlglot.tokens.TokenType.RANGE": {"fullname": "sqlglot.tokens.TokenType.RANGE", "modulename": "sqlglot.tokens", "qualname": "TokenType.RANGE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.RANGE: 'RANGE'>"}, "sqlglot.tokens.TokenType.RECURSIVE": {"fullname": "sqlglot.tokens.TokenType.RECURSIVE", "modulename": "sqlglot.tokens", "qualname": "TokenType.RECURSIVE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.RECURSIVE: 'RECURSIVE'>"}, "sqlglot.tokens.TokenType.REPLACE": {"fullname": "sqlglot.tokens.TokenType.REPLACE", "modulename": "sqlglot.tokens", "qualname": "TokenType.REPLACE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.REPLACE: 'REPLACE'>"}, "sqlglot.tokens.TokenType.RESPECT_NULLS": {"fullname": "sqlglot.tokens.TokenType.RESPECT_NULLS", "modulename": "sqlglot.tokens", "qualname": "TokenType.RESPECT_NULLS", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.RESPECT_NULLS: 'RESPECT_NULLS'>"}, "sqlglot.tokens.TokenType.RETURNING": {"fullname": "sqlglot.tokens.TokenType.RETURNING", "modulename": "sqlglot.tokens", "qualname": "TokenType.RETURNING", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.RETURNING: 'RETURNING'>"}, "sqlglot.tokens.TokenType.REFERENCES": {"fullname": "sqlglot.tokens.TokenType.REFERENCES", "modulename": "sqlglot.tokens", "qualname": "TokenType.REFERENCES", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.REFERENCES: 'REFERENCES'>"}, "sqlglot.tokens.TokenType.RIGHT": {"fullname": "sqlglot.tokens.TokenType.RIGHT", "modulename": "sqlglot.tokens", "qualname": "TokenType.RIGHT", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.RIGHT: 'RIGHT'>"}, "sqlglot.tokens.TokenType.RLIKE": {"fullname": "sqlglot.tokens.TokenType.RLIKE", "modulename": "sqlglot.tokens", "qualname": "TokenType.RLIKE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.RLIKE: 'RLIKE'>"}, "sqlglot.tokens.TokenType.ROLLBACK": {"fullname": "sqlglot.tokens.TokenType.ROLLBACK", "modulename": "sqlglot.tokens", "qualname": "TokenType.ROLLBACK", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.ROLLBACK: 'ROLLBACK'>"}, "sqlglot.tokens.TokenType.ROLLUP": {"fullname": "sqlglot.tokens.TokenType.ROLLUP", "modulename": "sqlglot.tokens", "qualname": "TokenType.ROLLUP", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.ROLLUP: 'ROLLUP'>"}, "sqlglot.tokens.TokenType.ROW": {"fullname": "sqlglot.tokens.TokenType.ROW", "modulename": "sqlglot.tokens", "qualname": "TokenType.ROW", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.ROW: 'ROW'>"}, "sqlglot.tokens.TokenType.ROWS": {"fullname": "sqlglot.tokens.TokenType.ROWS", "modulename": "sqlglot.tokens", "qualname": "TokenType.ROWS", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.ROWS: 'ROWS'>"}, "sqlglot.tokens.TokenType.SEED": {"fullname": "sqlglot.tokens.TokenType.SEED", "modulename": "sqlglot.tokens", "qualname": "TokenType.SEED", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.SEED: 'SEED'>"}, "sqlglot.tokens.TokenType.SELECT": {"fullname": "sqlglot.tokens.TokenType.SELECT", "modulename": "sqlglot.tokens", "qualname": "TokenType.SELECT", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.SELECT: 'SELECT'>"}, "sqlglot.tokens.TokenType.SEMI": {"fullname": "sqlglot.tokens.TokenType.SEMI", "modulename": "sqlglot.tokens", "qualname": "TokenType.SEMI", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.SEMI: 'SEMI'>"}, "sqlglot.tokens.TokenType.SEPARATOR": {"fullname": "sqlglot.tokens.TokenType.SEPARATOR", "modulename": "sqlglot.tokens", "qualname": "TokenType.SEPARATOR", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.SEPARATOR: 'SEPARATOR'>"}, "sqlglot.tokens.TokenType.SERDE_PROPERTIES": {"fullname": "sqlglot.tokens.TokenType.SERDE_PROPERTIES", "modulename": "sqlglot.tokens", "qualname": "TokenType.SERDE_PROPERTIES", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.SERDE_PROPERTIES: 'SERDE_PROPERTIES'>"}, "sqlglot.tokens.TokenType.SET": {"fullname": "sqlglot.tokens.TokenType.SET", "modulename": "sqlglot.tokens", "qualname": "TokenType.SET", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.SET: 'SET'>"}, "sqlglot.tokens.TokenType.SHOW": {"fullname": "sqlglot.tokens.TokenType.SHOW", "modulename": "sqlglot.tokens", "qualname": "TokenType.SHOW", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.SHOW: 'SHOW'>"}, "sqlglot.tokens.TokenType.SIMILAR_TO": {"fullname": "sqlglot.tokens.TokenType.SIMILAR_TO", "modulename": "sqlglot.tokens", "qualname": "TokenType.SIMILAR_TO", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.SIMILAR_TO: 'SIMILAR_TO'>"}, "sqlglot.tokens.TokenType.SOME": {"fullname": "sqlglot.tokens.TokenType.SOME", "modulename": "sqlglot.tokens", "qualname": "TokenType.SOME", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.SOME: 'SOME'>"}, "sqlglot.tokens.TokenType.SORTKEY": {"fullname": "sqlglot.tokens.TokenType.SORTKEY", "modulename": "sqlglot.tokens", "qualname": "TokenType.SORTKEY", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.SORTKEY: 'SORTKEY'>"}, "sqlglot.tokens.TokenType.SORT_BY": {"fullname": "sqlglot.tokens.TokenType.SORT_BY", "modulename": "sqlglot.tokens", "qualname": "TokenType.SORT_BY", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.SORT_BY: 'SORT_BY'>"}, "sqlglot.tokens.TokenType.STRUCT": {"fullname": "sqlglot.tokens.TokenType.STRUCT", "modulename": "sqlglot.tokens", "qualname": "TokenType.STRUCT", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.STRUCT: 'STRUCT'>"}, "sqlglot.tokens.TokenType.TABLE_SAMPLE": {"fullname": "sqlglot.tokens.TokenType.TABLE_SAMPLE", "modulename": "sqlglot.tokens", "qualname": "TokenType.TABLE_SAMPLE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.TABLE_SAMPLE: 'TABLE_SAMPLE'>"}, "sqlglot.tokens.TokenType.TEMPORARY": {"fullname": "sqlglot.tokens.TokenType.TEMPORARY", "modulename": "sqlglot.tokens", "qualname": "TokenType.TEMPORARY", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.TEMPORARY: 'TEMPORARY'>"}, "sqlglot.tokens.TokenType.TOP": {"fullname": "sqlglot.tokens.TokenType.TOP", "modulename": "sqlglot.tokens", "qualname": "TokenType.TOP", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.TOP: 'TOP'>"}, "sqlglot.tokens.TokenType.THEN": {"fullname": "sqlglot.tokens.TokenType.THEN", "modulename": "sqlglot.tokens", "qualname": "TokenType.THEN", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.THEN: 'THEN'>"}, "sqlglot.tokens.TokenType.TRAILING": {"fullname": "sqlglot.tokens.TokenType.TRAILING", "modulename": "sqlglot.tokens", "qualname": "TokenType.TRAILING", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.TRAILING: 'TRAILING'>"}, "sqlglot.tokens.TokenType.TRUE": {"fullname": "sqlglot.tokens.TokenType.TRUE", "modulename": "sqlglot.tokens", "qualname": "TokenType.TRUE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.TRUE: 'TRUE'>"}, "sqlglot.tokens.TokenType.UNBOUNDED": {"fullname": "sqlglot.tokens.TokenType.UNBOUNDED", "modulename": "sqlglot.tokens", "qualname": "TokenType.UNBOUNDED", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.UNBOUNDED: 'UNBOUNDED'>"}, "sqlglot.tokens.TokenType.UNCACHE": {"fullname": "sqlglot.tokens.TokenType.UNCACHE", "modulename": "sqlglot.tokens", "qualname": "TokenType.UNCACHE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.UNCACHE: 'UNCACHE'>"}, "sqlglot.tokens.TokenType.UNION": {"fullname": "sqlglot.tokens.TokenType.UNION", "modulename": "sqlglot.tokens", "qualname": "TokenType.UNION", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.UNION: 'UNION'>"}, "sqlglot.tokens.TokenType.UNLOGGED": {"fullname": "sqlglot.tokens.TokenType.UNLOGGED", "modulename": "sqlglot.tokens", "qualname": "TokenType.UNLOGGED", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.UNLOGGED: 'UNLOGGED'>"}, "sqlglot.tokens.TokenType.UNNEST": {"fullname": "sqlglot.tokens.TokenType.UNNEST", "modulename": "sqlglot.tokens", "qualname": "TokenType.UNNEST", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.UNNEST: 'UNNEST'>"}, "sqlglot.tokens.TokenType.UNPIVOT": {"fullname": "sqlglot.tokens.TokenType.UNPIVOT", "modulename": "sqlglot.tokens", "qualname": "TokenType.UNPIVOT", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.UNPIVOT: 'UNPIVOT'>"}, "sqlglot.tokens.TokenType.UPDATE": {"fullname": "sqlglot.tokens.TokenType.UPDATE", "modulename": "sqlglot.tokens", "qualname": "TokenType.UPDATE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.UPDATE: 'UPDATE'>"}, "sqlglot.tokens.TokenType.USE": {"fullname": "sqlglot.tokens.TokenType.USE", "modulename": "sqlglot.tokens", "qualname": "TokenType.USE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.USE: 'USE'>"}, "sqlglot.tokens.TokenType.USING": {"fullname": "sqlglot.tokens.TokenType.USING", "modulename": "sqlglot.tokens", "qualname": "TokenType.USING", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.USING: 'USING'>"}, "sqlglot.tokens.TokenType.VALUES": {"fullname": "sqlglot.tokens.TokenType.VALUES", "modulename": "sqlglot.tokens", "qualname": "TokenType.VALUES", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.VALUES: 'VALUES'>"}, "sqlglot.tokens.TokenType.VIEW": {"fullname": "sqlglot.tokens.TokenType.VIEW", "modulename": "sqlglot.tokens", "qualname": "TokenType.VIEW", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.VIEW: 'VIEW'>"}, "sqlglot.tokens.TokenType.VOLATILE": {"fullname": "sqlglot.tokens.TokenType.VOLATILE", "modulename": "sqlglot.tokens", "qualname": "TokenType.VOLATILE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.VOLATILE: 'VOLATILE'>"}, "sqlglot.tokens.TokenType.WHEN": {"fullname": "sqlglot.tokens.TokenType.WHEN", "modulename": "sqlglot.tokens", "qualname": "TokenType.WHEN", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.WHEN: 'WHEN'>"}, "sqlglot.tokens.TokenType.WHERE": {"fullname": "sqlglot.tokens.TokenType.WHERE", "modulename": "sqlglot.tokens", "qualname": "TokenType.WHERE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.WHERE: 'WHERE'>"}, "sqlglot.tokens.TokenType.WINDOW": {"fullname": "sqlglot.tokens.TokenType.WINDOW", "modulename": "sqlglot.tokens", "qualname": "TokenType.WINDOW", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.WINDOW: 'WINDOW'>"}, "sqlglot.tokens.TokenType.WITH": {"fullname": "sqlglot.tokens.TokenType.WITH", "modulename": "sqlglot.tokens", "qualname": "TokenType.WITH", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.WITH: 'WITH'>"}, "sqlglot.tokens.TokenType.WITH_TIME_ZONE": {"fullname": "sqlglot.tokens.TokenType.WITH_TIME_ZONE", "modulename": "sqlglot.tokens", "qualname": "TokenType.WITH_TIME_ZONE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.WITH_TIME_ZONE: 'WITH_TIME_ZONE'>"}, "sqlglot.tokens.TokenType.WITH_LOCAL_TIME_ZONE": {"fullname": "sqlglot.tokens.TokenType.WITH_LOCAL_TIME_ZONE", "modulename": "sqlglot.tokens", "qualname": "TokenType.WITH_LOCAL_TIME_ZONE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.WITH_LOCAL_TIME_ZONE: 'WITH_LOCAL_TIME_ZONE'>"}, "sqlglot.tokens.TokenType.WITHIN_GROUP": {"fullname": "sqlglot.tokens.TokenType.WITHIN_GROUP", "modulename": "sqlglot.tokens", "qualname": "TokenType.WITHIN_GROUP", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.WITHIN_GROUP: 'WITHIN_GROUP'>"}, "sqlglot.tokens.TokenType.WITHOUT_TIME_ZONE": {"fullname": "sqlglot.tokens.TokenType.WITHOUT_TIME_ZONE", "modulename": "sqlglot.tokens", "qualname": "TokenType.WITHOUT_TIME_ZONE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.WITHOUT_TIME_ZONE: 'WITHOUT_TIME_ZONE'>"}, "sqlglot.tokens.TokenType.UNIQUE": {"fullname": "sqlglot.tokens.TokenType.UNIQUE", "modulename": "sqlglot.tokens", "qualname": "TokenType.UNIQUE", "kind": "variable", "doc": "

\n", "default_value": "<TokenType.UNIQUE: 'UNIQUE'>"}, "sqlglot.tokens.Token": {"fullname": "sqlglot.tokens.Token", "modulename": "sqlglot.tokens", "qualname": "Token", "kind": "class", "doc": "

\n"}, "sqlglot.tokens.Token.__init__": {"fullname": "sqlglot.tokens.Token.__init__", "modulename": "sqlglot.tokens", "qualname": "Token.__init__", "kind": "function", "doc": "

\n", "signature": "(\ttoken_type: sqlglot.tokens.TokenType,\ttext: str,\tline: int = 1,\tcol: int = 1,\tend: int = 0,\tcomments: List[str] = [])"}, "sqlglot.tokens.Token.number": {"fullname": "sqlglot.tokens.Token.number", "modulename": "sqlglot.tokens", "qualname": "Token.number", "kind": "function", "doc": "

Returns a NUMBER token with number as its text.

\n", "signature": "(cls, number: int) -> sqlglot.tokens.Token:", "funcdef": "def"}, "sqlglot.tokens.Token.string": {"fullname": "sqlglot.tokens.Token.string", "modulename": "sqlglot.tokens", "qualname": "Token.string", "kind": "function", "doc": "

Returns a STRING token with string as its text.

\n", "signature": "(cls, string: str) -> sqlglot.tokens.Token:", "funcdef": "def"}, "sqlglot.tokens.Token.identifier": {"fullname": "sqlglot.tokens.Token.identifier", "modulename": "sqlglot.tokens", "qualname": "Token.identifier", "kind": "function", "doc": "

Returns an IDENTIFIER token with identifier as its text.

\n", "signature": "(cls, identifier: str) -> sqlglot.tokens.Token:", "funcdef": "def"}, "sqlglot.tokens.Token.var": {"fullname": "sqlglot.tokens.Token.var", "modulename": "sqlglot.tokens", "qualname": "Token.var", "kind": "function", "doc": "

Returns an VAR token with var as its text.

\n", "signature": "(cls, var: str) -> sqlglot.tokens.Token:", "funcdef": "def"}, "sqlglot.tokens.Token.start": {"fullname": "sqlglot.tokens.Token.start", "modulename": "sqlglot.tokens", "qualname": "Token.start", "kind": "variable", "doc": "

Returns the start of the token.

\n", "annotation": ": int"}, "sqlglot.tokens.Tokenizer": {"fullname": "sqlglot.tokens.Tokenizer", "modulename": "sqlglot.tokens", "qualname": "Tokenizer", "kind": "class", "doc": "

\n"}, "sqlglot.tokens.Tokenizer.reset": {"fullname": "sqlglot.tokens.Tokenizer.reset", "modulename": "sqlglot.tokens", "qualname": "Tokenizer.reset", "kind": "function", "doc": "

\n", "signature": "(self) -> None:", "funcdef": "def"}, "sqlglot.tokens.Tokenizer.tokenize": {"fullname": "sqlglot.tokens.Tokenizer.tokenize", "modulename": "sqlglot.tokens", "qualname": "Tokenizer.tokenize", "kind": "function", "doc": "

Returns a list of tokens corresponding to the SQL string sql.

\n", "signature": "(self, sql: str) -> List[sqlglot.tokens.Token]:", "funcdef": "def"}, "sqlglot.transforms": {"fullname": "sqlglot.transforms", "modulename": "sqlglot.transforms", "kind": "module", "doc": "

\n"}, "sqlglot.transforms.unalias_group": {"fullname": "sqlglot.transforms.unalias_group", "modulename": "sqlglot.transforms", "qualname": "unalias_group", "kind": "function", "doc": "

Replace references to select aliases in GROUP BY clauses.

\n\n
Example:
\n\n
\n
\n
>>> import sqlglot\n>>> sqlglot.parse_one("SELECT a AS b FROM x GROUP BY b").transform(unalias_group).sql()\n'SELECT a AS b FROM x GROUP BY 1'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • expression: the expression that will be transformed.
  • \n
\n\n
Returns:
\n\n
\n

The transformed expression.

\n
\n", "signature": "(\texpression: sqlglot.expressions.Expression) -> sqlglot.expressions.Expression:", "funcdef": "def"}, "sqlglot.transforms.eliminate_distinct_on": {"fullname": "sqlglot.transforms.eliminate_distinct_on", "modulename": "sqlglot.transforms", "qualname": "eliminate_distinct_on", "kind": "function", "doc": "

Convert SELECT DISTINCT ON statements to a subquery with a window function.

\n\n

This is useful for dialects that don't support SELECT DISTINCT ON but support window functions.

\n\n
Arguments:
\n\n
    \n
  • expression: the expression that will be transformed.
  • \n
\n\n
Returns:
\n\n
\n

The transformed expression.

\n
\n", "signature": "(\texpression: sqlglot.expressions.Expression) -> sqlglot.expressions.Expression:", "funcdef": "def"}, "sqlglot.transforms.eliminate_qualify": {"fullname": "sqlglot.transforms.eliminate_qualify", "modulename": "sqlglot.transforms", "qualname": "eliminate_qualify", "kind": "function", "doc": "

Convert SELECT statements that contain the QUALIFY clause into subqueries, filtered equivalently.

\n\n

The idea behind this transformation can be seen in Snowflake's documentation for QUALIFY:\nhttps://docs.snowflake.com/en/sql-reference/constructs/qualify

\n\n

Some dialects don't support window functions in the WHERE clause, so we need to include them as\nprojections in the subquery, in order to refer to them in the outer filter using aliases. Also,\nif a column is referenced in the QUALIFY clause but is not selected, we need to include it too,\notherwise we won't be able to refer to it in the outer query's WHERE clause.

\n", "signature": "(\texpression: sqlglot.expressions.Expression) -> sqlglot.expressions.Expression:", "funcdef": "def"}, "sqlglot.transforms.remove_precision_parameterized_types": {"fullname": "sqlglot.transforms.remove_precision_parameterized_types", "modulename": "sqlglot.transforms", "qualname": "remove_precision_parameterized_types", "kind": "function", "doc": "

Some dialects only allow the precision for parameterized types to be defined in the DDL and not in\nother expressions. This transforms removes the precision from parameterized types in expressions.

\n", "signature": "(\texpression: sqlglot.expressions.Expression) -> sqlglot.expressions.Expression:", "funcdef": "def"}, "sqlglot.transforms.unnest_to_explode": {"fullname": "sqlglot.transforms.unnest_to_explode", "modulename": "sqlglot.transforms", "qualname": "unnest_to_explode", "kind": "function", "doc": "

Convert cross join unnest into lateral view explode (used in presto -> hive).

\n", "signature": "(\texpression: sqlglot.expressions.Expression) -> sqlglot.expressions.Expression:", "funcdef": "def"}, "sqlglot.transforms.explode_to_unnest": {"fullname": "sqlglot.transforms.explode_to_unnest", "modulename": "sqlglot.transforms", "qualname": "explode_to_unnest", "kind": "function", "doc": "

Convert explode/posexplode into unnest (used in hive -> presto).

\n", "signature": "(\texpression: sqlglot.expressions.Expression) -> sqlglot.expressions.Expression:", "funcdef": "def"}, "sqlglot.transforms.remove_target_from_merge": {"fullname": "sqlglot.transforms.remove_target_from_merge", "modulename": "sqlglot.transforms", "qualname": "remove_target_from_merge", "kind": "function", "doc": "

Remove table refs from columns in when statements.

\n", "signature": "(\texpression: sqlglot.expressions.Expression) -> sqlglot.expressions.Expression:", "funcdef": "def"}, "sqlglot.transforms.preprocess": {"fullname": "sqlglot.transforms.preprocess", "modulename": "sqlglot.transforms", "qualname": "preprocess", "kind": "function", "doc": "

Creates a new transform by chaining a sequence of transformations and converts the resulting\nexpression to SQL, using an appropriate Generator.TRANSFORMS function.

\n\n
Arguments:
\n\n
    \n
  • transforms: sequence of transform functions. These will be called in order.
  • \n
\n\n
Returns:
\n\n
\n

Function that can be used as a generator transform.

\n
\n", "signature": "(\ttransforms: List[Callable[[sqlglot.expressions.Expression], sqlglot.expressions.Expression]]) -> Callable[[sqlglot.generator.Generator, sqlglot.expressions.Expression], str]:", "funcdef": "def"}, "sqlglot.trie": {"fullname": "sqlglot.trie", "modulename": "sqlglot.trie", "kind": "module", "doc": "

\n"}, "sqlglot.trie.new_trie": {"fullname": "sqlglot.trie.new_trie", "modulename": "sqlglot.trie", "qualname": "new_trie", "kind": "function", "doc": "

Creates a new trie out of a collection of keywords.

\n\n

The trie is represented as a sequence of nested dictionaries keyed by either single character\nstrings, or by 0, which is used to designate that a keyword is in the trie.

\n\n
Example:
\n\n
\n
\n
>>> new_trie(["bla", "foo", "blab"])\n{'b': {'l': {'a': {0: True, 'b': {0: True}}}}, 'f': {'o': {'o': {0: True}}}}\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • keywords: the keywords to create the trie from.
  • \n
  • trie: a trie to mutate instead of creating a new one
  • \n
\n\n
Returns:
\n\n
\n

The trie corresponding to keywords.

\n
\n", "signature": "(\tkeywords: Iterable[Sequence[Hashable]],\ttrie: Optional[Dict] = None) -> Dict:", "funcdef": "def"}, "sqlglot.trie.in_trie": {"fullname": "sqlglot.trie.in_trie", "modulename": "sqlglot.trie", "qualname": "in_trie", "kind": "function", "doc": "

Checks whether a key is in a trie.

\n\n
Examples:
\n\n
\n
\n
>>> in_trie(new_trie(["cat"]), "bob")\n(0, {'c': {'a': {'t': {0: True}}}})\n
\n
\n \n
\n
>>> in_trie(new_trie(["cat"]), "ca")\n(1, {'t': {0: True}})\n
\n
\n \n
\n
>>> in_trie(new_trie(["cat"]), "cat")\n(2, {0: True})\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • trie: the trie to be searched.
  • \n
  • key: the target key.
  • \n
\n\n
Returns:
\n\n
\n

A pair (value, subtrie), where subtrie is the sub-trie we get at the point where the search stops, and value\n is either 0 (search was unsuccessful), 1 (value is a prefix of a keyword in trie) or 2 (key is intrie`).

\n
\n", "signature": "(trie: Dict, key: Sequence[Hashable]) -> Tuple[int, Dict]:", "funcdef": "def"}}, "docInfo": {"sqlglot": {"qualname": 0, "fullname": 1, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 5691}, "sqlglot.pretty": {"qualname": 1, "fullname": 2, "annotation": 0, "default_value": 1, "signature": 0, "bases": 0, "doc": 10}, "sqlglot.schema": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.parse": {"qualname": 1, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 124, "bases": 0, "doc": 84}, "sqlglot.parse_one": {"qualname": 2, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 198, "bases": 0, "doc": 99}, "sqlglot.transpile": {"qualname": 1, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 239, "bases": 0, "doc": 177}, "sqlglot.dataframe": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3543}, "sqlglot.dataframe.sql": {"qualname": 0, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.SparkSession": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.SparkSession.table": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 44, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.SparkSession.createDataFrame": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 208, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.SparkSession.sql": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 44, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.DataFrame": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.DataFrame.__init__": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 259, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.DataFrame.sql": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 51, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.DataFrame.copy": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 41, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.DataFrame.select": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 48, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.DataFrame.alias": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 51, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.DataFrame.where": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 86, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.DataFrame.filter": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 86, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.DataFrame.groupBy": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 48, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.DataFrame.agg": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 48, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.DataFrame.join": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 180, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.DataFrame.orderBy": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 120, "bases": 0, "doc": 44}, "sqlglot.dataframe.sql.DataFrame.sort": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 120, "bases": 0, "doc": 44}, "sqlglot.dataframe.sql.DataFrame.union": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 66, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.DataFrame.unionAll": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 66, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.DataFrame.unionByName": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 61, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.DataFrame.intersect": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 66, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.DataFrame.intersectAll": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 66, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.DataFrame.exceptAll": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 66, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.DataFrame.distinct": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.DataFrame.dropDuplicates": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 38, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.DataFrame.dropna": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 138, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.DataFrame.fillna": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 123, "bases": 0, "doc": 100}, "sqlglot.dataframe.sql.DataFrame.replace": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 217, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.DataFrame.withColumn": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 77, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.DataFrame.withColumnRenamed": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 31, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.DataFrame.drop": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 80, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.DataFrame.limit": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 44, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.DataFrame.hint": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 77, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.DataFrame.repartition": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 111, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.DataFrame.coalesce": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 44, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.DataFrame.cache": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.DataFrame.persist": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 60, "bases": 0, "doc": 20}, "sqlglot.dataframe.sql.GroupedData": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.GroupedData.__init__": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 106, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.GroupedData.agg": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 90, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.GroupedData.count": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.GroupedData.mean": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 46, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.GroupedData.avg": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 46, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.GroupedData.max": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 46, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.GroupedData.min": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 46, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.GroupedData.sum": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 46, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.GroupedData.pivot": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 46, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.Column": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.Column.__init__": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 63, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.Column.ensure_col": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 71, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.Column.ensure_cols": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 98, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.Column.invoke_anonymous_function": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 123, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.Column.invoke_expression_over_column": {"qualname": 5, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 92, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.Column.binary_op": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 85, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.Column.inverse_binary_op": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 85, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.Column.unary_op": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 51, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.Column.ensure_literal": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 39, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.Column.copy": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.Column.set_table_name": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 55, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.Column.sql": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 21, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.Column.alias": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 44, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.Column.asc": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.Column.desc": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.Column.asc_nulls_first": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.Column.asc_nulls_last": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.Column.desc_nulls_first": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.Column.desc_nulls_last": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.Column.when": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 77, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.Column.otherwise": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 44, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.Column.isNull": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.Column.isNotNull": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.Column.cast": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 53, "bases": 0, "doc": 27}, "sqlglot.dataframe.sql.Column.startswith": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 78, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.Column.endswith": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 78, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.Column.rlike": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 44, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.Column.like": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 21, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.Column.ilike": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 21, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.Column.substr": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 121, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.Column.isin": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 81, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.Column.between": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 97, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.Column.over": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 66, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.DataFrameNaFunctions": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.DataFrameNaFunctions.__init__": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.DataFrameNaFunctions.drop": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 138, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.DataFrameNaFunctions.fill": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 143, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.DataFrameNaFunctions.replace": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 177, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.Window": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.Window.partitionBy": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 104, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.Window.orderBy": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 104, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.Window.rowsBetween": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 54, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.Window.rangeBetween": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 54, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.WindowSpec": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.WindowSpec.__init__": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 38, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.WindowSpec.copy": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.WindowSpec.sql": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 21, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.WindowSpec.partitionBy": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 104, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.WindowSpec.orderBy": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 104, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.WindowSpec.rowsBetween": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 54, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.WindowSpec.rangeBetween": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 54, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.DataFrameReader": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.DataFrameReader.__init__": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.DataFrameReader.table": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 44, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.DataFrameWriter": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.DataFrameWriter.__init__": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 122, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.DataFrameWriter.copy": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 41, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.DataFrameWriter.sql": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 27, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.DataFrameWriter.mode": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 52, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.DataFrameWriter.insertInto": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 70, "bases": 0, "doc": 3}, "sqlglot.dataframe.sql.DataFrameWriter.saveAsTable": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 71, "bases": 0, "doc": 3}, "sqlglot.dialects": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 764}, "sqlglot.dialects.bigquery": {"qualname": 0, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 7}, "sqlglot.dialects.bigquery.BigQuery": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 4, "doc": 3}, "sqlglot.dialects.bigquery.BigQuery.Tokenizer": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 3}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 174}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 503}, "sqlglot.dialects.bigquery.BigQuery.Generator.array_sql": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.dialects.bigquery.BigQuery.Generator.transaction_sql": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 22, "bases": 0, "doc": 3}, "sqlglot.dialects.bigquery.BigQuery.Generator.commit_sql": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 22, "bases": 0, "doc": 3}, "sqlglot.dialects.bigquery.BigQuery.Generator.rollback_sql": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 22, "bases": 0, "doc": 3}, "sqlglot.dialects.bigquery.BigQuery.Generator.in_unnest_op": {"qualname": 5, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.dialects.bigquery.BigQuery.Generator.except_op": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.dialects.bigquery.BigQuery.Generator.intersect_op": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.dialects.clickhouse": {"qualname": 0, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dialects.clickhouse.ClickHouse": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 4, "doc": 3}, "sqlglot.dialects.clickhouse.ClickHouse.Tokenizer": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 3}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 174}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 503}, "sqlglot.dialects.clickhouse.ClickHouse.Generator.cte_sql": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.dialects.databricks": {"qualname": 0, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dialects.databricks.Databricks": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 4, "doc": 3}, "sqlglot.dialects.databricks.Databricks.Parser": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 5, "doc": 174}, "sqlglot.dialects.databricks.Databricks.Generator": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 5, "doc": 503}, "sqlglot.dialects.databricks.Databricks.Tokenizer": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 5, "doc": 3}, "sqlglot.dialects.dialect": {"qualname": 0, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.Dialects": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 4, "doc": 5}, "sqlglot.dialects.dialect.Dialects.DIALECT": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 8, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.Dialects.BIGQUERY": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.Dialects.CLICKHOUSE": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.Dialects.DUCKDB": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.Dialects.HIVE": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.Dialects.MYSQL": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.Dialects.ORACLE": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.Dialects.POSTGRES": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.Dialects.PRESTO": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.Dialects.REDSHIFT": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.Dialects.SNOWFLAKE": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.Dialects.SPARK": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.Dialects.SQLITE": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.Dialects.STARROCKS": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.Dialects.TABLEAU": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.Dialects.TRINO": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.Dialects.TSQL": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.Dialects.DATABRICKS": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.Dialects.DRILL": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.Dialects.TERADATA": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.Dialect": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.Dialect.get_or_raise": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 105, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.Dialect.format_time": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 70, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.Dialect.parse": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 51, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.Dialect.parse_into": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 126, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.Dialect.generate": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 50, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.Dialect.transpile": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 37, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.Dialect.tokenize": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 40, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.Dialect.parser": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 31, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.Dialect.generator": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 31, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.rename_func": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 58, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.approx_count_distinct_sql": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 51, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.if_sql": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 51, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.arrow_json_extract_sql": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 67, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.arrow_json_extract_scalar_sql": {"qualname": 5, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 67, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.inline_array_sql": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 51, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.no_ilike_sql": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 51, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.no_paren_current_date_sql": {"qualname": 5, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 51, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.no_recursive_cte_sql": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 51, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.no_safe_divide_sql": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 51, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.no_tablesample_sql": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 51, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.no_pivot_sql": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 51, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.no_trycast_sql": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 51, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.no_properties_sql": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 51, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.no_comment_column_constraint_sql": {"qualname": 5, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 51, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.str_position_sql": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 51, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.struct_extract_sql": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 51, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.var_map_sql": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 91, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.format_time_lambda": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 90, "bases": 0, "doc": 71}, "sqlglot.dialects.dialect.create_with_partitions_sql": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 51, "bases": 0, "doc": 46}, "sqlglot.dialects.dialect.parse_date_delta": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 78, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.parse_date_delta_with_interval": {"qualname": 5, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 46, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.date_trunc_to_time": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 46, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.timestamptrunc_sql": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 51, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.locate_to_strposition": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 29, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.strposition_to_locate_sql": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 51, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.timestrtotime_sql": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 51, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.datestrtodate_sql": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 51, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.min_or_least": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 51, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.max_or_greatest": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 51, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.count_if_to_sum": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 51, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.trim_sql": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 51, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.str_to_time_sql": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.dialects.dialect.ts_or_ds_to_date_sql": {"qualname": 6, "fullname": 9, "annotation": 0, "default_value": 0, "signature": 19, "bases": 0, "doc": 3}, "sqlglot.dialects.drill": {"qualname": 0, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dialects.drill.Drill": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 4, "doc": 3}, "sqlglot.dialects.drill.Drill.Tokenizer": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 3}, "sqlglot.dialects.drill.Drill.Parser": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 174}, "sqlglot.dialects.drill.Drill.Generator": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 503}, "sqlglot.dialects.drill.Drill.Generator.normalize_func": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 24, "bases": 0, "doc": 3}, "sqlglot.dialects.duckdb": {"qualname": 0, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dialects.duckdb.DuckDB": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 4, "doc": 3}, "sqlglot.dialects.duckdb.DuckDB.Tokenizer": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 3}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 174}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 503}, "sqlglot.dialects.duckdb.DuckDB.Generator.tablesample_sql": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 59, "bases": 0, "doc": 3}, "sqlglot.dialects.hive": {"qualname": 0, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dialects.hive.Hive": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 4, "doc": 3}, "sqlglot.dialects.hive.Hive.Tokenizer": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 3}, "sqlglot.dialects.hive.Hive.Parser": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 174}, "sqlglot.dialects.hive.Hive.Generator": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 503}, "sqlglot.dialects.hive.Hive.Generator.arrayagg_sql": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.dialects.hive.Hive.Generator.with_properties": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.dialects.hive.Hive.Generator.datatype_sql": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.dialects.mysql": {"qualname": 0, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dialects.mysql.MySQL": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 4, "doc": 3}, "sqlglot.dialects.mysql.MySQL.Tokenizer": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 3}, "sqlglot.dialects.mysql.MySQL.Parser": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 174}, "sqlglot.dialects.mysql.MySQL.Generator": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 503}, "sqlglot.dialects.mysql.MySQL.Generator.show_sql": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.dialects.oracle": {"qualname": 0, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dialects.oracle.Oracle": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 4, "doc": 3}, "sqlglot.dialects.oracle.Oracle.Parser": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 174}, "sqlglot.dialects.oracle.Oracle.Generator": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 503}, "sqlglot.dialects.oracle.Oracle.Generator.offset_sql": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.dialects.oracle.Oracle.Generator.column_sql": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.dialects.oracle.Oracle.Generator.xmltable_sql": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.dialects.oracle.Oracle.Tokenizer": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 3}, "sqlglot.dialects.postgres": {"qualname": 0, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dialects.postgres.Postgres": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 4, "doc": 3}, "sqlglot.dialects.postgres.Postgres.Tokenizer": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 3}, "sqlglot.dialects.postgres.Postgres.Parser": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 174}, "sqlglot.dialects.postgres.Postgres.Generator": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 503}, "sqlglot.dialects.presto": {"qualname": 0, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dialects.presto.Presto": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 4, "doc": 3}, "sqlglot.dialects.presto.Presto.Tokenizer": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 3}, "sqlglot.dialects.presto.Presto.Parser": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 174}, "sqlglot.dialects.presto.Presto.Generator": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 503}, "sqlglot.dialects.presto.Presto.Generator.interval_sql": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.dialects.presto.Presto.Generator.transaction_sql": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.dialects.redshift": {"qualname": 0, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dialects.redshift.Redshift": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 4, "doc": 3}, "sqlglot.dialects.redshift.Redshift.Parser": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 5, "doc": 174}, "sqlglot.dialects.redshift.Redshift.Tokenizer": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 5, "doc": 3}, "sqlglot.dialects.redshift.Redshift.Generator": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 5, "doc": 503}, "sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 58}, "sqlglot.dialects.redshift.Redshift.Generator.with_properties": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 19}, "sqlglot.dialects.redshift.Redshift.Generator.renametable_sql": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 16}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 75}, "sqlglot.dialects.snowflake": {"qualname": 0, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dialects.snowflake.Snowflake": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 4, "doc": 3}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 174}, "sqlglot.dialects.snowflake.Snowflake.Tokenizer": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 3}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 503}, "sqlglot.dialects.snowflake.Snowflake.Generator.except_op": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.dialects.snowflake.Snowflake.Generator.intersect_op": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 66}, "sqlglot.dialects.snowflake.Snowflake.Generator.settag_sql": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 125}, "sqlglot.dialects.snowflake.Snowflake.Generator.describe_sql": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.dialects.snowflake.Snowflake.Generator.generatedasidentitycolumnconstraint_sql": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 36, "bases": 0, "doc": 3}, "sqlglot.dialects.spark": {"qualname": 0, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dialects.spark.Spark": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 4, "doc": 3}, "sqlglot.dialects.spark.Spark.Parser": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 5, "doc": 174}, "sqlglot.dialects.spark.Spark.Generator": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 5, "doc": 503}, "sqlglot.dialects.spark.Spark.Generator.cast_sql": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.dialects.spark.Spark.Tokenizer": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 5, "doc": 3}, "sqlglot.dialects.sqlite": {"qualname": 0, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dialects.sqlite.SQLite": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 4, "doc": 3}, "sqlglot.dialects.sqlite.SQLite.Tokenizer": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 3}, "sqlglot.dialects.sqlite.SQLite.Parser": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 174}, "sqlglot.dialects.sqlite.SQLite.Generator": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 503}, "sqlglot.dialects.sqlite.SQLite.Generator.cast_sql": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.dialects.sqlite.SQLite.Generator.datediff_sql": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.dialects.sqlite.SQLite.Generator.groupconcat_sql": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 3}, "sqlglot.dialects.sqlite.SQLite.Generator.least_sql": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.dialects.sqlite.SQLite.Generator.transaction_sql": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.dialects.starrocks": {"qualname": 0, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dialects.starrocks.StarRocks": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 4, "doc": 3}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 5, "doc": 174}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 5, "doc": 503}, "sqlglot.dialects.tableau": {"qualname": 0, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dialects.tableau.Tableau": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 4, "doc": 3}, "sqlglot.dialects.tableau.Tableau.Generator": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 503}, "sqlglot.dialects.tableau.Tableau.Parser": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 174}, "sqlglot.dialects.teradata": {"qualname": 0, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dialects.teradata.Teradata": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 4, "doc": 3}, "sqlglot.dialects.teradata.Teradata.Tokenizer": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 3}, "sqlglot.dialects.teradata.Teradata.Parser": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 174}, "sqlglot.dialects.teradata.Teradata.Generator": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 503}, "sqlglot.dialects.teradata.Teradata.Generator.partitionedbyproperty_sql": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.dialects.teradata.Teradata.Generator.update_sql": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.dialects.teradata.Teradata.Generator.mod_sql": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.dialects.teradata.Teradata.Generator.datatype_sql": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.dialects.teradata.Teradata.Generator.rangen_sql": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.dialects.trino": {"qualname": 0, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dialects.trino.Trino": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 4, "doc": 3}, "sqlglot.dialects.trino.Trino.Generator": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 5, "doc": 503}, "sqlglot.dialects.trino.Trino.Tokenizer": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 5, "doc": 3}, "sqlglot.dialects.tsql": {"qualname": 0, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.dialects.tsql.generate_date_delta_with_unit_sql": {"qualname": 6, "fullname": 9, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 3}, "sqlglot.dialects.tsql.TSQL": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 4, "doc": 3}, "sqlglot.dialects.tsql.TSQL.Tokenizer": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 3}, "sqlglot.dialects.tsql.TSQL.Parser": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 174}, "sqlglot.dialects.tsql.TSQL.Generator": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 503}, "sqlglot.dialects.tsql.TSQL.Generator.offset_sql": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.dialects.tsql.TSQL.Generator.systemtime_sql": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.dialects.tsql.TSQL.Generator.returnsproperty_sql": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.diff": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 6444}, "sqlglot.diff.Insert": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 10}, "sqlglot.diff.Insert.__init__": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 24, "bases": 0, "doc": 3}, "sqlglot.diff.Remove": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 10}, "sqlglot.diff.Remove.__init__": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 24, "bases": 0, "doc": 3}, "sqlglot.diff.Move": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 14}, "sqlglot.diff.Move.__init__": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 24, "bases": 0, "doc": 3}, "sqlglot.diff.Update": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 10}, "sqlglot.diff.Update.__init__": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 46, "bases": 0, "doc": 3}, "sqlglot.diff.Keep": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 11}, "sqlglot.diff.Keep.__init__": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 46, "bases": 0, "doc": 3}, "sqlglot.diff.diff": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 206, "bases": 0, "doc": 306}, "sqlglot.diff.ChangeDistiller": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 46}, "sqlglot.diff.ChangeDistiller.__init__": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 40, "bases": 0, "doc": 3}, "sqlglot.diff.ChangeDistiller.diff": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 199, "bases": 0, "doc": 3}, "sqlglot.errors": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.errors.ErrorLevel": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 5}, "sqlglot.errors.ErrorLevel.IGNORE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 6}, "sqlglot.errors.ErrorLevel.WARN": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 6}, "sqlglot.errors.ErrorLevel.RAISE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 11}, "sqlglot.errors.ErrorLevel.IMMEDIATE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 12}, "sqlglot.errors.SqlglotError": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 11}, "sqlglot.errors.UnsupportedError": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 11}, "sqlglot.errors.ParseError": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 11}, "sqlglot.errors.ParseError.__init__": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 51, "bases": 0, "doc": 3}, "sqlglot.errors.ParseError.new": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 207, "bases": 0, "doc": 3}, "sqlglot.errors.TokenError": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 11}, "sqlglot.errors.OptimizeError": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 11}, "sqlglot.errors.SchemaError": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 11}, "sqlglot.errors.ExecuteError": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 11}, "sqlglot.errors.concat_messages": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 35, "bases": 0, "doc": 3}, "sqlglot.errors.merge_errors": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 51, "bases": 0, "doc": 3}, "sqlglot.executor": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 2950}, "sqlglot.executor.execute": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 197, "bases": 0, "doc": 115}, "sqlglot.executor.context": {"qualname": 0, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.executor.context.Context": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 64}, "sqlglot.executor.context.Context.__init__": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 66, "bases": 0, "doc": 21}, "sqlglot.executor.context.Context.eval": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 3}, "sqlglot.executor.context.Context.eval_tuple": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 3}, "sqlglot.executor.context.Context.add_columns": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 26, "bases": 0, "doc": 3}, "sqlglot.executor.context.Context.table_iter": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 72, "bases": 0, "doc": 3}, "sqlglot.executor.context.Context.filter": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 19, "bases": 0, "doc": 3}, "sqlglot.executor.context.Context.sort": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 19, "bases": 0, "doc": 3}, "sqlglot.executor.context.Context.set_row": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 24, "bases": 0, "doc": 3}, "sqlglot.executor.context.Context.set_index": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 24, "bases": 0, "doc": 3}, "sqlglot.executor.context.Context.set_range": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.executor.env": {"qualname": 0, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.executor.env.reverse_key": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.executor.env.reverse_key.__init__": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 9, "bases": 0, "doc": 3}, "sqlglot.executor.env.filter_nulls": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 22, "bases": 0, "doc": 3}, "sqlglot.executor.env.null_if_any": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 13, "bases": 0, "doc": 59}, "sqlglot.executor.env.str_position": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 26, "bases": 0, "doc": 3}, "sqlglot.executor.env.substring": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 31, "bases": 0, "doc": 3}, "sqlglot.executor.env.cast": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 3}, "sqlglot.executor.env.ordered": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 22, "bases": 0, "doc": 3}, "sqlglot.executor.env.interval": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 3}, "sqlglot.executor.python": {"qualname": 0, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.executor.python.PythonExecutor": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.executor.python.PythonExecutor.__init__": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 24, "bases": 0, "doc": 3}, "sqlglot.executor.python.PythonExecutor.execute": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 3}, "sqlglot.executor.python.PythonExecutor.generate": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 16}, "sqlglot.executor.python.PythonExecutor.generate_tuple": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 15}, "sqlglot.executor.python.PythonExecutor.context": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 3}, "sqlglot.executor.python.PythonExecutor.table": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 3}, "sqlglot.executor.python.PythonExecutor.scan": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 21, "bases": 0, "doc": 3}, "sqlglot.executor.python.PythonExecutor.static": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 3}, "sqlglot.executor.python.PythonExecutor.scan_table": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 3}, "sqlglot.executor.python.PythonExecutor.scan_csv": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 3}, "sqlglot.executor.python.PythonExecutor.join": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 21, "bases": 0, "doc": 3}, "sqlglot.executor.python.PythonExecutor.nested_loop_join": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 29, "bases": 0, "doc": 3}, "sqlglot.executor.python.PythonExecutor.hash_join": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 28, "bases": 0, "doc": 3}, "sqlglot.executor.python.PythonExecutor.aggregate": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 21, "bases": 0, "doc": 3}, "sqlglot.executor.python.PythonExecutor.sort": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 21, "bases": 0, "doc": 3}, "sqlglot.executor.python.PythonExecutor.set_operation": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 21, "bases": 0, "doc": 3}, "sqlglot.executor.python.Python": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 4, "doc": 3}, "sqlglot.executor.python.Python.Tokenizer": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 3}, "sqlglot.executor.python.Python.Generator": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 503}, "sqlglot.executor.table": {"qualname": 0, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.executor.table.Table": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.executor.table.Table.__init__": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 30, "bases": 0, "doc": 3}, "sqlglot.executor.table.Table.add_columns": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 26, "bases": 0, "doc": 3}, "sqlglot.executor.table.Table.append": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 3}, "sqlglot.executor.table.Table.pop": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 3}, "sqlglot.executor.table.TableIter": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.executor.table.TableIter.__init__": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 9, "bases": 0, "doc": 3}, "sqlglot.executor.table.RangeReader": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.executor.table.RangeReader.__init__": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 9, "bases": 0, "doc": 3}, "sqlglot.executor.table.RowReader": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.executor.table.RowReader.__init__": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 20, "bases": 0, "doc": 3}, "sqlglot.executor.table.Tables": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 6, "doc": 87}, "sqlglot.executor.table.ensure_tables": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 40, "bases": 0, "doc": 3}, "sqlglot.expressions": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 61}, "sqlglot.expressions.Expression": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 346}, "sqlglot.expressions.Expression.__init__": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 3}, "sqlglot.expressions.Expression.this": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 9}, "sqlglot.expressions.Expression.expression": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 9}, "sqlglot.expressions.Expression.expressions": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 9}, "sqlglot.expressions.Expression.text": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 19, "bases": 0, "doc": 32}, "sqlglot.expressions.Expression.is_string": {"qualname": 3, "fullname": 5, "annotation": 2, "default_value": 0, "signature": 0, "bases": 0, "doc": 11}, "sqlglot.expressions.Expression.is_number": {"qualname": 3, "fullname": 5, "annotation": 2, "default_value": 0, "signature": 0, "bases": 0, "doc": 11}, "sqlglot.expressions.Expression.is_int": {"qualname": 3, "fullname": 5, "annotation": 2, "default_value": 0, "signature": 0, "bases": 0, "doc": 11}, "sqlglot.expressions.Expression.is_star": {"qualname": 3, "fullname": 5, "annotation": 2, "default_value": 0, "signature": 0, "bases": 0, "doc": 10}, "sqlglot.expressions.Expression.alias": {"qualname": 2, "fullname": 4, "annotation": 2, "default_value": 0, "signature": 0, "bases": 0, "doc": 18}, "sqlglot.expressions.Expression.output_name": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 210}, "sqlglot.expressions.Expression.copy": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 10}, "sqlglot.expressions.Expression.append": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 22, "bases": 0, "doc": 54}, "sqlglot.expressions.Expression.set": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 22, "bases": 0, "doc": 45}, "sqlglot.expressions.Expression.depth": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 9}, "sqlglot.expressions.Expression.iter_expressions": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 40, "bases": 0, "doc": 14}, "sqlglot.expressions.Expression.find": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 53, "bases": 0, "doc": 63}, "sqlglot.expressions.Expression.find_all": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 53, "bases": 0, "doc": 61}, "sqlglot.expressions.Expression.find_ancestor": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 43, "bases": 0, "doc": 43}, "sqlglot.expressions.Expression.parent_select": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 8}, "sqlglot.expressions.Expression.same_parent": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 13}, "sqlglot.expressions.Expression.root": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 24, "bases": 0, "doc": 10}, "sqlglot.expressions.Expression.walk": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 31, "bases": 0, "doc": 89}, "sqlglot.expressions.Expression.dfs": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 41, "bases": 0, "doc": 33}, "sqlglot.expressions.Expression.bfs": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 21, "bases": 0, "doc": 33}, "sqlglot.expressions.Expression.unnest": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 11}, "sqlglot.expressions.Expression.unalias": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 12}, "sqlglot.expressions.Expression.unnest_operands": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 9}, "sqlglot.expressions.Expression.flatten": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 21, "bases": 0, "doc": 28}, "sqlglot.expressions.Expression.sql": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 99, "bases": 0, "doc": 61}, "sqlglot.expressions.Expression.transform": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 40, "bases": 0, "doc": 111}, "sqlglot.expressions.Expression.replace": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 83}, "sqlglot.expressions.Expression.pop": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 22}, "sqlglot.expressions.Expression.assert_is": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 17, "bases": 0, "doc": 162}, "sqlglot.expressions.Expression.error_messages": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 43, "bases": 0, "doc": 79}, "sqlglot.expressions.Expression.dump": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 11}, "sqlglot.expressions.Expression.load": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 17}, "sqlglot.expressions.Condition": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Condition.and_": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 35, "bases": 0, "doc": 173}, "sqlglot.expressions.Condition.or_": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 35, "bases": 0, "doc": 173}, "sqlglot.expressions.Condition.not_": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 88}, "sqlglot.expressions.Predicate": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 13}, "sqlglot.expressions.DerivedTable": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Unionable": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Unionable.union": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 43, "bases": 0, "doc": 211}, "sqlglot.expressions.Unionable.intersect": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 43, "bases": 0, "doc": 210}, "sqlglot.expressions.Unionable.except_": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 43, "bases": 0, "doc": 211}, "sqlglot.expressions.UDTF": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 3}, "sqlglot.expressions.Cache": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Uncache": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Create": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Describe": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Pragma": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Set": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.SetItem": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Show": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.UserDefinedFunction": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.CharacterSet": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.With": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.WithinGroup": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.CTE": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.TableAlias": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.BitString": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.HexString": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.ByteString": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Column": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Column.output_name": {"qualname": 3, "fullname": 5, "annotation": 2, "default_value": 0, "signature": 0, "bases": 0, "doc": 210}, "sqlglot.expressions.Column.parts": {"qualname": 2, "fullname": 4, "annotation": 4, "default_value": 0, "signature": 0, "bases": 0, "doc": 15}, "sqlglot.expressions.Column.to_dot": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 24, "bases": 0, "doc": 10}, "sqlglot.expressions.ColumnPosition": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.ColumnDef": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.AlterColumn": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.RenameTable": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.SetTag": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Comment": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.ColumnConstraint": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.ColumnConstraintKind": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.AutoIncrementColumnConstraint": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.CaseSpecificColumnConstraint": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.CharacterSetColumnConstraint": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.CheckColumnConstraint": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.CollateColumnConstraint": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.CommentColumnConstraint": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.CompressColumnConstraint": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.DateFormatColumnConstraint": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.DefaultColumnConstraint": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.EncodeColumnConstraint": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.GeneratedAsIdentityColumnConstraint": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.InlineLengthColumnConstraint": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.NotNullColumnConstraint": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.OnUpdateColumnConstraint": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.PrimaryKeyColumnConstraint": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.TitleColumnConstraint": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.UniqueColumnConstraint": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.UppercaseColumnConstraint": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.PathColumnConstraint": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Constraint": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Delete": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Delete.delete": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 160, "bases": 0, "doc": 150}, "sqlglot.expressions.Delete.where": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 180, "bases": 0, "doc": 226}, "sqlglot.expressions.Delete.returning": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 160, "bases": 0, "doc": 194}, "sqlglot.expressions.Drop": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Filter": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Check": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Directory": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.ForeignKey": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.PrimaryKey": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Unique": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Into": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.From": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Having": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Hint": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.JoinHint": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Identifier": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Identifier.output_name": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 210}, "sqlglot.expressions.Index": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Insert": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.OnConflict": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Returning": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Introducer": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.National": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.LoadData": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Partition": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Fetch": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Group": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Lambda": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Limit": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Literal": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Literal.number": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 29, "bases": 0, "doc": 3}, "sqlglot.expressions.Literal.string": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 29, "bases": 0, "doc": 3}, "sqlglot.expressions.Literal.output_name": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 210}, "sqlglot.expressions.Join": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Join.on": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 55, "bases": 0, "doc": 252}, "sqlglot.expressions.Join.using": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 55, "bases": 0, "doc": 254}, "sqlglot.expressions.Lateral": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.MatchRecognize": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Final": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Offset": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Order": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Cluster": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Distribute": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Sort": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Ordered": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Property": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.AfterJournalProperty": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.AlgorithmProperty": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.AutoIncrementProperty": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.BlockCompressionProperty": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.CharacterSetProperty": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.ChecksumProperty": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.CollateProperty": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.DataBlocksizeProperty": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.DefinerProperty": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.DistKeyProperty": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.DistStyleProperty": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.EngineProperty": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.ExecuteAsProperty": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.ExternalProperty": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.FallbackProperty": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.FileFormatProperty": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.FreespaceProperty": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.InputOutputFormat": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.IsolatedLoadingProperty": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.JournalProperty": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.LanguageProperty": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.LikeProperty": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.LocationProperty": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.LockingProperty": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.LogProperty": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.MaterializedProperty": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.MergeBlockRatioProperty": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.NoPrimaryIndexProperty": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.OnCommitProperty": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.PartitionedByProperty": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.ReturnsProperty": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.RowFormatProperty": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.RowFormatDelimitedProperty": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.RowFormatSerdeProperty": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.SchemaCommentProperty": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.SerdeProperties": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.SetProperty": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.SortKeyProperty": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.SqlSecurityProperty": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.StabilityProperty": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.TableFormatProperty": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.TemporaryProperty": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.TransientProperty": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.VolatileProperty": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.WithDataProperty": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.WithJournalTableProperty": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Properties": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Properties.Location": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 5}, "sqlglot.expressions.Properties.Location.POST_CREATE": {"qualname": 4, "fullname": 6, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.Properties.Location.POST_NAME": {"qualname": 4, "fullname": 6, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.Properties.Location.POST_SCHEMA": {"qualname": 4, "fullname": 6, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.Properties.Location.POST_WITH": {"qualname": 4, "fullname": 6, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.Properties.Location.POST_ALIAS": {"qualname": 4, "fullname": 6, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.Properties.Location.POST_EXPRESSION": {"qualname": 4, "fullname": 6, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.Properties.Location.POST_INDEX": {"qualname": 4, "fullname": 6, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.Properties.Location.UNSUPPORTED": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.Properties.from_dict": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 30, "bases": 0, "doc": 3}, "sqlglot.expressions.Qualify": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Return": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Reference": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Tuple": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Subqueryable": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Subqueryable.subquery": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 44, "bases": 0, "doc": 213}, "sqlglot.expressions.Subqueryable.limit": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 61, "bases": 0, "doc": 3}, "sqlglot.expressions.Subqueryable.with_": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 77, "bases": 0, "doc": 319}, "sqlglot.expressions.Table": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.SystemTime": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Union": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Union.limit": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 61, "bases": 0, "doc": 234}, "sqlglot.expressions.Union.select": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 180, "bases": 0, "doc": 245}, "sqlglot.expressions.Union.is_star": {"qualname": 3, "fullname": 5, "annotation": 2, "default_value": 0, "signature": 0, "bases": 0, "doc": 10}, "sqlglot.expressions.Except": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Intersect": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Unnest": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Update": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Values": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Var": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Schema": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Lock": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Select": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Select.from_": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 74, "bases": 0, "doc": 238}, "sqlglot.expressions.Select.group_by": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 74, "bases": 0, "doc": 287}, "sqlglot.expressions.Select.order_by": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 74, "bases": 0, "doc": 262}, "sqlglot.expressions.Select.sort_by": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 74, "bases": 0, "doc": 262}, "sqlglot.expressions.Select.cluster_by": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 74, "bases": 0, "doc": 262}, "sqlglot.expressions.Select.limit": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 61, "bases": 0, "doc": 231}, "sqlglot.expressions.Select.offset": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 61, "bases": 0, "doc": 231}, "sqlglot.expressions.Select.select": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 180, "bases": 0, "doc": 196}, "sqlglot.expressions.Select.lateral": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 74, "bases": 0, "doc": 247}, "sqlglot.expressions.Select.join": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 118, "bases": 0, "doc": 628}, "sqlglot.expressions.Select.where": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 74, "bases": 0, "doc": 265}, "sqlglot.expressions.Select.having": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 74, "bases": 0, "doc": 287}, "sqlglot.expressions.Select.window": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 74, "bases": 0, "doc": 3}, "sqlglot.expressions.Select.qualify": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 74, "bases": 0, "doc": 3}, "sqlglot.expressions.Select.distinct": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 44, "bases": 0, "doc": 151}, "sqlglot.expressions.Select.ctas": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 72, "bases": 0, "doc": 236}, "sqlglot.expressions.Select.lock": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 61, "bases": 0, "doc": 331}, "sqlglot.expressions.Select.is_star": {"qualname": 3, "fullname": 5, "annotation": 2, "default_value": 0, "signature": 0, "bases": 0, "doc": 10}, "sqlglot.expressions.Subquery": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 3}, "sqlglot.expressions.Subquery.unnest": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 8}, "sqlglot.expressions.Subquery.is_star": {"qualname": 3, "fullname": 5, "annotation": 2, "default_value": 0, "signature": 0, "bases": 0, "doc": 10}, "sqlglot.expressions.Subquery.output_name": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 210}, "sqlglot.expressions.TableSample": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Tag": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 15}, "sqlglot.expressions.Pivot": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Window": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.WindowSpec": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Where": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Star": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Star.output_name": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 210}, "sqlglot.expressions.Parameter": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.SessionParameter": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Placeholder": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Null": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Boolean": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.DataType": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.DataType.Type": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 5}, "sqlglot.expressions.DataType.Type.CHAR": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.NCHAR": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.VARCHAR": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.NVARCHAR": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.TEXT": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.MEDIUMTEXT": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.LONGTEXT": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.MEDIUMBLOB": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.LONGBLOB": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.BINARY": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.VARBINARY": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.INT": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.UINT": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.TINYINT": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.UTINYINT": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.SMALLINT": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.USMALLINT": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.BIGINT": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.UBIGINT": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.FLOAT": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.DOUBLE": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.DECIMAL": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.BIGDECIMAL": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.BIT": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.BOOLEAN": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.JSON": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.JSONB": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.INTERVAL": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.TIME": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.TIMESTAMP": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.TIMESTAMPTZ": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.TIMESTAMPLTZ": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.DATE": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.DATETIME": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.ARRAY": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.MAP": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.UUID": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.GEOGRAPHY": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.GEOMETRY": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.STRUCT": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.NULLABLE": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.HLLSKETCH": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.HSTORE": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.SUPER": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.SERIAL": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.SMALLSERIAL": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.BIGSERIAL": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.XML": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.UNIQUEIDENTIFIER": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.MONEY": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.SMALLMONEY": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.ROWVERSION": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.IMAGE": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.VARIANT": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.OBJECT": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.INET": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.NULL": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.Type.UNKNOWN": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.build": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 157, "bases": 0, "doc": 3}, "sqlglot.expressions.DataType.is_type": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 39, "bases": 0, "doc": 3}, "sqlglot.expressions.PseudoType": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.StructKwarg": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.SubqueryPredicate": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.All": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Any": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Exists": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Command": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Transaction": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Commit": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Rollback": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.AlterTable": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.AddConstraint": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.DropPartition": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Binary": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Add": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Connector": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 3}, "sqlglot.expressions.And": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Or": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.BitwiseAnd": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.BitwiseLeftShift": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.BitwiseOr": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.BitwiseRightShift": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.BitwiseXor": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Div": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Overlaps": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Dot": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Dot.build": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 52, "bases": 0, "doc": 12}, "sqlglot.expressions.DPipe": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.EQ": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 3}, "sqlglot.expressions.NullSafeEQ": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 3}, "sqlglot.expressions.NullSafeNEQ": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 3}, "sqlglot.expressions.Distance": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Escape": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Glob": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 3}, "sqlglot.expressions.GT": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 3}, "sqlglot.expressions.GTE": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 3}, "sqlglot.expressions.ILike": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 3}, "sqlglot.expressions.ILikeAny": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 3}, "sqlglot.expressions.IntDiv": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Is": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 3}, "sqlglot.expressions.Kwarg": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 12}, "sqlglot.expressions.Like": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 3}, "sqlglot.expressions.LikeAny": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 3}, "sqlglot.expressions.LT": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 3}, "sqlglot.expressions.LTE": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 3}, "sqlglot.expressions.Mod": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Mul": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.NEQ": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 3}, "sqlglot.expressions.SimilarTo": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 3}, "sqlglot.expressions.Slice": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Sub": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.ArrayOverlaps": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Unary": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.BitwiseNot": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Not": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 3}, "sqlglot.expressions.Paren": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 3}, "sqlglot.expressions.Neg": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Alias": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Alias.output_name": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 210}, "sqlglot.expressions.Aliases": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.AtTimeZone": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Between": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Bracket": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Distinct": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.In": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.TimeUnit": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 10}, "sqlglot.expressions.TimeUnit.__init__": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 3}, "sqlglot.expressions.Interval": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.IgnoreNulls": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.RespectNulls": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Func": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 128}, "sqlglot.expressions.Func.from_arg_list": {"qualname": 4, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 3}, "sqlglot.expressions.Func.sql_names": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 3}, "sqlglot.expressions.Func.sql_name": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 3}, "sqlglot.expressions.Func.default_parser_mappings": {"qualname": 4, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 3}, "sqlglot.expressions.AggFunc": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Abs": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Anonymous": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Hll": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.ApproxDistinct": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Array": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.ToChar": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.GenerateSeries": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.ArrayAgg": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.ArrayAll": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.ArrayAny": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.ArrayConcat": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.ArrayContains": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 3}, "sqlglot.expressions.ArrayContained": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.ArrayFilter": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.ArrayJoin": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.ArraySize": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.ArraySort": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.ArraySum": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.ArrayUnionAgg": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Avg": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.AnyValue": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Case": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Cast": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Cast.output_name": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 210}, "sqlglot.expressions.Cast.is_type": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 39, "bases": 0, "doc": 3}, "sqlglot.expressions.Collate": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.TryCast": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Ceil": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Coalesce": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Concat": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.ConcatWs": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Count": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.CountIf": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.CurrentDate": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.CurrentDatetime": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.CurrentTime": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.CurrentTimestamp": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.CurrentUser": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.DateAdd": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 3}, "sqlglot.expressions.DateSub": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 3}, "sqlglot.expressions.DateDiff": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 3}, "sqlglot.expressions.DateTrunc": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.DatetimeAdd": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 3}, "sqlglot.expressions.DatetimeSub": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 3}, "sqlglot.expressions.DatetimeDiff": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 3}, "sqlglot.expressions.DatetimeTrunc": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 3}, "sqlglot.expressions.DayOfWeek": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.DayOfMonth": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.DayOfYear": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.WeekOfYear": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.LastDateOfMonth": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Extract": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.TimestampAdd": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 3}, "sqlglot.expressions.TimestampSub": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 3}, "sqlglot.expressions.TimestampDiff": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 3}, "sqlglot.expressions.TimestampTrunc": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 3}, "sqlglot.expressions.TimeAdd": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 3}, "sqlglot.expressions.TimeSub": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 3}, "sqlglot.expressions.TimeDiff": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 3}, "sqlglot.expressions.TimeTrunc": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 3}, "sqlglot.expressions.DateFromParts": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.DateStrToDate": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.DateToDateStr": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.DateToDi": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Day": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Decode": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.DiToDate": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Encode": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Exp": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Explode": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.ExponentialTimeDecayedAvg": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Floor": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Greatest": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.GroupConcat": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.GroupUniqArray": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Hex": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Histogram": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.If": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.IfNull": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Initcap": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.JSONKeyValue": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.JSONObject": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.JSONBContains": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.JSONExtract": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 3}, "sqlglot.expressions.JSONExtractScalar": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.JSONBExtract": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.JSONBExtractScalar": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.JSONFormat": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Least": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Length": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Levenshtein": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Ln": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Log": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Log2": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Log10": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.LogicalOr": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.LogicalAnd": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Lower": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Map": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.StarMap": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.VarMap": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.MatchAgainst": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Max": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.MD5": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Min": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Month": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Nvl2": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Posexplode": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Pow": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 3}, "sqlglot.expressions.PercentileCont": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.PercentileDisc": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Quantile": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Quantiles": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.QuantileIf": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.ApproxQuantile": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.RangeN": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.ReadCSV": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Reduce": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.RegexpExtract": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.RegexpLike": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.RegexpILike": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.RegexpSplit": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Repeat": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Round": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.RowNumber": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.SafeDivide": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.SetAgg": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.SHA": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.SHA2": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.SortArray": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Split": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Substring": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.StrPosition": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.StrToDate": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.StrToTime": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.StrToUnix": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.NumberToStr": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Struct": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.StructExtract": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Sum": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Sqrt": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Stddev": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.StddevPop": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.StddevSamp": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.TimeToStr": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.TimeToTimeStr": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.TimeToUnix": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.TimeStrToDate": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.TimeStrToTime": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.TimeStrToUnix": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Trim": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.TsOrDsAdd": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 3}, "sqlglot.expressions.TsOrDsToDateStr": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.TsOrDsToDate": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.TsOrDiToDi": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Unhex": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.UnixToStr": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.UnixToTime": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.UnixToTimeStr": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Upper": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Variance": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.VariancePop": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Week": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.XMLTable": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Year": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Use": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.Merge": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.When": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.expressions.maybe_parse": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 270, "bases": 0, "doc": 231}, "sqlglot.expressions.union": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 43, "bases": 0, "doc": 234}, "sqlglot.expressions.intersect": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 43, "bases": 0, "doc": 234}, "sqlglot.expressions.except_": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 43, "bases": 0, "doc": 235}, "sqlglot.expressions.select": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 138, "bases": 0, "doc": 206}, "sqlglot.expressions.from_": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 43, "bases": 0, "doc": 211}, "sqlglot.expressions.update": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 234, "bases": 0, "doc": 263}, "sqlglot.expressions.delete": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 228, "bases": 0, "doc": 164}, "sqlglot.expressions.condition": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 41, "bases": 0, "doc": 334}, "sqlglot.expressions.and_": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 43, "bases": 0, "doc": 180}, "sqlglot.expressions.or_": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 43, "bases": 0, "doc": 180}, "sqlglot.expressions.not_": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 41, "bases": 0, "doc": 152}, "sqlglot.expressions.paren": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 24, "bases": 0, "doc": 3}, "sqlglot.expressions.to_identifier": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 21, "bases": 0, "doc": 53}, "sqlglot.expressions.to_interval": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 46, "bases": 0, "doc": 16}, "sqlglot.expressions.to_table": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 73, "bases": 0, "doc": 66}, "sqlglot.expressions.to_column": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 55, "bases": 0, "doc": 62}, "sqlglot.expressions.alias_": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 224, "bases": 0, "doc": 292}, "sqlglot.expressions.subquery": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 38, "bases": 0, "doc": 197}, "sqlglot.expressions.column": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 208, "bases": 0, "doc": 66}, "sqlglot.expressions.cast": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 108, "bases": 0, "doc": 122}, "sqlglot.expressions.table_": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 69, "bases": 0, "doc": 58}, "sqlglot.expressions.values": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 131, "bases": 0, "doc": 169}, "sqlglot.expressions.var": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 58, "bases": 0, "doc": 168}, "sqlglot.expressions.rename_table": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 75, "bases": 0, "doc": 50}, "sqlglot.expressions.convert": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 24, "bases": 0, "doc": 54}, "sqlglot.expressions.replace_children": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 30, "bases": 0, "doc": 18}, "sqlglot.expressions.column_table_names": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 129}, "sqlglot.expressions.table_name": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 14, "bases": 0, "doc": 152}, "sqlglot.expressions.replace_tables": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 176}, "sqlglot.expressions.replace_placeholders": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 25, "bases": 0, "doc": 249}, "sqlglot.expressions.expand": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 91, "bases": 0, "doc": 338}, "sqlglot.expressions.func": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 122, "bases": 0, "doc": 272}, "sqlglot.expressions.true": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 7, "bases": 0, "doc": 8}, "sqlglot.expressions.false": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 7, "bases": 0, "doc": 8}, "sqlglot.expressions.null": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 7, "bases": 0, "doc": 7}, "sqlglot.generator": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.generator.Generator": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 503}, "sqlglot.generator.Generator.__init__": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 300, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.generate": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 76, "bases": 0, "doc": 55}, "sqlglot.generator.Generator.unsupported": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 24, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.sep": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.seg": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 44, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.pad_comment": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 24, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.maybe_comment": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 88, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.wrap": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 40, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.no_identify": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 51, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.normalize_func": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 24, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.indent": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 106, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.sql": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 96, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.uncache_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.cache_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.characterset_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.column_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.columnposition_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.columndef_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.columnconstraint_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.autoincrementcolumnconstraint_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 20, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.compresscolumnconstraint_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.generatedasidentitycolumnconstraint_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 36, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.notnullcolumnconstraint_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.primarykeycolumnconstraint_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.uniquecolumnconstraint_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 20, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.create_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.describe_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.prepend_ctes": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 44, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.with_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.cte_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.tablealias_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.bitstring_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.hexstring_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.bytestring_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.datatype_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.directory_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.delete_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.drop_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.except_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.except_op": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.fetch_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.filter_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.hint_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.index_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.identifier_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.inputoutputformat_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.national_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.partition_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.properties_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.root_properties": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.properties": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 117, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.with_properties": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.locate_properties": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 77, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.property_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.likeproperty_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.fallbackproperty_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.journalproperty_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.freespaceproperty_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.afterjournalproperty_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.checksumproperty_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.mergeblockratioproperty_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.datablocksizeproperty_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.blockcompressionproperty_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.isolatedloadingproperty_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.lockingproperty_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.withdataproperty_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.insert_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.intersect_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.intersect_op": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.introducer_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.pseudotype_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.onconflict_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.returning_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.rowformatdelimitedproperty_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.table_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 55, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.tablesample_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 59, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.pivot_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.tuple_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.update_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.values_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.var_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.into_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.from_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.group_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.having_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.join_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.lambda_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 59, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.lateral_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.limit_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.offset_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.setitem_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.set_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.pragma_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.lock_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.literal_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.loaddata_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.null_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 22, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.boolean_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.order_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 51, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.cluster_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.distribute_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.sort_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.ordered_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.matchrecognize_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.query_modifiers": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 46, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.select_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.schema_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.star_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.structkwarg_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.parameter_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.sessionparameter_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.placeholder_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.subquery_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 55, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.qualify_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.union_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.union_op": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.unnest_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.where_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.window_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.partition_by_sql": {"qualname": 4, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 52, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.window_spec_sql": {"qualname": 4, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.withingroup_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.between_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.bracket_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.all_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.any_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.exists_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.case_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.constraint_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.extract_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.trim_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.concat_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.check_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.foreignkey_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.primarykey_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.unique_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.if_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.matchagainst_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.jsonkeyvalue_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.jsonobject_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.in_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.in_unnest_op": {"qualname": 4, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.interval_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.return_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.reference_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.anonymous_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.paren_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.neg_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.not_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.alias_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.aliases_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.attimezone_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.add_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.and_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.connector_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 44, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.bitwiseand_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.bitwiseleftshift_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.bitwisenot_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.bitwiseor_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.bitwiserightshift_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.bitwisexor_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.cast_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.currentdate_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.collate_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.command_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.comment_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.transaction_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.commit_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.rollback_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.altercolumn_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.renametable_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.altertable_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.droppartition_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.addconstraint_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.distinct_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.ignorenulls_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.respectnulls_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.intdiv_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.dpipe_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.div_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.overlaps_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.distance_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.dot_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.eq_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.escape_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.glob_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.gt_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.gte_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.ilike_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.ilikeany_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.is_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.like_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.likeany_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.similarto_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.lt_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.lte_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.mod_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.mul_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.neq_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.nullsafeeq_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.nullsafeneq_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.or_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.slice_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.sub_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.trycast_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.use_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.binary": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 44, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.function_fallback_sql": {"qualname": 4, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.func": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 67, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.format_args": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 54, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.text_width": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 24, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.format_time": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 40, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.expressions": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 179, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.op_expressions": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 65, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.naked_property": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.set_operation": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 44, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.tag_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.token_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 35, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.userdefinedfunction_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.joinhint_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.kwarg_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.when_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.merge_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.generator.Generator.tochar_sql": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.helper": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.helper.AutoName": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 25}, "sqlglot.helper.seq_get": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 45, "bases": 0, "doc": 27}, "sqlglot.helper.ensure_list": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 66}, "sqlglot.helper.ensure_collection": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 66}, "sqlglot.helper.csv": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 36, "bases": 0, "doc": 55}, "sqlglot.helper.subclasses": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 103, "bases": 0, "doc": 84}, "sqlglot.helper.apply_index_offset": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 76, "bases": 0, "doc": 98}, "sqlglot.helper.camel_to_snake_case": {"qualname": 4, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 19, "bases": 0, "doc": 16}, "sqlglot.helper.while_changing": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 67, "bases": 0, "doc": 58}, "sqlglot.helper.tsort": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 47, "bases": 0, "doc": 53}, "sqlglot.helper.open_file": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 24, "bases": 0, "doc": 19}, "sqlglot.helper.csv_reader": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 30, "bases": 0, "doc": 53}, "sqlglot.helper.find_new_name": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 35, "bases": 0, "doc": 50}, "sqlglot.helper.object_to_dict": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 26, "bases": 0, "doc": 12}, "sqlglot.helper.split_num_words": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 74, "bases": 0, "doc": 312}, "sqlglot.helper.is_iterable": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 19, "bases": 0, "doc": 132}, "sqlglot.helper.flatten": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 45, "bases": 0, "doc": 195}, "sqlglot.helper.count_params": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 19, "bases": 0, "doc": 26}, "sqlglot.helper.dict_depth": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 19, "bases": 0, "doc": 194}, "sqlglot.helper.first": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 29, "bases": 0, "doc": 16}, "sqlglot.helper.should_identify": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 35, "bases": 0, "doc": 65}, "sqlglot.lineage": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.lineage.Node": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.lineage.Node.__init__": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 120, "bases": 0, "doc": 3}, "sqlglot.lineage.Node.walk": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 30, "bases": 0, "doc": 3}, "sqlglot.lineage.Node.to_html": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 31, "bases": 0, "doc": 3}, "sqlglot.lineage.lineage": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 341, "bases": 0, "doc": 114}, "sqlglot.lineage.LineageHTML": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 18}, "sqlglot.lineage.LineageHTML.__init__": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 132, "bases": 0, "doc": 3}, "sqlglot.optimizer": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.optimizer.annotate_types": {"qualname": 0, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.optimizer.annotate_types.annotate_types": {"qualname": 2, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 42, "bases": 0, "doc": 331}, "sqlglot.optimizer.annotate_types.TypeAnnotator": {"qualname": 1, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.optimizer.annotate_types.TypeAnnotator.__init__": {"qualname": 3, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 35, "bases": 0, "doc": 3}, "sqlglot.optimizer.annotate_types.TypeAnnotator.annotate": {"qualname": 2, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 3}, "sqlglot.optimizer.canonicalize": {"qualname": 0, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.optimizer.canonicalize.canonicalize": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 62, "bases": 0, "doc": 59}, "sqlglot.optimizer.canonicalize.add_text_to_concat": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 39, "bases": 0, "doc": 3}, "sqlglot.optimizer.canonicalize.coerce_type": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 39, "bases": 0, "doc": 3}, "sqlglot.optimizer.canonicalize.remove_redundant_casts": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 40, "bases": 0, "doc": 3}, "sqlglot.optimizer.canonicalize.ensure_bool_predicates": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 40, "bases": 0, "doc": 3}, "sqlglot.optimizer.eliminate_ctes": {"qualname": 0, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.optimizer.eliminate_ctes.eliminate_ctes": {"qualname": 2, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 166}, "sqlglot.optimizer.eliminate_joins": {"qualname": 0, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"qualname": 2, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 195}, "sqlglot.optimizer.eliminate_joins.join_condition": {"qualname": 2, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 46}, "sqlglot.optimizer.eliminate_subqueries": {"qualname": 0, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.optimizer.eliminate_subqueries.eliminate_subqueries": {"qualname": 2, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 276}, "sqlglot.optimizer.expand_laterals": {"qualname": 0, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.optimizer.expand_laterals.expand_laterals": {"qualname": 2, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 40, "bases": 0, "doc": 188}, "sqlglot.optimizer.expand_multi_table_selects": {"qualname": 0, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.optimizer.expand_multi_table_selects.expand_multi_table_selects": {"qualname": 4, "fullname": 10, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 101}, "sqlglot.optimizer.isolate_table_selects": {"qualname": 0, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.optimizer.isolate_table_selects.isolate_table_selects": {"qualname": 3, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 21, "bases": 0, "doc": 3}, "sqlglot.optimizer.lower_identities": {"qualname": 0, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.optimizer.lower_identities.lower_identities": {"qualname": 2, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 172}, "sqlglot.optimizer.merge_subqueries": {"qualname": 0, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"qualname": 2, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 23, "bases": 0, "doc": 272}, "sqlglot.optimizer.merge_subqueries.merge_ctes": {"qualname": 2, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 23, "bases": 0, "doc": 3}, "sqlglot.optimizer.merge_subqueries.merge_derived_tables": {"qualname": 3, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 23, "bases": 0, "doc": 3}, "sqlglot.optimizer.normalize": {"qualname": 0, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.optimizer.normalize.normalize": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 64, "bases": 0, "doc": 188}, "sqlglot.optimizer.normalize.normalized": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 21, "bases": 0, "doc": 3}, "sqlglot.optimizer.normalize.normalization_distance": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 21, "bases": 0, "doc": 171}, "sqlglot.optimizer.normalize.distributive_law": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 32, "bases": 0, "doc": 39}, "sqlglot.optimizer.optimize_joins": {"qualname": 0, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.optimizer.optimize_joins.optimize_joins": {"qualname": 2, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 132}, "sqlglot.optimizer.optimize_joins.reorder_joins": {"qualname": 2, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 13}, "sqlglot.optimizer.optimize_joins.normalize": {"qualname": 1, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 13}, "sqlglot.optimizer.optimize_joins.other_table_names": {"qualname": 3, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 3}, "sqlglot.optimizer.optimizer": {"qualname": 0, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.optimizer.optimizer.optimize": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 692, "bases": 0, "doc": 223}, "sqlglot.optimizer.pushdown_predicates": {"qualname": 0, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.optimizer.pushdown_predicates.pushdown_predicates": {"qualname": 2, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 186}, "sqlglot.optimizer.pushdown_predicates.pushdown": {"qualname": 1, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 23, "bases": 0, "doc": 3}, "sqlglot.optimizer.pushdown_predicates.pushdown_cnf": {"qualname": 2, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 23, "bases": 0, "doc": 20}, "sqlglot.optimizer.pushdown_predicates.pushdown_dnf": {"qualname": 2, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 23, "bases": 0, "doc": 31}, "sqlglot.optimizer.pushdown_predicates.nodes_for_predicate": {"qualname": 3, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 23, "bases": 0, "doc": 3}, "sqlglot.optimizer.pushdown_predicates.replace_aliases": {"qualname": 2, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 3}, "sqlglot.optimizer.pushdown_projections": {"qualname": 0, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.optimizer.pushdown_projections.DEFAULT_SELECTION": {"qualname": 2, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 7, "bases": 0, "doc": 3}, "sqlglot.optimizer.pushdown_projections.pushdown_projections": {"qualname": 2, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 33, "bases": 0, "doc": 201}, "sqlglot.optimizer.qualify_columns": {"qualname": 0, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.optimizer.qualify_columns.qualify_columns": {"qualname": 2, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 209}, "sqlglot.optimizer.qualify_columns.validate_qualify_columns": {"qualname": 3, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 13}, "sqlglot.optimizer.qualify_columns.Resolver": {"qualname": 1, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 27}, "sqlglot.optimizer.qualify_columns.Resolver.__init__": {"qualname": 3, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 14, "bases": 0, "doc": 3}, "sqlglot.optimizer.qualify_columns.Resolver.get_table": {"qualname": 3, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 41, "bases": 0, "doc": 50}, "sqlglot.optimizer.qualify_columns.Resolver.all_columns": {"qualname": 3, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 11}, "sqlglot.optimizer.qualify_columns.Resolver.get_source_columns": {"qualname": 4, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 27, "bases": 0, "doc": 13}, "sqlglot.optimizer.qualify_tables": {"qualname": 0, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"qualname": 2, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 41, "bases": 0, "doc": 190}, "sqlglot.optimizer.scope": {"qualname": 0, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.optimizer.scope.ScopeType": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 5}, "sqlglot.optimizer.scope.ScopeType.ROOT": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 7, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.optimizer.scope.ScopeType.SUBQUERY": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 7, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.optimizer.scope.ScopeType.DERIVED_TABLE": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 8, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.optimizer.scope.ScopeType.CTE": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 7, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.optimizer.scope.ScopeType.UNION": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 7, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.optimizer.scope.ScopeType.UDTF": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 7, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.optimizer.scope.Scope": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 328}, "sqlglot.optimizer.scope.Scope.__init__": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 84, "bases": 0, "doc": 3}, "sqlglot.optimizer.scope.Scope.clear_cache": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 3}, "sqlglot.optimizer.scope.Scope.branch": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 40, "bases": 0, "doc": 12}, "sqlglot.optimizer.scope.Scope.walk": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 21, "bases": 0, "doc": 3}, "sqlglot.optimizer.scope.Scope.find": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 29, "bases": 0, "doc": 97}, "sqlglot.optimizer.scope.Scope.find_all": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 29, "bases": 0, "doc": 90}, "sqlglot.optimizer.scope.Scope.replace": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 21, "bases": 0, "doc": 63}, "sqlglot.optimizer.scope.Scope.tables": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 21}, "sqlglot.optimizer.scope.Scope.ctes": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 21}, "sqlglot.optimizer.scope.Scope.derived_tables": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 43}, "sqlglot.optimizer.scope.Scope.udtfs": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 24}, "sqlglot.optimizer.scope.Scope.subqueries": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 44}, "sqlglot.optimizer.scope.Scope.columns": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 36}, "sqlglot.optimizer.scope.Scope.selected_sources": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 69}, "sqlglot.optimizer.scope.Scope.cte_sources": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 24}, "sqlglot.optimizer.scope.Scope.selects": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 52}, "sqlglot.optimizer.scope.Scope.external_columns": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 35}, "sqlglot.optimizer.scope.Scope.unqualified_columns": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 22}, "sqlglot.optimizer.scope.Scope.join_hints": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 30}, "sqlglot.optimizer.scope.Scope.source_columns": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 17, "bases": 0, "doc": 52}, "sqlglot.optimizer.scope.Scope.is_subquery": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 9}, "sqlglot.optimizer.scope.Scope.is_derived_table": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 10}, "sqlglot.optimizer.scope.Scope.is_union": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 9}, "sqlglot.optimizer.scope.Scope.is_cte": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 11}, "sqlglot.optimizer.scope.Scope.is_root": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 9}, "sqlglot.optimizer.scope.Scope.is_udtf": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 14}, "sqlglot.optimizer.scope.Scope.is_correlated_subquery": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 10}, "sqlglot.optimizer.scope.Scope.rename_source": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 23, "bases": 0, "doc": 8}, "sqlglot.optimizer.scope.Scope.add_source": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 21, "bases": 0, "doc": 8}, "sqlglot.optimizer.scope.Scope.remove_source": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 8}, "sqlglot.optimizer.scope.Scope.traverse": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 28}, "sqlglot.optimizer.scope.Scope.ref_count": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 34}, "sqlglot.optimizer.scope.traverse_scope": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 330}, "sqlglot.optimizer.scope.build_scope": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 41}, "sqlglot.optimizer.scope.walk_in_scope": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 21, "bases": 0, "doc": 83}, "sqlglot.optimizer.simplify": {"qualname": 0, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.optimizer.simplify.simplify": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 138}, "sqlglot.optimizer.simplify.rewrite_between": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 40, "bases": 0, "doc": 31}, "sqlglot.optimizer.simplify.simplify_not": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 25}, "sqlglot.optimizer.simplify.flatten": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 24}, "sqlglot.optimizer.simplify.simplify_connectors": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 21, "bases": 0, "doc": 3}, "sqlglot.optimizer.simplify.remove_compliments": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 21, "bases": 0, "doc": 19}, "sqlglot.optimizer.simplify.uniq_sort": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 31, "bases": 0, "doc": 23}, "sqlglot.optimizer.simplify.absorb_and_eliminate": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 21, "bases": 0, "doc": 58}, "sqlglot.optimizer.simplify.simplify_literals": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 21, "bases": 0, "doc": 3}, "sqlglot.optimizer.simplify.simplify_parens": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 3}, "sqlglot.optimizer.simplify.remove_where_true": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 3}, "sqlglot.optimizer.simplify.always_true": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 3}, "sqlglot.optimizer.simplify.is_complement": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 3}, "sqlglot.optimizer.simplify.is_false": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 29, "bases": 0, "doc": 3}, "sqlglot.optimizer.simplify.is_null": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 29, "bases": 0, "doc": 3}, "sqlglot.optimizer.simplify.eval_boolean": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 21, "bases": 0, "doc": 3}, "sqlglot.optimizer.simplify.extract_date": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 3}, "sqlglot.optimizer.simplify.extract_interval": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 3}, "sqlglot.optimizer.simplify.date_literal": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 3}, "sqlglot.optimizer.simplify.boolean_literal": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 3}, "sqlglot.optimizer.unnest_subqueries": {"qualname": 0, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"qualname": 2, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 227}, "sqlglot.optimizer.unnest_subqueries.unnest": {"qualname": 1, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 22, "bases": 0, "doc": 3}, "sqlglot.optimizer.unnest_subqueries.decorrelate": {"qualname": 1, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 28, "bases": 0, "doc": 3}, "sqlglot.parser": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.parser.parse_var_map": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 29, "bases": 0, "doc": 3}, "sqlglot.parser.parse_like": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 3}, "sqlglot.parser.binary_range_parser": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 93, "bases": 0, "doc": 3}, "sqlglot.parser.Parser": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 174}, "sqlglot.parser.Parser.__init__": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 162, "bases": 0, "doc": 3}, "sqlglot.parser.Parser.reset": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 3}, "sqlglot.parser.Parser.parse": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 87, "bases": 0, "doc": 70}, "sqlglot.parser.Parser.parse_into": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 159, "bases": 0, "doc": 111}, "sqlglot.parser.Parser.check_errors": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 14, "bases": 0, "doc": 16}, "sqlglot.parser.Parser.raise_error": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 57, "bases": 0, "doc": 22}, "sqlglot.parser.Parser.expression": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 73, "bases": 0, "doc": 74}, "sqlglot.parser.Parser.validate_expression": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 60, "bases": 0, "doc": 57}, "sqlglot.planner": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.planner.Plan": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.planner.Plan.__init__": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 24, "bases": 0, "doc": 3}, "sqlglot.planner.Step": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.planner.Step.from_expression": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 90, "bases": 0, "doc": 209}, "sqlglot.planner.Step.add_dependency": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.planner.Step.to_s": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 31, "bases": 0, "doc": 3}, "sqlglot.planner.Scan": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.planner.Scan.from_expression": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 90, "bases": 0, "doc": 209}, "sqlglot.planner.Join": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.planner.Join.from_joins": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 96, "bases": 0, "doc": 3}, "sqlglot.planner.Aggregate": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.planner.Sort": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.planner.SetOperation": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "sqlglot.planner.SetOperation.__init__": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 83, "bases": 0, "doc": 3}, "sqlglot.planner.SetOperation.from_expression": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 90, "bases": 0, "doc": 209}, "sqlglot.schema.Schema": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 8}, "sqlglot.schema.Schema.add_table": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 111, "bases": 0, "doc": 57}, "sqlglot.schema.Schema.column_names": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 67, "bases": 0, "doc": 56}, "sqlglot.schema.Schema.get_column_type": {"qualname": 4, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 73, "bases": 0, "doc": 56}, "sqlglot.schema.Schema.supported_table_args": {"qualname": 4, "fullname": 6, "annotation": 3, "default_value": 0, "signature": 0, "bases": 0, "doc": 16}, "sqlglot.schema.AbstractMappingSchema": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 87}, "sqlglot.schema.AbstractMappingSchema.__init__": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 27, "bases": 0, "doc": 3}, "sqlglot.schema.AbstractMappingSchema.table_parts": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 40, "bases": 0, "doc": 3}, "sqlglot.schema.AbstractMappingSchema.find": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 88, "bases": 0, "doc": 3}, "sqlglot.schema.MappingSchema": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 6, "doc": 139}, "sqlglot.schema.MappingSchema.__init__": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 128, "bases": 0, "doc": 3}, "sqlglot.schema.MappingSchema.from_mapping_schema": {"qualname": 4, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 47, "bases": 0, "doc": 3}, "sqlglot.schema.MappingSchema.copy": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 31, "bases": 0, "doc": 3}, "sqlglot.schema.MappingSchema.add_table": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 111, "bases": 0, "doc": 60}, "sqlglot.schema.MappingSchema.column_names": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 67, "bases": 0, "doc": 56}, "sqlglot.schema.MappingSchema.get_column_type": {"qualname": 4, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 79, "bases": 0, "doc": 56}, "sqlglot.schema.ensure_schema": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 106, "bases": 0, "doc": 3}, "sqlglot.schema.ensure_column_mapping": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 70, "bases": 0, "doc": 3}, "sqlglot.schema.flatten_schema": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 69, "bases": 0, "doc": 3}, "sqlglot.serde": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.serde.dump": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 149, "bases": 0, "doc": 12}, "sqlglot.serde.load": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 149, "bases": 0, "doc": 16}, "sqlglot.time": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.time.format_time": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 73, "bases": 0, "doc": 108}, "sqlglot.tokens": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 5}, "sqlglot.tokens.TokenType.L_PAREN": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.R_PAREN": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.L_BRACKET": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.R_BRACKET": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.L_BRACE": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.R_BRACE": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.COMMA": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.DOT": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.DASH": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.PLUS": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.COLON": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.DCOLON": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.SEMICOLON": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.STAR": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.BACKSLASH": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.SLASH": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.LT": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.LTE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.GT": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.GTE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.NOT": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.EQ": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.NEQ": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.NULLSAFE_EQ": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.AND": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.OR": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.AMP": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.DPIPE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.PIPE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.CARET": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.TILDA": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.ARROW": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.DARROW": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.FARROW": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.HASH": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.HASH_ARROW": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.DHASH_ARROW": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.LR_ARROW": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.LT_AT": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.AT_GT": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.DOLLAR": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.PARAMETER": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.SESSION_PARAMETER": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.NATIONAL": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.DAMP": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.BLOCK_START": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.BLOCK_END": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.SPACE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.BREAK": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.STRING": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.NUMBER": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.IDENTIFIER": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.DATABASE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.COLUMN": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.COLUMN_DEF": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.SCHEMA": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.TABLE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.VAR": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.BIT_STRING": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.HEX_STRING": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.BYTE_STRING": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.BIT": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.BOOLEAN": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.TINYINT": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.UTINYINT": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.SMALLINT": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.USMALLINT": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.INT": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.UINT": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.BIGINT": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.UBIGINT": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.FLOAT": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.DOUBLE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.DECIMAL": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.BIGDECIMAL": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.CHAR": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.NCHAR": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.VARCHAR": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.NVARCHAR": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.TEXT": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.MEDIUMTEXT": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.LONGTEXT": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.MEDIUMBLOB": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.LONGBLOB": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.BINARY": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.VARBINARY": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.JSON": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.JSONB": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.TIME": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.TIMESTAMP": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.TIMESTAMPTZ": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.TIMESTAMPLTZ": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.DATETIME": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.DATE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.UUID": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.GEOGRAPHY": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.NULLABLE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.GEOMETRY": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.HLLSKETCH": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.HSTORE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.SUPER": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.SERIAL": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.SMALLSERIAL": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.BIGSERIAL": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.XML": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.UNIQUEIDENTIFIER": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.MONEY": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.SMALLMONEY": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.ROWVERSION": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.IMAGE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.VARIANT": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.OBJECT": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.INET": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.ALIAS": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.ALTER": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.ALWAYS": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.ALL": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.ANTI": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.ANY": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.APPLY": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.ARRAY": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.ASC": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.ASOF": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.AT_TIME_ZONE": {"qualname": 4, "fullname": 6, "annotation": 0, "default_value": 13, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.AUTO_INCREMENT": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.BEGIN": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.BETWEEN": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.BOTH": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.BUCKET": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.BY_DEFAULT": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.CACHE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.CASCADE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.CASE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.CHARACTER_SET": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.CLUSTER_BY": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.COLLATE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.COMMAND": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.COMMENT": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.COMMIT": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.COMPOUND": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.CONSTRAINT": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.CREATE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.CROSS": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.CUBE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.CURRENT_DATE": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.CURRENT_DATETIME": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.CURRENT_ROW": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.CURRENT_TIME": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.CURRENT_TIMESTAMP": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.CURRENT_USER": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.DEFAULT": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.DELETE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.DESC": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.DESCRIBE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.DISTINCT": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.DISTINCT_FROM": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.DISTRIBUTE_BY": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.DIV": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.DROP": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.ELSE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.END": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.ESCAPE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.EXCEPT": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.EXECUTE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.EXISTS": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.FALSE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.FETCH": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.FILTER": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.FINAL": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.FIRST": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.FOLLOWING": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.FOR": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.FOREIGN_KEY": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.FORMAT": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.FROM": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.FULL": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.FUNCTION": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.GLOB": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.GLOBAL": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.GROUP_BY": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.GROUPING_SETS": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.HAVING": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.HINT": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.IF": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.IGNORE_NULLS": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.ILIKE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.ILIKE_ANY": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.IN": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.INDEX": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.INNER": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.INSERT": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.INTERSECT": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.INTERVAL": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.INTO": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.INTRODUCER": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.IRLIKE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.IS": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.ISNULL": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.JOIN": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.JOIN_MARKER": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.LANGUAGE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.LATERAL": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.LAZY": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.LEADING": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.LEFT": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.LIKE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.LIKE_ANY": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.LIMIT": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.LOAD_DATA": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.LOCAL": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.MAP": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.MATCH_RECOGNIZE": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.MATERIALIZED": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.MERGE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.MOD": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.NATURAL": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.NEXT": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.NO_ACTION": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.NOTNULL": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.NULL": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.NULLS_FIRST": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.NULLS_LAST": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.OFFSET": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.ON": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.ONLY": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.OPTIONS": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.ORDER_BY": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.ORDERED": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.ORDINALITY": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.OUTER": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.OUT_OF": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.OVER": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.OVERLAPS": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.OVERWRITE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.PARTITION": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.PARTITION_BY": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.PERCENT": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.PIVOT": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.PLACEHOLDER": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.PRAGMA": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.PRECEDING": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.PRIMARY_KEY": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.PROCEDURE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.PROPERTIES": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.PSEUDO_TYPE": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.QUALIFY": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.QUOTE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.RANGE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.RECURSIVE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.REPLACE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.RESPECT_NULLS": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.RETURNING": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.REFERENCES": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.RIGHT": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.RLIKE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.ROLLBACK": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.ROLLUP": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.ROW": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.ROWS": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.SEED": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.SELECT": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.SEMI": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.SEPARATOR": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.SERDE_PROPERTIES": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.SET": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.SHOW": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.SIMILAR_TO": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.SOME": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.SORTKEY": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.SORT_BY": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.STRUCT": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.TABLE_SAMPLE": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.TEMPORARY": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.TOP": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.THEN": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.TRAILING": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.TRUE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.UNBOUNDED": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.UNCACHE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.UNION": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.UNLOGGED": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.UNNEST": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.UNPIVOT": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.UPDATE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.USE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.USING": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.VALUES": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.VIEW": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.VOLATILE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.WHEN": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.WHERE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.WINDOW": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.WITH": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.WITH_TIME_ZONE": {"qualname": 4, "fullname": 6, "annotation": 0, "default_value": 13, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.WITH_LOCAL_TIME_ZONE": {"qualname": 5, "fullname": 7, "annotation": 0, "default_value": 15, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.WITHIN_GROUP": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 11, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.WITHOUT_TIME_ZONE": {"qualname": 4, "fullname": 6, "annotation": 0, "default_value": 13, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.TokenType.UNIQUE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 9, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.Token": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.Token.__init__": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 115, "bases": 0, "doc": 3}, "sqlglot.tokens.Token.number": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 14}, "sqlglot.tokens.Token.string": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 14}, "sqlglot.tokens.Token.identifier": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 14}, "sqlglot.tokens.Token.var": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 14}, "sqlglot.tokens.Token.start": {"qualname": 2, "fullname": 4, "annotation": 2, "default_value": 0, "signature": 0, "bases": 0, "doc": 9}, "sqlglot.tokens.Tokenizer": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.tokens.Tokenizer.reset": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 14, "bases": 0, "doc": 3}, "sqlglot.tokens.Tokenizer.tokenize": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 40, "bases": 0, "doc": 16}, "sqlglot.transforms": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.transforms.unalias_group": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 40, "bases": 0, "doc": 146}, "sqlglot.transforms.eliminate_distinct_on": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 40, "bases": 0, "doc": 66}, "sqlglot.transforms.eliminate_qualify": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 40, "bases": 0, "doc": 111}, "sqlglot.transforms.remove_precision_parameterized_types": {"qualname": 4, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 40, "bases": 0, "doc": 33}, "sqlglot.transforms.unnest_to_explode": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 40, "bases": 0, "doc": 16}, "sqlglot.transforms.explode_to_unnest": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 40, "bases": 0, "doc": 12}, "sqlglot.transforms.remove_target_from_merge": {"qualname": 4, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 40, "bases": 0, "doc": 11}, "sqlglot.transforms.preprocess": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 94, "bases": 0, "doc": 70}, "sqlglot.trie": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "sqlglot.trie.new_trie": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 54, "bases": 0, "doc": 200}, "sqlglot.trie.in_trie": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 47, "bases": 0, "doc": 299}}, "length": 1778, "save": true}, "index": {"qualname": {"root": {"docs": {"sqlglot.dataframe.sql.DataFrame.__init__": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.__init__": {"tf": 1}, "sqlglot.dataframe.sql.Column.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.__init__": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameReader.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.__init__": {"tf": 1}, "sqlglot.diff.Insert.__init__": {"tf": 1}, "sqlglot.diff.Remove.__init__": {"tf": 1}, "sqlglot.diff.Move.__init__": {"tf": 1}, "sqlglot.diff.Update.__init__": {"tf": 1}, "sqlglot.diff.Keep.__init__": {"tf": 1}, "sqlglot.diff.ChangeDistiller.__init__": {"tf": 1}, "sqlglot.errors.ParseError.__init__": {"tf": 1}, "sqlglot.executor.context.Context.__init__": {"tf": 1}, "sqlglot.executor.env.reverse_key.__init__": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.__init__": {"tf": 1}, "sqlglot.executor.table.Table.__init__": {"tf": 1}, "sqlglot.executor.table.TableIter.__init__": {"tf": 1}, "sqlglot.executor.table.RangeReader.__init__": {"tf": 1}, "sqlglot.executor.table.RowReader.__init__": {"tf": 1}, "sqlglot.expressions.Expression.__init__": {"tf": 1}, "sqlglot.expressions.Condition.and_": {"tf": 1}, "sqlglot.expressions.Condition.or_": {"tf": 1}, "sqlglot.expressions.Condition.not_": {"tf": 1}, "sqlglot.expressions.Unionable.except_": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.TimeUnit.__init__": {"tf": 1}, "sqlglot.expressions.except_": {"tf": 1}, "sqlglot.expressions.from_": {"tf": 1}, "sqlglot.expressions.and_": {"tf": 1}, "sqlglot.expressions.or_": {"tf": 1}, "sqlglot.expressions.not_": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1}, "sqlglot.expressions.table_": {"tf": 1}, "sqlglot.generator.Generator.__init__": {"tf": 1}, "sqlglot.lineage.Node.__init__": {"tf": 1}, "sqlglot.lineage.LineageHTML.__init__": {"tf": 1}, "sqlglot.optimizer.annotate_types.TypeAnnotator.__init__": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.__init__": {"tf": 1}, "sqlglot.optimizer.scope.Scope.__init__": {"tf": 1}, "sqlglot.parser.Parser.__init__": {"tf": 1}, "sqlglot.planner.Plan.__init__": {"tf": 1}, "sqlglot.planner.SetOperation.__init__": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema.__init__": {"tf": 1}, "sqlglot.schema.MappingSchema.__init__": {"tf": 1}, "sqlglot.tokens.Token.__init__": {"tf": 1}}, "df": 48, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.pretty": {"tf": 1}}, "df": 1}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {"sqlglot.dialects.dialect.Dialects.PRESTO": {"tf": 1}, "sqlglot.dialects.presto.Presto": {"tf": 1}, "sqlglot.dialects.presto.Presto.Tokenizer": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator.interval_sql": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator.transaction_sql": {"tf": 1}}, "df": 7}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Predicate": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.nodes_for_predicate": {"tf": 1}}, "df": 2, "s": {"docs": {"sqlglot.optimizer.canonicalize.ensure_bool_predicates": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_predicates": {"tf": 1}}, "df": 2}}}}}}}, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.generator.Generator.prepend_ctes": {"tf": 1}}, "df": 1}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.transforms.preprocess": {"tf": 1}}, "df": 1}}}}}}}, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.tokens.TokenType.PRECEDING": {"tf": 1}}, "df": 1}}}}}, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.transforms.remove_precision_parameterized_types": {"tf": 1}}, "df": 1}}}}}}}, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dialects.dialect.no_properties_sql": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator.with_properties": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.with_properties": {"tf": 1}, "sqlglot.expressions.Properties": {"tf": 1}, "sqlglot.expressions.Properties.Location": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_CREATE": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_NAME": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_SCHEMA": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_WITH": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_ALIAS": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_EXPRESSION": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_INDEX": {"tf": 1}, "sqlglot.expressions.Properties.Location.UNSUPPORTED": {"tf": 1}, "sqlglot.expressions.Properties.from_dict": {"tf": 1}, "sqlglot.generator.Generator.properties_sql": {"tf": 1}, "sqlglot.generator.Generator.root_properties": {"tf": 1}, "sqlglot.generator.Generator.properties": {"tf": 1}, "sqlglot.generator.Generator.with_properties": {"tf": 1}, "sqlglot.generator.Generator.locate_properties": {"tf": 1}, "sqlglot.tokens.TokenType.PROPERTIES": {"tf": 1}, "sqlglot.tokens.TokenType.SERDE_PROPERTIES": {"tf": 1}}, "df": 21}}}, "y": {"docs": {"sqlglot.expressions.Property": {"tf": 1}, "sqlglot.generator.Generator.property_sql": {"tf": 1}, "sqlglot.generator.Generator.naked_property": {"tf": 1}}, "df": 3}}}}}, "j": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 1}}, "df": 1}}}}}}}}, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.PROCEDURE": {"tf": 1}}, "df": 1}}}}}}}, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.expressions.Pragma": {"tf": 1}, "sqlglot.generator.Generator.pragma_sql": {"tf": 1}, "sqlglot.tokens.TokenType.PRAGMA": {"tf": 1}}, "df": 3}}}}, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.tokens.TokenType.PRIMARY_KEY": {"tf": 1}}, "df": 1, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.PrimaryKey": {"tf": 1}, "sqlglot.generator.Generator.primarykey_sql": {"tf": 1}}, "df": 2, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.PrimaryKeyColumnConstraint": {"tf": 1}, "sqlglot.generator.Generator.primarykeycolumnconstraint_sql": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}}}}}}}}}}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.parse": {"tf": 1}, "sqlglot.parse_one": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.parse": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.parse_into": {"tf": 1}, "sqlglot.dialects.dialect.parse_date_delta": {"tf": 1}, "sqlglot.dialects.dialect.parse_date_delta_with_interval": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1}, "sqlglot.parser.parse_var_map": {"tf": 1}, "sqlglot.parser.parse_like": {"tf": 1}, "sqlglot.parser.Parser.parse": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 1}}, "df": 11, "r": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.expressions.Func.default_parser_mappings": {"tf": 1}, "sqlglot.parser.binary_range_parser": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1}, "sqlglot.parser.Parser.__init__": {"tf": 1}, "sqlglot.parser.Parser.reset": {"tf": 1}, "sqlglot.parser.Parser.parse": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 1}, "sqlglot.parser.Parser.check_errors": {"tf": 1}, "sqlglot.parser.Parser.raise_error": {"tf": 1}, "sqlglot.parser.Parser.expression": {"tf": 1}, "sqlglot.parser.Parser.validate_expression": {"tf": 1}}, "df": 30}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.errors.ParseError": {"tf": 1}, "sqlglot.errors.ParseError.__init__": {"tf": 1}, "sqlglot.errors.ParseError.new": {"tf": 1}}, "df": 3}}}}}}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.Partition": {"tf": 1}, "sqlglot.generator.Generator.partition_sql": {"tf": 1}, "sqlglot.generator.Generator.partition_by_sql": {"tf": 1}, "sqlglot.tokens.TokenType.PARTITION": {"tf": 1}, "sqlglot.tokens.TokenType.PARTITION_BY": {"tf": 1}}, "df": 5, "b": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dataframe.sql.Window.partitionBy": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.partitionBy": {"tf": 1}}, "df": 2}}, "s": {"docs": {"sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1}}, "df": 1}, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dialects.teradata.Teradata.Generator.partitionedbyproperty_sql": {"tf": 1}, "sqlglot.expressions.PartitionedByProperty": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}}}}, "s": {"docs": {"sqlglot.expressions.Column.parts": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema.table_parts": {"tf": 1}}, "df": 2}}, "e": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dialects.dialect.no_paren_current_date_sql": {"tf": 1}, "sqlglot.expressions.Paren": {"tf": 1}, "sqlglot.expressions.paren": {"tf": 1}, "sqlglot.generator.Generator.paren_sql": {"tf": 1}, "sqlglot.tokens.TokenType.L_PAREN": {"tf": 1}, "sqlglot.tokens.TokenType.R_PAREN": {"tf": 1}}, "df": 6, "t": {"docs": {"sqlglot.expressions.Expression.parent_select": {"tf": 1}, "sqlglot.expressions.Expression.same_parent": {"tf": 1}}, "df": 2}, "s": {"docs": {"sqlglot.optimizer.simplify.simplify_parens": {"tf": 1}}, "df": 1}}}, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.Parameter": {"tf": 1}, "sqlglot.generator.Generator.parameter_sql": {"tf": 1}, "sqlglot.tokens.TokenType.PARAMETER": {"tf": 1}, "sqlglot.tokens.TokenType.SESSION_PARAMETER": {"tf": 1}}, "df": 4, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.transforms.remove_precision_parameterized_types": {"tf": 1}}, "df": 1}}}}}}}}, "s": {"docs": {"sqlglot.helper.count_params": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.PathColumnConstraint": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}, "d": {"docs": {"sqlglot.generator.Generator.pad_comment": {"tf": 1}}, "df": 1}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe.sql.DataFrame.persist": {"tf": 1}}, "df": 1}}}}, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.PERCENT": {"tf": 1}}, "df": 1, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.PercentileCont": {"tf": 1}}, "df": 1}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot.expressions.PercentileDisc": {"tf": 1}}, "df": 1}}}}}}}}}}}}}, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe.sql.GroupedData.pivot": {"tf": 1}, "sqlglot.dialects.dialect.no_pivot_sql": {"tf": 1}, "sqlglot.expressions.Pivot": {"tf": 1}, "sqlglot.generator.Generator.pivot_sql": {"tf": 1}, "sqlglot.tokens.TokenType.PIVOT": {"tf": 1}}, "df": 5}}}, "p": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.PIPE": {"tf": 1}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.Properties.Location.POST_CREATE": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_NAME": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_SCHEMA": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_WITH": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_ALIAS": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_EXPRESSION": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_INDEX": {"tf": 1}}, "df": 7, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dialects.dialect.Dialects.POSTGRES": {"tf": 1}, "sqlglot.dialects.postgres.Postgres": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Tokenizer": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}}, "df": 5}}}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dialects.dialect.str_position_sql": {"tf": 1}, "sqlglot.executor.env.str_position": {"tf": 1}}, "df": 2}}}}}, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Posexplode": {"tf": 1}}, "df": 1}}}}}}}}, "p": {"docs": {"sqlglot.executor.table.Table.pop": {"tf": 1}, "sqlglot.expressions.Expression.pop": {"tf": 1}}, "df": 2}, "w": {"docs": {"sqlglot.expressions.Pow": {"tf": 1}}, "df": 1}}, "y": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.executor.python.Python": {"tf": 1}, "sqlglot.executor.python.Python.Tokenizer": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}}, "df": 3, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.executor.python.PythonExecutor": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.__init__": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.execute": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.generate": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.generate_tuple": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.context": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.table": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.scan": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.static": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.scan_table": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.scan_csv": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.join": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.nested_loop_join": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.hash_join": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.aggregate": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.sort": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.set_operation": {"tf": 1}}, "df": 17}}}}}}}}}}}}}, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.Placeholder": {"tf": 1}, "sqlglot.generator.Generator.placeholder_sql": {"tf": 1}, "sqlglot.tokens.TokenType.PLACEHOLDER": {"tf": 1}}, "df": 3, "s": {"docs": {"sqlglot.expressions.replace_placeholders": {"tf": 1}}, "df": 1}}}}}}}}}, "n": {"docs": {"sqlglot.planner.Plan": {"tf": 1}, "sqlglot.planner.Plan.__init__": {"tf": 1}}, "df": 2}}, "u": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.tokens.TokenType.PLUS": {"tf": 1}}, "df": 1}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "o": {"docs": {"sqlglot.tokens.TokenType.PSEUDO_TYPE": {"tf": 1}}, "df": 1, "t": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.PseudoType": {"tf": 1}, "sqlglot.generator.Generator.pseudotype_sql": {"tf": 1}}, "df": 2}}}}}}}}}, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.optimizer.pushdown_predicates.pushdown_predicates": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_cnf": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_dnf": {"tf": 1}, "sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 1}}, "df": 5}}}}}}}}, "s": {"docs": {"sqlglot.planner.Step.to_s": {"tf": 1}}, "df": 1, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.schema": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_SCHEMA": {"tf": 1}, "sqlglot.expressions.Schema": {"tf": 1}, "sqlglot.generator.Generator.schema_sql": {"tf": 1}, "sqlglot.schema.Schema": {"tf": 1}, "sqlglot.schema.Schema.add_table": {"tf": 1}, "sqlglot.schema.Schema.column_names": {"tf": 1}, "sqlglot.schema.Schema.get_column_type": {"tf": 1}, "sqlglot.schema.Schema.supported_table_args": {"tf": 1}, "sqlglot.schema.MappingSchema.from_mapping_schema": {"tf": 1}, "sqlglot.schema.ensure_schema": {"tf": 1}, "sqlglot.schema.flatten_schema": {"tf": 1}, "sqlglot.tokens.TokenType.SCHEMA": {"tf": 1}}, "df": 13, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.errors.SchemaError": {"tf": 1}}, "df": 1}}}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.SchemaCommentProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dialects.dialect.arrow_json_extract_scalar_sql": {"tf": 1}}, "df": 1}}}, "n": {"docs": {"sqlglot.executor.python.PythonExecutor.scan": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.scan_table": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.scan_csv": {"tf": 1}, "sqlglot.planner.Scan": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}}, "df": 5}}, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.scope.Scope": {"tf": 1}, "sqlglot.optimizer.scope.Scope.__init__": {"tf": 1}, "sqlglot.optimizer.scope.Scope.clear_cache": {"tf": 1}, "sqlglot.optimizer.scope.Scope.branch": {"tf": 1}, "sqlglot.optimizer.scope.Scope.walk": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1}, "sqlglot.optimizer.scope.Scope.replace": {"tf": 1}, "sqlglot.optimizer.scope.Scope.tables": {"tf": 1}, "sqlglot.optimizer.scope.Scope.ctes": {"tf": 1}, "sqlglot.optimizer.scope.Scope.derived_tables": {"tf": 1}, "sqlglot.optimizer.scope.Scope.udtfs": {"tf": 1}, "sqlglot.optimizer.scope.Scope.subqueries": {"tf": 1}, "sqlglot.optimizer.scope.Scope.columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 1}, "sqlglot.optimizer.scope.Scope.cte_sources": {"tf": 1}, "sqlglot.optimizer.scope.Scope.selects": {"tf": 1}, "sqlglot.optimizer.scope.Scope.external_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.unqualified_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.join_hints": {"tf": 1}, "sqlglot.optimizer.scope.Scope.source_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_subquery": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_derived_table": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_union": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_cte": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_root": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_udtf": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_correlated_subquery": {"tf": 1}, "sqlglot.optimizer.scope.Scope.rename_source": {"tf": 1}, "sqlglot.optimizer.scope.Scope.add_source": {"tf": 1}, "sqlglot.optimizer.scope.Scope.remove_source": {"tf": 1}, "sqlglot.optimizer.scope.Scope.traverse": {"tf": 1}, "sqlglot.optimizer.scope.Scope.ref_count": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}, "sqlglot.optimizer.scope.build_scope": {"tf": 1}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1}}, "df": 36, "t": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.scope.ScopeType": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.ROOT": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.SUBQUERY": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.DERIVED_TABLE": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.CTE": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.UNION": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.UDTF": {"tf": 1}}, "df": 7}}}}}}}}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.dialects.dialect.Dialects.SPARK": {"tf": 1}, "sqlglot.dialects.spark.Spark": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator.cast_sql": {"tf": 1}, "sqlglot.dialects.spark.Spark.Tokenizer": {"tf": 1}}, "df": 6, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dataframe.sql.SparkSession": {"tf": 1}, "sqlglot.dataframe.sql.SparkSession.table": {"tf": 1}, "sqlglot.dataframe.sql.SparkSession.createDataFrame": {"tf": 1}, "sqlglot.dataframe.sql.SparkSession.sql": {"tf": 1}}, "df": 4}}}}}}}}}, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.SPACE": {"tf": 1}}, "df": 1}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.Split": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1}}, "df": 2}}}, "e": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot.generator.Generator.window_spec_sql": {"tf": 1}}, "df": 1}}}, "q": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.dataframe.sql.SparkSession.sql": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sql": {"tf": 1}, "sqlglot.dataframe.sql.Column.sql": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.sql": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.sql": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.array_sql": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.transaction_sql": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.commit_sql": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.rollback_sql": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator.cte_sql": {"tf": 1}, "sqlglot.dialects.dialect.approx_count_distinct_sql": {"tf": 1}, "sqlglot.dialects.dialect.if_sql": {"tf": 1}, "sqlglot.dialects.dialect.arrow_json_extract_sql": {"tf": 1}, "sqlglot.dialects.dialect.arrow_json_extract_scalar_sql": {"tf": 1}, "sqlglot.dialects.dialect.inline_array_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_ilike_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_paren_current_date_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_recursive_cte_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_safe_divide_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_tablesample_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_pivot_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_trycast_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_properties_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_comment_column_constraint_sql": {"tf": 1}, "sqlglot.dialects.dialect.str_position_sql": {"tf": 1}, "sqlglot.dialects.dialect.struct_extract_sql": {"tf": 1}, "sqlglot.dialects.dialect.var_map_sql": {"tf": 1}, "sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1}, "sqlglot.dialects.dialect.timestamptrunc_sql": {"tf": 1}, "sqlglot.dialects.dialect.strposition_to_locate_sql": {"tf": 1}, "sqlglot.dialects.dialect.timestrtotime_sql": {"tf": 1}, "sqlglot.dialects.dialect.datestrtodate_sql": {"tf": 1}, "sqlglot.dialects.dialect.trim_sql": {"tf": 1}, "sqlglot.dialects.dialect.str_to_time_sql": {"tf": 1}, "sqlglot.dialects.dialect.ts_or_ds_to_date_sql": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator.tablesample_sql": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator.arrayagg_sql": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator.show_sql": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator.offset_sql": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator.column_sql": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator.xmltable_sql": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator.interval_sql": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator.transaction_sql": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.renametable_sql": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.settag_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.describe_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.generatedasidentitycolumnconstraint_sql": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator.cast_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.cast_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.datediff_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.groupconcat_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.least_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.transaction_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.partitionedbyproperty_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.update_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.mod_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.rangen_sql": {"tf": 1}, "sqlglot.dialects.tsql.generate_date_delta_with_unit_sql": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator.offset_sql": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator.systemtime_sql": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator.returnsproperty_sql": {"tf": 1}, "sqlglot.expressions.Expression.sql": {"tf": 1}, "sqlglot.expressions.Func.sql_names": {"tf": 1}, "sqlglot.expressions.Func.sql_name": {"tf": 1}, "sqlglot.generator.Generator.sql": {"tf": 1}, "sqlglot.generator.Generator.uncache_sql": {"tf": 1}, "sqlglot.generator.Generator.cache_sql": {"tf": 1}, "sqlglot.generator.Generator.characterset_sql": {"tf": 1}, "sqlglot.generator.Generator.column_sql": {"tf": 1}, "sqlglot.generator.Generator.columnposition_sql": {"tf": 1}, "sqlglot.generator.Generator.columndef_sql": {"tf": 1}, "sqlglot.generator.Generator.columnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.autoincrementcolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.compresscolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.generatedasidentitycolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.notnullcolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.primarykeycolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.uniquecolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.create_sql": {"tf": 1}, "sqlglot.generator.Generator.describe_sql": {"tf": 1}, "sqlglot.generator.Generator.with_sql": {"tf": 1}, "sqlglot.generator.Generator.cte_sql": {"tf": 1}, "sqlglot.generator.Generator.tablealias_sql": {"tf": 1}, "sqlglot.generator.Generator.bitstring_sql": {"tf": 1}, "sqlglot.generator.Generator.hexstring_sql": {"tf": 1}, "sqlglot.generator.Generator.bytestring_sql": {"tf": 1}, "sqlglot.generator.Generator.datatype_sql": {"tf": 1}, "sqlglot.generator.Generator.directory_sql": {"tf": 1}, "sqlglot.generator.Generator.delete_sql": {"tf": 1}, "sqlglot.generator.Generator.drop_sql": {"tf": 1}, "sqlglot.generator.Generator.except_sql": {"tf": 1}, "sqlglot.generator.Generator.fetch_sql": {"tf": 1}, "sqlglot.generator.Generator.filter_sql": {"tf": 1}, "sqlglot.generator.Generator.hint_sql": {"tf": 1}, "sqlglot.generator.Generator.index_sql": {"tf": 1}, "sqlglot.generator.Generator.identifier_sql": {"tf": 1}, "sqlglot.generator.Generator.inputoutputformat_sql": {"tf": 1}, "sqlglot.generator.Generator.national_sql": {"tf": 1}, "sqlglot.generator.Generator.partition_sql": {"tf": 1}, "sqlglot.generator.Generator.properties_sql": {"tf": 1}, "sqlglot.generator.Generator.property_sql": {"tf": 1}, "sqlglot.generator.Generator.likeproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.fallbackproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.journalproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.freespaceproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.afterjournalproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.checksumproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.mergeblockratioproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.datablocksizeproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.blockcompressionproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.isolatedloadingproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.lockingproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.withdataproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.insert_sql": {"tf": 1}, "sqlglot.generator.Generator.intersect_sql": {"tf": 1}, "sqlglot.generator.Generator.introducer_sql": {"tf": 1}, "sqlglot.generator.Generator.pseudotype_sql": {"tf": 1}, "sqlglot.generator.Generator.onconflict_sql": {"tf": 1}, "sqlglot.generator.Generator.returning_sql": {"tf": 1}, "sqlglot.generator.Generator.rowformatdelimitedproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.table_sql": {"tf": 1}, "sqlglot.generator.Generator.tablesample_sql": {"tf": 1}, "sqlglot.generator.Generator.pivot_sql": {"tf": 1}, "sqlglot.generator.Generator.tuple_sql": {"tf": 1}, "sqlglot.generator.Generator.update_sql": {"tf": 1}, "sqlglot.generator.Generator.values_sql": {"tf": 1}, "sqlglot.generator.Generator.var_sql": {"tf": 1}, "sqlglot.generator.Generator.into_sql": {"tf": 1}, "sqlglot.generator.Generator.from_sql": {"tf": 1}, "sqlglot.generator.Generator.group_sql": {"tf": 1}, "sqlglot.generator.Generator.having_sql": {"tf": 1}, "sqlglot.generator.Generator.join_sql": {"tf": 1}, "sqlglot.generator.Generator.lambda_sql": {"tf": 1}, "sqlglot.generator.Generator.lateral_sql": {"tf": 1}, "sqlglot.generator.Generator.limit_sql": {"tf": 1}, "sqlglot.generator.Generator.offset_sql": {"tf": 1}, "sqlglot.generator.Generator.setitem_sql": {"tf": 1}, "sqlglot.generator.Generator.set_sql": {"tf": 1}, "sqlglot.generator.Generator.pragma_sql": {"tf": 1}, "sqlglot.generator.Generator.lock_sql": {"tf": 1}, "sqlglot.generator.Generator.literal_sql": {"tf": 1}, "sqlglot.generator.Generator.loaddata_sql": {"tf": 1}, "sqlglot.generator.Generator.null_sql": {"tf": 1}, "sqlglot.generator.Generator.boolean_sql": {"tf": 1}, "sqlglot.generator.Generator.order_sql": {"tf": 1}, "sqlglot.generator.Generator.cluster_sql": {"tf": 1}, "sqlglot.generator.Generator.distribute_sql": {"tf": 1}, "sqlglot.generator.Generator.sort_sql": {"tf": 1}, "sqlglot.generator.Generator.ordered_sql": {"tf": 1}, "sqlglot.generator.Generator.matchrecognize_sql": {"tf": 1}, "sqlglot.generator.Generator.select_sql": {"tf": 1}, "sqlglot.generator.Generator.schema_sql": {"tf": 1}, "sqlglot.generator.Generator.star_sql": {"tf": 1}, "sqlglot.generator.Generator.structkwarg_sql": {"tf": 1}, "sqlglot.generator.Generator.parameter_sql": {"tf": 1}, "sqlglot.generator.Generator.sessionparameter_sql": {"tf": 1}, "sqlglot.generator.Generator.placeholder_sql": {"tf": 1}, "sqlglot.generator.Generator.subquery_sql": {"tf": 1}, "sqlglot.generator.Generator.qualify_sql": {"tf": 1}, "sqlglot.generator.Generator.union_sql": {"tf": 1}, "sqlglot.generator.Generator.unnest_sql": {"tf": 1}, "sqlglot.generator.Generator.where_sql": {"tf": 1}, "sqlglot.generator.Generator.window_sql": {"tf": 1}, "sqlglot.generator.Generator.partition_by_sql": {"tf": 1}, "sqlglot.generator.Generator.window_spec_sql": {"tf": 1}, "sqlglot.generator.Generator.withingroup_sql": {"tf": 1}, "sqlglot.generator.Generator.between_sql": {"tf": 1}, "sqlglot.generator.Generator.bracket_sql": {"tf": 1}, "sqlglot.generator.Generator.all_sql": {"tf": 1}, "sqlglot.generator.Generator.any_sql": {"tf": 1}, "sqlglot.generator.Generator.exists_sql": {"tf": 1}, "sqlglot.generator.Generator.case_sql": {"tf": 1}, "sqlglot.generator.Generator.constraint_sql": {"tf": 1}, "sqlglot.generator.Generator.extract_sql": {"tf": 1}, "sqlglot.generator.Generator.trim_sql": {"tf": 1}, "sqlglot.generator.Generator.concat_sql": {"tf": 1}, "sqlglot.generator.Generator.check_sql": {"tf": 1}, "sqlglot.generator.Generator.foreignkey_sql": {"tf": 1}, "sqlglot.generator.Generator.primarykey_sql": {"tf": 1}, "sqlglot.generator.Generator.unique_sql": {"tf": 1}, "sqlglot.generator.Generator.if_sql": {"tf": 1}, "sqlglot.generator.Generator.matchagainst_sql": {"tf": 1}, "sqlglot.generator.Generator.jsonkeyvalue_sql": {"tf": 1}, "sqlglot.generator.Generator.jsonobject_sql": {"tf": 1}, "sqlglot.generator.Generator.in_sql": {"tf": 1}, "sqlglot.generator.Generator.interval_sql": {"tf": 1}, "sqlglot.generator.Generator.return_sql": {"tf": 1}, "sqlglot.generator.Generator.reference_sql": {"tf": 1}, "sqlglot.generator.Generator.anonymous_sql": {"tf": 1}, "sqlglot.generator.Generator.paren_sql": {"tf": 1}, "sqlglot.generator.Generator.neg_sql": {"tf": 1}, "sqlglot.generator.Generator.not_sql": {"tf": 1}, "sqlglot.generator.Generator.alias_sql": {"tf": 1}, "sqlglot.generator.Generator.aliases_sql": {"tf": 1}, "sqlglot.generator.Generator.attimezone_sql": {"tf": 1}, "sqlglot.generator.Generator.add_sql": {"tf": 1}, "sqlglot.generator.Generator.and_sql": {"tf": 1}, "sqlglot.generator.Generator.connector_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwiseand_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwiseleftshift_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwisenot_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwiseor_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwiserightshift_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwisexor_sql": {"tf": 1}, "sqlglot.generator.Generator.cast_sql": {"tf": 1}, "sqlglot.generator.Generator.currentdate_sql": {"tf": 1}, "sqlglot.generator.Generator.collate_sql": {"tf": 1}, "sqlglot.generator.Generator.command_sql": {"tf": 1}, "sqlglot.generator.Generator.comment_sql": {"tf": 1}, "sqlglot.generator.Generator.transaction_sql": {"tf": 1}, "sqlglot.generator.Generator.commit_sql": {"tf": 1}, "sqlglot.generator.Generator.rollback_sql": {"tf": 1}, "sqlglot.generator.Generator.altercolumn_sql": {"tf": 1}, "sqlglot.generator.Generator.renametable_sql": {"tf": 1}, "sqlglot.generator.Generator.altertable_sql": {"tf": 1}, "sqlglot.generator.Generator.droppartition_sql": {"tf": 1}, "sqlglot.generator.Generator.addconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.distinct_sql": {"tf": 1}, "sqlglot.generator.Generator.ignorenulls_sql": {"tf": 1}, "sqlglot.generator.Generator.respectnulls_sql": {"tf": 1}, "sqlglot.generator.Generator.intdiv_sql": {"tf": 1}, "sqlglot.generator.Generator.dpipe_sql": {"tf": 1}, "sqlglot.generator.Generator.div_sql": {"tf": 1}, "sqlglot.generator.Generator.overlaps_sql": {"tf": 1}, "sqlglot.generator.Generator.distance_sql": {"tf": 1}, "sqlglot.generator.Generator.dot_sql": {"tf": 1}, "sqlglot.generator.Generator.eq_sql": {"tf": 1}, "sqlglot.generator.Generator.escape_sql": {"tf": 1}, "sqlglot.generator.Generator.glob_sql": {"tf": 1}, "sqlglot.generator.Generator.gt_sql": {"tf": 1}, "sqlglot.generator.Generator.gte_sql": {"tf": 1}, "sqlglot.generator.Generator.ilike_sql": {"tf": 1}, "sqlglot.generator.Generator.ilikeany_sql": {"tf": 1}, "sqlglot.generator.Generator.is_sql": {"tf": 1}, "sqlglot.generator.Generator.like_sql": {"tf": 1}, "sqlglot.generator.Generator.likeany_sql": {"tf": 1}, "sqlglot.generator.Generator.similarto_sql": {"tf": 1}, "sqlglot.generator.Generator.lt_sql": {"tf": 1}, "sqlglot.generator.Generator.lte_sql": {"tf": 1}, "sqlglot.generator.Generator.mod_sql": {"tf": 1}, "sqlglot.generator.Generator.mul_sql": {"tf": 1}, "sqlglot.generator.Generator.neq_sql": {"tf": 1}, "sqlglot.generator.Generator.nullsafeeq_sql": {"tf": 1}, "sqlglot.generator.Generator.nullsafeneq_sql": {"tf": 1}, "sqlglot.generator.Generator.or_sql": {"tf": 1}, "sqlglot.generator.Generator.slice_sql": {"tf": 1}, "sqlglot.generator.Generator.sub_sql": {"tf": 1}, "sqlglot.generator.Generator.trycast_sql": {"tf": 1}, "sqlglot.generator.Generator.use_sql": {"tf": 1}, "sqlglot.generator.Generator.function_fallback_sql": {"tf": 1}, "sqlglot.generator.Generator.tag_sql": {"tf": 1}, "sqlglot.generator.Generator.token_sql": {"tf": 1}, "sqlglot.generator.Generator.userdefinedfunction_sql": {"tf": 1}, "sqlglot.generator.Generator.joinhint_sql": {"tf": 1}, "sqlglot.generator.Generator.kwarg_sql": {"tf": 1}, "sqlglot.generator.Generator.when_sql": {"tf": 1}, "sqlglot.generator.Generator.merge_sql": {"tf": 1}, "sqlglot.generator.Generator.tochar_sql": {"tf": 1}}, "df": 264, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.Dialects.SQLITE": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Tokenizer": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.cast_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.datediff_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.groupconcat_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.least_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.transaction_sql": {"tf": 1}}, "df": 10}}}, "g": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.errors.SqlglotError": {"tf": 1}}, "df": 1}}}}}}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.SqlSecurityProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}, "r": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.Sqrt": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe.sql.DataFrame.select": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.expressions.Expression.parent_select": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 1}, "sqlglot.expressions.Select": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.expressions.Select.limit": {"tf": 1}, "sqlglot.expressions.Select.offset": {"tf": 1}, "sqlglot.expressions.Select.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.lateral": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1}, "sqlglot.expressions.Select.where": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1}, "sqlglot.expressions.Select.window": {"tf": 1}, "sqlglot.expressions.Select.qualify": {"tf": 1}, "sqlglot.expressions.Select.distinct": {"tf": 1}, "sqlglot.expressions.Select.ctas": {"tf": 1}, "sqlglot.expressions.Select.lock": {"tf": 1}, "sqlglot.expressions.Select.is_star": {"tf": 1}, "sqlglot.expressions.select": {"tf": 1}, "sqlglot.generator.Generator.select_sql": {"tf": 1}, "sqlglot.tokens.TokenType.SELECT": {"tf": 1}}, "df": 26, "s": {"docs": {"sqlglot.optimizer.expand_multi_table_selects.expand_multi_table_selects": {"tf": 1}, "sqlglot.optimizer.isolate_table_selects.isolate_table_selects": {"tf": 1}, "sqlglot.optimizer.scope.Scope.selects": {"tf": 1}}, "df": 3}, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.optimizer.pushdown_projections.DEFAULT_SELECTION": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 1}}, "df": 1}}}}}}, "t": {"docs": {"sqlglot.dataframe.sql.Column.set_table_name": {"tf": 1}, "sqlglot.executor.context.Context.set_row": {"tf": 1}, "sqlglot.executor.context.Context.set_index": {"tf": 1}, "sqlglot.executor.context.Context.set_range": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.set_operation": {"tf": 1}, "sqlglot.expressions.Expression.set": {"tf": 1}, "sqlglot.expressions.Set": {"tf": 1}, "sqlglot.generator.Generator.set_sql": {"tf": 1}, "sqlglot.generator.Generator.set_operation": {"tf": 1}, "sqlglot.tokens.TokenType.CHARACTER_SET": {"tf": 1}, "sqlglot.tokens.TokenType.SET": {"tf": 1}}, "df": 11, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.dialects.snowflake.Snowflake.Generator.settag_sql": {"tf": 1}, "sqlglot.expressions.SetTag": {"tf": 1}}, "df": 2}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {"sqlglot.expressions.SetItem": {"tf": 1}, "sqlglot.generator.Generator.setitem_sql": {"tf": 1}}, "df": 2}}}}, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.SetProperty": {"tf": 1}}, "df": 1}}}}}}}}, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.expressions.SetAgg": {"tf": 1}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.planner.SetOperation": {"tf": 1}, "sqlglot.planner.SetOperation.__init__": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}}, "df": 3}}}}}}}}}, "s": {"docs": {"sqlglot.tokens.TokenType.GROUPING_SETS": {"tf": 1}}, "df": 1}}, "r": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.SERDE_PROPERTIES": {"tf": 1}}, "df": 1, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.SerdeProperties": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.expressions.DataType.Type.SERIAL": {"tf": 1}, "sqlglot.tokens.TokenType.SERIAL": {"tf": 1}}, "df": 2}}}}, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.tokens.TokenType.SESSION_PARAMETER": {"tf": 1}}, "df": 1, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.SessionParameter": {"tf": 1}, "sqlglot.generator.Generator.sessionparameter_sql": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}, "p": {"docs": {"sqlglot.generator.Generator.sep": {"tf": 1}}, "df": 1, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.tokens.TokenType.SEPARATOR": {"tf": 1}}, "df": 1}}}}}}}, "g": {"docs": {"sqlglot.generator.Generator.seg": {"tf": 1}}, "df": 1}, "q": {"docs": {"sqlglot.helper.seq_get": {"tf": 1}}, "df": 1}, "m": {"docs": {}, "df": 0, "i": {"docs": {"sqlglot.tokens.TokenType.SEMI": {"tf": 1}}, "df": 1, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.tokens.TokenType.SEMICOLON": {"tf": 1}}, "df": 1}}}}}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.tokens.TokenType.SEED": {"tf": 1}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1}, "sqlglot.executor.context.Context.sort": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.sort": {"tf": 1}, "sqlglot.expressions.Sort": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.generator.Generator.sort_sql": {"tf": 1}, "sqlglot.optimizer.simplify.uniq_sort": {"tf": 1}, "sqlglot.planner.Sort": {"tf": 1}, "sqlglot.tokens.TokenType.SORT_BY": {"tf": 1}}, "df": 9, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.tokens.TokenType.SORTKEY": {"tf": 1}}, "df": 1, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.SortKeyProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.SortArray": {"tf": 1}}, "df": 1}}}}}}}, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.qualify_columns.Resolver.get_source_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.source_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.rename_source": {"tf": 1}, "sqlglot.optimizer.scope.Scope.add_source": {"tf": 1}, "sqlglot.optimizer.scope.Scope.remove_source": {"tf": 1}}, "df": 5, "s": {"docs": {"sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 1}, "sqlglot.optimizer.scope.Scope.cte_sources": {"tf": 1}}, "df": 2}}}}}, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.SOME": {"tf": 1}}, "df": 1}}}, "u": {"docs": {}, "df": 0, "m": {"docs": {"sqlglot.dataframe.sql.GroupedData.sum": {"tf": 1}, "sqlglot.dialects.dialect.count_if_to_sum": {"tf": 1}, "sqlglot.expressions.Sum": {"tf": 1}}, "df": 3}, "b": {"docs": {"sqlglot.expressions.Sub": {"tf": 1}, "sqlglot.generator.Generator.sub_sql": {"tf": 1}}, "df": 2, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dataframe.sql.Column.substr": {"tf": 1}}, "df": 1, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.executor.env.substring": {"tf": 1}, "sqlglot.expressions.Substring": {"tf": 1}}, "df": 2}}}}}}, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.Subqueryable.subquery": {"tf": 1}, "sqlglot.expressions.Subquery": {"tf": 1}, "sqlglot.expressions.Subquery.unnest": {"tf": 1}, "sqlglot.expressions.Subquery.is_star": {"tf": 1}, "sqlglot.expressions.Subquery.output_name": {"tf": 1}, "sqlglot.expressions.subquery": {"tf": 1}, "sqlglot.generator.Generator.subquery_sql": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.SUBQUERY": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_subquery": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_correlated_subquery": {"tf": 1}}, "df": 10, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Subqueryable": {"tf": 1}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 1}, "sqlglot.expressions.Subqueryable.limit": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1}}, "df": 4}}}}, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.SubqueryPredicate": {"tf": 1}}, "df": 1}}}}}}}}}}, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.optimizer.eliminate_subqueries.eliminate_subqueries": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1}, "sqlglot.optimizer.scope.Scope.subqueries": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 1}}, "df": 4}}}}}}}, "c": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.helper.subclasses": {"tf": 1}}, "df": 1}}}}}}}}, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.DataType.Type.SUPER": {"tf": 1}, "sqlglot.tokens.TokenType.SUPER": {"tf": 1}}, "df": 2}}, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.schema.Schema.supported_table_args": {"tf": 1}}, "df": 1}}}}}}}}, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.Expression.is_star": {"tf": 1}, "sqlglot.expressions.Union.is_star": {"tf": 1}, "sqlglot.expressions.Select.is_star": {"tf": 1}, "sqlglot.expressions.Subquery.is_star": {"tf": 1}, "sqlglot.expressions.Star": {"tf": 1}, "sqlglot.expressions.Star.output_name": {"tf": 1}, "sqlglot.generator.Generator.star_sql": {"tf": 1}, "sqlglot.tokens.TokenType.STAR": {"tf": 1}}, "df": 8, "t": {"docs": {"sqlglot.tokens.TokenType.BLOCK_START": {"tf": 1}, "sqlglot.tokens.Token.start": {"tf": 1}}, "df": 2, "s": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.dataframe.sql.Column.startswith": {"tf": 1}}, "df": 1}}}}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dialects.dialect.Dialects.STARROCKS": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}}, "df": 4}}}}}, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.expressions.StarMap": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot.executor.python.PythonExecutor.static": {"tf": 1}}, "df": 1}}}, "b": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.StabilityProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}, "r": {"docs": {"sqlglot.dialects.dialect.str_position_sql": {"tf": 1}, "sqlglot.dialects.dialect.str_to_time_sql": {"tf": 1}, "sqlglot.executor.env.str_position": {"tf": 1}}, "df": 3, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.dialect.struct_extract_sql": {"tf": 1}, "sqlglot.expressions.DataType.Type.STRUCT": {"tf": 1}, "sqlglot.expressions.Struct": {"tf": 1}, "sqlglot.tokens.TokenType.STRUCT": {"tf": 1}}, "df": 4, "k": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.expressions.StructKwarg": {"tf": 1}, "sqlglot.generator.Generator.structkwarg_sql": {"tf": 1}}, "df": 2}}}}}, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.StructExtract": {"tf": 1}}, "df": 1}}}}}}}}}}, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dialects.dialect.locate_to_strposition": {"tf": 1}, "sqlglot.dialects.dialect.strposition_to_locate_sql": {"tf": 1}, "sqlglot.expressions.StrPosition": {"tf": 1}}, "df": 3}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.expressions.Expression.is_string": {"tf": 1}, "sqlglot.expressions.Literal.string": {"tf": 1}, "sqlglot.tokens.TokenType.STRING": {"tf": 1}, "sqlglot.tokens.TokenType.BIT_STRING": {"tf": 1}, "sqlglot.tokens.TokenType.HEX_STRING": {"tf": 1}, "sqlglot.tokens.TokenType.BYTE_STRING": {"tf": 1}, "sqlglot.tokens.Token.string": {"tf": 1}}, "df": 7}}}, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.StrToDate": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.StrToTime": {"tf": 1}}, "df": 1}}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "x": {"docs": {"sqlglot.expressions.StrToUnix": {"tf": 1}}, "df": 1}}}}}}}, "d": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "v": {"docs": {"sqlglot.expressions.Stddev": {"tf": 1}}, "df": 1, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.expressions.StddevPop": {"tf": 1}}, "df": 1}}}, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.expressions.StddevSamp": {"tf": 1}}, "df": 1}}}}}}}}, "e": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.planner.Step": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Step.add_dependency": {"tf": 1}, "sqlglot.planner.Step.to_s": {"tf": 1}}, "df": 4}}}, "a": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.DataFrameWriter.saveAsTable": {"tf": 1}}, "df": 1}}}}}}}}}, "f": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.no_safe_divide_sql": {"tf": 1}}, "df": 1, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.SafeDivide": {"tf": 1}}, "df": 1}}}}}}}}, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Expression.same_parent": {"tf": 1}}, "df": 1}, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.TABLE_SAMPLE": {"tf": 1}}, "df": 1}}}}}, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.Dialects.SNOWFLAKE": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Tokenizer": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.except_op": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.intersect_op": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.settag_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.describe_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.generatedasidentitycolumnconstraint_sql": {"tf": 1}}, "df": 12}}}}}}}, "a": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.helper.camel_to_snake_case": {"tf": 1}}, "df": 1}}}}, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {"sqlglot.dialects.mysql.MySQL.Generator.show_sql": {"tf": 1}, "sqlglot.expressions.Show": {"tf": 1}, "sqlglot.tokens.TokenType.SHOW": {"tf": 1}}, "df": 3}, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.helper.should_identify": {"tf": 1}}, "df": 1}}}}, "a": {"2": {"docs": {"sqlglot.expressions.SHA2": {"tf": 1}}, "df": 1}, "docs": {"sqlglot.expressions.SHA": {"tf": 1}}, "df": 1}}, "y": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.tsql.TSQL.Generator.systemtime_sql": {"tf": 1}, "sqlglot.expressions.SystemTime": {"tf": 1}}, "df": 2}}}}}}}}}, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.DataType.Type.SMALLINT": {"tf": 1}, "sqlglot.tokens.TokenType.SMALLINT": {"tf": 1}}, "df": 2}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.expressions.DataType.Type.SMALLSERIAL": {"tf": 1}, "sqlglot.tokens.TokenType.SMALLSERIAL": {"tf": 1}}, "df": 2}}}}}}, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.DataType.Type.SMALLMONEY": {"tf": 1}, "sqlglot.tokens.TokenType.SMALLMONEY": {"tf": 1}}, "df": 2}}}}}}}}}, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.tokens.TokenType.SIMILAR_TO": {"tf": 1}}, "df": 1, "t": {"docs": {}, "df": 0, "o": {"docs": {"sqlglot.expressions.SimilarTo": {"tf": 1}, "sqlglot.generator.Generator.similarto_sql": {"tf": 1}}, "df": 2}}}}}}, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.optimizer.simplify.simplify": {"tf": 1}, "sqlglot.optimizer.simplify.simplify_not": {"tf": 1}, "sqlglot.optimizer.simplify.simplify_connectors": {"tf": 1}, "sqlglot.optimizer.simplify.simplify_literals": {"tf": 1}, "sqlglot.optimizer.simplify.simplify_parens": {"tf": 1}}, "df": 5}}}}}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Slice": {"tf": 1}, "sqlglot.generator.Generator.slice_sql": {"tf": 1}}, "df": 2}}}, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.tokens.TokenType.SLASH": {"tf": 1}}, "df": 1}}}}}, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.tokens.TokenType.ON": {"tf": 1}, "sqlglot.transforms.eliminate_distinct_on": {"tf": 1}}, "df": 3, "e": {"docs": {"sqlglot.parse_one": {"tf": 1}}, "df": 1}, "u": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.OnUpdateColumnConstraint": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.OnConflict": {"tf": 1}, "sqlglot.generator.Generator.onconflict_sql": {"tf": 1}}, "df": 2}}}}}}, "m": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.OnCommitProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.tokens.TokenType.ONLY": {"tf": 1}}, "df": 1}}}, "r": {"docs": {"sqlglot.dialects.dialect.Dialect.get_or_raise": {"tf": 1}, "sqlglot.dialects.dialect.min_or_least": {"tf": 1}, "sqlglot.dialects.dialect.max_or_greatest": {"tf": 1}, "sqlglot.dialects.dialect.ts_or_ds_to_date_sql": {"tf": 1}, "sqlglot.expressions.Condition.or_": {"tf": 1}, "sqlglot.expressions.Or": {"tf": 1}, "sqlglot.expressions.or_": {"tf": 1}, "sqlglot.generator.Generator.or_sql": {"tf": 1}, "sqlglot.tokens.TokenType.OR": {"tf": 1}}, "df": 9, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.Order": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.generator.Generator.order_sql": {"tf": 1}, "sqlglot.tokens.TokenType.ORDER_BY": {"tf": 1}}, "df": 4, "b": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.Window.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.orderBy": {"tf": 1}}, "df": 3}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.executor.env.ordered": {"tf": 1}, "sqlglot.expressions.Ordered": {"tf": 1}, "sqlglot.generator.Generator.ordered_sql": {"tf": 1}, "sqlglot.tokens.TokenType.ORDERED": {"tf": 1}}, "df": 4}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.tokens.TokenType.ORDINALITY": {"tf": 1}}, "df": 1}}}}}}}}, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.Dialects.ORACLE": {"tf": 1}, "sqlglot.dialects.oracle.Oracle": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator.offset_sql": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator.column_sql": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator.xmltable_sql": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Tokenizer": {"tf": 1}}, "df": 8}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dataframe.sql.Column.invoke_expression_over_column": {"tf": 1}, "sqlglot.dataframe.sql.Column.over": {"tf": 1}, "sqlglot.tokens.TokenType.OVER": {"tf": 1}}, "df": 3, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.Overlaps": {"tf": 1}, "sqlglot.generator.Generator.overlaps_sql": {"tf": 1}, "sqlglot.tokens.TokenType.OVERLAPS": {"tf": 1}}, "df": 3}}}}, "w": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.OVERWRITE": {"tf": 1}}, "df": 1}}}}}}}}, "p": {"docs": {"sqlglot.dataframe.sql.Column.binary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.inverse_binary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.unary_op": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.in_unnest_op": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.except_op": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.intersect_op": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.except_op": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.intersect_op": {"tf": 1}, "sqlglot.generator.Generator.except_op": {"tf": 1}, "sqlglot.generator.Generator.intersect_op": {"tf": 1}, "sqlglot.generator.Generator.union_op": {"tf": 1}, "sqlglot.generator.Generator.in_unnest_op": {"tf": 1}, "sqlglot.generator.Generator.op_expressions": {"tf": 1}}, "df": 13, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.optimize_joins.optimize_joins": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 2, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.errors.OptimizeError": {"tf": 1}}, "df": 1}}}}}}}}}, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.tokens.TokenType.OPTIONS": {"tf": 1}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.executor.python.PythonExecutor.set_operation": {"tf": 1}, "sqlglot.generator.Generator.set_operation": {"tf": 1}}, "df": 2}}}}, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.Expression.unnest_operands": {"tf": 1}}, "df": 1}}}}}, "n": {"docs": {"sqlglot.helper.open_file": {"tf": 1}}, "df": 1}}}, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.optimizer.optimize_joins.other_table_names": {"tf": 1}}, "df": 1, "w": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.Column.otherwise": {"tf": 1}}, "df": 1}}}}}}}}, "f": {"docs": {"sqlglot.tokens.TokenType.OUT_OF": {"tf": 1}}, "df": 1, "f": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.oracle.Oracle.Generator.offset_sql": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator.offset_sql": {"tf": 1}, "sqlglot.expressions.Offset": {"tf": 1}, "sqlglot.expressions.Select.offset": {"tf": 1}, "sqlglot.generator.Generator.offset_sql": {"tf": 1}, "sqlglot.helper.apply_index_offset": {"tf": 1}, "sqlglot.tokens.TokenType.OFFSET": {"tf": 1}}, "df": 7}}}}}, "u": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.OUT_OF": {"tf": 1}}, "df": 1, "p": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.Expression.output_name": {"tf": 1}, "sqlglot.expressions.Column.output_name": {"tf": 1}, "sqlglot.expressions.Identifier.output_name": {"tf": 1}, "sqlglot.expressions.Literal.output_name": {"tf": 1}, "sqlglot.expressions.Subquery.output_name": {"tf": 1}, "sqlglot.expressions.Star.output_name": {"tf": 1}, "sqlglot.expressions.Alias.output_name": {"tf": 1}, "sqlglot.expressions.Cast.output_name": {"tf": 1}}, "df": 8}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.tokens.TokenType.OUTER": {"tf": 1}}, "df": 1}}}}, "b": {"docs": {}, "df": 0, "j": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.DataType.Type.OBJECT": {"tf": 1}, "sqlglot.helper.object_to_dict": {"tf": 1}, "sqlglot.tokens.TokenType.OBJECT": {"tf": 1}}, "df": 3}}}}}}, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.transpile": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.transpile": {"tf": 1}}, "df": 2}}}}, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator.transaction_sql": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator.transaction_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.transaction_sql": {"tf": 1}, "sqlglot.expressions.Transaction": {"tf": 1}, "sqlglot.generator.Generator.transaction_sql": {"tf": 1}}, "df": 5}}}}}}, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {"sqlglot.expressions.Expression.transform": {"tf": 1}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.TransientProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.scope.Scope.traverse": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}}, "df": 2}}}}}, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.tokens.TokenType.TRAILING": {"tf": 1}}, "df": 1}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "o": {"docs": {"sqlglot.dialects.dialect.Dialects.TRINO": {"tf": 1}, "sqlglot.dialects.trino.Trino": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Tokenizer": {"tf": 1}}, "df": 4}}, "m": {"docs": {"sqlglot.dialects.dialect.trim_sql": {"tf": 1}, "sqlglot.expressions.Trim": {"tf": 1}, "sqlglot.generator.Generator.trim_sql": {"tf": 1}}, "df": 3}, "e": {"docs": {"sqlglot.trie.new_trie": {"tf": 1}, "sqlglot.trie.in_trie": {"tf": 1}}, "df": 2}}, "y": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.dialect.no_trycast_sql": {"tf": 1}, "sqlglot.expressions.TryCast": {"tf": 1}, "sqlglot.generator.Generator.trycast_sql": {"tf": 1}}, "df": 3}}}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot.dialects.dialect.date_trunc_to_time": {"tf": 1}}, "df": 1}}, "e": {"docs": {"sqlglot.expressions.true": {"tf": 1}, "sqlglot.optimizer.simplify.remove_where_true": {"tf": 1}, "sqlglot.optimizer.simplify.always_true": {"tf": 1}, "sqlglot.tokens.TokenType.TRUE": {"tf": 1}}, "df": 4}}}, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.SparkSession.table": {"tf": 1}, "sqlglot.dataframe.sql.Column.set_table_name": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameReader.table": {"tf": 1}, "sqlglot.executor.context.Context.table_iter": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.table": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.scan_table": {"tf": 1}, "sqlglot.executor.table.Table": {"tf": 1}, "sqlglot.executor.table.Table.__init__": {"tf": 1}, "sqlglot.executor.table.Table.add_columns": {"tf": 1}, "sqlglot.executor.table.Table.append": {"tf": 1}, "sqlglot.executor.table.Table.pop": {"tf": 1}, "sqlglot.expressions.Table": {"tf": 1}, "sqlglot.expressions.to_table": {"tf": 1}, "sqlglot.expressions.table_": {"tf": 1}, "sqlglot.expressions.rename_table": {"tf": 1}, "sqlglot.expressions.column_table_names": {"tf": 1}, "sqlglot.expressions.table_name": {"tf": 1}, "sqlglot.generator.Generator.table_sql": {"tf": 1}, "sqlglot.optimizer.expand_multi_table_selects.expand_multi_table_selects": {"tf": 1}, "sqlglot.optimizer.isolate_table_selects.isolate_table_selects": {"tf": 1}, "sqlglot.optimizer.optimize_joins.other_table_names": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.get_table": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.DERIVED_TABLE": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_derived_table": {"tf": 1}, "sqlglot.schema.Schema.add_table": {"tf": 1}, "sqlglot.schema.Schema.supported_table_args": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema.table_parts": {"tf": 1}, "sqlglot.schema.MappingSchema.add_table": {"tf": 1}, "sqlglot.tokens.TokenType.TABLE": {"tf": 1}, "sqlglot.tokens.TokenType.TABLE_SAMPLE": {"tf": 1}}, "df": 30, "a": {"docs": {}, "df": 0, "u": {"docs": {"sqlglot.dialects.dialect.Dialects.TABLEAU": {"tf": 1}, "sqlglot.dialects.tableau.Tableau": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}}, "df": 4}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.TableAlias": {"tf": 1}, "sqlglot.generator.Generator.tablealias_sql": {"tf": 1}}, "df": 2}}}}}, "s": {"docs": {"sqlglot.executor.table.Tables": {"tf": 1}, "sqlglot.executor.table.ensure_tables": {"tf": 1}, "sqlglot.expressions.replace_tables": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_derived_tables": {"tf": 1}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"tf": 1}, "sqlglot.optimizer.scope.Scope.tables": {"tf": 1}, "sqlglot.optimizer.scope.Scope.derived_tables": {"tf": 1}}, "df": 7, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.no_tablesample_sql": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator.tablesample_sql": {"tf": 1}, "sqlglot.expressions.TableSample": {"tf": 1}, "sqlglot.generator.Generator.tablesample_sql": {"tf": 1}}, "df": 4}}}}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.executor.table.TableIter": {"tf": 1}, "sqlglot.executor.table.TableIter.__init__": {"tf": 1}}, "df": 2}}}}, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.TableFormatProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}, "g": {"docs": {"sqlglot.expressions.Tag": {"tf": 1}, "sqlglot.generator.Generator.tag_sql": {"tf": 1}}, "df": 2}, "r": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.transforms.remove_target_from_merge": {"tf": 1}}, "df": 1}}}}}, "o": {"docs": {"sqlglot.dialects.dialect.date_trunc_to_time": {"tf": 1}, "sqlglot.dialects.dialect.locate_to_strposition": {"tf": 1}, "sqlglot.dialects.dialect.strposition_to_locate_sql": {"tf": 1}, "sqlglot.dialects.dialect.count_if_to_sum": {"tf": 1}, "sqlglot.dialects.dialect.str_to_time_sql": {"tf": 1}, "sqlglot.dialects.dialect.ts_or_ds_to_date_sql": {"tf": 1}, "sqlglot.expressions.Column.to_dot": {"tf": 1}, "sqlglot.expressions.to_identifier": {"tf": 1}, "sqlglot.expressions.to_interval": {"tf": 1}, "sqlglot.expressions.to_table": {"tf": 1}, "sqlglot.expressions.to_column": {"tf": 1}, "sqlglot.helper.camel_to_snake_case": {"tf": 1}, "sqlglot.helper.object_to_dict": {"tf": 1}, "sqlglot.lineage.Node.to_html": {"tf": 1}, "sqlglot.optimizer.canonicalize.add_text_to_concat": {"tf": 1}, "sqlglot.planner.Step.to_s": {"tf": 1}, "sqlglot.tokens.TokenType.SIMILAR_TO": {"tf": 1}, "sqlglot.transforms.unnest_to_explode": {"tf": 1}, "sqlglot.transforms.explode_to_unnest": {"tf": 1}}, "df": 19, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.generator.Generator.token_sql": {"tf": 1}, "sqlglot.tokens.Token": {"tf": 1}, "sqlglot.tokens.Token.__init__": {"tf": 1}, "sqlglot.tokens.Token.number": {"tf": 1}, "sqlglot.tokens.Token.string": {"tf": 1}, "sqlglot.tokens.Token.identifier": {"tf": 1}, "sqlglot.tokens.Token.var": {"tf": 1}, "sqlglot.tokens.Token.start": {"tf": 1}}, "df": 8, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.Dialect.tokenize": {"tf": 1}, "sqlglot.tokens.Tokenizer.tokenize": {"tf": 1}}, "df": 2, "r": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Tokenizer": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Tokenizer": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Tokenizer": {"tf": 1}, "sqlglot.dialects.drill.Drill.Tokenizer": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Tokenizer": {"tf": 1}, "sqlglot.dialects.hive.Hive.Tokenizer": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Tokenizer": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Tokenizer": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Tokenizer": {"tf": 1}, "sqlglot.dialects.presto.Presto.Tokenizer": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Tokenizer": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Tokenizer": {"tf": 1}, "sqlglot.dialects.spark.Spark.Tokenizer": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Tokenizer": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Tokenizer": {"tf": 1}, "sqlglot.dialects.trino.Trino.Tokenizer": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Tokenizer": {"tf": 1}, "sqlglot.executor.python.Python.Tokenizer": {"tf": 1}, "sqlglot.tokens.Tokenizer": {"tf": 1}, "sqlglot.tokens.Tokenizer.reset": {"tf": 1}, "sqlglot.tokens.Tokenizer.tokenize": {"tf": 1}}, "df": 21}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.errors.TokenError": {"tf": 1}}, "df": 1}}}}}, "t": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType": {"tf": 1}, "sqlglot.tokens.TokenType.L_PAREN": {"tf": 1}, "sqlglot.tokens.TokenType.R_PAREN": {"tf": 1}, "sqlglot.tokens.TokenType.L_BRACKET": {"tf": 1}, "sqlglot.tokens.TokenType.R_BRACKET": {"tf": 1}, "sqlglot.tokens.TokenType.L_BRACE": {"tf": 1}, "sqlglot.tokens.TokenType.R_BRACE": {"tf": 1}, "sqlglot.tokens.TokenType.COMMA": {"tf": 1}, "sqlglot.tokens.TokenType.DOT": {"tf": 1}, "sqlglot.tokens.TokenType.DASH": {"tf": 1}, "sqlglot.tokens.TokenType.PLUS": {"tf": 1}, "sqlglot.tokens.TokenType.COLON": {"tf": 1}, "sqlglot.tokens.TokenType.DCOLON": {"tf": 1}, "sqlglot.tokens.TokenType.SEMICOLON": {"tf": 1}, "sqlglot.tokens.TokenType.STAR": {"tf": 1}, "sqlglot.tokens.TokenType.BACKSLASH": {"tf": 1}, "sqlglot.tokens.TokenType.SLASH": {"tf": 1}, "sqlglot.tokens.TokenType.LT": {"tf": 1}, "sqlglot.tokens.TokenType.LTE": {"tf": 1}, "sqlglot.tokens.TokenType.GT": {"tf": 1}, "sqlglot.tokens.TokenType.GTE": {"tf": 1}, "sqlglot.tokens.TokenType.NOT": {"tf": 1}, "sqlglot.tokens.TokenType.EQ": {"tf": 1}, "sqlglot.tokens.TokenType.NEQ": {"tf": 1}, "sqlglot.tokens.TokenType.NULLSAFE_EQ": {"tf": 1}, "sqlglot.tokens.TokenType.AND": {"tf": 1}, "sqlglot.tokens.TokenType.OR": {"tf": 1}, "sqlglot.tokens.TokenType.AMP": {"tf": 1}, "sqlglot.tokens.TokenType.DPIPE": {"tf": 1}, "sqlglot.tokens.TokenType.PIPE": {"tf": 1}, "sqlglot.tokens.TokenType.CARET": {"tf": 1}, "sqlglot.tokens.TokenType.TILDA": {"tf": 1}, "sqlglot.tokens.TokenType.ARROW": {"tf": 1}, "sqlglot.tokens.TokenType.DARROW": {"tf": 1}, "sqlglot.tokens.TokenType.FARROW": {"tf": 1}, "sqlglot.tokens.TokenType.HASH": {"tf": 1}, "sqlglot.tokens.TokenType.HASH_ARROW": {"tf": 1}, "sqlglot.tokens.TokenType.DHASH_ARROW": {"tf": 1}, "sqlglot.tokens.TokenType.LR_ARROW": {"tf": 1}, "sqlglot.tokens.TokenType.LT_AT": {"tf": 1}, "sqlglot.tokens.TokenType.AT_GT": {"tf": 1}, "sqlglot.tokens.TokenType.DOLLAR": {"tf": 1}, "sqlglot.tokens.TokenType.PARAMETER": {"tf": 1}, "sqlglot.tokens.TokenType.SESSION_PARAMETER": {"tf": 1}, "sqlglot.tokens.TokenType.NATIONAL": {"tf": 1}, "sqlglot.tokens.TokenType.DAMP": {"tf": 1}, "sqlglot.tokens.TokenType.BLOCK_START": {"tf": 1}, "sqlglot.tokens.TokenType.BLOCK_END": {"tf": 1}, "sqlglot.tokens.TokenType.SPACE": {"tf": 1}, "sqlglot.tokens.TokenType.BREAK": {"tf": 1}, "sqlglot.tokens.TokenType.STRING": {"tf": 1}, "sqlglot.tokens.TokenType.NUMBER": {"tf": 1}, "sqlglot.tokens.TokenType.IDENTIFIER": {"tf": 1}, "sqlglot.tokens.TokenType.DATABASE": {"tf": 1}, "sqlglot.tokens.TokenType.COLUMN": {"tf": 1}, "sqlglot.tokens.TokenType.COLUMN_DEF": {"tf": 1}, "sqlglot.tokens.TokenType.SCHEMA": {"tf": 1}, "sqlglot.tokens.TokenType.TABLE": {"tf": 1}, "sqlglot.tokens.TokenType.VAR": {"tf": 1}, "sqlglot.tokens.TokenType.BIT_STRING": {"tf": 1}, "sqlglot.tokens.TokenType.HEX_STRING": {"tf": 1}, "sqlglot.tokens.TokenType.BYTE_STRING": {"tf": 1}, "sqlglot.tokens.TokenType.BIT": {"tf": 1}, "sqlglot.tokens.TokenType.BOOLEAN": {"tf": 1}, "sqlglot.tokens.TokenType.TINYINT": {"tf": 1}, "sqlglot.tokens.TokenType.UTINYINT": {"tf": 1}, "sqlglot.tokens.TokenType.SMALLINT": {"tf": 1}, "sqlglot.tokens.TokenType.USMALLINT": {"tf": 1}, "sqlglot.tokens.TokenType.INT": {"tf": 1}, "sqlglot.tokens.TokenType.UINT": {"tf": 1}, "sqlglot.tokens.TokenType.BIGINT": {"tf": 1}, "sqlglot.tokens.TokenType.UBIGINT": {"tf": 1}, "sqlglot.tokens.TokenType.FLOAT": {"tf": 1}, "sqlglot.tokens.TokenType.DOUBLE": {"tf": 1}, "sqlglot.tokens.TokenType.DECIMAL": {"tf": 1}, "sqlglot.tokens.TokenType.BIGDECIMAL": {"tf": 1}, "sqlglot.tokens.TokenType.CHAR": {"tf": 1}, "sqlglot.tokens.TokenType.NCHAR": {"tf": 1}, "sqlglot.tokens.TokenType.VARCHAR": {"tf": 1}, "sqlglot.tokens.TokenType.NVARCHAR": {"tf": 1}, "sqlglot.tokens.TokenType.TEXT": {"tf": 1}, "sqlglot.tokens.TokenType.MEDIUMTEXT": {"tf": 1}, "sqlglot.tokens.TokenType.LONGTEXT": {"tf": 1}, "sqlglot.tokens.TokenType.MEDIUMBLOB": {"tf": 1}, "sqlglot.tokens.TokenType.LONGBLOB": {"tf": 1}, "sqlglot.tokens.TokenType.BINARY": {"tf": 1}, "sqlglot.tokens.TokenType.VARBINARY": {"tf": 1}, "sqlglot.tokens.TokenType.JSON": {"tf": 1}, "sqlglot.tokens.TokenType.JSONB": {"tf": 1}, "sqlglot.tokens.TokenType.TIME": {"tf": 1}, "sqlglot.tokens.TokenType.TIMESTAMP": {"tf": 1}, "sqlglot.tokens.TokenType.TIMESTAMPTZ": {"tf": 1}, "sqlglot.tokens.TokenType.TIMESTAMPLTZ": {"tf": 1}, "sqlglot.tokens.TokenType.DATETIME": {"tf": 1}, "sqlglot.tokens.TokenType.DATE": {"tf": 1}, "sqlglot.tokens.TokenType.UUID": {"tf": 1}, "sqlglot.tokens.TokenType.GEOGRAPHY": {"tf": 1}, "sqlglot.tokens.TokenType.NULLABLE": {"tf": 1}, "sqlglot.tokens.TokenType.GEOMETRY": {"tf": 1}, "sqlglot.tokens.TokenType.HLLSKETCH": {"tf": 1}, "sqlglot.tokens.TokenType.HSTORE": {"tf": 1}, "sqlglot.tokens.TokenType.SUPER": {"tf": 1}, "sqlglot.tokens.TokenType.SERIAL": {"tf": 1}, "sqlglot.tokens.TokenType.SMALLSERIAL": {"tf": 1}, "sqlglot.tokens.TokenType.BIGSERIAL": {"tf": 1}, "sqlglot.tokens.TokenType.XML": {"tf": 1}, "sqlglot.tokens.TokenType.UNIQUEIDENTIFIER": {"tf": 1}, "sqlglot.tokens.TokenType.MONEY": {"tf": 1}, "sqlglot.tokens.TokenType.SMALLMONEY": {"tf": 1}, "sqlglot.tokens.TokenType.ROWVERSION": {"tf": 1}, "sqlglot.tokens.TokenType.IMAGE": {"tf": 1}, "sqlglot.tokens.TokenType.VARIANT": {"tf": 1}, "sqlglot.tokens.TokenType.OBJECT": {"tf": 1}, "sqlglot.tokens.TokenType.INET": {"tf": 1}, "sqlglot.tokens.TokenType.ALIAS": {"tf": 1}, "sqlglot.tokens.TokenType.ALTER": {"tf": 1}, "sqlglot.tokens.TokenType.ALWAYS": {"tf": 1}, "sqlglot.tokens.TokenType.ALL": {"tf": 1}, "sqlglot.tokens.TokenType.ANTI": {"tf": 1}, "sqlglot.tokens.TokenType.ANY": {"tf": 1}, "sqlglot.tokens.TokenType.APPLY": {"tf": 1}, "sqlglot.tokens.TokenType.ARRAY": {"tf": 1}, "sqlglot.tokens.TokenType.ASC": {"tf": 1}, "sqlglot.tokens.TokenType.ASOF": {"tf": 1}, "sqlglot.tokens.TokenType.AT_TIME_ZONE": {"tf": 1}, "sqlglot.tokens.TokenType.AUTO_INCREMENT": {"tf": 1}, "sqlglot.tokens.TokenType.BEGIN": {"tf": 1}, "sqlglot.tokens.TokenType.BETWEEN": {"tf": 1}, "sqlglot.tokens.TokenType.BOTH": {"tf": 1}, "sqlglot.tokens.TokenType.BUCKET": {"tf": 1}, "sqlglot.tokens.TokenType.BY_DEFAULT": {"tf": 1}, "sqlglot.tokens.TokenType.CACHE": {"tf": 1}, "sqlglot.tokens.TokenType.CASCADE": {"tf": 1}, "sqlglot.tokens.TokenType.CASE": {"tf": 1}, "sqlglot.tokens.TokenType.CHARACTER_SET": {"tf": 1}, "sqlglot.tokens.TokenType.CLUSTER_BY": {"tf": 1}, "sqlglot.tokens.TokenType.COLLATE": {"tf": 1}, "sqlglot.tokens.TokenType.COMMAND": {"tf": 1}, "sqlglot.tokens.TokenType.COMMENT": {"tf": 1}, "sqlglot.tokens.TokenType.COMMIT": {"tf": 1}, "sqlglot.tokens.TokenType.COMPOUND": {"tf": 1}, "sqlglot.tokens.TokenType.CONSTRAINT": {"tf": 1}, "sqlglot.tokens.TokenType.CREATE": {"tf": 1}, "sqlglot.tokens.TokenType.CROSS": {"tf": 1}, "sqlglot.tokens.TokenType.CUBE": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_DATE": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_DATETIME": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_ROW": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_TIME": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_TIMESTAMP": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_USER": {"tf": 1}, "sqlglot.tokens.TokenType.DEFAULT": {"tf": 1}, "sqlglot.tokens.TokenType.DELETE": {"tf": 1}, "sqlglot.tokens.TokenType.DESC": {"tf": 1}, "sqlglot.tokens.TokenType.DESCRIBE": {"tf": 1}, "sqlglot.tokens.TokenType.DISTINCT": {"tf": 1}, "sqlglot.tokens.TokenType.DISTINCT_FROM": {"tf": 1}, "sqlglot.tokens.TokenType.DISTRIBUTE_BY": {"tf": 1}, "sqlglot.tokens.TokenType.DIV": {"tf": 1}, "sqlglot.tokens.TokenType.DROP": {"tf": 1}, "sqlglot.tokens.TokenType.ELSE": {"tf": 1}, "sqlglot.tokens.TokenType.END": {"tf": 1}, "sqlglot.tokens.TokenType.ESCAPE": {"tf": 1}, "sqlglot.tokens.TokenType.EXCEPT": {"tf": 1}, "sqlglot.tokens.TokenType.EXECUTE": {"tf": 1}, "sqlglot.tokens.TokenType.EXISTS": {"tf": 1}, "sqlglot.tokens.TokenType.FALSE": {"tf": 1}, "sqlglot.tokens.TokenType.FETCH": {"tf": 1}, "sqlglot.tokens.TokenType.FILTER": {"tf": 1}, "sqlglot.tokens.TokenType.FINAL": {"tf": 1}, "sqlglot.tokens.TokenType.FIRST": {"tf": 1}, "sqlglot.tokens.TokenType.FOLLOWING": {"tf": 1}, "sqlglot.tokens.TokenType.FOR": {"tf": 1}, "sqlglot.tokens.TokenType.FOREIGN_KEY": {"tf": 1}, "sqlglot.tokens.TokenType.FORMAT": {"tf": 1}, "sqlglot.tokens.TokenType.FROM": {"tf": 1}, "sqlglot.tokens.TokenType.FULL": {"tf": 1}, "sqlglot.tokens.TokenType.FUNCTION": {"tf": 1}, "sqlglot.tokens.TokenType.GLOB": {"tf": 1}, "sqlglot.tokens.TokenType.GLOBAL": {"tf": 1}, "sqlglot.tokens.TokenType.GROUP_BY": {"tf": 1}, "sqlglot.tokens.TokenType.GROUPING_SETS": {"tf": 1}, "sqlglot.tokens.TokenType.HAVING": {"tf": 1}, "sqlglot.tokens.TokenType.HINT": {"tf": 1}, "sqlglot.tokens.TokenType.IF": {"tf": 1}, "sqlglot.tokens.TokenType.IGNORE_NULLS": {"tf": 1}, "sqlglot.tokens.TokenType.ILIKE": {"tf": 1}, "sqlglot.tokens.TokenType.ILIKE_ANY": {"tf": 1}, "sqlglot.tokens.TokenType.IN": {"tf": 1}, "sqlglot.tokens.TokenType.INDEX": {"tf": 1}, "sqlglot.tokens.TokenType.INNER": {"tf": 1}, "sqlglot.tokens.TokenType.INSERT": {"tf": 1}, "sqlglot.tokens.TokenType.INTERSECT": {"tf": 1}, "sqlglot.tokens.TokenType.INTERVAL": {"tf": 1}, "sqlglot.tokens.TokenType.INTO": {"tf": 1}, "sqlglot.tokens.TokenType.INTRODUCER": {"tf": 1}, "sqlglot.tokens.TokenType.IRLIKE": {"tf": 1}, "sqlglot.tokens.TokenType.IS": {"tf": 1}, "sqlglot.tokens.TokenType.ISNULL": {"tf": 1}, "sqlglot.tokens.TokenType.JOIN": {"tf": 1}, "sqlglot.tokens.TokenType.JOIN_MARKER": {"tf": 1}, "sqlglot.tokens.TokenType.LANGUAGE": {"tf": 1}, "sqlglot.tokens.TokenType.LATERAL": {"tf": 1}, "sqlglot.tokens.TokenType.LAZY": {"tf": 1}, "sqlglot.tokens.TokenType.LEADING": {"tf": 1}, "sqlglot.tokens.TokenType.LEFT": {"tf": 1}, "sqlglot.tokens.TokenType.LIKE": {"tf": 1}, "sqlglot.tokens.TokenType.LIKE_ANY": {"tf": 1}, "sqlglot.tokens.TokenType.LIMIT": {"tf": 1}, "sqlglot.tokens.TokenType.LOAD_DATA": {"tf": 1}, "sqlglot.tokens.TokenType.LOCAL": {"tf": 1}, "sqlglot.tokens.TokenType.MAP": {"tf": 1}, "sqlglot.tokens.TokenType.MATCH_RECOGNIZE": {"tf": 1}, "sqlglot.tokens.TokenType.MATERIALIZED": {"tf": 1}, "sqlglot.tokens.TokenType.MERGE": {"tf": 1}, "sqlglot.tokens.TokenType.MOD": {"tf": 1}, "sqlglot.tokens.TokenType.NATURAL": {"tf": 1}, "sqlglot.tokens.TokenType.NEXT": {"tf": 1}, "sqlglot.tokens.TokenType.NO_ACTION": {"tf": 1}, "sqlglot.tokens.TokenType.NOTNULL": {"tf": 1}, "sqlglot.tokens.TokenType.NULL": {"tf": 1}, "sqlglot.tokens.TokenType.NULLS_FIRST": {"tf": 1}, "sqlglot.tokens.TokenType.NULLS_LAST": {"tf": 1}, "sqlglot.tokens.TokenType.OFFSET": {"tf": 1}, "sqlglot.tokens.TokenType.ON": {"tf": 1}, "sqlglot.tokens.TokenType.ONLY": {"tf": 1}, "sqlglot.tokens.TokenType.OPTIONS": {"tf": 1}, "sqlglot.tokens.TokenType.ORDER_BY": {"tf": 1}, "sqlglot.tokens.TokenType.ORDERED": {"tf": 1}, "sqlglot.tokens.TokenType.ORDINALITY": {"tf": 1}, "sqlglot.tokens.TokenType.OUTER": {"tf": 1}, "sqlglot.tokens.TokenType.OUT_OF": {"tf": 1}, "sqlglot.tokens.TokenType.OVER": {"tf": 1}, "sqlglot.tokens.TokenType.OVERLAPS": {"tf": 1}, "sqlglot.tokens.TokenType.OVERWRITE": {"tf": 1}, "sqlglot.tokens.TokenType.PARTITION": {"tf": 1}, "sqlglot.tokens.TokenType.PARTITION_BY": {"tf": 1}, "sqlglot.tokens.TokenType.PERCENT": {"tf": 1}, "sqlglot.tokens.TokenType.PIVOT": {"tf": 1}, "sqlglot.tokens.TokenType.PLACEHOLDER": {"tf": 1}, "sqlglot.tokens.TokenType.PRAGMA": {"tf": 1}, "sqlglot.tokens.TokenType.PRECEDING": {"tf": 1}, "sqlglot.tokens.TokenType.PRIMARY_KEY": {"tf": 1}, "sqlglot.tokens.TokenType.PROCEDURE": {"tf": 1}, "sqlglot.tokens.TokenType.PROPERTIES": {"tf": 1}, "sqlglot.tokens.TokenType.PSEUDO_TYPE": {"tf": 1}, "sqlglot.tokens.TokenType.QUALIFY": {"tf": 1}, "sqlglot.tokens.TokenType.QUOTE": {"tf": 1}, "sqlglot.tokens.TokenType.RANGE": {"tf": 1}, "sqlglot.tokens.TokenType.RECURSIVE": {"tf": 1}, "sqlglot.tokens.TokenType.REPLACE": {"tf": 1}, "sqlglot.tokens.TokenType.RESPECT_NULLS": {"tf": 1}, "sqlglot.tokens.TokenType.RETURNING": {"tf": 1}, "sqlglot.tokens.TokenType.REFERENCES": {"tf": 1}, "sqlglot.tokens.TokenType.RIGHT": {"tf": 1}, "sqlglot.tokens.TokenType.RLIKE": {"tf": 1}, "sqlglot.tokens.TokenType.ROLLBACK": {"tf": 1}, "sqlglot.tokens.TokenType.ROLLUP": {"tf": 1}, "sqlglot.tokens.TokenType.ROW": {"tf": 1}, "sqlglot.tokens.TokenType.ROWS": {"tf": 1}, "sqlglot.tokens.TokenType.SEED": {"tf": 1}, "sqlglot.tokens.TokenType.SELECT": {"tf": 1}, "sqlglot.tokens.TokenType.SEMI": {"tf": 1}, "sqlglot.tokens.TokenType.SEPARATOR": {"tf": 1}, "sqlglot.tokens.TokenType.SERDE_PROPERTIES": {"tf": 1}, "sqlglot.tokens.TokenType.SET": {"tf": 1}, "sqlglot.tokens.TokenType.SHOW": {"tf": 1}, "sqlglot.tokens.TokenType.SIMILAR_TO": {"tf": 1}, "sqlglot.tokens.TokenType.SOME": {"tf": 1}, "sqlglot.tokens.TokenType.SORTKEY": {"tf": 1}, "sqlglot.tokens.TokenType.SORT_BY": {"tf": 1}, "sqlglot.tokens.TokenType.STRUCT": {"tf": 1}, "sqlglot.tokens.TokenType.TABLE_SAMPLE": {"tf": 1}, "sqlglot.tokens.TokenType.TEMPORARY": {"tf": 1}, "sqlglot.tokens.TokenType.TOP": {"tf": 1}, "sqlglot.tokens.TokenType.THEN": {"tf": 1}, "sqlglot.tokens.TokenType.TRAILING": {"tf": 1}, "sqlglot.tokens.TokenType.TRUE": {"tf": 1}, "sqlglot.tokens.TokenType.UNBOUNDED": {"tf": 1}, "sqlglot.tokens.TokenType.UNCACHE": {"tf": 1}, "sqlglot.tokens.TokenType.UNION": {"tf": 1}, "sqlglot.tokens.TokenType.UNLOGGED": {"tf": 1}, "sqlglot.tokens.TokenType.UNNEST": {"tf": 1}, "sqlglot.tokens.TokenType.UNPIVOT": {"tf": 1}, "sqlglot.tokens.TokenType.UPDATE": {"tf": 1}, "sqlglot.tokens.TokenType.USE": {"tf": 1}, "sqlglot.tokens.TokenType.USING": {"tf": 1}, "sqlglot.tokens.TokenType.VALUES": {"tf": 1}, "sqlglot.tokens.TokenType.VIEW": {"tf": 1}, "sqlglot.tokens.TokenType.VOLATILE": {"tf": 1}, "sqlglot.tokens.TokenType.WHEN": {"tf": 1}, "sqlglot.tokens.TokenType.WHERE": {"tf": 1}, "sqlglot.tokens.TokenType.WINDOW": {"tf": 1}, "sqlglot.tokens.TokenType.WITH": {"tf": 1}, "sqlglot.tokens.TokenType.WITH_TIME_ZONE": {"tf": 1}, "sqlglot.tokens.TokenType.WITH_LOCAL_TIME_ZONE": {"tf": 1}, "sqlglot.tokens.TokenType.WITHIN_GROUP": {"tf": 1}, "sqlglot.tokens.TokenType.WITHOUT_TIME_ZONE": {"tf": 1}, "sqlglot.tokens.TokenType.UNIQUE": {"tf": 1}}, "df": 299}}}}}}}, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.ToChar": {"tf": 1}, "sqlglot.generator.Generator.tochar_sql": {"tf": 1}}, "df": 2}}}}, "p": {"docs": {"sqlglot.tokens.TokenType.TOP": {"tf": 1}}, "df": 1}}, "s": {"docs": {"sqlglot.dialects.dialect.ts_or_ds_to_date_sql": {"tf": 1}}, "df": 1, "q": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.dialects.dialect.Dialects.TSQL": {"tf": 1}, "sqlglot.dialects.tsql.TSQL": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Tokenizer": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator.offset_sql": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator.systemtime_sql": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator.returnsproperty_sql": {"tf": 1}}, "df": 8}}, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.TsOrDsAdd": {"tf": 1}}, "df": 1}}}, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.TsOrDsToDate": {"tf": 1}}, "df": 1, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.TsOrDsToDateStr": {"tf": 1}}, "df": 1}}}}}}}}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {"sqlglot.expressions.TsOrDiToDi": {"tf": 1}}, "df": 1}}}}}}, "t": {"docs": {"sqlglot.helper.tsort": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.dialects.dialect.Dialects.TERADATA": {"tf": 1}, "sqlglot.dialects.teradata.Teradata": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Tokenizer": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.partitionedbyproperty_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.update_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.mod_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.rangen_sql": {"tf": 1}}, "df": 10}}}}}}, "x": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.Expression.text": {"tf": 1}, "sqlglot.expressions.DataType.Type.TEXT": {"tf": 1}, "sqlglot.generator.Generator.text_width": {"tf": 1}, "sqlglot.optimizer.canonicalize.add_text_to_concat": {"tf": 1}, "sqlglot.tokens.TokenType.TEXT": {"tf": 1}}, "df": 5}}, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.tokens.TokenType.TEMPORARY": {"tf": 1}}, "df": 1, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.TemporaryProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.Dialect.format_time": {"tf": 1}, "sqlglot.dialects.dialect.format_time_lambda": {"tf": 1}, "sqlglot.dialects.dialect.date_trunc_to_time": {"tf": 1}, "sqlglot.dialects.dialect.str_to_time_sql": {"tf": 1}, "sqlglot.expressions.DataType.Type.TIME": {"tf": 1}, "sqlglot.generator.Generator.format_time": {"tf": 1}, "sqlglot.time.format_time": {"tf": 1}, "sqlglot.tokens.TokenType.TIME": {"tf": 1}, "sqlglot.tokens.TokenType.AT_TIME_ZONE": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_TIME": {"tf": 1}, "sqlglot.tokens.TokenType.WITH_TIME_ZONE": {"tf": 1}, "sqlglot.tokens.TokenType.WITH_LOCAL_TIME_ZONE": {"tf": 1}, "sqlglot.tokens.TokenType.WITHOUT_TIME_ZONE": {"tf": 1}}, "df": 13, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.expressions.DataType.Type.TIMESTAMP": {"tf": 1}, "sqlglot.tokens.TokenType.TIMESTAMP": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_TIMESTAMP": {"tf": 1}}, "df": 3, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot.dialects.dialect.timestamptrunc_sql": {"tf": 1}, "sqlglot.expressions.TimestampTrunc": {"tf": 1}}, "df": 2}}}}, "z": {"docs": {"sqlglot.expressions.DataType.Type.TIMESTAMPTZ": {"tf": 1}, "sqlglot.tokens.TokenType.TIMESTAMPTZ": {"tf": 1}}, "df": 2}}, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "z": {"docs": {"sqlglot.expressions.DataType.Type.TIMESTAMPLTZ": {"tf": 1}, "sqlglot.tokens.TokenType.TIMESTAMPLTZ": {"tf": 1}}, "df": 2}}}, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.TimestampAdd": {"tf": 1}}, "df": 1}}}, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "b": {"docs": {"sqlglot.expressions.TimestampSub": {"tf": 1}}, "df": 1}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "f": {"docs": {"sqlglot.expressions.TimestampDiff": {"tf": 1}}, "df": 1}}}}}}}, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.timestrtotime_sql": {"tf": 1}, "sqlglot.expressions.TimeStrToTime": {"tf": 1}}, "df": 2}}}}, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.TimeStrToDate": {"tf": 1}}, "df": 1}}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "x": {"docs": {"sqlglot.expressions.TimeStrToUnix": {"tf": 1}}, "df": 1}}}}}}}}, "u": {"docs": {}, "df": 0, "b": {"docs": {"sqlglot.expressions.TimeSub": {"tf": 1}}, "df": 1}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.TimeUnit": {"tf": 1}, "sqlglot.expressions.TimeUnit.__init__": {"tf": 1}}, "df": 2}}}}, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.TimeAdd": {"tf": 1}}, "df": 1}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "f": {"docs": {"sqlglot.expressions.TimeDiff": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot.expressions.TimeTrunc": {"tf": 1}}, "df": 1}}}}, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.TimeToStr": {"tf": 1}}, "df": 1}}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.TimeToTimeStr": {"tf": 1}}, "df": 1}}}}}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "x": {"docs": {"sqlglot.expressions.TimeToUnix": {"tf": 1}}, "df": 1}}}}}}}}, "t": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.TitleColumnConstraint": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}, "n": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.DataType.Type.TINYINT": {"tf": 1}, "sqlglot.tokens.TokenType.TINYINT": {"tf": 1}}, "df": 2}}}}}, "l": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.tokens.TokenType.TILDA": {"tf": 1}}, "df": 1}}}}, "u": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.executor.context.Context.eval_tuple": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.generate_tuple": {"tf": 1}, "sqlglot.expressions.Tuple": {"tf": 1}, "sqlglot.generator.Generator.tuple_sql": {"tf": 1}}, "df": 4}}}}, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.Expression.this": {"tf": 1}}, "df": 1}}, "e": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.tokens.TokenType.THEN": {"tf": 1}}, "df": 1}}}, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.DataType.Type": {"tf": 1}, "sqlglot.expressions.DataType.Type.CHAR": {"tf": 1}, "sqlglot.expressions.DataType.Type.NCHAR": {"tf": 1}, "sqlglot.expressions.DataType.Type.VARCHAR": {"tf": 1}, "sqlglot.expressions.DataType.Type.NVARCHAR": {"tf": 1}, "sqlglot.expressions.DataType.Type.TEXT": {"tf": 1}, "sqlglot.expressions.DataType.Type.MEDIUMTEXT": {"tf": 1}, "sqlglot.expressions.DataType.Type.LONGTEXT": {"tf": 1}, "sqlglot.expressions.DataType.Type.MEDIUMBLOB": {"tf": 1}, "sqlglot.expressions.DataType.Type.LONGBLOB": {"tf": 1}, "sqlglot.expressions.DataType.Type.BINARY": {"tf": 1}, "sqlglot.expressions.DataType.Type.VARBINARY": {"tf": 1}, "sqlglot.expressions.DataType.Type.INT": {"tf": 1}, "sqlglot.expressions.DataType.Type.UINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.TINYINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.UTINYINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.SMALLINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.USMALLINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.BIGINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.UBIGINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.FLOAT": {"tf": 1}, "sqlglot.expressions.DataType.Type.DOUBLE": {"tf": 1}, "sqlglot.expressions.DataType.Type.DECIMAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.BIGDECIMAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.BIT": {"tf": 1}, "sqlglot.expressions.DataType.Type.BOOLEAN": {"tf": 1}, "sqlglot.expressions.DataType.Type.JSON": {"tf": 1}, "sqlglot.expressions.DataType.Type.JSONB": {"tf": 1}, "sqlglot.expressions.DataType.Type.INTERVAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.TIME": {"tf": 1}, "sqlglot.expressions.DataType.Type.TIMESTAMP": {"tf": 1}, "sqlglot.expressions.DataType.Type.TIMESTAMPTZ": {"tf": 1}, "sqlglot.expressions.DataType.Type.TIMESTAMPLTZ": {"tf": 1}, "sqlglot.expressions.DataType.Type.DATE": {"tf": 1}, "sqlglot.expressions.DataType.Type.DATETIME": {"tf": 1}, "sqlglot.expressions.DataType.Type.ARRAY": {"tf": 1}, "sqlglot.expressions.DataType.Type.MAP": {"tf": 1}, "sqlglot.expressions.DataType.Type.UUID": {"tf": 1}, "sqlglot.expressions.DataType.Type.GEOGRAPHY": {"tf": 1}, "sqlglot.expressions.DataType.Type.GEOMETRY": {"tf": 1}, "sqlglot.expressions.DataType.Type.STRUCT": {"tf": 1}, "sqlglot.expressions.DataType.Type.NULLABLE": {"tf": 1}, "sqlglot.expressions.DataType.Type.HLLSKETCH": {"tf": 1}, "sqlglot.expressions.DataType.Type.HSTORE": {"tf": 1}, "sqlglot.expressions.DataType.Type.SUPER": {"tf": 1}, "sqlglot.expressions.DataType.Type.SERIAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.SMALLSERIAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.BIGSERIAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.XML": {"tf": 1}, "sqlglot.expressions.DataType.Type.UNIQUEIDENTIFIER": {"tf": 1}, "sqlglot.expressions.DataType.Type.MONEY": {"tf": 1}, "sqlglot.expressions.DataType.Type.SMALLMONEY": {"tf": 1}, "sqlglot.expressions.DataType.Type.ROWVERSION": {"tf": 1}, "sqlglot.expressions.DataType.Type.IMAGE": {"tf": 1}, "sqlglot.expressions.DataType.Type.VARIANT": {"tf": 1}, "sqlglot.expressions.DataType.Type.OBJECT": {"tf": 1}, "sqlglot.expressions.DataType.Type.INET": {"tf": 1}, "sqlglot.expressions.DataType.Type.NULL": {"tf": 1}, "sqlglot.expressions.DataType.Type.UNKNOWN": {"tf": 1}, "sqlglot.expressions.DataType.is_type": {"tf": 1}, "sqlglot.expressions.Cast.is_type": {"tf": 1}, "sqlglot.optimizer.canonicalize.coerce_type": {"tf": 1}, "sqlglot.schema.Schema.get_column_type": {"tf": 1}, "sqlglot.schema.MappingSchema.get_column_type": {"tf": 1}, "sqlglot.tokens.TokenType.PSEUDO_TYPE": {"tf": 1}}, "df": 65, "s": {"docs": {"sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}, "sqlglot.transforms.remove_precision_parameterized_types": {"tf": 1}}, "df": 2}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.optimizer.annotate_types.TypeAnnotator": {"tf": 1}, "sqlglot.optimizer.annotate_types.TypeAnnotator.__init__": {"tf": 1}, "sqlglot.optimizer.annotate_types.TypeAnnotator.annotate": {"tf": 1}}, "df": 3}}}}}}}}}}}}}, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1}, "sqlglot.expressions.Create": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_CREATE": {"tf": 1}, "sqlglot.generator.Generator.create_sql": {"tf": 1}, "sqlglot.tokens.TokenType.CREATE": {"tf": 1}}, "df": 5, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.SparkSession.createDataFrame": {"tf": 1}}, "df": 1}}}}}}}}}}}}}, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.tokens.TokenType.CROSS": {"tf": 1}}, "df": 1}}}}, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dataframe.sql.DataFrame.copy": {"tf": 1}, "sqlglot.dataframe.sql.Column.copy": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.copy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.copy": {"tf": 1}, "sqlglot.expressions.Expression.copy": {"tf": 1}, "sqlglot.schema.MappingSchema.copy": {"tf": 1}}, "df": 6}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.DataFrame.coalesce": {"tf": 1}, "sqlglot.expressions.Coalesce": {"tf": 1}}, "df": 2}}}}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe.sql.GroupedData.count": {"tf": 1}, "sqlglot.dialects.dialect.approx_count_distinct_sql": {"tf": 1}, "sqlglot.dialects.dialect.count_if_to_sum": {"tf": 1}, "sqlglot.expressions.Count": {"tf": 1}, "sqlglot.helper.count_params": {"tf": 1}, "sqlglot.optimizer.scope.Scope.ref_count": {"tf": 1}}, "df": 6, "i": {"docs": {}, "df": 0, "f": {"docs": {"sqlglot.expressions.CountIf": {"tf": 1}}, "df": 1}}}}}, "l": {"docs": {"sqlglot.dataframe.sql.Column.ensure_col": {"tf": 1}}, "df": 1, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dataframe.sql.Column": {"tf": 1}, "sqlglot.dataframe.sql.Column.__init__": {"tf": 1}, "sqlglot.dataframe.sql.Column.ensure_col": {"tf": 1}, "sqlglot.dataframe.sql.Column.ensure_cols": {"tf": 1}, "sqlglot.dataframe.sql.Column.invoke_anonymous_function": {"tf": 1}, "sqlglot.dataframe.sql.Column.invoke_expression_over_column": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.binary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.inverse_binary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.unary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.ensure_literal": {"tf": 1}, "sqlglot.dataframe.sql.Column.copy": {"tf": 1}, "sqlglot.dataframe.sql.Column.set_table_name": {"tf": 1}, "sqlglot.dataframe.sql.Column.sql": {"tf": 1}, "sqlglot.dataframe.sql.Column.alias": {"tf": 1}, "sqlglot.dataframe.sql.Column.asc": {"tf": 1}, "sqlglot.dataframe.sql.Column.desc": {"tf": 1}, "sqlglot.dataframe.sql.Column.asc_nulls_first": {"tf": 1}, "sqlglot.dataframe.sql.Column.asc_nulls_last": {"tf": 1}, "sqlglot.dataframe.sql.Column.desc_nulls_first": {"tf": 1}, "sqlglot.dataframe.sql.Column.desc_nulls_last": {"tf": 1}, "sqlglot.dataframe.sql.Column.when": {"tf": 1}, "sqlglot.dataframe.sql.Column.otherwise": {"tf": 1}, "sqlglot.dataframe.sql.Column.isNull": {"tf": 1}, "sqlglot.dataframe.sql.Column.isNotNull": {"tf": 1}, "sqlglot.dataframe.sql.Column.cast": {"tf": 1}, "sqlglot.dataframe.sql.Column.startswith": {"tf": 1}, "sqlglot.dataframe.sql.Column.endswith": {"tf": 1}, "sqlglot.dataframe.sql.Column.rlike": {"tf": 1}, "sqlglot.dataframe.sql.Column.like": {"tf": 1}, "sqlglot.dataframe.sql.Column.ilike": {"tf": 1}, "sqlglot.dataframe.sql.Column.substr": {"tf": 1}, "sqlglot.dataframe.sql.Column.isin": {"tf": 1}, "sqlglot.dataframe.sql.Column.between": {"tf": 1}, "sqlglot.dataframe.sql.Column.over": {"tf": 1}, "sqlglot.dialects.dialect.no_comment_column_constraint_sql": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator.column_sql": {"tf": 1}, "sqlglot.expressions.Column": {"tf": 1}, "sqlglot.expressions.Column.output_name": {"tf": 1}, "sqlglot.expressions.Column.parts": {"tf": 1}, "sqlglot.expressions.Column.to_dot": {"tf": 1}, "sqlglot.expressions.to_column": {"tf": 1}, "sqlglot.expressions.column": {"tf": 1}, "sqlglot.expressions.column_table_names": {"tf": 1}, "sqlglot.generator.Generator.column_sql": {"tf": 1}, "sqlglot.schema.Schema.column_names": {"tf": 1}, "sqlglot.schema.Schema.get_column_type": {"tf": 1}, "sqlglot.schema.MappingSchema.column_names": {"tf": 1}, "sqlglot.schema.MappingSchema.get_column_type": {"tf": 1}, "sqlglot.schema.ensure_column_mapping": {"tf": 1}, "sqlglot.tokens.TokenType.COLUMN": {"tf": 1}, "sqlglot.tokens.TokenType.COLUMN_DEF": {"tf": 1}}, "df": 51, "s": {"docs": {"sqlglot.executor.context.Context.add_columns": {"tf": 1}, "sqlglot.executor.table.Table.add_columns": {"tf": 1}, "sqlglot.optimizer.qualify_columns.qualify_columns": {"tf": 1}, "sqlglot.optimizer.qualify_columns.validate_qualify_columns": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.all_columns": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.get_source_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.external_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.unqualified_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.source_columns": {"tf": 1}}, "df": 10}, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.ColumnPosition": {"tf": 1}, "sqlglot.generator.Generator.columnposition_sql": {"tf": 1}}, "df": 2}}}}}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "f": {"docs": {"sqlglot.expressions.ColumnDef": {"tf": 1}, "sqlglot.generator.Generator.columndef_sql": {"tf": 1}}, "df": 2}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.ColumnConstraint": {"tf": 1}, "sqlglot.generator.Generator.columnconstraint_sql": {"tf": 1}}, "df": 2, "k": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.ColumnConstraintKind": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}, "s": {"docs": {"sqlglot.dataframe.sql.Column.ensure_cols": {"tf": 1}}, "df": 1}, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Collate": {"tf": 1}, "sqlglot.generator.Generator.collate_sql": {"tf": 1}, "sqlglot.tokens.TokenType.COLLATE": {"tf": 1}}, "df": 3, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.CollateColumnConstraint": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.CollateProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.helper.ensure_collection": {"tf": 1}}, "df": 1}}}}}}}, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.tokens.TokenType.COLON": {"tf": 1}}, "df": 1}}}, "m": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator.commit_sql": {"tf": 1}, "sqlglot.expressions.Commit": {"tf": 1}, "sqlglot.generator.Generator.commit_sql": {"tf": 1}, "sqlglot.tokens.TokenType.COMMIT": {"tf": 1}}, "df": 4}}, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.dialect.no_comment_column_constraint_sql": {"tf": 1}, "sqlglot.expressions.Comment": {"tf": 1}, "sqlglot.generator.Generator.pad_comment": {"tf": 1}, "sqlglot.generator.Generator.maybe_comment": {"tf": 1}, "sqlglot.generator.Generator.comment_sql": {"tf": 1}, "sqlglot.tokens.TokenType.COMMENT": {"tf": 1}}, "df": 6, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.CommentColumnConstraint": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}, "a": {"docs": {"sqlglot.tokens.TokenType.COMMA": {"tf": 1}}, "df": 1, "n": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.Command": {"tf": 1}, "sqlglot.generator.Generator.command_sql": {"tf": 1}, "sqlglot.tokens.TokenType.COMMAND": {"tf": 1}}, "df": 3}}}}, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.CompressColumnConstraint": {"tf": 1}, "sqlglot.generator.Generator.compresscolumnconstraint_sql": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}}}}}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.optimizer.simplify.remove_compliments": {"tf": 1}}, "df": 1}}}}}}, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.optimizer.simplify.is_complement": {"tf": 1}}, "df": 1}}}}}}, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.tokens.TokenType.COMPOUND": {"tf": 1}}, "df": 1}}}}}}, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.dialect.no_comment_column_constraint_sql": {"tf": 1}, "sqlglot.expressions.Constraint": {"tf": 1}, "sqlglot.generator.Generator.constraint_sql": {"tf": 1}, "sqlglot.tokens.TokenType.CONSTRAINT": {"tf": 1}}, "df": 4}}}}}}}, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.errors.concat_messages": {"tf": 1}, "sqlglot.expressions.Concat": {"tf": 1}, "sqlglot.generator.Generator.concat_sql": {"tf": 1}, "sqlglot.optimizer.canonicalize.add_text_to_concat": {"tf": 1}}, "df": 4, "w": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.ConcatWs": {"tf": 1}}, "df": 1}}}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.executor.context.Context": {"tf": 1}, "sqlglot.executor.context.Context.__init__": {"tf": 1}, "sqlglot.executor.context.Context.eval": {"tf": 1}, "sqlglot.executor.context.Context.eval_tuple": {"tf": 1}, "sqlglot.executor.context.Context.add_columns": {"tf": 1}, "sqlglot.executor.context.Context.table_iter": {"tf": 1}, "sqlglot.executor.context.Context.filter": {"tf": 1}, "sqlglot.executor.context.Context.sort": {"tf": 1}, "sqlglot.executor.context.Context.set_row": {"tf": 1}, "sqlglot.executor.context.Context.set_index": {"tf": 1}, "sqlglot.executor.context.Context.set_range": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.context": {"tf": 1}}, "df": 12}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.Condition": {"tf": 1}, "sqlglot.expressions.Condition.and_": {"tf": 1}, "sqlglot.expressions.Condition.or_": {"tf": 1}, "sqlglot.expressions.Condition.not_": {"tf": 1}, "sqlglot.expressions.condition": {"tf": 1}, "sqlglot.optimizer.eliminate_joins.join_condition": {"tf": 1}}, "df": 6}}}}}}, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.Connector": {"tf": 1}, "sqlglot.generator.Generator.connector_sql": {"tf": 1}}, "df": 2, "s": {"docs": {"sqlglot.optimizer.simplify.simplify_connectors": {"tf": 1}}, "df": 1}}}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.convert": {"tf": 1}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.canonicalize.coerce_type": {"tf": 1}}, "df": 1}}}}, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.optimizer.scope.Scope.is_correlated_subquery": {"tf": 1}}, "df": 1}}}}}}}}}, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.DataFrame.cache": {"tf": 1}, "sqlglot.expressions.Cache": {"tf": 1}, "sqlglot.generator.Generator.cache_sql": {"tf": 1}, "sqlglot.optimizer.scope.Scope.clear_cache": {"tf": 1}, "sqlglot.tokens.TokenType.CACHE": {"tf": 1}}, "df": 5}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe.sql.Column.cast": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator.cast_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.cast_sql": {"tf": 1}, "sqlglot.executor.env.cast": {"tf": 1}, "sqlglot.expressions.Cast": {"tf": 1}, "sqlglot.expressions.Cast.output_name": {"tf": 1}, "sqlglot.expressions.Cast.is_type": {"tf": 1}, "sqlglot.expressions.cast": {"tf": 1}, "sqlglot.generator.Generator.cast_sql": {"tf": 1}}, "df": 9, "s": {"docs": {"sqlglot.optimizer.canonicalize.remove_redundant_casts": {"tf": 1}}, "df": 1}}, "e": {"docs": {"sqlglot.expressions.Case": {"tf": 1}, "sqlglot.generator.Generator.case_sql": {"tf": 1}, "sqlglot.helper.camel_to_snake_case": {"tf": 1}, "sqlglot.tokens.TokenType.CASE": {"tf": 1}}, "df": 4, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.CaseSpecificColumnConstraint": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}}}}}}, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.CASCADE": {"tf": 1}}, "df": 1}}}}}, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.helper.camel_to_snake_case": {"tf": 1}}, "df": 1}}}, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.canonicalize.canonicalize": {"tf": 1}}, "df": 1}}}}}}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.CARET": {"tf": 1}}, "df": 1}}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.clickhouse.ClickHouse": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Tokenizer": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator.cte_sql": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.CLICKHOUSE": {"tf": 1}}, "df": 6}}}}}}}}, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.Cluster": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.generator.Generator.cluster_sql": {"tf": 1}, "sqlglot.tokens.TokenType.CLUSTER_BY": {"tf": 1}}, "df": 4}}}}}, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.optimizer.scope.Scope.clear_cache": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.clickhouse.ClickHouse.Generator.cte_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_recursive_cte_sql": {"tf": 1}, "sqlglot.expressions.CTE": {"tf": 1}, "sqlglot.generator.Generator.cte_sql": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.CTE": {"tf": 1}, "sqlglot.optimizer.scope.Scope.cte_sources": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_cte": {"tf": 1}}, "df": 7, "s": {"docs": {"sqlglot.generator.Generator.prepend_ctes": {"tf": 1}, "sqlglot.optimizer.eliminate_ctes.eliminate_ctes": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_ctes": {"tf": 1}, "sqlglot.optimizer.scope.Scope.ctes": {"tf": 1}}, "df": 4}}, "a": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.Select.ctas": {"tf": 1}}, "df": 1}}}, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.dialect.no_paren_current_date_sql": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_DATE": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_DATETIME": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_ROW": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_TIME": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_TIMESTAMP": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_USER": {"tf": 1}}, "df": 7, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.CurrentDate": {"tf": 1}, "sqlglot.generator.Generator.currentdate_sql": {"tf": 1}}, "df": 2, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.CurrentDatetime": {"tf": 1}}, "df": 1}}}}}}}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.CurrentTime": {"tf": 1}}, "df": 1, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.expressions.CurrentTimestamp": {"tf": 1}}, "df": 1}}}}}}}}}, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.CurrentUser": {"tf": 1}}, "df": 1}}}}}}}}}, "b": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.CUBE": {"tf": 1}}, "df": 1}}}, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.diff.ChangeDistiller": {"tf": 1}, "sqlglot.diff.ChangeDistiller.__init__": {"tf": 1}, "sqlglot.diff.ChangeDistiller.diff": {"tf": 1}}, "df": 3}}}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.helper.while_changing": {"tf": 1}}, "df": 1}}}}}, "r": {"docs": {"sqlglot.expressions.DataType.Type.CHAR": {"tf": 1}, "sqlglot.tokens.TokenType.CHAR": {"tf": 1}}, "df": 2, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.tokens.TokenType.CHARACTER_SET": {"tf": 1}}, "df": 1, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.CharacterSet": {"tf": 1}, "sqlglot.generator.Generator.characterset_sql": {"tf": 1}}, "df": 2, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.CharacterSetColumnConstraint": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.CharacterSetProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.expressions.Check": {"tf": 1}, "sqlglot.generator.Generator.check_sql": {"tf": 1}, "sqlglot.parser.Parser.check_errors": {"tf": 1}}, "df": 3, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.CheckColumnConstraint": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.ChecksumProperty": {"tf": 1}, "sqlglot.generator.Generator.checksumproperty_sql": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.replace_children": {"tf": 1}}, "df": 1}}}}}}}, "s": {"docs": {}, "df": 0, "v": {"docs": {"sqlglot.executor.python.PythonExecutor.scan_csv": {"tf": 1}, "sqlglot.helper.csv": {"tf": 1}, "sqlglot.helper.csv_reader": {"tf": 1}}, "df": 3}}, "e": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.expressions.Ceil": {"tf": 1}}, "df": 1}}}, "n": {"docs": {}, "df": 0, "f": {"docs": {"sqlglot.optimizer.pushdown_predicates.pushdown_cnf": {"tf": 1}}, "df": 1}}}, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.tokens.TokenType.LOAD_DATA": {"tf": 1}}, "df": 1, "f": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.DataFrame": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sql": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.copy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.select": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.alias": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.where": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.filter": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.groupBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.agg": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.join": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.union": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.unionAll": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.unionByName": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.intersect": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.intersectAll": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.exceptAll": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.distinct": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.dropDuplicates": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.dropna": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.replace": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.withColumn": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.withColumnRenamed": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.drop": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.limit": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.hint": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.repartition": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.coalesce": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.cache": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.persist": {"tf": 1}}, "df": 33, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dataframe.sql.DataFrameNaFunctions": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.drop": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.fill": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.replace": {"tf": 1}}, "df": 5}}}}}}}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dataframe.sql.DataFrameReader": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameReader.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameReader.table": {"tf": 1}}, "df": 3}}}}}}, "w": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dataframe.sql.DataFrameWriter": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.copy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.sql": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.mode": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.insertInto": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.saveAsTable": {"tf": 1}}, "df": 7}}}}}}}}}}}, "b": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dialects.databricks.Databricks": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Tokenizer": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.DATABRICKS": {"tf": 1}}, "df": 5}}}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.DataBlocksizeProperty": {"tf": 1}, "sqlglot.generator.Generator.datablocksizeproperty_sql": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}}}, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.DATABASE": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.hive.Hive.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.datatype_sql": {"tf": 1}, "sqlglot.expressions.DataType": {"tf": 1}, "sqlglot.expressions.DataType.Type": {"tf": 1}, "sqlglot.expressions.DataType.Type.CHAR": {"tf": 1}, "sqlglot.expressions.DataType.Type.NCHAR": {"tf": 1}, "sqlglot.expressions.DataType.Type.VARCHAR": {"tf": 1}, "sqlglot.expressions.DataType.Type.NVARCHAR": {"tf": 1}, "sqlglot.expressions.DataType.Type.TEXT": {"tf": 1}, "sqlglot.expressions.DataType.Type.MEDIUMTEXT": {"tf": 1}, "sqlglot.expressions.DataType.Type.LONGTEXT": {"tf": 1}, "sqlglot.expressions.DataType.Type.MEDIUMBLOB": {"tf": 1}, "sqlglot.expressions.DataType.Type.LONGBLOB": {"tf": 1}, "sqlglot.expressions.DataType.Type.BINARY": {"tf": 1}, "sqlglot.expressions.DataType.Type.VARBINARY": {"tf": 1}, "sqlglot.expressions.DataType.Type.INT": {"tf": 1}, "sqlglot.expressions.DataType.Type.UINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.TINYINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.UTINYINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.SMALLINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.USMALLINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.BIGINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.UBIGINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.FLOAT": {"tf": 1}, "sqlglot.expressions.DataType.Type.DOUBLE": {"tf": 1}, "sqlglot.expressions.DataType.Type.DECIMAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.BIGDECIMAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.BIT": {"tf": 1}, "sqlglot.expressions.DataType.Type.BOOLEAN": {"tf": 1}, "sqlglot.expressions.DataType.Type.JSON": {"tf": 1}, "sqlglot.expressions.DataType.Type.JSONB": {"tf": 1}, "sqlglot.expressions.DataType.Type.INTERVAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.TIME": {"tf": 1}, "sqlglot.expressions.DataType.Type.TIMESTAMP": {"tf": 1}, "sqlglot.expressions.DataType.Type.TIMESTAMPTZ": {"tf": 1}, "sqlglot.expressions.DataType.Type.TIMESTAMPLTZ": {"tf": 1}, "sqlglot.expressions.DataType.Type.DATE": {"tf": 1}, "sqlglot.expressions.DataType.Type.DATETIME": {"tf": 1}, "sqlglot.expressions.DataType.Type.ARRAY": {"tf": 1}, "sqlglot.expressions.DataType.Type.MAP": {"tf": 1}, "sqlglot.expressions.DataType.Type.UUID": {"tf": 1}, "sqlglot.expressions.DataType.Type.GEOGRAPHY": {"tf": 1}, "sqlglot.expressions.DataType.Type.GEOMETRY": {"tf": 1}, "sqlglot.expressions.DataType.Type.STRUCT": {"tf": 1}, "sqlglot.expressions.DataType.Type.NULLABLE": {"tf": 1}, "sqlglot.expressions.DataType.Type.HLLSKETCH": {"tf": 1}, "sqlglot.expressions.DataType.Type.HSTORE": {"tf": 1}, "sqlglot.expressions.DataType.Type.SUPER": {"tf": 1}, "sqlglot.expressions.DataType.Type.SERIAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.SMALLSERIAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.BIGSERIAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.XML": {"tf": 1}, "sqlglot.expressions.DataType.Type.UNIQUEIDENTIFIER": {"tf": 1}, "sqlglot.expressions.DataType.Type.MONEY": {"tf": 1}, "sqlglot.expressions.DataType.Type.SMALLMONEY": {"tf": 1}, "sqlglot.expressions.DataType.Type.ROWVERSION": {"tf": 1}, "sqlglot.expressions.DataType.Type.IMAGE": {"tf": 1}, "sqlglot.expressions.DataType.Type.VARIANT": {"tf": 1}, "sqlglot.expressions.DataType.Type.OBJECT": {"tf": 1}, "sqlglot.expressions.DataType.Type.INET": {"tf": 1}, "sqlglot.expressions.DataType.Type.NULL": {"tf": 1}, "sqlglot.expressions.DataType.Type.UNKNOWN": {"tf": 1}, "sqlglot.expressions.DataType.build": {"tf": 1}, "sqlglot.expressions.DataType.is_type": {"tf": 1}, "sqlglot.generator.Generator.datatype_sql": {"tf": 1}}, "df": 66}}}}}, "e": {"docs": {"sqlglot.dialects.dialect.no_paren_current_date_sql": {"tf": 1}, "sqlglot.dialects.dialect.parse_date_delta": {"tf": 1}, "sqlglot.dialects.dialect.parse_date_delta_with_interval": {"tf": 1}, "sqlglot.dialects.dialect.date_trunc_to_time": {"tf": 1}, "sqlglot.dialects.dialect.ts_or_ds_to_date_sql": {"tf": 1}, "sqlglot.dialects.tsql.generate_date_delta_with_unit_sql": {"tf": 1}, "sqlglot.expressions.DataType.Type.DATE": {"tf": 1}, "sqlglot.optimizer.simplify.extract_date": {"tf": 1}, "sqlglot.optimizer.simplify.date_literal": {"tf": 1}, "sqlglot.tokens.TokenType.DATE": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_DATE": {"tf": 1}}, "df": 11, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.datestrtodate_sql": {"tf": 1}, "sqlglot.expressions.DateStrToDate": {"tf": 1}}, "df": 2}}}}}}}}, "u": {"docs": {}, "df": 0, "b": {"docs": {"sqlglot.expressions.DateSub": {"tf": 1}}, "df": 1}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "f": {"docs": {"sqlglot.dialects.sqlite.SQLite.Generator.datediff_sql": {"tf": 1}, "sqlglot.expressions.DateDiff": {"tf": 1}}, "df": 2}}}}, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.DateFormatColumnConstraint": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.DateFromParts": {"tf": 1}}, "df": 1}}}}}}}}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.DataType.Type.DATETIME": {"tf": 1}, "sqlglot.tokens.TokenType.DATETIME": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_DATETIME": {"tf": 1}}, "df": 3, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.DatetimeAdd": {"tf": 1}}, "df": 1}}}, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "b": {"docs": {"sqlglot.expressions.DatetimeSub": {"tf": 1}}, "df": 1}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "f": {"docs": {"sqlglot.expressions.DatetimeDiff": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot.expressions.DatetimeTrunc": {"tf": 1}}, "df": 1}}}}}}}}, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot.expressions.DateTrunc": {"tf": 1}}, "df": 1}}}}, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.DateToDateStr": {"tf": 1}}, "df": 1}}}}}}, "i": {"docs": {"sqlglot.expressions.DateToDi": {"tf": 1}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.DateAdd": {"tf": 1}}, "df": 1}}}}}, "y": {"docs": {"sqlglot.expressions.Day": {"tf": 1}}, "df": 1, "o": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.expressions.DayOfWeek": {"tf": 1}}, "df": 1}}}}, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.expressions.DayOfMonth": {"tf": 1}}, "df": 1}}}}}, "y": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.DayOfYear": {"tf": 1}}, "df": 1}}}}}}}, "s": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.tokens.TokenType.DASH": {"tf": 1}}, "df": 1}}, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {"sqlglot.tokens.TokenType.DARROW": {"tf": 1}}, "df": 1}}}}, "m": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.tokens.TokenType.DAMP": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe.sql.DataFrame.distinct": {"tf": 1}, "sqlglot.dialects.dialect.approx_count_distinct_sql": {"tf": 1}, "sqlglot.expressions.Select.distinct": {"tf": 1}, "sqlglot.expressions.Distinct": {"tf": 1}, "sqlglot.generator.Generator.distinct_sql": {"tf": 1}, "sqlglot.tokens.TokenType.DISTINCT": {"tf": 1}, "sqlglot.tokens.TokenType.DISTINCT_FROM": {"tf": 1}, "sqlglot.transforms.eliminate_distinct_on": {"tf": 1}}, "df": 8}}}}, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Distribute": {"tf": 1}, "sqlglot.generator.Generator.distribute_sql": {"tf": 1}, "sqlglot.tokens.TokenType.DISTRIBUTE_BY": {"tf": 1}}, "df": 3}, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.normalize.distributive_law": {"tf": 1}}, "df": 1}}}}}}}}, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.DistKeyProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.DistStyleProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Distance": {"tf": 1}, "sqlglot.generator.Generator.distance_sql": {"tf": 1}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1}}, "df": 3}}}}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.dialect.Dialects.DIALECT": {"tf": 1}, "sqlglot.dialects.dialect.Dialect": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.get_or_raise": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.format_time": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.parse": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.parse_into": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.generate": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.transpile": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.tokenize": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.parser": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.generator": {"tf": 1}}, "df": 11, "s": {"docs": {"sqlglot.dialects.dialect.Dialects": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.DIALECT": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.BIGQUERY": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.CLICKHOUSE": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.DUCKDB": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.HIVE": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.MYSQL": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.ORACLE": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.POSTGRES": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.PRESTO": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.REDSHIFT": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.SNOWFLAKE": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.SPARK": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.SQLITE": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.STARROCKS": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.TABLEAU": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.TRINO": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.TSQL": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.DATABRICKS": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.DRILL": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.TERADATA": {"tf": 1}}, "df": 21}}}}}}, "v": {"docs": {"sqlglot.expressions.Div": {"tf": 1}, "sqlglot.generator.Generator.div_sql": {"tf": 1}, "sqlglot.tokens.TokenType.DIV": {"tf": 1}}, "df": 3, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.no_safe_divide_sql": {"tf": 1}}, "df": 1}}}}, "f": {"docs": {}, "df": 0, "f": {"docs": {"sqlglot.diff.diff": {"tf": 1}, "sqlglot.diff.ChangeDistiller.diff": {"tf": 1}}, "df": 2}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.Directory": {"tf": 1}, "sqlglot.generator.Generator.directory_sql": {"tf": 1}}, "df": 2}}}}}}}, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.Properties.from_dict": {"tf": 1}, "sqlglot.helper.object_to_dict": {"tf": 1}, "sqlglot.helper.dict_depth": {"tf": 1}}, "df": 3}}, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.DiToDate": {"tf": 1}}, "df": 1}}}}}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.dataframe.sql.DataFrame.drop": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.drop": {"tf": 1}, "sqlglot.expressions.Drop": {"tf": 1}, "sqlglot.generator.Generator.drop_sql": {"tf": 1}, "sqlglot.tokens.TokenType.DROP": {"tf": 1}}, "df": 5, "d": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dataframe.sql.DataFrame.dropDuplicates": {"tf": 1}}, "df": 1}}}}}}}}}}, "n": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.dataframe.sql.DataFrame.dropna": {"tf": 1}}, "df": 1}}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.DropPartition": {"tf": 1}, "sqlglot.generator.Generator.droppartition_sql": {"tf": 1}}, "df": 2}}}}}}}}}}}, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.dialects.dialect.Dialects.DRILL": {"tf": 1}, "sqlglot.dialects.drill.Drill": {"tf": 1}, "sqlglot.dialects.drill.Drill.Tokenizer": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator.normalize_func": {"tf": 1}}, "df": 6}}}}, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot.dataframe.sql.Column.desc": {"tf": 1}, "sqlglot.dataframe.sql.Column.desc_nulls_first": {"tf": 1}, "sqlglot.dataframe.sql.Column.desc_nulls_last": {"tf": 1}, "sqlglot.tokens.TokenType.DESC": {"tf": 1}}, "df": 4, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.snowflake.Snowflake.Generator.describe_sql": {"tf": 1}, "sqlglot.expressions.Describe": {"tf": 1}, "sqlglot.generator.Generator.describe_sql": {"tf": 1}, "sqlglot.tokens.TokenType.DESCRIBE": {"tf": 1}}, "df": 4}}}}}}, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.dialects.dialect.parse_date_delta": {"tf": 1}, "sqlglot.dialects.dialect.parse_date_delta_with_interval": {"tf": 1}, "sqlglot.dialects.tsql.generate_date_delta_with_unit_sql": {"tf": 1}}, "df": 3}}, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Delete": {"tf": 1}, "sqlglot.expressions.Delete.delete": {"tf": 1.4142135623730951}, "sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Delete.returning": {"tf": 1}, "sqlglot.expressions.delete": {"tf": 1}, "sqlglot.generator.Generator.delete_sql": {"tf": 1}, "sqlglot.tokens.TokenType.DELETE": {"tf": 1}}, "df": 7}}}}, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.expressions.Expression.depth": {"tf": 1}, "sqlglot.helper.dict_depth": {"tf": 1}}, "df": 2}}, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.planner.Step.add_dependency": {"tf": 1}}, "df": 1}}}}}}}}, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.optimizer.merge_subqueries.merge_derived_tables": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.DERIVED_TABLE": {"tf": 1}, "sqlglot.optimizer.scope.Scope.derived_tables": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_derived_table": {"tf": 1}}, "df": 4, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.DerivedTable": {"tf": 1}}, "df": 1}}}}}}}}}}, "f": {"docs": {"sqlglot.tokens.TokenType.COLUMN_DEF": {"tf": 1}}, "df": 1, "a": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.Func.default_parser_mappings": {"tf": 1}, "sqlglot.optimizer.pushdown_projections.DEFAULT_SELECTION": {"tf": 1}, "sqlglot.tokens.TokenType.BY_DEFAULT": {"tf": 1}, "sqlglot.tokens.TokenType.DEFAULT": {"tf": 1}}, "df": 4, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.DefaultColumnConstraint": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.DefinerProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}}}, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.expressions.DataType.Type.DECIMAL": {"tf": 1}, "sqlglot.tokens.TokenType.DECIMAL": {"tf": 1}}, "df": 2}}}}, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Decode": {"tf": 1}}, "df": 1}}, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.unnest_subqueries.decorrelate": {"tf": 1}}, "df": 1}}}}}}}}}}, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "b": {"docs": {"sqlglot.dialects.dialect.Dialects.DUCKDB": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Tokenizer": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator.tablesample_sql": {"tf": 1}}, "df": 6}}}}, "m": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.expressions.Expression.dump": {"tf": 1}, "sqlglot.serde.dump": {"tf": 1}}, "df": 2}}}, "s": {"docs": {"sqlglot.dialects.dialect.ts_or_ds_to_date_sql": {"tf": 1}}, "df": 1}, "f": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.Expression.dfs": {"tf": 1}}, "df": 1}}, "o": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.Column.to_dot": {"tf": 1}, "sqlglot.expressions.Dot": {"tf": 1}, "sqlglot.expressions.Dot.build": {"tf": 1}, "sqlglot.generator.Generator.dot_sql": {"tf": 1}, "sqlglot.tokens.TokenType.DOT": {"tf": 1}}, "df": 5}, "u": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.DataType.Type.DOUBLE": {"tf": 1}, "sqlglot.tokens.TokenType.DOUBLE": {"tf": 1}}, "df": 2}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.tokens.TokenType.DOLLAR": {"tf": 1}}, "df": 1}}}}}, "p": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.DPipe": {"tf": 1}, "sqlglot.generator.Generator.dpipe_sql": {"tf": 1}, "sqlglot.tokens.TokenType.DPIPE": {"tf": 1}}, "df": 3}}}}, "n": {"docs": {}, "df": 0, "f": {"docs": {"sqlglot.optimizer.pushdown_predicates.pushdown_dnf": {"tf": 1}}, "df": 1}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.tokens.TokenType.DCOLON": {"tf": 1}}, "df": 1}}}}}, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.tokens.TokenType.DHASH_ARROW": {"tf": 1}}, "df": 1}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator.in_unnest_op": {"tf": 1}, "sqlglot.expressions.In": {"tf": 1}, "sqlglot.generator.Generator.in_sql": {"tf": 1}, "sqlglot.generator.Generator.in_unnest_op": {"tf": 1}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1}, "sqlglot.tokens.TokenType.IN": {"tf": 1}, "sqlglot.trie.in_trie": {"tf": 1}}, "df": 7, "i": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe.sql.DataFrame.__init__": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.__init__": {"tf": 1}, "sqlglot.dataframe.sql.Column.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.__init__": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameReader.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.__init__": {"tf": 1}, "sqlglot.diff.Insert.__init__": {"tf": 1}, "sqlglot.diff.Remove.__init__": {"tf": 1}, "sqlglot.diff.Move.__init__": {"tf": 1}, "sqlglot.diff.Update.__init__": {"tf": 1}, "sqlglot.diff.Keep.__init__": {"tf": 1}, "sqlglot.diff.ChangeDistiller.__init__": {"tf": 1}, "sqlglot.errors.ParseError.__init__": {"tf": 1}, "sqlglot.executor.context.Context.__init__": {"tf": 1}, "sqlglot.executor.env.reverse_key.__init__": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.__init__": {"tf": 1}, "sqlglot.executor.table.Table.__init__": {"tf": 1}, "sqlglot.executor.table.TableIter.__init__": {"tf": 1}, "sqlglot.executor.table.RangeReader.__init__": {"tf": 1}, "sqlglot.executor.table.RowReader.__init__": {"tf": 1}, "sqlglot.expressions.Expression.__init__": {"tf": 1}, "sqlglot.expressions.TimeUnit.__init__": {"tf": 1}, "sqlglot.generator.Generator.__init__": {"tf": 1}, "sqlglot.lineage.Node.__init__": {"tf": 1}, "sqlglot.lineage.LineageHTML.__init__": {"tf": 1}, "sqlglot.optimizer.annotate_types.TypeAnnotator.__init__": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.__init__": {"tf": 1}, "sqlglot.optimizer.scope.Scope.__init__": {"tf": 1}, "sqlglot.parser.Parser.__init__": {"tf": 1}, "sqlglot.planner.Plan.__init__": {"tf": 1}, "sqlglot.planner.SetOperation.__init__": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema.__init__": {"tf": 1}, "sqlglot.schema.MappingSchema.__init__": {"tf": 1}, "sqlglot.tokens.Token.__init__": {"tf": 1}}, "df": 35, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.expressions.Initcap": {"tf": 1}}, "df": 1}}}}}, "t": {"docs": {"sqlglot.expressions.Expression.is_int": {"tf": 1}, "sqlglot.expressions.DataType.Type.INT": {"tf": 1}, "sqlglot.tokens.TokenType.INT": {"tf": 1}}, "df": 3, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe.sql.DataFrame.intersect": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.intersect_op": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.intersect_op": {"tf": 1}, "sqlglot.expressions.Unionable.intersect": {"tf": 1}, "sqlglot.expressions.Intersect": {"tf": 1}, "sqlglot.expressions.intersect": {"tf": 1}, "sqlglot.generator.Generator.intersect_sql": {"tf": 1}, "sqlglot.generator.Generator.intersect_op": {"tf": 1}, "sqlglot.tokens.TokenType.INTERSECT": {"tf": 1}}, "df": 9, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.dataframe.sql.DataFrame.intersectAll": {"tf": 1}}, "df": 1}}}}}}}, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.dialects.dialect.parse_date_delta_with_interval": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator.interval_sql": {"tf": 1}, "sqlglot.executor.env.interval": {"tf": 1}, "sqlglot.expressions.DataType.Type.INTERVAL": {"tf": 1}, "sqlglot.expressions.Interval": {"tf": 1}, "sqlglot.expressions.to_interval": {"tf": 1}, "sqlglot.generator.Generator.interval_sql": {"tf": 1}, "sqlglot.optimizer.simplify.extract_interval": {"tf": 1}, "sqlglot.tokens.TokenType.INTERVAL": {"tf": 1}}, "df": 9}}}}}, "o": {"docs": {"sqlglot.dialects.dialect.Dialect.parse_into": {"tf": 1}, "sqlglot.expressions.Into": {"tf": 1}, "sqlglot.generator.Generator.into_sql": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 1}, "sqlglot.tokens.TokenType.INTO": {"tf": 1}}, "df": 5}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.Introducer": {"tf": 1}, "sqlglot.generator.Generator.introducer_sql": {"tf": 1}, "sqlglot.tokens.TokenType.INTRODUCER": {"tf": 1}}, "df": 3}}}}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {"sqlglot.expressions.IntDiv": {"tf": 1}, "sqlglot.generator.Generator.intdiv_sql": {"tf": 1}}, "df": 2}}}}, "v": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.Column.invoke_anonymous_function": {"tf": 1}, "sqlglot.dataframe.sql.Column.invoke_expression_over_column": {"tf": 1}}, "df": 2}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.Column.inverse_binary_op": {"tf": 1}}, "df": 1}}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.diff.Insert": {"tf": 1}, "sqlglot.diff.Insert.__init__": {"tf": 1}, "sqlglot.expressions.Insert": {"tf": 1}, "sqlglot.generator.Generator.insert_sql": {"tf": 1}, "sqlglot.tokens.TokenType.INSERT": {"tf": 1}}, "df": 5, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {"sqlglot.dataframe.sql.DataFrameWriter.insertInto": {"tf": 1}}, "df": 1}}}}}}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.inline_array_sql": {"tf": 1}}, "df": 1, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.InlineLengthColumnConstraint": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}}}}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "x": {"docs": {"sqlglot.executor.context.Context.set_index": {"tf": 1}, "sqlglot.expressions.Index": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_INDEX": {"tf": 1}, "sqlglot.generator.Generator.index_sql": {"tf": 1}, "sqlglot.helper.apply_index_offset": {"tf": 1}, "sqlglot.tokens.TokenType.INDEX": {"tf": 1}}, "df": 6}, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.generator.Generator.indent": {"tf": 1}}, "df": 1}}}}, "p": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.InputOutputFormat": {"tf": 1}, "sqlglot.generator.Generator.inputoutputformat_sql": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.DataType.Type.INET": {"tf": 1}, "sqlglot.tokens.TokenType.INET": {"tf": 1}}, "df": 2}}, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.AUTO_INCREMENT": {"tf": 1}}, "df": 1}}}}}}}, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.tokens.TokenType.INNER": {"tf": 1}}, "df": 1}}}}, "s": {"docs": {"sqlglot.expressions.Expression.is_string": {"tf": 1}, "sqlglot.expressions.Expression.is_number": {"tf": 1}, "sqlglot.expressions.Expression.is_int": {"tf": 1}, "sqlglot.expressions.Expression.is_star": {"tf": 1}, "sqlglot.expressions.Expression.assert_is": {"tf": 1}, "sqlglot.expressions.Union.is_star": {"tf": 1}, "sqlglot.expressions.Select.is_star": {"tf": 1}, "sqlglot.expressions.Subquery.is_star": {"tf": 1}, "sqlglot.expressions.DataType.is_type": {"tf": 1}, "sqlglot.expressions.Is": {"tf": 1}, "sqlglot.expressions.Cast.is_type": {"tf": 1}, "sqlglot.generator.Generator.is_sql": {"tf": 1}, "sqlglot.helper.is_iterable": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_subquery": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_derived_table": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_union": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_cte": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_root": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_udtf": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_correlated_subquery": {"tf": 1}, "sqlglot.optimizer.simplify.is_complement": {"tf": 1}, "sqlglot.optimizer.simplify.is_false": {"tf": 1}, "sqlglot.optimizer.simplify.is_null": {"tf": 1}, "sqlglot.tokens.TokenType.IS": {"tf": 1}}, "df": 24, "n": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.dataframe.sql.Column.isNull": {"tf": 1}, "sqlglot.tokens.TokenType.ISNULL": {"tf": 1}}, "df": 2}}}, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.dataframe.sql.Column.isNotNull": {"tf": 1}}, "df": 1}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dataframe.sql.Column.isin": {"tf": 1}}, "df": 1}}, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.isolate_table_selects.isolate_table_selects": {"tf": 1}}, "df": 1, "d": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.IsolatedLoadingProperty": {"tf": 1}, "sqlglot.generator.Generator.isolatedloadingproperty_sql": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}}}}}}}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.Column.ilike": {"tf": 1}, "sqlglot.dialects.dialect.no_ilike_sql": {"tf": 1}, "sqlglot.expressions.ILike": {"tf": 1}, "sqlglot.generator.Generator.ilike_sql": {"tf": 1}, "sqlglot.tokens.TokenType.ILIKE": {"tf": 1}, "sqlglot.tokens.TokenType.ILIKE_ANY": {"tf": 1}}, "df": 6, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.ILikeAny": {"tf": 1}, "sqlglot.generator.Generator.ilikeany_sql": {"tf": 1}}, "df": 2}}}}}}}, "f": {"docs": {"sqlglot.dialects.dialect.if_sql": {"tf": 1}, "sqlglot.dialects.dialect.count_if_to_sum": {"tf": 1}, "sqlglot.executor.env.null_if_any": {"tf": 1}, "sqlglot.expressions.If": {"tf": 1}, "sqlglot.generator.Generator.if_sql": {"tf": 1}, "sqlglot.tokens.TokenType.IF": {"tf": 1}}, "df": 6, "n": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.expressions.IfNull": {"tf": 1}}, "df": 1}}}}}, "g": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.errors.ErrorLevel.IGNORE": {"tf": 1}, "sqlglot.tokens.TokenType.IGNORE_NULLS": {"tf": 1}}, "df": 2, "n": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.IgnoreNulls": {"tf": 1}, "sqlglot.generator.Generator.ignorenulls_sql": {"tf": 1}}, "df": 2}}}}}}}}}}, "m": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.errors.ErrorLevel.IMMEDIATE": {"tf": 1}}, "df": 1}}}}}}}, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.DataType.Type.IMAGE": {"tf": 1}, "sqlglot.tokens.TokenType.IMAGE": {"tf": 1}}, "df": 2}}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.executor.context.Context.table_iter": {"tf": 1}, "sqlglot.expressions.Expression.iter_expressions": {"tf": 1}}, "df": 2, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.helper.is_iterable": {"tf": 1}}, "df": 1}}}}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.Identifier": {"tf": 1}, "sqlglot.expressions.Identifier.output_name": {"tf": 1}, "sqlglot.expressions.to_identifier": {"tf": 1}, "sqlglot.generator.Generator.identifier_sql": {"tf": 1}, "sqlglot.tokens.TokenType.IDENTIFIER": {"tf": 1}, "sqlglot.tokens.Token.identifier": {"tf": 1}}, "df": 6}}}, "y": {"docs": {"sqlglot.generator.Generator.no_identify": {"tf": 1}, "sqlglot.helper.should_identify": {"tf": 1}}, "df": 2}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.optimizer.lower_identities.lower_identities": {"tf": 1}}, "df": 1}}}}}}}}}, "r": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.IRLIKE": {"tf": 1}}, "df": 1}}}}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dataframe.sql.DataFrame.alias": {"tf": 1}, "sqlglot.dataframe.sql.Column.alias": {"tf": 1}, "sqlglot.expressions.Expression.alias": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_ALIAS": {"tf": 1}, "sqlglot.expressions.Alias": {"tf": 1}, "sqlglot.expressions.Alias.output_name": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1}, "sqlglot.generator.Generator.alias_sql": {"tf": 1}, "sqlglot.tokens.TokenType.ALIAS": {"tf": 1}}, "df": 9, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.Aliases": {"tf": 1}, "sqlglot.generator.Generator.aliases_sql": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.replace_aliases": {"tf": 1}}, "df": 3}}}}}, "l": {"docs": {"sqlglot.expressions.Expression.find_all": {"tf": 1}, "sqlglot.expressions.All": {"tf": 1}, "sqlglot.generator.Generator.all_sql": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.all_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1}, "sqlglot.tokens.TokenType.ALL": {"tf": 1}}, "df": 6}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.tokens.TokenType.ALTER": {"tf": 1}}, "df": 1, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.AlterColumn": {"tf": 1}, "sqlglot.generator.Generator.altercolumn_sql": {"tf": 1}}, "df": 2}}}}}}, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.AlterTable": {"tf": 1}, "sqlglot.generator.Generator.altertable_sql": {"tf": 1}}, "df": 2}}}}}}}}, "g": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.AlgorithmProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}, "w": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.optimizer.simplify.always_true": {"tf": 1}, "sqlglot.tokens.TokenType.ALWAYS": {"tf": 1}}, "df": 2}}}}}, "g": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.dataframe.sql.DataFrame.agg": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.agg": {"tf": 1}}, "df": 2, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.executor.python.PythonExecutor.aggregate": {"tf": 1}, "sqlglot.planner.Aggregate": {"tf": 1}}, "df": 2}}}}}}, "f": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot.expressions.AggFunc": {"tf": 1}}, "df": 1}}}}}}, "v": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.dataframe.sql.GroupedData.avg": {"tf": 1}, "sqlglot.expressions.Avg": {"tf": 1}}, "df": 2}}, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dataframe.sql.Column.invoke_anonymous_function": {"tf": 1}, "sqlglot.expressions.Anonymous": {"tf": 1}, "sqlglot.generator.Generator.anonymous_sql": {"tf": 1}}, "df": 3}}}}}}}, "y": {"docs": {"sqlglot.executor.env.null_if_any": {"tf": 1}, "sqlglot.expressions.Any": {"tf": 1}, "sqlglot.generator.Generator.any_sql": {"tf": 1}, "sqlglot.tokens.TokenType.ANY": {"tf": 1}, "sqlglot.tokens.TokenType.ILIKE_ANY": {"tf": 1}, "sqlglot.tokens.TokenType.LIKE_ANY": {"tf": 1}}, "df": 6, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.AnyValue": {"tf": 1}}, "df": 1}}}}}}, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.Expression.find_ancestor": {"tf": 1}}, "df": 1}}}}}}, "d": {"docs": {"sqlglot.expressions.Condition.and_": {"tf": 1}, "sqlglot.expressions.And": {"tf": 1}, "sqlglot.expressions.and_": {"tf": 1}, "sqlglot.generator.Generator.and_sql": {"tf": 1}, "sqlglot.optimizer.simplify.absorb_and_eliminate": {"tf": 1}, "sqlglot.tokens.TokenType.AND": {"tf": 1}}, "df": 6}, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}, "sqlglot.optimizer.annotate_types.TypeAnnotator.annotate": {"tf": 1}}, "df": 2}}}}}}, "t": {"docs": {}, "df": 0, "i": {"docs": {"sqlglot.tokens.TokenType.ANTI": {"tf": 1}}, "df": 1}}}, "s": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot.dataframe.sql.Column.asc": {"tf": 1}, "sqlglot.dataframe.sql.Column.asc_nulls_first": {"tf": 1}, "sqlglot.dataframe.sql.Column.asc_nulls_last": {"tf": 1}, "sqlglot.tokens.TokenType.ASC": {"tf": 1}}, "df": 4}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.Expression.assert_is": {"tf": 1}}, "df": 1}}}}, "o": {"docs": {}, "df": 0, "f": {"docs": {"sqlglot.tokens.TokenType.ASOF": {"tf": 1}}, "df": 1}}}, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator.array_sql": {"tf": 1}, "sqlglot.dialects.dialect.inline_array_sql": {"tf": 1}, "sqlglot.expressions.DataType.Type.ARRAY": {"tf": 1}, "sqlglot.expressions.Array": {"tf": 1}, "sqlglot.tokens.TokenType.ARRAY": {"tf": 1}}, "df": 5, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.dialects.hive.Hive.Generator.arrayagg_sql": {"tf": 1}, "sqlglot.expressions.ArrayAgg": {"tf": 1}}, "df": 2}}, "l": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.expressions.ArrayAll": {"tf": 1}}, "df": 1}}, "n": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.ArrayAny": {"tf": 1}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.ArrayOverlaps": {"tf": 1}}, "df": 1}}}}}}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.ArrayConcat": {"tf": 1}}, "df": 1}}}, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.ArrayContains": {"tf": 1}}, "df": 1}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.ArrayContained": {"tf": 1}}, "df": 1}}}}}}}}}, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.ArrayFilter": {"tf": 1}}, "df": 1}}}}}}, "j": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.ArrayJoin": {"tf": 1}}, "df": 1}}}}, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.ArraySize": {"tf": 1}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.ArraySort": {"tf": 1}}, "df": 1}}}, "u": {"docs": {}, "df": 0, "m": {"docs": {"sqlglot.expressions.ArraySum": {"tf": 1}}, "df": 1}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.expressions.ArrayUnionAgg": {"tf": 1}}, "df": 1}}}}}}}}}}, "o": {"docs": {}, "df": 0, "w": {"docs": {"sqlglot.dialects.dialect.arrow_json_extract_sql": {"tf": 1}, "sqlglot.dialects.dialect.arrow_json_extract_scalar_sql": {"tf": 1}, "sqlglot.tokens.TokenType.ARROW": {"tf": 1}, "sqlglot.tokens.TokenType.HASH_ARROW": {"tf": 1}, "sqlglot.tokens.TokenType.DHASH_ARROW": {"tf": 1}, "sqlglot.tokens.TokenType.LR_ARROW": {"tf": 1}}, "df": 6}}}, "g": {"docs": {"sqlglot.expressions.Func.from_arg_list": {"tf": 1}}, "df": 1, "s": {"docs": {"sqlglot.generator.Generator.format_args": {"tf": 1}, "sqlglot.schema.Schema.supported_table_args": {"tf": 1}}, "df": 2}}}, "p": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "x": {"docs": {"sqlglot.dialects.dialect.approx_count_distinct_sql": {"tf": 1}}, "df": 1, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.ApproxDistinct": {"tf": 1}}, "df": 1}}}}}}}}, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.ApproxQuantile": {"tf": 1}}, "df": 1}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.executor.table.Table.append": {"tf": 1}, "sqlglot.expressions.Expression.append": {"tf": 1}}, "df": 2}}}, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.helper.apply_index_offset": {"tf": 1}, "sqlglot.tokens.TokenType.APPLY": {"tf": 1}}, "df": 2}}}}, "d": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.executor.context.Context.add_columns": {"tf": 1}, "sqlglot.executor.table.Table.add_columns": {"tf": 1}, "sqlglot.expressions.Add": {"tf": 1}, "sqlglot.generator.Generator.add_sql": {"tf": 1}, "sqlglot.optimizer.canonicalize.add_text_to_concat": {"tf": 1}, "sqlglot.optimizer.scope.Scope.add_source": {"tf": 1}, "sqlglot.planner.Step.add_dependency": {"tf": 1}, "sqlglot.schema.Schema.add_table": {"tf": 1}, "sqlglot.schema.MappingSchema.add_table": {"tf": 1}}, "df": 9, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.AddConstraint": {"tf": 1}, "sqlglot.generator.Generator.addconstraint_sql": {"tf": 1}}, "df": 2}}}}}}}}}}}}, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {"sqlglot.tokens.TokenType.AUTO_INCREMENT": {"tf": 1}}, "df": 1, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.AutoIncrementColumnConstraint": {"tf": 1}, "sqlglot.generator.Generator.autoincrementcolumnconstraint_sql": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}}}, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.AutoIncrementProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.helper.AutoName": {"tf": 1}}, "df": 1}}}}}}}, "f": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "j": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.AfterJournalProperty": {"tf": 1}, "sqlglot.generator.Generator.afterjournalproperty_sql": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}}}}}}, "t": {"docs": {"sqlglot.tokens.TokenType.LT_AT": {"tf": 1}, "sqlglot.tokens.TokenType.AT_GT": {"tf": 1}, "sqlglot.tokens.TokenType.AT_TIME_ZONE": {"tf": 1}}, "df": 3, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.AtTimeZone": {"tf": 1}, "sqlglot.generator.Generator.attimezone_sql": {"tf": 1}}, "df": 2}}}}}}}}}, "b": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.Abs": {"tf": 1}}, "df": 1, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "b": {"docs": {"sqlglot.optimizer.simplify.absorb_and_eliminate": {"tf": 1}}, "df": 1}}}, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.schema.AbstractMappingSchema": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema.__init__": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema.table_parts": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema.find": {"tf": 1}}, "df": 4}}}}}}}}}}}}}}}}}}}}, "m": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.tokens.TokenType.AMP": {"tf": 1}}, "df": 1}}, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.tokens.TokenType.NO_ACTION": {"tf": 1}}, "df": 1}}}}}}, "w": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.DataFrame.where": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Select.where": {"tf": 1}, "sqlglot.expressions.Where": {"tf": 1}, "sqlglot.generator.Generator.where_sql": {"tf": 1}, "sqlglot.optimizer.simplify.remove_where_true": {"tf": 1}, "sqlglot.tokens.TokenType.WHERE": {"tf": 1}}, "df": 7}}, "n": {"docs": {"sqlglot.dataframe.sql.Column.when": {"tf": 1}, "sqlglot.expressions.When": {"tf": 1}, "sqlglot.generator.Generator.when_sql": {"tf": 1}, "sqlglot.tokens.TokenType.WHEN": {"tf": 1}}, "df": 4}}, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.helper.while_changing": {"tf": 1}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1}, "sqlglot.dialects.dialect.parse_date_delta_with_interval": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator.with_properties": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.with_properties": {"tf": 1}, "sqlglot.dialects.tsql.generate_date_delta_with_unit_sql": {"tf": 1}, "sqlglot.expressions.With": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_WITH": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1}, "sqlglot.generator.Generator.with_sql": {"tf": 1}, "sqlglot.generator.Generator.with_properties": {"tf": 1}, "sqlglot.tokens.TokenType.WITH": {"tf": 1}, "sqlglot.tokens.TokenType.WITH_TIME_ZONE": {"tf": 1}, "sqlglot.tokens.TokenType.WITH_LOCAL_TIME_ZONE": {"tf": 1}}, "df": 13, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dataframe.sql.DataFrame.withColumn": {"tf": 1}}, "df": 1, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.dataframe.sql.DataFrame.withColumnRenamed": {"tf": 1}}, "df": 1}}}}}}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.tokens.TokenType.WITHIN_GROUP": {"tf": 1}}, "df": 1, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.expressions.WithinGroup": {"tf": 1}, "sqlglot.generator.Generator.withingroup_sql": {"tf": 1}}, "df": 2}}}}}}}, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.WithDataProperty": {"tf": 1}, "sqlglot.generator.Generator.withdataproperty_sql": {"tf": 1}}, "df": 2}}}}}}}}}}}}, "j": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.WithJournalTableProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.WITHOUT_TIME_ZONE": {"tf": 1}}, "df": 1}}}}}, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {"sqlglot.dataframe.sql.Window": {"tf": 1}, "sqlglot.dataframe.sql.Window.partitionBy": {"tf": 1}, "sqlglot.dataframe.sql.Window.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.Window.rowsBetween": {"tf": 1}, "sqlglot.dataframe.sql.Window.rangeBetween": {"tf": 1}, "sqlglot.expressions.Select.window": {"tf": 1}, "sqlglot.expressions.Window": {"tf": 1}, "sqlglot.generator.Generator.window_sql": {"tf": 1}, "sqlglot.generator.Generator.window_spec_sql": {"tf": 1}, "sqlglot.tokens.TokenType.WINDOW": {"tf": 1}}, "df": 10, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot.dataframe.sql.WindowSpec": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.__init__": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.copy": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.sql": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.partitionBy": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.rowsBetween": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.rangeBetween": {"tf": 1}, "sqlglot.expressions.WindowSpec": {"tf": 1}}, "df": 9}}}}}}}}, "d": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.generator.Generator.text_width": {"tf": 1}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.errors.ErrorLevel.WARN": {"tf": 1}}, "df": 1}}, "l": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.expressions.Expression.walk": {"tf": 1}, "sqlglot.lineage.Node.walk": {"tf": 1}, "sqlglot.optimizer.scope.Scope.walk": {"tf": 1}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1}}, "df": 4}}}, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.expressions.Week": {"tf": 1}}, "df": 1, "o": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.WeekOfYear": {"tf": 1}}, "df": 1}}}}}}}}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.generator.Generator.wrap": {"tf": 1}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.helper.split_num_words": {"tf": 1}}, "df": 1}}}}}, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dataframe.sql.DataFrame.filter": {"tf": 1}, "sqlglot.executor.context.Context.filter": {"tf": 1}, "sqlglot.executor.env.filter_nulls": {"tf": 1}, "sqlglot.expressions.Filter": {"tf": 1}, "sqlglot.generator.Generator.filter_sql": {"tf": 1}, "sqlglot.tokens.TokenType.FILTER": {"tf": 1}}, "df": 6}}}, "l": {"docs": {"sqlglot.dataframe.sql.DataFrameNaFunctions.fill": {"tf": 1}}, "df": 1, "n": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}}, "df": 1}}}, "e": {"docs": {"sqlglot.helper.open_file": {"tf": 1}}, "df": 1, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.FileFormatProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe.sql.Column.asc_nulls_first": {"tf": 1}, "sqlglot.dataframe.sql.Column.desc_nulls_first": {"tf": 1}, "sqlglot.helper.first": {"tf": 1}, "sqlglot.tokens.TokenType.FIRST": {"tf": 1}, "sqlglot.tokens.TokenType.NULLS_FIRST": {"tf": 1}}, "df": 5}}}, "n": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.Expression.find": {"tf": 1}, "sqlglot.expressions.Expression.find_all": {"tf": 1}, "sqlglot.expressions.Expression.find_ancestor": {"tf": 1}, "sqlglot.helper.find_new_name": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema.find": {"tf": 1}}, "df": 7}, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.expressions.Final": {"tf": 1}, "sqlglot.tokens.TokenType.FINAL": {"tf": 1}}, "df": 2}}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot.dialects.dialect.rename_func": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator.normalize_func": {"tf": 1}, "sqlglot.expressions.Func": {"tf": 1}, "sqlglot.expressions.Func.from_arg_list": {"tf": 1}, "sqlglot.expressions.Func.sql_names": {"tf": 1}, "sqlglot.expressions.Func.sql_name": {"tf": 1}, "sqlglot.expressions.Func.default_parser_mappings": {"tf": 1}, "sqlglot.expressions.func": {"tf": 1}, "sqlglot.generator.Generator.normalize_func": {"tf": 1}, "sqlglot.generator.Generator.func": {"tf": 1}}, "df": 10, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dataframe.sql.Column.invoke_anonymous_function": {"tf": 1}, "sqlglot.generator.Generator.function_fallback_sql": {"tf": 1}, "sqlglot.tokens.TokenType.FUNCTION": {"tf": 1}}, "df": 3}}}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.tokens.TokenType.FULL": {"tf": 1}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.optimizer.pushdown_predicates.nodes_for_predicate": {"tf": 1}, "sqlglot.tokens.TokenType.FOR": {"tf": 1}}, "df": 2, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.dialect.Dialect.format_time": {"tf": 1}, "sqlglot.dialects.dialect.format_time_lambda": {"tf": 1}, "sqlglot.generator.Generator.format_args": {"tf": 1}, "sqlglot.generator.Generator.format_time": {"tf": 1}, "sqlglot.time.format_time": {"tf": 1}, "sqlglot.tokens.TokenType.FORMAT": {"tf": 1}}, "df": 6}}}, "e": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.tokens.TokenType.FOREIGN_KEY": {"tf": 1}}, "df": 1, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.ForeignKey": {"tf": 1}, "sqlglot.generator.Generator.foreignkey_sql": {"tf": 1}}, "df": 2}}}}}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.tokens.TokenType.FOLLOWING": {"tf": 1}}, "df": 1}}}}}}}}, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.Expression.flatten": {"tf": 1}, "sqlglot.helper.flatten": {"tf": 1}, "sqlglot.optimizer.simplify.flatten": {"tf": 1}, "sqlglot.schema.flatten_schema": {"tf": 1}}, "df": 4}}}}}, "o": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.DataType.Type.FLOAT": {"tf": 1}, "sqlglot.tokens.TokenType.FLOAT": {"tf": 1}}, "df": 2}}, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.Floor": {"tf": 1}}, "df": 1}}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {"sqlglot.expressions.From": {"tf": 1}, "sqlglot.expressions.Properties.from_dict": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.Func.from_arg_list": {"tf": 1}, "sqlglot.expressions.from_": {"tf": 1}, "sqlglot.generator.Generator.from_sql": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.Join.from_joins": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}, "sqlglot.schema.MappingSchema.from_mapping_schema": {"tf": 1}, "sqlglot.tokens.TokenType.DISTINCT_FROM": {"tf": 1}, "sqlglot.tokens.TokenType.FROM": {"tf": 1}, "sqlglot.transforms.remove_target_from_merge": {"tf": 1}}, "df": 14}}, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.FreespaceProperty": {"tf": 1}, "sqlglot.generator.Generator.freespaceproperty_sql": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.expressions.Fetch": {"tf": 1}, "sqlglot.generator.Generator.fetch_sql": {"tf": 1}, "sqlglot.tokens.TokenType.FETCH": {"tf": 1}}, "df": 3}}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.generator.Generator.function_fallback_sql": {"tf": 1}}, "df": 1, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.FallbackProperty": {"tf": 1}, "sqlglot.generator.Generator.fallbackproperty_sql": {"tf": 1}}, "df": 2}}}}}}}}}}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.false": {"tf": 1}, "sqlglot.optimizer.simplify.is_false": {"tf": 1}, "sqlglot.tokens.TokenType.FALSE": {"tf": 1}}, "df": 3}}}, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {"sqlglot.tokens.TokenType.FARROW": {"tf": 1}}, "df": 1}}}}}}, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.expressions.Group": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.generator.Generator.group_sql": {"tf": 1}, "sqlglot.tokens.TokenType.GROUP_BY": {"tf": 1}, "sqlglot.tokens.TokenType.WITHIN_GROUP": {"tf": 1}, "sqlglot.transforms.unalias_group": {"tf": 1}}, "df": 6, "b": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dataframe.sql.DataFrame.groupBy": {"tf": 1}}, "df": 1}}, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.dataframe.sql.GroupedData": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.__init__": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.agg": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.count": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.mean": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.avg": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.max": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.min": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.sum": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.pivot": {"tf": 1}}, "df": 10}}}}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.sqlite.SQLite.Generator.groupconcat_sql": {"tf": 1}, "sqlglot.expressions.GroupConcat": {"tf": 1}}, "df": 2}}}}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.GroupUniqArray": {"tf": 1}}, "df": 1}}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.tokens.TokenType.GROUPING_SETS": {"tf": 1}}, "df": 1}}}}}}, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.dialect.max_or_greatest": {"tf": 1}, "sqlglot.expressions.Greatest": {"tf": 1}}, "df": 2}}}}}}}, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.array_sql": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.transaction_sql": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.commit_sql": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.rollback_sql": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.in_unnest_op": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.except_op": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.intersect_op": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator.cte_sql": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator.normalize_func": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator.tablesample_sql": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator.arrayagg_sql": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator.with_properties": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator.show_sql": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator.offset_sql": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator.column_sql": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator.xmltable_sql": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator.interval_sql": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator.transaction_sql": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.with_properties": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.renametable_sql": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.except_op": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.intersect_op": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.settag_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.describe_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.generatedasidentitycolumnconstraint_sql": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator.cast_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.cast_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.datediff_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.groupconcat_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.least_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.transaction_sql": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.partitionedbyproperty_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.update_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.mod_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.rangen_sql": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator.offset_sql": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator.systemtime_sql": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator.returnsproperty_sql": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.generator.Generator.__init__": {"tf": 1}, "sqlglot.generator.Generator.generate": {"tf": 1}, "sqlglot.generator.Generator.unsupported": {"tf": 1}, "sqlglot.generator.Generator.sep": {"tf": 1}, "sqlglot.generator.Generator.seg": {"tf": 1}, "sqlglot.generator.Generator.pad_comment": {"tf": 1}, "sqlglot.generator.Generator.maybe_comment": {"tf": 1}, "sqlglot.generator.Generator.wrap": {"tf": 1}, "sqlglot.generator.Generator.no_identify": {"tf": 1}, "sqlglot.generator.Generator.normalize_func": {"tf": 1}, "sqlglot.generator.Generator.indent": {"tf": 1}, "sqlglot.generator.Generator.sql": {"tf": 1}, "sqlglot.generator.Generator.uncache_sql": {"tf": 1}, "sqlglot.generator.Generator.cache_sql": {"tf": 1}, "sqlglot.generator.Generator.characterset_sql": {"tf": 1}, "sqlglot.generator.Generator.column_sql": {"tf": 1}, "sqlglot.generator.Generator.columnposition_sql": {"tf": 1}, "sqlglot.generator.Generator.columndef_sql": {"tf": 1}, "sqlglot.generator.Generator.columnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.autoincrementcolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.compresscolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.generatedasidentitycolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.notnullcolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.primarykeycolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.uniquecolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.create_sql": {"tf": 1}, "sqlglot.generator.Generator.describe_sql": {"tf": 1}, "sqlglot.generator.Generator.prepend_ctes": {"tf": 1}, "sqlglot.generator.Generator.with_sql": {"tf": 1}, "sqlglot.generator.Generator.cte_sql": {"tf": 1}, "sqlglot.generator.Generator.tablealias_sql": {"tf": 1}, "sqlglot.generator.Generator.bitstring_sql": {"tf": 1}, "sqlglot.generator.Generator.hexstring_sql": {"tf": 1}, "sqlglot.generator.Generator.bytestring_sql": {"tf": 1}, "sqlglot.generator.Generator.datatype_sql": {"tf": 1}, "sqlglot.generator.Generator.directory_sql": {"tf": 1}, "sqlglot.generator.Generator.delete_sql": {"tf": 1}, "sqlglot.generator.Generator.drop_sql": {"tf": 1}, "sqlglot.generator.Generator.except_sql": {"tf": 1}, "sqlglot.generator.Generator.except_op": {"tf": 1}, "sqlglot.generator.Generator.fetch_sql": {"tf": 1}, "sqlglot.generator.Generator.filter_sql": {"tf": 1}, "sqlglot.generator.Generator.hint_sql": {"tf": 1}, "sqlglot.generator.Generator.index_sql": {"tf": 1}, "sqlglot.generator.Generator.identifier_sql": {"tf": 1}, "sqlglot.generator.Generator.inputoutputformat_sql": {"tf": 1}, "sqlglot.generator.Generator.national_sql": {"tf": 1}, "sqlglot.generator.Generator.partition_sql": {"tf": 1}, "sqlglot.generator.Generator.properties_sql": {"tf": 1}, "sqlglot.generator.Generator.root_properties": {"tf": 1}, "sqlglot.generator.Generator.properties": {"tf": 1}, "sqlglot.generator.Generator.with_properties": {"tf": 1}, "sqlglot.generator.Generator.locate_properties": {"tf": 1}, "sqlglot.generator.Generator.property_sql": {"tf": 1}, "sqlglot.generator.Generator.likeproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.fallbackproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.journalproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.freespaceproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.afterjournalproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.checksumproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.mergeblockratioproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.datablocksizeproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.blockcompressionproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.isolatedloadingproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.lockingproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.withdataproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.insert_sql": {"tf": 1}, "sqlglot.generator.Generator.intersect_sql": {"tf": 1}, "sqlglot.generator.Generator.intersect_op": {"tf": 1}, "sqlglot.generator.Generator.introducer_sql": {"tf": 1}, "sqlglot.generator.Generator.pseudotype_sql": {"tf": 1}, "sqlglot.generator.Generator.onconflict_sql": {"tf": 1}, "sqlglot.generator.Generator.returning_sql": {"tf": 1}, "sqlglot.generator.Generator.rowformatdelimitedproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.table_sql": {"tf": 1}, "sqlglot.generator.Generator.tablesample_sql": {"tf": 1}, "sqlglot.generator.Generator.pivot_sql": {"tf": 1}, "sqlglot.generator.Generator.tuple_sql": {"tf": 1}, "sqlglot.generator.Generator.update_sql": {"tf": 1}, "sqlglot.generator.Generator.values_sql": {"tf": 1}, "sqlglot.generator.Generator.var_sql": {"tf": 1}, "sqlglot.generator.Generator.into_sql": {"tf": 1}, "sqlglot.generator.Generator.from_sql": {"tf": 1}, "sqlglot.generator.Generator.group_sql": {"tf": 1}, "sqlglot.generator.Generator.having_sql": {"tf": 1}, "sqlglot.generator.Generator.join_sql": {"tf": 1}, "sqlglot.generator.Generator.lambda_sql": {"tf": 1}, "sqlglot.generator.Generator.lateral_sql": {"tf": 1}, "sqlglot.generator.Generator.limit_sql": {"tf": 1}, "sqlglot.generator.Generator.offset_sql": {"tf": 1}, "sqlglot.generator.Generator.setitem_sql": {"tf": 1}, "sqlglot.generator.Generator.set_sql": {"tf": 1}, "sqlglot.generator.Generator.pragma_sql": {"tf": 1}, "sqlglot.generator.Generator.lock_sql": {"tf": 1}, "sqlglot.generator.Generator.literal_sql": {"tf": 1}, "sqlglot.generator.Generator.loaddata_sql": {"tf": 1}, "sqlglot.generator.Generator.null_sql": {"tf": 1}, "sqlglot.generator.Generator.boolean_sql": {"tf": 1}, "sqlglot.generator.Generator.order_sql": {"tf": 1}, "sqlglot.generator.Generator.cluster_sql": {"tf": 1}, "sqlglot.generator.Generator.distribute_sql": {"tf": 1}, "sqlglot.generator.Generator.sort_sql": {"tf": 1}, "sqlglot.generator.Generator.ordered_sql": {"tf": 1}, "sqlglot.generator.Generator.matchrecognize_sql": {"tf": 1}, "sqlglot.generator.Generator.query_modifiers": {"tf": 1}, "sqlglot.generator.Generator.select_sql": {"tf": 1}, "sqlglot.generator.Generator.schema_sql": {"tf": 1}, "sqlglot.generator.Generator.star_sql": {"tf": 1}, "sqlglot.generator.Generator.structkwarg_sql": {"tf": 1}, "sqlglot.generator.Generator.parameter_sql": {"tf": 1}, "sqlglot.generator.Generator.sessionparameter_sql": {"tf": 1}, "sqlglot.generator.Generator.placeholder_sql": {"tf": 1}, "sqlglot.generator.Generator.subquery_sql": {"tf": 1}, "sqlglot.generator.Generator.qualify_sql": {"tf": 1}, "sqlglot.generator.Generator.union_sql": {"tf": 1}, "sqlglot.generator.Generator.union_op": {"tf": 1}, "sqlglot.generator.Generator.unnest_sql": {"tf": 1}, "sqlglot.generator.Generator.where_sql": {"tf": 1}, "sqlglot.generator.Generator.window_sql": {"tf": 1}, "sqlglot.generator.Generator.partition_by_sql": {"tf": 1}, "sqlglot.generator.Generator.window_spec_sql": {"tf": 1}, "sqlglot.generator.Generator.withingroup_sql": {"tf": 1}, "sqlglot.generator.Generator.between_sql": {"tf": 1}, "sqlglot.generator.Generator.bracket_sql": {"tf": 1}, "sqlglot.generator.Generator.all_sql": {"tf": 1}, "sqlglot.generator.Generator.any_sql": {"tf": 1}, "sqlglot.generator.Generator.exists_sql": {"tf": 1}, "sqlglot.generator.Generator.case_sql": {"tf": 1}, "sqlglot.generator.Generator.constraint_sql": {"tf": 1}, "sqlglot.generator.Generator.extract_sql": {"tf": 1}, "sqlglot.generator.Generator.trim_sql": {"tf": 1}, "sqlglot.generator.Generator.concat_sql": {"tf": 1}, "sqlglot.generator.Generator.check_sql": {"tf": 1}, "sqlglot.generator.Generator.foreignkey_sql": {"tf": 1}, "sqlglot.generator.Generator.primarykey_sql": {"tf": 1}, "sqlglot.generator.Generator.unique_sql": {"tf": 1}, "sqlglot.generator.Generator.if_sql": {"tf": 1}, "sqlglot.generator.Generator.matchagainst_sql": {"tf": 1}, "sqlglot.generator.Generator.jsonkeyvalue_sql": {"tf": 1}, "sqlglot.generator.Generator.jsonobject_sql": {"tf": 1}, "sqlglot.generator.Generator.in_sql": {"tf": 1}, "sqlglot.generator.Generator.in_unnest_op": {"tf": 1}, "sqlglot.generator.Generator.interval_sql": {"tf": 1}, "sqlglot.generator.Generator.return_sql": {"tf": 1}, "sqlglot.generator.Generator.reference_sql": {"tf": 1}, "sqlglot.generator.Generator.anonymous_sql": {"tf": 1}, "sqlglot.generator.Generator.paren_sql": {"tf": 1}, "sqlglot.generator.Generator.neg_sql": {"tf": 1}, "sqlglot.generator.Generator.not_sql": {"tf": 1}, "sqlglot.generator.Generator.alias_sql": {"tf": 1}, "sqlglot.generator.Generator.aliases_sql": {"tf": 1}, "sqlglot.generator.Generator.attimezone_sql": {"tf": 1}, "sqlglot.generator.Generator.add_sql": {"tf": 1}, "sqlglot.generator.Generator.and_sql": {"tf": 1}, "sqlglot.generator.Generator.connector_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwiseand_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwiseleftshift_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwisenot_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwiseor_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwiserightshift_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwisexor_sql": {"tf": 1}, "sqlglot.generator.Generator.cast_sql": {"tf": 1}, "sqlglot.generator.Generator.currentdate_sql": {"tf": 1}, "sqlglot.generator.Generator.collate_sql": {"tf": 1}, "sqlglot.generator.Generator.command_sql": {"tf": 1}, "sqlglot.generator.Generator.comment_sql": {"tf": 1}, "sqlglot.generator.Generator.transaction_sql": {"tf": 1}, "sqlglot.generator.Generator.commit_sql": {"tf": 1}, "sqlglot.generator.Generator.rollback_sql": {"tf": 1}, "sqlglot.generator.Generator.altercolumn_sql": {"tf": 1}, "sqlglot.generator.Generator.renametable_sql": {"tf": 1}, "sqlglot.generator.Generator.altertable_sql": {"tf": 1}, "sqlglot.generator.Generator.droppartition_sql": {"tf": 1}, "sqlglot.generator.Generator.addconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.distinct_sql": {"tf": 1}, "sqlglot.generator.Generator.ignorenulls_sql": {"tf": 1}, "sqlglot.generator.Generator.respectnulls_sql": {"tf": 1}, "sqlglot.generator.Generator.intdiv_sql": {"tf": 1}, "sqlglot.generator.Generator.dpipe_sql": {"tf": 1}, "sqlglot.generator.Generator.div_sql": {"tf": 1}, "sqlglot.generator.Generator.overlaps_sql": {"tf": 1}, "sqlglot.generator.Generator.distance_sql": {"tf": 1}, "sqlglot.generator.Generator.dot_sql": {"tf": 1}, "sqlglot.generator.Generator.eq_sql": {"tf": 1}, "sqlglot.generator.Generator.escape_sql": {"tf": 1}, "sqlglot.generator.Generator.glob_sql": {"tf": 1}, "sqlglot.generator.Generator.gt_sql": {"tf": 1}, "sqlglot.generator.Generator.gte_sql": {"tf": 1}, "sqlglot.generator.Generator.ilike_sql": {"tf": 1}, "sqlglot.generator.Generator.ilikeany_sql": {"tf": 1}, "sqlglot.generator.Generator.is_sql": {"tf": 1}, "sqlglot.generator.Generator.like_sql": {"tf": 1}, "sqlglot.generator.Generator.likeany_sql": {"tf": 1}, "sqlglot.generator.Generator.similarto_sql": {"tf": 1}, "sqlglot.generator.Generator.lt_sql": {"tf": 1}, "sqlglot.generator.Generator.lte_sql": {"tf": 1}, "sqlglot.generator.Generator.mod_sql": {"tf": 1}, "sqlglot.generator.Generator.mul_sql": {"tf": 1}, "sqlglot.generator.Generator.neq_sql": {"tf": 1}, "sqlglot.generator.Generator.nullsafeeq_sql": {"tf": 1}, "sqlglot.generator.Generator.nullsafeneq_sql": {"tf": 1}, "sqlglot.generator.Generator.or_sql": {"tf": 1}, "sqlglot.generator.Generator.slice_sql": {"tf": 1}, "sqlglot.generator.Generator.sub_sql": {"tf": 1}, "sqlglot.generator.Generator.trycast_sql": {"tf": 1}, "sqlglot.generator.Generator.use_sql": {"tf": 1}, "sqlglot.generator.Generator.binary": {"tf": 1}, "sqlglot.generator.Generator.function_fallback_sql": {"tf": 1}, "sqlglot.generator.Generator.func": {"tf": 1}, "sqlglot.generator.Generator.format_args": {"tf": 1}, "sqlglot.generator.Generator.text_width": {"tf": 1}, "sqlglot.generator.Generator.format_time": {"tf": 1}, "sqlglot.generator.Generator.expressions": {"tf": 1}, "sqlglot.generator.Generator.op_expressions": {"tf": 1}, "sqlglot.generator.Generator.naked_property": {"tf": 1}, "sqlglot.generator.Generator.set_operation": {"tf": 1}, "sqlglot.generator.Generator.tag_sql": {"tf": 1}, "sqlglot.generator.Generator.token_sql": {"tf": 1}, "sqlglot.generator.Generator.userdefinedfunction_sql": {"tf": 1}, "sqlglot.generator.Generator.joinhint_sql": {"tf": 1}, "sqlglot.generator.Generator.kwarg_sql": {"tf": 1}, "sqlglot.generator.Generator.when_sql": {"tf": 1}, "sqlglot.generator.Generator.merge_sql": {"tf": 1}, "sqlglot.generator.Generator.tochar_sql": {"tf": 1}}, "df": 290}}, "e": {"docs": {"sqlglot.dialects.dialect.Dialect.generate": {"tf": 1}, "sqlglot.dialects.tsql.generate_date_delta_with_unit_sql": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.generate": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.generate_tuple": {"tf": 1}, "sqlglot.generator.Generator.generate": {"tf": 1}}, "df": 5, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.snowflake.Snowflake.Generator.generatedasidentitycolumnconstraint_sql": {"tf": 1}, "sqlglot.expressions.GeneratedAsIdentityColumnConstraint": {"tf": 1}, "sqlglot.generator.Generator.generatedasidentitycolumnconstraint_sql": {"tf": 1}}, "df": 3}}}}}}}}}}}}}}}}}}}}}}}}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.GenerateSeries": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "t": {"docs": {"sqlglot.dialects.dialect.Dialect.get_or_raise": {"tf": 1}, "sqlglot.helper.seq_get": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.get_table": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.get_source_columns": {"tf": 1}, "sqlglot.schema.Schema.get_column_type": {"tf": 1}, "sqlglot.schema.MappingSchema.get_column_type": {"tf": 1}}, "df": 6}, "o": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.DataType.Type.GEOGRAPHY": {"tf": 1}, "sqlglot.tokens.TokenType.GEOGRAPHY": {"tf": 1}}, "df": 2}}}}}}, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.DataType.Type.GEOMETRY": {"tf": 1}, "sqlglot.tokens.TokenType.GEOMETRY": {"tf": 1}}, "df": 2}}}}}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "b": {"docs": {"sqlglot.expressions.Glob": {"tf": 1}, "sqlglot.generator.Generator.glob_sql": {"tf": 1}, "sqlglot.tokens.TokenType.GLOB": {"tf": 1}}, "df": 3, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.tokens.TokenType.GLOBAL": {"tf": 1}}, "df": 1}}}}}, "t": {"docs": {"sqlglot.expressions.GT": {"tf": 1}, "sqlglot.generator.Generator.gt_sql": {"tf": 1}, "sqlglot.tokens.TokenType.GT": {"tf": 1}, "sqlglot.tokens.TokenType.AT_GT": {"tf": 1}}, "df": 4, "e": {"docs": {"sqlglot.expressions.GTE": {"tf": 1}, "sqlglot.generator.Generator.gte_sql": {"tf": 1}, "sqlglot.tokens.TokenType.GTE": {"tf": 1}}, "df": 3}}}, "j": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dataframe.sql.DataFrame.join": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.join": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.nested_loop_join": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.hash_join": {"tf": 1}, "sqlglot.expressions.Join": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Join.using": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1}, "sqlglot.generator.Generator.join_sql": {"tf": 1}, "sqlglot.optimizer.eliminate_joins.join_condition": {"tf": 1}, "sqlglot.optimizer.scope.Scope.join_hints": {"tf": 1}, "sqlglot.planner.Join": {"tf": 1}, "sqlglot.planner.Join.from_joins": {"tf": 1}, "sqlglot.tokens.TokenType.JOIN": {"tf": 1}, "sqlglot.tokens.TokenType.JOIN_MARKER": {"tf": 1}}, "df": 15, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.JoinHint": {"tf": 1}, "sqlglot.generator.Generator.joinhint_sql": {"tf": 1}}, "df": 2}}}}, "s": {"docs": {"sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 1}, "sqlglot.optimizer.optimize_joins.optimize_joins": {"tf": 1}, "sqlglot.optimizer.optimize_joins.reorder_joins": {"tf": 1}, "sqlglot.planner.Join.from_joins": {"tf": 1}}, "df": 4}}}, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.JournalProperty": {"tf": 1}, "sqlglot.generator.Generator.journalproperty_sql": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}, "s": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dialects.dialect.arrow_json_extract_sql": {"tf": 1}, "sqlglot.dialects.dialect.arrow_json_extract_scalar_sql": {"tf": 1}, "sqlglot.expressions.DataType.Type.JSON": {"tf": 1}, "sqlglot.tokens.TokenType.JSON": {"tf": 1}}, "df": 4, "b": {"docs": {"sqlglot.expressions.DataType.Type.JSONB": {"tf": 1}, "sqlglot.tokens.TokenType.JSONB": {"tf": 1}}, "df": 2, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.JSONBContains": {"tf": 1}}, "df": 1}}}}}}}}, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.JSONBExtract": {"tf": 1}}, "df": 1, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.JSONBExtractScalar": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.JSONKeyValue": {"tf": 1}, "sqlglot.generator.Generator.jsonkeyvalue_sql": {"tf": 1}}, "df": 2}}}}}}}}, "o": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "j": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.JSONObject": {"tf": 1}, "sqlglot.generator.Generator.jsonobject_sql": {"tf": 1}}, "df": 2}}}}}}, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.JSONExtract": {"tf": 1}}, "df": 1, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.JSONExtractScalar": {"tf": 1}}, "df": 1}}}}}}}}}}}}}, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.JSONFormat": {"tf": 1}}, "df": 1}}}}}}}}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dataframe.sql.DataFrame.union": {"tf": 1}, "sqlglot.expressions.Unionable.union": {"tf": 1}, "sqlglot.expressions.Union": {"tf": 1}, "sqlglot.expressions.Union.limit": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 1}, "sqlglot.expressions.Union.is_star": {"tf": 1}, "sqlglot.expressions.union": {"tf": 1}, "sqlglot.generator.Generator.union_sql": {"tf": 1}, "sqlglot.generator.Generator.union_op": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.UNION": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_union": {"tf": 1}, "sqlglot.tokens.TokenType.UNION": {"tf": 1}}, "df": 12, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.dataframe.sql.DataFrame.unionAll": {"tf": 1}}, "df": 1}}, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Unionable": {"tf": 1}, "sqlglot.expressions.Unionable.union": {"tf": 1}, "sqlglot.expressions.Unionable.intersect": {"tf": 1}, "sqlglot.expressions.Unionable.except_": {"tf": 1}}, "df": 4}}}}, "b": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.DataFrame.unionByName": {"tf": 1}}, "df": 1}}}}}}}}, "t": {"docs": {"sqlglot.dialects.tsql.generate_date_delta_with_unit_sql": {"tf": 1}}, "df": 1}, "q": {"docs": {"sqlglot.optimizer.simplify.uniq_sort": {"tf": 1}}, "df": 1, "u": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Unique": {"tf": 1}, "sqlglot.generator.Generator.unique_sql": {"tf": 1}, "sqlglot.tokens.TokenType.UNIQUE": {"tf": 1}}, "df": 3, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.UniqueColumnConstraint": {"tf": 1}, "sqlglot.generator.Generator.uniquecolumnconstraint_sql": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}}}, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.DataType.Type.UNIQUEIDENTIFIER": {"tf": 1}, "sqlglot.tokens.TokenType.UNIQUEIDENTIFIER": {"tf": 1}}, "df": 2}}}}}}}}}}}}}, "x": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.UnixToStr": {"tf": 1}}, "df": 1}}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.UnixToTime": {"tf": 1}}, "df": 1, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.UnixToTimeStr": {"tf": 1}}, "df": 1}}}}}}}}}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dataframe.sql.Column.unary_op": {"tf": 1}, "sqlglot.expressions.Unary": {"tf": 1}}, "df": 2}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.Expression.unalias": {"tf": 1}, "sqlglot.transforms.unalias_group": {"tf": 1}}, "df": 2}}}}}, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator.in_unnest_op": {"tf": 1}, "sqlglot.expressions.Expression.unnest": {"tf": 1}, "sqlglot.expressions.Expression.unnest_operands": {"tf": 1}, "sqlglot.expressions.Unnest": {"tf": 1}, "sqlglot.expressions.Subquery.unnest": {"tf": 1}, "sqlglot.generator.Generator.unnest_sql": {"tf": 1}, "sqlglot.generator.Generator.in_unnest_op": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.unnest": {"tf": 1}, "sqlglot.tokens.TokenType.UNNEST": {"tf": 1}, "sqlglot.transforms.unnest_to_explode": {"tf": 1}, "sqlglot.transforms.explode_to_unnest": {"tf": 1}}, "df": 12}}}}, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.Properties.Location.UNSUPPORTED": {"tf": 1}, "sqlglot.generator.Generator.unsupported": {"tf": 1}}, "df": 2, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.errors.UnsupportedError": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Uncache": {"tf": 1}, "sqlglot.generator.Generator.uncache_sql": {"tf": 1}, "sqlglot.tokens.TokenType.UNCACHE": {"tf": 1}}, "df": 3}}}}}, "k": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.DataType.Type.UNKNOWN": {"tf": 1}}, "df": 1}}}}}, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "x": {"docs": {"sqlglot.expressions.Unhex": {"tf": 1}}, "df": 1}}}, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.optimizer.scope.Scope.unqualified_columns": {"tf": 1}}, "df": 1}}}}}}}}}, "b": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.tokens.TokenType.UNBOUNDED": {"tf": 1}}, "df": 1}}}}}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.tokens.TokenType.UNLOGGED": {"tf": 1}}, "df": 1}}}}}}, "p": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.UNPIVOT": {"tf": 1}}, "df": 1}}}}}}, "p": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.teradata.Teradata.Generator.update_sql": {"tf": 1}, "sqlglot.diff.Update": {"tf": 1}, "sqlglot.diff.Update.__init__": {"tf": 1}, "sqlglot.expressions.Update": {"tf": 1}, "sqlglot.expressions.update": {"tf": 1}, "sqlglot.generator.Generator.update_sql": {"tf": 1}, "sqlglot.tokens.TokenType.UPDATE": {"tf": 1}}, "df": 7}}}}, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.Upper": {"tf": 1}}, "df": 1, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.UppercaseColumnConstraint": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}}}}}, "d": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "f": {"docs": {"sqlglot.expressions.UDTF": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.UDTF": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_udtf": {"tf": 1}}, "df": 3, "s": {"docs": {"sqlglot.optimizer.scope.Scope.udtfs": {"tf": 1}}, "df": 1}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Use": {"tf": 1}, "sqlglot.generator.Generator.use_sql": {"tf": 1}, "sqlglot.tokens.TokenType.USE": {"tf": 1}}, "df": 3, "r": {"docs": {"sqlglot.tokens.TokenType.CURRENT_USER": {"tf": 1}}, "df": 1, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.UserDefinedFunction": {"tf": 1}, "sqlglot.generator.Generator.userdefinedfunction_sql": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.expressions.Join.using": {"tf": 1}, "sqlglot.tokens.TokenType.USING": {"tf": 1}}, "df": 2}}}, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.DataType.Type.USMALLINT": {"tf": 1}, "sqlglot.tokens.TokenType.USMALLINT": {"tf": 1}}, "df": 2}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.DataType.Type.UINT": {"tf": 1}, "sqlglot.tokens.TokenType.UINT": {"tf": 1}}, "df": 2}}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.DataType.Type.UTINYINT": {"tf": 1}, "sqlglot.tokens.TokenType.UTINYINT": {"tf": 1}}, "df": 2}}}}}}}, "b": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.DataType.Type.UBIGINT": {"tf": 1}, "sqlglot.tokens.TokenType.UBIGINT": {"tf": 1}}, "df": 2}}}}}}, "u": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.DataType.Type.UUID": {"tf": 1}, "sqlglot.tokens.TokenType.UUID": {"tf": 1}}, "df": 2}}}}, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator.except_op": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.except_op": {"tf": 1}, "sqlglot.expressions.Unionable.except_": {"tf": 1}, "sqlglot.expressions.Except": {"tf": 1}, "sqlglot.expressions.except_": {"tf": 1}, "sqlglot.generator.Generator.except_sql": {"tf": 1}, "sqlglot.generator.Generator.except_op": {"tf": 1}, "sqlglot.tokens.TokenType.EXCEPT": {"tf": 1}}, "df": 8, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.dataframe.sql.DataFrame.exceptAll": {"tf": 1}}, "df": 1}}}}}}}, "p": {"docs": {"sqlglot.expressions.Exp": {"tf": 1}}, "df": 1, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dataframe.sql.Column.invoke_expression_over_column": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.expressions.Expression.__init__": {"tf": 1}, "sqlglot.expressions.Expression.this": {"tf": 1}, "sqlglot.expressions.Expression.expression": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.expressions": {"tf": 1}, "sqlglot.expressions.Expression.text": {"tf": 1}, "sqlglot.expressions.Expression.is_string": {"tf": 1}, "sqlglot.expressions.Expression.is_number": {"tf": 1}, "sqlglot.expressions.Expression.is_int": {"tf": 1}, "sqlglot.expressions.Expression.is_star": {"tf": 1}, "sqlglot.expressions.Expression.alias": {"tf": 1}, "sqlglot.expressions.Expression.output_name": {"tf": 1}, "sqlglot.expressions.Expression.copy": {"tf": 1}, "sqlglot.expressions.Expression.append": {"tf": 1}, "sqlglot.expressions.Expression.set": {"tf": 1}, "sqlglot.expressions.Expression.depth": {"tf": 1}, "sqlglot.expressions.Expression.iter_expressions": {"tf": 1}, "sqlglot.expressions.Expression.find": {"tf": 1}, "sqlglot.expressions.Expression.find_all": {"tf": 1}, "sqlglot.expressions.Expression.find_ancestor": {"tf": 1}, "sqlglot.expressions.Expression.parent_select": {"tf": 1}, "sqlglot.expressions.Expression.same_parent": {"tf": 1}, "sqlglot.expressions.Expression.root": {"tf": 1}, "sqlglot.expressions.Expression.walk": {"tf": 1}, "sqlglot.expressions.Expression.dfs": {"tf": 1}, "sqlglot.expressions.Expression.bfs": {"tf": 1}, "sqlglot.expressions.Expression.unnest": {"tf": 1}, "sqlglot.expressions.Expression.unalias": {"tf": 1}, "sqlglot.expressions.Expression.unnest_operands": {"tf": 1}, "sqlglot.expressions.Expression.flatten": {"tf": 1}, "sqlglot.expressions.Expression.sql": {"tf": 1}, "sqlglot.expressions.Expression.transform": {"tf": 1}, "sqlglot.expressions.Expression.replace": {"tf": 1}, "sqlglot.expressions.Expression.pop": {"tf": 1}, "sqlglot.expressions.Expression.assert_is": {"tf": 1}, "sqlglot.expressions.Expression.error_messages": {"tf": 1}, "sqlglot.expressions.Expression.dump": {"tf": 1}, "sqlglot.expressions.Expression.load": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_EXPRESSION": {"tf": 1}, "sqlglot.parser.Parser.expression": {"tf": 1}, "sqlglot.parser.Parser.validate_expression": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}}, "df": 45, "s": {"docs": {"sqlglot.expressions.Expression.expressions": {"tf": 1}, "sqlglot.expressions.Expression.iter_expressions": {"tf": 1}, "sqlglot.generator.Generator.expressions": {"tf": 1}, "sqlglot.generator.Generator.op_expressions": {"tf": 1}}, "df": 4}}}}}}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Explode": {"tf": 1}, "sqlglot.transforms.unnest_to_explode": {"tf": 1}, "sqlglot.transforms.explode_to_unnest": {"tf": 1}}, "df": 3}}}}, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.expressions.ExponentialTimeDecayedAvg": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.expand": {"tf": 1}, "sqlglot.optimizer.expand_laterals.expand_laterals": {"tf": 1}, "sqlglot.optimizer.expand_multi_table_selects.expand_multi_table_selects": {"tf": 1}}, "df": 3}}}}, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.dialect.arrow_json_extract_sql": {"tf": 1}, "sqlglot.dialects.dialect.arrow_json_extract_scalar_sql": {"tf": 1}, "sqlglot.dialects.dialect.struct_extract_sql": {"tf": 1}, "sqlglot.expressions.Extract": {"tf": 1}, "sqlglot.generator.Generator.extract_sql": {"tf": 1}, "sqlglot.optimizer.simplify.extract_date": {"tf": 1}, "sqlglot.optimizer.simplify.extract_interval": {"tf": 1}}, "df": 7}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.optimizer.scope.Scope.external_columns": {"tf": 1}}, "df": 1, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.ExternalProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.executor.execute": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.execute": {"tf": 1}, "sqlglot.tokens.TokenType.EXECUTE": {"tf": 1}}, "df": 3, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.errors.ExecuteError": {"tf": 1}}, "df": 1}}}}}, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.ExecuteAsProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.Exists": {"tf": 1}, "sqlglot.generator.Generator.exists_sql": {"tf": 1}, "sqlglot.tokens.TokenType.EXISTS": {"tf": 1}}, "df": 3}}}}}, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.Column.ensure_col": {"tf": 1}, "sqlglot.dataframe.sql.Column.ensure_cols": {"tf": 1}, "sqlglot.dataframe.sql.Column.ensure_literal": {"tf": 1}, "sqlglot.executor.table.ensure_tables": {"tf": 1}, "sqlglot.helper.ensure_list": {"tf": 1}, "sqlglot.helper.ensure_collection": {"tf": 1}, "sqlglot.optimizer.canonicalize.ensure_bool_predicates": {"tf": 1}, "sqlglot.schema.ensure_schema": {"tf": 1}, "sqlglot.schema.ensure_column_mapping": {"tf": 1}}, "df": 9}}}}, "d": {"docs": {"sqlglot.tokens.TokenType.BLOCK_END": {"tf": 1}, "sqlglot.tokens.TokenType.END": {"tf": 1}}, "df": 2, "s": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.dataframe.sql.Column.endswith": {"tf": 1}}, "df": 1}}}}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Encode": {"tf": 1}}, "df": 1, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.EncodeColumnConstraint": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}, "g": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.EngineProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}}}, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.Expression.error_messages": {"tf": 1}, "sqlglot.parser.Parser.raise_error": {"tf": 1}}, "df": 2, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.errors.ErrorLevel": {"tf": 1}, "sqlglot.errors.ErrorLevel.IGNORE": {"tf": 1}, "sqlglot.errors.ErrorLevel.WARN": {"tf": 1}, "sqlglot.errors.ErrorLevel.RAISE": {"tf": 1}, "sqlglot.errors.ErrorLevel.IMMEDIATE": {"tf": 1}}, "df": 5}}}}}, "s": {"docs": {"sqlglot.errors.merge_errors": {"tf": 1}, "sqlglot.parser.Parser.check_errors": {"tf": 1}}, "df": 2}}}}}, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.executor.context.Context.eval": {"tf": 1}, "sqlglot.executor.context.Context.eval_tuple": {"tf": 1}, "sqlglot.optimizer.simplify.eval_boolean": {"tf": 1}}, "df": 3}}}, "q": {"docs": {"sqlglot.expressions.EQ": {"tf": 1}, "sqlglot.generator.Generator.eq_sql": {"tf": 1}, "sqlglot.tokens.TokenType.EQ": {"tf": 1}, "sqlglot.tokens.TokenType.NULLSAFE_EQ": {"tf": 1}}, "df": 4}, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Escape": {"tf": 1}, "sqlglot.generator.Generator.escape_sql": {"tf": 1}, "sqlglot.tokens.TokenType.ESCAPE": {"tf": 1}}, "df": 3}}}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.eliminate_ctes.eliminate_ctes": {"tf": 1}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 1}, "sqlglot.optimizer.eliminate_subqueries.eliminate_subqueries": {"tf": 1}, "sqlglot.optimizer.simplify.absorb_and_eliminate": {"tf": 1}, "sqlglot.transforms.eliminate_distinct_on": {"tf": 1}, "sqlglot.transforms.eliminate_qualify": {"tf": 1}}, "df": 6}}}}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.ELSE": {"tf": 1}}, "df": 1}}}}, "r": {"docs": {"sqlglot.tokens.TokenType.R_PAREN": {"tf": 1}, "sqlglot.tokens.TokenType.R_BRACKET": {"tf": 1}, "sqlglot.tokens.TokenType.R_BRACE": {"tf": 1}}, "df": 3, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.DataFrame.replace": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.replace": {"tf": 1}, "sqlglot.expressions.Expression.replace": {"tf": 1}, "sqlglot.expressions.replace_children": {"tf": 1}, "sqlglot.expressions.replace_tables": {"tf": 1}, "sqlglot.expressions.replace_placeholders": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.replace_aliases": {"tf": 1}, "sqlglot.optimizer.scope.Scope.replace": {"tf": 1}, "sqlglot.tokens.TokenType.REPLACE": {"tf": 1}}, "df": 9}}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dataframe.sql.DataFrame.repartition": {"tf": 1}}, "df": 1}}}}}}}}, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.Repeat": {"tf": 1}}, "df": 1}}}}, "d": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.dialect.Dialects.REDSHIFT": {"tf": 1}, "sqlglot.dialects.redshift.Redshift": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Tokenizer": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.with_properties": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.renametable_sql": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1}}, "df": 9}}}}}, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Reduce": {"tf": 1}}, "df": 1}}, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.optimizer.canonicalize.remove_redundant_casts": {"tf": 1}}, "df": 1}}}}}}}, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.rename_func": {"tf": 1}, "sqlglot.expressions.rename_table": {"tf": 1}, "sqlglot.optimizer.scope.Scope.rename_source": {"tf": 1}}, "df": 3, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.redshift.Redshift.Generator.renametable_sql": {"tf": 1}, "sqlglot.expressions.RenameTable": {"tf": 1}, "sqlglot.generator.Generator.renametable_sql": {"tf": 1}}, "df": 3}}}}}}}}}, "c": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.no_recursive_cte_sql": {"tf": 1}, "sqlglot.tokens.TokenType.RECURSIVE": {"tf": 1}}, "df": 2}}}}}}, "o": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.MATCH_RECOGNIZE": {"tf": 1}}, "df": 1}}}}}}}, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.Return": {"tf": 1}, "sqlglot.generator.Generator.return_sql": {"tf": 1}}, "df": 2, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dialects.tsql.TSQL.Generator.returnsproperty_sql": {"tf": 1}, "sqlglot.expressions.ReturnsProperty": {"tf": 1}}, "df": 2}}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.expressions.Delete.returning": {"tf": 1}, "sqlglot.expressions.Returning": {"tf": 1}, "sqlglot.generator.Generator.returning_sql": {"tf": 1}, "sqlglot.tokens.TokenType.RETURNING": {"tf": 1}}, "df": 4}}}}}}}, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff.Remove": {"tf": 1}, "sqlglot.diff.Remove.__init__": {"tf": 1}, "sqlglot.optimizer.canonicalize.remove_redundant_casts": {"tf": 1}, "sqlglot.optimizer.scope.Scope.remove_source": {"tf": 1}, "sqlglot.optimizer.simplify.remove_compliments": {"tf": 1}, "sqlglot.optimizer.simplify.remove_where_true": {"tf": 1}, "sqlglot.transforms.remove_precision_parameterized_types": {"tf": 1}, "sqlglot.transforms.remove_target_from_merge": {"tf": 1}}, "df": 8}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.executor.env.reverse_key": {"tf": 1}, "sqlglot.executor.env.reverse_key.__init__": {"tf": 1}}, "df": 2}}}}}, "f": {"docs": {"sqlglot.optimizer.scope.Scope.ref_count": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Reference": {"tf": 1}, "sqlglot.generator.Generator.reference_sql": {"tf": 1}}, "df": 2, "s": {"docs": {"sqlglot.tokens.TokenType.REFERENCES": {"tf": 1}}, "df": 1}}}}}}}}, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.RESPECT_NULLS": {"tf": 1}}, "df": 1, "n": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.RespectNulls": {"tf": 1}, "sqlglot.generator.Generator.respectnulls_sql": {"tf": 1}}, "df": 2}}}}}}}}}, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.optimizer.qualify_columns.Resolver": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.__init__": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.get_table": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.all_columns": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.get_source_columns": {"tf": 1}}, "df": 5}}}}}, "e": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.parser.Parser.reset": {"tf": 1}, "sqlglot.tokens.Tokenizer.reset": {"tf": 1}}, "df": 2}}}, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "v": {"docs": {"sqlglot.expressions.ReadCSV": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.helper.csv_reader": {"tf": 1}}, "df": 1}}}}, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.RegexpExtract": {"tf": 1}}, "df": 1}}}}}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.RegexpLike": {"tf": 1}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.RegexpILike": {"tf": 1}}, "df": 1}}}}}, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.RegexpSplit": {"tf": 1}}, "df": 1}}}}}}}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.optimizer.optimize_joins.reorder_joins": {"tf": 1}}, "df": 1}}}}}, "w": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.simplify.rewrite_between": {"tf": 1}}, "df": 1}}}}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.Column.rlike": {"tf": 1}, "sqlglot.tokens.TokenType.RLIKE": {"tf": 1}}, "df": 2}}}}, "o": {"docs": {}, "df": 0, "w": {"docs": {"sqlglot.executor.context.Context.set_row": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_ROW": {"tf": 1}, "sqlglot.tokens.TokenType.ROW": {"tf": 1}}, "df": 3, "s": {"docs": {"sqlglot.tokens.TokenType.ROWS": {"tf": 1}}, "df": 1, "b": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dataframe.sql.Window.rowsBetween": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.rowsBetween": {"tf": 1}}, "df": 2}}}}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.executor.table.RowReader": {"tf": 1}, "sqlglot.executor.table.RowReader.__init__": {"tf": 1}}, "df": 2}}}}}}, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.RowFormatProperty": {"tf": 1}}, "df": 1}}}}}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.RowFormatDelimitedProperty": {"tf": 1}, "sqlglot.generator.Generator.rowformatdelimitedproperty_sql": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.RowFormatSerdeProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.DataType.Type.ROWVERSION": {"tf": 1}, "sqlglot.tokens.TokenType.ROWVERSION": {"tf": 1}}, "df": 2}}}}}}}, "n": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.RowNumber": {"tf": 1}}, "df": 1}}}}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator.rollback_sql": {"tf": 1}, "sqlglot.expressions.Rollback": {"tf": 1}, "sqlglot.generator.Generator.rollback_sql": {"tf": 1}, "sqlglot.tokens.TokenType.ROLLBACK": {"tf": 1}}, "df": 4}}}}, "u": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.tokens.TokenType.ROLLUP": {"tf": 1}}, "df": 1}}}}, "o": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.Expression.root": {"tf": 1}, "sqlglot.generator.Generator.root_properties": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.ROOT": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_root": {"tf": 1}}, "df": 4}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.Round": {"tf": 1}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.executor.context.Context.set_range": {"tf": 1}, "sqlglot.parser.binary_range_parser": {"tf": 1}, "sqlglot.tokens.TokenType.RANGE": {"tf": 1}}, "df": 3, "b": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dataframe.sql.Window.rangeBetween": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.rangeBetween": {"tf": 1}}, "df": 2}}}}}}}, "n": {"docs": {"sqlglot.dialects.teradata.Teradata.Generator.rangen_sql": {"tf": 1}, "sqlglot.expressions.RangeN": {"tf": 1}}, "df": 2}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.executor.table.RangeReader": {"tf": 1}, "sqlglot.executor.table.RangeReader.__init__": {"tf": 1}}, "df": 2}}}}}}}}}, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.Dialect.get_or_raise": {"tf": 1}, "sqlglot.errors.ErrorLevel.RAISE": {"tf": 1}, "sqlglot.parser.Parser.raise_error": {"tf": 1}}, "df": 3}}}}, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.RIGHT": {"tf": 1}}, "df": 1}}}}}, "l": {"docs": {"sqlglot.tokens.TokenType.L_PAREN": {"tf": 1}, "sqlglot.tokens.TokenType.L_BRACKET": {"tf": 1}, "sqlglot.tokens.TokenType.L_BRACE": {"tf": 1}}, "df": 3, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe.sql.DataFrame.limit": {"tf": 1}, "sqlglot.expressions.Limit": {"tf": 1}, "sqlglot.expressions.Subqueryable.limit": {"tf": 1}, "sqlglot.expressions.Union.limit": {"tf": 1}, "sqlglot.expressions.Select.limit": {"tf": 1}, "sqlglot.generator.Generator.limit_sql": {"tf": 1}, "sqlglot.tokens.TokenType.LIMIT": {"tf": 1}}, "df": 7}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.dataframe.sql.Column.ensure_literal": {"tf": 1}, "sqlglot.expressions.Literal": {"tf": 1}, "sqlglot.expressions.Literal.number": {"tf": 1}, "sqlglot.expressions.Literal.string": {"tf": 1}, "sqlglot.expressions.Literal.output_name": {"tf": 1}, "sqlglot.generator.Generator.literal_sql": {"tf": 1}, "sqlglot.optimizer.simplify.date_literal": {"tf": 1}, "sqlglot.optimizer.simplify.boolean_literal": {"tf": 1}}, "df": 8, "s": {"docs": {"sqlglot.optimizer.simplify.simplify_literals": {"tf": 1}}, "df": 1}}}}}}, "k": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.Column.like": {"tf": 1}, "sqlglot.expressions.Like": {"tf": 1}, "sqlglot.generator.Generator.like_sql": {"tf": 1}, "sqlglot.parser.parse_like": {"tf": 1}, "sqlglot.tokens.TokenType.LIKE": {"tf": 1}, "sqlglot.tokens.TokenType.LIKE_ANY": {"tf": 1}}, "df": 6, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.LikeProperty": {"tf": 1}, "sqlglot.generator.Generator.likeproperty_sql": {"tf": 1}}, "df": 2}}}}}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.LikeAny": {"tf": 1}, "sqlglot.generator.Generator.likeany_sql": {"tf": 1}}, "df": 2}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.Func.from_arg_list": {"tf": 1}, "sqlglot.helper.ensure_list": {"tf": 1}}, "df": 2}}, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.lineage.lineage": {"tf": 1}}, "df": 1, "h": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.lineage.LineageHTML": {"tf": 1}, "sqlglot.lineage.LineageHTML.__init__": {"tf": 1}}, "df": 2}}}}}}}}}}, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe.sql.Column.asc_nulls_last": {"tf": 1}, "sqlglot.dataframe.sql.Column.desc_nulls_last": {"tf": 1}, "sqlglot.tokens.TokenType.NULLS_LAST": {"tf": 1}}, "df": 3, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.expressions.LastDateOfMonth": {"tf": 1}}, "df": 1}}}}}}}}}}}}}, "m": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.dialects.dialect.format_time_lambda": {"tf": 1}, "sqlglot.expressions.Lambda": {"tf": 1}, "sqlglot.generator.Generator.lambda_sql": {"tf": 1}}, "df": 3}}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.expressions.Lateral": {"tf": 1}, "sqlglot.expressions.Select.lateral": {"tf": 1}, "sqlglot.generator.Generator.lateral_sql": {"tf": 1}, "sqlglot.tokens.TokenType.LATERAL": {"tf": 1}}, "df": 4, "s": {"docs": {"sqlglot.optimizer.expand_laterals.expand_laterals": {"tf": 1}}, "df": 1}}}}}}, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.LANGUAGE": {"tf": 1}}, "df": 1, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.LanguageProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "w": {"docs": {"sqlglot.optimizer.normalize.distributive_law": {"tf": 1}}, "df": 1}, "z": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.tokens.TokenType.LAZY": {"tf": 1}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.locate_to_strposition": {"tf": 1}, "sqlglot.dialects.dialect.strposition_to_locate_sql": {"tf": 1}, "sqlglot.generator.Generator.locate_properties": {"tf": 1}}, "df": 3}, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.Properties.Location": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_CREATE": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_NAME": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_SCHEMA": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_WITH": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_ALIAS": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_EXPRESSION": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_INDEX": {"tf": 1}, "sqlglot.expressions.Properties.Location.UNSUPPORTED": {"tf": 1}}, "df": 9, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.LocationProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "l": {"docs": {"sqlglot.tokens.TokenType.LOCAL": {"tf": 1}, "sqlglot.tokens.TokenType.WITH_LOCAL_TIME_ZONE": {"tf": 1}}, "df": 2}}, "k": {"docs": {"sqlglot.expressions.Lock": {"tf": 1}, "sqlglot.expressions.Select.lock": {"tf": 1}, "sqlglot.generator.Generator.lock_sql": {"tf": 1}}, "df": 3, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.LockingProperty": {"tf": 1}, "sqlglot.generator.Generator.lockingproperty_sql": {"tf": 1}}, "df": 2}}}}}}}}}}}}}, "o": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.executor.python.PythonExecutor.nested_loop_join": {"tf": 1}}, "df": 1}}, "a": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.Expression.load": {"tf": 1}, "sqlglot.serde.load": {"tf": 1}, "sqlglot.tokens.TokenType.LOAD_DATA": {"tf": 1}}, "df": 3, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.expressions.LoadData": {"tf": 1}, "sqlglot.generator.Generator.loaddata_sql": {"tf": 1}}, "df": 2}}}}}}, "g": {"1": {"0": {"docs": {"sqlglot.expressions.Log10": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "2": {"docs": {"sqlglot.expressions.Log2": {"tf": 1}}, "df": 1}, "docs": {"sqlglot.expressions.Log": {"tf": 1}}, "df": 1, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.LogProperty": {"tf": 1}}, "df": 1}}}}}}}}, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.LogicalOr": {"tf": 1}}, "df": 1}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.LogicalAnd": {"tf": 1}}, "df": 1}}}}}}}}, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.DataType.Type.LONGTEXT": {"tf": 1}, "sqlglot.tokens.TokenType.LONGTEXT": {"tf": 1}}, "df": 2}}}}, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "b": {"docs": {"sqlglot.expressions.DataType.Type.LONGBLOB": {"tf": 1}, "sqlglot.tokens.TokenType.LONGBLOB": {"tf": 1}}, "df": 2}}}}}}, "w": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.Lower": {"tf": 1}, "sqlglot.optimizer.lower_identities.lower_identities": {"tf": 1}}, "df": 2}}}}, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.dialect.min_or_least": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.least_sql": {"tf": 1}, "sqlglot.expressions.Least": {"tf": 1}}, "df": 3}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.tokens.TokenType.LEADING": {"tf": 1}}, "df": 1}}}}}, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.expressions.Length": {"tf": 1}}, "df": 1}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.Levenshtein": {"tf": 1}}, "df": 1}}}}}}}}}, "f": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.LEFT": {"tf": 1}}, "df": 1}}}, "t": {"docs": {"sqlglot.expressions.LT": {"tf": 1}, "sqlglot.generator.Generator.lt_sql": {"tf": 1}, "sqlglot.tokens.TokenType.LT": {"tf": 1}, "sqlglot.tokens.TokenType.LT_AT": {"tf": 1}}, "df": 4, "e": {"docs": {"sqlglot.expressions.LTE": {"tf": 1}, "sqlglot.generator.Generator.lte_sql": {"tf": 1}, "sqlglot.tokens.TokenType.LTE": {"tf": 1}}, "df": 3}}, "n": {"docs": {"sqlglot.expressions.Ln": {"tf": 1}}, "df": 1}, "r": {"docs": {"sqlglot.tokens.TokenType.LR_ARROW": {"tf": 1}}, "df": 1}}, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe.sql.DataFrame.hint": {"tf": 1}, "sqlglot.expressions.Hint": {"tf": 1}, "sqlglot.generator.Generator.hint_sql": {"tf": 1}, "sqlglot.tokens.TokenType.HINT": {"tf": 1}}, "df": 4, "s": {"docs": {"sqlglot.optimizer.scope.Scope.join_hints": {"tf": 1}}, "df": 1}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.Dialects.HIVE": {"tf": 1}, "sqlglot.dialects.hive.Hive": {"tf": 1}, "sqlglot.dialects.hive.Hive.Tokenizer": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator.arrayagg_sql": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator.with_properties": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator.datatype_sql": {"tf": 1}}, "df": 8}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {"sqlglot.expressions.Histogram": {"tf": 1}}, "df": 1}}}}}}}}, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.executor.python.PythonExecutor.hash_join": {"tf": 1}, "sqlglot.tokens.TokenType.HASH": {"tf": 1}, "sqlglot.tokens.TokenType.HASH_ARROW": {"tf": 1}}, "df": 3}}, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.expressions.Having": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1}, "sqlglot.generator.Generator.having_sql": {"tf": 1}, "sqlglot.tokens.TokenType.HAVING": {"tf": 1}}, "df": 4}}}}}, "e": {"docs": {}, "df": 0, "x": {"docs": {"sqlglot.expressions.Hex": {"tf": 1}, "sqlglot.tokens.TokenType.HEX_STRING": {"tf": 1}}, "df": 2, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.expressions.HexString": {"tf": 1}, "sqlglot.generator.Generator.hexstring_sql": {"tf": 1}}, "df": 2}}}}}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.expressions.Hll": {"tf": 1}}, "df": 1, "s": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.expressions.DataType.Type.HLLSKETCH": {"tf": 1}, "sqlglot.tokens.TokenType.HLLSKETCH": {"tf": 1}}, "df": 2}}}}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.DataType.Type.HSTORE": {"tf": 1}, "sqlglot.tokens.TokenType.HSTORE": {"tf": 1}}, "df": 2}}}}}, "t": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.lineage.Node.to_html": {"tf": 1}}, "df": 1}}}}, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dataframe.sql.GroupedData.mean": {"tf": 1}}, "df": 1}}, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.errors.concat_messages": {"tf": 1}, "sqlglot.expressions.Expression.error_messages": {"tf": 1}}, "df": 2}}}}}}, "r": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.errors.merge_errors": {"tf": 1}, "sqlglot.expressions.Merge": {"tf": 1}, "sqlglot.generator.Generator.merge_sql": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_ctes": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_derived_tables": {"tf": 1}, "sqlglot.tokens.TokenType.MERGE": {"tf": 1}, "sqlglot.transforms.remove_target_from_merge": {"tf": 1}}, "df": 8, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.MergeBlockRatioProperty": {"tf": 1}, "sqlglot.generator.Generator.mergeblockratioproperty_sql": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}}}}}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.DataType.Type.MEDIUMTEXT": {"tf": 1}, "sqlglot.tokens.TokenType.MEDIUMTEXT": {"tf": 1}}, "df": 2}}}}, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "b": {"docs": {"sqlglot.expressions.DataType.Type.MEDIUMBLOB": {"tf": 1}, "sqlglot.tokens.TokenType.MEDIUMBLOB": {"tf": 1}}, "df": 2}}}}}}}}}, "a": {"docs": {}, "df": 0, "x": {"docs": {"sqlglot.dataframe.sql.GroupedData.max": {"tf": 1}, "sqlglot.dialects.dialect.max_or_greatest": {"tf": 1}, "sqlglot.expressions.Max": {"tf": 1}}, "df": 3}, "p": {"docs": {"sqlglot.dialects.dialect.var_map_sql": {"tf": 1}, "sqlglot.expressions.DataType.Type.MAP": {"tf": 1}, "sqlglot.expressions.Map": {"tf": 1}, "sqlglot.parser.parse_var_map": {"tf": 1}, "sqlglot.tokens.TokenType.MAP": {"tf": 1}}, "df": 5, "p": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.schema.MappingSchema.from_mapping_schema": {"tf": 1}, "sqlglot.schema.ensure_column_mapping": {"tf": 1}}, "df": 2, "s": {"docs": {"sqlglot.expressions.Func.default_parser_mappings": {"tf": 1}}, "df": 1, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.schema.MappingSchema": {"tf": 1}, "sqlglot.schema.MappingSchema.__init__": {"tf": 1}, "sqlglot.schema.MappingSchema.from_mapping_schema": {"tf": 1}, "sqlglot.schema.MappingSchema.copy": {"tf": 1}, "sqlglot.schema.MappingSchema.add_table": {"tf": 1}, "sqlglot.schema.MappingSchema.column_names": {"tf": 1}, "sqlglot.schema.MappingSchema.get_column_type": {"tf": 1}}, "df": 7}}}}}}}}}}}, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.tokens.TokenType.MATCH_RECOGNIZE": {"tf": 1}}, "df": 1, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.MatchRecognize": {"tf": 1}, "sqlglot.generator.Generator.matchrecognize_sql": {"tf": 1}}, "df": 2}}}}}}}}}, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.MatchAgainst": {"tf": 1}, "sqlglot.generator.Generator.matchagainst_sql": {"tf": 1}}, "df": 2}}}}}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.tokens.TokenType.MATERIALIZED": {"tf": 1}}, "df": 1, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.MaterializedProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}, "y": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.maybe_parse": {"tf": 1}, "sqlglot.generator.Generator.maybe_comment": {"tf": 1}}, "df": 2}}}, "r": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.tokens.TokenType.JOIN_MARKER": {"tf": 1}}, "df": 1}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dataframe.sql.GroupedData.min": {"tf": 1}, "sqlglot.dialects.dialect.min_or_least": {"tf": 1}, "sqlglot.expressions.Min": {"tf": 1}}, "df": 3}}, "o": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.dialects.teradata.Teradata.Generator.mod_sql": {"tf": 1}, "sqlglot.expressions.Mod": {"tf": 1}, "sqlglot.generator.Generator.mod_sql": {"tf": 1}, "sqlglot.tokens.TokenType.MOD": {"tf": 1}}, "df": 4, "e": {"docs": {"sqlglot.dataframe.sql.DataFrameWriter.mode": {"tf": 1}}, "df": 1}, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.generator.Generator.query_modifiers": {"tf": 1}}, "df": 1}}}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff.Move": {"tf": 1}, "sqlglot.diff.Move.__init__": {"tf": 1}}, "df": 2}}, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.DataType.Type.MONEY": {"tf": 1}, "sqlglot.tokens.TokenType.MONEY": {"tf": 1}}, "df": 2}}, "t": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.expressions.Month": {"tf": 1}}, "df": 1}}}}, "y": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.dialects.dialect.Dialects.MYSQL": {"tf": 1}, "sqlglot.dialects.mysql.MySQL": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Tokenizer": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator.show_sql": {"tf": 1}}, "df": 6}}}}, "u": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.expressions.Mul": {"tf": 1}, "sqlglot.generator.Generator.mul_sql": {"tf": 1}}, "df": 2, "t": {"docs": {}, "df": 0, "i": {"docs": {"sqlglot.optimizer.expand_multi_table_selects.expand_multi_table_selects": {"tf": 1}}, "df": 1}}}}, "d": {"5": {"docs": {"sqlglot.expressions.MD5": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}}, "b": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dataframe.sql.Column.binary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.inverse_binary_op": {"tf": 1}, "sqlglot.expressions.DataType.Type.BINARY": {"tf": 1}, "sqlglot.expressions.Binary": {"tf": 1}, "sqlglot.generator.Generator.binary": {"tf": 1}, "sqlglot.parser.binary_range_parser": {"tf": 1}, "sqlglot.tokens.TokenType.BINARY": {"tf": 1}}, "df": 7}}}}, "g": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dialects.bigquery.BigQuery": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Tokenizer": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.array_sql": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.transaction_sql": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.commit_sql": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.rollback_sql": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.in_unnest_op": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.except_op": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.intersect_op": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.BIGQUERY": {"tf": 1}}, "df": 12}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.DataType.Type.BIGINT": {"tf": 1}, "sqlglot.tokens.TokenType.BIGINT": {"tf": 1}}, "df": 2}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.expressions.DataType.Type.BIGDECIMAL": {"tf": 1}, "sqlglot.tokens.TokenType.BIGDECIMAL": {"tf": 1}}, "df": 2}}}}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.expressions.DataType.Type.BIGSERIAL": {"tf": 1}, "sqlglot.tokens.TokenType.BIGSERIAL": {"tf": 1}}, "df": 2}}}}}}}, "t": {"docs": {"sqlglot.expressions.DataType.Type.BIT": {"tf": 1}, "sqlglot.tokens.TokenType.BIT_STRING": {"tf": 1}, "sqlglot.tokens.TokenType.BIT": {"tf": 1}}, "df": 3, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.expressions.BitString": {"tf": 1}, "sqlglot.generator.Generator.bitstring_sql": {"tf": 1}}, "df": 2}}}}}}, "w": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.BitwiseAnd": {"tf": 1}, "sqlglot.generator.Generator.bitwiseand_sql": {"tf": 1}}, "df": 2}}}, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.BitwiseLeftShift": {"tf": 1}, "sqlglot.generator.Generator.bitwiseleftshift_sql": {"tf": 1}}, "df": 2}}}}}}}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.BitwiseOr": {"tf": 1}, "sqlglot.generator.Generator.bitwiseor_sql": {"tf": 1}}, "df": 2}}, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.BitwiseRightShift": {"tf": 1}, "sqlglot.generator.Generator.bitwiserightshift_sql": {"tf": 1}}, "df": 2}}}}}}}}}}, "x": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.BitwiseXor": {"tf": 1}, "sqlglot.generator.Generator.bitwisexor_sql": {"tf": 1}}, "df": 2}}}, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.BitwiseNot": {"tf": 1}, "sqlglot.generator.Generator.bitwisenot_sql": {"tf": 1}}, "df": 2}}}}}}}}}, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dataframe.sql.Column.between": {"tf": 1}, "sqlglot.expressions.Between": {"tf": 1}, "sqlglot.generator.Generator.between_sql": {"tf": 1}, "sqlglot.optimizer.simplify.rewrite_between": {"tf": 1}, "sqlglot.tokens.TokenType.BETWEEN": {"tf": 1}}, "df": 5}}}}}, "g": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.tokens.TokenType.BEGIN": {"tf": 1}}, "df": 1}}}}, "f": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.Expression.bfs": {"tf": 1}}, "df": 1}}, "y": {"docs": {"sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.generator.Generator.partition_by_sql": {"tf": 1}, "sqlglot.tokens.TokenType.BY_DEFAULT": {"tf": 1}, "sqlglot.tokens.TokenType.CLUSTER_BY": {"tf": 1}, "sqlglot.tokens.TokenType.DISTRIBUTE_BY": {"tf": 1}, "sqlglot.tokens.TokenType.GROUP_BY": {"tf": 1}, "sqlglot.tokens.TokenType.ORDER_BY": {"tf": 1}, "sqlglot.tokens.TokenType.PARTITION_BY": {"tf": 1}, "sqlglot.tokens.TokenType.SORT_BY": {"tf": 1}}, "df": 12, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.BYTE_STRING": {"tf": 1}}, "df": 1, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.expressions.ByteString": {"tf": 1}, "sqlglot.generator.Generator.bytestring_sql": {"tf": 1}}, "df": 2}}}}}}}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.tokens.TokenType.BLOCK_START": {"tf": 1}, "sqlglot.tokens.TokenType.BLOCK_END": {"tf": 1}}, "df": 2, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.BlockCompressionProperty": {"tf": 1}, "sqlglot.generator.Generator.blockcompressionproperty_sql": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}}}}}}}}}}, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.optimizer.canonicalize.ensure_bool_predicates": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.Boolean": {"tf": 1}, "sqlglot.expressions.DataType.Type.BOOLEAN": {"tf": 1}, "sqlglot.generator.Generator.boolean_sql": {"tf": 1}, "sqlglot.optimizer.simplify.eval_boolean": {"tf": 1}, "sqlglot.optimizer.simplify.boolean_literal": {"tf": 1}, "sqlglot.tokens.TokenType.BOOLEAN": {"tf": 1}}, "df": 6}}}}}, "t": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.tokens.TokenType.BOTH": {"tf": 1}}, "df": 1}}}, "u": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.DataType.build": {"tf": 1}, "sqlglot.expressions.Dot.build": {"tf": 1}, "sqlglot.optimizer.scope.build_scope": {"tf": 1}}, "df": 3}}}, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.BUCKET": {"tf": 1}}, "df": 1}}}}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.Bracket": {"tf": 1}, "sqlglot.generator.Generator.bracket_sql": {"tf": 1}, "sqlglot.tokens.TokenType.L_BRACKET": {"tf": 1}, "sqlglot.tokens.TokenType.R_BRACKET": {"tf": 1}}, "df": 4}}}, "e": {"docs": {"sqlglot.tokens.TokenType.L_BRACE": {"tf": 1}, "sqlglot.tokens.TokenType.R_BRACE": {"tf": 1}}, "df": 2}}, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.optimizer.scope.Scope.branch": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.tokens.TokenType.BREAK": {"tf": 1}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.tokens.TokenType.BACKSLASH": {"tf": 1}}, "df": 1}}}}}}}}}, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.Column.set_table_name": {"tf": 1}, "sqlglot.expressions.Expression.output_name": {"tf": 1}, "sqlglot.expressions.Column.output_name": {"tf": 1}, "sqlglot.expressions.Identifier.output_name": {"tf": 1}, "sqlglot.expressions.Literal.output_name": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_NAME": {"tf": 1}, "sqlglot.expressions.Subquery.output_name": {"tf": 1}, "sqlglot.expressions.Star.output_name": {"tf": 1}, "sqlglot.expressions.Alias.output_name": {"tf": 1}, "sqlglot.expressions.Func.sql_name": {"tf": 1}, "sqlglot.expressions.Cast.output_name": {"tf": 1}, "sqlglot.expressions.table_name": {"tf": 1}, "sqlglot.helper.find_new_name": {"tf": 1}}, "df": 13, "s": {"docs": {"sqlglot.expressions.Func.sql_names": {"tf": 1}, "sqlglot.expressions.column_table_names": {"tf": 1}, "sqlglot.optimizer.optimize_joins.other_table_names": {"tf": 1}, "sqlglot.schema.Schema.column_names": {"tf": 1}, "sqlglot.schema.MappingSchema.column_names": {"tf": 1}}, "df": 5}}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.expressions.National": {"tf": 1}, "sqlglot.generator.Generator.national_sql": {"tf": 1}, "sqlglot.tokens.TokenType.NATIONAL": {"tf": 1}}, "df": 3}}}}}, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.tokens.TokenType.NATURAL": {"tf": 1}}, "df": 1}}}}}, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.generator.Generator.naked_property": {"tf": 1}}, "df": 1}}}}, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.executor.env.null_if_any": {"tf": 1}, "sqlglot.expressions.Null": {"tf": 1}, "sqlglot.expressions.DataType.Type.NULL": {"tf": 1}, "sqlglot.expressions.null": {"tf": 1}, "sqlglot.generator.Generator.null_sql": {"tf": 1}, "sqlglot.optimizer.simplify.is_null": {"tf": 1}, "sqlglot.tokens.TokenType.NULL": {"tf": 1}}, "df": 7, "s": {"docs": {"sqlglot.dataframe.sql.Column.asc_nulls_first": {"tf": 1}, "sqlglot.dataframe.sql.Column.asc_nulls_last": {"tf": 1}, "sqlglot.dataframe.sql.Column.desc_nulls_first": {"tf": 1}, "sqlglot.dataframe.sql.Column.desc_nulls_last": {"tf": 1}, "sqlglot.executor.env.filter_nulls": {"tf": 1}, "sqlglot.tokens.TokenType.IGNORE_NULLS": {"tf": 1}, "sqlglot.tokens.TokenType.NULLS_FIRST": {"tf": 1}, "sqlglot.tokens.TokenType.NULLS_LAST": {"tf": 1}, "sqlglot.tokens.TokenType.RESPECT_NULLS": {"tf": 1}}, "df": 9, "a": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.NULLSAFE_EQ": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "q": {"docs": {"sqlglot.expressions.NullSafeEQ": {"tf": 1}, "sqlglot.generator.Generator.nullsafeeq_sql": {"tf": 1}}, "df": 2}}, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {"sqlglot.expressions.NullSafeNEQ": {"tf": 1}, "sqlglot.generator.Generator.nullsafeneq_sql": {"tf": 1}}, "df": 2}}}}}}}, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.DataType.Type.NULLABLE": {"tf": 1}, "sqlglot.tokens.TokenType.NULLABLE": {"tf": 1}}, "df": 2}}}}}}, "m": {"docs": {"sqlglot.helper.split_num_words": {"tf": 1}}, "df": 1, "b": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.Expression.is_number": {"tf": 1}, "sqlglot.expressions.Literal.number": {"tf": 1}, "sqlglot.tokens.TokenType.NUMBER": {"tf": 1}, "sqlglot.tokens.Token.number": {"tf": 1}}, "df": 4, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.NumberToStr": {"tf": 1}}, "df": 1}}}}}}}}}}, "o": {"docs": {"sqlglot.dialects.dialect.no_ilike_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_paren_current_date_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_recursive_cte_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_safe_divide_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_tablesample_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_pivot_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_trycast_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_properties_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_comment_column_constraint_sql": {"tf": 1}, "sqlglot.generator.Generator.no_identify": {"tf": 1}, "sqlglot.tokens.TokenType.NO_ACTION": {"tf": 1}}, "df": 11, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.drill.Drill.Generator.normalize_func": {"tf": 1}, "sqlglot.generator.Generator.normalize_func": {"tf": 1}, "sqlglot.optimizer.normalize.normalize": {"tf": 1}, "sqlglot.optimizer.optimize_joins.normalize": {"tf": 1}}, "df": 4, "d": {"docs": {"sqlglot.optimizer.normalize.normalized": {"tf": 1}}, "df": 1}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.optimizer.normalize.normalization_distance": {"tf": 1}}, "df": 1}}}}}}}}}}}, "t": {"docs": {"sqlglot.expressions.Condition.not_": {"tf": 1}, "sqlglot.expressions.Not": {"tf": 1}, "sqlglot.expressions.not_": {"tf": 1}, "sqlglot.generator.Generator.not_sql": {"tf": 1}, "sqlglot.optimizer.simplify.simplify_not": {"tf": 1}, "sqlglot.tokens.TokenType.NOT": {"tf": 1}}, "df": 6, "n": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.tokens.TokenType.NOTNULL": {"tf": 1}}, "df": 1, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.NotNullColumnConstraint": {"tf": 1}, "sqlglot.generator.Generator.notnullcolumnconstraint_sql": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}}}}}}}}, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.NoPrimaryIndexProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.lineage.Node": {"tf": 1}, "sqlglot.lineage.Node.__init__": {"tf": 1}, "sqlglot.lineage.Node.walk": {"tf": 1}, "sqlglot.lineage.Node.to_html": {"tf": 1}}, "df": 4, "s": {"docs": {"sqlglot.optimizer.pushdown_predicates.nodes_for_predicate": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "w": {"docs": {"sqlglot.errors.ParseError.new": {"tf": 1}, "sqlglot.helper.find_new_name": {"tf": 1}, "sqlglot.trie.new_trie": {"tf": 1}}, "df": 3}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.executor.python.PythonExecutor.nested_loop_join": {"tf": 1}}, "df": 1}}}}, "q": {"docs": {"sqlglot.expressions.NEQ": {"tf": 1}, "sqlglot.generator.Generator.neq_sql": {"tf": 1}, "sqlglot.tokens.TokenType.NEQ": {"tf": 1}}, "df": 3}, "g": {"docs": {"sqlglot.expressions.Neg": {"tf": 1}, "sqlglot.generator.Generator.neg_sql": {"tf": 1}}, "df": 2}, "x": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.NEXT": {"tf": 1}}, "df": 1}}}, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.DataType.Type.NCHAR": {"tf": 1}, "sqlglot.tokens.TokenType.NCHAR": {"tf": 1}}, "df": 2}}}}, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.DataType.Type.NVARCHAR": {"tf": 1}, "sqlglot.tokens.TokenType.NVARCHAR": {"tf": 1}}, "df": 2}}}}}}, "l": {"2": {"docs": {"sqlglot.expressions.Nvl2": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}}}, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dialects.dialect.var_map_sql": {"tf": 1}, "sqlglot.expressions.Var": {"tf": 1}, "sqlglot.expressions.var": {"tf": 1}, "sqlglot.generator.Generator.var_sql": {"tf": 1}, "sqlglot.parser.parse_var_map": {"tf": 1}, "sqlglot.tokens.TokenType.VAR": {"tf": 1}, "sqlglot.tokens.Token.var": {"tf": 1}}, "df": 7, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.DataType.Type.VARCHAR": {"tf": 1}, "sqlglot.tokens.TokenType.VARCHAR": {"tf": 1}}, "df": 2}}}}, "b": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.DataType.Type.VARBINARY": {"tf": 1}, "sqlglot.tokens.TokenType.VARBINARY": {"tf": 1}}, "df": 2}}}}}}, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.DataType.Type.VARIANT": {"tf": 1}, "sqlglot.tokens.TokenType.VARIANT": {"tf": 1}}, "df": 2}, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Variance": {"tf": 1}}, "df": 1, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.expressions.VariancePop": {"tf": 1}}, "df": 1}}}}}}}}, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.expressions.VarMap": {"tf": 1}}, "df": 1}}}}, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1}, "sqlglot.expressions.Values": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1}, "sqlglot.generator.Generator.values_sql": {"tf": 1}, "sqlglot.tokens.TokenType.VALUES": {"tf": 1}}, "df": 6}}}, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.qualify_columns.validate_qualify_columns": {"tf": 1}, "sqlglot.parser.Parser.validate_expression": {"tf": 1}}, "df": 2}}}}}}}, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.VOLATILE": {"tf": 1}}, "df": 1, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.VolatileProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "w": {"docs": {"sqlglot.tokens.TokenType.VIEW": {"tf": 1}}, "df": 1}}}}, "x": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.expressions.DataType.Type.XML": {"tf": 1}, "sqlglot.tokens.TokenType.XML": {"tf": 1}}, "df": 2, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.oracle.Oracle.Generator.xmltable_sql": {"tf": 1}, "sqlglot.expressions.XMLTable": {"tf": 1}}, "df": 2}}}}}}}}, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.diff.Keep": {"tf": 1}, "sqlglot.diff.Keep.__init__": {"tf": 1}}, "df": 2}}, "y": {"docs": {"sqlglot.executor.env.reverse_key": {"tf": 1}, "sqlglot.executor.env.reverse_key.__init__": {"tf": 1}, "sqlglot.tokens.TokenType.FOREIGN_KEY": {"tf": 1}, "sqlglot.tokens.TokenType.PRIMARY_KEY": {"tf": 1}}, "df": 4}}, "w": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.expressions.Kwarg": {"tf": 1}, "sqlglot.generator.Generator.kwarg_sql": {"tf": 1}}, "df": 2}}}}}, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.Qualify": {"tf": 1}, "sqlglot.expressions.Select.qualify": {"tf": 1}, "sqlglot.generator.Generator.qualify_sql": {"tf": 1}, "sqlglot.optimizer.qualify_columns.qualify_columns": {"tf": 1}, "sqlglot.optimizer.qualify_columns.validate_qualify_columns": {"tf": 1}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"tf": 1}, "sqlglot.tokens.TokenType.QUALIFY": {"tf": 1}, "sqlglot.transforms.eliminate_qualify": {"tf": 1}}, "df": 8}}}}, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Quantile": {"tf": 1}}, "df": 1, "s": {"docs": {"sqlglot.expressions.Quantiles": {"tf": 1}}, "df": 1}, "i": {"docs": {}, "df": 0, "f": {"docs": {"sqlglot.expressions.QuantileIf": {"tf": 1}}, "df": 1}}}}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.generator.Generator.query_modifiers": {"tf": 1}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.QUOTE": {"tf": 1}}, "df": 1}}}}}, "y": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.Year": {"tf": 1}}, "df": 1}}}}, "z": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.AT_TIME_ZONE": {"tf": 1}, "sqlglot.tokens.TokenType.WITH_TIME_ZONE": {"tf": 1}, "sqlglot.tokens.TokenType.WITH_LOCAL_TIME_ZONE": {"tf": 1}, "sqlglot.tokens.TokenType.WITHOUT_TIME_ZONE": {"tf": 1}}, "df": 4}}}}}}, "fullname": {"root": {"docs": {"sqlglot.dataframe.sql.DataFrame.__init__": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.__init__": {"tf": 1}, "sqlglot.dataframe.sql.Column.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.__init__": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameReader.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.__init__": {"tf": 1}, "sqlglot.diff.Insert.__init__": {"tf": 1}, "sqlglot.diff.Remove.__init__": {"tf": 1}, "sqlglot.diff.Move.__init__": {"tf": 1}, "sqlglot.diff.Update.__init__": {"tf": 1}, "sqlglot.diff.Keep.__init__": {"tf": 1}, "sqlglot.diff.ChangeDistiller.__init__": {"tf": 1}, "sqlglot.errors.ParseError.__init__": {"tf": 1}, "sqlglot.executor.context.Context.__init__": {"tf": 1}, "sqlglot.executor.env.reverse_key.__init__": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.__init__": {"tf": 1}, "sqlglot.executor.table.Table.__init__": {"tf": 1}, "sqlglot.executor.table.TableIter.__init__": {"tf": 1}, "sqlglot.executor.table.RangeReader.__init__": {"tf": 1}, "sqlglot.executor.table.RowReader.__init__": {"tf": 1}, "sqlglot.expressions.Expression.__init__": {"tf": 1}, "sqlglot.expressions.Condition.and_": {"tf": 1}, "sqlglot.expressions.Condition.or_": {"tf": 1}, "sqlglot.expressions.Condition.not_": {"tf": 1}, "sqlglot.expressions.Unionable.except_": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.TimeUnit.__init__": {"tf": 1}, "sqlglot.expressions.except_": {"tf": 1}, "sqlglot.expressions.from_": {"tf": 1}, "sqlglot.expressions.and_": {"tf": 1}, "sqlglot.expressions.or_": {"tf": 1}, "sqlglot.expressions.not_": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1}, "sqlglot.expressions.table_": {"tf": 1}, "sqlglot.generator.Generator.__init__": {"tf": 1}, "sqlglot.lineage.Node.__init__": {"tf": 1}, "sqlglot.lineage.LineageHTML.__init__": {"tf": 1}, "sqlglot.optimizer.annotate_types.TypeAnnotator.__init__": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.__init__": {"tf": 1}, "sqlglot.optimizer.scope.Scope.__init__": {"tf": 1}, "sqlglot.parser.Parser.__init__": {"tf": 1}, "sqlglot.planner.Plan.__init__": {"tf": 1}, "sqlglot.planner.SetOperation.__init__": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema.__init__": {"tf": 1}, "sqlglot.schema.MappingSchema.__init__": {"tf": 1}, "sqlglot.tokens.Token.__init__": {"tf": 1}}, "df": 48, "s": {"docs": {"sqlglot.planner.Step.to_s": {"tf": 1}}, "df": 1, "q": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.dataframe.sql": {"tf": 1}, "sqlglot.dataframe.sql.SparkSession": {"tf": 1}, "sqlglot.dataframe.sql.SparkSession.table": {"tf": 1}, "sqlglot.dataframe.sql.SparkSession.createDataFrame": {"tf": 1}, "sqlglot.dataframe.sql.SparkSession.sql": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sql": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.copy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.select": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.alias": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.where": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.filter": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.groupBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.agg": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.join": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.union": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.unionAll": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.unionByName": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.intersect": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.intersectAll": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.exceptAll": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.distinct": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.dropDuplicates": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.dropna": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.replace": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.withColumn": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.withColumnRenamed": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.drop": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.limit": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.hint": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.repartition": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.coalesce": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.cache": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.persist": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.__init__": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.agg": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.count": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.mean": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.avg": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.max": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.min": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.sum": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.pivot": {"tf": 1}, "sqlglot.dataframe.sql.Column": {"tf": 1}, "sqlglot.dataframe.sql.Column.__init__": {"tf": 1}, "sqlglot.dataframe.sql.Column.ensure_col": {"tf": 1}, "sqlglot.dataframe.sql.Column.ensure_cols": {"tf": 1}, "sqlglot.dataframe.sql.Column.invoke_anonymous_function": {"tf": 1}, "sqlglot.dataframe.sql.Column.invoke_expression_over_column": {"tf": 1}, "sqlglot.dataframe.sql.Column.binary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.inverse_binary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.unary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.ensure_literal": {"tf": 1}, "sqlglot.dataframe.sql.Column.copy": {"tf": 1}, "sqlglot.dataframe.sql.Column.set_table_name": {"tf": 1}, "sqlglot.dataframe.sql.Column.sql": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.alias": {"tf": 1}, "sqlglot.dataframe.sql.Column.asc": {"tf": 1}, "sqlglot.dataframe.sql.Column.desc": {"tf": 1}, "sqlglot.dataframe.sql.Column.asc_nulls_first": {"tf": 1}, "sqlglot.dataframe.sql.Column.asc_nulls_last": {"tf": 1}, "sqlglot.dataframe.sql.Column.desc_nulls_first": {"tf": 1}, "sqlglot.dataframe.sql.Column.desc_nulls_last": {"tf": 1}, "sqlglot.dataframe.sql.Column.when": {"tf": 1}, "sqlglot.dataframe.sql.Column.otherwise": {"tf": 1}, "sqlglot.dataframe.sql.Column.isNull": {"tf": 1}, "sqlglot.dataframe.sql.Column.isNotNull": {"tf": 1}, "sqlglot.dataframe.sql.Column.cast": {"tf": 1}, "sqlglot.dataframe.sql.Column.startswith": {"tf": 1}, "sqlglot.dataframe.sql.Column.endswith": {"tf": 1}, "sqlglot.dataframe.sql.Column.rlike": {"tf": 1}, "sqlglot.dataframe.sql.Column.like": {"tf": 1}, "sqlglot.dataframe.sql.Column.ilike": {"tf": 1}, "sqlglot.dataframe.sql.Column.substr": {"tf": 1}, "sqlglot.dataframe.sql.Column.isin": {"tf": 1}, "sqlglot.dataframe.sql.Column.between": {"tf": 1}, "sqlglot.dataframe.sql.Column.over": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.drop": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.fill": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.replace": {"tf": 1}, "sqlglot.dataframe.sql.Window": {"tf": 1}, "sqlglot.dataframe.sql.Window.partitionBy": {"tf": 1}, "sqlglot.dataframe.sql.Window.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.Window.rowsBetween": {"tf": 1}, "sqlglot.dataframe.sql.Window.rangeBetween": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.__init__": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.copy": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.sql": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.WindowSpec.partitionBy": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.rowsBetween": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.rangeBetween": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameReader": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameReader.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameReader.table": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.copy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.sql": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrameWriter.mode": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.insertInto": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.saveAsTable": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.array_sql": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.transaction_sql": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.commit_sql": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.rollback_sql": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator.cte_sql": {"tf": 1}, "sqlglot.dialects.dialect.approx_count_distinct_sql": {"tf": 1}, "sqlglot.dialects.dialect.if_sql": {"tf": 1}, "sqlglot.dialects.dialect.arrow_json_extract_sql": {"tf": 1}, "sqlglot.dialects.dialect.arrow_json_extract_scalar_sql": {"tf": 1}, "sqlglot.dialects.dialect.inline_array_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_ilike_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_paren_current_date_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_recursive_cte_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_safe_divide_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_tablesample_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_pivot_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_trycast_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_properties_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_comment_column_constraint_sql": {"tf": 1}, "sqlglot.dialects.dialect.str_position_sql": {"tf": 1}, "sqlglot.dialects.dialect.struct_extract_sql": {"tf": 1}, "sqlglot.dialects.dialect.var_map_sql": {"tf": 1}, "sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1}, "sqlglot.dialects.dialect.timestamptrunc_sql": {"tf": 1}, "sqlglot.dialects.dialect.strposition_to_locate_sql": {"tf": 1}, "sqlglot.dialects.dialect.timestrtotime_sql": {"tf": 1}, "sqlglot.dialects.dialect.datestrtodate_sql": {"tf": 1}, "sqlglot.dialects.dialect.trim_sql": {"tf": 1}, "sqlglot.dialects.dialect.str_to_time_sql": {"tf": 1}, "sqlglot.dialects.dialect.ts_or_ds_to_date_sql": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator.tablesample_sql": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator.arrayagg_sql": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator.show_sql": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator.offset_sql": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator.column_sql": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator.xmltable_sql": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator.interval_sql": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator.transaction_sql": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.renametable_sql": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.settag_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.describe_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.generatedasidentitycolumnconstraint_sql": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator.cast_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.cast_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.datediff_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.groupconcat_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.least_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.transaction_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.partitionedbyproperty_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.update_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.mod_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.rangen_sql": {"tf": 1}, "sqlglot.dialects.tsql.generate_date_delta_with_unit_sql": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator.offset_sql": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator.systemtime_sql": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator.returnsproperty_sql": {"tf": 1}, "sqlglot.expressions.Expression.sql": {"tf": 1}, "sqlglot.expressions.Func.sql_names": {"tf": 1}, "sqlglot.expressions.Func.sql_name": {"tf": 1}, "sqlglot.generator.Generator.sql": {"tf": 1}, "sqlglot.generator.Generator.uncache_sql": {"tf": 1}, "sqlglot.generator.Generator.cache_sql": {"tf": 1}, "sqlglot.generator.Generator.characterset_sql": {"tf": 1}, "sqlglot.generator.Generator.column_sql": {"tf": 1}, "sqlglot.generator.Generator.columnposition_sql": {"tf": 1}, "sqlglot.generator.Generator.columndef_sql": {"tf": 1}, "sqlglot.generator.Generator.columnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.autoincrementcolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.compresscolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.generatedasidentitycolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.notnullcolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.primarykeycolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.uniquecolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.create_sql": {"tf": 1}, "sqlglot.generator.Generator.describe_sql": {"tf": 1}, "sqlglot.generator.Generator.with_sql": {"tf": 1}, "sqlglot.generator.Generator.cte_sql": {"tf": 1}, "sqlglot.generator.Generator.tablealias_sql": {"tf": 1}, "sqlglot.generator.Generator.bitstring_sql": {"tf": 1}, "sqlglot.generator.Generator.hexstring_sql": {"tf": 1}, "sqlglot.generator.Generator.bytestring_sql": {"tf": 1}, "sqlglot.generator.Generator.datatype_sql": {"tf": 1}, "sqlglot.generator.Generator.directory_sql": {"tf": 1}, "sqlglot.generator.Generator.delete_sql": {"tf": 1}, "sqlglot.generator.Generator.drop_sql": {"tf": 1}, "sqlglot.generator.Generator.except_sql": {"tf": 1}, "sqlglot.generator.Generator.fetch_sql": {"tf": 1}, "sqlglot.generator.Generator.filter_sql": {"tf": 1}, "sqlglot.generator.Generator.hint_sql": {"tf": 1}, "sqlglot.generator.Generator.index_sql": {"tf": 1}, "sqlglot.generator.Generator.identifier_sql": {"tf": 1}, "sqlglot.generator.Generator.inputoutputformat_sql": {"tf": 1}, "sqlglot.generator.Generator.national_sql": {"tf": 1}, "sqlglot.generator.Generator.partition_sql": {"tf": 1}, "sqlglot.generator.Generator.properties_sql": {"tf": 1}, "sqlglot.generator.Generator.property_sql": {"tf": 1}, "sqlglot.generator.Generator.likeproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.fallbackproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.journalproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.freespaceproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.afterjournalproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.checksumproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.mergeblockratioproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.datablocksizeproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.blockcompressionproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.isolatedloadingproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.lockingproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.withdataproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.insert_sql": {"tf": 1}, "sqlglot.generator.Generator.intersect_sql": {"tf": 1}, "sqlglot.generator.Generator.introducer_sql": {"tf": 1}, "sqlglot.generator.Generator.pseudotype_sql": {"tf": 1}, "sqlglot.generator.Generator.onconflict_sql": {"tf": 1}, "sqlglot.generator.Generator.returning_sql": {"tf": 1}, "sqlglot.generator.Generator.rowformatdelimitedproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.table_sql": {"tf": 1}, "sqlglot.generator.Generator.tablesample_sql": {"tf": 1}, "sqlglot.generator.Generator.pivot_sql": {"tf": 1}, "sqlglot.generator.Generator.tuple_sql": {"tf": 1}, "sqlglot.generator.Generator.update_sql": {"tf": 1}, "sqlglot.generator.Generator.values_sql": {"tf": 1}, "sqlglot.generator.Generator.var_sql": {"tf": 1}, "sqlglot.generator.Generator.into_sql": {"tf": 1}, "sqlglot.generator.Generator.from_sql": {"tf": 1}, "sqlglot.generator.Generator.group_sql": {"tf": 1}, "sqlglot.generator.Generator.having_sql": {"tf": 1}, "sqlglot.generator.Generator.join_sql": {"tf": 1}, "sqlglot.generator.Generator.lambda_sql": {"tf": 1}, "sqlglot.generator.Generator.lateral_sql": {"tf": 1}, "sqlglot.generator.Generator.limit_sql": {"tf": 1}, "sqlglot.generator.Generator.offset_sql": {"tf": 1}, "sqlglot.generator.Generator.setitem_sql": {"tf": 1}, "sqlglot.generator.Generator.set_sql": {"tf": 1}, "sqlglot.generator.Generator.pragma_sql": {"tf": 1}, "sqlglot.generator.Generator.lock_sql": {"tf": 1}, "sqlglot.generator.Generator.literal_sql": {"tf": 1}, "sqlglot.generator.Generator.loaddata_sql": {"tf": 1}, "sqlglot.generator.Generator.null_sql": {"tf": 1}, "sqlglot.generator.Generator.boolean_sql": {"tf": 1}, "sqlglot.generator.Generator.order_sql": {"tf": 1}, "sqlglot.generator.Generator.cluster_sql": {"tf": 1}, "sqlglot.generator.Generator.distribute_sql": {"tf": 1}, "sqlglot.generator.Generator.sort_sql": {"tf": 1}, "sqlglot.generator.Generator.ordered_sql": {"tf": 1}, "sqlglot.generator.Generator.matchrecognize_sql": {"tf": 1}, "sqlglot.generator.Generator.select_sql": {"tf": 1}, "sqlglot.generator.Generator.schema_sql": {"tf": 1}, "sqlglot.generator.Generator.star_sql": {"tf": 1}, "sqlglot.generator.Generator.structkwarg_sql": {"tf": 1}, "sqlglot.generator.Generator.parameter_sql": {"tf": 1}, "sqlglot.generator.Generator.sessionparameter_sql": {"tf": 1}, "sqlglot.generator.Generator.placeholder_sql": {"tf": 1}, "sqlglot.generator.Generator.subquery_sql": {"tf": 1}, "sqlglot.generator.Generator.qualify_sql": {"tf": 1}, "sqlglot.generator.Generator.union_sql": {"tf": 1}, "sqlglot.generator.Generator.unnest_sql": {"tf": 1}, "sqlglot.generator.Generator.where_sql": {"tf": 1}, "sqlglot.generator.Generator.window_sql": {"tf": 1}, "sqlglot.generator.Generator.partition_by_sql": {"tf": 1}, "sqlglot.generator.Generator.window_spec_sql": {"tf": 1}, "sqlglot.generator.Generator.withingroup_sql": {"tf": 1}, "sqlglot.generator.Generator.between_sql": {"tf": 1}, "sqlglot.generator.Generator.bracket_sql": {"tf": 1}, "sqlglot.generator.Generator.all_sql": {"tf": 1}, "sqlglot.generator.Generator.any_sql": {"tf": 1}, "sqlglot.generator.Generator.exists_sql": {"tf": 1}, "sqlglot.generator.Generator.case_sql": {"tf": 1}, "sqlglot.generator.Generator.constraint_sql": {"tf": 1}, "sqlglot.generator.Generator.extract_sql": {"tf": 1}, "sqlglot.generator.Generator.trim_sql": {"tf": 1}, "sqlglot.generator.Generator.concat_sql": {"tf": 1}, "sqlglot.generator.Generator.check_sql": {"tf": 1}, "sqlglot.generator.Generator.foreignkey_sql": {"tf": 1}, "sqlglot.generator.Generator.primarykey_sql": {"tf": 1}, "sqlglot.generator.Generator.unique_sql": {"tf": 1}, "sqlglot.generator.Generator.if_sql": {"tf": 1}, "sqlglot.generator.Generator.matchagainst_sql": {"tf": 1}, "sqlglot.generator.Generator.jsonkeyvalue_sql": {"tf": 1}, "sqlglot.generator.Generator.jsonobject_sql": {"tf": 1}, "sqlglot.generator.Generator.in_sql": {"tf": 1}, "sqlglot.generator.Generator.interval_sql": {"tf": 1}, "sqlglot.generator.Generator.return_sql": {"tf": 1}, "sqlglot.generator.Generator.reference_sql": {"tf": 1}, "sqlglot.generator.Generator.anonymous_sql": {"tf": 1}, "sqlglot.generator.Generator.paren_sql": {"tf": 1}, "sqlglot.generator.Generator.neg_sql": {"tf": 1}, "sqlglot.generator.Generator.not_sql": {"tf": 1}, "sqlglot.generator.Generator.alias_sql": {"tf": 1}, "sqlglot.generator.Generator.aliases_sql": {"tf": 1}, "sqlglot.generator.Generator.attimezone_sql": {"tf": 1}, "sqlglot.generator.Generator.add_sql": {"tf": 1}, "sqlglot.generator.Generator.and_sql": {"tf": 1}, "sqlglot.generator.Generator.connector_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwiseand_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwiseleftshift_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwisenot_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwiseor_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwiserightshift_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwisexor_sql": {"tf": 1}, "sqlglot.generator.Generator.cast_sql": {"tf": 1}, "sqlglot.generator.Generator.currentdate_sql": {"tf": 1}, "sqlglot.generator.Generator.collate_sql": {"tf": 1}, "sqlglot.generator.Generator.command_sql": {"tf": 1}, "sqlglot.generator.Generator.comment_sql": {"tf": 1}, "sqlglot.generator.Generator.transaction_sql": {"tf": 1}, "sqlglot.generator.Generator.commit_sql": {"tf": 1}, "sqlglot.generator.Generator.rollback_sql": {"tf": 1}, "sqlglot.generator.Generator.altercolumn_sql": {"tf": 1}, "sqlglot.generator.Generator.renametable_sql": {"tf": 1}, "sqlglot.generator.Generator.altertable_sql": {"tf": 1}, "sqlglot.generator.Generator.droppartition_sql": {"tf": 1}, "sqlglot.generator.Generator.addconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.distinct_sql": {"tf": 1}, "sqlglot.generator.Generator.ignorenulls_sql": {"tf": 1}, "sqlglot.generator.Generator.respectnulls_sql": {"tf": 1}, "sqlglot.generator.Generator.intdiv_sql": {"tf": 1}, "sqlglot.generator.Generator.dpipe_sql": {"tf": 1}, "sqlglot.generator.Generator.div_sql": {"tf": 1}, "sqlglot.generator.Generator.overlaps_sql": {"tf": 1}, "sqlglot.generator.Generator.distance_sql": {"tf": 1}, "sqlglot.generator.Generator.dot_sql": {"tf": 1}, "sqlglot.generator.Generator.eq_sql": {"tf": 1}, "sqlglot.generator.Generator.escape_sql": {"tf": 1}, "sqlglot.generator.Generator.glob_sql": {"tf": 1}, "sqlglot.generator.Generator.gt_sql": {"tf": 1}, "sqlglot.generator.Generator.gte_sql": {"tf": 1}, "sqlglot.generator.Generator.ilike_sql": {"tf": 1}, "sqlglot.generator.Generator.ilikeany_sql": {"tf": 1}, "sqlglot.generator.Generator.is_sql": {"tf": 1}, "sqlglot.generator.Generator.like_sql": {"tf": 1}, "sqlglot.generator.Generator.likeany_sql": {"tf": 1}, "sqlglot.generator.Generator.similarto_sql": {"tf": 1}, "sqlglot.generator.Generator.lt_sql": {"tf": 1}, "sqlglot.generator.Generator.lte_sql": {"tf": 1}, "sqlglot.generator.Generator.mod_sql": {"tf": 1}, "sqlglot.generator.Generator.mul_sql": {"tf": 1}, "sqlglot.generator.Generator.neq_sql": {"tf": 1}, "sqlglot.generator.Generator.nullsafeeq_sql": {"tf": 1}, "sqlglot.generator.Generator.nullsafeneq_sql": {"tf": 1}, "sqlglot.generator.Generator.or_sql": {"tf": 1}, "sqlglot.generator.Generator.slice_sql": {"tf": 1}, "sqlglot.generator.Generator.sub_sql": {"tf": 1}, "sqlglot.generator.Generator.trycast_sql": {"tf": 1}, "sqlglot.generator.Generator.use_sql": {"tf": 1}, "sqlglot.generator.Generator.function_fallback_sql": {"tf": 1}, "sqlglot.generator.Generator.tag_sql": {"tf": 1}, "sqlglot.generator.Generator.token_sql": {"tf": 1}, "sqlglot.generator.Generator.userdefinedfunction_sql": {"tf": 1}, "sqlglot.generator.Generator.joinhint_sql": {"tf": 1}, "sqlglot.generator.Generator.kwarg_sql": {"tf": 1}, "sqlglot.generator.Generator.when_sql": {"tf": 1}, "sqlglot.generator.Generator.merge_sql": {"tf": 1}, "sqlglot.generator.Generator.tochar_sql": {"tf": 1}}, "df": 369, "g": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.pretty": {"tf": 1}, "sqlglot.schema": {"tf": 1}, "sqlglot.parse": {"tf": 1}, "sqlglot.parse_one": {"tf": 1}, "sqlglot.transpile": {"tf": 1}, "sqlglot.dataframe": {"tf": 1}, "sqlglot.dataframe.sql": {"tf": 1}, "sqlglot.dataframe.sql.SparkSession": {"tf": 1}, "sqlglot.dataframe.sql.SparkSession.table": {"tf": 1}, "sqlglot.dataframe.sql.SparkSession.createDataFrame": {"tf": 1}, "sqlglot.dataframe.sql.SparkSession.sql": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sql": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.copy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.select": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.alias": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.where": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.filter": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.groupBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.agg": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.join": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.union": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.unionAll": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.unionByName": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.intersect": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.intersectAll": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.exceptAll": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.distinct": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.dropDuplicates": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.dropna": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.replace": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.withColumn": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.withColumnRenamed": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.drop": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.limit": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.hint": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.repartition": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.coalesce": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.cache": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.persist": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.__init__": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.agg": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.count": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.mean": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.avg": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.max": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.min": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.sum": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.pivot": {"tf": 1}, "sqlglot.dataframe.sql.Column": {"tf": 1}, "sqlglot.dataframe.sql.Column.__init__": {"tf": 1}, "sqlglot.dataframe.sql.Column.ensure_col": {"tf": 1}, "sqlglot.dataframe.sql.Column.ensure_cols": {"tf": 1}, "sqlglot.dataframe.sql.Column.invoke_anonymous_function": {"tf": 1}, "sqlglot.dataframe.sql.Column.invoke_expression_over_column": {"tf": 1}, "sqlglot.dataframe.sql.Column.binary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.inverse_binary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.unary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.ensure_literal": {"tf": 1}, "sqlglot.dataframe.sql.Column.copy": {"tf": 1}, "sqlglot.dataframe.sql.Column.set_table_name": {"tf": 1}, "sqlglot.dataframe.sql.Column.sql": {"tf": 1}, "sqlglot.dataframe.sql.Column.alias": {"tf": 1}, "sqlglot.dataframe.sql.Column.asc": {"tf": 1}, "sqlglot.dataframe.sql.Column.desc": {"tf": 1}, "sqlglot.dataframe.sql.Column.asc_nulls_first": {"tf": 1}, "sqlglot.dataframe.sql.Column.asc_nulls_last": {"tf": 1}, "sqlglot.dataframe.sql.Column.desc_nulls_first": {"tf": 1}, "sqlglot.dataframe.sql.Column.desc_nulls_last": {"tf": 1}, "sqlglot.dataframe.sql.Column.when": {"tf": 1}, "sqlglot.dataframe.sql.Column.otherwise": {"tf": 1}, "sqlglot.dataframe.sql.Column.isNull": {"tf": 1}, "sqlglot.dataframe.sql.Column.isNotNull": {"tf": 1}, "sqlglot.dataframe.sql.Column.cast": {"tf": 1}, "sqlglot.dataframe.sql.Column.startswith": {"tf": 1}, "sqlglot.dataframe.sql.Column.endswith": {"tf": 1}, "sqlglot.dataframe.sql.Column.rlike": {"tf": 1}, "sqlglot.dataframe.sql.Column.like": {"tf": 1}, "sqlglot.dataframe.sql.Column.ilike": {"tf": 1}, "sqlglot.dataframe.sql.Column.substr": {"tf": 1}, "sqlglot.dataframe.sql.Column.isin": {"tf": 1}, "sqlglot.dataframe.sql.Column.between": {"tf": 1}, "sqlglot.dataframe.sql.Column.over": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.drop": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.fill": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.replace": {"tf": 1}, "sqlglot.dataframe.sql.Window": {"tf": 1}, "sqlglot.dataframe.sql.Window.partitionBy": {"tf": 1}, "sqlglot.dataframe.sql.Window.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.Window.rowsBetween": {"tf": 1}, "sqlglot.dataframe.sql.Window.rangeBetween": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.__init__": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.copy": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.sql": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.partitionBy": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.rowsBetween": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.rangeBetween": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameReader": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameReader.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameReader.table": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.copy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.sql": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.mode": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.insertInto": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.saveAsTable": {"tf": 1}, "sqlglot.dialects": {"tf": 1}, "sqlglot.dialects.bigquery": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Tokenizer": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.array_sql": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.transaction_sql": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.commit_sql": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.rollback_sql": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.in_unnest_op": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.except_op": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.intersect_op": {"tf": 1}, "sqlglot.dialects.clickhouse": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Tokenizer": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator.cte_sql": {"tf": 1}, "sqlglot.dialects.databricks": {"tf": 1}, "sqlglot.dialects.databricks.Databricks": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Tokenizer": {"tf": 1}, "sqlglot.dialects.dialect": {"tf": 1}, "sqlglot.dialects.dialect.Dialects": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.DIALECT": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.BIGQUERY": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.CLICKHOUSE": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.DUCKDB": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.HIVE": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.MYSQL": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.ORACLE": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.POSTGRES": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.PRESTO": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.REDSHIFT": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.SNOWFLAKE": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.SPARK": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.SQLITE": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.STARROCKS": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.TABLEAU": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.TRINO": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.TSQL": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.DATABRICKS": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.DRILL": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.TERADATA": {"tf": 1}, "sqlglot.dialects.dialect.Dialect": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.get_or_raise": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.format_time": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.parse": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.parse_into": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.generate": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.transpile": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.tokenize": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.parser": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.generator": {"tf": 1}, "sqlglot.dialects.dialect.rename_func": {"tf": 1}, "sqlglot.dialects.dialect.approx_count_distinct_sql": {"tf": 1}, "sqlglot.dialects.dialect.if_sql": {"tf": 1}, "sqlglot.dialects.dialect.arrow_json_extract_sql": {"tf": 1}, "sqlglot.dialects.dialect.arrow_json_extract_scalar_sql": {"tf": 1}, "sqlglot.dialects.dialect.inline_array_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_ilike_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_paren_current_date_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_recursive_cte_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_safe_divide_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_tablesample_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_pivot_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_trycast_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_properties_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_comment_column_constraint_sql": {"tf": 1}, "sqlglot.dialects.dialect.str_position_sql": {"tf": 1}, "sqlglot.dialects.dialect.struct_extract_sql": {"tf": 1}, "sqlglot.dialects.dialect.var_map_sql": {"tf": 1}, "sqlglot.dialects.dialect.format_time_lambda": {"tf": 1}, "sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1}, "sqlglot.dialects.dialect.parse_date_delta": {"tf": 1}, "sqlglot.dialects.dialect.parse_date_delta_with_interval": {"tf": 1}, "sqlglot.dialects.dialect.date_trunc_to_time": {"tf": 1}, "sqlglot.dialects.dialect.timestamptrunc_sql": {"tf": 1}, "sqlglot.dialects.dialect.locate_to_strposition": {"tf": 1}, "sqlglot.dialects.dialect.strposition_to_locate_sql": {"tf": 1}, "sqlglot.dialects.dialect.timestrtotime_sql": {"tf": 1}, "sqlglot.dialects.dialect.datestrtodate_sql": {"tf": 1}, "sqlglot.dialects.dialect.min_or_least": {"tf": 1}, "sqlglot.dialects.dialect.max_or_greatest": {"tf": 1}, "sqlglot.dialects.dialect.count_if_to_sum": {"tf": 1}, "sqlglot.dialects.dialect.trim_sql": {"tf": 1}, "sqlglot.dialects.dialect.str_to_time_sql": {"tf": 1}, "sqlglot.dialects.dialect.ts_or_ds_to_date_sql": {"tf": 1}, "sqlglot.dialects.drill": {"tf": 1}, "sqlglot.dialects.drill.Drill": {"tf": 1}, "sqlglot.dialects.drill.Drill.Tokenizer": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator.normalize_func": {"tf": 1}, "sqlglot.dialects.duckdb": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Tokenizer": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator.tablesample_sql": {"tf": 1}, "sqlglot.dialects.hive": {"tf": 1}, "sqlglot.dialects.hive.Hive": {"tf": 1}, "sqlglot.dialects.hive.Hive.Tokenizer": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator.arrayagg_sql": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator.with_properties": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.mysql": {"tf": 1}, "sqlglot.dialects.mysql.MySQL": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Tokenizer": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator.show_sql": {"tf": 1}, "sqlglot.dialects.oracle": {"tf": 1}, "sqlglot.dialects.oracle.Oracle": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator.offset_sql": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator.column_sql": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator.xmltable_sql": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Tokenizer": {"tf": 1}, "sqlglot.dialects.postgres": {"tf": 1}, "sqlglot.dialects.postgres.Postgres": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Tokenizer": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto": {"tf": 1}, "sqlglot.dialects.presto.Presto": {"tf": 1}, "sqlglot.dialects.presto.Presto.Tokenizer": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator.interval_sql": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator.transaction_sql": {"tf": 1}, "sqlglot.dialects.redshift": {"tf": 1}, "sqlglot.dialects.redshift.Redshift": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Tokenizer": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.with_properties": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.renametable_sql": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.snowflake": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Tokenizer": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.except_op": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.intersect_op": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.settag_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.describe_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.generatedasidentitycolumnconstraint_sql": {"tf": 1}, "sqlglot.dialects.spark": {"tf": 1}, "sqlglot.dialects.spark.Spark": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator.cast_sql": {"tf": 1}, "sqlglot.dialects.spark.Spark.Tokenizer": {"tf": 1}, "sqlglot.dialects.sqlite": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Tokenizer": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.cast_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.datediff_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.groupconcat_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.least_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.transaction_sql": {"tf": 1}, "sqlglot.dialects.starrocks": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau": {"tf": 1}, "sqlglot.dialects.tableau.Tableau": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata": {"tf": 1}, "sqlglot.dialects.teradata.Teradata": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Tokenizer": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.partitionedbyproperty_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.update_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.mod_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.rangen_sql": {"tf": 1}, "sqlglot.dialects.trino": {"tf": 1}, "sqlglot.dialects.trino.Trino": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Tokenizer": {"tf": 1}, "sqlglot.dialects.tsql": {"tf": 1}, "sqlglot.dialects.tsql.generate_date_delta_with_unit_sql": {"tf": 1}, "sqlglot.dialects.tsql.TSQL": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Tokenizer": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator.offset_sql": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator.systemtime_sql": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator.returnsproperty_sql": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.diff.Insert": {"tf": 1}, "sqlglot.diff.Insert.__init__": {"tf": 1}, "sqlglot.diff.Remove": {"tf": 1}, "sqlglot.diff.Remove.__init__": {"tf": 1}, "sqlglot.diff.Move": {"tf": 1}, "sqlglot.diff.Move.__init__": {"tf": 1}, "sqlglot.diff.Update": {"tf": 1}, "sqlglot.diff.Update.__init__": {"tf": 1}, "sqlglot.diff.Keep": {"tf": 1}, "sqlglot.diff.Keep.__init__": {"tf": 1}, "sqlglot.diff.diff": {"tf": 1}, "sqlglot.diff.ChangeDistiller": {"tf": 1}, "sqlglot.diff.ChangeDistiller.__init__": {"tf": 1}, "sqlglot.diff.ChangeDistiller.diff": {"tf": 1}, "sqlglot.errors": {"tf": 1}, "sqlglot.errors.ErrorLevel": {"tf": 1}, "sqlglot.errors.ErrorLevel.IGNORE": {"tf": 1}, "sqlglot.errors.ErrorLevel.WARN": {"tf": 1}, "sqlglot.errors.ErrorLevel.RAISE": {"tf": 1}, "sqlglot.errors.ErrorLevel.IMMEDIATE": {"tf": 1}, "sqlglot.errors.SqlglotError": {"tf": 1}, "sqlglot.errors.UnsupportedError": {"tf": 1}, "sqlglot.errors.ParseError": {"tf": 1}, "sqlglot.errors.ParseError.__init__": {"tf": 1}, "sqlglot.errors.ParseError.new": {"tf": 1}, "sqlglot.errors.TokenError": {"tf": 1}, "sqlglot.errors.OptimizeError": {"tf": 1}, "sqlglot.errors.SchemaError": {"tf": 1}, "sqlglot.errors.ExecuteError": {"tf": 1}, "sqlglot.errors.concat_messages": {"tf": 1}, "sqlglot.errors.merge_errors": {"tf": 1}, "sqlglot.executor": {"tf": 1}, "sqlglot.executor.execute": {"tf": 1}, "sqlglot.executor.context": {"tf": 1}, "sqlglot.executor.context.Context": {"tf": 1}, "sqlglot.executor.context.Context.__init__": {"tf": 1}, "sqlglot.executor.context.Context.eval": {"tf": 1}, "sqlglot.executor.context.Context.eval_tuple": {"tf": 1}, "sqlglot.executor.context.Context.add_columns": {"tf": 1}, "sqlglot.executor.context.Context.table_iter": {"tf": 1}, "sqlglot.executor.context.Context.filter": {"tf": 1}, "sqlglot.executor.context.Context.sort": {"tf": 1}, "sqlglot.executor.context.Context.set_row": {"tf": 1}, "sqlglot.executor.context.Context.set_index": {"tf": 1}, "sqlglot.executor.context.Context.set_range": {"tf": 1}, "sqlglot.executor.env": {"tf": 1}, "sqlglot.executor.env.reverse_key": {"tf": 1}, "sqlglot.executor.env.reverse_key.__init__": {"tf": 1}, "sqlglot.executor.env.filter_nulls": {"tf": 1}, "sqlglot.executor.env.null_if_any": {"tf": 1}, "sqlglot.executor.env.str_position": {"tf": 1}, "sqlglot.executor.env.substring": {"tf": 1}, "sqlglot.executor.env.cast": {"tf": 1}, "sqlglot.executor.env.ordered": {"tf": 1}, "sqlglot.executor.env.interval": {"tf": 1}, "sqlglot.executor.python": {"tf": 1}, "sqlglot.executor.python.PythonExecutor": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.__init__": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.execute": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.generate": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.generate_tuple": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.context": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.table": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.scan": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.static": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.scan_table": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.scan_csv": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.join": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.nested_loop_join": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.hash_join": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.aggregate": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.sort": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.set_operation": {"tf": 1}, "sqlglot.executor.python.Python": {"tf": 1}, "sqlglot.executor.python.Python.Tokenizer": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.executor.table": {"tf": 1}, "sqlglot.executor.table.Table": {"tf": 1}, "sqlglot.executor.table.Table.__init__": {"tf": 1}, "sqlglot.executor.table.Table.add_columns": {"tf": 1}, "sqlglot.executor.table.Table.append": {"tf": 1}, "sqlglot.executor.table.Table.pop": {"tf": 1}, "sqlglot.executor.table.TableIter": {"tf": 1}, "sqlglot.executor.table.TableIter.__init__": {"tf": 1}, "sqlglot.executor.table.RangeReader": {"tf": 1}, "sqlglot.executor.table.RangeReader.__init__": {"tf": 1}, "sqlglot.executor.table.RowReader": {"tf": 1}, "sqlglot.executor.table.RowReader.__init__": {"tf": 1}, "sqlglot.executor.table.Tables": {"tf": 1}, "sqlglot.executor.table.ensure_tables": {"tf": 1}, "sqlglot.expressions": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.expressions.Expression.__init__": {"tf": 1}, "sqlglot.expressions.Expression.this": {"tf": 1}, "sqlglot.expressions.Expression.expression": {"tf": 1}, "sqlglot.expressions.Expression.expressions": {"tf": 1}, "sqlglot.expressions.Expression.text": {"tf": 1}, "sqlglot.expressions.Expression.is_string": {"tf": 1}, "sqlglot.expressions.Expression.is_number": {"tf": 1}, "sqlglot.expressions.Expression.is_int": {"tf": 1}, "sqlglot.expressions.Expression.is_star": {"tf": 1}, "sqlglot.expressions.Expression.alias": {"tf": 1}, "sqlglot.expressions.Expression.output_name": {"tf": 1}, "sqlglot.expressions.Expression.copy": {"tf": 1}, "sqlglot.expressions.Expression.append": {"tf": 1}, "sqlglot.expressions.Expression.set": {"tf": 1}, "sqlglot.expressions.Expression.depth": {"tf": 1}, "sqlglot.expressions.Expression.iter_expressions": {"tf": 1}, "sqlglot.expressions.Expression.find": {"tf": 1}, "sqlglot.expressions.Expression.find_all": {"tf": 1}, "sqlglot.expressions.Expression.find_ancestor": {"tf": 1}, "sqlglot.expressions.Expression.parent_select": {"tf": 1}, "sqlglot.expressions.Expression.same_parent": {"tf": 1}, "sqlglot.expressions.Expression.root": {"tf": 1}, "sqlglot.expressions.Expression.walk": {"tf": 1}, "sqlglot.expressions.Expression.dfs": {"tf": 1}, "sqlglot.expressions.Expression.bfs": {"tf": 1}, "sqlglot.expressions.Expression.unnest": {"tf": 1}, "sqlglot.expressions.Expression.unalias": {"tf": 1}, "sqlglot.expressions.Expression.unnest_operands": {"tf": 1}, "sqlglot.expressions.Expression.flatten": {"tf": 1}, "sqlglot.expressions.Expression.sql": {"tf": 1}, "sqlglot.expressions.Expression.transform": {"tf": 1}, "sqlglot.expressions.Expression.replace": {"tf": 1}, "sqlglot.expressions.Expression.pop": {"tf": 1}, "sqlglot.expressions.Expression.assert_is": {"tf": 1}, "sqlglot.expressions.Expression.error_messages": {"tf": 1}, "sqlglot.expressions.Expression.dump": {"tf": 1}, "sqlglot.expressions.Expression.load": {"tf": 1}, "sqlglot.expressions.Condition": {"tf": 1}, "sqlglot.expressions.Condition.and_": {"tf": 1}, "sqlglot.expressions.Condition.or_": {"tf": 1}, "sqlglot.expressions.Condition.not_": {"tf": 1}, "sqlglot.expressions.Predicate": {"tf": 1}, "sqlglot.expressions.DerivedTable": {"tf": 1}, "sqlglot.expressions.Unionable": {"tf": 1}, "sqlglot.expressions.Unionable.union": {"tf": 1}, "sqlglot.expressions.Unionable.intersect": {"tf": 1}, "sqlglot.expressions.Unionable.except_": {"tf": 1}, "sqlglot.expressions.UDTF": {"tf": 1}, "sqlglot.expressions.Cache": {"tf": 1}, "sqlglot.expressions.Uncache": {"tf": 1}, "sqlglot.expressions.Create": {"tf": 1}, "sqlglot.expressions.Describe": {"tf": 1}, "sqlglot.expressions.Pragma": {"tf": 1}, "sqlglot.expressions.Set": {"tf": 1}, "sqlglot.expressions.SetItem": {"tf": 1}, "sqlglot.expressions.Show": {"tf": 1}, "sqlglot.expressions.UserDefinedFunction": {"tf": 1}, "sqlglot.expressions.CharacterSet": {"tf": 1}, "sqlglot.expressions.With": {"tf": 1}, "sqlglot.expressions.WithinGroup": {"tf": 1}, "sqlglot.expressions.CTE": {"tf": 1}, "sqlglot.expressions.TableAlias": {"tf": 1}, "sqlglot.expressions.BitString": {"tf": 1}, "sqlglot.expressions.HexString": {"tf": 1}, "sqlglot.expressions.ByteString": {"tf": 1}, "sqlglot.expressions.Column": {"tf": 1}, "sqlglot.expressions.Column.output_name": {"tf": 1}, "sqlglot.expressions.Column.parts": {"tf": 1}, "sqlglot.expressions.Column.to_dot": {"tf": 1}, "sqlglot.expressions.ColumnPosition": {"tf": 1}, "sqlglot.expressions.ColumnDef": {"tf": 1}, "sqlglot.expressions.AlterColumn": {"tf": 1}, "sqlglot.expressions.RenameTable": {"tf": 1}, "sqlglot.expressions.SetTag": {"tf": 1}, "sqlglot.expressions.Comment": {"tf": 1}, "sqlglot.expressions.ColumnConstraint": {"tf": 1}, "sqlglot.expressions.ColumnConstraintKind": {"tf": 1}, "sqlglot.expressions.AutoIncrementColumnConstraint": {"tf": 1}, "sqlglot.expressions.CaseSpecificColumnConstraint": {"tf": 1}, "sqlglot.expressions.CharacterSetColumnConstraint": {"tf": 1}, "sqlglot.expressions.CheckColumnConstraint": {"tf": 1}, "sqlglot.expressions.CollateColumnConstraint": {"tf": 1}, "sqlglot.expressions.CommentColumnConstraint": {"tf": 1}, "sqlglot.expressions.CompressColumnConstraint": {"tf": 1}, "sqlglot.expressions.DateFormatColumnConstraint": {"tf": 1}, "sqlglot.expressions.DefaultColumnConstraint": {"tf": 1}, "sqlglot.expressions.EncodeColumnConstraint": {"tf": 1}, "sqlglot.expressions.GeneratedAsIdentityColumnConstraint": {"tf": 1}, "sqlglot.expressions.InlineLengthColumnConstraint": {"tf": 1}, "sqlglot.expressions.NotNullColumnConstraint": {"tf": 1}, "sqlglot.expressions.OnUpdateColumnConstraint": {"tf": 1}, "sqlglot.expressions.PrimaryKeyColumnConstraint": {"tf": 1}, "sqlglot.expressions.TitleColumnConstraint": {"tf": 1}, "sqlglot.expressions.UniqueColumnConstraint": {"tf": 1}, "sqlglot.expressions.UppercaseColumnConstraint": {"tf": 1}, "sqlglot.expressions.PathColumnConstraint": {"tf": 1}, "sqlglot.expressions.Constraint": {"tf": 1}, "sqlglot.expressions.Delete": {"tf": 1}, "sqlglot.expressions.Delete.delete": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Delete.returning": {"tf": 1}, "sqlglot.expressions.Drop": {"tf": 1}, "sqlglot.expressions.Filter": {"tf": 1}, "sqlglot.expressions.Check": {"tf": 1}, "sqlglot.expressions.Directory": {"tf": 1}, "sqlglot.expressions.ForeignKey": {"tf": 1}, "sqlglot.expressions.PrimaryKey": {"tf": 1}, "sqlglot.expressions.Unique": {"tf": 1}, "sqlglot.expressions.Into": {"tf": 1}, "sqlglot.expressions.From": {"tf": 1}, "sqlglot.expressions.Having": {"tf": 1}, "sqlglot.expressions.Hint": {"tf": 1}, "sqlglot.expressions.JoinHint": {"tf": 1}, "sqlglot.expressions.Identifier": {"tf": 1}, "sqlglot.expressions.Identifier.output_name": {"tf": 1}, "sqlglot.expressions.Index": {"tf": 1}, "sqlglot.expressions.Insert": {"tf": 1}, "sqlglot.expressions.OnConflict": {"tf": 1}, "sqlglot.expressions.Returning": {"tf": 1}, "sqlglot.expressions.Introducer": {"tf": 1}, "sqlglot.expressions.National": {"tf": 1}, "sqlglot.expressions.LoadData": {"tf": 1}, "sqlglot.expressions.Partition": {"tf": 1}, "sqlglot.expressions.Fetch": {"tf": 1}, "sqlglot.expressions.Group": {"tf": 1}, "sqlglot.expressions.Lambda": {"tf": 1}, "sqlglot.expressions.Limit": {"tf": 1}, "sqlglot.expressions.Literal": {"tf": 1}, "sqlglot.expressions.Literal.number": {"tf": 1}, "sqlglot.expressions.Literal.string": {"tf": 1}, "sqlglot.expressions.Literal.output_name": {"tf": 1}, "sqlglot.expressions.Join": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Join.using": {"tf": 1}, "sqlglot.expressions.Lateral": {"tf": 1}, "sqlglot.expressions.MatchRecognize": {"tf": 1}, "sqlglot.expressions.Final": {"tf": 1}, "sqlglot.expressions.Offset": {"tf": 1}, "sqlglot.expressions.Order": {"tf": 1}, "sqlglot.expressions.Cluster": {"tf": 1}, "sqlglot.expressions.Distribute": {"tf": 1}, "sqlglot.expressions.Sort": {"tf": 1}, "sqlglot.expressions.Ordered": {"tf": 1}, "sqlglot.expressions.Property": {"tf": 1}, "sqlglot.expressions.AfterJournalProperty": {"tf": 1}, "sqlglot.expressions.AlgorithmProperty": {"tf": 1}, "sqlglot.expressions.AutoIncrementProperty": {"tf": 1}, "sqlglot.expressions.BlockCompressionProperty": {"tf": 1}, "sqlglot.expressions.CharacterSetProperty": {"tf": 1}, "sqlglot.expressions.ChecksumProperty": {"tf": 1}, "sqlglot.expressions.CollateProperty": {"tf": 1}, "sqlglot.expressions.DataBlocksizeProperty": {"tf": 1}, "sqlglot.expressions.DefinerProperty": {"tf": 1}, "sqlglot.expressions.DistKeyProperty": {"tf": 1}, "sqlglot.expressions.DistStyleProperty": {"tf": 1}, "sqlglot.expressions.EngineProperty": {"tf": 1}, "sqlglot.expressions.ExecuteAsProperty": {"tf": 1}, "sqlglot.expressions.ExternalProperty": {"tf": 1}, "sqlglot.expressions.FallbackProperty": {"tf": 1}, "sqlglot.expressions.FileFormatProperty": {"tf": 1}, "sqlglot.expressions.FreespaceProperty": {"tf": 1}, "sqlglot.expressions.InputOutputFormat": {"tf": 1}, "sqlglot.expressions.IsolatedLoadingProperty": {"tf": 1}, "sqlglot.expressions.JournalProperty": {"tf": 1}, "sqlglot.expressions.LanguageProperty": {"tf": 1}, "sqlglot.expressions.LikeProperty": {"tf": 1}, "sqlglot.expressions.LocationProperty": {"tf": 1}, "sqlglot.expressions.LockingProperty": {"tf": 1}, "sqlglot.expressions.LogProperty": {"tf": 1}, "sqlglot.expressions.MaterializedProperty": {"tf": 1}, "sqlglot.expressions.MergeBlockRatioProperty": {"tf": 1}, "sqlglot.expressions.NoPrimaryIndexProperty": {"tf": 1}, "sqlglot.expressions.OnCommitProperty": {"tf": 1}, "sqlglot.expressions.PartitionedByProperty": {"tf": 1}, "sqlglot.expressions.ReturnsProperty": {"tf": 1}, "sqlglot.expressions.RowFormatProperty": {"tf": 1}, "sqlglot.expressions.RowFormatDelimitedProperty": {"tf": 1}, "sqlglot.expressions.RowFormatSerdeProperty": {"tf": 1}, "sqlglot.expressions.SchemaCommentProperty": {"tf": 1}, "sqlglot.expressions.SerdeProperties": {"tf": 1}, "sqlglot.expressions.SetProperty": {"tf": 1}, "sqlglot.expressions.SortKeyProperty": {"tf": 1}, "sqlglot.expressions.SqlSecurityProperty": {"tf": 1}, "sqlglot.expressions.StabilityProperty": {"tf": 1}, "sqlglot.expressions.TableFormatProperty": {"tf": 1}, "sqlglot.expressions.TemporaryProperty": {"tf": 1}, "sqlglot.expressions.TransientProperty": {"tf": 1}, "sqlglot.expressions.VolatileProperty": {"tf": 1}, "sqlglot.expressions.WithDataProperty": {"tf": 1}, "sqlglot.expressions.WithJournalTableProperty": {"tf": 1}, "sqlglot.expressions.Properties": {"tf": 1}, "sqlglot.expressions.Properties.Location": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_CREATE": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_NAME": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_SCHEMA": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_WITH": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_ALIAS": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_EXPRESSION": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_INDEX": {"tf": 1}, "sqlglot.expressions.Properties.Location.UNSUPPORTED": {"tf": 1}, "sqlglot.expressions.Properties.from_dict": {"tf": 1}, "sqlglot.expressions.Qualify": {"tf": 1}, "sqlglot.expressions.Return": {"tf": 1}, "sqlglot.expressions.Reference": {"tf": 1}, "sqlglot.expressions.Tuple": {"tf": 1}, "sqlglot.expressions.Subqueryable": {"tf": 1}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 1}, "sqlglot.expressions.Subqueryable.limit": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1}, "sqlglot.expressions.Table": {"tf": 1}, "sqlglot.expressions.SystemTime": {"tf": 1}, "sqlglot.expressions.Union": {"tf": 1}, "sqlglot.expressions.Union.limit": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 1}, "sqlglot.expressions.Union.is_star": {"tf": 1}, "sqlglot.expressions.Except": {"tf": 1}, "sqlglot.expressions.Intersect": {"tf": 1}, "sqlglot.expressions.Unnest": {"tf": 1}, "sqlglot.expressions.Update": {"tf": 1}, "sqlglot.expressions.Values": {"tf": 1}, "sqlglot.expressions.Var": {"tf": 1}, "sqlglot.expressions.Schema": {"tf": 1}, "sqlglot.expressions.Lock": {"tf": 1}, "sqlglot.expressions.Select": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.expressions.Select.limit": {"tf": 1}, "sqlglot.expressions.Select.offset": {"tf": 1}, "sqlglot.expressions.Select.select": {"tf": 1}, "sqlglot.expressions.Select.lateral": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1}, "sqlglot.expressions.Select.where": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1}, "sqlglot.expressions.Select.window": {"tf": 1}, "sqlglot.expressions.Select.qualify": {"tf": 1}, "sqlglot.expressions.Select.distinct": {"tf": 1}, "sqlglot.expressions.Select.ctas": {"tf": 1}, "sqlglot.expressions.Select.lock": {"tf": 1}, "sqlglot.expressions.Select.is_star": {"tf": 1}, "sqlglot.expressions.Subquery": {"tf": 1}, "sqlglot.expressions.Subquery.unnest": {"tf": 1}, "sqlglot.expressions.Subquery.is_star": {"tf": 1}, "sqlglot.expressions.Subquery.output_name": {"tf": 1}, "sqlglot.expressions.TableSample": {"tf": 1}, "sqlglot.expressions.Tag": {"tf": 1}, "sqlglot.expressions.Pivot": {"tf": 1}, "sqlglot.expressions.Window": {"tf": 1}, "sqlglot.expressions.WindowSpec": {"tf": 1}, "sqlglot.expressions.Where": {"tf": 1}, "sqlglot.expressions.Star": {"tf": 1}, "sqlglot.expressions.Star.output_name": {"tf": 1}, "sqlglot.expressions.Parameter": {"tf": 1}, "sqlglot.expressions.SessionParameter": {"tf": 1}, "sqlglot.expressions.Placeholder": {"tf": 1}, "sqlglot.expressions.Null": {"tf": 1}, "sqlglot.expressions.Boolean": {"tf": 1}, "sqlglot.expressions.DataType": {"tf": 1}, "sqlglot.expressions.DataType.Type": {"tf": 1}, "sqlglot.expressions.DataType.Type.CHAR": {"tf": 1}, "sqlglot.expressions.DataType.Type.NCHAR": {"tf": 1}, "sqlglot.expressions.DataType.Type.VARCHAR": {"tf": 1}, "sqlglot.expressions.DataType.Type.NVARCHAR": {"tf": 1}, "sqlglot.expressions.DataType.Type.TEXT": {"tf": 1}, "sqlglot.expressions.DataType.Type.MEDIUMTEXT": {"tf": 1}, "sqlglot.expressions.DataType.Type.LONGTEXT": {"tf": 1}, "sqlglot.expressions.DataType.Type.MEDIUMBLOB": {"tf": 1}, "sqlglot.expressions.DataType.Type.LONGBLOB": {"tf": 1}, "sqlglot.expressions.DataType.Type.BINARY": {"tf": 1}, "sqlglot.expressions.DataType.Type.VARBINARY": {"tf": 1}, "sqlglot.expressions.DataType.Type.INT": {"tf": 1}, "sqlglot.expressions.DataType.Type.UINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.TINYINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.UTINYINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.SMALLINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.USMALLINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.BIGINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.UBIGINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.FLOAT": {"tf": 1}, "sqlglot.expressions.DataType.Type.DOUBLE": {"tf": 1}, "sqlglot.expressions.DataType.Type.DECIMAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.BIGDECIMAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.BIT": {"tf": 1}, "sqlglot.expressions.DataType.Type.BOOLEAN": {"tf": 1}, "sqlglot.expressions.DataType.Type.JSON": {"tf": 1}, "sqlglot.expressions.DataType.Type.JSONB": {"tf": 1}, "sqlglot.expressions.DataType.Type.INTERVAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.TIME": {"tf": 1}, "sqlglot.expressions.DataType.Type.TIMESTAMP": {"tf": 1}, "sqlglot.expressions.DataType.Type.TIMESTAMPTZ": {"tf": 1}, "sqlglot.expressions.DataType.Type.TIMESTAMPLTZ": {"tf": 1}, "sqlglot.expressions.DataType.Type.DATE": {"tf": 1}, "sqlglot.expressions.DataType.Type.DATETIME": {"tf": 1}, "sqlglot.expressions.DataType.Type.ARRAY": {"tf": 1}, "sqlglot.expressions.DataType.Type.MAP": {"tf": 1}, "sqlglot.expressions.DataType.Type.UUID": {"tf": 1}, "sqlglot.expressions.DataType.Type.GEOGRAPHY": {"tf": 1}, "sqlglot.expressions.DataType.Type.GEOMETRY": {"tf": 1}, "sqlglot.expressions.DataType.Type.STRUCT": {"tf": 1}, "sqlglot.expressions.DataType.Type.NULLABLE": {"tf": 1}, "sqlglot.expressions.DataType.Type.HLLSKETCH": {"tf": 1}, "sqlglot.expressions.DataType.Type.HSTORE": {"tf": 1}, "sqlglot.expressions.DataType.Type.SUPER": {"tf": 1}, "sqlglot.expressions.DataType.Type.SERIAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.SMALLSERIAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.BIGSERIAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.XML": {"tf": 1}, "sqlglot.expressions.DataType.Type.UNIQUEIDENTIFIER": {"tf": 1}, "sqlglot.expressions.DataType.Type.MONEY": {"tf": 1}, "sqlglot.expressions.DataType.Type.SMALLMONEY": {"tf": 1}, "sqlglot.expressions.DataType.Type.ROWVERSION": {"tf": 1}, "sqlglot.expressions.DataType.Type.IMAGE": {"tf": 1}, "sqlglot.expressions.DataType.Type.VARIANT": {"tf": 1}, "sqlglot.expressions.DataType.Type.OBJECT": {"tf": 1}, "sqlglot.expressions.DataType.Type.INET": {"tf": 1}, "sqlglot.expressions.DataType.Type.NULL": {"tf": 1}, "sqlglot.expressions.DataType.Type.UNKNOWN": {"tf": 1}, "sqlglot.expressions.DataType.build": {"tf": 1}, "sqlglot.expressions.DataType.is_type": {"tf": 1}, "sqlglot.expressions.PseudoType": {"tf": 1}, "sqlglot.expressions.StructKwarg": {"tf": 1}, "sqlglot.expressions.SubqueryPredicate": {"tf": 1}, "sqlglot.expressions.All": {"tf": 1}, "sqlglot.expressions.Any": {"tf": 1}, "sqlglot.expressions.Exists": {"tf": 1}, "sqlglot.expressions.Command": {"tf": 1}, "sqlglot.expressions.Transaction": {"tf": 1}, "sqlglot.expressions.Commit": {"tf": 1}, "sqlglot.expressions.Rollback": {"tf": 1}, "sqlglot.expressions.AlterTable": {"tf": 1}, "sqlglot.expressions.AddConstraint": {"tf": 1}, "sqlglot.expressions.DropPartition": {"tf": 1}, "sqlglot.expressions.Binary": {"tf": 1}, "sqlglot.expressions.Add": {"tf": 1}, "sqlglot.expressions.Connector": {"tf": 1}, "sqlglot.expressions.And": {"tf": 1}, "sqlglot.expressions.Or": {"tf": 1}, "sqlglot.expressions.BitwiseAnd": {"tf": 1}, "sqlglot.expressions.BitwiseLeftShift": {"tf": 1}, "sqlglot.expressions.BitwiseOr": {"tf": 1}, "sqlglot.expressions.BitwiseRightShift": {"tf": 1}, "sqlglot.expressions.BitwiseXor": {"tf": 1}, "sqlglot.expressions.Div": {"tf": 1}, "sqlglot.expressions.Overlaps": {"tf": 1}, "sqlglot.expressions.Dot": {"tf": 1}, "sqlglot.expressions.Dot.build": {"tf": 1}, "sqlglot.expressions.DPipe": {"tf": 1}, "sqlglot.expressions.EQ": {"tf": 1}, "sqlglot.expressions.NullSafeEQ": {"tf": 1}, "sqlglot.expressions.NullSafeNEQ": {"tf": 1}, "sqlglot.expressions.Distance": {"tf": 1}, "sqlglot.expressions.Escape": {"tf": 1}, "sqlglot.expressions.Glob": {"tf": 1}, "sqlglot.expressions.GT": {"tf": 1}, "sqlglot.expressions.GTE": {"tf": 1}, "sqlglot.expressions.ILike": {"tf": 1}, "sqlglot.expressions.ILikeAny": {"tf": 1}, "sqlglot.expressions.IntDiv": {"tf": 1}, "sqlglot.expressions.Is": {"tf": 1}, "sqlglot.expressions.Kwarg": {"tf": 1}, "sqlglot.expressions.Like": {"tf": 1}, "sqlglot.expressions.LikeAny": {"tf": 1}, "sqlglot.expressions.LT": {"tf": 1}, "sqlglot.expressions.LTE": {"tf": 1}, "sqlglot.expressions.Mod": {"tf": 1}, "sqlglot.expressions.Mul": {"tf": 1}, "sqlglot.expressions.NEQ": {"tf": 1}, "sqlglot.expressions.SimilarTo": {"tf": 1}, "sqlglot.expressions.Slice": {"tf": 1}, "sqlglot.expressions.Sub": {"tf": 1}, "sqlglot.expressions.ArrayOverlaps": {"tf": 1}, "sqlglot.expressions.Unary": {"tf": 1}, "sqlglot.expressions.BitwiseNot": {"tf": 1}, "sqlglot.expressions.Not": {"tf": 1}, "sqlglot.expressions.Paren": {"tf": 1}, "sqlglot.expressions.Neg": {"tf": 1}, "sqlglot.expressions.Alias": {"tf": 1}, "sqlglot.expressions.Alias.output_name": {"tf": 1}, "sqlglot.expressions.Aliases": {"tf": 1}, "sqlglot.expressions.AtTimeZone": {"tf": 1}, "sqlglot.expressions.Between": {"tf": 1}, "sqlglot.expressions.Bracket": {"tf": 1}, "sqlglot.expressions.Distinct": {"tf": 1}, "sqlglot.expressions.In": {"tf": 1}, "sqlglot.expressions.TimeUnit": {"tf": 1}, "sqlglot.expressions.TimeUnit.__init__": {"tf": 1}, "sqlglot.expressions.Interval": {"tf": 1}, "sqlglot.expressions.IgnoreNulls": {"tf": 1}, "sqlglot.expressions.RespectNulls": {"tf": 1}, "sqlglot.expressions.Func": {"tf": 1}, "sqlglot.expressions.Func.from_arg_list": {"tf": 1}, "sqlglot.expressions.Func.sql_names": {"tf": 1}, "sqlglot.expressions.Func.sql_name": {"tf": 1}, "sqlglot.expressions.Func.default_parser_mappings": {"tf": 1}, "sqlglot.expressions.AggFunc": {"tf": 1}, "sqlglot.expressions.Abs": {"tf": 1}, "sqlglot.expressions.Anonymous": {"tf": 1}, "sqlglot.expressions.Hll": {"tf": 1}, "sqlglot.expressions.ApproxDistinct": {"tf": 1}, "sqlglot.expressions.Array": {"tf": 1}, "sqlglot.expressions.ToChar": {"tf": 1}, "sqlglot.expressions.GenerateSeries": {"tf": 1}, "sqlglot.expressions.ArrayAgg": {"tf": 1}, "sqlglot.expressions.ArrayAll": {"tf": 1}, "sqlglot.expressions.ArrayAny": {"tf": 1}, "sqlglot.expressions.ArrayConcat": {"tf": 1}, "sqlglot.expressions.ArrayContains": {"tf": 1}, "sqlglot.expressions.ArrayContained": {"tf": 1}, "sqlglot.expressions.ArrayFilter": {"tf": 1}, "sqlglot.expressions.ArrayJoin": {"tf": 1}, "sqlglot.expressions.ArraySize": {"tf": 1}, "sqlglot.expressions.ArraySort": {"tf": 1}, "sqlglot.expressions.ArraySum": {"tf": 1}, "sqlglot.expressions.ArrayUnionAgg": {"tf": 1}, "sqlglot.expressions.Avg": {"tf": 1}, "sqlglot.expressions.AnyValue": {"tf": 1}, "sqlglot.expressions.Case": {"tf": 1}, "sqlglot.expressions.Cast": {"tf": 1}, "sqlglot.expressions.Cast.output_name": {"tf": 1}, "sqlglot.expressions.Cast.is_type": {"tf": 1}, "sqlglot.expressions.Collate": {"tf": 1}, "sqlglot.expressions.TryCast": {"tf": 1}, "sqlglot.expressions.Ceil": {"tf": 1}, "sqlglot.expressions.Coalesce": {"tf": 1}, "sqlglot.expressions.Concat": {"tf": 1}, "sqlglot.expressions.ConcatWs": {"tf": 1}, "sqlglot.expressions.Count": {"tf": 1}, "sqlglot.expressions.CountIf": {"tf": 1}, "sqlglot.expressions.CurrentDate": {"tf": 1}, "sqlglot.expressions.CurrentDatetime": {"tf": 1}, "sqlglot.expressions.CurrentTime": {"tf": 1}, "sqlglot.expressions.CurrentTimestamp": {"tf": 1}, "sqlglot.expressions.CurrentUser": {"tf": 1}, "sqlglot.expressions.DateAdd": {"tf": 1}, "sqlglot.expressions.DateSub": {"tf": 1}, "sqlglot.expressions.DateDiff": {"tf": 1}, "sqlglot.expressions.DateTrunc": {"tf": 1}, "sqlglot.expressions.DatetimeAdd": {"tf": 1}, "sqlglot.expressions.DatetimeSub": {"tf": 1}, "sqlglot.expressions.DatetimeDiff": {"tf": 1}, "sqlglot.expressions.DatetimeTrunc": {"tf": 1}, "sqlglot.expressions.DayOfWeek": {"tf": 1}, "sqlglot.expressions.DayOfMonth": {"tf": 1}, "sqlglot.expressions.DayOfYear": {"tf": 1}, "sqlglot.expressions.WeekOfYear": {"tf": 1}, "sqlglot.expressions.LastDateOfMonth": {"tf": 1}, "sqlglot.expressions.Extract": {"tf": 1}, "sqlglot.expressions.TimestampAdd": {"tf": 1}, "sqlglot.expressions.TimestampSub": {"tf": 1}, "sqlglot.expressions.TimestampDiff": {"tf": 1}, "sqlglot.expressions.TimestampTrunc": {"tf": 1}, "sqlglot.expressions.TimeAdd": {"tf": 1}, "sqlglot.expressions.TimeSub": {"tf": 1}, "sqlglot.expressions.TimeDiff": {"tf": 1}, "sqlglot.expressions.TimeTrunc": {"tf": 1}, "sqlglot.expressions.DateFromParts": {"tf": 1}, "sqlglot.expressions.DateStrToDate": {"tf": 1}, "sqlglot.expressions.DateToDateStr": {"tf": 1}, "sqlglot.expressions.DateToDi": {"tf": 1}, "sqlglot.expressions.Day": {"tf": 1}, "sqlglot.expressions.Decode": {"tf": 1}, "sqlglot.expressions.DiToDate": {"tf": 1}, "sqlglot.expressions.Encode": {"tf": 1}, "sqlglot.expressions.Exp": {"tf": 1}, "sqlglot.expressions.Explode": {"tf": 1}, "sqlglot.expressions.ExponentialTimeDecayedAvg": {"tf": 1}, "sqlglot.expressions.Floor": {"tf": 1}, "sqlglot.expressions.Greatest": {"tf": 1}, "sqlglot.expressions.GroupConcat": {"tf": 1}, "sqlglot.expressions.GroupUniqArray": {"tf": 1}, "sqlglot.expressions.Hex": {"tf": 1}, "sqlglot.expressions.Histogram": {"tf": 1}, "sqlglot.expressions.If": {"tf": 1}, "sqlglot.expressions.IfNull": {"tf": 1}, "sqlglot.expressions.Initcap": {"tf": 1}, "sqlglot.expressions.JSONKeyValue": {"tf": 1}, "sqlglot.expressions.JSONObject": {"tf": 1}, "sqlglot.expressions.JSONBContains": {"tf": 1}, "sqlglot.expressions.JSONExtract": {"tf": 1}, "sqlglot.expressions.JSONExtractScalar": {"tf": 1}, "sqlglot.expressions.JSONBExtract": {"tf": 1}, "sqlglot.expressions.JSONBExtractScalar": {"tf": 1}, "sqlglot.expressions.JSONFormat": {"tf": 1}, "sqlglot.expressions.Least": {"tf": 1}, "sqlglot.expressions.Length": {"tf": 1}, "sqlglot.expressions.Levenshtein": {"tf": 1}, "sqlglot.expressions.Ln": {"tf": 1}, "sqlglot.expressions.Log": {"tf": 1}, "sqlglot.expressions.Log2": {"tf": 1}, "sqlglot.expressions.Log10": {"tf": 1}, "sqlglot.expressions.LogicalOr": {"tf": 1}, "sqlglot.expressions.LogicalAnd": {"tf": 1}, "sqlglot.expressions.Lower": {"tf": 1}, "sqlglot.expressions.Map": {"tf": 1}, "sqlglot.expressions.StarMap": {"tf": 1}, "sqlglot.expressions.VarMap": {"tf": 1}, "sqlglot.expressions.MatchAgainst": {"tf": 1}, "sqlglot.expressions.Max": {"tf": 1}, "sqlglot.expressions.MD5": {"tf": 1}, "sqlglot.expressions.Min": {"tf": 1}, "sqlglot.expressions.Month": {"tf": 1}, "sqlglot.expressions.Nvl2": {"tf": 1}, "sqlglot.expressions.Posexplode": {"tf": 1}, "sqlglot.expressions.Pow": {"tf": 1}, "sqlglot.expressions.PercentileCont": {"tf": 1}, "sqlglot.expressions.PercentileDisc": {"tf": 1}, "sqlglot.expressions.Quantile": {"tf": 1}, "sqlglot.expressions.Quantiles": {"tf": 1}, "sqlglot.expressions.QuantileIf": {"tf": 1}, "sqlglot.expressions.ApproxQuantile": {"tf": 1}, "sqlglot.expressions.RangeN": {"tf": 1}, "sqlglot.expressions.ReadCSV": {"tf": 1}, "sqlglot.expressions.Reduce": {"tf": 1}, "sqlglot.expressions.RegexpExtract": {"tf": 1}, "sqlglot.expressions.RegexpLike": {"tf": 1}, "sqlglot.expressions.RegexpILike": {"tf": 1}, "sqlglot.expressions.RegexpSplit": {"tf": 1}, "sqlglot.expressions.Repeat": {"tf": 1}, "sqlglot.expressions.Round": {"tf": 1}, "sqlglot.expressions.RowNumber": {"tf": 1}, "sqlglot.expressions.SafeDivide": {"tf": 1}, "sqlglot.expressions.SetAgg": {"tf": 1}, "sqlglot.expressions.SHA": {"tf": 1}, "sqlglot.expressions.SHA2": {"tf": 1}, "sqlglot.expressions.SortArray": {"tf": 1}, "sqlglot.expressions.Split": {"tf": 1}, "sqlglot.expressions.Substring": {"tf": 1}, "sqlglot.expressions.StrPosition": {"tf": 1}, "sqlglot.expressions.StrToDate": {"tf": 1}, "sqlglot.expressions.StrToTime": {"tf": 1}, "sqlglot.expressions.StrToUnix": {"tf": 1}, "sqlglot.expressions.NumberToStr": {"tf": 1}, "sqlglot.expressions.Struct": {"tf": 1}, "sqlglot.expressions.StructExtract": {"tf": 1}, "sqlglot.expressions.Sum": {"tf": 1}, "sqlglot.expressions.Sqrt": {"tf": 1}, "sqlglot.expressions.Stddev": {"tf": 1}, "sqlglot.expressions.StddevPop": {"tf": 1}, "sqlglot.expressions.StddevSamp": {"tf": 1}, "sqlglot.expressions.TimeToStr": {"tf": 1}, "sqlglot.expressions.TimeToTimeStr": {"tf": 1}, "sqlglot.expressions.TimeToUnix": {"tf": 1}, "sqlglot.expressions.TimeStrToDate": {"tf": 1}, "sqlglot.expressions.TimeStrToTime": {"tf": 1}, "sqlglot.expressions.TimeStrToUnix": {"tf": 1}, "sqlglot.expressions.Trim": {"tf": 1}, "sqlglot.expressions.TsOrDsAdd": {"tf": 1}, "sqlglot.expressions.TsOrDsToDateStr": {"tf": 1}, "sqlglot.expressions.TsOrDsToDate": {"tf": 1}, "sqlglot.expressions.TsOrDiToDi": {"tf": 1}, "sqlglot.expressions.Unhex": {"tf": 1}, "sqlglot.expressions.UnixToStr": {"tf": 1}, "sqlglot.expressions.UnixToTime": {"tf": 1}, "sqlglot.expressions.UnixToTimeStr": {"tf": 1}, "sqlglot.expressions.Upper": {"tf": 1}, "sqlglot.expressions.Variance": {"tf": 1}, "sqlglot.expressions.VariancePop": {"tf": 1}, "sqlglot.expressions.Week": {"tf": 1}, "sqlglot.expressions.XMLTable": {"tf": 1}, "sqlglot.expressions.Year": {"tf": 1}, "sqlglot.expressions.Use": {"tf": 1}, "sqlglot.expressions.Merge": {"tf": 1}, "sqlglot.expressions.When": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1}, "sqlglot.expressions.union": {"tf": 1}, "sqlglot.expressions.intersect": {"tf": 1}, "sqlglot.expressions.except_": {"tf": 1}, "sqlglot.expressions.select": {"tf": 1}, "sqlglot.expressions.from_": {"tf": 1}, "sqlglot.expressions.update": {"tf": 1}, "sqlglot.expressions.delete": {"tf": 1}, "sqlglot.expressions.condition": {"tf": 1}, "sqlglot.expressions.and_": {"tf": 1}, "sqlglot.expressions.or_": {"tf": 1}, "sqlglot.expressions.not_": {"tf": 1}, "sqlglot.expressions.paren": {"tf": 1}, "sqlglot.expressions.to_identifier": {"tf": 1}, "sqlglot.expressions.to_interval": {"tf": 1}, "sqlglot.expressions.to_table": {"tf": 1}, "sqlglot.expressions.to_column": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1}, "sqlglot.expressions.subquery": {"tf": 1}, "sqlglot.expressions.column": {"tf": 1}, "sqlglot.expressions.cast": {"tf": 1}, "sqlglot.expressions.table_": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1}, "sqlglot.expressions.var": {"tf": 1}, "sqlglot.expressions.rename_table": {"tf": 1}, "sqlglot.expressions.convert": {"tf": 1}, "sqlglot.expressions.replace_children": {"tf": 1}, "sqlglot.expressions.column_table_names": {"tf": 1}, "sqlglot.expressions.table_name": {"tf": 1}, "sqlglot.expressions.replace_tables": {"tf": 1}, "sqlglot.expressions.replace_placeholders": {"tf": 1}, "sqlglot.expressions.expand": {"tf": 1}, "sqlglot.expressions.func": {"tf": 1}, "sqlglot.expressions.true": {"tf": 1}, "sqlglot.expressions.false": {"tf": 1}, "sqlglot.expressions.null": {"tf": 1}, "sqlglot.generator": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.generator.Generator.__init__": {"tf": 1}, "sqlglot.generator.Generator.generate": {"tf": 1}, "sqlglot.generator.Generator.unsupported": {"tf": 1}, "sqlglot.generator.Generator.sep": {"tf": 1}, "sqlglot.generator.Generator.seg": {"tf": 1}, "sqlglot.generator.Generator.pad_comment": {"tf": 1}, "sqlglot.generator.Generator.maybe_comment": {"tf": 1}, "sqlglot.generator.Generator.wrap": {"tf": 1}, "sqlglot.generator.Generator.no_identify": {"tf": 1}, "sqlglot.generator.Generator.normalize_func": {"tf": 1}, "sqlglot.generator.Generator.indent": {"tf": 1}, "sqlglot.generator.Generator.sql": {"tf": 1}, "sqlglot.generator.Generator.uncache_sql": {"tf": 1}, "sqlglot.generator.Generator.cache_sql": {"tf": 1}, "sqlglot.generator.Generator.characterset_sql": {"tf": 1}, "sqlglot.generator.Generator.column_sql": {"tf": 1}, "sqlglot.generator.Generator.columnposition_sql": {"tf": 1}, "sqlglot.generator.Generator.columndef_sql": {"tf": 1}, "sqlglot.generator.Generator.columnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.autoincrementcolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.compresscolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.generatedasidentitycolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.notnullcolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.primarykeycolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.uniquecolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.create_sql": {"tf": 1}, "sqlglot.generator.Generator.describe_sql": {"tf": 1}, "sqlglot.generator.Generator.prepend_ctes": {"tf": 1}, "sqlglot.generator.Generator.with_sql": {"tf": 1}, "sqlglot.generator.Generator.cte_sql": {"tf": 1}, "sqlglot.generator.Generator.tablealias_sql": {"tf": 1}, "sqlglot.generator.Generator.bitstring_sql": {"tf": 1}, "sqlglot.generator.Generator.hexstring_sql": {"tf": 1}, "sqlglot.generator.Generator.bytestring_sql": {"tf": 1}, "sqlglot.generator.Generator.datatype_sql": {"tf": 1}, "sqlglot.generator.Generator.directory_sql": {"tf": 1}, "sqlglot.generator.Generator.delete_sql": {"tf": 1}, "sqlglot.generator.Generator.drop_sql": {"tf": 1}, "sqlglot.generator.Generator.except_sql": {"tf": 1}, "sqlglot.generator.Generator.except_op": {"tf": 1}, "sqlglot.generator.Generator.fetch_sql": {"tf": 1}, "sqlglot.generator.Generator.filter_sql": {"tf": 1}, "sqlglot.generator.Generator.hint_sql": {"tf": 1}, "sqlglot.generator.Generator.index_sql": {"tf": 1}, "sqlglot.generator.Generator.identifier_sql": {"tf": 1}, "sqlglot.generator.Generator.inputoutputformat_sql": {"tf": 1}, "sqlglot.generator.Generator.national_sql": {"tf": 1}, "sqlglot.generator.Generator.partition_sql": {"tf": 1}, "sqlglot.generator.Generator.properties_sql": {"tf": 1}, "sqlglot.generator.Generator.root_properties": {"tf": 1}, "sqlglot.generator.Generator.properties": {"tf": 1}, "sqlglot.generator.Generator.with_properties": {"tf": 1}, "sqlglot.generator.Generator.locate_properties": {"tf": 1}, "sqlglot.generator.Generator.property_sql": {"tf": 1}, "sqlglot.generator.Generator.likeproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.fallbackproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.journalproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.freespaceproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.afterjournalproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.checksumproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.mergeblockratioproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.datablocksizeproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.blockcompressionproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.isolatedloadingproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.lockingproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.withdataproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.insert_sql": {"tf": 1}, "sqlglot.generator.Generator.intersect_sql": {"tf": 1}, "sqlglot.generator.Generator.intersect_op": {"tf": 1}, "sqlglot.generator.Generator.introducer_sql": {"tf": 1}, "sqlglot.generator.Generator.pseudotype_sql": {"tf": 1}, "sqlglot.generator.Generator.onconflict_sql": {"tf": 1}, "sqlglot.generator.Generator.returning_sql": {"tf": 1}, "sqlglot.generator.Generator.rowformatdelimitedproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.table_sql": {"tf": 1}, "sqlglot.generator.Generator.tablesample_sql": {"tf": 1}, "sqlglot.generator.Generator.pivot_sql": {"tf": 1}, "sqlglot.generator.Generator.tuple_sql": {"tf": 1}, "sqlglot.generator.Generator.update_sql": {"tf": 1}, "sqlglot.generator.Generator.values_sql": {"tf": 1}, "sqlglot.generator.Generator.var_sql": {"tf": 1}, "sqlglot.generator.Generator.into_sql": {"tf": 1}, "sqlglot.generator.Generator.from_sql": {"tf": 1}, "sqlglot.generator.Generator.group_sql": {"tf": 1}, "sqlglot.generator.Generator.having_sql": {"tf": 1}, "sqlglot.generator.Generator.join_sql": {"tf": 1}, "sqlglot.generator.Generator.lambda_sql": {"tf": 1}, "sqlglot.generator.Generator.lateral_sql": {"tf": 1}, "sqlglot.generator.Generator.limit_sql": {"tf": 1}, "sqlglot.generator.Generator.offset_sql": {"tf": 1}, "sqlglot.generator.Generator.setitem_sql": {"tf": 1}, "sqlglot.generator.Generator.set_sql": {"tf": 1}, "sqlglot.generator.Generator.pragma_sql": {"tf": 1}, "sqlglot.generator.Generator.lock_sql": {"tf": 1}, "sqlglot.generator.Generator.literal_sql": {"tf": 1}, "sqlglot.generator.Generator.loaddata_sql": {"tf": 1}, "sqlglot.generator.Generator.null_sql": {"tf": 1}, "sqlglot.generator.Generator.boolean_sql": {"tf": 1}, "sqlglot.generator.Generator.order_sql": {"tf": 1}, "sqlglot.generator.Generator.cluster_sql": {"tf": 1}, "sqlglot.generator.Generator.distribute_sql": {"tf": 1}, "sqlglot.generator.Generator.sort_sql": {"tf": 1}, "sqlglot.generator.Generator.ordered_sql": {"tf": 1}, "sqlglot.generator.Generator.matchrecognize_sql": {"tf": 1}, "sqlglot.generator.Generator.query_modifiers": {"tf": 1}, "sqlglot.generator.Generator.select_sql": {"tf": 1}, "sqlglot.generator.Generator.schema_sql": {"tf": 1}, "sqlglot.generator.Generator.star_sql": {"tf": 1}, "sqlglot.generator.Generator.structkwarg_sql": {"tf": 1}, "sqlglot.generator.Generator.parameter_sql": {"tf": 1}, "sqlglot.generator.Generator.sessionparameter_sql": {"tf": 1}, "sqlglot.generator.Generator.placeholder_sql": {"tf": 1}, "sqlglot.generator.Generator.subquery_sql": {"tf": 1}, "sqlglot.generator.Generator.qualify_sql": {"tf": 1}, "sqlglot.generator.Generator.union_sql": {"tf": 1}, "sqlglot.generator.Generator.union_op": {"tf": 1}, "sqlglot.generator.Generator.unnest_sql": {"tf": 1}, "sqlglot.generator.Generator.where_sql": {"tf": 1}, "sqlglot.generator.Generator.window_sql": {"tf": 1}, "sqlglot.generator.Generator.partition_by_sql": {"tf": 1}, "sqlglot.generator.Generator.window_spec_sql": {"tf": 1}, "sqlglot.generator.Generator.withingroup_sql": {"tf": 1}, "sqlglot.generator.Generator.between_sql": {"tf": 1}, "sqlglot.generator.Generator.bracket_sql": {"tf": 1}, "sqlglot.generator.Generator.all_sql": {"tf": 1}, "sqlglot.generator.Generator.any_sql": {"tf": 1}, "sqlglot.generator.Generator.exists_sql": {"tf": 1}, "sqlglot.generator.Generator.case_sql": {"tf": 1}, "sqlglot.generator.Generator.constraint_sql": {"tf": 1}, "sqlglot.generator.Generator.extract_sql": {"tf": 1}, "sqlglot.generator.Generator.trim_sql": {"tf": 1}, "sqlglot.generator.Generator.concat_sql": {"tf": 1}, "sqlglot.generator.Generator.check_sql": {"tf": 1}, "sqlglot.generator.Generator.foreignkey_sql": {"tf": 1}, "sqlglot.generator.Generator.primarykey_sql": {"tf": 1}, "sqlglot.generator.Generator.unique_sql": {"tf": 1}, "sqlglot.generator.Generator.if_sql": {"tf": 1}, "sqlglot.generator.Generator.matchagainst_sql": {"tf": 1}, "sqlglot.generator.Generator.jsonkeyvalue_sql": {"tf": 1}, "sqlglot.generator.Generator.jsonobject_sql": {"tf": 1}, "sqlglot.generator.Generator.in_sql": {"tf": 1}, "sqlglot.generator.Generator.in_unnest_op": {"tf": 1}, "sqlglot.generator.Generator.interval_sql": {"tf": 1}, "sqlglot.generator.Generator.return_sql": {"tf": 1}, "sqlglot.generator.Generator.reference_sql": {"tf": 1}, "sqlglot.generator.Generator.anonymous_sql": {"tf": 1}, "sqlglot.generator.Generator.paren_sql": {"tf": 1}, "sqlglot.generator.Generator.neg_sql": {"tf": 1}, "sqlglot.generator.Generator.not_sql": {"tf": 1}, "sqlglot.generator.Generator.alias_sql": {"tf": 1}, "sqlglot.generator.Generator.aliases_sql": {"tf": 1}, "sqlglot.generator.Generator.attimezone_sql": {"tf": 1}, "sqlglot.generator.Generator.add_sql": {"tf": 1}, "sqlglot.generator.Generator.and_sql": {"tf": 1}, "sqlglot.generator.Generator.connector_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwiseand_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwiseleftshift_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwisenot_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwiseor_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwiserightshift_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwisexor_sql": {"tf": 1}, "sqlglot.generator.Generator.cast_sql": {"tf": 1}, "sqlglot.generator.Generator.currentdate_sql": {"tf": 1}, "sqlglot.generator.Generator.collate_sql": {"tf": 1}, "sqlglot.generator.Generator.command_sql": {"tf": 1}, "sqlglot.generator.Generator.comment_sql": {"tf": 1}, "sqlglot.generator.Generator.transaction_sql": {"tf": 1}, "sqlglot.generator.Generator.commit_sql": {"tf": 1}, "sqlglot.generator.Generator.rollback_sql": {"tf": 1}, "sqlglot.generator.Generator.altercolumn_sql": {"tf": 1}, "sqlglot.generator.Generator.renametable_sql": {"tf": 1}, "sqlglot.generator.Generator.altertable_sql": {"tf": 1}, "sqlglot.generator.Generator.droppartition_sql": {"tf": 1}, "sqlglot.generator.Generator.addconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.distinct_sql": {"tf": 1}, "sqlglot.generator.Generator.ignorenulls_sql": {"tf": 1}, "sqlglot.generator.Generator.respectnulls_sql": {"tf": 1}, "sqlglot.generator.Generator.intdiv_sql": {"tf": 1}, "sqlglot.generator.Generator.dpipe_sql": {"tf": 1}, "sqlglot.generator.Generator.div_sql": {"tf": 1}, "sqlglot.generator.Generator.overlaps_sql": {"tf": 1}, "sqlglot.generator.Generator.distance_sql": {"tf": 1}, "sqlglot.generator.Generator.dot_sql": {"tf": 1}, "sqlglot.generator.Generator.eq_sql": {"tf": 1}, "sqlglot.generator.Generator.escape_sql": {"tf": 1}, "sqlglot.generator.Generator.glob_sql": {"tf": 1}, "sqlglot.generator.Generator.gt_sql": {"tf": 1}, "sqlglot.generator.Generator.gte_sql": {"tf": 1}, "sqlglot.generator.Generator.ilike_sql": {"tf": 1}, "sqlglot.generator.Generator.ilikeany_sql": {"tf": 1}, "sqlglot.generator.Generator.is_sql": {"tf": 1}, "sqlglot.generator.Generator.like_sql": {"tf": 1}, "sqlglot.generator.Generator.likeany_sql": {"tf": 1}, "sqlglot.generator.Generator.similarto_sql": {"tf": 1}, "sqlglot.generator.Generator.lt_sql": {"tf": 1}, "sqlglot.generator.Generator.lte_sql": {"tf": 1}, "sqlglot.generator.Generator.mod_sql": {"tf": 1}, "sqlglot.generator.Generator.mul_sql": {"tf": 1}, "sqlglot.generator.Generator.neq_sql": {"tf": 1}, "sqlglot.generator.Generator.nullsafeeq_sql": {"tf": 1}, "sqlglot.generator.Generator.nullsafeneq_sql": {"tf": 1}, "sqlglot.generator.Generator.or_sql": {"tf": 1}, "sqlglot.generator.Generator.slice_sql": {"tf": 1}, "sqlglot.generator.Generator.sub_sql": {"tf": 1}, "sqlglot.generator.Generator.trycast_sql": {"tf": 1}, "sqlglot.generator.Generator.use_sql": {"tf": 1}, "sqlglot.generator.Generator.binary": {"tf": 1}, "sqlglot.generator.Generator.function_fallback_sql": {"tf": 1}, "sqlglot.generator.Generator.func": {"tf": 1}, "sqlglot.generator.Generator.format_args": {"tf": 1}, "sqlglot.generator.Generator.text_width": {"tf": 1}, "sqlglot.generator.Generator.format_time": {"tf": 1}, "sqlglot.generator.Generator.expressions": {"tf": 1}, "sqlglot.generator.Generator.op_expressions": {"tf": 1}, "sqlglot.generator.Generator.naked_property": {"tf": 1}, "sqlglot.generator.Generator.set_operation": {"tf": 1}, "sqlglot.generator.Generator.tag_sql": {"tf": 1}, "sqlglot.generator.Generator.token_sql": {"tf": 1}, "sqlglot.generator.Generator.userdefinedfunction_sql": {"tf": 1}, "sqlglot.generator.Generator.joinhint_sql": {"tf": 1}, "sqlglot.generator.Generator.kwarg_sql": {"tf": 1}, "sqlglot.generator.Generator.when_sql": {"tf": 1}, "sqlglot.generator.Generator.merge_sql": {"tf": 1}, "sqlglot.generator.Generator.tochar_sql": {"tf": 1}, "sqlglot.helper": {"tf": 1}, "sqlglot.helper.AutoName": {"tf": 1}, "sqlglot.helper.seq_get": {"tf": 1}, "sqlglot.helper.ensure_list": {"tf": 1}, "sqlglot.helper.ensure_collection": {"tf": 1}, "sqlglot.helper.csv": {"tf": 1}, "sqlglot.helper.subclasses": {"tf": 1}, "sqlglot.helper.apply_index_offset": {"tf": 1}, "sqlglot.helper.camel_to_snake_case": {"tf": 1}, "sqlglot.helper.while_changing": {"tf": 1}, "sqlglot.helper.tsort": {"tf": 1}, "sqlglot.helper.open_file": {"tf": 1}, "sqlglot.helper.csv_reader": {"tf": 1}, "sqlglot.helper.find_new_name": {"tf": 1}, "sqlglot.helper.object_to_dict": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1}, "sqlglot.helper.is_iterable": {"tf": 1}, "sqlglot.helper.flatten": {"tf": 1}, "sqlglot.helper.count_params": {"tf": 1}, "sqlglot.helper.dict_depth": {"tf": 1}, "sqlglot.helper.first": {"tf": 1}, "sqlglot.helper.should_identify": {"tf": 1}, "sqlglot.lineage": {"tf": 1}, "sqlglot.lineage.Node": {"tf": 1}, "sqlglot.lineage.Node.__init__": {"tf": 1}, "sqlglot.lineage.Node.walk": {"tf": 1}, "sqlglot.lineage.Node.to_html": {"tf": 1}, "sqlglot.lineage.lineage": {"tf": 1}, "sqlglot.lineage.LineageHTML": {"tf": 1}, "sqlglot.lineage.LineageHTML.__init__": {"tf": 1}, "sqlglot.optimizer": {"tf": 1}, "sqlglot.optimizer.annotate_types": {"tf": 1}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}, "sqlglot.optimizer.annotate_types.TypeAnnotator": {"tf": 1}, "sqlglot.optimizer.annotate_types.TypeAnnotator.__init__": {"tf": 1}, "sqlglot.optimizer.annotate_types.TypeAnnotator.annotate": {"tf": 1}, "sqlglot.optimizer.canonicalize": {"tf": 1}, "sqlglot.optimizer.canonicalize.canonicalize": {"tf": 1}, "sqlglot.optimizer.canonicalize.add_text_to_concat": {"tf": 1}, "sqlglot.optimizer.canonicalize.coerce_type": {"tf": 1}, "sqlglot.optimizer.canonicalize.remove_redundant_casts": {"tf": 1}, "sqlglot.optimizer.canonicalize.ensure_bool_predicates": {"tf": 1}, "sqlglot.optimizer.eliminate_ctes": {"tf": 1}, "sqlglot.optimizer.eliminate_ctes.eliminate_ctes": {"tf": 1}, "sqlglot.optimizer.eliminate_joins": {"tf": 1}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 1}, "sqlglot.optimizer.eliminate_joins.join_condition": {"tf": 1}, "sqlglot.optimizer.eliminate_subqueries": {"tf": 1}, "sqlglot.optimizer.eliminate_subqueries.eliminate_subqueries": {"tf": 1}, "sqlglot.optimizer.expand_laterals": {"tf": 1}, "sqlglot.optimizer.expand_laterals.expand_laterals": {"tf": 1}, "sqlglot.optimizer.expand_multi_table_selects": {"tf": 1}, "sqlglot.optimizer.expand_multi_table_selects.expand_multi_table_selects": {"tf": 1}, "sqlglot.optimizer.isolate_table_selects": {"tf": 1}, "sqlglot.optimizer.isolate_table_selects.isolate_table_selects": {"tf": 1}, "sqlglot.optimizer.lower_identities": {"tf": 1}, "sqlglot.optimizer.lower_identities.lower_identities": {"tf": 1}, "sqlglot.optimizer.merge_subqueries": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_ctes": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_derived_tables": {"tf": 1}, "sqlglot.optimizer.normalize": {"tf": 1}, "sqlglot.optimizer.normalize.normalize": {"tf": 1}, "sqlglot.optimizer.normalize.normalized": {"tf": 1}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1}, "sqlglot.optimizer.normalize.distributive_law": {"tf": 1}, "sqlglot.optimizer.optimize_joins": {"tf": 1}, "sqlglot.optimizer.optimize_joins.optimize_joins": {"tf": 1}, "sqlglot.optimizer.optimize_joins.reorder_joins": {"tf": 1}, "sqlglot.optimizer.optimize_joins.normalize": {"tf": 1}, "sqlglot.optimizer.optimize_joins.other_table_names": {"tf": 1}, "sqlglot.optimizer.optimizer": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_predicates": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_cnf": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_dnf": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.nodes_for_predicate": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.replace_aliases": {"tf": 1}, "sqlglot.optimizer.pushdown_projections": {"tf": 1}, "sqlglot.optimizer.pushdown_projections.DEFAULT_SELECTION": {"tf": 1}, "sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 1}, "sqlglot.optimizer.qualify_columns": {"tf": 1}, "sqlglot.optimizer.qualify_columns.qualify_columns": {"tf": 1}, "sqlglot.optimizer.qualify_columns.validate_qualify_columns": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.__init__": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.get_table": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.all_columns": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.get_source_columns": {"tf": 1}, "sqlglot.optimizer.qualify_tables": {"tf": 1}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"tf": 1}, "sqlglot.optimizer.scope": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.ROOT": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.SUBQUERY": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.DERIVED_TABLE": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.CTE": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.UNION": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.UDTF": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 1}, "sqlglot.optimizer.scope.Scope.__init__": {"tf": 1}, "sqlglot.optimizer.scope.Scope.clear_cache": {"tf": 1}, "sqlglot.optimizer.scope.Scope.branch": {"tf": 1}, "sqlglot.optimizer.scope.Scope.walk": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1}, "sqlglot.optimizer.scope.Scope.replace": {"tf": 1}, "sqlglot.optimizer.scope.Scope.tables": {"tf": 1}, "sqlglot.optimizer.scope.Scope.ctes": {"tf": 1}, "sqlglot.optimizer.scope.Scope.derived_tables": {"tf": 1}, "sqlglot.optimizer.scope.Scope.udtfs": {"tf": 1}, "sqlglot.optimizer.scope.Scope.subqueries": {"tf": 1}, "sqlglot.optimizer.scope.Scope.columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 1}, "sqlglot.optimizer.scope.Scope.cte_sources": {"tf": 1}, "sqlglot.optimizer.scope.Scope.selects": {"tf": 1}, "sqlglot.optimizer.scope.Scope.external_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.unqualified_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.join_hints": {"tf": 1}, "sqlglot.optimizer.scope.Scope.source_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_subquery": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_derived_table": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_union": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_cte": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_root": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_udtf": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_correlated_subquery": {"tf": 1}, "sqlglot.optimizer.scope.Scope.rename_source": {"tf": 1}, "sqlglot.optimizer.scope.Scope.add_source": {"tf": 1}, "sqlglot.optimizer.scope.Scope.remove_source": {"tf": 1}, "sqlglot.optimizer.scope.Scope.traverse": {"tf": 1}, "sqlglot.optimizer.scope.Scope.ref_count": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}, "sqlglot.optimizer.scope.build_scope": {"tf": 1}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1}, "sqlglot.optimizer.simplify": {"tf": 1}, "sqlglot.optimizer.simplify.simplify": {"tf": 1}, "sqlglot.optimizer.simplify.rewrite_between": {"tf": 1}, "sqlglot.optimizer.simplify.simplify_not": {"tf": 1}, "sqlglot.optimizer.simplify.flatten": {"tf": 1}, "sqlglot.optimizer.simplify.simplify_connectors": {"tf": 1}, "sqlglot.optimizer.simplify.remove_compliments": {"tf": 1}, "sqlglot.optimizer.simplify.uniq_sort": {"tf": 1}, "sqlglot.optimizer.simplify.absorb_and_eliminate": {"tf": 1}, "sqlglot.optimizer.simplify.simplify_literals": {"tf": 1}, "sqlglot.optimizer.simplify.simplify_parens": {"tf": 1}, "sqlglot.optimizer.simplify.remove_where_true": {"tf": 1}, "sqlglot.optimizer.simplify.always_true": {"tf": 1}, "sqlglot.optimizer.simplify.is_complement": {"tf": 1}, "sqlglot.optimizer.simplify.is_false": {"tf": 1}, "sqlglot.optimizer.simplify.is_null": {"tf": 1}, "sqlglot.optimizer.simplify.eval_boolean": {"tf": 1}, "sqlglot.optimizer.simplify.extract_date": {"tf": 1}, "sqlglot.optimizer.simplify.extract_interval": {"tf": 1}, "sqlglot.optimizer.simplify.date_literal": {"tf": 1}, "sqlglot.optimizer.simplify.boolean_literal": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.unnest": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.decorrelate": {"tf": 1}, "sqlglot.parser": {"tf": 1}, "sqlglot.parser.parse_var_map": {"tf": 1}, "sqlglot.parser.parse_like": {"tf": 1}, "sqlglot.parser.binary_range_parser": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1}, "sqlglot.parser.Parser.__init__": {"tf": 1}, "sqlglot.parser.Parser.reset": {"tf": 1}, "sqlglot.parser.Parser.parse": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 1}, "sqlglot.parser.Parser.check_errors": {"tf": 1}, "sqlglot.parser.Parser.raise_error": {"tf": 1}, "sqlglot.parser.Parser.expression": {"tf": 1}, "sqlglot.parser.Parser.validate_expression": {"tf": 1}, "sqlglot.planner": {"tf": 1}, "sqlglot.planner.Plan": {"tf": 1}, "sqlglot.planner.Plan.__init__": {"tf": 1}, "sqlglot.planner.Step": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Step.add_dependency": {"tf": 1}, "sqlglot.planner.Step.to_s": {"tf": 1}, "sqlglot.planner.Scan": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.Join": {"tf": 1}, "sqlglot.planner.Join.from_joins": {"tf": 1}, "sqlglot.planner.Aggregate": {"tf": 1}, "sqlglot.planner.Sort": {"tf": 1}, "sqlglot.planner.SetOperation": {"tf": 1}, "sqlglot.planner.SetOperation.__init__": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}, "sqlglot.schema.Schema": {"tf": 1}, "sqlglot.schema.Schema.add_table": {"tf": 1}, "sqlglot.schema.Schema.column_names": {"tf": 1}, "sqlglot.schema.Schema.get_column_type": {"tf": 1}, "sqlglot.schema.Schema.supported_table_args": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema.__init__": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema.table_parts": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema.find": {"tf": 1}, "sqlglot.schema.MappingSchema": {"tf": 1}, "sqlglot.schema.MappingSchema.__init__": {"tf": 1}, "sqlglot.schema.MappingSchema.from_mapping_schema": {"tf": 1}, "sqlglot.schema.MappingSchema.copy": {"tf": 1}, "sqlglot.schema.MappingSchema.add_table": {"tf": 1}, "sqlglot.schema.MappingSchema.column_names": {"tf": 1}, "sqlglot.schema.MappingSchema.get_column_type": {"tf": 1}, "sqlglot.schema.ensure_schema": {"tf": 1}, "sqlglot.schema.ensure_column_mapping": {"tf": 1}, "sqlglot.schema.flatten_schema": {"tf": 1}, "sqlglot.serde": {"tf": 1}, "sqlglot.serde.dump": {"tf": 1}, "sqlglot.serde.load": {"tf": 1}, "sqlglot.time": {"tf": 1}, "sqlglot.time.format_time": {"tf": 1}, "sqlglot.tokens": {"tf": 1}, "sqlglot.tokens.TokenType": {"tf": 1}, "sqlglot.tokens.TokenType.L_PAREN": {"tf": 1}, "sqlglot.tokens.TokenType.R_PAREN": {"tf": 1}, "sqlglot.tokens.TokenType.L_BRACKET": {"tf": 1}, "sqlglot.tokens.TokenType.R_BRACKET": {"tf": 1}, "sqlglot.tokens.TokenType.L_BRACE": {"tf": 1}, "sqlglot.tokens.TokenType.R_BRACE": {"tf": 1}, "sqlglot.tokens.TokenType.COMMA": {"tf": 1}, "sqlglot.tokens.TokenType.DOT": {"tf": 1}, "sqlglot.tokens.TokenType.DASH": {"tf": 1}, "sqlglot.tokens.TokenType.PLUS": {"tf": 1}, "sqlglot.tokens.TokenType.COLON": {"tf": 1}, "sqlglot.tokens.TokenType.DCOLON": {"tf": 1}, "sqlglot.tokens.TokenType.SEMICOLON": {"tf": 1}, "sqlglot.tokens.TokenType.STAR": {"tf": 1}, "sqlglot.tokens.TokenType.BACKSLASH": {"tf": 1}, "sqlglot.tokens.TokenType.SLASH": {"tf": 1}, "sqlglot.tokens.TokenType.LT": {"tf": 1}, "sqlglot.tokens.TokenType.LTE": {"tf": 1}, "sqlglot.tokens.TokenType.GT": {"tf": 1}, "sqlglot.tokens.TokenType.GTE": {"tf": 1}, "sqlglot.tokens.TokenType.NOT": {"tf": 1}, "sqlglot.tokens.TokenType.EQ": {"tf": 1}, "sqlglot.tokens.TokenType.NEQ": {"tf": 1}, "sqlglot.tokens.TokenType.NULLSAFE_EQ": {"tf": 1}, "sqlglot.tokens.TokenType.AND": {"tf": 1}, "sqlglot.tokens.TokenType.OR": {"tf": 1}, "sqlglot.tokens.TokenType.AMP": {"tf": 1}, "sqlglot.tokens.TokenType.DPIPE": {"tf": 1}, "sqlglot.tokens.TokenType.PIPE": {"tf": 1}, "sqlglot.tokens.TokenType.CARET": {"tf": 1}, "sqlglot.tokens.TokenType.TILDA": {"tf": 1}, "sqlglot.tokens.TokenType.ARROW": {"tf": 1}, "sqlglot.tokens.TokenType.DARROW": {"tf": 1}, "sqlglot.tokens.TokenType.FARROW": {"tf": 1}, "sqlglot.tokens.TokenType.HASH": {"tf": 1}, "sqlglot.tokens.TokenType.HASH_ARROW": {"tf": 1}, "sqlglot.tokens.TokenType.DHASH_ARROW": {"tf": 1}, "sqlglot.tokens.TokenType.LR_ARROW": {"tf": 1}, "sqlglot.tokens.TokenType.LT_AT": {"tf": 1}, "sqlglot.tokens.TokenType.AT_GT": {"tf": 1}, "sqlglot.tokens.TokenType.DOLLAR": {"tf": 1}, "sqlglot.tokens.TokenType.PARAMETER": {"tf": 1}, "sqlglot.tokens.TokenType.SESSION_PARAMETER": {"tf": 1}, "sqlglot.tokens.TokenType.NATIONAL": {"tf": 1}, "sqlglot.tokens.TokenType.DAMP": {"tf": 1}, "sqlglot.tokens.TokenType.BLOCK_START": {"tf": 1}, "sqlglot.tokens.TokenType.BLOCK_END": {"tf": 1}, "sqlglot.tokens.TokenType.SPACE": {"tf": 1}, "sqlglot.tokens.TokenType.BREAK": {"tf": 1}, "sqlglot.tokens.TokenType.STRING": {"tf": 1}, "sqlglot.tokens.TokenType.NUMBER": {"tf": 1}, "sqlglot.tokens.TokenType.IDENTIFIER": {"tf": 1}, "sqlglot.tokens.TokenType.DATABASE": {"tf": 1}, "sqlglot.tokens.TokenType.COLUMN": {"tf": 1}, "sqlglot.tokens.TokenType.COLUMN_DEF": {"tf": 1}, "sqlglot.tokens.TokenType.SCHEMA": {"tf": 1}, "sqlglot.tokens.TokenType.TABLE": {"tf": 1}, "sqlglot.tokens.TokenType.VAR": {"tf": 1}, "sqlglot.tokens.TokenType.BIT_STRING": {"tf": 1}, "sqlglot.tokens.TokenType.HEX_STRING": {"tf": 1}, "sqlglot.tokens.TokenType.BYTE_STRING": {"tf": 1}, "sqlglot.tokens.TokenType.BIT": {"tf": 1}, "sqlglot.tokens.TokenType.BOOLEAN": {"tf": 1}, "sqlglot.tokens.TokenType.TINYINT": {"tf": 1}, "sqlglot.tokens.TokenType.UTINYINT": {"tf": 1}, "sqlglot.tokens.TokenType.SMALLINT": {"tf": 1}, "sqlglot.tokens.TokenType.USMALLINT": {"tf": 1}, "sqlglot.tokens.TokenType.INT": {"tf": 1}, "sqlglot.tokens.TokenType.UINT": {"tf": 1}, "sqlglot.tokens.TokenType.BIGINT": {"tf": 1}, "sqlglot.tokens.TokenType.UBIGINT": {"tf": 1}, "sqlglot.tokens.TokenType.FLOAT": {"tf": 1}, "sqlglot.tokens.TokenType.DOUBLE": {"tf": 1}, "sqlglot.tokens.TokenType.DECIMAL": {"tf": 1}, "sqlglot.tokens.TokenType.BIGDECIMAL": {"tf": 1}, "sqlglot.tokens.TokenType.CHAR": {"tf": 1}, "sqlglot.tokens.TokenType.NCHAR": {"tf": 1}, "sqlglot.tokens.TokenType.VARCHAR": {"tf": 1}, "sqlglot.tokens.TokenType.NVARCHAR": {"tf": 1}, "sqlglot.tokens.TokenType.TEXT": {"tf": 1}, "sqlglot.tokens.TokenType.MEDIUMTEXT": {"tf": 1}, "sqlglot.tokens.TokenType.LONGTEXT": {"tf": 1}, "sqlglot.tokens.TokenType.MEDIUMBLOB": {"tf": 1}, "sqlglot.tokens.TokenType.LONGBLOB": {"tf": 1}, "sqlglot.tokens.TokenType.BINARY": {"tf": 1}, "sqlglot.tokens.TokenType.VARBINARY": {"tf": 1}, "sqlglot.tokens.TokenType.JSON": {"tf": 1}, "sqlglot.tokens.TokenType.JSONB": {"tf": 1}, "sqlglot.tokens.TokenType.TIME": {"tf": 1}, "sqlglot.tokens.TokenType.TIMESTAMP": {"tf": 1}, "sqlglot.tokens.TokenType.TIMESTAMPTZ": {"tf": 1}, "sqlglot.tokens.TokenType.TIMESTAMPLTZ": {"tf": 1}, "sqlglot.tokens.TokenType.DATETIME": {"tf": 1}, "sqlglot.tokens.TokenType.DATE": {"tf": 1}, "sqlglot.tokens.TokenType.UUID": {"tf": 1}, "sqlglot.tokens.TokenType.GEOGRAPHY": {"tf": 1}, "sqlglot.tokens.TokenType.NULLABLE": {"tf": 1}, "sqlglot.tokens.TokenType.GEOMETRY": {"tf": 1}, "sqlglot.tokens.TokenType.HLLSKETCH": {"tf": 1}, "sqlglot.tokens.TokenType.HSTORE": {"tf": 1}, "sqlglot.tokens.TokenType.SUPER": {"tf": 1}, "sqlglot.tokens.TokenType.SERIAL": {"tf": 1}, "sqlglot.tokens.TokenType.SMALLSERIAL": {"tf": 1}, "sqlglot.tokens.TokenType.BIGSERIAL": {"tf": 1}, "sqlglot.tokens.TokenType.XML": {"tf": 1}, "sqlglot.tokens.TokenType.UNIQUEIDENTIFIER": {"tf": 1}, "sqlglot.tokens.TokenType.MONEY": {"tf": 1}, "sqlglot.tokens.TokenType.SMALLMONEY": {"tf": 1}, "sqlglot.tokens.TokenType.ROWVERSION": {"tf": 1}, "sqlglot.tokens.TokenType.IMAGE": {"tf": 1}, "sqlglot.tokens.TokenType.VARIANT": {"tf": 1}, "sqlglot.tokens.TokenType.OBJECT": {"tf": 1}, "sqlglot.tokens.TokenType.INET": {"tf": 1}, "sqlglot.tokens.TokenType.ALIAS": {"tf": 1}, "sqlglot.tokens.TokenType.ALTER": {"tf": 1}, "sqlglot.tokens.TokenType.ALWAYS": {"tf": 1}, "sqlglot.tokens.TokenType.ALL": {"tf": 1}, "sqlglot.tokens.TokenType.ANTI": {"tf": 1}, "sqlglot.tokens.TokenType.ANY": {"tf": 1}, "sqlglot.tokens.TokenType.APPLY": {"tf": 1}, "sqlglot.tokens.TokenType.ARRAY": {"tf": 1}, "sqlglot.tokens.TokenType.ASC": {"tf": 1}, "sqlglot.tokens.TokenType.ASOF": {"tf": 1}, "sqlglot.tokens.TokenType.AT_TIME_ZONE": {"tf": 1}, "sqlglot.tokens.TokenType.AUTO_INCREMENT": {"tf": 1}, "sqlglot.tokens.TokenType.BEGIN": {"tf": 1}, "sqlglot.tokens.TokenType.BETWEEN": {"tf": 1}, "sqlglot.tokens.TokenType.BOTH": {"tf": 1}, "sqlglot.tokens.TokenType.BUCKET": {"tf": 1}, "sqlglot.tokens.TokenType.BY_DEFAULT": {"tf": 1}, "sqlglot.tokens.TokenType.CACHE": {"tf": 1}, "sqlglot.tokens.TokenType.CASCADE": {"tf": 1}, "sqlglot.tokens.TokenType.CASE": {"tf": 1}, "sqlglot.tokens.TokenType.CHARACTER_SET": {"tf": 1}, "sqlglot.tokens.TokenType.CLUSTER_BY": {"tf": 1}, "sqlglot.tokens.TokenType.COLLATE": {"tf": 1}, "sqlglot.tokens.TokenType.COMMAND": {"tf": 1}, "sqlglot.tokens.TokenType.COMMENT": {"tf": 1}, "sqlglot.tokens.TokenType.COMMIT": {"tf": 1}, "sqlglot.tokens.TokenType.COMPOUND": {"tf": 1}, "sqlglot.tokens.TokenType.CONSTRAINT": {"tf": 1}, "sqlglot.tokens.TokenType.CREATE": {"tf": 1}, "sqlglot.tokens.TokenType.CROSS": {"tf": 1}, "sqlglot.tokens.TokenType.CUBE": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_DATE": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_DATETIME": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_ROW": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_TIME": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_TIMESTAMP": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_USER": {"tf": 1}, "sqlglot.tokens.TokenType.DEFAULT": {"tf": 1}, "sqlglot.tokens.TokenType.DELETE": {"tf": 1}, "sqlglot.tokens.TokenType.DESC": {"tf": 1}, "sqlglot.tokens.TokenType.DESCRIBE": {"tf": 1}, "sqlglot.tokens.TokenType.DISTINCT": {"tf": 1}, "sqlglot.tokens.TokenType.DISTINCT_FROM": {"tf": 1}, "sqlglot.tokens.TokenType.DISTRIBUTE_BY": {"tf": 1}, "sqlglot.tokens.TokenType.DIV": {"tf": 1}, "sqlglot.tokens.TokenType.DROP": {"tf": 1}, "sqlglot.tokens.TokenType.ELSE": {"tf": 1}, "sqlglot.tokens.TokenType.END": {"tf": 1}, "sqlglot.tokens.TokenType.ESCAPE": {"tf": 1}, "sqlglot.tokens.TokenType.EXCEPT": {"tf": 1}, "sqlglot.tokens.TokenType.EXECUTE": {"tf": 1}, "sqlglot.tokens.TokenType.EXISTS": {"tf": 1}, "sqlglot.tokens.TokenType.FALSE": {"tf": 1}, "sqlglot.tokens.TokenType.FETCH": {"tf": 1}, "sqlglot.tokens.TokenType.FILTER": {"tf": 1}, "sqlglot.tokens.TokenType.FINAL": {"tf": 1}, "sqlglot.tokens.TokenType.FIRST": {"tf": 1}, "sqlglot.tokens.TokenType.FOLLOWING": {"tf": 1}, "sqlglot.tokens.TokenType.FOR": {"tf": 1}, "sqlglot.tokens.TokenType.FOREIGN_KEY": {"tf": 1}, "sqlglot.tokens.TokenType.FORMAT": {"tf": 1}, "sqlglot.tokens.TokenType.FROM": {"tf": 1}, "sqlglot.tokens.TokenType.FULL": {"tf": 1}, "sqlglot.tokens.TokenType.FUNCTION": {"tf": 1}, "sqlglot.tokens.TokenType.GLOB": {"tf": 1}, "sqlglot.tokens.TokenType.GLOBAL": {"tf": 1}, "sqlglot.tokens.TokenType.GROUP_BY": {"tf": 1}, "sqlglot.tokens.TokenType.GROUPING_SETS": {"tf": 1}, "sqlglot.tokens.TokenType.HAVING": {"tf": 1}, "sqlglot.tokens.TokenType.HINT": {"tf": 1}, "sqlglot.tokens.TokenType.IF": {"tf": 1}, "sqlglot.tokens.TokenType.IGNORE_NULLS": {"tf": 1}, "sqlglot.tokens.TokenType.ILIKE": {"tf": 1}, "sqlglot.tokens.TokenType.ILIKE_ANY": {"tf": 1}, "sqlglot.tokens.TokenType.IN": {"tf": 1}, "sqlglot.tokens.TokenType.INDEX": {"tf": 1}, "sqlglot.tokens.TokenType.INNER": {"tf": 1}, "sqlglot.tokens.TokenType.INSERT": {"tf": 1}, "sqlglot.tokens.TokenType.INTERSECT": {"tf": 1}, "sqlglot.tokens.TokenType.INTERVAL": {"tf": 1}, "sqlglot.tokens.TokenType.INTO": {"tf": 1}, "sqlglot.tokens.TokenType.INTRODUCER": {"tf": 1}, "sqlglot.tokens.TokenType.IRLIKE": {"tf": 1}, "sqlglot.tokens.TokenType.IS": {"tf": 1}, "sqlglot.tokens.TokenType.ISNULL": {"tf": 1}, "sqlglot.tokens.TokenType.JOIN": {"tf": 1}, "sqlglot.tokens.TokenType.JOIN_MARKER": {"tf": 1}, "sqlglot.tokens.TokenType.LANGUAGE": {"tf": 1}, "sqlglot.tokens.TokenType.LATERAL": {"tf": 1}, "sqlglot.tokens.TokenType.LAZY": {"tf": 1}, "sqlglot.tokens.TokenType.LEADING": {"tf": 1}, "sqlglot.tokens.TokenType.LEFT": {"tf": 1}, "sqlglot.tokens.TokenType.LIKE": {"tf": 1}, "sqlglot.tokens.TokenType.LIKE_ANY": {"tf": 1}, "sqlglot.tokens.TokenType.LIMIT": {"tf": 1}, "sqlglot.tokens.TokenType.LOAD_DATA": {"tf": 1}, "sqlglot.tokens.TokenType.LOCAL": {"tf": 1}, "sqlglot.tokens.TokenType.MAP": {"tf": 1}, "sqlglot.tokens.TokenType.MATCH_RECOGNIZE": {"tf": 1}, "sqlglot.tokens.TokenType.MATERIALIZED": {"tf": 1}, "sqlglot.tokens.TokenType.MERGE": {"tf": 1}, "sqlglot.tokens.TokenType.MOD": {"tf": 1}, "sqlglot.tokens.TokenType.NATURAL": {"tf": 1}, "sqlglot.tokens.TokenType.NEXT": {"tf": 1}, "sqlglot.tokens.TokenType.NO_ACTION": {"tf": 1}, "sqlglot.tokens.TokenType.NOTNULL": {"tf": 1}, "sqlglot.tokens.TokenType.NULL": {"tf": 1}, "sqlglot.tokens.TokenType.NULLS_FIRST": {"tf": 1}, "sqlglot.tokens.TokenType.NULLS_LAST": {"tf": 1}, "sqlglot.tokens.TokenType.OFFSET": {"tf": 1}, "sqlglot.tokens.TokenType.ON": {"tf": 1}, "sqlglot.tokens.TokenType.ONLY": {"tf": 1}, "sqlglot.tokens.TokenType.OPTIONS": {"tf": 1}, "sqlglot.tokens.TokenType.ORDER_BY": {"tf": 1}, "sqlglot.tokens.TokenType.ORDERED": {"tf": 1}, "sqlglot.tokens.TokenType.ORDINALITY": {"tf": 1}, "sqlglot.tokens.TokenType.OUTER": {"tf": 1}, "sqlglot.tokens.TokenType.OUT_OF": {"tf": 1}, "sqlglot.tokens.TokenType.OVER": {"tf": 1}, "sqlglot.tokens.TokenType.OVERLAPS": {"tf": 1}, "sqlglot.tokens.TokenType.OVERWRITE": {"tf": 1}, "sqlglot.tokens.TokenType.PARTITION": {"tf": 1}, "sqlglot.tokens.TokenType.PARTITION_BY": {"tf": 1}, "sqlglot.tokens.TokenType.PERCENT": {"tf": 1}, "sqlglot.tokens.TokenType.PIVOT": {"tf": 1}, "sqlglot.tokens.TokenType.PLACEHOLDER": {"tf": 1}, "sqlglot.tokens.TokenType.PRAGMA": {"tf": 1}, "sqlglot.tokens.TokenType.PRECEDING": {"tf": 1}, "sqlglot.tokens.TokenType.PRIMARY_KEY": {"tf": 1}, "sqlglot.tokens.TokenType.PROCEDURE": {"tf": 1}, "sqlglot.tokens.TokenType.PROPERTIES": {"tf": 1}, "sqlglot.tokens.TokenType.PSEUDO_TYPE": {"tf": 1}, "sqlglot.tokens.TokenType.QUALIFY": {"tf": 1}, "sqlglot.tokens.TokenType.QUOTE": {"tf": 1}, "sqlglot.tokens.TokenType.RANGE": {"tf": 1}, "sqlglot.tokens.TokenType.RECURSIVE": {"tf": 1}, "sqlglot.tokens.TokenType.REPLACE": {"tf": 1}, "sqlglot.tokens.TokenType.RESPECT_NULLS": {"tf": 1}, "sqlglot.tokens.TokenType.RETURNING": {"tf": 1}, "sqlglot.tokens.TokenType.REFERENCES": {"tf": 1}, "sqlglot.tokens.TokenType.RIGHT": {"tf": 1}, "sqlglot.tokens.TokenType.RLIKE": {"tf": 1}, "sqlglot.tokens.TokenType.ROLLBACK": {"tf": 1}, "sqlglot.tokens.TokenType.ROLLUP": {"tf": 1}, "sqlglot.tokens.TokenType.ROW": {"tf": 1}, "sqlglot.tokens.TokenType.ROWS": {"tf": 1}, "sqlglot.tokens.TokenType.SEED": {"tf": 1}, "sqlglot.tokens.TokenType.SELECT": {"tf": 1}, "sqlglot.tokens.TokenType.SEMI": {"tf": 1}, "sqlglot.tokens.TokenType.SEPARATOR": {"tf": 1}, "sqlglot.tokens.TokenType.SERDE_PROPERTIES": {"tf": 1}, "sqlglot.tokens.TokenType.SET": {"tf": 1}, "sqlglot.tokens.TokenType.SHOW": {"tf": 1}, "sqlglot.tokens.TokenType.SIMILAR_TO": {"tf": 1}, "sqlglot.tokens.TokenType.SOME": {"tf": 1}, "sqlglot.tokens.TokenType.SORTKEY": {"tf": 1}, "sqlglot.tokens.TokenType.SORT_BY": {"tf": 1}, "sqlglot.tokens.TokenType.STRUCT": {"tf": 1}, "sqlglot.tokens.TokenType.TABLE_SAMPLE": {"tf": 1}, "sqlglot.tokens.TokenType.TEMPORARY": {"tf": 1}, "sqlglot.tokens.TokenType.TOP": {"tf": 1}, "sqlglot.tokens.TokenType.THEN": {"tf": 1}, "sqlglot.tokens.TokenType.TRAILING": {"tf": 1}, "sqlglot.tokens.TokenType.TRUE": {"tf": 1}, "sqlglot.tokens.TokenType.UNBOUNDED": {"tf": 1}, "sqlglot.tokens.TokenType.UNCACHE": {"tf": 1}, "sqlglot.tokens.TokenType.UNION": {"tf": 1}, "sqlglot.tokens.TokenType.UNLOGGED": {"tf": 1}, "sqlglot.tokens.TokenType.UNNEST": {"tf": 1}, "sqlglot.tokens.TokenType.UNPIVOT": {"tf": 1}, "sqlglot.tokens.TokenType.UPDATE": {"tf": 1}, "sqlglot.tokens.TokenType.USE": {"tf": 1}, "sqlglot.tokens.TokenType.USING": {"tf": 1}, "sqlglot.tokens.TokenType.VALUES": {"tf": 1}, "sqlglot.tokens.TokenType.VIEW": {"tf": 1}, "sqlglot.tokens.TokenType.VOLATILE": {"tf": 1}, "sqlglot.tokens.TokenType.WHEN": {"tf": 1}, "sqlglot.tokens.TokenType.WHERE": {"tf": 1}, "sqlglot.tokens.TokenType.WINDOW": {"tf": 1}, "sqlglot.tokens.TokenType.WITH": {"tf": 1}, "sqlglot.tokens.TokenType.WITH_TIME_ZONE": {"tf": 1}, "sqlglot.tokens.TokenType.WITH_LOCAL_TIME_ZONE": {"tf": 1}, "sqlglot.tokens.TokenType.WITHIN_GROUP": {"tf": 1}, "sqlglot.tokens.TokenType.WITHOUT_TIME_ZONE": {"tf": 1}, "sqlglot.tokens.TokenType.UNIQUE": {"tf": 1}, "sqlglot.tokens.Token": {"tf": 1}, "sqlglot.tokens.Token.__init__": {"tf": 1}, "sqlglot.tokens.Token.number": {"tf": 1}, "sqlglot.tokens.Token.string": {"tf": 1}, "sqlglot.tokens.Token.identifier": {"tf": 1}, "sqlglot.tokens.Token.var": {"tf": 1}, "sqlglot.tokens.Token.start": {"tf": 1}, "sqlglot.tokens.Tokenizer": {"tf": 1}, "sqlglot.tokens.Tokenizer.reset": {"tf": 1}, "sqlglot.tokens.Tokenizer.tokenize": {"tf": 1}, "sqlglot.transforms": {"tf": 1}, "sqlglot.transforms.unalias_group": {"tf": 1}, "sqlglot.transforms.eliminate_distinct_on": {"tf": 1}, "sqlglot.transforms.eliminate_qualify": {"tf": 1}, "sqlglot.transforms.remove_precision_parameterized_types": {"tf": 1}, "sqlglot.transforms.unnest_to_explode": {"tf": 1}, "sqlglot.transforms.explode_to_unnest": {"tf": 1}, "sqlglot.transforms.remove_target_from_merge": {"tf": 1}, "sqlglot.transforms.preprocess": {"tf": 1}, "sqlglot.trie": {"tf": 1}, "sqlglot.trie.new_trie": {"tf": 1}, "sqlglot.trie.in_trie": {"tf": 1}}, "df": 1778, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.errors.SqlglotError": {"tf": 1}}, "df": 1}}}}}}}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.Dialects.SQLITE": {"tf": 1}, "sqlglot.dialects.sqlite": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Tokenizer": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Generator.cast_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Generator.datediff_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Generator.groupconcat_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Generator.least_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Generator.transaction_sql": {"tf": 1.4142135623730951}}, "df": 11}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.SqlSecurityProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}, "r": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.Sqrt": {"tf": 1}}, "df": 1}}}, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.schema": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_SCHEMA": {"tf": 1}, "sqlglot.expressions.Schema": {"tf": 1}, "sqlglot.generator.Generator.schema_sql": {"tf": 1}, "sqlglot.schema.Schema": {"tf": 1.4142135623730951}, "sqlglot.schema.Schema.add_table": {"tf": 1.4142135623730951}, "sqlglot.schema.Schema.column_names": {"tf": 1.4142135623730951}, "sqlglot.schema.Schema.get_column_type": {"tf": 1.4142135623730951}, "sqlglot.schema.Schema.supported_table_args": {"tf": 1.4142135623730951}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema.__init__": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema.table_parts": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema.find": {"tf": 1}, "sqlglot.schema.MappingSchema": {"tf": 1}, "sqlglot.schema.MappingSchema.__init__": {"tf": 1}, "sqlglot.schema.MappingSchema.from_mapping_schema": {"tf": 1.4142135623730951}, "sqlglot.schema.MappingSchema.copy": {"tf": 1}, "sqlglot.schema.MappingSchema.add_table": {"tf": 1}, "sqlglot.schema.MappingSchema.column_names": {"tf": 1}, "sqlglot.schema.MappingSchema.get_column_type": {"tf": 1}, "sqlglot.schema.ensure_schema": {"tf": 1.4142135623730951}, "sqlglot.schema.ensure_column_mapping": {"tf": 1}, "sqlglot.schema.flatten_schema": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SCHEMA": {"tf": 1}}, "df": 24, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.errors.SchemaError": {"tf": 1}}, "df": 1}}}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.SchemaCommentProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dialects.dialect.arrow_json_extract_scalar_sql": {"tf": 1}}, "df": 1}}}, "n": {"docs": {"sqlglot.executor.python.PythonExecutor.scan": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.scan_table": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.scan_csv": {"tf": 1}, "sqlglot.planner.Scan": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}}, "df": 5}}, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.scope": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.ROOT": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.SUBQUERY": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.DERIVED_TABLE": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.CTE": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.UNION": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.UDTF": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.__init__": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.clear_cache": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.branch": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.walk": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.replace": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.tables": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.ctes": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.derived_tables": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.udtfs": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.subqueries": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.columns": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.cte_sources": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.selects": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.external_columns": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.unqualified_columns": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.join_hints": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.source_columns": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.is_subquery": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.is_derived_table": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.is_union": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.is_cte": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.is_root": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.is_udtf": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.is_correlated_subquery": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.rename_source": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.add_source": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.remove_source": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.traverse": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.ref_count": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.build_scope": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1.4142135623730951}}, "df": 44, "t": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.scope.ScopeType": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.ROOT": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.SUBQUERY": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.DERIVED_TABLE": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.CTE": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.UNION": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.UDTF": {"tf": 1}}, "df": 7}}}}}}}}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.dialects.dialect.Dialects.SPARK": {"tf": 1}, "sqlglot.dialects.spark": {"tf": 1}, "sqlglot.dialects.spark.Spark": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Generator.cast_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Tokenizer": {"tf": 1.4142135623730951}}, "df": 7, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dataframe.sql.SparkSession": {"tf": 1}, "sqlglot.dataframe.sql.SparkSession.table": {"tf": 1}, "sqlglot.dataframe.sql.SparkSession.createDataFrame": {"tf": 1}, "sqlglot.dataframe.sql.SparkSession.sql": {"tf": 1}}, "df": 4}}}}}}}}}, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.SPACE": {"tf": 1}}, "df": 1}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.Split": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1}}, "df": 2}}}, "e": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot.generator.Generator.window_spec_sql": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe.sql.DataFrame.select": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.expressions.Expression.parent_select": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 1}, "sqlglot.expressions.Select": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.expressions.Select.limit": {"tf": 1}, "sqlglot.expressions.Select.offset": {"tf": 1}, "sqlglot.expressions.Select.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.lateral": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1}, "sqlglot.expressions.Select.where": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1}, "sqlglot.expressions.Select.window": {"tf": 1}, "sqlglot.expressions.Select.qualify": {"tf": 1}, "sqlglot.expressions.Select.distinct": {"tf": 1}, "sqlglot.expressions.Select.ctas": {"tf": 1}, "sqlglot.expressions.Select.lock": {"tf": 1}, "sqlglot.expressions.Select.is_star": {"tf": 1}, "sqlglot.expressions.select": {"tf": 1}, "sqlglot.generator.Generator.select_sql": {"tf": 1}, "sqlglot.tokens.TokenType.SELECT": {"tf": 1}}, "df": 26, "s": {"docs": {"sqlglot.optimizer.expand_multi_table_selects": {"tf": 1}, "sqlglot.optimizer.expand_multi_table_selects.expand_multi_table_selects": {"tf": 1.4142135623730951}, "sqlglot.optimizer.isolate_table_selects": {"tf": 1}, "sqlglot.optimizer.isolate_table_selects.isolate_table_selects": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.selects": {"tf": 1}}, "df": 5}, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.optimizer.pushdown_projections.DEFAULT_SELECTION": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 1}}, "df": 1}}}}}}, "t": {"docs": {"sqlglot.dataframe.sql.Column.set_table_name": {"tf": 1}, "sqlglot.executor.context.Context.set_row": {"tf": 1}, "sqlglot.executor.context.Context.set_index": {"tf": 1}, "sqlglot.executor.context.Context.set_range": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.set_operation": {"tf": 1}, "sqlglot.expressions.Expression.set": {"tf": 1}, "sqlglot.expressions.Set": {"tf": 1}, "sqlglot.generator.Generator.set_sql": {"tf": 1}, "sqlglot.generator.Generator.set_operation": {"tf": 1}, "sqlglot.tokens.TokenType.CHARACTER_SET": {"tf": 1}, "sqlglot.tokens.TokenType.SET": {"tf": 1}}, "df": 11, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.dialects.snowflake.Snowflake.Generator.settag_sql": {"tf": 1}, "sqlglot.expressions.SetTag": {"tf": 1}}, "df": 2}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {"sqlglot.expressions.SetItem": {"tf": 1}, "sqlglot.generator.Generator.setitem_sql": {"tf": 1}}, "df": 2}}}}, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.SetProperty": {"tf": 1}}, "df": 1}}}}}}}}, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.expressions.SetAgg": {"tf": 1}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.planner.SetOperation": {"tf": 1}, "sqlglot.planner.SetOperation.__init__": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}}, "df": 3}}}}}}}}}, "s": {"docs": {"sqlglot.tokens.TokenType.GROUPING_SETS": {"tf": 1}}, "df": 1}}, "r": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.serde": {"tf": 1}, "sqlglot.serde.dump": {"tf": 1}, "sqlglot.serde.load": {"tf": 1}, "sqlglot.tokens.TokenType.SERDE_PROPERTIES": {"tf": 1}}, "df": 4, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.SerdeProperties": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.expressions.DataType.Type.SERIAL": {"tf": 1}, "sqlglot.tokens.TokenType.SERIAL": {"tf": 1}}, "df": 2}}}}, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.tokens.TokenType.SESSION_PARAMETER": {"tf": 1}}, "df": 1, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.SessionParameter": {"tf": 1}, "sqlglot.generator.Generator.sessionparameter_sql": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}, "p": {"docs": {"sqlglot.generator.Generator.sep": {"tf": 1}}, "df": 1, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.tokens.TokenType.SEPARATOR": {"tf": 1}}, "df": 1}}}}}}}, "g": {"docs": {"sqlglot.generator.Generator.seg": {"tf": 1}}, "df": 1}, "q": {"docs": {"sqlglot.helper.seq_get": {"tf": 1}}, "df": 1}, "m": {"docs": {}, "df": 0, "i": {"docs": {"sqlglot.tokens.TokenType.SEMI": {"tf": 1}}, "df": 1, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.tokens.TokenType.SEMICOLON": {"tf": 1}}, "df": 1}}}}}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.tokens.TokenType.SEED": {"tf": 1}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1}, "sqlglot.executor.context.Context.sort": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.sort": {"tf": 1}, "sqlglot.expressions.Sort": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.generator.Generator.sort_sql": {"tf": 1}, "sqlglot.optimizer.simplify.uniq_sort": {"tf": 1}, "sqlglot.planner.Sort": {"tf": 1}, "sqlglot.tokens.TokenType.SORT_BY": {"tf": 1}}, "df": 9, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.tokens.TokenType.SORTKEY": {"tf": 1}}, "df": 1, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.SortKeyProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.SortArray": {"tf": 1}}, "df": 1}}}}}}}, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.qualify_columns.Resolver.get_source_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.source_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.rename_source": {"tf": 1}, "sqlglot.optimizer.scope.Scope.add_source": {"tf": 1}, "sqlglot.optimizer.scope.Scope.remove_source": {"tf": 1}}, "df": 5, "s": {"docs": {"sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 1}, "sqlglot.optimizer.scope.Scope.cte_sources": {"tf": 1}}, "df": 2}}}}}, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.SOME": {"tf": 1}}, "df": 1}}}, "u": {"docs": {}, "df": 0, "m": {"docs": {"sqlglot.dataframe.sql.GroupedData.sum": {"tf": 1}, "sqlglot.dialects.dialect.count_if_to_sum": {"tf": 1}, "sqlglot.expressions.Sum": {"tf": 1}}, "df": 3}, "b": {"docs": {"sqlglot.expressions.Sub": {"tf": 1}, "sqlglot.generator.Generator.sub_sql": {"tf": 1}}, "df": 2, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dataframe.sql.Column.substr": {"tf": 1}}, "df": 1, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.executor.env.substring": {"tf": 1}, "sqlglot.expressions.Substring": {"tf": 1}}, "df": 2}}}}}}, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.Subqueryable.subquery": {"tf": 1}, "sqlglot.expressions.Subquery": {"tf": 1}, "sqlglot.expressions.Subquery.unnest": {"tf": 1}, "sqlglot.expressions.Subquery.is_star": {"tf": 1}, "sqlglot.expressions.Subquery.output_name": {"tf": 1}, "sqlglot.expressions.subquery": {"tf": 1}, "sqlglot.generator.Generator.subquery_sql": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.SUBQUERY": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_subquery": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_correlated_subquery": {"tf": 1}}, "df": 10, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Subqueryable": {"tf": 1}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 1}, "sqlglot.expressions.Subqueryable.limit": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1}}, "df": 4}}}}, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.SubqueryPredicate": {"tf": 1}}, "df": 1}}}}}}}}}}, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.optimizer.eliminate_subqueries": {"tf": 1}, "sqlglot.optimizer.eliminate_subqueries.eliminate_subqueries": {"tf": 1.4142135623730951}, "sqlglot.optimizer.merge_subqueries": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1.4142135623730951}, "sqlglot.optimizer.merge_subqueries.merge_ctes": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_derived_tables": {"tf": 1}, "sqlglot.optimizer.scope.Scope.subqueries": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 1.4142135623730951}, "sqlglot.optimizer.unnest_subqueries.unnest": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.decorrelate": {"tf": 1}}, "df": 11}}}}}}}, "c": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.helper.subclasses": {"tf": 1}}, "df": 1}}}}}}}}, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.DataType.Type.SUPER": {"tf": 1}, "sqlglot.tokens.TokenType.SUPER": {"tf": 1}}, "df": 2}}, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.schema.Schema.supported_table_args": {"tf": 1}}, "df": 1}}}}}}}}, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.Expression.is_star": {"tf": 1}, "sqlglot.expressions.Union.is_star": {"tf": 1}, "sqlglot.expressions.Select.is_star": {"tf": 1}, "sqlglot.expressions.Subquery.is_star": {"tf": 1}, "sqlglot.expressions.Star": {"tf": 1}, "sqlglot.expressions.Star.output_name": {"tf": 1}, "sqlglot.generator.Generator.star_sql": {"tf": 1}, "sqlglot.tokens.TokenType.STAR": {"tf": 1}}, "df": 8, "t": {"docs": {"sqlglot.tokens.TokenType.BLOCK_START": {"tf": 1}, "sqlglot.tokens.Token.start": {"tf": 1}}, "df": 2, "s": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.dataframe.sql.Column.startswith": {"tf": 1}}, "df": 1}}}}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dialects.dialect.Dialects.STARROCKS": {"tf": 1}, "sqlglot.dialects.starrocks": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.4142135623730951}}, "df": 5}}}}}, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.expressions.StarMap": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot.executor.python.PythonExecutor.static": {"tf": 1}}, "df": 1}}}, "b": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.StabilityProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}, "r": {"docs": {"sqlglot.dialects.dialect.str_position_sql": {"tf": 1}, "sqlglot.dialects.dialect.str_to_time_sql": {"tf": 1}, "sqlglot.executor.env.str_position": {"tf": 1}}, "df": 3, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.dialect.struct_extract_sql": {"tf": 1}, "sqlglot.expressions.DataType.Type.STRUCT": {"tf": 1}, "sqlglot.expressions.Struct": {"tf": 1}, "sqlglot.tokens.TokenType.STRUCT": {"tf": 1}}, "df": 4, "k": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.expressions.StructKwarg": {"tf": 1}, "sqlglot.generator.Generator.structkwarg_sql": {"tf": 1}}, "df": 2}}}}}, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.StructExtract": {"tf": 1}}, "df": 1}}}}}}}}}}, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dialects.dialect.locate_to_strposition": {"tf": 1}, "sqlglot.dialects.dialect.strposition_to_locate_sql": {"tf": 1}, "sqlglot.expressions.StrPosition": {"tf": 1}}, "df": 3}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.expressions.Expression.is_string": {"tf": 1}, "sqlglot.expressions.Literal.string": {"tf": 1}, "sqlglot.tokens.TokenType.STRING": {"tf": 1}, "sqlglot.tokens.TokenType.BIT_STRING": {"tf": 1}, "sqlglot.tokens.TokenType.HEX_STRING": {"tf": 1}, "sqlglot.tokens.TokenType.BYTE_STRING": {"tf": 1}, "sqlglot.tokens.Token.string": {"tf": 1}}, "df": 7}}}, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.StrToDate": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.StrToTime": {"tf": 1}}, "df": 1}}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "x": {"docs": {"sqlglot.expressions.StrToUnix": {"tf": 1}}, "df": 1}}}}}}}, "d": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "v": {"docs": {"sqlglot.expressions.Stddev": {"tf": 1}}, "df": 1, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.expressions.StddevPop": {"tf": 1}}, "df": 1}}}, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.expressions.StddevSamp": {"tf": 1}}, "df": 1}}}}}}}}, "e": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.planner.Step": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Step.add_dependency": {"tf": 1}, "sqlglot.planner.Step.to_s": {"tf": 1}}, "df": 4}}}, "a": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.DataFrameWriter.saveAsTable": {"tf": 1}}, "df": 1}}}}}}}}}, "f": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.no_safe_divide_sql": {"tf": 1}}, "df": 1, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.SafeDivide": {"tf": 1}}, "df": 1}}}}}}}}, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Expression.same_parent": {"tf": 1}}, "df": 1}, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.TABLE_SAMPLE": {"tf": 1}}, "df": 1}}}}}, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.Dialects.SNOWFLAKE": {"tf": 1}, "sqlglot.dialects.snowflake": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Tokenizer": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator.except_op": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator.intersect_op": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator.settag_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator.describe_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator.generatedasidentitycolumnconstraint_sql": {"tf": 1.4142135623730951}}, "df": 13}}}}}}}, "a": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.helper.camel_to_snake_case": {"tf": 1}}, "df": 1}}}}, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {"sqlglot.dialects.mysql.MySQL.Generator.show_sql": {"tf": 1}, "sqlglot.expressions.Show": {"tf": 1}, "sqlglot.tokens.TokenType.SHOW": {"tf": 1}}, "df": 3}, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.helper.should_identify": {"tf": 1}}, "df": 1}}}}, "a": {"2": {"docs": {"sqlglot.expressions.SHA2": {"tf": 1}}, "df": 1}, "docs": {"sqlglot.expressions.SHA": {"tf": 1}}, "df": 1}}, "y": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.tsql.TSQL.Generator.systemtime_sql": {"tf": 1}, "sqlglot.expressions.SystemTime": {"tf": 1}}, "df": 2}}}}}}}}}, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.DataType.Type.SMALLINT": {"tf": 1}, "sqlglot.tokens.TokenType.SMALLINT": {"tf": 1}}, "df": 2}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.expressions.DataType.Type.SMALLSERIAL": {"tf": 1}, "sqlglot.tokens.TokenType.SMALLSERIAL": {"tf": 1}}, "df": 2}}}}}}, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.DataType.Type.SMALLMONEY": {"tf": 1}, "sqlglot.tokens.TokenType.SMALLMONEY": {"tf": 1}}, "df": 2}}}}}}}}}, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.tokens.TokenType.SIMILAR_TO": {"tf": 1}}, "df": 1, "t": {"docs": {}, "df": 0, "o": {"docs": {"sqlglot.expressions.SimilarTo": {"tf": 1}, "sqlglot.generator.Generator.similarto_sql": {"tf": 1}}, "df": 2}}}}}}, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.optimizer.simplify": {"tf": 1}, "sqlglot.optimizer.simplify.simplify": {"tf": 1.4142135623730951}, "sqlglot.optimizer.simplify.rewrite_between": {"tf": 1}, "sqlglot.optimizer.simplify.simplify_not": {"tf": 1.4142135623730951}, "sqlglot.optimizer.simplify.flatten": {"tf": 1}, "sqlglot.optimizer.simplify.simplify_connectors": {"tf": 1.4142135623730951}, "sqlglot.optimizer.simplify.remove_compliments": {"tf": 1}, "sqlglot.optimizer.simplify.uniq_sort": {"tf": 1}, "sqlglot.optimizer.simplify.absorb_and_eliminate": {"tf": 1}, "sqlglot.optimizer.simplify.simplify_literals": {"tf": 1.4142135623730951}, "sqlglot.optimizer.simplify.simplify_parens": {"tf": 1.4142135623730951}, "sqlglot.optimizer.simplify.remove_where_true": {"tf": 1}, "sqlglot.optimizer.simplify.always_true": {"tf": 1}, "sqlglot.optimizer.simplify.is_complement": {"tf": 1}, "sqlglot.optimizer.simplify.is_false": {"tf": 1}, "sqlglot.optimizer.simplify.is_null": {"tf": 1}, "sqlglot.optimizer.simplify.eval_boolean": {"tf": 1}, "sqlglot.optimizer.simplify.extract_date": {"tf": 1}, "sqlglot.optimizer.simplify.extract_interval": {"tf": 1}, "sqlglot.optimizer.simplify.date_literal": {"tf": 1}, "sqlglot.optimizer.simplify.boolean_literal": {"tf": 1}}, "df": 21}}}}}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Slice": {"tf": 1}, "sqlglot.generator.Generator.slice_sql": {"tf": 1}}, "df": 2}}}, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.tokens.TokenType.SLASH": {"tf": 1}}, "df": 1}}}}}, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.pretty": {"tf": 1}}, "df": 1}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {"sqlglot.dialects.dialect.Dialects.PRESTO": {"tf": 1}, "sqlglot.dialects.presto": {"tf": 1}, "sqlglot.dialects.presto.Presto": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Tokenizer": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Generator.interval_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Generator.transaction_sql": {"tf": 1.4142135623730951}}, "df": 8}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Predicate": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.nodes_for_predicate": {"tf": 1}}, "df": 2, "s": {"docs": {"sqlglot.optimizer.canonicalize.ensure_bool_predicates": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_predicates": {"tf": 1.4142135623730951}, "sqlglot.optimizer.pushdown_predicates.pushdown": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_cnf": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_dnf": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.nodes_for_predicate": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.replace_aliases": {"tf": 1}}, "df": 8}}}}}}}, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.generator.Generator.prepend_ctes": {"tf": 1}}, "df": 1}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.transforms.preprocess": {"tf": 1}}, "df": 1}}}}}}}, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.tokens.TokenType.PRECEDING": {"tf": 1}}, "df": 1}}}}}, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.transforms.remove_precision_parameterized_types": {"tf": 1}}, "df": 1}}}}}}}, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dialects.dialect.no_properties_sql": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator.with_properties": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.with_properties": {"tf": 1}, "sqlglot.expressions.Properties": {"tf": 1}, "sqlglot.expressions.Properties.Location": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_CREATE": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_NAME": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_SCHEMA": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_WITH": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_ALIAS": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_EXPRESSION": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_INDEX": {"tf": 1}, "sqlglot.expressions.Properties.Location.UNSUPPORTED": {"tf": 1}, "sqlglot.expressions.Properties.from_dict": {"tf": 1}, "sqlglot.generator.Generator.properties_sql": {"tf": 1}, "sqlglot.generator.Generator.root_properties": {"tf": 1}, "sqlglot.generator.Generator.properties": {"tf": 1}, "sqlglot.generator.Generator.with_properties": {"tf": 1}, "sqlglot.generator.Generator.locate_properties": {"tf": 1}, "sqlglot.tokens.TokenType.PROPERTIES": {"tf": 1}, "sqlglot.tokens.TokenType.SERDE_PROPERTIES": {"tf": 1}}, "df": 21}}}, "y": {"docs": {"sqlglot.expressions.Property": {"tf": 1}, "sqlglot.generator.Generator.property_sql": {"tf": 1}, "sqlglot.generator.Generator.naked_property": {"tf": 1}}, "df": 3}}}}}, "j": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.optimizer.pushdown_projections": {"tf": 1}, "sqlglot.optimizer.pushdown_projections.DEFAULT_SELECTION": {"tf": 1}, "sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 1.4142135623730951}}, "df": 3}}}}}}}}, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.PROCEDURE": {"tf": 1}}, "df": 1}}}}}}}, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.expressions.Pragma": {"tf": 1}, "sqlglot.generator.Generator.pragma_sql": {"tf": 1}, "sqlglot.tokens.TokenType.PRAGMA": {"tf": 1}}, "df": 3}}}}, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.tokens.TokenType.PRIMARY_KEY": {"tf": 1}}, "df": 1, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.PrimaryKey": {"tf": 1}, "sqlglot.generator.Generator.primarykey_sql": {"tf": 1}}, "df": 2, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.PrimaryKeyColumnConstraint": {"tf": 1}, "sqlglot.generator.Generator.primarykeycolumnconstraint_sql": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}}}}}}}}}}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.parse": {"tf": 1}, "sqlglot.parse_one": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.parse": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.parse_into": {"tf": 1}, "sqlglot.dialects.dialect.parse_date_delta": {"tf": 1}, "sqlglot.dialects.dialect.parse_date_delta_with_interval": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1}, "sqlglot.parser.parse_var_map": {"tf": 1}, "sqlglot.parser.parse_like": {"tf": 1}, "sqlglot.parser.Parser.parse": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 1}}, "df": 11, "r": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.expressions.Func.default_parser_mappings": {"tf": 1}, "sqlglot.parser": {"tf": 1}, "sqlglot.parser.parse_var_map": {"tf": 1}, "sqlglot.parser.parse_like": {"tf": 1}, "sqlglot.parser.binary_range_parser": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser.__init__": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser.reset": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser.parse": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser.parse_into": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser.check_errors": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser.raise_error": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser.expression": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser.validate_expression": {"tf": 1.4142135623730951}}, "df": 33}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.errors.ParseError": {"tf": 1}, "sqlglot.errors.ParseError.__init__": {"tf": 1}, "sqlglot.errors.ParseError.new": {"tf": 1}}, "df": 3}}}}}}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.Partition": {"tf": 1}, "sqlglot.generator.Generator.partition_sql": {"tf": 1}, "sqlglot.generator.Generator.partition_by_sql": {"tf": 1}, "sqlglot.tokens.TokenType.PARTITION": {"tf": 1}, "sqlglot.tokens.TokenType.PARTITION_BY": {"tf": 1}}, "df": 5, "b": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dataframe.sql.Window.partitionBy": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.partitionBy": {"tf": 1}}, "df": 2}}, "s": {"docs": {"sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1}}, "df": 1}, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dialects.teradata.Teradata.Generator.partitionedbyproperty_sql": {"tf": 1}, "sqlglot.expressions.PartitionedByProperty": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}}}}, "s": {"docs": {"sqlglot.expressions.Column.parts": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema.table_parts": {"tf": 1}}, "df": 2}}, "e": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dialects.dialect.no_paren_current_date_sql": {"tf": 1}, "sqlglot.expressions.Paren": {"tf": 1}, "sqlglot.expressions.paren": {"tf": 1}, "sqlglot.generator.Generator.paren_sql": {"tf": 1}, "sqlglot.tokens.TokenType.L_PAREN": {"tf": 1}, "sqlglot.tokens.TokenType.R_PAREN": {"tf": 1}}, "df": 6, "t": {"docs": {"sqlglot.expressions.Expression.parent_select": {"tf": 1}, "sqlglot.expressions.Expression.same_parent": {"tf": 1}}, "df": 2}, "s": {"docs": {"sqlglot.optimizer.simplify.simplify_parens": {"tf": 1}}, "df": 1}}}, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.Parameter": {"tf": 1}, "sqlglot.generator.Generator.parameter_sql": {"tf": 1}, "sqlglot.tokens.TokenType.PARAMETER": {"tf": 1}, "sqlglot.tokens.TokenType.SESSION_PARAMETER": {"tf": 1}}, "df": 4, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.transforms.remove_precision_parameterized_types": {"tf": 1}}, "df": 1}}}}}}}}, "s": {"docs": {"sqlglot.helper.count_params": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.PathColumnConstraint": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}, "d": {"docs": {"sqlglot.generator.Generator.pad_comment": {"tf": 1}}, "df": 1}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe.sql.DataFrame.persist": {"tf": 1}}, "df": 1}}}}, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.PERCENT": {"tf": 1}}, "df": 1, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.PercentileCont": {"tf": 1}}, "df": 1}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot.expressions.PercentileDisc": {"tf": 1}}, "df": 1}}}}}}}}}}}}}, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe.sql.GroupedData.pivot": {"tf": 1}, "sqlglot.dialects.dialect.no_pivot_sql": {"tf": 1}, "sqlglot.expressions.Pivot": {"tf": 1}, "sqlglot.generator.Generator.pivot_sql": {"tf": 1}, "sqlglot.tokens.TokenType.PIVOT": {"tf": 1}}, "df": 5}}}, "p": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.PIPE": {"tf": 1}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.Properties.Location.POST_CREATE": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_NAME": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_SCHEMA": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_WITH": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_ALIAS": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_EXPRESSION": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_INDEX": {"tf": 1}}, "df": 7, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dialects.dialect.Dialects.POSTGRES": {"tf": 1}, "sqlglot.dialects.postgres": {"tf": 1}, "sqlglot.dialects.postgres.Postgres": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Tokenizer": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.4142135623730951}}, "df": 6}}}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dialects.dialect.str_position_sql": {"tf": 1}, "sqlglot.executor.env.str_position": {"tf": 1}}, "df": 2}}}}}, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Posexplode": {"tf": 1}}, "df": 1}}}}}}}}, "p": {"docs": {"sqlglot.executor.table.Table.pop": {"tf": 1}, "sqlglot.expressions.Expression.pop": {"tf": 1}}, "df": 2}, "w": {"docs": {"sqlglot.expressions.Pow": {"tf": 1}}, "df": 1}}, "y": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.executor.python": {"tf": 1}, "sqlglot.executor.python.PythonExecutor": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.__init__": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.execute": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.generate": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.generate_tuple": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.context": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.table": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.scan": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.static": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.scan_table": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.scan_csv": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.join": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.nested_loop_join": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.hash_join": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.aggregate": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.sort": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.set_operation": {"tf": 1}, "sqlglot.executor.python.Python": {"tf": 1.4142135623730951}, "sqlglot.executor.python.Python.Tokenizer": {"tf": 1.4142135623730951}, "sqlglot.executor.python.Python.Generator": {"tf": 1.4142135623730951}}, "df": 21, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.executor.python.PythonExecutor": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.__init__": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.execute": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.generate": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.generate_tuple": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.context": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.table": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.scan": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.static": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.scan_table": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.scan_csv": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.join": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.nested_loop_join": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.hash_join": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.aggregate": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.sort": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.set_operation": {"tf": 1}}, "df": 17}}}}}}}}}}}}}, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.Placeholder": {"tf": 1}, "sqlglot.generator.Generator.placeholder_sql": {"tf": 1}, "sqlglot.tokens.TokenType.PLACEHOLDER": {"tf": 1}}, "df": 3, "s": {"docs": {"sqlglot.expressions.replace_placeholders": {"tf": 1}}, "df": 1}}}}}}}}}, "n": {"docs": {"sqlglot.planner.Plan": {"tf": 1}, "sqlglot.planner.Plan.__init__": {"tf": 1}}, "df": 2, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.planner": {"tf": 1}, "sqlglot.planner.Plan": {"tf": 1}, "sqlglot.planner.Plan.__init__": {"tf": 1}, "sqlglot.planner.Step": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Step.add_dependency": {"tf": 1}, "sqlglot.planner.Step.to_s": {"tf": 1}, "sqlglot.planner.Scan": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.Join": {"tf": 1}, "sqlglot.planner.Join.from_joins": {"tf": 1}, "sqlglot.planner.Aggregate": {"tf": 1}, "sqlglot.planner.Sort": {"tf": 1}, "sqlglot.planner.SetOperation": {"tf": 1}, "sqlglot.planner.SetOperation.__init__": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}}, "df": 16}}}}}, "u": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.tokens.TokenType.PLUS": {"tf": 1}}, "df": 1}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "o": {"docs": {"sqlglot.tokens.TokenType.PSEUDO_TYPE": {"tf": 1}}, "df": 1, "t": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.PseudoType": {"tf": 1}, "sqlglot.generator.Generator.pseudotype_sql": {"tf": 1}}, "df": 2}}}}}}}}}, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.optimizer.pushdown_predicates": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_predicates": {"tf": 1.4142135623730951}, "sqlglot.optimizer.pushdown_predicates.pushdown": {"tf": 1.4142135623730951}, "sqlglot.optimizer.pushdown_predicates.pushdown_cnf": {"tf": 1.4142135623730951}, "sqlglot.optimizer.pushdown_predicates.pushdown_dnf": {"tf": 1.4142135623730951}, "sqlglot.optimizer.pushdown_predicates.nodes_for_predicate": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.replace_aliases": {"tf": 1}, "sqlglot.optimizer.pushdown_projections": {"tf": 1}, "sqlglot.optimizer.pushdown_projections.DEFAULT_SELECTION": {"tf": 1}, "sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 1.4142135623730951}}, "df": 10}}}}}}}}, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.tokens.TokenType.ON": {"tf": 1}, "sqlglot.transforms.eliminate_distinct_on": {"tf": 1}}, "df": 3, "e": {"docs": {"sqlglot.parse_one": {"tf": 1}}, "df": 1}, "u": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.OnUpdateColumnConstraint": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.OnConflict": {"tf": 1}, "sqlglot.generator.Generator.onconflict_sql": {"tf": 1}}, "df": 2}}}}}}, "m": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.OnCommitProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.tokens.TokenType.ONLY": {"tf": 1}}, "df": 1}}}, "r": {"docs": {"sqlglot.dialects.dialect.Dialect.get_or_raise": {"tf": 1}, "sqlglot.dialects.dialect.min_or_least": {"tf": 1}, "sqlglot.dialects.dialect.max_or_greatest": {"tf": 1}, "sqlglot.dialects.dialect.ts_or_ds_to_date_sql": {"tf": 1}, "sqlglot.expressions.Condition.or_": {"tf": 1}, "sqlglot.expressions.Or": {"tf": 1}, "sqlglot.expressions.or_": {"tf": 1}, "sqlglot.generator.Generator.or_sql": {"tf": 1}, "sqlglot.tokens.TokenType.OR": {"tf": 1}}, "df": 9, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.Order": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.generator.Generator.order_sql": {"tf": 1}, "sqlglot.tokens.TokenType.ORDER_BY": {"tf": 1}}, "df": 4, "b": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.Window.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.orderBy": {"tf": 1}}, "df": 3}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.executor.env.ordered": {"tf": 1}, "sqlglot.expressions.Ordered": {"tf": 1}, "sqlglot.generator.Generator.ordered_sql": {"tf": 1}, "sqlglot.tokens.TokenType.ORDERED": {"tf": 1}}, "df": 4}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.tokens.TokenType.ORDINALITY": {"tf": 1}}, "df": 1}}}}}}}}, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.Dialects.ORACLE": {"tf": 1}, "sqlglot.dialects.oracle": {"tf": 1}, "sqlglot.dialects.oracle.Oracle": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Generator.offset_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Generator.column_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Generator.xmltable_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Tokenizer": {"tf": 1.4142135623730951}}, "df": 9}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dataframe.sql.Column.invoke_expression_over_column": {"tf": 1}, "sqlglot.dataframe.sql.Column.over": {"tf": 1}, "sqlglot.tokens.TokenType.OVER": {"tf": 1}}, "df": 3, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.Overlaps": {"tf": 1}, "sqlglot.generator.Generator.overlaps_sql": {"tf": 1}, "sqlglot.tokens.TokenType.OVERLAPS": {"tf": 1}}, "df": 3}}}}, "w": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.OVERWRITE": {"tf": 1}}, "df": 1}}}}}}}}, "p": {"docs": {"sqlglot.dataframe.sql.Column.binary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.inverse_binary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.unary_op": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.in_unnest_op": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.except_op": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.intersect_op": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.except_op": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.intersect_op": {"tf": 1}, "sqlglot.generator.Generator.except_op": {"tf": 1}, "sqlglot.generator.Generator.intersect_op": {"tf": 1}, "sqlglot.generator.Generator.union_op": {"tf": 1}, "sqlglot.generator.Generator.in_unnest_op": {"tf": 1}, "sqlglot.generator.Generator.op_expressions": {"tf": 1}}, "df": 13, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.optimize_joins": {"tf": 1}, "sqlglot.optimizer.optimize_joins.optimize_joins": {"tf": 1.4142135623730951}, "sqlglot.optimizer.optimize_joins.reorder_joins": {"tf": 1}, "sqlglot.optimizer.optimize_joins.normalize": {"tf": 1}, "sqlglot.optimizer.optimize_joins.other_table_names": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 6, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.errors.OptimizeError": {"tf": 1}}, "df": 1}}}}}, "r": {"docs": {"sqlglot.optimizer": {"tf": 1}, "sqlglot.optimizer.annotate_types": {"tf": 1}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}, "sqlglot.optimizer.annotate_types.TypeAnnotator": {"tf": 1}, "sqlglot.optimizer.annotate_types.TypeAnnotator.__init__": {"tf": 1}, "sqlglot.optimizer.annotate_types.TypeAnnotator.annotate": {"tf": 1}, "sqlglot.optimizer.canonicalize": {"tf": 1}, "sqlglot.optimizer.canonicalize.canonicalize": {"tf": 1}, "sqlglot.optimizer.canonicalize.add_text_to_concat": {"tf": 1}, "sqlglot.optimizer.canonicalize.coerce_type": {"tf": 1}, "sqlglot.optimizer.canonicalize.remove_redundant_casts": {"tf": 1}, "sqlglot.optimizer.canonicalize.ensure_bool_predicates": {"tf": 1}, "sqlglot.optimizer.eliminate_ctes": {"tf": 1}, "sqlglot.optimizer.eliminate_ctes.eliminate_ctes": {"tf": 1}, "sqlglot.optimizer.eliminate_joins": {"tf": 1}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 1}, "sqlglot.optimizer.eliminate_joins.join_condition": {"tf": 1}, "sqlglot.optimizer.eliminate_subqueries": {"tf": 1}, "sqlglot.optimizer.eliminate_subqueries.eliminate_subqueries": {"tf": 1}, "sqlglot.optimizer.expand_laterals": {"tf": 1}, "sqlglot.optimizer.expand_laterals.expand_laterals": {"tf": 1}, "sqlglot.optimizer.expand_multi_table_selects": {"tf": 1}, "sqlglot.optimizer.expand_multi_table_selects.expand_multi_table_selects": {"tf": 1}, "sqlglot.optimizer.isolate_table_selects": {"tf": 1}, "sqlglot.optimizer.isolate_table_selects.isolate_table_selects": {"tf": 1}, "sqlglot.optimizer.lower_identities": {"tf": 1}, "sqlglot.optimizer.lower_identities.lower_identities": {"tf": 1}, "sqlglot.optimizer.merge_subqueries": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_ctes": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_derived_tables": {"tf": 1}, "sqlglot.optimizer.normalize": {"tf": 1}, "sqlglot.optimizer.normalize.normalize": {"tf": 1}, "sqlglot.optimizer.normalize.normalized": {"tf": 1}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1}, "sqlglot.optimizer.normalize.distributive_law": {"tf": 1}, "sqlglot.optimizer.optimize_joins": {"tf": 1}, "sqlglot.optimizer.optimize_joins.optimize_joins": {"tf": 1}, "sqlglot.optimizer.optimize_joins.reorder_joins": {"tf": 1}, "sqlglot.optimizer.optimize_joins.normalize": {"tf": 1}, "sqlglot.optimizer.optimize_joins.other_table_names": {"tf": 1}, "sqlglot.optimizer.optimizer": {"tf": 1.4142135623730951}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1.4142135623730951}, "sqlglot.optimizer.pushdown_predicates": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_predicates": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_cnf": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_dnf": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.nodes_for_predicate": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.replace_aliases": {"tf": 1}, "sqlglot.optimizer.pushdown_projections": {"tf": 1}, "sqlglot.optimizer.pushdown_projections.DEFAULT_SELECTION": {"tf": 1}, "sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 1}, "sqlglot.optimizer.qualify_columns": {"tf": 1}, "sqlglot.optimizer.qualify_columns.qualify_columns": {"tf": 1}, "sqlglot.optimizer.qualify_columns.validate_qualify_columns": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.__init__": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.get_table": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.all_columns": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.get_source_columns": {"tf": 1}, "sqlglot.optimizer.qualify_tables": {"tf": 1}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"tf": 1}, "sqlglot.optimizer.scope": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.ROOT": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.SUBQUERY": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.DERIVED_TABLE": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.CTE": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.UNION": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.UDTF": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 1}, "sqlglot.optimizer.scope.Scope.__init__": {"tf": 1}, "sqlglot.optimizer.scope.Scope.clear_cache": {"tf": 1}, "sqlglot.optimizer.scope.Scope.branch": {"tf": 1}, "sqlglot.optimizer.scope.Scope.walk": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1}, "sqlglot.optimizer.scope.Scope.replace": {"tf": 1}, "sqlglot.optimizer.scope.Scope.tables": {"tf": 1}, "sqlglot.optimizer.scope.Scope.ctes": {"tf": 1}, "sqlglot.optimizer.scope.Scope.derived_tables": {"tf": 1}, "sqlglot.optimizer.scope.Scope.udtfs": {"tf": 1}, "sqlglot.optimizer.scope.Scope.subqueries": {"tf": 1}, "sqlglot.optimizer.scope.Scope.columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 1}, "sqlglot.optimizer.scope.Scope.cte_sources": {"tf": 1}, "sqlglot.optimizer.scope.Scope.selects": {"tf": 1}, "sqlglot.optimizer.scope.Scope.external_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.unqualified_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.join_hints": {"tf": 1}, "sqlglot.optimizer.scope.Scope.source_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_subquery": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_derived_table": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_union": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_cte": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_root": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_udtf": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_correlated_subquery": {"tf": 1}, "sqlglot.optimizer.scope.Scope.rename_source": {"tf": 1}, "sqlglot.optimizer.scope.Scope.add_source": {"tf": 1}, "sqlglot.optimizer.scope.Scope.remove_source": {"tf": 1}, "sqlglot.optimizer.scope.Scope.traverse": {"tf": 1}, "sqlglot.optimizer.scope.Scope.ref_count": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}, "sqlglot.optimizer.scope.build_scope": {"tf": 1}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1}, "sqlglot.optimizer.simplify": {"tf": 1}, "sqlglot.optimizer.simplify.simplify": {"tf": 1}, "sqlglot.optimizer.simplify.rewrite_between": {"tf": 1}, "sqlglot.optimizer.simplify.simplify_not": {"tf": 1}, "sqlglot.optimizer.simplify.flatten": {"tf": 1}, "sqlglot.optimizer.simplify.simplify_connectors": {"tf": 1}, "sqlglot.optimizer.simplify.remove_compliments": {"tf": 1}, "sqlglot.optimizer.simplify.uniq_sort": {"tf": 1}, "sqlglot.optimizer.simplify.absorb_and_eliminate": {"tf": 1}, "sqlglot.optimizer.simplify.simplify_literals": {"tf": 1}, "sqlglot.optimizer.simplify.simplify_parens": {"tf": 1}, "sqlglot.optimizer.simplify.remove_where_true": {"tf": 1}, "sqlglot.optimizer.simplify.always_true": {"tf": 1}, "sqlglot.optimizer.simplify.is_complement": {"tf": 1}, "sqlglot.optimizer.simplify.is_false": {"tf": 1}, "sqlglot.optimizer.simplify.is_null": {"tf": 1}, "sqlglot.optimizer.simplify.eval_boolean": {"tf": 1}, "sqlglot.optimizer.simplify.extract_date": {"tf": 1}, "sqlglot.optimizer.simplify.extract_interval": {"tf": 1}, "sqlglot.optimizer.simplify.date_literal": {"tf": 1}, "sqlglot.optimizer.simplify.boolean_literal": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.unnest": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.decorrelate": {"tf": 1}}, "df": 132}}}}}, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.tokens.TokenType.OPTIONS": {"tf": 1}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.executor.python.PythonExecutor.set_operation": {"tf": 1}, "sqlglot.generator.Generator.set_operation": {"tf": 1}}, "df": 2}}}}, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.Expression.unnest_operands": {"tf": 1}}, "df": 1}}}}}, "n": {"docs": {"sqlglot.helper.open_file": {"tf": 1}}, "df": 1}}}, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.optimizer.optimize_joins.other_table_names": {"tf": 1}}, "df": 1, "w": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.Column.otherwise": {"tf": 1}}, "df": 1}}}}}}}}, "f": {"docs": {"sqlglot.tokens.TokenType.OUT_OF": {"tf": 1}}, "df": 1, "f": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.oracle.Oracle.Generator.offset_sql": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator.offset_sql": {"tf": 1}, "sqlglot.expressions.Offset": {"tf": 1}, "sqlglot.expressions.Select.offset": {"tf": 1}, "sqlglot.generator.Generator.offset_sql": {"tf": 1}, "sqlglot.helper.apply_index_offset": {"tf": 1}, "sqlglot.tokens.TokenType.OFFSET": {"tf": 1}}, "df": 7}}}}}, "u": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.OUT_OF": {"tf": 1}}, "df": 1, "p": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.Expression.output_name": {"tf": 1}, "sqlglot.expressions.Column.output_name": {"tf": 1}, "sqlglot.expressions.Identifier.output_name": {"tf": 1}, "sqlglot.expressions.Literal.output_name": {"tf": 1}, "sqlglot.expressions.Subquery.output_name": {"tf": 1}, "sqlglot.expressions.Star.output_name": {"tf": 1}, "sqlglot.expressions.Alias.output_name": {"tf": 1}, "sqlglot.expressions.Cast.output_name": {"tf": 1}}, "df": 8}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.tokens.TokenType.OUTER": {"tf": 1}}, "df": 1}}}}, "b": {"docs": {}, "df": 0, "j": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.DataType.Type.OBJECT": {"tf": 1}, "sqlglot.helper.object_to_dict": {"tf": 1}, "sqlglot.tokens.TokenType.OBJECT": {"tf": 1}}, "df": 3}}}}}}, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.transpile": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.transpile": {"tf": 1}}, "df": 2}}}}, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator.transaction_sql": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator.transaction_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.transaction_sql": {"tf": 1}, "sqlglot.expressions.Transaction": {"tf": 1}, "sqlglot.generator.Generator.transaction_sql": {"tf": 1}}, "df": 5}}}}}}, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {"sqlglot.expressions.Expression.transform": {"tf": 1}}, "df": 1, "s": {"docs": {"sqlglot.transforms": {"tf": 1}, "sqlglot.transforms.unalias_group": {"tf": 1}, "sqlglot.transforms.eliminate_distinct_on": {"tf": 1}, "sqlglot.transforms.eliminate_qualify": {"tf": 1}, "sqlglot.transforms.remove_precision_parameterized_types": {"tf": 1}, "sqlglot.transforms.unnest_to_explode": {"tf": 1}, "sqlglot.transforms.explode_to_unnest": {"tf": 1}, "sqlglot.transforms.remove_target_from_merge": {"tf": 1}, "sqlglot.transforms.preprocess": {"tf": 1}}, "df": 9}}}}}, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.TransientProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.scope.Scope.traverse": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}}, "df": 2}}}}}, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.tokens.TokenType.TRAILING": {"tf": 1}}, "df": 1}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "o": {"docs": {"sqlglot.dialects.dialect.Dialects.TRINO": {"tf": 1}, "sqlglot.dialects.trino": {"tf": 1}, "sqlglot.dialects.trino.Trino": {"tf": 1.4142135623730951}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.trino.Trino.Tokenizer": {"tf": 1.4142135623730951}}, "df": 5}}, "m": {"docs": {"sqlglot.dialects.dialect.trim_sql": {"tf": 1}, "sqlglot.expressions.Trim": {"tf": 1}, "sqlglot.generator.Generator.trim_sql": {"tf": 1}}, "df": 3}, "e": {"docs": {"sqlglot.trie": {"tf": 1}, "sqlglot.trie.new_trie": {"tf": 1.4142135623730951}, "sqlglot.trie.in_trie": {"tf": 1.4142135623730951}}, "df": 3}}, "y": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.dialect.no_trycast_sql": {"tf": 1}, "sqlglot.expressions.TryCast": {"tf": 1}, "sqlglot.generator.Generator.trycast_sql": {"tf": 1}}, "df": 3}}}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot.dialects.dialect.date_trunc_to_time": {"tf": 1}}, "df": 1}}, "e": {"docs": {"sqlglot.expressions.true": {"tf": 1}, "sqlglot.optimizer.simplify.remove_where_true": {"tf": 1}, "sqlglot.optimizer.simplify.always_true": {"tf": 1}, "sqlglot.tokens.TokenType.TRUE": {"tf": 1}}, "df": 4}}}, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.SparkSession.table": {"tf": 1}, "sqlglot.dataframe.sql.Column.set_table_name": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameReader.table": {"tf": 1}, "sqlglot.executor.context.Context.table_iter": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.table": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.scan_table": {"tf": 1}, "sqlglot.executor.table": {"tf": 1}, "sqlglot.executor.table.Table": {"tf": 1.4142135623730951}, "sqlglot.executor.table.Table.__init__": {"tf": 1.4142135623730951}, "sqlglot.executor.table.Table.add_columns": {"tf": 1.4142135623730951}, "sqlglot.executor.table.Table.append": {"tf": 1.4142135623730951}, "sqlglot.executor.table.Table.pop": {"tf": 1.4142135623730951}, "sqlglot.executor.table.TableIter": {"tf": 1}, "sqlglot.executor.table.TableIter.__init__": {"tf": 1}, "sqlglot.executor.table.RangeReader": {"tf": 1}, "sqlglot.executor.table.RangeReader.__init__": {"tf": 1}, "sqlglot.executor.table.RowReader": {"tf": 1}, "sqlglot.executor.table.RowReader.__init__": {"tf": 1}, "sqlglot.executor.table.Tables": {"tf": 1}, "sqlglot.executor.table.ensure_tables": {"tf": 1}, "sqlglot.expressions.Table": {"tf": 1}, "sqlglot.expressions.to_table": {"tf": 1}, "sqlglot.expressions.table_": {"tf": 1}, "sqlglot.expressions.rename_table": {"tf": 1}, "sqlglot.expressions.column_table_names": {"tf": 1}, "sqlglot.expressions.table_name": {"tf": 1}, "sqlglot.generator.Generator.table_sql": {"tf": 1}, "sqlglot.optimizer.expand_multi_table_selects": {"tf": 1}, "sqlglot.optimizer.expand_multi_table_selects.expand_multi_table_selects": {"tf": 1.4142135623730951}, "sqlglot.optimizer.isolate_table_selects": {"tf": 1}, "sqlglot.optimizer.isolate_table_selects.isolate_table_selects": {"tf": 1.4142135623730951}, "sqlglot.optimizer.optimize_joins.other_table_names": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.get_table": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.DERIVED_TABLE": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_derived_table": {"tf": 1}, "sqlglot.schema.Schema.add_table": {"tf": 1}, "sqlglot.schema.Schema.supported_table_args": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema.table_parts": {"tf": 1}, "sqlglot.schema.MappingSchema.add_table": {"tf": 1}, "sqlglot.tokens.TokenType.TABLE": {"tf": 1}, "sqlglot.tokens.TokenType.TABLE_SAMPLE": {"tf": 1}}, "df": 41, "a": {"docs": {}, "df": 0, "u": {"docs": {"sqlglot.dialects.dialect.Dialects.TABLEAU": {"tf": 1}, "sqlglot.dialects.tableau": {"tf": 1}, "sqlglot.dialects.tableau.Tableau": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1.4142135623730951}}, "df": 5}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.TableAlias": {"tf": 1}, "sqlglot.generator.Generator.tablealias_sql": {"tf": 1}}, "df": 2}}}}}, "s": {"docs": {"sqlglot.executor.table.Tables": {"tf": 1}, "sqlglot.executor.table.ensure_tables": {"tf": 1}, "sqlglot.expressions.replace_tables": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_derived_tables": {"tf": 1}, "sqlglot.optimizer.qualify_tables": {"tf": 1}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.tables": {"tf": 1}, "sqlglot.optimizer.scope.Scope.derived_tables": {"tf": 1}}, "df": 8, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.no_tablesample_sql": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator.tablesample_sql": {"tf": 1}, "sqlglot.expressions.TableSample": {"tf": 1}, "sqlglot.generator.Generator.tablesample_sql": {"tf": 1}}, "df": 4}}}}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.executor.table.TableIter": {"tf": 1}, "sqlglot.executor.table.TableIter.__init__": {"tf": 1}}, "df": 2}}}}, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.TableFormatProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}, "g": {"docs": {"sqlglot.expressions.Tag": {"tf": 1}, "sqlglot.generator.Generator.tag_sql": {"tf": 1}}, "df": 2}, "r": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.transforms.remove_target_from_merge": {"tf": 1}}, "df": 1}}}}}, "o": {"docs": {"sqlglot.dialects.dialect.date_trunc_to_time": {"tf": 1}, "sqlglot.dialects.dialect.locate_to_strposition": {"tf": 1}, "sqlglot.dialects.dialect.strposition_to_locate_sql": {"tf": 1}, "sqlglot.dialects.dialect.count_if_to_sum": {"tf": 1}, "sqlglot.dialects.dialect.str_to_time_sql": {"tf": 1}, "sqlglot.dialects.dialect.ts_or_ds_to_date_sql": {"tf": 1}, "sqlglot.expressions.Column.to_dot": {"tf": 1}, "sqlglot.expressions.to_identifier": {"tf": 1}, "sqlglot.expressions.to_interval": {"tf": 1}, "sqlglot.expressions.to_table": {"tf": 1}, "sqlglot.expressions.to_column": {"tf": 1}, "sqlglot.helper.camel_to_snake_case": {"tf": 1}, "sqlglot.helper.object_to_dict": {"tf": 1}, "sqlglot.lineage.Node.to_html": {"tf": 1}, "sqlglot.optimizer.canonicalize.add_text_to_concat": {"tf": 1}, "sqlglot.planner.Step.to_s": {"tf": 1}, "sqlglot.tokens.TokenType.SIMILAR_TO": {"tf": 1}, "sqlglot.transforms.unnest_to_explode": {"tf": 1}, "sqlglot.transforms.explode_to_unnest": {"tf": 1}}, "df": 19, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.generator.Generator.token_sql": {"tf": 1}, "sqlglot.tokens.Token": {"tf": 1}, "sqlglot.tokens.Token.__init__": {"tf": 1}, "sqlglot.tokens.Token.number": {"tf": 1}, "sqlglot.tokens.Token.string": {"tf": 1}, "sqlglot.tokens.Token.identifier": {"tf": 1}, "sqlglot.tokens.Token.var": {"tf": 1}, "sqlglot.tokens.Token.start": {"tf": 1}}, "df": 8, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.Dialect.tokenize": {"tf": 1}, "sqlglot.tokens.Tokenizer.tokenize": {"tf": 1}}, "df": 2, "r": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Tokenizer": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Tokenizer": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Tokenizer": {"tf": 1}, "sqlglot.dialects.drill.Drill.Tokenizer": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Tokenizer": {"tf": 1}, "sqlglot.dialects.hive.Hive.Tokenizer": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Tokenizer": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Tokenizer": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Tokenizer": {"tf": 1}, "sqlglot.dialects.presto.Presto.Tokenizer": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Tokenizer": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Tokenizer": {"tf": 1}, "sqlglot.dialects.spark.Spark.Tokenizer": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Tokenizer": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Tokenizer": {"tf": 1}, "sqlglot.dialects.trino.Trino.Tokenizer": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Tokenizer": {"tf": 1}, "sqlglot.executor.python.Python.Tokenizer": {"tf": 1}, "sqlglot.tokens.Tokenizer": {"tf": 1}, "sqlglot.tokens.Tokenizer.reset": {"tf": 1}, "sqlglot.tokens.Tokenizer.tokenize": {"tf": 1}}, "df": 21}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.errors.TokenError": {"tf": 1}}, "df": 1}}}}}, "s": {"docs": {"sqlglot.tokens": {"tf": 1}, "sqlglot.tokens.TokenType": {"tf": 1}, "sqlglot.tokens.TokenType.L_PAREN": {"tf": 1}, "sqlglot.tokens.TokenType.R_PAREN": {"tf": 1}, "sqlglot.tokens.TokenType.L_BRACKET": {"tf": 1}, "sqlglot.tokens.TokenType.R_BRACKET": {"tf": 1}, "sqlglot.tokens.TokenType.L_BRACE": {"tf": 1}, "sqlglot.tokens.TokenType.R_BRACE": {"tf": 1}, "sqlglot.tokens.TokenType.COMMA": {"tf": 1}, "sqlglot.tokens.TokenType.DOT": {"tf": 1}, "sqlglot.tokens.TokenType.DASH": {"tf": 1}, "sqlglot.tokens.TokenType.PLUS": {"tf": 1}, "sqlglot.tokens.TokenType.COLON": {"tf": 1}, "sqlglot.tokens.TokenType.DCOLON": {"tf": 1}, "sqlglot.tokens.TokenType.SEMICOLON": {"tf": 1}, "sqlglot.tokens.TokenType.STAR": {"tf": 1}, "sqlglot.tokens.TokenType.BACKSLASH": {"tf": 1}, "sqlglot.tokens.TokenType.SLASH": {"tf": 1}, "sqlglot.tokens.TokenType.LT": {"tf": 1}, "sqlglot.tokens.TokenType.LTE": {"tf": 1}, "sqlglot.tokens.TokenType.GT": {"tf": 1}, "sqlglot.tokens.TokenType.GTE": {"tf": 1}, "sqlglot.tokens.TokenType.NOT": {"tf": 1}, "sqlglot.tokens.TokenType.EQ": {"tf": 1}, "sqlglot.tokens.TokenType.NEQ": {"tf": 1}, "sqlglot.tokens.TokenType.NULLSAFE_EQ": {"tf": 1}, "sqlglot.tokens.TokenType.AND": {"tf": 1}, "sqlglot.tokens.TokenType.OR": {"tf": 1}, "sqlglot.tokens.TokenType.AMP": {"tf": 1}, "sqlglot.tokens.TokenType.DPIPE": {"tf": 1}, "sqlglot.tokens.TokenType.PIPE": {"tf": 1}, "sqlglot.tokens.TokenType.CARET": {"tf": 1}, "sqlglot.tokens.TokenType.TILDA": {"tf": 1}, "sqlglot.tokens.TokenType.ARROW": {"tf": 1}, "sqlglot.tokens.TokenType.DARROW": {"tf": 1}, "sqlglot.tokens.TokenType.FARROW": {"tf": 1}, "sqlglot.tokens.TokenType.HASH": {"tf": 1}, "sqlglot.tokens.TokenType.HASH_ARROW": {"tf": 1}, "sqlglot.tokens.TokenType.DHASH_ARROW": {"tf": 1}, "sqlglot.tokens.TokenType.LR_ARROW": {"tf": 1}, "sqlglot.tokens.TokenType.LT_AT": {"tf": 1}, "sqlglot.tokens.TokenType.AT_GT": {"tf": 1}, "sqlglot.tokens.TokenType.DOLLAR": {"tf": 1}, "sqlglot.tokens.TokenType.PARAMETER": {"tf": 1}, "sqlglot.tokens.TokenType.SESSION_PARAMETER": {"tf": 1}, "sqlglot.tokens.TokenType.NATIONAL": {"tf": 1}, "sqlglot.tokens.TokenType.DAMP": {"tf": 1}, "sqlglot.tokens.TokenType.BLOCK_START": {"tf": 1}, "sqlglot.tokens.TokenType.BLOCK_END": {"tf": 1}, "sqlglot.tokens.TokenType.SPACE": {"tf": 1}, "sqlglot.tokens.TokenType.BREAK": {"tf": 1}, "sqlglot.tokens.TokenType.STRING": {"tf": 1}, "sqlglot.tokens.TokenType.NUMBER": {"tf": 1}, "sqlglot.tokens.TokenType.IDENTIFIER": {"tf": 1}, "sqlglot.tokens.TokenType.DATABASE": {"tf": 1}, "sqlglot.tokens.TokenType.COLUMN": {"tf": 1}, "sqlglot.tokens.TokenType.COLUMN_DEF": {"tf": 1}, "sqlglot.tokens.TokenType.SCHEMA": {"tf": 1}, "sqlglot.tokens.TokenType.TABLE": {"tf": 1}, "sqlglot.tokens.TokenType.VAR": {"tf": 1}, "sqlglot.tokens.TokenType.BIT_STRING": {"tf": 1}, "sqlglot.tokens.TokenType.HEX_STRING": {"tf": 1}, "sqlglot.tokens.TokenType.BYTE_STRING": {"tf": 1}, "sqlglot.tokens.TokenType.BIT": {"tf": 1}, "sqlglot.tokens.TokenType.BOOLEAN": {"tf": 1}, "sqlglot.tokens.TokenType.TINYINT": {"tf": 1}, "sqlglot.tokens.TokenType.UTINYINT": {"tf": 1}, "sqlglot.tokens.TokenType.SMALLINT": {"tf": 1}, "sqlglot.tokens.TokenType.USMALLINT": {"tf": 1}, "sqlglot.tokens.TokenType.INT": {"tf": 1}, "sqlglot.tokens.TokenType.UINT": {"tf": 1}, "sqlglot.tokens.TokenType.BIGINT": {"tf": 1}, "sqlglot.tokens.TokenType.UBIGINT": {"tf": 1}, "sqlglot.tokens.TokenType.FLOAT": {"tf": 1}, "sqlglot.tokens.TokenType.DOUBLE": {"tf": 1}, "sqlglot.tokens.TokenType.DECIMAL": {"tf": 1}, "sqlglot.tokens.TokenType.BIGDECIMAL": {"tf": 1}, "sqlglot.tokens.TokenType.CHAR": {"tf": 1}, "sqlglot.tokens.TokenType.NCHAR": {"tf": 1}, "sqlglot.tokens.TokenType.VARCHAR": {"tf": 1}, "sqlglot.tokens.TokenType.NVARCHAR": {"tf": 1}, "sqlglot.tokens.TokenType.TEXT": {"tf": 1}, "sqlglot.tokens.TokenType.MEDIUMTEXT": {"tf": 1}, "sqlglot.tokens.TokenType.LONGTEXT": {"tf": 1}, "sqlglot.tokens.TokenType.MEDIUMBLOB": {"tf": 1}, "sqlglot.tokens.TokenType.LONGBLOB": {"tf": 1}, "sqlglot.tokens.TokenType.BINARY": {"tf": 1}, "sqlglot.tokens.TokenType.VARBINARY": {"tf": 1}, "sqlglot.tokens.TokenType.JSON": {"tf": 1}, "sqlglot.tokens.TokenType.JSONB": {"tf": 1}, "sqlglot.tokens.TokenType.TIME": {"tf": 1}, "sqlglot.tokens.TokenType.TIMESTAMP": {"tf": 1}, "sqlglot.tokens.TokenType.TIMESTAMPTZ": {"tf": 1}, "sqlglot.tokens.TokenType.TIMESTAMPLTZ": {"tf": 1}, "sqlglot.tokens.TokenType.DATETIME": {"tf": 1}, "sqlglot.tokens.TokenType.DATE": {"tf": 1}, "sqlglot.tokens.TokenType.UUID": {"tf": 1}, "sqlglot.tokens.TokenType.GEOGRAPHY": {"tf": 1}, "sqlglot.tokens.TokenType.NULLABLE": {"tf": 1}, "sqlglot.tokens.TokenType.GEOMETRY": {"tf": 1}, "sqlglot.tokens.TokenType.HLLSKETCH": {"tf": 1}, "sqlglot.tokens.TokenType.HSTORE": {"tf": 1}, "sqlglot.tokens.TokenType.SUPER": {"tf": 1}, "sqlglot.tokens.TokenType.SERIAL": {"tf": 1}, "sqlglot.tokens.TokenType.SMALLSERIAL": {"tf": 1}, "sqlglot.tokens.TokenType.BIGSERIAL": {"tf": 1}, "sqlglot.tokens.TokenType.XML": {"tf": 1}, "sqlglot.tokens.TokenType.UNIQUEIDENTIFIER": {"tf": 1}, "sqlglot.tokens.TokenType.MONEY": {"tf": 1}, "sqlglot.tokens.TokenType.SMALLMONEY": {"tf": 1}, "sqlglot.tokens.TokenType.ROWVERSION": {"tf": 1}, "sqlglot.tokens.TokenType.IMAGE": {"tf": 1}, "sqlglot.tokens.TokenType.VARIANT": {"tf": 1}, "sqlglot.tokens.TokenType.OBJECT": {"tf": 1}, "sqlglot.tokens.TokenType.INET": {"tf": 1}, "sqlglot.tokens.TokenType.ALIAS": {"tf": 1}, "sqlglot.tokens.TokenType.ALTER": {"tf": 1}, "sqlglot.tokens.TokenType.ALWAYS": {"tf": 1}, "sqlglot.tokens.TokenType.ALL": {"tf": 1}, "sqlglot.tokens.TokenType.ANTI": {"tf": 1}, "sqlglot.tokens.TokenType.ANY": {"tf": 1}, "sqlglot.tokens.TokenType.APPLY": {"tf": 1}, "sqlglot.tokens.TokenType.ARRAY": {"tf": 1}, "sqlglot.tokens.TokenType.ASC": {"tf": 1}, "sqlglot.tokens.TokenType.ASOF": {"tf": 1}, "sqlglot.tokens.TokenType.AT_TIME_ZONE": {"tf": 1}, "sqlglot.tokens.TokenType.AUTO_INCREMENT": {"tf": 1}, "sqlglot.tokens.TokenType.BEGIN": {"tf": 1}, "sqlglot.tokens.TokenType.BETWEEN": {"tf": 1}, "sqlglot.tokens.TokenType.BOTH": {"tf": 1}, "sqlglot.tokens.TokenType.BUCKET": {"tf": 1}, "sqlglot.tokens.TokenType.BY_DEFAULT": {"tf": 1}, "sqlglot.tokens.TokenType.CACHE": {"tf": 1}, "sqlglot.tokens.TokenType.CASCADE": {"tf": 1}, "sqlglot.tokens.TokenType.CASE": {"tf": 1}, "sqlglot.tokens.TokenType.CHARACTER_SET": {"tf": 1}, "sqlglot.tokens.TokenType.CLUSTER_BY": {"tf": 1}, "sqlglot.tokens.TokenType.COLLATE": {"tf": 1}, "sqlglot.tokens.TokenType.COMMAND": {"tf": 1}, "sqlglot.tokens.TokenType.COMMENT": {"tf": 1}, "sqlglot.tokens.TokenType.COMMIT": {"tf": 1}, "sqlglot.tokens.TokenType.COMPOUND": {"tf": 1}, "sqlglot.tokens.TokenType.CONSTRAINT": {"tf": 1}, "sqlglot.tokens.TokenType.CREATE": {"tf": 1}, "sqlglot.tokens.TokenType.CROSS": {"tf": 1}, "sqlglot.tokens.TokenType.CUBE": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_DATE": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_DATETIME": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_ROW": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_TIME": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_TIMESTAMP": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_USER": {"tf": 1}, "sqlglot.tokens.TokenType.DEFAULT": {"tf": 1}, "sqlglot.tokens.TokenType.DELETE": {"tf": 1}, "sqlglot.tokens.TokenType.DESC": {"tf": 1}, "sqlglot.tokens.TokenType.DESCRIBE": {"tf": 1}, "sqlglot.tokens.TokenType.DISTINCT": {"tf": 1}, "sqlglot.tokens.TokenType.DISTINCT_FROM": {"tf": 1}, "sqlglot.tokens.TokenType.DISTRIBUTE_BY": {"tf": 1}, "sqlglot.tokens.TokenType.DIV": {"tf": 1}, "sqlglot.tokens.TokenType.DROP": {"tf": 1}, "sqlglot.tokens.TokenType.ELSE": {"tf": 1}, "sqlglot.tokens.TokenType.END": {"tf": 1}, "sqlglot.tokens.TokenType.ESCAPE": {"tf": 1}, "sqlglot.tokens.TokenType.EXCEPT": {"tf": 1}, "sqlglot.tokens.TokenType.EXECUTE": {"tf": 1}, "sqlglot.tokens.TokenType.EXISTS": {"tf": 1}, "sqlglot.tokens.TokenType.FALSE": {"tf": 1}, "sqlglot.tokens.TokenType.FETCH": {"tf": 1}, "sqlglot.tokens.TokenType.FILTER": {"tf": 1}, "sqlglot.tokens.TokenType.FINAL": {"tf": 1}, "sqlglot.tokens.TokenType.FIRST": {"tf": 1}, "sqlglot.tokens.TokenType.FOLLOWING": {"tf": 1}, "sqlglot.tokens.TokenType.FOR": {"tf": 1}, "sqlglot.tokens.TokenType.FOREIGN_KEY": {"tf": 1}, "sqlglot.tokens.TokenType.FORMAT": {"tf": 1}, "sqlglot.tokens.TokenType.FROM": {"tf": 1}, "sqlglot.tokens.TokenType.FULL": {"tf": 1}, "sqlglot.tokens.TokenType.FUNCTION": {"tf": 1}, "sqlglot.tokens.TokenType.GLOB": {"tf": 1}, "sqlglot.tokens.TokenType.GLOBAL": {"tf": 1}, "sqlglot.tokens.TokenType.GROUP_BY": {"tf": 1}, "sqlglot.tokens.TokenType.GROUPING_SETS": {"tf": 1}, "sqlglot.tokens.TokenType.HAVING": {"tf": 1}, "sqlglot.tokens.TokenType.HINT": {"tf": 1}, "sqlglot.tokens.TokenType.IF": {"tf": 1}, "sqlglot.tokens.TokenType.IGNORE_NULLS": {"tf": 1}, "sqlglot.tokens.TokenType.ILIKE": {"tf": 1}, "sqlglot.tokens.TokenType.ILIKE_ANY": {"tf": 1}, "sqlglot.tokens.TokenType.IN": {"tf": 1}, "sqlglot.tokens.TokenType.INDEX": {"tf": 1}, "sqlglot.tokens.TokenType.INNER": {"tf": 1}, "sqlglot.tokens.TokenType.INSERT": {"tf": 1}, "sqlglot.tokens.TokenType.INTERSECT": {"tf": 1}, "sqlglot.tokens.TokenType.INTERVAL": {"tf": 1}, "sqlglot.tokens.TokenType.INTO": {"tf": 1}, "sqlglot.tokens.TokenType.INTRODUCER": {"tf": 1}, "sqlglot.tokens.TokenType.IRLIKE": {"tf": 1}, "sqlglot.tokens.TokenType.IS": {"tf": 1}, "sqlglot.tokens.TokenType.ISNULL": {"tf": 1}, "sqlglot.tokens.TokenType.JOIN": {"tf": 1}, "sqlglot.tokens.TokenType.JOIN_MARKER": {"tf": 1}, "sqlglot.tokens.TokenType.LANGUAGE": {"tf": 1}, "sqlglot.tokens.TokenType.LATERAL": {"tf": 1}, "sqlglot.tokens.TokenType.LAZY": {"tf": 1}, "sqlglot.tokens.TokenType.LEADING": {"tf": 1}, "sqlglot.tokens.TokenType.LEFT": {"tf": 1}, "sqlglot.tokens.TokenType.LIKE": {"tf": 1}, "sqlglot.tokens.TokenType.LIKE_ANY": {"tf": 1}, "sqlglot.tokens.TokenType.LIMIT": {"tf": 1}, "sqlglot.tokens.TokenType.LOAD_DATA": {"tf": 1}, "sqlglot.tokens.TokenType.LOCAL": {"tf": 1}, "sqlglot.tokens.TokenType.MAP": {"tf": 1}, "sqlglot.tokens.TokenType.MATCH_RECOGNIZE": {"tf": 1}, "sqlglot.tokens.TokenType.MATERIALIZED": {"tf": 1}, "sqlglot.tokens.TokenType.MERGE": {"tf": 1}, "sqlglot.tokens.TokenType.MOD": {"tf": 1}, "sqlglot.tokens.TokenType.NATURAL": {"tf": 1}, "sqlglot.tokens.TokenType.NEXT": {"tf": 1}, "sqlglot.tokens.TokenType.NO_ACTION": {"tf": 1}, "sqlglot.tokens.TokenType.NOTNULL": {"tf": 1}, "sqlglot.tokens.TokenType.NULL": {"tf": 1}, "sqlglot.tokens.TokenType.NULLS_FIRST": {"tf": 1}, "sqlglot.tokens.TokenType.NULLS_LAST": {"tf": 1}, "sqlglot.tokens.TokenType.OFFSET": {"tf": 1}, "sqlglot.tokens.TokenType.ON": {"tf": 1}, "sqlglot.tokens.TokenType.ONLY": {"tf": 1}, "sqlglot.tokens.TokenType.OPTIONS": {"tf": 1}, "sqlglot.tokens.TokenType.ORDER_BY": {"tf": 1}, "sqlglot.tokens.TokenType.ORDERED": {"tf": 1}, "sqlglot.tokens.TokenType.ORDINALITY": {"tf": 1}, "sqlglot.tokens.TokenType.OUTER": {"tf": 1}, "sqlglot.tokens.TokenType.OUT_OF": {"tf": 1}, "sqlglot.tokens.TokenType.OVER": {"tf": 1}, "sqlglot.tokens.TokenType.OVERLAPS": {"tf": 1}, "sqlglot.tokens.TokenType.OVERWRITE": {"tf": 1}, "sqlglot.tokens.TokenType.PARTITION": {"tf": 1}, "sqlglot.tokens.TokenType.PARTITION_BY": {"tf": 1}, "sqlglot.tokens.TokenType.PERCENT": {"tf": 1}, "sqlglot.tokens.TokenType.PIVOT": {"tf": 1}, "sqlglot.tokens.TokenType.PLACEHOLDER": {"tf": 1}, "sqlglot.tokens.TokenType.PRAGMA": {"tf": 1}, "sqlglot.tokens.TokenType.PRECEDING": {"tf": 1}, "sqlglot.tokens.TokenType.PRIMARY_KEY": {"tf": 1}, "sqlglot.tokens.TokenType.PROCEDURE": {"tf": 1}, "sqlglot.tokens.TokenType.PROPERTIES": {"tf": 1}, "sqlglot.tokens.TokenType.PSEUDO_TYPE": {"tf": 1}, "sqlglot.tokens.TokenType.QUALIFY": {"tf": 1}, "sqlglot.tokens.TokenType.QUOTE": {"tf": 1}, "sqlglot.tokens.TokenType.RANGE": {"tf": 1}, "sqlglot.tokens.TokenType.RECURSIVE": {"tf": 1}, "sqlglot.tokens.TokenType.REPLACE": {"tf": 1}, "sqlglot.tokens.TokenType.RESPECT_NULLS": {"tf": 1}, "sqlglot.tokens.TokenType.RETURNING": {"tf": 1}, "sqlglot.tokens.TokenType.REFERENCES": {"tf": 1}, "sqlglot.tokens.TokenType.RIGHT": {"tf": 1}, "sqlglot.tokens.TokenType.RLIKE": {"tf": 1}, "sqlglot.tokens.TokenType.ROLLBACK": {"tf": 1}, "sqlglot.tokens.TokenType.ROLLUP": {"tf": 1}, "sqlglot.tokens.TokenType.ROW": {"tf": 1}, "sqlglot.tokens.TokenType.ROWS": {"tf": 1}, "sqlglot.tokens.TokenType.SEED": {"tf": 1}, "sqlglot.tokens.TokenType.SELECT": {"tf": 1}, "sqlglot.tokens.TokenType.SEMI": {"tf": 1}, "sqlglot.tokens.TokenType.SEPARATOR": {"tf": 1}, "sqlglot.tokens.TokenType.SERDE_PROPERTIES": {"tf": 1}, "sqlglot.tokens.TokenType.SET": {"tf": 1}, "sqlglot.tokens.TokenType.SHOW": {"tf": 1}, "sqlglot.tokens.TokenType.SIMILAR_TO": {"tf": 1}, "sqlglot.tokens.TokenType.SOME": {"tf": 1}, "sqlglot.tokens.TokenType.SORTKEY": {"tf": 1}, "sqlglot.tokens.TokenType.SORT_BY": {"tf": 1}, "sqlglot.tokens.TokenType.STRUCT": {"tf": 1}, "sqlglot.tokens.TokenType.TABLE_SAMPLE": {"tf": 1}, "sqlglot.tokens.TokenType.TEMPORARY": {"tf": 1}, "sqlglot.tokens.TokenType.TOP": {"tf": 1}, "sqlglot.tokens.TokenType.THEN": {"tf": 1}, "sqlglot.tokens.TokenType.TRAILING": {"tf": 1}, "sqlglot.tokens.TokenType.TRUE": {"tf": 1}, "sqlglot.tokens.TokenType.UNBOUNDED": {"tf": 1}, "sqlglot.tokens.TokenType.UNCACHE": {"tf": 1}, "sqlglot.tokens.TokenType.UNION": {"tf": 1}, "sqlglot.tokens.TokenType.UNLOGGED": {"tf": 1}, "sqlglot.tokens.TokenType.UNNEST": {"tf": 1}, "sqlglot.tokens.TokenType.UNPIVOT": {"tf": 1}, "sqlglot.tokens.TokenType.UPDATE": {"tf": 1}, "sqlglot.tokens.TokenType.USE": {"tf": 1}, "sqlglot.tokens.TokenType.USING": {"tf": 1}, "sqlglot.tokens.TokenType.VALUES": {"tf": 1}, "sqlglot.tokens.TokenType.VIEW": {"tf": 1}, "sqlglot.tokens.TokenType.VOLATILE": {"tf": 1}, "sqlglot.tokens.TokenType.WHEN": {"tf": 1}, "sqlglot.tokens.TokenType.WHERE": {"tf": 1}, "sqlglot.tokens.TokenType.WINDOW": {"tf": 1}, "sqlglot.tokens.TokenType.WITH": {"tf": 1}, "sqlglot.tokens.TokenType.WITH_TIME_ZONE": {"tf": 1}, "sqlglot.tokens.TokenType.WITH_LOCAL_TIME_ZONE": {"tf": 1}, "sqlglot.tokens.TokenType.WITHIN_GROUP": {"tf": 1}, "sqlglot.tokens.TokenType.WITHOUT_TIME_ZONE": {"tf": 1}, "sqlglot.tokens.TokenType.UNIQUE": {"tf": 1}, "sqlglot.tokens.Token": {"tf": 1}, "sqlglot.tokens.Token.__init__": {"tf": 1}, "sqlglot.tokens.Token.number": {"tf": 1}, "sqlglot.tokens.Token.string": {"tf": 1}, "sqlglot.tokens.Token.identifier": {"tf": 1}, "sqlglot.tokens.Token.var": {"tf": 1}, "sqlglot.tokens.Token.start": {"tf": 1}, "sqlglot.tokens.Tokenizer": {"tf": 1}, "sqlglot.tokens.Tokenizer.reset": {"tf": 1}, "sqlglot.tokens.Tokenizer.tokenize": {"tf": 1}}, "df": 310}, "t": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType": {"tf": 1}, "sqlglot.tokens.TokenType.L_PAREN": {"tf": 1}, "sqlglot.tokens.TokenType.R_PAREN": {"tf": 1}, "sqlglot.tokens.TokenType.L_BRACKET": {"tf": 1}, "sqlglot.tokens.TokenType.R_BRACKET": {"tf": 1}, "sqlglot.tokens.TokenType.L_BRACE": {"tf": 1}, "sqlglot.tokens.TokenType.R_BRACE": {"tf": 1}, "sqlglot.tokens.TokenType.COMMA": {"tf": 1}, "sqlglot.tokens.TokenType.DOT": {"tf": 1}, "sqlglot.tokens.TokenType.DASH": {"tf": 1}, "sqlglot.tokens.TokenType.PLUS": {"tf": 1}, "sqlglot.tokens.TokenType.COLON": {"tf": 1}, "sqlglot.tokens.TokenType.DCOLON": {"tf": 1}, "sqlglot.tokens.TokenType.SEMICOLON": {"tf": 1}, "sqlglot.tokens.TokenType.STAR": {"tf": 1}, "sqlglot.tokens.TokenType.BACKSLASH": {"tf": 1}, "sqlglot.tokens.TokenType.SLASH": {"tf": 1}, "sqlglot.tokens.TokenType.LT": {"tf": 1}, "sqlglot.tokens.TokenType.LTE": {"tf": 1}, "sqlglot.tokens.TokenType.GT": {"tf": 1}, "sqlglot.tokens.TokenType.GTE": {"tf": 1}, "sqlglot.tokens.TokenType.NOT": {"tf": 1}, "sqlglot.tokens.TokenType.EQ": {"tf": 1}, "sqlglot.tokens.TokenType.NEQ": {"tf": 1}, "sqlglot.tokens.TokenType.NULLSAFE_EQ": {"tf": 1}, "sqlglot.tokens.TokenType.AND": {"tf": 1}, "sqlglot.tokens.TokenType.OR": {"tf": 1}, "sqlglot.tokens.TokenType.AMP": {"tf": 1}, "sqlglot.tokens.TokenType.DPIPE": {"tf": 1}, "sqlglot.tokens.TokenType.PIPE": {"tf": 1}, "sqlglot.tokens.TokenType.CARET": {"tf": 1}, "sqlglot.tokens.TokenType.TILDA": {"tf": 1}, "sqlglot.tokens.TokenType.ARROW": {"tf": 1}, "sqlglot.tokens.TokenType.DARROW": {"tf": 1}, "sqlglot.tokens.TokenType.FARROW": {"tf": 1}, "sqlglot.tokens.TokenType.HASH": {"tf": 1}, "sqlglot.tokens.TokenType.HASH_ARROW": {"tf": 1}, "sqlglot.tokens.TokenType.DHASH_ARROW": {"tf": 1}, "sqlglot.tokens.TokenType.LR_ARROW": {"tf": 1}, "sqlglot.tokens.TokenType.LT_AT": {"tf": 1}, "sqlglot.tokens.TokenType.AT_GT": {"tf": 1}, "sqlglot.tokens.TokenType.DOLLAR": {"tf": 1}, "sqlglot.tokens.TokenType.PARAMETER": {"tf": 1}, "sqlglot.tokens.TokenType.SESSION_PARAMETER": {"tf": 1}, "sqlglot.tokens.TokenType.NATIONAL": {"tf": 1}, "sqlglot.tokens.TokenType.DAMP": {"tf": 1}, "sqlglot.tokens.TokenType.BLOCK_START": {"tf": 1}, "sqlglot.tokens.TokenType.BLOCK_END": {"tf": 1}, "sqlglot.tokens.TokenType.SPACE": {"tf": 1}, "sqlglot.tokens.TokenType.BREAK": {"tf": 1}, "sqlglot.tokens.TokenType.STRING": {"tf": 1}, "sqlglot.tokens.TokenType.NUMBER": {"tf": 1}, "sqlglot.tokens.TokenType.IDENTIFIER": {"tf": 1}, "sqlglot.tokens.TokenType.DATABASE": {"tf": 1}, "sqlglot.tokens.TokenType.COLUMN": {"tf": 1}, "sqlglot.tokens.TokenType.COLUMN_DEF": {"tf": 1}, "sqlglot.tokens.TokenType.SCHEMA": {"tf": 1}, "sqlglot.tokens.TokenType.TABLE": {"tf": 1}, "sqlglot.tokens.TokenType.VAR": {"tf": 1}, "sqlglot.tokens.TokenType.BIT_STRING": {"tf": 1}, "sqlglot.tokens.TokenType.HEX_STRING": {"tf": 1}, "sqlglot.tokens.TokenType.BYTE_STRING": {"tf": 1}, "sqlglot.tokens.TokenType.BIT": {"tf": 1}, "sqlglot.tokens.TokenType.BOOLEAN": {"tf": 1}, "sqlglot.tokens.TokenType.TINYINT": {"tf": 1}, "sqlglot.tokens.TokenType.UTINYINT": {"tf": 1}, "sqlglot.tokens.TokenType.SMALLINT": {"tf": 1}, "sqlglot.tokens.TokenType.USMALLINT": {"tf": 1}, "sqlglot.tokens.TokenType.INT": {"tf": 1}, "sqlglot.tokens.TokenType.UINT": {"tf": 1}, "sqlglot.tokens.TokenType.BIGINT": {"tf": 1}, "sqlglot.tokens.TokenType.UBIGINT": {"tf": 1}, "sqlglot.tokens.TokenType.FLOAT": {"tf": 1}, "sqlglot.tokens.TokenType.DOUBLE": {"tf": 1}, "sqlglot.tokens.TokenType.DECIMAL": {"tf": 1}, "sqlglot.tokens.TokenType.BIGDECIMAL": {"tf": 1}, "sqlglot.tokens.TokenType.CHAR": {"tf": 1}, "sqlglot.tokens.TokenType.NCHAR": {"tf": 1}, "sqlglot.tokens.TokenType.VARCHAR": {"tf": 1}, "sqlglot.tokens.TokenType.NVARCHAR": {"tf": 1}, "sqlglot.tokens.TokenType.TEXT": {"tf": 1}, "sqlglot.tokens.TokenType.MEDIUMTEXT": {"tf": 1}, "sqlglot.tokens.TokenType.LONGTEXT": {"tf": 1}, "sqlglot.tokens.TokenType.MEDIUMBLOB": {"tf": 1}, "sqlglot.tokens.TokenType.LONGBLOB": {"tf": 1}, "sqlglot.tokens.TokenType.BINARY": {"tf": 1}, "sqlglot.tokens.TokenType.VARBINARY": {"tf": 1}, "sqlglot.tokens.TokenType.JSON": {"tf": 1}, "sqlglot.tokens.TokenType.JSONB": {"tf": 1}, "sqlglot.tokens.TokenType.TIME": {"tf": 1}, "sqlglot.tokens.TokenType.TIMESTAMP": {"tf": 1}, "sqlglot.tokens.TokenType.TIMESTAMPTZ": {"tf": 1}, "sqlglot.tokens.TokenType.TIMESTAMPLTZ": {"tf": 1}, "sqlglot.tokens.TokenType.DATETIME": {"tf": 1}, "sqlglot.tokens.TokenType.DATE": {"tf": 1}, "sqlglot.tokens.TokenType.UUID": {"tf": 1}, "sqlglot.tokens.TokenType.GEOGRAPHY": {"tf": 1}, "sqlglot.tokens.TokenType.NULLABLE": {"tf": 1}, "sqlglot.tokens.TokenType.GEOMETRY": {"tf": 1}, "sqlglot.tokens.TokenType.HLLSKETCH": {"tf": 1}, "sqlglot.tokens.TokenType.HSTORE": {"tf": 1}, "sqlglot.tokens.TokenType.SUPER": {"tf": 1}, "sqlglot.tokens.TokenType.SERIAL": {"tf": 1}, "sqlglot.tokens.TokenType.SMALLSERIAL": {"tf": 1}, "sqlglot.tokens.TokenType.BIGSERIAL": {"tf": 1}, "sqlglot.tokens.TokenType.XML": {"tf": 1}, "sqlglot.tokens.TokenType.UNIQUEIDENTIFIER": {"tf": 1}, "sqlglot.tokens.TokenType.MONEY": {"tf": 1}, "sqlglot.tokens.TokenType.SMALLMONEY": {"tf": 1}, "sqlglot.tokens.TokenType.ROWVERSION": {"tf": 1}, "sqlglot.tokens.TokenType.IMAGE": {"tf": 1}, "sqlglot.tokens.TokenType.VARIANT": {"tf": 1}, "sqlglot.tokens.TokenType.OBJECT": {"tf": 1}, "sqlglot.tokens.TokenType.INET": {"tf": 1}, "sqlglot.tokens.TokenType.ALIAS": {"tf": 1}, "sqlglot.tokens.TokenType.ALTER": {"tf": 1}, "sqlglot.tokens.TokenType.ALWAYS": {"tf": 1}, "sqlglot.tokens.TokenType.ALL": {"tf": 1}, "sqlglot.tokens.TokenType.ANTI": {"tf": 1}, "sqlglot.tokens.TokenType.ANY": {"tf": 1}, "sqlglot.tokens.TokenType.APPLY": {"tf": 1}, "sqlglot.tokens.TokenType.ARRAY": {"tf": 1}, "sqlglot.tokens.TokenType.ASC": {"tf": 1}, "sqlglot.tokens.TokenType.ASOF": {"tf": 1}, "sqlglot.tokens.TokenType.AT_TIME_ZONE": {"tf": 1}, "sqlglot.tokens.TokenType.AUTO_INCREMENT": {"tf": 1}, "sqlglot.tokens.TokenType.BEGIN": {"tf": 1}, "sqlglot.tokens.TokenType.BETWEEN": {"tf": 1}, "sqlglot.tokens.TokenType.BOTH": {"tf": 1}, "sqlglot.tokens.TokenType.BUCKET": {"tf": 1}, "sqlglot.tokens.TokenType.BY_DEFAULT": {"tf": 1}, "sqlglot.tokens.TokenType.CACHE": {"tf": 1}, "sqlglot.tokens.TokenType.CASCADE": {"tf": 1}, "sqlglot.tokens.TokenType.CASE": {"tf": 1}, "sqlglot.tokens.TokenType.CHARACTER_SET": {"tf": 1}, "sqlglot.tokens.TokenType.CLUSTER_BY": {"tf": 1}, "sqlglot.tokens.TokenType.COLLATE": {"tf": 1}, "sqlglot.tokens.TokenType.COMMAND": {"tf": 1}, "sqlglot.tokens.TokenType.COMMENT": {"tf": 1}, "sqlglot.tokens.TokenType.COMMIT": {"tf": 1}, "sqlglot.tokens.TokenType.COMPOUND": {"tf": 1}, "sqlglot.tokens.TokenType.CONSTRAINT": {"tf": 1}, "sqlglot.tokens.TokenType.CREATE": {"tf": 1}, "sqlglot.tokens.TokenType.CROSS": {"tf": 1}, "sqlglot.tokens.TokenType.CUBE": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_DATE": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_DATETIME": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_ROW": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_TIME": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_TIMESTAMP": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_USER": {"tf": 1}, "sqlglot.tokens.TokenType.DEFAULT": {"tf": 1}, "sqlglot.tokens.TokenType.DELETE": {"tf": 1}, "sqlglot.tokens.TokenType.DESC": {"tf": 1}, "sqlglot.tokens.TokenType.DESCRIBE": {"tf": 1}, "sqlglot.tokens.TokenType.DISTINCT": {"tf": 1}, "sqlglot.tokens.TokenType.DISTINCT_FROM": {"tf": 1}, "sqlglot.tokens.TokenType.DISTRIBUTE_BY": {"tf": 1}, "sqlglot.tokens.TokenType.DIV": {"tf": 1}, "sqlglot.tokens.TokenType.DROP": {"tf": 1}, "sqlglot.tokens.TokenType.ELSE": {"tf": 1}, "sqlglot.tokens.TokenType.END": {"tf": 1}, "sqlglot.tokens.TokenType.ESCAPE": {"tf": 1}, "sqlglot.tokens.TokenType.EXCEPT": {"tf": 1}, "sqlglot.tokens.TokenType.EXECUTE": {"tf": 1}, "sqlglot.tokens.TokenType.EXISTS": {"tf": 1}, "sqlglot.tokens.TokenType.FALSE": {"tf": 1}, "sqlglot.tokens.TokenType.FETCH": {"tf": 1}, "sqlglot.tokens.TokenType.FILTER": {"tf": 1}, "sqlglot.tokens.TokenType.FINAL": {"tf": 1}, "sqlglot.tokens.TokenType.FIRST": {"tf": 1}, "sqlglot.tokens.TokenType.FOLLOWING": {"tf": 1}, "sqlglot.tokens.TokenType.FOR": {"tf": 1}, "sqlglot.tokens.TokenType.FOREIGN_KEY": {"tf": 1}, "sqlglot.tokens.TokenType.FORMAT": {"tf": 1}, "sqlglot.tokens.TokenType.FROM": {"tf": 1}, "sqlglot.tokens.TokenType.FULL": {"tf": 1}, "sqlglot.tokens.TokenType.FUNCTION": {"tf": 1}, "sqlglot.tokens.TokenType.GLOB": {"tf": 1}, "sqlglot.tokens.TokenType.GLOBAL": {"tf": 1}, "sqlglot.tokens.TokenType.GROUP_BY": {"tf": 1}, "sqlglot.tokens.TokenType.GROUPING_SETS": {"tf": 1}, "sqlglot.tokens.TokenType.HAVING": {"tf": 1}, "sqlglot.tokens.TokenType.HINT": {"tf": 1}, "sqlglot.tokens.TokenType.IF": {"tf": 1}, "sqlglot.tokens.TokenType.IGNORE_NULLS": {"tf": 1}, "sqlglot.tokens.TokenType.ILIKE": {"tf": 1}, "sqlglot.tokens.TokenType.ILIKE_ANY": {"tf": 1}, "sqlglot.tokens.TokenType.IN": {"tf": 1}, "sqlglot.tokens.TokenType.INDEX": {"tf": 1}, "sqlglot.tokens.TokenType.INNER": {"tf": 1}, "sqlglot.tokens.TokenType.INSERT": {"tf": 1}, "sqlglot.tokens.TokenType.INTERSECT": {"tf": 1}, "sqlglot.tokens.TokenType.INTERVAL": {"tf": 1}, "sqlglot.tokens.TokenType.INTO": {"tf": 1}, "sqlglot.tokens.TokenType.INTRODUCER": {"tf": 1}, "sqlglot.tokens.TokenType.IRLIKE": {"tf": 1}, "sqlglot.tokens.TokenType.IS": {"tf": 1}, "sqlglot.tokens.TokenType.ISNULL": {"tf": 1}, "sqlglot.tokens.TokenType.JOIN": {"tf": 1}, "sqlglot.tokens.TokenType.JOIN_MARKER": {"tf": 1}, "sqlglot.tokens.TokenType.LANGUAGE": {"tf": 1}, "sqlglot.tokens.TokenType.LATERAL": {"tf": 1}, "sqlglot.tokens.TokenType.LAZY": {"tf": 1}, "sqlglot.tokens.TokenType.LEADING": {"tf": 1}, "sqlglot.tokens.TokenType.LEFT": {"tf": 1}, "sqlglot.tokens.TokenType.LIKE": {"tf": 1}, "sqlglot.tokens.TokenType.LIKE_ANY": {"tf": 1}, "sqlglot.tokens.TokenType.LIMIT": {"tf": 1}, "sqlglot.tokens.TokenType.LOAD_DATA": {"tf": 1}, "sqlglot.tokens.TokenType.LOCAL": {"tf": 1}, "sqlglot.tokens.TokenType.MAP": {"tf": 1}, "sqlglot.tokens.TokenType.MATCH_RECOGNIZE": {"tf": 1}, "sqlglot.tokens.TokenType.MATERIALIZED": {"tf": 1}, "sqlglot.tokens.TokenType.MERGE": {"tf": 1}, "sqlglot.tokens.TokenType.MOD": {"tf": 1}, "sqlglot.tokens.TokenType.NATURAL": {"tf": 1}, "sqlglot.tokens.TokenType.NEXT": {"tf": 1}, "sqlglot.tokens.TokenType.NO_ACTION": {"tf": 1}, "sqlglot.tokens.TokenType.NOTNULL": {"tf": 1}, "sqlglot.tokens.TokenType.NULL": {"tf": 1}, "sqlglot.tokens.TokenType.NULLS_FIRST": {"tf": 1}, "sqlglot.tokens.TokenType.NULLS_LAST": {"tf": 1}, "sqlglot.tokens.TokenType.OFFSET": {"tf": 1}, "sqlglot.tokens.TokenType.ON": {"tf": 1}, "sqlglot.tokens.TokenType.ONLY": {"tf": 1}, "sqlglot.tokens.TokenType.OPTIONS": {"tf": 1}, "sqlglot.tokens.TokenType.ORDER_BY": {"tf": 1}, "sqlglot.tokens.TokenType.ORDERED": {"tf": 1}, "sqlglot.tokens.TokenType.ORDINALITY": {"tf": 1}, "sqlglot.tokens.TokenType.OUTER": {"tf": 1}, "sqlglot.tokens.TokenType.OUT_OF": {"tf": 1}, "sqlglot.tokens.TokenType.OVER": {"tf": 1}, "sqlglot.tokens.TokenType.OVERLAPS": {"tf": 1}, "sqlglot.tokens.TokenType.OVERWRITE": {"tf": 1}, "sqlglot.tokens.TokenType.PARTITION": {"tf": 1}, "sqlglot.tokens.TokenType.PARTITION_BY": {"tf": 1}, "sqlglot.tokens.TokenType.PERCENT": {"tf": 1}, "sqlglot.tokens.TokenType.PIVOT": {"tf": 1}, "sqlglot.tokens.TokenType.PLACEHOLDER": {"tf": 1}, "sqlglot.tokens.TokenType.PRAGMA": {"tf": 1}, "sqlglot.tokens.TokenType.PRECEDING": {"tf": 1}, "sqlglot.tokens.TokenType.PRIMARY_KEY": {"tf": 1}, "sqlglot.tokens.TokenType.PROCEDURE": {"tf": 1}, "sqlglot.tokens.TokenType.PROPERTIES": {"tf": 1}, "sqlglot.tokens.TokenType.PSEUDO_TYPE": {"tf": 1}, "sqlglot.tokens.TokenType.QUALIFY": {"tf": 1}, "sqlglot.tokens.TokenType.QUOTE": {"tf": 1}, "sqlglot.tokens.TokenType.RANGE": {"tf": 1}, "sqlglot.tokens.TokenType.RECURSIVE": {"tf": 1}, "sqlglot.tokens.TokenType.REPLACE": {"tf": 1}, "sqlglot.tokens.TokenType.RESPECT_NULLS": {"tf": 1}, "sqlglot.tokens.TokenType.RETURNING": {"tf": 1}, "sqlglot.tokens.TokenType.REFERENCES": {"tf": 1}, "sqlglot.tokens.TokenType.RIGHT": {"tf": 1}, "sqlglot.tokens.TokenType.RLIKE": {"tf": 1}, "sqlglot.tokens.TokenType.ROLLBACK": {"tf": 1}, "sqlglot.tokens.TokenType.ROLLUP": {"tf": 1}, "sqlglot.tokens.TokenType.ROW": {"tf": 1}, "sqlglot.tokens.TokenType.ROWS": {"tf": 1}, "sqlglot.tokens.TokenType.SEED": {"tf": 1}, "sqlglot.tokens.TokenType.SELECT": {"tf": 1}, "sqlglot.tokens.TokenType.SEMI": {"tf": 1}, "sqlglot.tokens.TokenType.SEPARATOR": {"tf": 1}, "sqlglot.tokens.TokenType.SERDE_PROPERTIES": {"tf": 1}, "sqlglot.tokens.TokenType.SET": {"tf": 1}, "sqlglot.tokens.TokenType.SHOW": {"tf": 1}, "sqlglot.tokens.TokenType.SIMILAR_TO": {"tf": 1}, "sqlglot.tokens.TokenType.SOME": {"tf": 1}, "sqlglot.tokens.TokenType.SORTKEY": {"tf": 1}, "sqlglot.tokens.TokenType.SORT_BY": {"tf": 1}, "sqlglot.tokens.TokenType.STRUCT": {"tf": 1}, "sqlglot.tokens.TokenType.TABLE_SAMPLE": {"tf": 1}, "sqlglot.tokens.TokenType.TEMPORARY": {"tf": 1}, "sqlglot.tokens.TokenType.TOP": {"tf": 1}, "sqlglot.tokens.TokenType.THEN": {"tf": 1}, "sqlglot.tokens.TokenType.TRAILING": {"tf": 1}, "sqlglot.tokens.TokenType.TRUE": {"tf": 1}, "sqlglot.tokens.TokenType.UNBOUNDED": {"tf": 1}, "sqlglot.tokens.TokenType.UNCACHE": {"tf": 1}, "sqlglot.tokens.TokenType.UNION": {"tf": 1}, "sqlglot.tokens.TokenType.UNLOGGED": {"tf": 1}, "sqlglot.tokens.TokenType.UNNEST": {"tf": 1}, "sqlglot.tokens.TokenType.UNPIVOT": {"tf": 1}, "sqlglot.tokens.TokenType.UPDATE": {"tf": 1}, "sqlglot.tokens.TokenType.USE": {"tf": 1}, "sqlglot.tokens.TokenType.USING": {"tf": 1}, "sqlglot.tokens.TokenType.VALUES": {"tf": 1}, "sqlglot.tokens.TokenType.VIEW": {"tf": 1}, "sqlglot.tokens.TokenType.VOLATILE": {"tf": 1}, "sqlglot.tokens.TokenType.WHEN": {"tf": 1}, "sqlglot.tokens.TokenType.WHERE": {"tf": 1}, "sqlglot.tokens.TokenType.WINDOW": {"tf": 1}, "sqlglot.tokens.TokenType.WITH": {"tf": 1}, "sqlglot.tokens.TokenType.WITH_TIME_ZONE": {"tf": 1}, "sqlglot.tokens.TokenType.WITH_LOCAL_TIME_ZONE": {"tf": 1}, "sqlglot.tokens.TokenType.WITHIN_GROUP": {"tf": 1}, "sqlglot.tokens.TokenType.WITHOUT_TIME_ZONE": {"tf": 1}, "sqlglot.tokens.TokenType.UNIQUE": {"tf": 1}}, "df": 299}}}}}}}, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.ToChar": {"tf": 1}, "sqlglot.generator.Generator.tochar_sql": {"tf": 1}}, "df": 2}}}}, "p": {"docs": {"sqlglot.tokens.TokenType.TOP": {"tf": 1}}, "df": 1}}, "s": {"docs": {"sqlglot.dialects.dialect.ts_or_ds_to_date_sql": {"tf": 1}}, "df": 1, "q": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.dialects.dialect.Dialects.TSQL": {"tf": 1}, "sqlglot.dialects.tsql": {"tf": 1}, "sqlglot.dialects.tsql.generate_date_delta_with_unit_sql": {"tf": 1}, "sqlglot.dialects.tsql.TSQL": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Tokenizer": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Generator.offset_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Generator.systemtime_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Generator.returnsproperty_sql": {"tf": 1.4142135623730951}}, "df": 10}}, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.TsOrDsAdd": {"tf": 1}}, "df": 1}}}, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.TsOrDsToDate": {"tf": 1}}, "df": 1, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.TsOrDsToDateStr": {"tf": 1}}, "df": 1}}}}}}}}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {"sqlglot.expressions.TsOrDiToDi": {"tf": 1}}, "df": 1}}}}}}, "t": {"docs": {"sqlglot.helper.tsort": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.dialects.dialect.Dialects.TERADATA": {"tf": 1}, "sqlglot.dialects.teradata": {"tf": 1}, "sqlglot.dialects.teradata.Teradata": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Tokenizer": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Generator.partitionedbyproperty_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Generator.update_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Generator.mod_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Generator.datatype_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Generator.rangen_sql": {"tf": 1.4142135623730951}}, "df": 11}}}}}}, "x": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.Expression.text": {"tf": 1}, "sqlglot.expressions.DataType.Type.TEXT": {"tf": 1}, "sqlglot.generator.Generator.text_width": {"tf": 1}, "sqlglot.optimizer.canonicalize.add_text_to_concat": {"tf": 1}, "sqlglot.tokens.TokenType.TEXT": {"tf": 1}}, "df": 5}}, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.tokens.TokenType.TEMPORARY": {"tf": 1}}, "df": 1, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.TemporaryProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.Dialect.format_time": {"tf": 1}, "sqlglot.dialects.dialect.format_time_lambda": {"tf": 1}, "sqlglot.dialects.dialect.date_trunc_to_time": {"tf": 1}, "sqlglot.dialects.dialect.str_to_time_sql": {"tf": 1}, "sqlglot.expressions.DataType.Type.TIME": {"tf": 1}, "sqlglot.generator.Generator.format_time": {"tf": 1}, "sqlglot.time": {"tf": 1}, "sqlglot.time.format_time": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.TIME": {"tf": 1}, "sqlglot.tokens.TokenType.AT_TIME_ZONE": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_TIME": {"tf": 1}, "sqlglot.tokens.TokenType.WITH_TIME_ZONE": {"tf": 1}, "sqlglot.tokens.TokenType.WITH_LOCAL_TIME_ZONE": {"tf": 1}, "sqlglot.tokens.TokenType.WITHOUT_TIME_ZONE": {"tf": 1}}, "df": 14, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.expressions.DataType.Type.TIMESTAMP": {"tf": 1}, "sqlglot.tokens.TokenType.TIMESTAMP": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_TIMESTAMP": {"tf": 1}}, "df": 3, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot.dialects.dialect.timestamptrunc_sql": {"tf": 1}, "sqlglot.expressions.TimestampTrunc": {"tf": 1}}, "df": 2}}}}, "z": {"docs": {"sqlglot.expressions.DataType.Type.TIMESTAMPTZ": {"tf": 1}, "sqlglot.tokens.TokenType.TIMESTAMPTZ": {"tf": 1}}, "df": 2}}, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "z": {"docs": {"sqlglot.expressions.DataType.Type.TIMESTAMPLTZ": {"tf": 1}, "sqlglot.tokens.TokenType.TIMESTAMPLTZ": {"tf": 1}}, "df": 2}}}, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.TimestampAdd": {"tf": 1}}, "df": 1}}}, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "b": {"docs": {"sqlglot.expressions.TimestampSub": {"tf": 1}}, "df": 1}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "f": {"docs": {"sqlglot.expressions.TimestampDiff": {"tf": 1}}, "df": 1}}}}}}}, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.timestrtotime_sql": {"tf": 1}, "sqlglot.expressions.TimeStrToTime": {"tf": 1}}, "df": 2}}}}, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.TimeStrToDate": {"tf": 1}}, "df": 1}}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "x": {"docs": {"sqlglot.expressions.TimeStrToUnix": {"tf": 1}}, "df": 1}}}}}}}}, "u": {"docs": {}, "df": 0, "b": {"docs": {"sqlglot.expressions.TimeSub": {"tf": 1}}, "df": 1}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.TimeUnit": {"tf": 1}, "sqlglot.expressions.TimeUnit.__init__": {"tf": 1}}, "df": 2}}}}, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.TimeAdd": {"tf": 1}}, "df": 1}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "f": {"docs": {"sqlglot.expressions.TimeDiff": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot.expressions.TimeTrunc": {"tf": 1}}, "df": 1}}}}, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.TimeToStr": {"tf": 1}}, "df": 1}}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.TimeToTimeStr": {"tf": 1}}, "df": 1}}}}}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "x": {"docs": {"sqlglot.expressions.TimeToUnix": {"tf": 1}}, "df": 1}}}}}}}}, "t": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.TitleColumnConstraint": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}, "n": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.DataType.Type.TINYINT": {"tf": 1}, "sqlglot.tokens.TokenType.TINYINT": {"tf": 1}}, "df": 2}}}}}, "l": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.tokens.TokenType.TILDA": {"tf": 1}}, "df": 1}}}}, "u": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.executor.context.Context.eval_tuple": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.generate_tuple": {"tf": 1}, "sqlglot.expressions.Tuple": {"tf": 1}, "sqlglot.generator.Generator.tuple_sql": {"tf": 1}}, "df": 4}}}}, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.Expression.this": {"tf": 1}}, "df": 1}}, "e": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.tokens.TokenType.THEN": {"tf": 1}}, "df": 1}}}, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.DataType.Type": {"tf": 1}, "sqlglot.expressions.DataType.Type.CHAR": {"tf": 1}, "sqlglot.expressions.DataType.Type.NCHAR": {"tf": 1}, "sqlglot.expressions.DataType.Type.VARCHAR": {"tf": 1}, "sqlglot.expressions.DataType.Type.NVARCHAR": {"tf": 1}, "sqlglot.expressions.DataType.Type.TEXT": {"tf": 1}, "sqlglot.expressions.DataType.Type.MEDIUMTEXT": {"tf": 1}, "sqlglot.expressions.DataType.Type.LONGTEXT": {"tf": 1}, "sqlglot.expressions.DataType.Type.MEDIUMBLOB": {"tf": 1}, "sqlglot.expressions.DataType.Type.LONGBLOB": {"tf": 1}, "sqlglot.expressions.DataType.Type.BINARY": {"tf": 1}, "sqlglot.expressions.DataType.Type.VARBINARY": {"tf": 1}, "sqlglot.expressions.DataType.Type.INT": {"tf": 1}, "sqlglot.expressions.DataType.Type.UINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.TINYINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.UTINYINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.SMALLINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.USMALLINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.BIGINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.UBIGINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.FLOAT": {"tf": 1}, "sqlglot.expressions.DataType.Type.DOUBLE": {"tf": 1}, "sqlglot.expressions.DataType.Type.DECIMAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.BIGDECIMAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.BIT": {"tf": 1}, "sqlglot.expressions.DataType.Type.BOOLEAN": {"tf": 1}, "sqlglot.expressions.DataType.Type.JSON": {"tf": 1}, "sqlglot.expressions.DataType.Type.JSONB": {"tf": 1}, "sqlglot.expressions.DataType.Type.INTERVAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.TIME": {"tf": 1}, "sqlglot.expressions.DataType.Type.TIMESTAMP": {"tf": 1}, "sqlglot.expressions.DataType.Type.TIMESTAMPTZ": {"tf": 1}, "sqlglot.expressions.DataType.Type.TIMESTAMPLTZ": {"tf": 1}, "sqlglot.expressions.DataType.Type.DATE": {"tf": 1}, "sqlglot.expressions.DataType.Type.DATETIME": {"tf": 1}, "sqlglot.expressions.DataType.Type.ARRAY": {"tf": 1}, "sqlglot.expressions.DataType.Type.MAP": {"tf": 1}, "sqlglot.expressions.DataType.Type.UUID": {"tf": 1}, "sqlglot.expressions.DataType.Type.GEOGRAPHY": {"tf": 1}, "sqlglot.expressions.DataType.Type.GEOMETRY": {"tf": 1}, "sqlglot.expressions.DataType.Type.STRUCT": {"tf": 1}, "sqlglot.expressions.DataType.Type.NULLABLE": {"tf": 1}, "sqlglot.expressions.DataType.Type.HLLSKETCH": {"tf": 1}, "sqlglot.expressions.DataType.Type.HSTORE": {"tf": 1}, "sqlglot.expressions.DataType.Type.SUPER": {"tf": 1}, "sqlglot.expressions.DataType.Type.SERIAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.SMALLSERIAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.BIGSERIAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.XML": {"tf": 1}, "sqlglot.expressions.DataType.Type.UNIQUEIDENTIFIER": {"tf": 1}, "sqlglot.expressions.DataType.Type.MONEY": {"tf": 1}, "sqlglot.expressions.DataType.Type.SMALLMONEY": {"tf": 1}, "sqlglot.expressions.DataType.Type.ROWVERSION": {"tf": 1}, "sqlglot.expressions.DataType.Type.IMAGE": {"tf": 1}, "sqlglot.expressions.DataType.Type.VARIANT": {"tf": 1}, "sqlglot.expressions.DataType.Type.OBJECT": {"tf": 1}, "sqlglot.expressions.DataType.Type.INET": {"tf": 1}, "sqlglot.expressions.DataType.Type.NULL": {"tf": 1}, "sqlglot.expressions.DataType.Type.UNKNOWN": {"tf": 1}, "sqlglot.expressions.DataType.is_type": {"tf": 1}, "sqlglot.expressions.Cast.is_type": {"tf": 1}, "sqlglot.optimizer.canonicalize.coerce_type": {"tf": 1}, "sqlglot.schema.Schema.get_column_type": {"tf": 1}, "sqlglot.schema.MappingSchema.get_column_type": {"tf": 1}, "sqlglot.tokens.TokenType.PSEUDO_TYPE": {"tf": 1}}, "df": 65, "s": {"docs": {"sqlglot.optimizer.annotate_types": {"tf": 1}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1.4142135623730951}, "sqlglot.optimizer.annotate_types.TypeAnnotator": {"tf": 1}, "sqlglot.optimizer.annotate_types.TypeAnnotator.__init__": {"tf": 1}, "sqlglot.optimizer.annotate_types.TypeAnnotator.annotate": {"tf": 1}, "sqlglot.transforms.remove_precision_parameterized_types": {"tf": 1}}, "df": 6}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.optimizer.annotate_types.TypeAnnotator": {"tf": 1}, "sqlglot.optimizer.annotate_types.TypeAnnotator.__init__": {"tf": 1}, "sqlglot.optimizer.annotate_types.TypeAnnotator.annotate": {"tf": 1}}, "df": 3}}}}}}}}}}}}}, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.tokens.TokenType.LOAD_DATA": {"tf": 1}}, "df": 1, "f": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.dataframe.sql": {"tf": 1}, "sqlglot.dataframe.sql.SparkSession": {"tf": 1}, "sqlglot.dataframe.sql.SparkSession.table": {"tf": 1}, "sqlglot.dataframe.sql.SparkSession.createDataFrame": {"tf": 1}, "sqlglot.dataframe.sql.SparkSession.sql": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.__init__": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.sql": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.copy": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.select": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.alias": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.where": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.filter": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.groupBy": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.agg": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.join": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.union": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.unionAll": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.unionByName": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.intersect": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.intersectAll": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.exceptAll": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.distinct": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.dropDuplicates": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.dropna": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.replace": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.withColumn": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.withColumnRenamed": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.drop": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.limit": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.hint": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.repartition": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.coalesce": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.cache": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.persist": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.GroupedData": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.__init__": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.agg": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.count": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.mean": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.avg": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.max": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.min": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.sum": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.pivot": {"tf": 1}, "sqlglot.dataframe.sql.Column": {"tf": 1}, "sqlglot.dataframe.sql.Column.__init__": {"tf": 1}, "sqlglot.dataframe.sql.Column.ensure_col": {"tf": 1}, "sqlglot.dataframe.sql.Column.ensure_cols": {"tf": 1}, "sqlglot.dataframe.sql.Column.invoke_anonymous_function": {"tf": 1}, "sqlglot.dataframe.sql.Column.invoke_expression_over_column": {"tf": 1}, "sqlglot.dataframe.sql.Column.binary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.inverse_binary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.unary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.ensure_literal": {"tf": 1}, "sqlglot.dataframe.sql.Column.copy": {"tf": 1}, "sqlglot.dataframe.sql.Column.set_table_name": {"tf": 1}, "sqlglot.dataframe.sql.Column.sql": {"tf": 1}, "sqlglot.dataframe.sql.Column.alias": {"tf": 1}, "sqlglot.dataframe.sql.Column.asc": {"tf": 1}, "sqlglot.dataframe.sql.Column.desc": {"tf": 1}, "sqlglot.dataframe.sql.Column.asc_nulls_first": {"tf": 1}, "sqlglot.dataframe.sql.Column.asc_nulls_last": {"tf": 1}, "sqlglot.dataframe.sql.Column.desc_nulls_first": {"tf": 1}, "sqlglot.dataframe.sql.Column.desc_nulls_last": {"tf": 1}, "sqlglot.dataframe.sql.Column.when": {"tf": 1}, "sqlglot.dataframe.sql.Column.otherwise": {"tf": 1}, "sqlglot.dataframe.sql.Column.isNull": {"tf": 1}, "sqlglot.dataframe.sql.Column.isNotNull": {"tf": 1}, "sqlglot.dataframe.sql.Column.cast": {"tf": 1}, "sqlglot.dataframe.sql.Column.startswith": {"tf": 1}, "sqlglot.dataframe.sql.Column.endswith": {"tf": 1}, "sqlglot.dataframe.sql.Column.rlike": {"tf": 1}, "sqlglot.dataframe.sql.Column.like": {"tf": 1}, "sqlglot.dataframe.sql.Column.ilike": {"tf": 1}, "sqlglot.dataframe.sql.Column.substr": {"tf": 1}, "sqlglot.dataframe.sql.Column.isin": {"tf": 1}, "sqlglot.dataframe.sql.Column.between": {"tf": 1}, "sqlglot.dataframe.sql.Column.over": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.drop": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.fill": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.replace": {"tf": 1}, "sqlglot.dataframe.sql.Window": {"tf": 1}, "sqlglot.dataframe.sql.Window.partitionBy": {"tf": 1}, "sqlglot.dataframe.sql.Window.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.Window.rowsBetween": {"tf": 1}, "sqlglot.dataframe.sql.Window.rangeBetween": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.__init__": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.copy": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.sql": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.partitionBy": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.rowsBetween": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.rangeBetween": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameReader": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameReader.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameReader.table": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.copy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.sql": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.mode": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.insertInto": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.saveAsTable": {"tf": 1}}, "df": 111, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dataframe.sql.DataFrameNaFunctions": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.drop": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.fill": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.replace": {"tf": 1}}, "df": 5}}}}}}}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dataframe.sql.DataFrameReader": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameReader.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameReader.table": {"tf": 1}}, "df": 3}}}}}}, "w": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dataframe.sql.DataFrameWriter": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.copy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.sql": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.mode": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.insertInto": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.saveAsTable": {"tf": 1}}, "df": 7}}}}}}}}}}}, "b": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dialects.databricks": {"tf": 1}, "sqlglot.dialects.databricks.Databricks": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Tokenizer": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.DATABRICKS": {"tf": 1}}, "df": 6}}}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.DataBlocksizeProperty": {"tf": 1}, "sqlglot.generator.Generator.datablocksizeproperty_sql": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}}}, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.DATABASE": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.hive.Hive.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.datatype_sql": {"tf": 1}, "sqlglot.expressions.DataType": {"tf": 1}, "sqlglot.expressions.DataType.Type": {"tf": 1}, "sqlglot.expressions.DataType.Type.CHAR": {"tf": 1}, "sqlglot.expressions.DataType.Type.NCHAR": {"tf": 1}, "sqlglot.expressions.DataType.Type.VARCHAR": {"tf": 1}, "sqlglot.expressions.DataType.Type.NVARCHAR": {"tf": 1}, "sqlglot.expressions.DataType.Type.TEXT": {"tf": 1}, "sqlglot.expressions.DataType.Type.MEDIUMTEXT": {"tf": 1}, "sqlglot.expressions.DataType.Type.LONGTEXT": {"tf": 1}, "sqlglot.expressions.DataType.Type.MEDIUMBLOB": {"tf": 1}, "sqlglot.expressions.DataType.Type.LONGBLOB": {"tf": 1}, "sqlglot.expressions.DataType.Type.BINARY": {"tf": 1}, "sqlglot.expressions.DataType.Type.VARBINARY": {"tf": 1}, "sqlglot.expressions.DataType.Type.INT": {"tf": 1}, "sqlglot.expressions.DataType.Type.UINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.TINYINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.UTINYINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.SMALLINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.USMALLINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.BIGINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.UBIGINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.FLOAT": {"tf": 1}, "sqlglot.expressions.DataType.Type.DOUBLE": {"tf": 1}, "sqlglot.expressions.DataType.Type.DECIMAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.BIGDECIMAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.BIT": {"tf": 1}, "sqlglot.expressions.DataType.Type.BOOLEAN": {"tf": 1}, "sqlglot.expressions.DataType.Type.JSON": {"tf": 1}, "sqlglot.expressions.DataType.Type.JSONB": {"tf": 1}, "sqlglot.expressions.DataType.Type.INTERVAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.TIME": {"tf": 1}, "sqlglot.expressions.DataType.Type.TIMESTAMP": {"tf": 1}, "sqlglot.expressions.DataType.Type.TIMESTAMPTZ": {"tf": 1}, "sqlglot.expressions.DataType.Type.TIMESTAMPLTZ": {"tf": 1}, "sqlglot.expressions.DataType.Type.DATE": {"tf": 1}, "sqlglot.expressions.DataType.Type.DATETIME": {"tf": 1}, "sqlglot.expressions.DataType.Type.ARRAY": {"tf": 1}, "sqlglot.expressions.DataType.Type.MAP": {"tf": 1}, "sqlglot.expressions.DataType.Type.UUID": {"tf": 1}, "sqlglot.expressions.DataType.Type.GEOGRAPHY": {"tf": 1}, "sqlglot.expressions.DataType.Type.GEOMETRY": {"tf": 1}, "sqlglot.expressions.DataType.Type.STRUCT": {"tf": 1}, "sqlglot.expressions.DataType.Type.NULLABLE": {"tf": 1}, "sqlglot.expressions.DataType.Type.HLLSKETCH": {"tf": 1}, "sqlglot.expressions.DataType.Type.HSTORE": {"tf": 1}, "sqlglot.expressions.DataType.Type.SUPER": {"tf": 1}, "sqlglot.expressions.DataType.Type.SERIAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.SMALLSERIAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.BIGSERIAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.XML": {"tf": 1}, "sqlglot.expressions.DataType.Type.UNIQUEIDENTIFIER": {"tf": 1}, "sqlglot.expressions.DataType.Type.MONEY": {"tf": 1}, "sqlglot.expressions.DataType.Type.SMALLMONEY": {"tf": 1}, "sqlglot.expressions.DataType.Type.ROWVERSION": {"tf": 1}, "sqlglot.expressions.DataType.Type.IMAGE": {"tf": 1}, "sqlglot.expressions.DataType.Type.VARIANT": {"tf": 1}, "sqlglot.expressions.DataType.Type.OBJECT": {"tf": 1}, "sqlglot.expressions.DataType.Type.INET": {"tf": 1}, "sqlglot.expressions.DataType.Type.NULL": {"tf": 1}, "sqlglot.expressions.DataType.Type.UNKNOWN": {"tf": 1}, "sqlglot.expressions.DataType.build": {"tf": 1}, "sqlglot.expressions.DataType.is_type": {"tf": 1}, "sqlglot.generator.Generator.datatype_sql": {"tf": 1}}, "df": 66}}}}}, "e": {"docs": {"sqlglot.dialects.dialect.no_paren_current_date_sql": {"tf": 1}, "sqlglot.dialects.dialect.parse_date_delta": {"tf": 1}, "sqlglot.dialects.dialect.parse_date_delta_with_interval": {"tf": 1}, "sqlglot.dialects.dialect.date_trunc_to_time": {"tf": 1}, "sqlglot.dialects.dialect.ts_or_ds_to_date_sql": {"tf": 1}, "sqlglot.dialects.tsql.generate_date_delta_with_unit_sql": {"tf": 1}, "sqlglot.expressions.DataType.Type.DATE": {"tf": 1}, "sqlglot.optimizer.simplify.extract_date": {"tf": 1}, "sqlglot.optimizer.simplify.date_literal": {"tf": 1}, "sqlglot.tokens.TokenType.DATE": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_DATE": {"tf": 1}}, "df": 11, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.datestrtodate_sql": {"tf": 1}, "sqlglot.expressions.DateStrToDate": {"tf": 1}}, "df": 2}}}}}}}}, "u": {"docs": {}, "df": 0, "b": {"docs": {"sqlglot.expressions.DateSub": {"tf": 1}}, "df": 1}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "f": {"docs": {"sqlglot.dialects.sqlite.SQLite.Generator.datediff_sql": {"tf": 1}, "sqlglot.expressions.DateDiff": {"tf": 1}}, "df": 2}}}}, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.DateFormatColumnConstraint": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.DateFromParts": {"tf": 1}}, "df": 1}}}}}}}}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.DataType.Type.DATETIME": {"tf": 1}, "sqlglot.tokens.TokenType.DATETIME": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_DATETIME": {"tf": 1}}, "df": 3, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.DatetimeAdd": {"tf": 1}}, "df": 1}}}, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "b": {"docs": {"sqlglot.expressions.DatetimeSub": {"tf": 1}}, "df": 1}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "f": {"docs": {"sqlglot.expressions.DatetimeDiff": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot.expressions.DatetimeTrunc": {"tf": 1}}, "df": 1}}}}}}}}, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot.expressions.DateTrunc": {"tf": 1}}, "df": 1}}}}, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.DateToDateStr": {"tf": 1}}, "df": 1}}}}}}, "i": {"docs": {"sqlglot.expressions.DateToDi": {"tf": 1}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.DateAdd": {"tf": 1}}, "df": 1}}}}}, "y": {"docs": {"sqlglot.expressions.Day": {"tf": 1}}, "df": 1, "o": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.expressions.DayOfWeek": {"tf": 1}}, "df": 1}}}}, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.expressions.DayOfMonth": {"tf": 1}}, "df": 1}}}}}, "y": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.DayOfYear": {"tf": 1}}, "df": 1}}}}}}}, "s": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.tokens.TokenType.DASH": {"tf": 1}}, "df": 1}}, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {"sqlglot.tokens.TokenType.DARROW": {"tf": 1}}, "df": 1}}}}, "m": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.tokens.TokenType.DAMP": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe.sql.DataFrame.distinct": {"tf": 1}, "sqlglot.dialects.dialect.approx_count_distinct_sql": {"tf": 1}, "sqlglot.expressions.Select.distinct": {"tf": 1}, "sqlglot.expressions.Distinct": {"tf": 1}, "sqlglot.generator.Generator.distinct_sql": {"tf": 1}, "sqlglot.tokens.TokenType.DISTINCT": {"tf": 1}, "sqlglot.tokens.TokenType.DISTINCT_FROM": {"tf": 1}, "sqlglot.transforms.eliminate_distinct_on": {"tf": 1}}, "df": 8}}}}, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Distribute": {"tf": 1}, "sqlglot.generator.Generator.distribute_sql": {"tf": 1}, "sqlglot.tokens.TokenType.DISTRIBUTE_BY": {"tf": 1}}, "df": 3}, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.normalize.distributive_law": {"tf": 1}}, "df": 1}}}}}}}}, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.DistKeyProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.DistStyleProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Distance": {"tf": 1}, "sqlglot.generator.Generator.distance_sql": {"tf": 1}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1}}, "df": 3}}}}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.dialect": {"tf": 1}, "sqlglot.dialects.dialect.Dialects": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.DIALECT": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.BIGQUERY": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.CLICKHOUSE": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.DUCKDB": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.HIVE": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.MYSQL": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.ORACLE": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.POSTGRES": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.PRESTO": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.REDSHIFT": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.SNOWFLAKE": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.SPARK": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.SQLITE": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.STARROCKS": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.TABLEAU": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.TRINO": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.TSQL": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.DATABRICKS": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.DRILL": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.TERADATA": {"tf": 1}, "sqlglot.dialects.dialect.Dialect": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialect.get_or_raise": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialect.format_time": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialect.parse": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialect.parse_into": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialect.generate": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialect.transpile": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialect.tokenize": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialect.parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialect.generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.rename_func": {"tf": 1}, "sqlglot.dialects.dialect.approx_count_distinct_sql": {"tf": 1}, "sqlglot.dialects.dialect.if_sql": {"tf": 1}, "sqlglot.dialects.dialect.arrow_json_extract_sql": {"tf": 1}, "sqlglot.dialects.dialect.arrow_json_extract_scalar_sql": {"tf": 1}, "sqlglot.dialects.dialect.inline_array_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_ilike_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_paren_current_date_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_recursive_cte_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_safe_divide_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_tablesample_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_pivot_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_trycast_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_properties_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_comment_column_constraint_sql": {"tf": 1}, "sqlglot.dialects.dialect.str_position_sql": {"tf": 1}, "sqlglot.dialects.dialect.struct_extract_sql": {"tf": 1}, "sqlglot.dialects.dialect.var_map_sql": {"tf": 1}, "sqlglot.dialects.dialect.format_time_lambda": {"tf": 1}, "sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1}, "sqlglot.dialects.dialect.parse_date_delta": {"tf": 1}, "sqlglot.dialects.dialect.parse_date_delta_with_interval": {"tf": 1}, "sqlglot.dialects.dialect.date_trunc_to_time": {"tf": 1}, "sqlglot.dialects.dialect.timestamptrunc_sql": {"tf": 1}, "sqlglot.dialects.dialect.locate_to_strposition": {"tf": 1}, "sqlglot.dialects.dialect.strposition_to_locate_sql": {"tf": 1}, "sqlglot.dialects.dialect.timestrtotime_sql": {"tf": 1}, "sqlglot.dialects.dialect.datestrtodate_sql": {"tf": 1}, "sqlglot.dialects.dialect.min_or_least": {"tf": 1}, "sqlglot.dialects.dialect.max_or_greatest": {"tf": 1}, "sqlglot.dialects.dialect.count_if_to_sum": {"tf": 1}, "sqlglot.dialects.dialect.trim_sql": {"tf": 1}, "sqlglot.dialects.dialect.str_to_time_sql": {"tf": 1}, "sqlglot.dialects.dialect.ts_or_ds_to_date_sql": {"tf": 1}}, "df": 66, "s": {"docs": {"sqlglot.dialects": {"tf": 1}, "sqlglot.dialects.bigquery": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Tokenizer": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.array_sql": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.transaction_sql": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.commit_sql": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.rollback_sql": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.in_unnest_op": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.except_op": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.intersect_op": {"tf": 1}, "sqlglot.dialects.clickhouse": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Tokenizer": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator.cte_sql": {"tf": 1}, "sqlglot.dialects.databricks": {"tf": 1}, "sqlglot.dialects.databricks.Databricks": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Tokenizer": {"tf": 1}, "sqlglot.dialects.dialect": {"tf": 1}, "sqlglot.dialects.dialect.Dialects": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.DIALECT": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.BIGQUERY": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.CLICKHOUSE": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.DUCKDB": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.HIVE": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.MYSQL": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.ORACLE": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.POSTGRES": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.PRESTO": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.REDSHIFT": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.SNOWFLAKE": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.SPARK": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.SQLITE": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.STARROCKS": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.TABLEAU": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.TRINO": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.TSQL": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.DATABRICKS": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.DRILL": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.TERADATA": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialect": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.get_or_raise": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.format_time": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.parse": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.parse_into": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.generate": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.transpile": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.tokenize": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.parser": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.generator": {"tf": 1}, "sqlglot.dialects.dialect.rename_func": {"tf": 1}, "sqlglot.dialects.dialect.approx_count_distinct_sql": {"tf": 1}, "sqlglot.dialects.dialect.if_sql": {"tf": 1}, "sqlglot.dialects.dialect.arrow_json_extract_sql": {"tf": 1}, "sqlglot.dialects.dialect.arrow_json_extract_scalar_sql": {"tf": 1}, "sqlglot.dialects.dialect.inline_array_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_ilike_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_paren_current_date_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_recursive_cte_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_safe_divide_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_tablesample_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_pivot_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_trycast_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_properties_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_comment_column_constraint_sql": {"tf": 1}, "sqlglot.dialects.dialect.str_position_sql": {"tf": 1}, "sqlglot.dialects.dialect.struct_extract_sql": {"tf": 1}, "sqlglot.dialects.dialect.var_map_sql": {"tf": 1}, "sqlglot.dialects.dialect.format_time_lambda": {"tf": 1}, "sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1}, "sqlglot.dialects.dialect.parse_date_delta": {"tf": 1}, "sqlglot.dialects.dialect.parse_date_delta_with_interval": {"tf": 1}, "sqlglot.dialects.dialect.date_trunc_to_time": {"tf": 1}, "sqlglot.dialects.dialect.timestamptrunc_sql": {"tf": 1}, "sqlglot.dialects.dialect.locate_to_strposition": {"tf": 1}, "sqlglot.dialects.dialect.strposition_to_locate_sql": {"tf": 1}, "sqlglot.dialects.dialect.timestrtotime_sql": {"tf": 1}, "sqlglot.dialects.dialect.datestrtodate_sql": {"tf": 1}, "sqlglot.dialects.dialect.min_or_least": {"tf": 1}, "sqlglot.dialects.dialect.max_or_greatest": {"tf": 1}, "sqlglot.dialects.dialect.count_if_to_sum": {"tf": 1}, "sqlglot.dialects.dialect.trim_sql": {"tf": 1}, "sqlglot.dialects.dialect.str_to_time_sql": {"tf": 1}, "sqlglot.dialects.dialect.ts_or_ds_to_date_sql": {"tf": 1}, "sqlglot.dialects.drill": {"tf": 1}, "sqlglot.dialects.drill.Drill": {"tf": 1}, "sqlglot.dialects.drill.Drill.Tokenizer": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator.normalize_func": {"tf": 1}, "sqlglot.dialects.duckdb": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Tokenizer": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator.tablesample_sql": {"tf": 1}, "sqlglot.dialects.hive": {"tf": 1}, "sqlglot.dialects.hive.Hive": {"tf": 1}, "sqlglot.dialects.hive.Hive.Tokenizer": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator.arrayagg_sql": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator.with_properties": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.mysql": {"tf": 1}, "sqlglot.dialects.mysql.MySQL": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Tokenizer": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator.show_sql": {"tf": 1}, "sqlglot.dialects.oracle": {"tf": 1}, "sqlglot.dialects.oracle.Oracle": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator.offset_sql": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator.column_sql": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator.xmltable_sql": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Tokenizer": {"tf": 1}, "sqlglot.dialects.postgres": {"tf": 1}, "sqlglot.dialects.postgres.Postgres": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Tokenizer": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto": {"tf": 1}, "sqlglot.dialects.presto.Presto": {"tf": 1}, "sqlglot.dialects.presto.Presto.Tokenizer": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator.interval_sql": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator.transaction_sql": {"tf": 1}, "sqlglot.dialects.redshift": {"tf": 1}, "sqlglot.dialects.redshift.Redshift": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Tokenizer": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.with_properties": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.renametable_sql": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.snowflake": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Tokenizer": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.except_op": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.intersect_op": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.settag_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.describe_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.generatedasidentitycolumnconstraint_sql": {"tf": 1}, "sqlglot.dialects.spark": {"tf": 1}, "sqlglot.dialects.spark.Spark": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator.cast_sql": {"tf": 1}, "sqlglot.dialects.spark.Spark.Tokenizer": {"tf": 1}, "sqlglot.dialects.sqlite": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Tokenizer": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.cast_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.datediff_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.groupconcat_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.least_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.transaction_sql": {"tf": 1}, "sqlglot.dialects.starrocks": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau": {"tf": 1}, "sqlglot.dialects.tableau.Tableau": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata": {"tf": 1}, "sqlglot.dialects.teradata.Teradata": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Tokenizer": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.partitionedbyproperty_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.update_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.mod_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.rangen_sql": {"tf": 1}, "sqlglot.dialects.trino": {"tf": 1}, "sqlglot.dialects.trino.Trino": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Tokenizer": {"tf": 1}, "sqlglot.dialects.tsql": {"tf": 1}, "sqlglot.dialects.tsql.generate_date_delta_with_unit_sql": {"tf": 1}, "sqlglot.dialects.tsql.TSQL": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Tokenizer": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator.offset_sql": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator.systemtime_sql": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator.returnsproperty_sql": {"tf": 1}}, "df": 204}}}}}}, "v": {"docs": {"sqlglot.expressions.Div": {"tf": 1}, "sqlglot.generator.Generator.div_sql": {"tf": 1}, "sqlglot.tokens.TokenType.DIV": {"tf": 1}}, "df": 3, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.no_safe_divide_sql": {"tf": 1}}, "df": 1}}}}, "f": {"docs": {}, "df": 0, "f": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.diff.Insert": {"tf": 1}, "sqlglot.diff.Insert.__init__": {"tf": 1}, "sqlglot.diff.Remove": {"tf": 1}, "sqlglot.diff.Remove.__init__": {"tf": 1}, "sqlglot.diff.Move": {"tf": 1}, "sqlglot.diff.Move.__init__": {"tf": 1}, "sqlglot.diff.Update": {"tf": 1}, "sqlglot.diff.Update.__init__": {"tf": 1}, "sqlglot.diff.Keep": {"tf": 1}, "sqlglot.diff.Keep.__init__": {"tf": 1}, "sqlglot.diff.diff": {"tf": 1.4142135623730951}, "sqlglot.diff.ChangeDistiller": {"tf": 1}, "sqlglot.diff.ChangeDistiller.__init__": {"tf": 1}, "sqlglot.diff.ChangeDistiller.diff": {"tf": 1.4142135623730951}}, "df": 15}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.Directory": {"tf": 1}, "sqlglot.generator.Generator.directory_sql": {"tf": 1}}, "df": 2}}}}}}}, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.Properties.from_dict": {"tf": 1}, "sqlglot.helper.object_to_dict": {"tf": 1}, "sqlglot.helper.dict_depth": {"tf": 1}}, "df": 3}}, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.DiToDate": {"tf": 1}}, "df": 1}}}}}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.dataframe.sql.DataFrame.drop": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.drop": {"tf": 1}, "sqlglot.expressions.Drop": {"tf": 1}, "sqlglot.generator.Generator.drop_sql": {"tf": 1}, "sqlglot.tokens.TokenType.DROP": {"tf": 1}}, "df": 5, "d": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dataframe.sql.DataFrame.dropDuplicates": {"tf": 1}}, "df": 1}}}}}}}}}}, "n": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.dataframe.sql.DataFrame.dropna": {"tf": 1}}, "df": 1}}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.DropPartition": {"tf": 1}, "sqlglot.generator.Generator.droppartition_sql": {"tf": 1}}, "df": 2}}}}}}}}}}}, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.dialects.dialect.Dialects.DRILL": {"tf": 1}, "sqlglot.dialects.drill": {"tf": 1}, "sqlglot.dialects.drill.Drill": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Tokenizer": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Generator.normalize_func": {"tf": 1.4142135623730951}}, "df": 7}}}}, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot.dataframe.sql.Column.desc": {"tf": 1}, "sqlglot.dataframe.sql.Column.desc_nulls_first": {"tf": 1}, "sqlglot.dataframe.sql.Column.desc_nulls_last": {"tf": 1}, "sqlglot.tokens.TokenType.DESC": {"tf": 1}}, "df": 4, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.snowflake.Snowflake.Generator.describe_sql": {"tf": 1}, "sqlglot.expressions.Describe": {"tf": 1}, "sqlglot.generator.Generator.describe_sql": {"tf": 1}, "sqlglot.tokens.TokenType.DESCRIBE": {"tf": 1}}, "df": 4}}}}}}, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.dialects.dialect.parse_date_delta": {"tf": 1}, "sqlglot.dialects.dialect.parse_date_delta_with_interval": {"tf": 1}, "sqlglot.dialects.tsql.generate_date_delta_with_unit_sql": {"tf": 1}}, "df": 3}}, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Delete": {"tf": 1}, "sqlglot.expressions.Delete.delete": {"tf": 1.4142135623730951}, "sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Delete.returning": {"tf": 1}, "sqlglot.expressions.delete": {"tf": 1}, "sqlglot.generator.Generator.delete_sql": {"tf": 1}, "sqlglot.tokens.TokenType.DELETE": {"tf": 1}}, "df": 7}}}}, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.expressions.Expression.depth": {"tf": 1}, "sqlglot.helper.dict_depth": {"tf": 1}}, "df": 2}}, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.planner.Step.add_dependency": {"tf": 1}}, "df": 1}}}}}}}}, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.optimizer.merge_subqueries.merge_derived_tables": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.DERIVED_TABLE": {"tf": 1}, "sqlglot.optimizer.scope.Scope.derived_tables": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_derived_table": {"tf": 1}}, "df": 4, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.DerivedTable": {"tf": 1}}, "df": 1}}}}}}}}}}, "f": {"docs": {"sqlglot.tokens.TokenType.COLUMN_DEF": {"tf": 1}}, "df": 1, "a": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.Func.default_parser_mappings": {"tf": 1}, "sqlglot.optimizer.pushdown_projections.DEFAULT_SELECTION": {"tf": 1}, "sqlglot.tokens.TokenType.BY_DEFAULT": {"tf": 1}, "sqlglot.tokens.TokenType.DEFAULT": {"tf": 1}}, "df": 4, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.DefaultColumnConstraint": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.DefinerProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}}}, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.expressions.DataType.Type.DECIMAL": {"tf": 1}, "sqlglot.tokens.TokenType.DECIMAL": {"tf": 1}}, "df": 2}}}}, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Decode": {"tf": 1}}, "df": 1}}, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.unnest_subqueries.decorrelate": {"tf": 1}}, "df": 1}}}}}}}}}}, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "b": {"docs": {"sqlglot.dialects.dialect.Dialects.DUCKDB": {"tf": 1}, "sqlglot.dialects.duckdb": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Tokenizer": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Generator.tablesample_sql": {"tf": 1.4142135623730951}}, "df": 7}}}}, "m": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.expressions.Expression.dump": {"tf": 1}, "sqlglot.serde.dump": {"tf": 1}}, "df": 2}}}, "s": {"docs": {"sqlglot.dialects.dialect.ts_or_ds_to_date_sql": {"tf": 1}}, "df": 1}, "f": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.Expression.dfs": {"tf": 1}}, "df": 1}}, "o": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.Column.to_dot": {"tf": 1}, "sqlglot.expressions.Dot": {"tf": 1}, "sqlglot.expressions.Dot.build": {"tf": 1}, "sqlglot.generator.Generator.dot_sql": {"tf": 1}, "sqlglot.tokens.TokenType.DOT": {"tf": 1}}, "df": 5}, "u": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.DataType.Type.DOUBLE": {"tf": 1}, "sqlglot.tokens.TokenType.DOUBLE": {"tf": 1}}, "df": 2}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.tokens.TokenType.DOLLAR": {"tf": 1}}, "df": 1}}}}}, "p": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.DPipe": {"tf": 1}, "sqlglot.generator.Generator.dpipe_sql": {"tf": 1}, "sqlglot.tokens.TokenType.DPIPE": {"tf": 1}}, "df": 3}}}}, "n": {"docs": {}, "df": 0, "f": {"docs": {"sqlglot.optimizer.pushdown_predicates.pushdown_dnf": {"tf": 1}}, "df": 1}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.tokens.TokenType.DCOLON": {"tf": 1}}, "df": 1}}}}}, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.tokens.TokenType.DHASH_ARROW": {"tf": 1}}, "df": 1}}}}}, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1}, "sqlglot.expressions.Create": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_CREATE": {"tf": 1}, "sqlglot.generator.Generator.create_sql": {"tf": 1}, "sqlglot.tokens.TokenType.CREATE": {"tf": 1}}, "df": 5, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.SparkSession.createDataFrame": {"tf": 1}}, "df": 1}}}}}}}}}}}}}, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.tokens.TokenType.CROSS": {"tf": 1}}, "df": 1}}}}, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dataframe.sql.DataFrame.copy": {"tf": 1}, "sqlglot.dataframe.sql.Column.copy": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.copy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.copy": {"tf": 1}, "sqlglot.expressions.Expression.copy": {"tf": 1}, "sqlglot.schema.MappingSchema.copy": {"tf": 1}}, "df": 6}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.DataFrame.coalesce": {"tf": 1}, "sqlglot.expressions.Coalesce": {"tf": 1}}, "df": 2}}}}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe.sql.GroupedData.count": {"tf": 1}, "sqlglot.dialects.dialect.approx_count_distinct_sql": {"tf": 1}, "sqlglot.dialects.dialect.count_if_to_sum": {"tf": 1}, "sqlglot.expressions.Count": {"tf": 1}, "sqlglot.helper.count_params": {"tf": 1}, "sqlglot.optimizer.scope.Scope.ref_count": {"tf": 1}}, "df": 6, "i": {"docs": {}, "df": 0, "f": {"docs": {"sqlglot.expressions.CountIf": {"tf": 1}}, "df": 1}}}}}, "l": {"docs": {"sqlglot.dataframe.sql.Column.ensure_col": {"tf": 1}}, "df": 1, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dataframe.sql.Column": {"tf": 1}, "sqlglot.dataframe.sql.Column.__init__": {"tf": 1}, "sqlglot.dataframe.sql.Column.ensure_col": {"tf": 1}, "sqlglot.dataframe.sql.Column.ensure_cols": {"tf": 1}, "sqlglot.dataframe.sql.Column.invoke_anonymous_function": {"tf": 1}, "sqlglot.dataframe.sql.Column.invoke_expression_over_column": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.binary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.inverse_binary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.unary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.ensure_literal": {"tf": 1}, "sqlglot.dataframe.sql.Column.copy": {"tf": 1}, "sqlglot.dataframe.sql.Column.set_table_name": {"tf": 1}, "sqlglot.dataframe.sql.Column.sql": {"tf": 1}, "sqlglot.dataframe.sql.Column.alias": {"tf": 1}, "sqlglot.dataframe.sql.Column.asc": {"tf": 1}, "sqlglot.dataframe.sql.Column.desc": {"tf": 1}, "sqlglot.dataframe.sql.Column.asc_nulls_first": {"tf": 1}, "sqlglot.dataframe.sql.Column.asc_nulls_last": {"tf": 1}, "sqlglot.dataframe.sql.Column.desc_nulls_first": {"tf": 1}, "sqlglot.dataframe.sql.Column.desc_nulls_last": {"tf": 1}, "sqlglot.dataframe.sql.Column.when": {"tf": 1}, "sqlglot.dataframe.sql.Column.otherwise": {"tf": 1}, "sqlglot.dataframe.sql.Column.isNull": {"tf": 1}, "sqlglot.dataframe.sql.Column.isNotNull": {"tf": 1}, "sqlglot.dataframe.sql.Column.cast": {"tf": 1}, "sqlglot.dataframe.sql.Column.startswith": {"tf": 1}, "sqlglot.dataframe.sql.Column.endswith": {"tf": 1}, "sqlglot.dataframe.sql.Column.rlike": {"tf": 1}, "sqlglot.dataframe.sql.Column.like": {"tf": 1}, "sqlglot.dataframe.sql.Column.ilike": {"tf": 1}, "sqlglot.dataframe.sql.Column.substr": {"tf": 1}, "sqlglot.dataframe.sql.Column.isin": {"tf": 1}, "sqlglot.dataframe.sql.Column.between": {"tf": 1}, "sqlglot.dataframe.sql.Column.over": {"tf": 1}, "sqlglot.dialects.dialect.no_comment_column_constraint_sql": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator.column_sql": {"tf": 1}, "sqlglot.expressions.Column": {"tf": 1}, "sqlglot.expressions.Column.output_name": {"tf": 1}, "sqlglot.expressions.Column.parts": {"tf": 1}, "sqlglot.expressions.Column.to_dot": {"tf": 1}, "sqlglot.expressions.to_column": {"tf": 1}, "sqlglot.expressions.column": {"tf": 1}, "sqlglot.expressions.column_table_names": {"tf": 1}, "sqlglot.generator.Generator.column_sql": {"tf": 1}, "sqlglot.schema.Schema.column_names": {"tf": 1}, "sqlglot.schema.Schema.get_column_type": {"tf": 1}, "sqlglot.schema.MappingSchema.column_names": {"tf": 1}, "sqlglot.schema.MappingSchema.get_column_type": {"tf": 1}, "sqlglot.schema.ensure_column_mapping": {"tf": 1}, "sqlglot.tokens.TokenType.COLUMN": {"tf": 1}, "sqlglot.tokens.TokenType.COLUMN_DEF": {"tf": 1}}, "df": 51, "s": {"docs": {"sqlglot.executor.context.Context.add_columns": {"tf": 1}, "sqlglot.executor.table.Table.add_columns": {"tf": 1}, "sqlglot.optimizer.qualify_columns": {"tf": 1}, "sqlglot.optimizer.qualify_columns.qualify_columns": {"tf": 1.4142135623730951}, "sqlglot.optimizer.qualify_columns.validate_qualify_columns": {"tf": 1.4142135623730951}, "sqlglot.optimizer.qualify_columns.Resolver": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.__init__": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.get_table": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.all_columns": {"tf": 1.4142135623730951}, "sqlglot.optimizer.qualify_columns.Resolver.get_source_columns": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.external_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.unqualified_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.source_columns": {"tf": 1}}, "df": 14}, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.ColumnPosition": {"tf": 1}, "sqlglot.generator.Generator.columnposition_sql": {"tf": 1}}, "df": 2}}}}}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "f": {"docs": {"sqlglot.expressions.ColumnDef": {"tf": 1}, "sqlglot.generator.Generator.columndef_sql": {"tf": 1}}, "df": 2}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.ColumnConstraint": {"tf": 1}, "sqlglot.generator.Generator.columnconstraint_sql": {"tf": 1}}, "df": 2, "k": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.ColumnConstraintKind": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}, "s": {"docs": {"sqlglot.dataframe.sql.Column.ensure_cols": {"tf": 1}}, "df": 1}, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Collate": {"tf": 1}, "sqlglot.generator.Generator.collate_sql": {"tf": 1}, "sqlglot.tokens.TokenType.COLLATE": {"tf": 1}}, "df": 3, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.CollateColumnConstraint": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.CollateProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.helper.ensure_collection": {"tf": 1}}, "df": 1}}}}}}}, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.tokens.TokenType.COLON": {"tf": 1}}, "df": 1}}}, "m": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator.commit_sql": {"tf": 1}, "sqlglot.expressions.Commit": {"tf": 1}, "sqlglot.generator.Generator.commit_sql": {"tf": 1}, "sqlglot.tokens.TokenType.COMMIT": {"tf": 1}}, "df": 4}}, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.dialect.no_comment_column_constraint_sql": {"tf": 1}, "sqlglot.expressions.Comment": {"tf": 1}, "sqlglot.generator.Generator.pad_comment": {"tf": 1}, "sqlglot.generator.Generator.maybe_comment": {"tf": 1}, "sqlglot.generator.Generator.comment_sql": {"tf": 1}, "sqlglot.tokens.TokenType.COMMENT": {"tf": 1}}, "df": 6, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.CommentColumnConstraint": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}, "a": {"docs": {"sqlglot.tokens.TokenType.COMMA": {"tf": 1}}, "df": 1, "n": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.Command": {"tf": 1}, "sqlglot.generator.Generator.command_sql": {"tf": 1}, "sqlglot.tokens.TokenType.COMMAND": {"tf": 1}}, "df": 3}}}}, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.CompressColumnConstraint": {"tf": 1}, "sqlglot.generator.Generator.compresscolumnconstraint_sql": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}}}}}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.optimizer.simplify.remove_compliments": {"tf": 1}}, "df": 1}}}}}}, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.optimizer.simplify.is_complement": {"tf": 1}}, "df": 1}}}}}}, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.tokens.TokenType.COMPOUND": {"tf": 1}}, "df": 1}}}}}}, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.dialect.no_comment_column_constraint_sql": {"tf": 1}, "sqlglot.expressions.Constraint": {"tf": 1}, "sqlglot.generator.Generator.constraint_sql": {"tf": 1}, "sqlglot.tokens.TokenType.CONSTRAINT": {"tf": 1}}, "df": 4}}}}}}}, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.errors.concat_messages": {"tf": 1}, "sqlglot.expressions.Concat": {"tf": 1}, "sqlglot.generator.Generator.concat_sql": {"tf": 1}, "sqlglot.optimizer.canonicalize.add_text_to_concat": {"tf": 1}}, "df": 4, "w": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.ConcatWs": {"tf": 1}}, "df": 1}}}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.executor.context": {"tf": 1}, "sqlglot.executor.context.Context": {"tf": 1.4142135623730951}, "sqlglot.executor.context.Context.__init__": {"tf": 1.4142135623730951}, "sqlglot.executor.context.Context.eval": {"tf": 1.4142135623730951}, "sqlglot.executor.context.Context.eval_tuple": {"tf": 1.4142135623730951}, "sqlglot.executor.context.Context.add_columns": {"tf": 1.4142135623730951}, "sqlglot.executor.context.Context.table_iter": {"tf": 1.4142135623730951}, "sqlglot.executor.context.Context.filter": {"tf": 1.4142135623730951}, "sqlglot.executor.context.Context.sort": {"tf": 1.4142135623730951}, "sqlglot.executor.context.Context.set_row": {"tf": 1.4142135623730951}, "sqlglot.executor.context.Context.set_index": {"tf": 1.4142135623730951}, "sqlglot.executor.context.Context.set_range": {"tf": 1.4142135623730951}, "sqlglot.executor.python.PythonExecutor.context": {"tf": 1}}, "df": 13}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.Condition": {"tf": 1}, "sqlglot.expressions.Condition.and_": {"tf": 1}, "sqlglot.expressions.Condition.or_": {"tf": 1}, "sqlglot.expressions.Condition.not_": {"tf": 1}, "sqlglot.expressions.condition": {"tf": 1}, "sqlglot.optimizer.eliminate_joins.join_condition": {"tf": 1}}, "df": 6}}}}}}, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.Connector": {"tf": 1}, "sqlglot.generator.Generator.connector_sql": {"tf": 1}}, "df": 2, "s": {"docs": {"sqlglot.optimizer.simplify.simplify_connectors": {"tf": 1}}, "df": 1}}}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.convert": {"tf": 1}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.canonicalize.coerce_type": {"tf": 1}}, "df": 1}}}}, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.optimizer.scope.Scope.is_correlated_subquery": {"tf": 1}}, "df": 1}}}}}}}}}, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.DataFrame.cache": {"tf": 1}, "sqlglot.expressions.Cache": {"tf": 1}, "sqlglot.generator.Generator.cache_sql": {"tf": 1}, "sqlglot.optimizer.scope.Scope.clear_cache": {"tf": 1}, "sqlglot.tokens.TokenType.CACHE": {"tf": 1}}, "df": 5}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe.sql.Column.cast": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator.cast_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.cast_sql": {"tf": 1}, "sqlglot.executor.env.cast": {"tf": 1}, "sqlglot.expressions.Cast": {"tf": 1}, "sqlglot.expressions.Cast.output_name": {"tf": 1}, "sqlglot.expressions.Cast.is_type": {"tf": 1}, "sqlglot.expressions.cast": {"tf": 1}, "sqlglot.generator.Generator.cast_sql": {"tf": 1}}, "df": 9, "s": {"docs": {"sqlglot.optimizer.canonicalize.remove_redundant_casts": {"tf": 1}}, "df": 1}}, "e": {"docs": {"sqlglot.expressions.Case": {"tf": 1}, "sqlglot.generator.Generator.case_sql": {"tf": 1}, "sqlglot.helper.camel_to_snake_case": {"tf": 1}, "sqlglot.tokens.TokenType.CASE": {"tf": 1}}, "df": 4, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.CaseSpecificColumnConstraint": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}}}}}}, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.CASCADE": {"tf": 1}}, "df": 1}}}}}, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.helper.camel_to_snake_case": {"tf": 1}}, "df": 1}}}, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.canonicalize": {"tf": 1}, "sqlglot.optimizer.canonicalize.canonicalize": {"tf": 1.4142135623730951}, "sqlglot.optimizer.canonicalize.add_text_to_concat": {"tf": 1}, "sqlglot.optimizer.canonicalize.coerce_type": {"tf": 1}, "sqlglot.optimizer.canonicalize.remove_redundant_casts": {"tf": 1}, "sqlglot.optimizer.canonicalize.ensure_bool_predicates": {"tf": 1}}, "df": 6}}}}}}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.CARET": {"tf": 1}}, "df": 1}}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.clickhouse": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Tokenizer": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Generator.cte_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.CLICKHOUSE": {"tf": 1}}, "df": 7}}}}}}}}, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.Cluster": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.generator.Generator.cluster_sql": {"tf": 1}, "sqlglot.tokens.TokenType.CLUSTER_BY": {"tf": 1}}, "df": 4}}}}}, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.optimizer.scope.Scope.clear_cache": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.clickhouse.ClickHouse.Generator.cte_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_recursive_cte_sql": {"tf": 1}, "sqlglot.expressions.CTE": {"tf": 1}, "sqlglot.generator.Generator.cte_sql": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.CTE": {"tf": 1}, "sqlglot.optimizer.scope.Scope.cte_sources": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_cte": {"tf": 1}}, "df": 7, "s": {"docs": {"sqlglot.generator.Generator.prepend_ctes": {"tf": 1}, "sqlglot.optimizer.eliminate_ctes": {"tf": 1}, "sqlglot.optimizer.eliminate_ctes.eliminate_ctes": {"tf": 1.4142135623730951}, "sqlglot.optimizer.merge_subqueries.merge_ctes": {"tf": 1}, "sqlglot.optimizer.scope.Scope.ctes": {"tf": 1}}, "df": 5}}, "a": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.Select.ctas": {"tf": 1}}, "df": 1}}}, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.dialect.no_paren_current_date_sql": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_DATE": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_DATETIME": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_ROW": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_TIME": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_TIMESTAMP": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_USER": {"tf": 1}}, "df": 7, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.CurrentDate": {"tf": 1}, "sqlglot.generator.Generator.currentdate_sql": {"tf": 1}}, "df": 2, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.CurrentDatetime": {"tf": 1}}, "df": 1}}}}}}}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.CurrentTime": {"tf": 1}}, "df": 1, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.expressions.CurrentTimestamp": {"tf": 1}}, "df": 1}}}}}}}}}, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.CurrentUser": {"tf": 1}}, "df": 1}}}}}}}}}, "b": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.CUBE": {"tf": 1}}, "df": 1}}}, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.diff.ChangeDistiller": {"tf": 1}, "sqlglot.diff.ChangeDistiller.__init__": {"tf": 1}, "sqlglot.diff.ChangeDistiller.diff": {"tf": 1}}, "df": 3}}}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.helper.while_changing": {"tf": 1}}, "df": 1}}}}}, "r": {"docs": {"sqlglot.expressions.DataType.Type.CHAR": {"tf": 1}, "sqlglot.tokens.TokenType.CHAR": {"tf": 1}}, "df": 2, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.tokens.TokenType.CHARACTER_SET": {"tf": 1}}, "df": 1, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.CharacterSet": {"tf": 1}, "sqlglot.generator.Generator.characterset_sql": {"tf": 1}}, "df": 2, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.CharacterSetColumnConstraint": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.CharacterSetProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.expressions.Check": {"tf": 1}, "sqlglot.generator.Generator.check_sql": {"tf": 1}, "sqlglot.parser.Parser.check_errors": {"tf": 1}}, "df": 3, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.CheckColumnConstraint": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.ChecksumProperty": {"tf": 1}, "sqlglot.generator.Generator.checksumproperty_sql": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.replace_children": {"tf": 1}}, "df": 1}}}}}}}, "s": {"docs": {}, "df": 0, "v": {"docs": {"sqlglot.executor.python.PythonExecutor.scan_csv": {"tf": 1}, "sqlglot.helper.csv": {"tf": 1}, "sqlglot.helper.csv_reader": {"tf": 1}}, "df": 3}}, "e": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.expressions.Ceil": {"tf": 1}}, "df": 1}}}, "n": {"docs": {}, "df": 0, "f": {"docs": {"sqlglot.optimizer.pushdown_predicates.pushdown_cnf": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator.in_unnest_op": {"tf": 1}, "sqlglot.expressions.In": {"tf": 1}, "sqlglot.generator.Generator.in_sql": {"tf": 1}, "sqlglot.generator.Generator.in_unnest_op": {"tf": 1}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1}, "sqlglot.tokens.TokenType.IN": {"tf": 1}, "sqlglot.trie.in_trie": {"tf": 1}}, "df": 7, "i": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe.sql.DataFrame.__init__": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.__init__": {"tf": 1}, "sqlglot.dataframe.sql.Column.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.__init__": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameReader.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.__init__": {"tf": 1}, "sqlglot.diff.Insert.__init__": {"tf": 1}, "sqlglot.diff.Remove.__init__": {"tf": 1}, "sqlglot.diff.Move.__init__": {"tf": 1}, "sqlglot.diff.Update.__init__": {"tf": 1}, "sqlglot.diff.Keep.__init__": {"tf": 1}, "sqlglot.diff.ChangeDistiller.__init__": {"tf": 1}, "sqlglot.errors.ParseError.__init__": {"tf": 1}, "sqlglot.executor.context.Context.__init__": {"tf": 1}, "sqlglot.executor.env.reverse_key.__init__": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.__init__": {"tf": 1}, "sqlglot.executor.table.Table.__init__": {"tf": 1}, "sqlglot.executor.table.TableIter.__init__": {"tf": 1}, "sqlglot.executor.table.RangeReader.__init__": {"tf": 1}, "sqlglot.executor.table.RowReader.__init__": {"tf": 1}, "sqlglot.expressions.Expression.__init__": {"tf": 1}, "sqlglot.expressions.TimeUnit.__init__": {"tf": 1}, "sqlglot.generator.Generator.__init__": {"tf": 1}, "sqlglot.lineage.Node.__init__": {"tf": 1}, "sqlglot.lineage.LineageHTML.__init__": {"tf": 1}, "sqlglot.optimizer.annotate_types.TypeAnnotator.__init__": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.__init__": {"tf": 1}, "sqlglot.optimizer.scope.Scope.__init__": {"tf": 1}, "sqlglot.parser.Parser.__init__": {"tf": 1}, "sqlglot.planner.Plan.__init__": {"tf": 1}, "sqlglot.planner.SetOperation.__init__": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema.__init__": {"tf": 1}, "sqlglot.schema.MappingSchema.__init__": {"tf": 1}, "sqlglot.tokens.Token.__init__": {"tf": 1}}, "df": 35, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.expressions.Initcap": {"tf": 1}}, "df": 1}}}}}, "t": {"docs": {"sqlglot.expressions.Expression.is_int": {"tf": 1}, "sqlglot.expressions.DataType.Type.INT": {"tf": 1}, "sqlglot.tokens.TokenType.INT": {"tf": 1}}, "df": 3, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe.sql.DataFrame.intersect": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.intersect_op": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.intersect_op": {"tf": 1}, "sqlglot.expressions.Unionable.intersect": {"tf": 1}, "sqlglot.expressions.Intersect": {"tf": 1}, "sqlglot.expressions.intersect": {"tf": 1}, "sqlglot.generator.Generator.intersect_sql": {"tf": 1}, "sqlglot.generator.Generator.intersect_op": {"tf": 1}, "sqlglot.tokens.TokenType.INTERSECT": {"tf": 1}}, "df": 9, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.dataframe.sql.DataFrame.intersectAll": {"tf": 1}}, "df": 1}}}}}}}, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.dialects.dialect.parse_date_delta_with_interval": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator.interval_sql": {"tf": 1}, "sqlglot.executor.env.interval": {"tf": 1}, "sqlglot.expressions.DataType.Type.INTERVAL": {"tf": 1}, "sqlglot.expressions.Interval": {"tf": 1}, "sqlglot.expressions.to_interval": {"tf": 1}, "sqlglot.generator.Generator.interval_sql": {"tf": 1}, "sqlglot.optimizer.simplify.extract_interval": {"tf": 1}, "sqlglot.tokens.TokenType.INTERVAL": {"tf": 1}}, "df": 9}}}}}, "o": {"docs": {"sqlglot.dialects.dialect.Dialect.parse_into": {"tf": 1}, "sqlglot.expressions.Into": {"tf": 1}, "sqlglot.generator.Generator.into_sql": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 1}, "sqlglot.tokens.TokenType.INTO": {"tf": 1}}, "df": 5}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.Introducer": {"tf": 1}, "sqlglot.generator.Generator.introducer_sql": {"tf": 1}, "sqlglot.tokens.TokenType.INTRODUCER": {"tf": 1}}, "df": 3}}}}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {"sqlglot.expressions.IntDiv": {"tf": 1}, "sqlglot.generator.Generator.intdiv_sql": {"tf": 1}}, "df": 2}}}}, "v": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.Column.invoke_anonymous_function": {"tf": 1}, "sqlglot.dataframe.sql.Column.invoke_expression_over_column": {"tf": 1}}, "df": 2}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.Column.inverse_binary_op": {"tf": 1}}, "df": 1}}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.diff.Insert": {"tf": 1}, "sqlglot.diff.Insert.__init__": {"tf": 1}, "sqlglot.expressions.Insert": {"tf": 1}, "sqlglot.generator.Generator.insert_sql": {"tf": 1}, "sqlglot.tokens.TokenType.INSERT": {"tf": 1}}, "df": 5, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {"sqlglot.dataframe.sql.DataFrameWriter.insertInto": {"tf": 1}}, "df": 1}}}}}}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.inline_array_sql": {"tf": 1}}, "df": 1, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.InlineLengthColumnConstraint": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}}}}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "x": {"docs": {"sqlglot.executor.context.Context.set_index": {"tf": 1}, "sqlglot.expressions.Index": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_INDEX": {"tf": 1}, "sqlglot.generator.Generator.index_sql": {"tf": 1}, "sqlglot.helper.apply_index_offset": {"tf": 1}, "sqlglot.tokens.TokenType.INDEX": {"tf": 1}}, "df": 6}, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.generator.Generator.indent": {"tf": 1}}, "df": 1}}}}, "p": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.InputOutputFormat": {"tf": 1}, "sqlglot.generator.Generator.inputoutputformat_sql": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.DataType.Type.INET": {"tf": 1}, "sqlglot.tokens.TokenType.INET": {"tf": 1}}, "df": 2}}, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.AUTO_INCREMENT": {"tf": 1}}, "df": 1}}}}}}}, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.tokens.TokenType.INNER": {"tf": 1}}, "df": 1}}}}, "s": {"docs": {"sqlglot.expressions.Expression.is_string": {"tf": 1}, "sqlglot.expressions.Expression.is_number": {"tf": 1}, "sqlglot.expressions.Expression.is_int": {"tf": 1}, "sqlglot.expressions.Expression.is_star": {"tf": 1}, "sqlglot.expressions.Expression.assert_is": {"tf": 1}, "sqlglot.expressions.Union.is_star": {"tf": 1}, "sqlglot.expressions.Select.is_star": {"tf": 1}, "sqlglot.expressions.Subquery.is_star": {"tf": 1}, "sqlglot.expressions.DataType.is_type": {"tf": 1}, "sqlglot.expressions.Is": {"tf": 1}, "sqlglot.expressions.Cast.is_type": {"tf": 1}, "sqlglot.generator.Generator.is_sql": {"tf": 1}, "sqlglot.helper.is_iterable": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_subquery": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_derived_table": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_union": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_cte": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_root": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_udtf": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_correlated_subquery": {"tf": 1}, "sqlglot.optimizer.simplify.is_complement": {"tf": 1}, "sqlglot.optimizer.simplify.is_false": {"tf": 1}, "sqlglot.optimizer.simplify.is_null": {"tf": 1}, "sqlglot.tokens.TokenType.IS": {"tf": 1}}, "df": 24, "n": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.dataframe.sql.Column.isNull": {"tf": 1}, "sqlglot.tokens.TokenType.ISNULL": {"tf": 1}}, "df": 2}}}, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.dataframe.sql.Column.isNotNull": {"tf": 1}}, "df": 1}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dataframe.sql.Column.isin": {"tf": 1}}, "df": 1}}, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.isolate_table_selects": {"tf": 1}, "sqlglot.optimizer.isolate_table_selects.isolate_table_selects": {"tf": 1.4142135623730951}}, "df": 2, "d": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.IsolatedLoadingProperty": {"tf": 1}, "sqlglot.generator.Generator.isolatedloadingproperty_sql": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}}}}}}}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.Column.ilike": {"tf": 1}, "sqlglot.dialects.dialect.no_ilike_sql": {"tf": 1}, "sqlglot.expressions.ILike": {"tf": 1}, "sqlglot.generator.Generator.ilike_sql": {"tf": 1}, "sqlglot.tokens.TokenType.ILIKE": {"tf": 1}, "sqlglot.tokens.TokenType.ILIKE_ANY": {"tf": 1}}, "df": 6, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.ILikeAny": {"tf": 1}, "sqlglot.generator.Generator.ilikeany_sql": {"tf": 1}}, "df": 2}}}}}}}, "f": {"docs": {"sqlglot.dialects.dialect.if_sql": {"tf": 1}, "sqlglot.dialects.dialect.count_if_to_sum": {"tf": 1}, "sqlglot.executor.env.null_if_any": {"tf": 1}, "sqlglot.expressions.If": {"tf": 1}, "sqlglot.generator.Generator.if_sql": {"tf": 1}, "sqlglot.tokens.TokenType.IF": {"tf": 1}}, "df": 6, "n": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.expressions.IfNull": {"tf": 1}}, "df": 1}}}}}, "g": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.errors.ErrorLevel.IGNORE": {"tf": 1}, "sqlglot.tokens.TokenType.IGNORE_NULLS": {"tf": 1}}, "df": 2, "n": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.IgnoreNulls": {"tf": 1}, "sqlglot.generator.Generator.ignorenulls_sql": {"tf": 1}}, "df": 2}}}}}}}}}}, "m": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.errors.ErrorLevel.IMMEDIATE": {"tf": 1}}, "df": 1}}}}}}}, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.DataType.Type.IMAGE": {"tf": 1}, "sqlglot.tokens.TokenType.IMAGE": {"tf": 1}}, "df": 2}}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.executor.context.Context.table_iter": {"tf": 1}, "sqlglot.expressions.Expression.iter_expressions": {"tf": 1}}, "df": 2, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.helper.is_iterable": {"tf": 1}}, "df": 1}}}}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.Identifier": {"tf": 1}, "sqlglot.expressions.Identifier.output_name": {"tf": 1}, "sqlglot.expressions.to_identifier": {"tf": 1}, "sqlglot.generator.Generator.identifier_sql": {"tf": 1}, "sqlglot.tokens.TokenType.IDENTIFIER": {"tf": 1}, "sqlglot.tokens.Token.identifier": {"tf": 1}}, "df": 6}}}, "y": {"docs": {"sqlglot.generator.Generator.no_identify": {"tf": 1}, "sqlglot.helper.should_identify": {"tf": 1}}, "df": 2}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.optimizer.lower_identities": {"tf": 1}, "sqlglot.optimizer.lower_identities.lower_identities": {"tf": 1.4142135623730951}}, "df": 2}}}}}}}}}, "r": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.IRLIKE": {"tf": 1}}, "df": 1}}}}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dataframe.sql.DataFrame.alias": {"tf": 1}, "sqlglot.dataframe.sql.Column.alias": {"tf": 1}, "sqlglot.expressions.Expression.alias": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_ALIAS": {"tf": 1}, "sqlglot.expressions.Alias": {"tf": 1}, "sqlglot.expressions.Alias.output_name": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1}, "sqlglot.generator.Generator.alias_sql": {"tf": 1}, "sqlglot.tokens.TokenType.ALIAS": {"tf": 1}}, "df": 9, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.Aliases": {"tf": 1}, "sqlglot.generator.Generator.aliases_sql": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.replace_aliases": {"tf": 1}}, "df": 3}}}}}, "l": {"docs": {"sqlglot.expressions.Expression.find_all": {"tf": 1}, "sqlglot.expressions.All": {"tf": 1}, "sqlglot.generator.Generator.all_sql": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.all_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1}, "sqlglot.tokens.TokenType.ALL": {"tf": 1}}, "df": 6}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.tokens.TokenType.ALTER": {"tf": 1}}, "df": 1, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.AlterColumn": {"tf": 1}, "sqlglot.generator.Generator.altercolumn_sql": {"tf": 1}}, "df": 2}}}}}}, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.AlterTable": {"tf": 1}, "sqlglot.generator.Generator.altertable_sql": {"tf": 1}}, "df": 2}}}}}}}}, "g": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.AlgorithmProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}, "w": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.optimizer.simplify.always_true": {"tf": 1}, "sqlglot.tokens.TokenType.ALWAYS": {"tf": 1}}, "df": 2}}}}}, "g": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.dataframe.sql.DataFrame.agg": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.agg": {"tf": 1}}, "df": 2, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.executor.python.PythonExecutor.aggregate": {"tf": 1}, "sqlglot.planner.Aggregate": {"tf": 1}}, "df": 2}}}}}}, "f": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot.expressions.AggFunc": {"tf": 1}}, "df": 1}}}}}}, "v": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.dataframe.sql.GroupedData.avg": {"tf": 1}, "sqlglot.expressions.Avg": {"tf": 1}}, "df": 2}}, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dataframe.sql.Column.invoke_anonymous_function": {"tf": 1}, "sqlglot.expressions.Anonymous": {"tf": 1}, "sqlglot.generator.Generator.anonymous_sql": {"tf": 1}}, "df": 3}}}}}}}, "y": {"docs": {"sqlglot.executor.env.null_if_any": {"tf": 1}, "sqlglot.expressions.Any": {"tf": 1}, "sqlglot.generator.Generator.any_sql": {"tf": 1}, "sqlglot.tokens.TokenType.ANY": {"tf": 1}, "sqlglot.tokens.TokenType.ILIKE_ANY": {"tf": 1}, "sqlglot.tokens.TokenType.LIKE_ANY": {"tf": 1}}, "df": 6, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.AnyValue": {"tf": 1}}, "df": 1}}}}}}, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.Expression.find_ancestor": {"tf": 1}}, "df": 1}}}}}}, "d": {"docs": {"sqlglot.expressions.Condition.and_": {"tf": 1}, "sqlglot.expressions.And": {"tf": 1}, "sqlglot.expressions.and_": {"tf": 1}, "sqlglot.generator.Generator.and_sql": {"tf": 1}, "sqlglot.optimizer.simplify.absorb_and_eliminate": {"tf": 1}, "sqlglot.tokens.TokenType.AND": {"tf": 1}}, "df": 6}, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.annotate_types": {"tf": 1}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1.4142135623730951}, "sqlglot.optimizer.annotate_types.TypeAnnotator": {"tf": 1}, "sqlglot.optimizer.annotate_types.TypeAnnotator.__init__": {"tf": 1}, "sqlglot.optimizer.annotate_types.TypeAnnotator.annotate": {"tf": 1.4142135623730951}}, "df": 5}}}}}}, "t": {"docs": {}, "df": 0, "i": {"docs": {"sqlglot.tokens.TokenType.ANTI": {"tf": 1}}, "df": 1}}}, "s": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot.dataframe.sql.Column.asc": {"tf": 1}, "sqlglot.dataframe.sql.Column.asc_nulls_first": {"tf": 1}, "sqlglot.dataframe.sql.Column.asc_nulls_last": {"tf": 1}, "sqlglot.tokens.TokenType.ASC": {"tf": 1}}, "df": 4}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.Expression.assert_is": {"tf": 1}}, "df": 1}}}}, "o": {"docs": {}, "df": 0, "f": {"docs": {"sqlglot.tokens.TokenType.ASOF": {"tf": 1}}, "df": 1}}}, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator.array_sql": {"tf": 1}, "sqlglot.dialects.dialect.inline_array_sql": {"tf": 1}, "sqlglot.expressions.DataType.Type.ARRAY": {"tf": 1}, "sqlglot.expressions.Array": {"tf": 1}, "sqlglot.tokens.TokenType.ARRAY": {"tf": 1}}, "df": 5, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.dialects.hive.Hive.Generator.arrayagg_sql": {"tf": 1}, "sqlglot.expressions.ArrayAgg": {"tf": 1}}, "df": 2}}, "l": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.expressions.ArrayAll": {"tf": 1}}, "df": 1}}, "n": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.ArrayAny": {"tf": 1}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.ArrayOverlaps": {"tf": 1}}, "df": 1}}}}}}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.ArrayConcat": {"tf": 1}}, "df": 1}}}, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.ArrayContains": {"tf": 1}}, "df": 1}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.ArrayContained": {"tf": 1}}, "df": 1}}}}}}}}}, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.ArrayFilter": {"tf": 1}}, "df": 1}}}}}}, "j": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.ArrayJoin": {"tf": 1}}, "df": 1}}}}, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.ArraySize": {"tf": 1}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.ArraySort": {"tf": 1}}, "df": 1}}}, "u": {"docs": {}, "df": 0, "m": {"docs": {"sqlglot.expressions.ArraySum": {"tf": 1}}, "df": 1}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.expressions.ArrayUnionAgg": {"tf": 1}}, "df": 1}}}}}}}}}}, "o": {"docs": {}, "df": 0, "w": {"docs": {"sqlglot.dialects.dialect.arrow_json_extract_sql": {"tf": 1}, "sqlglot.dialects.dialect.arrow_json_extract_scalar_sql": {"tf": 1}, "sqlglot.tokens.TokenType.ARROW": {"tf": 1}, "sqlglot.tokens.TokenType.HASH_ARROW": {"tf": 1}, "sqlglot.tokens.TokenType.DHASH_ARROW": {"tf": 1}, "sqlglot.tokens.TokenType.LR_ARROW": {"tf": 1}}, "df": 6}}}, "g": {"docs": {"sqlglot.expressions.Func.from_arg_list": {"tf": 1}}, "df": 1, "s": {"docs": {"sqlglot.generator.Generator.format_args": {"tf": 1}, "sqlglot.schema.Schema.supported_table_args": {"tf": 1}}, "df": 2}}}, "p": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "x": {"docs": {"sqlglot.dialects.dialect.approx_count_distinct_sql": {"tf": 1}}, "df": 1, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.ApproxDistinct": {"tf": 1}}, "df": 1}}}}}}}}, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.ApproxQuantile": {"tf": 1}}, "df": 1}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.executor.table.Table.append": {"tf": 1}, "sqlglot.expressions.Expression.append": {"tf": 1}}, "df": 2}}}, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.helper.apply_index_offset": {"tf": 1}, "sqlglot.tokens.TokenType.APPLY": {"tf": 1}}, "df": 2}}}}, "d": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.executor.context.Context.add_columns": {"tf": 1}, "sqlglot.executor.table.Table.add_columns": {"tf": 1}, "sqlglot.expressions.Add": {"tf": 1}, "sqlglot.generator.Generator.add_sql": {"tf": 1}, "sqlglot.optimizer.canonicalize.add_text_to_concat": {"tf": 1}, "sqlglot.optimizer.scope.Scope.add_source": {"tf": 1}, "sqlglot.planner.Step.add_dependency": {"tf": 1}, "sqlglot.schema.Schema.add_table": {"tf": 1}, "sqlglot.schema.MappingSchema.add_table": {"tf": 1}}, "df": 9, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.AddConstraint": {"tf": 1}, "sqlglot.generator.Generator.addconstraint_sql": {"tf": 1}}, "df": 2}}}}}}}}}}}}, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {"sqlglot.tokens.TokenType.AUTO_INCREMENT": {"tf": 1}}, "df": 1, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.AutoIncrementColumnConstraint": {"tf": 1}, "sqlglot.generator.Generator.autoincrementcolumnconstraint_sql": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}}}, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.AutoIncrementProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.helper.AutoName": {"tf": 1}}, "df": 1}}}}}}}, "f": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "j": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.AfterJournalProperty": {"tf": 1}, "sqlglot.generator.Generator.afterjournalproperty_sql": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}}}}}}, "t": {"docs": {"sqlglot.tokens.TokenType.LT_AT": {"tf": 1}, "sqlglot.tokens.TokenType.AT_GT": {"tf": 1}, "sqlglot.tokens.TokenType.AT_TIME_ZONE": {"tf": 1}}, "df": 3, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.AtTimeZone": {"tf": 1}, "sqlglot.generator.Generator.attimezone_sql": {"tf": 1}}, "df": 2}}}}}}}}}, "b": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.Abs": {"tf": 1}}, "df": 1, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "b": {"docs": {"sqlglot.optimizer.simplify.absorb_and_eliminate": {"tf": 1}}, "df": 1}}}, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.schema.AbstractMappingSchema": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema.__init__": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema.table_parts": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema.find": {"tf": 1}}, "df": 4}}}}}}}}}}}}}}}}}}}}, "m": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.tokens.TokenType.AMP": {"tf": 1}}, "df": 1}}, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.tokens.TokenType.NO_ACTION": {"tf": 1}}, "df": 1}}}}}}, "w": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.DataFrame.where": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Select.where": {"tf": 1}, "sqlglot.expressions.Where": {"tf": 1}, "sqlglot.generator.Generator.where_sql": {"tf": 1}, "sqlglot.optimizer.simplify.remove_where_true": {"tf": 1}, "sqlglot.tokens.TokenType.WHERE": {"tf": 1}}, "df": 7}}, "n": {"docs": {"sqlglot.dataframe.sql.Column.when": {"tf": 1}, "sqlglot.expressions.When": {"tf": 1}, "sqlglot.generator.Generator.when_sql": {"tf": 1}, "sqlglot.tokens.TokenType.WHEN": {"tf": 1}}, "df": 4}}, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.helper.while_changing": {"tf": 1}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1}, "sqlglot.dialects.dialect.parse_date_delta_with_interval": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator.with_properties": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.with_properties": {"tf": 1}, "sqlglot.dialects.tsql.generate_date_delta_with_unit_sql": {"tf": 1}, "sqlglot.expressions.With": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_WITH": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1}, "sqlglot.generator.Generator.with_sql": {"tf": 1}, "sqlglot.generator.Generator.with_properties": {"tf": 1}, "sqlglot.tokens.TokenType.WITH": {"tf": 1}, "sqlglot.tokens.TokenType.WITH_TIME_ZONE": {"tf": 1}, "sqlglot.tokens.TokenType.WITH_LOCAL_TIME_ZONE": {"tf": 1}}, "df": 13, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dataframe.sql.DataFrame.withColumn": {"tf": 1}}, "df": 1, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.dataframe.sql.DataFrame.withColumnRenamed": {"tf": 1}}, "df": 1}}}}}}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.tokens.TokenType.WITHIN_GROUP": {"tf": 1}}, "df": 1, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.expressions.WithinGroup": {"tf": 1}, "sqlglot.generator.Generator.withingroup_sql": {"tf": 1}}, "df": 2}}}}}}}, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.WithDataProperty": {"tf": 1}, "sqlglot.generator.Generator.withdataproperty_sql": {"tf": 1}}, "df": 2}}}}}}}}}}}}, "j": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.WithJournalTableProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.WITHOUT_TIME_ZONE": {"tf": 1}}, "df": 1}}}}}, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {"sqlglot.dataframe.sql.Window": {"tf": 1}, "sqlglot.dataframe.sql.Window.partitionBy": {"tf": 1}, "sqlglot.dataframe.sql.Window.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.Window.rowsBetween": {"tf": 1}, "sqlglot.dataframe.sql.Window.rangeBetween": {"tf": 1}, "sqlglot.expressions.Select.window": {"tf": 1}, "sqlglot.expressions.Window": {"tf": 1}, "sqlglot.generator.Generator.window_sql": {"tf": 1}, "sqlglot.generator.Generator.window_spec_sql": {"tf": 1}, "sqlglot.tokens.TokenType.WINDOW": {"tf": 1}}, "df": 10, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot.dataframe.sql.WindowSpec": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.__init__": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.copy": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.sql": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.partitionBy": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.rowsBetween": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.rangeBetween": {"tf": 1}, "sqlglot.expressions.WindowSpec": {"tf": 1}}, "df": 9}}}}}}}}, "d": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.generator.Generator.text_width": {"tf": 1}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.errors.ErrorLevel.WARN": {"tf": 1}}, "df": 1}}, "l": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.expressions.Expression.walk": {"tf": 1}, "sqlglot.lineage.Node.walk": {"tf": 1}, "sqlglot.optimizer.scope.Scope.walk": {"tf": 1}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1}}, "df": 4}}}, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.expressions.Week": {"tf": 1}}, "df": 1, "o": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.WeekOfYear": {"tf": 1}}, "df": 1}}}}}}}}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.generator.Generator.wrap": {"tf": 1}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.helper.split_num_words": {"tf": 1}}, "df": 1}}}}}, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dataframe.sql.DataFrame.filter": {"tf": 1}, "sqlglot.executor.context.Context.filter": {"tf": 1}, "sqlglot.executor.env.filter_nulls": {"tf": 1}, "sqlglot.expressions.Filter": {"tf": 1}, "sqlglot.generator.Generator.filter_sql": {"tf": 1}, "sqlglot.tokens.TokenType.FILTER": {"tf": 1}}, "df": 6}}}, "l": {"docs": {"sqlglot.dataframe.sql.DataFrameNaFunctions.fill": {"tf": 1}}, "df": 1, "n": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}}, "df": 1}}}, "e": {"docs": {"sqlglot.helper.open_file": {"tf": 1}}, "df": 1, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.FileFormatProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe.sql.Column.asc_nulls_first": {"tf": 1}, "sqlglot.dataframe.sql.Column.desc_nulls_first": {"tf": 1}, "sqlglot.helper.first": {"tf": 1}, "sqlglot.tokens.TokenType.FIRST": {"tf": 1}, "sqlglot.tokens.TokenType.NULLS_FIRST": {"tf": 1}}, "df": 5}}}, "n": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.Expression.find": {"tf": 1}, "sqlglot.expressions.Expression.find_all": {"tf": 1}, "sqlglot.expressions.Expression.find_ancestor": {"tf": 1}, "sqlglot.helper.find_new_name": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema.find": {"tf": 1}}, "df": 7}, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.expressions.Final": {"tf": 1}, "sqlglot.tokens.TokenType.FINAL": {"tf": 1}}, "df": 2}}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot.dialects.dialect.rename_func": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator.normalize_func": {"tf": 1}, "sqlglot.expressions.Func": {"tf": 1}, "sqlglot.expressions.Func.from_arg_list": {"tf": 1}, "sqlglot.expressions.Func.sql_names": {"tf": 1}, "sqlglot.expressions.Func.sql_name": {"tf": 1}, "sqlglot.expressions.Func.default_parser_mappings": {"tf": 1}, "sqlglot.expressions.func": {"tf": 1}, "sqlglot.generator.Generator.normalize_func": {"tf": 1}, "sqlglot.generator.Generator.func": {"tf": 1}}, "df": 10, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dataframe.sql.Column.invoke_anonymous_function": {"tf": 1}, "sqlglot.generator.Generator.function_fallback_sql": {"tf": 1}, "sqlglot.tokens.TokenType.FUNCTION": {"tf": 1}}, "df": 3}}}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.tokens.TokenType.FULL": {"tf": 1}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.optimizer.pushdown_predicates.nodes_for_predicate": {"tf": 1}, "sqlglot.tokens.TokenType.FOR": {"tf": 1}}, "df": 2, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.dialect.Dialect.format_time": {"tf": 1}, "sqlglot.dialects.dialect.format_time_lambda": {"tf": 1}, "sqlglot.generator.Generator.format_args": {"tf": 1}, "sqlglot.generator.Generator.format_time": {"tf": 1}, "sqlglot.time.format_time": {"tf": 1}, "sqlglot.tokens.TokenType.FORMAT": {"tf": 1}}, "df": 6}}}, "e": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.tokens.TokenType.FOREIGN_KEY": {"tf": 1}}, "df": 1, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.ForeignKey": {"tf": 1}, "sqlglot.generator.Generator.foreignkey_sql": {"tf": 1}}, "df": 2}}}}}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.tokens.TokenType.FOLLOWING": {"tf": 1}}, "df": 1}}}}}}}}, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.Expression.flatten": {"tf": 1}, "sqlglot.helper.flatten": {"tf": 1}, "sqlglot.optimizer.simplify.flatten": {"tf": 1}, "sqlglot.schema.flatten_schema": {"tf": 1}}, "df": 4}}}}}, "o": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.DataType.Type.FLOAT": {"tf": 1}, "sqlglot.tokens.TokenType.FLOAT": {"tf": 1}}, "df": 2}}, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.Floor": {"tf": 1}}, "df": 1}}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {"sqlglot.expressions.From": {"tf": 1}, "sqlglot.expressions.Properties.from_dict": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.Func.from_arg_list": {"tf": 1}, "sqlglot.expressions.from_": {"tf": 1}, "sqlglot.generator.Generator.from_sql": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.Join.from_joins": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}, "sqlglot.schema.MappingSchema.from_mapping_schema": {"tf": 1}, "sqlglot.tokens.TokenType.DISTINCT_FROM": {"tf": 1}, "sqlglot.tokens.TokenType.FROM": {"tf": 1}, "sqlglot.transforms.remove_target_from_merge": {"tf": 1}}, "df": 14}}, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.FreespaceProperty": {"tf": 1}, "sqlglot.generator.Generator.freespaceproperty_sql": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.expressions.Fetch": {"tf": 1}, "sqlglot.generator.Generator.fetch_sql": {"tf": 1}, "sqlglot.tokens.TokenType.FETCH": {"tf": 1}}, "df": 3}}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.generator.Generator.function_fallback_sql": {"tf": 1}}, "df": 1, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.FallbackProperty": {"tf": 1}, "sqlglot.generator.Generator.fallbackproperty_sql": {"tf": 1}}, "df": 2}}}}}}}}}}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.false": {"tf": 1}, "sqlglot.optimizer.simplify.is_false": {"tf": 1}, "sqlglot.tokens.TokenType.FALSE": {"tf": 1}}, "df": 3}}}, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {"sqlglot.tokens.TokenType.FARROW": {"tf": 1}}, "df": 1}}}}}}, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.expressions.Group": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.generator.Generator.group_sql": {"tf": 1}, "sqlglot.tokens.TokenType.GROUP_BY": {"tf": 1}, "sqlglot.tokens.TokenType.WITHIN_GROUP": {"tf": 1}, "sqlglot.transforms.unalias_group": {"tf": 1}}, "df": 6, "b": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dataframe.sql.DataFrame.groupBy": {"tf": 1}}, "df": 1}}, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.dataframe.sql.GroupedData": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.__init__": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.agg": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.count": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.mean": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.avg": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.max": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.min": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.sum": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.pivot": {"tf": 1}}, "df": 10}}}}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.sqlite.SQLite.Generator.groupconcat_sql": {"tf": 1}, "sqlglot.expressions.GroupConcat": {"tf": 1}}, "df": 2}}}}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.GroupUniqArray": {"tf": 1}}, "df": 1}}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.tokens.TokenType.GROUPING_SETS": {"tf": 1}}, "df": 1}}}}}}, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.dialect.max_or_greatest": {"tf": 1}, "sqlglot.expressions.Greatest": {"tf": 1}}, "df": 2}}}}}}}, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.array_sql": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.transaction_sql": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.commit_sql": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.rollback_sql": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.in_unnest_op": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.except_op": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.intersect_op": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator.cte_sql": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator.normalize_func": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator.tablesample_sql": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator.arrayagg_sql": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator.with_properties": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator.show_sql": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator.offset_sql": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator.column_sql": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator.xmltable_sql": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator.interval_sql": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator.transaction_sql": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.with_properties": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.renametable_sql": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.except_op": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.intersect_op": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.settag_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.describe_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.generatedasidentitycolumnconstraint_sql": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator.cast_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.cast_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.datediff_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.groupconcat_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.least_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.transaction_sql": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.partitionedbyproperty_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.update_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.mod_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.rangen_sql": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator.offset_sql": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator.systemtime_sql": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator.returnsproperty_sql": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.generator": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.__init__": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.generate": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.unsupported": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.sep": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.seg": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.pad_comment": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.maybe_comment": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.wrap": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.no_identify": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.normalize_func": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.indent": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.uncache_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.cache_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.characterset_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.column_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.columnposition_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.columndef_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.columnconstraint_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.autoincrementcolumnconstraint_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.compresscolumnconstraint_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.generatedasidentitycolumnconstraint_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.notnullcolumnconstraint_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.primarykeycolumnconstraint_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.uniquecolumnconstraint_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.create_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.describe_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.prepend_ctes": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.with_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.cte_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.tablealias_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.bitstring_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.hexstring_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.bytestring_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.datatype_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.directory_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.delete_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.drop_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.except_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.except_op": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.fetch_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.filter_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.hint_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.index_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.identifier_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.inputoutputformat_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.national_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.partition_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.properties_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.root_properties": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.properties": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.with_properties": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.locate_properties": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.property_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.likeproperty_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.fallbackproperty_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.journalproperty_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.freespaceproperty_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.afterjournalproperty_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.checksumproperty_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.mergeblockratioproperty_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.datablocksizeproperty_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.blockcompressionproperty_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.isolatedloadingproperty_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.lockingproperty_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.withdataproperty_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.insert_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.intersect_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.intersect_op": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.introducer_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.pseudotype_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.onconflict_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.returning_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.rowformatdelimitedproperty_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.table_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.tablesample_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.pivot_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.tuple_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.update_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.values_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.var_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.into_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.from_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.group_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.having_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.join_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.lambda_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.lateral_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.limit_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.offset_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.setitem_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.set_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.pragma_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.lock_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.literal_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.loaddata_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.null_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.boolean_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.order_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.cluster_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.distribute_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.sort_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.ordered_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.matchrecognize_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.query_modifiers": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.select_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.schema_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.star_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.structkwarg_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.parameter_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.sessionparameter_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.placeholder_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.subquery_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.qualify_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.union_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.union_op": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.unnest_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.where_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.window_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.partition_by_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.window_spec_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.withingroup_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.between_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.bracket_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.all_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.any_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.exists_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.case_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.constraint_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.extract_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.trim_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.concat_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.check_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.foreignkey_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.primarykey_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.unique_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.if_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.matchagainst_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.jsonkeyvalue_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.jsonobject_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.in_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.in_unnest_op": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.interval_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.return_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.reference_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.anonymous_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.paren_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.neg_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.not_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.alias_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.aliases_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.attimezone_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.add_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.and_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.connector_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.bitwiseand_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.bitwiseleftshift_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.bitwisenot_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.bitwiseor_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.bitwiserightshift_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.bitwisexor_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.cast_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.currentdate_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.collate_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.command_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.comment_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.transaction_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.commit_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.rollback_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.altercolumn_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.renametable_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.altertable_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.droppartition_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.addconstraint_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.distinct_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.ignorenulls_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.respectnulls_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.intdiv_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.dpipe_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.div_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.overlaps_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.distance_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.dot_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.eq_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.escape_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.glob_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.gt_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.gte_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.ilike_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.ilikeany_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.is_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.like_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.likeany_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.similarto_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.lt_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.lte_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.mod_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.mul_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.neq_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.nullsafeeq_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.nullsafeneq_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.or_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.slice_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.sub_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.trycast_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.use_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.binary": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.function_fallback_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.func": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.format_args": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.text_width": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.format_time": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.expressions": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.op_expressions": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.naked_property": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.set_operation": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.tag_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.token_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.userdefinedfunction_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.joinhint_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.kwarg_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.when_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.merge_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.tochar_sql": {"tf": 1.4142135623730951}}, "df": 291}}, "e": {"docs": {"sqlglot.dialects.dialect.Dialect.generate": {"tf": 1}, "sqlglot.dialects.tsql.generate_date_delta_with_unit_sql": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.generate": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.generate_tuple": {"tf": 1}, "sqlglot.generator.Generator.generate": {"tf": 1}}, "df": 5, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.snowflake.Snowflake.Generator.generatedasidentitycolumnconstraint_sql": {"tf": 1}, "sqlglot.expressions.GeneratedAsIdentityColumnConstraint": {"tf": 1}, "sqlglot.generator.Generator.generatedasidentitycolumnconstraint_sql": {"tf": 1}}, "df": 3}}}}}}}}}}}}}}}}}}}}}}}}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.GenerateSeries": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "t": {"docs": {"sqlglot.dialects.dialect.Dialect.get_or_raise": {"tf": 1}, "sqlglot.helper.seq_get": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.get_table": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.get_source_columns": {"tf": 1}, "sqlglot.schema.Schema.get_column_type": {"tf": 1}, "sqlglot.schema.MappingSchema.get_column_type": {"tf": 1}}, "df": 6}, "o": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.DataType.Type.GEOGRAPHY": {"tf": 1}, "sqlglot.tokens.TokenType.GEOGRAPHY": {"tf": 1}}, "df": 2}}}}}}, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.DataType.Type.GEOMETRY": {"tf": 1}, "sqlglot.tokens.TokenType.GEOMETRY": {"tf": 1}}, "df": 2}}}}}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "b": {"docs": {"sqlglot.expressions.Glob": {"tf": 1}, "sqlglot.generator.Generator.glob_sql": {"tf": 1}, "sqlglot.tokens.TokenType.GLOB": {"tf": 1}}, "df": 3, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.tokens.TokenType.GLOBAL": {"tf": 1}}, "df": 1}}}}}, "t": {"docs": {"sqlglot.expressions.GT": {"tf": 1}, "sqlglot.generator.Generator.gt_sql": {"tf": 1}, "sqlglot.tokens.TokenType.GT": {"tf": 1}, "sqlglot.tokens.TokenType.AT_GT": {"tf": 1}}, "df": 4, "e": {"docs": {"sqlglot.expressions.GTE": {"tf": 1}, "sqlglot.generator.Generator.gte_sql": {"tf": 1}, "sqlglot.tokens.TokenType.GTE": {"tf": 1}}, "df": 3}}}, "j": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dataframe.sql.DataFrame.join": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.join": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.nested_loop_join": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.hash_join": {"tf": 1}, "sqlglot.expressions.Join": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Join.using": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1}, "sqlglot.generator.Generator.join_sql": {"tf": 1}, "sqlglot.optimizer.eliminate_joins.join_condition": {"tf": 1}, "sqlglot.optimizer.scope.Scope.join_hints": {"tf": 1}, "sqlglot.planner.Join": {"tf": 1}, "sqlglot.planner.Join.from_joins": {"tf": 1}, "sqlglot.tokens.TokenType.JOIN": {"tf": 1}, "sqlglot.tokens.TokenType.JOIN_MARKER": {"tf": 1}}, "df": 15, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.JoinHint": {"tf": 1}, "sqlglot.generator.Generator.joinhint_sql": {"tf": 1}}, "df": 2}}}}, "s": {"docs": {"sqlglot.optimizer.eliminate_joins": {"tf": 1}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 1.4142135623730951}, "sqlglot.optimizer.eliminate_joins.join_condition": {"tf": 1}, "sqlglot.optimizer.optimize_joins": {"tf": 1}, "sqlglot.optimizer.optimize_joins.optimize_joins": {"tf": 1.4142135623730951}, "sqlglot.optimizer.optimize_joins.reorder_joins": {"tf": 1.4142135623730951}, "sqlglot.optimizer.optimize_joins.normalize": {"tf": 1}, "sqlglot.optimizer.optimize_joins.other_table_names": {"tf": 1}, "sqlglot.planner.Join.from_joins": {"tf": 1}}, "df": 9}}}, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.JournalProperty": {"tf": 1}, "sqlglot.generator.Generator.journalproperty_sql": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}, "s": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dialects.dialect.arrow_json_extract_sql": {"tf": 1}, "sqlglot.dialects.dialect.arrow_json_extract_scalar_sql": {"tf": 1}, "sqlglot.expressions.DataType.Type.JSON": {"tf": 1}, "sqlglot.tokens.TokenType.JSON": {"tf": 1}}, "df": 4, "b": {"docs": {"sqlglot.expressions.DataType.Type.JSONB": {"tf": 1}, "sqlglot.tokens.TokenType.JSONB": {"tf": 1}}, "df": 2, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.JSONBContains": {"tf": 1}}, "df": 1}}}}}}}}, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.JSONBExtract": {"tf": 1}}, "df": 1, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.JSONBExtractScalar": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.JSONKeyValue": {"tf": 1}, "sqlglot.generator.Generator.jsonkeyvalue_sql": {"tf": 1}}, "df": 2}}}}}}}}, "o": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "j": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.JSONObject": {"tf": 1}, "sqlglot.generator.Generator.jsonobject_sql": {"tf": 1}}, "df": 2}}}}}}, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.JSONExtract": {"tf": 1}}, "df": 1, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.JSONExtractScalar": {"tf": 1}}, "df": 1}}}}}}}}}}}}}, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.JSONFormat": {"tf": 1}}, "df": 1}}}}}}}}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dataframe.sql.DataFrame.union": {"tf": 1}, "sqlglot.expressions.Unionable.union": {"tf": 1}, "sqlglot.expressions.Union": {"tf": 1}, "sqlglot.expressions.Union.limit": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 1}, "sqlglot.expressions.Union.is_star": {"tf": 1}, "sqlglot.expressions.union": {"tf": 1}, "sqlglot.generator.Generator.union_sql": {"tf": 1}, "sqlglot.generator.Generator.union_op": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.UNION": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_union": {"tf": 1}, "sqlglot.tokens.TokenType.UNION": {"tf": 1}}, "df": 12, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.dataframe.sql.DataFrame.unionAll": {"tf": 1}}, "df": 1}}, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Unionable": {"tf": 1}, "sqlglot.expressions.Unionable.union": {"tf": 1}, "sqlglot.expressions.Unionable.intersect": {"tf": 1}, "sqlglot.expressions.Unionable.except_": {"tf": 1}}, "df": 4}}}}, "b": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.DataFrame.unionByName": {"tf": 1}}, "df": 1}}}}}}}}, "t": {"docs": {"sqlglot.dialects.tsql.generate_date_delta_with_unit_sql": {"tf": 1}}, "df": 1}, "q": {"docs": {"sqlglot.optimizer.simplify.uniq_sort": {"tf": 1}}, "df": 1, "u": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Unique": {"tf": 1}, "sqlglot.generator.Generator.unique_sql": {"tf": 1}, "sqlglot.tokens.TokenType.UNIQUE": {"tf": 1}}, "df": 3, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.UniqueColumnConstraint": {"tf": 1}, "sqlglot.generator.Generator.uniquecolumnconstraint_sql": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}}}, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.DataType.Type.UNIQUEIDENTIFIER": {"tf": 1}, "sqlglot.tokens.TokenType.UNIQUEIDENTIFIER": {"tf": 1}}, "df": 2}}}}}}}}}}}}}, "x": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.UnixToStr": {"tf": 1}}, "df": 1}}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.UnixToTime": {"tf": 1}}, "df": 1, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.UnixToTimeStr": {"tf": 1}}, "df": 1}}}}}}}}}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dataframe.sql.Column.unary_op": {"tf": 1}, "sqlglot.expressions.Unary": {"tf": 1}}, "df": 2}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.Expression.unalias": {"tf": 1}, "sqlglot.transforms.unalias_group": {"tf": 1}}, "df": 2}}}}}, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator.in_unnest_op": {"tf": 1}, "sqlglot.expressions.Expression.unnest": {"tf": 1}, "sqlglot.expressions.Expression.unnest_operands": {"tf": 1}, "sqlglot.expressions.Unnest": {"tf": 1}, "sqlglot.expressions.Subquery.unnest": {"tf": 1}, "sqlglot.generator.Generator.unnest_sql": {"tf": 1}, "sqlglot.generator.Generator.in_unnest_op": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 1.4142135623730951}, "sqlglot.optimizer.unnest_subqueries.unnest": {"tf": 1.4142135623730951}, "sqlglot.optimizer.unnest_subqueries.decorrelate": {"tf": 1}, "sqlglot.tokens.TokenType.UNNEST": {"tf": 1}, "sqlglot.transforms.unnest_to_explode": {"tf": 1}, "sqlglot.transforms.explode_to_unnest": {"tf": 1}}, "df": 14}}}}, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.Properties.Location.UNSUPPORTED": {"tf": 1}, "sqlglot.generator.Generator.unsupported": {"tf": 1}}, "df": 2, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.errors.UnsupportedError": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Uncache": {"tf": 1}, "sqlglot.generator.Generator.uncache_sql": {"tf": 1}, "sqlglot.tokens.TokenType.UNCACHE": {"tf": 1}}, "df": 3}}}}}, "k": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.DataType.Type.UNKNOWN": {"tf": 1}}, "df": 1}}}}}, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "x": {"docs": {"sqlglot.expressions.Unhex": {"tf": 1}}, "df": 1}}}, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.optimizer.scope.Scope.unqualified_columns": {"tf": 1}}, "df": 1}}}}}}}}}, "b": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.tokens.TokenType.UNBOUNDED": {"tf": 1}}, "df": 1}}}}}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.tokens.TokenType.UNLOGGED": {"tf": 1}}, "df": 1}}}}}}, "p": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.UNPIVOT": {"tf": 1}}, "df": 1}}}}}}, "p": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.teradata.Teradata.Generator.update_sql": {"tf": 1}, "sqlglot.diff.Update": {"tf": 1}, "sqlglot.diff.Update.__init__": {"tf": 1}, "sqlglot.expressions.Update": {"tf": 1}, "sqlglot.expressions.update": {"tf": 1}, "sqlglot.generator.Generator.update_sql": {"tf": 1}, "sqlglot.tokens.TokenType.UPDATE": {"tf": 1}}, "df": 7}}}}, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.Upper": {"tf": 1}}, "df": 1, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.UppercaseColumnConstraint": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}}}}}, "d": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "f": {"docs": {"sqlglot.expressions.UDTF": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.UDTF": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_udtf": {"tf": 1}}, "df": 3, "s": {"docs": {"sqlglot.optimizer.scope.Scope.udtfs": {"tf": 1}}, "df": 1}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Use": {"tf": 1}, "sqlglot.generator.Generator.use_sql": {"tf": 1}, "sqlglot.tokens.TokenType.USE": {"tf": 1}}, "df": 3, "r": {"docs": {"sqlglot.tokens.TokenType.CURRENT_USER": {"tf": 1}}, "df": 1, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.UserDefinedFunction": {"tf": 1}, "sqlglot.generator.Generator.userdefinedfunction_sql": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.expressions.Join.using": {"tf": 1}, "sqlglot.tokens.TokenType.USING": {"tf": 1}}, "df": 2}}}, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.DataType.Type.USMALLINT": {"tf": 1}, "sqlglot.tokens.TokenType.USMALLINT": {"tf": 1}}, "df": 2}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.DataType.Type.UINT": {"tf": 1}, "sqlglot.tokens.TokenType.UINT": {"tf": 1}}, "df": 2}}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.DataType.Type.UTINYINT": {"tf": 1}, "sqlglot.tokens.TokenType.UTINYINT": {"tf": 1}}, "df": 2}}}}}}}, "b": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.DataType.Type.UBIGINT": {"tf": 1}, "sqlglot.tokens.TokenType.UBIGINT": {"tf": 1}}, "df": 2}}}}}}, "u": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.DataType.Type.UUID": {"tf": 1}, "sqlglot.tokens.TokenType.UUID": {"tf": 1}}, "df": 2}}}}, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator.except_op": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.except_op": {"tf": 1}, "sqlglot.expressions.Unionable.except_": {"tf": 1}, "sqlglot.expressions.Except": {"tf": 1}, "sqlglot.expressions.except_": {"tf": 1}, "sqlglot.generator.Generator.except_sql": {"tf": 1}, "sqlglot.generator.Generator.except_op": {"tf": 1}, "sqlglot.tokens.TokenType.EXCEPT": {"tf": 1}}, "df": 8, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.dataframe.sql.DataFrame.exceptAll": {"tf": 1}}, "df": 1}}}}}}}, "p": {"docs": {"sqlglot.expressions.Exp": {"tf": 1}}, "df": 1, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dataframe.sql.Column.invoke_expression_over_column": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.expressions.Expression.__init__": {"tf": 1}, "sqlglot.expressions.Expression.this": {"tf": 1}, "sqlglot.expressions.Expression.expression": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.expressions": {"tf": 1}, "sqlglot.expressions.Expression.text": {"tf": 1}, "sqlglot.expressions.Expression.is_string": {"tf": 1}, "sqlglot.expressions.Expression.is_number": {"tf": 1}, "sqlglot.expressions.Expression.is_int": {"tf": 1}, "sqlglot.expressions.Expression.is_star": {"tf": 1}, "sqlglot.expressions.Expression.alias": {"tf": 1}, "sqlglot.expressions.Expression.output_name": {"tf": 1}, "sqlglot.expressions.Expression.copy": {"tf": 1}, "sqlglot.expressions.Expression.append": {"tf": 1}, "sqlglot.expressions.Expression.set": {"tf": 1}, "sqlglot.expressions.Expression.depth": {"tf": 1}, "sqlglot.expressions.Expression.iter_expressions": {"tf": 1}, "sqlglot.expressions.Expression.find": {"tf": 1}, "sqlglot.expressions.Expression.find_all": {"tf": 1}, "sqlglot.expressions.Expression.find_ancestor": {"tf": 1}, "sqlglot.expressions.Expression.parent_select": {"tf": 1}, "sqlglot.expressions.Expression.same_parent": {"tf": 1}, "sqlglot.expressions.Expression.root": {"tf": 1}, "sqlglot.expressions.Expression.walk": {"tf": 1}, "sqlglot.expressions.Expression.dfs": {"tf": 1}, "sqlglot.expressions.Expression.bfs": {"tf": 1}, "sqlglot.expressions.Expression.unnest": {"tf": 1}, "sqlglot.expressions.Expression.unalias": {"tf": 1}, "sqlglot.expressions.Expression.unnest_operands": {"tf": 1}, "sqlglot.expressions.Expression.flatten": {"tf": 1}, "sqlglot.expressions.Expression.sql": {"tf": 1}, "sqlglot.expressions.Expression.transform": {"tf": 1}, "sqlglot.expressions.Expression.replace": {"tf": 1}, "sqlglot.expressions.Expression.pop": {"tf": 1}, "sqlglot.expressions.Expression.assert_is": {"tf": 1}, "sqlglot.expressions.Expression.error_messages": {"tf": 1}, "sqlglot.expressions.Expression.dump": {"tf": 1}, "sqlglot.expressions.Expression.load": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_EXPRESSION": {"tf": 1}, "sqlglot.parser.Parser.expression": {"tf": 1}, "sqlglot.parser.Parser.validate_expression": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}}, "df": 45, "s": {"docs": {"sqlglot.expressions": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.expressions.Expression.__init__": {"tf": 1}, "sqlglot.expressions.Expression.this": {"tf": 1}, "sqlglot.expressions.Expression.expression": {"tf": 1}, "sqlglot.expressions.Expression.expressions": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.text": {"tf": 1}, "sqlglot.expressions.Expression.is_string": {"tf": 1}, "sqlglot.expressions.Expression.is_number": {"tf": 1}, "sqlglot.expressions.Expression.is_int": {"tf": 1}, "sqlglot.expressions.Expression.is_star": {"tf": 1}, "sqlglot.expressions.Expression.alias": {"tf": 1}, "sqlglot.expressions.Expression.output_name": {"tf": 1}, "sqlglot.expressions.Expression.copy": {"tf": 1}, "sqlglot.expressions.Expression.append": {"tf": 1}, "sqlglot.expressions.Expression.set": {"tf": 1}, "sqlglot.expressions.Expression.depth": {"tf": 1}, "sqlglot.expressions.Expression.iter_expressions": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.find": {"tf": 1}, "sqlglot.expressions.Expression.find_all": {"tf": 1}, "sqlglot.expressions.Expression.find_ancestor": {"tf": 1}, "sqlglot.expressions.Expression.parent_select": {"tf": 1}, "sqlglot.expressions.Expression.same_parent": {"tf": 1}, "sqlglot.expressions.Expression.root": {"tf": 1}, "sqlglot.expressions.Expression.walk": {"tf": 1}, "sqlglot.expressions.Expression.dfs": {"tf": 1}, "sqlglot.expressions.Expression.bfs": {"tf": 1}, "sqlglot.expressions.Expression.unnest": {"tf": 1}, "sqlglot.expressions.Expression.unalias": {"tf": 1}, "sqlglot.expressions.Expression.unnest_operands": {"tf": 1}, "sqlglot.expressions.Expression.flatten": {"tf": 1}, "sqlglot.expressions.Expression.sql": {"tf": 1}, "sqlglot.expressions.Expression.transform": {"tf": 1}, "sqlglot.expressions.Expression.replace": {"tf": 1}, "sqlglot.expressions.Expression.pop": {"tf": 1}, "sqlglot.expressions.Expression.assert_is": {"tf": 1}, "sqlglot.expressions.Expression.error_messages": {"tf": 1}, "sqlglot.expressions.Expression.dump": {"tf": 1}, "sqlglot.expressions.Expression.load": {"tf": 1}, "sqlglot.expressions.Condition": {"tf": 1}, "sqlglot.expressions.Condition.and_": {"tf": 1}, "sqlglot.expressions.Condition.or_": {"tf": 1}, "sqlglot.expressions.Condition.not_": {"tf": 1}, "sqlglot.expressions.Predicate": {"tf": 1}, "sqlglot.expressions.DerivedTable": {"tf": 1}, "sqlglot.expressions.Unionable": {"tf": 1}, "sqlglot.expressions.Unionable.union": {"tf": 1}, "sqlglot.expressions.Unionable.intersect": {"tf": 1}, "sqlglot.expressions.Unionable.except_": {"tf": 1}, "sqlglot.expressions.UDTF": {"tf": 1}, "sqlglot.expressions.Cache": {"tf": 1}, "sqlglot.expressions.Uncache": {"tf": 1}, "sqlglot.expressions.Create": {"tf": 1}, "sqlglot.expressions.Describe": {"tf": 1}, "sqlglot.expressions.Pragma": {"tf": 1}, "sqlglot.expressions.Set": {"tf": 1}, "sqlglot.expressions.SetItem": {"tf": 1}, "sqlglot.expressions.Show": {"tf": 1}, "sqlglot.expressions.UserDefinedFunction": {"tf": 1}, "sqlglot.expressions.CharacterSet": {"tf": 1}, "sqlglot.expressions.With": {"tf": 1}, "sqlglot.expressions.WithinGroup": {"tf": 1}, "sqlglot.expressions.CTE": {"tf": 1}, "sqlglot.expressions.TableAlias": {"tf": 1}, "sqlglot.expressions.BitString": {"tf": 1}, "sqlglot.expressions.HexString": {"tf": 1}, "sqlglot.expressions.ByteString": {"tf": 1}, "sqlglot.expressions.Column": {"tf": 1}, "sqlglot.expressions.Column.output_name": {"tf": 1}, "sqlglot.expressions.Column.parts": {"tf": 1}, "sqlglot.expressions.Column.to_dot": {"tf": 1}, "sqlglot.expressions.ColumnPosition": {"tf": 1}, "sqlglot.expressions.ColumnDef": {"tf": 1}, "sqlglot.expressions.AlterColumn": {"tf": 1}, "sqlglot.expressions.RenameTable": {"tf": 1}, "sqlglot.expressions.SetTag": {"tf": 1}, "sqlglot.expressions.Comment": {"tf": 1}, "sqlglot.expressions.ColumnConstraint": {"tf": 1}, "sqlglot.expressions.ColumnConstraintKind": {"tf": 1}, "sqlglot.expressions.AutoIncrementColumnConstraint": {"tf": 1}, "sqlglot.expressions.CaseSpecificColumnConstraint": {"tf": 1}, "sqlglot.expressions.CharacterSetColumnConstraint": {"tf": 1}, "sqlglot.expressions.CheckColumnConstraint": {"tf": 1}, "sqlglot.expressions.CollateColumnConstraint": {"tf": 1}, "sqlglot.expressions.CommentColumnConstraint": {"tf": 1}, "sqlglot.expressions.CompressColumnConstraint": {"tf": 1}, "sqlglot.expressions.DateFormatColumnConstraint": {"tf": 1}, "sqlglot.expressions.DefaultColumnConstraint": {"tf": 1}, "sqlglot.expressions.EncodeColumnConstraint": {"tf": 1}, "sqlglot.expressions.GeneratedAsIdentityColumnConstraint": {"tf": 1}, "sqlglot.expressions.InlineLengthColumnConstraint": {"tf": 1}, "sqlglot.expressions.NotNullColumnConstraint": {"tf": 1}, "sqlglot.expressions.OnUpdateColumnConstraint": {"tf": 1}, "sqlglot.expressions.PrimaryKeyColumnConstraint": {"tf": 1}, "sqlglot.expressions.TitleColumnConstraint": {"tf": 1}, "sqlglot.expressions.UniqueColumnConstraint": {"tf": 1}, "sqlglot.expressions.UppercaseColumnConstraint": {"tf": 1}, "sqlglot.expressions.PathColumnConstraint": {"tf": 1}, "sqlglot.expressions.Constraint": {"tf": 1}, "sqlglot.expressions.Delete": {"tf": 1}, "sqlglot.expressions.Delete.delete": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Delete.returning": {"tf": 1}, "sqlglot.expressions.Drop": {"tf": 1}, "sqlglot.expressions.Filter": {"tf": 1}, "sqlglot.expressions.Check": {"tf": 1}, "sqlglot.expressions.Directory": {"tf": 1}, "sqlglot.expressions.ForeignKey": {"tf": 1}, "sqlglot.expressions.PrimaryKey": {"tf": 1}, "sqlglot.expressions.Unique": {"tf": 1}, "sqlglot.expressions.Into": {"tf": 1}, "sqlglot.expressions.From": {"tf": 1}, "sqlglot.expressions.Having": {"tf": 1}, "sqlglot.expressions.Hint": {"tf": 1}, "sqlglot.expressions.JoinHint": {"tf": 1}, "sqlglot.expressions.Identifier": {"tf": 1}, "sqlglot.expressions.Identifier.output_name": {"tf": 1}, "sqlglot.expressions.Index": {"tf": 1}, "sqlglot.expressions.Insert": {"tf": 1}, "sqlglot.expressions.OnConflict": {"tf": 1}, "sqlglot.expressions.Returning": {"tf": 1}, "sqlglot.expressions.Introducer": {"tf": 1}, "sqlglot.expressions.National": {"tf": 1}, "sqlglot.expressions.LoadData": {"tf": 1}, "sqlglot.expressions.Partition": {"tf": 1}, "sqlglot.expressions.Fetch": {"tf": 1}, "sqlglot.expressions.Group": {"tf": 1}, "sqlglot.expressions.Lambda": {"tf": 1}, "sqlglot.expressions.Limit": {"tf": 1}, "sqlglot.expressions.Literal": {"tf": 1}, "sqlglot.expressions.Literal.number": {"tf": 1}, "sqlglot.expressions.Literal.string": {"tf": 1}, "sqlglot.expressions.Literal.output_name": {"tf": 1}, "sqlglot.expressions.Join": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Join.using": {"tf": 1}, "sqlglot.expressions.Lateral": {"tf": 1}, "sqlglot.expressions.MatchRecognize": {"tf": 1}, "sqlglot.expressions.Final": {"tf": 1}, "sqlglot.expressions.Offset": {"tf": 1}, "sqlglot.expressions.Order": {"tf": 1}, "sqlglot.expressions.Cluster": {"tf": 1}, "sqlglot.expressions.Distribute": {"tf": 1}, "sqlglot.expressions.Sort": {"tf": 1}, "sqlglot.expressions.Ordered": {"tf": 1}, "sqlglot.expressions.Property": {"tf": 1}, "sqlglot.expressions.AfterJournalProperty": {"tf": 1}, "sqlglot.expressions.AlgorithmProperty": {"tf": 1}, "sqlglot.expressions.AutoIncrementProperty": {"tf": 1}, "sqlglot.expressions.BlockCompressionProperty": {"tf": 1}, "sqlglot.expressions.CharacterSetProperty": {"tf": 1}, "sqlglot.expressions.ChecksumProperty": {"tf": 1}, "sqlglot.expressions.CollateProperty": {"tf": 1}, "sqlglot.expressions.DataBlocksizeProperty": {"tf": 1}, "sqlglot.expressions.DefinerProperty": {"tf": 1}, "sqlglot.expressions.DistKeyProperty": {"tf": 1}, "sqlglot.expressions.DistStyleProperty": {"tf": 1}, "sqlglot.expressions.EngineProperty": {"tf": 1}, "sqlglot.expressions.ExecuteAsProperty": {"tf": 1}, "sqlglot.expressions.ExternalProperty": {"tf": 1}, "sqlglot.expressions.FallbackProperty": {"tf": 1}, "sqlglot.expressions.FileFormatProperty": {"tf": 1}, "sqlglot.expressions.FreespaceProperty": {"tf": 1}, "sqlglot.expressions.InputOutputFormat": {"tf": 1}, "sqlglot.expressions.IsolatedLoadingProperty": {"tf": 1}, "sqlglot.expressions.JournalProperty": {"tf": 1}, "sqlglot.expressions.LanguageProperty": {"tf": 1}, "sqlglot.expressions.LikeProperty": {"tf": 1}, "sqlglot.expressions.LocationProperty": {"tf": 1}, "sqlglot.expressions.LockingProperty": {"tf": 1}, "sqlglot.expressions.LogProperty": {"tf": 1}, "sqlglot.expressions.MaterializedProperty": {"tf": 1}, "sqlglot.expressions.MergeBlockRatioProperty": {"tf": 1}, "sqlglot.expressions.NoPrimaryIndexProperty": {"tf": 1}, "sqlglot.expressions.OnCommitProperty": {"tf": 1}, "sqlglot.expressions.PartitionedByProperty": {"tf": 1}, "sqlglot.expressions.ReturnsProperty": {"tf": 1}, "sqlglot.expressions.RowFormatProperty": {"tf": 1}, "sqlglot.expressions.RowFormatDelimitedProperty": {"tf": 1}, "sqlglot.expressions.RowFormatSerdeProperty": {"tf": 1}, "sqlglot.expressions.SchemaCommentProperty": {"tf": 1}, "sqlglot.expressions.SerdeProperties": {"tf": 1}, "sqlglot.expressions.SetProperty": {"tf": 1}, "sqlglot.expressions.SortKeyProperty": {"tf": 1}, "sqlglot.expressions.SqlSecurityProperty": {"tf": 1}, "sqlglot.expressions.StabilityProperty": {"tf": 1}, "sqlglot.expressions.TableFormatProperty": {"tf": 1}, "sqlglot.expressions.TemporaryProperty": {"tf": 1}, "sqlglot.expressions.TransientProperty": {"tf": 1}, "sqlglot.expressions.VolatileProperty": {"tf": 1}, "sqlglot.expressions.WithDataProperty": {"tf": 1}, "sqlglot.expressions.WithJournalTableProperty": {"tf": 1}, "sqlglot.expressions.Properties": {"tf": 1}, "sqlglot.expressions.Properties.Location": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_CREATE": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_NAME": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_SCHEMA": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_WITH": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_ALIAS": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_EXPRESSION": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_INDEX": {"tf": 1}, "sqlglot.expressions.Properties.Location.UNSUPPORTED": {"tf": 1}, "sqlglot.expressions.Properties.from_dict": {"tf": 1}, "sqlglot.expressions.Qualify": {"tf": 1}, "sqlglot.expressions.Return": {"tf": 1}, "sqlglot.expressions.Reference": {"tf": 1}, "sqlglot.expressions.Tuple": {"tf": 1}, "sqlglot.expressions.Subqueryable": {"tf": 1}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 1}, "sqlglot.expressions.Subqueryable.limit": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1}, "sqlglot.expressions.Table": {"tf": 1}, "sqlglot.expressions.SystemTime": {"tf": 1}, "sqlglot.expressions.Union": {"tf": 1}, "sqlglot.expressions.Union.limit": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 1}, "sqlglot.expressions.Union.is_star": {"tf": 1}, "sqlglot.expressions.Except": {"tf": 1}, "sqlglot.expressions.Intersect": {"tf": 1}, "sqlglot.expressions.Unnest": {"tf": 1}, "sqlglot.expressions.Update": {"tf": 1}, "sqlglot.expressions.Values": {"tf": 1}, "sqlglot.expressions.Var": {"tf": 1}, "sqlglot.expressions.Schema": {"tf": 1}, "sqlglot.expressions.Lock": {"tf": 1}, "sqlglot.expressions.Select": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.expressions.Select.limit": {"tf": 1}, "sqlglot.expressions.Select.offset": {"tf": 1}, "sqlglot.expressions.Select.select": {"tf": 1}, "sqlglot.expressions.Select.lateral": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1}, "sqlglot.expressions.Select.where": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1}, "sqlglot.expressions.Select.window": {"tf": 1}, "sqlglot.expressions.Select.qualify": {"tf": 1}, "sqlglot.expressions.Select.distinct": {"tf": 1}, "sqlglot.expressions.Select.ctas": {"tf": 1}, "sqlglot.expressions.Select.lock": {"tf": 1}, "sqlglot.expressions.Select.is_star": {"tf": 1}, "sqlglot.expressions.Subquery": {"tf": 1}, "sqlglot.expressions.Subquery.unnest": {"tf": 1}, "sqlglot.expressions.Subquery.is_star": {"tf": 1}, "sqlglot.expressions.Subquery.output_name": {"tf": 1}, "sqlglot.expressions.TableSample": {"tf": 1}, "sqlglot.expressions.Tag": {"tf": 1}, "sqlglot.expressions.Pivot": {"tf": 1}, "sqlglot.expressions.Window": {"tf": 1}, "sqlglot.expressions.WindowSpec": {"tf": 1}, "sqlglot.expressions.Where": {"tf": 1}, "sqlglot.expressions.Star": {"tf": 1}, "sqlglot.expressions.Star.output_name": {"tf": 1}, "sqlglot.expressions.Parameter": {"tf": 1}, "sqlglot.expressions.SessionParameter": {"tf": 1}, "sqlglot.expressions.Placeholder": {"tf": 1}, "sqlglot.expressions.Null": {"tf": 1}, "sqlglot.expressions.Boolean": {"tf": 1}, "sqlglot.expressions.DataType": {"tf": 1}, "sqlglot.expressions.DataType.Type": {"tf": 1}, "sqlglot.expressions.DataType.Type.CHAR": {"tf": 1}, "sqlglot.expressions.DataType.Type.NCHAR": {"tf": 1}, "sqlglot.expressions.DataType.Type.VARCHAR": {"tf": 1}, "sqlglot.expressions.DataType.Type.NVARCHAR": {"tf": 1}, "sqlglot.expressions.DataType.Type.TEXT": {"tf": 1}, "sqlglot.expressions.DataType.Type.MEDIUMTEXT": {"tf": 1}, "sqlglot.expressions.DataType.Type.LONGTEXT": {"tf": 1}, "sqlglot.expressions.DataType.Type.MEDIUMBLOB": {"tf": 1}, "sqlglot.expressions.DataType.Type.LONGBLOB": {"tf": 1}, "sqlglot.expressions.DataType.Type.BINARY": {"tf": 1}, "sqlglot.expressions.DataType.Type.VARBINARY": {"tf": 1}, "sqlglot.expressions.DataType.Type.INT": {"tf": 1}, "sqlglot.expressions.DataType.Type.UINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.TINYINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.UTINYINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.SMALLINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.USMALLINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.BIGINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.UBIGINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.FLOAT": {"tf": 1}, "sqlglot.expressions.DataType.Type.DOUBLE": {"tf": 1}, "sqlglot.expressions.DataType.Type.DECIMAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.BIGDECIMAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.BIT": {"tf": 1}, "sqlglot.expressions.DataType.Type.BOOLEAN": {"tf": 1}, "sqlglot.expressions.DataType.Type.JSON": {"tf": 1}, "sqlglot.expressions.DataType.Type.JSONB": {"tf": 1}, "sqlglot.expressions.DataType.Type.INTERVAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.TIME": {"tf": 1}, "sqlglot.expressions.DataType.Type.TIMESTAMP": {"tf": 1}, "sqlglot.expressions.DataType.Type.TIMESTAMPTZ": {"tf": 1}, "sqlglot.expressions.DataType.Type.TIMESTAMPLTZ": {"tf": 1}, "sqlglot.expressions.DataType.Type.DATE": {"tf": 1}, "sqlglot.expressions.DataType.Type.DATETIME": {"tf": 1}, "sqlglot.expressions.DataType.Type.ARRAY": {"tf": 1}, "sqlglot.expressions.DataType.Type.MAP": {"tf": 1}, "sqlglot.expressions.DataType.Type.UUID": {"tf": 1}, "sqlglot.expressions.DataType.Type.GEOGRAPHY": {"tf": 1}, "sqlglot.expressions.DataType.Type.GEOMETRY": {"tf": 1}, "sqlglot.expressions.DataType.Type.STRUCT": {"tf": 1}, "sqlglot.expressions.DataType.Type.NULLABLE": {"tf": 1}, "sqlglot.expressions.DataType.Type.HLLSKETCH": {"tf": 1}, "sqlglot.expressions.DataType.Type.HSTORE": {"tf": 1}, "sqlglot.expressions.DataType.Type.SUPER": {"tf": 1}, "sqlglot.expressions.DataType.Type.SERIAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.SMALLSERIAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.BIGSERIAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.XML": {"tf": 1}, "sqlglot.expressions.DataType.Type.UNIQUEIDENTIFIER": {"tf": 1}, "sqlglot.expressions.DataType.Type.MONEY": {"tf": 1}, "sqlglot.expressions.DataType.Type.SMALLMONEY": {"tf": 1}, "sqlglot.expressions.DataType.Type.ROWVERSION": {"tf": 1}, "sqlglot.expressions.DataType.Type.IMAGE": {"tf": 1}, "sqlglot.expressions.DataType.Type.VARIANT": {"tf": 1}, "sqlglot.expressions.DataType.Type.OBJECT": {"tf": 1}, "sqlglot.expressions.DataType.Type.INET": {"tf": 1}, "sqlglot.expressions.DataType.Type.NULL": {"tf": 1}, "sqlglot.expressions.DataType.Type.UNKNOWN": {"tf": 1}, "sqlglot.expressions.DataType.build": {"tf": 1}, "sqlglot.expressions.DataType.is_type": {"tf": 1}, "sqlglot.expressions.PseudoType": {"tf": 1}, "sqlglot.expressions.StructKwarg": {"tf": 1}, "sqlglot.expressions.SubqueryPredicate": {"tf": 1}, "sqlglot.expressions.All": {"tf": 1}, "sqlglot.expressions.Any": {"tf": 1}, "sqlglot.expressions.Exists": {"tf": 1}, "sqlglot.expressions.Command": {"tf": 1}, "sqlglot.expressions.Transaction": {"tf": 1}, "sqlglot.expressions.Commit": {"tf": 1}, "sqlglot.expressions.Rollback": {"tf": 1}, "sqlglot.expressions.AlterTable": {"tf": 1}, "sqlglot.expressions.AddConstraint": {"tf": 1}, "sqlglot.expressions.DropPartition": {"tf": 1}, "sqlglot.expressions.Binary": {"tf": 1}, "sqlglot.expressions.Add": {"tf": 1}, "sqlglot.expressions.Connector": {"tf": 1}, "sqlglot.expressions.And": {"tf": 1}, "sqlglot.expressions.Or": {"tf": 1}, "sqlglot.expressions.BitwiseAnd": {"tf": 1}, "sqlglot.expressions.BitwiseLeftShift": {"tf": 1}, "sqlglot.expressions.BitwiseOr": {"tf": 1}, "sqlglot.expressions.BitwiseRightShift": {"tf": 1}, "sqlglot.expressions.BitwiseXor": {"tf": 1}, "sqlglot.expressions.Div": {"tf": 1}, "sqlglot.expressions.Overlaps": {"tf": 1}, "sqlglot.expressions.Dot": {"tf": 1}, "sqlglot.expressions.Dot.build": {"tf": 1}, "sqlglot.expressions.DPipe": {"tf": 1}, "sqlglot.expressions.EQ": {"tf": 1}, "sqlglot.expressions.NullSafeEQ": {"tf": 1}, "sqlglot.expressions.NullSafeNEQ": {"tf": 1}, "sqlglot.expressions.Distance": {"tf": 1}, "sqlglot.expressions.Escape": {"tf": 1}, "sqlglot.expressions.Glob": {"tf": 1}, "sqlglot.expressions.GT": {"tf": 1}, "sqlglot.expressions.GTE": {"tf": 1}, "sqlglot.expressions.ILike": {"tf": 1}, "sqlglot.expressions.ILikeAny": {"tf": 1}, "sqlglot.expressions.IntDiv": {"tf": 1}, "sqlglot.expressions.Is": {"tf": 1}, "sqlglot.expressions.Kwarg": {"tf": 1}, "sqlglot.expressions.Like": {"tf": 1}, "sqlglot.expressions.LikeAny": {"tf": 1}, "sqlglot.expressions.LT": {"tf": 1}, "sqlglot.expressions.LTE": {"tf": 1}, "sqlglot.expressions.Mod": {"tf": 1}, "sqlglot.expressions.Mul": {"tf": 1}, "sqlglot.expressions.NEQ": {"tf": 1}, "sqlglot.expressions.SimilarTo": {"tf": 1}, "sqlglot.expressions.Slice": {"tf": 1}, "sqlglot.expressions.Sub": {"tf": 1}, "sqlglot.expressions.ArrayOverlaps": {"tf": 1}, "sqlglot.expressions.Unary": {"tf": 1}, "sqlglot.expressions.BitwiseNot": {"tf": 1}, "sqlglot.expressions.Not": {"tf": 1}, "sqlglot.expressions.Paren": {"tf": 1}, "sqlglot.expressions.Neg": {"tf": 1}, "sqlglot.expressions.Alias": {"tf": 1}, "sqlglot.expressions.Alias.output_name": {"tf": 1}, "sqlglot.expressions.Aliases": {"tf": 1}, "sqlglot.expressions.AtTimeZone": {"tf": 1}, "sqlglot.expressions.Between": {"tf": 1}, "sqlglot.expressions.Bracket": {"tf": 1}, "sqlglot.expressions.Distinct": {"tf": 1}, "sqlglot.expressions.In": {"tf": 1}, "sqlglot.expressions.TimeUnit": {"tf": 1}, "sqlglot.expressions.TimeUnit.__init__": {"tf": 1}, "sqlglot.expressions.Interval": {"tf": 1}, "sqlglot.expressions.IgnoreNulls": {"tf": 1}, "sqlglot.expressions.RespectNulls": {"tf": 1}, "sqlglot.expressions.Func": {"tf": 1}, "sqlglot.expressions.Func.from_arg_list": {"tf": 1}, "sqlglot.expressions.Func.sql_names": {"tf": 1}, "sqlglot.expressions.Func.sql_name": {"tf": 1}, "sqlglot.expressions.Func.default_parser_mappings": {"tf": 1}, "sqlglot.expressions.AggFunc": {"tf": 1}, "sqlglot.expressions.Abs": {"tf": 1}, "sqlglot.expressions.Anonymous": {"tf": 1}, "sqlglot.expressions.Hll": {"tf": 1}, "sqlglot.expressions.ApproxDistinct": {"tf": 1}, "sqlglot.expressions.Array": {"tf": 1}, "sqlglot.expressions.ToChar": {"tf": 1}, "sqlglot.expressions.GenerateSeries": {"tf": 1}, "sqlglot.expressions.ArrayAgg": {"tf": 1}, "sqlglot.expressions.ArrayAll": {"tf": 1}, "sqlglot.expressions.ArrayAny": {"tf": 1}, "sqlglot.expressions.ArrayConcat": {"tf": 1}, "sqlglot.expressions.ArrayContains": {"tf": 1}, "sqlglot.expressions.ArrayContained": {"tf": 1}, "sqlglot.expressions.ArrayFilter": {"tf": 1}, "sqlglot.expressions.ArrayJoin": {"tf": 1}, "sqlglot.expressions.ArraySize": {"tf": 1}, "sqlglot.expressions.ArraySort": {"tf": 1}, "sqlglot.expressions.ArraySum": {"tf": 1}, "sqlglot.expressions.ArrayUnionAgg": {"tf": 1}, "sqlglot.expressions.Avg": {"tf": 1}, "sqlglot.expressions.AnyValue": {"tf": 1}, "sqlglot.expressions.Case": {"tf": 1}, "sqlglot.expressions.Cast": {"tf": 1}, "sqlglot.expressions.Cast.output_name": {"tf": 1}, "sqlglot.expressions.Cast.is_type": {"tf": 1}, "sqlglot.expressions.Collate": {"tf": 1}, "sqlglot.expressions.TryCast": {"tf": 1}, "sqlglot.expressions.Ceil": {"tf": 1}, "sqlglot.expressions.Coalesce": {"tf": 1}, "sqlglot.expressions.Concat": {"tf": 1}, "sqlglot.expressions.ConcatWs": {"tf": 1}, "sqlglot.expressions.Count": {"tf": 1}, "sqlglot.expressions.CountIf": {"tf": 1}, "sqlglot.expressions.CurrentDate": {"tf": 1}, "sqlglot.expressions.CurrentDatetime": {"tf": 1}, "sqlglot.expressions.CurrentTime": {"tf": 1}, "sqlglot.expressions.CurrentTimestamp": {"tf": 1}, "sqlglot.expressions.CurrentUser": {"tf": 1}, "sqlglot.expressions.DateAdd": {"tf": 1}, "sqlglot.expressions.DateSub": {"tf": 1}, "sqlglot.expressions.DateDiff": {"tf": 1}, "sqlglot.expressions.DateTrunc": {"tf": 1}, "sqlglot.expressions.DatetimeAdd": {"tf": 1}, "sqlglot.expressions.DatetimeSub": {"tf": 1}, "sqlglot.expressions.DatetimeDiff": {"tf": 1}, "sqlglot.expressions.DatetimeTrunc": {"tf": 1}, "sqlglot.expressions.DayOfWeek": {"tf": 1}, "sqlglot.expressions.DayOfMonth": {"tf": 1}, "sqlglot.expressions.DayOfYear": {"tf": 1}, "sqlglot.expressions.WeekOfYear": {"tf": 1}, "sqlglot.expressions.LastDateOfMonth": {"tf": 1}, "sqlglot.expressions.Extract": {"tf": 1}, "sqlglot.expressions.TimestampAdd": {"tf": 1}, "sqlglot.expressions.TimestampSub": {"tf": 1}, "sqlglot.expressions.TimestampDiff": {"tf": 1}, "sqlglot.expressions.TimestampTrunc": {"tf": 1}, "sqlglot.expressions.TimeAdd": {"tf": 1}, "sqlglot.expressions.TimeSub": {"tf": 1}, "sqlglot.expressions.TimeDiff": {"tf": 1}, "sqlglot.expressions.TimeTrunc": {"tf": 1}, "sqlglot.expressions.DateFromParts": {"tf": 1}, "sqlglot.expressions.DateStrToDate": {"tf": 1}, "sqlglot.expressions.DateToDateStr": {"tf": 1}, "sqlglot.expressions.DateToDi": {"tf": 1}, "sqlglot.expressions.Day": {"tf": 1}, "sqlglot.expressions.Decode": {"tf": 1}, "sqlglot.expressions.DiToDate": {"tf": 1}, "sqlglot.expressions.Encode": {"tf": 1}, "sqlglot.expressions.Exp": {"tf": 1}, "sqlglot.expressions.Explode": {"tf": 1}, "sqlglot.expressions.ExponentialTimeDecayedAvg": {"tf": 1}, "sqlglot.expressions.Floor": {"tf": 1}, "sqlglot.expressions.Greatest": {"tf": 1}, "sqlglot.expressions.GroupConcat": {"tf": 1}, "sqlglot.expressions.GroupUniqArray": {"tf": 1}, "sqlglot.expressions.Hex": {"tf": 1}, "sqlglot.expressions.Histogram": {"tf": 1}, "sqlglot.expressions.If": {"tf": 1}, "sqlglot.expressions.IfNull": {"tf": 1}, "sqlglot.expressions.Initcap": {"tf": 1}, "sqlglot.expressions.JSONKeyValue": {"tf": 1}, "sqlglot.expressions.JSONObject": {"tf": 1}, "sqlglot.expressions.JSONBContains": {"tf": 1}, "sqlglot.expressions.JSONExtract": {"tf": 1}, "sqlglot.expressions.JSONExtractScalar": {"tf": 1}, "sqlglot.expressions.JSONBExtract": {"tf": 1}, "sqlglot.expressions.JSONBExtractScalar": {"tf": 1}, "sqlglot.expressions.JSONFormat": {"tf": 1}, "sqlglot.expressions.Least": {"tf": 1}, "sqlglot.expressions.Length": {"tf": 1}, "sqlglot.expressions.Levenshtein": {"tf": 1}, "sqlglot.expressions.Ln": {"tf": 1}, "sqlglot.expressions.Log": {"tf": 1}, "sqlglot.expressions.Log2": {"tf": 1}, "sqlglot.expressions.Log10": {"tf": 1}, "sqlglot.expressions.LogicalOr": {"tf": 1}, "sqlglot.expressions.LogicalAnd": {"tf": 1}, "sqlglot.expressions.Lower": {"tf": 1}, "sqlglot.expressions.Map": {"tf": 1}, "sqlglot.expressions.StarMap": {"tf": 1}, "sqlglot.expressions.VarMap": {"tf": 1}, "sqlglot.expressions.MatchAgainst": {"tf": 1}, "sqlglot.expressions.Max": {"tf": 1}, "sqlglot.expressions.MD5": {"tf": 1}, "sqlglot.expressions.Min": {"tf": 1}, "sqlglot.expressions.Month": {"tf": 1}, "sqlglot.expressions.Nvl2": {"tf": 1}, "sqlglot.expressions.Posexplode": {"tf": 1}, "sqlglot.expressions.Pow": {"tf": 1}, "sqlglot.expressions.PercentileCont": {"tf": 1}, "sqlglot.expressions.PercentileDisc": {"tf": 1}, "sqlglot.expressions.Quantile": {"tf": 1}, "sqlglot.expressions.Quantiles": {"tf": 1}, "sqlglot.expressions.QuantileIf": {"tf": 1}, "sqlglot.expressions.ApproxQuantile": {"tf": 1}, "sqlglot.expressions.RangeN": {"tf": 1}, "sqlglot.expressions.ReadCSV": {"tf": 1}, "sqlglot.expressions.Reduce": {"tf": 1}, "sqlglot.expressions.RegexpExtract": {"tf": 1}, "sqlglot.expressions.RegexpLike": {"tf": 1}, "sqlglot.expressions.RegexpILike": {"tf": 1}, "sqlglot.expressions.RegexpSplit": {"tf": 1}, "sqlglot.expressions.Repeat": {"tf": 1}, "sqlglot.expressions.Round": {"tf": 1}, "sqlglot.expressions.RowNumber": {"tf": 1}, "sqlglot.expressions.SafeDivide": {"tf": 1}, "sqlglot.expressions.SetAgg": {"tf": 1}, "sqlglot.expressions.SHA": {"tf": 1}, "sqlglot.expressions.SHA2": {"tf": 1}, "sqlglot.expressions.SortArray": {"tf": 1}, "sqlglot.expressions.Split": {"tf": 1}, "sqlglot.expressions.Substring": {"tf": 1}, "sqlglot.expressions.StrPosition": {"tf": 1}, "sqlglot.expressions.StrToDate": {"tf": 1}, "sqlglot.expressions.StrToTime": {"tf": 1}, "sqlglot.expressions.StrToUnix": {"tf": 1}, "sqlglot.expressions.NumberToStr": {"tf": 1}, "sqlglot.expressions.Struct": {"tf": 1}, "sqlglot.expressions.StructExtract": {"tf": 1}, "sqlglot.expressions.Sum": {"tf": 1}, "sqlglot.expressions.Sqrt": {"tf": 1}, "sqlglot.expressions.Stddev": {"tf": 1}, "sqlglot.expressions.StddevPop": {"tf": 1}, "sqlglot.expressions.StddevSamp": {"tf": 1}, "sqlglot.expressions.TimeToStr": {"tf": 1}, "sqlglot.expressions.TimeToTimeStr": {"tf": 1}, "sqlglot.expressions.TimeToUnix": {"tf": 1}, "sqlglot.expressions.TimeStrToDate": {"tf": 1}, "sqlglot.expressions.TimeStrToTime": {"tf": 1}, "sqlglot.expressions.TimeStrToUnix": {"tf": 1}, "sqlglot.expressions.Trim": {"tf": 1}, "sqlglot.expressions.TsOrDsAdd": {"tf": 1}, "sqlglot.expressions.TsOrDsToDateStr": {"tf": 1}, "sqlglot.expressions.TsOrDsToDate": {"tf": 1}, "sqlglot.expressions.TsOrDiToDi": {"tf": 1}, "sqlglot.expressions.Unhex": {"tf": 1}, "sqlglot.expressions.UnixToStr": {"tf": 1}, "sqlglot.expressions.UnixToTime": {"tf": 1}, "sqlglot.expressions.UnixToTimeStr": {"tf": 1}, "sqlglot.expressions.Upper": {"tf": 1}, "sqlglot.expressions.Variance": {"tf": 1}, "sqlglot.expressions.VariancePop": {"tf": 1}, "sqlglot.expressions.Week": {"tf": 1}, "sqlglot.expressions.XMLTable": {"tf": 1}, "sqlglot.expressions.Year": {"tf": 1}, "sqlglot.expressions.Use": {"tf": 1}, "sqlglot.expressions.Merge": {"tf": 1}, "sqlglot.expressions.When": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1}, "sqlglot.expressions.union": {"tf": 1}, "sqlglot.expressions.intersect": {"tf": 1}, "sqlglot.expressions.except_": {"tf": 1}, "sqlglot.expressions.select": {"tf": 1}, "sqlglot.expressions.from_": {"tf": 1}, "sqlglot.expressions.update": {"tf": 1}, "sqlglot.expressions.delete": {"tf": 1}, "sqlglot.expressions.condition": {"tf": 1}, "sqlglot.expressions.and_": {"tf": 1}, "sqlglot.expressions.or_": {"tf": 1}, "sqlglot.expressions.not_": {"tf": 1}, "sqlglot.expressions.paren": {"tf": 1}, "sqlglot.expressions.to_identifier": {"tf": 1}, "sqlglot.expressions.to_interval": {"tf": 1}, "sqlglot.expressions.to_table": {"tf": 1}, "sqlglot.expressions.to_column": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1}, "sqlglot.expressions.subquery": {"tf": 1}, "sqlglot.expressions.column": {"tf": 1}, "sqlglot.expressions.cast": {"tf": 1}, "sqlglot.expressions.table_": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1}, "sqlglot.expressions.var": {"tf": 1}, "sqlglot.expressions.rename_table": {"tf": 1}, "sqlglot.expressions.convert": {"tf": 1}, "sqlglot.expressions.replace_children": {"tf": 1}, "sqlglot.expressions.column_table_names": {"tf": 1}, "sqlglot.expressions.table_name": {"tf": 1}, "sqlglot.expressions.replace_tables": {"tf": 1}, "sqlglot.expressions.replace_placeholders": {"tf": 1}, "sqlglot.expressions.expand": {"tf": 1}, "sqlglot.expressions.func": {"tf": 1}, "sqlglot.expressions.true": {"tf": 1}, "sqlglot.expressions.false": {"tf": 1}, "sqlglot.expressions.null": {"tf": 1}, "sqlglot.generator.Generator.expressions": {"tf": 1}, "sqlglot.generator.Generator.op_expressions": {"tf": 1}}, "df": 605}}}}}}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Explode": {"tf": 1}, "sqlglot.transforms.unnest_to_explode": {"tf": 1}, "sqlglot.transforms.explode_to_unnest": {"tf": 1}}, "df": 3}}}}, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.expressions.ExponentialTimeDecayedAvg": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.expand": {"tf": 1}, "sqlglot.optimizer.expand_laterals": {"tf": 1}, "sqlglot.optimizer.expand_laterals.expand_laterals": {"tf": 1.4142135623730951}, "sqlglot.optimizer.expand_multi_table_selects": {"tf": 1}, "sqlglot.optimizer.expand_multi_table_selects.expand_multi_table_selects": {"tf": 1.4142135623730951}}, "df": 5}}}}, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.dialect.arrow_json_extract_sql": {"tf": 1}, "sqlglot.dialects.dialect.arrow_json_extract_scalar_sql": {"tf": 1}, "sqlglot.dialects.dialect.struct_extract_sql": {"tf": 1}, "sqlglot.expressions.Extract": {"tf": 1}, "sqlglot.generator.Generator.extract_sql": {"tf": 1}, "sqlglot.optimizer.simplify.extract_date": {"tf": 1}, "sqlglot.optimizer.simplify.extract_interval": {"tf": 1}}, "df": 7}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.optimizer.scope.Scope.external_columns": {"tf": 1}}, "df": 1, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.ExternalProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.executor.execute": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.execute": {"tf": 1}, "sqlglot.tokens.TokenType.EXECUTE": {"tf": 1}}, "df": 3, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.errors.ExecuteError": {"tf": 1}}, "df": 1}}}}}, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.ExecuteAsProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.executor": {"tf": 1}, "sqlglot.executor.execute": {"tf": 1}, "sqlglot.executor.context": {"tf": 1}, "sqlglot.executor.context.Context": {"tf": 1}, "sqlglot.executor.context.Context.__init__": {"tf": 1}, "sqlglot.executor.context.Context.eval": {"tf": 1}, "sqlglot.executor.context.Context.eval_tuple": {"tf": 1}, "sqlglot.executor.context.Context.add_columns": {"tf": 1}, "sqlglot.executor.context.Context.table_iter": {"tf": 1}, "sqlglot.executor.context.Context.filter": {"tf": 1}, "sqlglot.executor.context.Context.sort": {"tf": 1}, "sqlglot.executor.context.Context.set_row": {"tf": 1}, "sqlglot.executor.context.Context.set_index": {"tf": 1}, "sqlglot.executor.context.Context.set_range": {"tf": 1}, "sqlglot.executor.env": {"tf": 1}, "sqlglot.executor.env.reverse_key": {"tf": 1}, "sqlglot.executor.env.reverse_key.__init__": {"tf": 1}, "sqlglot.executor.env.filter_nulls": {"tf": 1}, "sqlglot.executor.env.null_if_any": {"tf": 1}, "sqlglot.executor.env.str_position": {"tf": 1}, "sqlglot.executor.env.substring": {"tf": 1}, "sqlglot.executor.env.cast": {"tf": 1}, "sqlglot.executor.env.ordered": {"tf": 1}, "sqlglot.executor.env.interval": {"tf": 1}, "sqlglot.executor.python": {"tf": 1}, "sqlglot.executor.python.PythonExecutor": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.__init__": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.execute": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.generate": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.generate_tuple": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.context": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.table": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.scan": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.static": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.scan_table": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.scan_csv": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.join": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.nested_loop_join": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.hash_join": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.aggregate": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.sort": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.set_operation": {"tf": 1}, "sqlglot.executor.python.Python": {"tf": 1}, "sqlglot.executor.python.Python.Tokenizer": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.executor.table": {"tf": 1}, "sqlglot.executor.table.Table": {"tf": 1}, "sqlglot.executor.table.Table.__init__": {"tf": 1}, "sqlglot.executor.table.Table.add_columns": {"tf": 1}, "sqlglot.executor.table.Table.append": {"tf": 1}, "sqlglot.executor.table.Table.pop": {"tf": 1}, "sqlglot.executor.table.TableIter": {"tf": 1}, "sqlglot.executor.table.TableIter.__init__": {"tf": 1}, "sqlglot.executor.table.RangeReader": {"tf": 1}, "sqlglot.executor.table.RangeReader.__init__": {"tf": 1}, "sqlglot.executor.table.RowReader": {"tf": 1}, "sqlglot.executor.table.RowReader.__init__": {"tf": 1}, "sqlglot.executor.table.Tables": {"tf": 1}, "sqlglot.executor.table.ensure_tables": {"tf": 1}}, "df": 59}}}}}}, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.Exists": {"tf": 1}, "sqlglot.generator.Generator.exists_sql": {"tf": 1}, "sqlglot.tokens.TokenType.EXISTS": {"tf": 1}}, "df": 3}}}}}, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.Column.ensure_col": {"tf": 1}, "sqlglot.dataframe.sql.Column.ensure_cols": {"tf": 1}, "sqlglot.dataframe.sql.Column.ensure_literal": {"tf": 1}, "sqlglot.executor.table.ensure_tables": {"tf": 1}, "sqlglot.helper.ensure_list": {"tf": 1}, "sqlglot.helper.ensure_collection": {"tf": 1}, "sqlglot.optimizer.canonicalize.ensure_bool_predicates": {"tf": 1}, "sqlglot.schema.ensure_schema": {"tf": 1}, "sqlglot.schema.ensure_column_mapping": {"tf": 1}}, "df": 9}}}}, "d": {"docs": {"sqlglot.tokens.TokenType.BLOCK_END": {"tf": 1}, "sqlglot.tokens.TokenType.END": {"tf": 1}}, "df": 2, "s": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.dataframe.sql.Column.endswith": {"tf": 1}}, "df": 1}}}}}}, "v": {"docs": {"sqlglot.executor.env": {"tf": 1}, "sqlglot.executor.env.reverse_key": {"tf": 1}, "sqlglot.executor.env.reverse_key.__init__": {"tf": 1}, "sqlglot.executor.env.filter_nulls": {"tf": 1}, "sqlglot.executor.env.null_if_any": {"tf": 1}, "sqlglot.executor.env.str_position": {"tf": 1}, "sqlglot.executor.env.substring": {"tf": 1}, "sqlglot.executor.env.cast": {"tf": 1}, "sqlglot.executor.env.ordered": {"tf": 1}, "sqlglot.executor.env.interval": {"tf": 1}}, "df": 10}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Encode": {"tf": 1}}, "df": 1, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.EncodeColumnConstraint": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}, "g": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.EngineProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}}}, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.Expression.error_messages": {"tf": 1}, "sqlglot.parser.Parser.raise_error": {"tf": 1}}, "df": 2, "s": {"docs": {"sqlglot.errors": {"tf": 1}, "sqlglot.errors.ErrorLevel": {"tf": 1}, "sqlglot.errors.ErrorLevel.IGNORE": {"tf": 1}, "sqlglot.errors.ErrorLevel.WARN": {"tf": 1}, "sqlglot.errors.ErrorLevel.RAISE": {"tf": 1}, "sqlglot.errors.ErrorLevel.IMMEDIATE": {"tf": 1}, "sqlglot.errors.SqlglotError": {"tf": 1}, "sqlglot.errors.UnsupportedError": {"tf": 1}, "sqlglot.errors.ParseError": {"tf": 1}, "sqlglot.errors.ParseError.__init__": {"tf": 1}, "sqlglot.errors.ParseError.new": {"tf": 1}, "sqlglot.errors.TokenError": {"tf": 1}, "sqlglot.errors.OptimizeError": {"tf": 1}, "sqlglot.errors.SchemaError": {"tf": 1}, "sqlglot.errors.ExecuteError": {"tf": 1}, "sqlglot.errors.concat_messages": {"tf": 1}, "sqlglot.errors.merge_errors": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser.check_errors": {"tf": 1}}, "df": 18}, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.errors.ErrorLevel": {"tf": 1}, "sqlglot.errors.ErrorLevel.IGNORE": {"tf": 1}, "sqlglot.errors.ErrorLevel.WARN": {"tf": 1}, "sqlglot.errors.ErrorLevel.RAISE": {"tf": 1}, "sqlglot.errors.ErrorLevel.IMMEDIATE": {"tf": 1}}, "df": 5}}}}}}}}}, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.executor.context.Context.eval": {"tf": 1}, "sqlglot.executor.context.Context.eval_tuple": {"tf": 1}, "sqlglot.optimizer.simplify.eval_boolean": {"tf": 1}}, "df": 3}}}, "q": {"docs": {"sqlglot.expressions.EQ": {"tf": 1}, "sqlglot.generator.Generator.eq_sql": {"tf": 1}, "sqlglot.tokens.TokenType.EQ": {"tf": 1}, "sqlglot.tokens.TokenType.NULLSAFE_EQ": {"tf": 1}}, "df": 4}, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Escape": {"tf": 1}, "sqlglot.generator.Generator.escape_sql": {"tf": 1}, "sqlglot.tokens.TokenType.ESCAPE": {"tf": 1}}, "df": 3}}}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.eliminate_ctes": {"tf": 1}, "sqlglot.optimizer.eliminate_ctes.eliminate_ctes": {"tf": 1.4142135623730951}, "sqlglot.optimizer.eliminate_joins": {"tf": 1}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 1.4142135623730951}, "sqlglot.optimizer.eliminate_joins.join_condition": {"tf": 1}, "sqlglot.optimizer.eliminate_subqueries": {"tf": 1}, "sqlglot.optimizer.eliminate_subqueries.eliminate_subqueries": {"tf": 1.4142135623730951}, "sqlglot.optimizer.simplify.absorb_and_eliminate": {"tf": 1}, "sqlglot.transforms.eliminate_distinct_on": {"tf": 1}, "sqlglot.transforms.eliminate_qualify": {"tf": 1}}, "df": 10}}}}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.ELSE": {"tf": 1}}, "df": 1}}}}, "r": {"docs": {"sqlglot.tokens.TokenType.R_PAREN": {"tf": 1}, "sqlglot.tokens.TokenType.R_BRACKET": {"tf": 1}, "sqlglot.tokens.TokenType.R_BRACE": {"tf": 1}}, "df": 3, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.DataFrame.replace": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.replace": {"tf": 1}, "sqlglot.expressions.Expression.replace": {"tf": 1}, "sqlglot.expressions.replace_children": {"tf": 1}, "sqlglot.expressions.replace_tables": {"tf": 1}, "sqlglot.expressions.replace_placeholders": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.replace_aliases": {"tf": 1}, "sqlglot.optimizer.scope.Scope.replace": {"tf": 1}, "sqlglot.tokens.TokenType.REPLACE": {"tf": 1}}, "df": 9}}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dataframe.sql.DataFrame.repartition": {"tf": 1}}, "df": 1}}}}}}}}, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.Repeat": {"tf": 1}}, "df": 1}}}}, "d": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.dialect.Dialects.REDSHIFT": {"tf": 1}, "sqlglot.dialects.redshift": {"tf": 1}, "sqlglot.dialects.redshift.Redshift": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Tokenizer": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator.with_properties": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator.renametable_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1.4142135623730951}}, "df": 10}}}}}, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Reduce": {"tf": 1}}, "df": 1}}, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.optimizer.canonicalize.remove_redundant_casts": {"tf": 1}}, "df": 1}}}}}}}, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.rename_func": {"tf": 1}, "sqlglot.expressions.rename_table": {"tf": 1}, "sqlglot.optimizer.scope.Scope.rename_source": {"tf": 1}}, "df": 3, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.redshift.Redshift.Generator.renametable_sql": {"tf": 1}, "sqlglot.expressions.RenameTable": {"tf": 1}, "sqlglot.generator.Generator.renametable_sql": {"tf": 1}}, "df": 3}}}}}}}}}, "c": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.no_recursive_cte_sql": {"tf": 1}, "sqlglot.tokens.TokenType.RECURSIVE": {"tf": 1}}, "df": 2}}}}}}, "o": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.MATCH_RECOGNIZE": {"tf": 1}}, "df": 1}}}}}}}, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.Return": {"tf": 1}, "sqlglot.generator.Generator.return_sql": {"tf": 1}}, "df": 2, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dialects.tsql.TSQL.Generator.returnsproperty_sql": {"tf": 1}, "sqlglot.expressions.ReturnsProperty": {"tf": 1}}, "df": 2}}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.expressions.Delete.returning": {"tf": 1}, "sqlglot.expressions.Returning": {"tf": 1}, "sqlglot.generator.Generator.returning_sql": {"tf": 1}, "sqlglot.tokens.TokenType.RETURNING": {"tf": 1}}, "df": 4}}}}}}}, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff.Remove": {"tf": 1}, "sqlglot.diff.Remove.__init__": {"tf": 1}, "sqlglot.optimizer.canonicalize.remove_redundant_casts": {"tf": 1}, "sqlglot.optimizer.scope.Scope.remove_source": {"tf": 1}, "sqlglot.optimizer.simplify.remove_compliments": {"tf": 1}, "sqlglot.optimizer.simplify.remove_where_true": {"tf": 1}, "sqlglot.transforms.remove_precision_parameterized_types": {"tf": 1}, "sqlglot.transforms.remove_target_from_merge": {"tf": 1}}, "df": 8}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.executor.env.reverse_key": {"tf": 1}, "sqlglot.executor.env.reverse_key.__init__": {"tf": 1}}, "df": 2}}}}}, "f": {"docs": {"sqlglot.optimizer.scope.Scope.ref_count": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Reference": {"tf": 1}, "sqlglot.generator.Generator.reference_sql": {"tf": 1}}, "df": 2, "s": {"docs": {"sqlglot.tokens.TokenType.REFERENCES": {"tf": 1}}, "df": 1}}}}}}}}, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.RESPECT_NULLS": {"tf": 1}}, "df": 1, "n": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.RespectNulls": {"tf": 1}, "sqlglot.generator.Generator.respectnulls_sql": {"tf": 1}}, "df": 2}}}}}}}}}, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.optimizer.qualify_columns.Resolver": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.__init__": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.get_table": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.all_columns": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.get_source_columns": {"tf": 1}}, "df": 5}}}}}, "e": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.parser.Parser.reset": {"tf": 1}, "sqlglot.tokens.Tokenizer.reset": {"tf": 1}}, "df": 2}}}, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "v": {"docs": {"sqlglot.expressions.ReadCSV": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.helper.csv_reader": {"tf": 1}}, "df": 1}}}}, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.RegexpExtract": {"tf": 1}}, "df": 1}}}}}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.RegexpLike": {"tf": 1}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.RegexpILike": {"tf": 1}}, "df": 1}}}}}, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.RegexpSplit": {"tf": 1}}, "df": 1}}}}}}}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.optimizer.optimize_joins.reorder_joins": {"tf": 1}}, "df": 1}}}}}, "w": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.simplify.rewrite_between": {"tf": 1}}, "df": 1}}}}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.Column.rlike": {"tf": 1}, "sqlglot.tokens.TokenType.RLIKE": {"tf": 1}}, "df": 2}}}}, "o": {"docs": {}, "df": 0, "w": {"docs": {"sqlglot.executor.context.Context.set_row": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_ROW": {"tf": 1}, "sqlglot.tokens.TokenType.ROW": {"tf": 1}}, "df": 3, "s": {"docs": {"sqlglot.tokens.TokenType.ROWS": {"tf": 1}}, "df": 1, "b": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dataframe.sql.Window.rowsBetween": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.rowsBetween": {"tf": 1}}, "df": 2}}}}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.executor.table.RowReader": {"tf": 1}, "sqlglot.executor.table.RowReader.__init__": {"tf": 1}}, "df": 2}}}}}}, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.RowFormatProperty": {"tf": 1}}, "df": 1}}}}}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.RowFormatDelimitedProperty": {"tf": 1}, "sqlglot.generator.Generator.rowformatdelimitedproperty_sql": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.RowFormatSerdeProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.DataType.Type.ROWVERSION": {"tf": 1}, "sqlglot.tokens.TokenType.ROWVERSION": {"tf": 1}}, "df": 2}}}}}}}, "n": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.RowNumber": {"tf": 1}}, "df": 1}}}}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator.rollback_sql": {"tf": 1}, "sqlglot.expressions.Rollback": {"tf": 1}, "sqlglot.generator.Generator.rollback_sql": {"tf": 1}, "sqlglot.tokens.TokenType.ROLLBACK": {"tf": 1}}, "df": 4}}}}, "u": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.tokens.TokenType.ROLLUP": {"tf": 1}}, "df": 1}}}}, "o": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.Expression.root": {"tf": 1}, "sqlglot.generator.Generator.root_properties": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.ROOT": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_root": {"tf": 1}}, "df": 4}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.Round": {"tf": 1}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.executor.context.Context.set_range": {"tf": 1}, "sqlglot.parser.binary_range_parser": {"tf": 1}, "sqlglot.tokens.TokenType.RANGE": {"tf": 1}}, "df": 3, "b": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dataframe.sql.Window.rangeBetween": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.rangeBetween": {"tf": 1}}, "df": 2}}}}}}}, "n": {"docs": {"sqlglot.dialects.teradata.Teradata.Generator.rangen_sql": {"tf": 1}, "sqlglot.expressions.RangeN": {"tf": 1}}, "df": 2}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.executor.table.RangeReader": {"tf": 1}, "sqlglot.executor.table.RangeReader.__init__": {"tf": 1}}, "df": 2}}}}}}}}}, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.Dialect.get_or_raise": {"tf": 1}, "sqlglot.errors.ErrorLevel.RAISE": {"tf": 1}, "sqlglot.parser.Parser.raise_error": {"tf": 1}}, "df": 3}}}}, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.RIGHT": {"tf": 1}}, "df": 1}}}}}, "l": {"docs": {"sqlglot.tokens.TokenType.L_PAREN": {"tf": 1}, "sqlglot.tokens.TokenType.L_BRACKET": {"tf": 1}, "sqlglot.tokens.TokenType.L_BRACE": {"tf": 1}}, "df": 3, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe.sql.DataFrame.limit": {"tf": 1}, "sqlglot.expressions.Limit": {"tf": 1}, "sqlglot.expressions.Subqueryable.limit": {"tf": 1}, "sqlglot.expressions.Union.limit": {"tf": 1}, "sqlglot.expressions.Select.limit": {"tf": 1}, "sqlglot.generator.Generator.limit_sql": {"tf": 1}, "sqlglot.tokens.TokenType.LIMIT": {"tf": 1}}, "df": 7}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.dataframe.sql.Column.ensure_literal": {"tf": 1}, "sqlglot.expressions.Literal": {"tf": 1}, "sqlglot.expressions.Literal.number": {"tf": 1}, "sqlglot.expressions.Literal.string": {"tf": 1}, "sqlglot.expressions.Literal.output_name": {"tf": 1}, "sqlglot.generator.Generator.literal_sql": {"tf": 1}, "sqlglot.optimizer.simplify.date_literal": {"tf": 1}, "sqlglot.optimizer.simplify.boolean_literal": {"tf": 1}}, "df": 8, "s": {"docs": {"sqlglot.optimizer.simplify.simplify_literals": {"tf": 1}}, "df": 1}}}}}}, "k": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.Column.like": {"tf": 1}, "sqlglot.expressions.Like": {"tf": 1}, "sqlglot.generator.Generator.like_sql": {"tf": 1}, "sqlglot.parser.parse_like": {"tf": 1}, "sqlglot.tokens.TokenType.LIKE": {"tf": 1}, "sqlglot.tokens.TokenType.LIKE_ANY": {"tf": 1}}, "df": 6, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.LikeProperty": {"tf": 1}, "sqlglot.generator.Generator.likeproperty_sql": {"tf": 1}}, "df": 2}}}}}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.LikeAny": {"tf": 1}, "sqlglot.generator.Generator.likeany_sql": {"tf": 1}}, "df": 2}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.Func.from_arg_list": {"tf": 1}, "sqlglot.helper.ensure_list": {"tf": 1}}, "df": 2}}, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.lineage": {"tf": 1}, "sqlglot.lineage.Node": {"tf": 1}, "sqlglot.lineage.Node.__init__": {"tf": 1}, "sqlglot.lineage.Node.walk": {"tf": 1}, "sqlglot.lineage.Node.to_html": {"tf": 1}, "sqlglot.lineage.lineage": {"tf": 1.4142135623730951}, "sqlglot.lineage.LineageHTML": {"tf": 1}, "sqlglot.lineage.LineageHTML.__init__": {"tf": 1}}, "df": 8, "h": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.lineage.LineageHTML": {"tf": 1}, "sqlglot.lineage.LineageHTML.__init__": {"tf": 1}}, "df": 2}}}}}}}}}}, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe.sql.Column.asc_nulls_last": {"tf": 1}, "sqlglot.dataframe.sql.Column.desc_nulls_last": {"tf": 1}, "sqlglot.tokens.TokenType.NULLS_LAST": {"tf": 1}}, "df": 3, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.expressions.LastDateOfMonth": {"tf": 1}}, "df": 1}}}}}}}}}}}}}, "m": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.dialects.dialect.format_time_lambda": {"tf": 1}, "sqlglot.expressions.Lambda": {"tf": 1}, "sqlglot.generator.Generator.lambda_sql": {"tf": 1}}, "df": 3}}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.expressions.Lateral": {"tf": 1}, "sqlglot.expressions.Select.lateral": {"tf": 1}, "sqlglot.generator.Generator.lateral_sql": {"tf": 1}, "sqlglot.tokens.TokenType.LATERAL": {"tf": 1}}, "df": 4, "s": {"docs": {"sqlglot.optimizer.expand_laterals": {"tf": 1}, "sqlglot.optimizer.expand_laterals.expand_laterals": {"tf": 1.4142135623730951}}, "df": 2}}}}}}, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.LANGUAGE": {"tf": 1}}, "df": 1, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.LanguageProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "w": {"docs": {"sqlglot.optimizer.normalize.distributive_law": {"tf": 1}}, "df": 1}, "z": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.tokens.TokenType.LAZY": {"tf": 1}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.locate_to_strposition": {"tf": 1}, "sqlglot.dialects.dialect.strposition_to_locate_sql": {"tf": 1}, "sqlglot.generator.Generator.locate_properties": {"tf": 1}}, "df": 3}, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.Properties.Location": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_CREATE": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_NAME": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_SCHEMA": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_WITH": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_ALIAS": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_EXPRESSION": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_INDEX": {"tf": 1}, "sqlglot.expressions.Properties.Location.UNSUPPORTED": {"tf": 1}}, "df": 9, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.LocationProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "l": {"docs": {"sqlglot.tokens.TokenType.LOCAL": {"tf": 1}, "sqlglot.tokens.TokenType.WITH_LOCAL_TIME_ZONE": {"tf": 1}}, "df": 2}}, "k": {"docs": {"sqlglot.expressions.Lock": {"tf": 1}, "sqlglot.expressions.Select.lock": {"tf": 1}, "sqlglot.generator.Generator.lock_sql": {"tf": 1}}, "df": 3, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.LockingProperty": {"tf": 1}, "sqlglot.generator.Generator.lockingproperty_sql": {"tf": 1}}, "df": 2}}}}}}}}}}}}}, "o": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.executor.python.PythonExecutor.nested_loop_join": {"tf": 1}}, "df": 1}}, "a": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.Expression.load": {"tf": 1}, "sqlglot.serde.load": {"tf": 1}, "sqlglot.tokens.TokenType.LOAD_DATA": {"tf": 1}}, "df": 3, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.expressions.LoadData": {"tf": 1}, "sqlglot.generator.Generator.loaddata_sql": {"tf": 1}}, "df": 2}}}}}}, "g": {"1": {"0": {"docs": {"sqlglot.expressions.Log10": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "2": {"docs": {"sqlglot.expressions.Log2": {"tf": 1}}, "df": 1}, "docs": {"sqlglot.expressions.Log": {"tf": 1}}, "df": 1, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.LogProperty": {"tf": 1}}, "df": 1}}}}}}}}, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.LogicalOr": {"tf": 1}}, "df": 1}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.LogicalAnd": {"tf": 1}}, "df": 1}}}}}}}}, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.DataType.Type.LONGTEXT": {"tf": 1}, "sqlglot.tokens.TokenType.LONGTEXT": {"tf": 1}}, "df": 2}}}}, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "b": {"docs": {"sqlglot.expressions.DataType.Type.LONGBLOB": {"tf": 1}, "sqlglot.tokens.TokenType.LONGBLOB": {"tf": 1}}, "df": 2}}}}}}, "w": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.Lower": {"tf": 1}, "sqlglot.optimizer.lower_identities": {"tf": 1}, "sqlglot.optimizer.lower_identities.lower_identities": {"tf": 1.4142135623730951}}, "df": 3}}}}, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.dialect.min_or_least": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.least_sql": {"tf": 1}, "sqlglot.expressions.Least": {"tf": 1}}, "df": 3}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.tokens.TokenType.LEADING": {"tf": 1}}, "df": 1}}}}}, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.expressions.Length": {"tf": 1}}, "df": 1}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.Levenshtein": {"tf": 1}}, "df": 1}}}}}}}}}, "f": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.LEFT": {"tf": 1}}, "df": 1}}}, "t": {"docs": {"sqlglot.expressions.LT": {"tf": 1}, "sqlglot.generator.Generator.lt_sql": {"tf": 1}, "sqlglot.tokens.TokenType.LT": {"tf": 1}, "sqlglot.tokens.TokenType.LT_AT": {"tf": 1}}, "df": 4, "e": {"docs": {"sqlglot.expressions.LTE": {"tf": 1}, "sqlglot.generator.Generator.lte_sql": {"tf": 1}, "sqlglot.tokens.TokenType.LTE": {"tf": 1}}, "df": 3}}, "n": {"docs": {"sqlglot.expressions.Ln": {"tf": 1}}, "df": 1}, "r": {"docs": {"sqlglot.tokens.TokenType.LR_ARROW": {"tf": 1}}, "df": 1}}, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe.sql.DataFrame.hint": {"tf": 1}, "sqlglot.expressions.Hint": {"tf": 1}, "sqlglot.generator.Generator.hint_sql": {"tf": 1}, "sqlglot.tokens.TokenType.HINT": {"tf": 1}}, "df": 4, "s": {"docs": {"sqlglot.optimizer.scope.Scope.join_hints": {"tf": 1}}, "df": 1}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.Dialects.HIVE": {"tf": 1}, "sqlglot.dialects.hive": {"tf": 1}, "sqlglot.dialects.hive.Hive": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Tokenizer": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Generator.arrayagg_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Generator.with_properties": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Generator.datatype_sql": {"tf": 1.4142135623730951}}, "df": 9}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {"sqlglot.expressions.Histogram": {"tf": 1}}, "df": 1}}}}}}}}, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.executor.python.PythonExecutor.hash_join": {"tf": 1}, "sqlglot.tokens.TokenType.HASH": {"tf": 1}, "sqlglot.tokens.TokenType.HASH_ARROW": {"tf": 1}}, "df": 3}}, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.expressions.Having": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1}, "sqlglot.generator.Generator.having_sql": {"tf": 1}, "sqlglot.tokens.TokenType.HAVING": {"tf": 1}}, "df": 4}}}}}, "e": {"docs": {}, "df": 0, "x": {"docs": {"sqlglot.expressions.Hex": {"tf": 1}, "sqlglot.tokens.TokenType.HEX_STRING": {"tf": 1}}, "df": 2, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.expressions.HexString": {"tf": 1}, "sqlglot.generator.Generator.hexstring_sql": {"tf": 1}}, "df": 2}}}}}}}, "l": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.helper": {"tf": 1}, "sqlglot.helper.AutoName": {"tf": 1}, "sqlglot.helper.seq_get": {"tf": 1}, "sqlglot.helper.ensure_list": {"tf": 1}, "sqlglot.helper.ensure_collection": {"tf": 1}, "sqlglot.helper.csv": {"tf": 1}, "sqlglot.helper.subclasses": {"tf": 1}, "sqlglot.helper.apply_index_offset": {"tf": 1}, "sqlglot.helper.camel_to_snake_case": {"tf": 1}, "sqlglot.helper.while_changing": {"tf": 1}, "sqlglot.helper.tsort": {"tf": 1}, "sqlglot.helper.open_file": {"tf": 1}, "sqlglot.helper.csv_reader": {"tf": 1}, "sqlglot.helper.find_new_name": {"tf": 1}, "sqlglot.helper.object_to_dict": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1}, "sqlglot.helper.is_iterable": {"tf": 1}, "sqlglot.helper.flatten": {"tf": 1}, "sqlglot.helper.count_params": {"tf": 1}, "sqlglot.helper.dict_depth": {"tf": 1}, "sqlglot.helper.first": {"tf": 1}, "sqlglot.helper.should_identify": {"tf": 1}}, "df": 22}}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.expressions.Hll": {"tf": 1}}, "df": 1, "s": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.expressions.DataType.Type.HLLSKETCH": {"tf": 1}, "sqlglot.tokens.TokenType.HLLSKETCH": {"tf": 1}}, "df": 2}}}}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.DataType.Type.HSTORE": {"tf": 1}, "sqlglot.tokens.TokenType.HSTORE": {"tf": 1}}, "df": 2}}}}}, "t": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.lineage.Node.to_html": {"tf": 1}}, "df": 1}}}}, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dataframe.sql.GroupedData.mean": {"tf": 1}}, "df": 1}}, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.errors.concat_messages": {"tf": 1}, "sqlglot.expressions.Expression.error_messages": {"tf": 1}}, "df": 2}}}}}}, "r": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.errors.merge_errors": {"tf": 1}, "sqlglot.expressions.Merge": {"tf": 1}, "sqlglot.generator.Generator.merge_sql": {"tf": 1}, "sqlglot.optimizer.merge_subqueries": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1.4142135623730951}, "sqlglot.optimizer.merge_subqueries.merge_ctes": {"tf": 1.4142135623730951}, "sqlglot.optimizer.merge_subqueries.merge_derived_tables": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.MERGE": {"tf": 1}, "sqlglot.transforms.remove_target_from_merge": {"tf": 1}}, "df": 9, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.MergeBlockRatioProperty": {"tf": 1}, "sqlglot.generator.Generator.mergeblockratioproperty_sql": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}}}}}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.DataType.Type.MEDIUMTEXT": {"tf": 1}, "sqlglot.tokens.TokenType.MEDIUMTEXT": {"tf": 1}}, "df": 2}}}}, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "b": {"docs": {"sqlglot.expressions.DataType.Type.MEDIUMBLOB": {"tf": 1}, "sqlglot.tokens.TokenType.MEDIUMBLOB": {"tf": 1}}, "df": 2}}}}}}}}}, "a": {"docs": {}, "df": 0, "x": {"docs": {"sqlglot.dataframe.sql.GroupedData.max": {"tf": 1}, "sqlglot.dialects.dialect.max_or_greatest": {"tf": 1}, "sqlglot.expressions.Max": {"tf": 1}}, "df": 3}, "p": {"docs": {"sqlglot.dialects.dialect.var_map_sql": {"tf": 1}, "sqlglot.expressions.DataType.Type.MAP": {"tf": 1}, "sqlglot.expressions.Map": {"tf": 1}, "sqlglot.parser.parse_var_map": {"tf": 1}, "sqlglot.tokens.TokenType.MAP": {"tf": 1}}, "df": 5, "p": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.schema.MappingSchema.from_mapping_schema": {"tf": 1}, "sqlglot.schema.ensure_column_mapping": {"tf": 1}}, "df": 2, "s": {"docs": {"sqlglot.expressions.Func.default_parser_mappings": {"tf": 1}}, "df": 1, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.schema.MappingSchema": {"tf": 1}, "sqlglot.schema.MappingSchema.__init__": {"tf": 1}, "sqlglot.schema.MappingSchema.from_mapping_schema": {"tf": 1}, "sqlglot.schema.MappingSchema.copy": {"tf": 1}, "sqlglot.schema.MappingSchema.add_table": {"tf": 1}, "sqlglot.schema.MappingSchema.column_names": {"tf": 1}, "sqlglot.schema.MappingSchema.get_column_type": {"tf": 1}}, "df": 7}}}}}}}}}}}, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.tokens.TokenType.MATCH_RECOGNIZE": {"tf": 1}}, "df": 1, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.MatchRecognize": {"tf": 1}, "sqlglot.generator.Generator.matchrecognize_sql": {"tf": 1}}, "df": 2}}}}}}}}}, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.MatchAgainst": {"tf": 1}, "sqlglot.generator.Generator.matchagainst_sql": {"tf": 1}}, "df": 2}}}}}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.tokens.TokenType.MATERIALIZED": {"tf": 1}}, "df": 1, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.MaterializedProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}, "y": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.maybe_parse": {"tf": 1}, "sqlglot.generator.Generator.maybe_comment": {"tf": 1}}, "df": 2}}}, "r": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.tokens.TokenType.JOIN_MARKER": {"tf": 1}}, "df": 1}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dataframe.sql.GroupedData.min": {"tf": 1}, "sqlglot.dialects.dialect.min_or_least": {"tf": 1}, "sqlglot.expressions.Min": {"tf": 1}}, "df": 3}}, "o": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.dialects.teradata.Teradata.Generator.mod_sql": {"tf": 1}, "sqlglot.expressions.Mod": {"tf": 1}, "sqlglot.generator.Generator.mod_sql": {"tf": 1}, "sqlglot.tokens.TokenType.MOD": {"tf": 1}}, "df": 4, "e": {"docs": {"sqlglot.dataframe.sql.DataFrameWriter.mode": {"tf": 1}}, "df": 1}, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.generator.Generator.query_modifiers": {"tf": 1}}, "df": 1}}}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff.Move": {"tf": 1}, "sqlglot.diff.Move.__init__": {"tf": 1}}, "df": 2}}, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.DataType.Type.MONEY": {"tf": 1}, "sqlglot.tokens.TokenType.MONEY": {"tf": 1}}, "df": 2}}, "t": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.expressions.Month": {"tf": 1}}, "df": 1}}}}, "y": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.dialects.dialect.Dialects.MYSQL": {"tf": 1}, "sqlglot.dialects.mysql": {"tf": 1}, "sqlglot.dialects.mysql.MySQL": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Tokenizer": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Generator.show_sql": {"tf": 1.4142135623730951}}, "df": 7}}}}, "u": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.expressions.Mul": {"tf": 1}, "sqlglot.generator.Generator.mul_sql": {"tf": 1}}, "df": 2, "t": {"docs": {}, "df": 0, "i": {"docs": {"sqlglot.optimizer.expand_multi_table_selects": {"tf": 1}, "sqlglot.optimizer.expand_multi_table_selects.expand_multi_table_selects": {"tf": 1.4142135623730951}}, "df": 2}}}}, "d": {"5": {"docs": {"sqlglot.expressions.MD5": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}}, "b": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dataframe.sql.Column.binary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.inverse_binary_op": {"tf": 1}, "sqlglot.expressions.DataType.Type.BINARY": {"tf": 1}, "sqlglot.expressions.Binary": {"tf": 1}, "sqlglot.generator.Generator.binary": {"tf": 1}, "sqlglot.parser.binary_range_parser": {"tf": 1}, "sqlglot.tokens.TokenType.BINARY": {"tf": 1}}, "df": 7}}}}, "g": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dialects.bigquery": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery": {"tf": 1.4142135623730951}, "sqlglot.dialects.bigquery.BigQuery.Tokenizer": {"tf": 1.4142135623730951}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.bigquery.BigQuery.Generator.array_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.bigquery.BigQuery.Generator.transaction_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.bigquery.BigQuery.Generator.commit_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.bigquery.BigQuery.Generator.rollback_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.bigquery.BigQuery.Generator.in_unnest_op": {"tf": 1.4142135623730951}, "sqlglot.dialects.bigquery.BigQuery.Generator.except_op": {"tf": 1.4142135623730951}, "sqlglot.dialects.bigquery.BigQuery.Generator.intersect_op": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.BIGQUERY": {"tf": 1}}, "df": 13}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.DataType.Type.BIGINT": {"tf": 1}, "sqlglot.tokens.TokenType.BIGINT": {"tf": 1}}, "df": 2}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.expressions.DataType.Type.BIGDECIMAL": {"tf": 1}, "sqlglot.tokens.TokenType.BIGDECIMAL": {"tf": 1}}, "df": 2}}}}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.expressions.DataType.Type.BIGSERIAL": {"tf": 1}, "sqlglot.tokens.TokenType.BIGSERIAL": {"tf": 1}}, "df": 2}}}}}}}, "t": {"docs": {"sqlglot.expressions.DataType.Type.BIT": {"tf": 1}, "sqlglot.tokens.TokenType.BIT_STRING": {"tf": 1}, "sqlglot.tokens.TokenType.BIT": {"tf": 1}}, "df": 3, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.expressions.BitString": {"tf": 1}, "sqlglot.generator.Generator.bitstring_sql": {"tf": 1}}, "df": 2}}}}}}, "w": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.BitwiseAnd": {"tf": 1}, "sqlglot.generator.Generator.bitwiseand_sql": {"tf": 1}}, "df": 2}}}, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.BitwiseLeftShift": {"tf": 1}, "sqlglot.generator.Generator.bitwiseleftshift_sql": {"tf": 1}}, "df": 2}}}}}}}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.BitwiseOr": {"tf": 1}, "sqlglot.generator.Generator.bitwiseor_sql": {"tf": 1}}, "df": 2}}, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.BitwiseRightShift": {"tf": 1}, "sqlglot.generator.Generator.bitwiserightshift_sql": {"tf": 1}}, "df": 2}}}}}}}}}}, "x": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.BitwiseXor": {"tf": 1}, "sqlglot.generator.Generator.bitwisexor_sql": {"tf": 1}}, "df": 2}}}, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.BitwiseNot": {"tf": 1}, "sqlglot.generator.Generator.bitwisenot_sql": {"tf": 1}}, "df": 2}}}}}}}}}, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dataframe.sql.Column.between": {"tf": 1}, "sqlglot.expressions.Between": {"tf": 1}, "sqlglot.generator.Generator.between_sql": {"tf": 1}, "sqlglot.optimizer.simplify.rewrite_between": {"tf": 1}, "sqlglot.tokens.TokenType.BETWEEN": {"tf": 1}}, "df": 5}}}}}, "g": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.tokens.TokenType.BEGIN": {"tf": 1}}, "df": 1}}}}, "f": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.Expression.bfs": {"tf": 1}}, "df": 1}}, "y": {"docs": {"sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.generator.Generator.partition_by_sql": {"tf": 1}, "sqlglot.tokens.TokenType.BY_DEFAULT": {"tf": 1}, "sqlglot.tokens.TokenType.CLUSTER_BY": {"tf": 1}, "sqlglot.tokens.TokenType.DISTRIBUTE_BY": {"tf": 1}, "sqlglot.tokens.TokenType.GROUP_BY": {"tf": 1}, "sqlglot.tokens.TokenType.ORDER_BY": {"tf": 1}, "sqlglot.tokens.TokenType.PARTITION_BY": {"tf": 1}, "sqlglot.tokens.TokenType.SORT_BY": {"tf": 1}}, "df": 12, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.BYTE_STRING": {"tf": 1}}, "df": 1, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.expressions.ByteString": {"tf": 1}, "sqlglot.generator.Generator.bytestring_sql": {"tf": 1}}, "df": 2}}}}}}}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.tokens.TokenType.BLOCK_START": {"tf": 1}, "sqlglot.tokens.TokenType.BLOCK_END": {"tf": 1}}, "df": 2, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.BlockCompressionProperty": {"tf": 1}, "sqlglot.generator.Generator.blockcompressionproperty_sql": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}}}}}}}}}}, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.optimizer.canonicalize.ensure_bool_predicates": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.Boolean": {"tf": 1}, "sqlglot.expressions.DataType.Type.BOOLEAN": {"tf": 1}, "sqlglot.generator.Generator.boolean_sql": {"tf": 1}, "sqlglot.optimizer.simplify.eval_boolean": {"tf": 1}, "sqlglot.optimizer.simplify.boolean_literal": {"tf": 1}, "sqlglot.tokens.TokenType.BOOLEAN": {"tf": 1}}, "df": 6}}}}}, "t": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.tokens.TokenType.BOTH": {"tf": 1}}, "df": 1}}}, "u": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.DataType.build": {"tf": 1}, "sqlglot.expressions.Dot.build": {"tf": 1}, "sqlglot.optimizer.scope.build_scope": {"tf": 1}}, "df": 3}}}, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.BUCKET": {"tf": 1}}, "df": 1}}}}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.Bracket": {"tf": 1}, "sqlglot.generator.Generator.bracket_sql": {"tf": 1}, "sqlglot.tokens.TokenType.L_BRACKET": {"tf": 1}, "sqlglot.tokens.TokenType.R_BRACKET": {"tf": 1}}, "df": 4}}}, "e": {"docs": {"sqlglot.tokens.TokenType.L_BRACE": {"tf": 1}, "sqlglot.tokens.TokenType.R_BRACE": {"tf": 1}}, "df": 2}}, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.optimizer.scope.Scope.branch": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.tokens.TokenType.BREAK": {"tf": 1}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.tokens.TokenType.BACKSLASH": {"tf": 1}}, "df": 1}}}}}}}}}, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.Column.set_table_name": {"tf": 1}, "sqlglot.expressions.Expression.output_name": {"tf": 1}, "sqlglot.expressions.Column.output_name": {"tf": 1}, "sqlglot.expressions.Identifier.output_name": {"tf": 1}, "sqlglot.expressions.Literal.output_name": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_NAME": {"tf": 1}, "sqlglot.expressions.Subquery.output_name": {"tf": 1}, "sqlglot.expressions.Star.output_name": {"tf": 1}, "sqlglot.expressions.Alias.output_name": {"tf": 1}, "sqlglot.expressions.Func.sql_name": {"tf": 1}, "sqlglot.expressions.Cast.output_name": {"tf": 1}, "sqlglot.expressions.table_name": {"tf": 1}, "sqlglot.helper.find_new_name": {"tf": 1}}, "df": 13, "s": {"docs": {"sqlglot.expressions.Func.sql_names": {"tf": 1}, "sqlglot.expressions.column_table_names": {"tf": 1}, "sqlglot.optimizer.optimize_joins.other_table_names": {"tf": 1}, "sqlglot.schema.Schema.column_names": {"tf": 1}, "sqlglot.schema.MappingSchema.column_names": {"tf": 1}}, "df": 5}}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.expressions.National": {"tf": 1}, "sqlglot.generator.Generator.national_sql": {"tf": 1}, "sqlglot.tokens.TokenType.NATIONAL": {"tf": 1}}, "df": 3}}}}}, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.tokens.TokenType.NATURAL": {"tf": 1}}, "df": 1}}}}}, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.generator.Generator.naked_property": {"tf": 1}}, "df": 1}}}}, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.executor.env.null_if_any": {"tf": 1}, "sqlglot.expressions.Null": {"tf": 1}, "sqlglot.expressions.DataType.Type.NULL": {"tf": 1}, "sqlglot.expressions.null": {"tf": 1}, "sqlglot.generator.Generator.null_sql": {"tf": 1}, "sqlglot.optimizer.simplify.is_null": {"tf": 1}, "sqlglot.tokens.TokenType.NULL": {"tf": 1}}, "df": 7, "s": {"docs": {"sqlglot.dataframe.sql.Column.asc_nulls_first": {"tf": 1}, "sqlglot.dataframe.sql.Column.asc_nulls_last": {"tf": 1}, "sqlglot.dataframe.sql.Column.desc_nulls_first": {"tf": 1}, "sqlglot.dataframe.sql.Column.desc_nulls_last": {"tf": 1}, "sqlglot.executor.env.filter_nulls": {"tf": 1}, "sqlglot.tokens.TokenType.IGNORE_NULLS": {"tf": 1}, "sqlglot.tokens.TokenType.NULLS_FIRST": {"tf": 1}, "sqlglot.tokens.TokenType.NULLS_LAST": {"tf": 1}, "sqlglot.tokens.TokenType.RESPECT_NULLS": {"tf": 1}}, "df": 9, "a": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.NULLSAFE_EQ": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "q": {"docs": {"sqlglot.expressions.NullSafeEQ": {"tf": 1}, "sqlglot.generator.Generator.nullsafeeq_sql": {"tf": 1}}, "df": 2}}, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {"sqlglot.expressions.NullSafeNEQ": {"tf": 1}, "sqlglot.generator.Generator.nullsafeneq_sql": {"tf": 1}}, "df": 2}}}}}}}, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.DataType.Type.NULLABLE": {"tf": 1}, "sqlglot.tokens.TokenType.NULLABLE": {"tf": 1}}, "df": 2}}}}}}, "m": {"docs": {"sqlglot.helper.split_num_words": {"tf": 1}}, "df": 1, "b": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.Expression.is_number": {"tf": 1}, "sqlglot.expressions.Literal.number": {"tf": 1}, "sqlglot.tokens.TokenType.NUMBER": {"tf": 1}, "sqlglot.tokens.Token.number": {"tf": 1}}, "df": 4, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.NumberToStr": {"tf": 1}}, "df": 1}}}}}}}}}}, "o": {"docs": {"sqlglot.dialects.dialect.no_ilike_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_paren_current_date_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_recursive_cte_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_safe_divide_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_tablesample_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_pivot_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_trycast_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_properties_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_comment_column_constraint_sql": {"tf": 1}, "sqlglot.generator.Generator.no_identify": {"tf": 1}, "sqlglot.tokens.TokenType.NO_ACTION": {"tf": 1}}, "df": 11, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.drill.Drill.Generator.normalize_func": {"tf": 1}, "sqlglot.generator.Generator.normalize_func": {"tf": 1}, "sqlglot.optimizer.normalize": {"tf": 1}, "sqlglot.optimizer.normalize.normalize": {"tf": 1.4142135623730951}, "sqlglot.optimizer.normalize.normalized": {"tf": 1}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1}, "sqlglot.optimizer.normalize.distributive_law": {"tf": 1}, "sqlglot.optimizer.optimize_joins.normalize": {"tf": 1}}, "df": 8, "d": {"docs": {"sqlglot.optimizer.normalize.normalized": {"tf": 1}}, "df": 1}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.optimizer.normalize.normalization_distance": {"tf": 1}}, "df": 1}}}}}}}}}}}, "t": {"docs": {"sqlglot.expressions.Condition.not_": {"tf": 1}, "sqlglot.expressions.Not": {"tf": 1}, "sqlglot.expressions.not_": {"tf": 1}, "sqlglot.generator.Generator.not_sql": {"tf": 1}, "sqlglot.optimizer.simplify.simplify_not": {"tf": 1}, "sqlglot.tokens.TokenType.NOT": {"tf": 1}}, "df": 6, "n": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.tokens.TokenType.NOTNULL": {"tf": 1}}, "df": 1, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.NotNullColumnConstraint": {"tf": 1}, "sqlglot.generator.Generator.notnullcolumnconstraint_sql": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}}}}}}}}, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.NoPrimaryIndexProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.lineage.Node": {"tf": 1}, "sqlglot.lineage.Node.__init__": {"tf": 1}, "sqlglot.lineage.Node.walk": {"tf": 1}, "sqlglot.lineage.Node.to_html": {"tf": 1}}, "df": 4, "s": {"docs": {"sqlglot.optimizer.pushdown_predicates.nodes_for_predicate": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "w": {"docs": {"sqlglot.errors.ParseError.new": {"tf": 1}, "sqlglot.helper.find_new_name": {"tf": 1}, "sqlglot.trie.new_trie": {"tf": 1}}, "df": 3}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.executor.python.PythonExecutor.nested_loop_join": {"tf": 1}}, "df": 1}}}}, "q": {"docs": {"sqlglot.expressions.NEQ": {"tf": 1}, "sqlglot.generator.Generator.neq_sql": {"tf": 1}, "sqlglot.tokens.TokenType.NEQ": {"tf": 1}}, "df": 3}, "g": {"docs": {"sqlglot.expressions.Neg": {"tf": 1}, "sqlglot.generator.Generator.neg_sql": {"tf": 1}}, "df": 2}, "x": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.NEXT": {"tf": 1}}, "df": 1}}}, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.DataType.Type.NCHAR": {"tf": 1}, "sqlglot.tokens.TokenType.NCHAR": {"tf": 1}}, "df": 2}}}}, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.DataType.Type.NVARCHAR": {"tf": 1}, "sqlglot.tokens.TokenType.NVARCHAR": {"tf": 1}}, "df": 2}}}}}}, "l": {"2": {"docs": {"sqlglot.expressions.Nvl2": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}}}, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dialects.dialect.var_map_sql": {"tf": 1}, "sqlglot.expressions.Var": {"tf": 1}, "sqlglot.expressions.var": {"tf": 1}, "sqlglot.generator.Generator.var_sql": {"tf": 1}, "sqlglot.parser.parse_var_map": {"tf": 1}, "sqlglot.tokens.TokenType.VAR": {"tf": 1}, "sqlglot.tokens.Token.var": {"tf": 1}}, "df": 7, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.DataType.Type.VARCHAR": {"tf": 1}, "sqlglot.tokens.TokenType.VARCHAR": {"tf": 1}}, "df": 2}}}}, "b": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.DataType.Type.VARBINARY": {"tf": 1}, "sqlglot.tokens.TokenType.VARBINARY": {"tf": 1}}, "df": 2}}}}}}, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.DataType.Type.VARIANT": {"tf": 1}, "sqlglot.tokens.TokenType.VARIANT": {"tf": 1}}, "df": 2}, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Variance": {"tf": 1}}, "df": 1, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.expressions.VariancePop": {"tf": 1}}, "df": 1}}}}}}}}, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.expressions.VarMap": {"tf": 1}}, "df": 1}}}}, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1}, "sqlglot.expressions.Values": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1}, "sqlglot.generator.Generator.values_sql": {"tf": 1}, "sqlglot.tokens.TokenType.VALUES": {"tf": 1}}, "df": 6}}}, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.qualify_columns.validate_qualify_columns": {"tf": 1}, "sqlglot.parser.Parser.validate_expression": {"tf": 1}}, "df": 2}}}}}}}, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.VOLATILE": {"tf": 1}}, "df": 1, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.VolatileProperty": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "w": {"docs": {"sqlglot.tokens.TokenType.VIEW": {"tf": 1}}, "df": 1}}}}, "x": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.expressions.DataType.Type.XML": {"tf": 1}, "sqlglot.tokens.TokenType.XML": {"tf": 1}}, "df": 2, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.oracle.Oracle.Generator.xmltable_sql": {"tf": 1}, "sqlglot.expressions.XMLTable": {"tf": 1}}, "df": 2}}}}}}}}, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.diff.Keep": {"tf": 1}, "sqlglot.diff.Keep.__init__": {"tf": 1}}, "df": 2}}, "y": {"docs": {"sqlglot.executor.env.reverse_key": {"tf": 1}, "sqlglot.executor.env.reverse_key.__init__": {"tf": 1}, "sqlglot.tokens.TokenType.FOREIGN_KEY": {"tf": 1}, "sqlglot.tokens.TokenType.PRIMARY_KEY": {"tf": 1}}, "df": 4}}, "w": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.expressions.Kwarg": {"tf": 1}, "sqlglot.generator.Generator.kwarg_sql": {"tf": 1}}, "df": 2}}}}}, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.Qualify": {"tf": 1}, "sqlglot.expressions.Select.qualify": {"tf": 1}, "sqlglot.generator.Generator.qualify_sql": {"tf": 1}, "sqlglot.optimizer.qualify_columns": {"tf": 1}, "sqlglot.optimizer.qualify_columns.qualify_columns": {"tf": 1.4142135623730951}, "sqlglot.optimizer.qualify_columns.validate_qualify_columns": {"tf": 1.4142135623730951}, "sqlglot.optimizer.qualify_columns.Resolver": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.__init__": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.get_table": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.all_columns": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.get_source_columns": {"tf": 1}, "sqlglot.optimizer.qualify_tables": {"tf": 1}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.QUALIFY": {"tf": 1}, "sqlglot.transforms.eliminate_qualify": {"tf": 1}}, "df": 15}}}}, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Quantile": {"tf": 1}}, "df": 1, "s": {"docs": {"sqlglot.expressions.Quantiles": {"tf": 1}}, "df": 1}, "i": {"docs": {}, "df": 0, "f": {"docs": {"sqlglot.expressions.QuantileIf": {"tf": 1}}, "df": 1}}}}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.generator.Generator.query_modifiers": {"tf": 1}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.QUOTE": {"tf": 1}}, "df": 1}}}}}, "y": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.Year": {"tf": 1}}, "df": 1}}}}, "z": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.AT_TIME_ZONE": {"tf": 1}, "sqlglot.tokens.TokenType.WITH_TIME_ZONE": {"tf": 1}, "sqlglot.tokens.TokenType.WITH_LOCAL_TIME_ZONE": {"tf": 1}, "sqlglot.tokens.TokenType.WITHOUT_TIME_ZONE": {"tf": 1}}, "df": 4}}}}}}, "annotation": {"root": {"docs": {"sqlglot.expressions.Expression.is_string": {"tf": 1}, "sqlglot.expressions.Expression.is_number": {"tf": 1}, "sqlglot.expressions.Expression.is_int": {"tf": 1}, "sqlglot.expressions.Expression.is_star": {"tf": 1}, "sqlglot.expressions.Expression.alias": {"tf": 1}, "sqlglot.expressions.Column.output_name": {"tf": 1}, "sqlglot.expressions.Column.parts": {"tf": 1}, "sqlglot.expressions.Union.is_star": {"tf": 1}, "sqlglot.expressions.Select.is_star": {"tf": 1}, "sqlglot.expressions.Subquery.is_star": {"tf": 1}, "sqlglot.schema.Schema.supported_table_args": {"tf": 1.4142135623730951}, "sqlglot.tokens.Token.start": {"tf": 1}}, "df": 12, "b": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.expressions.Expression.is_string": {"tf": 1}, "sqlglot.expressions.Expression.is_number": {"tf": 1}, "sqlglot.expressions.Expression.is_int": {"tf": 1}, "sqlglot.expressions.Expression.is_star": {"tf": 1}, "sqlglot.expressions.Union.is_star": {"tf": 1}, "sqlglot.expressions.Select.is_star": {"tf": 1}, "sqlglot.expressions.Subquery.is_star": {"tf": 1}}, "df": 7}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.Expression.alias": {"tf": 1}, "sqlglot.expressions.Column.output_name": {"tf": 1}}, "df": 2}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "[": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.Column.parts": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.Column.parts": {"tf": 1}}, "df": 1}}}}}}}}}}}, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.Column.parts": {"tf": 1}}, "df": 1}}}}}}}}}, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.Token.start": {"tf": 1}}, "df": 1}}}, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "[": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.schema.Schema.supported_table_args": {"tf": 1}}, "df": 1}}}}}}}}}}}, "default_value": {"root": {"1": {"docs": {"sqlglot.optimizer.scope.ScopeType.ROOT": {"tf": 1}}, "df": 1}, "2": {"docs": {"sqlglot.optimizer.scope.ScopeType.SUBQUERY": {"tf": 1}}, "df": 1}, "3": {"docs": {"sqlglot.optimizer.scope.ScopeType.DERIVED_TABLE": {"tf": 1}}, "df": 1}, "4": {"docs": {"sqlglot.optimizer.scope.ScopeType.CTE": {"tf": 1}}, "df": 1}, "5": {"docs": {"sqlglot.optimizer.scope.ScopeType.UNION": {"tf": 1}}, "df": 1}, "6": {"docs": {"sqlglot.optimizer.scope.ScopeType.UDTF": {"tf": 1}}, "df": 1}, "docs": {"sqlglot.schema": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.DIALECT": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.BIGQUERY": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.CLICKHOUSE": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.DUCKDB": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.HIVE": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.MYSQL": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.ORACLE": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.POSTGRES": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.PRESTO": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.REDSHIFT": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.SNOWFLAKE": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.SPARK": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.SQLITE": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.STARROCKS": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.TABLEAU": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.TRINO": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.TSQL": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.DATABRICKS": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.DRILL": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.TERADATA": {"tf": 1.4142135623730951}, "sqlglot.errors.ErrorLevel.IGNORE": {"tf": 1.4142135623730951}, "sqlglot.errors.ErrorLevel.WARN": {"tf": 1.4142135623730951}, "sqlglot.errors.ErrorLevel.RAISE": {"tf": 1.4142135623730951}, "sqlglot.errors.ErrorLevel.IMMEDIATE": {"tf": 1.4142135623730951}, "sqlglot.expressions.Properties.Location.POST_CREATE": {"tf": 1.4142135623730951}, "sqlglot.expressions.Properties.Location.POST_NAME": {"tf": 1.4142135623730951}, "sqlglot.expressions.Properties.Location.POST_SCHEMA": {"tf": 1.4142135623730951}, "sqlglot.expressions.Properties.Location.POST_WITH": {"tf": 1.4142135623730951}, "sqlglot.expressions.Properties.Location.POST_ALIAS": {"tf": 1.4142135623730951}, "sqlglot.expressions.Properties.Location.POST_EXPRESSION": {"tf": 1.4142135623730951}, "sqlglot.expressions.Properties.Location.POST_INDEX": {"tf": 1.4142135623730951}, "sqlglot.expressions.Properties.Location.UNSUPPORTED": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.CHAR": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.NCHAR": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.VARCHAR": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.NVARCHAR": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.TEXT": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.MEDIUMTEXT": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.LONGTEXT": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.MEDIUMBLOB": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.LONGBLOB": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.BINARY": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.VARBINARY": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.INT": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.UINT": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.TINYINT": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.UTINYINT": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.SMALLINT": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.USMALLINT": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.BIGINT": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.UBIGINT": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.FLOAT": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.DOUBLE": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.DECIMAL": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.BIGDECIMAL": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.BIT": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.BOOLEAN": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.JSON": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.JSONB": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.INTERVAL": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.TIME": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.TIMESTAMP": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.TIMESTAMPTZ": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.TIMESTAMPLTZ": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.DATE": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.DATETIME": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.ARRAY": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.MAP": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.UUID": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.GEOGRAPHY": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.GEOMETRY": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.STRUCT": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.NULLABLE": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.HLLSKETCH": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.HSTORE": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.SUPER": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.SERIAL": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.SMALLSERIAL": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.BIGSERIAL": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.XML": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.UNIQUEIDENTIFIER": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.MONEY": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.SMALLMONEY": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.ROWVERSION": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.IMAGE": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.VARIANT": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.OBJECT": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.INET": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.NULL": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.UNKNOWN": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.ScopeType.ROOT": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.ScopeType.SUBQUERY": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.ScopeType.DERIVED_TABLE": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.ScopeType.CTE": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.ScopeType.UNION": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.ScopeType.UDTF": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.L_PAREN": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.R_PAREN": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.L_BRACKET": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.R_BRACKET": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.L_BRACE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.R_BRACE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.COMMA": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DOT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DASH": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.PLUS": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.COLON": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DCOLON": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SEMICOLON": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.STAR": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.BACKSLASH": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SLASH": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.LT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.LTE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.GT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.GTE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.NOT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.EQ": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.NEQ": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.NULLSAFE_EQ": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.AND": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.OR": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.AMP": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DPIPE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.PIPE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.CARET": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.TILDA": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ARROW": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DARROW": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.FARROW": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.HASH": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.HASH_ARROW": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DHASH_ARROW": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.LR_ARROW": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.LT_AT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.AT_GT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DOLLAR": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.PARAMETER": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SESSION_PARAMETER": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.NATIONAL": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DAMP": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.BLOCK_START": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.BLOCK_END": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SPACE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.BREAK": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.STRING": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.NUMBER": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.IDENTIFIER": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DATABASE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.COLUMN": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.COLUMN_DEF": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SCHEMA": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.TABLE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.VAR": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.BIT_STRING": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.HEX_STRING": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.BYTE_STRING": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.BIT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.BOOLEAN": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.TINYINT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.UTINYINT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SMALLINT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.USMALLINT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.INT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.UINT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.BIGINT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.UBIGINT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.FLOAT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DOUBLE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DECIMAL": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.BIGDECIMAL": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.CHAR": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.NCHAR": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.VARCHAR": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.NVARCHAR": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.TEXT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.MEDIUMTEXT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.LONGTEXT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.MEDIUMBLOB": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.LONGBLOB": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.BINARY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.VARBINARY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.JSON": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.JSONB": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.TIME": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.TIMESTAMP": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.TIMESTAMPTZ": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.TIMESTAMPLTZ": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DATETIME": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DATE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.UUID": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.GEOGRAPHY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.NULLABLE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.GEOMETRY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.HLLSKETCH": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.HSTORE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SUPER": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SERIAL": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SMALLSERIAL": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.BIGSERIAL": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.XML": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.UNIQUEIDENTIFIER": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.MONEY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SMALLMONEY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ROWVERSION": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.IMAGE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.VARIANT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.OBJECT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.INET": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ALIAS": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ALTER": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ALWAYS": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ALL": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ANTI": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ANY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.APPLY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ARRAY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ASC": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ASOF": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.AT_TIME_ZONE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.AUTO_INCREMENT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.BEGIN": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.BETWEEN": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.BOTH": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.BUCKET": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.BY_DEFAULT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.CACHE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.CASCADE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.CASE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.CHARACTER_SET": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.CLUSTER_BY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.COLLATE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.COMMAND": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.COMMENT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.COMMIT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.COMPOUND": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.CONSTRAINT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.CREATE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.CROSS": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.CUBE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.CURRENT_DATE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.CURRENT_DATETIME": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.CURRENT_ROW": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.CURRENT_TIME": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.CURRENT_TIMESTAMP": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.CURRENT_USER": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DEFAULT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DELETE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DESC": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DESCRIBE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DISTINCT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DISTINCT_FROM": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DISTRIBUTE_BY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DIV": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DROP": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ELSE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.END": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ESCAPE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.EXCEPT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.EXECUTE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.EXISTS": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.FALSE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.FETCH": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.FILTER": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.FINAL": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.FIRST": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.FOLLOWING": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.FOR": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.FOREIGN_KEY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.FORMAT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.FROM": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.FULL": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.FUNCTION": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.GLOB": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.GLOBAL": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.GROUP_BY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.GROUPING_SETS": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.HAVING": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.HINT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.IF": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.IGNORE_NULLS": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ILIKE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ILIKE_ANY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.IN": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.INDEX": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.INNER": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.INSERT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.INTERSECT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.INTERVAL": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.INTO": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.INTRODUCER": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.IRLIKE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.IS": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ISNULL": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.JOIN": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.JOIN_MARKER": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.LANGUAGE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.LATERAL": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.LAZY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.LEADING": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.LEFT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.LIKE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.LIKE_ANY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.LIMIT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.LOAD_DATA": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.LOCAL": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.MAP": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.MATCH_RECOGNIZE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.MATERIALIZED": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.MERGE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.MOD": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.NATURAL": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.NEXT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.NO_ACTION": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.NOTNULL": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.NULL": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.NULLS_FIRST": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.NULLS_LAST": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.OFFSET": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ON": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ONLY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.OPTIONS": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ORDER_BY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ORDERED": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ORDINALITY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.OUTER": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.OUT_OF": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.OVER": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.OVERLAPS": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.OVERWRITE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.PARTITION": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.PARTITION_BY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.PERCENT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.PIVOT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.PLACEHOLDER": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.PRAGMA": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.PRECEDING": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.PRIMARY_KEY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.PROCEDURE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.PROPERTIES": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.PSEUDO_TYPE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.QUALIFY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.QUOTE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.RANGE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.RECURSIVE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.REPLACE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.RESPECT_NULLS": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.RETURNING": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.REFERENCES": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.RIGHT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.RLIKE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ROLLBACK": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ROLLUP": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ROW": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ROWS": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SEED": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SELECT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SEMI": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SEPARATOR": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SERDE_PROPERTIES": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SET": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SHOW": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SIMILAR_TO": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SOME": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SORTKEY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SORT_BY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.STRUCT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.TABLE_SAMPLE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.TEMPORARY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.TOP": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.THEN": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.TRAILING": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.TRUE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.UNBOUNDED": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.UNCACHE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.UNION": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.UNLOGGED": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.UNNEST": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.UNPIVOT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.UPDATE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.USE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.USING": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.VALUES": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.VIEW": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.VOLATILE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.WHEN": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.WHERE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.WINDOW": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.WITH": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.WITH_TIME_ZONE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.WITH_LOCAL_TIME_ZONE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.WITHIN_GROUP": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.WITHOUT_TIME_ZONE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.UNIQUE": {"tf": 1.4142135623730951}}, "df": 395, "f": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.pretty": {"tf": 1}, "sqlglot.tokens.TokenType.FALSE": {"tf": 1.4142135623730951}}, "df": 2}}}, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {"sqlglot.tokens.TokenType.FARROW": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.DataType.Type.FLOAT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.FLOAT": {"tf": 1.4142135623730951}}, "df": 2}}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {"sqlglot.tokens.TokenType.DISTINCT_FROM": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.FROM": {"tf": 1.4142135623730951}}, "df": 2}}}, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.tokens.TokenType.FETCH": {"tf": 1.4142135623730951}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.tokens.TokenType.FILTER": {"tf": 1.4142135623730951}}, "df": 1}}}}, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.tokens.TokenType.FINAL": {"tf": 1.4142135623730951}}, "df": 1}}}, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.FIRST": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.NULLS_FIRST": {"tf": 1.4142135623730951}}, "df": 2}}}}, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.tokens.TokenType.FOLLOWING": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}, "r": {"docs": {"sqlglot.tokens.TokenType.FOR": {"tf": 1.4142135623730951}}, "df": 1, "e": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.tokens.TokenType.FOREIGN_KEY": {"tf": 1.4142135623730951}}, "df": 1}}}}, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.FORMAT": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.tokens.TokenType.FULL": {"tf": 1.4142135623730951}}, "df": 1}}, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.tokens.TokenType.FUNCTION": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}, "l": {"docs": {"sqlglot.tokens.TokenType.L_PAREN": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.L_BRACKET": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.L_BRACE": {"tf": 1.4142135623730951}}, "df": 3, "t": {"docs": {"sqlglot.schema": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.DIALECT": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.BIGQUERY": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.CLICKHOUSE": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.DUCKDB": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.HIVE": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.MYSQL": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.ORACLE": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.POSTGRES": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.PRESTO": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.REDSHIFT": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.SNOWFLAKE": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.SPARK": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.SQLITE": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.STARROCKS": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.TABLEAU": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.TRINO": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.TSQL": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.DATABRICKS": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.DRILL": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.TERADATA": {"tf": 1}, "sqlglot.errors.ErrorLevel.IGNORE": {"tf": 1}, "sqlglot.errors.ErrorLevel.WARN": {"tf": 1}, "sqlglot.errors.ErrorLevel.RAISE": {"tf": 1}, "sqlglot.errors.ErrorLevel.IMMEDIATE": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_CREATE": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_NAME": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_SCHEMA": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_WITH": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_ALIAS": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_EXPRESSION": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_INDEX": {"tf": 1}, "sqlglot.expressions.Properties.Location.UNSUPPORTED": {"tf": 1}, "sqlglot.expressions.DataType.Type.CHAR": {"tf": 1}, "sqlglot.expressions.DataType.Type.NCHAR": {"tf": 1}, "sqlglot.expressions.DataType.Type.VARCHAR": {"tf": 1}, "sqlglot.expressions.DataType.Type.NVARCHAR": {"tf": 1}, "sqlglot.expressions.DataType.Type.TEXT": {"tf": 1}, "sqlglot.expressions.DataType.Type.MEDIUMTEXT": {"tf": 1}, "sqlglot.expressions.DataType.Type.LONGTEXT": {"tf": 1}, "sqlglot.expressions.DataType.Type.MEDIUMBLOB": {"tf": 1}, "sqlglot.expressions.DataType.Type.LONGBLOB": {"tf": 1}, "sqlglot.expressions.DataType.Type.BINARY": {"tf": 1}, "sqlglot.expressions.DataType.Type.VARBINARY": {"tf": 1}, "sqlglot.expressions.DataType.Type.INT": {"tf": 1}, "sqlglot.expressions.DataType.Type.UINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.TINYINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.UTINYINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.SMALLINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.USMALLINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.BIGINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.UBIGINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.FLOAT": {"tf": 1}, "sqlglot.expressions.DataType.Type.DOUBLE": {"tf": 1}, "sqlglot.expressions.DataType.Type.DECIMAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.BIGDECIMAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.BIT": {"tf": 1}, "sqlglot.expressions.DataType.Type.BOOLEAN": {"tf": 1}, "sqlglot.expressions.DataType.Type.JSON": {"tf": 1}, "sqlglot.expressions.DataType.Type.JSONB": {"tf": 1}, "sqlglot.expressions.DataType.Type.INTERVAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.TIME": {"tf": 1}, "sqlglot.expressions.DataType.Type.TIMESTAMP": {"tf": 1}, "sqlglot.expressions.DataType.Type.TIMESTAMPTZ": {"tf": 1}, "sqlglot.expressions.DataType.Type.TIMESTAMPLTZ": {"tf": 1}, "sqlglot.expressions.DataType.Type.DATE": {"tf": 1}, "sqlglot.expressions.DataType.Type.DATETIME": {"tf": 1}, "sqlglot.expressions.DataType.Type.ARRAY": {"tf": 1}, "sqlglot.expressions.DataType.Type.MAP": {"tf": 1}, "sqlglot.expressions.DataType.Type.UUID": {"tf": 1}, "sqlglot.expressions.DataType.Type.GEOGRAPHY": {"tf": 1}, "sqlglot.expressions.DataType.Type.GEOMETRY": {"tf": 1}, "sqlglot.expressions.DataType.Type.STRUCT": {"tf": 1}, "sqlglot.expressions.DataType.Type.NULLABLE": {"tf": 1}, "sqlglot.expressions.DataType.Type.HLLSKETCH": {"tf": 1}, "sqlglot.expressions.DataType.Type.HSTORE": {"tf": 1}, "sqlglot.expressions.DataType.Type.SUPER": {"tf": 1}, "sqlglot.expressions.DataType.Type.SERIAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.SMALLSERIAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.BIGSERIAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.XML": {"tf": 1}, "sqlglot.expressions.DataType.Type.UNIQUEIDENTIFIER": {"tf": 1}, "sqlglot.expressions.DataType.Type.MONEY": {"tf": 1}, "sqlglot.expressions.DataType.Type.SMALLMONEY": {"tf": 1}, "sqlglot.expressions.DataType.Type.ROWVERSION": {"tf": 1}, "sqlglot.expressions.DataType.Type.IMAGE": {"tf": 1}, "sqlglot.expressions.DataType.Type.VARIANT": {"tf": 1}, "sqlglot.expressions.DataType.Type.OBJECT": {"tf": 1}, "sqlglot.expressions.DataType.Type.INET": {"tf": 1}, "sqlglot.expressions.DataType.Type.NULL": {"tf": 1}, "sqlglot.expressions.DataType.Type.UNKNOWN": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.ROOT": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.SUBQUERY": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.DERIVED_TABLE": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.CTE": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.UNION": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.UDTF": {"tf": 1}, "sqlglot.tokens.TokenType.L_PAREN": {"tf": 1}, "sqlglot.tokens.TokenType.R_PAREN": {"tf": 1}, "sqlglot.tokens.TokenType.L_BRACKET": {"tf": 1}, "sqlglot.tokens.TokenType.R_BRACKET": {"tf": 1}, "sqlglot.tokens.TokenType.L_BRACE": {"tf": 1}, "sqlglot.tokens.TokenType.R_BRACE": {"tf": 1}, "sqlglot.tokens.TokenType.COMMA": {"tf": 1}, "sqlglot.tokens.TokenType.DOT": {"tf": 1}, "sqlglot.tokens.TokenType.DASH": {"tf": 1}, "sqlglot.tokens.TokenType.PLUS": {"tf": 1}, "sqlglot.tokens.TokenType.COLON": {"tf": 1}, "sqlglot.tokens.TokenType.DCOLON": {"tf": 1}, "sqlglot.tokens.TokenType.SEMICOLON": {"tf": 1}, "sqlglot.tokens.TokenType.STAR": {"tf": 1}, "sqlglot.tokens.TokenType.BACKSLASH": {"tf": 1}, "sqlglot.tokens.TokenType.SLASH": {"tf": 1}, "sqlglot.tokens.TokenType.LT": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.LTE": {"tf": 1}, "sqlglot.tokens.TokenType.GT": {"tf": 1}, "sqlglot.tokens.TokenType.GTE": {"tf": 1}, "sqlglot.tokens.TokenType.NOT": {"tf": 1}, "sqlglot.tokens.TokenType.EQ": {"tf": 1}, "sqlglot.tokens.TokenType.NEQ": {"tf": 1}, "sqlglot.tokens.TokenType.NULLSAFE_EQ": {"tf": 1}, "sqlglot.tokens.TokenType.AND": {"tf": 1}, "sqlglot.tokens.TokenType.OR": {"tf": 1}, "sqlglot.tokens.TokenType.AMP": {"tf": 1}, "sqlglot.tokens.TokenType.DPIPE": {"tf": 1}, "sqlglot.tokens.TokenType.PIPE": {"tf": 1}, "sqlglot.tokens.TokenType.CARET": {"tf": 1}, "sqlglot.tokens.TokenType.TILDA": {"tf": 1}, "sqlglot.tokens.TokenType.ARROW": {"tf": 1}, "sqlglot.tokens.TokenType.DARROW": {"tf": 1}, "sqlglot.tokens.TokenType.FARROW": {"tf": 1}, "sqlglot.tokens.TokenType.HASH": {"tf": 1}, "sqlglot.tokens.TokenType.HASH_ARROW": {"tf": 1}, "sqlglot.tokens.TokenType.DHASH_ARROW": {"tf": 1}, "sqlglot.tokens.TokenType.LR_ARROW": {"tf": 1}, "sqlglot.tokens.TokenType.LT_AT": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.AT_GT": {"tf": 1}, "sqlglot.tokens.TokenType.DOLLAR": {"tf": 1}, "sqlglot.tokens.TokenType.PARAMETER": {"tf": 1}, "sqlglot.tokens.TokenType.SESSION_PARAMETER": {"tf": 1}, "sqlglot.tokens.TokenType.NATIONAL": {"tf": 1}, "sqlglot.tokens.TokenType.DAMP": {"tf": 1}, "sqlglot.tokens.TokenType.BLOCK_START": {"tf": 1}, "sqlglot.tokens.TokenType.BLOCK_END": {"tf": 1}, "sqlglot.tokens.TokenType.SPACE": {"tf": 1}, "sqlglot.tokens.TokenType.BREAK": {"tf": 1}, "sqlglot.tokens.TokenType.STRING": {"tf": 1}, "sqlglot.tokens.TokenType.NUMBER": {"tf": 1}, "sqlglot.tokens.TokenType.IDENTIFIER": {"tf": 1}, "sqlglot.tokens.TokenType.DATABASE": {"tf": 1}, "sqlglot.tokens.TokenType.COLUMN": {"tf": 1}, "sqlglot.tokens.TokenType.COLUMN_DEF": {"tf": 1}, "sqlglot.tokens.TokenType.SCHEMA": {"tf": 1}, "sqlglot.tokens.TokenType.TABLE": {"tf": 1}, "sqlglot.tokens.TokenType.VAR": {"tf": 1}, "sqlglot.tokens.TokenType.BIT_STRING": {"tf": 1}, "sqlglot.tokens.TokenType.HEX_STRING": {"tf": 1}, "sqlglot.tokens.TokenType.BYTE_STRING": {"tf": 1}, "sqlglot.tokens.TokenType.BIT": {"tf": 1}, "sqlglot.tokens.TokenType.BOOLEAN": {"tf": 1}, "sqlglot.tokens.TokenType.TINYINT": {"tf": 1}, "sqlglot.tokens.TokenType.UTINYINT": {"tf": 1}, "sqlglot.tokens.TokenType.SMALLINT": {"tf": 1}, "sqlglot.tokens.TokenType.USMALLINT": {"tf": 1}, "sqlglot.tokens.TokenType.INT": {"tf": 1}, "sqlglot.tokens.TokenType.UINT": {"tf": 1}, "sqlglot.tokens.TokenType.BIGINT": {"tf": 1}, "sqlglot.tokens.TokenType.UBIGINT": {"tf": 1}, "sqlglot.tokens.TokenType.FLOAT": {"tf": 1}, "sqlglot.tokens.TokenType.DOUBLE": {"tf": 1}, "sqlglot.tokens.TokenType.DECIMAL": {"tf": 1}, "sqlglot.tokens.TokenType.BIGDECIMAL": {"tf": 1}, "sqlglot.tokens.TokenType.CHAR": {"tf": 1}, "sqlglot.tokens.TokenType.NCHAR": {"tf": 1}, "sqlglot.tokens.TokenType.VARCHAR": {"tf": 1}, "sqlglot.tokens.TokenType.NVARCHAR": {"tf": 1}, "sqlglot.tokens.TokenType.TEXT": {"tf": 1}, "sqlglot.tokens.TokenType.MEDIUMTEXT": {"tf": 1}, "sqlglot.tokens.TokenType.LONGTEXT": {"tf": 1}, "sqlglot.tokens.TokenType.MEDIUMBLOB": {"tf": 1}, "sqlglot.tokens.TokenType.LONGBLOB": {"tf": 1}, "sqlglot.tokens.TokenType.BINARY": {"tf": 1}, "sqlglot.tokens.TokenType.VARBINARY": {"tf": 1}, "sqlglot.tokens.TokenType.JSON": {"tf": 1}, "sqlglot.tokens.TokenType.JSONB": {"tf": 1}, "sqlglot.tokens.TokenType.TIME": {"tf": 1}, "sqlglot.tokens.TokenType.TIMESTAMP": {"tf": 1}, "sqlglot.tokens.TokenType.TIMESTAMPTZ": {"tf": 1}, "sqlglot.tokens.TokenType.TIMESTAMPLTZ": {"tf": 1}, "sqlglot.tokens.TokenType.DATETIME": {"tf": 1}, "sqlglot.tokens.TokenType.DATE": {"tf": 1}, "sqlglot.tokens.TokenType.UUID": {"tf": 1}, "sqlglot.tokens.TokenType.GEOGRAPHY": {"tf": 1}, "sqlglot.tokens.TokenType.NULLABLE": {"tf": 1}, "sqlglot.tokens.TokenType.GEOMETRY": {"tf": 1}, "sqlglot.tokens.TokenType.HLLSKETCH": {"tf": 1}, "sqlglot.tokens.TokenType.HSTORE": {"tf": 1}, "sqlglot.tokens.TokenType.SUPER": {"tf": 1}, "sqlglot.tokens.TokenType.SERIAL": {"tf": 1}, "sqlglot.tokens.TokenType.SMALLSERIAL": {"tf": 1}, "sqlglot.tokens.TokenType.BIGSERIAL": {"tf": 1}, "sqlglot.tokens.TokenType.XML": {"tf": 1}, "sqlglot.tokens.TokenType.UNIQUEIDENTIFIER": {"tf": 1}, "sqlglot.tokens.TokenType.MONEY": {"tf": 1}, "sqlglot.tokens.TokenType.SMALLMONEY": {"tf": 1}, "sqlglot.tokens.TokenType.ROWVERSION": {"tf": 1}, "sqlglot.tokens.TokenType.IMAGE": {"tf": 1}, "sqlglot.tokens.TokenType.VARIANT": {"tf": 1}, "sqlglot.tokens.TokenType.OBJECT": {"tf": 1}, "sqlglot.tokens.TokenType.INET": {"tf": 1}, "sqlglot.tokens.TokenType.ALIAS": {"tf": 1}, "sqlglot.tokens.TokenType.ALTER": {"tf": 1}, "sqlglot.tokens.TokenType.ALWAYS": {"tf": 1}, "sqlglot.tokens.TokenType.ALL": {"tf": 1}, "sqlglot.tokens.TokenType.ANTI": {"tf": 1}, "sqlglot.tokens.TokenType.ANY": {"tf": 1}, "sqlglot.tokens.TokenType.APPLY": {"tf": 1}, "sqlglot.tokens.TokenType.ARRAY": {"tf": 1}, "sqlglot.tokens.TokenType.ASC": {"tf": 1}, "sqlglot.tokens.TokenType.ASOF": {"tf": 1}, "sqlglot.tokens.TokenType.AT_TIME_ZONE": {"tf": 1}, "sqlglot.tokens.TokenType.AUTO_INCREMENT": {"tf": 1}, "sqlglot.tokens.TokenType.BEGIN": {"tf": 1}, "sqlglot.tokens.TokenType.BETWEEN": {"tf": 1}, "sqlglot.tokens.TokenType.BOTH": {"tf": 1}, "sqlglot.tokens.TokenType.BUCKET": {"tf": 1}, "sqlglot.tokens.TokenType.BY_DEFAULT": {"tf": 1}, "sqlglot.tokens.TokenType.CACHE": {"tf": 1}, "sqlglot.tokens.TokenType.CASCADE": {"tf": 1}, "sqlglot.tokens.TokenType.CASE": {"tf": 1}, "sqlglot.tokens.TokenType.CHARACTER_SET": {"tf": 1}, "sqlglot.tokens.TokenType.CLUSTER_BY": {"tf": 1}, "sqlglot.tokens.TokenType.COLLATE": {"tf": 1}, "sqlglot.tokens.TokenType.COMMAND": {"tf": 1}, "sqlglot.tokens.TokenType.COMMENT": {"tf": 1}, "sqlglot.tokens.TokenType.COMMIT": {"tf": 1}, "sqlglot.tokens.TokenType.COMPOUND": {"tf": 1}, "sqlglot.tokens.TokenType.CONSTRAINT": {"tf": 1}, "sqlglot.tokens.TokenType.CREATE": {"tf": 1}, "sqlglot.tokens.TokenType.CROSS": {"tf": 1}, "sqlglot.tokens.TokenType.CUBE": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_DATE": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_DATETIME": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_ROW": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_TIME": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_TIMESTAMP": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_USER": {"tf": 1}, "sqlglot.tokens.TokenType.DEFAULT": {"tf": 1}, "sqlglot.tokens.TokenType.DELETE": {"tf": 1}, "sqlglot.tokens.TokenType.DESC": {"tf": 1}, "sqlglot.tokens.TokenType.DESCRIBE": {"tf": 1}, "sqlglot.tokens.TokenType.DISTINCT": {"tf": 1}, "sqlglot.tokens.TokenType.DISTINCT_FROM": {"tf": 1}, "sqlglot.tokens.TokenType.DISTRIBUTE_BY": {"tf": 1}, "sqlglot.tokens.TokenType.DIV": {"tf": 1}, "sqlglot.tokens.TokenType.DROP": {"tf": 1}, "sqlglot.tokens.TokenType.ELSE": {"tf": 1}, "sqlglot.tokens.TokenType.END": {"tf": 1}, "sqlglot.tokens.TokenType.ESCAPE": {"tf": 1}, "sqlglot.tokens.TokenType.EXCEPT": {"tf": 1}, "sqlglot.tokens.TokenType.EXECUTE": {"tf": 1}, "sqlglot.tokens.TokenType.EXISTS": {"tf": 1}, "sqlglot.tokens.TokenType.FALSE": {"tf": 1}, "sqlglot.tokens.TokenType.FETCH": {"tf": 1}, "sqlglot.tokens.TokenType.FILTER": {"tf": 1}, "sqlglot.tokens.TokenType.FINAL": {"tf": 1}, "sqlglot.tokens.TokenType.FIRST": {"tf": 1}, "sqlglot.tokens.TokenType.FOLLOWING": {"tf": 1}, "sqlglot.tokens.TokenType.FOR": {"tf": 1}, "sqlglot.tokens.TokenType.FOREIGN_KEY": {"tf": 1}, "sqlglot.tokens.TokenType.FORMAT": {"tf": 1}, "sqlglot.tokens.TokenType.FROM": {"tf": 1}, "sqlglot.tokens.TokenType.FULL": {"tf": 1}, "sqlglot.tokens.TokenType.FUNCTION": {"tf": 1}, "sqlglot.tokens.TokenType.GLOB": {"tf": 1}, "sqlglot.tokens.TokenType.GLOBAL": {"tf": 1}, "sqlglot.tokens.TokenType.GROUP_BY": {"tf": 1}, "sqlglot.tokens.TokenType.GROUPING_SETS": {"tf": 1}, "sqlglot.tokens.TokenType.HAVING": {"tf": 1}, "sqlglot.tokens.TokenType.HINT": {"tf": 1}, "sqlglot.tokens.TokenType.IF": {"tf": 1}, "sqlglot.tokens.TokenType.IGNORE_NULLS": {"tf": 1}, "sqlglot.tokens.TokenType.ILIKE": {"tf": 1}, "sqlglot.tokens.TokenType.ILIKE_ANY": {"tf": 1}, "sqlglot.tokens.TokenType.IN": {"tf": 1}, "sqlglot.tokens.TokenType.INDEX": {"tf": 1}, "sqlglot.tokens.TokenType.INNER": {"tf": 1}, "sqlglot.tokens.TokenType.INSERT": {"tf": 1}, "sqlglot.tokens.TokenType.INTERSECT": {"tf": 1}, "sqlglot.tokens.TokenType.INTERVAL": {"tf": 1}, "sqlglot.tokens.TokenType.INTO": {"tf": 1}, "sqlglot.tokens.TokenType.INTRODUCER": {"tf": 1}, "sqlglot.tokens.TokenType.IRLIKE": {"tf": 1}, "sqlglot.tokens.TokenType.IS": {"tf": 1}, "sqlglot.tokens.TokenType.ISNULL": {"tf": 1}, "sqlglot.tokens.TokenType.JOIN": {"tf": 1}, "sqlglot.tokens.TokenType.JOIN_MARKER": {"tf": 1}, "sqlglot.tokens.TokenType.LANGUAGE": {"tf": 1}, "sqlglot.tokens.TokenType.LATERAL": {"tf": 1}, "sqlglot.tokens.TokenType.LAZY": {"tf": 1}, "sqlglot.tokens.TokenType.LEADING": {"tf": 1}, "sqlglot.tokens.TokenType.LEFT": {"tf": 1}, "sqlglot.tokens.TokenType.LIKE": {"tf": 1}, "sqlglot.tokens.TokenType.LIKE_ANY": {"tf": 1}, "sqlglot.tokens.TokenType.LIMIT": {"tf": 1}, "sqlglot.tokens.TokenType.LOAD_DATA": {"tf": 1}, "sqlglot.tokens.TokenType.LOCAL": {"tf": 1}, "sqlglot.tokens.TokenType.MAP": {"tf": 1}, "sqlglot.tokens.TokenType.MATCH_RECOGNIZE": {"tf": 1}, "sqlglot.tokens.TokenType.MATERIALIZED": {"tf": 1}, "sqlglot.tokens.TokenType.MERGE": {"tf": 1}, "sqlglot.tokens.TokenType.MOD": {"tf": 1}, "sqlglot.tokens.TokenType.NATURAL": {"tf": 1}, "sqlglot.tokens.TokenType.NEXT": {"tf": 1}, "sqlglot.tokens.TokenType.NO_ACTION": {"tf": 1}, "sqlglot.tokens.TokenType.NOTNULL": {"tf": 1}, "sqlglot.tokens.TokenType.NULL": {"tf": 1}, "sqlglot.tokens.TokenType.NULLS_FIRST": {"tf": 1}, "sqlglot.tokens.TokenType.NULLS_LAST": {"tf": 1}, "sqlglot.tokens.TokenType.OFFSET": {"tf": 1}, "sqlglot.tokens.TokenType.ON": {"tf": 1}, "sqlglot.tokens.TokenType.ONLY": {"tf": 1}, "sqlglot.tokens.TokenType.OPTIONS": {"tf": 1}, "sqlglot.tokens.TokenType.ORDER_BY": {"tf": 1}, "sqlglot.tokens.TokenType.ORDERED": {"tf": 1}, "sqlglot.tokens.TokenType.ORDINALITY": {"tf": 1}, "sqlglot.tokens.TokenType.OUTER": {"tf": 1}, "sqlglot.tokens.TokenType.OUT_OF": {"tf": 1}, "sqlglot.tokens.TokenType.OVER": {"tf": 1}, "sqlglot.tokens.TokenType.OVERLAPS": {"tf": 1}, "sqlglot.tokens.TokenType.OVERWRITE": {"tf": 1}, "sqlglot.tokens.TokenType.PARTITION": {"tf": 1}, "sqlglot.tokens.TokenType.PARTITION_BY": {"tf": 1}, "sqlglot.tokens.TokenType.PERCENT": {"tf": 1}, "sqlglot.tokens.TokenType.PIVOT": {"tf": 1}, "sqlglot.tokens.TokenType.PLACEHOLDER": {"tf": 1}, "sqlglot.tokens.TokenType.PRAGMA": {"tf": 1}, "sqlglot.tokens.TokenType.PRECEDING": {"tf": 1}, "sqlglot.tokens.TokenType.PRIMARY_KEY": {"tf": 1}, "sqlglot.tokens.TokenType.PROCEDURE": {"tf": 1}, "sqlglot.tokens.TokenType.PROPERTIES": {"tf": 1}, "sqlglot.tokens.TokenType.PSEUDO_TYPE": {"tf": 1}, "sqlglot.tokens.TokenType.QUALIFY": {"tf": 1}, "sqlglot.tokens.TokenType.QUOTE": {"tf": 1}, "sqlglot.tokens.TokenType.RANGE": {"tf": 1}, "sqlglot.tokens.TokenType.RECURSIVE": {"tf": 1}, "sqlglot.tokens.TokenType.REPLACE": {"tf": 1}, "sqlglot.tokens.TokenType.RESPECT_NULLS": {"tf": 1}, "sqlglot.tokens.TokenType.RETURNING": {"tf": 1}, "sqlglot.tokens.TokenType.REFERENCES": {"tf": 1}, "sqlglot.tokens.TokenType.RIGHT": {"tf": 1}, "sqlglot.tokens.TokenType.RLIKE": {"tf": 1}, "sqlglot.tokens.TokenType.ROLLBACK": {"tf": 1}, "sqlglot.tokens.TokenType.ROLLUP": {"tf": 1}, "sqlglot.tokens.TokenType.ROW": {"tf": 1}, "sqlglot.tokens.TokenType.ROWS": {"tf": 1}, "sqlglot.tokens.TokenType.SEED": {"tf": 1}, "sqlglot.tokens.TokenType.SELECT": {"tf": 1}, "sqlglot.tokens.TokenType.SEMI": {"tf": 1}, "sqlglot.tokens.TokenType.SEPARATOR": {"tf": 1}, "sqlglot.tokens.TokenType.SERDE_PROPERTIES": {"tf": 1}, "sqlglot.tokens.TokenType.SET": {"tf": 1}, "sqlglot.tokens.TokenType.SHOW": {"tf": 1}, "sqlglot.tokens.TokenType.SIMILAR_TO": {"tf": 1}, "sqlglot.tokens.TokenType.SOME": {"tf": 1}, "sqlglot.tokens.TokenType.SORTKEY": {"tf": 1}, "sqlglot.tokens.TokenType.SORT_BY": {"tf": 1}, "sqlglot.tokens.TokenType.STRUCT": {"tf": 1}, "sqlglot.tokens.TokenType.TABLE_SAMPLE": {"tf": 1}, "sqlglot.tokens.TokenType.TEMPORARY": {"tf": 1}, "sqlglot.tokens.TokenType.TOP": {"tf": 1}, "sqlglot.tokens.TokenType.THEN": {"tf": 1}, "sqlglot.tokens.TokenType.TRAILING": {"tf": 1}, "sqlglot.tokens.TokenType.TRUE": {"tf": 1}, "sqlglot.tokens.TokenType.UNBOUNDED": {"tf": 1}, "sqlglot.tokens.TokenType.UNCACHE": {"tf": 1}, "sqlglot.tokens.TokenType.UNION": {"tf": 1}, "sqlglot.tokens.TokenType.UNLOGGED": {"tf": 1}, "sqlglot.tokens.TokenType.UNNEST": {"tf": 1}, "sqlglot.tokens.TokenType.UNPIVOT": {"tf": 1}, "sqlglot.tokens.TokenType.UPDATE": {"tf": 1}, "sqlglot.tokens.TokenType.USE": {"tf": 1}, "sqlglot.tokens.TokenType.USING": {"tf": 1}, "sqlglot.tokens.TokenType.VALUES": {"tf": 1}, "sqlglot.tokens.TokenType.VIEW": {"tf": 1}, "sqlglot.tokens.TokenType.VOLATILE": {"tf": 1}, "sqlglot.tokens.TokenType.WHEN": {"tf": 1}, "sqlglot.tokens.TokenType.WHERE": {"tf": 1}, "sqlglot.tokens.TokenType.WINDOW": {"tf": 1}, "sqlglot.tokens.TokenType.WITH": {"tf": 1}, "sqlglot.tokens.TokenType.WITH_TIME_ZONE": {"tf": 1}, "sqlglot.tokens.TokenType.WITH_LOCAL_TIME_ZONE": {"tf": 1}, "sqlglot.tokens.TokenType.WITHIN_GROUP": {"tf": 1}, "sqlglot.tokens.TokenType.WITHOUT_TIME_ZONE": {"tf": 1}, "sqlglot.tokens.TokenType.UNIQUE": {"tf": 1}}, "df": 395, "e": {"docs": {"sqlglot.tokens.TokenType.LTE": {"tf": 1.4142135623730951}}, "df": 1}}, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.Properties.Location.POST_CREATE": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_NAME": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_SCHEMA": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_WITH": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_ALIAS": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_EXPRESSION": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_INDEX": {"tf": 1}, "sqlglot.expressions.Properties.Location.UNSUPPORTED": {"tf": 1}}, "df": 8}}}}, "l": {"docs": {"sqlglot.tokens.TokenType.LOCAL": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.WITH_LOCAL_TIME_ZONE": {"tf": 1.4142135623730951}}, "df": 2}}}, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.DataType.Type.LONGTEXT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.LONGTEXT": {"tf": 1.4142135623730951}}, "df": 2}}}}, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "b": {"docs": {"sqlglot.expressions.DataType.Type.LONGBLOB": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.LONGBLOB": {"tf": 1.4142135623730951}}, "df": 2}}}}}}, "a": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.tokens.TokenType.LOAD_DATA": {"tf": 1.4142135623730951}}, "df": 1}}}, "r": {"docs": {"sqlglot.tokens.TokenType.LR_ARROW": {"tf": 1.4142135623730951}}, "df": 1}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.LANGUAGE": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.tokens.TokenType.LATERAL": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "z": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.tokens.TokenType.LAZY": {"tf": 1.4142135623730951}}, "df": 1}}, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.NULLS_LAST": {"tf": 1.4142135623730951}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.tokens.TokenType.LEADING": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "f": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.LEFT": {"tf": 1.4142135623730951}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.LIKE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.LIKE_ANY": {"tf": 1.4142135623730951}}, "df": 2}}, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.LIMIT": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "s": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.schema": {"tf": 1}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.Dialects.SQLITE": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.schema": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_SCHEMA": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SCHEMA": {"tf": 1.4142135623730951}}, "df": 3}}}}, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.scope.ScopeType.ROOT": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.SUBQUERY": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.DERIVED_TABLE": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.CTE": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.UNION": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.UDTF": {"tf": 1}}, "df": 6}}}}}}}}, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.Dialects.SNOWFLAKE": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.dialects.dialect.Dialects.SPARK": {"tf": 1.4142135623730951}}, "df": 1}}, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.SPACE": {"tf": 1.4142135623730951}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.tokens.TokenType.STAR": {"tf": 1.4142135623730951}}, "df": 1, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dialects.dialect.Dialects.STARROCKS": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "t": {"docs": {"sqlglot.tokens.TokenType.BLOCK_START": {"tf": 1.4142135623730951}}, "df": 1}}}, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.DataType.Type.STRUCT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.STRUCT": {"tf": 1.4142135623730951}}, "df": 2}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.tokens.TokenType.STRING": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.BIT_STRING": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.HEX_STRING": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.BYTE_STRING": {"tf": 1.4142135623730951}}, "df": 4}}}}}, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.DataType.Type.SMALLINT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SMALLINT": {"tf": 1.4142135623730951}}, "df": 2}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.expressions.DataType.Type.SMALLSERIAL": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SMALLSERIAL": {"tf": 1.4142135623730951}}, "df": 2}}}}}}, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.DataType.Type.SMALLMONEY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SMALLMONEY": {"tf": 1.4142135623730951}}, "df": 2}}}}}}}}}, "u": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.DataType.Type.SUPER": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SUPER": {"tf": 1.4142135623730951}}, "df": 2}}}, "b": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.optimizer.scope.ScopeType.SUBQUERY": {"tf": 1}}, "df": 1}}}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.expressions.DataType.Type.SERIAL": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SERIAL": {"tf": 1.4142135623730951}}, "df": 2}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.SERDE_PROPERTIES": {"tf": 1.4142135623730951}}, "df": 1}}}, "m": {"docs": {}, "df": 0, "i": {"docs": {"sqlglot.tokens.TokenType.SEMI": {"tf": 1.4142135623730951}}, "df": 1, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.tokens.TokenType.SEMICOLON": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.tokens.TokenType.SESSION_PARAMETER": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "t": {"docs": {"sqlglot.tokens.TokenType.CHARACTER_SET": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SET": {"tf": 1.4142135623730951}}, "df": 2, "s": {"docs": {"sqlglot.tokens.TokenType.GROUPING_SETS": {"tf": 1.4142135623730951}}, "df": 1}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.tokens.TokenType.SEED": {"tf": 1.4142135623730951}}, "df": 1}}, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.SELECT": {"tf": 1.4142135623730951}}, "df": 1}}}}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.tokens.TokenType.SEPARATOR": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.tokens.TokenType.SLASH": {"tf": 1.4142135623730951}}, "df": 1}}}}, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {"sqlglot.tokens.TokenType.SHOW": {"tf": 1.4142135623730951}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.tokens.TokenType.SIMILAR_TO": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.SOME": {"tf": 1.4142135623730951}}, "df": 1}}, "r": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.SORT_BY": {"tf": 1.4142135623730951}}, "df": 1, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.tokens.TokenType.SORTKEY": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.TABLE_SAMPLE": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.expressions.DataType.Type.MAP": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.MAP": {"tf": 1.4142135623730951}}, "df": 2, "p": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.schema": {"tf": 1}}, "df": 1}}}}}}}}}}}, "r": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.tokens.TokenType.JOIN_MARKER": {"tf": 1.4142135623730951}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.tokens.TokenType.MATCH_RECOGNIZE": {"tf": 1.4142135623730951}}, "df": 1}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.tokens.TokenType.MATERIALIZED": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}}}}, "y": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.dialects.dialect.Dialects.MYSQL": {"tf": 1.4142135623730951}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.DataType.Type.MEDIUMTEXT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.MEDIUMTEXT": {"tf": 1.4142135623730951}}, "df": 2}}}}, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "b": {"docs": {"sqlglot.expressions.DataType.Type.MEDIUMBLOB": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.MEDIUMBLOB": {"tf": 1.4142135623730951}}, "df": 2}}}}}}}}, "r": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.MERGE": {"tf": 1.4142135623730951}}, "df": 1}}}}, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.DataType.Type.MONEY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.MONEY": {"tf": 1.4142135623730951}}, "df": 2}}}, "d": {"docs": {"sqlglot.tokens.TokenType.MOD": {"tf": 1.4142135623730951}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "j": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.schema": {"tf": 1}, "sqlglot.expressions.DataType.Type.OBJECT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.OBJECT": {"tf": 1.4142135623730951}}, "df": 3}}}}}, "r": {"docs": {"sqlglot.tokens.TokenType.OR": {"tf": 1.4142135623730951}}, "df": 1, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.Dialects.ORACLE": {"tf": 1.4142135623730951}}, "df": 1}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.tokens.TokenType.ORDER_BY": {"tf": 1.4142135623730951}}, "df": 1, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.tokens.TokenType.ORDERED": {"tf": 1.4142135623730951}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.tokens.TokenType.ORDINALITY": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}}, "f": {"docs": {"sqlglot.tokens.TokenType.OUT_OF": {"tf": 1.4142135623730951}}, "df": 1, "f": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.OFFSET": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "n": {"docs": {"sqlglot.tokens.TokenType.ON": {"tf": 1.4142135623730951}}, "df": 1, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.tokens.TokenType.ONLY": {"tf": 1.4142135623730951}}, "df": 1}}}, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.tokens.TokenType.OPTIONS": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "u": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.OUT_OF": {"tf": 1.4142135623730951}}, "df": 1, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.tokens.TokenType.OUTER": {"tf": 1.4142135623730951}}, "df": 1}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.tokens.TokenType.OVER": {"tf": 1.4142135623730951}}, "df": 1, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.tokens.TokenType.OVERLAPS": {"tf": 1.4142135623730951}}, "df": 1}}}}, "w": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.OVERWRITE": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}}, "g": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.schema": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.DIALECT": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.BIGQUERY": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.CLICKHOUSE": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.DUCKDB": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.HIVE": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.MYSQL": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.ORACLE": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.POSTGRES": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.PRESTO": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.REDSHIFT": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.SNOWFLAKE": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.SPARK": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.SQLITE": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.STARROCKS": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.TABLEAU": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.TRINO": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.TSQL": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.DATABRICKS": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.DRILL": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.TERADATA": {"tf": 1}, "sqlglot.errors.ErrorLevel.IGNORE": {"tf": 1}, "sqlglot.errors.ErrorLevel.WARN": {"tf": 1}, "sqlglot.errors.ErrorLevel.RAISE": {"tf": 1}, "sqlglot.errors.ErrorLevel.IMMEDIATE": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_CREATE": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_NAME": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_SCHEMA": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_WITH": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_ALIAS": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_EXPRESSION": {"tf": 1}, "sqlglot.expressions.Properties.Location.POST_INDEX": {"tf": 1}, "sqlglot.expressions.Properties.Location.UNSUPPORTED": {"tf": 1}, "sqlglot.expressions.DataType.Type.CHAR": {"tf": 1}, "sqlglot.expressions.DataType.Type.NCHAR": {"tf": 1}, "sqlglot.expressions.DataType.Type.VARCHAR": {"tf": 1}, "sqlglot.expressions.DataType.Type.NVARCHAR": {"tf": 1}, "sqlglot.expressions.DataType.Type.TEXT": {"tf": 1}, "sqlglot.expressions.DataType.Type.MEDIUMTEXT": {"tf": 1}, "sqlglot.expressions.DataType.Type.LONGTEXT": {"tf": 1}, "sqlglot.expressions.DataType.Type.MEDIUMBLOB": {"tf": 1}, "sqlglot.expressions.DataType.Type.LONGBLOB": {"tf": 1}, "sqlglot.expressions.DataType.Type.BINARY": {"tf": 1}, "sqlglot.expressions.DataType.Type.VARBINARY": {"tf": 1}, "sqlglot.expressions.DataType.Type.INT": {"tf": 1}, "sqlglot.expressions.DataType.Type.UINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.TINYINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.UTINYINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.SMALLINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.USMALLINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.BIGINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.UBIGINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.FLOAT": {"tf": 1}, "sqlglot.expressions.DataType.Type.DOUBLE": {"tf": 1}, "sqlglot.expressions.DataType.Type.DECIMAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.BIGDECIMAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.BIT": {"tf": 1}, "sqlglot.expressions.DataType.Type.BOOLEAN": {"tf": 1}, "sqlglot.expressions.DataType.Type.JSON": {"tf": 1}, "sqlglot.expressions.DataType.Type.JSONB": {"tf": 1}, "sqlglot.expressions.DataType.Type.INTERVAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.TIME": {"tf": 1}, "sqlglot.expressions.DataType.Type.TIMESTAMP": {"tf": 1}, "sqlglot.expressions.DataType.Type.TIMESTAMPTZ": {"tf": 1}, "sqlglot.expressions.DataType.Type.TIMESTAMPLTZ": {"tf": 1}, "sqlglot.expressions.DataType.Type.DATE": {"tf": 1}, "sqlglot.expressions.DataType.Type.DATETIME": {"tf": 1}, "sqlglot.expressions.DataType.Type.ARRAY": {"tf": 1}, "sqlglot.expressions.DataType.Type.MAP": {"tf": 1}, "sqlglot.expressions.DataType.Type.UUID": {"tf": 1}, "sqlglot.expressions.DataType.Type.GEOGRAPHY": {"tf": 1}, "sqlglot.expressions.DataType.Type.GEOMETRY": {"tf": 1}, "sqlglot.expressions.DataType.Type.STRUCT": {"tf": 1}, "sqlglot.expressions.DataType.Type.NULLABLE": {"tf": 1}, "sqlglot.expressions.DataType.Type.HLLSKETCH": {"tf": 1}, "sqlglot.expressions.DataType.Type.HSTORE": {"tf": 1}, "sqlglot.expressions.DataType.Type.SUPER": {"tf": 1}, "sqlglot.expressions.DataType.Type.SERIAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.SMALLSERIAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.BIGSERIAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.XML": {"tf": 1}, "sqlglot.expressions.DataType.Type.UNIQUEIDENTIFIER": {"tf": 1}, "sqlglot.expressions.DataType.Type.MONEY": {"tf": 1}, "sqlglot.expressions.DataType.Type.SMALLMONEY": {"tf": 1}, "sqlglot.expressions.DataType.Type.ROWVERSION": {"tf": 1}, "sqlglot.expressions.DataType.Type.IMAGE": {"tf": 1}, "sqlglot.expressions.DataType.Type.VARIANT": {"tf": 1}, "sqlglot.expressions.DataType.Type.OBJECT": {"tf": 1}, "sqlglot.expressions.DataType.Type.INET": {"tf": 1}, "sqlglot.expressions.DataType.Type.NULL": {"tf": 1}, "sqlglot.expressions.DataType.Type.UNKNOWN": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.ROOT": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.SUBQUERY": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.DERIVED_TABLE": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.CTE": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.UNION": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType.UDTF": {"tf": 1}, "sqlglot.tokens.TokenType.L_PAREN": {"tf": 1}, "sqlglot.tokens.TokenType.R_PAREN": {"tf": 1}, "sqlglot.tokens.TokenType.L_BRACKET": {"tf": 1}, "sqlglot.tokens.TokenType.R_BRACKET": {"tf": 1}, "sqlglot.tokens.TokenType.L_BRACE": {"tf": 1}, "sqlglot.tokens.TokenType.R_BRACE": {"tf": 1}, "sqlglot.tokens.TokenType.COMMA": {"tf": 1}, "sqlglot.tokens.TokenType.DOT": {"tf": 1}, "sqlglot.tokens.TokenType.DASH": {"tf": 1}, "sqlglot.tokens.TokenType.PLUS": {"tf": 1}, "sqlglot.tokens.TokenType.COLON": {"tf": 1}, "sqlglot.tokens.TokenType.DCOLON": {"tf": 1}, "sqlglot.tokens.TokenType.SEMICOLON": {"tf": 1}, "sqlglot.tokens.TokenType.STAR": {"tf": 1}, "sqlglot.tokens.TokenType.BACKSLASH": {"tf": 1}, "sqlglot.tokens.TokenType.SLASH": {"tf": 1}, "sqlglot.tokens.TokenType.LT": {"tf": 1}, "sqlglot.tokens.TokenType.LTE": {"tf": 1}, "sqlglot.tokens.TokenType.GT": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.GTE": {"tf": 1}, "sqlglot.tokens.TokenType.NOT": {"tf": 1}, "sqlglot.tokens.TokenType.EQ": {"tf": 1}, "sqlglot.tokens.TokenType.NEQ": {"tf": 1}, "sqlglot.tokens.TokenType.NULLSAFE_EQ": {"tf": 1}, "sqlglot.tokens.TokenType.AND": {"tf": 1}, "sqlglot.tokens.TokenType.OR": {"tf": 1}, "sqlglot.tokens.TokenType.AMP": {"tf": 1}, "sqlglot.tokens.TokenType.DPIPE": {"tf": 1}, "sqlglot.tokens.TokenType.PIPE": {"tf": 1}, "sqlglot.tokens.TokenType.CARET": {"tf": 1}, "sqlglot.tokens.TokenType.TILDA": {"tf": 1}, "sqlglot.tokens.TokenType.ARROW": {"tf": 1}, "sqlglot.tokens.TokenType.DARROW": {"tf": 1}, "sqlglot.tokens.TokenType.FARROW": {"tf": 1}, "sqlglot.tokens.TokenType.HASH": {"tf": 1}, "sqlglot.tokens.TokenType.HASH_ARROW": {"tf": 1}, "sqlglot.tokens.TokenType.DHASH_ARROW": {"tf": 1}, "sqlglot.tokens.TokenType.LR_ARROW": {"tf": 1}, "sqlglot.tokens.TokenType.LT_AT": {"tf": 1}, "sqlglot.tokens.TokenType.AT_GT": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.DOLLAR": {"tf": 1}, "sqlglot.tokens.TokenType.PARAMETER": {"tf": 1}, "sqlglot.tokens.TokenType.SESSION_PARAMETER": {"tf": 1}, "sqlglot.tokens.TokenType.NATIONAL": {"tf": 1}, "sqlglot.tokens.TokenType.DAMP": {"tf": 1}, "sqlglot.tokens.TokenType.BLOCK_START": {"tf": 1}, "sqlglot.tokens.TokenType.BLOCK_END": {"tf": 1}, "sqlglot.tokens.TokenType.SPACE": {"tf": 1}, "sqlglot.tokens.TokenType.BREAK": {"tf": 1}, "sqlglot.tokens.TokenType.STRING": {"tf": 1}, "sqlglot.tokens.TokenType.NUMBER": {"tf": 1}, "sqlglot.tokens.TokenType.IDENTIFIER": {"tf": 1}, "sqlglot.tokens.TokenType.DATABASE": {"tf": 1}, "sqlglot.tokens.TokenType.COLUMN": {"tf": 1}, "sqlglot.tokens.TokenType.COLUMN_DEF": {"tf": 1}, "sqlglot.tokens.TokenType.SCHEMA": {"tf": 1}, "sqlglot.tokens.TokenType.TABLE": {"tf": 1}, "sqlglot.tokens.TokenType.VAR": {"tf": 1}, "sqlglot.tokens.TokenType.BIT_STRING": {"tf": 1}, "sqlglot.tokens.TokenType.HEX_STRING": {"tf": 1}, "sqlglot.tokens.TokenType.BYTE_STRING": {"tf": 1}, "sqlglot.tokens.TokenType.BIT": {"tf": 1}, "sqlglot.tokens.TokenType.BOOLEAN": {"tf": 1}, "sqlglot.tokens.TokenType.TINYINT": {"tf": 1}, "sqlglot.tokens.TokenType.UTINYINT": {"tf": 1}, "sqlglot.tokens.TokenType.SMALLINT": {"tf": 1}, "sqlglot.tokens.TokenType.USMALLINT": {"tf": 1}, "sqlglot.tokens.TokenType.INT": {"tf": 1}, "sqlglot.tokens.TokenType.UINT": {"tf": 1}, "sqlglot.tokens.TokenType.BIGINT": {"tf": 1}, "sqlglot.tokens.TokenType.UBIGINT": {"tf": 1}, "sqlglot.tokens.TokenType.FLOAT": {"tf": 1}, "sqlglot.tokens.TokenType.DOUBLE": {"tf": 1}, "sqlglot.tokens.TokenType.DECIMAL": {"tf": 1}, "sqlglot.tokens.TokenType.BIGDECIMAL": {"tf": 1}, "sqlglot.tokens.TokenType.CHAR": {"tf": 1}, "sqlglot.tokens.TokenType.NCHAR": {"tf": 1}, "sqlglot.tokens.TokenType.VARCHAR": {"tf": 1}, "sqlglot.tokens.TokenType.NVARCHAR": {"tf": 1}, "sqlglot.tokens.TokenType.TEXT": {"tf": 1}, "sqlglot.tokens.TokenType.MEDIUMTEXT": {"tf": 1}, "sqlglot.tokens.TokenType.LONGTEXT": {"tf": 1}, "sqlglot.tokens.TokenType.MEDIUMBLOB": {"tf": 1}, "sqlglot.tokens.TokenType.LONGBLOB": {"tf": 1}, "sqlglot.tokens.TokenType.BINARY": {"tf": 1}, "sqlglot.tokens.TokenType.VARBINARY": {"tf": 1}, "sqlglot.tokens.TokenType.JSON": {"tf": 1}, "sqlglot.tokens.TokenType.JSONB": {"tf": 1}, "sqlglot.tokens.TokenType.TIME": {"tf": 1}, "sqlglot.tokens.TokenType.TIMESTAMP": {"tf": 1}, "sqlglot.tokens.TokenType.TIMESTAMPTZ": {"tf": 1}, "sqlglot.tokens.TokenType.TIMESTAMPLTZ": {"tf": 1}, "sqlglot.tokens.TokenType.DATETIME": {"tf": 1}, "sqlglot.tokens.TokenType.DATE": {"tf": 1}, "sqlglot.tokens.TokenType.UUID": {"tf": 1}, "sqlglot.tokens.TokenType.GEOGRAPHY": {"tf": 1}, "sqlglot.tokens.TokenType.NULLABLE": {"tf": 1}, "sqlglot.tokens.TokenType.GEOMETRY": {"tf": 1}, "sqlglot.tokens.TokenType.HLLSKETCH": {"tf": 1}, "sqlglot.tokens.TokenType.HSTORE": {"tf": 1}, "sqlglot.tokens.TokenType.SUPER": {"tf": 1}, "sqlglot.tokens.TokenType.SERIAL": {"tf": 1}, "sqlglot.tokens.TokenType.SMALLSERIAL": {"tf": 1}, "sqlglot.tokens.TokenType.BIGSERIAL": {"tf": 1}, "sqlglot.tokens.TokenType.XML": {"tf": 1}, "sqlglot.tokens.TokenType.UNIQUEIDENTIFIER": {"tf": 1}, "sqlglot.tokens.TokenType.MONEY": {"tf": 1}, "sqlglot.tokens.TokenType.SMALLMONEY": {"tf": 1}, "sqlglot.tokens.TokenType.ROWVERSION": {"tf": 1}, "sqlglot.tokens.TokenType.IMAGE": {"tf": 1}, "sqlglot.tokens.TokenType.VARIANT": {"tf": 1}, "sqlglot.tokens.TokenType.OBJECT": {"tf": 1}, "sqlglot.tokens.TokenType.INET": {"tf": 1}, "sqlglot.tokens.TokenType.ALIAS": {"tf": 1}, "sqlglot.tokens.TokenType.ALTER": {"tf": 1}, "sqlglot.tokens.TokenType.ALWAYS": {"tf": 1}, "sqlglot.tokens.TokenType.ALL": {"tf": 1}, "sqlglot.tokens.TokenType.ANTI": {"tf": 1}, "sqlglot.tokens.TokenType.ANY": {"tf": 1}, "sqlglot.tokens.TokenType.APPLY": {"tf": 1}, "sqlglot.tokens.TokenType.ARRAY": {"tf": 1}, "sqlglot.tokens.TokenType.ASC": {"tf": 1}, "sqlglot.tokens.TokenType.ASOF": {"tf": 1}, "sqlglot.tokens.TokenType.AT_TIME_ZONE": {"tf": 1}, "sqlglot.tokens.TokenType.AUTO_INCREMENT": {"tf": 1}, "sqlglot.tokens.TokenType.BEGIN": {"tf": 1}, "sqlglot.tokens.TokenType.BETWEEN": {"tf": 1}, "sqlglot.tokens.TokenType.BOTH": {"tf": 1}, "sqlglot.tokens.TokenType.BUCKET": {"tf": 1}, "sqlglot.tokens.TokenType.BY_DEFAULT": {"tf": 1}, "sqlglot.tokens.TokenType.CACHE": {"tf": 1}, "sqlglot.tokens.TokenType.CASCADE": {"tf": 1}, "sqlglot.tokens.TokenType.CASE": {"tf": 1}, "sqlglot.tokens.TokenType.CHARACTER_SET": {"tf": 1}, "sqlglot.tokens.TokenType.CLUSTER_BY": {"tf": 1}, "sqlglot.tokens.TokenType.COLLATE": {"tf": 1}, "sqlglot.tokens.TokenType.COMMAND": {"tf": 1}, "sqlglot.tokens.TokenType.COMMENT": {"tf": 1}, "sqlglot.tokens.TokenType.COMMIT": {"tf": 1}, "sqlglot.tokens.TokenType.COMPOUND": {"tf": 1}, "sqlglot.tokens.TokenType.CONSTRAINT": {"tf": 1}, "sqlglot.tokens.TokenType.CREATE": {"tf": 1}, "sqlglot.tokens.TokenType.CROSS": {"tf": 1}, "sqlglot.tokens.TokenType.CUBE": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_DATE": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_DATETIME": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_ROW": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_TIME": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_TIMESTAMP": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_USER": {"tf": 1}, "sqlglot.tokens.TokenType.DEFAULT": {"tf": 1}, "sqlglot.tokens.TokenType.DELETE": {"tf": 1}, "sqlglot.tokens.TokenType.DESC": {"tf": 1}, "sqlglot.tokens.TokenType.DESCRIBE": {"tf": 1}, "sqlglot.tokens.TokenType.DISTINCT": {"tf": 1}, "sqlglot.tokens.TokenType.DISTINCT_FROM": {"tf": 1}, "sqlglot.tokens.TokenType.DISTRIBUTE_BY": {"tf": 1}, "sqlglot.tokens.TokenType.DIV": {"tf": 1}, "sqlglot.tokens.TokenType.DROP": {"tf": 1}, "sqlglot.tokens.TokenType.ELSE": {"tf": 1}, "sqlglot.tokens.TokenType.END": {"tf": 1}, "sqlglot.tokens.TokenType.ESCAPE": {"tf": 1}, "sqlglot.tokens.TokenType.EXCEPT": {"tf": 1}, "sqlglot.tokens.TokenType.EXECUTE": {"tf": 1}, "sqlglot.tokens.TokenType.EXISTS": {"tf": 1}, "sqlglot.tokens.TokenType.FALSE": {"tf": 1}, "sqlglot.tokens.TokenType.FETCH": {"tf": 1}, "sqlglot.tokens.TokenType.FILTER": {"tf": 1}, "sqlglot.tokens.TokenType.FINAL": {"tf": 1}, "sqlglot.tokens.TokenType.FIRST": {"tf": 1}, "sqlglot.tokens.TokenType.FOLLOWING": {"tf": 1}, "sqlglot.tokens.TokenType.FOR": {"tf": 1}, "sqlglot.tokens.TokenType.FOREIGN_KEY": {"tf": 1}, "sqlglot.tokens.TokenType.FORMAT": {"tf": 1}, "sqlglot.tokens.TokenType.FROM": {"tf": 1}, "sqlglot.tokens.TokenType.FULL": {"tf": 1}, "sqlglot.tokens.TokenType.FUNCTION": {"tf": 1}, "sqlglot.tokens.TokenType.GLOB": {"tf": 1}, "sqlglot.tokens.TokenType.GLOBAL": {"tf": 1}, "sqlglot.tokens.TokenType.GROUP_BY": {"tf": 1}, "sqlglot.tokens.TokenType.GROUPING_SETS": {"tf": 1}, "sqlglot.tokens.TokenType.HAVING": {"tf": 1}, "sqlglot.tokens.TokenType.HINT": {"tf": 1}, "sqlglot.tokens.TokenType.IF": {"tf": 1}, "sqlglot.tokens.TokenType.IGNORE_NULLS": {"tf": 1}, "sqlglot.tokens.TokenType.ILIKE": {"tf": 1}, "sqlglot.tokens.TokenType.ILIKE_ANY": {"tf": 1}, "sqlglot.tokens.TokenType.IN": {"tf": 1}, "sqlglot.tokens.TokenType.INDEX": {"tf": 1}, "sqlglot.tokens.TokenType.INNER": {"tf": 1}, "sqlglot.tokens.TokenType.INSERT": {"tf": 1}, "sqlglot.tokens.TokenType.INTERSECT": {"tf": 1}, "sqlglot.tokens.TokenType.INTERVAL": {"tf": 1}, "sqlglot.tokens.TokenType.INTO": {"tf": 1}, "sqlglot.tokens.TokenType.INTRODUCER": {"tf": 1}, "sqlglot.tokens.TokenType.IRLIKE": {"tf": 1}, "sqlglot.tokens.TokenType.IS": {"tf": 1}, "sqlglot.tokens.TokenType.ISNULL": {"tf": 1}, "sqlglot.tokens.TokenType.JOIN": {"tf": 1}, "sqlglot.tokens.TokenType.JOIN_MARKER": {"tf": 1}, "sqlglot.tokens.TokenType.LANGUAGE": {"tf": 1}, "sqlglot.tokens.TokenType.LATERAL": {"tf": 1}, "sqlglot.tokens.TokenType.LAZY": {"tf": 1}, "sqlglot.tokens.TokenType.LEADING": {"tf": 1}, "sqlglot.tokens.TokenType.LEFT": {"tf": 1}, "sqlglot.tokens.TokenType.LIKE": {"tf": 1}, "sqlglot.tokens.TokenType.LIKE_ANY": {"tf": 1}, "sqlglot.tokens.TokenType.LIMIT": {"tf": 1}, "sqlglot.tokens.TokenType.LOAD_DATA": {"tf": 1}, "sqlglot.tokens.TokenType.LOCAL": {"tf": 1}, "sqlglot.tokens.TokenType.MAP": {"tf": 1}, "sqlglot.tokens.TokenType.MATCH_RECOGNIZE": {"tf": 1}, "sqlglot.tokens.TokenType.MATERIALIZED": {"tf": 1}, "sqlglot.tokens.TokenType.MERGE": {"tf": 1}, "sqlglot.tokens.TokenType.MOD": {"tf": 1}, "sqlglot.tokens.TokenType.NATURAL": {"tf": 1}, "sqlglot.tokens.TokenType.NEXT": {"tf": 1}, "sqlglot.tokens.TokenType.NO_ACTION": {"tf": 1}, "sqlglot.tokens.TokenType.NOTNULL": {"tf": 1}, "sqlglot.tokens.TokenType.NULL": {"tf": 1}, "sqlglot.tokens.TokenType.NULLS_FIRST": {"tf": 1}, "sqlglot.tokens.TokenType.NULLS_LAST": {"tf": 1}, "sqlglot.tokens.TokenType.OFFSET": {"tf": 1}, "sqlglot.tokens.TokenType.ON": {"tf": 1}, "sqlglot.tokens.TokenType.ONLY": {"tf": 1}, "sqlglot.tokens.TokenType.OPTIONS": {"tf": 1}, "sqlglot.tokens.TokenType.ORDER_BY": {"tf": 1}, "sqlglot.tokens.TokenType.ORDERED": {"tf": 1}, "sqlglot.tokens.TokenType.ORDINALITY": {"tf": 1}, "sqlglot.tokens.TokenType.OUTER": {"tf": 1}, "sqlglot.tokens.TokenType.OUT_OF": {"tf": 1}, "sqlglot.tokens.TokenType.OVER": {"tf": 1}, "sqlglot.tokens.TokenType.OVERLAPS": {"tf": 1}, "sqlglot.tokens.TokenType.OVERWRITE": {"tf": 1}, "sqlglot.tokens.TokenType.PARTITION": {"tf": 1}, "sqlglot.tokens.TokenType.PARTITION_BY": {"tf": 1}, "sqlglot.tokens.TokenType.PERCENT": {"tf": 1}, "sqlglot.tokens.TokenType.PIVOT": {"tf": 1}, "sqlglot.tokens.TokenType.PLACEHOLDER": {"tf": 1}, "sqlglot.tokens.TokenType.PRAGMA": {"tf": 1}, "sqlglot.tokens.TokenType.PRECEDING": {"tf": 1}, "sqlglot.tokens.TokenType.PRIMARY_KEY": {"tf": 1}, "sqlglot.tokens.TokenType.PROCEDURE": {"tf": 1}, "sqlglot.tokens.TokenType.PROPERTIES": {"tf": 1}, "sqlglot.tokens.TokenType.PSEUDO_TYPE": {"tf": 1}, "sqlglot.tokens.TokenType.QUALIFY": {"tf": 1}, "sqlglot.tokens.TokenType.QUOTE": {"tf": 1}, "sqlglot.tokens.TokenType.RANGE": {"tf": 1}, "sqlglot.tokens.TokenType.RECURSIVE": {"tf": 1}, "sqlglot.tokens.TokenType.REPLACE": {"tf": 1}, "sqlglot.tokens.TokenType.RESPECT_NULLS": {"tf": 1}, "sqlglot.tokens.TokenType.RETURNING": {"tf": 1}, "sqlglot.tokens.TokenType.REFERENCES": {"tf": 1}, "sqlglot.tokens.TokenType.RIGHT": {"tf": 1}, "sqlglot.tokens.TokenType.RLIKE": {"tf": 1}, "sqlglot.tokens.TokenType.ROLLBACK": {"tf": 1}, "sqlglot.tokens.TokenType.ROLLUP": {"tf": 1}, "sqlglot.tokens.TokenType.ROW": {"tf": 1}, "sqlglot.tokens.TokenType.ROWS": {"tf": 1}, "sqlglot.tokens.TokenType.SEED": {"tf": 1}, "sqlglot.tokens.TokenType.SELECT": {"tf": 1}, "sqlglot.tokens.TokenType.SEMI": {"tf": 1}, "sqlglot.tokens.TokenType.SEPARATOR": {"tf": 1}, "sqlglot.tokens.TokenType.SERDE_PROPERTIES": {"tf": 1}, "sqlglot.tokens.TokenType.SET": {"tf": 1}, "sqlglot.tokens.TokenType.SHOW": {"tf": 1}, "sqlglot.tokens.TokenType.SIMILAR_TO": {"tf": 1}, "sqlglot.tokens.TokenType.SOME": {"tf": 1}, "sqlglot.tokens.TokenType.SORTKEY": {"tf": 1}, "sqlglot.tokens.TokenType.SORT_BY": {"tf": 1}, "sqlglot.tokens.TokenType.STRUCT": {"tf": 1}, "sqlglot.tokens.TokenType.TABLE_SAMPLE": {"tf": 1}, "sqlglot.tokens.TokenType.TEMPORARY": {"tf": 1}, "sqlglot.tokens.TokenType.TOP": {"tf": 1}, "sqlglot.tokens.TokenType.THEN": {"tf": 1}, "sqlglot.tokens.TokenType.TRAILING": {"tf": 1}, "sqlglot.tokens.TokenType.TRUE": {"tf": 1}, "sqlglot.tokens.TokenType.UNBOUNDED": {"tf": 1}, "sqlglot.tokens.TokenType.UNCACHE": {"tf": 1}, "sqlglot.tokens.TokenType.UNION": {"tf": 1}, "sqlglot.tokens.TokenType.UNLOGGED": {"tf": 1}, "sqlglot.tokens.TokenType.UNNEST": {"tf": 1}, "sqlglot.tokens.TokenType.UNPIVOT": {"tf": 1}, "sqlglot.tokens.TokenType.UPDATE": {"tf": 1}, "sqlglot.tokens.TokenType.USE": {"tf": 1}, "sqlglot.tokens.TokenType.USING": {"tf": 1}, "sqlglot.tokens.TokenType.VALUES": {"tf": 1}, "sqlglot.tokens.TokenType.VIEW": {"tf": 1}, "sqlglot.tokens.TokenType.VOLATILE": {"tf": 1}, "sqlglot.tokens.TokenType.WHEN": {"tf": 1}, "sqlglot.tokens.TokenType.WHERE": {"tf": 1}, "sqlglot.tokens.TokenType.WINDOW": {"tf": 1}, "sqlglot.tokens.TokenType.WITH": {"tf": 1}, "sqlglot.tokens.TokenType.WITH_TIME_ZONE": {"tf": 1}, "sqlglot.tokens.TokenType.WITH_LOCAL_TIME_ZONE": {"tf": 1}, "sqlglot.tokens.TokenType.WITHIN_GROUP": {"tf": 1}, "sqlglot.tokens.TokenType.WITHOUT_TIME_ZONE": {"tf": 1}, "sqlglot.tokens.TokenType.UNIQUE": {"tf": 1}}, "df": 395, "e": {"docs": {"sqlglot.tokens.TokenType.GTE": {"tf": 1.4142135623730951}}, "df": 1}}, "e": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.DataType.Type.GEOGRAPHY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.GEOGRAPHY": {"tf": 1.4142135623730951}}, "df": 2}}}}}}, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.DataType.Type.GEOMETRY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.GEOMETRY": {"tf": 1.4142135623730951}}, "df": 2}}}}}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "b": {"docs": {"sqlglot.tokens.TokenType.GLOB": {"tf": 1.4142135623730951}}, "df": 1, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.tokens.TokenType.GLOBAL": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.tokens.TokenType.GROUP_BY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.WITHIN_GROUP": {"tf": 1.4142135623730951}}, "df": 2, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.tokens.TokenType.GROUPING_SETS": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.dialect.Dialects.DIALECT": {"tf": 1}}, "df": 1, "s": {"docs": {"sqlglot.dialects.dialect.Dialects.DIALECT": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.BIGQUERY": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.CLICKHOUSE": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.DUCKDB": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.HIVE": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.MYSQL": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.ORACLE": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.POSTGRES": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.PRESTO": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.REDSHIFT": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.SNOWFLAKE": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.SPARK": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.SQLITE": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.STARROCKS": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.TABLEAU": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.TRINO": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.TSQL": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.DATABRICKS": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.DRILL": {"tf": 1}, "sqlglot.dialects.dialect.Dialects.TERADATA": {"tf": 1}}, "df": 20}}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.DISTINCT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DISTINCT_FROM": {"tf": 1.4142135623730951}}, "df": 2}}}}, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.DISTRIBUTE_BY": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}, "v": {"docs": {"sqlglot.tokens.TokenType.DIV": {"tf": 1.4142135623730951}}, "df": 1}}, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "b": {"docs": {"sqlglot.dialects.dialect.Dialects.DUCKDB": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.tokens.TokenType.LOAD_DATA": {"tf": 1.4142135623730951}}, "df": 1, "b": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dialects.dialect.Dialects.DATABRICKS": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.DATABASE": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "e": {"docs": {"sqlglot.expressions.DataType.Type.DATE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DATE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.CURRENT_DATE": {"tf": 1.4142135623730951}}, "df": 3, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.DataType.Type.DATETIME": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DATETIME": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.CURRENT_DATETIME": {"tf": 1.4142135623730951}}, "df": 3}}}}}}, "s": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.tokens.TokenType.DASH": {"tf": 1.4142135623730951}}, "df": 1}}, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {"sqlglot.tokens.TokenType.DARROW": {"tf": 1.4142135623730951}}, "df": 1}}}}, "m": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.tokens.TokenType.DAMP": {"tf": 1.4142135623730951}}, "df": 1}}}, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.dialects.dialect.Dialects.DRILL": {"tf": 1.4142135623730951}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.tokens.TokenType.DROP": {"tf": 1.4142135623730951}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.DataType.Type.DOUBLE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DOUBLE": {"tf": 1.4142135623730951}}, "df": 2}}}}, "t": {"docs": {"sqlglot.tokens.TokenType.DOT": {"tf": 1.4142135623730951}}, "df": 1}, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.tokens.TokenType.DOLLAR": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.expressions.DataType.Type.DECIMAL": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DECIMAL": {"tf": 1.4142135623730951}}, "df": 2}}}}}, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.optimizer.scope.ScopeType.DERIVED_TABLE": {"tf": 1}}, "df": 1}}}}}, "f": {"docs": {"sqlglot.tokens.TokenType.COLUMN_DEF": {"tf": 1.4142135623730951}}, "df": 1, "a": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.BY_DEFAULT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DEFAULT": {"tf": 1.4142135623730951}}, "df": 2}}}}}, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.DELETE": {"tf": 1.4142135623730951}}, "df": 1}}}}, "s": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot.tokens.TokenType.DESC": {"tf": 1.4142135623730951}}, "df": 1, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.DESCRIBE": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.tokens.TokenType.DCOLON": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "p": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.DPIPE": {"tf": 1.4142135623730951}}, "df": 1}}}}, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.tokens.TokenType.DHASH_ARROW": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "x": {"2": {"7": {"docs": {"sqlglot.dialects.dialect.Dialects.DIALECT": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.BIGQUERY": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.CLICKHOUSE": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.DUCKDB": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.HIVE": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.MYSQL": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.ORACLE": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.POSTGRES": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.PRESTO": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.REDSHIFT": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.SNOWFLAKE": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.SPARK": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.SQLITE": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.STARROCKS": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.TABLEAU": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.TRINO": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.TSQL": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.DATABRICKS": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.DRILL": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialects.TERADATA": {"tf": 1.4142135623730951}, "sqlglot.errors.ErrorLevel.IGNORE": {"tf": 1.4142135623730951}, "sqlglot.errors.ErrorLevel.WARN": {"tf": 1.4142135623730951}, "sqlglot.errors.ErrorLevel.RAISE": {"tf": 1.4142135623730951}, "sqlglot.errors.ErrorLevel.IMMEDIATE": {"tf": 1.4142135623730951}, "sqlglot.expressions.Properties.Location.POST_CREATE": {"tf": 1.4142135623730951}, "sqlglot.expressions.Properties.Location.POST_NAME": {"tf": 1.4142135623730951}, "sqlglot.expressions.Properties.Location.POST_SCHEMA": {"tf": 1.4142135623730951}, "sqlglot.expressions.Properties.Location.POST_WITH": {"tf": 1.4142135623730951}, "sqlglot.expressions.Properties.Location.POST_ALIAS": {"tf": 1.4142135623730951}, "sqlglot.expressions.Properties.Location.POST_EXPRESSION": {"tf": 1.4142135623730951}, "sqlglot.expressions.Properties.Location.POST_INDEX": {"tf": 1.4142135623730951}, "sqlglot.expressions.Properties.Location.UNSUPPORTED": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.CHAR": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.NCHAR": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.VARCHAR": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.NVARCHAR": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.TEXT": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.MEDIUMTEXT": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.LONGTEXT": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.MEDIUMBLOB": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.LONGBLOB": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.BINARY": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.VARBINARY": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.INT": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.UINT": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.TINYINT": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.UTINYINT": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.SMALLINT": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.USMALLINT": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.BIGINT": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.UBIGINT": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.FLOAT": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.DOUBLE": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.DECIMAL": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.BIGDECIMAL": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.BIT": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.BOOLEAN": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.JSON": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.JSONB": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.INTERVAL": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.TIME": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.TIMESTAMP": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.TIMESTAMPTZ": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.TIMESTAMPLTZ": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.DATE": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.DATETIME": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.ARRAY": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.MAP": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.UUID": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.GEOGRAPHY": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.GEOMETRY": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.STRUCT": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.NULLABLE": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.HLLSKETCH": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.HSTORE": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.SUPER": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.SERIAL": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.SMALLSERIAL": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.BIGSERIAL": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.XML": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.UNIQUEIDENTIFIER": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.MONEY": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.SMALLMONEY": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.ROWVERSION": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.IMAGE": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.VARIANT": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.OBJECT": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.INET": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.NULL": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.Type.UNKNOWN": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.L_PAREN": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.R_PAREN": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.L_BRACKET": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.R_BRACKET": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.L_BRACE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.R_BRACE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.COMMA": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DOT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DASH": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.PLUS": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.COLON": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DCOLON": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SEMICOLON": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.STAR": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.BACKSLASH": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SLASH": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.LT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.LTE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.GT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.GTE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.NOT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.EQ": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.NEQ": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.NULLSAFE_EQ": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.AND": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.OR": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.AMP": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DPIPE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.PIPE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.CARET": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.TILDA": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ARROW": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DARROW": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.FARROW": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.HASH": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.HASH_ARROW": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DHASH_ARROW": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.LR_ARROW": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.LT_AT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.AT_GT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DOLLAR": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.PARAMETER": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SESSION_PARAMETER": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.NATIONAL": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DAMP": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.BLOCK_START": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.BLOCK_END": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SPACE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.BREAK": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.STRING": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.NUMBER": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.IDENTIFIER": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DATABASE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.COLUMN": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.COLUMN_DEF": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SCHEMA": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.TABLE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.VAR": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.BIT_STRING": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.HEX_STRING": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.BYTE_STRING": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.BIT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.BOOLEAN": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.TINYINT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.UTINYINT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SMALLINT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.USMALLINT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.INT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.UINT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.BIGINT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.UBIGINT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.FLOAT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DOUBLE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DECIMAL": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.BIGDECIMAL": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.CHAR": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.NCHAR": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.VARCHAR": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.NVARCHAR": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.TEXT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.MEDIUMTEXT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.LONGTEXT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.MEDIUMBLOB": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.LONGBLOB": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.BINARY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.VARBINARY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.JSON": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.JSONB": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.TIME": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.TIMESTAMP": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.TIMESTAMPTZ": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.TIMESTAMPLTZ": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DATETIME": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DATE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.UUID": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.GEOGRAPHY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.NULLABLE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.GEOMETRY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.HLLSKETCH": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.HSTORE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SUPER": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SERIAL": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SMALLSERIAL": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.BIGSERIAL": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.XML": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.UNIQUEIDENTIFIER": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.MONEY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SMALLMONEY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ROWVERSION": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.IMAGE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.VARIANT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.OBJECT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.INET": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ALIAS": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ALTER": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ALWAYS": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ALL": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ANTI": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ANY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.APPLY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ARRAY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ASC": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ASOF": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.AT_TIME_ZONE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.AUTO_INCREMENT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.BEGIN": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.BETWEEN": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.BOTH": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.BUCKET": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.BY_DEFAULT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.CACHE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.CASCADE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.CASE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.CHARACTER_SET": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.CLUSTER_BY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.COLLATE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.COMMAND": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.COMMENT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.COMMIT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.COMPOUND": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.CONSTRAINT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.CREATE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.CROSS": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.CUBE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.CURRENT_DATE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.CURRENT_DATETIME": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.CURRENT_ROW": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.CURRENT_TIME": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.CURRENT_TIMESTAMP": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.CURRENT_USER": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DEFAULT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DELETE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DESC": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DESCRIBE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DISTINCT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DISTINCT_FROM": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DISTRIBUTE_BY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DIV": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DROP": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ELSE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.END": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ESCAPE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.EXCEPT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.EXECUTE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.EXISTS": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.FALSE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.FETCH": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.FILTER": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.FINAL": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.FIRST": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.FOLLOWING": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.FOR": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.FOREIGN_KEY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.FORMAT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.FROM": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.FULL": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.FUNCTION": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.GLOB": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.GLOBAL": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.GROUP_BY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.GROUPING_SETS": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.HAVING": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.HINT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.IF": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.IGNORE_NULLS": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ILIKE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ILIKE_ANY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.IN": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.INDEX": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.INNER": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.INSERT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.INTERSECT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.INTERVAL": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.INTO": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.INTRODUCER": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.IRLIKE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.IS": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ISNULL": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.JOIN": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.JOIN_MARKER": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.LANGUAGE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.LATERAL": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.LAZY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.LEADING": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.LEFT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.LIKE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.LIKE_ANY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.LIMIT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.LOAD_DATA": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.LOCAL": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.MAP": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.MATCH_RECOGNIZE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.MATERIALIZED": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.MERGE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.MOD": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.NATURAL": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.NEXT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.NO_ACTION": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.NOTNULL": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.NULL": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.NULLS_FIRST": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.NULLS_LAST": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.OFFSET": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ON": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ONLY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.OPTIONS": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ORDER_BY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ORDERED": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ORDINALITY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.OUTER": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.OUT_OF": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.OVER": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.OVERLAPS": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.OVERWRITE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.PARTITION": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.PARTITION_BY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.PERCENT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.PIVOT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.PLACEHOLDER": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.PRAGMA": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.PRECEDING": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.PRIMARY_KEY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.PROCEDURE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.PROPERTIES": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.PSEUDO_TYPE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.QUALIFY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.QUOTE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.RANGE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.RECURSIVE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.REPLACE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.RESPECT_NULLS": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.RETURNING": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.REFERENCES": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.RIGHT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.RLIKE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ROLLBACK": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ROLLUP": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ROW": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ROWS": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SEED": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SELECT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SEMI": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SEPARATOR": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SERDE_PROPERTIES": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SET": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SHOW": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SIMILAR_TO": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SOME": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SORTKEY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SORT_BY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.STRUCT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.TABLE_SAMPLE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.TEMPORARY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.TOP": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.THEN": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.TRAILING": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.TRUE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.UNBOUNDED": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.UNCACHE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.UNION": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.UNLOGGED": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.UNNEST": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.UNPIVOT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.UPDATE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.USE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.USING": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.VALUES": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.VIEW": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.VOLATILE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.WHEN": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.WHERE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.WINDOW": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.WITH": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.WITH_TIME_ZONE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.WITH_LOCAL_TIME_ZONE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.WITHIN_GROUP": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.WITHOUT_TIME_ZONE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.UNIQUE": {"tf": 1.4142135623730951}}, "df": 388}, "docs": {}, "df": 0}, "docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.expressions.DataType.Type.XML": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.XML": {"tf": 1.4142135623730951}}, "df": 2}}}, "b": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dialects.dialect.Dialects.BIGQUERY": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.DataType.Type.BIGINT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.BIGINT": {"tf": 1.4142135623730951}}, "df": 2}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.expressions.DataType.Type.BIGDECIMAL": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.BIGDECIMAL": {"tf": 1.4142135623730951}}, "df": 2}}}}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.expressions.DataType.Type.BIGSERIAL": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.BIGSERIAL": {"tf": 1.4142135623730951}}, "df": 2}}}}}}}, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.DataType.Type.BINARY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.BINARY": {"tf": 1.4142135623730951}}, "df": 2}}}}, "t": {"docs": {"sqlglot.expressions.DataType.Type.BIT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.BIT_STRING": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.BIT": {"tf": 1.4142135623730951}}, "df": 3}}, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.DataType.Type.BOOLEAN": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.BOOLEAN": {"tf": 1.4142135623730951}}, "df": 2}}}}}, "t": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.tokens.TokenType.BOTH": {"tf": 1.4142135623730951}}, "df": 1}}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.L_BRACKET": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.R_BRACKET": {"tf": 1.4142135623730951}}, "df": 2}}}, "e": {"docs": {"sqlglot.tokens.TokenType.L_BRACE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.R_BRACE": {"tf": 1.4142135623730951}}, "df": 2}}}, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.tokens.TokenType.BREAK": {"tf": 1.4142135623730951}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.tokens.TokenType.BACKSLASH": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.tokens.TokenType.BLOCK_START": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.BLOCK_END": {"tf": 1.4142135623730951}}, "df": 2}}}}, "y": {"docs": {"sqlglot.tokens.TokenType.BY_DEFAULT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.CLUSTER_BY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DISTRIBUTE_BY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.GROUP_BY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ORDER_BY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.PARTITION_BY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SORT_BY": {"tf": 1.4142135623730951}}, "df": 7, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.BYTE_STRING": {"tf": 1.4142135623730951}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.tokens.TokenType.BEGIN": {"tf": 1.4142135623730951}}, "df": 1}}}, "t": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.tokens.TokenType.BETWEEN": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.BUCKET": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "c": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.Dialects.CLICKHOUSE": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.tokens.TokenType.CLUSTER_BY": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Properties.Location.POST_CREATE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.CREATE": {"tf": 1.4142135623730951}}, "df": 2}}}}, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.tokens.TokenType.CROSS": {"tf": 1.4142135623730951}}, "df": 1}}}}, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.DataType.Type.CHAR": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.CHAR": {"tf": 1.4142135623730951}}, "df": 2, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.tokens.TokenType.CHARACTER_SET": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.scope.ScopeType.CTE": {"tf": 1}}, "df": 1}}, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.tokens.TokenType.COMMA": {"tf": 1.4142135623730951}}, "df": 1, "n": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.tokens.TokenType.COMMAND": {"tf": 1.4142135623730951}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.COMMENT": {"tf": 1.4142135623730951}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.COMMIT": {"tf": 1.4142135623730951}}, "df": 1}}}, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.tokens.TokenType.COMPOUND": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.tokens.TokenType.COLON": {"tf": 1.4142135623730951}}, "df": 1}}, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.tokens.TokenType.COLUMN": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.COLUMN_DEF": {"tf": 1.4142135623730951}}, "df": 2}}}, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.COLLATE": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.CONSTRAINT": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.CARET": {"tf": 1.4142135623730951}}, "df": 1}}}, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.CACHE": {"tf": 1.4142135623730951}}, "df": 1}}}, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.CASCADE": {"tf": 1.4142135623730951}}, "df": 1}}}}, "e": {"docs": {"sqlglot.tokens.TokenType.CASE": {"tf": 1.4142135623730951}}, "df": 1}}}, "u": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.CUBE": {"tf": 1.4142135623730951}}, "df": 1}}, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.CURRENT_DATE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.CURRENT_DATETIME": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.CURRENT_ROW": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.CURRENT_TIME": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.CURRENT_TIMESTAMP": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.CURRENT_USER": {"tf": 1.4142135623730951}}, "df": 6}}}}}}}, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.Dialects.HIVE": {"tf": 1.4142135623730951}}, "df": 1}}, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.HINT": {"tf": 1.4142135623730951}}, "df": 1}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.expressions.DataType.Type.HLLSKETCH": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.HLLSKETCH": {"tf": 1.4142135623730951}}, "df": 2}}}}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.DataType.Type.HSTORE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.HSTORE": {"tf": 1.4142135623730951}}, "df": 2}}}}}, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.tokens.TokenType.HASH": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.HASH_ARROW": {"tf": 1.4142135623730951}}, "df": 2}}, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.tokens.TokenType.HAVING": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "x": {"docs": {"sqlglot.tokens.TokenType.HEX_STRING": {"tf": 1.4142135623730951}}, "df": 1}}}, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.Properties.Location.POST_CREATE": {"tf": 1.4142135623730951}, "sqlglot.expressions.Properties.Location.POST_NAME": {"tf": 1.4142135623730951}, "sqlglot.expressions.Properties.Location.POST_SCHEMA": {"tf": 1.4142135623730951}, "sqlglot.expressions.Properties.Location.POST_WITH": {"tf": 1.4142135623730951}, "sqlglot.expressions.Properties.Location.POST_ALIAS": {"tf": 1.4142135623730951}, "sqlglot.expressions.Properties.Location.POST_EXPRESSION": {"tf": 1.4142135623730951}, "sqlglot.expressions.Properties.Location.POST_INDEX": {"tf": 1.4142135623730951}}, "df": 7, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dialects.dialect.Dialects.POSTGRES": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {"sqlglot.dialects.dialect.Dialects.PRESTO": {"tf": 1.4142135623730951}}, "df": 1}}}, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.tokens.TokenType.PRECEDING": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.tokens.TokenType.PRAGMA": {"tf": 1.4142135623730951}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.tokens.TokenType.PRIMARY_KEY": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.PROCEDURE": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.tokens.TokenType.PROPERTIES": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SERDE_PROPERTIES": {"tf": 1.4142135623730951}}, "df": 2}}}}}}}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.tokens.TokenType.L_PAREN": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.R_PAREN": {"tf": 1.4142135623730951}}, "df": 2}}, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.tokens.TokenType.PARAMETER": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.SESSION_PARAMETER": {"tf": 1.4142135623730951}}, "df": 2}}}}}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.tokens.TokenType.PARTITION": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.PARTITION_BY": {"tf": 1.4142135623730951}}, "df": 2}}}}}}}}, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.tokens.TokenType.PLUS": {"tf": 1.4142135623730951}}, "df": 1}}, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.tokens.TokenType.PLACEHOLDER": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}}}, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.PIPE": {"tf": 1.4142135623730951}}, "df": 1}}, "v": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.PIVOT": {"tf": 1.4142135623730951}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.PERCENT": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "o": {"docs": {"sqlglot.tokens.TokenType.PSEUDO_TYPE": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "r": {"docs": {"sqlglot.tokens.TokenType.R_PAREN": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.R_BRACKET": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.R_BRACE": {"tf": 1.4142135623730951}}, "df": 3, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.dialect.Dialects.REDSHIFT": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.MATCH_RECOGNIZE": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.RECURSIVE": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.REPLACE": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.RESPECT_NULLS": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.tokens.TokenType.RETURNING": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}, "f": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.tokens.TokenType.REFERENCES": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}}, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.errors.ErrorLevel.RAISE": {"tf": 1.4142135623730951}}, "df": 1}}}, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.RANGE": {"tf": 1.4142135623730951}}, "df": 1}}}}, "o": {"docs": {}, "df": 0, "w": {"docs": {"sqlglot.tokens.TokenType.CURRENT_ROW": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ROW": {"tf": 1.4142135623730951}}, "df": 2, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.DataType.Type.ROWVERSION": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ROWVERSION": {"tf": 1.4142135623730951}}, "df": 2}}}}}}}, "s": {"docs": {"sqlglot.tokens.TokenType.ROWS": {"tf": 1.4142135623730951}}, "df": 1}}, "o": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.optimizer.scope.ScopeType.ROOT": {"tf": 1}}, "df": 1}}, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.tokens.TokenType.ROLLBACK": {"tf": 1.4142135623730951}}, "df": 1}}}}, "u": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.tokens.TokenType.ROLLUP": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.RIGHT": {"tf": 1.4142135623730951}}, "df": 1}}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.RLIKE": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.scope.ScopeType.DERIVED_TABLE": {"tf": 1}, "sqlglot.tokens.TokenType.TABLE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.TABLE_SAMPLE": {"tf": 1.4142135623730951}}, "df": 3, "a": {"docs": {}, "df": 0, "u": {"docs": {"sqlglot.dialects.dialect.Dialects.TABLEAU": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "o": {"docs": {"sqlglot.dialects.dialect.Dialects.TRINO": {"tf": 1.4142135623730951}}, "df": 1}}}, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.tokens.TokenType.TRAILING": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "u": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.TRUE": {"tf": 1.4142135623730951}}, "df": 1}}}, "s": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.dialects.dialect.Dialects.TSQL": {"tf": 1.4142135623730951}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.dialects.dialect.Dialects.TERADATA": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "x": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.DataType.Type.TEXT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.TEXT": {"tf": 1.4142135623730951}}, "df": 2}}, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.tokens.TokenType.TEMPORARY": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.DataType.Type.CHAR": {"tf": 1}, "sqlglot.expressions.DataType.Type.NCHAR": {"tf": 1}, "sqlglot.expressions.DataType.Type.VARCHAR": {"tf": 1}, "sqlglot.expressions.DataType.Type.NVARCHAR": {"tf": 1}, "sqlglot.expressions.DataType.Type.TEXT": {"tf": 1}, "sqlglot.expressions.DataType.Type.MEDIUMTEXT": {"tf": 1}, "sqlglot.expressions.DataType.Type.LONGTEXT": {"tf": 1}, "sqlglot.expressions.DataType.Type.MEDIUMBLOB": {"tf": 1}, "sqlglot.expressions.DataType.Type.LONGBLOB": {"tf": 1}, "sqlglot.expressions.DataType.Type.BINARY": {"tf": 1}, "sqlglot.expressions.DataType.Type.VARBINARY": {"tf": 1}, "sqlglot.expressions.DataType.Type.INT": {"tf": 1}, "sqlglot.expressions.DataType.Type.UINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.TINYINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.UTINYINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.SMALLINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.USMALLINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.BIGINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.UBIGINT": {"tf": 1}, "sqlglot.expressions.DataType.Type.FLOAT": {"tf": 1}, "sqlglot.expressions.DataType.Type.DOUBLE": {"tf": 1}, "sqlglot.expressions.DataType.Type.DECIMAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.BIGDECIMAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.BIT": {"tf": 1}, "sqlglot.expressions.DataType.Type.BOOLEAN": {"tf": 1}, "sqlglot.expressions.DataType.Type.JSON": {"tf": 1}, "sqlglot.expressions.DataType.Type.JSONB": {"tf": 1}, "sqlglot.expressions.DataType.Type.INTERVAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.TIME": {"tf": 1}, "sqlglot.expressions.DataType.Type.TIMESTAMP": {"tf": 1}, "sqlglot.expressions.DataType.Type.TIMESTAMPTZ": {"tf": 1}, "sqlglot.expressions.DataType.Type.TIMESTAMPLTZ": {"tf": 1}, "sqlglot.expressions.DataType.Type.DATE": {"tf": 1}, "sqlglot.expressions.DataType.Type.DATETIME": {"tf": 1}, "sqlglot.expressions.DataType.Type.ARRAY": {"tf": 1}, "sqlglot.expressions.DataType.Type.MAP": {"tf": 1}, "sqlglot.expressions.DataType.Type.UUID": {"tf": 1}, "sqlglot.expressions.DataType.Type.GEOGRAPHY": {"tf": 1}, "sqlglot.expressions.DataType.Type.GEOMETRY": {"tf": 1}, "sqlglot.expressions.DataType.Type.STRUCT": {"tf": 1}, "sqlglot.expressions.DataType.Type.NULLABLE": {"tf": 1}, "sqlglot.expressions.DataType.Type.HLLSKETCH": {"tf": 1}, "sqlglot.expressions.DataType.Type.HSTORE": {"tf": 1}, "sqlglot.expressions.DataType.Type.SUPER": {"tf": 1}, "sqlglot.expressions.DataType.Type.SERIAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.SMALLSERIAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.BIGSERIAL": {"tf": 1}, "sqlglot.expressions.DataType.Type.XML": {"tf": 1}, "sqlglot.expressions.DataType.Type.UNIQUEIDENTIFIER": {"tf": 1}, "sqlglot.expressions.DataType.Type.MONEY": {"tf": 1}, "sqlglot.expressions.DataType.Type.SMALLMONEY": {"tf": 1}, "sqlglot.expressions.DataType.Type.ROWVERSION": {"tf": 1}, "sqlglot.expressions.DataType.Type.IMAGE": {"tf": 1}, "sqlglot.expressions.DataType.Type.VARIANT": {"tf": 1}, "sqlglot.expressions.DataType.Type.OBJECT": {"tf": 1}, "sqlglot.expressions.DataType.Type.INET": {"tf": 1}, "sqlglot.expressions.DataType.Type.NULL": {"tf": 1}, "sqlglot.expressions.DataType.Type.UNKNOWN": {"tf": 1}, "sqlglot.tokens.TokenType.PSEUDO_TYPE": {"tf": 1.4142135623730951}}, "df": 59}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.DataType.Type.TINYINT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.TINYINT": {"tf": 1.4142135623730951}}, "df": 2}}}}}, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.DataType.Type.TIME": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.TIME": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.AT_TIME_ZONE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.CURRENT_TIME": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.WITH_TIME_ZONE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.WITH_LOCAL_TIME_ZONE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.WITHOUT_TIME_ZONE": {"tf": 1.4142135623730951}}, "df": 7, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.expressions.DataType.Type.TIMESTAMP": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.TIMESTAMP": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.CURRENT_TIMESTAMP": {"tf": 1.4142135623730951}}, "df": 3, "t": {"docs": {}, "df": 0, "z": {"docs": {"sqlglot.expressions.DataType.Type.TIMESTAMPTZ": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.TIMESTAMPTZ": {"tf": 1.4142135623730951}}, "df": 2}}, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "z": {"docs": {"sqlglot.expressions.DataType.Type.TIMESTAMPLTZ": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.TIMESTAMPLTZ": {"tf": 1.4142135623730951}}, "df": 2}}}}}}}}}}, "l": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.tokens.TokenType.TILDA": {"tf": 1.4142135623730951}}, "df": 1}}}}, "o": {"docs": {"sqlglot.tokens.TokenType.SIMILAR_TO": {"tf": 1.4142135623730951}}, "df": 1, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.L_PAREN": {"tf": 1}, "sqlglot.tokens.TokenType.R_PAREN": {"tf": 1}, "sqlglot.tokens.TokenType.L_BRACKET": {"tf": 1}, "sqlglot.tokens.TokenType.R_BRACKET": {"tf": 1}, "sqlglot.tokens.TokenType.L_BRACE": {"tf": 1}, "sqlglot.tokens.TokenType.R_BRACE": {"tf": 1}, "sqlglot.tokens.TokenType.COMMA": {"tf": 1}, "sqlglot.tokens.TokenType.DOT": {"tf": 1}, "sqlglot.tokens.TokenType.DASH": {"tf": 1}, "sqlglot.tokens.TokenType.PLUS": {"tf": 1}, "sqlglot.tokens.TokenType.COLON": {"tf": 1}, "sqlglot.tokens.TokenType.DCOLON": {"tf": 1}, "sqlglot.tokens.TokenType.SEMICOLON": {"tf": 1}, "sqlglot.tokens.TokenType.STAR": {"tf": 1}, "sqlglot.tokens.TokenType.BACKSLASH": {"tf": 1}, "sqlglot.tokens.TokenType.SLASH": {"tf": 1}, "sqlglot.tokens.TokenType.LT": {"tf": 1}, "sqlglot.tokens.TokenType.LTE": {"tf": 1}, "sqlglot.tokens.TokenType.GT": {"tf": 1}, "sqlglot.tokens.TokenType.GTE": {"tf": 1}, "sqlglot.tokens.TokenType.NOT": {"tf": 1}, "sqlglot.tokens.TokenType.EQ": {"tf": 1}, "sqlglot.tokens.TokenType.NEQ": {"tf": 1}, "sqlglot.tokens.TokenType.NULLSAFE_EQ": {"tf": 1}, "sqlglot.tokens.TokenType.AND": {"tf": 1}, "sqlglot.tokens.TokenType.OR": {"tf": 1}, "sqlglot.tokens.TokenType.AMP": {"tf": 1}, "sqlglot.tokens.TokenType.DPIPE": {"tf": 1}, "sqlglot.tokens.TokenType.PIPE": {"tf": 1}, "sqlglot.tokens.TokenType.CARET": {"tf": 1}, "sqlglot.tokens.TokenType.TILDA": {"tf": 1}, "sqlglot.tokens.TokenType.ARROW": {"tf": 1}, "sqlglot.tokens.TokenType.DARROW": {"tf": 1}, "sqlglot.tokens.TokenType.FARROW": {"tf": 1}, "sqlglot.tokens.TokenType.HASH": {"tf": 1}, "sqlglot.tokens.TokenType.HASH_ARROW": {"tf": 1}, "sqlglot.tokens.TokenType.DHASH_ARROW": {"tf": 1}, "sqlglot.tokens.TokenType.LR_ARROW": {"tf": 1}, "sqlglot.tokens.TokenType.LT_AT": {"tf": 1}, "sqlglot.tokens.TokenType.AT_GT": {"tf": 1}, "sqlglot.tokens.TokenType.DOLLAR": {"tf": 1}, "sqlglot.tokens.TokenType.PARAMETER": {"tf": 1}, "sqlglot.tokens.TokenType.SESSION_PARAMETER": {"tf": 1}, "sqlglot.tokens.TokenType.NATIONAL": {"tf": 1}, "sqlglot.tokens.TokenType.DAMP": {"tf": 1}, "sqlglot.tokens.TokenType.BLOCK_START": {"tf": 1}, "sqlglot.tokens.TokenType.BLOCK_END": {"tf": 1}, "sqlglot.tokens.TokenType.SPACE": {"tf": 1}, "sqlglot.tokens.TokenType.BREAK": {"tf": 1}, "sqlglot.tokens.TokenType.STRING": {"tf": 1}, "sqlglot.tokens.TokenType.NUMBER": {"tf": 1}, "sqlglot.tokens.TokenType.IDENTIFIER": {"tf": 1}, "sqlglot.tokens.TokenType.DATABASE": {"tf": 1}, "sqlglot.tokens.TokenType.COLUMN": {"tf": 1}, "sqlglot.tokens.TokenType.COLUMN_DEF": {"tf": 1}, "sqlglot.tokens.TokenType.SCHEMA": {"tf": 1}, "sqlglot.tokens.TokenType.TABLE": {"tf": 1}, "sqlglot.tokens.TokenType.VAR": {"tf": 1}, "sqlglot.tokens.TokenType.BIT_STRING": {"tf": 1}, "sqlglot.tokens.TokenType.HEX_STRING": {"tf": 1}, "sqlglot.tokens.TokenType.BYTE_STRING": {"tf": 1}, "sqlglot.tokens.TokenType.BIT": {"tf": 1}, "sqlglot.tokens.TokenType.BOOLEAN": {"tf": 1}, "sqlglot.tokens.TokenType.TINYINT": {"tf": 1}, "sqlglot.tokens.TokenType.UTINYINT": {"tf": 1}, "sqlglot.tokens.TokenType.SMALLINT": {"tf": 1}, "sqlglot.tokens.TokenType.USMALLINT": {"tf": 1}, "sqlglot.tokens.TokenType.INT": {"tf": 1}, "sqlglot.tokens.TokenType.UINT": {"tf": 1}, "sqlglot.tokens.TokenType.BIGINT": {"tf": 1}, "sqlglot.tokens.TokenType.UBIGINT": {"tf": 1}, "sqlglot.tokens.TokenType.FLOAT": {"tf": 1}, "sqlglot.tokens.TokenType.DOUBLE": {"tf": 1}, "sqlglot.tokens.TokenType.DECIMAL": {"tf": 1}, "sqlglot.tokens.TokenType.BIGDECIMAL": {"tf": 1}, "sqlglot.tokens.TokenType.CHAR": {"tf": 1}, "sqlglot.tokens.TokenType.NCHAR": {"tf": 1}, "sqlglot.tokens.TokenType.VARCHAR": {"tf": 1}, "sqlglot.tokens.TokenType.NVARCHAR": {"tf": 1}, "sqlglot.tokens.TokenType.TEXT": {"tf": 1}, "sqlglot.tokens.TokenType.MEDIUMTEXT": {"tf": 1}, "sqlglot.tokens.TokenType.LONGTEXT": {"tf": 1}, "sqlglot.tokens.TokenType.MEDIUMBLOB": {"tf": 1}, "sqlglot.tokens.TokenType.LONGBLOB": {"tf": 1}, "sqlglot.tokens.TokenType.BINARY": {"tf": 1}, "sqlglot.tokens.TokenType.VARBINARY": {"tf": 1}, "sqlglot.tokens.TokenType.JSON": {"tf": 1}, "sqlglot.tokens.TokenType.JSONB": {"tf": 1}, "sqlglot.tokens.TokenType.TIME": {"tf": 1}, "sqlglot.tokens.TokenType.TIMESTAMP": {"tf": 1}, "sqlglot.tokens.TokenType.TIMESTAMPTZ": {"tf": 1}, "sqlglot.tokens.TokenType.TIMESTAMPLTZ": {"tf": 1}, "sqlglot.tokens.TokenType.DATETIME": {"tf": 1}, "sqlglot.tokens.TokenType.DATE": {"tf": 1}, "sqlglot.tokens.TokenType.UUID": {"tf": 1}, "sqlglot.tokens.TokenType.GEOGRAPHY": {"tf": 1}, "sqlglot.tokens.TokenType.NULLABLE": {"tf": 1}, "sqlglot.tokens.TokenType.GEOMETRY": {"tf": 1}, "sqlglot.tokens.TokenType.HLLSKETCH": {"tf": 1}, "sqlglot.tokens.TokenType.HSTORE": {"tf": 1}, "sqlglot.tokens.TokenType.SUPER": {"tf": 1}, "sqlglot.tokens.TokenType.SERIAL": {"tf": 1}, "sqlglot.tokens.TokenType.SMALLSERIAL": {"tf": 1}, "sqlglot.tokens.TokenType.BIGSERIAL": {"tf": 1}, "sqlglot.tokens.TokenType.XML": {"tf": 1}, "sqlglot.tokens.TokenType.UNIQUEIDENTIFIER": {"tf": 1}, "sqlglot.tokens.TokenType.MONEY": {"tf": 1}, "sqlglot.tokens.TokenType.SMALLMONEY": {"tf": 1}, "sqlglot.tokens.TokenType.ROWVERSION": {"tf": 1}, "sqlglot.tokens.TokenType.IMAGE": {"tf": 1}, "sqlglot.tokens.TokenType.VARIANT": {"tf": 1}, "sqlglot.tokens.TokenType.OBJECT": {"tf": 1}, "sqlglot.tokens.TokenType.INET": {"tf": 1}, "sqlglot.tokens.TokenType.ALIAS": {"tf": 1}, "sqlglot.tokens.TokenType.ALTER": {"tf": 1}, "sqlglot.tokens.TokenType.ALWAYS": {"tf": 1}, "sqlglot.tokens.TokenType.ALL": {"tf": 1}, "sqlglot.tokens.TokenType.ANTI": {"tf": 1}, "sqlglot.tokens.TokenType.ANY": {"tf": 1}, "sqlglot.tokens.TokenType.APPLY": {"tf": 1}, "sqlglot.tokens.TokenType.ARRAY": {"tf": 1}, "sqlglot.tokens.TokenType.ASC": {"tf": 1}, "sqlglot.tokens.TokenType.ASOF": {"tf": 1}, "sqlglot.tokens.TokenType.AT_TIME_ZONE": {"tf": 1}, "sqlglot.tokens.TokenType.AUTO_INCREMENT": {"tf": 1}, "sqlglot.tokens.TokenType.BEGIN": {"tf": 1}, "sqlglot.tokens.TokenType.BETWEEN": {"tf": 1}, "sqlglot.tokens.TokenType.BOTH": {"tf": 1}, "sqlglot.tokens.TokenType.BUCKET": {"tf": 1}, "sqlglot.tokens.TokenType.BY_DEFAULT": {"tf": 1}, "sqlglot.tokens.TokenType.CACHE": {"tf": 1}, "sqlglot.tokens.TokenType.CASCADE": {"tf": 1}, "sqlglot.tokens.TokenType.CASE": {"tf": 1}, "sqlglot.tokens.TokenType.CHARACTER_SET": {"tf": 1}, "sqlglot.tokens.TokenType.CLUSTER_BY": {"tf": 1}, "sqlglot.tokens.TokenType.COLLATE": {"tf": 1}, "sqlglot.tokens.TokenType.COMMAND": {"tf": 1}, "sqlglot.tokens.TokenType.COMMENT": {"tf": 1}, "sqlglot.tokens.TokenType.COMMIT": {"tf": 1}, "sqlglot.tokens.TokenType.COMPOUND": {"tf": 1}, "sqlglot.tokens.TokenType.CONSTRAINT": {"tf": 1}, "sqlglot.tokens.TokenType.CREATE": {"tf": 1}, "sqlglot.tokens.TokenType.CROSS": {"tf": 1}, "sqlglot.tokens.TokenType.CUBE": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_DATE": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_DATETIME": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_ROW": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_TIME": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_TIMESTAMP": {"tf": 1}, "sqlglot.tokens.TokenType.CURRENT_USER": {"tf": 1}, "sqlglot.tokens.TokenType.DEFAULT": {"tf": 1}, "sqlglot.tokens.TokenType.DELETE": {"tf": 1}, "sqlglot.tokens.TokenType.DESC": {"tf": 1}, "sqlglot.tokens.TokenType.DESCRIBE": {"tf": 1}, "sqlglot.tokens.TokenType.DISTINCT": {"tf": 1}, "sqlglot.tokens.TokenType.DISTINCT_FROM": {"tf": 1}, "sqlglot.tokens.TokenType.DISTRIBUTE_BY": {"tf": 1}, "sqlglot.tokens.TokenType.DIV": {"tf": 1}, "sqlglot.tokens.TokenType.DROP": {"tf": 1}, "sqlglot.tokens.TokenType.ELSE": {"tf": 1}, "sqlglot.tokens.TokenType.END": {"tf": 1}, "sqlglot.tokens.TokenType.ESCAPE": {"tf": 1}, "sqlglot.tokens.TokenType.EXCEPT": {"tf": 1}, "sqlglot.tokens.TokenType.EXECUTE": {"tf": 1}, "sqlglot.tokens.TokenType.EXISTS": {"tf": 1}, "sqlglot.tokens.TokenType.FALSE": {"tf": 1}, "sqlglot.tokens.TokenType.FETCH": {"tf": 1}, "sqlglot.tokens.TokenType.FILTER": {"tf": 1}, "sqlglot.tokens.TokenType.FINAL": {"tf": 1}, "sqlglot.tokens.TokenType.FIRST": {"tf": 1}, "sqlglot.tokens.TokenType.FOLLOWING": {"tf": 1}, "sqlglot.tokens.TokenType.FOR": {"tf": 1}, "sqlglot.tokens.TokenType.FOREIGN_KEY": {"tf": 1}, "sqlglot.tokens.TokenType.FORMAT": {"tf": 1}, "sqlglot.tokens.TokenType.FROM": {"tf": 1}, "sqlglot.tokens.TokenType.FULL": {"tf": 1}, "sqlglot.tokens.TokenType.FUNCTION": {"tf": 1}, "sqlglot.tokens.TokenType.GLOB": {"tf": 1}, "sqlglot.tokens.TokenType.GLOBAL": {"tf": 1}, "sqlglot.tokens.TokenType.GROUP_BY": {"tf": 1}, "sqlglot.tokens.TokenType.GROUPING_SETS": {"tf": 1}, "sqlglot.tokens.TokenType.HAVING": {"tf": 1}, "sqlglot.tokens.TokenType.HINT": {"tf": 1}, "sqlglot.tokens.TokenType.IF": {"tf": 1}, "sqlglot.tokens.TokenType.IGNORE_NULLS": {"tf": 1}, "sqlglot.tokens.TokenType.ILIKE": {"tf": 1}, "sqlglot.tokens.TokenType.ILIKE_ANY": {"tf": 1}, "sqlglot.tokens.TokenType.IN": {"tf": 1}, "sqlglot.tokens.TokenType.INDEX": {"tf": 1}, "sqlglot.tokens.TokenType.INNER": {"tf": 1}, "sqlglot.tokens.TokenType.INSERT": {"tf": 1}, "sqlglot.tokens.TokenType.INTERSECT": {"tf": 1}, "sqlglot.tokens.TokenType.INTERVAL": {"tf": 1}, "sqlglot.tokens.TokenType.INTO": {"tf": 1}, "sqlglot.tokens.TokenType.INTRODUCER": {"tf": 1}, "sqlglot.tokens.TokenType.IRLIKE": {"tf": 1}, "sqlglot.tokens.TokenType.IS": {"tf": 1}, "sqlglot.tokens.TokenType.ISNULL": {"tf": 1}, "sqlglot.tokens.TokenType.JOIN": {"tf": 1}, "sqlglot.tokens.TokenType.JOIN_MARKER": {"tf": 1}, "sqlglot.tokens.TokenType.LANGUAGE": {"tf": 1}, "sqlglot.tokens.TokenType.LATERAL": {"tf": 1}, "sqlglot.tokens.TokenType.LAZY": {"tf": 1}, "sqlglot.tokens.TokenType.LEADING": {"tf": 1}, "sqlglot.tokens.TokenType.LEFT": {"tf": 1}, "sqlglot.tokens.TokenType.LIKE": {"tf": 1}, "sqlglot.tokens.TokenType.LIKE_ANY": {"tf": 1}, "sqlglot.tokens.TokenType.LIMIT": {"tf": 1}, "sqlglot.tokens.TokenType.LOAD_DATA": {"tf": 1}, "sqlglot.tokens.TokenType.LOCAL": {"tf": 1}, "sqlglot.tokens.TokenType.MAP": {"tf": 1}, "sqlglot.tokens.TokenType.MATCH_RECOGNIZE": {"tf": 1}, "sqlglot.tokens.TokenType.MATERIALIZED": {"tf": 1}, "sqlglot.tokens.TokenType.MERGE": {"tf": 1}, "sqlglot.tokens.TokenType.MOD": {"tf": 1}, "sqlglot.tokens.TokenType.NATURAL": {"tf": 1}, "sqlglot.tokens.TokenType.NEXT": {"tf": 1}, "sqlglot.tokens.TokenType.NO_ACTION": {"tf": 1}, "sqlglot.tokens.TokenType.NOTNULL": {"tf": 1}, "sqlglot.tokens.TokenType.NULL": {"tf": 1}, "sqlglot.tokens.TokenType.NULLS_FIRST": {"tf": 1}, "sqlglot.tokens.TokenType.NULLS_LAST": {"tf": 1}, "sqlglot.tokens.TokenType.OFFSET": {"tf": 1}, "sqlglot.tokens.TokenType.ON": {"tf": 1}, "sqlglot.tokens.TokenType.ONLY": {"tf": 1}, "sqlglot.tokens.TokenType.OPTIONS": {"tf": 1}, "sqlglot.tokens.TokenType.ORDER_BY": {"tf": 1}, "sqlglot.tokens.TokenType.ORDERED": {"tf": 1}, "sqlglot.tokens.TokenType.ORDINALITY": {"tf": 1}, "sqlglot.tokens.TokenType.OUTER": {"tf": 1}, "sqlglot.tokens.TokenType.OUT_OF": {"tf": 1}, "sqlglot.tokens.TokenType.OVER": {"tf": 1}, "sqlglot.tokens.TokenType.OVERLAPS": {"tf": 1}, "sqlglot.tokens.TokenType.OVERWRITE": {"tf": 1}, "sqlglot.tokens.TokenType.PARTITION": {"tf": 1}, "sqlglot.tokens.TokenType.PARTITION_BY": {"tf": 1}, "sqlglot.tokens.TokenType.PERCENT": {"tf": 1}, "sqlglot.tokens.TokenType.PIVOT": {"tf": 1}, "sqlglot.tokens.TokenType.PLACEHOLDER": {"tf": 1}, "sqlglot.tokens.TokenType.PRAGMA": {"tf": 1}, "sqlglot.tokens.TokenType.PRECEDING": {"tf": 1}, "sqlglot.tokens.TokenType.PRIMARY_KEY": {"tf": 1}, "sqlglot.tokens.TokenType.PROCEDURE": {"tf": 1}, "sqlglot.tokens.TokenType.PROPERTIES": {"tf": 1}, "sqlglot.tokens.TokenType.PSEUDO_TYPE": {"tf": 1}, "sqlglot.tokens.TokenType.QUALIFY": {"tf": 1}, "sqlglot.tokens.TokenType.QUOTE": {"tf": 1}, "sqlglot.tokens.TokenType.RANGE": {"tf": 1}, "sqlglot.tokens.TokenType.RECURSIVE": {"tf": 1}, "sqlglot.tokens.TokenType.REPLACE": {"tf": 1}, "sqlglot.tokens.TokenType.RESPECT_NULLS": {"tf": 1}, "sqlglot.tokens.TokenType.RETURNING": {"tf": 1}, "sqlglot.tokens.TokenType.REFERENCES": {"tf": 1}, "sqlglot.tokens.TokenType.RIGHT": {"tf": 1}, "sqlglot.tokens.TokenType.RLIKE": {"tf": 1}, "sqlglot.tokens.TokenType.ROLLBACK": {"tf": 1}, "sqlglot.tokens.TokenType.ROLLUP": {"tf": 1}, "sqlglot.tokens.TokenType.ROW": {"tf": 1}, "sqlglot.tokens.TokenType.ROWS": {"tf": 1}, "sqlglot.tokens.TokenType.SEED": {"tf": 1}, "sqlglot.tokens.TokenType.SELECT": {"tf": 1}, "sqlglot.tokens.TokenType.SEMI": {"tf": 1}, "sqlglot.tokens.TokenType.SEPARATOR": {"tf": 1}, "sqlglot.tokens.TokenType.SERDE_PROPERTIES": {"tf": 1}, "sqlglot.tokens.TokenType.SET": {"tf": 1}, "sqlglot.tokens.TokenType.SHOW": {"tf": 1}, "sqlglot.tokens.TokenType.SIMILAR_TO": {"tf": 1}, "sqlglot.tokens.TokenType.SOME": {"tf": 1}, "sqlglot.tokens.TokenType.SORTKEY": {"tf": 1}, "sqlglot.tokens.TokenType.SORT_BY": {"tf": 1}, "sqlglot.tokens.TokenType.STRUCT": {"tf": 1}, "sqlglot.tokens.TokenType.TABLE_SAMPLE": {"tf": 1}, "sqlglot.tokens.TokenType.TEMPORARY": {"tf": 1}, "sqlglot.tokens.TokenType.TOP": {"tf": 1}, "sqlglot.tokens.TokenType.THEN": {"tf": 1}, "sqlglot.tokens.TokenType.TRAILING": {"tf": 1}, "sqlglot.tokens.TokenType.TRUE": {"tf": 1}, "sqlglot.tokens.TokenType.UNBOUNDED": {"tf": 1}, "sqlglot.tokens.TokenType.UNCACHE": {"tf": 1}, "sqlglot.tokens.TokenType.UNION": {"tf": 1}, "sqlglot.tokens.TokenType.UNLOGGED": {"tf": 1}, "sqlglot.tokens.TokenType.UNNEST": {"tf": 1}, "sqlglot.tokens.TokenType.UNPIVOT": {"tf": 1}, "sqlglot.tokens.TokenType.UPDATE": {"tf": 1}, "sqlglot.tokens.TokenType.USE": {"tf": 1}, "sqlglot.tokens.TokenType.USING": {"tf": 1}, "sqlglot.tokens.TokenType.VALUES": {"tf": 1}, "sqlglot.tokens.TokenType.VIEW": {"tf": 1}, "sqlglot.tokens.TokenType.VOLATILE": {"tf": 1}, "sqlglot.tokens.TokenType.WHEN": {"tf": 1}, "sqlglot.tokens.TokenType.WHERE": {"tf": 1}, "sqlglot.tokens.TokenType.WINDOW": {"tf": 1}, "sqlglot.tokens.TokenType.WITH": {"tf": 1}, "sqlglot.tokens.TokenType.WITH_TIME_ZONE": {"tf": 1}, "sqlglot.tokens.TokenType.WITH_LOCAL_TIME_ZONE": {"tf": 1}, "sqlglot.tokens.TokenType.WITHIN_GROUP": {"tf": 1}, "sqlglot.tokens.TokenType.WITHOUT_TIME_ZONE": {"tf": 1}, "sqlglot.tokens.TokenType.UNIQUE": {"tf": 1}}, "df": 298}}}}}}}, "p": {"docs": {"sqlglot.tokens.TokenType.TOP": {"tf": 1.4142135623730951}}, "df": 1}}, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.tokens.TokenType.THEN": {"tf": 1.4142135623730951}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.errors.ErrorLevel.IGNORE": {"tf": 1}, "sqlglot.errors.ErrorLevel.WARN": {"tf": 1}, "sqlglot.errors.ErrorLevel.RAISE": {"tf": 1}, "sqlglot.errors.ErrorLevel.IMMEDIATE": {"tf": 1}}, "df": 4}}}}}}}}}, "x": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.Properties.Location.POST_EXPRESSION": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.EXCEPT": {"tf": 1.4142135623730951}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.EXECUTE": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.tokens.TokenType.EXISTS": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "q": {"docs": {"sqlglot.tokens.TokenType.EQ": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.NULLSAFE_EQ": {"tf": 1.4142135623730951}}, "df": 2}, "n": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.tokens.TokenType.BLOCK_END": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.END": {"tf": 1.4142135623730951}}, "df": 2}}, "l": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.ELSE": {"tf": 1.4142135623730951}}, "df": 1}}}, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.ESCAPE": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.errors.ErrorLevel.IGNORE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.IGNORE_NULLS": {"tf": 1.4142135623730951}}, "df": 2}}}}}, "m": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.errors.ErrorLevel.IMMEDIATE": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.DataType.Type.IMAGE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.IMAGE": {"tf": 1.4142135623730951}}, "df": 2}}}}, "n": {"docs": {"sqlglot.tokens.TokenType.IN": {"tf": 1.4142135623730951}}, "df": 1, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "x": {"docs": {"sqlglot.expressions.Properties.Location.POST_INDEX": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.INDEX": {"tf": 1.4142135623730951}}, "df": 2}}}, "t": {"docs": {"sqlglot.expressions.DataType.Type.INT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.INT": {"tf": 1.4142135623730951}}, "df": 2, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.expressions.DataType.Type.INTERVAL": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.INTERVAL": {"tf": 1.4142135623730951}}, "df": 2}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.INTERSECT": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "o": {"docs": {"sqlglot.tokens.TokenType.INTO": {"tf": 1.4142135623730951}}, "df": 1}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.tokens.TokenType.INTRODUCER": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}, "e": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.DataType.Type.INET": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.INET": {"tf": 1.4142135623730951}}, "df": 2}}, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.AUTO_INCREMENT": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.tokens.TokenType.INNER": {"tf": 1.4142135623730951}}, "df": 1}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.INSERT": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.tokens.TokenType.IDENTIFIER": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}}, "f": {"docs": {"sqlglot.tokens.TokenType.IF": {"tf": 1.4142135623730951}}, "df": 1}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.ILIKE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ILIKE_ANY": {"tf": 1.4142135623730951}}, "df": 2}}}}, "r": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.IRLIKE": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "s": {"docs": {"sqlglot.tokens.TokenType.IS": {"tf": 1.4142135623730951}}, "df": 1, "n": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.tokens.TokenType.ISNULL": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "w": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.errors.ErrorLevel.WARN": {"tf": 1.4142135623730951}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.expressions.Properties.Location.POST_WITH": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.WITH": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.WITH_TIME_ZONE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.WITH_LOCAL_TIME_ZONE": {"tf": 1.4142135623730951}}, "df": 4, "i": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.tokens.TokenType.WITHIN_GROUP": {"tf": 1.4142135623730951}}, "df": 1}}, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.WITHOUT_TIME_ZONE": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {"sqlglot.tokens.TokenType.WINDOW": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.tokens.TokenType.WHEN": {"tf": 1.4142135623730951}}, "df": 1}, "r": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.WHERE": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Properties.Location.POST_NAME": {"tf": 1.4142135623730951}}, "df": 1}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.tokens.TokenType.NATIONAL": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.tokens.TokenType.NATURAL": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.DataType.Type.NCHAR": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.NCHAR": {"tf": 1.4142135623730951}}, "df": 2}}}}, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.DataType.Type.NVARCHAR": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.NVARCHAR": {"tf": 1.4142135623730951}}, "df": 2}}}}}}}, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.expressions.DataType.Type.NULL": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.NULL": {"tf": 1.4142135623730951}}, "df": 2, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.DataType.Type.NULLABLE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.NULLABLE": {"tf": 1.4142135623730951}}, "df": 2}}}}, "s": {"docs": {"sqlglot.tokens.TokenType.IGNORE_NULLS": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.NULLS_FIRST": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.NULLS_LAST": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.RESPECT_NULLS": {"tf": 1.4142135623730951}}, "df": 4, "a": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.NULLSAFE_EQ": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "m": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.tokens.TokenType.NUMBER": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "o": {"docs": {"sqlglot.tokens.TokenType.NO_ACTION": {"tf": 1.4142135623730951}}, "df": 1, "t": {"docs": {"sqlglot.tokens.TokenType.NOT": {"tf": 1.4142135623730951}}, "df": 1, "n": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.tokens.TokenType.NOTNULL": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "e": {"docs": {}, "df": 0, "q": {"docs": {"sqlglot.tokens.TokenType.NEQ": {"tf": 1.4142135623730951}}, "df": 1}, "x": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.NEXT": {"tf": 1.4142135623730951}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.Properties.Location.POST_ALIAS": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ALIAS": {"tf": 1.4142135623730951}}, "df": 2}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.tokens.TokenType.ALTER": {"tf": 1.4142135623730951}}, "df": 1}}}, "w": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.tokens.TokenType.ALWAYS": {"tf": 1.4142135623730951}}, "df": 1}}}}, "l": {"docs": {"sqlglot.tokens.TokenType.ALL": {"tf": 1.4142135623730951}}, "df": 1}}, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.DataType.Type.ARRAY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ARRAY": {"tf": 1.4142135623730951}}, "df": 2}}, "o": {"docs": {}, "df": 0, "w": {"docs": {"sqlglot.tokens.TokenType.ARROW": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.HASH_ARROW": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.DHASH_ARROW": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.LR_ARROW": {"tf": 1.4142135623730951}}, "df": 4}}}}, "n": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.tokens.TokenType.AND": {"tf": 1.4142135623730951}}, "df": 1}, "t": {"docs": {}, "df": 0, "i": {"docs": {"sqlglot.tokens.TokenType.ANTI": {"tf": 1.4142135623730951}}, "df": 1}}, "y": {"docs": {"sqlglot.tokens.TokenType.ANY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.ILIKE_ANY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.LIKE_ANY": {"tf": 1.4142135623730951}}, "df": 3}}, "m": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.tokens.TokenType.AMP": {"tf": 1.4142135623730951}}, "df": 1}}, "t": {"docs": {"sqlglot.tokens.TokenType.LT_AT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.AT_GT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.AT_TIME_ZONE": {"tf": 1.4142135623730951}}, "df": 3}, "p": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.tokens.TokenType.APPLY": {"tf": 1.4142135623730951}}, "df": 1}}}}, "s": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot.tokens.TokenType.ASC": {"tf": 1.4142135623730951}}, "df": 1}, "o": {"docs": {}, "df": 0, "f": {"docs": {"sqlglot.tokens.TokenType.ASOF": {"tf": 1.4142135623730951}}, "df": 1}}}, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {"sqlglot.tokens.TokenType.AUTO_INCREMENT": {"tf": 1.4142135623730951}}, "df": 1}}}, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.tokens.TokenType.NO_ACTION": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.Properties.Location.UNSUPPORTED": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}}, "i": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.UNIQUE": {"tf": 1.4142135623730951}}, "df": 1, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.DataType.Type.UNIQUEIDENTIFIER": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.UNIQUEIDENTIFIER": {"tf": 1.4142135623730951}}, "df": 2}}}}}}}}}}}}}, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.optimizer.scope.ScopeType.UNION": {"tf": 1}, "sqlglot.tokens.TokenType.UNION": {"tf": 1.4142135623730951}}, "df": 2}}}, "k": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.DataType.Type.UNKNOWN": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "b": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.tokens.TokenType.UNBOUNDED": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.UNCACHE": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.tokens.TokenType.UNLOGGED": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.UNNEST": {"tf": 1.4142135623730951}}, "df": 1}}}}, "p": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.tokens.TokenType.UNPIVOT": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.DataType.Type.UINT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.UINT": {"tf": 1.4142135623730951}}, "df": 2}}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.DataType.Type.UTINYINT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.UTINYINT": {"tf": 1.4142135623730951}}, "df": 2}}}}}}}, "s": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.DataType.Type.USMALLINT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.USMALLINT": {"tf": 1.4142135623730951}}, "df": 2}}}}}}}, "e": {"docs": {"sqlglot.tokens.TokenType.USE": {"tf": 1.4142135623730951}}, "df": 1, "r": {"docs": {"sqlglot.tokens.TokenType.CURRENT_USER": {"tf": 1.4142135623730951}}, "df": 1}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.tokens.TokenType.USING": {"tf": 1.4142135623730951}}, "df": 1}}}}, "b": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.DataType.Type.UBIGINT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.UBIGINT": {"tf": 1.4142135623730951}}, "df": 2}}}}}}, "u": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.DataType.Type.UUID": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.UUID": {"tf": 1.4142135623730951}}, "df": 2}}}, "d": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "f": {"docs": {"sqlglot.optimizer.scope.ScopeType.UDTF": {"tf": 1}}, "df": 1}}}, "p": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.UPDATE": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.tokens.TokenType.VAR": {"tf": 1.4142135623730951}}, "df": 1, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.DataType.Type.VARCHAR": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.VARCHAR": {"tf": 1.4142135623730951}}, "df": 2}}}}, "b": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.DataType.Type.VARBINARY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.VARBINARY": {"tf": 1.4142135623730951}}, "df": 2}}}}}}, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.DataType.Type.VARIANT": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.VARIANT": {"tf": 1.4142135623730951}}, "df": 2}}}}}, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.tokens.TokenType.VALUES": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "w": {"docs": {"sqlglot.tokens.TokenType.VIEW": {"tf": 1.4142135623730951}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.VOLATILE": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}, "j": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.DataType.Type.JSON": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.JSON": {"tf": 1.4142135623730951}}, "df": 2, "b": {"docs": {"sqlglot.expressions.DataType.Type.JSONB": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.JSONB": {"tf": 1.4142135623730951}}, "df": 2}}}}, "o": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.tokens.TokenType.JOIN": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.JOIN_MARKER": {"tf": 1.4142135623730951}}, "df": 2}}}}, "z": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.AT_TIME_ZONE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.WITH_TIME_ZONE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.WITH_LOCAL_TIME_ZONE": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.WITHOUT_TIME_ZONE": {"tf": 1.4142135623730951}}, "df": 4}}}}, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.tokens.TokenType.FOREIGN_KEY": {"tf": 1.4142135623730951}, "sqlglot.tokens.TokenType.PRIMARY_KEY": {"tf": 1.4142135623730951}}, "df": 2}}}, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.tokens.TokenType.QUALIFY": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.QUOTE": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}, "signature": {"root": {"0": {"docs": {"sqlglot.diff.ChangeDistiller.__init__": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.__init__": {"tf": 1}, "sqlglot.generator.Generator.indent": {"tf": 1}, "sqlglot.parser.Parser.__init__": {"tf": 1}, "sqlglot.planner.Step.to_s": {"tf": 1}, "sqlglot.tokens.Token.__init__": {"tf": 1}}, "df": 6, "x": {"7": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"3": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "d": {"5": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "c": {"0": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}}}}, "8": {"docs": {}, "df": 0, "e": {"7": {"docs": {}, "df": 0, "a": {"0": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}}, "docs": {}, "df": 0, "b": {"9": {"0": {"docs": {"sqlglot.lineage.lineage": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 2}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "e": {"docs": {}, "df": 0, "f": {"0": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}}, "d": {"4": {"0": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0, "d": {"0": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}}}, "c": {"1": {"docs": {}, "df": 0, "f": {"0": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}}, "7": {"9": {"0": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "8": {"docs": {}, "df": 0, "b": {"0": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}}, "9": {"docs": {}, "df": 0, "d": {"0": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}}, "docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "f": {"0": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}}}, "f": {"1": {"docs": {}, "df": 0, "c": {"0": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}}, "docs": {}, "df": 0, "c": {"7": {"0": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}}}, "docs": {}, "df": 0, "c": {"4": {"0": {"docs": {}, "df": 0, "d": {"0": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}}, "5": {"5": {"0": {"docs": {"sqlglot.lineage.lineage": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 2}, "docs": {}, "df": 0}, "docs": {}, "df": 0, "e": {"0": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}}, "docs": {}, "df": 0}, "5": {"0": {"0": {"0": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "6": {"3": {"0": {"docs": {"sqlglot.lineage.lineage": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 2}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "7": {"5": {"0": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}}}}, "docs": {}, "df": 0}}}}, "docs": {}, "df": 0}}, "1": {"0": {"0": {"docs": {"sqlglot.parser.Parser.__init__": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "2": {"8": {"docs": {"sqlglot.optimizer.normalize.normalize": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "4": {"0": {"3": {"7": {"7": {"7": {"0": {"6": {"5": {"9": {"8": {"1": {"1": {"2": {"docs": {"sqlglot.dataframe.sql.Column.binary_op": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "6": {"0": {"8": {"2": {"4": {"0": {"docs": {"sqlglot.dataframe.sql.Column.inverse_binary_op": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "7": {"4": {"3": {"6": {"9": {"6": {"docs": {"sqlglot.dataframe.sql.Column.isin": {"tf": 1.4142135623730951}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "8": {"1": {"4": {"4": {"6": {"4": {"docs": {"sqlglot.dataframe.sql.Column.between": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "5": {"2": {"5": {"6": {"0": {"docs": {"sqlglot.dataframe.sql.Column.between": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "9": {"1": {"0": {"2": {"7": {"2": {"docs": {"sqlglot.dataframe.sql.Column.over": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "7": {"1": {"6": {"1": {"4": {"0": {"8": {"docs": {"sqlglot.dataframe.sql.WindowSpec.orderBy": {"tf": 1.4142135623730951}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "2": {"2": {"1": {"3": {"2": {"8": {"docs": {"sqlglot.dataframe.sql.Window.partitionBy": {"tf": 1.4142135623730951}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "9": {"1": {"5": {"6": {"8": {"docs": {"sqlglot.dataframe.sql.WindowSpec.partitionBy": {"tf": 1.4142135623730951}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "3": {"6": {"0": {"3": {"6": {"8": {"docs": {"sqlglot.dataframe.sql.Window.orderBy": {"tf": 1.4142135623730951}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "6": {"5": {"2": {"5": {"4": {"4": {"docs": {"sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "9": {"5": {"0": {"4": {"8": {"0": {"docs": {"sqlglot.dataframe.sql.DataFrame.replace": {"tf": 1.4142135623730951}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "8": {"0": {"8": {"4": {"1": {"4": {"4": {"docs": {"sqlglot.dataframe.sql.DataFrame.repartition": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "1": {"5": {"2": {"0": {"4": {"8": {"docs": {"sqlglot.dataframe.sql.DataFrame.repartition": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "2": {"5": {"9": {"6": {"6": {"4": {"docs": {"sqlglot.dataframe.sql.Column.ensure_col": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "3": {"7": {"6": {"1": {"7": {"6": {"docs": {"sqlglot.dataframe.sql.Column.invoke_expression_over_column": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "4": {"2": {"0": {"0": {"4": {"8": {"docs": {"sqlglot.dataframe.sql.Column.invoke_anonymous_function": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "5": {"2": {"3": {"5": {"8": {"4": {"docs": {"sqlglot.dataframe.sql.Column.invoke_anonymous_function": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "4": {"7": {"6": {"6": {"4": {"docs": {"sqlglot.dataframe.sql.Column.ensure_cols": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "7": {"6": {"6": {"0": {"3": {"2": {"docs": {"sqlglot.dataframe.sql.SparkSession.createDataFrame": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "8": {"5": {"0": {"4": {"0": {"0": {"docs": {"sqlglot.dataframe.sql.SparkSession.createDataFrame": {"tf": 1.4142135623730951}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "1": {"0": {"0": {"4": {"3": {"7": {"4": {"4": {"docs": {"sqlglot.dataframe.sql.Column.__init__": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "1": {"8": {"7": {"1": {"0": {"7": {"2": {"docs": {"sqlglot.dataframe.sql.DataFrame.__init__": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "2": {"2": {"8": {"0": {"4": {"3": {"2": {"docs": {"sqlglot.dataframe.sql.DataFrame.__init__": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {"sqlglot.dataframe.sql.DataFrame.__init__": {"tf": 1}, "sqlglot.optimizer.scope.Scope.__init__": {"tf": 1}, "sqlglot.tokens.Token.__init__": {"tf": 1.4142135623730951}}, "df": 3}, "2": {"docs": {"sqlglot.generator.Generator.__init__": {"tf": 1.4142135623730951}}, "df": 1}, "3": {"9": {"docs": {"sqlglot.dataframe.sql.SparkSession.createDataFrame": {"tf": 2.449489742783178}, "sqlglot.dataframe.sql.DataFrame.__init__": {"tf": 2}, "sqlglot.dataframe.sql.DataFrame.sql": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.join": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.dropna": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.replace": {"tf": 2}, "sqlglot.dataframe.sql.DataFrame.repartition": {"tf": 2}, "sqlglot.dataframe.sql.DataFrame.persist": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.__init__": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.ensure_col": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.ensure_cols": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.invoke_anonymous_function": {"tf": 2}, "sqlglot.dataframe.sql.Column.invoke_expression_over_column": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.binary_op": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.inverse_binary_op": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.isin": {"tf": 2}, "sqlglot.dataframe.sql.Column.between": {"tf": 2}, "sqlglot.dataframe.sql.Column.over": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrameNaFunctions.drop": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Window.partitionBy": {"tf": 2}, "sqlglot.dataframe.sql.Window.orderBy": {"tf": 2}, "sqlglot.dataframe.sql.WindowSpec.partitionBy": {"tf": 2}, "sqlglot.dataframe.sql.WindowSpec.orderBy": {"tf": 2}, "sqlglot.dialects.dialect.var_map_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Generator.tablesample_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.__init__": {"tf": 2}, "sqlglot.generator.Generator.sep": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.seg": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.properties": {"tf": 2.449489742783178}, "sqlglot.generator.Generator.table_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.tablesample_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.lambda_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.subquery_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.expressions": {"tf": 2}, "sqlglot.helper.csv": {"tf": 1.4142135623730951}, "sqlglot.lineage.Node.__init__": {"tf": 1.4142135623730951}, "sqlglot.optimizer.canonicalize.canonicalize": {"tf": 1.4142135623730951}, "sqlglot.serde.dump": {"tf": 1.4142135623730951}, "sqlglot.serde.load": {"tf": 1.4142135623730951}}, "df": 40}, "docs": {"sqlglot.generator.Generator.__init__": {"tf": 1}, "sqlglot.parser.Parser.__init__": {"tf": 1}}, "df": 2}, "6": {"docs": {"sqlglot.diff.ChangeDistiller.__init__": {"tf": 1.4142135623730951}}, "df": 1}, "8": {"0": {"docs": {"sqlglot.generator.Generator.__init__": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {"sqlglot.parse": {"tf": 10.099504938362077}, "sqlglot.parse_one": {"tf": 12.727922061357855}, "sqlglot.transpile": {"tf": 14}, "sqlglot.dataframe.sql.SparkSession.table": {"tf": 6}, "sqlglot.dataframe.sql.SparkSession.createDataFrame": {"tf": 12.806248474865697}, "sqlglot.dataframe.sql.SparkSession.sql": {"tf": 6}, "sqlglot.dataframe.sql.DataFrame.__init__": {"tf": 14.2828568570857}, "sqlglot.dataframe.sql.DataFrame.sql": {"tf": 6.4031242374328485}, "sqlglot.dataframe.sql.DataFrame.copy": {"tf": 5.830951894845301}, "sqlglot.dataframe.sql.DataFrame.select": {"tf": 6.324555320336759}, "sqlglot.dataframe.sql.DataFrame.alias": {"tf": 6.48074069840786}, "sqlglot.dataframe.sql.DataFrame.where": {"tf": 8.426149773176359}, "sqlglot.dataframe.sql.DataFrame.filter": {"tf": 8.426149773176359}, "sqlglot.dataframe.sql.DataFrame.groupBy": {"tf": 6.324555320336759}, "sqlglot.dataframe.sql.DataFrame.agg": {"tf": 6.324555320336759}, "sqlglot.dataframe.sql.DataFrame.join": {"tf": 12.041594578792296}, "sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 9.9498743710662}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 9.9498743710662}, "sqlglot.dataframe.sql.DataFrame.union": {"tf": 7.3484692283495345}, "sqlglot.dataframe.sql.DataFrame.unionAll": {"tf": 7.3484692283495345}, "sqlglot.dataframe.sql.DataFrame.unionByName": {"tf": 7.14142842854285}, "sqlglot.dataframe.sql.DataFrame.intersect": {"tf": 7.3484692283495345}, "sqlglot.dataframe.sql.DataFrame.intersectAll": {"tf": 7.3484692283495345}, "sqlglot.dataframe.sql.DataFrame.exceptAll": {"tf": 7.3484692283495345}, "sqlglot.dataframe.sql.DataFrame.distinct": {"tf": 5.291502622129181}, "sqlglot.dataframe.sql.DataFrame.dropDuplicates": {"tf": 5.656854249492381}, "sqlglot.dataframe.sql.DataFrame.dropna": {"tf": 10.677078252031311}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 10}, "sqlglot.dataframe.sql.DataFrame.replace": {"tf": 13.19090595827292}, "sqlglot.dataframe.sql.DataFrame.withColumn": {"tf": 7.937253933193772}, "sqlglot.dataframe.sql.DataFrame.withColumnRenamed": {"tf": 5.0990195135927845}, "sqlglot.dataframe.sql.DataFrame.drop": {"tf": 8.12403840463596}, "sqlglot.dataframe.sql.DataFrame.limit": {"tf": 6}, "sqlglot.dataframe.sql.DataFrame.hint": {"tf": 8}, "sqlglot.dataframe.sql.DataFrame.repartition": {"tf": 9.327379053088816}, "sqlglot.dataframe.sql.DataFrame.coalesce": {"tf": 6}, "sqlglot.dataframe.sql.DataFrame.cache": {"tf": 5.291502622129181}, "sqlglot.dataframe.sql.DataFrame.persist": {"tf": 6.782329983125268}, "sqlglot.dataframe.sql.GroupedData.__init__": {"tf": 9.16515138991168}, "sqlglot.dataframe.sql.GroupedData.agg": {"tf": 8.602325267042627}, "sqlglot.dataframe.sql.GroupedData.count": {"tf": 5.291502622129181}, "sqlglot.dataframe.sql.GroupedData.mean": {"tf": 6.164414002968976}, "sqlglot.dataframe.sql.GroupedData.avg": {"tf": 6.164414002968976}, "sqlglot.dataframe.sql.GroupedData.max": {"tf": 6.164414002968976}, "sqlglot.dataframe.sql.GroupedData.min": {"tf": 6.164414002968976}, "sqlglot.dataframe.sql.GroupedData.sum": {"tf": 6.164414002968976}, "sqlglot.dataframe.sql.GroupedData.pivot": {"tf": 6.164414002968976}, "sqlglot.dataframe.sql.Column.__init__": {"tf": 7.0710678118654755}, "sqlglot.dataframe.sql.Column.ensure_col": {"tf": 7.54983443527075}, "sqlglot.dataframe.sql.Column.ensure_cols": {"tf": 8.831760866327848}, "sqlglot.dataframe.sql.Column.invoke_anonymous_function": {"tf": 9.797958971132712}, "sqlglot.dataframe.sql.Column.invoke_expression_over_column": {"tf": 8.54400374531753}, "sqlglot.dataframe.sql.Column.binary_op": {"tf": 8.246211251235321}, "sqlglot.dataframe.sql.Column.inverse_binary_op": {"tf": 8.246211251235321}, "sqlglot.dataframe.sql.Column.unary_op": {"tf": 6.48074069840786}, "sqlglot.dataframe.sql.Column.ensure_literal": {"tf": 5.656854249492381}, "sqlglot.dataframe.sql.Column.copy": {"tf": 5.291502622129181}, "sqlglot.dataframe.sql.Column.set_table_name": {"tf": 6.6332495807108}, "sqlglot.dataframe.sql.Column.sql": {"tf": 4.242640687119285}, "sqlglot.dataframe.sql.Column.alias": {"tf": 6}, "sqlglot.dataframe.sql.Column.asc": {"tf": 5.291502622129181}, "sqlglot.dataframe.sql.Column.desc": {"tf": 5.291502622129181}, "sqlglot.dataframe.sql.Column.asc_nulls_first": {"tf": 5.291502622129181}, "sqlglot.dataframe.sql.Column.asc_nulls_last": {"tf": 5.291502622129181}, "sqlglot.dataframe.sql.Column.desc_nulls_first": {"tf": 5.291502622129181}, "sqlglot.dataframe.sql.Column.desc_nulls_last": {"tf": 5.291502622129181}, "sqlglot.dataframe.sql.Column.when": {"tf": 7.937253933193772}, "sqlglot.dataframe.sql.Column.otherwise": {"tf": 6}, "sqlglot.dataframe.sql.Column.isNull": {"tf": 5.291502622129181}, "sqlglot.dataframe.sql.Column.isNotNull": {"tf": 5.291502622129181}, "sqlglot.dataframe.sql.Column.cast": {"tf": 6.6332495807108}, "sqlglot.dataframe.sql.Column.startswith": {"tf": 8}, "sqlglot.dataframe.sql.Column.endswith": {"tf": 8}, "sqlglot.dataframe.sql.Column.rlike": {"tf": 6}, "sqlglot.dataframe.sql.Column.like": {"tf": 4.242640687119285}, "sqlglot.dataframe.sql.Column.ilike": {"tf": 4.242640687119285}, "sqlglot.dataframe.sql.Column.substr": {"tf": 9.9498743710662}, "sqlglot.dataframe.sql.Column.isin": {"tf": 7.937253933193772}, "sqlglot.dataframe.sql.Column.between": {"tf": 8.660254037844387}, "sqlglot.dataframe.sql.Column.over": {"tf": 7.211102550927978}, "sqlglot.dataframe.sql.DataFrameNaFunctions.__init__": {"tf": 5.291502622129181}, "sqlglot.dataframe.sql.DataFrameNaFunctions.drop": {"tf": 10.677078252031311}, "sqlglot.dataframe.sql.DataFrameNaFunctions.fill": {"tf": 10.908712114635714}, "sqlglot.dataframe.sql.DataFrameNaFunctions.replace": {"tf": 12.083045973594572}, "sqlglot.dataframe.sql.Window.partitionBy": {"tf": 9}, "sqlglot.dataframe.sql.Window.orderBy": {"tf": 9}, "sqlglot.dataframe.sql.Window.rowsBetween": {"tf": 6.6332495807108}, "sqlglot.dataframe.sql.Window.rangeBetween": {"tf": 6.6332495807108}, "sqlglot.dataframe.sql.WindowSpec.__init__": {"tf": 5.744562646538029}, "sqlglot.dataframe.sql.WindowSpec.copy": {"tf": 3.1622776601683795}, "sqlglot.dataframe.sql.WindowSpec.sql": {"tf": 4.242640687119285}, "sqlglot.dataframe.sql.WindowSpec.partitionBy": {"tf": 9}, "sqlglot.dataframe.sql.WindowSpec.orderBy": {"tf": 9}, "sqlglot.dataframe.sql.WindowSpec.rowsBetween": {"tf": 6.6332495807108}, "sqlglot.dataframe.sql.WindowSpec.rangeBetween": {"tf": 6.6332495807108}, "sqlglot.dataframe.sql.DataFrameReader.__init__": {"tf": 5.291502622129181}, "sqlglot.dataframe.sql.DataFrameReader.table": {"tf": 6}, "sqlglot.dataframe.sql.DataFrameWriter.__init__": {"tf": 10}, "sqlglot.dataframe.sql.DataFrameWriter.copy": {"tf": 5.830951894845301}, "sqlglot.dataframe.sql.DataFrameWriter.sql": {"tf": 4.795831523312719}, "sqlglot.dataframe.sql.DataFrameWriter.mode": {"tf": 6.557438524302}, "sqlglot.dataframe.sql.DataFrameWriter.insertInto": {"tf": 7.615773105863909}, "sqlglot.dataframe.sql.DataFrameWriter.saveAsTable": {"tf": 7.745966692414834}, "sqlglot.dialects.bigquery.BigQuery.Generator.array_sql": {"tf": 5.291502622129181}, "sqlglot.dialects.bigquery.BigQuery.Generator.transaction_sql": {"tf": 4.47213595499958}, "sqlglot.dialects.bigquery.BigQuery.Generator.commit_sql": {"tf": 4.47213595499958}, "sqlglot.dialects.bigquery.BigQuery.Generator.rollback_sql": {"tf": 4.47213595499958}, "sqlglot.dialects.bigquery.BigQuery.Generator.in_unnest_op": {"tf": 5.291502622129181}, "sqlglot.dialects.bigquery.BigQuery.Generator.except_op": {"tf": 5.291502622129181}, "sqlglot.dialects.bigquery.BigQuery.Generator.intersect_op": {"tf": 5.291502622129181}, "sqlglot.dialects.clickhouse.ClickHouse.Generator.cte_sql": {"tf": 5.291502622129181}, "sqlglot.dialects.dialect.Dialect.get_or_raise": {"tf": 9.273618495495704}, "sqlglot.dialects.dialect.Dialect.format_time": {"tf": 7.615773105863909}, "sqlglot.dialects.dialect.Dialect.parse": {"tf": 6.48074069840786}, "sqlglot.dialects.dialect.Dialect.parse_into": {"tf": 10.099504938362077}, "sqlglot.dialects.dialect.Dialect.generate": {"tf": 6.48074069840786}, "sqlglot.dialects.dialect.Dialect.transpile": {"tf": 5.5677643628300215}, "sqlglot.dialects.dialect.Dialect.tokenize": {"tf": 5.744562646538029}, "sqlglot.dialects.dialect.Dialect.parser": {"tf": 5.0990195135927845}, "sqlglot.dialects.dialect.Dialect.generator": {"tf": 5.0990195135927845}, "sqlglot.dialects.dialect.rename_func": {"tf": 6.928203230275509}, "sqlglot.dialects.dialect.approx_count_distinct_sql": {"tf": 6.48074069840786}, "sqlglot.dialects.dialect.if_sql": {"tf": 6.48074069840786}, "sqlglot.dialects.dialect.arrow_json_extract_sql": {"tf": 7.416198487095663}, "sqlglot.dialects.dialect.arrow_json_extract_scalar_sql": {"tf": 7.416198487095663}, "sqlglot.dialects.dialect.inline_array_sql": {"tf": 6.48074069840786}, "sqlglot.dialects.dialect.no_ilike_sql": {"tf": 6.48074069840786}, "sqlglot.dialects.dialect.no_paren_current_date_sql": {"tf": 6.48074069840786}, "sqlglot.dialects.dialect.no_recursive_cte_sql": {"tf": 6.48074069840786}, "sqlglot.dialects.dialect.no_safe_divide_sql": {"tf": 6.48074069840786}, "sqlglot.dialects.dialect.no_tablesample_sql": {"tf": 6.48074069840786}, "sqlglot.dialects.dialect.no_pivot_sql": {"tf": 6.48074069840786}, "sqlglot.dialects.dialect.no_trycast_sql": {"tf": 6.48074069840786}, "sqlglot.dialects.dialect.no_properties_sql": {"tf": 6.48074069840786}, "sqlglot.dialects.dialect.no_comment_column_constraint_sql": {"tf": 6.48074069840786}, "sqlglot.dialects.dialect.str_position_sql": {"tf": 6.48074069840786}, "sqlglot.dialects.dialect.struct_extract_sql": {"tf": 6.48074069840786}, "sqlglot.dialects.dialect.var_map_sql": {"tf": 8.48528137423857}, "sqlglot.dialects.dialect.format_time_lambda": {"tf": 8.660254037844387}, "sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 6.48074069840786}, "sqlglot.dialects.dialect.parse_date_delta": {"tf": 8}, "sqlglot.dialects.dialect.parse_date_delta_with_interval": {"tf": 6.164414002968976}, "sqlglot.dialects.dialect.date_trunc_to_time": {"tf": 6.164414002968976}, "sqlglot.dialects.dialect.timestamptrunc_sql": {"tf": 6.48074069840786}, "sqlglot.dialects.dialect.locate_to_strposition": {"tf": 4.898979485566356}, "sqlglot.dialects.dialect.strposition_to_locate_sql": {"tf": 6.48074069840786}, "sqlglot.dialects.dialect.timestrtotime_sql": {"tf": 6.48074069840786}, "sqlglot.dialects.dialect.datestrtodate_sql": {"tf": 6.48074069840786}, "sqlglot.dialects.dialect.min_or_least": {"tf": 6.48074069840786}, "sqlglot.dialects.dialect.max_or_greatest": {"tf": 6.48074069840786}, "sqlglot.dialects.dialect.count_if_to_sum": {"tf": 6.48074069840786}, "sqlglot.dialects.dialect.trim_sql": {"tf": 6.48074069840786}, "sqlglot.dialects.dialect.str_to_time_sql": {"tf": 5.291502622129181}, "sqlglot.dialects.dialect.ts_or_ds_to_date_sql": {"tf": 4}, "sqlglot.dialects.drill.Drill.Generator.normalize_func": {"tf": 4.47213595499958}, "sqlglot.dialects.duckdb.DuckDB.Generator.tablesample_sql": {"tf": 6.855654600401044}, "sqlglot.dialects.hive.Hive.Generator.arrayagg_sql": {"tf": 5.291502622129181}, "sqlglot.dialects.hive.Hive.Generator.with_properties": {"tf": 5.291502622129181}, "sqlglot.dialects.hive.Hive.Generator.datatype_sql": {"tf": 5.291502622129181}, "sqlglot.dialects.mysql.MySQL.Generator.show_sql": {"tf": 5.291502622129181}, "sqlglot.dialects.oracle.Oracle.Generator.offset_sql": {"tf": 5.291502622129181}, "sqlglot.dialects.oracle.Oracle.Generator.column_sql": {"tf": 5.291502622129181}, "sqlglot.dialects.oracle.Oracle.Generator.xmltable_sql": {"tf": 5.291502622129181}, "sqlglot.dialects.presto.Presto.Generator.interval_sql": {"tf": 5.291502622129181}, "sqlglot.dialects.presto.Presto.Generator.transaction_sql": {"tf": 5.291502622129181}, "sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 5.291502622129181}, "sqlglot.dialects.redshift.Redshift.Generator.with_properties": {"tf": 5.291502622129181}, "sqlglot.dialects.redshift.Redshift.Generator.renametable_sql": {"tf": 5.291502622129181}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 5.291502622129181}, "sqlglot.dialects.snowflake.Snowflake.Generator.except_op": {"tf": 5.291502622129181}, "sqlglot.dialects.snowflake.Snowflake.Generator.intersect_op": {"tf": 5.291502622129181}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 5.291502622129181}, "sqlglot.dialects.snowflake.Snowflake.Generator.settag_sql": {"tf": 5.291502622129181}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 5.291502622129181}, "sqlglot.dialects.snowflake.Snowflake.Generator.describe_sql": {"tf": 5.291502622129181}, "sqlglot.dialects.snowflake.Snowflake.Generator.generatedasidentitycolumnconstraint_sql": {"tf": 5.477225575051661}, "sqlglot.dialects.spark.Spark.Generator.cast_sql": {"tf": 5.291502622129181}, "sqlglot.dialects.sqlite.SQLite.Generator.cast_sql": {"tf": 5.291502622129181}, "sqlglot.dialects.sqlite.SQLite.Generator.datediff_sql": {"tf": 5.291502622129181}, "sqlglot.dialects.sqlite.SQLite.Generator.groupconcat_sql": {"tf": 3.7416573867739413}, "sqlglot.dialects.sqlite.SQLite.Generator.least_sql": {"tf": 5.291502622129181}, "sqlglot.dialects.sqlite.SQLite.Generator.transaction_sql": {"tf": 5.291502622129181}, "sqlglot.dialects.teradata.Teradata.Generator.partitionedbyproperty_sql": {"tf": 5.291502622129181}, "sqlglot.dialects.teradata.Teradata.Generator.update_sql": {"tf": 5.291502622129181}, "sqlglot.dialects.teradata.Teradata.Generator.mod_sql": {"tf": 5.291502622129181}, "sqlglot.dialects.teradata.Teradata.Generator.datatype_sql": {"tf": 5.291502622129181}, "sqlglot.dialects.teradata.Teradata.Generator.rangen_sql": {"tf": 5.291502622129181}, "sqlglot.dialects.tsql.generate_date_delta_with_unit_sql": {"tf": 3.7416573867739413}, "sqlglot.dialects.tsql.TSQL.Generator.offset_sql": {"tf": 5.291502622129181}, "sqlglot.dialects.tsql.TSQL.Generator.systemtime_sql": {"tf": 5.291502622129181}, "sqlglot.dialects.tsql.TSQL.Generator.returnsproperty_sql": {"tf": 5.291502622129181}, "sqlglot.diff.Insert.__init__": {"tf": 4.47213595499958}, "sqlglot.diff.Remove.__init__": {"tf": 4.47213595499958}, "sqlglot.diff.Move.__init__": {"tf": 4.47213595499958}, "sqlglot.diff.Update.__init__": {"tf": 6.164414002968976}, "sqlglot.diff.Keep.__init__": {"tf": 6.164414002968976}, "sqlglot.diff.diff": {"tf": 12.96148139681572}, "sqlglot.diff.ChangeDistiller.__init__": {"tf": 5.656854249492381}, "sqlglot.diff.ChangeDistiller.diff": {"tf": 12.727922061357855}, "sqlglot.errors.ParseError.__init__": {"tf": 6.48074069840786}, "sqlglot.errors.ParseError.new": {"tf": 13.038404810405298}, "sqlglot.errors.concat_messages": {"tf": 5.385164807134504}, "sqlglot.errors.merge_errors": {"tf": 6.48074069840786}, "sqlglot.executor.execute": {"tf": 12.727922061357855}, "sqlglot.executor.context.Context.__init__": {"tf": 7.416198487095663}, "sqlglot.executor.context.Context.eval": {"tf": 3.7416573867739413}, "sqlglot.executor.context.Context.eval_tuple": {"tf": 3.7416573867739413}, "sqlglot.executor.context.Context.add_columns": {"tf": 4.69041575982343}, "sqlglot.executor.context.Context.table_iter": {"tf": 7.681145747868608}, "sqlglot.executor.context.Context.filter": {"tf": 4}, "sqlglot.executor.context.Context.sort": {"tf": 4}, "sqlglot.executor.context.Context.set_row": {"tf": 4.47213595499958}, "sqlglot.executor.context.Context.set_index": {"tf": 4.47213595499958}, "sqlglot.executor.context.Context.set_range": {"tf": 5.291502622129181}, "sqlglot.executor.env.reverse_key.__init__": {"tf": 2.8284271247461903}, "sqlglot.executor.env.filter_nulls": {"tf": 4.242640687119285}, "sqlglot.executor.env.null_if_any": {"tf": 3.4641016151377544}, "sqlglot.executor.env.str_position": {"tf": 4.69041575982343}, "sqlglot.executor.env.substring": {"tf": 5.0990195135927845}, "sqlglot.executor.env.cast": {"tf": 3.7416573867739413}, "sqlglot.executor.env.ordered": {"tf": 4.242640687119285}, "sqlglot.executor.env.interval": {"tf": 3.7416573867739413}, "sqlglot.executor.python.PythonExecutor.__init__": {"tf": 4.47213595499958}, "sqlglot.executor.python.PythonExecutor.execute": {"tf": 3.7416573867739413}, "sqlglot.executor.python.PythonExecutor.generate": {"tf": 3.7416573867739413}, "sqlglot.executor.python.PythonExecutor.generate_tuple": {"tf": 3.7416573867739413}, "sqlglot.executor.python.PythonExecutor.context": {"tf": 3.7416573867739413}, "sqlglot.executor.python.PythonExecutor.table": {"tf": 3.7416573867739413}, "sqlglot.executor.python.PythonExecutor.scan": {"tf": 4.242640687119285}, "sqlglot.executor.python.PythonExecutor.static": {"tf": 3.1622776601683795}, "sqlglot.executor.python.PythonExecutor.scan_table": {"tf": 3.7416573867739413}, "sqlglot.executor.python.PythonExecutor.scan_csv": {"tf": 3.7416573867739413}, "sqlglot.executor.python.PythonExecutor.join": {"tf": 4.242640687119285}, "sqlglot.executor.python.PythonExecutor.nested_loop_join": {"tf": 4.795831523312719}, "sqlglot.executor.python.PythonExecutor.hash_join": {"tf": 4.69041575982343}, "sqlglot.executor.python.PythonExecutor.aggregate": {"tf": 4.242640687119285}, "sqlglot.executor.python.PythonExecutor.sort": {"tf": 4.242640687119285}, "sqlglot.executor.python.PythonExecutor.set_operation": {"tf": 4.242640687119285}, "sqlglot.executor.table.Table.__init__": {"tf": 4.898979485566356}, "sqlglot.executor.table.Table.add_columns": {"tf": 4.69041575982343}, "sqlglot.executor.table.Table.append": {"tf": 3.7416573867739413}, "sqlglot.executor.table.Table.pop": {"tf": 3.1622776601683795}, "sqlglot.executor.table.TableIter.__init__": {"tf": 2.8284271247461903}, "sqlglot.executor.table.RangeReader.__init__": {"tf": 2.8284271247461903}, "sqlglot.executor.table.RowReader.__init__": {"tf": 4}, "sqlglot.executor.table.ensure_tables": {"tf": 5.744562646538029}, "sqlglot.expressions.Expression.__init__": {"tf": 3.7416573867739413}, "sqlglot.expressions.Expression.text": {"tf": 4}, "sqlglot.expressions.Expression.copy": {"tf": 3.1622776601683795}, "sqlglot.expressions.Expression.append": {"tf": 4.242640687119285}, "sqlglot.expressions.Expression.set": {"tf": 4.242640687119285}, "sqlglot.expressions.Expression.iter_expressions": {"tf": 5.744562646538029}, "sqlglot.expressions.Expression.find": {"tf": 6.6332495807108}, "sqlglot.expressions.Expression.find_all": {"tf": 6.6332495807108}, "sqlglot.expressions.Expression.find_ancestor": {"tf": 6}, "sqlglot.expressions.Expression.root": {"tf": 4.47213595499958}, "sqlglot.expressions.Expression.walk": {"tf": 5.0990195135927845}, "sqlglot.expressions.Expression.dfs": {"tf": 5.830951894845301}, "sqlglot.expressions.Expression.bfs": {"tf": 4.242640687119285}, "sqlglot.expressions.Expression.unnest": {"tf": 3.1622776601683795}, "sqlglot.expressions.Expression.unalias": {"tf": 3.1622776601683795}, "sqlglot.expressions.Expression.unnest_operands": {"tf": 3.1622776601683795}, "sqlglot.expressions.Expression.flatten": {"tf": 4.242640687119285}, "sqlglot.expressions.Expression.sql": {"tf": 9.055385138137417}, "sqlglot.expressions.Expression.transform": {"tf": 5.830951894845301}, "sqlglot.expressions.Expression.replace": {"tf": 3.7416573867739413}, "sqlglot.expressions.Expression.pop": {"tf": 3.1622776601683795}, "sqlglot.expressions.Expression.assert_is": {"tf": 3.872983346207417}, "sqlglot.expressions.Expression.error_messages": {"tf": 6}, "sqlglot.expressions.Expression.dump": {"tf": 3.1622776601683795}, "sqlglot.expressions.Expression.load": {"tf": 3.7416573867739413}, "sqlglot.expressions.Condition.and_": {"tf": 5.477225575051661}, "sqlglot.expressions.Condition.or_": {"tf": 5.477225575051661}, "sqlglot.expressions.Condition.not_": {"tf": 3.1622776601683795}, "sqlglot.expressions.Unionable.union": {"tf": 6}, "sqlglot.expressions.Unionable.intersect": {"tf": 6}, "sqlglot.expressions.Unionable.except_": {"tf": 6}, "sqlglot.expressions.Column.to_dot": {"tf": 4.47213595499958}, "sqlglot.expressions.Delete.delete": {"tf": 11.489125293076057}, "sqlglot.expressions.Delete.where": {"tf": 12.206555615733702}, "sqlglot.expressions.Delete.returning": {"tf": 11.489125293076057}, "sqlglot.expressions.Literal.number": {"tf": 4.898979485566356}, "sqlglot.expressions.Literal.string": {"tf": 4.898979485566356}, "sqlglot.expressions.Join.on": {"tf": 6.782329983125268}, "sqlglot.expressions.Join.using": {"tf": 6.782329983125268}, "sqlglot.expressions.Properties.from_dict": {"tf": 4.898979485566356}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 6}, "sqlglot.expressions.Subqueryable.limit": {"tf": 7.14142842854285}, "sqlglot.expressions.Subqueryable.with_": {"tf": 8.06225774829855}, "sqlglot.expressions.Union.limit": {"tf": 7.14142842854285}, "sqlglot.expressions.Union.select": {"tf": 12.206555615733702}, "sqlglot.expressions.Select.from_": {"tf": 7.874007874011811}, "sqlglot.expressions.Select.group_by": {"tf": 7.874007874011811}, "sqlglot.expressions.Select.order_by": {"tf": 7.874007874011811}, "sqlglot.expressions.Select.sort_by": {"tf": 7.874007874011811}, "sqlglot.expressions.Select.cluster_by": {"tf": 7.874007874011811}, "sqlglot.expressions.Select.limit": {"tf": 7.14142842854285}, "sqlglot.expressions.Select.offset": {"tf": 7.14142842854285}, "sqlglot.expressions.Select.select": {"tf": 12.206555615733702}, "sqlglot.expressions.Select.lateral": {"tf": 7.874007874011811}, "sqlglot.expressions.Select.join": {"tf": 9.797958971132712}, "sqlglot.expressions.Select.where": {"tf": 7.874007874011811}, "sqlglot.expressions.Select.having": {"tf": 7.874007874011811}, "sqlglot.expressions.Select.window": {"tf": 7.874007874011811}, "sqlglot.expressions.Select.qualify": {"tf": 7.874007874011811}, "sqlglot.expressions.Select.distinct": {"tf": 6}, "sqlglot.expressions.Select.ctas": {"tf": 7.745966692414834}, "sqlglot.expressions.Select.lock": {"tf": 7.14142842854285}, "sqlglot.expressions.Subquery.unnest": {"tf": 3.1622776601683795}, "sqlglot.expressions.DataType.build": {"tf": 11.357816691600547}, "sqlglot.expressions.DataType.is_type": {"tf": 5.656854249492381}, "sqlglot.expressions.Dot.build": {"tf": 6.557438524302}, "sqlglot.expressions.TimeUnit.__init__": {"tf": 3.1622776601683795}, "sqlglot.expressions.Func.from_arg_list": {"tf": 3.7416573867739413}, "sqlglot.expressions.Func.sql_names": {"tf": 3.1622776601683795}, "sqlglot.expressions.Func.sql_name": {"tf": 3.1622776601683795}, "sqlglot.expressions.Func.default_parser_mappings": {"tf": 3.1622776601683795}, "sqlglot.expressions.Cast.is_type": {"tf": 5.656854249492381}, "sqlglot.expressions.maybe_parse": {"tf": 14.866068747318506}, "sqlglot.expressions.union": {"tf": 6}, "sqlglot.expressions.intersect": {"tf": 6}, "sqlglot.expressions.except_": {"tf": 6}, "sqlglot.expressions.select": {"tf": 10.677078252031311}, "sqlglot.expressions.from_": {"tf": 6}, "sqlglot.expressions.update": {"tf": 13.892443989449804}, "sqlglot.expressions.delete": {"tf": 13.711309200802088}, "sqlglot.expressions.condition": {"tf": 5.830951894845301}, "sqlglot.expressions.and_": {"tf": 6}, "sqlglot.expressions.or_": {"tf": 6}, "sqlglot.expressions.not_": {"tf": 5.830951894845301}, "sqlglot.expressions.paren": {"tf": 4.47213595499958}, "sqlglot.expressions.to_identifier": {"tf": 4.242640687119285}, "sqlglot.expressions.to_interval": {"tf": 6.164414002968976}, "sqlglot.expressions.to_table": {"tf": 7.745966692414834}, "sqlglot.expressions.to_column": {"tf": 6.708203932499369}, "sqlglot.expressions.alias_": {"tf": 13.601470508735444}, "sqlglot.expressions.subquery": {"tf": 5.656854249492381}, "sqlglot.expressions.column": {"tf": 13.114877048604}, "sqlglot.expressions.cast": {"tf": 9.433981132056603}, "sqlglot.expressions.table_": {"tf": 7.54983443527075}, "sqlglot.expressions.values": {"tf": 10.44030650891055}, "sqlglot.expressions.var": {"tf": 6.928203230275509}, "sqlglot.expressions.rename_table": {"tf": 7.745966692414834}, "sqlglot.expressions.convert": {"tf": 4.47213595499958}, "sqlglot.expressions.replace_children": {"tf": 5.0990195135927845}, "sqlglot.expressions.column_table_names": {"tf": 3.1622776601683795}, "sqlglot.expressions.table_name": {"tf": 3.4641016151377544}, "sqlglot.expressions.replace_tables": {"tf": 3.7416573867739413}, "sqlglot.expressions.replace_placeholders": {"tf": 4.69041575982343}, "sqlglot.expressions.expand": {"tf": 8.660254037844387}, "sqlglot.expressions.func": {"tf": 10.04987562112089}, "sqlglot.expressions.true": {"tf": 2.6457513110645907}, "sqlglot.expressions.false": {"tf": 2.6457513110645907}, "sqlglot.expressions.null": {"tf": 2.6457513110645907}, "sqlglot.generator.Generator.__init__": {"tf": 15.033296378372908}, "sqlglot.generator.Generator.generate": {"tf": 7.937253933193772}, "sqlglot.generator.Generator.unsupported": {"tf": 4.47213595499958}, "sqlglot.generator.Generator.sep": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.seg": {"tf": 6}, "sqlglot.generator.Generator.pad_comment": {"tf": 4.47213595499958}, "sqlglot.generator.Generator.maybe_comment": {"tf": 8.54400374531753}, "sqlglot.generator.Generator.wrap": {"tf": 5.744562646538029}, "sqlglot.generator.Generator.no_identify": {"tf": 6.6332495807108}, "sqlglot.generator.Generator.normalize_func": {"tf": 4.47213595499958}, "sqlglot.generator.Generator.indent": {"tf": 9.327379053088816}, "sqlglot.generator.Generator.sql": {"tf": 8.94427190999916}, "sqlglot.generator.Generator.uncache_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.cache_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.characterset_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.column_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.columnposition_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.columndef_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.columnconstraint_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.autoincrementcolumnconstraint_sql": {"tf": 4.242640687119285}, "sqlglot.generator.Generator.compresscolumnconstraint_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.generatedasidentitycolumnconstraint_sql": {"tf": 5.477225575051661}, "sqlglot.generator.Generator.notnullcolumnconstraint_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.primarykeycolumnconstraint_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.uniquecolumnconstraint_sql": {"tf": 4.242640687119285}, "sqlglot.generator.Generator.create_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.describe_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.prepend_ctes": {"tf": 6}, "sqlglot.generator.Generator.with_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.cte_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.tablealias_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.bitstring_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.hexstring_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.bytestring_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.datatype_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.directory_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.delete_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.drop_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.except_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.except_op": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.fetch_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.filter_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.hint_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.index_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.identifier_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.inputoutputformat_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.national_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.partition_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.properties_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.root_properties": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.properties": {"tf": 9.797958971132712}, "sqlglot.generator.Generator.with_properties": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.locate_properties": {"tf": 7.937253933193772}, "sqlglot.generator.Generator.property_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.likeproperty_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.fallbackproperty_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.journalproperty_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.freespaceproperty_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.afterjournalproperty_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.checksumproperty_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.mergeblockratioproperty_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.datablocksizeproperty_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.blockcompressionproperty_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.isolatedloadingproperty_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.lockingproperty_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.withdataproperty_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.insert_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.intersect_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.intersect_op": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.introducer_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.pseudotype_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.onconflict_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.returning_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.rowformatdelimitedproperty_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.table_sql": {"tf": 6.6332495807108}, "sqlglot.generator.Generator.tablesample_sql": {"tf": 6.855654600401044}, "sqlglot.generator.Generator.pivot_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.tuple_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.update_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.values_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.var_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.into_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.from_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.group_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.having_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.join_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.lambda_sql": {"tf": 6.855654600401044}, "sqlglot.generator.Generator.lateral_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.limit_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.offset_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.setitem_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.set_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.pragma_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.lock_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.literal_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.loaddata_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.null_sql": {"tf": 4.47213595499958}, "sqlglot.generator.Generator.boolean_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.order_sql": {"tf": 6.48074069840786}, "sqlglot.generator.Generator.cluster_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.distribute_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.sort_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.ordered_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.matchrecognize_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.query_modifiers": {"tf": 6.164414002968976}, "sqlglot.generator.Generator.select_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.schema_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.star_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.structkwarg_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.parameter_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.sessionparameter_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.placeholder_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.subquery_sql": {"tf": 6.6332495807108}, "sqlglot.generator.Generator.qualify_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.union_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.union_op": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.unnest_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.where_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.window_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.partition_by_sql": {"tf": 6.557438524302}, "sqlglot.generator.Generator.window_spec_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.withingroup_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.between_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.bracket_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.all_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.any_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.exists_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.case_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.constraint_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.extract_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.trim_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.concat_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.check_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.foreignkey_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.primarykey_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.unique_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.if_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.matchagainst_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.jsonkeyvalue_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.jsonobject_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.in_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.in_unnest_op": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.interval_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.return_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.reference_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.anonymous_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.paren_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.neg_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.not_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.alias_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.aliases_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.attimezone_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.add_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.and_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.connector_sql": {"tf": 6}, "sqlglot.generator.Generator.bitwiseand_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.bitwiseleftshift_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.bitwisenot_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.bitwiseor_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.bitwiserightshift_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.bitwisexor_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.cast_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.currentdate_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.collate_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.command_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.comment_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.transaction_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.commit_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.rollback_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.altercolumn_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.renametable_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.altertable_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.droppartition_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.addconstraint_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.distinct_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.ignorenulls_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.respectnulls_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.intdiv_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.dpipe_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.div_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.overlaps_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.distance_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.dot_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.eq_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.escape_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.glob_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.gt_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.gte_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.ilike_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.ilikeany_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.is_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.like_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.likeany_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.similarto_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.lt_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.lte_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.mod_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.mul_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.neq_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.nullsafeeq_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.nullsafeneq_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.or_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.slice_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.sub_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.trycast_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.use_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.binary": {"tf": 6}, "sqlglot.generator.Generator.function_fallback_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.func": {"tf": 7.483314773547883}, "sqlglot.generator.Generator.format_args": {"tf": 6.708203932499369}, "sqlglot.generator.Generator.text_width": {"tf": 4.47213595499958}, "sqlglot.generator.Generator.format_time": {"tf": 5.744562646538029}, "sqlglot.generator.Generator.expressions": {"tf": 12.165525060596439}, "sqlglot.generator.Generator.op_expressions": {"tf": 7.3484692283495345}, "sqlglot.generator.Generator.naked_property": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.set_operation": {"tf": 6}, "sqlglot.generator.Generator.tag_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.token_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.userdefinedfunction_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.joinhint_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.kwarg_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.when_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.merge_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.tochar_sql": {"tf": 5.291502622129181}, "sqlglot.helper.seq_get": {"tf": 6.164414002968976}, "sqlglot.helper.ensure_list": {"tf": 3.1622776601683795}, "sqlglot.helper.ensure_collection": {"tf": 3.1622776601683795}, "sqlglot.helper.csv": {"tf": 5.477225575051661}, "sqlglot.helper.subclasses": {"tf": 9.38083151964686}, "sqlglot.helper.apply_index_offset": {"tf": 7.937253933193772}, "sqlglot.helper.camel_to_snake_case": {"tf": 4}, "sqlglot.helper.while_changing": {"tf": 7.483314773547883}, "sqlglot.helper.tsort": {"tf": 6.324555320336759}, "sqlglot.helper.open_file": {"tf": 3.872983346207417}, "sqlglot.helper.csv_reader": {"tf": 4.898979485566356}, "sqlglot.helper.find_new_name": {"tf": 5.385164807134504}, "sqlglot.helper.object_to_dict": {"tf": 4.69041575982343}, "sqlglot.helper.split_num_words": {"tf": 7.615773105863909}, "sqlglot.helper.is_iterable": {"tf": 4}, "sqlglot.helper.flatten": {"tf": 6.082762530298219}, "sqlglot.helper.count_params": {"tf": 4}, "sqlglot.helper.dict_depth": {"tf": 4}, "sqlglot.helper.first": {"tf": 5}, "sqlglot.helper.should_identify": {"tf": 5.385164807134504}, "sqlglot.lineage.Node.__init__": {"tf": 9.899494936611665}, "sqlglot.lineage.Node.walk": {"tf": 5}, "sqlglot.lineage.Node.to_html": {"tf": 5.0990195135927845}, "sqlglot.lineage.lineage": {"tf": 16.522711641858304}, "sqlglot.lineage.LineageHTML.__init__": {"tf": 10.44030650891055}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 5.830951894845301}, "sqlglot.optimizer.annotate_types.TypeAnnotator.__init__": {"tf": 5.291502622129181}, "sqlglot.optimizer.annotate_types.TypeAnnotator.annotate": {"tf": 3.7416573867739413}, "sqlglot.optimizer.canonicalize.canonicalize": {"tf": 7.0710678118654755}, "sqlglot.optimizer.canonicalize.add_text_to_concat": {"tf": 5.656854249492381}, "sqlglot.optimizer.canonicalize.coerce_type": {"tf": 5.656854249492381}, "sqlglot.optimizer.canonicalize.remove_redundant_casts": {"tf": 5.744562646538029}, "sqlglot.optimizer.canonicalize.ensure_bool_predicates": {"tf": 5.744562646538029}, "sqlglot.optimizer.eliminate_ctes.eliminate_ctes": {"tf": 3.1622776601683795}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 3.1622776601683795}, "sqlglot.optimizer.eliminate_joins.join_condition": {"tf": 3.1622776601683795}, "sqlglot.optimizer.eliminate_subqueries.eliminate_subqueries": {"tf": 3.1622776601683795}, "sqlglot.optimizer.expand_laterals.expand_laterals": {"tf": 5.744562646538029}, "sqlglot.optimizer.expand_multi_table_selects.expand_multi_table_selects": {"tf": 3.1622776601683795}, "sqlglot.optimizer.isolate_table_selects.isolate_table_selects": {"tf": 4.242640687119285}, "sqlglot.optimizer.lower_identities.lower_identities": {"tf": 3.1622776601683795}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 4.242640687119285}, "sqlglot.optimizer.merge_subqueries.merge_ctes": {"tf": 4.242640687119285}, "sqlglot.optimizer.merge_subqueries.merge_derived_tables": {"tf": 4.242640687119285}, "sqlglot.optimizer.normalize.normalize": {"tf": 7.280109889280518}, "sqlglot.optimizer.normalize.normalized": {"tf": 4.242640687119285}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 4.242640687119285}, "sqlglot.optimizer.normalize.distributive_law": {"tf": 5.0990195135927845}, "sqlglot.optimizer.optimize_joins.optimize_joins": {"tf": 3.1622776601683795}, "sqlglot.optimizer.optimize_joins.reorder_joins": {"tf": 3.1622776601683795}, "sqlglot.optimizer.optimize_joins.normalize": {"tf": 3.1622776601683795}, "sqlglot.optimizer.optimize_joins.other_table_names": {"tf": 3.7416573867739413}, "sqlglot.optimizer.optimizer.optimize": {"tf": 22.781571499789035}, "sqlglot.optimizer.pushdown_predicates.pushdown_predicates": {"tf": 3.1622776601683795}, "sqlglot.optimizer.pushdown_predicates.pushdown": {"tf": 4.242640687119285}, "sqlglot.optimizer.pushdown_predicates.pushdown_cnf": {"tf": 4.242640687119285}, "sqlglot.optimizer.pushdown_predicates.pushdown_dnf": {"tf": 4.242640687119285}, "sqlglot.optimizer.pushdown_predicates.nodes_for_predicate": {"tf": 4.242640687119285}, "sqlglot.optimizer.pushdown_predicates.replace_aliases": {"tf": 3.7416573867739413}, "sqlglot.optimizer.pushdown_projections.DEFAULT_SELECTION": {"tf": 2.6457513110645907}, "sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 5.0990195135927845}, "sqlglot.optimizer.qualify_columns.qualify_columns": {"tf": 3.7416573867739413}, "sqlglot.optimizer.qualify_columns.validate_qualify_columns": {"tf": 3.1622776601683795}, "sqlglot.optimizer.qualify_columns.Resolver.__init__": {"tf": 3.4641016151377544}, "sqlglot.optimizer.qualify_columns.Resolver.get_table": {"tf": 5.744562646538029}, "sqlglot.optimizer.qualify_columns.Resolver.get_source_columns": {"tf": 4.69041575982343}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"tf": 5.830951894845301}, "sqlglot.optimizer.scope.Scope.__init__": {"tf": 8.06225774829855}, "sqlglot.optimizer.scope.Scope.clear_cache": {"tf": 3.1622776601683795}, "sqlglot.optimizer.scope.Scope.branch": {"tf": 5.656854249492381}, "sqlglot.optimizer.scope.Scope.walk": {"tf": 4.242640687119285}, "sqlglot.optimizer.scope.Scope.find": {"tf": 4.898979485566356}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 4.898979485566356}, "sqlglot.optimizer.scope.Scope.replace": {"tf": 4.242640687119285}, "sqlglot.optimizer.scope.Scope.source_columns": {"tf": 3.7416573867739413}, "sqlglot.optimizer.scope.Scope.rename_source": {"tf": 4.242640687119285}, "sqlglot.optimizer.scope.Scope.add_source": {"tf": 4.242640687119285}, "sqlglot.optimizer.scope.Scope.remove_source": {"tf": 3.7416573867739413}, "sqlglot.optimizer.scope.Scope.traverse": {"tf": 3.1622776601683795}, "sqlglot.optimizer.scope.Scope.ref_count": {"tf": 3.1622776601683795}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 3.1622776601683795}, "sqlglot.optimizer.scope.build_scope": {"tf": 3.1622776601683795}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 4.242640687119285}, "sqlglot.optimizer.simplify.simplify": {"tf": 3.1622776601683795}, "sqlglot.optimizer.simplify.rewrite_between": {"tf": 5.744562646538029}, "sqlglot.optimizer.simplify.simplify_not": {"tf": 3.1622776601683795}, "sqlglot.optimizer.simplify.flatten": {"tf": 3.1622776601683795}, "sqlglot.optimizer.simplify.simplify_connectors": {"tf": 4.242640687119285}, "sqlglot.optimizer.simplify.remove_compliments": {"tf": 4.242640687119285}, "sqlglot.optimizer.simplify.uniq_sort": {"tf": 5.0990195135927845}, "sqlglot.optimizer.simplify.absorb_and_eliminate": {"tf": 4.242640687119285}, "sqlglot.optimizer.simplify.simplify_literals": {"tf": 4.242640687119285}, "sqlglot.optimizer.simplify.simplify_parens": {"tf": 3.1622776601683795}, "sqlglot.optimizer.simplify.remove_where_true": {"tf": 3.1622776601683795}, "sqlglot.optimizer.simplify.always_true": {"tf": 3.1622776601683795}, "sqlglot.optimizer.simplify.is_complement": {"tf": 3.7416573867739413}, "sqlglot.optimizer.simplify.is_false": {"tf": 4.898979485566356}, "sqlglot.optimizer.simplify.is_null": {"tf": 4.898979485566356}, "sqlglot.optimizer.simplify.eval_boolean": {"tf": 4.242640687119285}, "sqlglot.optimizer.simplify.extract_date": {"tf": 3.1622776601683795}, "sqlglot.optimizer.simplify.extract_interval": {"tf": 3.1622776601683795}, "sqlglot.optimizer.simplify.date_literal": {"tf": 3.1622776601683795}, "sqlglot.optimizer.simplify.boolean_literal": {"tf": 3.1622776601683795}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 3.1622776601683795}, "sqlglot.optimizer.unnest_subqueries.unnest": {"tf": 4.242640687119285}, "sqlglot.optimizer.unnest_subqueries.decorrelate": {"tf": 4.69041575982343}, "sqlglot.parser.parse_var_map": {"tf": 4.898979485566356}, "sqlglot.parser.parse_like": {"tf": 3.1622776601683795}, "sqlglot.parser.binary_range_parser": {"tf": 8.660254037844387}, "sqlglot.parser.Parser.__init__": {"tf": 11.269427669584644}, "sqlglot.parser.Parser.reset": {"tf": 3.1622776601683795}, "sqlglot.parser.Parser.parse": {"tf": 8.426149773176359}, "sqlglot.parser.Parser.parse_into": {"tf": 11.313708498984761}, "sqlglot.parser.Parser.check_errors": {"tf": 3.4641016151377544}, "sqlglot.parser.Parser.raise_error": {"tf": 6.855654600401044}, "sqlglot.parser.Parser.expression": {"tf": 7.810249675906654}, "sqlglot.parser.Parser.validate_expression": {"tf": 7.0710678118654755}, "sqlglot.planner.Plan.__init__": {"tf": 4.47213595499958}, "sqlglot.planner.Step.from_expression": {"tf": 8.602325267042627}, "sqlglot.planner.Step.add_dependency": {"tf": 5.291502622129181}, "sqlglot.planner.Step.to_s": {"tf": 5.0990195135927845}, "sqlglot.planner.Scan.from_expression": {"tf": 8.602325267042627}, "sqlglot.planner.Join.from_joins": {"tf": 8.888194417315589}, "sqlglot.planner.SetOperation.__init__": {"tf": 8.306623862918075}, "sqlglot.planner.SetOperation.from_expression": {"tf": 8.602325267042627}, "sqlglot.schema.Schema.add_table": {"tf": 9.539392014169456}, "sqlglot.schema.Schema.column_names": {"tf": 7.416198487095663}, "sqlglot.schema.Schema.get_column_type": {"tf": 7.745966692414834}, "sqlglot.schema.AbstractMappingSchema.__init__": {"tf": 4.795831523312719}, "sqlglot.schema.AbstractMappingSchema.table_parts": {"tf": 5.744562646538029}, "sqlglot.schema.AbstractMappingSchema.find": {"tf": 8.48528137423857}, "sqlglot.schema.MappingSchema.__init__": {"tf": 10.295630140987}, "sqlglot.schema.MappingSchema.from_mapping_schema": {"tf": 6.164414002968976}, "sqlglot.schema.MappingSchema.copy": {"tf": 5.0990195135927845}, "sqlglot.schema.MappingSchema.add_table": {"tf": 9.539392014169456}, "sqlglot.schema.MappingSchema.column_names": {"tf": 7.416198487095663}, "sqlglot.schema.MappingSchema.get_column_type": {"tf": 8.06225774829855}, "sqlglot.schema.ensure_schema": {"tf": 9.327379053088816}, "sqlglot.schema.ensure_column_mapping": {"tf": 7.615773105863909}, "sqlglot.schema.flatten_schema": {"tf": 7.54983443527075}, "sqlglot.serde.dump": {"tf": 11.045361017187261}, "sqlglot.serde.load": {"tf": 11.045361017187261}, "sqlglot.time.format_time": {"tf": 7.810249675906654}, "sqlglot.tokens.Token.__init__": {"tf": 9.797958971132712}, "sqlglot.tokens.Token.number": {"tf": 5.291502622129181}, "sqlglot.tokens.Token.string": {"tf": 5.291502622129181}, "sqlglot.tokens.Token.identifier": {"tf": 5.291502622129181}, "sqlglot.tokens.Token.var": {"tf": 5.291502622129181}, "sqlglot.tokens.Tokenizer.reset": {"tf": 3.4641016151377544}, "sqlglot.tokens.Tokenizer.tokenize": {"tf": 5.744562646538029}, "sqlglot.transforms.unalias_group": {"tf": 5.744562646538029}, "sqlglot.transforms.eliminate_distinct_on": {"tf": 5.744562646538029}, "sqlglot.transforms.eliminate_qualify": {"tf": 5.744562646538029}, "sqlglot.transforms.remove_precision_parameterized_types": {"tf": 5.744562646538029}, "sqlglot.transforms.unnest_to_explode": {"tf": 5.744562646538029}, "sqlglot.transforms.explode_to_unnest": {"tf": 5.744562646538029}, "sqlglot.transforms.remove_target_from_merge": {"tf": 5.744562646538029}, "sqlglot.transforms.preprocess": {"tf": 8.774964387392123}, "sqlglot.trie.new_trie": {"tf": 6.708203932499369}, "sqlglot.trie.in_trie": {"tf": 6.244997998398398}}, "df": 738, "s": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.parse": {"tf": 1}, "sqlglot.parse_one": {"tf": 1}, "sqlglot.transpile": {"tf": 1}, "sqlglot.dataframe.sql.SparkSession.table": {"tf": 1}, "sqlglot.dataframe.sql.SparkSession.createDataFrame": {"tf": 1}, "sqlglot.dataframe.sql.SparkSession.sql": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.copy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.select": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.alias": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.where": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.filter": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.groupBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.agg": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.join": {"tf": 2}, "sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.union": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.unionAll": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.unionByName": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.intersect": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.intersectAll": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.exceptAll": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.distinct": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.dropna": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.replace": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.withColumn": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.drop": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.limit": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.hint": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.repartition": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.coalesce": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.cache": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.persist": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.__init__": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.GroupedData.agg": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.GroupedData.count": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.mean": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.avg": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.max": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.min": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.sum": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.pivot": {"tf": 1}, "sqlglot.dataframe.sql.Column.ensure_cols": {"tf": 1}, "sqlglot.dataframe.sql.Column.invoke_anonymous_function": {"tf": 1}, "sqlglot.dataframe.sql.Column.invoke_expression_over_column": {"tf": 1}, "sqlglot.dataframe.sql.Column.binary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.inverse_binary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.unary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.ensure_literal": {"tf": 1}, "sqlglot.dataframe.sql.Column.copy": {"tf": 1}, "sqlglot.dataframe.sql.Column.set_table_name": {"tf": 1}, "sqlglot.dataframe.sql.Column.alias": {"tf": 1}, "sqlglot.dataframe.sql.Column.asc": {"tf": 1}, "sqlglot.dataframe.sql.Column.desc": {"tf": 1}, "sqlglot.dataframe.sql.Column.asc_nulls_first": {"tf": 1}, "sqlglot.dataframe.sql.Column.asc_nulls_last": {"tf": 1}, "sqlglot.dataframe.sql.Column.desc_nulls_first": {"tf": 1}, "sqlglot.dataframe.sql.Column.desc_nulls_last": {"tf": 1}, "sqlglot.dataframe.sql.Column.when": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.otherwise": {"tf": 1}, "sqlglot.dataframe.sql.Column.isNull": {"tf": 1}, "sqlglot.dataframe.sql.Column.isNotNull": {"tf": 1}, "sqlglot.dataframe.sql.Column.cast": {"tf": 1}, "sqlglot.dataframe.sql.Column.startswith": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.endswith": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.rlike": {"tf": 1}, "sqlglot.dataframe.sql.Column.substr": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Column.between": {"tf": 1}, "sqlglot.dataframe.sql.Column.over": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.drop": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.fill": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.replace": {"tf": 1}, "sqlglot.dataframe.sql.Window.partitionBy": {"tf": 1}, "sqlglot.dataframe.sql.Window.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.Window.rowsBetween": {"tf": 1}, "sqlglot.dataframe.sql.Window.rangeBetween": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.partitionBy": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.rowsBetween": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.rangeBetween": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameReader.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameReader.table": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.__init__": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrameWriter.copy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.mode": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.insertInto": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.parse": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.parse_into": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.transpile": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.tokenize": {"tf": 1}, "sqlglot.executor.execute": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1}, "sqlglot.expressions.to_table": {"tf": 1}, "sqlglot.expressions.to_column": {"tf": 1}, "sqlglot.generator.Generator.seg": {"tf": 1}, "sqlglot.generator.Generator.maybe_comment": {"tf": 1}, "sqlglot.generator.Generator.indent": {"tf": 1}, "sqlglot.generator.Generator.prepend_ctes": {"tf": 1}, "sqlglot.lineage.lineage": {"tf": 1}, "sqlglot.parser.Parser.parse": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 1}, "sqlglot.schema.Schema.add_table": {"tf": 1}, "sqlglot.schema.MappingSchema.add_table": {"tf": 1}, "sqlglot.schema.ensure_column_mapping": {"tf": 1}, "sqlglot.tokens.Tokenizer.tokenize": {"tf": 1}}, "df": 108, "g": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.parse": {"tf": 1.7320508075688772}, "sqlglot.parse_one": {"tf": 2.23606797749979}, "sqlglot.transpile": {"tf": 2.23606797749979}, "sqlglot.dataframe.sql.SparkSession.table": {"tf": 1}, "sqlglot.dataframe.sql.SparkSession.createDataFrame": {"tf": 1}, "sqlglot.dataframe.sql.SparkSession.sql": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.__init__": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.copy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.select": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.alias": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.where": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.filter": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.groupBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.agg": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.join": {"tf": 2}, "sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.union": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.unionAll": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.unionByName": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.intersect": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.intersectAll": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.exceptAll": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.distinct": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.dropna": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.replace": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.withColumn": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.drop": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.limit": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.hint": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.repartition": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.coalesce": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.cache": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.persist": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.__init__": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.GroupedData.agg": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.GroupedData.count": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.mean": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.avg": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.max": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.min": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.sum": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.pivot": {"tf": 1}, "sqlglot.dataframe.sql.Column.__init__": {"tf": 1}, "sqlglot.dataframe.sql.Column.ensure_col": {"tf": 1}, "sqlglot.dataframe.sql.Column.ensure_cols": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.invoke_anonymous_function": {"tf": 1}, "sqlglot.dataframe.sql.Column.invoke_expression_over_column": {"tf": 1}, "sqlglot.dataframe.sql.Column.binary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.inverse_binary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.unary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.ensure_literal": {"tf": 1}, "sqlglot.dataframe.sql.Column.copy": {"tf": 1}, "sqlglot.dataframe.sql.Column.set_table_name": {"tf": 1}, "sqlglot.dataframe.sql.Column.alias": {"tf": 1}, "sqlglot.dataframe.sql.Column.asc": {"tf": 1}, "sqlglot.dataframe.sql.Column.desc": {"tf": 1}, "sqlglot.dataframe.sql.Column.asc_nulls_first": {"tf": 1}, "sqlglot.dataframe.sql.Column.asc_nulls_last": {"tf": 1}, "sqlglot.dataframe.sql.Column.desc_nulls_first": {"tf": 1}, "sqlglot.dataframe.sql.Column.desc_nulls_last": {"tf": 1}, "sqlglot.dataframe.sql.Column.when": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.otherwise": {"tf": 1}, "sqlglot.dataframe.sql.Column.isNull": {"tf": 1}, "sqlglot.dataframe.sql.Column.isNotNull": {"tf": 1}, "sqlglot.dataframe.sql.Column.cast": {"tf": 1}, "sqlglot.dataframe.sql.Column.startswith": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.endswith": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.rlike": {"tf": 1}, "sqlglot.dataframe.sql.Column.substr": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Column.between": {"tf": 1}, "sqlglot.dataframe.sql.Column.over": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.drop": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.fill": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.replace": {"tf": 1}, "sqlglot.dataframe.sql.Window.partitionBy": {"tf": 1}, "sqlglot.dataframe.sql.Window.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.Window.rowsBetween": {"tf": 1}, "sqlglot.dataframe.sql.Window.rangeBetween": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.__init__": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.partitionBy": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.rowsBetween": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.rangeBetween": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameReader.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameReader.table": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.__init__": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrameWriter.copy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.mode": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.insertInto": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.array_sql": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.in_unnest_op": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.except_op": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.intersect_op": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator.cte_sql": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.get_or_raise": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.Dialect.format_time": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialect.parse": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.parse_into": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.Dialect.generate": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.tokenize": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.parser": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.generator": {"tf": 1}, "sqlglot.dialects.dialect.rename_func": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.approx_count_distinct_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.if_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.arrow_json_extract_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.arrow_json_extract_scalar_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.inline_array_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.no_ilike_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.no_paren_current_date_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.no_recursive_cte_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.no_safe_divide_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.no_tablesample_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.no_pivot_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.no_trycast_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.no_properties_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.no_comment_column_constraint_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.str_position_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.struct_extract_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.var_map_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.date_trunc_to_time": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.timestamptrunc_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.locate_to_strposition": {"tf": 1}, "sqlglot.dialects.dialect.strposition_to_locate_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.timestrtotime_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.datestrtodate_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.min_or_least": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.max_or_greatest": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.count_if_to_sum": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.trim_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.str_to_time_sql": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator.tablesample_sql": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator.arrayagg_sql": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator.with_properties": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator.show_sql": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator.offset_sql": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator.column_sql": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator.xmltable_sql": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator.interval_sql": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator.transaction_sql": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.with_properties": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.renametable_sql": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.except_op": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.intersect_op": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.settag_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.describe_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.generatedasidentitycolumnconstraint_sql": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator.cast_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.cast_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.datediff_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.least_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.transaction_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.partitionedbyproperty_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.update_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.mod_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.rangen_sql": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator.offset_sql": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator.systemtime_sql": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator.returnsproperty_sql": {"tf": 1}, "sqlglot.diff.Insert.__init__": {"tf": 1}, "sqlglot.diff.Remove.__init__": {"tf": 1}, "sqlglot.diff.Move.__init__": {"tf": 1}, "sqlglot.diff.Update.__init__": {"tf": 1.4142135623730951}, "sqlglot.diff.Keep.__init__": {"tf": 1.4142135623730951}, "sqlglot.diff.diff": {"tf": 3}, "sqlglot.diff.ChangeDistiller.diff": {"tf": 3}, "sqlglot.errors.ParseError.new": {"tf": 1}, "sqlglot.errors.merge_errors": {"tf": 1}, "sqlglot.executor.execute": {"tf": 2.23606797749979}, "sqlglot.executor.context.Context.__init__": {"tf": 1}, "sqlglot.executor.context.Context.table_iter": {"tf": 1.4142135623730951}, "sqlglot.executor.table.ensure_tables": {"tf": 1}, "sqlglot.expressions.Expression.iter_expressions": {"tf": 1}, "sqlglot.expressions.Expression.root": {"tf": 1}, "sqlglot.expressions.Expression.sql": {"tf": 1.4142135623730951}, "sqlglot.expressions.Column.to_dot": {"tf": 1}, "sqlglot.expressions.Delete.delete": {"tf": 2}, "sqlglot.expressions.Delete.where": {"tf": 2}, "sqlglot.expressions.Delete.returning": {"tf": 2}, "sqlglot.expressions.Literal.number": {"tf": 1}, "sqlglot.expressions.Literal.string": {"tf": 1}, "sqlglot.expressions.Properties.from_dict": {"tf": 1}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 1}, "sqlglot.expressions.Subqueryable.limit": {"tf": 1}, "sqlglot.expressions.Union.limit": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 2}, "sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.expressions.Select.limit": {"tf": 1}, "sqlglot.expressions.Select.offset": {"tf": 1}, "sqlglot.expressions.Select.select": {"tf": 2}, "sqlglot.expressions.Select.lateral": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1}, "sqlglot.expressions.Select.where": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1}, "sqlglot.expressions.Select.window": {"tf": 1}, "sqlglot.expressions.Select.qualify": {"tf": 1}, "sqlglot.expressions.Select.distinct": {"tf": 1}, "sqlglot.expressions.Select.ctas": {"tf": 1}, "sqlglot.expressions.Select.lock": {"tf": 1}, "sqlglot.expressions.DataType.build": {"tf": 2.23606797749979}, "sqlglot.expressions.DataType.is_type": {"tf": 1}, "sqlglot.expressions.Dot.build": {"tf": 1.4142135623730951}, "sqlglot.expressions.Cast.is_type": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 2.449489742783178}, "sqlglot.expressions.select": {"tf": 2}, "sqlglot.expressions.from_": {"tf": 1}, "sqlglot.expressions.update": {"tf": 2.449489742783178}, "sqlglot.expressions.delete": {"tf": 2.449489742783178}, "sqlglot.expressions.condition": {"tf": 1}, "sqlglot.expressions.and_": {"tf": 1}, "sqlglot.expressions.or_": {"tf": 1}, "sqlglot.expressions.not_": {"tf": 1}, "sqlglot.expressions.paren": {"tf": 1}, "sqlglot.expressions.to_interval": {"tf": 1.4142135623730951}, "sqlglot.expressions.to_table": {"tf": 1.4142135623730951}, "sqlglot.expressions.to_column": {"tf": 1.4142135623730951}, "sqlglot.expressions.alias_": {"tf": 2.23606797749979}, "sqlglot.expressions.column": {"tf": 2.23606797749979}, "sqlglot.expressions.cast": {"tf": 2}, "sqlglot.expressions.table_": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1.4142135623730951}, "sqlglot.expressions.var": {"tf": 1.4142135623730951}, "sqlglot.expressions.rename_table": {"tf": 1.7320508075688772}, "sqlglot.expressions.convert": {"tf": 1}, "sqlglot.expressions.expand": {"tf": 1.7320508075688772}, "sqlglot.expressions.func": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.generate": {"tf": 1}, "sqlglot.generator.Generator.maybe_comment": {"tf": 1}, "sqlglot.generator.Generator.wrap": {"tf": 1}, "sqlglot.generator.Generator.sql": {"tf": 1}, "sqlglot.generator.Generator.uncache_sql": {"tf": 1}, "sqlglot.generator.Generator.cache_sql": {"tf": 1}, "sqlglot.generator.Generator.characterset_sql": {"tf": 1}, "sqlglot.generator.Generator.column_sql": {"tf": 1}, "sqlglot.generator.Generator.columnposition_sql": {"tf": 1}, "sqlglot.generator.Generator.columndef_sql": {"tf": 1}, "sqlglot.generator.Generator.columnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.compresscolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.generatedasidentitycolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.notnullcolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.primarykeycolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.create_sql": {"tf": 1}, "sqlglot.generator.Generator.describe_sql": {"tf": 1}, "sqlglot.generator.Generator.prepend_ctes": {"tf": 1}, "sqlglot.generator.Generator.with_sql": {"tf": 1}, "sqlglot.generator.Generator.cte_sql": {"tf": 1}, "sqlglot.generator.Generator.tablealias_sql": {"tf": 1}, "sqlglot.generator.Generator.bitstring_sql": {"tf": 1}, "sqlglot.generator.Generator.hexstring_sql": {"tf": 1}, "sqlglot.generator.Generator.bytestring_sql": {"tf": 1}, "sqlglot.generator.Generator.datatype_sql": {"tf": 1}, "sqlglot.generator.Generator.directory_sql": {"tf": 1}, "sqlglot.generator.Generator.delete_sql": {"tf": 1}, "sqlglot.generator.Generator.drop_sql": {"tf": 1}, "sqlglot.generator.Generator.except_sql": {"tf": 1}, "sqlglot.generator.Generator.except_op": {"tf": 1}, "sqlglot.generator.Generator.fetch_sql": {"tf": 1}, "sqlglot.generator.Generator.filter_sql": {"tf": 1}, "sqlglot.generator.Generator.hint_sql": {"tf": 1}, "sqlglot.generator.Generator.index_sql": {"tf": 1}, "sqlglot.generator.Generator.identifier_sql": {"tf": 1}, "sqlglot.generator.Generator.inputoutputformat_sql": {"tf": 1}, "sqlglot.generator.Generator.national_sql": {"tf": 1}, "sqlglot.generator.Generator.partition_sql": {"tf": 1}, "sqlglot.generator.Generator.properties_sql": {"tf": 1}, "sqlglot.generator.Generator.root_properties": {"tf": 1}, "sqlglot.generator.Generator.properties": {"tf": 1}, "sqlglot.generator.Generator.with_properties": {"tf": 1}, "sqlglot.generator.Generator.locate_properties": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.property_sql": {"tf": 1}, "sqlglot.generator.Generator.likeproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.fallbackproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.journalproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.freespaceproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.afterjournalproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.checksumproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.mergeblockratioproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.datablocksizeproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.blockcompressionproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.isolatedloadingproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.lockingproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.withdataproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.insert_sql": {"tf": 1}, "sqlglot.generator.Generator.intersect_sql": {"tf": 1}, "sqlglot.generator.Generator.intersect_op": {"tf": 1}, "sqlglot.generator.Generator.introducer_sql": {"tf": 1}, "sqlglot.generator.Generator.pseudotype_sql": {"tf": 1}, "sqlglot.generator.Generator.onconflict_sql": {"tf": 1}, "sqlglot.generator.Generator.returning_sql": {"tf": 1}, "sqlglot.generator.Generator.rowformatdelimitedproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.table_sql": {"tf": 1}, "sqlglot.generator.Generator.tablesample_sql": {"tf": 1}, "sqlglot.generator.Generator.pivot_sql": {"tf": 1}, "sqlglot.generator.Generator.tuple_sql": {"tf": 1}, "sqlglot.generator.Generator.update_sql": {"tf": 1}, "sqlglot.generator.Generator.values_sql": {"tf": 1}, "sqlglot.generator.Generator.var_sql": {"tf": 1}, "sqlglot.generator.Generator.into_sql": {"tf": 1}, "sqlglot.generator.Generator.from_sql": {"tf": 1}, "sqlglot.generator.Generator.group_sql": {"tf": 1}, "sqlglot.generator.Generator.having_sql": {"tf": 1}, "sqlglot.generator.Generator.join_sql": {"tf": 1}, "sqlglot.generator.Generator.lambda_sql": {"tf": 1}, "sqlglot.generator.Generator.lateral_sql": {"tf": 1}, "sqlglot.generator.Generator.limit_sql": {"tf": 1}, "sqlglot.generator.Generator.offset_sql": {"tf": 1}, "sqlglot.generator.Generator.setitem_sql": {"tf": 1}, "sqlglot.generator.Generator.set_sql": {"tf": 1}, "sqlglot.generator.Generator.pragma_sql": {"tf": 1}, "sqlglot.generator.Generator.lock_sql": {"tf": 1}, "sqlglot.generator.Generator.literal_sql": {"tf": 1}, "sqlglot.generator.Generator.loaddata_sql": {"tf": 1}, "sqlglot.generator.Generator.boolean_sql": {"tf": 1}, "sqlglot.generator.Generator.order_sql": {"tf": 1}, "sqlglot.generator.Generator.cluster_sql": {"tf": 1}, "sqlglot.generator.Generator.distribute_sql": {"tf": 1}, "sqlglot.generator.Generator.sort_sql": {"tf": 1}, "sqlglot.generator.Generator.ordered_sql": {"tf": 1}, "sqlglot.generator.Generator.matchrecognize_sql": {"tf": 1}, "sqlglot.generator.Generator.query_modifiers": {"tf": 1}, "sqlglot.generator.Generator.select_sql": {"tf": 1}, "sqlglot.generator.Generator.schema_sql": {"tf": 1}, "sqlglot.generator.Generator.star_sql": {"tf": 1}, "sqlglot.generator.Generator.structkwarg_sql": {"tf": 1}, "sqlglot.generator.Generator.parameter_sql": {"tf": 1}, "sqlglot.generator.Generator.sessionparameter_sql": {"tf": 1}, "sqlglot.generator.Generator.placeholder_sql": {"tf": 1}, "sqlglot.generator.Generator.subquery_sql": {"tf": 1}, "sqlglot.generator.Generator.qualify_sql": {"tf": 1}, "sqlglot.generator.Generator.union_sql": {"tf": 1}, "sqlglot.generator.Generator.union_op": {"tf": 1}, "sqlglot.generator.Generator.unnest_sql": {"tf": 1}, "sqlglot.generator.Generator.where_sql": {"tf": 1}, "sqlglot.generator.Generator.window_sql": {"tf": 1}, "sqlglot.generator.Generator.partition_by_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.window_spec_sql": {"tf": 1}, "sqlglot.generator.Generator.withingroup_sql": {"tf": 1}, "sqlglot.generator.Generator.between_sql": {"tf": 1}, "sqlglot.generator.Generator.bracket_sql": {"tf": 1}, "sqlglot.generator.Generator.all_sql": {"tf": 1}, "sqlglot.generator.Generator.any_sql": {"tf": 1}, "sqlglot.generator.Generator.exists_sql": {"tf": 1}, "sqlglot.generator.Generator.case_sql": {"tf": 1}, "sqlglot.generator.Generator.constraint_sql": {"tf": 1}, "sqlglot.generator.Generator.extract_sql": {"tf": 1}, "sqlglot.generator.Generator.trim_sql": {"tf": 1}, "sqlglot.generator.Generator.concat_sql": {"tf": 1}, "sqlglot.generator.Generator.check_sql": {"tf": 1}, "sqlglot.generator.Generator.foreignkey_sql": {"tf": 1}, "sqlglot.generator.Generator.primarykey_sql": {"tf": 1}, "sqlglot.generator.Generator.unique_sql": {"tf": 1}, "sqlglot.generator.Generator.if_sql": {"tf": 1}, "sqlglot.generator.Generator.matchagainst_sql": {"tf": 1}, "sqlglot.generator.Generator.jsonkeyvalue_sql": {"tf": 1}, "sqlglot.generator.Generator.jsonobject_sql": {"tf": 1}, "sqlglot.generator.Generator.in_sql": {"tf": 1}, "sqlglot.generator.Generator.in_unnest_op": {"tf": 1}, "sqlglot.generator.Generator.interval_sql": {"tf": 1}, "sqlglot.generator.Generator.return_sql": {"tf": 1}, "sqlglot.generator.Generator.reference_sql": {"tf": 1}, "sqlglot.generator.Generator.anonymous_sql": {"tf": 1}, "sqlglot.generator.Generator.paren_sql": {"tf": 1}, "sqlglot.generator.Generator.neg_sql": {"tf": 1}, "sqlglot.generator.Generator.not_sql": {"tf": 1}, "sqlglot.generator.Generator.alias_sql": {"tf": 1}, "sqlglot.generator.Generator.aliases_sql": {"tf": 1}, "sqlglot.generator.Generator.attimezone_sql": {"tf": 1}, "sqlglot.generator.Generator.add_sql": {"tf": 1}, "sqlglot.generator.Generator.and_sql": {"tf": 1}, "sqlglot.generator.Generator.connector_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwiseand_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwiseleftshift_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwisenot_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwiseor_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwiserightshift_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwisexor_sql": {"tf": 1}, "sqlglot.generator.Generator.cast_sql": {"tf": 1}, "sqlglot.generator.Generator.currentdate_sql": {"tf": 1}, "sqlglot.generator.Generator.collate_sql": {"tf": 1}, "sqlglot.generator.Generator.command_sql": {"tf": 1}, "sqlglot.generator.Generator.comment_sql": {"tf": 1}, "sqlglot.generator.Generator.transaction_sql": {"tf": 1}, "sqlglot.generator.Generator.commit_sql": {"tf": 1}, "sqlglot.generator.Generator.rollback_sql": {"tf": 1}, "sqlglot.generator.Generator.altercolumn_sql": {"tf": 1}, "sqlglot.generator.Generator.renametable_sql": {"tf": 1}, "sqlglot.generator.Generator.altertable_sql": {"tf": 1}, "sqlglot.generator.Generator.droppartition_sql": {"tf": 1}, "sqlglot.generator.Generator.addconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.distinct_sql": {"tf": 1}, "sqlglot.generator.Generator.ignorenulls_sql": {"tf": 1}, "sqlglot.generator.Generator.respectnulls_sql": {"tf": 1}, "sqlglot.generator.Generator.intdiv_sql": {"tf": 1}, "sqlglot.generator.Generator.dpipe_sql": {"tf": 1}, "sqlglot.generator.Generator.div_sql": {"tf": 1}, "sqlglot.generator.Generator.overlaps_sql": {"tf": 1}, "sqlglot.generator.Generator.distance_sql": {"tf": 1}, "sqlglot.generator.Generator.dot_sql": {"tf": 1}, "sqlglot.generator.Generator.eq_sql": {"tf": 1}, "sqlglot.generator.Generator.escape_sql": {"tf": 1}, "sqlglot.generator.Generator.glob_sql": {"tf": 1}, "sqlglot.generator.Generator.gt_sql": {"tf": 1}, "sqlglot.generator.Generator.gte_sql": {"tf": 1}, "sqlglot.generator.Generator.ilike_sql": {"tf": 1}, "sqlglot.generator.Generator.ilikeany_sql": {"tf": 1}, "sqlglot.generator.Generator.is_sql": {"tf": 1}, "sqlglot.generator.Generator.like_sql": {"tf": 1}, "sqlglot.generator.Generator.likeany_sql": {"tf": 1}, "sqlglot.generator.Generator.similarto_sql": {"tf": 1}, "sqlglot.generator.Generator.lt_sql": {"tf": 1}, "sqlglot.generator.Generator.lte_sql": {"tf": 1}, "sqlglot.generator.Generator.mod_sql": {"tf": 1}, "sqlglot.generator.Generator.mul_sql": {"tf": 1}, "sqlglot.generator.Generator.neq_sql": {"tf": 1}, "sqlglot.generator.Generator.nullsafeeq_sql": {"tf": 1}, "sqlglot.generator.Generator.nullsafeneq_sql": {"tf": 1}, "sqlglot.generator.Generator.or_sql": {"tf": 1}, "sqlglot.generator.Generator.slice_sql": {"tf": 1}, "sqlglot.generator.Generator.sub_sql": {"tf": 1}, "sqlglot.generator.Generator.trycast_sql": {"tf": 1}, "sqlglot.generator.Generator.use_sql": {"tf": 1}, "sqlglot.generator.Generator.binary": {"tf": 1}, "sqlglot.generator.Generator.function_fallback_sql": {"tf": 1}, "sqlglot.generator.Generator.func": {"tf": 1}, "sqlglot.generator.Generator.format_args": {"tf": 1}, "sqlglot.generator.Generator.format_time": {"tf": 1}, "sqlglot.generator.Generator.expressions": {"tf": 1}, "sqlglot.generator.Generator.op_expressions": {"tf": 1}, "sqlglot.generator.Generator.naked_property": {"tf": 1}, "sqlglot.generator.Generator.set_operation": {"tf": 1}, "sqlglot.generator.Generator.tag_sql": {"tf": 1}, "sqlglot.generator.Generator.token_sql": {"tf": 1}, "sqlglot.generator.Generator.userdefinedfunction_sql": {"tf": 1}, "sqlglot.generator.Generator.joinhint_sql": {"tf": 1}, "sqlglot.generator.Generator.kwarg_sql": {"tf": 1}, "sqlglot.generator.Generator.when_sql": {"tf": 1}, "sqlglot.generator.Generator.merge_sql": {"tf": 1}, "sqlglot.generator.Generator.tochar_sql": {"tf": 1}, "sqlglot.helper.apply_index_offset": {"tf": 1}, "sqlglot.helper.while_changing": {"tf": 1.4142135623730951}, "sqlglot.helper.csv_reader": {"tf": 1}, "sqlglot.lineage.Node.__init__": {"tf": 1.7320508075688772}, "sqlglot.lineage.Node.walk": {"tf": 1}, "sqlglot.lineage.Node.to_html": {"tf": 1}, "sqlglot.lineage.lineage": {"tf": 2.6457513110645907}, "sqlglot.lineage.LineageHTML.__init__": {"tf": 1.7320508075688772}, "sqlglot.optimizer.canonicalize.canonicalize": {"tf": 1.4142135623730951}, "sqlglot.optimizer.canonicalize.add_text_to_concat": {"tf": 1.4142135623730951}, "sqlglot.optimizer.canonicalize.coerce_type": {"tf": 1.4142135623730951}, "sqlglot.optimizer.canonicalize.remove_redundant_casts": {"tf": 1.4142135623730951}, "sqlglot.optimizer.canonicalize.ensure_bool_predicates": {"tf": 1.4142135623730951}, "sqlglot.optimizer.expand_laterals.expand_laterals": {"tf": 1.4142135623730951}, "sqlglot.optimizer.normalize.normalize": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 2}, "sqlglot.optimizer.qualify_columns.Resolver.get_table": {"tf": 1}, "sqlglot.optimizer.simplify.rewrite_between": {"tf": 1.4142135623730951}, "sqlglot.optimizer.simplify.is_false": {"tf": 1}, "sqlglot.optimizer.simplify.is_null": {"tf": 1}, "sqlglot.parser.parse_var_map": {"tf": 1}, "sqlglot.parser.binary_range_parser": {"tf": 2}, "sqlglot.parser.Parser.__init__": {"tf": 1}, "sqlglot.parser.Parser.parse": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser.parse_into": {"tf": 2}, "sqlglot.parser.Parser.raise_error": {"tf": 1}, "sqlglot.parser.Parser.validate_expression": {"tf": 1}, "sqlglot.planner.Plan.__init__": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1.7320508075688772}, "sqlglot.planner.Step.add_dependency": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1.7320508075688772}, "sqlglot.planner.Join.from_joins": {"tf": 1.7320508075688772}, "sqlglot.planner.SetOperation.__init__": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1.7320508075688772}, "sqlglot.schema.Schema.add_table": {"tf": 1.4142135623730951}, "sqlglot.schema.Schema.column_names": {"tf": 1}, "sqlglot.schema.Schema.get_column_type": {"tf": 1.7320508075688772}, "sqlglot.schema.AbstractMappingSchema.table_parts": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema.find": {"tf": 1}, "sqlglot.schema.MappingSchema.__init__": {"tf": 1.4142135623730951}, "sqlglot.schema.MappingSchema.from_mapping_schema": {"tf": 1.4142135623730951}, "sqlglot.schema.MappingSchema.copy": {"tf": 1}, "sqlglot.schema.MappingSchema.add_table": {"tf": 1.4142135623730951}, "sqlglot.schema.MappingSchema.column_names": {"tf": 1}, "sqlglot.schema.MappingSchema.get_column_type": {"tf": 1.7320508075688772}, "sqlglot.schema.ensure_schema": {"tf": 1.7320508075688772}, "sqlglot.schema.ensure_column_mapping": {"tf": 1}, "sqlglot.serde.dump": {"tf": 1.4142135623730951}, "sqlglot.serde.load": {"tf": 1.4142135623730951}, "sqlglot.tokens.Token.__init__": {"tf": 1}, "sqlglot.tokens.Token.number": {"tf": 1}, "sqlglot.tokens.Token.string": {"tf": 1}, "sqlglot.tokens.Token.identifier": {"tf": 1}, "sqlglot.tokens.Token.var": {"tf": 1}, "sqlglot.tokens.Tokenizer.tokenize": {"tf": 1}, "sqlglot.transforms.unalias_group": {"tf": 1.4142135623730951}, "sqlglot.transforms.eliminate_distinct_on": {"tf": 1.4142135623730951}, "sqlglot.transforms.eliminate_qualify": {"tf": 1.4142135623730951}, "sqlglot.transforms.remove_precision_parameterized_types": {"tf": 1.4142135623730951}, "sqlglot.transforms.unnest_to_explode": {"tf": 1.4142135623730951}, "sqlglot.transforms.explode_to_unnest": {"tf": 1.4142135623730951}, "sqlglot.transforms.remove_target_from_merge": {"tf": 1.4142135623730951}, "sqlglot.transforms.preprocess": {"tf": 2}}, "df": 515}}}}, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dataframe.sql.SparkSession.sql": {"tf": 1}}, "df": 1}}}}}, "s": {"docs": {"sqlglot.generator.Generator.query_modifiers": {"tf": 1}, "sqlglot.generator.Generator.expressions": {"tf": 1}}, "df": 2}}}, "t": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.parse": {"tf": 1.4142135623730951}, "sqlglot.parse_one": {"tf": 2}, "sqlglot.transpile": {"tf": 2}, "sqlglot.dataframe.sql.SparkSession.table": {"tf": 1}, "sqlglot.dataframe.sql.SparkSession.createDataFrame": {"tf": 1}, "sqlglot.dataframe.sql.SparkSession.sql": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.__init__": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.sql": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.alias": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.join": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.dropDuplicates": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.dropna": {"tf": 2}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.replace": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.withColumn": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.withColumnRenamed": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.drop": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.hint": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.persist": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.agg": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.GroupedData.mean": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.avg": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.max": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.min": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.sum": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.pivot": {"tf": 1}, "sqlglot.dataframe.sql.Column.invoke_anonymous_function": {"tf": 1}, "sqlglot.dataframe.sql.Column.set_table_name": {"tf": 1}, "sqlglot.dataframe.sql.Column.sql": {"tf": 1}, "sqlglot.dataframe.sql.Column.alias": {"tf": 1}, "sqlglot.dataframe.sql.Column.cast": {"tf": 1}, "sqlglot.dataframe.sql.Column.startswith": {"tf": 1}, "sqlglot.dataframe.sql.Column.endswith": {"tf": 1}, "sqlglot.dataframe.sql.Column.rlike": {"tf": 1}, "sqlglot.dataframe.sql.Column.like": {"tf": 1}, "sqlglot.dataframe.sql.Column.ilike": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.drop": {"tf": 2}, "sqlglot.dataframe.sql.DataFrameNaFunctions.fill": {"tf": 2.23606797749979}, "sqlglot.dataframe.sql.DataFrameNaFunctions.replace": {"tf": 2}, "sqlglot.dataframe.sql.WindowSpec.sql": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameReader.table": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.sql": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.mode": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.insertInto": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.saveAsTable": {"tf": 1.7320508075688772}, "sqlglot.dialects.bigquery.BigQuery.Generator.array_sql": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.transaction_sql": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.commit_sql": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.rollback_sql": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.in_unnest_op": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.except_op": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.intersect_op": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator.cte_sql": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.get_or_raise": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.format_time": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.parse": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.parse_into": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.Dialect.generate": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.transpile": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialect.tokenize": {"tf": 1}, "sqlglot.dialects.dialect.rename_func": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.approx_count_distinct_sql": {"tf": 1}, "sqlglot.dialects.dialect.if_sql": {"tf": 1}, "sqlglot.dialects.dialect.arrow_json_extract_sql": {"tf": 1}, "sqlglot.dialects.dialect.arrow_json_extract_scalar_sql": {"tf": 1}, "sqlglot.dialects.dialect.inline_array_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_ilike_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_paren_current_date_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_recursive_cte_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_safe_divide_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_tablesample_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_pivot_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_trycast_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_properties_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_comment_column_constraint_sql": {"tf": 1}, "sqlglot.dialects.dialect.str_position_sql": {"tf": 1}, "sqlglot.dialects.dialect.struct_extract_sql": {"tf": 1}, "sqlglot.dialects.dialect.var_map_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.format_time_lambda": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1}, "sqlglot.dialects.dialect.parse_date_delta": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.timestamptrunc_sql": {"tf": 1}, "sqlglot.dialects.dialect.strposition_to_locate_sql": {"tf": 1}, "sqlglot.dialects.dialect.timestrtotime_sql": {"tf": 1}, "sqlglot.dialects.dialect.datestrtodate_sql": {"tf": 1}, "sqlglot.dialects.dialect.min_or_least": {"tf": 1}, "sqlglot.dialects.dialect.max_or_greatest": {"tf": 1}, "sqlglot.dialects.dialect.count_if_to_sum": {"tf": 1}, "sqlglot.dialects.dialect.trim_sql": {"tf": 1}, "sqlglot.dialects.dialect.str_to_time_sql": {"tf": 1}, "sqlglot.dialects.dialect.ts_or_ds_to_date_sql": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator.normalize_func": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Generator.tablesample_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Generator.arrayagg_sql": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator.with_properties": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator.show_sql": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator.offset_sql": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator.column_sql": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator.xmltable_sql": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator.interval_sql": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator.transaction_sql": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.with_properties": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.renametable_sql": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.except_op": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.intersect_op": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.settag_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.describe_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.generatedasidentitycolumnconstraint_sql": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator.cast_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.cast_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.datediff_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.least_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.transaction_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.partitionedbyproperty_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.update_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.mod_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.rangen_sql": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator.offset_sql": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator.systemtime_sql": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator.returnsproperty_sql": {"tf": 1}, "sqlglot.errors.ParseError.__init__": {"tf": 1.4142135623730951}, "sqlglot.errors.ParseError.new": {"tf": 2.449489742783178}, "sqlglot.errors.concat_messages": {"tf": 1}, "sqlglot.errors.merge_errors": {"tf": 1}, "sqlglot.executor.execute": {"tf": 1.4142135623730951}, "sqlglot.executor.context.Context.__init__": {"tf": 1}, "sqlglot.executor.context.Context.add_columns": {"tf": 1}, "sqlglot.executor.context.Context.table_iter": {"tf": 1}, "sqlglot.executor.table.Table.add_columns": {"tf": 1}, "sqlglot.expressions.Expression.text": {"tf": 1}, "sqlglot.expressions.Expression.iter_expressions": {"tf": 1}, "sqlglot.expressions.Expression.sql": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.error_messages": {"tf": 1}, "sqlglot.expressions.Delete.delete": {"tf": 1.4142135623730951}, "sqlglot.expressions.Delete.where": {"tf": 1.4142135623730951}, "sqlglot.expressions.Delete.returning": {"tf": 1.4142135623730951}, "sqlglot.expressions.Union.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.build": {"tf": 1.4142135623730951}, "sqlglot.expressions.maybe_parse": {"tf": 2.23606797749979}, "sqlglot.expressions.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.update": {"tf": 2}, "sqlglot.expressions.delete": {"tf": 2}, "sqlglot.expressions.to_interval": {"tf": 1}, "sqlglot.expressions.to_table": {"tf": 1}, "sqlglot.expressions.to_column": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 2}, "sqlglot.expressions.column": {"tf": 2}, "sqlglot.expressions.cast": {"tf": 1.4142135623730951}, "sqlglot.expressions.values": {"tf": 1.7320508075688772}, "sqlglot.expressions.var": {"tf": 1}, "sqlglot.expressions.rename_table": {"tf": 1.4142135623730951}, "sqlglot.expressions.table_name": {"tf": 1}, "sqlglot.expressions.expand": {"tf": 1}, "sqlglot.expressions.func": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.generate": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.unsupported": {"tf": 1}, "sqlglot.generator.Generator.sep": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.seg": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.pad_comment": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.maybe_comment": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.wrap": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.no_identify": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.normalize_func": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.indent": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.uncache_sql": {"tf": 1}, "sqlglot.generator.Generator.cache_sql": {"tf": 1}, "sqlglot.generator.Generator.characterset_sql": {"tf": 1}, "sqlglot.generator.Generator.column_sql": {"tf": 1}, "sqlglot.generator.Generator.columnposition_sql": {"tf": 1}, "sqlglot.generator.Generator.columndef_sql": {"tf": 1}, "sqlglot.generator.Generator.columnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.autoincrementcolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.compresscolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.generatedasidentitycolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.notnullcolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.primarykeycolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.uniquecolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.create_sql": {"tf": 1}, "sqlglot.generator.Generator.describe_sql": {"tf": 1}, "sqlglot.generator.Generator.prepend_ctes": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.with_sql": {"tf": 1}, "sqlglot.generator.Generator.cte_sql": {"tf": 1}, "sqlglot.generator.Generator.tablealias_sql": {"tf": 1}, "sqlglot.generator.Generator.bitstring_sql": {"tf": 1}, "sqlglot.generator.Generator.hexstring_sql": {"tf": 1}, "sqlglot.generator.Generator.bytestring_sql": {"tf": 1}, "sqlglot.generator.Generator.datatype_sql": {"tf": 1}, "sqlglot.generator.Generator.directory_sql": {"tf": 1}, "sqlglot.generator.Generator.delete_sql": {"tf": 1}, "sqlglot.generator.Generator.drop_sql": {"tf": 1}, "sqlglot.generator.Generator.except_sql": {"tf": 1}, "sqlglot.generator.Generator.except_op": {"tf": 1}, "sqlglot.generator.Generator.fetch_sql": {"tf": 1}, "sqlglot.generator.Generator.filter_sql": {"tf": 1}, "sqlglot.generator.Generator.hint_sql": {"tf": 1}, "sqlglot.generator.Generator.index_sql": {"tf": 1}, "sqlglot.generator.Generator.identifier_sql": {"tf": 1}, "sqlglot.generator.Generator.inputoutputformat_sql": {"tf": 1}, "sqlglot.generator.Generator.national_sql": {"tf": 1}, "sqlglot.generator.Generator.partition_sql": {"tf": 1}, "sqlglot.generator.Generator.properties_sql": {"tf": 1}, "sqlglot.generator.Generator.root_properties": {"tf": 1}, "sqlglot.generator.Generator.properties": {"tf": 2}, "sqlglot.generator.Generator.with_properties": {"tf": 1}, "sqlglot.generator.Generator.property_sql": {"tf": 1}, "sqlglot.generator.Generator.likeproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.fallbackproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.journalproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.freespaceproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.afterjournalproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.checksumproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.mergeblockratioproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.datablocksizeproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.blockcompressionproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.isolatedloadingproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.lockingproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.withdataproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.insert_sql": {"tf": 1}, "sqlglot.generator.Generator.intersect_sql": {"tf": 1}, "sqlglot.generator.Generator.intersect_op": {"tf": 1}, "sqlglot.generator.Generator.introducer_sql": {"tf": 1}, "sqlglot.generator.Generator.pseudotype_sql": {"tf": 1}, "sqlglot.generator.Generator.onconflict_sql": {"tf": 1}, "sqlglot.generator.Generator.returning_sql": {"tf": 1}, "sqlglot.generator.Generator.rowformatdelimitedproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.table_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.tablesample_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.pivot_sql": {"tf": 1}, "sqlglot.generator.Generator.tuple_sql": {"tf": 1}, "sqlglot.generator.Generator.update_sql": {"tf": 1}, "sqlglot.generator.Generator.values_sql": {"tf": 1}, "sqlglot.generator.Generator.var_sql": {"tf": 1}, "sqlglot.generator.Generator.into_sql": {"tf": 1}, "sqlglot.generator.Generator.from_sql": {"tf": 1}, "sqlglot.generator.Generator.group_sql": {"tf": 1}, "sqlglot.generator.Generator.having_sql": {"tf": 1}, "sqlglot.generator.Generator.join_sql": {"tf": 1}, "sqlglot.generator.Generator.lambda_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.lateral_sql": {"tf": 1}, "sqlglot.generator.Generator.limit_sql": {"tf": 1}, "sqlglot.generator.Generator.offset_sql": {"tf": 1}, "sqlglot.generator.Generator.setitem_sql": {"tf": 1}, "sqlglot.generator.Generator.set_sql": {"tf": 1}, "sqlglot.generator.Generator.pragma_sql": {"tf": 1}, "sqlglot.generator.Generator.lock_sql": {"tf": 1}, "sqlglot.generator.Generator.literal_sql": {"tf": 1}, "sqlglot.generator.Generator.loaddata_sql": {"tf": 1}, "sqlglot.generator.Generator.null_sql": {"tf": 1}, "sqlglot.generator.Generator.boolean_sql": {"tf": 1}, "sqlglot.generator.Generator.order_sql": {"tf": 1}, "sqlglot.generator.Generator.cluster_sql": {"tf": 1}, "sqlglot.generator.Generator.distribute_sql": {"tf": 1}, "sqlglot.generator.Generator.sort_sql": {"tf": 1}, "sqlglot.generator.Generator.ordered_sql": {"tf": 1}, "sqlglot.generator.Generator.matchrecognize_sql": {"tf": 1}, "sqlglot.generator.Generator.query_modifiers": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.select_sql": {"tf": 1}, "sqlglot.generator.Generator.schema_sql": {"tf": 1}, "sqlglot.generator.Generator.star_sql": {"tf": 1}, "sqlglot.generator.Generator.structkwarg_sql": {"tf": 1}, "sqlglot.generator.Generator.parameter_sql": {"tf": 1}, "sqlglot.generator.Generator.sessionparameter_sql": {"tf": 1}, "sqlglot.generator.Generator.placeholder_sql": {"tf": 1}, "sqlglot.generator.Generator.subquery_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.qualify_sql": {"tf": 1}, "sqlglot.generator.Generator.union_sql": {"tf": 1}, "sqlglot.generator.Generator.union_op": {"tf": 1}, "sqlglot.generator.Generator.unnest_sql": {"tf": 1}, "sqlglot.generator.Generator.where_sql": {"tf": 1}, "sqlglot.generator.Generator.window_sql": {"tf": 1}, "sqlglot.generator.Generator.partition_by_sql": {"tf": 1}, "sqlglot.generator.Generator.window_spec_sql": {"tf": 1}, "sqlglot.generator.Generator.withingroup_sql": {"tf": 1}, "sqlglot.generator.Generator.between_sql": {"tf": 1}, "sqlglot.generator.Generator.bracket_sql": {"tf": 1}, "sqlglot.generator.Generator.all_sql": {"tf": 1}, "sqlglot.generator.Generator.any_sql": {"tf": 1}, "sqlglot.generator.Generator.exists_sql": {"tf": 1}, "sqlglot.generator.Generator.case_sql": {"tf": 1}, "sqlglot.generator.Generator.constraint_sql": {"tf": 1}, "sqlglot.generator.Generator.extract_sql": {"tf": 1}, "sqlglot.generator.Generator.trim_sql": {"tf": 1}, "sqlglot.generator.Generator.concat_sql": {"tf": 1}, "sqlglot.generator.Generator.check_sql": {"tf": 1}, "sqlglot.generator.Generator.foreignkey_sql": {"tf": 1}, "sqlglot.generator.Generator.primarykey_sql": {"tf": 1}, "sqlglot.generator.Generator.unique_sql": {"tf": 1}, "sqlglot.generator.Generator.if_sql": {"tf": 1}, "sqlglot.generator.Generator.matchagainst_sql": {"tf": 1}, "sqlglot.generator.Generator.jsonkeyvalue_sql": {"tf": 1}, "sqlglot.generator.Generator.jsonobject_sql": {"tf": 1}, "sqlglot.generator.Generator.in_sql": {"tf": 1}, "sqlglot.generator.Generator.in_unnest_op": {"tf": 1}, "sqlglot.generator.Generator.interval_sql": {"tf": 1}, "sqlglot.generator.Generator.return_sql": {"tf": 1}, "sqlglot.generator.Generator.reference_sql": {"tf": 1}, "sqlglot.generator.Generator.anonymous_sql": {"tf": 1}, "sqlglot.generator.Generator.paren_sql": {"tf": 1}, "sqlglot.generator.Generator.neg_sql": {"tf": 1}, "sqlglot.generator.Generator.not_sql": {"tf": 1}, "sqlglot.generator.Generator.alias_sql": {"tf": 1}, "sqlglot.generator.Generator.aliases_sql": {"tf": 1}, "sqlglot.generator.Generator.attimezone_sql": {"tf": 1}, "sqlglot.generator.Generator.add_sql": {"tf": 1}, "sqlglot.generator.Generator.and_sql": {"tf": 1}, "sqlglot.generator.Generator.connector_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.bitwiseand_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwiseleftshift_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwisenot_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwiseor_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwiserightshift_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwisexor_sql": {"tf": 1}, "sqlglot.generator.Generator.cast_sql": {"tf": 1}, "sqlglot.generator.Generator.currentdate_sql": {"tf": 1}, "sqlglot.generator.Generator.collate_sql": {"tf": 1}, "sqlglot.generator.Generator.command_sql": {"tf": 1}, "sqlglot.generator.Generator.comment_sql": {"tf": 1}, "sqlglot.generator.Generator.transaction_sql": {"tf": 1}, "sqlglot.generator.Generator.commit_sql": {"tf": 1}, "sqlglot.generator.Generator.rollback_sql": {"tf": 1}, "sqlglot.generator.Generator.altercolumn_sql": {"tf": 1}, "sqlglot.generator.Generator.renametable_sql": {"tf": 1}, "sqlglot.generator.Generator.altertable_sql": {"tf": 1}, "sqlglot.generator.Generator.droppartition_sql": {"tf": 1}, "sqlglot.generator.Generator.addconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.distinct_sql": {"tf": 1}, "sqlglot.generator.Generator.ignorenulls_sql": {"tf": 1}, "sqlglot.generator.Generator.respectnulls_sql": {"tf": 1}, "sqlglot.generator.Generator.intdiv_sql": {"tf": 1}, "sqlglot.generator.Generator.dpipe_sql": {"tf": 1}, "sqlglot.generator.Generator.div_sql": {"tf": 1}, "sqlglot.generator.Generator.overlaps_sql": {"tf": 1}, "sqlglot.generator.Generator.distance_sql": {"tf": 1}, "sqlglot.generator.Generator.dot_sql": {"tf": 1}, "sqlglot.generator.Generator.eq_sql": {"tf": 1}, "sqlglot.generator.Generator.escape_sql": {"tf": 1}, "sqlglot.generator.Generator.glob_sql": {"tf": 1}, "sqlglot.generator.Generator.gt_sql": {"tf": 1}, "sqlglot.generator.Generator.gte_sql": {"tf": 1}, "sqlglot.generator.Generator.ilike_sql": {"tf": 1}, "sqlglot.generator.Generator.ilikeany_sql": {"tf": 1}, "sqlglot.generator.Generator.is_sql": {"tf": 1}, "sqlglot.generator.Generator.like_sql": {"tf": 1}, "sqlglot.generator.Generator.likeany_sql": {"tf": 1}, "sqlglot.generator.Generator.similarto_sql": {"tf": 1}, "sqlglot.generator.Generator.lt_sql": {"tf": 1}, "sqlglot.generator.Generator.lte_sql": {"tf": 1}, "sqlglot.generator.Generator.mod_sql": {"tf": 1}, "sqlglot.generator.Generator.mul_sql": {"tf": 1}, "sqlglot.generator.Generator.neq_sql": {"tf": 1}, "sqlglot.generator.Generator.nullsafeeq_sql": {"tf": 1}, "sqlglot.generator.Generator.nullsafeneq_sql": {"tf": 1}, "sqlglot.generator.Generator.or_sql": {"tf": 1}, "sqlglot.generator.Generator.slice_sql": {"tf": 1}, "sqlglot.generator.Generator.sub_sql": {"tf": 1}, "sqlglot.generator.Generator.trycast_sql": {"tf": 1}, "sqlglot.generator.Generator.use_sql": {"tf": 1}, "sqlglot.generator.Generator.binary": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.function_fallback_sql": {"tf": 1}, "sqlglot.generator.Generator.func": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.format_args": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.format_time": {"tf": 1}, "sqlglot.generator.Generator.expressions": {"tf": 2.23606797749979}, "sqlglot.generator.Generator.op_expressions": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.naked_property": {"tf": 1}, "sqlglot.generator.Generator.set_operation": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.tag_sql": {"tf": 1}, "sqlglot.generator.Generator.token_sql": {"tf": 1}, "sqlglot.generator.Generator.userdefinedfunction_sql": {"tf": 1}, "sqlglot.generator.Generator.joinhint_sql": {"tf": 1}, "sqlglot.generator.Generator.kwarg_sql": {"tf": 1}, "sqlglot.generator.Generator.when_sql": {"tf": 1}, "sqlglot.generator.Generator.merge_sql": {"tf": 1}, "sqlglot.generator.Generator.tochar_sql": {"tf": 1}, "sqlglot.helper.csv": {"tf": 1.4142135623730951}, "sqlglot.helper.subclasses": {"tf": 1}, "sqlglot.helper.camel_to_snake_case": {"tf": 1.4142135623730951}, "sqlglot.helper.open_file": {"tf": 1}, "sqlglot.helper.find_new_name": {"tf": 1.7320508075688772}, "sqlglot.helper.split_num_words": {"tf": 1.7320508075688772}, "sqlglot.helper.should_identify": {"tf": 1.4142135623730951}, "sqlglot.lineage.Node.__init__": {"tf": 1.4142135623730951}, "sqlglot.lineage.lineage": {"tf": 2.23606797749979}, "sqlglot.lineage.LineageHTML.__init__": {"tf": 1}, "sqlglot.optimizer.canonicalize.canonicalize": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 2}, "sqlglot.optimizer.qualify_columns.Resolver.get_table": {"tf": 1}, "sqlglot.parser.Parser.__init__": {"tf": 1}, "sqlglot.parser.Parser.parse": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 1.7320508075688772}, "sqlglot.parser.Parser.raise_error": {"tf": 1}, "sqlglot.parser.Parser.expression": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Step.to_s": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.Join.from_joins": {"tf": 1}, "sqlglot.planner.SetOperation.__init__": {"tf": 1.4142135623730951}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}, "sqlglot.schema.Schema.add_table": {"tf": 1.4142135623730951}, "sqlglot.schema.Schema.column_names": {"tf": 1.4142135623730951}, "sqlglot.schema.Schema.get_column_type": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema.table_parts": {"tf": 1}, "sqlglot.schema.MappingSchema.__init__": {"tf": 1}, "sqlglot.schema.MappingSchema.add_table": {"tf": 1.4142135623730951}, "sqlglot.schema.MappingSchema.column_names": {"tf": 1.4142135623730951}, "sqlglot.schema.MappingSchema.get_column_type": {"tf": 1.4142135623730951}, "sqlglot.schema.ensure_schema": {"tf": 1}, "sqlglot.schema.ensure_column_mapping": {"tf": 1}, "sqlglot.schema.flatten_schema": {"tf": 1.4142135623730951}, "sqlglot.serde.dump": {"tf": 1.4142135623730951}, "sqlglot.serde.load": {"tf": 1.4142135623730951}, "sqlglot.time.format_time": {"tf": 2}, "sqlglot.tokens.Token.__init__": {"tf": 1.4142135623730951}, "sqlglot.tokens.Token.string": {"tf": 1}, "sqlglot.tokens.Token.identifier": {"tf": 1}, "sqlglot.tokens.Token.var": {"tf": 1}, "sqlglot.tokens.Tokenizer.tokenize": {"tf": 1}, "sqlglot.transforms.preprocess": {"tf": 1}}, "df": 429, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dialects.dialect.str_position_sql": {"tf": 1}, "sqlglot.dialects.dialect.strposition_to_locate_sql": {"tf": 1}}, "df": 2}}}}}}}}, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.dialect.struct_extract_sql": {"tf": 1}}, "df": 1}}}}}}}, "k": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.generator.Generator.structkwarg_sql": {"tf": 1}}, "df": 1}}}}}, "t": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.schema.Schema.add_table": {"tf": 1}, "sqlglot.schema.MappingSchema.add_table": {"tf": 1}, "sqlglot.schema.ensure_column_mapping": {"tf": 1}}, "df": 3}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.expressions.Literal.string": {"tf": 1}, "sqlglot.generator.Generator.__init__": {"tf": 1}, "sqlglot.time.format_time": {"tf": 1}, "sqlglot.tokens.Token.string": {"tf": 1}}, "df": 4}}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.dataframe.sql.DataFrame.persist": {"tf": 1}}, "df": 1}}}}}}}}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.generator.Generator.star_sql": {"tf": 1}}, "df": 1, "t": {"docs": {"sqlglot.dataframe.sql.Window.rowsBetween": {"tf": 1}, "sqlglot.dataframe.sql.Window.rangeBetween": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.rowsBetween": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.rangeBetween": {"tf": 1}, "sqlglot.errors.ParseError.new": {"tf": 1}, "sqlglot.executor.context.Context.set_range": {"tf": 1}, "sqlglot.executor.env.substring": {"tf": 1}, "sqlglot.generator.Generator.__init__": {"tf": 1.4142135623730951}, "sqlglot.helper.split_num_words": {"tf": 1}}, "df": 9, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dataframe.sql.Column.substr": {"tf": 1}}, "df": 1}}}}}}, "e": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.executor.python.PythonExecutor.scan": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.scan_table": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.scan_csv": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.join": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.aggregate": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.sort": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.set_operation": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1.4142135623730951}, "sqlglot.planner.Step.add_dependency": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1.4142135623730951}, "sqlglot.planner.Join.from_joins": {"tf": 1.4142135623730951}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1.4142135623730951}}, "df": 12}}}, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "f": {"docs": {"sqlglot.dataframe.sql.SparkSession.table": {"tf": 1}, "sqlglot.dataframe.sql.SparkSession.createDataFrame": {"tf": 1}, "sqlglot.dataframe.sql.SparkSession.sql": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sql": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.copy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.select": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.alias": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.where": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.filter": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.groupBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.agg": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.join": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.union": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.unionAll": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.unionByName": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.intersect": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.intersectAll": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.exceptAll": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.distinct": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.dropDuplicates": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.dropna": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.replace": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.withColumn": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.withColumnRenamed": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.drop": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.limit": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.hint": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.repartition": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.coalesce": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.cache": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.persist": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.agg": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.count": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.mean": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.avg": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.max": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.min": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.sum": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.pivot": {"tf": 1}, "sqlglot.dataframe.sql.Column.binary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.inverse_binary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.unary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.copy": {"tf": 1}, "sqlglot.dataframe.sql.Column.set_table_name": {"tf": 1}, "sqlglot.dataframe.sql.Column.sql": {"tf": 1}, "sqlglot.dataframe.sql.Column.alias": {"tf": 1}, "sqlglot.dataframe.sql.Column.asc": {"tf": 1}, "sqlglot.dataframe.sql.Column.desc": {"tf": 1}, "sqlglot.dataframe.sql.Column.asc_nulls_first": {"tf": 1}, "sqlglot.dataframe.sql.Column.asc_nulls_last": {"tf": 1}, "sqlglot.dataframe.sql.Column.desc_nulls_first": {"tf": 1}, "sqlglot.dataframe.sql.Column.desc_nulls_last": {"tf": 1}, "sqlglot.dataframe.sql.Column.when": {"tf": 1}, "sqlglot.dataframe.sql.Column.otherwise": {"tf": 1}, "sqlglot.dataframe.sql.Column.isNull": {"tf": 1}, "sqlglot.dataframe.sql.Column.isNotNull": {"tf": 1}, "sqlglot.dataframe.sql.Column.cast": {"tf": 1}, "sqlglot.dataframe.sql.Column.startswith": {"tf": 1}, "sqlglot.dataframe.sql.Column.endswith": {"tf": 1}, "sqlglot.dataframe.sql.Column.rlike": {"tf": 1}, "sqlglot.dataframe.sql.Column.like": {"tf": 1}, "sqlglot.dataframe.sql.Column.ilike": {"tf": 1}, "sqlglot.dataframe.sql.Column.substr": {"tf": 1}, "sqlglot.dataframe.sql.Column.isin": {"tf": 1}, "sqlglot.dataframe.sql.Column.between": {"tf": 1}, "sqlglot.dataframe.sql.Column.over": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.drop": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.fill": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.replace": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.copy": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.sql": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.partitionBy": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.rowsBetween": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.rangeBetween": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameReader.table": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.copy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.sql": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.mode": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.insertInto": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.saveAsTable": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.array_sql": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.transaction_sql": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.commit_sql": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.rollback_sql": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.in_unnest_op": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.except_op": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.intersect_op": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator.cte_sql": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.parse": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.parse_into": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.generate": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.transpile": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.tokenize": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.parser": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.generator": {"tf": 1}, "sqlglot.dialects.dialect.approx_count_distinct_sql": {"tf": 1}, "sqlglot.dialects.dialect.if_sql": {"tf": 1}, "sqlglot.dialects.dialect.arrow_json_extract_sql": {"tf": 1}, "sqlglot.dialects.dialect.arrow_json_extract_scalar_sql": {"tf": 1}, "sqlglot.dialects.dialect.inline_array_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_ilike_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_paren_current_date_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_recursive_cte_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_safe_divide_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_tablesample_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_pivot_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_trycast_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_properties_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_comment_column_constraint_sql": {"tf": 1}, "sqlglot.dialects.dialect.str_position_sql": {"tf": 1}, "sqlglot.dialects.dialect.struct_extract_sql": {"tf": 1}, "sqlglot.dialects.dialect.var_map_sql": {"tf": 1}, "sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1}, "sqlglot.dialects.dialect.timestamptrunc_sql": {"tf": 1}, "sqlglot.dialects.dialect.strposition_to_locate_sql": {"tf": 1}, "sqlglot.dialects.dialect.timestrtotime_sql": {"tf": 1}, "sqlglot.dialects.dialect.datestrtodate_sql": {"tf": 1}, "sqlglot.dialects.dialect.min_or_least": {"tf": 1}, "sqlglot.dialects.dialect.max_or_greatest": {"tf": 1}, "sqlglot.dialects.dialect.count_if_to_sum": {"tf": 1}, "sqlglot.dialects.dialect.trim_sql": {"tf": 1}, "sqlglot.dialects.dialect.str_to_time_sql": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator.normalize_func": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator.tablesample_sql": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator.arrayagg_sql": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator.with_properties": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator.show_sql": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator.offset_sql": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator.column_sql": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator.xmltable_sql": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator.interval_sql": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator.transaction_sql": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.with_properties": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.renametable_sql": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.except_op": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.intersect_op": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.settag_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.describe_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.generatedasidentitycolumnconstraint_sql": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator.cast_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.cast_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.datediff_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.groupconcat_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.least_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.transaction_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.partitionedbyproperty_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.update_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.mod_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.rangen_sql": {"tf": 1}, "sqlglot.dialects.tsql.generate_date_delta_with_unit_sql": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator.offset_sql": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator.systemtime_sql": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator.returnsproperty_sql": {"tf": 1}, "sqlglot.diff.ChangeDistiller.diff": {"tf": 1}, "sqlglot.executor.context.Context.eval": {"tf": 1}, "sqlglot.executor.context.Context.eval_tuple": {"tf": 1}, "sqlglot.executor.context.Context.add_columns": {"tf": 1}, "sqlglot.executor.context.Context.table_iter": {"tf": 1}, "sqlglot.executor.context.Context.filter": {"tf": 1}, "sqlglot.executor.context.Context.sort": {"tf": 1}, "sqlglot.executor.context.Context.set_row": {"tf": 1}, "sqlglot.executor.context.Context.set_index": {"tf": 1}, "sqlglot.executor.context.Context.set_range": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.execute": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.generate": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.generate_tuple": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.context": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.table": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.scan": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.static": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.scan_table": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.scan_csv": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.join": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.nested_loop_join": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.hash_join": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.aggregate": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.sort": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.set_operation": {"tf": 1}, "sqlglot.executor.table.Table.add_columns": {"tf": 1}, "sqlglot.executor.table.Table.append": {"tf": 1}, "sqlglot.executor.table.Table.pop": {"tf": 1}, "sqlglot.expressions.Expression.text": {"tf": 1}, "sqlglot.expressions.Expression.copy": {"tf": 1}, "sqlglot.expressions.Expression.append": {"tf": 1}, "sqlglot.expressions.Expression.set": {"tf": 1}, "sqlglot.expressions.Expression.iter_expressions": {"tf": 1}, "sqlglot.expressions.Expression.find": {"tf": 1}, "sqlglot.expressions.Expression.find_all": {"tf": 1}, "sqlglot.expressions.Expression.find_ancestor": {"tf": 1}, "sqlglot.expressions.Expression.root": {"tf": 1}, "sqlglot.expressions.Expression.walk": {"tf": 1}, "sqlglot.expressions.Expression.dfs": {"tf": 1}, "sqlglot.expressions.Expression.bfs": {"tf": 1}, "sqlglot.expressions.Expression.unnest": {"tf": 1}, "sqlglot.expressions.Expression.unalias": {"tf": 1}, "sqlglot.expressions.Expression.unnest_operands": {"tf": 1}, "sqlglot.expressions.Expression.flatten": {"tf": 1}, "sqlglot.expressions.Expression.sql": {"tf": 1}, "sqlglot.expressions.Expression.transform": {"tf": 1}, "sqlglot.expressions.Expression.replace": {"tf": 1}, "sqlglot.expressions.Expression.pop": {"tf": 1}, "sqlglot.expressions.Expression.assert_is": {"tf": 1}, "sqlglot.expressions.Expression.error_messages": {"tf": 1}, "sqlglot.expressions.Expression.dump": {"tf": 1}, "sqlglot.expressions.Condition.and_": {"tf": 1}, "sqlglot.expressions.Condition.or_": {"tf": 1}, "sqlglot.expressions.Condition.not_": {"tf": 1}, "sqlglot.expressions.Unionable.union": {"tf": 1}, "sqlglot.expressions.Unionable.intersect": {"tf": 1}, "sqlglot.expressions.Unionable.except_": {"tf": 1}, "sqlglot.expressions.Column.to_dot": {"tf": 1}, "sqlglot.expressions.Delete.delete": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Delete.returning": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Join.using": {"tf": 1}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 1}, "sqlglot.expressions.Subqueryable.limit": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1}, "sqlglot.expressions.Union.limit": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.expressions.Select.limit": {"tf": 1}, "sqlglot.expressions.Select.offset": {"tf": 1}, "sqlglot.expressions.Select.select": {"tf": 1}, "sqlglot.expressions.Select.lateral": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1}, "sqlglot.expressions.Select.where": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1}, "sqlglot.expressions.Select.window": {"tf": 1}, "sqlglot.expressions.Select.qualify": {"tf": 1}, "sqlglot.expressions.Select.distinct": {"tf": 1}, "sqlglot.expressions.Select.ctas": {"tf": 1}, "sqlglot.expressions.Select.lock": {"tf": 1}, "sqlglot.expressions.Subquery.unnest": {"tf": 1}, "sqlglot.expressions.DataType.is_type": {"tf": 1}, "sqlglot.expressions.Dot.build": {"tf": 1}, "sqlglot.expressions.Cast.is_type": {"tf": 1}, "sqlglot.generator.Generator.generate": {"tf": 1}, "sqlglot.generator.Generator.unsupported": {"tf": 1}, "sqlglot.generator.Generator.sep": {"tf": 1}, "sqlglot.generator.Generator.seg": {"tf": 1}, "sqlglot.generator.Generator.pad_comment": {"tf": 1}, "sqlglot.generator.Generator.maybe_comment": {"tf": 1}, "sqlglot.generator.Generator.wrap": {"tf": 1}, "sqlglot.generator.Generator.no_identify": {"tf": 1}, "sqlglot.generator.Generator.normalize_func": {"tf": 1}, "sqlglot.generator.Generator.indent": {"tf": 1}, "sqlglot.generator.Generator.sql": {"tf": 1}, "sqlglot.generator.Generator.uncache_sql": {"tf": 1}, "sqlglot.generator.Generator.cache_sql": {"tf": 1}, "sqlglot.generator.Generator.characterset_sql": {"tf": 1}, "sqlglot.generator.Generator.column_sql": {"tf": 1}, "sqlglot.generator.Generator.columnposition_sql": {"tf": 1}, "sqlglot.generator.Generator.columndef_sql": {"tf": 1}, "sqlglot.generator.Generator.columnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.autoincrementcolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.compresscolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.generatedasidentitycolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.notnullcolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.primarykeycolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.uniquecolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.create_sql": {"tf": 1}, "sqlglot.generator.Generator.describe_sql": {"tf": 1}, "sqlglot.generator.Generator.prepend_ctes": {"tf": 1}, "sqlglot.generator.Generator.with_sql": {"tf": 1}, "sqlglot.generator.Generator.cte_sql": {"tf": 1}, "sqlglot.generator.Generator.tablealias_sql": {"tf": 1}, "sqlglot.generator.Generator.bitstring_sql": {"tf": 1}, "sqlglot.generator.Generator.hexstring_sql": {"tf": 1}, "sqlglot.generator.Generator.bytestring_sql": {"tf": 1}, "sqlglot.generator.Generator.datatype_sql": {"tf": 1}, "sqlglot.generator.Generator.directory_sql": {"tf": 1}, "sqlglot.generator.Generator.delete_sql": {"tf": 1}, "sqlglot.generator.Generator.drop_sql": {"tf": 1}, "sqlglot.generator.Generator.except_sql": {"tf": 1}, "sqlglot.generator.Generator.except_op": {"tf": 1}, "sqlglot.generator.Generator.fetch_sql": {"tf": 1}, "sqlglot.generator.Generator.filter_sql": {"tf": 1}, "sqlglot.generator.Generator.hint_sql": {"tf": 1}, "sqlglot.generator.Generator.index_sql": {"tf": 1}, "sqlglot.generator.Generator.identifier_sql": {"tf": 1}, "sqlglot.generator.Generator.inputoutputformat_sql": {"tf": 1}, "sqlglot.generator.Generator.national_sql": {"tf": 1}, "sqlglot.generator.Generator.partition_sql": {"tf": 1}, "sqlglot.generator.Generator.properties_sql": {"tf": 1}, "sqlglot.generator.Generator.root_properties": {"tf": 1}, "sqlglot.generator.Generator.properties": {"tf": 1}, "sqlglot.generator.Generator.with_properties": {"tf": 1}, "sqlglot.generator.Generator.locate_properties": {"tf": 1}, "sqlglot.generator.Generator.property_sql": {"tf": 1}, "sqlglot.generator.Generator.likeproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.fallbackproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.journalproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.freespaceproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.afterjournalproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.checksumproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.mergeblockratioproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.datablocksizeproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.blockcompressionproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.isolatedloadingproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.lockingproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.withdataproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.insert_sql": {"tf": 1}, "sqlglot.generator.Generator.intersect_sql": {"tf": 1}, "sqlglot.generator.Generator.intersect_op": {"tf": 1}, "sqlglot.generator.Generator.introducer_sql": {"tf": 1}, "sqlglot.generator.Generator.pseudotype_sql": {"tf": 1}, "sqlglot.generator.Generator.onconflict_sql": {"tf": 1}, "sqlglot.generator.Generator.returning_sql": {"tf": 1}, "sqlglot.generator.Generator.rowformatdelimitedproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.table_sql": {"tf": 1}, "sqlglot.generator.Generator.tablesample_sql": {"tf": 1}, "sqlglot.generator.Generator.pivot_sql": {"tf": 1}, "sqlglot.generator.Generator.tuple_sql": {"tf": 1}, "sqlglot.generator.Generator.update_sql": {"tf": 1}, "sqlglot.generator.Generator.values_sql": {"tf": 1}, "sqlglot.generator.Generator.var_sql": {"tf": 1}, "sqlglot.generator.Generator.into_sql": {"tf": 1}, "sqlglot.generator.Generator.from_sql": {"tf": 1}, "sqlglot.generator.Generator.group_sql": {"tf": 1}, "sqlglot.generator.Generator.having_sql": {"tf": 1}, "sqlglot.generator.Generator.join_sql": {"tf": 1}, "sqlglot.generator.Generator.lambda_sql": {"tf": 1}, "sqlglot.generator.Generator.lateral_sql": {"tf": 1}, "sqlglot.generator.Generator.limit_sql": {"tf": 1}, "sqlglot.generator.Generator.offset_sql": {"tf": 1}, "sqlglot.generator.Generator.setitem_sql": {"tf": 1}, "sqlglot.generator.Generator.set_sql": {"tf": 1}, "sqlglot.generator.Generator.pragma_sql": {"tf": 1}, "sqlglot.generator.Generator.lock_sql": {"tf": 1}, "sqlglot.generator.Generator.literal_sql": {"tf": 1}, "sqlglot.generator.Generator.loaddata_sql": {"tf": 1}, "sqlglot.generator.Generator.null_sql": {"tf": 1}, "sqlglot.generator.Generator.boolean_sql": {"tf": 1}, "sqlglot.generator.Generator.order_sql": {"tf": 1}, "sqlglot.generator.Generator.cluster_sql": {"tf": 1}, "sqlglot.generator.Generator.distribute_sql": {"tf": 1}, "sqlglot.generator.Generator.sort_sql": {"tf": 1}, "sqlglot.generator.Generator.ordered_sql": {"tf": 1}, "sqlglot.generator.Generator.matchrecognize_sql": {"tf": 1}, "sqlglot.generator.Generator.query_modifiers": {"tf": 1}, "sqlglot.generator.Generator.select_sql": {"tf": 1}, "sqlglot.generator.Generator.schema_sql": {"tf": 1}, "sqlglot.generator.Generator.star_sql": {"tf": 1}, "sqlglot.generator.Generator.structkwarg_sql": {"tf": 1}, "sqlglot.generator.Generator.parameter_sql": {"tf": 1}, "sqlglot.generator.Generator.sessionparameter_sql": {"tf": 1}, "sqlglot.generator.Generator.placeholder_sql": {"tf": 1}, "sqlglot.generator.Generator.subquery_sql": {"tf": 1}, "sqlglot.generator.Generator.qualify_sql": {"tf": 1}, "sqlglot.generator.Generator.union_sql": {"tf": 1}, "sqlglot.generator.Generator.union_op": {"tf": 1}, "sqlglot.generator.Generator.unnest_sql": {"tf": 1}, "sqlglot.generator.Generator.where_sql": {"tf": 1}, "sqlglot.generator.Generator.window_sql": {"tf": 1}, "sqlglot.generator.Generator.partition_by_sql": {"tf": 1}, "sqlglot.generator.Generator.window_spec_sql": {"tf": 1}, "sqlglot.generator.Generator.withingroup_sql": {"tf": 1}, "sqlglot.generator.Generator.between_sql": {"tf": 1}, "sqlglot.generator.Generator.bracket_sql": {"tf": 1}, "sqlglot.generator.Generator.all_sql": {"tf": 1}, "sqlglot.generator.Generator.any_sql": {"tf": 1}, "sqlglot.generator.Generator.exists_sql": {"tf": 1}, "sqlglot.generator.Generator.case_sql": {"tf": 1}, "sqlglot.generator.Generator.constraint_sql": {"tf": 1}, "sqlglot.generator.Generator.extract_sql": {"tf": 1}, "sqlglot.generator.Generator.trim_sql": {"tf": 1}, "sqlglot.generator.Generator.concat_sql": {"tf": 1}, "sqlglot.generator.Generator.check_sql": {"tf": 1}, "sqlglot.generator.Generator.foreignkey_sql": {"tf": 1}, "sqlglot.generator.Generator.primarykey_sql": {"tf": 1}, "sqlglot.generator.Generator.unique_sql": {"tf": 1}, "sqlglot.generator.Generator.if_sql": {"tf": 1}, "sqlglot.generator.Generator.matchagainst_sql": {"tf": 1}, "sqlglot.generator.Generator.jsonkeyvalue_sql": {"tf": 1}, "sqlglot.generator.Generator.jsonobject_sql": {"tf": 1}, "sqlglot.generator.Generator.in_sql": {"tf": 1}, "sqlglot.generator.Generator.in_unnest_op": {"tf": 1}, "sqlglot.generator.Generator.interval_sql": {"tf": 1}, "sqlglot.generator.Generator.return_sql": {"tf": 1}, "sqlglot.generator.Generator.reference_sql": {"tf": 1}, "sqlglot.generator.Generator.anonymous_sql": {"tf": 1}, "sqlglot.generator.Generator.paren_sql": {"tf": 1}, "sqlglot.generator.Generator.neg_sql": {"tf": 1}, "sqlglot.generator.Generator.not_sql": {"tf": 1}, "sqlglot.generator.Generator.alias_sql": {"tf": 1}, "sqlglot.generator.Generator.aliases_sql": {"tf": 1}, "sqlglot.generator.Generator.attimezone_sql": {"tf": 1}, "sqlglot.generator.Generator.add_sql": {"tf": 1}, "sqlglot.generator.Generator.and_sql": {"tf": 1}, "sqlglot.generator.Generator.connector_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwiseand_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwiseleftshift_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwisenot_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwiseor_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwiserightshift_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwisexor_sql": {"tf": 1}, "sqlglot.generator.Generator.cast_sql": {"tf": 1}, "sqlglot.generator.Generator.currentdate_sql": {"tf": 1}, "sqlglot.generator.Generator.collate_sql": {"tf": 1}, "sqlglot.generator.Generator.command_sql": {"tf": 1}, "sqlglot.generator.Generator.comment_sql": {"tf": 1}, "sqlglot.generator.Generator.transaction_sql": {"tf": 1}, "sqlglot.generator.Generator.commit_sql": {"tf": 1}, "sqlglot.generator.Generator.rollback_sql": {"tf": 1}, "sqlglot.generator.Generator.altercolumn_sql": {"tf": 1}, "sqlglot.generator.Generator.renametable_sql": {"tf": 1}, "sqlglot.generator.Generator.altertable_sql": {"tf": 1}, "sqlglot.generator.Generator.droppartition_sql": {"tf": 1}, "sqlglot.generator.Generator.addconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.distinct_sql": {"tf": 1}, "sqlglot.generator.Generator.ignorenulls_sql": {"tf": 1}, "sqlglot.generator.Generator.respectnulls_sql": {"tf": 1}, "sqlglot.generator.Generator.intdiv_sql": {"tf": 1}, "sqlglot.generator.Generator.dpipe_sql": {"tf": 1}, "sqlglot.generator.Generator.div_sql": {"tf": 1}, "sqlglot.generator.Generator.overlaps_sql": {"tf": 1}, "sqlglot.generator.Generator.distance_sql": {"tf": 1}, "sqlglot.generator.Generator.dot_sql": {"tf": 1}, "sqlglot.generator.Generator.eq_sql": {"tf": 1}, "sqlglot.generator.Generator.escape_sql": {"tf": 1}, "sqlglot.generator.Generator.glob_sql": {"tf": 1}, "sqlglot.generator.Generator.gt_sql": {"tf": 1}, "sqlglot.generator.Generator.gte_sql": {"tf": 1}, "sqlglot.generator.Generator.ilike_sql": {"tf": 1}, "sqlglot.generator.Generator.ilikeany_sql": {"tf": 1}, "sqlglot.generator.Generator.is_sql": {"tf": 1}, "sqlglot.generator.Generator.like_sql": {"tf": 1}, "sqlglot.generator.Generator.likeany_sql": {"tf": 1}, "sqlglot.generator.Generator.similarto_sql": {"tf": 1}, "sqlglot.generator.Generator.lt_sql": {"tf": 1}, "sqlglot.generator.Generator.lte_sql": {"tf": 1}, "sqlglot.generator.Generator.mod_sql": {"tf": 1}, "sqlglot.generator.Generator.mul_sql": {"tf": 1}, "sqlglot.generator.Generator.neq_sql": {"tf": 1}, "sqlglot.generator.Generator.nullsafeeq_sql": {"tf": 1}, "sqlglot.generator.Generator.nullsafeneq_sql": {"tf": 1}, "sqlglot.generator.Generator.or_sql": {"tf": 1}, "sqlglot.generator.Generator.slice_sql": {"tf": 1}, "sqlglot.generator.Generator.sub_sql": {"tf": 1}, "sqlglot.generator.Generator.trycast_sql": {"tf": 1}, "sqlglot.generator.Generator.use_sql": {"tf": 1}, "sqlglot.generator.Generator.binary": {"tf": 1}, "sqlglot.generator.Generator.function_fallback_sql": {"tf": 1}, "sqlglot.generator.Generator.func": {"tf": 1}, "sqlglot.generator.Generator.format_args": {"tf": 1}, "sqlglot.generator.Generator.text_width": {"tf": 1}, "sqlglot.generator.Generator.format_time": {"tf": 1}, "sqlglot.generator.Generator.expressions": {"tf": 1}, "sqlglot.generator.Generator.op_expressions": {"tf": 1}, "sqlglot.generator.Generator.naked_property": {"tf": 1}, "sqlglot.generator.Generator.set_operation": {"tf": 1}, "sqlglot.generator.Generator.tag_sql": {"tf": 1}, "sqlglot.generator.Generator.token_sql": {"tf": 1}, "sqlglot.generator.Generator.userdefinedfunction_sql": {"tf": 1}, "sqlglot.generator.Generator.joinhint_sql": {"tf": 1}, "sqlglot.generator.Generator.kwarg_sql": {"tf": 1}, "sqlglot.generator.Generator.when_sql": {"tf": 1}, "sqlglot.generator.Generator.merge_sql": {"tf": 1}, "sqlglot.generator.Generator.tochar_sql": {"tf": 1}, "sqlglot.lineage.Node.walk": {"tf": 1}, "sqlglot.lineage.Node.to_html": {"tf": 1}, "sqlglot.optimizer.annotate_types.TypeAnnotator.annotate": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.get_table": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.get_source_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.clear_cache": {"tf": 1}, "sqlglot.optimizer.scope.Scope.branch": {"tf": 1}, "sqlglot.optimizer.scope.Scope.walk": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1}, "sqlglot.optimizer.scope.Scope.replace": {"tf": 1}, "sqlglot.optimizer.scope.Scope.source_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.rename_source": {"tf": 1}, "sqlglot.optimizer.scope.Scope.add_source": {"tf": 1}, "sqlglot.optimizer.scope.Scope.remove_source": {"tf": 1}, "sqlglot.optimizer.scope.Scope.traverse": {"tf": 1}, "sqlglot.optimizer.scope.Scope.ref_count": {"tf": 1}, "sqlglot.parser.Parser.reset": {"tf": 1}, "sqlglot.parser.Parser.parse": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 1}, "sqlglot.parser.Parser.check_errors": {"tf": 1}, "sqlglot.parser.Parser.raise_error": {"tf": 1}, "sqlglot.parser.Parser.expression": {"tf": 1}, "sqlglot.parser.Parser.validate_expression": {"tf": 1}, "sqlglot.planner.Step.add_dependency": {"tf": 1}, "sqlglot.planner.Step.to_s": {"tf": 1}, "sqlglot.schema.Schema.add_table": {"tf": 1}, "sqlglot.schema.Schema.column_names": {"tf": 1}, "sqlglot.schema.Schema.get_column_type": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema.table_parts": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema.find": {"tf": 1}, "sqlglot.schema.MappingSchema.copy": {"tf": 1}, "sqlglot.schema.MappingSchema.add_table": {"tf": 1}, "sqlglot.schema.MappingSchema.column_names": {"tf": 1}, "sqlglot.schema.MappingSchema.get_column_type": {"tf": 1}, "sqlglot.tokens.Tokenizer.reset": {"tf": 1}, "sqlglot.tokens.Tokenizer.tokenize": {"tf": 1}}, "df": 512}, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe.sql.DataFrame.__init__": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.expressions.Subqueryable.limit": {"tf": 1}, "sqlglot.expressions.Union.limit": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.expressions.Select.limit": {"tf": 1}, "sqlglot.expressions.Select.offset": {"tf": 1}, "sqlglot.expressions.Select.select": {"tf": 1}, "sqlglot.expressions.Select.lateral": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1}, "sqlglot.expressions.Select.where": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1}, "sqlglot.expressions.Select.window": {"tf": 1}, "sqlglot.expressions.Select.qualify": {"tf": 1}, "sqlglot.expressions.Select.distinct": {"tf": 1}, "sqlglot.expressions.Select.lock": {"tf": 1}, "sqlglot.expressions.select": {"tf": 1}, "sqlglot.expressions.from_": {"tf": 1}, "sqlglot.generator.Generator.select_sql": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.unnest": {"tf": 1.4142135623730951}, "sqlglot.optimizer.unnest_subqueries.decorrelate": {"tf": 1.4142135623730951}}, "df": 25, "s": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1.4142135623730951}}, "df": 1}, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 1}}, "df": 1}}}}}}}}, "q": {"docs": {"sqlglot.helper.seq_get": {"tf": 1}}, "df": 1, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.SparkSession.createDataFrame": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.__init__": {"tf": 1}, "sqlglot.dialects.dialect.format_time_lambda": {"tf": 1}, "sqlglot.dialects.dialect.parse_date_delta": {"tf": 1}, "sqlglot.dialects.dialect.parse_date_delta_with_interval": {"tf": 1}, "sqlglot.dialects.dialect.date_trunc_to_time": {"tf": 1}, "sqlglot.dialects.dialect.locate_to_strposition": {"tf": 1}, "sqlglot.errors.concat_messages": {"tf": 1}, "sqlglot.errors.merge_errors": {"tf": 1}, "sqlglot.expressions.Expression.error_messages": {"tf": 1}, "sqlglot.expressions.Dot.build": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1}, "sqlglot.helper.seq_get": {"tf": 1}, "sqlglot.lineage.lineage": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.unnest": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.decorrelate": {"tf": 1}, "sqlglot.parser.parse_var_map": {"tf": 1}, "sqlglot.trie.new_trie": {"tf": 1}, "sqlglot.trie.in_trie": {"tf": 1}}, "df": 20}}}}}}, "r": {"docs": {"sqlglot.dataframe.sql.DataFrame.persist": {"tf": 1}}, "df": 1}, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dataframe.sql.DataFrameReader.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.__init__": {"tf": 1}}, "df": 2, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.generator.Generator.sessionparameter_sql": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.dialects.duckdb.DuckDB.Generator.tablesample_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.tablesample_sql": {"tf": 1.4142135623730951}}, "df": 2}}, "t": {"docs": {"sqlglot.generator.Generator.set_sql": {"tf": 1}}, "df": 1, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.dialects.snowflake.Snowflake.Generator.settag_sql": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {"sqlglot.generator.Generator.setitem_sql": {"tf": 1}}, "df": 1}}}}}, "p": {"docs": {"sqlglot.generator.Generator.sep": {"tf": 1}, "sqlglot.generator.Generator.seg": {"tf": 1}, "sqlglot.generator.Generator.properties": {"tf": 1}, "sqlglot.generator.Generator.table_sql": {"tf": 1}, "sqlglot.generator.Generator.lambda_sql": {"tf": 1}, "sqlglot.generator.Generator.subquery_sql": {"tf": 1}, "sqlglot.generator.Generator.expressions": {"tf": 1}, "sqlglot.helper.csv": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1}}, "df": 9}}, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.dataframe.sql.SparkSession.createDataFrame": {"tf": 1}, "sqlglot.executor.execute": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.schema_sql": {"tf": 1}, "sqlglot.lineage.lineage": {"tf": 1.7320508075688772}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}, "sqlglot.optimizer.annotate_types.TypeAnnotator.__init__": {"tf": 1}, "sqlglot.optimizer.isolate_table_selects.isolate_table_selects": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1.7320508075688772}, "sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 1}, "sqlglot.optimizer.qualify_columns.qualify_columns": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.__init__": {"tf": 1}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"tf": 1}, "sqlglot.schema.MappingSchema.__init__": {"tf": 1}, "sqlglot.schema.MappingSchema.from_mapping_schema": {"tf": 1.7320508075688772}, "sqlglot.schema.MappingSchema.copy": {"tf": 1}, "sqlglot.schema.ensure_schema": {"tf": 1.7320508075688772}, "sqlglot.schema.flatten_schema": {"tf": 1}}, "df": 17}}}}, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.pushdown_predicates.pushdown": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_cnf": {"tf": 1.4142135623730951}, "sqlglot.optimizer.pushdown_predicates.pushdown_dnf": {"tf": 1.4142135623730951}, "sqlglot.optimizer.pushdown_predicates.nodes_for_predicate": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.__init__": {"tf": 1}, "sqlglot.optimizer.scope.Scope.__init__": {"tf": 1}, "sqlglot.optimizer.scope.Scope.branch": {"tf": 1}}, "df": 7, "t": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.scope.Scope.__init__": {"tf": 1}}, "df": 1}}}}}}}}, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {"sqlglot.dataframe.sql.SparkSession.createDataFrame": {"tf": 1}}, "df": 1}}}}}}}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.DataFrameWriter.mode": {"tf": 1}}, "df": 1}}}}}}, "f": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.canonicalize.canonicalize": {"tf": 1}}, "df": 1, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.no_safe_divide_sql": {"tf": 1}}, "df": 1}}}}}}}}}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.dataframe.sql.DataFrame.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sql": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameReader.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.__init__": {"tf": 1}}, "df": 4, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dataframe.sql.DataFrameReader.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.__init__": {"tf": 1}}, "df": 2}}}}}}}}}}}, "u": {"docs": {}, "df": 0, "b": {"docs": {"sqlglot.generator.Generator.sub_sql": {"tf": 1}}, "df": 1, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe.sql.DataFrame.dropDuplicates": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.dropna": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.replace": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.drop": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.fill": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.replace": {"tf": 1}}, "df": 7}}, "t": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.executor.env.str_position": {"tf": 1}}, "df": 1}}}, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.Subqueryable.subquery": {"tf": 1}, "sqlglot.generator.Generator.subquery_sql": {"tf": 1}}, "df": 2, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.expand": {"tf": 1}, "sqlglot.lineage.lineage": {"tf": 1}}, "df": 2}}}}}, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1.7320508075688772}}, "df": 1}}}}}}}}, "f": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "x": {"docs": {"sqlglot.generator.Generator.properties": {"tf": 1}}, "df": 1}}}}}, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {"sqlglot.dialects.mysql.MySQL.Generator.show_sql": {"tf": 1}}, "df": 1}}}, "y": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.tsql.TSQL.Generator.systemtime_sql": {"tf": 1}}, "df": 1}}}}}}}}}, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff.Update.__init__": {"tf": 1}, "sqlglot.diff.Keep.__init__": {"tf": 1}, "sqlglot.diff.diff": {"tf": 1}, "sqlglot.diff.ChangeDistiller.diff": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.nested_loop_join": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.hash_join": {"tf": 1}, "sqlglot.lineage.Node.__init__": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.replace_aliases": {"tf": 1}, "sqlglot.optimizer.scope.Scope.source_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.add_source": {"tf": 1}}, "df": 10, "s": {"docs": {"sqlglot.expressions.expand": {"tf": 1}, "sqlglot.lineage.lineage": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.nodes_for_predicate": {"tf": 1}, "sqlglot.optimizer.scope.Scope.__init__": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.branch": {"tf": 1}}, "df": 6}}}}}, "r": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.generator.Generator.sort_sql": {"tf": 1}}, "df": 1}}}, "k": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.generator.Generator.indent": {"tf": 1.4142135623730951}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {"sqlglot.generator.Generator.similarto_sql": {"tf": 1}}, "df": 1}}}}}}, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 1}}}}}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.generator.Generator.slice_sql": {"tf": 1}}, "df": 1}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.parse": {"tf": 1}, "sqlglot.parse_one": {"tf": 1}, "sqlglot.transpile": {"tf": 1}, "sqlglot.executor.execute": {"tf": 1}, "sqlglot.helper.csv_reader": {"tf": 1}}, "df": 5, "w": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dataframe.sql.DataFrameWriter.copy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.mode": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.insertInto": {"tf": 1}}, "df": 3}}}}}}, "c": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "v": {"docs": {"sqlglot.helper.csv_reader": {"tf": 1}}, "df": 1}}}}}, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.DataFrame.replace": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.replace": {"tf": 1}}, "df": 2}}}}}, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.dataframe.sql.Column.rlike": {"tf": 1}}, "df": 1}}}}, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.redshift.Redshift.Generator.renametable_sql": {"tf": 1}, "sqlglot.generator.Generator.renametable_sql": {"tf": 1}}, "df": 2}}}}}}}}}, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.generator.Generator.return_sql": {"tf": 1}}, "df": 1, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dialects.tsql.TSQL.Generator.returnsproperty_sql": {"tf": 1}}, "df": 1}}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.expressions.delete": {"tf": 1}, "sqlglot.generator.Generator.returning_sql": {"tf": 1}}, "df": 2}}}}}}}, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff.diff": {"tf": 1}, "sqlglot.diff.ChangeDistiller.diff": {"tf": 1}, "sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 1}}, "df": 3}}}}, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.executor.env.null_if_any": {"tf": 1}}, "df": 1}}}}}}, "c": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Subqueryable.with_": {"tf": 1}}, "df": 1}}}}}}}, "f": {"docs": {"sqlglot.optimizer.pushdown_predicates.pushdown": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_cnf": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_dnf": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.nodes_for_predicate": {"tf": 1}}, "df": 4, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.generator.Generator.reference_sql": {"tf": 1}}, "df": 1}}}}}}}, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.generator.Generator.respectnulls_sql": {"tf": 1}}, "df": 1}}}}}}}}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.executor.table.Table.__init__": {"tf": 1}, "sqlglot.executor.table.RowReader.__init__": {"tf": 1}}, "df": 2, "n": {"docs": {"sqlglot.dialects.teradata.Teradata.Generator.rangen_sql": {"tf": 1}}, "df": 1}}}}, "w": {"docs": {"sqlglot.parser.Parser.parse": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 1}}, "df": 2}, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.schema.AbstractMappingSchema.find": {"tf": 1}}, "df": 1}}}}, "o": {"docs": {}, "df": 0, "w": {"docs": {"sqlglot.executor.context.Context.set_row": {"tf": 1}, "sqlglot.executor.table.Table.append": {"tf": 1}}, "df": 2, "s": {"docs": {"sqlglot.executor.table.Table.__init__": {"tf": 1}}, "df": 1}, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.generator.Generator.rowformatdelimitedproperty_sql": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.generator.Generator.rollback_sql": {"tf": 1}}, "df": 1}}}}}}, "o": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.optimizer.scope.Scope.__init__": {"tf": 1}, "sqlglot.optimizer.simplify.simplify_connectors": {"tf": 1}, "sqlglot.optimizer.simplify.remove_compliments": {"tf": 1}, "sqlglot.optimizer.simplify.uniq_sort": {"tf": 1}, "sqlglot.optimizer.simplify.absorb_and_eliminate": {"tf": 1}, "sqlglot.optimizer.simplify.simplify_literals": {"tf": 1}}, "df": 6}}}, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.union": {"tf": 1}, "sqlglot.expressions.intersect": {"tf": 1}, "sqlglot.expressions.except_": {"tf": 1}, "sqlglot.planner.SetOperation.__init__": {"tf": 1}}, "df": 4}}}}, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.lineage.lineage": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 2}}}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.parse": {"tf": 1}, "sqlglot.parse_one": {"tf": 1.7320508075688772}, "sqlglot.transpile": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.SparkSession.createDataFrame": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.where": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.filter": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.join": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.dropna": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.replace": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.drop": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.hint": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.repartition": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.agg": {"tf": 1}, "sqlglot.dataframe.sql.Column.__init__": {"tf": 1}, "sqlglot.dataframe.sql.Column.ensure_col": {"tf": 1}, "sqlglot.dataframe.sql.Column.ensure_cols": {"tf": 1}, "sqlglot.dataframe.sql.Column.cast": {"tf": 1}, "sqlglot.dataframe.sql.Column.startswith": {"tf": 1}, "sqlglot.dataframe.sql.Column.endswith": {"tf": 1}, "sqlglot.dataframe.sql.Column.substr": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.isin": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.drop": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.fill": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrameNaFunctions.replace": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Window.partitionBy": {"tf": 1}, "sqlglot.dataframe.sql.Window.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.partitionBy": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.orderBy": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.get_or_raise": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.format_time": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.parse_into": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.format_time_lambda": {"tf": 1}, "sqlglot.diff.diff": {"tf": 1}, "sqlglot.diff.ChangeDistiller.diff": {"tf": 1}, "sqlglot.executor.execute": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.sql": {"tf": 1}, "sqlglot.expressions.Delete.delete": {"tf": 1.4142135623730951}, "sqlglot.expressions.Delete.where": {"tf": 1.4142135623730951}, "sqlglot.expressions.Delete.returning": {"tf": 1.4142135623730951}, "sqlglot.expressions.Union.select": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.build": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 2}, "sqlglot.expressions.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.update": {"tf": 1.7320508075688772}, "sqlglot.expressions.delete": {"tf": 2}, "sqlglot.expressions.to_table": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1.7320508075688772}, "sqlglot.expressions.column": {"tf": 1.7320508075688772}, "sqlglot.expressions.cast": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1}, "sqlglot.expressions.var": {"tf": 1}, "sqlglot.expressions.func": {"tf": 1}, "sqlglot.generator.Generator.sql": {"tf": 1}, "sqlglot.generator.Generator.union_sql": {"tf": 1}, "sqlglot.generator.Generator.union_op": {"tf": 1}, "sqlglot.generator.Generator.func": {"tf": 1}, "sqlglot.generator.Generator.format_args": {"tf": 1}, "sqlglot.helper.subclasses": {"tf": 1.4142135623730951}, "sqlglot.helper.flatten": {"tf": 1}, "sqlglot.lineage.lineage": {"tf": 1.4142135623730951}, "sqlglot.lineage.LineageHTML.__init__": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser.parse_into": {"tf": 1.4142135623730951}, "sqlglot.schema.Schema.add_table": {"tf": 1}, "sqlglot.schema.MappingSchema.__init__": {"tf": 1}, "sqlglot.schema.MappingSchema.add_table": {"tf": 1}, "sqlglot.schema.ensure_schema": {"tf": 1}, "sqlglot.schema.ensure_column_mapping": {"tf": 1}, "sqlglot.serde.dump": {"tf": 1.4142135623730951}, "sqlglot.serde.load": {"tf": 1.4142135623730951}}, "df": 74}}, "t": {"docs": {"sqlglot.dialects.dialect.parse_date_delta": {"tf": 1}, "sqlglot.executor.env.interval": {"tf": 1}}, "df": 2}, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.generator.Generator.unique_sql": {"tf": 1}}, "df": 1}}}}, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator.in_unnest_op": {"tf": 1}, "sqlglot.expressions.Expression.flatten": {"tf": 1}, "sqlglot.generator.Generator.__init__": {"tf": 1}, "sqlglot.generator.Generator.unnest_sql": {"tf": 1}, "sqlglot.generator.Generator.in_unnest_op": {"tf": 1.4142135623730951}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.parser.Parser.__init__": {"tf": 1}}, "df": 7}}}}, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.generator.Generator.__init__": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}}, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.generator.Generator.uncache_sql": {"tf": 1}}, "df": 1}}}}}, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 1}}, "df": 1}}}}}, "p": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.generator.Generator.__init__": {"tf": 1}}, "df": 1, "b": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.dataframe.sql.Column.between": {"tf": 1}}, "df": 1}}}}}}}}, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.teradata.Teradata.Generator.update_sql": {"tf": 1}, "sqlglot.diff.diff": {"tf": 1}, "sqlglot.diff.ChangeDistiller.diff": {"tf": 1}, "sqlglot.expressions.Select.lock": {"tf": 1}, "sqlglot.expressions.update": {"tf": 1}, "sqlglot.generator.Generator.update_sql": {"tf": 1}}, "df": 6}}}}}, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.expressions.Select.join": {"tf": 1}}, "df": 1}}}, "e": {"docs": {"sqlglot.generator.Generator.use_sql": {"tf": 1}}, "df": 1, "r": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.generator.Generator.userdefinedfunction_sql": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}, "d": {"docs": {"sqlglot.executor.table.ensure_tables": {"tf": 1}, "sqlglot.helper.dict_depth": {"tf": 1}}, "df": 2, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.parse": {"tf": 2}, "sqlglot.parse_one": {"tf": 2}, "sqlglot.transpile": {"tf": 2.8284271247461903}, "sqlglot.dataframe.sql.DataFrame.sql": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.get_or_raise": {"tf": 2.6457513110645907}, "sqlglot.dialects.dialect.format_time_lambda": {"tf": 1}, "sqlglot.dialects.dialect.ts_or_ds_to_date_sql": {"tf": 1}, "sqlglot.executor.execute": {"tf": 2}, "sqlglot.expressions.Expression.sql": {"tf": 2.23606797749979}, "sqlglot.expressions.Condition.and_": {"tf": 1}, "sqlglot.expressions.Condition.or_": {"tf": 1}, "sqlglot.expressions.Unionable.union": {"tf": 1}, "sqlglot.expressions.Unionable.intersect": {"tf": 1}, "sqlglot.expressions.Unionable.except_": {"tf": 1}, "sqlglot.expressions.Delete.delete": {"tf": 2.23606797749979}, "sqlglot.expressions.Delete.where": {"tf": 2.23606797749979}, "sqlglot.expressions.Delete.returning": {"tf": 2.23606797749979}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Join.using": {"tf": 1}, "sqlglot.expressions.Subqueryable.limit": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1}, "sqlglot.expressions.Union.limit": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 2.23606797749979}, "sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.expressions.Select.limit": {"tf": 1}, "sqlglot.expressions.Select.offset": {"tf": 1}, "sqlglot.expressions.Select.select": {"tf": 2.23606797749979}, "sqlglot.expressions.Select.lateral": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1}, "sqlglot.expressions.Select.where": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1}, "sqlglot.expressions.Select.window": {"tf": 1}, "sqlglot.expressions.Select.qualify": {"tf": 1}, "sqlglot.expressions.Select.ctas": {"tf": 1}, "sqlglot.expressions.DataType.build": {"tf": 2.23606797749979}, "sqlglot.expressions.maybe_parse": {"tf": 2.23606797749979}, "sqlglot.expressions.union": {"tf": 1}, "sqlglot.expressions.intersect": {"tf": 1}, "sqlglot.expressions.except_": {"tf": 1}, "sqlglot.expressions.select": {"tf": 2.23606797749979}, "sqlglot.expressions.from_": {"tf": 1}, "sqlglot.expressions.update": {"tf": 2.23606797749979}, "sqlglot.expressions.delete": {"tf": 2.23606797749979}, "sqlglot.expressions.condition": {"tf": 1}, "sqlglot.expressions.and_": {"tf": 1}, "sqlglot.expressions.or_": {"tf": 1}, "sqlglot.expressions.not_": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 2.23606797749979}, "sqlglot.expressions.subquery": {"tf": 1}, "sqlglot.expressions.func": {"tf": 2.23606797749979}, "sqlglot.lineage.lineage": {"tf": 2.23606797749979}, "sqlglot.lineage.LineageHTML.__init__": {"tf": 2.23606797749979}, "sqlglot.optimizer.optimizer.optimize": {"tf": 2.23606797749979}, "sqlglot.schema.MappingSchema.__init__": {"tf": 2.23606797749979}, "sqlglot.schema.ensure_schema": {"tf": 2.23606797749979}}, "df": 59, "s": {"docs": {"sqlglot.parse": {"tf": 1.4142135623730951}, "sqlglot.parse_one": {"tf": 1.4142135623730951}, "sqlglot.transpile": {"tf": 2}, "sqlglot.dialects.dialect.Dialect.get_or_raise": {"tf": 1.7320508075688772}, "sqlglot.executor.execute": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.sql": {"tf": 1.4142135623730951}, "sqlglot.expressions.Delete.delete": {"tf": 1.4142135623730951}, "sqlglot.expressions.Delete.where": {"tf": 1.4142135623730951}, "sqlglot.expressions.Delete.returning": {"tf": 1.4142135623730951}, "sqlglot.expressions.Union.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.build": {"tf": 1.4142135623730951}, "sqlglot.expressions.maybe_parse": {"tf": 1.4142135623730951}, "sqlglot.expressions.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.update": {"tf": 1.4142135623730951}, "sqlglot.expressions.delete": {"tf": 1.4142135623730951}, "sqlglot.expressions.alias_": {"tf": 1.4142135623730951}, "sqlglot.expressions.func": {"tf": 1.4142135623730951}, "sqlglot.lineage.lineage": {"tf": 1.4142135623730951}, "sqlglot.lineage.LineageHTML.__init__": {"tf": 1.4142135623730951}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1.4142135623730951}, "sqlglot.schema.MappingSchema.__init__": {"tf": 1.4142135623730951}, "sqlglot.schema.ensure_schema": {"tf": 1.4142135623730951}}, "df": 23}}}}}}, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe.sql.SparkSession.createDataFrame": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.replace": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.agg": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.fill": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.replace": {"tf": 1}, "sqlglot.dialects.dialect.parse_date_delta": {"tf": 1}, "sqlglot.errors.ParseError.__init__": {"tf": 1}, "sqlglot.errors.merge_errors": {"tf": 1}, "sqlglot.executor.execute": {"tf": 1.4142135623730951}, "sqlglot.executor.context.Context.__init__": {"tf": 1.4142135623730951}, "sqlglot.executor.table.ensure_tables": {"tf": 1}, "sqlglot.expressions.Properties.from_dict": {"tf": 1}, "sqlglot.expressions.update": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1}, "sqlglot.expressions.expand": {"tf": 1}, "sqlglot.generator.Generator.generate": {"tf": 1}, "sqlglot.generator.Generator.locate_properties": {"tf": 1}, "sqlglot.helper.tsort": {"tf": 1}, "sqlglot.helper.object_to_dict": {"tf": 1}, "sqlglot.helper.dict_depth": {"tf": 1}, "sqlglot.lineage.lineage": {"tf": 1.4142135623730951}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.Join.from_joins": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}, "sqlglot.schema.Schema.add_table": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema.__init__": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema.find": {"tf": 1}, "sqlglot.schema.MappingSchema.__init__": {"tf": 1.4142135623730951}, "sqlglot.schema.MappingSchema.add_table": {"tf": 1}, "sqlglot.schema.ensure_column_mapping": {"tf": 1.4142135623730951}, "sqlglot.schema.flatten_schema": {"tf": 1}, "sqlglot.serde.dump": {"tf": 1.4142135623730951}, "sqlglot.serde.load": {"tf": 1.4142135623730951}, "sqlglot.time.format_time": {"tf": 1.4142135623730951}, "sqlglot.trie.new_trie": {"tf": 1.4142135623730951}, "sqlglot.trie.in_trie": {"tf": 1.4142135623730951}}, "df": 38}}, "s": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.dataframe.sql.DataFrame.persist": {"tf": 1}}, "df": 1}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.Unionable.union": {"tf": 1}, "sqlglot.expressions.Unionable.intersect": {"tf": 1}, "sqlglot.expressions.Unionable.except_": {"tf": 1}, "sqlglot.expressions.Select.distinct": {"tf": 1}, "sqlglot.expressions.union": {"tf": 1}, "sqlglot.expressions.intersect": {"tf": 1}, "sqlglot.expressions.except_": {"tf": 1}, "sqlglot.generator.Generator.distinct_sql": {"tf": 1}, "sqlglot.planner.SetOperation.__init__": {"tf": 1}}, "df": 9}}}}, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.generator.Generator.distribute_sql": {"tf": 1}}, "df": 1}}}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.generator.Generator.distance_sql": {"tf": 1}, "sqlglot.optimizer.normalize.normalize": {"tf": 1}, "sqlglot.optimizer.normalize.distributive_law": {"tf": 1}}, "df": 3}}}}}}, "f": {"docs": {}, "df": 0, "f": {"docs": {"sqlglot.diff.diff": {"tf": 2.23606797749979}, "sqlglot.diff.ChangeDistiller.diff": {"tf": 2.23606797749979}}, "df": 2}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.generator.Generator.directory_sql": {"tf": 1}}, "df": 1}}}}}}}, "v": {"docs": {"sqlglot.generator.Generator.div_sql": {"tf": 1}}, "df": 1}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.dataframe.sql.SparkSession.createDataFrame": {"tf": 1}}, "df": 1, "f": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.SparkSession.table": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.SparkSession.createDataFrame": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.SparkSession.sql": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.copy": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.select": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.alias": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.where": {"tf": 2}, "sqlglot.dataframe.sql.DataFrame.filter": {"tf": 2}, "sqlglot.dataframe.sql.DataFrame.groupBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.agg": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.join": {"tf": 2.8284271247461903}, "sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 2}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 2}, "sqlglot.dataframe.sql.DataFrame.union": {"tf": 2.449489742783178}, "sqlglot.dataframe.sql.DataFrame.unionAll": {"tf": 2.449489742783178}, "sqlglot.dataframe.sql.DataFrame.unionByName": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.intersect": {"tf": 2.449489742783178}, "sqlglot.dataframe.sql.DataFrame.intersectAll": {"tf": 2.449489742783178}, "sqlglot.dataframe.sql.DataFrame.exceptAll": {"tf": 2.449489742783178}, "sqlglot.dataframe.sql.DataFrame.distinct": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.dropna": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.replace": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.withColumn": {"tf": 2}, "sqlglot.dataframe.sql.DataFrame.drop": {"tf": 2}, "sqlglot.dataframe.sql.DataFrame.limit": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.hint": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.repartition": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.coalesce": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.cache": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.persist": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.GroupedData.__init__": {"tf": 2.23606797749979}, "sqlglot.dataframe.sql.GroupedData.agg": {"tf": 2}, "sqlglot.dataframe.sql.GroupedData.count": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.GroupedData.mean": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.GroupedData.avg": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.GroupedData.max": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.GroupedData.min": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.GroupedData.sum": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.GroupedData.pivot": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Column.ensure_cols": {"tf": 1}, "sqlglot.dataframe.sql.Column.invoke_anonymous_function": {"tf": 1}, "sqlglot.dataframe.sql.Column.invoke_expression_over_column": {"tf": 1}, "sqlglot.dataframe.sql.Column.binary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.inverse_binary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.unary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.ensure_literal": {"tf": 1}, "sqlglot.dataframe.sql.Column.copy": {"tf": 1}, "sqlglot.dataframe.sql.Column.set_table_name": {"tf": 1}, "sqlglot.dataframe.sql.Column.alias": {"tf": 1}, "sqlglot.dataframe.sql.Column.asc": {"tf": 1}, "sqlglot.dataframe.sql.Column.desc": {"tf": 1}, "sqlglot.dataframe.sql.Column.asc_nulls_first": {"tf": 1}, "sqlglot.dataframe.sql.Column.asc_nulls_last": {"tf": 1}, "sqlglot.dataframe.sql.Column.desc_nulls_first": {"tf": 1}, "sqlglot.dataframe.sql.Column.desc_nulls_last": {"tf": 1}, "sqlglot.dataframe.sql.Column.when": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.otherwise": {"tf": 1}, "sqlglot.dataframe.sql.Column.isNull": {"tf": 1}, "sqlglot.dataframe.sql.Column.isNotNull": {"tf": 1}, "sqlglot.dataframe.sql.Column.cast": {"tf": 1}, "sqlglot.dataframe.sql.Column.startswith": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.endswith": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.rlike": {"tf": 1}, "sqlglot.dataframe.sql.Column.substr": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Column.between": {"tf": 1}, "sqlglot.dataframe.sql.Column.over": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.__init__": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrameNaFunctions.drop": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrameNaFunctions.fill": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrameNaFunctions.replace": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Window.partitionBy": {"tf": 1}, "sqlglot.dataframe.sql.Window.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.Window.rowsBetween": {"tf": 1}, "sqlglot.dataframe.sql.Window.rangeBetween": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.partitionBy": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.rowsBetween": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.rangeBetween": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameReader.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameReader.table": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrameWriter.__init__": {"tf": 2}, "sqlglot.dataframe.sql.DataFrameWriter.copy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.mode": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.insertInto": {"tf": 1}, "sqlglot.schema.Schema.add_table": {"tf": 1}, "sqlglot.schema.MappingSchema.add_table": {"tf": 1}, "sqlglot.schema.ensure_column_mapping": {"tf": 1}}, "df": 89, "w": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dataframe.sql.DataFrameWriter.copy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.mode": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.insertInto": {"tf": 1}}, "df": 3}}}}}}}}}}}, "t": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.Column.cast": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.datatype_sql": {"tf": 1}, "sqlglot.expressions.DataType.build": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.is_type": {"tf": 1}, "sqlglot.expressions.Cast.is_type": {"tf": 1}, "sqlglot.expressions.cast": {"tf": 1.4142135623730951}, "sqlglot.expressions.values": {"tf": 1}, "sqlglot.generator.Generator.datatype_sql": {"tf": 1}, "sqlglot.schema.Schema.get_column_type": {"tf": 1}, "sqlglot.schema.MappingSchema.get_column_type": {"tf": 1}, "sqlglot.serde.dump": {"tf": 1}, "sqlglot.serde.load": {"tf": 1}}, "df": 14}}}}, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.generator.Generator.datablocksizeproperty_sql": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}, "e": {"docs": {"sqlglot.optimizer.simplify.date_literal": {"tf": 1}}, "df": 1, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot.dialects.dialect.date_trunc_to_time": {"tf": 1}}, "df": 1}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.datestrtodate_sql": {"tf": 1}}, "df": 1}}}}}}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "f": {"docs": {"sqlglot.dialects.sqlite.SQLite.Generator.datediff_sql": {"tf": 1}}, "df": 1}}}}}}, "g": {"docs": {"sqlglot.helper.tsort": {"tf": 1}}, "df": 1}}, "f": {"docs": {"sqlglot.dataframe.sql.DataFrame.join": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.__init__": {"tf": 1}}, "df": 4}, "e": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.dialect.format_time_lambda": {"tf": 1}}, "df": 1}}}}}, "s": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot.executor.env.ordered": {"tf": 1}}, "df": 1, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.snowflake.Snowflake.Generator.describe_sql": {"tf": 1}, "sqlglot.generator.Generator.describe_sql": {"tf": 1}}, "df": 2}}, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.errors.ParseError.new": {"tf": 1}}, "df": 1}}}}}}}}}, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Delete.delete": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Delete.returning": {"tf": 1}, "sqlglot.expressions.delete": {"tf": 1}, "sqlglot.generator.Generator.delete_sql": {"tf": 1}}, "df": 5}}}}, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.planner.Step.add_dependency": {"tf": 1}}, "df": 1}}}}}}}, "t": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.schema.flatten_schema": {"tf": 1}}, "df": 1}}}}, "o": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.Column.to_dot": {"tf": 1}, "sqlglot.expressions.Dot.build": {"tf": 1}, "sqlglot.generator.Generator.dot_sql": {"tf": 1}}, "df": 3}, "w": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {"sqlglot.lineage.Node.__init__": {"tf": 1}}, "df": 1}}}}}}}}}, "t": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.DataType.build": {"tf": 1}, "sqlglot.expressions.DataType.is_type": {"tf": 1}, "sqlglot.expressions.Cast.is_type": {"tf": 1}}, "df": 3}}}}, "b": {"docs": {"sqlglot.expressions.column": {"tf": 1}, "sqlglot.expressions.table_": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"tf": 1}}, "df": 4}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.generator.Generator.drop_sql": {"tf": 1}}, "df": 1, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.generator.Generator.droppartition_sql": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "p": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.generator.Generator.dpipe_sql": {"tf": 1}}, "df": 1}}}}, "n": {"docs": {}, "df": 0, "f": {"docs": {"sqlglot.optimizer.normalize.normalize": {"tf": 1}, "sqlglot.optimizer.normalize.normalized": {"tf": 1}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1}, "sqlglot.optimizer.normalize.distributive_law": {"tf": 1}}, "df": 4}}}, "t": {"docs": {"sqlglot.diff.ChangeDistiller.__init__": {"tf": 1}, "sqlglot.helper.seq_get": {"tf": 1.4142135623730951}, "sqlglot.helper.tsort": {"tf": 1.7320508075688772}, "sqlglot.helper.first": {"tf": 1.4142135623730951}, "sqlglot.schema.AbstractMappingSchema.find": {"tf": 1}}, "df": 5, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.parse": {"tf": 1}, "sqlglot.parse_one": {"tf": 1.7320508075688772}, "sqlglot.transpile": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialect.get_or_raise": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialect.parse_into": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.format_time_lambda": {"tf": 1}, "sqlglot.dialects.dialect.parse_date_delta": {"tf": 1}, "sqlglot.dialects.dialect.parse_date_delta_with_interval": {"tf": 1}, "sqlglot.executor.execute": {"tf": 1}, "sqlglot.expressions.Expression.find": {"tf": 1}, "sqlglot.expressions.Expression.find_all": {"tf": 1}, "sqlglot.expressions.Expression.find_ancestor": {"tf": 1}, "sqlglot.expressions.Expression.sql": {"tf": 1}, "sqlglot.expressions.Expression.assert_is": {"tf": 1}, "sqlglot.expressions.Delete.delete": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Delete.returning": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 1}, "sqlglot.expressions.Select.select": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1}, "sqlglot.expressions.DataType.build": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.is_type": {"tf": 1}, "sqlglot.expressions.Cast.is_type": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1.7320508075688772}, "sqlglot.expressions.select": {"tf": 1}, "sqlglot.expressions.update": {"tf": 1}, "sqlglot.expressions.delete": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1}, "sqlglot.expressions.cast": {"tf": 1}, "sqlglot.expressions.func": {"tf": 1}, "sqlglot.generator.Generator.token_sql": {"tf": 1}, "sqlglot.helper.subclasses": {"tf": 2.23606797749979}, "sqlglot.lineage.lineage": {"tf": 1}, "sqlglot.lineage.LineageHTML.__init__": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.optimizer.scope.Scope.__init__": {"tf": 1}, "sqlglot.optimizer.scope.Scope.branch": {"tf": 1}, "sqlglot.parser.binary_range_parser": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser.parse_into": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser.expression": {"tf": 1}, "sqlglot.planner.SetOperation.__init__": {"tf": 1}, "sqlglot.schema.MappingSchema.__init__": {"tf": 1}, "sqlglot.schema.ensure_schema": {"tf": 1}, "sqlglot.serde.dump": {"tf": 1}, "sqlglot.serde.load": {"tf": 1}, "sqlglot.tokens.Token.__init__": {"tf": 1}}, "df": 46, "s": {"docs": {"sqlglot.dataframe.sql.Column.cast": {"tf": 1}, "sqlglot.expressions.Expression.find": {"tf": 1}, "sqlglot.expressions.Expression.find_all": {"tf": 1}, "sqlglot.expressions.Expression.find_ancestor": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 1}, "sqlglot.schema.Schema.add_table": {"tf": 1}, "sqlglot.schema.MappingSchema.add_table": {"tf": 1}, "sqlglot.schema.ensure_column_mapping": {"tf": 1}}, "df": 11}}}}, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.transpile": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sql": {"tf": 1}, "sqlglot.executor.env.filter_nulls": {"tf": 1}, "sqlglot.expressions.Expression.find": {"tf": 1}, "sqlglot.expressions.Expression.find_all": {"tf": 1}, "sqlglot.expressions.Expression.walk": {"tf": 1}, "sqlglot.expressions.Expression.flatten": {"tf": 1}, "sqlglot.expressions.Expression.transform": {"tf": 1}, "sqlglot.expressions.Unionable.union": {"tf": 1}, "sqlglot.expressions.Unionable.intersect": {"tf": 1}, "sqlglot.expressions.Unionable.except_": {"tf": 1}, "sqlglot.expressions.Delete.delete": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1.4142135623730951}, "sqlglot.expressions.Delete.returning": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1.4142135623730951}, "sqlglot.expressions.Join.using": {"tf": 1.4142135623730951}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 1}, "sqlglot.expressions.Subqueryable.limit": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Union.limit": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.from_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.group_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.order_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.sort_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.cluster_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.limit": {"tf": 1}, "sqlglot.expressions.Select.offset": {"tf": 1}, "sqlglot.expressions.Select.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.lateral": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.join": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.where": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.having": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.window": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.qualify": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.distinct": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.ctas": {"tf": 1}, "sqlglot.expressions.Select.lock": {"tf": 1.4142135623730951}, "sqlglot.expressions.union": {"tf": 1}, "sqlglot.expressions.intersect": {"tf": 1}, "sqlglot.expressions.except_": {"tf": 1}, "sqlglot.expressions.expand": {"tf": 1}, "sqlglot.generator.Generator.__init__": {"tf": 1}, "sqlglot.generator.Generator.sql": {"tf": 1}, "sqlglot.generator.Generator.properties": {"tf": 1}, "sqlglot.generator.Generator.expressions": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1}, "sqlglot.lineage.LineageHTML.__init__": {"tf": 1}, "sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 1}, "sqlglot.optimizer.scope.Scope.walk": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1}, "sqlglot.optimizer.simplify.simplify_connectors": {"tf": 1}, "sqlglot.optimizer.simplify.remove_compliments": {"tf": 1}, "sqlglot.optimizer.simplify.uniq_sort": {"tf": 1}, "sqlglot.optimizer.simplify.absorb_and_eliminate": {"tf": 1}, "sqlglot.optimizer.simplify.simplify_literals": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema.find": {"tf": 1}}, "df": 59}}, "y": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.dialect.no_trycast_sql": {"tf": 1}, "sqlglot.generator.Generator.trycast_sql": {"tf": 1}}, "df": 2}}}}}, "i": {"docs": {}, "df": 0, "m": {"docs": {"sqlglot.dialects.dialect.trim_sql": {"tf": 1}, "sqlglot.generator.Generator.trim_sql": {"tf": 1}}, "df": 2}, "e": {"docs": {"sqlglot.generator.Generator.__init__": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema.find": {"tf": 1}, "sqlglot.time.format_time": {"tf": 1}, "sqlglot.trie.new_trie": {"tf": 1}, "sqlglot.trie.in_trie": {"tf": 1}}, "df": 5}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dialects.presto.Presto.Generator.transaction_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.transaction_sql": {"tf": 1}, "sqlglot.generator.Generator.transaction_sql": {"tf": 1}}, "df": 3}}}}}}, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.transforms.preprocess": {"tf": 1}}, "df": 1}}}}}}}}}, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.Column.set_table_name": {"tf": 1}, "sqlglot.executor.execute": {"tf": 1.4142135623730951}, "sqlglot.executor.context.Context.__init__": {"tf": 1.4142135623730951}, "sqlglot.executor.context.Context.table_iter": {"tf": 1.4142135623730951}, "sqlglot.executor.table.TableIter.__init__": {"tf": 1}, "sqlglot.executor.table.RangeReader.__init__": {"tf": 1}, "sqlglot.executor.table.ensure_tables": {"tf": 1}, "sqlglot.expressions.Delete.delete": {"tf": 1}, "sqlglot.expressions.Select.ctas": {"tf": 1}, "sqlglot.expressions.update": {"tf": 1.4142135623730951}, "sqlglot.expressions.delete": {"tf": 1}, "sqlglot.expressions.to_table": {"tf": 1.4142135623730951}, "sqlglot.expressions.alias_": {"tf": 1}, "sqlglot.expressions.column": {"tf": 1}, "sqlglot.expressions.table_": {"tf": 1.4142135623730951}, "sqlglot.expressions.rename_table": {"tf": 1.4142135623730951}, "sqlglot.expressions.table_name": {"tf": 1}, "sqlglot.generator.Generator.table_sql": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1.4142135623730951}, "sqlglot.schema.Schema.add_table": {"tf": 1.4142135623730951}, "sqlglot.schema.Schema.column_names": {"tf": 1.4142135623730951}, "sqlglot.schema.Schema.get_column_type": {"tf": 1.4142135623730951}, "sqlglot.schema.AbstractMappingSchema.table_parts": {"tf": 1.4142135623730951}, "sqlglot.schema.AbstractMappingSchema.find": {"tf": 1.4142135623730951}, "sqlglot.schema.MappingSchema.add_table": {"tf": 1.4142135623730951}, "sqlglot.schema.MappingSchema.column_names": {"tf": 1.4142135623730951}, "sqlglot.schema.MappingSchema.get_column_type": {"tf": 1.4142135623730951}}, "df": 27, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.SparkSession.table": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameReader.table": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.insertInto": {"tf": 1}}, "df": 3}}}}, "s": {"docs": {"sqlglot.executor.execute": {"tf": 1}, "sqlglot.executor.context.Context.__init__": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.__init__": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.context": {"tf": 1}, "sqlglot.executor.table.ensure_tables": {"tf": 1}, "sqlglot.lineage.lineage": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_ctes": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_derived_tables": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 10, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.no_tablesample_sql": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator.tablesample_sql": {"tf": 1}, "sqlglot.generator.Generator.__init__": {"tf": 1}, "sqlglot.generator.Generator.tablesample_sql": {"tf": 1}, "sqlglot.parser.Parser.__init__": {"tf": 1}}, "df": 5}}}}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.executor.context.Context.table_iter": {"tf": 1}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.generator.Generator.tablealias_sql": {"tf": 1}}, "df": 1}}}}}}}}, "r": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.diff.Update.__init__": {"tf": 1}, "sqlglot.diff.Keep.__init__": {"tf": 1}, "sqlglot.diff.diff": {"tf": 1}, "sqlglot.diff.ChangeDistiller.diff": {"tf": 1}}, "df": 4}}}}, "g": {"docs": {"sqlglot.generator.Generator.tag_sql": {"tf": 1}}, "df": 1}, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.helper.find_new_name": {"tf": 1}}, "df": 1}}}}, "u": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.SparkSession.createDataFrame": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.dropna": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.drop": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.fill": {"tf": 1}, "sqlglot.diff.diff": {"tf": 1}, "sqlglot.diff.ChangeDistiller.diff": {"tf": 1}, "sqlglot.executor.context.Context.table_iter": {"tf": 1}, "sqlglot.executor.context.Context.set_row": {"tf": 1}, "sqlglot.expressions.Expression.iter_expressions": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1}, "sqlglot.generator.Generator.tuple_sql": {"tf": 1}, "sqlglot.helper.subclasses": {"tf": 1.4142135623730951}, "sqlglot.trie.in_trie": {"tf": 1}}, "df": 14}}}}, "h": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.dataframe.sql.DataFrame.dropna": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.drop": {"tf": 1}}, "df": 2}}}}, "i": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.executor.env.str_position": {"tf": 1}, "sqlglot.executor.env.substring": {"tf": 1}, "sqlglot.executor.env.cast": {"tf": 1}, "sqlglot.executor.env.ordered": {"tf": 1}, "sqlglot.executor.env.interval": {"tf": 1}, "sqlglot.helper.apply_index_offset": {"tf": 1}}, "df": 6}}}, "o": {"docs": {"sqlglot.dataframe.sql.DataFrame.replace": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.replace": {"tf": 1}, "sqlglot.executor.env.cast": {"tf": 1}, "sqlglot.expressions.cast": {"tf": 1}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}, "sqlglot.optimizer.annotate_types.TypeAnnotator.__init__": {"tf": 1}}, "df": 6, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dialects.dialect.Dialect.tokenize": {"tf": 1}, "sqlglot.generator.Generator.token_sql": {"tf": 1}, "sqlglot.parser.Parser.parse": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 1}, "sqlglot.parser.Parser.raise_error": {"tf": 1.4142135623730951}, "sqlglot.tokens.Token.__init__": {"tf": 1}, "sqlglot.tokens.Token.number": {"tf": 1}, "sqlglot.tokens.Token.string": {"tf": 1}, "sqlglot.tokens.Token.identifier": {"tf": 1}, "sqlglot.tokens.Token.var": {"tf": 1}, "sqlglot.tokens.Tokenizer.tokenize": {"tf": 1}}, "df": 11, "s": {"docs": {"sqlglot.dialects.dialect.Dialect.tokenize": {"tf": 1}, "sqlglot.generator.Generator.token_sql": {"tf": 1}, "sqlglot.parser.Parser.parse": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser.parse_into": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser.raise_error": {"tf": 1}, "sqlglot.tokens.Token.__init__": {"tf": 1}, "sqlglot.tokens.Token.number": {"tf": 1}, "sqlglot.tokens.Token.string": {"tf": 1}, "sqlglot.tokens.Token.identifier": {"tf": 1}, "sqlglot.tokens.Token.var": {"tf": 1}, "sqlglot.tokens.Tokenizer.tokenize": {"tf": 1}}, "df": 11}, "t": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.generator.Generator.token_sql": {"tf": 1}, "sqlglot.tokens.Token.__init__": {"tf": 1}}, "df": 2}}}}}}}, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.generator.Generator.tochar_sql": {"tf": 1}}, "df": 1}}}}}, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.generator.Generator.__init__": {"tf": 1.4142135623730951}}, "df": 1, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot.dialects.dialect.date_trunc_to_time": {"tf": 1}, "sqlglot.dialects.dialect.timestamptrunc_sql": {"tf": 1}}, "df": 2}}}}}}}}, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.timestrtotime_sql": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.generator.Generator.__init__": {"tf": 1}, "sqlglot.helper.should_identify": {"tf": 1}, "sqlglot.tokens.Token.__init__": {"tf": 1}}, "df": 3, "i": {"docs": {}, "df": 0, "o": {"docs": {"sqlglot.helper.open_file": {"tf": 1}}, "df": 1}}}}}}, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.parse": {"tf": 1}, "sqlglot.parse_one": {"tf": 1.4142135623730951}, "sqlglot.transpile": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.SparkSession.createDataFrame": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.__init__": {"tf": 2}, "sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.dropDuplicates": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.dropna": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.replace": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrameNaFunctions.drop": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrameNaFunctions.fill": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.replace": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrameWriter.__init__": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrameWriter.insertInto": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.saveAsTable": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.format_time_lambda": {"tf": 1}, "sqlglot.dialects.dialect.parse_date_delta": {"tf": 1}, "sqlglot.diff.diff": {"tf": 1}, "sqlglot.diff.ChangeDistiller.diff": {"tf": 1}, "sqlglot.errors.ParseError.__init__": {"tf": 1}, "sqlglot.errors.ParseError.new": {"tf": 2.6457513110645907}, "sqlglot.executor.execute": {"tf": 1.7320508075688772}, "sqlglot.executor.context.Context.__init__": {"tf": 1}, "sqlglot.executor.context.Context.add_columns": {"tf": 1}, "sqlglot.executor.context.Context.filter": {"tf": 1}, "sqlglot.executor.context.Context.sort": {"tf": 1}, "sqlglot.executor.context.Context.set_row": {"tf": 1}, "sqlglot.executor.context.Context.set_index": {"tf": 1}, "sqlglot.executor.context.Context.set_range": {"tf": 1}, "sqlglot.executor.env.str_position": {"tf": 1}, "sqlglot.executor.env.substring": {"tf": 1.4142135623730951}, "sqlglot.executor.python.PythonExecutor.__init__": {"tf": 1.4142135623730951}, "sqlglot.executor.table.Table.__init__": {"tf": 1.4142135623730951}, "sqlglot.executor.table.Table.add_columns": {"tf": 1}, "sqlglot.executor.table.RowReader.__init__": {"tf": 1}, "sqlglot.expressions.Expression.walk": {"tf": 1}, "sqlglot.expressions.Expression.dfs": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.bfs": {"tf": 1}, "sqlglot.expressions.Expression.sql": {"tf": 1}, "sqlglot.expressions.Expression.error_messages": {"tf": 1}, "sqlglot.expressions.Condition.and_": {"tf": 1}, "sqlglot.expressions.Condition.or_": {"tf": 1}, "sqlglot.expressions.Unionable.union": {"tf": 1}, "sqlglot.expressions.Unionable.intersect": {"tf": 1}, "sqlglot.expressions.Unionable.except_": {"tf": 1}, "sqlglot.expressions.Delete.delete": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Delete.returning": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Join.using": {"tf": 1}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 1}, "sqlglot.expressions.Subqueryable.limit": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Union.limit": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.expressions.Select.limit": {"tf": 1}, "sqlglot.expressions.Select.offset": {"tf": 1}, "sqlglot.expressions.Select.select": {"tf": 1}, "sqlglot.expressions.Select.lateral": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 2.23606797749979}, "sqlglot.expressions.Select.where": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1}, "sqlglot.expressions.Select.window": {"tf": 1}, "sqlglot.expressions.Select.qualify": {"tf": 1}, "sqlglot.expressions.Select.ctas": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.build": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1.7320508075688772}, "sqlglot.expressions.union": {"tf": 1}, "sqlglot.expressions.intersect": {"tf": 1}, "sqlglot.expressions.except_": {"tf": 1}, "sqlglot.expressions.select": {"tf": 1}, "sqlglot.expressions.from_": {"tf": 1}, "sqlglot.expressions.update": {"tf": 1.7320508075688772}, "sqlglot.expressions.delete": {"tf": 1.7320508075688772}, "sqlglot.expressions.condition": {"tf": 1}, "sqlglot.expressions.and_": {"tf": 1}, "sqlglot.expressions.or_": {"tf": 1}, "sqlglot.expressions.not_": {"tf": 1}, "sqlglot.expressions.to_identifier": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1.4142135623730951}, "sqlglot.expressions.subquery": {"tf": 1.4142135623730951}, "sqlglot.expressions.column": {"tf": 2}, "sqlglot.expressions.table_": {"tf": 2}, "sqlglot.expressions.values": {"tf": 1.4142135623730951}, "sqlglot.expressions.func": {"tf": 1}, "sqlglot.generator.Generator.__init__": {"tf": 3.1622776601683795}, "sqlglot.generator.Generator.generate": {"tf": 1}, "sqlglot.generator.Generator.unsupported": {"tf": 1}, "sqlglot.generator.Generator.maybe_comment": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.indent": {"tf": 1}, "sqlglot.generator.Generator.sql": {"tf": 1}, "sqlglot.generator.Generator.expressions": {"tf": 1.7320508075688772}, "sqlglot.lineage.lineage": {"tf": 1.7320508075688772}, "sqlglot.lineage.LineageHTML.__init__": {"tf": 1}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1.7320508075688772}, "sqlglot.optimizer.annotate_types.TypeAnnotator.__init__": {"tf": 1.7320508075688772}, "sqlglot.optimizer.isolate_table_selects.isolate_table_selects": {"tf": 1}, "sqlglot.optimizer.normalize.distributive_law": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 2}, "sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 1}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.Scope.__init__": {"tf": 2}, "sqlglot.optimizer.scope.Scope.branch": {"tf": 1}, "sqlglot.optimizer.simplify.uniq_sort": {"tf": 1}, "sqlglot.parser.Parser.__init__": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser.parse": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 1}, "sqlglot.parser.Parser.check_errors": {"tf": 1}, "sqlglot.parser.Parser.raise_error": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser.expression": {"tf": 1}, "sqlglot.parser.Parser.validate_expression": {"tf": 1.4142135623730951}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Step.add_dependency": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.Join.from_joins": {"tf": 1}, "sqlglot.planner.SetOperation.__init__": {"tf": 1.4142135623730951}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}, "sqlglot.schema.Schema.add_table": {"tf": 1.4142135623730951}, "sqlglot.schema.AbstractMappingSchema.__init__": {"tf": 1.4142135623730951}, "sqlglot.schema.AbstractMappingSchema.find": {"tf": 1}, "sqlglot.schema.MappingSchema.__init__": {"tf": 1.7320508075688772}, "sqlglot.schema.MappingSchema.add_table": {"tf": 1.4142135623730951}, "sqlglot.schema.ensure_schema": {"tf": 1}, "sqlglot.schema.flatten_schema": {"tf": 1}, "sqlglot.time.format_time": {"tf": 1}, "sqlglot.tokens.Tokenizer.reset": {"tf": 1}, "sqlglot.trie.new_trie": {"tf": 1}}, "df": 134, "t": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.parse": {"tf": 1}, "sqlglot.parse_one": {"tf": 1.4142135623730951}, "sqlglot.transpile": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.dropna": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.replace": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.hint": {"tf": 1}, "sqlglot.dataframe.sql.Column.__init__": {"tf": 1}, "sqlglot.dataframe.sql.Column.ensure_col": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.drop": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.fill": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.replace": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialect.get_or_raise": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.format_time": {"tf": 1}, "sqlglot.dialects.dialect.format_time_lambda": {"tf": 1}, "sqlglot.executor.execute": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.sql": {"tf": 1}, "sqlglot.expressions.Delete.delete": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Delete.returning": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 1}, "sqlglot.expressions.Select.select": {"tf": 1}, "sqlglot.expressions.DataType.build": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1.4142135623730951}, "sqlglot.expressions.select": {"tf": 1}, "sqlglot.expressions.update": {"tf": 1.7320508075688772}, "sqlglot.expressions.delete": {"tf": 1.7320508075688772}, "sqlglot.expressions.to_table": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1}, "sqlglot.expressions.column": {"tf": 1.7320508075688772}, "sqlglot.expressions.values": {"tf": 1}, "sqlglot.expressions.var": {"tf": 1}, "sqlglot.expressions.func": {"tf": 1}, "sqlglot.generator.Generator.sql": {"tf": 1}, "sqlglot.generator.Generator.func": {"tf": 1}, "sqlglot.generator.Generator.format_args": {"tf": 1}, "sqlglot.lineage.lineage": {"tf": 1.4142135623730951}, "sqlglot.lineage.LineageHTML.__init__": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1.4142135623730951}, "sqlglot.schema.Schema.add_table": {"tf": 1}, "sqlglot.schema.MappingSchema.__init__": {"tf": 1}, "sqlglot.schema.MappingSchema.add_table": {"tf": 1}, "sqlglot.schema.ensure_schema": {"tf": 1}, "sqlglot.schema.ensure_column_mapping": {"tf": 1}}, "df": 46}}}}}}, "t": {"docs": {"sqlglot.expressions.not_": {"tf": 1}, "sqlglot.generator.Generator.not_sql": {"tf": 1}}, "df": 2, "n": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.generator.Generator.notnullcolumnconstraint_sql": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}}, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.generator.Generator.__init__": {"tf": 1.4142135623730951}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 2}}}}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.lineage.Node.__init__": {"tf": 1}, "sqlglot.lineage.Node.walk": {"tf": 1}, "sqlglot.lineage.lineage": {"tf": 1}, "sqlglot.lineage.LineageHTML.__init__": {"tf": 1.4142135623730951}, "sqlglot.optimizer.canonicalize.add_text_to_concat": {"tf": 1}, "sqlglot.optimizer.canonicalize.coerce_type": {"tf": 1}, "sqlglot.serde.dump": {"tf": 1.4142135623730951}, "sqlglot.serde.load": {"tf": 1}}, "df": 8}}}, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.DataFrame.alias": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.hint": {"tf": 1}, "sqlglot.dataframe.sql.Column.invoke_anonymous_function": {"tf": 1}, "sqlglot.dataframe.sql.Column.set_table_name": {"tf": 1}, "sqlglot.dataframe.sql.Column.alias": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.saveAsTable": {"tf": 1}, "sqlglot.dialects.dialect.rename_func": {"tf": 1}, "sqlglot.dialects.dialect.var_map_sql": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator.normalize_func": {"tf": 1}, "sqlglot.expressions.to_identifier": {"tf": 1}, "sqlglot.expressions.var": {"tf": 1}, "sqlglot.expressions.rename_table": {"tf": 1.4142135623730951}, "sqlglot.expressions.func": {"tf": 1}, "sqlglot.generator.Generator.normalize_func": {"tf": 1}, "sqlglot.generator.Generator.func": {"tf": 1}, "sqlglot.helper.subclasses": {"tf": 1}, "sqlglot.helper.camel_to_snake_case": {"tf": 1}, "sqlglot.helper.open_file": {"tf": 1}, "sqlglot.lineage.Node.__init__": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.get_table": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.get_source_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.source_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.rename_source": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.add_source": {"tf": 1}, "sqlglot.optimizer.scope.Scope.remove_source": {"tf": 1}}, "df": 26}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.generator.Generator.national_sql": {"tf": 1}}, "df": 1}}}}}}}, "e": {"docs": {}, "df": 0, "w": {"docs": {"sqlglot.dataframe.sql.DataFrame.withColumnRenamed": {"tf": 1}, "sqlglot.expressions.rename_table": {"tf": 1}, "sqlglot.optimizer.scope.Scope.replace": {"tf": 1}, "sqlglot.optimizer.scope.Scope.rename_source": {"tf": 1}}, "df": 4}, "g": {"docs": {"sqlglot.generator.Generator.neg_sql": {"tf": 1}}, "df": 1}, "q": {"docs": {"sqlglot.generator.Generator.neq_sql": {"tf": 1}}, "df": 1}}, "u": {"docs": {}, "df": 0, "m": {"docs": {"sqlglot.dataframe.sql.DataFrame.limit": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1}}, "df": 2, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dataframe.sql.DataFrame.repartition": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.coalesce": {"tf": 1}}, "df": 2}}}}}}}}}}, "b": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.Literal.number": {"tf": 1}, "sqlglot.tokens.Token.number": {"tf": 1}}, "df": 2}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.executor.env.filter_nulls": {"tf": 1}, "sqlglot.generator.Generator.__init__": {"tf": 1}, "sqlglot.parser.Parser.__init__": {"tf": 1}}, "df": 3, "s": {"docs": {"sqlglot.executor.env.ordered": {"tf": 1}}, "df": 1, "a": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {"sqlglot.generator.Generator.nullsafeeq_sql": {"tf": 1}}, "df": 1}}, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {"sqlglot.generator.Generator.nullsafeneq_sql": {"tf": 1}}, "df": 1}}}}}}}}}}}, "o": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.dataframe.sql.DataFrame.__init__": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.__init__": {"tf": 1}, "sqlglot.generator.Generator.connector_sql": {"tf": 1}, "sqlglot.generator.Generator.binary": {"tf": 1}, "sqlglot.generator.Generator.op_expressions": {"tf": 1}, "sqlglot.generator.Generator.set_operation": {"tf": 1}, "sqlglot.planner.SetOperation.__init__": {"tf": 1}}, "df": 7, "t": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.parse": {"tf": 1}, "sqlglot.parse_one": {"tf": 1}, "sqlglot.transpile": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.parse": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.parse_into": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.generate": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.transpile": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.parser": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.generator": {"tf": 1}, "sqlglot.expressions.Expression.sql": {"tf": 1}, "sqlglot.expressions.Condition.and_": {"tf": 1}, "sqlglot.expressions.Condition.or_": {"tf": 1}, "sqlglot.expressions.Unionable.union": {"tf": 1}, "sqlglot.expressions.Unionable.intersect": {"tf": 1}, "sqlglot.expressions.Unionable.except_": {"tf": 1}, "sqlglot.expressions.Delete.delete": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Delete.returning": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Join.using": {"tf": 1}, "sqlglot.expressions.Subqueryable.limit": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1}, "sqlglot.expressions.Union.limit": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.expressions.Select.limit": {"tf": 1}, "sqlglot.expressions.Select.offset": {"tf": 1}, "sqlglot.expressions.Select.select": {"tf": 1}, "sqlglot.expressions.Select.lateral": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1}, "sqlglot.expressions.Select.where": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1}, "sqlglot.expressions.Select.window": {"tf": 1}, "sqlglot.expressions.Select.qualify": {"tf": 1}, "sqlglot.expressions.Select.ctas": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1}, "sqlglot.expressions.union": {"tf": 1}, "sqlglot.expressions.intersect": {"tf": 1}, "sqlglot.expressions.except_": {"tf": 1}, "sqlglot.expressions.select": {"tf": 1}, "sqlglot.expressions.from_": {"tf": 1}, "sqlglot.expressions.update": {"tf": 1}, "sqlglot.expressions.delete": {"tf": 1}, "sqlglot.expressions.condition": {"tf": 1}, "sqlglot.expressions.and_": {"tf": 1}, "sqlglot.expressions.or_": {"tf": 1}, "sqlglot.expressions.not_": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1}, "sqlglot.expressions.subquery": {"tf": 1}, "sqlglot.expressions.cast": {"tf": 1}, "sqlglot.lineage.Node.to_html": {"tf": 1}, "sqlglot.lineage.LineageHTML.__init__": {"tf": 1}}, "df": 56}, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.parse": {"tf": 1}, "sqlglot.transpile": {"tf": 1}, "sqlglot.dataframe.sql.SparkSession.createDataFrame": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.__init__": {"tf": 2}, "sqlglot.dataframe.sql.DataFrame.dropDuplicates": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.dropna": {"tf": 1}, "sqlglot.dataframe.sql.Column.invoke_anonymous_function": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.invoke_expression_over_column": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.drop": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.__init__": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrameWriter.mode": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.insertInto": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.saveAsTable": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialect.format_time": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.parse": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.parse_into": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.generate": {"tf": 1}, "sqlglot.dialects.dialect.parse_date_delta": {"tf": 1}, "sqlglot.dialects.dialect.parse_date_delta_with_interval": {"tf": 1}, "sqlglot.diff.diff": {"tf": 1}, "sqlglot.diff.ChangeDistiller.diff": {"tf": 1}, "sqlglot.errors.ParseError.__init__": {"tf": 1}, "sqlglot.errors.ParseError.new": {"tf": 2.6457513110645907}, "sqlglot.executor.execute": {"tf": 1}, "sqlglot.executor.context.Context.__init__": {"tf": 1}, "sqlglot.executor.table.ensure_tables": {"tf": 1}, "sqlglot.expressions.Expression.find": {"tf": 1}, "sqlglot.expressions.Expression.find_ancestor": {"tf": 1}, "sqlglot.expressions.Expression.error_messages": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1}, "sqlglot.expressions.to_table": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1}, "sqlglot.expressions.column": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1}, "sqlglot.generator.Generator.generate": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.maybe_comment": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.indent": {"tf": 1}, "sqlglot.generator.Generator.sql": {"tf": 1}, "sqlglot.generator.Generator.format_time": {"tf": 1}, "sqlglot.generator.Generator.expressions": {"tf": 1.7320508075688772}, "sqlglot.helper.seq_get": {"tf": 1}, "sqlglot.helper.apply_index_offset": {"tf": 1.4142135623730951}, "sqlglot.helper.split_num_words": {"tf": 1}, "sqlglot.lineage.lineage": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1.4142135623730951}, "sqlglot.optimizer.qualify_columns.Resolver.get_table": {"tf": 1}, "sqlglot.parser.binary_range_parser": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser.__init__": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser.parse": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser.parse_into": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser.raise_error": {"tf": 1}, "sqlglot.parser.Parser.expression": {"tf": 1}, "sqlglot.parser.Parser.validate_expression": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.Join.from_joins": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema.find": {"tf": 1.4142135623730951}, "sqlglot.schema.MappingSchema.__init__": {"tf": 1.4142135623730951}, "sqlglot.schema.flatten_schema": {"tf": 1}, "sqlglot.time.format_time": {"tf": 1.4142135623730951}, "sqlglot.trie.new_trie": {"tf": 1}}, "df": 62}}}}, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.DataFrame.sql": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 2}}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dataframe.sql.DataFrame.__init__": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.GroupedData.__init__": {"tf": 1}}, "df": 2, "s": {"docs": {"sqlglot.dataframe.sql.DataFrame.__init__": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.__init__": {"tf": 1}}, "df": 2}}}}}}}}}, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe.sql.DataFrame.__init__": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.optimizer.scope.Scope.__init__": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dataframe.sql.DataFrame.join": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.union": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.unionAll": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.unionByName": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.intersect": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.intersectAll": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.exceptAll": {"tf": 1}, "sqlglot.dataframe.sql.Column.binary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.inverse_binary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.like": {"tf": 1}, "sqlglot.dataframe.sql.Column.ilike": {"tf": 1}}, "df": 11}}}}, "n": {"docs": {"sqlglot.dataframe.sql.DataFrame.join": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema.find": {"tf": 1}}, "df": 3, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.generator.Generator.__init__": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.get_source_columns": {"tf": 1}, "sqlglot.parser.Parser.__init__": {"tf": 1}, "sqlglot.schema.Schema.column_names": {"tf": 1}, "sqlglot.schema.MappingSchema.column_names": {"tf": 1}}, "df": 5}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.generator.Generator.onconflict_sql": {"tf": 1}}, "df": 1}}}}}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.DataFrameWriter.insertInto": {"tf": 1}}, "df": 1}}}}}, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.generator.Generator.overlaps_sql": {"tf": 1}}, "df": 1}}}}}}}, "f": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.oracle.Oracle.Generator.offset_sql": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator.offset_sql": {"tf": 1}, "sqlglot.generator.Generator.__init__": {"tf": 1}, "sqlglot.generator.Generator.offset_sql": {"tf": 1}, "sqlglot.helper.apply_index_offset": {"tf": 1}, "sqlglot.parser.Parser.__init__": {"tf": 1}}, "df": 6}}}}}, "b": {"docs": {}, "df": 0, "j": {"docs": {"sqlglot.executor.env.reverse_key.__init__": {"tf": 1}, "sqlglot.expressions.Expression.load": {"tf": 1}, "sqlglot.helper.object_to_dict": {"tf": 1}, "sqlglot.serde.load": {"tf": 1}}, "df": 4}}, "r": {"docs": {"sqlglot.expressions.maybe_parse": {"tf": 1}, "sqlglot.expressions.or_": {"tf": 1}, "sqlglot.generator.Generator.or_sql": {"tf": 1}}, "df": 3, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.generator.Generator.order_sql": {"tf": 1}}, "df": 1, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.generator.Generator.__init__": {"tf": 1}, "sqlglot.parser.Parser.__init__": {"tf": 1}}, "df": 2}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.generator.Generator.ordered_sql": {"tf": 1}}, "df": 1}}}}}}, "l": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.rename_table": {"tf": 1}, "sqlglot.optimizer.scope.Scope.replace": {"tf": 1}, "sqlglot.optimizer.scope.Scope.rename_source": {"tf": 1}}, "df": 3}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.parse": {"tf": 1}, "sqlglot.transpile": {"tf": 1}, "sqlglot.dataframe.sql.SparkSession.createDataFrame": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sql": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.join": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.dropDuplicates": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.dropna": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.replace": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.GroupedData.__init__": {"tf": 1}, "sqlglot.dataframe.sql.Column.ensure_cols": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrameNaFunctions.drop": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.fill": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.replace": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Window.partitionBy": {"tf": 1}, "sqlglot.dataframe.sql.Window.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.partitionBy": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.sql": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.parse": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.parse_into": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.transpile": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.tokenize": {"tf": 1}, "sqlglot.diff.diff": {"tf": 1.4142135623730951}, "sqlglot.diff.ChangeDistiller.diff": {"tf": 1.4142135623730951}, "sqlglot.errors.ParseError.__init__": {"tf": 1}, "sqlglot.errors.merge_errors": {"tf": 1}, "sqlglot.expressions.Expression.error_messages": {"tf": 1}, "sqlglot.generator.Generator.maybe_comment": {"tf": 1}, "sqlglot.generator.Generator.locate_properties": {"tf": 1}, "sqlglot.generator.Generator.expressions": {"tf": 1}, "sqlglot.helper.subclasses": {"tf": 1}, "sqlglot.helper.apply_index_offset": {"tf": 1.4142135623730951}, "sqlglot.helper.tsort": {"tf": 1.4142135623730951}, "sqlglot.helper.split_num_words": {"tf": 1}, "sqlglot.lineage.Node.__init__": {"tf": 1}, "sqlglot.optimizer.scope.Scope.__init__": {"tf": 1}, "sqlglot.parser.Parser.parse": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser.parse_into": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser.expression": {"tf": 1}, "sqlglot.parser.Parser.validate_expression": {"tf": 1}, "sqlglot.schema.Schema.add_table": {"tf": 1}, "sqlglot.schema.Schema.column_names": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema.table_parts": {"tf": 1}, "sqlglot.schema.MappingSchema.add_table": {"tf": 1}, "sqlglot.schema.MappingSchema.column_names": {"tf": 1}, "sqlglot.schema.ensure_column_mapping": {"tf": 1}, "sqlglot.schema.flatten_schema": {"tf": 1.7320508075688772}, "sqlglot.serde.dump": {"tf": 1.7320508075688772}, "sqlglot.serde.load": {"tf": 1.7320508075688772}, "sqlglot.tokens.Token.__init__": {"tf": 1}, "sqlglot.tokens.Tokenizer.tokenize": {"tf": 1}, "sqlglot.transforms.preprocess": {"tf": 1}}, "df": 56}}, "n": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.errors.ParseError.new": {"tf": 1}, "sqlglot.tokens.Token.__init__": {"tf": 1}}, "df": 2, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.lineage.Node.__init__": {"tf": 1}, "sqlglot.lineage.Node.walk": {"tf": 1}, "sqlglot.lineage.Node.to_html": {"tf": 1}, "sqlglot.lineage.lineage": {"tf": 1}, "sqlglot.lineage.LineageHTML.__init__": {"tf": 1}}, "df": 5, "h": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.lineage.Node.to_html": {"tf": 1}}, "df": 1}}}}}}}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.expressions.Literal.number": {"tf": 1}, "sqlglot.expressions.Literal.string": {"tf": 1}, "sqlglot.expressions.to_interval": {"tf": 1}, "sqlglot.generator.Generator.literal_sql": {"tf": 1}}, "df": 4}}}}}, "k": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.generator.Generator.like_sql": {"tf": 1}}, "df": 1, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.generator.Generator.likeproperty_sql": {"tf": 1}}, "df": 1}}}}}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.generator.Generator.likeany_sql": {"tf": 1}}, "df": 1}}}}}, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.generator.Generator.limit_sql": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.transpile": {"tf": 1}, "sqlglot.generator.Generator.__init__": {"tf": 1}, "sqlglot.generator.Generator.indent": {"tf": 1}, "sqlglot.parser.Parser.__init__": {"tf": 1}, "sqlglot.planner.Step.to_s": {"tf": 1}}, "df": 5}}}, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.dataframe.sql.Column.substr": {"tf": 1}, "sqlglot.executor.env.substring": {"tf": 1}}, "df": 2}}}}, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.sqlite.SQLite.Generator.least_sql": {"tf": 1}}, "df": 1}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.generator.Generator.__init__": {"tf": 1}}, "df": 1}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_ctes": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_derived_tables": {"tf": 1}}, "df": 3}}}, "f": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.union": {"tf": 1}, "sqlglot.expressions.intersect": {"tf": 1}, "sqlglot.expressions.except_": {"tf": 1}, "sqlglot.planner.SetOperation.__init__": {"tf": 1}}, "df": 4}}}, "t": {"docs": {"sqlglot.dataframe.sql.SparkSession.createDataFrame": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.__init__": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.replace": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.repartition": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.__init__": {"tf": 1}, "sqlglot.dataframe.sql.Column.ensure_col": {"tf": 1}, "sqlglot.dataframe.sql.Column.ensure_cols": {"tf": 1}, "sqlglot.dataframe.sql.Column.invoke_anonymous_function": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.invoke_expression_over_column": {"tf": 1}, "sqlglot.dataframe.sql.Column.binary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.inverse_binary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.isin": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.between": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.over": {"tf": 1}, "sqlglot.dataframe.sql.Window.partitionBy": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Window.orderBy": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.WindowSpec.partitionBy": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.WindowSpec.orderBy": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.__init__": {"tf": 1}, "sqlglot.generator.Generator.lt_sql": {"tf": 1}, "sqlglot.helper.open_file": {"tf": 1}, "sqlglot.lineage.Node.__init__": {"tf": 1}, "sqlglot.lineage.lineage": {"tf": 1.7320508075688772}, "sqlglot.optimizer.optimizer.optimize": {"tf": 4.358898943540674}, "sqlglot.optimizer.scope.Scope.__init__": {"tf": 1}}, "df": 26, "e": {"docs": {"sqlglot.generator.Generator.lte_sql": {"tf": 1}}, "df": 1}}, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe.sql.DataFrame.__init__": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.__init__": {"tf": 1}, "sqlglot.generator.Generator.indent": {"tf": 1}}, "df": 3}}, "m": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.generator.Generator.lambda_sql": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.generator.Generator.lateral_sql": {"tf": 1}, "sqlglot.optimizer.scope.Scope.__init__": {"tf": 1}}, "df": 2, "s": {"docs": {"sqlglot.lineage.lineage": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 2}}}}}}}, "o": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 1, "b": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.dataframe.sql.Column.between": {"tf": 1}}, "df": 1}}}}}}}}, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.generator.Generator.locate_properties": {"tf": 1}}, "df": 1}}}}}, "k": {"docs": {"sqlglot.generator.Generator.lock_sql": {"tf": 1}}, "df": 1, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.generator.Generator.lockingproperty_sql": {"tf": 1}}, "df": 1}}}}}}}}}}}}}, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.generator.Generator.loaddata_sql": {"tf": 1}}, "df": 1}}}}}}}}, "e": {"docs": {"sqlglot.dialects.dialect.format_time_lambda": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.parse_date_delta": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.parse_date_delta_with_interval": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.generate_date_delta_with_unit_sql": {"tf": 1}, "sqlglot.expressions.Expression.find": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.find_all": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.find_ancestor": {"tf": 1.4142135623730951}, "sqlglot.helper.apply_index_offset": {"tf": 1.4142135623730951}, "sqlglot.helper.while_changing": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser.expression": {"tf": 1.4142135623730951}}, "df": 10, "x": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.dialects.dialect.format_time_lambda": {"tf": 1}, "sqlglot.dialects.dialect.parse_date_delta": {"tf": 1}, "sqlglot.parser.Parser.expression": {"tf": 1}}, "df": 3, "r": {"docs": {"sqlglot.parser.binary_range_parser": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.parse": {"tf": 1}, "sqlglot.parse_one": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.__init__": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Column.__init__": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.ensure_col": {"tf": 1}, "sqlglot.dataframe.sql.Column.ensure_cols": {"tf": 1}, "sqlglot.dataframe.sql.Column.invoke_expression_over_column": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.__init__": {"tf": 1.4142135623730951}, "sqlglot.dialects.bigquery.BigQuery.Generator.array_sql": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.in_unnest_op": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.except_op": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.intersect_op": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator.cte_sql": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.format_time": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.Dialect.parse": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.parse_into": {"tf": 2}, "sqlglot.dialects.dialect.Dialect.generate": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.rename_func": {"tf": 1}, "sqlglot.dialects.dialect.approx_count_distinct_sql": {"tf": 1}, "sqlglot.dialects.dialect.if_sql": {"tf": 1}, "sqlglot.dialects.dialect.arrow_json_extract_sql": {"tf": 1}, "sqlglot.dialects.dialect.arrow_json_extract_scalar_sql": {"tf": 1}, "sqlglot.dialects.dialect.inline_array_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_ilike_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_paren_current_date_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_recursive_cte_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_safe_divide_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_tablesample_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_pivot_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_trycast_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_properties_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_comment_column_constraint_sql": {"tf": 1}, "sqlglot.dialects.dialect.str_position_sql": {"tf": 1}, "sqlglot.dialects.dialect.struct_extract_sql": {"tf": 1}, "sqlglot.dialects.dialect.var_map_sql": {"tf": 1}, "sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1}, "sqlglot.dialects.dialect.parse_date_delta_with_interval": {"tf": 1}, "sqlglot.dialects.dialect.timestamptrunc_sql": {"tf": 1}, "sqlglot.dialects.dialect.locate_to_strposition": {"tf": 1}, "sqlglot.dialects.dialect.strposition_to_locate_sql": {"tf": 1}, "sqlglot.dialects.dialect.timestrtotime_sql": {"tf": 1}, "sqlglot.dialects.dialect.datestrtodate_sql": {"tf": 1}, "sqlglot.dialects.dialect.min_or_least": {"tf": 1}, "sqlglot.dialects.dialect.max_or_greatest": {"tf": 1}, "sqlglot.dialects.dialect.count_if_to_sum": {"tf": 1}, "sqlglot.dialects.dialect.trim_sql": {"tf": 1}, "sqlglot.dialects.dialect.str_to_time_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Generator.tablesample_sql": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator.arrayagg_sql": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator.show_sql": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator.offset_sql": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator.column_sql": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator.xmltable_sql": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator.interval_sql": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator.transaction_sql": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.renametable_sql": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.except_op": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.intersect_op": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.settag_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.describe_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.generatedasidentitycolumnconstraint_sql": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator.cast_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.cast_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.datediff_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.groupconcat_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.least_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.transaction_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.partitionedbyproperty_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.update_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.mod_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.rangen_sql": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator.offset_sql": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator.systemtime_sql": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator.returnsproperty_sql": {"tf": 1}, "sqlglot.diff.Insert.__init__": {"tf": 1.4142135623730951}, "sqlglot.diff.Remove.__init__": {"tf": 1.4142135623730951}, "sqlglot.diff.Move.__init__": {"tf": 1.4142135623730951}, "sqlglot.diff.Update.__init__": {"tf": 1.4142135623730951}, "sqlglot.diff.Keep.__init__": {"tf": 1.4142135623730951}, "sqlglot.diff.diff": {"tf": 2}, "sqlglot.diff.ChangeDistiller.diff": {"tf": 2}, "sqlglot.errors.ParseError.new": {"tf": 1}, "sqlglot.executor.execute": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.generate": {"tf": 1}, "sqlglot.expressions.Expression.iter_expressions": {"tf": 1}, "sqlglot.expressions.Expression.find": {"tf": 1}, "sqlglot.expressions.Expression.find_all": {"tf": 1}, "sqlglot.expressions.Expression.find_ancestor": {"tf": 1}, "sqlglot.expressions.Expression.root": {"tf": 1}, "sqlglot.expressions.Expression.replace": {"tf": 1}, "sqlglot.expressions.Unionable.union": {"tf": 1}, "sqlglot.expressions.Unionable.intersect": {"tf": 1}, "sqlglot.expressions.Unionable.except_": {"tf": 1}, "sqlglot.expressions.Delete.delete": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Delete.returning": {"tf": 1.4142135623730951}, "sqlglot.expressions.Subqueryable.limit": {"tf": 1}, "sqlglot.expressions.Union.limit": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 1}, "sqlglot.expressions.Select.limit": {"tf": 1}, "sqlglot.expressions.Select.offset": {"tf": 1}, "sqlglot.expressions.Select.select": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1}, "sqlglot.expressions.Dot.build": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 2.23606797749979}, "sqlglot.expressions.select": {"tf": 1}, "sqlglot.expressions.update": {"tf": 1.4142135623730951}, "sqlglot.expressions.delete": {"tf": 1.7320508075688772}, "sqlglot.expressions.condition": {"tf": 1}, "sqlglot.expressions.not_": {"tf": 1}, "sqlglot.expressions.paren": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1.4142135623730951}, "sqlglot.expressions.subquery": {"tf": 1}, "sqlglot.expressions.cast": {"tf": 1.4142135623730951}, "sqlglot.expressions.var": {"tf": 1}, "sqlglot.expressions.convert": {"tf": 1}, "sqlglot.expressions.replace_children": {"tf": 1}, "sqlglot.expressions.column_table_names": {"tf": 1}, "sqlglot.expressions.replace_tables": {"tf": 1}, "sqlglot.expressions.replace_placeholders": {"tf": 1}, "sqlglot.expressions.expand": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.generate": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.maybe_comment": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.wrap": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.uncache_sql": {"tf": 1}, "sqlglot.generator.Generator.cache_sql": {"tf": 1}, "sqlglot.generator.Generator.characterset_sql": {"tf": 1}, "sqlglot.generator.Generator.column_sql": {"tf": 1}, "sqlglot.generator.Generator.columnposition_sql": {"tf": 1}, "sqlglot.generator.Generator.columndef_sql": {"tf": 1}, "sqlglot.generator.Generator.columnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.compresscolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.generatedasidentitycolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.notnullcolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.primarykeycolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.create_sql": {"tf": 1}, "sqlglot.generator.Generator.describe_sql": {"tf": 1}, "sqlglot.generator.Generator.prepend_ctes": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.with_sql": {"tf": 1}, "sqlglot.generator.Generator.cte_sql": {"tf": 1}, "sqlglot.generator.Generator.tablealias_sql": {"tf": 1}, "sqlglot.generator.Generator.bitstring_sql": {"tf": 1}, "sqlglot.generator.Generator.hexstring_sql": {"tf": 1}, "sqlglot.generator.Generator.bytestring_sql": {"tf": 1}, "sqlglot.generator.Generator.datatype_sql": {"tf": 1}, "sqlglot.generator.Generator.directory_sql": {"tf": 1}, "sqlglot.generator.Generator.delete_sql": {"tf": 1}, "sqlglot.generator.Generator.drop_sql": {"tf": 1}, "sqlglot.generator.Generator.except_sql": {"tf": 1}, "sqlglot.generator.Generator.except_op": {"tf": 1}, "sqlglot.generator.Generator.fetch_sql": {"tf": 1}, "sqlglot.generator.Generator.filter_sql": {"tf": 1}, "sqlglot.generator.Generator.hint_sql": {"tf": 1}, "sqlglot.generator.Generator.index_sql": {"tf": 1}, "sqlglot.generator.Generator.identifier_sql": {"tf": 1}, "sqlglot.generator.Generator.inputoutputformat_sql": {"tf": 1}, "sqlglot.generator.Generator.national_sql": {"tf": 1}, "sqlglot.generator.Generator.partition_sql": {"tf": 1}, "sqlglot.generator.Generator.properties_sql": {"tf": 1}, "sqlglot.generator.Generator.property_sql": {"tf": 1}, "sqlglot.generator.Generator.likeproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.fallbackproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.journalproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.freespaceproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.afterjournalproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.checksumproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.mergeblockratioproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.datablocksizeproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.blockcompressionproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.isolatedloadingproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.lockingproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.withdataproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.insert_sql": {"tf": 1}, "sqlglot.generator.Generator.intersect_sql": {"tf": 1}, "sqlglot.generator.Generator.intersect_op": {"tf": 1}, "sqlglot.generator.Generator.introducer_sql": {"tf": 1}, "sqlglot.generator.Generator.pseudotype_sql": {"tf": 1}, "sqlglot.generator.Generator.onconflict_sql": {"tf": 1}, "sqlglot.generator.Generator.returning_sql": {"tf": 1}, "sqlglot.generator.Generator.rowformatdelimitedproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.table_sql": {"tf": 1}, "sqlglot.generator.Generator.tablesample_sql": {"tf": 1}, "sqlglot.generator.Generator.pivot_sql": {"tf": 1}, "sqlglot.generator.Generator.tuple_sql": {"tf": 1}, "sqlglot.generator.Generator.update_sql": {"tf": 1}, "sqlglot.generator.Generator.values_sql": {"tf": 1}, "sqlglot.generator.Generator.var_sql": {"tf": 1}, "sqlglot.generator.Generator.into_sql": {"tf": 1}, "sqlglot.generator.Generator.from_sql": {"tf": 1}, "sqlglot.generator.Generator.group_sql": {"tf": 1}, "sqlglot.generator.Generator.having_sql": {"tf": 1}, "sqlglot.generator.Generator.join_sql": {"tf": 1}, "sqlglot.generator.Generator.lambda_sql": {"tf": 1}, "sqlglot.generator.Generator.lateral_sql": {"tf": 1}, "sqlglot.generator.Generator.limit_sql": {"tf": 1}, "sqlglot.generator.Generator.offset_sql": {"tf": 1}, "sqlglot.generator.Generator.setitem_sql": {"tf": 1}, "sqlglot.generator.Generator.set_sql": {"tf": 1}, "sqlglot.generator.Generator.pragma_sql": {"tf": 1}, "sqlglot.generator.Generator.lock_sql": {"tf": 1}, "sqlglot.generator.Generator.literal_sql": {"tf": 1}, "sqlglot.generator.Generator.loaddata_sql": {"tf": 1}, "sqlglot.generator.Generator.boolean_sql": {"tf": 1}, "sqlglot.generator.Generator.order_sql": {"tf": 1}, "sqlglot.generator.Generator.cluster_sql": {"tf": 1}, "sqlglot.generator.Generator.distribute_sql": {"tf": 1}, "sqlglot.generator.Generator.sort_sql": {"tf": 1}, "sqlglot.generator.Generator.ordered_sql": {"tf": 1}, "sqlglot.generator.Generator.matchrecognize_sql": {"tf": 1}, "sqlglot.generator.Generator.query_modifiers": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.select_sql": {"tf": 1}, "sqlglot.generator.Generator.schema_sql": {"tf": 1}, "sqlglot.generator.Generator.star_sql": {"tf": 1}, "sqlglot.generator.Generator.structkwarg_sql": {"tf": 1}, "sqlglot.generator.Generator.parameter_sql": {"tf": 1}, "sqlglot.generator.Generator.sessionparameter_sql": {"tf": 1}, "sqlglot.generator.Generator.placeholder_sql": {"tf": 1}, "sqlglot.generator.Generator.subquery_sql": {"tf": 1}, "sqlglot.generator.Generator.qualify_sql": {"tf": 1}, "sqlglot.generator.Generator.union_sql": {"tf": 1}, "sqlglot.generator.Generator.union_op": {"tf": 1}, "sqlglot.generator.Generator.unnest_sql": {"tf": 1}, "sqlglot.generator.Generator.where_sql": {"tf": 1}, "sqlglot.generator.Generator.window_sql": {"tf": 1}, "sqlglot.generator.Generator.partition_by_sql": {"tf": 1}, "sqlglot.generator.Generator.window_spec_sql": {"tf": 1}, "sqlglot.generator.Generator.withingroup_sql": {"tf": 1}, "sqlglot.generator.Generator.between_sql": {"tf": 1}, "sqlglot.generator.Generator.bracket_sql": {"tf": 1}, "sqlglot.generator.Generator.all_sql": {"tf": 1}, "sqlglot.generator.Generator.any_sql": {"tf": 1}, "sqlglot.generator.Generator.exists_sql": {"tf": 1}, "sqlglot.generator.Generator.case_sql": {"tf": 1}, "sqlglot.generator.Generator.constraint_sql": {"tf": 1}, "sqlglot.generator.Generator.extract_sql": {"tf": 1}, "sqlglot.generator.Generator.trim_sql": {"tf": 1}, "sqlglot.generator.Generator.concat_sql": {"tf": 1}, "sqlglot.generator.Generator.check_sql": {"tf": 1}, "sqlglot.generator.Generator.foreignkey_sql": {"tf": 1}, "sqlglot.generator.Generator.primarykey_sql": {"tf": 1}, "sqlglot.generator.Generator.unique_sql": {"tf": 1}, "sqlglot.generator.Generator.if_sql": {"tf": 1}, "sqlglot.generator.Generator.matchagainst_sql": {"tf": 1}, "sqlglot.generator.Generator.jsonkeyvalue_sql": {"tf": 1}, "sqlglot.generator.Generator.jsonobject_sql": {"tf": 1}, "sqlglot.generator.Generator.in_sql": {"tf": 1}, "sqlglot.generator.Generator.interval_sql": {"tf": 1}, "sqlglot.generator.Generator.return_sql": {"tf": 1}, "sqlglot.generator.Generator.reference_sql": {"tf": 1}, "sqlglot.generator.Generator.anonymous_sql": {"tf": 1}, "sqlglot.generator.Generator.paren_sql": {"tf": 1}, "sqlglot.generator.Generator.neg_sql": {"tf": 1}, "sqlglot.generator.Generator.not_sql": {"tf": 1}, "sqlglot.generator.Generator.alias_sql": {"tf": 1}, "sqlglot.generator.Generator.aliases_sql": {"tf": 1}, "sqlglot.generator.Generator.attimezone_sql": {"tf": 1}, "sqlglot.generator.Generator.add_sql": {"tf": 1}, "sqlglot.generator.Generator.and_sql": {"tf": 1}, "sqlglot.generator.Generator.connector_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwiseand_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwiseleftshift_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwisenot_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwiseor_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwiserightshift_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwisexor_sql": {"tf": 1}, "sqlglot.generator.Generator.cast_sql": {"tf": 1}, "sqlglot.generator.Generator.currentdate_sql": {"tf": 1}, "sqlglot.generator.Generator.collate_sql": {"tf": 1}, "sqlglot.generator.Generator.command_sql": {"tf": 1}, "sqlglot.generator.Generator.comment_sql": {"tf": 1}, "sqlglot.generator.Generator.transaction_sql": {"tf": 1}, "sqlglot.generator.Generator.commit_sql": {"tf": 1}, "sqlglot.generator.Generator.rollback_sql": {"tf": 1}, "sqlglot.generator.Generator.altercolumn_sql": {"tf": 1}, "sqlglot.generator.Generator.renametable_sql": {"tf": 1}, "sqlglot.generator.Generator.altertable_sql": {"tf": 1}, "sqlglot.generator.Generator.droppartition_sql": {"tf": 1}, "sqlglot.generator.Generator.addconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.distinct_sql": {"tf": 1}, "sqlglot.generator.Generator.ignorenulls_sql": {"tf": 1}, "sqlglot.generator.Generator.respectnulls_sql": {"tf": 1}, "sqlglot.generator.Generator.intdiv_sql": {"tf": 1}, "sqlglot.generator.Generator.dpipe_sql": {"tf": 1}, "sqlglot.generator.Generator.div_sql": {"tf": 1}, "sqlglot.generator.Generator.overlaps_sql": {"tf": 1}, "sqlglot.generator.Generator.distance_sql": {"tf": 1}, "sqlglot.generator.Generator.dot_sql": {"tf": 1}, "sqlglot.generator.Generator.eq_sql": {"tf": 1}, "sqlglot.generator.Generator.escape_sql": {"tf": 1}, "sqlglot.generator.Generator.glob_sql": {"tf": 1}, "sqlglot.generator.Generator.gt_sql": {"tf": 1}, "sqlglot.generator.Generator.gte_sql": {"tf": 1}, "sqlglot.generator.Generator.ilike_sql": {"tf": 1}, "sqlglot.generator.Generator.ilikeany_sql": {"tf": 1}, "sqlglot.generator.Generator.is_sql": {"tf": 1}, "sqlglot.generator.Generator.like_sql": {"tf": 1}, "sqlglot.generator.Generator.likeany_sql": {"tf": 1}, "sqlglot.generator.Generator.similarto_sql": {"tf": 1}, "sqlglot.generator.Generator.lt_sql": {"tf": 1}, "sqlglot.generator.Generator.lte_sql": {"tf": 1}, "sqlglot.generator.Generator.mod_sql": {"tf": 1}, "sqlglot.generator.Generator.mul_sql": {"tf": 1}, "sqlglot.generator.Generator.neq_sql": {"tf": 1}, "sqlglot.generator.Generator.nullsafeeq_sql": {"tf": 1}, "sqlglot.generator.Generator.nullsafeneq_sql": {"tf": 1}, "sqlglot.generator.Generator.or_sql": {"tf": 1}, "sqlglot.generator.Generator.slice_sql": {"tf": 1}, "sqlglot.generator.Generator.sub_sql": {"tf": 1}, "sqlglot.generator.Generator.trycast_sql": {"tf": 1}, "sqlglot.generator.Generator.use_sql": {"tf": 1}, "sqlglot.generator.Generator.binary": {"tf": 1}, "sqlglot.generator.Generator.function_fallback_sql": {"tf": 1}, "sqlglot.generator.Generator.func": {"tf": 1}, "sqlglot.generator.Generator.format_args": {"tf": 1}, "sqlglot.generator.Generator.format_time": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.expressions": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.op_expressions": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.naked_property": {"tf": 1}, "sqlglot.generator.Generator.set_operation": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.tag_sql": {"tf": 1}, "sqlglot.generator.Generator.userdefinedfunction_sql": {"tf": 1}, "sqlglot.generator.Generator.joinhint_sql": {"tf": 1}, "sqlglot.generator.Generator.kwarg_sql": {"tf": 1}, "sqlglot.generator.Generator.when_sql": {"tf": 1}, "sqlglot.generator.Generator.merge_sql": {"tf": 1}, "sqlglot.generator.Generator.tochar_sql": {"tf": 1}, "sqlglot.helper.apply_index_offset": {"tf": 1}, "sqlglot.helper.while_changing": {"tf": 1.7320508075688772}, "sqlglot.lineage.Node.__init__": {"tf": 1.7320508075688772}, "sqlglot.lineage.lineage": {"tf": 1}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}, "sqlglot.optimizer.annotate_types.TypeAnnotator.annotate": {"tf": 1}, "sqlglot.optimizer.canonicalize.canonicalize": {"tf": 1.7320508075688772}, "sqlglot.optimizer.canonicalize.add_text_to_concat": {"tf": 1.4142135623730951}, "sqlglot.optimizer.canonicalize.coerce_type": {"tf": 1.4142135623730951}, "sqlglot.optimizer.canonicalize.remove_redundant_casts": {"tf": 1.7320508075688772}, "sqlglot.optimizer.canonicalize.ensure_bool_predicates": {"tf": 1.7320508075688772}, "sqlglot.optimizer.eliminate_ctes.eliminate_ctes": {"tf": 1}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 1}, "sqlglot.optimizer.eliminate_subqueries.eliminate_subqueries": {"tf": 1}, "sqlglot.optimizer.expand_laterals.expand_laterals": {"tf": 1.7320508075688772}, "sqlglot.optimizer.expand_multi_table_selects.expand_multi_table_selects": {"tf": 1}, "sqlglot.optimizer.isolate_table_selects.isolate_table_selects": {"tf": 1}, "sqlglot.optimizer.lower_identities.lower_identities": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_ctes": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_derived_tables": {"tf": 1}, "sqlglot.optimizer.normalize.normalize": {"tf": 1.4142135623730951}, "sqlglot.optimizer.normalize.normalized": {"tf": 1}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1}, "sqlglot.optimizer.normalize.distributive_law": {"tf": 1}, "sqlglot.optimizer.optimize_joins.optimize_joins": {"tf": 1}, "sqlglot.optimizer.optimize_joins.reorder_joins": {"tf": 1}, "sqlglot.optimizer.optimize_joins.normalize": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1.4142135623730951}, "sqlglot.optimizer.pushdown_predicates.pushdown_predicates": {"tf": 1}, "sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 1}, "sqlglot.optimizer.qualify_columns.qualify_columns": {"tf": 1}, "sqlglot.optimizer.qualify_columns.validate_qualify_columns": {"tf": 1}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"tf": 1}, "sqlglot.optimizer.scope.Scope.__init__": {"tf": 1}, "sqlglot.optimizer.scope.Scope.branch": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}, "sqlglot.optimizer.scope.build_scope": {"tf": 1}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1}, "sqlglot.optimizer.simplify.simplify": {"tf": 1}, "sqlglot.optimizer.simplify.rewrite_between": {"tf": 1.7320508075688772}, "sqlglot.optimizer.simplify.simplify_not": {"tf": 1}, "sqlglot.optimizer.simplify.flatten": {"tf": 1}, "sqlglot.optimizer.simplify.simplify_connectors": {"tf": 1}, "sqlglot.optimizer.simplify.remove_compliments": {"tf": 1}, "sqlglot.optimizer.simplify.uniq_sort": {"tf": 1}, "sqlglot.optimizer.simplify.absorb_and_eliminate": {"tf": 1}, "sqlglot.optimizer.simplify.simplify_literals": {"tf": 1}, "sqlglot.optimizer.simplify.simplify_parens": {"tf": 1}, "sqlglot.optimizer.simplify.remove_where_true": {"tf": 1}, "sqlglot.optimizer.simplify.always_true": {"tf": 1}, "sqlglot.optimizer.simplify.is_false": {"tf": 1}, "sqlglot.optimizer.simplify.is_null": {"tf": 1}, "sqlglot.optimizer.simplify.eval_boolean": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 1}, "sqlglot.parser.parse_var_map": {"tf": 1}, "sqlglot.parser.binary_range_parser": {"tf": 1.7320508075688772}, "sqlglot.parser.Parser.parse": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 2}, "sqlglot.parser.Parser.validate_expression": {"tf": 1.4142135623730951}, "sqlglot.planner.Plan.__init__": {"tf": 1.4142135623730951}, "sqlglot.planner.Step.from_expression": {"tf": 1.4142135623730951}, "sqlglot.planner.Scan.from_expression": {"tf": 1.4142135623730951}, "sqlglot.planner.SetOperation.__init__": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1.4142135623730951}, "sqlglot.serde.dump": {"tf": 1}, "sqlglot.serde.load": {"tf": 1}, "sqlglot.transforms.unalias_group": {"tf": 1.7320508075688772}, "sqlglot.transforms.eliminate_distinct_on": {"tf": 1.7320508075688772}, "sqlglot.transforms.eliminate_qualify": {"tf": 1.7320508075688772}, "sqlglot.transforms.remove_precision_parameterized_types": {"tf": 1.7320508075688772}, "sqlglot.transforms.unnest_to_explode": {"tf": 1.7320508075688772}, "sqlglot.transforms.explode_to_unnest": {"tf": 1.7320508075688772}, "sqlglot.transforms.remove_target_from_merge": {"tf": 1.7320508075688772}, "sqlglot.transforms.preprocess": {"tf": 1.7320508075688772}}, "df": 410, "s": {"docs": {"sqlglot.parse": {"tf": 1}, "sqlglot.parse_one": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.__init__": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.__init__": {"tf": 1}, "sqlglot.dataframe.sql.Column.ensure_col": {"tf": 1}, "sqlglot.dataframe.sql.Column.ensure_cols": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.__init__": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.array_sql": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.in_unnest_op": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.except_op": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator.intersect_op": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator.cte_sql": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.format_time": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.Dialect.parse": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.parse_into": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.Dialect.generate": {"tf": 1}, "sqlglot.dialects.dialect.rename_func": {"tf": 1}, "sqlglot.dialects.dialect.approx_count_distinct_sql": {"tf": 1}, "sqlglot.dialects.dialect.if_sql": {"tf": 1}, "sqlglot.dialects.dialect.arrow_json_extract_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.arrow_json_extract_scalar_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.inline_array_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_ilike_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_paren_current_date_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_recursive_cte_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_safe_divide_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_tablesample_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_pivot_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_trycast_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_properties_sql": {"tf": 1}, "sqlglot.dialects.dialect.no_comment_column_constraint_sql": {"tf": 1}, "sqlglot.dialects.dialect.str_position_sql": {"tf": 1}, "sqlglot.dialects.dialect.struct_extract_sql": {"tf": 1}, "sqlglot.dialects.dialect.var_map_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1}, "sqlglot.dialects.dialect.date_trunc_to_time": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.timestamptrunc_sql": {"tf": 1}, "sqlglot.dialects.dialect.locate_to_strposition": {"tf": 1}, "sqlglot.dialects.dialect.strposition_to_locate_sql": {"tf": 1}, "sqlglot.dialects.dialect.timestrtotime_sql": {"tf": 1}, "sqlglot.dialects.dialect.datestrtodate_sql": {"tf": 1}, "sqlglot.dialects.dialect.min_or_least": {"tf": 1}, "sqlglot.dialects.dialect.max_or_greatest": {"tf": 1}, "sqlglot.dialects.dialect.count_if_to_sum": {"tf": 1}, "sqlglot.dialects.dialect.trim_sql": {"tf": 1}, "sqlglot.dialects.dialect.str_to_time_sql": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator.tablesample_sql": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator.arrayagg_sql": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator.with_properties": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator.show_sql": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator.offset_sql": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator.column_sql": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator.xmltable_sql": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator.interval_sql": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator.transaction_sql": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.with_properties": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.renametable_sql": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.except_op": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.intersect_op": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.settag_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.describe_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.generatedasidentitycolumnconstraint_sql": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator.cast_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.cast_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.datediff_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.least_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.transaction_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.partitionedbyproperty_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.update_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.mod_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator.rangen_sql": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator.offset_sql": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator.systemtime_sql": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator.returnsproperty_sql": {"tf": 1}, "sqlglot.diff.Insert.__init__": {"tf": 1}, "sqlglot.diff.Remove.__init__": {"tf": 1}, "sqlglot.diff.Move.__init__": {"tf": 1}, "sqlglot.diff.Update.__init__": {"tf": 1.4142135623730951}, "sqlglot.diff.Keep.__init__": {"tf": 1.4142135623730951}, "sqlglot.diff.diff": {"tf": 2}, "sqlglot.diff.ChangeDistiller.diff": {"tf": 2}, "sqlglot.executor.execute": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.generate_tuple": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.table": {"tf": 1}, "sqlglot.expressions.Expression.iter_expressions": {"tf": 1}, "sqlglot.expressions.Expression.root": {"tf": 1}, "sqlglot.expressions.Condition.and_": {"tf": 1}, "sqlglot.expressions.Condition.or_": {"tf": 1}, "sqlglot.expressions.Column.to_dot": {"tf": 1}, "sqlglot.expressions.Delete.delete": {"tf": 1.4142135623730951}, "sqlglot.expressions.Delete.where": {"tf": 1.7320508075688772}, "sqlglot.expressions.Delete.returning": {"tf": 1.4142135623730951}, "sqlglot.expressions.Literal.number": {"tf": 1}, "sqlglot.expressions.Literal.string": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Join.using": {"tf": 1}, "sqlglot.expressions.Properties.from_dict": {"tf": 1}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 1}, "sqlglot.expressions.Subqueryable.limit": {"tf": 1}, "sqlglot.expressions.Union.limit": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.from_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.group_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.order_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.sort_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.cluster_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.limit": {"tf": 1}, "sqlglot.expressions.Select.offset": {"tf": 1}, "sqlglot.expressions.Select.select": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.lateral": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.join": {"tf": 1}, "sqlglot.expressions.Select.where": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.having": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.window": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.qualify": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.distinct": {"tf": 1}, "sqlglot.expressions.Select.ctas": {"tf": 1}, "sqlglot.expressions.Select.lock": {"tf": 1}, "sqlglot.expressions.DataType.build": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.is_type": {"tf": 1}, "sqlglot.expressions.Dot.build": {"tf": 1.7320508075688772}, "sqlglot.expressions.Cast.is_type": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 2}, "sqlglot.expressions.select": {"tf": 1.7320508075688772}, "sqlglot.expressions.from_": {"tf": 1.4142135623730951}, "sqlglot.expressions.update": {"tf": 2}, "sqlglot.expressions.delete": {"tf": 2}, "sqlglot.expressions.condition": {"tf": 1}, "sqlglot.expressions.and_": {"tf": 1.4142135623730951}, "sqlglot.expressions.or_": {"tf": 1.4142135623730951}, "sqlglot.expressions.not_": {"tf": 1}, "sqlglot.expressions.paren": {"tf": 1}, "sqlglot.expressions.to_interval": {"tf": 1.4142135623730951}, "sqlglot.expressions.to_table": {"tf": 1.4142135623730951}, "sqlglot.expressions.to_column": {"tf": 1.4142135623730951}, "sqlglot.expressions.alias_": {"tf": 1.7320508075688772}, "sqlglot.expressions.column": {"tf": 2.23606797749979}, "sqlglot.expressions.cast": {"tf": 2}, "sqlglot.expressions.table_": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1.4142135623730951}, "sqlglot.expressions.var": {"tf": 1.4142135623730951}, "sqlglot.expressions.rename_table": {"tf": 1.7320508075688772}, "sqlglot.expressions.convert": {"tf": 1}, "sqlglot.expressions.expand": {"tf": 1.7320508075688772}, "sqlglot.expressions.func": {"tf": 1}, "sqlglot.generator.Generator.generate": {"tf": 1}, "sqlglot.generator.Generator.maybe_comment": {"tf": 1}, "sqlglot.generator.Generator.wrap": {"tf": 1}, "sqlglot.generator.Generator.sql": {"tf": 1}, "sqlglot.generator.Generator.uncache_sql": {"tf": 1}, "sqlglot.generator.Generator.cache_sql": {"tf": 1}, "sqlglot.generator.Generator.characterset_sql": {"tf": 1}, "sqlglot.generator.Generator.column_sql": {"tf": 1}, "sqlglot.generator.Generator.columnposition_sql": {"tf": 1}, "sqlglot.generator.Generator.columndef_sql": {"tf": 1}, "sqlglot.generator.Generator.columnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.compresscolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.generatedasidentitycolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.notnullcolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.primarykeycolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.create_sql": {"tf": 1}, "sqlglot.generator.Generator.describe_sql": {"tf": 1}, "sqlglot.generator.Generator.prepend_ctes": {"tf": 1}, "sqlglot.generator.Generator.with_sql": {"tf": 1}, "sqlglot.generator.Generator.cte_sql": {"tf": 1}, "sqlglot.generator.Generator.tablealias_sql": {"tf": 1}, "sqlglot.generator.Generator.bitstring_sql": {"tf": 1}, "sqlglot.generator.Generator.hexstring_sql": {"tf": 1}, "sqlglot.generator.Generator.bytestring_sql": {"tf": 1}, "sqlglot.generator.Generator.datatype_sql": {"tf": 1}, "sqlglot.generator.Generator.directory_sql": {"tf": 1}, "sqlglot.generator.Generator.delete_sql": {"tf": 1}, "sqlglot.generator.Generator.drop_sql": {"tf": 1}, "sqlglot.generator.Generator.except_sql": {"tf": 1}, "sqlglot.generator.Generator.except_op": {"tf": 1}, "sqlglot.generator.Generator.fetch_sql": {"tf": 1}, "sqlglot.generator.Generator.filter_sql": {"tf": 1}, "sqlglot.generator.Generator.hint_sql": {"tf": 1}, "sqlglot.generator.Generator.index_sql": {"tf": 1}, "sqlglot.generator.Generator.identifier_sql": {"tf": 1}, "sqlglot.generator.Generator.inputoutputformat_sql": {"tf": 1}, "sqlglot.generator.Generator.national_sql": {"tf": 1}, "sqlglot.generator.Generator.partition_sql": {"tf": 1}, "sqlglot.generator.Generator.properties_sql": {"tf": 1}, "sqlglot.generator.Generator.root_properties": {"tf": 1}, "sqlglot.generator.Generator.properties": {"tf": 1}, "sqlglot.generator.Generator.with_properties": {"tf": 1}, "sqlglot.generator.Generator.locate_properties": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.property_sql": {"tf": 1}, "sqlglot.generator.Generator.likeproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.fallbackproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.journalproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.freespaceproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.afterjournalproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.checksumproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.mergeblockratioproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.datablocksizeproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.blockcompressionproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.isolatedloadingproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.lockingproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.withdataproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.insert_sql": {"tf": 1}, "sqlglot.generator.Generator.intersect_sql": {"tf": 1}, "sqlglot.generator.Generator.intersect_op": {"tf": 1}, "sqlglot.generator.Generator.introducer_sql": {"tf": 1}, "sqlglot.generator.Generator.pseudotype_sql": {"tf": 1}, "sqlglot.generator.Generator.onconflict_sql": {"tf": 1}, "sqlglot.generator.Generator.returning_sql": {"tf": 1}, "sqlglot.generator.Generator.rowformatdelimitedproperty_sql": {"tf": 1}, "sqlglot.generator.Generator.table_sql": {"tf": 1}, "sqlglot.generator.Generator.tablesample_sql": {"tf": 1}, "sqlglot.generator.Generator.pivot_sql": {"tf": 1}, "sqlglot.generator.Generator.tuple_sql": {"tf": 1}, "sqlglot.generator.Generator.update_sql": {"tf": 1}, "sqlglot.generator.Generator.values_sql": {"tf": 1}, "sqlglot.generator.Generator.var_sql": {"tf": 1}, "sqlglot.generator.Generator.into_sql": {"tf": 1}, "sqlglot.generator.Generator.from_sql": {"tf": 1}, "sqlglot.generator.Generator.group_sql": {"tf": 1}, "sqlglot.generator.Generator.having_sql": {"tf": 1}, "sqlglot.generator.Generator.join_sql": {"tf": 1}, "sqlglot.generator.Generator.lambda_sql": {"tf": 1}, "sqlglot.generator.Generator.lateral_sql": {"tf": 1}, "sqlglot.generator.Generator.limit_sql": {"tf": 1}, "sqlglot.generator.Generator.offset_sql": {"tf": 1}, "sqlglot.generator.Generator.setitem_sql": {"tf": 1}, "sqlglot.generator.Generator.set_sql": {"tf": 1}, "sqlglot.generator.Generator.pragma_sql": {"tf": 1}, "sqlglot.generator.Generator.lock_sql": {"tf": 1}, "sqlglot.generator.Generator.literal_sql": {"tf": 1}, "sqlglot.generator.Generator.loaddata_sql": {"tf": 1}, "sqlglot.generator.Generator.boolean_sql": {"tf": 1}, "sqlglot.generator.Generator.order_sql": {"tf": 1}, "sqlglot.generator.Generator.cluster_sql": {"tf": 1}, "sqlglot.generator.Generator.distribute_sql": {"tf": 1}, "sqlglot.generator.Generator.sort_sql": {"tf": 1}, "sqlglot.generator.Generator.ordered_sql": {"tf": 1}, "sqlglot.generator.Generator.matchrecognize_sql": {"tf": 1}, "sqlglot.generator.Generator.query_modifiers": {"tf": 1}, "sqlglot.generator.Generator.select_sql": {"tf": 1}, "sqlglot.generator.Generator.schema_sql": {"tf": 1}, "sqlglot.generator.Generator.star_sql": {"tf": 1}, "sqlglot.generator.Generator.structkwarg_sql": {"tf": 1}, "sqlglot.generator.Generator.parameter_sql": {"tf": 1}, "sqlglot.generator.Generator.sessionparameter_sql": {"tf": 1}, "sqlglot.generator.Generator.placeholder_sql": {"tf": 1}, "sqlglot.generator.Generator.subquery_sql": {"tf": 1}, "sqlglot.generator.Generator.qualify_sql": {"tf": 1}, "sqlglot.generator.Generator.union_sql": {"tf": 1}, "sqlglot.generator.Generator.union_op": {"tf": 1}, "sqlglot.generator.Generator.unnest_sql": {"tf": 1}, "sqlglot.generator.Generator.where_sql": {"tf": 1}, "sqlglot.generator.Generator.window_sql": {"tf": 1}, "sqlglot.generator.Generator.partition_by_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.window_spec_sql": {"tf": 1}, "sqlglot.generator.Generator.withingroup_sql": {"tf": 1}, "sqlglot.generator.Generator.between_sql": {"tf": 1}, "sqlglot.generator.Generator.bracket_sql": {"tf": 1}, "sqlglot.generator.Generator.all_sql": {"tf": 1}, "sqlglot.generator.Generator.any_sql": {"tf": 1}, "sqlglot.generator.Generator.exists_sql": {"tf": 1}, "sqlglot.generator.Generator.case_sql": {"tf": 1}, "sqlglot.generator.Generator.constraint_sql": {"tf": 1}, "sqlglot.generator.Generator.extract_sql": {"tf": 1}, "sqlglot.generator.Generator.trim_sql": {"tf": 1}, "sqlglot.generator.Generator.concat_sql": {"tf": 1}, "sqlglot.generator.Generator.check_sql": {"tf": 1}, "sqlglot.generator.Generator.foreignkey_sql": {"tf": 1}, "sqlglot.generator.Generator.primarykey_sql": {"tf": 1}, "sqlglot.generator.Generator.unique_sql": {"tf": 1}, "sqlglot.generator.Generator.if_sql": {"tf": 1}, "sqlglot.generator.Generator.matchagainst_sql": {"tf": 1}, "sqlglot.generator.Generator.jsonkeyvalue_sql": {"tf": 1}, "sqlglot.generator.Generator.jsonobject_sql": {"tf": 1}, "sqlglot.generator.Generator.in_sql": {"tf": 1}, "sqlglot.generator.Generator.in_unnest_op": {"tf": 1}, "sqlglot.generator.Generator.interval_sql": {"tf": 1}, "sqlglot.generator.Generator.return_sql": {"tf": 1}, "sqlglot.generator.Generator.reference_sql": {"tf": 1}, "sqlglot.generator.Generator.anonymous_sql": {"tf": 1}, "sqlglot.generator.Generator.paren_sql": {"tf": 1}, "sqlglot.generator.Generator.neg_sql": {"tf": 1}, "sqlglot.generator.Generator.not_sql": {"tf": 1}, "sqlglot.generator.Generator.alias_sql": {"tf": 1}, "sqlglot.generator.Generator.aliases_sql": {"tf": 1}, "sqlglot.generator.Generator.attimezone_sql": {"tf": 1}, "sqlglot.generator.Generator.add_sql": {"tf": 1}, "sqlglot.generator.Generator.and_sql": {"tf": 1}, "sqlglot.generator.Generator.connector_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwiseand_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwiseleftshift_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwisenot_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwiseor_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwiserightshift_sql": {"tf": 1}, "sqlglot.generator.Generator.bitwisexor_sql": {"tf": 1}, "sqlglot.generator.Generator.cast_sql": {"tf": 1}, "sqlglot.generator.Generator.currentdate_sql": {"tf": 1}, "sqlglot.generator.Generator.collate_sql": {"tf": 1}, "sqlglot.generator.Generator.command_sql": {"tf": 1}, "sqlglot.generator.Generator.comment_sql": {"tf": 1}, "sqlglot.generator.Generator.transaction_sql": {"tf": 1}, "sqlglot.generator.Generator.commit_sql": {"tf": 1}, "sqlglot.generator.Generator.rollback_sql": {"tf": 1}, "sqlglot.generator.Generator.altercolumn_sql": {"tf": 1}, "sqlglot.generator.Generator.renametable_sql": {"tf": 1}, "sqlglot.generator.Generator.altertable_sql": {"tf": 1}, "sqlglot.generator.Generator.droppartition_sql": {"tf": 1}, "sqlglot.generator.Generator.addconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.distinct_sql": {"tf": 1}, "sqlglot.generator.Generator.ignorenulls_sql": {"tf": 1}, "sqlglot.generator.Generator.respectnulls_sql": {"tf": 1}, "sqlglot.generator.Generator.intdiv_sql": {"tf": 1}, "sqlglot.generator.Generator.dpipe_sql": {"tf": 1}, "sqlglot.generator.Generator.div_sql": {"tf": 1}, "sqlglot.generator.Generator.overlaps_sql": {"tf": 1}, "sqlglot.generator.Generator.distance_sql": {"tf": 1}, "sqlglot.generator.Generator.dot_sql": {"tf": 1}, "sqlglot.generator.Generator.eq_sql": {"tf": 1}, "sqlglot.generator.Generator.escape_sql": {"tf": 1}, "sqlglot.generator.Generator.glob_sql": {"tf": 1}, "sqlglot.generator.Generator.gt_sql": {"tf": 1}, "sqlglot.generator.Generator.gte_sql": {"tf": 1}, "sqlglot.generator.Generator.ilike_sql": {"tf": 1}, "sqlglot.generator.Generator.ilikeany_sql": {"tf": 1}, "sqlglot.generator.Generator.is_sql": {"tf": 1}, "sqlglot.generator.Generator.like_sql": {"tf": 1}, "sqlglot.generator.Generator.likeany_sql": {"tf": 1}, "sqlglot.generator.Generator.similarto_sql": {"tf": 1}, "sqlglot.generator.Generator.lt_sql": {"tf": 1}, "sqlglot.generator.Generator.lte_sql": {"tf": 1}, "sqlglot.generator.Generator.mod_sql": {"tf": 1}, "sqlglot.generator.Generator.mul_sql": {"tf": 1}, "sqlglot.generator.Generator.neq_sql": {"tf": 1}, "sqlglot.generator.Generator.nullsafeeq_sql": {"tf": 1}, "sqlglot.generator.Generator.nullsafeneq_sql": {"tf": 1}, "sqlglot.generator.Generator.or_sql": {"tf": 1}, "sqlglot.generator.Generator.slice_sql": {"tf": 1}, "sqlglot.generator.Generator.sub_sql": {"tf": 1}, "sqlglot.generator.Generator.trycast_sql": {"tf": 1}, "sqlglot.generator.Generator.use_sql": {"tf": 1}, "sqlglot.generator.Generator.binary": {"tf": 1}, "sqlglot.generator.Generator.function_fallback_sql": {"tf": 1}, "sqlglot.generator.Generator.func": {"tf": 1}, "sqlglot.generator.Generator.format_args": {"tf": 1}, "sqlglot.generator.Generator.format_time": {"tf": 1}, "sqlglot.generator.Generator.expressions": {"tf": 1}, "sqlglot.generator.Generator.op_expressions": {"tf": 1}, "sqlglot.generator.Generator.naked_property": {"tf": 1}, "sqlglot.generator.Generator.set_operation": {"tf": 1}, "sqlglot.generator.Generator.tag_sql": {"tf": 1}, "sqlglot.generator.Generator.userdefinedfunction_sql": {"tf": 1}, "sqlglot.generator.Generator.joinhint_sql": {"tf": 1}, "sqlglot.generator.Generator.kwarg_sql": {"tf": 1}, "sqlglot.generator.Generator.when_sql": {"tf": 1}, "sqlglot.generator.Generator.merge_sql": {"tf": 1}, "sqlglot.generator.Generator.tochar_sql": {"tf": 1}, "sqlglot.helper.apply_index_offset": {"tf": 1.4142135623730951}, "sqlglot.helper.while_changing": {"tf": 1.4142135623730951}, "sqlglot.helper.csv_reader": {"tf": 1}, "sqlglot.lineage.Node.__init__": {"tf": 1.4142135623730951}, "sqlglot.lineage.lineage": {"tf": 1.7320508075688772}, "sqlglot.optimizer.canonicalize.canonicalize": {"tf": 1.4142135623730951}, "sqlglot.optimizer.canonicalize.add_text_to_concat": {"tf": 1.4142135623730951}, "sqlglot.optimizer.canonicalize.coerce_type": {"tf": 1.4142135623730951}, "sqlglot.optimizer.canonicalize.remove_redundant_casts": {"tf": 1.4142135623730951}, "sqlglot.optimizer.canonicalize.ensure_bool_predicates": {"tf": 1.4142135623730951}, "sqlglot.optimizer.expand_laterals.expand_laterals": {"tf": 1.4142135623730951}, "sqlglot.optimizer.normalize.normalize": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.get_table": {"tf": 1}, "sqlglot.optimizer.simplify.rewrite_between": {"tf": 1.4142135623730951}, "sqlglot.optimizer.simplify.is_false": {"tf": 1}, "sqlglot.optimizer.simplify.is_null": {"tf": 1}, "sqlglot.parser.parse_var_map": {"tf": 1}, "sqlglot.parser.binary_range_parser": {"tf": 1.7320508075688772}, "sqlglot.parser.Parser.parse": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 1.7320508075688772}, "sqlglot.parser.Parser.validate_expression": {"tf": 1}, "sqlglot.planner.Plan.__init__": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.Join.from_joins": {"tf": 1}, "sqlglot.planner.SetOperation.__init__": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}, "sqlglot.schema.Schema.add_table": {"tf": 1}, "sqlglot.schema.Schema.column_names": {"tf": 1}, "sqlglot.schema.Schema.get_column_type": {"tf": 1.7320508075688772}, "sqlglot.schema.AbstractMappingSchema.table_parts": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema.find": {"tf": 1}, "sqlglot.schema.MappingSchema.add_table": {"tf": 1}, "sqlglot.schema.MappingSchema.column_names": {"tf": 1}, "sqlglot.schema.MappingSchema.get_column_type": {"tf": 1.7320508075688772}, "sqlglot.serde.dump": {"tf": 1.4142135623730951}, "sqlglot.serde.load": {"tf": 1.4142135623730951}, "sqlglot.transforms.unalias_group": {"tf": 1.4142135623730951}, "sqlglot.transforms.eliminate_distinct_on": {"tf": 1.4142135623730951}, "sqlglot.transforms.eliminate_qualify": {"tf": 1.4142135623730951}, "sqlglot.transforms.remove_precision_parameterized_types": {"tf": 1.4142135623730951}, "sqlglot.transforms.unnest_to_explode": {"tf": 1.4142135623730951}, "sqlglot.transforms.explode_to_unnest": {"tf": 1.4142135623730951}, "sqlglot.transforms.remove_target_from_merge": {"tf": 1.4142135623730951}, "sqlglot.transforms.preprocess": {"tf": 1.7320508075688772}}, "df": 408}}}}}}}, "s": {"docs": {"sqlglot.dataframe.sql.DataFrame.agg": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.agg": {"tf": 1}}, "df": 2}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.lineage.lineage": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1.4142135623730951}}, "df": 2}}}}, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.dataframe.sql.DataFrame.withColumnRenamed": {"tf": 1}}, "df": 1}}}, "s": {"docs": {"sqlglot.generator.Generator.exists_sql": {"tf": 1}}, "df": 1}}}}, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator.except_op": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.except_op": {"tf": 1}, "sqlglot.generator.Generator.except_sql": {"tf": 1}, "sqlglot.generator.Generator.except_op": {"tf": 1}}, "df": 4}}}, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.helper.subclasses": {"tf": 1}, "sqlglot.optimizer.optimize_joins.other_table_names": {"tf": 1}}, "df": 2}}}}}, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.executor.execute": {"tf": 1}, "sqlglot.executor.context.Context.__init__": {"tf": 1}, "sqlglot.executor.context.Context.table_iter": {"tf": 1.4142135623730951}, "sqlglot.executor.table.ensure_tables": {"tf": 1}}, "df": 4}}}}}}, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.generator.Generator.extract_sql": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.optimizer.unnest_subqueries.decorrelate": {"tf": 1}}, "df": 1}}}}}}}, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.transpile": {"tf": 1}, "sqlglot.parser.Parser.__init__": {"tf": 1.4142135623730951}}, "df": 2, "s": {"docs": {"sqlglot.transpile": {"tf": 1}, "sqlglot.errors.ParseError.__init__": {"tf": 1}, "sqlglot.errors.ParseError.new": {"tf": 1}, "sqlglot.errors.concat_messages": {"tf": 1}, "sqlglot.errors.merge_errors": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser.__init__": {"tf": 1.4142135623730951}}, "df": 6}, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.transpile": {"tf": 1}, "sqlglot.generator.Generator.__init__": {"tf": 1}, "sqlglot.parser.Parser.__init__": {"tf": 1}}, "df": 3}}}}}}}}}, "n": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.dataframe.sql.Window.rowsBetween": {"tf": 1}, "sqlglot.dataframe.sql.Window.rangeBetween": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.rowsBetween": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.rangeBetween": {"tf": 1}, "sqlglot.errors.ParseError.new": {"tf": 1}, "sqlglot.executor.context.Context.set_range": {"tf": 1}, "sqlglot.generator.Generator.__init__": {"tf": 1.4142135623730951}, "sqlglot.tokens.Token.__init__": {"tf": 1}}, "df": 8}, "v": {"docs": {"sqlglot.executor.context.Context.__init__": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.__init__": {"tf": 1}}, "df": 2}}, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.executor.env.filter_nulls": {"tf": 1}}, "df": 1}}}}, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.generator.Generator.__init__": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.escape_sql": {"tf": 1}}, "df": 2}}}}}, "q": {"docs": {"sqlglot.generator.Generator.eq_sql": {"tf": 1}}, "df": 1}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1.7320508075688772}}, "df": 1}}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.generator.Generator.in_sql": {"tf": 1}}, "df": 1, "t": {"docs": {"sqlglot.dataframe.sql.DataFrame.dropna": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.replace": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.limit": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.hint": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.repartition": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.coalesce": {"tf": 1}, "sqlglot.dataframe.sql.Column.substr": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrameNaFunctions.drop": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.fill": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.replace": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Window.rowsBetween": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Window.rangeBetween": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.WindowSpec.rowsBetween": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.WindowSpec.rangeBetween": {"tf": 1.4142135623730951}, "sqlglot.errors.ParseError.new": {"tf": 1.4142135623730951}, "sqlglot.errors.concat_messages": {"tf": 1}, "sqlglot.executor.context.Context.set_index": {"tf": 1}, "sqlglot.executor.context.Context.set_range": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.generate": {"tf": 1}, "sqlglot.generator.Generator.indent": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.text_width": {"tf": 1}, "sqlglot.helper.seq_get": {"tf": 1}, "sqlglot.helper.apply_index_offset": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1}, "sqlglot.helper.count_params": {"tf": 1}, "sqlglot.helper.dict_depth": {"tf": 1}, "sqlglot.optimizer.normalize.normalize": {"tf": 1}, "sqlglot.parser.Parser.__init__": {"tf": 1.7320508075688772}, "sqlglot.planner.Step.to_s": {"tf": 1}, "sqlglot.schema.flatten_schema": {"tf": 1}, "sqlglot.serde.dump": {"tf": 1.4142135623730951}, "sqlglot.serde.load": {"tf": 1.4142135623730951}, "sqlglot.tokens.Token.__init__": {"tf": 1.7320508075688772}, "sqlglot.tokens.Token.number": {"tf": 1}, "sqlglot.trie.in_trie": {"tf": 1}}, "df": 35, "o": {"docs": {"sqlglot.parse_one": {"tf": 1}, "sqlglot.errors.ParseError.new": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1}, "sqlglot.generator.Generator.into_sql": {"tf": 1}}, "df": 4}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator.intersect_op": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.intersect_op": {"tf": 1}, "sqlglot.generator.Generator.intersect_sql": {"tf": 1}, "sqlglot.generator.Generator.intersect_op": {"tf": 1}}, "df": 4}}}}, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.dialects.presto.Presto.Generator.interval_sql": {"tf": 1}, "sqlglot.expressions.to_interval": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.interval_sql": {"tf": 1}, "sqlglot.optimizer.simplify.extract_interval": {"tf": 1}}, "df": 4}}}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.generator.Generator.introducer_sql": {"tf": 1}}, "df": 1}}}}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {"sqlglot.generator.Generator.intdiv_sql": {"tf": 1}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe.sql.DataFrame.__init__": {"tf": 1}}, "df": 1}}, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dataframe.sql.DataFrame.join": {"tf": 1}}, "df": 1}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.diff.diff": {"tf": 1}, "sqlglot.diff.ChangeDistiller.diff": {"tf": 1}, "sqlglot.generator.Generator.insert_sql": {"tf": 1}}, "df": 3}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "x": {"docs": {"sqlglot.executor.context.Context.set_index": {"tf": 1}, "sqlglot.generator.Generator.__init__": {"tf": 1}, "sqlglot.generator.Generator.index_sql": {"tf": 1}, "sqlglot.helper.seq_get": {"tf": 1}, "sqlglot.parser.Parser.__init__": {"tf": 1}}, "df": 5}, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.generator.Generator.__init__": {"tf": 1}, "sqlglot.generator.Generator.expressions": {"tf": 1}}, "df": 2}}}}, "p": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.generator.Generator.inputoutputformat_sql": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}, "d": {"docs": {"sqlglot.dataframe.sql.SparkSession.createDataFrame": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.__init__": {"tf": 2}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.replace": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.repartition": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.__init__": {"tf": 1}, "sqlglot.dataframe.sql.Column.ensure_col": {"tf": 1}, "sqlglot.dataframe.sql.Column.ensure_cols": {"tf": 1}, "sqlglot.dataframe.sql.Column.invoke_anonymous_function": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.invoke_expression_over_column": {"tf": 1}, "sqlglot.dataframe.sql.Column.binary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.inverse_binary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.isin": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.between": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.over": {"tf": 1}, "sqlglot.dataframe.sql.Window.partitionBy": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Window.orderBy": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.WindowSpec.partitionBy": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.WindowSpec.orderBy": {"tf": 1.4142135623730951}}, "df": 19, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.transpile": {"tf": 1}}, "df": 1}, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 1}}}}, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.alias_": {"tf": 1.4142135623730951}, "sqlglot.expressions.column": {"tf": 2}, "sqlglot.generator.Generator.__init__": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.identifier_sql": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.get_table": {"tf": 1}, "sqlglot.tokens.Token.identifier": {"tf": 1}}, "df": 6}}}, "y": {"docs": {"sqlglot.generator.Generator.__init__": {"tf": 1}, "sqlglot.helper.should_identify": {"tf": 1}, "sqlglot.optimizer.canonicalize.canonicalize": {"tf": 1}}, "df": 3}}}}}}}, "t": {"docs": {"sqlglot.helper.first": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.Column.isin": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.text_width": {"tf": 1}, "sqlglot.helper.flatten": {"tf": 1.4142135623730951}, "sqlglot.helper.first": {"tf": 1}, "sqlglot.planner.Join.from_joins": {"tf": 1}, "sqlglot.trie.new_trie": {"tf": 1}}, "df": 7}}}, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.executor.context.Context.table_iter": {"tf": 1}, "sqlglot.expressions.Expression.iter_expressions": {"tf": 1}, "sqlglot.expressions.Expression.find_all": {"tf": 1}, "sqlglot.helper.flatten": {"tf": 1}, "sqlglot.lineage.Node.walk": {"tf": 1}}, "df": 5}}}}}}}, "f": {"docs": {"sqlglot.dialects.dialect.if_sql": {"tf": 1}, "sqlglot.generator.Generator.if_sql": {"tf": 1}}, "df": 2}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.no_ilike_sql": {"tf": 1}, "sqlglot.generator.Generator.ilike_sql": {"tf": 1}}, "df": 2, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.generator.Generator.ilikeany_sql": {"tf": 1}}, "df": 1}}}}}}}, "s": {"docs": {"sqlglot.generator.Generator.is_sql": {"tf": 1}}, "df": 1, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 1, "d": {"docs": {"sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_ctes": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_derived_tables": {"tf": 1}}, "df": 3, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.generator.Generator.isolatedloadingproperty_sql": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}}}, "g": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.generator.Generator.ignorenulls_sql": {"tf": 1}}, "df": 1}}}}}}}}}}, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.lineage.LineageHTML.__init__": {"tf": 1}}, "df": 1}}}}}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.dataframe.sql.DataFrame.withColumn": {"tf": 1}, "sqlglot.errors.ParseError.new": {"tf": 1}, "sqlglot.expressions.column": {"tf": 1}, "sqlglot.tokens.Token.__init__": {"tf": 1}}, "df": 4, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.parse_one": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.replace": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.parse_into": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1}, "sqlglot.helper.find_new_name": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 1}}, "df": 6}}}}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.generator.Generator.collate_sql": {"tf": 1}}, "df": 1}}}}, "s": {"docs": {"sqlglot.dataframe.sql.DataFrame.select": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.groupBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.drop": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.repartition": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.__init__": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.mean": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.avg": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.max": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.min": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.sum": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.pivot": {"tf": 1}, "sqlglot.dataframe.sql.Column.isin": {"tf": 1}, "sqlglot.dataframe.sql.Window.partitionBy": {"tf": 1}, "sqlglot.dataframe.sql.Window.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.partitionBy": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.orderBy": {"tf": 1}}, "df": 18}, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dataframe.sql.DataFrame.where": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.filter": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.join": {"tf": 2}, "sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.withColumn": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.drop": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.GroupedData.__init__": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.GroupedData.agg": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.ensure_cols": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.invoke_anonymous_function": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Column.invoke_expression_over_column": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Column.binary_op": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.inverse_binary_op": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.unary_op": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.ensure_literal": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.copy": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.set_table_name": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.alias": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.asc": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.desc": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.asc_nulls_first": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.asc_nulls_last": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.desc_nulls_first": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.desc_nulls_last": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.when": {"tf": 2}, "sqlglot.dataframe.sql.Column.otherwise": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.isNull": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.isNotNull": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.startswith": {"tf": 2}, "sqlglot.dataframe.sql.Column.endswith": {"tf": 2}, "sqlglot.dataframe.sql.Column.rlike": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.substr": {"tf": 2.449489742783178}, "sqlglot.dataframe.sql.Column.between": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.over": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Generator.column_sql": {"tf": 1}, "sqlglot.executor.table.Table.__init__": {"tf": 1}, "sqlglot.executor.table.RowReader.__init__": {"tf": 1}, "sqlglot.expressions.to_column": {"tf": 1.4142135623730951}, "sqlglot.expressions.column": {"tf": 1}, "sqlglot.generator.Generator.__init__": {"tf": 1}, "sqlglot.generator.Generator.column_sql": {"tf": 1}, "sqlglot.lineage.lineage": {"tf": 1.4142135623730951}, "sqlglot.optimizer.qualify_columns.Resolver.get_table": {"tf": 1}, "sqlglot.optimizer.scope.Scope.__init__": {"tf": 1}, "sqlglot.parser.Parser.__init__": {"tf": 1}, "sqlglot.schema.Schema.add_table": {"tf": 1}, "sqlglot.schema.Schema.get_column_type": {"tf": 1.4142135623730951}, "sqlglot.schema.MappingSchema.add_table": {"tf": 1}, "sqlglot.schema.MappingSchema.get_column_type": {"tf": 1.4142135623730951}}, "df": 50, "s": {"docs": {"sqlglot.executor.context.Context.add_columns": {"tf": 1}, "sqlglot.executor.table.Table.__init__": {"tf": 1}, "sqlglot.executor.table.Table.add_columns": {"tf": 1}, "sqlglot.executor.table.RowReader.__init__": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1}, "sqlglot.lineage.lineage": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1.4142135623730951}, "sqlglot.optimizer.unnest_subqueries.decorrelate": {"tf": 1}}, "df": 8}, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.generator.Generator.columnposition_sql": {"tf": 1}}, "df": 1}}}}}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "f": {"docs": {"sqlglot.generator.Generator.columndef_sql": {"tf": 1}}, "df": 1}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.generator.Generator.columnconstraint_sql": {"tf": 1}}, "df": 1}}}}}}}}}}}}}, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.DataFrame.withColumn": {"tf": 1}}, "df": 1}}}}}, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dataframe.sql.DataFrame.__init__": {"tf": 1}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.errors.ParseError.new": {"tf": 1.4142135623730951}, "sqlglot.executor.context.Context.table_iter": {"tf": 1.4142135623730951}, "sqlglot.executor.python.PythonExecutor.scan": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.join": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.nested_loop_join": {"tf": 1.4142135623730951}, "sqlglot.executor.python.PythonExecutor.hash_join": {"tf": 1.4142135623730951}, "sqlglot.executor.python.PythonExecutor.aggregate": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.sort": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.set_operation": {"tf": 1}, "sqlglot.parser.Parser.__init__": {"tf": 1}}, "df": 10}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dataframe.sql.Column.when": {"tf": 1}, "sqlglot.executor.context.Context.filter": {"tf": 1}, "sqlglot.expressions.condition": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown": {"tf": 1}, "sqlglot.optimizer.simplify.boolean_literal": {"tf": 1}}, "df": 5}}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.generator.Generator.constraint_sql": {"tf": 1}}, "df": 1}}}}}}}, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.generator.Generator.concat_sql": {"tf": 1}}, "df": 1}}}, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.generator.Generator.connector_sql": {"tf": 1}}, "df": 1}}}}}}}, "p": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dataframe.sql.Column.set_table_name": {"tf": 1}, "sqlglot.expressions.Expression.transform": {"tf": 1}, "sqlglot.expressions.Delete.delete": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Delete.returning": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Join.using": {"tf": 1}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 1}, "sqlglot.expressions.Subqueryable.limit": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1}, "sqlglot.expressions.Union.limit": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.expressions.Select.limit": {"tf": 1}, "sqlglot.expressions.Select.offset": {"tf": 1}, "sqlglot.expressions.Select.select": {"tf": 1}, "sqlglot.expressions.Select.lateral": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1}, "sqlglot.expressions.Select.where": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1}, "sqlglot.expressions.Select.window": {"tf": 1}, "sqlglot.expressions.Select.qualify": {"tf": 1}, "sqlglot.expressions.Select.distinct": {"tf": 1}, "sqlglot.expressions.Select.ctas": {"tf": 1}, "sqlglot.expressions.Select.lock": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1}, "sqlglot.expressions.expand": {"tf": 1}}, "df": 31}}, "m": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.generator.Generator.pad_comment": {"tf": 1}, "sqlglot.generator.Generator.sql": {"tf": 1}, "sqlglot.generator.Generator.comment_sql": {"tf": 1}}, "df": 3, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.dialect.no_comment_column_constraint_sql": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}, "s": {"docs": {"sqlglot.generator.Generator.__init__": {"tf": 1}, "sqlglot.generator.Generator.maybe_comment": {"tf": 1}, "sqlglot.parser.Parser.expression": {"tf": 1}, "sqlglot.tokens.Token.__init__": {"tf": 1}}, "df": 4}}}}, "a": {"docs": {"sqlglot.generator.Generator.__init__": {"tf": 1}}, "df": 1, "n": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.generator.Generator.command_sql": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.generator.Generator.commit_sql": {"tf": 1}}, "df": 1}}}, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.generator.Generator.compresscolumnconstraint_sql": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.optimizer.pushdown_predicates.pushdown": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_cnf": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_dnf": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.nodes_for_predicate": {"tf": 1}}, "df": 4, "i": {"docs": {}, "df": 0, "f": {"docs": {"sqlglot.dialects.dialect.count_if_to_sum": {"tf": 1}}, "df": 1}}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.executor.context.Context.eval": {"tf": 1}}, "df": 1, "s": {"docs": {"sqlglot.executor.context.Context.eval_tuple": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}, "sqlglot.optimizer.annotate_types.TypeAnnotator.__init__": {"tf": 1}}, "df": 2}}}}}}, "l": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dataframe.sql.Column.ensure_col": {"tf": 1}, "sqlglot.dataframe.sql.Column.ensure_cols": {"tf": 1}, "sqlglot.dataframe.sql.Column.invoke_anonymous_function": {"tf": 1}, "sqlglot.dataframe.sql.Column.invoke_expression_over_column": {"tf": 1}, "sqlglot.dataframe.sql.Column.ensure_literal": {"tf": 1}, "sqlglot.dataframe.sql.Window.partitionBy": {"tf": 1}, "sqlglot.dataframe.sql.Window.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.Window.rowsBetween": {"tf": 1}, "sqlglot.dataframe.sql.Window.rangeBetween": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.get_or_raise": {"tf": 1}, "sqlglot.dialects.dialect.Dialect.format_time": {"tf": 1}, "sqlglot.errors.ParseError.new": {"tf": 1}, "sqlglot.expressions.Expression.load": {"tf": 1}, "sqlglot.expressions.Literal.number": {"tf": 1}, "sqlglot.expressions.Literal.string": {"tf": 1}, "sqlglot.expressions.Properties.from_dict": {"tf": 1}, "sqlglot.expressions.DataType.build": {"tf": 1}, "sqlglot.expressions.Func.from_arg_list": {"tf": 1}, "sqlglot.expressions.Func.sql_names": {"tf": 1}, "sqlglot.expressions.Func.sql_name": {"tf": 1}, "sqlglot.expressions.Func.default_parser_mappings": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.Join.from_joins": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}, "sqlglot.schema.MappingSchema.from_mapping_schema": {"tf": 1}, "sqlglot.tokens.Token.number": {"tf": 1}, "sqlglot.tokens.Token.string": {"tf": 1}, "sqlglot.tokens.Token.identifier": {"tf": 1}, "sqlglot.tokens.Token.var": {"tf": 1}}, "df": 30}, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dialects.dialect.format_time_lambda": {"tf": 1}, "sqlglot.dialects.dialect.parse_date_delta": {"tf": 1}, "sqlglot.dialects.dialect.parse_date_delta_with_interval": {"tf": 1}, "sqlglot.helper.open_file": {"tf": 1}, "sqlglot.parser.Parser.expression": {"tf": 1}}, "df": 5, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.helper.subclasses": {"tf": 1}}, "df": 1}}}}}, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.generator.Generator.cluster_sql": {"tf": 1}}, "df": 1}}}}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.Column.invoke_expression_over_column": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.binary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.inverse_binary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.unary_op": {"tf": 1}, "sqlglot.dialects.dialect.rename_func": {"tf": 1}, "sqlglot.dialects.dialect.format_time_lambda": {"tf": 1}, "sqlglot.dialects.dialect.parse_date_delta": {"tf": 1}, "sqlglot.dialects.dialect.parse_date_delta_with_interval": {"tf": 1}, "sqlglot.dialects.dialect.ts_or_ds_to_date_sql": {"tf": 1}, "sqlglot.generator.Generator.no_identify": {"tf": 1}, "sqlglot.helper.while_changing": {"tf": 1}, "sqlglot.helper.count_params": {"tf": 1}, "sqlglot.lineage.lineage": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.parser.binary_range_parser": {"tf": 1}, "sqlglot.transforms.preprocess": {"tf": 1.4142135623730951}}, "df": 16}}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.spark.Spark.Generator.cast_sql": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator.cast_sql": {"tf": 1}, "sqlglot.expressions.cast": {"tf": 1}, "sqlglot.generator.Generator.cast_sql": {"tf": 1}, "sqlglot.optimizer.simplify.extract_date": {"tf": 1}}, "df": 5}, "e": {"docs": {"sqlglot.generator.Generator.case_sql": {"tf": 1}}, "df": 1}}, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.expressions.column": {"tf": 1}, "sqlglot.expressions.table_": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"tf": 1}}, "df": 4}}}}}, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.generator.Generator.generate": {"tf": 1}, "sqlglot.generator.Generator.cache_sql": {"tf": 1}, "sqlglot.optimizer.normalize.distributive_law": {"tf": 1}, "sqlglot.optimizer.simplify.uniq_sort": {"tf": 1}}, "df": 4}}}, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 1}}}}}}}}}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.clickhouse.ClickHouse.Generator.cte_sql": {"tf": 1}, "sqlglot.generator.Generator.cte_sql": {"tf": 1}}, "df": 2, "s": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.Join.from_joins": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}}, "df": 5}}}, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.no_paren_current_date_sql": {"tf": 1}, "sqlglot.generator.Generator.currentdate_sql": {"tf": 1}}, "df": 2}}}}}}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1}, "sqlglot.expressions.Select.ctas": {"tf": 1}, "sqlglot.generator.Generator.create_sql": {"tf": 1}}, "df": 3}}}}}, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.generator.Generator.characterset_sql": {"tf": 1}}, "df": 1}}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.optimizer.scope.Scope.branch": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.generator.Generator.check_sql": {"tf": 1}}, "df": 1, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.generator.Generator.checksumproperty_sql": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}, "s": {"docs": {}, "df": 0, "v": {"docs": {"sqlglot.helper.csv_reader": {"tf": 1}}, "df": 1}}}, "w": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.transpile": {"tf": 1}}, "df": 1}}}, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.generator.Generator.properties": {"tf": 1}}, "df": 1}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {"sqlglot.dataframe.sql.Column.over": {"tf": 1}, "sqlglot.dataframe.sql.Window.partitionBy": {"tf": 1}, "sqlglot.dataframe.sql.Window.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.Window.rowsBetween": {"tf": 1}, "sqlglot.dataframe.sql.Window.rangeBetween": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.__init__": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.partitionBy": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.rowsBetween": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.rangeBetween": {"tf": 1}, "sqlglot.generator.Generator.window_sql": {"tf": 1}, "sqlglot.generator.Generator.partition_by_sql": {"tf": 1}}, "df": 12, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot.dataframe.sql.Window.partitionBy": {"tf": 1}, "sqlglot.dataframe.sql.Window.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.Window.rowsBetween": {"tf": 1}, "sqlglot.dataframe.sql.Window.rangeBetween": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.partitionBy": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.rowsBetween": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.rangeBetween": {"tf": 1}, "sqlglot.generator.Generator.window_spec_sql": {"tf": 1}}, "df": 9}}}}}}}}, "t": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.dialects.dialect.no_recursive_cte_sql": {"tf": 1}, "sqlglot.generator.Generator.with_sql": {"tf": 1}}, "df": 2, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.generator.Generator.withdataproperty_sql": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.generator.Generator.withingroup_sql": {"tf": 1}}, "df": 1}}}}}}}}}, "d": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.generator.Generator.__init__": {"tf": 1}}, "df": 1}}}}, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.update": {"tf": 1}, "sqlglot.expressions.delete": {"tf": 1}, "sqlglot.generator.Generator.where_sql": {"tf": 1}}, "df": 3}}, "n": {"docs": {"sqlglot.generator.Generator.when_sql": {"tf": 1}}, "df": 1}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.generator.Generator.__init__": {"tf": 1.4142135623730951}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.helper.split_num_words": {"tf": 1}}, "df": 1}}}}}, "b": {"docs": {"sqlglot.optimizer.simplify.is_complement": {"tf": 1}, "sqlglot.optimizer.simplify.eval_boolean": {"tf": 1}}, "df": 2, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.transpile": {"tf": 1}, "sqlglot.dataframe.sql.SparkSession.createDataFrame": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.where": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.filter": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.unionByName": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.replace": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrameNaFunctions.fill": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.replace": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrameWriter.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.insertInto": {"tf": 1}, "sqlglot.dialects.dialect.format_time_lambda": {"tf": 1}, "sqlglot.expressions.Delete.delete": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1.4142135623730951}, "sqlglot.expressions.Delete.returning": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.lock": {"tf": 1.4142135623730951}, "sqlglot.expressions.DataType.is_type": {"tf": 1}, "sqlglot.expressions.Cast.is_type": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1.4142135623730951}, "sqlglot.expressions.column": {"tf": 1}, "sqlglot.expressions.expand": {"tf": 1}, "sqlglot.generator.Generator.indent": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.sql": {"tf": 1}, "sqlglot.generator.Generator.properties": {"tf": 1}, "sqlglot.generator.Generator.order_sql": {"tf": 1}, "sqlglot.generator.Generator.expressions": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.op_expressions": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1}, "sqlglot.helper.is_iterable": {"tf": 1}, "sqlglot.helper.should_identify": {"tf": 1.4142135623730951}, "sqlglot.lineage.LineageHTML.__init__": {"tf": 1}, "sqlglot.optimizer.normalize.normalize": {"tf": 1}, "sqlglot.optimizer.simplify.is_false": {"tf": 1}, "sqlglot.optimizer.simplify.is_null": {"tf": 1}, "sqlglot.parser.Parser.__init__": {"tf": 1.4142135623730951}, "sqlglot.planner.SetOperation.__init__": {"tf": 1}, "sqlglot.schema.Schema.column_names": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema.find": {"tf": 1}, "sqlglot.schema.MappingSchema.column_names": {"tf": 1}, "sqlglot.serde.dump": {"tf": 1.4142135623730951}, "sqlglot.serde.load": {"tf": 1.4142135623730951}}, "df": 43, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.generator.Generator.boolean_sql": {"tf": 1}}, "df": 1}}}}}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.dataframe.sql.DataFrame.__init__": {"tf": 1}}, "df": 1}}}, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.generator.Generator.bracket_sql": {"tf": 1}}, "df": 1}}}}}}, "y": {"docs": {"sqlglot.dataframe.sql.GroupedData.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.__init__": {"tf": 1}}, "df": 2, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.generator.Generator.bytestring_sql": {"tf": 1}}, "df": 1}}}}}}}}}, "f": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.Expression.find": {"tf": 1}, "sqlglot.expressions.Expression.find_all": {"tf": 1}, "sqlglot.expressions.Expression.walk": {"tf": 1}, "sqlglot.optimizer.scope.Scope.walk": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1}}, "df": 7}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.generator.Generator.bitstring_sql": {"tf": 1}}, "df": 1}}}}}}, "w": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.generator.Generator.bitwiseand_sql": {"tf": 1}}, "df": 1}}}, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.generator.Generator.bitwiseleftshift_sql": {"tf": 1}}, "df": 1}}}}}}}}}, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.generator.Generator.bitwisenot_sql": {"tf": 1}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.generator.Generator.bitwiseor_sql": {"tf": 1}}, "df": 1}}, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.generator.Generator.bitwiserightshift_sql": {"tf": 1}}, "df": 1}}}}}}}}}}, "x": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.generator.Generator.bitwisexor_sql": {"tf": 1}}, "df": 1}}}}}}}}, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.generator.Generator.binary": {"tf": 1}}, "df": 1}}}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.generator.Generator.blockcompressionproperty_sql": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.generator.Generator.between_sql": {"tf": 1}}, "df": 1}}}}}}, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.helper.find_new_name": {"tf": 1}}, "df": 1}}}}, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.dataframe.sql.SparkSession.createDataFrame": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.__init__": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.replace": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.repartition": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.__init__": {"tf": 1}, "sqlglot.dataframe.sql.Column.ensure_col": {"tf": 1}, "sqlglot.dataframe.sql.Column.ensure_cols": {"tf": 1}, "sqlglot.dataframe.sql.Column.invoke_anonymous_function": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.invoke_expression_over_column": {"tf": 1}, "sqlglot.dataframe.sql.Column.binary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.inverse_binary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.isin": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.between": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.over": {"tf": 1}, "sqlglot.dataframe.sql.Window.partitionBy": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Window.orderBy": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.WindowSpec.partitionBy": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.WindowSpec.orderBy": {"tf": 1.4142135623730951}}, "df": 19}}}}}}}, "p": {"docs": {"sqlglot.dialects.dialect.var_map_sql": {"tf": 1.7320508075688772}}, "df": 1, "p": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.dialects.dialect.parse_date_delta": {"tf": 1}, "sqlglot.expressions.replace_tables": {"tf": 1}, "sqlglot.generator.Generator.__init__": {"tf": 1}, "sqlglot.schema.Schema.add_table": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema.__init__": {"tf": 1}, "sqlglot.schema.MappingSchema.from_mapping_schema": {"tf": 1}, "sqlglot.schema.MappingSchema.add_table": {"tf": 1}, "sqlglot.schema.ensure_column_mapping": {"tf": 1}, "sqlglot.time.format_time": {"tf": 1}}, "df": 9, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.schema.MappingSchema.from_mapping_schema": {"tf": 1.4142135623730951}, "sqlglot.schema.MappingSchema.copy": {"tf": 1}}, "df": 2}}}}}}}}}}}, "x": {"docs": {"sqlglot.dialects.dialect.max_or_greatest": {"tf": 1}, "sqlglot.generator.Generator.__init__": {"tf": 1.4142135623730951}, "sqlglot.optimizer.normalize.normalize": {"tf": 1}, "sqlglot.optimizer.normalize.distributive_law": {"tf": 1}, "sqlglot.parser.Parser.__init__": {"tf": 1}}, "df": 5, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {"sqlglot.errors.concat_messages": {"tf": 1}}, "df": 1}}}}}, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff.diff": {"tf": 1}, "sqlglot.diff.ChangeDistiller.diff": {"tf": 1}}, "df": 2}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.generator.Generator.matchrecognize_sql": {"tf": 1}, "sqlglot.generator.Generator.partition_by_sql": {"tf": 1}}, "df": 2}}}}}}}}}, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.generator.Generator.matchagainst_sql": {"tf": 1}}, "df": 1}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dataframe.sql.DataFrame.persist": {"tf": 1}}, "df": 1}}}}, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.errors.ParseError.__init__": {"tf": 1}, "sqlglot.errors.ParseError.new": {"tf": 1}, "sqlglot.generator.Generator.unsupported": {"tf": 1}, "sqlglot.parser.Parser.__init__": {"tf": 1}, "sqlglot.parser.Parser.raise_error": {"tf": 1}}, "df": 5}}}}}, "r": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.generator.Generator.merge_sql": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 2, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.generator.Generator.mergeblockratioproperty_sql": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}}}, "o": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.dialects.teradata.Teradata.Generator.mod_sql": {"tf": 1}, "sqlglot.generator.Generator.mod_sql": {"tf": 1}}, "df": 2, "e": {"docs": {"sqlglot.dataframe.sql.DataFrameWriter.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.saveAsTable": {"tf": 1}}, "df": 2}, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.helper.subclasses": {"tf": 1}}, "df": 1}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff.diff": {"tf": 1}, "sqlglot.diff.ChangeDistiller.diff": {"tf": 1}}, "df": 2}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dialects.dialect.min_or_least": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1}}, "df": 2}, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.schema.AbstractMappingSchema.find": {"tf": 1}}, "df": 1}}}}}}, "u": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.generator.Generator.mul_sql": {"tf": 1}}, "df": 1, "t": {"docs": {}, "df": 0, "i": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 1}}}}}, "g": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe.sql.SparkSession.createDataFrame": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.__init__": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.replace": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.repartition": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.__init__": {"tf": 1}, "sqlglot.dataframe.sql.Column.ensure_col": {"tf": 1}, "sqlglot.dataframe.sql.Column.ensure_cols": {"tf": 1}, "sqlglot.dataframe.sql.Column.invoke_anonymous_function": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.invoke_expression_over_column": {"tf": 1}, "sqlglot.dataframe.sql.Column.binary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.inverse_binary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.isin": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.between": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.over": {"tf": 1}, "sqlglot.dataframe.sql.Window.partitionBy": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Window.orderBy": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.WindowSpec.partitionBy": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.WindowSpec.orderBy": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.__init__": {"tf": 1}, "sqlglot.generator.Generator.lambda_sql": {"tf": 1}, "sqlglot.generator.Generator.gt_sql": {"tf": 1}, "sqlglot.helper.open_file": {"tf": 1}, "sqlglot.lineage.Node.__init__": {"tf": 1}, "sqlglot.lineage.lineage": {"tf": 1.7320508075688772}, "sqlglot.optimizer.optimizer.optimize": {"tf": 4.358898943540674}, "sqlglot.optimizer.scope.Scope.__init__": {"tf": 1}}, "df": 27, "e": {"docs": {"sqlglot.generator.Generator.gte_sql": {"tf": 1}}, "df": 1}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.dataframe.sql.DataFrame.groupBy": {"tf": 1}, "sqlglot.dataframe.sql.GroupedData.__init__": {"tf": 1}, "sqlglot.generator.Generator.group_sql": {"tf": 1}}, "df": 3, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.dataframe.sql.DataFrame.groupBy": {"tf": 1}}, "df": 1}}}}}}}}}}, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dialects.dialect.Dialect.generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.rename_func": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.approx_count_distinct_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.if_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.arrow_json_extract_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.arrow_json_extract_scalar_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.inline_array_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.no_ilike_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.no_paren_current_date_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.no_recursive_cte_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.no_safe_divide_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.no_tablesample_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.no_pivot_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.no_trycast_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.no_properties_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.no_comment_column_constraint_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.str_position_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.struct_extract_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.var_map_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.timestamptrunc_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.strposition_to_locate_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.timestrtotime_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.datestrtodate_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.min_or_least": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.max_or_greatest": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.count_if_to_sum": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.trim_sql": {"tf": 1.4142135623730951}, "sqlglot.transforms.preprocess": {"tf": 1.4142135623730951}}, "df": 29}}, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.snowflake.Snowflake.Generator.generatedasidentitycolumnconstraint_sql": {"tf": 1}, "sqlglot.generator.Generator.generatedasidentitycolumnconstraint_sql": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "b": {"docs": {"sqlglot.generator.Generator.glob_sql": {"tf": 1}}, "df": 1}}}}, "f": {"docs": {"sqlglot.diff.ChangeDistiller.__init__": {"tf": 1}}, "df": 1, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe.sql.SparkSession.createDataFrame": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.replace": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrameNaFunctions.fill": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.replace": {"tf": 1.4142135623730951}, "sqlglot.diff.ChangeDistiller.__init__": {"tf": 1.4142135623730951}, "sqlglot.serde.dump": {"tf": 1.4142135623730951}, "sqlglot.serde.load": {"tf": 1.4142135623730951}}, "df": 7}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.generator.Generator.order_sql": {"tf": 1}, "sqlglot.generator.Generator.expressions": {"tf": 1}, "sqlglot.generator.Generator.op_expressions": {"tf": 1}}, "df": 3}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.SparkSession.createDataFrame": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.unionByName": {"tf": 1}, "sqlglot.dataframe.sql.Column.set_table_name": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.__init__": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1}, "sqlglot.generator.Generator.__init__": {"tf": 2.23606797749979}, "sqlglot.generator.Generator.indent": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.order_sql": {"tf": 1}, "sqlglot.generator.Generator.expressions": {"tf": 1}, "sqlglot.generator.Generator.op_expressions": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_ctes": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_derived_tables": {"tf": 1}, "sqlglot.optimizer.normalize.normalize": {"tf": 1}, "sqlglot.optimizer.normalize.normalized": {"tf": 1}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.get_source_columns": {"tf": 1}, "sqlglot.parser.Parser.__init__": {"tf": 1.4142135623730951}, "sqlglot.planner.SetOperation.__init__": {"tf": 1}, "sqlglot.schema.Schema.column_names": {"tf": 1}, "sqlglot.schema.MappingSchema.column_names": {"tf": 1}}, "df": 22}}, "l": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.generator.Generator.fallbackproperty_sql": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.lineage.Node.__init__": {"tf": 1}}, "df": 1}}}}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.Expression.transform": {"tf": 1}, "sqlglot.expressions.replace_children": {"tf": 1}}, "df": 2, "c": {"docs": {"sqlglot.dataframe.sql.Column.invoke_anonymous_function": {"tf": 1}, "sqlglot.dialects.dialect.var_map_sql": {"tf": 1}, "sqlglot.executor.env.filter_nulls": {"tf": 1}, "sqlglot.expressions.func": {"tf": 1}, "sqlglot.generator.Generator.no_identify": {"tf": 1}, "sqlglot.generator.Generator.function_fallback_sql": {"tf": 1}, "sqlglot.helper.while_changing": {"tf": 1}}, "df": 7, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.helper.count_params": {"tf": 1}, "sqlglot.lineage.lineage": {"tf": 1.7320508075688772}, "sqlglot.optimizer.optimizer.optimize": {"tf": 4.358898943540674}}, "df": 3, "s": {"docs": {"sqlglot.generator.Generator.__init__": {"tf": 1}}, "df": 1}}}}}}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe.sql.DataFrameWriter.saveAsTable": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.generator.Generator.foreignkey_sql": {"tf": 1}, "sqlglot.generator.Generator.primarykey_sql": {"tf": 1}}, "df": 2}}}}}}}, "w": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "f": {"docs": {"sqlglot.serde.dump": {"tf": 1}, "sqlglot.serde.load": {"tf": 1}}, "df": 2}}}}}}}}}, "i": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.executor.env.ordered": {"tf": 1}, "sqlglot.generator.Generator.indent": {"tf": 1}}, "df": 2}}}, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.generator.Generator.filter_sql": {"tf": 1}}, "df": 1}}}, "e": {"docs": {"sqlglot.helper.open_file": {"tf": 1}}, "df": 1}, "l": {"docs": {"sqlglot.helper.split_num_words": {"tf": 1}}, "df": 1}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {"sqlglot.expressions.update": {"tf": 1}, "sqlglot.generator.Generator.from_sql": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1}}, "df": 3}}, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.generator.Generator.freespaceproperty_sql": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.generator.Generator.fetch_sql": {"tf": 1}}, "df": 1}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.dataframe.sql.SparkSession.createDataFrame": {"tf": 1}}, "df": 1}}}}}}}}}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.replace": {"tf": 1}, "sqlglot.dataframe.sql.Column.ensure_col": {"tf": 1}, "sqlglot.dataframe.sql.Column.ensure_literal": {"tf": 1}, "sqlglot.dataframe.sql.Column.when": {"tf": 1}, "sqlglot.dataframe.sql.Column.otherwise": {"tf": 1}, "sqlglot.dataframe.sql.Column.startswith": {"tf": 1}, "sqlglot.dataframe.sql.Column.endswith": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.fill": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.replace": {"tf": 1}, "sqlglot.expressions.Expression.append": {"tf": 1}, "sqlglot.expressions.Expression.set": {"tf": 1}, "sqlglot.expressions.convert": {"tf": 1}, "sqlglot.helper.ensure_list": {"tf": 1}, "sqlglot.helper.ensure_collection": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1}, "sqlglot.helper.is_iterable": {"tf": 1}}, "df": 17, "s": {"docs": {"sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.values_sql": {"tf": 1}, "sqlglot.helper.flatten": {"tf": 1}}, "df": 5}}}, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 1}}}}}}, "r": {"docs": {"sqlglot.expressions.var": {"tf": 1}, "sqlglot.generator.Generator.var_sql": {"tf": 1}, "sqlglot.tokens.Token.var": {"tf": 1}}, "df": 3, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.dialects.dialect.var_map_sql": {"tf": 1}}, "df": 1}}}}}, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.qualify_columns.Resolver.get_source_columns": {"tf": 1}, "sqlglot.schema.Schema.column_names": {"tf": 1}, "sqlglot.schema.MappingSchema.__init__": {"tf": 1}, "sqlglot.schema.MappingSchema.column_names": {"tf": 1}}, "df": 4}}}}}}}, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.dataframe.sql.DataFrame.__init__": {"tf": 1}}, "df": 1}}}}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.generator.Generator.parameter_sql": {"tf": 1}}, "df": 1, "s": {"docs": {"sqlglot.dataframe.sql.DataFrame.hint": {"tf": 1}}, "df": 1}}}}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dialects.dialect.Dialect.parser": {"tf": 1.4142135623730951}, "sqlglot.parser.binary_range_parser": {"tf": 1.4142135623730951}}, "df": 2}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.errors.ParseError.new": {"tf": 1}, "sqlglot.errors.merge_errors": {"tf": 1}}, "df": 2}}}}}}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.generator.Generator.partition_sql": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dialects.teradata.Teradata.Generator.partitionedbyproperty_sql": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.paren": {"tf": 1}, "sqlglot.generator.Generator.paren_sql": {"tf": 1}}, "df": 2, "t": {"docs": {"sqlglot.expressions.Expression.dfs": {"tf": 1}, "sqlglot.optimizer.scope.Scope.__init__": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.unnest": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.decorrelate": {"tf": 1}}, "df": 4}}}}, "t": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.expressions.to_table": {"tf": 1}, "sqlglot.expressions.to_column": {"tf": 1}}, "df": 2}}, "d": {"docs": {"sqlglot.generator.Generator.__init__": {"tf": 1}, "sqlglot.generator.Generator.indent": {"tf": 1}}, "df": 2}}, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.dialect.no_pivot_sql": {"tf": 1}, "sqlglot.generator.Generator.pivot_sql": {"tf": 1}}, "df": 2}}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dialects.dialect.no_properties_sql": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator.with_properties": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator.with_properties": {"tf": 1.4142135623730951}, "sqlglot.expressions.Properties.from_dict": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.ctas": {"tf": 1}, "sqlglot.expressions.update": {"tf": 1}, "sqlglot.generator.Generator.properties_sql": {"tf": 1}, "sqlglot.generator.Generator.root_properties": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.properties": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.with_properties": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.locate_properties": {"tf": 1.7320508075688772}}, "df": 11}}}, "y": {"docs": {"sqlglot.generator.Generator.locate_properties": {"tf": 1}, "sqlglot.generator.Generator.property_sql": {"tf": 1}, "sqlglot.generator.Generator.naked_property": {"tf": 1}}, "df": 3}}}}}, "j": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 1}}}}}}}}}, "e": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "x": {"docs": {"sqlglot.dialects.duckdb.DuckDB.Generator.tablesample_sql": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1}, "sqlglot.generator.Generator.properties": {"tf": 1}, "sqlglot.generator.Generator.tablesample_sql": {"tf": 1}, "sqlglot.generator.Generator.expressions": {"tf": 1}}, "df": 5}}}, "t": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.generator.Generator.__init__": {"tf": 1}}, "df": 1}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.pushdown_predicates.nodes_for_predicate": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.replace_aliases": {"tf": 1}}, "df": 2, "s": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_cnf": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_dnf": {"tf": 1}}, "df": 3}}}}}}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Expression.walk": {"tf": 1}, "sqlglot.expressions.Expression.dfs": {"tf": 1}, "sqlglot.expressions.Expression.bfs": {"tf": 1}}, "df": 3}}}, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.generator.Generator.primarykeycolumnconstraint_sql": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}}}}}, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.generator.Generator.pragma_sql": {"tf": 1}}, "df": 1}}}}}, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.executor.env.str_position": {"tf": 1}}, "df": 1}}}}}, "t": {"docs": {"sqlglot.generator.Generator.__init__": {"tf": 1}, "sqlglot.parser.Parser.__init__": {"tf": 1}}, "df": 2}}}, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.executor.python.PythonExecutor.execute": {"tf": 1}}, "df": 1, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.planner.Step.from_expression": {"tf": 1.4142135623730951}, "sqlglot.planner.Step.add_dependency": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1.4142135623730951}, "sqlglot.planner.Join.from_joins": {"tf": 1.4142135623730951}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1.4142135623730951}}, "df": 5}}}}, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.generator.Generator.placeholder_sql": {"tf": 1}}, "df": 1}}}}}}}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.generator.Generator.pseudotype_sql": {"tf": 1}}, "df": 1}}}}}}}}}, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.generator.Generator.hint_sql": {"tf": 1}}, "df": 1, "s": {"docs": {"sqlglot.dataframe.sql.DataFrame.__init__": {"tf": 1}}, "df": 1}}}, "g": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.errors.ParseError.new": {"tf": 1}}, "df": 1}}}}}}}}, "o": {"docs": {}, "df": 0, "w": {"docs": {"sqlglot.dataframe.sql.DataFrame.join": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.dropna": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.drop": {"tf": 1}}, "df": 3}}, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.generator.Generator.hexstring_sql": {"tf": 1}}, "df": 1}}}}}}}}, "a": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.generator.Generator.having_sql": {"tf": 1}}, "df": 1}}}}, "s": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.trie.new_trie": {"tf": 1}, "sqlglot.trie.in_trie": {"tf": 1}}, "df": 2}}}}}}}}, "k": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.generator.Generator.kwarg_sql": {"tf": 1}}, "df": 1, "s": {"docs": {"sqlglot.dataframe.sql.DataFrame.__init__": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sql": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.copy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.select": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.alias": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.where": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.filter": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.groupBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.agg": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.join": {"tf": 1}, "sqlglot.dataframe.sql.Column.invoke_expression_over_column": {"tf": 1}, "sqlglot.dataframe.sql.Column.binary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.inverse_binary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.unary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.sql": {"tf": 1}, "sqlglot.dataframe.sql.WindowSpec.sql": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.copy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameWriter.sql": {"tf": 1}, "sqlglot.diff.diff": {"tf": 1}, "sqlglot.expressions.Expression.transform": {"tf": 1}, "sqlglot.expressions.DataType.build": {"tf": 1}, "sqlglot.expressions.to_table": {"tf": 1}, "sqlglot.expressions.to_column": {"tf": 1}, "sqlglot.expressions.replace_children": {"tf": 1}, "sqlglot.expressions.replace_placeholders": {"tf": 1}, "sqlglot.expressions.func": {"tf": 1}, "sqlglot.generator.Generator.no_identify": {"tf": 1}, "sqlglot.helper.object_to_dict": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.optimizer.scope.Scope.branch": {"tf": 1}, "sqlglot.parser.Parser.expression": {"tf": 1}, "sqlglot.schema.MappingSchema.copy": {"tf": 1}}, "df": 32}}}}}, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dataframe.sql.Column.binary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.inverse_binary_op": {"tf": 1}, "sqlglot.dataframe.sql.Column.unary_op": {"tf": 1}}, "df": 3}}}}, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.diff.diff": {"tf": 1}, "sqlglot.diff.ChangeDistiller.diff": {"tf": 1}}, "df": 2}}, "y": {"docs": {"sqlglot.executor.context.Context.sort": {"tf": 1}, "sqlglot.expressions.Expression.text": {"tf": 1}, "sqlglot.expressions.Expression.append": {"tf": 1}, "sqlglot.expressions.Expression.set": {"tf": 1}, "sqlglot.expressions.Expression.dfs": {"tf": 1}, "sqlglot.generator.Generator.sql": {"tf": 1}, "sqlglot.generator.Generator.expressions": {"tf": 1}, "sqlglot.trie.in_trie": {"tf": 1}}, "df": 8, "s": {"docs": {"sqlglot.schema.flatten_schema": {"tf": 1}}, "df": 1}, "w": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.trie.new_trie": {"tf": 1}}, "df": 1}}}}}}}}, "a": {"docs": {"sqlglot.optimizer.simplify.is_complement": {"tf": 1}, "sqlglot.optimizer.simplify.is_false": {"tf": 1}, "sqlglot.optimizer.simplify.is_null": {"tf": 1}, "sqlglot.optimizer.simplify.eval_boolean": {"tf": 1}}, "df": 4, "s": {"docs": {"sqlglot.expressions.Subqueryable.with_": {"tf": 1}, "sqlglot.generator.Generator.table_sql": {"tf": 1}, "sqlglot.generator.Generator.subquery_sql": {"tf": 1}}, "df": 3, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1}}, "df": 2}}}}}}}}, "n": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.dropna": {"tf": 1}, "sqlglot.dataframe.sql.Column.when": {"tf": 1}, "sqlglot.dataframe.sql.Column.otherwise": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.drop": {"tf": 1}, "sqlglot.dataframe.sql.DataFrameNaFunctions.fill": {"tf": 1}, "sqlglot.diff.diff": {"tf": 1}, "sqlglot.errors.ParseError.__init__": {"tf": 1}, "sqlglot.errors.concat_messages": {"tf": 1}, "sqlglot.errors.merge_errors": {"tf": 1}, "sqlglot.expressions.Expression.__init__": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1}, "sqlglot.generator.Generator.any_sql": {"tf": 1}, "sqlglot.helper.csv_reader": {"tf": 1}, "sqlglot.helper.object_to_dict": {"tf": 1}, "sqlglot.helper.is_iterable": {"tf": 1}, "sqlglot.helper.flatten": {"tf": 1.7320508075688772}, "sqlglot.lineage.LineageHTML.__init__": {"tf": 1}, "sqlglot.schema.ensure_schema": {"tf": 1}}, "df": 20}, "d": {"docs": {"sqlglot.dataframe.sql.DataFrame.persist": {"tf": 1}, "sqlglot.expressions.and_": {"tf": 1}, "sqlglot.generator.Generator.and_sql": {"tf": 1}}, "df": 3}, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.generator.Generator.anonymous_sql": {"tf": 1}}, "df": 1}}}}}}}, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}, "sqlglot.optimizer.annotate_types.TypeAnnotator.__init__": {"tf": 1}}, "df": 2}}}, "e": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 1}}}}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.generator.Generator.all_sql": {"tf": 1}}, "df": 1, "o": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dataframe.sql.DataFrame.unionByName": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.Subqueryable.subquery": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1}, "sqlglot.expressions.subquery": {"tf": 1}, "sqlglot.expressions.table_": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1}, "sqlglot.generator.Generator.__init__": {"tf": 1}, "sqlglot.generator.Generator.alias_sql": {"tf": 1}, "sqlglot.lineage.Node.__init__": {"tf": 1}, "sqlglot.parser.Parser.__init__": {"tf": 1}}, "df": 11, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.generator.Generator.aliases_sql": {"tf": 1}}, "df": 1}}}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.rename_table": {"tf": 1}, "sqlglot.generator.Generator.altertable_sql": {"tf": 1}}, "df": 2}}}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.generator.Generator.altercolumn_sql": {"tf": 1}}, "df": 1}}}}}}}}}}, "r": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.expressions.Expression.append": {"tf": 1}, "sqlglot.expressions.Expression.set": {"tf": 1}}, "df": 2, "s": {"docs": {"sqlglot.dataframe.sql.Column.ensure_cols": {"tf": 1}, "sqlglot.dataframe.sql.Column.invoke_anonymous_function": {"tf": 1}, "sqlglot.dialects.dialect.date_trunc_to_time": {"tf": 1}, "sqlglot.dialects.dialect.locate_to_strposition": {"tf": 1}, "sqlglot.expressions.Expression.__init__": {"tf": 1}, "sqlglot.expressions.Expression.transform": {"tf": 1}, "sqlglot.expressions.Expression.error_messages": {"tf": 1}, "sqlglot.expressions.TimeUnit.__init__": {"tf": 1}, "sqlglot.expressions.Func.from_arg_list": {"tf": 1}, "sqlglot.expressions.replace_children": {"tf": 1}, "sqlglot.expressions.replace_placeholders": {"tf": 1}, "sqlglot.expressions.func": {"tf": 1}, "sqlglot.generator.Generator.no_identify": {"tf": 1}, "sqlglot.generator.Generator.func": {"tf": 1}, "sqlglot.generator.Generator.format_args": {"tf": 1}, "sqlglot.generator.Generator.text_width": {"tf": 1}, "sqlglot.helper.csv": {"tf": 1}, "sqlglot.parser.parse_var_map": {"tf": 1}, "sqlglot.parser.parse_like": {"tf": 1}, "sqlglot.parser.Parser.validate_expression": {"tf": 1}}, "df": 20}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator.array_sql": {"tf": 1}, "sqlglot.dialects.dialect.inline_array_sql": {"tf": 1}}, "df": 2, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.dialects.hive.Hive.Generator.arrayagg_sql": {"tf": 1}}, "df": 1}}}}}, "o": {"docs": {}, "df": 0, "w": {"docs": {"sqlglot.generator.Generator.lambda_sql": {"tf": 1}}, "df": 1}}}}, "p": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.dialect.approx_count_distinct_sql": {"tf": 1}}, "df": 1}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Join.using": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.expressions.Select.select": {"tf": 1}, "sqlglot.expressions.Select.lateral": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1}, "sqlglot.expressions.Select.where": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1}, "sqlglot.expressions.Select.window": {"tf": 1}, "sqlglot.expressions.Select.qualify": {"tf": 1}}, "df": 17}}}}}, "f": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "j": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.generator.Generator.afterjournalproperty_sql": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}, "t": {"docs": {"sqlglot.lineage.lineage": {"tf": 1.7320508075688772}, "sqlglot.optimizer.optimizer.optimize": {"tf": 4.358898943540674}}, "df": 2, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.generator.Generator.attimezone_sql": {"tf": 1}}, "df": 1}}}}}}}}}, "d": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.generator.Generator.add_sql": {"tf": 1}}, "df": 1, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.generator.Generator.addconstraint_sql": {"tf": 1}}, "df": 1}}}}}}}}}}}}}, "j": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.dialect.arrow_json_extract_sql": {"tf": 1}}, "df": 1, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dialects.dialect.arrow_json_extract_scalar_sql": {"tf": 1}}, "df": 1}}}}}}}}}}}}}, "b": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.dialect.arrow_json_extract_sql": {"tf": 1}}, "df": 1, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dialects.dialect.arrow_json_extract_scalar_sql": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.generator.Generator.jsonkeyvalue_sql": {"tf": 1}}, "df": 1}}}}}}}}, "o": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "j": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.generator.Generator.jsonobject_sql": {"tf": 1}}, "df": 1}}}}}}}}}, "o": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.executor.python.PythonExecutor.nested_loop_join": {"tf": 1.4142135623730951}, "sqlglot.executor.python.PythonExecutor.hash_join": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.join": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.join_sql": {"tf": 1}, "sqlglot.optimizer.eliminate_joins.join_condition": {"tf": 1}, "sqlglot.optimizer.optimize_joins.other_table_names": {"tf": 1}, "sqlglot.planner.Join.from_joins": {"tf": 1}}, "df": 7, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.generator.Generator.joinhint_sql": {"tf": 1}}, "df": 1}}}}, "s": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1.4142135623730951}, "sqlglot.planner.Join.from_joins": {"tf": 1}}, "df": 2}}}, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.generator.Generator.journalproperty_sql": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}, "x": {"2": {"7": {"docs": {"sqlglot.helper.open_file": {"tf": 1.4142135623730951}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.oracle.Oracle.Generator.xmltable_sql": {"tf": 1}}, "df": 1}}}}}}}}, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.generator.Generator.__init__": {"tf": 1.4142135623730951}}, "df": 1, "d": {"docs": {"sqlglot.expressions.to_identifier": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1}, "sqlglot.expressions.column": {"tf": 1}, "sqlglot.expressions.table_": {"tf": 1}}, "df": 4}}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.generator.Generator.qualify_sql": {"tf": 1}, "sqlglot.lineage.lineage": {"tf": 1.4142135623730951}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1.7320508075688772}}, "df": 3}}}}}}}}}, "bases": {"root": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.bigquery.BigQuery": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Tokenizer": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Tokenizer": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Tokenizer": {"tf": 1}, "sqlglot.dialects.drill.Drill": {"tf": 1}, "sqlglot.dialects.drill.Drill.Tokenizer": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Tokenizer": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive": {"tf": 1}, "sqlglot.dialects.hive.Hive.Tokenizer": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Tokenizer": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Tokenizer": {"tf": 1}, "sqlglot.dialects.postgres.Postgres": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Tokenizer": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto": {"tf": 1}, "sqlglot.dialects.presto.Presto.Tokenizer": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Tokenizer": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Tokenizer": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Tokenizer": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Tokenizer": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Tokenizer": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Tokenizer": {"tf": 1}, "sqlglot.dialects.tsql.TSQL": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Tokenizer": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.errors.ErrorLevel": {"tf": 1}, "sqlglot.executor.python.Python": {"tf": 1}, "sqlglot.executor.python.Python.Tokenizer": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.executor.table.Tables": {"tf": 1}, "sqlglot.expressions.Properties.Location": {"tf": 1}, "sqlglot.expressions.DataType.Type": {"tf": 1}, "sqlglot.schema.MappingSchema": {"tf": 1}, "sqlglot.tokens.TokenType": {"tf": 1}}, "df": 82, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.errors.UnsupportedError": {"tf": 1}, "sqlglot.errors.ParseError": {"tf": 1}, "sqlglot.errors.TokenError": {"tf": 1}, "sqlglot.errors.OptimizeError": {"tf": 1}, "sqlglot.errors.SchemaError": {"tf": 1}, "sqlglot.errors.ExecuteError": {"tf": 1}}, "df": 6}}}}}}}}}}}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.dialects.databricks.Databricks": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Tokenizer": {"tf": 1.4142135623730951}}, "df": 4}}}}, "t": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dialects.dialect.Dialects": {"tf": 1}, "sqlglot.schema.MappingSchema": {"tf": 1}}, "df": 2}, "e": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.planner.Scan": {"tf": 1}, "sqlglot.planner.Join": {"tf": 1}, "sqlglot.planner.Aggregate": {"tf": 1}, "sqlglot.planner.Sort": {"tf": 1}, "sqlglot.planner.SetOperation": {"tf": 1}}, "df": 5}}}, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.executor.table.Tables": {"tf": 1}, "sqlglot.schema.MappingSchema": {"tf": 1.4142135623730951}}, "df": 2}}}}}, "u": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Union": {"tf": 1}, "sqlglot.expressions.Select": {"tf": 1}}, "df": 2}}}}, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.All": {"tf": 1}, "sqlglot.expressions.Any": {"tf": 1}, "sqlglot.expressions.Exists": {"tf": 1}}, "df": 3}}}}}}}}}}}}}}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.bigquery.BigQuery": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL": {"tf": 1.4142135623730951}, "sqlglot.executor.python.Python": {"tf": 1.4142135623730951}}, "df": 15, "s": {"docs": {"sqlglot.dialects.bigquery.BigQuery": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse": {"tf": 1}, "sqlglot.dialects.databricks.Databricks": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Tokenizer": {"tf": 1}, "sqlglot.dialects.drill.Drill": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB": {"tf": 1}, "sqlglot.dialects.hive.Hive": {"tf": 1}, "sqlglot.dialects.mysql.MySQL": {"tf": 1}, "sqlglot.dialects.oracle.Oracle": {"tf": 1}, "sqlglot.dialects.postgres.Postgres": {"tf": 1}, "sqlglot.dialects.presto.Presto": {"tf": 1}, "sqlglot.dialects.redshift.Redshift": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Tokenizer": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake": {"tf": 1}, "sqlglot.dialects.spark.Spark": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Tokenizer": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau": {"tf": 1}, "sqlglot.dialects.teradata.Teradata": {"tf": 1}, "sqlglot.dialects.trino.Trino": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Tokenizer": {"tf": 1}, "sqlglot.dialects.tsql.TSQL": {"tf": 1}, "sqlglot.executor.python.Python": {"tf": 1}}, "df": 33}}}}}}, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "[": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.schema.MappingSchema": {"tf": 1}}, "df": 1}}}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.UDTF": {"tf": 1}, "sqlglot.expressions.CTE": {"tf": 1}, "sqlglot.expressions.Subquery": {"tf": 1}}, "df": 3}}}}}}}}}}}}, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Tokenizer": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Tokenizer": {"tf": 1}, "sqlglot.dialects.drill.Drill.Tokenizer": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Tokenizer": {"tf": 1}, "sqlglot.dialects.hive.Hive.Tokenizer": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Tokenizer": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Tokenizer": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Tokenizer": {"tf": 1}, "sqlglot.dialects.presto.Presto.Tokenizer": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Tokenizer": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Tokenizer": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Tokenizer": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Tokenizer": {"tf": 1}, "sqlglot.executor.python.Python.Tokenizer": {"tf": 1}}, "df": 14}, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Tokenizer": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Tokenizer": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Tokenizer": {"tf": 1}, "sqlglot.dialects.drill.Drill.Tokenizer": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Tokenizer": {"tf": 1}, "sqlglot.dialects.hive.Hive.Tokenizer": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Tokenizer": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Tokenizer": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Tokenizer": {"tf": 1}, "sqlglot.dialects.presto.Presto.Tokenizer": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Tokenizer": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Tokenizer": {"tf": 1}, "sqlglot.dialects.spark.Spark.Tokenizer": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Tokenizer": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Tokenizer": {"tf": 1}, "sqlglot.dialects.trino.Trino.Tokenizer": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Tokenizer": {"tf": 1}, "sqlglot.executor.python.Python.Tokenizer": {"tf": 1}}, "df": 18}}}}}}}}, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.executor.table.Tables": {"tf": 1.4142135623730951}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.Interval": {"tf": 1}, "sqlglot.expressions.DateAdd": {"tf": 1}, "sqlglot.expressions.DateSub": {"tf": 1}, "sqlglot.expressions.DateDiff": {"tf": 1}, "sqlglot.expressions.DatetimeAdd": {"tf": 1}, "sqlglot.expressions.DatetimeSub": {"tf": 1}, "sqlglot.expressions.DatetimeDiff": {"tf": 1}, "sqlglot.expressions.DatetimeTrunc": {"tf": 1}, "sqlglot.expressions.TimestampAdd": {"tf": 1}, "sqlglot.expressions.TimestampSub": {"tf": 1}, "sqlglot.expressions.TimestampDiff": {"tf": 1}, "sqlglot.expressions.TimestampTrunc": {"tf": 1}, "sqlglot.expressions.TimeAdd": {"tf": 1}, "sqlglot.expressions.TimeSub": {"tf": 1}, "sqlglot.expressions.TimeDiff": {"tf": 1}, "sqlglot.expressions.TimeTrunc": {"tf": 1}, "sqlglot.expressions.TsOrDsAdd": {"tf": 1}}, "df": 17}}}}}}}, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.schema.AbstractMappingSchema": {"tf": 1}}, "df": 1}}}}}}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1.4142135623730951}}, "df": 18}}}}}, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dialects.redshift.Redshift": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Tokenizer": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.4142135623730951}}, "df": 4}}}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {"sqlglot.dialects.trino.Trino": {"tf": 1.4142135623730951}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.trino.Trino.Tokenizer": {"tf": 1.4142135623730951}}, "df": 3}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.SubqueryPredicate": {"tf": 1}, "sqlglot.expressions.EQ": {"tf": 1}, "sqlglot.expressions.NullSafeEQ": {"tf": 1}, "sqlglot.expressions.NullSafeNEQ": {"tf": 1}, "sqlglot.expressions.Glob": {"tf": 1}, "sqlglot.expressions.GT": {"tf": 1}, "sqlglot.expressions.GTE": {"tf": 1}, "sqlglot.expressions.ILike": {"tf": 1}, "sqlglot.expressions.ILikeAny": {"tf": 1}, "sqlglot.expressions.Is": {"tf": 1}, "sqlglot.expressions.Like": {"tf": 1}, "sqlglot.expressions.LikeAny": {"tf": 1}, "sqlglot.expressions.LT": {"tf": 1}, "sqlglot.expressions.LTE": {"tf": 1}, "sqlglot.expressions.NEQ": {"tf": 1}, "sqlglot.expressions.SimilarTo": {"tf": 1}, "sqlglot.expressions.Between": {"tf": 1}, "sqlglot.expressions.In": {"tf": 1}}, "df": 18}}}}}}}, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.AfterJournalProperty": {"tf": 1}, "sqlglot.expressions.AlgorithmProperty": {"tf": 1}, "sqlglot.expressions.AutoIncrementProperty": {"tf": 1}, "sqlglot.expressions.BlockCompressionProperty": {"tf": 1}, "sqlglot.expressions.CharacterSetProperty": {"tf": 1}, "sqlglot.expressions.ChecksumProperty": {"tf": 1}, "sqlglot.expressions.CollateProperty": {"tf": 1}, "sqlglot.expressions.DataBlocksizeProperty": {"tf": 1}, "sqlglot.expressions.DefinerProperty": {"tf": 1}, "sqlglot.expressions.DistKeyProperty": {"tf": 1}, "sqlglot.expressions.DistStyleProperty": {"tf": 1}, "sqlglot.expressions.EngineProperty": {"tf": 1}, "sqlglot.expressions.ExecuteAsProperty": {"tf": 1}, "sqlglot.expressions.ExternalProperty": {"tf": 1}, "sqlglot.expressions.FallbackProperty": {"tf": 1}, "sqlglot.expressions.FileFormatProperty": {"tf": 1}, "sqlglot.expressions.FreespaceProperty": {"tf": 1}, "sqlglot.expressions.IsolatedLoadingProperty": {"tf": 1}, "sqlglot.expressions.JournalProperty": {"tf": 1}, "sqlglot.expressions.LanguageProperty": {"tf": 1}, "sqlglot.expressions.LikeProperty": {"tf": 1}, "sqlglot.expressions.LocationProperty": {"tf": 1}, "sqlglot.expressions.LockingProperty": {"tf": 1}, "sqlglot.expressions.LogProperty": {"tf": 1}, "sqlglot.expressions.MaterializedProperty": {"tf": 1}, "sqlglot.expressions.MergeBlockRatioProperty": {"tf": 1}, "sqlglot.expressions.NoPrimaryIndexProperty": {"tf": 1}, "sqlglot.expressions.OnCommitProperty": {"tf": 1}, "sqlglot.expressions.PartitionedByProperty": {"tf": 1}, "sqlglot.expressions.ReturnsProperty": {"tf": 1}, "sqlglot.expressions.RowFormatProperty": {"tf": 1}, "sqlglot.expressions.RowFormatDelimitedProperty": {"tf": 1}, "sqlglot.expressions.RowFormatSerdeProperty": {"tf": 1}, "sqlglot.expressions.SchemaCommentProperty": {"tf": 1}, "sqlglot.expressions.SerdeProperties": {"tf": 1}, "sqlglot.expressions.SetProperty": {"tf": 1}, "sqlglot.expressions.SortKeyProperty": {"tf": 1}, "sqlglot.expressions.SqlSecurityProperty": {"tf": 1}, "sqlglot.expressions.StabilityProperty": {"tf": 1}, "sqlglot.expressions.TableFormatProperty": {"tf": 1}, "sqlglot.expressions.TemporaryProperty": {"tf": 1}, "sqlglot.expressions.TransientProperty": {"tf": 1}, "sqlglot.expressions.VolatileProperty": {"tf": 1}, "sqlglot.expressions.WithDataProperty": {"tf": 1}, "sqlglot.expressions.WithJournalTableProperty": {"tf": 1}}, "df": 45}}}}}}}}, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.executor.python.Python.Generator": {"tf": 1.4142135623730951}}, "df": 20}}}}, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "[": {"docs": {}, "df": 0, "~": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.schema.AbstractMappingSchema": {"tf": 1}}, "df": 1}}}}}}}}}}, "b": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dialects.dialect.Dialects": {"tf": 1}, "sqlglot.errors.SqlglotError": {"tf": 1}}, "df": 2}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.Add": {"tf": 1}, "sqlglot.expressions.Connector": {"tf": 1}, "sqlglot.expressions.BitwiseAnd": {"tf": 1}, "sqlglot.expressions.BitwiseLeftShift": {"tf": 1}, "sqlglot.expressions.BitwiseOr": {"tf": 1}, "sqlglot.expressions.BitwiseRightShift": {"tf": 1}, "sqlglot.expressions.BitwiseXor": {"tf": 1}, "sqlglot.expressions.Div": {"tf": 1}, "sqlglot.expressions.Overlaps": {"tf": 1}, "sqlglot.expressions.Dot": {"tf": 1}, "sqlglot.expressions.DPipe": {"tf": 1}, "sqlglot.expressions.EQ": {"tf": 1}, "sqlglot.expressions.NullSafeEQ": {"tf": 1}, "sqlglot.expressions.NullSafeNEQ": {"tf": 1}, "sqlglot.expressions.Distance": {"tf": 1}, "sqlglot.expressions.Escape": {"tf": 1}, "sqlglot.expressions.Glob": {"tf": 1}, "sqlglot.expressions.GT": {"tf": 1}, "sqlglot.expressions.GTE": {"tf": 1}, "sqlglot.expressions.ILike": {"tf": 1}, "sqlglot.expressions.ILikeAny": {"tf": 1}, "sqlglot.expressions.IntDiv": {"tf": 1}, "sqlglot.expressions.Is": {"tf": 1}, "sqlglot.expressions.Kwarg": {"tf": 1}, "sqlglot.expressions.Like": {"tf": 1}, "sqlglot.expressions.LikeAny": {"tf": 1}, "sqlglot.expressions.LT": {"tf": 1}, "sqlglot.expressions.LTE": {"tf": 1}, "sqlglot.expressions.Mod": {"tf": 1}, "sqlglot.expressions.Mul": {"tf": 1}, "sqlglot.expressions.NEQ": {"tf": 1}, "sqlglot.expressions.SimilarTo": {"tf": 1}, "sqlglot.expressions.Slice": {"tf": 1}, "sqlglot.expressions.Sub": {"tf": 1}, "sqlglot.expressions.ArrayOverlaps": {"tf": 1}, "sqlglot.expressions.ArrayContains": {"tf": 1}, "sqlglot.expressions.ArrayContained": {"tf": 1}, "sqlglot.expressions.Collate": {"tf": 1}, "sqlglot.expressions.JSONBContains": {"tf": 1}, "sqlglot.expressions.JSONExtract": {"tf": 1}, "sqlglot.expressions.Pow": {"tf": 1}}, "df": 41}}}}}}, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {"sqlglot.dialects.dialect.Dialects": {"tf": 1.4142135623730951}, "sqlglot.helper.AutoName": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.ScopeType": {"tf": 1.4142135623730951}}, "df": 3}}}, "x": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.errors.SqlglotError": {"tf": 1}}, "df": 1}}}}}}}, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.executor.table.Tables": {"tf": 1}}, "df": 1}}}}}}, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.Condition": {"tf": 1}, "sqlglot.expressions.DerivedTable": {"tf": 1}, "sqlglot.expressions.Unionable": {"tf": 1}, "sqlglot.expressions.Cache": {"tf": 1}, "sqlglot.expressions.Uncache": {"tf": 1}, "sqlglot.expressions.Create": {"tf": 1}, "sqlglot.expressions.Describe": {"tf": 1}, "sqlglot.expressions.Pragma": {"tf": 1}, "sqlglot.expressions.Set": {"tf": 1}, "sqlglot.expressions.SetItem": {"tf": 1}, "sqlglot.expressions.Show": {"tf": 1}, "sqlglot.expressions.UserDefinedFunction": {"tf": 1}, "sqlglot.expressions.CharacterSet": {"tf": 1}, "sqlglot.expressions.With": {"tf": 1}, "sqlglot.expressions.WithinGroup": {"tf": 1}, "sqlglot.expressions.TableAlias": {"tf": 1}, "sqlglot.expressions.ColumnPosition": {"tf": 1}, "sqlglot.expressions.ColumnDef": {"tf": 1}, "sqlglot.expressions.AlterColumn": {"tf": 1}, "sqlglot.expressions.RenameTable": {"tf": 1}, "sqlglot.expressions.SetTag": {"tf": 1}, "sqlglot.expressions.Comment": {"tf": 1}, "sqlglot.expressions.ColumnConstraint": {"tf": 1}, "sqlglot.expressions.ColumnConstraintKind": {"tf": 1}, "sqlglot.expressions.Constraint": {"tf": 1}, "sqlglot.expressions.Delete": {"tf": 1}, "sqlglot.expressions.Drop": {"tf": 1}, "sqlglot.expressions.Filter": {"tf": 1}, "sqlglot.expressions.Check": {"tf": 1}, "sqlglot.expressions.Directory": {"tf": 1}, "sqlglot.expressions.ForeignKey": {"tf": 1}, "sqlglot.expressions.PrimaryKey": {"tf": 1}, "sqlglot.expressions.Unique": {"tf": 1}, "sqlglot.expressions.Into": {"tf": 1}, "sqlglot.expressions.From": {"tf": 1}, "sqlglot.expressions.Having": {"tf": 1}, "sqlglot.expressions.Hint": {"tf": 1}, "sqlglot.expressions.JoinHint": {"tf": 1}, "sqlglot.expressions.Identifier": {"tf": 1}, "sqlglot.expressions.Index": {"tf": 1}, "sqlglot.expressions.Insert": {"tf": 1}, "sqlglot.expressions.OnConflict": {"tf": 1}, "sqlglot.expressions.Returning": {"tf": 1}, "sqlglot.expressions.Introducer": {"tf": 1}, "sqlglot.expressions.National": {"tf": 1}, "sqlglot.expressions.LoadData": {"tf": 1}, "sqlglot.expressions.Partition": {"tf": 1}, "sqlglot.expressions.Fetch": {"tf": 1}, "sqlglot.expressions.Group": {"tf": 1}, "sqlglot.expressions.Lambda": {"tf": 1}, "sqlglot.expressions.Limit": {"tf": 1}, "sqlglot.expressions.Join": {"tf": 1}, "sqlglot.expressions.MatchRecognize": {"tf": 1}, "sqlglot.expressions.Final": {"tf": 1}, "sqlglot.expressions.Offset": {"tf": 1}, "sqlglot.expressions.Order": {"tf": 1}, "sqlglot.expressions.Ordered": {"tf": 1}, "sqlglot.expressions.Property": {"tf": 1}, "sqlglot.expressions.InputOutputFormat": {"tf": 1}, "sqlglot.expressions.Properties": {"tf": 1}, "sqlglot.expressions.Qualify": {"tf": 1}, "sqlglot.expressions.Return": {"tf": 1}, "sqlglot.expressions.Reference": {"tf": 1}, "sqlglot.expressions.Tuple": {"tf": 1}, "sqlglot.expressions.Table": {"tf": 1}, "sqlglot.expressions.SystemTime": {"tf": 1}, "sqlglot.expressions.Update": {"tf": 1}, "sqlglot.expressions.Var": {"tf": 1}, "sqlglot.expressions.Schema": {"tf": 1}, "sqlglot.expressions.Lock": {"tf": 1}, "sqlglot.expressions.TableSample": {"tf": 1}, "sqlglot.expressions.Tag": {"tf": 1}, "sqlglot.expressions.Pivot": {"tf": 1}, "sqlglot.expressions.Window": {"tf": 1}, "sqlglot.expressions.WindowSpec": {"tf": 1}, "sqlglot.expressions.Where": {"tf": 1}, "sqlglot.expressions.Star": {"tf": 1}, "sqlglot.expressions.Parameter": {"tf": 1}, "sqlglot.expressions.SessionParameter": {"tf": 1}, "sqlglot.expressions.Placeholder": {"tf": 1}, "sqlglot.expressions.DataType": {"tf": 1}, "sqlglot.expressions.PseudoType": {"tf": 1}, "sqlglot.expressions.StructKwarg": {"tf": 1}, "sqlglot.expressions.Command": {"tf": 1}, "sqlglot.expressions.Transaction": {"tf": 1}, "sqlglot.expressions.Commit": {"tf": 1}, "sqlglot.expressions.Rollback": {"tf": 1}, "sqlglot.expressions.AlterTable": {"tf": 1}, "sqlglot.expressions.AddConstraint": {"tf": 1}, "sqlglot.expressions.DropPartition": {"tf": 1}, "sqlglot.expressions.Binary": {"tf": 1}, "sqlglot.expressions.Unary": {"tf": 1}, "sqlglot.expressions.Alias": {"tf": 1}, "sqlglot.expressions.Aliases": {"tf": 1}, "sqlglot.expressions.AtTimeZone": {"tf": 1}, "sqlglot.expressions.Distinct": {"tf": 1}, "sqlglot.expressions.TimeUnit": {"tf": 1}, "sqlglot.expressions.IgnoreNulls": {"tf": 1}, "sqlglot.expressions.RespectNulls": {"tf": 1}, "sqlglot.expressions.JSONKeyValue": {"tf": 1}, "sqlglot.expressions.Use": {"tf": 1}, "sqlglot.expressions.Merge": {"tf": 1}}, "df": 102}}}}}}}}}}, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.spark.Spark": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Tokenizer": {"tf": 1.4142135623730951}}, "df": 4}}}, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.errors.ErrorLevel": {"tf": 1}, "sqlglot.expressions.Properties.Location": {"tf": 1}, "sqlglot.expressions.DataType.Type": {"tf": 1}, "sqlglot.tokens.TokenType": {"tf": 1}}, "df": 4}}}}}}, "m": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.dialects.starrocks.StarRocks": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.4142135623730951}}, "df": 3}}}}}, "a": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.errors.ErrorLevel": {"tf": 1}, "sqlglot.expressions.Properties.Location": {"tf": 1}, "sqlglot.expressions.DataType.Type": {"tf": 1}, "sqlglot.tokens.TokenType": {"tf": 1}}, "df": 4}}}}}}}, "b": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "[": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.executor.table.Tables": {"tf": 1}}, "df": 1}}}}}}}, "t": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.schema.MappingSchema": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}}}}}}}, "c": {"docs": {"sqlglot.schema.Schema": {"tf": 1.4142135623730951}}, "df": 1}}, "g": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot.expressions.Hll": {"tf": 1}, "sqlglot.expressions.ApproxDistinct": {"tf": 1}, "sqlglot.expressions.ArrayAgg": {"tf": 1}, "sqlglot.expressions.ArrayUnionAgg": {"tf": 1}, "sqlglot.expressions.Avg": {"tf": 1}, "sqlglot.expressions.AnyValue": {"tf": 1}, "sqlglot.expressions.Count": {"tf": 1}, "sqlglot.expressions.CountIf": {"tf": 1}, "sqlglot.expressions.ExponentialTimeDecayedAvg": {"tf": 1}, "sqlglot.expressions.GroupUniqArray": {"tf": 1}, "sqlglot.expressions.Histogram": {"tf": 1}, "sqlglot.expressions.LogicalOr": {"tf": 1}, "sqlglot.expressions.LogicalAnd": {"tf": 1}, "sqlglot.expressions.Max": {"tf": 1}, "sqlglot.expressions.Min": {"tf": 1}, "sqlglot.expressions.PercentileCont": {"tf": 1}, "sqlglot.expressions.PercentileDisc": {"tf": 1}, "sqlglot.expressions.Quantile": {"tf": 1}, "sqlglot.expressions.Quantiles": {"tf": 1}, "sqlglot.expressions.QuantileIf": {"tf": 1}, "sqlglot.expressions.SetAgg": {"tf": 1}, "sqlglot.expressions.Sum": {"tf": 1}, "sqlglot.expressions.Stddev": {"tf": 1}, "sqlglot.expressions.StddevPop": {"tf": 1}, "sqlglot.expressions.StddevSamp": {"tf": 1}, "sqlglot.expressions.Variance": {"tf": 1}, "sqlglot.expressions.VariancePop": {"tf": 1}}, "df": 27}}}}}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.Predicate": {"tf": 1}, "sqlglot.expressions.BitString": {"tf": 1}, "sqlglot.expressions.HexString": {"tf": 1}, "sqlglot.expressions.ByteString": {"tf": 1}, "sqlglot.expressions.Column": {"tf": 1}, "sqlglot.expressions.Literal": {"tf": 1}, "sqlglot.expressions.Null": {"tf": 1}, "sqlglot.expressions.Boolean": {"tf": 1}, "sqlglot.expressions.Connector": {"tf": 1}, "sqlglot.expressions.Not": {"tf": 1}, "sqlglot.expressions.Paren": {"tf": 1}, "sqlglot.expressions.Bracket": {"tf": 1}, "sqlglot.expressions.Func": {"tf": 1}}, "df": 13}}}}}}, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.And": {"tf": 1}, "sqlglot.expressions.Or": {"tf": 1}}, "df": 2}}}}}}, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.ConcatWs": {"tf": 1}}, "df": 1}}}}, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.AutoIncrementColumnConstraint": {"tf": 1}, "sqlglot.expressions.CaseSpecificColumnConstraint": {"tf": 1}, "sqlglot.expressions.CharacterSetColumnConstraint": {"tf": 1}, "sqlglot.expressions.CheckColumnConstraint": {"tf": 1}, "sqlglot.expressions.CollateColumnConstraint": {"tf": 1}, "sqlglot.expressions.CommentColumnConstraint": {"tf": 1}, "sqlglot.expressions.CompressColumnConstraint": {"tf": 1}, "sqlglot.expressions.DateFormatColumnConstraint": {"tf": 1}, "sqlglot.expressions.DefaultColumnConstraint": {"tf": 1}, "sqlglot.expressions.EncodeColumnConstraint": {"tf": 1}, "sqlglot.expressions.GeneratedAsIdentityColumnConstraint": {"tf": 1}, "sqlglot.expressions.InlineLengthColumnConstraint": {"tf": 1}, "sqlglot.expressions.NotNullColumnConstraint": {"tf": 1}, "sqlglot.expressions.OnUpdateColumnConstraint": {"tf": 1}, "sqlglot.expressions.PrimaryKeyColumnConstraint": {"tf": 1}, "sqlglot.expressions.TitleColumnConstraint": {"tf": 1}, "sqlglot.expressions.UniqueColumnConstraint": {"tf": 1}, "sqlglot.expressions.UppercaseColumnConstraint": {"tf": 1}, "sqlglot.expressions.PathColumnConstraint": {"tf": 1}}, "df": 19}}}}}}}}}}}}}}}}}}}, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.TryCast": {"tf": 1}}, "df": 1}}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.Except": {"tf": 1}, "sqlglot.expressions.Intersect": {"tf": 1}}, "df": 2, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.UDTF": {"tf": 1}, "sqlglot.expressions.Subqueryable": {"tf": 1}, "sqlglot.expressions.Subquery": {"tf": 1}}, "df": 3}}}}}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.BitwiseNot": {"tf": 1}, "sqlglot.expressions.Not": {"tf": 1}, "sqlglot.expressions.Paren": {"tf": 1}, "sqlglot.expressions.Neg": {"tf": 1}}, "df": 4}}}}, "d": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "f": {"docs": {"sqlglot.expressions.Lateral": {"tf": 1}, "sqlglot.expressions.Unnest": {"tf": 1}, "sqlglot.expressions.Values": {"tf": 1}}, "df": 3}}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.Cluster": {"tf": 1}, "sqlglot.expressions.Distribute": {"tf": 1}, "sqlglot.expressions.Sort": {"tf": 1}}, "df": 3}}}}}, "f": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot.expressions.AggFunc": {"tf": 1}, "sqlglot.expressions.Abs": {"tf": 1}, "sqlglot.expressions.Anonymous": {"tf": 1}, "sqlglot.expressions.Array": {"tf": 1}, "sqlglot.expressions.ToChar": {"tf": 1}, "sqlglot.expressions.GenerateSeries": {"tf": 1}, "sqlglot.expressions.ArrayAll": {"tf": 1}, "sqlglot.expressions.ArrayAny": {"tf": 1}, "sqlglot.expressions.ArrayConcat": {"tf": 1}, "sqlglot.expressions.ArrayContains": {"tf": 1}, "sqlglot.expressions.ArrayFilter": {"tf": 1}, "sqlglot.expressions.ArrayJoin": {"tf": 1}, "sqlglot.expressions.ArraySize": {"tf": 1}, "sqlglot.expressions.ArraySort": {"tf": 1}, "sqlglot.expressions.ArraySum": {"tf": 1}, "sqlglot.expressions.Case": {"tf": 1}, "sqlglot.expressions.Cast": {"tf": 1}, "sqlglot.expressions.Ceil": {"tf": 1}, "sqlglot.expressions.Coalesce": {"tf": 1}, "sqlglot.expressions.Concat": {"tf": 1}, "sqlglot.expressions.CurrentDate": {"tf": 1}, "sqlglot.expressions.CurrentDatetime": {"tf": 1}, "sqlglot.expressions.CurrentTime": {"tf": 1}, "sqlglot.expressions.CurrentTimestamp": {"tf": 1}, "sqlglot.expressions.CurrentUser": {"tf": 1}, "sqlglot.expressions.DateAdd": {"tf": 1}, "sqlglot.expressions.DateSub": {"tf": 1}, "sqlglot.expressions.DateDiff": {"tf": 1}, "sqlglot.expressions.DateTrunc": {"tf": 1}, "sqlglot.expressions.DatetimeAdd": {"tf": 1}, "sqlglot.expressions.DatetimeSub": {"tf": 1}, "sqlglot.expressions.DatetimeDiff": {"tf": 1}, "sqlglot.expressions.DatetimeTrunc": {"tf": 1}, "sqlglot.expressions.DayOfWeek": {"tf": 1}, "sqlglot.expressions.DayOfMonth": {"tf": 1}, "sqlglot.expressions.DayOfYear": {"tf": 1}, "sqlglot.expressions.WeekOfYear": {"tf": 1}, "sqlglot.expressions.LastDateOfMonth": {"tf": 1}, "sqlglot.expressions.Extract": {"tf": 1}, "sqlglot.expressions.TimestampAdd": {"tf": 1}, "sqlglot.expressions.TimestampSub": {"tf": 1}, "sqlglot.expressions.TimestampDiff": {"tf": 1}, "sqlglot.expressions.TimestampTrunc": {"tf": 1}, "sqlglot.expressions.TimeAdd": {"tf": 1}, "sqlglot.expressions.TimeSub": {"tf": 1}, "sqlglot.expressions.TimeDiff": {"tf": 1}, "sqlglot.expressions.TimeTrunc": {"tf": 1}, "sqlglot.expressions.DateFromParts": {"tf": 1}, "sqlglot.expressions.DateStrToDate": {"tf": 1}, "sqlglot.expressions.DateToDateStr": {"tf": 1}, "sqlglot.expressions.DateToDi": {"tf": 1}, "sqlglot.expressions.Day": {"tf": 1}, "sqlglot.expressions.Decode": {"tf": 1}, "sqlglot.expressions.DiToDate": {"tf": 1}, "sqlglot.expressions.Encode": {"tf": 1}, "sqlglot.expressions.Exp": {"tf": 1}, "sqlglot.expressions.Explode": {"tf": 1}, "sqlglot.expressions.Floor": {"tf": 1}, "sqlglot.expressions.Greatest": {"tf": 1}, "sqlglot.expressions.GroupConcat": {"tf": 1}, "sqlglot.expressions.Hex": {"tf": 1}, "sqlglot.expressions.If": {"tf": 1}, "sqlglot.expressions.IfNull": {"tf": 1}, "sqlglot.expressions.Initcap": {"tf": 1}, "sqlglot.expressions.JSONObject": {"tf": 1}, "sqlglot.expressions.JSONExtract": {"tf": 1}, "sqlglot.expressions.JSONFormat": {"tf": 1}, "sqlglot.expressions.Least": {"tf": 1}, "sqlglot.expressions.Length": {"tf": 1}, "sqlglot.expressions.Levenshtein": {"tf": 1}, "sqlglot.expressions.Ln": {"tf": 1}, "sqlglot.expressions.Log": {"tf": 1}, "sqlglot.expressions.Log2": {"tf": 1}, "sqlglot.expressions.Log10": {"tf": 1}, "sqlglot.expressions.Lower": {"tf": 1}, "sqlglot.expressions.Map": {"tf": 1}, "sqlglot.expressions.StarMap": {"tf": 1}, "sqlglot.expressions.VarMap": {"tf": 1}, "sqlglot.expressions.MatchAgainst": {"tf": 1}, "sqlglot.expressions.MD5": {"tf": 1}, "sqlglot.expressions.Month": {"tf": 1}, "sqlglot.expressions.Nvl2": {"tf": 1}, "sqlglot.expressions.Posexplode": {"tf": 1}, "sqlglot.expressions.Pow": {"tf": 1}, "sqlglot.expressions.RangeN": {"tf": 1}, "sqlglot.expressions.ReadCSV": {"tf": 1}, "sqlglot.expressions.Reduce": {"tf": 1}, "sqlglot.expressions.RegexpExtract": {"tf": 1}, "sqlglot.expressions.RegexpLike": {"tf": 1}, "sqlglot.expressions.RegexpILike": {"tf": 1}, "sqlglot.expressions.RegexpSplit": {"tf": 1}, "sqlglot.expressions.Repeat": {"tf": 1}, "sqlglot.expressions.Round": {"tf": 1}, "sqlglot.expressions.RowNumber": {"tf": 1}, "sqlglot.expressions.SafeDivide": {"tf": 1}, "sqlglot.expressions.SHA": {"tf": 1}, "sqlglot.expressions.SHA2": {"tf": 1}, "sqlglot.expressions.SortArray": {"tf": 1}, "sqlglot.expressions.Split": {"tf": 1}, "sqlglot.expressions.Substring": {"tf": 1}, "sqlglot.expressions.StrPosition": {"tf": 1}, "sqlglot.expressions.StrToDate": {"tf": 1}, "sqlglot.expressions.StrToTime": {"tf": 1}, "sqlglot.expressions.StrToUnix": {"tf": 1}, "sqlglot.expressions.NumberToStr": {"tf": 1}, "sqlglot.expressions.Struct": {"tf": 1}, "sqlglot.expressions.StructExtract": {"tf": 1}, "sqlglot.expressions.Sqrt": {"tf": 1}, "sqlglot.expressions.TimeToStr": {"tf": 1}, "sqlglot.expressions.TimeToTimeStr": {"tf": 1}, "sqlglot.expressions.TimeToUnix": {"tf": 1}, "sqlglot.expressions.TimeStrToDate": {"tf": 1}, "sqlglot.expressions.TimeStrToTime": {"tf": 1}, "sqlglot.expressions.TimeStrToUnix": {"tf": 1}, "sqlglot.expressions.Trim": {"tf": 1}, "sqlglot.expressions.TsOrDsAdd": {"tf": 1}, "sqlglot.expressions.TsOrDsToDateStr": {"tf": 1}, "sqlglot.expressions.TsOrDsToDate": {"tf": 1}, "sqlglot.expressions.TsOrDiToDi": {"tf": 1}, "sqlglot.expressions.Unhex": {"tf": 1}, "sqlglot.expressions.UnixToStr": {"tf": 1}, "sqlglot.expressions.UnixToTime": {"tf": 1}, "sqlglot.expressions.UnixToTimeStr": {"tf": 1}, "sqlglot.expressions.Upper": {"tf": 1}, "sqlglot.expressions.Week": {"tf": 1}, "sqlglot.expressions.XMLTable": {"tf": 1}, "sqlglot.expressions.Year": {"tf": 1}, "sqlglot.expressions.When": {"tf": 1}}, "df": 128}}}}, "j": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.JSONExtractScalar": {"tf": 1}, "sqlglot.expressions.JSONBExtract": {"tf": 1}, "sqlglot.expressions.JSONBExtractScalar": {"tf": 1}}, "df": 3}}}}}}}}}}}, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.ApproxQuantile": {"tf": 1}}, "df": 1}}}}}}}}}}, "doc": {"root": {"0": {"0": {"0": {"9": {"9": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "1": {"0": {"7": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "9": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "3": {"6": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "3": {"4": {"2": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "6": {"2": {"5": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "5": {"2": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "1": {"0": {"5": {"4": {"5": {"5": {"2": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "1": {"2": {"6": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "6": {"8": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "3": {"0": {"8": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "9": {"9": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {"sqlglot": {"tf": 1.7320508075688772}}, "df": 1}, "2": {"docs": {"sqlglot": {"tf": 1.4142135623730951}}, "df": 1}, "3": {"2": {"8": {"0": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "9": {"1": {"7": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "6": {"9": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "4": {"4": {"1": {"0": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "9": {"5": {"8": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "6": {"6": {"7": {"1": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "7": {"6": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "8": {"0": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "5": {"4": {"3": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {"sqlglot": {"tf": 6.48074069840786}, "sqlglot.dataframe": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.persist": {"tf": 1.4142135623730951}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.diff": {"tf": 4.47213595499958}, "sqlglot.executor": {"tf": 2}, "sqlglot.expressions.Expression.output_name": {"tf": 1.7320508075688772}, "sqlglot.expressions.Column.output_name": {"tf": 1.7320508075688772}, "sqlglot.expressions.Identifier.output_name": {"tf": 1.7320508075688772}, "sqlglot.expressions.Literal.output_name": {"tf": 1.7320508075688772}, "sqlglot.expressions.Union.limit": {"tf": 1}, "sqlglot.expressions.Subquery.output_name": {"tf": 1.7320508075688772}, "sqlglot.expressions.Star.output_name": {"tf": 1.7320508075688772}, "sqlglot.expressions.Alias.output_name": {"tf": 1.7320508075688772}, "sqlglot.expressions.Cast.output_name": {"tf": 1.7320508075688772}, "sqlglot.helper.dict_depth": {"tf": 1}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1.4142135623730951}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 1.7320508075688772}, "sqlglot.parser.Parser": {"tf": 1}, "sqlglot.trie.new_trie": {"tf": 2}, "sqlglot.trie.in_trie": {"tf": 2.23606797749979}}, "df": 39, "/": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "1": {"0": {"0": {"0": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.diff": {"tf": 1}}, "df": 2}, "docs": {}, "df": 0}, "4": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "docs": {"sqlglot": {"tf": 1}, "sqlglot.diff": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.limit": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.offset": {"tf": 1.4142135623730951}}, "df": 4, "^": {"1": {"2": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}}, "1": {"4": {"5": {"docs": {}, "df": 0, "/": {"2": {"6": {"4": {"2": {"9": {"3": {"7": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}}, "docs": {}, "df": 0}, "docs": {"sqlglot": {"tf": 1}, "sqlglot.diff": {"tf": 1}}, "df": 2}, "2": {"2": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "3": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}, "6": {"3": {"2": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "9": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}, "3": {"1": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 1}}, "df": 2}, "4": {"1": {"3": {"4": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "5": {"1": {"docs": {"sqlglot": {"tf": 1.4142135623730951}}, "df": 1}, "7": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "6": {"1": {"8": {"0": {"8": {"8": {"0": {"2": {"8": {"2": {"9": {"5": {"docs": {"sqlglot": {"tf": 1.4142135623730951}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "7": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}, "8": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}, "9": {"8": {"6": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "9": {"6": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {"sqlglot": {"tf": 1}}, "df": 1}, "docs": {"sqlglot": {"tf": 6}, "sqlglot.dataframe": {"tf": 2}, "sqlglot.diff": {"tf": 4}, "sqlglot.executor": {"tf": 3.7416573867739413}, "sqlglot.expressions.Expression.output_name": {"tf": 1}, "sqlglot.expressions.Condition.and_": {"tf": 2}, "sqlglot.expressions.Condition.or_": {"tf": 2}, "sqlglot.expressions.Condition.not_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Predicate": {"tf": 1}, "sqlglot.expressions.Column.output_name": {"tf": 1}, "sqlglot.expressions.Identifier.output_name": {"tf": 1}, "sqlglot.expressions.Literal.output_name": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1.4142135623730951}, "sqlglot.expressions.Union.limit": {"tf": 2.449489742783178}, "sqlglot.expressions.Select.group_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.join": {"tf": 1.4142135623730951}, "sqlglot.expressions.Subquery.output_name": {"tf": 1}, "sqlglot.expressions.Star.output_name": {"tf": 1}, "sqlglot.expressions.Alias.output_name": {"tf": 1}, "sqlglot.expressions.Cast.output_name": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1.4142135623730951}, "sqlglot.expressions.update": {"tf": 2}, "sqlglot.expressions.delete": {"tf": 1.4142135623730951}, "sqlglot.expressions.condition": {"tf": 2.449489742783178}, "sqlglot.expressions.and_": {"tf": 2.449489742783178}, "sqlglot.expressions.or_": {"tf": 2.449489742783178}, "sqlglot.expressions.to_interval": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1.4142135623730951}, "sqlglot.expressions.cast": {"tf": 1.4142135623730951}, "sqlglot.expressions.values": {"tf": 1.4142135623730951}, "sqlglot.helper.split_num_words": {"tf": 1}, "sqlglot.helper.is_iterable": {"tf": 1}, "sqlglot.helper.flatten": {"tf": 2}, "sqlglot.helper.dict_depth": {"tf": 1.4142135623730951}, "sqlglot.optimizer.expand_laterals.expand_laterals": {"tf": 2.23606797749979}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_predicates": {"tf": 1.4142135623730951}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.selects": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1.4142135623730951}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 1.4142135623730951}, "sqlglot.transforms.unalias_group": {"tf": 1}, "sqlglot.trie.in_trie": {"tf": 1.4142135623730951}}, "df": 43, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.expressions.Func": {"tf": 1}}, "df": 2}}}, "2": {"0": {"0": {"7": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "1": {"4": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "2": {"1": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1}}, "df": 2}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "2": {"docs": {"sqlglot.dataframe": {"tf": 1.7320508075688772}}, "df": 1}, "4": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 2}, "5": {"1": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}, "5": {"docs": {"sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "6": {"4": {"2": {"9": {"8": {"2": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "6": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}, "docs": {"sqlglot": {"tf": 1}, "sqlglot.dataframe": {"tf": 1.7320508075688772}}, "df": 2}, "9": {"4": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {"sqlglot": {"tf": 3.3166247903554}, "sqlglot.dataframe": {"tf": 1.7320508075688772}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.diff": {"tf": 4.358898943540674}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.expressions.Expression.output_name": {"tf": 1}, "sqlglot.expressions.Column.output_name": {"tf": 1}, "sqlglot.expressions.Identifier.output_name": {"tf": 1}, "sqlglot.expressions.Literal.output_name": {"tf": 1}, "sqlglot.expressions.Subquery.output_name": {"tf": 1}, "sqlglot.expressions.Star.output_name": {"tf": 1}, "sqlglot.expressions.Alias.output_name": {"tf": 1}, "sqlglot.expressions.Cast.output_name": {"tf": 1}, "sqlglot.expressions.update": {"tf": 1.4142135623730951}, "sqlglot.expressions.alias_": {"tf": 1.4142135623730951}, "sqlglot.expressions.values": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.helper.is_iterable": {"tf": 1}, "sqlglot.helper.flatten": {"tf": 2}, "sqlglot.helper.dict_depth": {"tf": 1}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1.4142135623730951}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.optimizer.scope.Scope.selects": {"tf": 1.4142135623730951}, "sqlglot.trie.in_trie": {"tf": 1.4142135623730951}}, "df": 43}, "3": {"1": {"3": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "2": {"4": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "3": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}, "4": {"docs": {"sqlglot.dataframe": {"tf": 2.449489742783178}}, "df": 1}, "7": {"7": {"7": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "9": {"docs": {"sqlglot": {"tf": 6.855654600401044}, "sqlglot.dataframe": {"tf": 7.0710678118654755}, "sqlglot.dialects": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.output_name": {"tf": 2.449489742783178}, "sqlglot.expressions.Expression.assert_is": {"tf": 1.4142135623730951}, "sqlglot.expressions.Condition.and_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Condition.or_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Condition.not_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Unionable.union": {"tf": 1.4142135623730951}, "sqlglot.expressions.Unionable.intersect": {"tf": 1.4142135623730951}, "sqlglot.expressions.Unionable.except_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Column.output_name": {"tf": 2.449489742783178}, "sqlglot.expressions.Delete.delete": {"tf": 1.4142135623730951}, "sqlglot.expressions.Delete.where": {"tf": 2.8284271247461903}, "sqlglot.expressions.Delete.returning": {"tf": 1.4142135623730951}, "sqlglot.expressions.Identifier.output_name": {"tf": 2.449489742783178}, "sqlglot.expressions.Literal.output_name": {"tf": 2.449489742783178}, "sqlglot.expressions.Join.on": {"tf": 1.4142135623730951}, "sqlglot.expressions.Join.using": {"tf": 1.4142135623730951}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 1.4142135623730951}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Union.limit": {"tf": 1.4142135623730951}, "sqlglot.expressions.Union.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.from_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.group_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.order_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.sort_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.cluster_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.limit": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.offset": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.lateral": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.join": {"tf": 2.449489742783178}, "sqlglot.expressions.Select.where": {"tf": 2.8284271247461903}, "sqlglot.expressions.Select.having": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.distinct": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.ctas": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.lock": {"tf": 2.8284271247461903}, "sqlglot.expressions.Subquery.output_name": {"tf": 2.449489742783178}, "sqlglot.expressions.Star.output_name": {"tf": 2.449489742783178}, "sqlglot.expressions.Alias.output_name": {"tf": 2.449489742783178}, "sqlglot.expressions.Cast.output_name": {"tf": 2.449489742783178}, "sqlglot.expressions.union": {"tf": 1.4142135623730951}, "sqlglot.expressions.intersect": {"tf": 1.4142135623730951}, "sqlglot.expressions.except_": {"tf": 1.4142135623730951}, "sqlglot.expressions.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.from_": {"tf": 1.4142135623730951}, "sqlglot.expressions.update": {"tf": 1.4142135623730951}, "sqlglot.expressions.delete": {"tf": 1.4142135623730951}, "sqlglot.expressions.condition": {"tf": 2}, "sqlglot.expressions.and_": {"tf": 1.4142135623730951}, "sqlglot.expressions.or_": {"tf": 1.4142135623730951}, "sqlglot.expressions.not_": {"tf": 2}, "sqlglot.expressions.alias_": {"tf": 4}, "sqlglot.expressions.subquery": {"tf": 2.8284271247461903}, "sqlglot.expressions.cast": {"tf": 2.449489742783178}, "sqlglot.expressions.values": {"tf": 2}, "sqlglot.expressions.var": {"tf": 3.1622776601683795}, "sqlglot.expressions.column_table_names": {"tf": 2}, "sqlglot.expressions.table_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.replace_tables": {"tf": 1.4142135623730951}, "sqlglot.expressions.replace_placeholders": {"tf": 1.4142135623730951}, "sqlglot.expressions.expand": {"tf": 2}, "sqlglot.expressions.func": {"tf": 2}, "sqlglot.helper.split_num_words": {"tf": 3.4641016151377544}, "sqlglot.helper.flatten": {"tf": 1.4142135623730951}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1.4142135623730951}, "sqlglot.optimizer.eliminate_ctes.eliminate_ctes": {"tf": 1.4142135623730951}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 1.4142135623730951}, "sqlglot.optimizer.eliminate_subqueries.eliminate_subqueries": {"tf": 2}, "sqlglot.optimizer.expand_laterals.expand_laterals": {"tf": 1.4142135623730951}, "sqlglot.optimizer.expand_multi_table_selects.expand_multi_table_selects": {"tf": 1.4142135623730951}, "sqlglot.optimizer.lower_identities.lower_identities": {"tf": 2}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1.4142135623730951}, "sqlglot.optimizer.normalize.normalize": {"tf": 1.4142135623730951}, "sqlglot.optimizer.optimize_joins.optimize_joins": {"tf": 1.4142135623730951}, "sqlglot.optimizer.pushdown_predicates.pushdown_predicates": {"tf": 1.4142135623730951}, "sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 1.4142135623730951}, "sqlglot.optimizer.qualify_columns.qualify_columns": {"tf": 1.4142135623730951}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 2.8284271247461903}, "sqlglot.optimizer.simplify.simplify": {"tf": 1.4142135623730951}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 1.4142135623730951}, "sqlglot.time.format_time": {"tf": 1.4142135623730951}, "sqlglot.transforms.unalias_group": {"tf": 1.4142135623730951}, "sqlglot.trie.new_trie": {"tf": 3.7416573867739413}, "sqlglot.trie.in_trie": {"tf": 2.8284271247461903}}, "df": 87}, "docs": {"sqlglot": {"tf": 3.1622776601683795}, "sqlglot.dataframe": {"tf": 1.7320508075688772}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.diff": {"tf": 3.1622776601683795}, "sqlglot.executor": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1.4142135623730951}, "sqlglot.helper.flatten": {"tf": 2}, "sqlglot.helper.dict_depth": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1}}, "df": 49}, "4": {"0": {"0": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "3": {"4": {"3": {"4": {"1": {"6": {"6": {"2": {"4": {"docs": {"sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}}, "df": 3}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "7": {"9": {"8": {"3": {"1": {"3": {"6": {"docs": {"sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}}, "df": 3}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "4": {"6": {"2": {"4": {"docs": {"sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}}, "df": 3}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "5": {"2": {"9": {"6": {"docs": {"sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}}, "df": 3}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "6": {"docs": {"sqlglot.diff.ChangeDistiller": {"tf": 1}}, "df": 1}, "8": {"docs": {"sqlglot.dataframe": {"tf": 1.7320508075688772}}, "df": 1}, "9": {"3": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {"sqlglot": {"tf": 2}, "sqlglot.dataframe": {"tf": 1.7320508075688772}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.diff": {"tf": 2.6457513110645907}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.helper.flatten": {"tf": 1.4142135623730951}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1}}, "df": 26}, "5": {"0": {"4": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}, "docs": {"sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1}}, "df": 19}, "3": {"1": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {"sqlglot": {"tf": 2.23606797749979}, "sqlglot.dataframe": {"tf": 1.7320508075688772}, "sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.expressions.to_interval": {"tf": 1}, "sqlglot.expressions.func": {"tf": 2}, "sqlglot.helper.flatten": {"tf": 1.4142135623730951}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1.4142135623730951}}, "df": 7}, "6": {"0": {"6": {"2": {"6": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "1": {"4": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {"sqlglot": {"tf": 1.7320508075688772}, "sqlglot.diff": {"tf": 2.23606797749979}}, "df": 2, "m": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}, "7": {"0": {"4": {"3": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "2": {"5": {"docs": {}, "df": 0, "\u2013": {"7": {"4": {"3": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}}, "docs": {}, "df": 0}, "6": {"7": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}, "9": {"1": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "2": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {"sqlglot": {"tf": 1}}, "df": 1}, "8": {"0": {"5": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}}, "df": 21}, "9": {"3": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 2}, "9": {"0": {"6": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "7": {"0": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "8": {"7": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {"sqlglot": {"tf": 1}}, "df": 1}, "docs": {"sqlglot": {"tf": 61.36774397026503}, "sqlglot.pretty": {"tf": 1.7320508075688772}, "sqlglot.schema": {"tf": 1.7320508075688772}, "sqlglot.parse": {"tf": 5.916079783099616}, "sqlglot.parse_one": {"tf": 6.324555320336759}, "sqlglot.transpile": {"tf": 7.211102550927978}, "sqlglot.dataframe": {"tf": 48.86716689148246}, "sqlglot.dataframe.sql": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.SparkSession": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.SparkSession.table": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.SparkSession.createDataFrame": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.SparkSession.sql": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.__init__": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.sql": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.copy": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.select": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.alias": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.where": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.filter": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.groupBy": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.agg": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.join": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 2.23606797749979}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 2.23606797749979}, "sqlglot.dataframe.sql.DataFrame.union": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.unionAll": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.unionByName": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.intersect": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.intersectAll": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.exceptAll": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.distinct": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.dropDuplicates": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.dropna": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 2.6457513110645907}, "sqlglot.dataframe.sql.DataFrame.replace": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.withColumn": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.withColumnRenamed": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.drop": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.limit": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.hint": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.repartition": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.coalesce": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.cache": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.persist": {"tf": 2}, "sqlglot.dataframe.sql.GroupedData": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.GroupedData.__init__": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.GroupedData.agg": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.GroupedData.count": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.GroupedData.mean": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.GroupedData.avg": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.GroupedData.max": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.GroupedData.min": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.GroupedData.sum": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.GroupedData.pivot": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Column": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Column.__init__": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Column.ensure_col": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Column.ensure_cols": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Column.invoke_anonymous_function": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Column.invoke_expression_over_column": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Column.binary_op": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Column.inverse_binary_op": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Column.unary_op": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Column.ensure_literal": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Column.copy": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Column.set_table_name": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Column.sql": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Column.alias": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Column.asc": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Column.desc": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Column.asc_nulls_first": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Column.asc_nulls_last": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Column.desc_nulls_first": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Column.desc_nulls_last": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Column.when": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Column.otherwise": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Column.isNull": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Column.isNotNull": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Column.cast": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.startswith": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Column.endswith": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Column.rlike": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Column.like": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Column.ilike": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Column.substr": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Column.isin": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Column.between": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Column.over": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrameNaFunctions": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrameNaFunctions.__init__": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrameNaFunctions.drop": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrameNaFunctions.fill": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrameNaFunctions.replace": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Window": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Window.partitionBy": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Window.orderBy": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Window.rowsBetween": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Window.rangeBetween": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.WindowSpec": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.WindowSpec.__init__": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.WindowSpec.copy": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.WindowSpec.sql": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.WindowSpec.partitionBy": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.WindowSpec.orderBy": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.WindowSpec.rowsBetween": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.WindowSpec.rangeBetween": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrameReader": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrameReader.__init__": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrameReader.table": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrameWriter": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrameWriter.__init__": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrameWriter.copy": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrameWriter.sql": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrameWriter.mode": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrameWriter.insertInto": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrameWriter.saveAsTable": {"tf": 1.7320508075688772}, "sqlglot.dialects": {"tf": 21.817424229271428}, "sqlglot.dialects.bigquery": {"tf": 1.7320508075688772}, "sqlglot.dialects.bigquery.BigQuery": {"tf": 1.7320508075688772}, "sqlglot.dialects.bigquery.BigQuery.Tokenizer": {"tf": 1.7320508075688772}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 6.082762530298219}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 11.532562594670797}, "sqlglot.dialects.bigquery.BigQuery.Generator.array_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.bigquery.BigQuery.Generator.transaction_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.bigquery.BigQuery.Generator.commit_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.bigquery.BigQuery.Generator.rollback_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.bigquery.BigQuery.Generator.in_unnest_op": {"tf": 1.7320508075688772}, "sqlglot.dialects.bigquery.BigQuery.Generator.except_op": {"tf": 1.7320508075688772}, "sqlglot.dialects.bigquery.BigQuery.Generator.intersect_op": {"tf": 1.7320508075688772}, "sqlglot.dialects.clickhouse": {"tf": 1.7320508075688772}, "sqlglot.dialects.clickhouse.ClickHouse": {"tf": 1.7320508075688772}, "sqlglot.dialects.clickhouse.ClickHouse.Tokenizer": {"tf": 1.7320508075688772}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 6.082762530298219}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 11.532562594670797}, "sqlglot.dialects.clickhouse.ClickHouse.Generator.cte_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.databricks": {"tf": 1.7320508075688772}, "sqlglot.dialects.databricks.Databricks": {"tf": 1.7320508075688772}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 6.082762530298219}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 11.532562594670797}, "sqlglot.dialects.databricks.Databricks.Tokenizer": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.Dialects": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.Dialects.DIALECT": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.Dialects.BIGQUERY": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.Dialects.CLICKHOUSE": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.Dialects.DUCKDB": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.Dialects.HIVE": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.Dialects.MYSQL": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.Dialects.ORACLE": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.Dialects.POSTGRES": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.Dialects.PRESTO": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.Dialects.REDSHIFT": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.Dialects.SNOWFLAKE": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.Dialects.SPARK": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.Dialects.SQLITE": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.Dialects.STARROCKS": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.Dialects.TABLEAU": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.Dialects.TRINO": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.Dialects.TSQL": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.Dialects.DATABRICKS": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.Dialects.DRILL": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.Dialects.TERADATA": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.Dialect": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.Dialect.get_or_raise": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.Dialect.format_time": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.Dialect.parse": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.Dialect.parse_into": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.Dialect.generate": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.Dialect.transpile": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.Dialect.tokenize": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.Dialect.parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.Dialect.generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.rename_func": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.approx_count_distinct_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.if_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.arrow_json_extract_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.arrow_json_extract_scalar_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.inline_array_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.no_ilike_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.no_paren_current_date_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.no_recursive_cte_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.no_safe_divide_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.no_tablesample_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.no_pivot_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.no_trycast_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.no_properties_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.no_comment_column_constraint_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.str_position_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.struct_extract_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.var_map_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.format_time_lambda": {"tf": 5.744562646538029}, "sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.parse_date_delta": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.parse_date_delta_with_interval": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.date_trunc_to_time": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.timestamptrunc_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.locate_to_strposition": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.strposition_to_locate_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.timestrtotime_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.datestrtodate_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.min_or_least": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.max_or_greatest": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.count_if_to_sum": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.trim_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.str_to_time_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.ts_or_ds_to_date_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.drill": {"tf": 1.7320508075688772}, "sqlglot.dialects.drill.Drill": {"tf": 1.7320508075688772}, "sqlglot.dialects.drill.Drill.Tokenizer": {"tf": 1.7320508075688772}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 6.082762530298219}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 11.532562594670797}, "sqlglot.dialects.drill.Drill.Generator.normalize_func": {"tf": 1.7320508075688772}, "sqlglot.dialects.duckdb": {"tf": 1.7320508075688772}, "sqlglot.dialects.duckdb.DuckDB": {"tf": 1.7320508075688772}, "sqlglot.dialects.duckdb.DuckDB.Tokenizer": {"tf": 1.7320508075688772}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 6.082762530298219}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 11.532562594670797}, "sqlglot.dialects.duckdb.DuckDB.Generator.tablesample_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.hive": {"tf": 1.7320508075688772}, "sqlglot.dialects.hive.Hive": {"tf": 1.7320508075688772}, "sqlglot.dialects.hive.Hive.Tokenizer": {"tf": 1.7320508075688772}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 6.082762530298219}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 11.532562594670797}, "sqlglot.dialects.hive.Hive.Generator.arrayagg_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.hive.Hive.Generator.with_properties": {"tf": 1.7320508075688772}, "sqlglot.dialects.hive.Hive.Generator.datatype_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.mysql": {"tf": 1.7320508075688772}, "sqlglot.dialects.mysql.MySQL": {"tf": 1.7320508075688772}, "sqlglot.dialects.mysql.MySQL.Tokenizer": {"tf": 1.7320508075688772}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 6.082762530298219}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 11.532562594670797}, "sqlglot.dialects.mysql.MySQL.Generator.show_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.oracle": {"tf": 1.7320508075688772}, "sqlglot.dialects.oracle.Oracle": {"tf": 1.7320508075688772}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 6.082762530298219}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 11.532562594670797}, "sqlglot.dialects.oracle.Oracle.Generator.offset_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.oracle.Oracle.Generator.column_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.oracle.Oracle.Generator.xmltable_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.oracle.Oracle.Tokenizer": {"tf": 1.7320508075688772}, "sqlglot.dialects.postgres": {"tf": 1.7320508075688772}, "sqlglot.dialects.postgres.Postgres": {"tf": 1.7320508075688772}, "sqlglot.dialects.postgres.Postgres.Tokenizer": {"tf": 1.7320508075688772}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 6.082762530298219}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 11.532562594670797}, "sqlglot.dialects.presto": {"tf": 1.7320508075688772}, "sqlglot.dialects.presto.Presto": {"tf": 1.7320508075688772}, "sqlglot.dialects.presto.Presto.Tokenizer": {"tf": 1.7320508075688772}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 6.082762530298219}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 11.532562594670797}, "sqlglot.dialects.presto.Presto.Generator.interval_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.presto.Presto.Generator.transaction_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.redshift": {"tf": 1.7320508075688772}, "sqlglot.dialects.redshift.Redshift": {"tf": 1.7320508075688772}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 6.082762530298219}, "sqlglot.dialects.redshift.Redshift.Tokenizer": {"tf": 1.7320508075688772}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 11.532562594670797}, "sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 3.3166247903554}, "sqlglot.dialects.redshift.Redshift.Generator.with_properties": {"tf": 2}, "sqlglot.dialects.redshift.Redshift.Generator.renametable_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 4.47213595499958}, "sqlglot.dialects.snowflake": {"tf": 1.7320508075688772}, "sqlglot.dialects.snowflake.Snowflake": {"tf": 1.7320508075688772}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 6.082762530298219}, "sqlglot.dialects.snowflake.Snowflake.Tokenizer": {"tf": 1.7320508075688772}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 11.532562594670797}, "sqlglot.dialects.snowflake.Snowflake.Generator.except_op": {"tf": 1.7320508075688772}, "sqlglot.dialects.snowflake.Snowflake.Generator.intersect_op": {"tf": 1.7320508075688772}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 2.8284271247461903}, "sqlglot.dialects.snowflake.Snowflake.Generator.settag_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 2.8284271247461903}, "sqlglot.dialects.snowflake.Snowflake.Generator.describe_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.snowflake.Snowflake.Generator.generatedasidentitycolumnconstraint_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.spark": {"tf": 1.7320508075688772}, "sqlglot.dialects.spark.Spark": {"tf": 1.7320508075688772}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 6.082762530298219}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 11.532562594670797}, "sqlglot.dialects.spark.Spark.Generator.cast_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.spark.Spark.Tokenizer": {"tf": 1.7320508075688772}, "sqlglot.dialects.sqlite": {"tf": 1.7320508075688772}, "sqlglot.dialects.sqlite.SQLite": {"tf": 1.7320508075688772}, "sqlglot.dialects.sqlite.SQLite.Tokenizer": {"tf": 1.7320508075688772}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 6.082762530298219}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 11.532562594670797}, "sqlglot.dialects.sqlite.SQLite.Generator.cast_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.sqlite.SQLite.Generator.datediff_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.sqlite.SQLite.Generator.groupconcat_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.sqlite.SQLite.Generator.least_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.sqlite.SQLite.Generator.transaction_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.starrocks": {"tf": 1.7320508075688772}, "sqlglot.dialects.starrocks.StarRocks": {"tf": 1.7320508075688772}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 6.082762530298219}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 11.532562594670797}, "sqlglot.dialects.tableau": {"tf": 1.7320508075688772}, "sqlglot.dialects.tableau.Tableau": {"tf": 1.7320508075688772}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 11.532562594670797}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 6.082762530298219}, "sqlglot.dialects.teradata": {"tf": 1.7320508075688772}, "sqlglot.dialects.teradata.Teradata": {"tf": 1.7320508075688772}, "sqlglot.dialects.teradata.Teradata.Tokenizer": {"tf": 1.7320508075688772}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 6.082762530298219}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 11.532562594670797}, "sqlglot.dialects.teradata.Teradata.Generator.partitionedbyproperty_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.teradata.Teradata.Generator.update_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.teradata.Teradata.Generator.mod_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.teradata.Teradata.Generator.datatype_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.teradata.Teradata.Generator.rangen_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.trino": {"tf": 1.7320508075688772}, "sqlglot.dialects.trino.Trino": {"tf": 1.7320508075688772}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 11.532562594670797}, "sqlglot.dialects.trino.Trino.Tokenizer": {"tf": 1.7320508075688772}, "sqlglot.dialects.tsql": {"tf": 1.7320508075688772}, "sqlglot.dialects.tsql.generate_date_delta_with_unit_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.tsql.TSQL": {"tf": 1.7320508075688772}, "sqlglot.dialects.tsql.TSQL.Tokenizer": {"tf": 1.7320508075688772}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 6.082762530298219}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 11.532562594670797}, "sqlglot.dialects.tsql.TSQL.Generator.offset_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.tsql.TSQL.Generator.systemtime_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.tsql.TSQL.Generator.returnsproperty_sql": {"tf": 1.7320508075688772}, "sqlglot.diff": {"tf": 50.556898639058154}, "sqlglot.diff.Insert": {"tf": 1.4142135623730951}, "sqlglot.diff.Insert.__init__": {"tf": 1.7320508075688772}, "sqlglot.diff.Remove": {"tf": 1.4142135623730951}, "sqlglot.diff.Remove.__init__": {"tf": 1.7320508075688772}, "sqlglot.diff.Move": {"tf": 1.4142135623730951}, "sqlglot.diff.Move.__init__": {"tf": 1.7320508075688772}, "sqlglot.diff.Update": {"tf": 1.4142135623730951}, "sqlglot.diff.Update.__init__": {"tf": 1.7320508075688772}, "sqlglot.diff.Keep": {"tf": 1.4142135623730951}, "sqlglot.diff.Keep.__init__": {"tf": 1.7320508075688772}, "sqlglot.diff.diff": {"tf": 11.313708498984761}, "sqlglot.diff.ChangeDistiller": {"tf": 2.6457513110645907}, "sqlglot.diff.ChangeDistiller.__init__": {"tf": 1.7320508075688772}, "sqlglot.diff.ChangeDistiller.diff": {"tf": 1.7320508075688772}, "sqlglot.errors": {"tf": 1.7320508075688772}, "sqlglot.errors.ErrorLevel": {"tf": 1.7320508075688772}, "sqlglot.errors.ErrorLevel.IGNORE": {"tf": 1.7320508075688772}, "sqlglot.errors.ErrorLevel.WARN": {"tf": 1.7320508075688772}, "sqlglot.errors.ErrorLevel.RAISE": {"tf": 1.7320508075688772}, "sqlglot.errors.ErrorLevel.IMMEDIATE": {"tf": 1.7320508075688772}, "sqlglot.errors.SqlglotError": {"tf": 1.7320508075688772}, "sqlglot.errors.UnsupportedError": {"tf": 1.7320508075688772}, "sqlglot.errors.ParseError": {"tf": 1.7320508075688772}, "sqlglot.errors.ParseError.__init__": {"tf": 1.7320508075688772}, "sqlglot.errors.ParseError.new": {"tf": 1.7320508075688772}, "sqlglot.errors.TokenError": {"tf": 1.7320508075688772}, "sqlglot.errors.OptimizeError": {"tf": 1.7320508075688772}, "sqlglot.errors.SchemaError": {"tf": 1.7320508075688772}, "sqlglot.errors.ExecuteError": {"tf": 1.7320508075688772}, "sqlglot.errors.concat_messages": {"tf": 1.7320508075688772}, "sqlglot.errors.merge_errors": {"tf": 1.7320508075688772}, "sqlglot.executor": {"tf": 35.11409973215888}, "sqlglot.executor.execute": {"tf": 7}, "sqlglot.executor.context": {"tf": 1.7320508075688772}, "sqlglot.executor.context.Context": {"tf": 3}, "sqlglot.executor.context.Context.__init__": {"tf": 1.7320508075688772}, "sqlglot.executor.context.Context.eval": {"tf": 1.7320508075688772}, "sqlglot.executor.context.Context.eval_tuple": {"tf": 1.7320508075688772}, "sqlglot.executor.context.Context.add_columns": {"tf": 1.7320508075688772}, "sqlglot.executor.context.Context.table_iter": {"tf": 1.7320508075688772}, "sqlglot.executor.context.Context.filter": {"tf": 1.7320508075688772}, "sqlglot.executor.context.Context.sort": {"tf": 1.7320508075688772}, "sqlglot.executor.context.Context.set_row": {"tf": 1.7320508075688772}, "sqlglot.executor.context.Context.set_index": {"tf": 1.7320508075688772}, "sqlglot.executor.context.Context.set_range": {"tf": 1.7320508075688772}, "sqlglot.executor.env": {"tf": 1.7320508075688772}, "sqlglot.executor.env.reverse_key": {"tf": 1.7320508075688772}, "sqlglot.executor.env.reverse_key.__init__": {"tf": 1.7320508075688772}, "sqlglot.executor.env.filter_nulls": {"tf": 1.7320508075688772}, "sqlglot.executor.env.null_if_any": {"tf": 4.58257569495584}, "sqlglot.executor.env.str_position": {"tf": 1.7320508075688772}, "sqlglot.executor.env.substring": {"tf": 1.7320508075688772}, "sqlglot.executor.env.cast": {"tf": 1.7320508075688772}, "sqlglot.executor.env.ordered": {"tf": 1.7320508075688772}, "sqlglot.executor.env.interval": {"tf": 1.7320508075688772}, "sqlglot.executor.python": {"tf": 1.7320508075688772}, "sqlglot.executor.python.PythonExecutor": {"tf": 1.7320508075688772}, "sqlglot.executor.python.PythonExecutor.__init__": {"tf": 1.7320508075688772}, "sqlglot.executor.python.PythonExecutor.execute": {"tf": 1.7320508075688772}, "sqlglot.executor.python.PythonExecutor.generate": {"tf": 1.7320508075688772}, "sqlglot.executor.python.PythonExecutor.generate_tuple": {"tf": 1.7320508075688772}, "sqlglot.executor.python.PythonExecutor.context": {"tf": 1.7320508075688772}, "sqlglot.executor.python.PythonExecutor.table": {"tf": 1.7320508075688772}, "sqlglot.executor.python.PythonExecutor.scan": {"tf": 1.7320508075688772}, "sqlglot.executor.python.PythonExecutor.static": {"tf": 1.7320508075688772}, "sqlglot.executor.python.PythonExecutor.scan_table": {"tf": 1.7320508075688772}, "sqlglot.executor.python.PythonExecutor.scan_csv": {"tf": 1.7320508075688772}, "sqlglot.executor.python.PythonExecutor.join": {"tf": 1.7320508075688772}, "sqlglot.executor.python.PythonExecutor.nested_loop_join": {"tf": 1.7320508075688772}, "sqlglot.executor.python.PythonExecutor.hash_join": {"tf": 1.7320508075688772}, "sqlglot.executor.python.PythonExecutor.aggregate": {"tf": 1.7320508075688772}, "sqlglot.executor.python.PythonExecutor.sort": {"tf": 1.7320508075688772}, "sqlglot.executor.python.PythonExecutor.set_operation": {"tf": 1.7320508075688772}, "sqlglot.executor.python.Python": {"tf": 1.7320508075688772}, "sqlglot.executor.python.Python.Tokenizer": {"tf": 1.7320508075688772}, "sqlglot.executor.python.Python.Generator": {"tf": 11.532562594670797}, "sqlglot.executor.table": {"tf": 1.7320508075688772}, "sqlglot.executor.table.Table": {"tf": 1.7320508075688772}, "sqlglot.executor.table.Table.__init__": {"tf": 1.7320508075688772}, "sqlglot.executor.table.Table.add_columns": {"tf": 1.7320508075688772}, "sqlglot.executor.table.Table.append": {"tf": 1.7320508075688772}, "sqlglot.executor.table.Table.pop": {"tf": 1.7320508075688772}, "sqlglot.executor.table.TableIter": {"tf": 1.7320508075688772}, "sqlglot.executor.table.TableIter.__init__": {"tf": 1.7320508075688772}, "sqlglot.executor.table.RangeReader": {"tf": 1.7320508075688772}, "sqlglot.executor.table.RangeReader.__init__": {"tf": 1.7320508075688772}, "sqlglot.executor.table.RowReader": {"tf": 1.7320508075688772}, "sqlglot.executor.table.RowReader.__init__": {"tf": 1.7320508075688772}, "sqlglot.executor.table.Tables": {"tf": 4}, "sqlglot.executor.table.ensure_tables": {"tf": 1.7320508075688772}, "sqlglot.expressions": {"tf": 4}, "sqlglot.expressions.Expression": {"tf": 10.954451150103322}, "sqlglot.expressions.Expression.__init__": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.this": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.expression": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.expressions": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.text": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.is_string": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.is_number": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.is_int": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.is_star": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.alias": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.output_name": {"tf": 11.313708498984761}, "sqlglot.expressions.Expression.copy": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.append": {"tf": 4.358898943540674}, "sqlglot.expressions.Expression.set": {"tf": 4.898979485566356}, "sqlglot.expressions.Expression.depth": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.iter_expressions": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.find": {"tf": 4.795831523312719}, "sqlglot.expressions.Expression.find_all": {"tf": 4.795831523312719}, "sqlglot.expressions.Expression.find_ancestor": {"tf": 4.795831523312719}, "sqlglot.expressions.Expression.parent_select": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.same_parent": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.root": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.walk": {"tf": 5.5677643628300215}, "sqlglot.expressions.Expression.dfs": {"tf": 3.4641016151377544}, "sqlglot.expressions.Expression.bfs": {"tf": 3.4641016151377544}, "sqlglot.expressions.Expression.unnest": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.unalias": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.unnest_operands": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.flatten": {"tf": 2.449489742783178}, "sqlglot.expressions.Expression.sql": {"tf": 5.477225575051661}, "sqlglot.expressions.Expression.transform": {"tf": 5.477225575051661}, "sqlglot.expressions.Expression.replace": {"tf": 5.5677643628300215}, "sqlglot.expressions.Expression.pop": {"tf": 3.4641016151377544}, "sqlglot.expressions.Expression.assert_is": {"tf": 9.643650760992955}, "sqlglot.expressions.Expression.error_messages": {"tf": 4.795831523312719}, "sqlglot.expressions.Expression.dump": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.load": {"tf": 2.23606797749979}, "sqlglot.expressions.Condition": {"tf": 1.7320508075688772}, "sqlglot.expressions.Condition.and_": {"tf": 9.746794344808963}, "sqlglot.expressions.Condition.or_": {"tf": 9.746794344808963}, "sqlglot.expressions.Condition.not_": {"tf": 7.874007874011811}, "sqlglot.expressions.Predicate": {"tf": 1.7320508075688772}, "sqlglot.expressions.DerivedTable": {"tf": 1.7320508075688772}, "sqlglot.expressions.Unionable": {"tf": 1.7320508075688772}, "sqlglot.expressions.Unionable.union": {"tf": 10.723805294763608}, "sqlglot.expressions.Unionable.intersect": {"tf": 10.677078252031311}, "sqlglot.expressions.Unionable.except_": {"tf": 10.723805294763608}, "sqlglot.expressions.UDTF": {"tf": 1.7320508075688772}, "sqlglot.expressions.Cache": {"tf": 1.7320508075688772}, "sqlglot.expressions.Uncache": {"tf": 1.7320508075688772}, "sqlglot.expressions.Create": {"tf": 1.7320508075688772}, "sqlglot.expressions.Describe": {"tf": 1.7320508075688772}, "sqlglot.expressions.Pragma": {"tf": 1.7320508075688772}, "sqlglot.expressions.Set": {"tf": 1.7320508075688772}, "sqlglot.expressions.SetItem": {"tf": 1.7320508075688772}, "sqlglot.expressions.Show": {"tf": 1.7320508075688772}, "sqlglot.expressions.UserDefinedFunction": {"tf": 1.7320508075688772}, "sqlglot.expressions.CharacterSet": {"tf": 1.7320508075688772}, "sqlglot.expressions.With": {"tf": 1.7320508075688772}, "sqlglot.expressions.WithinGroup": {"tf": 1.7320508075688772}, "sqlglot.expressions.CTE": {"tf": 1.7320508075688772}, "sqlglot.expressions.TableAlias": {"tf": 1.7320508075688772}, "sqlglot.expressions.BitString": {"tf": 1.7320508075688772}, "sqlglot.expressions.HexString": {"tf": 1.7320508075688772}, "sqlglot.expressions.ByteString": {"tf": 1.7320508075688772}, "sqlglot.expressions.Column": {"tf": 1.7320508075688772}, "sqlglot.expressions.Column.output_name": {"tf": 11.313708498984761}, "sqlglot.expressions.Column.parts": {"tf": 1.7320508075688772}, "sqlglot.expressions.Column.to_dot": {"tf": 1.7320508075688772}, "sqlglot.expressions.ColumnPosition": {"tf": 1.7320508075688772}, "sqlglot.expressions.ColumnDef": {"tf": 1.7320508075688772}, "sqlglot.expressions.AlterColumn": {"tf": 1.7320508075688772}, "sqlglot.expressions.RenameTable": {"tf": 1.7320508075688772}, "sqlglot.expressions.SetTag": {"tf": 1.7320508075688772}, "sqlglot.expressions.Comment": {"tf": 1.7320508075688772}, "sqlglot.expressions.ColumnConstraint": {"tf": 1.7320508075688772}, "sqlglot.expressions.ColumnConstraintKind": {"tf": 1.7320508075688772}, "sqlglot.expressions.AutoIncrementColumnConstraint": {"tf": 1.7320508075688772}, "sqlglot.expressions.CaseSpecificColumnConstraint": {"tf": 1.7320508075688772}, "sqlglot.expressions.CharacterSetColumnConstraint": {"tf": 1.7320508075688772}, "sqlglot.expressions.CheckColumnConstraint": {"tf": 1.7320508075688772}, "sqlglot.expressions.CollateColumnConstraint": {"tf": 1.7320508075688772}, "sqlglot.expressions.CommentColumnConstraint": {"tf": 1.7320508075688772}, "sqlglot.expressions.CompressColumnConstraint": {"tf": 1.7320508075688772}, "sqlglot.expressions.DateFormatColumnConstraint": {"tf": 1.7320508075688772}, "sqlglot.expressions.DefaultColumnConstraint": {"tf": 1.7320508075688772}, "sqlglot.expressions.EncodeColumnConstraint": {"tf": 1.7320508075688772}, "sqlglot.expressions.GeneratedAsIdentityColumnConstraint": {"tf": 1.7320508075688772}, "sqlglot.expressions.InlineLengthColumnConstraint": {"tf": 1.7320508075688772}, "sqlglot.expressions.NotNullColumnConstraint": {"tf": 1.7320508075688772}, "sqlglot.expressions.OnUpdateColumnConstraint": {"tf": 1.7320508075688772}, "sqlglot.expressions.PrimaryKeyColumnConstraint": {"tf": 1.7320508075688772}, "sqlglot.expressions.TitleColumnConstraint": {"tf": 1.7320508075688772}, "sqlglot.expressions.UniqueColumnConstraint": {"tf": 1.7320508075688772}, "sqlglot.expressions.UppercaseColumnConstraint": {"tf": 1.7320508075688772}, "sqlglot.expressions.PathColumnConstraint": {"tf": 1.7320508075688772}, "sqlglot.expressions.Constraint": {"tf": 1.7320508075688772}, "sqlglot.expressions.Delete": {"tf": 1.7320508075688772}, "sqlglot.expressions.Delete.delete": {"tf": 9.055385138137417}, "sqlglot.expressions.Delete.where": {"tf": 10.198039027185569}, "sqlglot.expressions.Delete.returning": {"tf": 10.488088481701515}, "sqlglot.expressions.Drop": {"tf": 1.7320508075688772}, "sqlglot.expressions.Filter": {"tf": 1.7320508075688772}, "sqlglot.expressions.Check": {"tf": 1.7320508075688772}, "sqlglot.expressions.Directory": {"tf": 1.7320508075688772}, "sqlglot.expressions.ForeignKey": {"tf": 1.7320508075688772}, "sqlglot.expressions.PrimaryKey": {"tf": 1.7320508075688772}, "sqlglot.expressions.Unique": {"tf": 1.7320508075688772}, "sqlglot.expressions.Into": {"tf": 1.7320508075688772}, "sqlglot.expressions.From": {"tf": 1.7320508075688772}, "sqlglot.expressions.Having": {"tf": 1.7320508075688772}, "sqlglot.expressions.Hint": {"tf": 1.7320508075688772}, "sqlglot.expressions.JoinHint": {"tf": 1.7320508075688772}, "sqlglot.expressions.Identifier": {"tf": 1.7320508075688772}, "sqlglot.expressions.Identifier.output_name": {"tf": 11.313708498984761}, "sqlglot.expressions.Index": {"tf": 1.7320508075688772}, "sqlglot.expressions.Insert": {"tf": 1.7320508075688772}, "sqlglot.expressions.OnConflict": {"tf": 1.7320508075688772}, "sqlglot.expressions.Returning": {"tf": 1.7320508075688772}, "sqlglot.expressions.Introducer": {"tf": 1.7320508075688772}, "sqlglot.expressions.National": {"tf": 1.7320508075688772}, "sqlglot.expressions.LoadData": {"tf": 1.7320508075688772}, "sqlglot.expressions.Partition": {"tf": 1.7320508075688772}, "sqlglot.expressions.Fetch": {"tf": 1.7320508075688772}, "sqlglot.expressions.Group": {"tf": 1.7320508075688772}, "sqlglot.expressions.Lambda": {"tf": 1.7320508075688772}, "sqlglot.expressions.Limit": {"tf": 1.7320508075688772}, "sqlglot.expressions.Literal": {"tf": 1.7320508075688772}, "sqlglot.expressions.Literal.number": {"tf": 1.7320508075688772}, "sqlglot.expressions.Literal.string": {"tf": 1.7320508075688772}, "sqlglot.expressions.Literal.output_name": {"tf": 11.313708498984761}, "sqlglot.expressions.Join": {"tf": 1.7320508075688772}, "sqlglot.expressions.Join.on": {"tf": 11.40175425099138}, "sqlglot.expressions.Join.using": {"tf": 11.704699910719626}, "sqlglot.expressions.Lateral": {"tf": 1.7320508075688772}, "sqlglot.expressions.MatchRecognize": {"tf": 1.7320508075688772}, "sqlglot.expressions.Final": {"tf": 1.7320508075688772}, "sqlglot.expressions.Offset": {"tf": 1.7320508075688772}, "sqlglot.expressions.Order": {"tf": 1.7320508075688772}, "sqlglot.expressions.Cluster": {"tf": 1.7320508075688772}, "sqlglot.expressions.Distribute": {"tf": 1.7320508075688772}, "sqlglot.expressions.Sort": {"tf": 1.7320508075688772}, "sqlglot.expressions.Ordered": {"tf": 1.7320508075688772}, "sqlglot.expressions.Property": {"tf": 1.7320508075688772}, "sqlglot.expressions.AfterJournalProperty": {"tf": 1.7320508075688772}, "sqlglot.expressions.AlgorithmProperty": {"tf": 1.7320508075688772}, "sqlglot.expressions.AutoIncrementProperty": {"tf": 1.7320508075688772}, "sqlglot.expressions.BlockCompressionProperty": {"tf": 1.7320508075688772}, "sqlglot.expressions.CharacterSetProperty": {"tf": 1.7320508075688772}, "sqlglot.expressions.ChecksumProperty": {"tf": 1.7320508075688772}, "sqlglot.expressions.CollateProperty": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataBlocksizeProperty": {"tf": 1.7320508075688772}, "sqlglot.expressions.DefinerProperty": {"tf": 1.7320508075688772}, "sqlglot.expressions.DistKeyProperty": {"tf": 1.7320508075688772}, "sqlglot.expressions.DistStyleProperty": {"tf": 1.7320508075688772}, "sqlglot.expressions.EngineProperty": {"tf": 1.7320508075688772}, "sqlglot.expressions.ExecuteAsProperty": {"tf": 1.7320508075688772}, "sqlglot.expressions.ExternalProperty": {"tf": 1.7320508075688772}, "sqlglot.expressions.FallbackProperty": {"tf": 1.7320508075688772}, "sqlglot.expressions.FileFormatProperty": {"tf": 1.7320508075688772}, "sqlglot.expressions.FreespaceProperty": {"tf": 1.7320508075688772}, "sqlglot.expressions.InputOutputFormat": {"tf": 1.7320508075688772}, "sqlglot.expressions.IsolatedLoadingProperty": {"tf": 1.7320508075688772}, "sqlglot.expressions.JournalProperty": {"tf": 1.7320508075688772}, "sqlglot.expressions.LanguageProperty": {"tf": 1.7320508075688772}, "sqlglot.expressions.LikeProperty": {"tf": 1.7320508075688772}, "sqlglot.expressions.LocationProperty": {"tf": 1.7320508075688772}, "sqlglot.expressions.LockingProperty": {"tf": 1.7320508075688772}, "sqlglot.expressions.LogProperty": {"tf": 1.7320508075688772}, "sqlglot.expressions.MaterializedProperty": {"tf": 1.7320508075688772}, "sqlglot.expressions.MergeBlockRatioProperty": {"tf": 1.7320508075688772}, "sqlglot.expressions.NoPrimaryIndexProperty": {"tf": 1.7320508075688772}, "sqlglot.expressions.OnCommitProperty": {"tf": 1.7320508075688772}, "sqlglot.expressions.PartitionedByProperty": {"tf": 1.7320508075688772}, "sqlglot.expressions.ReturnsProperty": {"tf": 1.7320508075688772}, "sqlglot.expressions.RowFormatProperty": {"tf": 1.7320508075688772}, "sqlglot.expressions.RowFormatDelimitedProperty": {"tf": 1.7320508075688772}, "sqlglot.expressions.RowFormatSerdeProperty": {"tf": 1.7320508075688772}, "sqlglot.expressions.SchemaCommentProperty": {"tf": 1.7320508075688772}, "sqlglot.expressions.SerdeProperties": {"tf": 1.7320508075688772}, "sqlglot.expressions.SetProperty": {"tf": 1.7320508075688772}, "sqlglot.expressions.SortKeyProperty": {"tf": 1.7320508075688772}, "sqlglot.expressions.SqlSecurityProperty": {"tf": 1.7320508075688772}, "sqlglot.expressions.StabilityProperty": {"tf": 1.7320508075688772}, "sqlglot.expressions.TableFormatProperty": {"tf": 1.7320508075688772}, "sqlglot.expressions.TemporaryProperty": {"tf": 1.7320508075688772}, "sqlglot.expressions.TransientProperty": {"tf": 1.7320508075688772}, "sqlglot.expressions.VolatileProperty": {"tf": 1.7320508075688772}, "sqlglot.expressions.WithDataProperty": {"tf": 1.7320508075688772}, "sqlglot.expressions.WithJournalTableProperty": {"tf": 1.7320508075688772}, "sqlglot.expressions.Properties": {"tf": 1.7320508075688772}, "sqlglot.expressions.Properties.Location": {"tf": 1.7320508075688772}, "sqlglot.expressions.Properties.Location.POST_CREATE": {"tf": 1.7320508075688772}, "sqlglot.expressions.Properties.Location.POST_NAME": {"tf": 1.7320508075688772}, "sqlglot.expressions.Properties.Location.POST_SCHEMA": {"tf": 1.7320508075688772}, "sqlglot.expressions.Properties.Location.POST_WITH": {"tf": 1.7320508075688772}, "sqlglot.expressions.Properties.Location.POST_ALIAS": {"tf": 1.7320508075688772}, "sqlglot.expressions.Properties.Location.POST_EXPRESSION": {"tf": 1.7320508075688772}, "sqlglot.expressions.Properties.Location.POST_INDEX": {"tf": 1.7320508075688772}, "sqlglot.expressions.Properties.Location.UNSUPPORTED": {"tf": 1.7320508075688772}, "sqlglot.expressions.Properties.from_dict": {"tf": 1.7320508075688772}, "sqlglot.expressions.Qualify": {"tf": 1.7320508075688772}, "sqlglot.expressions.Return": {"tf": 1.7320508075688772}, "sqlglot.expressions.Reference": {"tf": 1.7320508075688772}, "sqlglot.expressions.Tuple": {"tf": 1.7320508075688772}, "sqlglot.expressions.Subqueryable": {"tf": 1.7320508075688772}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 11.832159566199232}, "sqlglot.expressions.Subqueryable.limit": {"tf": 1.7320508075688772}, "sqlglot.expressions.Subqueryable.with_": {"tf": 12.767145334803704}, "sqlglot.expressions.Table": {"tf": 1.7320508075688772}, "sqlglot.expressions.SystemTime": {"tf": 1.7320508075688772}, "sqlglot.expressions.Union": {"tf": 1.7320508075688772}, "sqlglot.expressions.Union.limit": {"tf": 11.090536506409418}, "sqlglot.expressions.Union.select": {"tf": 10.723805294763608}, "sqlglot.expressions.Union.is_star": {"tf": 1.7320508075688772}, "sqlglot.expressions.Except": {"tf": 1.7320508075688772}, "sqlglot.expressions.Intersect": {"tf": 1.7320508075688772}, "sqlglot.expressions.Unnest": {"tf": 1.7320508075688772}, "sqlglot.expressions.Update": {"tf": 1.7320508075688772}, "sqlglot.expressions.Values": {"tf": 1.7320508075688772}, "sqlglot.expressions.Var": {"tf": 1.7320508075688772}, "sqlglot.expressions.Schema": {"tf": 1.7320508075688772}, "sqlglot.expressions.Lock": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.from_": {"tf": 11.135528725660043}, "sqlglot.expressions.Select.group_by": {"tf": 11.958260743101398}, "sqlglot.expressions.Select.order_by": {"tf": 11.704699910719626}, "sqlglot.expressions.Select.sort_by": {"tf": 11.704699910719626}, "sqlglot.expressions.Select.cluster_by": {"tf": 11.704699910719626}, "sqlglot.expressions.Select.limit": {"tf": 11.224972160321824}, "sqlglot.expressions.Select.offset": {"tf": 11.224972160321824}, "sqlglot.expressions.Select.select": {"tf": 10.246950765959598}, "sqlglot.expressions.Select.lateral": {"tf": 11.445523142259598}, "sqlglot.expressions.Select.join": {"tf": 19.026297590440446}, "sqlglot.expressions.Select.where": {"tf": 11.445523142259598}, "sqlglot.expressions.Select.having": {"tf": 12.288205727444508}, "sqlglot.expressions.Select.window": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.qualify": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.distinct": {"tf": 10.04987562112089}, "sqlglot.expressions.Select.ctas": {"tf": 11.357816691600547}, "sqlglot.expressions.Select.lock": {"tf": 14.696938456699069}, "sqlglot.expressions.Select.is_star": {"tf": 1.7320508075688772}, "sqlglot.expressions.Subquery": {"tf": 1.7320508075688772}, "sqlglot.expressions.Subquery.unnest": {"tf": 1.7320508075688772}, "sqlglot.expressions.Subquery.is_star": {"tf": 1.7320508075688772}, "sqlglot.expressions.Subquery.output_name": {"tf": 11.313708498984761}, "sqlglot.expressions.TableSample": {"tf": 1.7320508075688772}, "sqlglot.expressions.Tag": {"tf": 2.23606797749979}, "sqlglot.expressions.Pivot": {"tf": 1.7320508075688772}, "sqlglot.expressions.Window": {"tf": 1.7320508075688772}, "sqlglot.expressions.WindowSpec": {"tf": 1.7320508075688772}, "sqlglot.expressions.Where": {"tf": 1.7320508075688772}, "sqlglot.expressions.Star": {"tf": 1.7320508075688772}, "sqlglot.expressions.Star.output_name": {"tf": 11.313708498984761}, "sqlglot.expressions.Parameter": {"tf": 1.7320508075688772}, "sqlglot.expressions.SessionParameter": {"tf": 1.7320508075688772}, "sqlglot.expressions.Placeholder": {"tf": 1.7320508075688772}, "sqlglot.expressions.Null": {"tf": 1.7320508075688772}, "sqlglot.expressions.Boolean": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.CHAR": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.NCHAR": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.VARCHAR": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.NVARCHAR": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.TEXT": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.MEDIUMTEXT": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.LONGTEXT": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.MEDIUMBLOB": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.LONGBLOB": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.BINARY": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.VARBINARY": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.INT": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.UINT": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.TINYINT": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.UTINYINT": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.SMALLINT": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.USMALLINT": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.BIGINT": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.UBIGINT": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.FLOAT": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.DOUBLE": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.DECIMAL": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.BIGDECIMAL": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.BIT": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.BOOLEAN": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.JSON": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.JSONB": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.INTERVAL": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.TIME": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.TIMESTAMP": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.TIMESTAMPTZ": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.TIMESTAMPLTZ": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.DATE": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.DATETIME": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.ARRAY": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.MAP": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.UUID": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.GEOGRAPHY": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.GEOMETRY": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.STRUCT": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.NULLABLE": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.HLLSKETCH": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.HSTORE": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.SUPER": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.SERIAL": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.SMALLSERIAL": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.BIGSERIAL": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.XML": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.UNIQUEIDENTIFIER": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.MONEY": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.SMALLMONEY": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.ROWVERSION": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.IMAGE": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.VARIANT": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.OBJECT": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.INET": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.NULL": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.Type.UNKNOWN": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.build": {"tf": 1.7320508075688772}, "sqlglot.expressions.DataType.is_type": {"tf": 1.7320508075688772}, "sqlglot.expressions.PseudoType": {"tf": 1.7320508075688772}, "sqlglot.expressions.StructKwarg": {"tf": 1.7320508075688772}, "sqlglot.expressions.SubqueryPredicate": {"tf": 1.7320508075688772}, "sqlglot.expressions.All": {"tf": 1.7320508075688772}, "sqlglot.expressions.Any": {"tf": 1.7320508075688772}, "sqlglot.expressions.Exists": {"tf": 1.7320508075688772}, "sqlglot.expressions.Command": {"tf": 1.7320508075688772}, "sqlglot.expressions.Transaction": {"tf": 1.7320508075688772}, "sqlglot.expressions.Commit": {"tf": 1.7320508075688772}, "sqlglot.expressions.Rollback": {"tf": 1.7320508075688772}, "sqlglot.expressions.AlterTable": {"tf": 1.7320508075688772}, "sqlglot.expressions.AddConstraint": {"tf": 1.7320508075688772}, "sqlglot.expressions.DropPartition": {"tf": 1.7320508075688772}, "sqlglot.expressions.Binary": {"tf": 1.7320508075688772}, "sqlglot.expressions.Add": {"tf": 1.7320508075688772}, "sqlglot.expressions.Connector": {"tf": 1.7320508075688772}, "sqlglot.expressions.And": {"tf": 1.7320508075688772}, "sqlglot.expressions.Or": {"tf": 1.7320508075688772}, "sqlglot.expressions.BitwiseAnd": {"tf": 1.7320508075688772}, "sqlglot.expressions.BitwiseLeftShift": {"tf": 1.7320508075688772}, "sqlglot.expressions.BitwiseOr": {"tf": 1.7320508075688772}, "sqlglot.expressions.BitwiseRightShift": {"tf": 1.7320508075688772}, "sqlglot.expressions.BitwiseXor": {"tf": 1.7320508075688772}, "sqlglot.expressions.Div": {"tf": 1.7320508075688772}, "sqlglot.expressions.Overlaps": {"tf": 1.7320508075688772}, "sqlglot.expressions.Dot": {"tf": 1.7320508075688772}, "sqlglot.expressions.Dot.build": {"tf": 1.7320508075688772}, "sqlglot.expressions.DPipe": {"tf": 1.7320508075688772}, "sqlglot.expressions.EQ": {"tf": 1.7320508075688772}, "sqlglot.expressions.NullSafeEQ": {"tf": 1.7320508075688772}, "sqlglot.expressions.NullSafeNEQ": {"tf": 1.7320508075688772}, "sqlglot.expressions.Distance": {"tf": 1.7320508075688772}, "sqlglot.expressions.Escape": {"tf": 1.7320508075688772}, "sqlglot.expressions.Glob": {"tf": 1.7320508075688772}, "sqlglot.expressions.GT": {"tf": 1.7320508075688772}, "sqlglot.expressions.GTE": {"tf": 1.7320508075688772}, "sqlglot.expressions.ILike": {"tf": 1.7320508075688772}, "sqlglot.expressions.ILikeAny": {"tf": 1.7320508075688772}, "sqlglot.expressions.IntDiv": {"tf": 1.7320508075688772}, "sqlglot.expressions.Is": {"tf": 1.7320508075688772}, "sqlglot.expressions.Kwarg": {"tf": 1.7320508075688772}, "sqlglot.expressions.Like": {"tf": 1.7320508075688772}, "sqlglot.expressions.LikeAny": {"tf": 1.7320508075688772}, "sqlglot.expressions.LT": {"tf": 1.7320508075688772}, "sqlglot.expressions.LTE": {"tf": 1.7320508075688772}, "sqlglot.expressions.Mod": {"tf": 1.7320508075688772}, "sqlglot.expressions.Mul": {"tf": 1.7320508075688772}, "sqlglot.expressions.NEQ": {"tf": 1.7320508075688772}, "sqlglot.expressions.SimilarTo": {"tf": 1.7320508075688772}, "sqlglot.expressions.Slice": {"tf": 1.7320508075688772}, "sqlglot.expressions.Sub": {"tf": 1.7320508075688772}, "sqlglot.expressions.ArrayOverlaps": {"tf": 1.7320508075688772}, "sqlglot.expressions.Unary": {"tf": 1.7320508075688772}, "sqlglot.expressions.BitwiseNot": {"tf": 1.7320508075688772}, "sqlglot.expressions.Not": {"tf": 1.7320508075688772}, "sqlglot.expressions.Paren": {"tf": 1.7320508075688772}, "sqlglot.expressions.Neg": {"tf": 1.7320508075688772}, "sqlglot.expressions.Alias": {"tf": 1.7320508075688772}, "sqlglot.expressions.Alias.output_name": {"tf": 11.313708498984761}, "sqlglot.expressions.Aliases": {"tf": 1.7320508075688772}, "sqlglot.expressions.AtTimeZone": {"tf": 1.7320508075688772}, "sqlglot.expressions.Between": {"tf": 1.7320508075688772}, "sqlglot.expressions.Bracket": {"tf": 1.7320508075688772}, "sqlglot.expressions.Distinct": {"tf": 1.7320508075688772}, "sqlglot.expressions.In": {"tf": 1.7320508075688772}, "sqlglot.expressions.TimeUnit": {"tf": 1.7320508075688772}, "sqlglot.expressions.TimeUnit.__init__": {"tf": 1.7320508075688772}, "sqlglot.expressions.Interval": {"tf": 1.7320508075688772}, "sqlglot.expressions.IgnoreNulls": {"tf": 1.7320508075688772}, "sqlglot.expressions.RespectNulls": {"tf": 1.7320508075688772}, "sqlglot.expressions.Func": {"tf": 4.69041575982343}, "sqlglot.expressions.Func.from_arg_list": {"tf": 1.7320508075688772}, "sqlglot.expressions.Func.sql_names": {"tf": 1.7320508075688772}, "sqlglot.expressions.Func.sql_name": {"tf": 1.7320508075688772}, "sqlglot.expressions.Func.default_parser_mappings": {"tf": 1.7320508075688772}, "sqlglot.expressions.AggFunc": {"tf": 1.7320508075688772}, "sqlglot.expressions.Abs": {"tf": 1.7320508075688772}, "sqlglot.expressions.Anonymous": {"tf": 1.7320508075688772}, "sqlglot.expressions.Hll": {"tf": 1.7320508075688772}, "sqlglot.expressions.ApproxDistinct": {"tf": 1.7320508075688772}, "sqlglot.expressions.Array": {"tf": 1.7320508075688772}, "sqlglot.expressions.ToChar": {"tf": 1.7320508075688772}, "sqlglot.expressions.GenerateSeries": {"tf": 1.7320508075688772}, "sqlglot.expressions.ArrayAgg": {"tf": 1.7320508075688772}, "sqlglot.expressions.ArrayAll": {"tf": 1.7320508075688772}, "sqlglot.expressions.ArrayAny": {"tf": 1.7320508075688772}, "sqlglot.expressions.ArrayConcat": {"tf": 1.7320508075688772}, "sqlglot.expressions.ArrayContains": {"tf": 1.7320508075688772}, "sqlglot.expressions.ArrayContained": {"tf": 1.7320508075688772}, "sqlglot.expressions.ArrayFilter": {"tf": 1.7320508075688772}, "sqlglot.expressions.ArrayJoin": {"tf": 1.7320508075688772}, "sqlglot.expressions.ArraySize": {"tf": 1.7320508075688772}, "sqlglot.expressions.ArraySort": {"tf": 1.7320508075688772}, "sqlglot.expressions.ArraySum": {"tf": 1.7320508075688772}, "sqlglot.expressions.ArrayUnionAgg": {"tf": 1.7320508075688772}, "sqlglot.expressions.Avg": {"tf": 1.7320508075688772}, "sqlglot.expressions.AnyValue": {"tf": 1.7320508075688772}, "sqlglot.expressions.Case": {"tf": 1.7320508075688772}, "sqlglot.expressions.Cast": {"tf": 1.7320508075688772}, "sqlglot.expressions.Cast.output_name": {"tf": 11.313708498984761}, "sqlglot.expressions.Cast.is_type": {"tf": 1.7320508075688772}, "sqlglot.expressions.Collate": {"tf": 1.7320508075688772}, "sqlglot.expressions.TryCast": {"tf": 1.7320508075688772}, "sqlglot.expressions.Ceil": {"tf": 1.7320508075688772}, "sqlglot.expressions.Coalesce": {"tf": 1.7320508075688772}, "sqlglot.expressions.Concat": {"tf": 1.7320508075688772}, "sqlglot.expressions.ConcatWs": {"tf": 1.7320508075688772}, "sqlglot.expressions.Count": {"tf": 1.7320508075688772}, "sqlglot.expressions.CountIf": {"tf": 1.7320508075688772}, "sqlglot.expressions.CurrentDate": {"tf": 1.7320508075688772}, "sqlglot.expressions.CurrentDatetime": {"tf": 1.7320508075688772}, "sqlglot.expressions.CurrentTime": {"tf": 1.7320508075688772}, "sqlglot.expressions.CurrentTimestamp": {"tf": 1.7320508075688772}, "sqlglot.expressions.CurrentUser": {"tf": 1.7320508075688772}, "sqlglot.expressions.DateAdd": {"tf": 1.7320508075688772}, "sqlglot.expressions.DateSub": {"tf": 1.7320508075688772}, "sqlglot.expressions.DateDiff": {"tf": 1.7320508075688772}, "sqlglot.expressions.DateTrunc": {"tf": 1.7320508075688772}, "sqlglot.expressions.DatetimeAdd": {"tf": 1.7320508075688772}, "sqlglot.expressions.DatetimeSub": {"tf": 1.7320508075688772}, "sqlglot.expressions.DatetimeDiff": {"tf": 1.7320508075688772}, "sqlglot.expressions.DatetimeTrunc": {"tf": 1.7320508075688772}, "sqlglot.expressions.DayOfWeek": {"tf": 1.7320508075688772}, "sqlglot.expressions.DayOfMonth": {"tf": 1.7320508075688772}, "sqlglot.expressions.DayOfYear": {"tf": 1.7320508075688772}, "sqlglot.expressions.WeekOfYear": {"tf": 1.7320508075688772}, "sqlglot.expressions.LastDateOfMonth": {"tf": 1.7320508075688772}, "sqlglot.expressions.Extract": {"tf": 1.7320508075688772}, "sqlglot.expressions.TimestampAdd": {"tf": 1.7320508075688772}, "sqlglot.expressions.TimestampSub": {"tf": 1.7320508075688772}, "sqlglot.expressions.TimestampDiff": {"tf": 1.7320508075688772}, "sqlglot.expressions.TimestampTrunc": {"tf": 1.7320508075688772}, "sqlglot.expressions.TimeAdd": {"tf": 1.7320508075688772}, "sqlglot.expressions.TimeSub": {"tf": 1.7320508075688772}, "sqlglot.expressions.TimeDiff": {"tf": 1.7320508075688772}, "sqlglot.expressions.TimeTrunc": {"tf": 1.7320508075688772}, "sqlglot.expressions.DateFromParts": {"tf": 1.7320508075688772}, "sqlglot.expressions.DateStrToDate": {"tf": 1.7320508075688772}, "sqlglot.expressions.DateToDateStr": {"tf": 1.7320508075688772}, "sqlglot.expressions.DateToDi": {"tf": 1.7320508075688772}, "sqlglot.expressions.Day": {"tf": 1.7320508075688772}, "sqlglot.expressions.Decode": {"tf": 1.7320508075688772}, "sqlglot.expressions.DiToDate": {"tf": 1.7320508075688772}, "sqlglot.expressions.Encode": {"tf": 1.7320508075688772}, "sqlglot.expressions.Exp": {"tf": 1.7320508075688772}, "sqlglot.expressions.Explode": {"tf": 1.7320508075688772}, "sqlglot.expressions.ExponentialTimeDecayedAvg": {"tf": 1.7320508075688772}, "sqlglot.expressions.Floor": {"tf": 1.7320508075688772}, "sqlglot.expressions.Greatest": {"tf": 1.7320508075688772}, "sqlglot.expressions.GroupConcat": {"tf": 1.7320508075688772}, "sqlglot.expressions.GroupUniqArray": {"tf": 1.7320508075688772}, "sqlglot.expressions.Hex": {"tf": 1.7320508075688772}, "sqlglot.expressions.Histogram": {"tf": 1.7320508075688772}, "sqlglot.expressions.If": {"tf": 1.7320508075688772}, "sqlglot.expressions.IfNull": {"tf": 1.7320508075688772}, "sqlglot.expressions.Initcap": {"tf": 1.7320508075688772}, "sqlglot.expressions.JSONKeyValue": {"tf": 1.7320508075688772}, "sqlglot.expressions.JSONObject": {"tf": 1.7320508075688772}, "sqlglot.expressions.JSONBContains": {"tf": 1.7320508075688772}, "sqlglot.expressions.JSONExtract": {"tf": 1.7320508075688772}, "sqlglot.expressions.JSONExtractScalar": {"tf": 1.7320508075688772}, "sqlglot.expressions.JSONBExtract": {"tf": 1.7320508075688772}, "sqlglot.expressions.JSONBExtractScalar": {"tf": 1.7320508075688772}, "sqlglot.expressions.JSONFormat": {"tf": 1.7320508075688772}, "sqlglot.expressions.Least": {"tf": 1.7320508075688772}, "sqlglot.expressions.Length": {"tf": 1.7320508075688772}, "sqlglot.expressions.Levenshtein": {"tf": 1.7320508075688772}, "sqlglot.expressions.Ln": {"tf": 1.7320508075688772}, "sqlglot.expressions.Log": {"tf": 1.7320508075688772}, "sqlglot.expressions.Log2": {"tf": 1.7320508075688772}, "sqlglot.expressions.Log10": {"tf": 1.7320508075688772}, "sqlglot.expressions.LogicalOr": {"tf": 1.7320508075688772}, "sqlglot.expressions.LogicalAnd": {"tf": 1.7320508075688772}, "sqlglot.expressions.Lower": {"tf": 1.7320508075688772}, "sqlglot.expressions.Map": {"tf": 1.7320508075688772}, "sqlglot.expressions.StarMap": {"tf": 1.7320508075688772}, "sqlglot.expressions.VarMap": {"tf": 1.7320508075688772}, "sqlglot.expressions.MatchAgainst": {"tf": 1.7320508075688772}, "sqlglot.expressions.Max": {"tf": 1.7320508075688772}, "sqlglot.expressions.MD5": {"tf": 1.7320508075688772}, "sqlglot.expressions.Min": {"tf": 1.7320508075688772}, "sqlglot.expressions.Month": {"tf": 1.7320508075688772}, "sqlglot.expressions.Nvl2": {"tf": 1.7320508075688772}, "sqlglot.expressions.Posexplode": {"tf": 1.7320508075688772}, "sqlglot.expressions.Pow": {"tf": 1.7320508075688772}, "sqlglot.expressions.PercentileCont": {"tf": 1.7320508075688772}, "sqlglot.expressions.PercentileDisc": {"tf": 1.7320508075688772}, "sqlglot.expressions.Quantile": {"tf": 1.7320508075688772}, "sqlglot.expressions.Quantiles": {"tf": 1.7320508075688772}, "sqlglot.expressions.QuantileIf": {"tf": 1.7320508075688772}, "sqlglot.expressions.ApproxQuantile": {"tf": 1.7320508075688772}, "sqlglot.expressions.RangeN": {"tf": 1.7320508075688772}, "sqlglot.expressions.ReadCSV": {"tf": 1.7320508075688772}, "sqlglot.expressions.Reduce": {"tf": 1.7320508075688772}, "sqlglot.expressions.RegexpExtract": {"tf": 1.7320508075688772}, "sqlglot.expressions.RegexpLike": {"tf": 1.7320508075688772}, "sqlglot.expressions.RegexpILike": {"tf": 1.7320508075688772}, "sqlglot.expressions.RegexpSplit": {"tf": 1.7320508075688772}, "sqlglot.expressions.Repeat": {"tf": 1.7320508075688772}, "sqlglot.expressions.Round": {"tf": 1.7320508075688772}, "sqlglot.expressions.RowNumber": {"tf": 1.7320508075688772}, "sqlglot.expressions.SafeDivide": {"tf": 1.7320508075688772}, "sqlglot.expressions.SetAgg": {"tf": 1.7320508075688772}, "sqlglot.expressions.SHA": {"tf": 1.7320508075688772}, "sqlglot.expressions.SHA2": {"tf": 1.7320508075688772}, "sqlglot.expressions.SortArray": {"tf": 1.7320508075688772}, "sqlglot.expressions.Split": {"tf": 1.7320508075688772}, "sqlglot.expressions.Substring": {"tf": 1.7320508075688772}, "sqlglot.expressions.StrPosition": {"tf": 1.7320508075688772}, "sqlglot.expressions.StrToDate": {"tf": 1.7320508075688772}, "sqlglot.expressions.StrToTime": {"tf": 1.7320508075688772}, "sqlglot.expressions.StrToUnix": {"tf": 1.7320508075688772}, "sqlglot.expressions.NumberToStr": {"tf": 1.7320508075688772}, "sqlglot.expressions.Struct": {"tf": 1.7320508075688772}, "sqlglot.expressions.StructExtract": {"tf": 1.7320508075688772}, "sqlglot.expressions.Sum": {"tf": 1.7320508075688772}, "sqlglot.expressions.Sqrt": {"tf": 1.7320508075688772}, "sqlglot.expressions.Stddev": {"tf": 1.7320508075688772}, "sqlglot.expressions.StddevPop": {"tf": 1.7320508075688772}, "sqlglot.expressions.StddevSamp": {"tf": 1.7320508075688772}, "sqlglot.expressions.TimeToStr": {"tf": 1.7320508075688772}, "sqlglot.expressions.TimeToTimeStr": {"tf": 1.7320508075688772}, "sqlglot.expressions.TimeToUnix": {"tf": 1.7320508075688772}, "sqlglot.expressions.TimeStrToDate": {"tf": 1.7320508075688772}, "sqlglot.expressions.TimeStrToTime": {"tf": 1.7320508075688772}, "sqlglot.expressions.TimeStrToUnix": {"tf": 1.7320508075688772}, "sqlglot.expressions.Trim": {"tf": 1.7320508075688772}, "sqlglot.expressions.TsOrDsAdd": {"tf": 1.7320508075688772}, "sqlglot.expressions.TsOrDsToDateStr": {"tf": 1.7320508075688772}, "sqlglot.expressions.TsOrDsToDate": {"tf": 1.7320508075688772}, "sqlglot.expressions.TsOrDiToDi": {"tf": 1.7320508075688772}, "sqlglot.expressions.Unhex": {"tf": 1.7320508075688772}, "sqlglot.expressions.UnixToStr": {"tf": 1.7320508075688772}, "sqlglot.expressions.UnixToTime": {"tf": 1.7320508075688772}, "sqlglot.expressions.UnixToTimeStr": {"tf": 1.7320508075688772}, "sqlglot.expressions.Upper": {"tf": 1.7320508075688772}, "sqlglot.expressions.Variance": {"tf": 1.7320508075688772}, "sqlglot.expressions.VariancePop": {"tf": 1.7320508075688772}, "sqlglot.expressions.Week": {"tf": 1.7320508075688772}, "sqlglot.expressions.XMLTable": {"tf": 1.7320508075688772}, "sqlglot.expressions.Year": {"tf": 1.7320508075688772}, "sqlglot.expressions.Use": {"tf": 1.7320508075688772}, "sqlglot.expressions.Merge": {"tf": 1.7320508075688772}, "sqlglot.expressions.When": {"tf": 1.7320508075688772}, "sqlglot.expressions.maybe_parse": {"tf": 10.14889156509222}, "sqlglot.expressions.union": {"tf": 10.344080432788601}, "sqlglot.expressions.intersect": {"tf": 10.344080432788601}, "sqlglot.expressions.except_": {"tf": 10.392304845413264}, "sqlglot.expressions.select": {"tf": 9.797958971132712}, "sqlglot.expressions.from_": {"tf": 9.9498743710662}, "sqlglot.expressions.update": {"tf": 12}, "sqlglot.expressions.delete": {"tf": 9.433981132056603}, "sqlglot.expressions.condition": {"tf": 13.92838827718412}, "sqlglot.expressions.and_": {"tf": 9.848857801796104}, "sqlglot.expressions.or_": {"tf": 9.848857801796104}, "sqlglot.expressions.not_": {"tf": 8.831760866327848}, "sqlglot.expressions.paren": {"tf": 1.7320508075688772}, "sqlglot.expressions.to_identifier": {"tf": 5.291502622129181}, "sqlglot.expressions.to_interval": {"tf": 1.7320508075688772}, "sqlglot.expressions.to_table": {"tf": 5.196152422706632}, "sqlglot.expressions.to_column": {"tf": 5.291502622129181}, "sqlglot.expressions.alias_": {"tf": 12.649110640673518}, "sqlglot.expressions.subquery": {"tf": 10.198039027185569}, "sqlglot.expressions.column": {"tf": 6.082762530298219}, "sqlglot.expressions.cast": {"tf": 8.888194417315589}, "sqlglot.expressions.table_": {"tf": 5.916079783099616}, "sqlglot.expressions.values": {"tf": 8.888194417315589}, "sqlglot.expressions.var": {"tf": 10.488088481701515}, "sqlglot.expressions.rename_table": {"tf": 4.898979485566356}, "sqlglot.expressions.convert": {"tf": 5}, "sqlglot.expressions.replace_children": {"tf": 2}, "sqlglot.expressions.column_table_names": {"tf": 8.48528137423857}, "sqlglot.expressions.table_name": {"tf": 9.797958971132712}, "sqlglot.expressions.replace_tables": {"tf": 10.44030650891055}, "sqlglot.expressions.replace_placeholders": {"tf": 12.529964086141668}, "sqlglot.expressions.expand": {"tf": 14.247806848775006}, "sqlglot.expressions.func": {"tf": 12.884098726725126}, "sqlglot.expressions.true": {"tf": 1.7320508075688772}, "sqlglot.expressions.false": {"tf": 1.7320508075688772}, "sqlglot.expressions.null": {"tf": 1.7320508075688772}, "sqlglot.generator": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator": {"tf": 11.532562594670797}, "sqlglot.generator.Generator.__init__": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.generate": {"tf": 3}, "sqlglot.generator.Generator.unsupported": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.sep": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.seg": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.pad_comment": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.maybe_comment": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.wrap": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.no_identify": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.normalize_func": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.indent": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.uncache_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.cache_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.characterset_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.column_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.columnposition_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.columndef_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.columnconstraint_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.autoincrementcolumnconstraint_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.compresscolumnconstraint_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.generatedasidentitycolumnconstraint_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.notnullcolumnconstraint_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.primarykeycolumnconstraint_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.uniquecolumnconstraint_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.create_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.describe_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.prepend_ctes": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.with_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.cte_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.tablealias_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.bitstring_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.hexstring_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.bytestring_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.datatype_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.directory_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.delete_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.drop_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.except_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.except_op": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.fetch_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.filter_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.hint_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.index_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.identifier_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.inputoutputformat_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.national_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.partition_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.properties_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.root_properties": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.properties": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.with_properties": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.locate_properties": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.property_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.likeproperty_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.fallbackproperty_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.journalproperty_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.freespaceproperty_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.afterjournalproperty_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.checksumproperty_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.mergeblockratioproperty_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.datablocksizeproperty_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.blockcompressionproperty_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.isolatedloadingproperty_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.lockingproperty_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.withdataproperty_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.insert_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.intersect_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.intersect_op": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.introducer_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.pseudotype_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.onconflict_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.returning_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.rowformatdelimitedproperty_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.table_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.tablesample_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.pivot_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.tuple_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.update_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.values_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.var_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.into_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.from_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.group_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.having_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.join_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.lambda_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.lateral_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.limit_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.offset_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.setitem_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.set_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.pragma_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.lock_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.literal_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.loaddata_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.null_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.boolean_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.order_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.cluster_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.distribute_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.sort_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.ordered_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.matchrecognize_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.query_modifiers": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.select_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.schema_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.star_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.structkwarg_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.parameter_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.sessionparameter_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.placeholder_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.subquery_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.qualify_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.union_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.union_op": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.unnest_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.where_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.window_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.partition_by_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.window_spec_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.withingroup_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.between_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.bracket_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.all_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.any_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.exists_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.case_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.constraint_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.extract_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.trim_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.concat_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.check_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.foreignkey_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.primarykey_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.unique_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.if_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.matchagainst_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.jsonkeyvalue_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.jsonobject_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.in_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.in_unnest_op": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.interval_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.return_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.reference_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.anonymous_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.paren_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.neg_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.not_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.alias_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.aliases_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.attimezone_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.add_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.and_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.connector_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.bitwiseand_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.bitwiseleftshift_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.bitwisenot_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.bitwiseor_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.bitwiserightshift_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.bitwisexor_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.cast_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.currentdate_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.collate_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.command_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.comment_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.transaction_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.commit_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.rollback_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.altercolumn_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.renametable_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.altertable_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.droppartition_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.addconstraint_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.distinct_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.ignorenulls_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.respectnulls_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.intdiv_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.dpipe_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.div_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.overlaps_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.distance_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.dot_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.eq_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.escape_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.glob_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.gt_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.gte_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.ilike_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.ilikeany_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.is_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.like_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.likeany_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.similarto_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.lt_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.lte_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.mod_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.mul_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.neq_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.nullsafeeq_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.nullsafeneq_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.or_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.slice_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.sub_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.trycast_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.use_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.binary": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.function_fallback_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.func": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.format_args": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.text_width": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.format_time": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.expressions": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.op_expressions": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.naked_property": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.set_operation": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.tag_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.token_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.userdefinedfunction_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.joinhint_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.kwarg_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.when_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.merge_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.tochar_sql": {"tf": 1.7320508075688772}, "sqlglot.helper": {"tf": 1.7320508075688772}, "sqlglot.helper.AutoName": {"tf": 2.449489742783178}, "sqlglot.helper.seq_get": {"tf": 3.3166247903554}, "sqlglot.helper.ensure_list": {"tf": 4.795831523312719}, "sqlglot.helper.ensure_collection": {"tf": 5.196152422706632}, "sqlglot.helper.csv": {"tf": 5.291502622129181}, "sqlglot.helper.subclasses": {"tf": 5.744562646538029}, "sqlglot.helper.apply_index_offset": {"tf": 5.830951894845301}, "sqlglot.helper.camel_to_snake_case": {"tf": 2.23606797749979}, "sqlglot.helper.while_changing": {"tf": 5.291502622129181}, "sqlglot.helper.tsort": {"tf": 4.795831523312719}, "sqlglot.helper.open_file": {"tf": 1.7320508075688772}, "sqlglot.helper.csv_reader": {"tf": 5.477225575051661}, "sqlglot.helper.find_new_name": {"tf": 5.291502622129181}, "sqlglot.helper.object_to_dict": {"tf": 1.7320508075688772}, "sqlglot.helper.split_num_words": {"tf": 12.649110640673518}, "sqlglot.helper.is_iterable": {"tf": 8.94427190999916}, "sqlglot.helper.flatten": {"tf": 11.224972160321824}, "sqlglot.helper.count_params": {"tf": 1.7320508075688772}, "sqlglot.helper.dict_depth": {"tf": 11.489125293076057}, "sqlglot.helper.first": {"tf": 2.449489742783178}, "sqlglot.helper.should_identify": {"tf": 5.291502622129181}, "sqlglot.lineage": {"tf": 1.7320508075688772}, "sqlglot.lineage.Node": {"tf": 1.7320508075688772}, "sqlglot.lineage.Node.__init__": {"tf": 1.7320508075688772}, "sqlglot.lineage.Node.walk": {"tf": 1.7320508075688772}, "sqlglot.lineage.Node.to_html": {"tf": 1.7320508075688772}, "sqlglot.lineage.lineage": {"tf": 6.928203230275509}, "sqlglot.lineage.LineageHTML": {"tf": 2.6457513110645907}, "sqlglot.lineage.LineageHTML.__init__": {"tf": 1.7320508075688772}, "sqlglot.optimizer": {"tf": 1.7320508075688772}, "sqlglot.optimizer.annotate_types": {"tf": 1.7320508075688772}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 13.2664991614216}, "sqlglot.optimizer.annotate_types.TypeAnnotator": {"tf": 1.7320508075688772}, "sqlglot.optimizer.annotate_types.TypeAnnotator.__init__": {"tf": 1.7320508075688772}, "sqlglot.optimizer.annotate_types.TypeAnnotator.annotate": {"tf": 1.7320508075688772}, "sqlglot.optimizer.canonicalize": {"tf": 1.7320508075688772}, "sqlglot.optimizer.canonicalize.canonicalize": {"tf": 4.69041575982343}, "sqlglot.optimizer.canonicalize.add_text_to_concat": {"tf": 1.7320508075688772}, "sqlglot.optimizer.canonicalize.coerce_type": {"tf": 1.7320508075688772}, "sqlglot.optimizer.canonicalize.remove_redundant_casts": {"tf": 1.7320508075688772}, "sqlglot.optimizer.canonicalize.ensure_bool_predicates": {"tf": 1.7320508075688772}, "sqlglot.optimizer.eliminate_ctes": {"tf": 1.7320508075688772}, "sqlglot.optimizer.eliminate_ctes.eliminate_ctes": {"tf": 10.198039027185569}, "sqlglot.optimizer.eliminate_joins": {"tf": 1.7320508075688772}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 10.344080432788601}, "sqlglot.optimizer.eliminate_joins.join_condition": {"tf": 4.58257569495584}, "sqlglot.optimizer.eliminate_subqueries": {"tf": 1.7320508075688772}, "sqlglot.optimizer.eliminate_subqueries.eliminate_subqueries": {"tf": 12.727922061357855}, "sqlglot.optimizer.expand_laterals": {"tf": 1.7320508075688772}, "sqlglot.optimizer.expand_laterals.expand_laterals": {"tf": 10.63014581273465}, "sqlglot.optimizer.expand_multi_table_selects": {"tf": 1.7320508075688772}, "sqlglot.optimizer.expand_multi_table_selects.expand_multi_table_selects": {"tf": 7.874007874011811}, "sqlglot.optimizer.isolate_table_selects": {"tf": 1.7320508075688772}, "sqlglot.optimizer.isolate_table_selects.isolate_table_selects": {"tf": 1.7320508075688772}, "sqlglot.optimizer.lower_identities": {"tf": 1.7320508075688772}, "sqlglot.optimizer.lower_identities.lower_identities": {"tf": 9.797958971132712}, "sqlglot.optimizer.merge_subqueries": {"tf": 1.7320508075688772}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 11.180339887498949}, "sqlglot.optimizer.merge_subqueries.merge_ctes": {"tf": 1.7320508075688772}, "sqlglot.optimizer.merge_subqueries.merge_derived_tables": {"tf": 1.7320508075688772}, "sqlglot.optimizer.normalize": {"tf": 1.7320508075688772}, "sqlglot.optimizer.normalize.normalize": {"tf": 10.535653752852738}, "sqlglot.optimizer.normalize.normalized": {"tf": 1.7320508075688772}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 9.591663046625438}, "sqlglot.optimizer.normalize.distributive_law": {"tf": 2.23606797749979}, "sqlglot.optimizer.optimize_joins": {"tf": 1.7320508075688772}, "sqlglot.optimizer.optimize_joins.optimize_joins": {"tf": 7.874007874011811}, "sqlglot.optimizer.optimize_joins.reorder_joins": {"tf": 1.7320508075688772}, "sqlglot.optimizer.optimize_joins.normalize": {"tf": 1.7320508075688772}, "sqlglot.optimizer.optimize_joins.other_table_names": {"tf": 1.7320508075688772}, "sqlglot.optimizer.optimizer": {"tf": 1.7320508075688772}, "sqlglot.optimizer.optimizer.optimize": {"tf": 7.54983443527075}, "sqlglot.optimizer.pushdown_predicates": {"tf": 1.7320508075688772}, "sqlglot.optimizer.pushdown_predicates.pushdown_predicates": {"tf": 10.344080432788601}, "sqlglot.optimizer.pushdown_predicates.pushdown": {"tf": 1.7320508075688772}, "sqlglot.optimizer.pushdown_predicates.pushdown_cnf": {"tf": 1.7320508075688772}, "sqlglot.optimizer.pushdown_predicates.pushdown_dnf": {"tf": 1.7320508075688772}, "sqlglot.optimizer.pushdown_predicates.nodes_for_predicate": {"tf": 1.7320508075688772}, "sqlglot.optimizer.pushdown_predicates.replace_aliases": {"tf": 1.7320508075688772}, "sqlglot.optimizer.pushdown_projections": {"tf": 1.7320508075688772}, "sqlglot.optimizer.pushdown_projections.DEFAULT_SELECTION": {"tf": 1.7320508075688772}, "sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 10.44030650891055}, "sqlglot.optimizer.qualify_columns": {"tf": 1.7320508075688772}, "sqlglot.optimizer.qualify_columns.qualify_columns": {"tf": 11.575836902790225}, "sqlglot.optimizer.qualify_columns.validate_qualify_columns": {"tf": 2}, "sqlglot.optimizer.qualify_columns.Resolver": {"tf": 2.449489742783178}, "sqlglot.optimizer.qualify_columns.Resolver.__init__": {"tf": 1.7320508075688772}, "sqlglot.optimizer.qualify_columns.Resolver.get_table": {"tf": 4.795831523312719}, "sqlglot.optimizer.qualify_columns.Resolver.all_columns": {"tf": 1.4142135623730951}, "sqlglot.optimizer.qualify_columns.Resolver.get_source_columns": {"tf": 2}, "sqlglot.optimizer.qualify_tables": {"tf": 1.7320508075688772}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"tf": 10.862780491200215}, "sqlglot.optimizer.scope": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.ScopeType": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.ScopeType.ROOT": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.ScopeType.SUBQUERY": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.ScopeType.DERIVED_TABLE": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.ScopeType.CTE": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.ScopeType.UNION": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.ScopeType.UDTF": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.Scope": {"tf": 9.539392014169456}, "sqlglot.optimizer.scope.Scope.__init__": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.Scope.clear_cache": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.Scope.branch": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.walk": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.Scope.find": {"tf": 5.744562646538029}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 5.656854249492381}, "sqlglot.optimizer.scope.Scope.replace": {"tf": 5.477225575051661}, "sqlglot.optimizer.scope.Scope.tables": {"tf": 3.3166247903554}, "sqlglot.optimizer.scope.Scope.ctes": {"tf": 3.3166247903554}, "sqlglot.optimizer.scope.Scope.derived_tables": {"tf": 4.47213595499958}, "sqlglot.optimizer.scope.Scope.udtfs": {"tf": 3.3166247903554}, "sqlglot.optimizer.scope.Scope.subqueries": {"tf": 4.47213595499958}, "sqlglot.optimizer.scope.Scope.columns": {"tf": 3.4641016151377544}, "sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 3.872983346207417}, "sqlglot.optimizer.scope.Scope.cte_sources": {"tf": 3.3166247903554}, "sqlglot.optimizer.scope.Scope.selects": {"tf": 4}, "sqlglot.optimizer.scope.Scope.external_columns": {"tf": 3.4641016151377544}, "sqlglot.optimizer.scope.Scope.unqualified_columns": {"tf": 3.3166247903554}, "sqlglot.optimizer.scope.Scope.join_hints": {"tf": 3.1622776601683795}, "sqlglot.optimizer.scope.Scope.source_columns": {"tf": 4.898979485566356}, "sqlglot.optimizer.scope.Scope.is_subquery": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.is_derived_table": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.is_union": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.is_cte": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.is_root": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.is_udtf": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.Scope.is_correlated_subquery": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.rename_source": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.add_source": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.remove_source": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.traverse": {"tf": 3.3166247903554}, "sqlglot.optimizer.scope.Scope.ref_count": {"tf": 3.3166247903554}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 13.601470508735444}, "sqlglot.optimizer.scope.build_scope": {"tf": 4.69041575982343}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 5.385164807134504}, "sqlglot.optimizer.simplify": {"tf": 1.7320508075688772}, "sqlglot.optimizer.simplify.simplify": {"tf": 9.643650760992955}, "sqlglot.optimizer.simplify.rewrite_between": {"tf": 2.449489742783178}, "sqlglot.optimizer.simplify.simplify_not": {"tf": 2}, "sqlglot.optimizer.simplify.flatten": {"tf": 2}, "sqlglot.optimizer.simplify.simplify_connectors": {"tf": 1.7320508075688772}, "sqlglot.optimizer.simplify.remove_compliments": {"tf": 2.6457513110645907}, "sqlglot.optimizer.simplify.uniq_sort": {"tf": 2.449489742783178}, "sqlglot.optimizer.simplify.absorb_and_eliminate": {"tf": 2.8284271247461903}, "sqlglot.optimizer.simplify.simplify_literals": {"tf": 1.7320508075688772}, "sqlglot.optimizer.simplify.simplify_parens": {"tf": 1.7320508075688772}, "sqlglot.optimizer.simplify.remove_where_true": {"tf": 1.7320508075688772}, "sqlglot.optimizer.simplify.always_true": {"tf": 1.7320508075688772}, "sqlglot.optimizer.simplify.is_complement": {"tf": 1.7320508075688772}, "sqlglot.optimizer.simplify.is_false": {"tf": 1.7320508075688772}, "sqlglot.optimizer.simplify.is_null": {"tf": 1.7320508075688772}, "sqlglot.optimizer.simplify.eval_boolean": {"tf": 1.7320508075688772}, "sqlglot.optimizer.simplify.extract_date": {"tf": 1.7320508075688772}, "sqlglot.optimizer.simplify.extract_interval": {"tf": 1.7320508075688772}, "sqlglot.optimizer.simplify.date_literal": {"tf": 1.7320508075688772}, "sqlglot.optimizer.simplify.boolean_literal": {"tf": 1.7320508075688772}, "sqlglot.optimizer.unnest_subqueries": {"tf": 1.7320508075688772}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 9.899494936611665}, "sqlglot.optimizer.unnest_subqueries.unnest": {"tf": 1.7320508075688772}, "sqlglot.optimizer.unnest_subqueries.decorrelate": {"tf": 1.7320508075688772}, "sqlglot.parser": {"tf": 1.7320508075688772}, "sqlglot.parser.parse_var_map": {"tf": 1.7320508075688772}, "sqlglot.parser.parse_like": {"tf": 1.7320508075688772}, "sqlglot.parser.binary_range_parser": {"tf": 1.7320508075688772}, "sqlglot.parser.Parser": {"tf": 6.082762530298219}, "sqlglot.parser.Parser.__init__": {"tf": 1.7320508075688772}, "sqlglot.parser.Parser.reset": {"tf": 1.7320508075688772}, "sqlglot.parser.Parser.parse": {"tf": 5.291502622129181}, "sqlglot.parser.Parser.parse_into": {"tf": 5.744562646538029}, "sqlglot.parser.Parser.check_errors": {"tf": 1.7320508075688772}, "sqlglot.parser.Parser.raise_error": {"tf": 1.7320508075688772}, "sqlglot.parser.Parser.expression": {"tf": 5.744562646538029}, "sqlglot.parser.Parser.validate_expression": {"tf": 4.358898943540674}, "sqlglot.planner": {"tf": 1.7320508075688772}, "sqlglot.planner.Plan": {"tf": 1.7320508075688772}, "sqlglot.planner.Plan.__init__": {"tf": 1.7320508075688772}, "sqlglot.planner.Step": {"tf": 1.7320508075688772}, "sqlglot.planner.Step.from_expression": {"tf": 7.681145747868608}, "sqlglot.planner.Step.add_dependency": {"tf": 1.7320508075688772}, "sqlglot.planner.Step.to_s": {"tf": 1.7320508075688772}, "sqlglot.planner.Scan": {"tf": 1.7320508075688772}, "sqlglot.planner.Scan.from_expression": {"tf": 7.681145747868608}, "sqlglot.planner.Join": {"tf": 1.7320508075688772}, "sqlglot.planner.Join.from_joins": {"tf": 1.7320508075688772}, "sqlglot.planner.Aggregate": {"tf": 1.7320508075688772}, "sqlglot.planner.Sort": {"tf": 1.7320508075688772}, "sqlglot.planner.SetOperation": {"tf": 1.7320508075688772}, "sqlglot.planner.SetOperation.__init__": {"tf": 1.7320508075688772}, "sqlglot.planner.SetOperation.from_expression": {"tf": 7.681145747868608}, "sqlglot.schema.Schema": {"tf": 1.4142135623730951}, "sqlglot.schema.Schema.add_table": {"tf": 4.358898943540674}, "sqlglot.schema.Schema.column_names": {"tf": 5.477225575051661}, "sqlglot.schema.Schema.get_column_type": {"tf": 5.477225575051661}, "sqlglot.schema.Schema.supported_table_args": {"tf": 2.449489742783178}, "sqlglot.schema.AbstractMappingSchema": {"tf": 4}, "sqlglot.schema.AbstractMappingSchema.__init__": {"tf": 1.7320508075688772}, "sqlglot.schema.AbstractMappingSchema.table_parts": {"tf": 1.7320508075688772}, "sqlglot.schema.AbstractMappingSchema.find": {"tf": 1.7320508075688772}, "sqlglot.schema.MappingSchema": {"tf": 7.211102550927978}, "sqlglot.schema.MappingSchema.__init__": {"tf": 1.7320508075688772}, "sqlglot.schema.MappingSchema.from_mapping_schema": {"tf": 1.7320508075688772}, "sqlglot.schema.MappingSchema.copy": {"tf": 1.7320508075688772}, "sqlglot.schema.MappingSchema.add_table": {"tf": 4.58257569495584}, "sqlglot.schema.MappingSchema.column_names": {"tf": 5.477225575051661}, "sqlglot.schema.MappingSchema.get_column_type": {"tf": 5.477225575051661}, "sqlglot.schema.ensure_schema": {"tf": 1.7320508075688772}, "sqlglot.schema.ensure_column_mapping": {"tf": 1.7320508075688772}, "sqlglot.schema.flatten_schema": {"tf": 1.7320508075688772}, "sqlglot.serde": {"tf": 1.7320508075688772}, "sqlglot.serde.dump": {"tf": 1.7320508075688772}, "sqlglot.serde.load": {"tf": 2.23606797749979}, "sqlglot.time": {"tf": 1.7320508075688772}, "sqlglot.time.format_time": {"tf": 7.681145747868608}, "sqlglot.tokens": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.L_PAREN": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.R_PAREN": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.L_BRACKET": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.R_BRACKET": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.L_BRACE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.R_BRACE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.COMMA": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.DOT": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.DASH": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.PLUS": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.COLON": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.DCOLON": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.SEMICOLON": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.STAR": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.BACKSLASH": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.SLASH": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.LT": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.LTE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.GT": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.GTE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.NOT": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.EQ": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.NEQ": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.NULLSAFE_EQ": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.AND": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.OR": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.AMP": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.DPIPE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.PIPE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.CARET": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.TILDA": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.ARROW": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.DARROW": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.FARROW": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.HASH": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.HASH_ARROW": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.DHASH_ARROW": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.LR_ARROW": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.LT_AT": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.AT_GT": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.DOLLAR": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.PARAMETER": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.SESSION_PARAMETER": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.NATIONAL": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.DAMP": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.BLOCK_START": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.BLOCK_END": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.SPACE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.BREAK": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.STRING": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.NUMBER": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.IDENTIFIER": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.DATABASE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.COLUMN": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.COLUMN_DEF": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.SCHEMA": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.TABLE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.VAR": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.BIT_STRING": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.HEX_STRING": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.BYTE_STRING": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.BIT": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.BOOLEAN": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.TINYINT": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.UTINYINT": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.SMALLINT": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.USMALLINT": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.INT": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.UINT": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.BIGINT": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.UBIGINT": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.FLOAT": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.DOUBLE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.DECIMAL": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.BIGDECIMAL": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.CHAR": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.NCHAR": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.VARCHAR": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.NVARCHAR": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.TEXT": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.MEDIUMTEXT": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.LONGTEXT": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.MEDIUMBLOB": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.LONGBLOB": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.BINARY": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.VARBINARY": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.JSON": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.JSONB": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.TIME": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.TIMESTAMP": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.TIMESTAMPTZ": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.TIMESTAMPLTZ": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.DATETIME": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.DATE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.UUID": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.GEOGRAPHY": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.NULLABLE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.GEOMETRY": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.HLLSKETCH": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.HSTORE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.SUPER": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.SERIAL": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.SMALLSERIAL": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.BIGSERIAL": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.XML": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.UNIQUEIDENTIFIER": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.MONEY": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.SMALLMONEY": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.ROWVERSION": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.IMAGE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.VARIANT": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.OBJECT": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.INET": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.ALIAS": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.ALTER": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.ALWAYS": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.ALL": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.ANTI": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.ANY": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.APPLY": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.ARRAY": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.ASC": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.ASOF": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.AT_TIME_ZONE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.AUTO_INCREMENT": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.BEGIN": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.BETWEEN": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.BOTH": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.BUCKET": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.BY_DEFAULT": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.CACHE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.CASCADE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.CASE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.CHARACTER_SET": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.CLUSTER_BY": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.COLLATE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.COMMAND": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.COMMENT": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.COMMIT": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.COMPOUND": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.CONSTRAINT": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.CREATE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.CROSS": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.CUBE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.CURRENT_DATE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.CURRENT_DATETIME": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.CURRENT_ROW": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.CURRENT_TIME": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.CURRENT_TIMESTAMP": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.CURRENT_USER": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.DEFAULT": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.DELETE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.DESC": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.DESCRIBE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.DISTINCT": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.DISTINCT_FROM": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.DISTRIBUTE_BY": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.DIV": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.DROP": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.ELSE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.END": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.ESCAPE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.EXCEPT": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.EXECUTE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.EXISTS": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.FALSE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.FETCH": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.FILTER": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.FINAL": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.FIRST": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.FOLLOWING": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.FOR": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.FOREIGN_KEY": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.FORMAT": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.FROM": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.FULL": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.FUNCTION": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.GLOB": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.GLOBAL": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.GROUP_BY": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.GROUPING_SETS": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.HAVING": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.HINT": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.IF": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.IGNORE_NULLS": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.ILIKE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.ILIKE_ANY": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.IN": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.INDEX": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.INNER": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.INSERT": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.INTERSECT": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.INTERVAL": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.INTO": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.INTRODUCER": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.IRLIKE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.IS": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.ISNULL": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.JOIN": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.JOIN_MARKER": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.LANGUAGE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.LATERAL": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.LAZY": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.LEADING": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.LEFT": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.LIKE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.LIKE_ANY": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.LIMIT": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.LOAD_DATA": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.LOCAL": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.MAP": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.MATCH_RECOGNIZE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.MATERIALIZED": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.MERGE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.MOD": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.NATURAL": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.NEXT": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.NO_ACTION": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.NOTNULL": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.NULL": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.NULLS_FIRST": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.NULLS_LAST": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.OFFSET": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.ON": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.ONLY": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.OPTIONS": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.ORDER_BY": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.ORDERED": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.ORDINALITY": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.OUTER": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.OUT_OF": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.OVER": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.OVERLAPS": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.OVERWRITE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.PARTITION": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.PARTITION_BY": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.PERCENT": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.PIVOT": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.PLACEHOLDER": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.PRAGMA": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.PRECEDING": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.PRIMARY_KEY": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.PROCEDURE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.PROPERTIES": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.PSEUDO_TYPE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.QUALIFY": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.QUOTE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.RANGE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.RECURSIVE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.REPLACE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.RESPECT_NULLS": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.RETURNING": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.REFERENCES": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.RIGHT": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.RLIKE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.ROLLBACK": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.ROLLUP": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.ROW": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.ROWS": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.SEED": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.SELECT": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.SEMI": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.SEPARATOR": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.SERDE_PROPERTIES": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.SET": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.SHOW": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.SIMILAR_TO": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.SOME": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.SORTKEY": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.SORT_BY": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.STRUCT": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.TABLE_SAMPLE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.TEMPORARY": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.TOP": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.THEN": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.TRAILING": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.TRUE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.UNBOUNDED": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.UNCACHE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.UNION": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.UNLOGGED": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.UNNEST": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.UNPIVOT": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.UPDATE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.USE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.USING": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.VALUES": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.VIEW": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.VOLATILE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.WHEN": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.WHERE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.WINDOW": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.WITH": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.WITH_TIME_ZONE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.WITH_LOCAL_TIME_ZONE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.WITHIN_GROUP": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.WITHOUT_TIME_ZONE": {"tf": 1.7320508075688772}, "sqlglot.tokens.TokenType.UNIQUE": {"tf": 1.7320508075688772}, "sqlglot.tokens.Token": {"tf": 1.7320508075688772}, "sqlglot.tokens.Token.__init__": {"tf": 1.7320508075688772}, "sqlglot.tokens.Token.number": {"tf": 2.23606797749979}, "sqlglot.tokens.Token.string": {"tf": 2.23606797749979}, "sqlglot.tokens.Token.identifier": {"tf": 2.23606797749979}, "sqlglot.tokens.Token.var": {"tf": 2.23606797749979}, "sqlglot.tokens.Token.start": {"tf": 1.7320508075688772}, "sqlglot.tokens.Tokenizer": {"tf": 1.7320508075688772}, "sqlglot.tokens.Tokenizer.reset": {"tf": 1.7320508075688772}, "sqlglot.tokens.Tokenizer.tokenize": {"tf": 2.23606797749979}, "sqlglot.transforms": {"tf": 1.7320508075688772}, "sqlglot.transforms.unalias_group": {"tf": 9.327379053088816}, "sqlglot.transforms.eliminate_distinct_on": {"tf": 5.0990195135927845}, "sqlglot.transforms.eliminate_qualify": {"tf": 3.1622776601683795}, "sqlglot.transforms.remove_precision_parameterized_types": {"tf": 1.7320508075688772}, "sqlglot.transforms.unnest_to_explode": {"tf": 2}, "sqlglot.transforms.explode_to_unnest": {"tf": 2}, "sqlglot.transforms.remove_target_from_merge": {"tf": 1.7320508075688772}, "sqlglot.transforms.preprocess": {"tf": 5}, "sqlglot.trie": {"tf": 1.7320508075688772}, "sqlglot.trie.new_trie": {"tf": 9.539392014169456}, "sqlglot.trie.in_trie": {"tf": 13.228756555322953}}, "df": 1778, "s": {"docs": {"sqlglot": {"tf": 2.449489742783178}, "sqlglot.dataframe": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.diff": {"tf": 2.23606797749979}, "sqlglot.diff.Move": {"tf": 1}, "sqlglot.diff.diff": {"tf": 1}, "sqlglot.executor": {"tf": 3.4641016151377544}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.expressions.Expression.alias": {"tf": 1}, "sqlglot.expressions.Expression.append": {"tf": 1}, "sqlglot.expressions.Expression.find": {"tf": 1}, "sqlglot.expressions.Expression.find_all": {"tf": 1}, "sqlglot.expressions.Expression.find_ancestor": {"tf": 1}, "sqlglot.expressions.Expression.flatten": {"tf": 1}, "sqlglot.expressions.Func": {"tf": 1.7320508075688772}, "sqlglot.expressions.var": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.helper.AutoName": {"tf": 1}, "sqlglot.helper.ensure_list": {"tf": 1}, "sqlglot.helper.ensure_collection": {"tf": 1}, "sqlglot.helper.apply_index_offset": {"tf": 1}, "sqlglot.helper.tsort": {"tf": 1}, "sqlglot.helper.object_to_dict": {"tf": 1}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1}, "sqlglot.optimizer.scope.Scope.derived_tables": {"tf": 1}, "sqlglot.optimizer.scope.Scope.subqueries": {"tf": 1}, "sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}, "sqlglot.optimizer.simplify.simplify_not": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 1}, "sqlglot.parser.Parser.validate_expression": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1.4142135623730951}, "sqlglot.planner.Scan.from_expression": {"tf": 1.4142135623730951}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1.4142135623730951}, "sqlglot.transforms.eliminate_qualify": {"tf": 1.4142135623730951}}, "df": 57, "q": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot": {"tf": 5.5677643628300215}, "sqlglot.pretty": {"tf": 1}, "sqlglot.parse": {"tf": 2.23606797749979}, "sqlglot.parse_one": {"tf": 2.23606797749979}, "sqlglot.transpile": {"tf": 2.449489742783178}, "sqlglot.dataframe": {"tf": 6.48074069840786}, "sqlglot.dialects": {"tf": 2.23606797749979}, "sqlglot.dialects.bigquery": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.format_time_lambda": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 3.605551275463989}, "sqlglot.executor": {"tf": 6.324555320336759}, "sqlglot.executor.execute": {"tf": 2}, "sqlglot.executor.context.Context": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.generate": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.generate_tuple": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1.4142135623730951}, "sqlglot.expressions": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.expressions.Expression.sql": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.replace": {"tf": 1}, "sqlglot.expressions.Expression.assert_is": {"tf": 1}, "sqlglot.expressions.Condition.and_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Condition.or_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Condition.not_": {"tf": 1}, "sqlglot.expressions.Unionable.union": {"tf": 1.4142135623730951}, "sqlglot.expressions.Unionable.intersect": {"tf": 1.4142135623730951}, "sqlglot.expressions.Unionable.except_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Delete.delete": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1.4142135623730951}, "sqlglot.expressions.Delete.returning": {"tf": 1.4142135623730951}, "sqlglot.expressions.Join.on": {"tf": 1.4142135623730951}, "sqlglot.expressions.Join.using": {"tf": 1.4142135623730951}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1.7320508075688772}, "sqlglot.expressions.Union.limit": {"tf": 1.4142135623730951}, "sqlglot.expressions.Union.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.from_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.group_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.order_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.sort_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.cluster_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.limit": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.offset": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.lateral": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.join": {"tf": 2.449489742783178}, "sqlglot.expressions.Select.where": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.having": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.distinct": {"tf": 1}, "sqlglot.expressions.Select.ctas": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.lock": {"tf": 1.4142135623730951}, "sqlglot.expressions.Tag": {"tf": 1}, "sqlglot.expressions.Func": {"tf": 2}, "sqlglot.expressions.maybe_parse": {"tf": 2.23606797749979}, "sqlglot.expressions.union": {"tf": 1.7320508075688772}, "sqlglot.expressions.intersect": {"tf": 1.7320508075688772}, "sqlglot.expressions.except_": {"tf": 1.7320508075688772}, "sqlglot.expressions.select": {"tf": 2}, "sqlglot.expressions.from_": {"tf": 2}, "sqlglot.expressions.update": {"tf": 2}, "sqlglot.expressions.delete": {"tf": 1.7320508075688772}, "sqlglot.expressions.condition": {"tf": 2.23606797749979}, "sqlglot.expressions.and_": {"tf": 1.4142135623730951}, "sqlglot.expressions.or_": {"tf": 1.4142135623730951}, "sqlglot.expressions.not_": {"tf": 1.4142135623730951}, "sqlglot.expressions.to_table": {"tf": 1.4142135623730951}, "sqlglot.expressions.to_column": {"tf": 1.4142135623730951}, "sqlglot.expressions.alias_": {"tf": 1.7320508075688772}, "sqlglot.expressions.subquery": {"tf": 1.4142135623730951}, "sqlglot.expressions.cast": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1.4142135623730951}, "sqlglot.expressions.var": {"tf": 1}, "sqlglot.expressions.replace_tables": {"tf": 1}, "sqlglot.expressions.replace_placeholders": {"tf": 1}, "sqlglot.expressions.expand": {"tf": 1.4142135623730951}, "sqlglot.expressions.func": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.generate": {"tf": 1.7320508075688772}, "sqlglot.lineage.lineage": {"tf": 2}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1.4142135623730951}, "sqlglot.optimizer.canonicalize.canonicalize": {"tf": 1}, "sqlglot.optimizer.eliminate_ctes.eliminate_ctes": {"tf": 1.7320508075688772}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 1.7320508075688772}, "sqlglot.optimizer.eliminate_subqueries.eliminate_subqueries": {"tf": 1.4142135623730951}, "sqlglot.optimizer.expand_laterals.expand_laterals": {"tf": 1.7320508075688772}, "sqlglot.optimizer.expand_multi_table_selects.expand_multi_table_selects": {"tf": 1}, "sqlglot.optimizer.lower_identities.lower_identities": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1.4142135623730951}, "sqlglot.optimizer.normalize.normalize": {"tf": 1}, "sqlglot.optimizer.optimize_joins.optimize_joins": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_predicates": {"tf": 1.7320508075688772}, "sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 1.7320508075688772}, "sqlglot.optimizer.qualify_columns.qualify_columns": {"tf": 1}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1.4142135623730951}, "sqlglot.optimizer.simplify.simplify": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 1}, "sqlglot.parser.Parser.parse": {"tf": 1.7320508075688772}, "sqlglot.parser.Parser.parse_into": {"tf": 1.4142135623730951}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}, "sqlglot.tokens.Tokenizer.tokenize": {"tf": 1.4142135623730951}, "sqlglot.transforms.unalias_group": {"tf": 1}, "sqlglot.transforms.preprocess": {"tf": 1}}, "df": 127, "g": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot": {"tf": 6.324555320336759}, "sqlglot.schema": {"tf": 1}, "sqlglot.parse": {"tf": 1}, "sqlglot.parse_one": {"tf": 1.4142135623730951}, "sqlglot.transpile": {"tf": 1}, "sqlglot.dataframe": {"tf": 5}, "sqlglot.dataframe.sql.Column.cast": {"tf": 1}, "sqlglot.dialects": {"tf": 3}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.diff": {"tf": 2}, "sqlglot.executor": {"tf": 4.242640687119285}, "sqlglot.expressions": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.expressions.Expression.output_name": {"tf": 1}, "sqlglot.expressions.Expression.sql": {"tf": 1}, "sqlglot.expressions.Expression.assert_is": {"tf": 1.4142135623730951}, "sqlglot.expressions.Unionable.union": {"tf": 1.4142135623730951}, "sqlglot.expressions.Unionable.intersect": {"tf": 1.4142135623730951}, "sqlglot.expressions.Unionable.except_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Column.output_name": {"tf": 1}, "sqlglot.expressions.Identifier.output_name": {"tf": 1}, "sqlglot.expressions.Literal.output_name": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1.4142135623730951}, "sqlglot.expressions.Join.using": {"tf": 1.4142135623730951}, "sqlglot.expressions.Union.select": {"tf": 1}, "sqlglot.expressions.Subquery.output_name": {"tf": 1}, "sqlglot.expressions.Star.output_name": {"tf": 1}, "sqlglot.expressions.Alias.output_name": {"tf": 1}, "sqlglot.expressions.Cast.output_name": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1}, "sqlglot.expressions.column_table_names": {"tf": 1.7320508075688772}, "sqlglot.expressions.table_name": {"tf": 1}, "sqlglot.expressions.replace_tables": {"tf": 1.4142135623730951}, "sqlglot.expressions.replace_placeholders": {"tf": 1.4142135623730951}, "sqlglot.expressions.expand": {"tf": 1}, "sqlglot.expressions.func": {"tf": 1}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 2}, "sqlglot.optimizer.eliminate_ctes.eliminate_ctes": {"tf": 2}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 2}, "sqlglot.optimizer.eliminate_subqueries.eliminate_subqueries": {"tf": 2.23606797749979}, "sqlglot.optimizer.expand_laterals.expand_laterals": {"tf": 1.4142135623730951}, "sqlglot.optimizer.expand_multi_table_selects.expand_multi_table_selects": {"tf": 1}, "sqlglot.optimizer.lower_identities.lower_identities": {"tf": 2}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 2.449489742783178}, "sqlglot.optimizer.normalize.normalize": {"tf": 2}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1.7320508075688772}, "sqlglot.optimizer.optimize_joins.optimize_joins": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1.7320508075688772}, "sqlglot.optimizer.pushdown_predicates.pushdown_predicates": {"tf": 2.23606797749979}, "sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 2.23606797749979}, "sqlglot.optimizer.qualify_columns.qualify_columns": {"tf": 2.23606797749979}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"tf": 2.23606797749979}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1.4142135623730951}, "sqlglot.optimizer.simplify.simplify": {"tf": 2.23606797749979}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 2.23606797749979}, "sqlglot.parser.Parser": {"tf": 1}, "sqlglot.schema.Schema.get_column_type": {"tf": 1}, "sqlglot.schema.MappingSchema.get_column_type": {"tf": 1}, "sqlglot.transforms.unalias_group": {"tf": 1.4142135623730951}}, "df": 76, "\u2019": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.diff": {"tf": 1}}, "df": 2}}}}}, "o": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 1}}}, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}}, "f": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "f": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}}}, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 2}}}}}, "o": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}}}}}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot": {"tf": 1.7320508075688772}, "sqlglot.parse": {"tf": 1}, "sqlglot.parse_one": {"tf": 1}, "sqlglot.transpile": {"tf": 1.4142135623730951}, "sqlglot.dataframe": {"tf": 3.4641016151377544}, "sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1}, "sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.executor.execute": {"tf": 1}, "sqlglot.expressions.Expression.sql": {"tf": 1}}, "df": 11, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dataframe": {"tf": 3.3166247903554}}, "df": 1}}}}}}, "q": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1}}, "df": 3}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 2}}, "t": {"docs": {"sqlglot.helper.split_num_words": {"tf": 2.6457513110645907}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.transpile": {"tf": 1}, "sqlglot.expressions.Expression.find": {"tf": 1}, "sqlglot.expressions.Expression.find_all": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1}}, "df": 5}, "s": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 2.449489742783178}, "sqlglot.executor.python.Python.Generator": {"tf": 2.449489742783178}, "sqlglot.generator.Generator": {"tf": 2.449489742783178}}, "df": 21}}, "c": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.diff": {"tf": 1}}, "df": 2, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}, "y": {"docs": {"sqlglot.dialects": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1.4142135623730951}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1.4142135623730951}}, "df": 3}}, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.executor": {"tf": 1}, "sqlglot.expressions.Kwarg": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1}}, "df": 3}}}}}}, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dataframe": {"tf": 2.8284271247461903}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.executor": {"tf": 1}, "sqlglot.transforms.eliminate_qualify": {"tf": 1.4142135623730951}}, "df": 6}}}}}}}, "a": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Func": {"tf": 1}, "sqlglot.helper.camel_to_snake_case": {"tf": 1}}, "df": 2}}}}, "y": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}}}}}}, "x": {"docs": {"sqlglot": {"tf": 2}, "sqlglot.parse": {"tf": 1.4142135623730951}, "sqlglot.parse_one": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.persist": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.diff": {"tf": 1.7320508075688772}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.expressions.Expression.transform": {"tf": 1}, "sqlglot.expressions.union": {"tf": 1.4142135623730951}, "sqlglot.expressions.intersect": {"tf": 1.4142135623730951}, "sqlglot.expressions.except_": {"tf": 1.4142135623730951}, "sqlglot.expressions.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.from_": {"tf": 1.4142135623730951}, "sqlglot.expressions.update": {"tf": 1}, "sqlglot.expressions.delete": {"tf": 1}, "sqlglot.expressions.condition": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.generator.Generator.generate": {"tf": 1.4142135623730951}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1}, "sqlglot.parser.Parser.parse": {"tf": 1.4142135623730951}}, "df": 58}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "x": {"docs": {"sqlglot.optimizer.scope.walk_in_scope": {"tf": 1}}, "df": 1}}}}}, "s": {"docs": {"sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1}}, "df": 1}}, "u": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.not_": {"tf": 1.4142135623730951}}, "df": 1, "e": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}, "p": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.diff": {"tf": 1}}, "df": 2, "d": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}, "r": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dataframe": {"tf": 1}, "sqlglot.dialects": {"tf": 1}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.schema.Schema.supported_table_args": {"tf": 1}, "sqlglot.transforms.eliminate_distinct_on": {"tf": 1.4142135623730951}, "sqlglot.transforms.eliminate_qualify": {"tf": 1}}, "df": 7, "s": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.dialects.bigquery": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.renametable_sql": {"tf": 1}, "sqlglot.executor.env.null_if_any": {"tf": 1}}, "df": 4}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dataframe": {"tf": 2.23606797749979}, "sqlglot.dialects": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.expressions": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.expressions.Delete.returning": {"tf": 1}}, "df": 7}}}}}}}, "b": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.trie.in_trie": {"tf": 1}}, "df": 3, "c": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dialects": {"tf": 1}, "sqlglot.expressions": {"tf": 1}}, "df": 2, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.helper.subclasses": {"tf": 2}}, "df": 1}}}}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}, "t": {"docs": {"sqlglot.expressions.Func": {"tf": 1}}, "df": 1}}}}}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.replace_placeholders": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.optimizer.scope.Scope.find": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1}}, "df": 2}}}}}}, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}, "sqlglot.diff.diff": {"tf": 1}}, "df": 2}}}, "i": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.trie.in_trie": {"tf": 1.4142135623730951}}, "df": 1}}}}, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.expressions.expand": {"tf": 1}, "sqlglot.optimizer.eliminate_subqueries.eliminate_subqueries": {"tf": 1.7320508075688772}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope": {"tf": 1}, "sqlglot.optimizer.scope.Scope.subqueries": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.columns": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 2}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}, "sqlglot.transforms.eliminate_qualify": {"tf": 1}}, "df": 12}}}, "y": {"docs": {"sqlglot.executor": {"tf": 1}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 2.449489742783178}, "sqlglot.expressions.Subquery.unnest": {"tf": 1}, "sqlglot.expressions.subquery": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.Scope": {"tf": 1}, "sqlglot.optimizer.scope.Scope.derived_tables": {"tf": 1}, "sqlglot.optimizer.scope.Scope.subqueries": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_subquery": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_correlated_subquery": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}, "sqlglot.transforms.eliminate_distinct_on": {"tf": 1}, "sqlglot.transforms.eliminate_qualify": {"tf": 1}}, "df": 12, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Union.limit": {"tf": 1}, "sqlglot.optimizer.scope.Scope.subqueries": {"tf": 1}}, "df": 2, "s": {"docs": {"sqlglot.expressions.expand": {"tf": 1}}, "df": 1}}}}}}}}}}}, "s": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "i": {"docs": {"sqlglot": {"tf": 2.6457513110645907}}, "df": 1}}}, "m": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.diff": {"tf": 2}, "sqlglot.planner.Step.from_expression": {"tf": 1.4142135623730951}, "sqlglot.planner.Scan.from_expression": {"tf": 1.4142135623730951}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1.4142135623730951}}, "df": 5, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 1}, "sqlglot.parser.Parser.validate_expression": {"tf": 1}}, "df": 6}, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "c": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.diff": {"tf": 3}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.expressions": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.expressions.Expression.text": {"tf": 1}, "sqlglot.expressions.Expression.find": {"tf": 1}}, "df": 6}, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.parser.Parser.parse_into": {"tf": 1}}, "df": 1}}}}}}, "g": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}}}, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.transpile": {"tf": 1}, "sqlglot.dataframe": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 2.449489742783178}, "sqlglot.diff.diff": {"tf": 1}, "sqlglot.expressions.Expression.walk": {"tf": 1}, "sqlglot.expressions.Select.distinct": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1}, "sqlglot.helper.should_identify": {"tf": 1.4142135623730951}, "sqlglot.schema.MappingSchema": {"tf": 1}}, "df": 11, "n": {"docs": {"sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1}}, "df": 2}}}}, "w": {"docs": {"sqlglot.dataframe": {"tf": 1.4142135623730951}}, "df": 1, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}}}}, "s": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}, "r": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 2, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}, "r": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.dataframe": {"tf": 1.7320508075688772}}, "df": 1}}}}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Select.lock": {"tf": 1.4142135623730951}, "sqlglot.optimizer.qualify_columns.Resolver": {"tf": 1}}, "df": 2}}}}, "o": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.cast": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.with_properties": {"tf": 1}, "sqlglot.diff": {"tf": 2.449489742783178}, "sqlglot.executor": {"tf": 2.8284271247461903}, "sqlglot.generator.Generator.generate": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}, "sqlglot.transforms.eliminate_qualify": {"tf": 1}}, "df": 15, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.dialects": {"tf": 1}, "sqlglot.diff": {"tf": 2.23606797749979}, "sqlglot.executor": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.helper.subclasses": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 1}, "sqlglot.schema.Schema.add_table": {"tf": 1}, "sqlglot.transforms.eliminate_qualify": {"tf": 1}, "sqlglot.transforms.remove_precision_parameterized_types": {"tf": 1}}, "df": 12, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}}, "df": 1}}}}}, "w": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.transpile": {"tf": 2}, "sqlglot.diff": {"tf": 7.937253933193772}, "sqlglot.diff.diff": {"tf": 2.8284271247461903}, "sqlglot.executor": {"tf": 1}, "sqlglot.expressions.expand": {"tf": 1.7320508075688772}, "sqlglot.expressions.func": {"tf": 1}, "sqlglot.optimizer.eliminate_joins.join_condition": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.get_source_columns": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 1}, "sqlglot.optimizer.scope.Scope.cte_sources": {"tf": 1}, "sqlglot.optimizer.scope.Scope.source_columns": {"tf": 2}, "sqlglot.optimizer.scope.Scope.rename_source": {"tf": 1}, "sqlglot.optimizer.scope.Scope.add_source": {"tf": 1}, "sqlglot.optimizer.scope.Scope.remove_source": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1.4142135623730951}, "sqlglot.planner.Scan.from_expression": {"tf": 1.4142135623730951}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1.4142135623730951}, "sqlglot.schema.Schema.get_column_type": {"tf": 1}, "sqlglot.schema.MappingSchema.get_column_type": {"tf": 1}}, "df": 22, "d": {"docs": {"sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}}, "df": 1}, "s": {"docs": {"sqlglot.expressions.expand": {"tf": 1.4142135623730951}, "sqlglot.lineage.lineage": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.all_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.cte_sources": {"tf": 1}, "sqlglot.optimizer.scope.Scope.external_columns": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1.4142135623730951}}, "df": 8}}}}}, "f": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}}, "df": 1}}}}}}, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.diff": {"tf": 2.23606797749979}}, "df": 1, "s": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}, "r": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.executor": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 2}, "sqlglot.optimizer.optimize_joins.reorder_joins": {"tf": 1}, "sqlglot.optimizer.simplify.uniq_sort": {"tf": 1}}, "df": 4, "s": {"docs": {"sqlglot.executor": {"tf": 1}, "sqlglot.helper.tsort": {"tf": 1}}, "df": 2}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.helper.tsort": {"tf": 1}}, "df": 1}}}}}, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.Expression.is_star": {"tf": 1}, "sqlglot.expressions.Union.is_star": {"tf": 1}, "sqlglot.expressions.Select.is_star": {"tf": 1}, "sqlglot.expressions.Subquery.is_star": {"tf": 1}}, "df": 4, "t": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator": {"tf": 1.4142135623730951}, "sqlglot.helper.split_num_words": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1}, "sqlglot.tokens.Token.start": {"tf": 1}}, "df": 26, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.executor": {"tf": 1.4142135623730951}}, "df": 2}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.executor.python.Python.Generator": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator": {"tf": 1.4142135623730951}}, "df": 21}}}}, "s": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.parse": {"tf": 1}, "sqlglot.parse_one": {"tf": 1.4142135623730951}, "sqlglot.transpile": {"tf": 1}, "sqlglot.dataframe": {"tf": 1}, "sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1}, "sqlglot.executor": {"tf": 1}, "sqlglot.executor.execute": {"tf": 1}, "sqlglot.expressions.Expression.parent_select": {"tf": 1}, "sqlglot.expressions.Select.ctas": {"tf": 1}, "sqlglot.expressions.except_": {"tf": 1}, "sqlglot.expressions.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.from_": {"tf": 1.4142135623730951}, "sqlglot.expressions.update": {"tf": 2.23606797749979}, "sqlglot.expressions.delete": {"tf": 2}, "sqlglot.expressions.values": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}, "sqlglot.parser.Parser.parse": {"tf": 1}}, "df": 18, "s": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.transpile": {"tf": 1}, "sqlglot.dataframe": {"tf": 2.6457513110645907}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.transforms.eliminate_distinct_on": {"tf": 1}, "sqlglot.transforms.eliminate_qualify": {"tf": 1}, "sqlglot.transforms.remove_target_from_merge": {"tf": 1}}, "df": 29}}}}}}, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}}, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.dialects": {"tf": 1.4142135623730951}, "sqlglot.dialects.bigquery": {"tf": 1}, "sqlglot.optimizer.canonicalize.canonicalize": {"tf": 1}}, "df": 3, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}}}}}, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff.ChangeDistiller": {"tf": 1}}, "df": 1}}}}}, "g": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.diff": {"tf": 1}}, "df": 2}}, "b": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}, "r": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 3}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 3}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 3}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 3}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 3}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 3}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 3}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 3}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 3}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 3}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 3}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 3}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 3}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 3}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 3}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 3}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 3}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 3}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 3}, "sqlglot.executor.python.Python.Generator": {"tf": 3}, "sqlglot.expressions.Expression.append": {"tf": 1}, "sqlglot.expressions.Expression.set": {"tf": 1}, "sqlglot.expressions.Condition.and_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Condition.or_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Unionable.union": {"tf": 1.4142135623730951}, "sqlglot.expressions.Unionable.intersect": {"tf": 1.4142135623730951}, "sqlglot.expressions.Unionable.except_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Join.on": {"tf": 1.4142135623730951}, "sqlglot.expressions.Join.using": {"tf": 1.4142135623730951}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1.7320508075688772}, "sqlglot.expressions.Union.limit": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.from_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.group_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.order_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.sort_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.cluster_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.limit": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.offset": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.lateral": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.join": {"tf": 2.23606797749979}, "sqlglot.expressions.Select.where": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.having": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.ctas": {"tf": 1.4142135623730951}, "sqlglot.expressions.union": {"tf": 1.7320508075688772}, "sqlglot.expressions.intersect": {"tf": 1.7320508075688772}, "sqlglot.expressions.except_": {"tf": 1.7320508075688772}, "sqlglot.expressions.from_": {"tf": 1.4142135623730951}, "sqlglot.expressions.condition": {"tf": 1.4142135623730951}, "sqlglot.expressions.and_": {"tf": 1.4142135623730951}, "sqlglot.expressions.or_": {"tf": 1.4142135623730951}, "sqlglot.expressions.not_": {"tf": 1.4142135623730951}, "sqlglot.expressions.subquery": {"tf": 1.7320508075688772}, "sqlglot.expressions.table_": {"tf": 1.7320508075688772}, "sqlglot.expressions.table_name": {"tf": 1}, "sqlglot.expressions.replace_tables": {"tf": 1}, "sqlglot.expressions.replace_placeholders": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator": {"tf": 3}, "sqlglot.helper.ensure_collection": {"tf": 1}, "sqlglot.helper.is_iterable": {"tf": 1}, "sqlglot.helper.flatten": {"tf": 1}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.source_columns": {"tf": 1}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1}, "sqlglot.schema.MappingSchema": {"tf": 1}}, "df": 65, "f": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}}}, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe": {"tf": 2}, "sqlglot.diff": {"tf": 1}, "sqlglot.executor.execute": {"tf": 1}, "sqlglot.schema.Schema.add_table": {"tf": 1}, "sqlglot.schema.MappingSchema.add_table": {"tf": 1}}, "df": 5, "d": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.diff": {"tf": 1}}, "df": 2}, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe": {"tf": 2.23606797749979}}, "df": 1}}}}, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.dataframe": {"tf": 3.7416573867739413}}, "df": 1}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot": {"tf": 1.7320508075688772}, "sqlglot.parse": {"tf": 1.4142135623730951}, "sqlglot.parse_one": {"tf": 1.4142135623730951}, "sqlglot.transpile": {"tf": 2}, "sqlglot.dataframe": {"tf": 2.6457513110645907}, "sqlglot.dataframe.sql.Column.cast": {"tf": 1}, "sqlglot.dialects": {"tf": 1.4142135623730951}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 2.449489742783178}, "sqlglot.diff": {"tf": 3.1622776601683795}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.executor.python.Python.Generator": {"tf": 2.449489742783178}, "sqlglot.expressions.Expression.is_string": {"tf": 1}, "sqlglot.expressions.Expression.alias": {"tf": 1}, "sqlglot.expressions.Expression.output_name": {"tf": 1}, "sqlglot.expressions.Expression.sql": {"tf": 1.7320508075688772}, "sqlglot.expressions.Unionable.union": {"tf": 1}, "sqlglot.expressions.Unionable.intersect": {"tf": 1}, "sqlglot.expressions.Unionable.except_": {"tf": 1}, "sqlglot.expressions.Column.output_name": {"tf": 1}, "sqlglot.expressions.Identifier.output_name": {"tf": 1}, "sqlglot.expressions.Literal.output_name": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Union.limit": {"tf": 1}, "sqlglot.expressions.Select.limit": {"tf": 1}, "sqlglot.expressions.Select.offset": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.ctas": {"tf": 1}, "sqlglot.expressions.Subquery.output_name": {"tf": 1}, "sqlglot.expressions.Star.output_name": {"tf": 1}, "sqlglot.expressions.Alias.output_name": {"tf": 1}, "sqlglot.expressions.Func": {"tf": 1}, "sqlglot.expressions.Cast.output_name": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 2.449489742783178}, "sqlglot.expressions.union": {"tf": 1.4142135623730951}, "sqlglot.expressions.intersect": {"tf": 1.4142135623730951}, "sqlglot.expressions.except_": {"tf": 1.4142135623730951}, "sqlglot.expressions.select": {"tf": 1.7320508075688772}, "sqlglot.expressions.from_": {"tf": 1.7320508075688772}, "sqlglot.expressions.condition": {"tf": 1.7320508075688772}, "sqlglot.expressions.to_interval": {"tf": 1}, "sqlglot.expressions.to_table": {"tf": 1}, "sqlglot.expressions.to_column": {"tf": 1}, "sqlglot.expressions.table_name": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator": {"tf": 2.449489742783178}, "sqlglot.generator.Generator.generate": {"tf": 1.7320508075688772}, "sqlglot.helper.AutoName": {"tf": 1}, "sqlglot.helper.csv": {"tf": 1.7320508075688772}, "sqlglot.helper.should_identify": {"tf": 1}, "sqlglot.lineage.lineage": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1}, "sqlglot.parser.Parser.parse": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 1}, "sqlglot.schema.Schema.add_table": {"tf": 1}, "sqlglot.schema.MappingSchema.add_table": {"tf": 1}, "sqlglot.time.format_time": {"tf": 1.4142135623730951}, "sqlglot.tokens.Token.string": {"tf": 1.4142135623730951}, "sqlglot.tokens.Tokenizer.tokenize": {"tf": 1}}, "df": 94, "s": {"docs": {"sqlglot.transpile": {"tf": 1}, "sqlglot.diff": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.expressions.Expression.text": {"tf": 1}, "sqlglot.expressions.Condition.and_": {"tf": 1}, "sqlglot.expressions.Condition.or_": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Delete.returning": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Join.using": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.expressions.Select.select": {"tf": 1}, "sqlglot.expressions.Select.lateral": {"tf": 1}, "sqlglot.expressions.Select.where": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1}, "sqlglot.expressions.and_": {"tf": 1}, "sqlglot.expressions.or_": {"tf": 1}, "sqlglot.expressions.not_": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1}, "sqlglot.expressions.subquery": {"tf": 1}, "sqlglot.trie.new_trie": {"tf": 1}}, "df": 26}, "t": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe": {"tf": 2.6457513110645907}}, "df": 1}}}}}}}, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}}, "df": 1}}}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.dataframe": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1.7320508075688772}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1.4142135623730951}, "sqlglot.planner.Scan.from_expression": {"tf": 1.4142135623730951}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1.4142135623730951}}, "df": 7, "s": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.diff.diff": {"tf": 1}, "sqlglot.executor": {"tf": 2.23606797749979}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}}, "df": 6}}, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.dataframe": {"tf": 1.4142135623730951}, "sqlglot.expressions.Func": {"tf": 1}}, "df": 2}}, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.DataFrame.persist": {"tf": 1}}, "df": 1}}}}, "p": {"docs": {"sqlglot.expressions.Expression.walk": {"tf": 1}}, "df": 1, "p": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.optimizer.scope.walk_in_scope": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 1}}, "df": 2}}}}, "s": {"docs": {"sqlglot.trie.in_trie": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}}, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}}, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 2}}}, "o": {"docs": {}, "df": 0, "w": {"docs": {"sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.generate": {"tf": 1}}, "df": 3}}, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot": {"tf": 6.164414002968976}, "sqlglot.dataframe": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.diff": {"tf": 2.8284271247461903}, "sqlglot.executor": {"tf": 3.605551275463989}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.expressions": {"tf": 1}, "sqlglot.expressions.Expression.output_name": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.parent_select": {"tf": 1}, "sqlglot.expressions.Expression.replace": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.assert_is": {"tf": 2}, "sqlglot.expressions.Unionable.union": {"tf": 2}, "sqlglot.expressions.Unionable.intersect": {"tf": 2}, "sqlglot.expressions.Unionable.except_": {"tf": 2}, "sqlglot.expressions.Column.output_name": {"tf": 1.7320508075688772}, "sqlglot.expressions.Identifier.output_name": {"tf": 1.7320508075688772}, "sqlglot.expressions.Literal.output_name": {"tf": 1.7320508075688772}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 2.449489742783178}, "sqlglot.expressions.Subqueryable.with_": {"tf": 2.449489742783178}, "sqlglot.expressions.Union.limit": {"tf": 2.449489742783178}, "sqlglot.expressions.Union.select": {"tf": 2.8284271247461903}, "sqlglot.expressions.Select.from_": {"tf": 2}, "sqlglot.expressions.Select.group_by": {"tf": 2}, "sqlglot.expressions.Select.order_by": {"tf": 2}, "sqlglot.expressions.Select.sort_by": {"tf": 2}, "sqlglot.expressions.Select.cluster_by": {"tf": 2}, "sqlglot.expressions.Select.limit": {"tf": 2}, "sqlglot.expressions.Select.offset": {"tf": 2}, "sqlglot.expressions.Select.select": {"tf": 2.23606797749979}, "sqlglot.expressions.Select.lateral": {"tf": 2}, "sqlglot.expressions.Select.join": {"tf": 3.1622776601683795}, "sqlglot.expressions.Select.where": {"tf": 2}, "sqlglot.expressions.Select.having": {"tf": 2}, "sqlglot.expressions.Select.distinct": {"tf": 2.23606797749979}, "sqlglot.expressions.Select.ctas": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.lock": {"tf": 2.449489742783178}, "sqlglot.expressions.Subquery.output_name": {"tf": 1.7320508075688772}, "sqlglot.expressions.Tag": {"tf": 1}, "sqlglot.expressions.Star.output_name": {"tf": 1.7320508075688772}, "sqlglot.expressions.Alias.output_name": {"tf": 1.7320508075688772}, "sqlglot.expressions.Cast.output_name": {"tf": 1.7320508075688772}, "sqlglot.expressions.union": {"tf": 2}, "sqlglot.expressions.intersect": {"tf": 2}, "sqlglot.expressions.except_": {"tf": 2}, "sqlglot.expressions.select": {"tf": 2.449489742783178}, "sqlglot.expressions.from_": {"tf": 2.23606797749979}, "sqlglot.expressions.condition": {"tf": 1.7320508075688772}, "sqlglot.expressions.alias_": {"tf": 1.4142135623730951}, "sqlglot.expressions.subquery": {"tf": 2.449489742783178}, "sqlglot.expressions.table_name": {"tf": 1}, "sqlglot.expressions.replace_tables": {"tf": 1.4142135623730951}, "sqlglot.expressions.replace_placeholders": {"tf": 1.4142135623730951}, "sqlglot.expressions.expand": {"tf": 3.1622776601683795}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1.4142135623730951}, "sqlglot.optimizer.eliminate_ctes.eliminate_ctes": {"tf": 1.7320508075688772}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 1.7320508075688772}, "sqlglot.optimizer.eliminate_subqueries.eliminate_subqueries": {"tf": 3}, "sqlglot.optimizer.expand_laterals.expand_laterals": {"tf": 1.4142135623730951}, "sqlglot.optimizer.expand_multi_table_selects.expand_multi_table_selects": {"tf": 1.4142135623730951}, "sqlglot.optimizer.lower_identities.lower_identities": {"tf": 1.4142135623730951}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 2.6457513110645907}, "sqlglot.optimizer.optimize_joins.optimize_joins": {"tf": 1.4142135623730951}, "sqlglot.optimizer.pushdown_predicates.pushdown_predicates": {"tf": 2}, "sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 2}, "sqlglot.optimizer.qualify_columns.qualify_columns": {"tf": 1.4142135623730951}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope": {"tf": 2.6457513110645907}, "sqlglot.optimizer.scope.Scope.derived_tables": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.subqueries": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 1}, "sqlglot.optimizer.scope.Scope.selects": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 2.449489742783178}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 2}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}, "sqlglot.transforms.unalias_group": {"tf": 1.7320508075688772}, "sqlglot.transforms.eliminate_distinct_on": {"tf": 1.4142135623730951}, "sqlglot.transforms.eliminate_qualify": {"tf": 1}}, "df": 99, "s": {"docs": {"sqlglot.executor": {"tf": 1}, "sqlglot.optimizer.expand_multi_table_selects.expand_multi_table_selects": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1}, "sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 1}}, "df": 4}, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.Expression.output_name": {"tf": 1}, "sqlglot.expressions.Column.output_name": {"tf": 1}, "sqlglot.expressions.Identifier.output_name": {"tf": 1}, "sqlglot.expressions.Literal.output_name": {"tf": 1}, "sqlglot.expressions.Subquery.output_name": {"tf": 1}, "sqlglot.expressions.Star.output_name": {"tf": 1}, "sqlglot.expressions.Alias.output_name": {"tf": 1}, "sqlglot.expressions.Cast.output_name": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 1}}, "df": 9, "s": {"docs": {"sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1}, "sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 1.7320508075688772}, "sqlglot.transforms.eliminate_qualify": {"tf": 1}}, "df": 3}}, "|": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.optimizer.scope.Scope": {"tf": 1}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 1}}, "df": 1}}}}}}}, "f": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.dialects": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.executor.table.Tables": {"tf": 1}, "sqlglot.expressions.Expression.unnest": {"tf": 1}, "sqlglot.helper.count_params": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1}}, "df": 7}}, "e": {"docs": {"sqlglot": {"tf": 1.7320508075688772}, "sqlglot.dataframe": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 3, "n": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.transforms.eliminate_qualify": {"tf": 1}}, "df": 2}, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}, "q": {"docs": {"sqlglot.helper.seq_get": {"tf": 1}}, "df": 1, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.diff": {"tf": 2.23606797749979}, "sqlglot.diff.diff": {"tf": 1}, "sqlglot.expressions.Expression.error_messages": {"tf": 1}, "sqlglot.expressions.Dot.build": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1.4142135623730951}, "sqlglot.transforms.preprocess": {"tf": 1.4142135623730951}, "sqlglot.trie.new_trie": {"tf": 1}}, "df": 8, "s": {"docs": {"sqlglot.diff": {"tf": 2.449489742783178}}, "df": 1}}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}}}}}, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.diff": {"tf": 1.7320508075688772}}, "df": 2, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 2}}}}}}}}}}, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1.4142135623730951}}, "df": 1, "r": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1}, "sqlglot.diff": {"tf": 1}}, "df": 2}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Expression.dump": {"tf": 1}, "sqlglot.serde.dump": {"tf": 1}}, "df": 2}}}}}}}}}}, "t": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.transpile": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.7320508075688772}, "sqlglot.diff": {"tf": 5.916079783099616}, "sqlglot.executor": {"tf": 1}, "sqlglot.executor.context.Context": {"tf": 1.4142135623730951}, "sqlglot.executor.python.Python.Generator": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.set": {"tf": 1}, "sqlglot.expressions.Expression.walk": {"tf": 1}, "sqlglot.expressions.Expression.transform": {"tf": 1}, "sqlglot.expressions.Expression.error_messages": {"tf": 1}, "sqlglot.expressions.Unionable.union": {"tf": 1}, "sqlglot.expressions.Unionable.intersect": {"tf": 1}, "sqlglot.expressions.Unionable.except_": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Delete.returning": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Join.using": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Union.limit": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.expressions.Select.limit": {"tf": 1}, "sqlglot.expressions.Select.offset": {"tf": 1}, "sqlglot.expressions.Select.select": {"tf": 1}, "sqlglot.expressions.Select.lateral": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.where": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1}, "sqlglot.expressions.Select.distinct": {"tf": 1}, "sqlglot.expressions.Select.lock": {"tf": 1}, "sqlglot.expressions.Func": {"tf": 1.4142135623730951}, "sqlglot.expressions.union": {"tf": 1}, "sqlglot.expressions.intersect": {"tf": 1}, "sqlglot.expressions.except_": {"tf": 1}, "sqlglot.expressions.update": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.generate": {"tf": 1}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1}, "sqlglot.parser.Parser.expression": {"tf": 1}, "sqlglot.parser.Parser.validate_expression": {"tf": 1}, "sqlglot.schema.MappingSchema": {"tf": 1.7320508075688772}}, "df": 85, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "s": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.append": {"tf": 1}, "sqlglot.expressions.Expression.set": {"tf": 1}, "sqlglot.helper.first": {"tf": 1}}, "df": 4}, "t": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.parser.Parser.check_errors": {"tf": 1}, "sqlglot.parser.Parser.raise_error": {"tf": 1}}, "df": 3}}}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}}, "df": 1, "s": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.diff": {"tf": 1}}, "df": 2}}}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}}, "df": 1, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.Expression.assert_is": {"tf": 1}}, "df": 1}}}}}}, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dataframe": {"tf": 2.449489742783178}}, "df": 1}}}}}, "g": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.executor.python.Python.Generator": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator": {"tf": 1.4142135623730951}}, "df": 21}}}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.helper.subclasses": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1}, "sqlglot.optimizer.scope.Scope.traverse": {"tf": 1}, "sqlglot.trie.in_trie": {"tf": 1.4142135623730951}}, "df": 6, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.helper.find_new_name": {"tf": 1}}, "df": 1}, "d": {"docs": {"sqlglot.trie.in_trie": {"tf": 1}}, "df": 1}}}}}, "m": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}}}, "p": {"docs": {"sqlglot.helper.csv": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1}}, "df": 2, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.helper.csv": {"tf": 1}}, "df": 1}}}}}}}}, "s": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.schema": {"tf": 1}, "sqlglot.dataframe": {"tf": 4.242640687119285}, "sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 2.23606797749979}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.executor.execute": {"tf": 1.7320508075688772}, "sqlglot.expressions.to_table": {"tf": 1.7320508075688772}, "sqlglot.expressions.to_column": {"tf": 1}, "sqlglot.lineage.lineage": {"tf": 1.4142135623730951}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 2.6457513110645907}, "sqlglot.optimizer.lower_identities.lower_identities": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 2.449489742783178}, "sqlglot.optimizer.qualify_columns.qualify_columns": {"tf": 2.23606797749979}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 1}, "sqlglot.schema.Schema.get_column_type": {"tf": 1}, "sqlglot.schema.Schema.supported_table_args": {"tf": 1}, "sqlglot.schema.MappingSchema": {"tf": 2}, "sqlglot.schema.MappingSchema.get_column_type": {"tf": 1}}, "df": 20, "s": {"docs": {"sqlglot.schema.Schema": {"tf": 1}}, "df": 1}}}}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.executor": {"tf": 1.4142135623730951}}, "df": 2}}}, "p": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.diff": {"tf": 3.605551275463989}}, "df": 1, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 4.242640687119285}}, "df": 1, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}, "p": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.executor": {"tf": 1}, "sqlglot.executor.context.Context.__init__": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.all_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 3.3166247903554}, "sqlglot.optimizer.scope.Scope.branch": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1}, "sqlglot.optimizer.scope.Scope.replace": {"tf": 1}, "sqlglot.optimizer.scope.Scope.tables": {"tf": 1}, "sqlglot.optimizer.scope.Scope.ctes": {"tf": 1}, "sqlglot.optimizer.scope.Scope.derived_tables": {"tf": 1}, "sqlglot.optimizer.scope.Scope.udtfs": {"tf": 1}, "sqlglot.optimizer.scope.Scope.subqueries": {"tf": 1}, "sqlglot.optimizer.scope.Scope.columns": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 1}, "sqlglot.optimizer.scope.Scope.cte_sources": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.selects": {"tf": 1}, "sqlglot.optimizer.scope.Scope.external_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.unqualified_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.join_hints": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.source_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_subquery": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_derived_table": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_union": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_cte": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_root": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_udtf": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_correlated_subquery": {"tf": 1}, "sqlglot.optimizer.scope.Scope.rename_source": {"tf": 1}, "sqlglot.optimizer.scope.Scope.add_source": {"tf": 1}, "sqlglot.optimizer.scope.Scope.remove_source": {"tf": 1}, "sqlglot.optimizer.scope.Scope.traverse": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.Scope.ref_count": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.build_scope": {"tf": 2}}, "df": 35, "t": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.scope.Scope": {"tf": 1}}, "df": 1}}}}, "s": {"docs": {"sqlglot.optimizer.scope.Scope": {"tf": 3.605551275463989}, "sqlglot.optimizer.scope.Scope.external_columns": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 2.449489742783178}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1}}, "df": 4}}}}, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1, "s": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.executor": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}, "r": {"docs": {"sqlglot.executor.context.Context": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 1}}, "df": 2, "s": {"docs": {"sqlglot.executor.context.Context": {"tf": 1}}, "df": 1}}}}, "n": {"docs": {"sqlglot.executor": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1.4142135623730951}, "sqlglot.planner.Scan.from_expression": {"tf": 1.4142135623730951}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1.4142135623730951}}, "df": 4}}}, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser": {"tf": 1.4142135623730951}}, "df": 42, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dialects": {"tf": 1}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}}, "df": 3}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}}, "df": 21}}}}}}, "k": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.dataframe": {"tf": 1}}, "df": 2, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.dataframe": {"tf": 1}}, "df": 1}}}}}}, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1}, "sqlglot.optimizer.simplify.simplify": {"tf": 1.7320508075688772}}, "df": 3}, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.executor": {"tf": 1}, "sqlglot.optimizer.simplify.rewrite_between": {"tf": 1}}, "df": 2}}}}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.optimizer.simplify.simplify": {"tf": 1}}, "df": 1}}}}}, "e": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 2.449489742783178}, "sqlglot.executor.execute": {"tf": 1}}, "df": 3}, "y": {"docs": {"sqlglot.optimizer.pushdown_predicates.pushdown_cnf": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dataframe": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 2}, "sqlglot.executor": {"tf": 1}}, "df": 3, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.diff": {"tf": 4.242640687119285}}, "df": 1}}}}}}}}, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.transpile": {"tf": 1}, "sqlglot.dataframe": {"tf": 1}, "sqlglot.errors.ErrorLevel.RAISE": {"tf": 1}, "sqlglot.executor": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1}, "sqlglot.trie.new_trie": {"tf": 1}}, "df": 11}}}, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.dialects": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 4}}}, "z": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}}, "df": 21}}, "d": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 2.449489742783178}, "sqlglot.expressions.union": {"tf": 1.4142135623730951}, "sqlglot.expressions.intersect": {"tf": 1.4142135623730951}, "sqlglot.expressions.except_": {"tf": 1.4142135623730951}}, "df": 4}}, "g": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}}}, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.diff": {"tf": 2.6457513110645907}, "sqlglot.diff.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1}, "sqlglot.expressions.Expression.same_parent": {"tf": 1}, "sqlglot.expressions.Expression.flatten": {"tf": 1}, "sqlglot.expressions.Expression.transform": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 9}}, "f": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.helper.should_identify": {"tf": 1}}, "df": 22}}, "w": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}}}}, "y": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}, "w": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.expressions.Expression.replace": {"tf": 1}}, "df": 1, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}, "i": {"docs": {"sqlglot": {"tf": 1.7320508075688772}, "sqlglot.diff": {"tf": 4.795831523312719}, "sqlglot.executor": {"tf": 4.69041575982343}, "sqlglot.expressions.Expression": {"tf": 1}}, "df": 4, "s": {"docs": {"sqlglot": {"tf": 3.1622776601683795}, "sqlglot.transpile": {"tf": 1}, "sqlglot.dataframe": {"tf": 3.4641016151377544}, "sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.dialects": {"tf": 1.7320508075688772}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 2}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 2}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 2}, "sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 2}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 2}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 2}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 2}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 2}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 2}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 2}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 2}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 2}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 2}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 2}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 2}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 2}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 2}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 2}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 2}, "sqlglot.diff": {"tf": 7.54983443527075}, "sqlglot.diff.diff": {"tf": 1}, "sqlglot.diff.ChangeDistiller": {"tf": 1}, "sqlglot.executor": {"tf": 4.58257569495584}, "sqlglot.executor.context.Context": {"tf": 1.4142135623730951}, "sqlglot.executor.python.Python.Generator": {"tf": 2}, "sqlglot.executor.table.Tables": {"tf": 1}, "sqlglot.expressions": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 2.449489742783178}, "sqlglot.expressions.Expression.is_string": {"tf": 1}, "sqlglot.expressions.Expression.is_number": {"tf": 1}, "sqlglot.expressions.Expression.is_int": {"tf": 1}, "sqlglot.expressions.Expression.is_star": {"tf": 1}, "sqlglot.expressions.Expression.output_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.same_parent": {"tf": 1}, "sqlglot.expressions.Expression.unalias": {"tf": 1}, "sqlglot.expressions.Expression.transform": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.assert_is": {"tf": 2}, "sqlglot.expressions.Expression.error_messages": {"tf": 1.4142135623730951}, "sqlglot.expressions.Condition.and_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Condition.or_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Unionable.union": {"tf": 1.7320508075688772}, "sqlglot.expressions.Unionable.intersect": {"tf": 1.7320508075688772}, "sqlglot.expressions.Unionable.except_": {"tf": 1.7320508075688772}, "sqlglot.expressions.Column.output_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.Delete.where": {"tf": 1.4142135623730951}, "sqlglot.expressions.Delete.returning": {"tf": 1.4142135623730951}, "sqlglot.expressions.Identifier.output_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.Literal.output_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.Join.on": {"tf": 1.4142135623730951}, "sqlglot.expressions.Join.using": {"tf": 1.4142135623730951}, "sqlglot.expressions.Subqueryable.with_": {"tf": 2.23606797749979}, "sqlglot.expressions.Union.limit": {"tf": 2}, "sqlglot.expressions.Union.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.Union.is_star": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 2}, "sqlglot.expressions.Select.group_by": {"tf": 2.449489742783178}, "sqlglot.expressions.Select.order_by": {"tf": 2}, "sqlglot.expressions.Select.sort_by": {"tf": 2}, "sqlglot.expressions.Select.cluster_by": {"tf": 2}, "sqlglot.expressions.Select.limit": {"tf": 2}, "sqlglot.expressions.Select.offset": {"tf": 2}, "sqlglot.expressions.Select.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.lateral": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.join": {"tf": 2.449489742783178}, "sqlglot.expressions.Select.where": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.having": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.ctas": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.is_star": {"tf": 1}, "sqlglot.expressions.Subquery.is_star": {"tf": 1}, "sqlglot.expressions.Subquery.output_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.Star.output_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.Alias.output_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.Func": {"tf": 1.4142135623730951}, "sqlglot.expressions.Cast.output_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.maybe_parse": {"tf": 1.7320508075688772}, "sqlglot.expressions.union": {"tf": 2.23606797749979}, "sqlglot.expressions.intersect": {"tf": 2.23606797749979}, "sqlglot.expressions.except_": {"tf": 2.23606797749979}, "sqlglot.expressions.select": {"tf": 2.23606797749979}, "sqlglot.expressions.from_": {"tf": 2.23606797749979}, "sqlglot.expressions.condition": {"tf": 2.449489742783178}, "sqlglot.expressions.and_": {"tf": 1.7320508075688772}, "sqlglot.expressions.or_": {"tf": 1.7320508075688772}, "sqlglot.expressions.not_": {"tf": 1.7320508075688772}, "sqlglot.expressions.to_table": {"tf": 1.4142135623730951}, "sqlglot.expressions.to_column": {"tf": 1.7320508075688772}, "sqlglot.expressions.alias_": {"tf": 2}, "sqlglot.expressions.subquery": {"tf": 1.7320508075688772}, "sqlglot.expressions.values": {"tf": 1.4142135623730951}, "sqlglot.expressions.convert": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 2}, "sqlglot.generator.Generator.generate": {"tf": 1}, "sqlglot.helper.AutoName": {"tf": 1.4142135623730951}, "sqlglot.helper.seq_get": {"tf": 1}, "sqlglot.helper.ensure_list": {"tf": 1}, "sqlglot.helper.ensure_collection": {"tf": 1}, "sqlglot.helper.while_changing": {"tf": 1}, "sqlglot.helper.is_iterable": {"tf": 2.23606797749979}, "sqlglot.optimizer.lower_identities.lower_identities": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1.4142135623730951}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.Scope.replace": {"tf": 1}, "sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_subquery": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_derived_table": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_union": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_cte": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_root": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_udtf": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_correlated_subquery": {"tf": 1}, "sqlglot.optimizer.scope.Scope.ref_count": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1.4142135623730951}, "sqlglot.optimizer.simplify.rewrite_between": {"tf": 1.4142135623730951}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser.parse_into": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1}, "sqlglot.schema.MappingSchema.add_table": {"tf": 1}, "sqlglot.transforms.eliminate_distinct_on": {"tf": 1}, "sqlglot.transforms.eliminate_qualify": {"tf": 1.4142135623730951}, "sqlglot.trie.new_trie": {"tf": 1.7320508075688772}, "sqlglot.trie.in_trie": {"tf": 2.23606797749979}}, "df": 155, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 2}}}}}}}}, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe": {"tf": 1}}, "df": 1}}}, "n": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 2}, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1.7320508075688772}}, "df": 1}}}}}}}, "t": {"docs": {"sqlglot": {"tf": 3.1622776601683795}, "sqlglot.dataframe": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.cast": {"tf": 1}, "sqlglot.dialects": {"tf": 1.4142135623730951}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.with_properties": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.diff": {"tf": 3.7416573867739413}, "sqlglot.executor": {"tf": 4.898979485566356}, "sqlglot.executor.python.PythonExecutor.generate": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.expressions": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.alias": {"tf": 1}, "sqlglot.expressions.Expression.append": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.assert_is": {"tf": 1}, "sqlglot.expressions.Condition.and_": {"tf": 1}, "sqlglot.expressions.Condition.or_": {"tf": 1}, "sqlglot.expressions.Unionable.union": {"tf": 1}, "sqlglot.expressions.Unionable.intersect": {"tf": 1}, "sqlglot.expressions.Unionable.except_": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Delete.returning": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Join.using": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1}, "sqlglot.expressions.Union.limit": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.expressions.Select.limit": {"tf": 1}, "sqlglot.expressions.Select.offset": {"tf": 1}, "sqlglot.expressions.Select.select": {"tf": 1}, "sqlglot.expressions.Select.lateral": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.where": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1}, "sqlglot.expressions.Select.ctas": {"tf": 1}, "sqlglot.expressions.Select.lock": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1}, "sqlglot.expressions.union": {"tf": 1.4142135623730951}, "sqlglot.expressions.intersect": {"tf": 1.4142135623730951}, "sqlglot.expressions.except_": {"tf": 1.4142135623730951}, "sqlglot.expressions.alias_": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.helper.ensure_list": {"tf": 1.4142135623730951}, "sqlglot.helper.ensure_collection": {"tf": 1.4142135623730951}, "sqlglot.helper.apply_index_offset": {"tf": 1.4142135623730951}, "sqlglot.helper.open_file": {"tf": 1}, "sqlglot.helper.is_iterable": {"tf": 1.4142135623730951}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.get_table": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 1}, "sqlglot.parser.Parser.raise_error": {"tf": 1}, "sqlglot.parser.Parser.validate_expression": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}, "sqlglot.transforms.eliminate_qualify": {"tf": 1.4142135623730951}}, "df": 87, "e": {"docs": {}, "df": 0, "m": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.expressions.Func": {"tf": 1}}, "df": 2, "s": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.expressions.Func": {"tf": 1}, "sqlglot.parser.Parser.validate_expression": {"tf": 1}}, "df": 3}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1, "s": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.helper.is_iterable": {"tf": 2.23606797749979}, "sqlglot.helper.flatten": {"tf": 2}, "sqlglot.helper.first": {"tf": 1}}, "df": 3, "s": {"docs": {"sqlglot.helper.flatten": {"tf": 1}}, "df": 1}}}}}}}, "s": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dialects": {"tf": 1.7320508075688772}, "sqlglot.diff": {"tf": 2.6457513110645907}, "sqlglot.executor": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.pop": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 1}, "sqlglot.parser.Parser.validate_expression": {"tf": 1}, "sqlglot.tokens.Token.number": {"tf": 1}, "sqlglot.tokens.Token.string": {"tf": 1}, "sqlglot.tokens.Token.identifier": {"tf": 1}, "sqlglot.tokens.Token.var": {"tf": 1}}, "df": 12, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "f": {"docs": {"sqlglot.dialects.redshift.Redshift.Generator.renametable_sql": {"tf": 1}, "sqlglot.diff": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.same_parent": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}}, "df": 4}}}}, "\u2019": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}}, "n": {"docs": {"sqlglot": {"tf": 4.123105625617661}, "sqlglot.schema": {"tf": 1}, "sqlglot.transpile": {"tf": 1.4142135623730951}, "sqlglot.dataframe": {"tf": 3.605551275463989}, "sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.dialects": {"tf": 1.4142135623730951}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 2.8284271247461903}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 2.8284271247461903}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 2.8284271247461903}, "sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 2.8284271247461903}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 2.8284271247461903}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 2.8284271247461903}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 2.8284271247461903}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 2.8284271247461903}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 2.8284271247461903}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 2.8284271247461903}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 2.8284271247461903}, "sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 2.8284271247461903}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 2.449489742783178}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 2.8284271247461903}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 2.8284271247461903}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 2.8284271247461903}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 2.8284271247461903}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 2.8284271247461903}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 2.8284271247461903}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 2.8284271247461903}, "sqlglot.diff": {"tf": 8.12403840463596}, "sqlglot.diff.diff": {"tf": 1.7320508075688772}, "sqlglot.diff.ChangeDistiller": {"tf": 1.7320508075688772}, "sqlglot.executor": {"tf": 3.605551275463989}, "sqlglot.executor.execute": {"tf": 1}, "sqlglot.executor.env.null_if_any": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 2.8284271247461903}, "sqlglot.expressions": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 2.23606797749979}, "sqlglot.expressions.Expression.find": {"tf": 1}, "sqlglot.expressions.Expression.find_all": {"tf": 1}, "sqlglot.expressions.Expression.walk": {"tf": 1}, "sqlglot.expressions.Expression.dfs": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.bfs": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.transform": {"tf": 1}, "sqlglot.expressions.Expression.assert_is": {"tf": 1}, "sqlglot.expressions.Column.parts": {"tf": 1}, "sqlglot.expressions.Delete.delete": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Delete.returning": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Join.using": {"tf": 1}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1}, "sqlglot.expressions.Union.limit": {"tf": 1.4142135623730951}, "sqlglot.expressions.Union.select": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.group_by": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.order_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.sort_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.cluster_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.limit": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.offset": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.select": {"tf": 1}, "sqlglot.expressions.Select.lateral": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1}, "sqlglot.expressions.Select.where": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1}, "sqlglot.expressions.Select.distinct": {"tf": 1}, "sqlglot.expressions.Select.ctas": {"tf": 1}, "sqlglot.expressions.Select.lock": {"tf": 1}, "sqlglot.expressions.Kwarg": {"tf": 1}, "sqlglot.expressions.Func": {"tf": 1.4142135623730951}, "sqlglot.expressions.maybe_parse": {"tf": 1.4142135623730951}, "sqlglot.expressions.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.from_": {"tf": 1.4142135623730951}, "sqlglot.expressions.condition": {"tf": 1.4142135623730951}, "sqlglot.expressions.to_table": {"tf": 1}, "sqlglot.expressions.to_column": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1}, "sqlglot.expressions.column_table_names": {"tf": 1}, "sqlglot.expressions.replace_tables": {"tf": 1}, "sqlglot.expressions.replace_placeholders": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator": {"tf": 2.8284271247461903}, "sqlglot.helper.seq_get": {"tf": 1}, "sqlglot.helper.ensure_list": {"tf": 1}, "sqlglot.helper.ensure_collection": {"tf": 1}, "sqlglot.helper.subclasses": {"tf": 1}, "sqlglot.helper.apply_index_offset": {"tf": 1.4142135623730951}, "sqlglot.helper.tsort": {"tf": 1.4142135623730951}, "sqlglot.helper.open_file": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1}, "sqlglot.helper.flatten": {"tf": 1}, "sqlglot.helper.count_params": {"tf": 1}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1.4142135623730951}, "sqlglot.optimizer.normalize.normalize": {"tf": 1}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1.4142135623730951}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1.7320508075688772}, "sqlglot.optimizer.pushdown_predicates.pushdown_predicates": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_cnf": {"tf": 1.4142135623730951}, "sqlglot.optimizer.pushdown_predicates.pushdown_dnf": {"tf": 1.4142135623730951}, "sqlglot.optimizer.qualify_columns.Resolver.all_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1}, "sqlglot.optimizer.scope.Scope.tables": {"tf": 1}, "sqlglot.optimizer.scope.Scope.ctes": {"tf": 1}, "sqlglot.optimizer.scope.Scope.derived_tables": {"tf": 1}, "sqlglot.optimizer.scope.Scope.udtfs": {"tf": 1}, "sqlglot.optimizer.scope.Scope.subqueries": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.columns": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.Scope.external_columns": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.unqualified_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.join_hints": {"tf": 1}, "sqlglot.optimizer.scope.Scope.source_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.rename_source": {"tf": 1}, "sqlglot.optimizer.scope.Scope.traverse": {"tf": 1}, "sqlglot.optimizer.scope.Scope.ref_count": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser.raise_error": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}, "sqlglot.schema.Schema.get_column_type": {"tf": 1}, "sqlglot.schema.MappingSchema": {"tf": 1.4142135623730951}, "sqlglot.schema.MappingSchema.get_column_type": {"tf": 1}, "sqlglot.time.format_time": {"tf": 1}, "sqlglot.transforms.unalias_group": {"tf": 1}, "sqlglot.transforms.eliminate_qualify": {"tf": 2.6457513110645907}, "sqlglot.transforms.remove_precision_parameterized_types": {"tf": 1.7320508075688772}, "sqlglot.transforms.unnest_to_explode": {"tf": 1}, "sqlglot.transforms.explode_to_unnest": {"tf": 1}, "sqlglot.transforms.remove_target_from_merge": {"tf": 1}, "sqlglot.transforms.preprocess": {"tf": 1}, "sqlglot.trie.new_trie": {"tf": 1}, "sqlglot.trie.in_trie": {"tf": 2.449489742783178}}, "df": 160, "p": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.transpile": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1}, "sqlglot.expressions.Condition.and_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Condition.or_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Unionable.union": {"tf": 1.4142135623730951}, "sqlglot.expressions.Unionable.intersect": {"tf": 1.4142135623730951}, "sqlglot.expressions.Unionable.except_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Delete.delete": {"tf": 1.4142135623730951}, "sqlglot.expressions.Delete.where": {"tf": 1.4142135623730951}, "sqlglot.expressions.Delete.returning": {"tf": 1.4142135623730951}, "sqlglot.expressions.Join.on": {"tf": 1.4142135623730951}, "sqlglot.expressions.Join.using": {"tf": 1.4142135623730951}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Union.limit": {"tf": 1.4142135623730951}, "sqlglot.expressions.Union.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.from_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.group_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.order_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.sort_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.cluster_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.limit": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.offset": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.lateral": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.join": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.where": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.having": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.ctas": {"tf": 1.4142135623730951}, "sqlglot.expressions.maybe_parse": {"tf": 2}, "sqlglot.expressions.union": {"tf": 1.4142135623730951}, "sqlglot.expressions.intersect": {"tf": 1.4142135623730951}, "sqlglot.expressions.except_": {"tf": 1.4142135623730951}, "sqlglot.expressions.select": {"tf": 2}, "sqlglot.expressions.from_": {"tf": 2}, "sqlglot.expressions.update": {"tf": 1.4142135623730951}, "sqlglot.expressions.delete": {"tf": 1.4142135623730951}, "sqlglot.expressions.condition": {"tf": 2}, "sqlglot.expressions.and_": {"tf": 1.4142135623730951}, "sqlglot.expressions.or_": {"tf": 1.4142135623730951}, "sqlglot.expressions.not_": {"tf": 1.4142135623730951}, "sqlglot.expressions.alias_": {"tf": 1.4142135623730951}, "sqlglot.expressions.subquery": {"tf": 1.4142135623730951}, "sqlglot.lineage.lineage": {"tf": 1}}, "df": 43, "s": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}}}}}}}}}, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.scope.traverse_scope": {"tf": 1}}, "df": 1}}}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}}}}}}, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1}}, "df": 1}}}}}, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1}, "sqlglot.schema.Schema.column_names": {"tf": 1}, "sqlglot.schema.MappingSchema.column_names": {"tf": 1}, "sqlglot.transforms.eliminate_qualify": {"tf": 1.4142135623730951}}, "df": 43, "s": {"docs": {"sqlglot.expressions.maybe_parse": {"tf": 1}}, "df": 1}, "d": {"docs": {"sqlglot.expressions.subquery": {"tf": 1}, "sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 1}}, "df": 2}}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot": {"tf": 2.23606797749979}, "sqlglot.dataframe": {"tf": 1}}, "df": 2}}, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.Column.cast": {"tf": 1}, "sqlglot.executor.execute": {"tf": 1}, "sqlglot.expressions.Expression.transform": {"tf": 1}, "sqlglot.expressions.Expression.assert_is": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.load": {"tf": 1}, "sqlglot.expressions.Condition.and_": {"tf": 1}, "sqlglot.expressions.Condition.or_": {"tf": 1}, "sqlglot.expressions.Unionable.union": {"tf": 1}, "sqlglot.expressions.Unionable.intersect": {"tf": 1}, "sqlglot.expressions.Unionable.except_": {"tf": 1}, "sqlglot.expressions.Delete.delete": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1.4142135623730951}, "sqlglot.expressions.Delete.returning": {"tf": 1.4142135623730951}, "sqlglot.expressions.Join.on": {"tf": 1.4142135623730951}, "sqlglot.expressions.Join.using": {"tf": 1.4142135623730951}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1.7320508075688772}, "sqlglot.expressions.Union.limit": {"tf": 1.7320508075688772}, "sqlglot.expressions.Union.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.from_": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.group_by": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.order_by": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.sort_by": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.cluster_by": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.limit": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.offset": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.lateral": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.join": {"tf": 2}, "sqlglot.expressions.Select.where": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.having": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.distinct": {"tf": 1}, "sqlglot.expressions.Select.ctas": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.lock": {"tf": 1}, "sqlglot.expressions.union": {"tf": 1.4142135623730951}, "sqlglot.expressions.intersect": {"tf": 1.4142135623730951}, "sqlglot.expressions.except_": {"tf": 1.4142135623730951}, "sqlglot.expressions.select": {"tf": 1}, "sqlglot.expressions.from_": {"tf": 1}, "sqlglot.expressions.condition": {"tf": 1}, "sqlglot.expressions.and_": {"tf": 1}, "sqlglot.expressions.or_": {"tf": 1}, "sqlglot.expressions.not_": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1}, "sqlglot.expressions.subquery": {"tf": 1}, "sqlglot.expressions.column": {"tf": 1}, "sqlglot.expressions.table_": {"tf": 1}, "sqlglot.expressions.func": {"tf": 1}, "sqlglot.helper.count_params": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 1}, "sqlglot.optimizer.scope.Scope.ref_count": {"tf": 1}, "sqlglot.schema.Schema.add_table": {"tf": 1}, "sqlglot.schema.Schema.column_names": {"tf": 1}, "sqlglot.schema.MappingSchema.add_table": {"tf": 1}, "sqlglot.schema.MappingSchema.column_names": {"tf": 1}}, "df": 56, "s": {"docs": {"sqlglot.expressions.Expression.text": {"tf": 1}, "sqlglot.optimizer.scope.Scope.columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.external_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.source_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.traverse": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}}, "df": 6}}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.format_time_lambda": {"tf": 1}, "sqlglot.expressions.Expression.error_messages": {"tf": 1}, "sqlglot.expressions.func": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser.expression": {"tf": 1}, "sqlglot.parser.Parser.validate_expression": {"tf": 1}}, "df": 5, "d": {"docs": {"sqlglot.parser.Parser.validate_expression": {"tf": 1}}, "df": 1}}}}}}}}, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dataframe": {"tf": 1}, "sqlglot.diff": {"tf": 1.7320508075688772}, "sqlglot.executor": {"tf": 1}, "sqlglot.expressions.Expression.walk": {"tf": 1}, "sqlglot.optimizer.normalize.normalize": {"tf": 1}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1}, "sqlglot.optimizer.scope.Scope.replace": {"tf": 1}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 1}, "sqlglot.trie.new_trie": {"tf": 1}}, "df": 11}}}, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dataframe": {"tf": 1}}, "df": 1}}}}}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.diff": {"tf": 2.449489742783178}, "sqlglot.diff.diff": {"tf": 1.4142135623730951}}, "df": 3, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 2}, "sqlglot.diff.Insert": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1}}, "df": 3}}}}, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.lower_identities.lower_identities": {"tf": 1}}, "df": 1}}}}}}}}, "p": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.executor": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1}}, "df": 2}}}}}}, "t": {"6": {"4": {"docs": {"sqlglot": {"tf": 2.23606797749979}, "sqlglot.dialects": {"tf": 2.23606797749979}}, "df": 2}, "docs": {}, "df": 0}, "docs": {"sqlglot": {"tf": 2.6457513110645907}, "sqlglot.dataframe": {"tf": 2}, "sqlglot.dialects": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.7320508075688772}, "sqlglot.diff": {"tf": 2.23606797749979}, "sqlglot.executor.python.Python.Generator": {"tf": 1.7320508075688772}, "sqlglot.expressions.Union.limit": {"tf": 1}, "sqlglot.expressions.Select.limit": {"tf": 1}, "sqlglot.expressions.Select.offset": {"tf": 1}, "sqlglot.expressions.cast": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator": {"tf": 1.7320508075688772}, "sqlglot.helper.dict_depth": {"tf": 1}, "sqlglot.optimizer.normalize.normalize": {"tf": 1}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1}, "sqlglot.optimizer.qualify_columns.qualify_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.ref_count": {"tf": 1}}, "df": 34, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}, "d": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}}}}, "o": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.parse": {"tf": 1}, "sqlglot.parse_one": {"tf": 1.4142135623730951}, "sqlglot.transpile": {"tf": 1}, "sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1}, "sqlglot.diff": {"tf": 2.449489742783178}, "sqlglot.diff.diff": {"tf": 1}, "sqlglot.executor": {"tf": 4.242640687119285}, "sqlglot.executor.python.PythonExecutor.generate": {"tf": 1.4142135623730951}, "sqlglot.executor.python.PythonExecutor.generate_tuple": {"tf": 1}, "sqlglot.expressions.Expression.load": {"tf": 1}, "sqlglot.expressions.Column.to_dot": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Join.using": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.expressions.TimeUnit": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1.4142135623730951}, "sqlglot.expressions.update": {"tf": 1.4142135623730951}, "sqlglot.expressions.delete": {"tf": 1.4142135623730951}, "sqlglot.expressions.to_identifier": {"tf": 1}, "sqlglot.expressions.convert": {"tf": 1}, "sqlglot.expressions.expand": {"tf": 1}, "sqlglot.helper.ensure_list": {"tf": 1}, "sqlglot.helper.ensure_collection": {"tf": 1}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}, "sqlglot.optimizer.canonicalize.canonicalize": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1.4142135623730951}, "sqlglot.optimizer.normalize.normalize": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 1.7320508075688772}, "sqlglot.parser.Parser.parse_into": {"tf": 1.7320508075688772}, "sqlglot.serde.dump": {"tf": 1}, "sqlglot.serde.load": {"tf": 1}, "sqlglot.transforms.eliminate_qualify": {"tf": 1}, "sqlglot.transforms.unnest_to_explode": {"tf": 1}, "sqlglot.transforms.explode_to_unnest": {"tf": 1}}, "df": 43}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.expressions.to_interval": {"tf": 1}}, "df": 2}}}, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot": {"tf": 1}}, "df": 1, "s": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}}, "df": 21}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.generator.Generator.generate": {"tf": 1}}, "df": 1}}}}}}}, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}}}}, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}}, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.func": {"tf": 1.7320508075688772}, "sqlglot.helper.ensure_list": {"tf": 1}, "sqlglot.helper.ensure_collection": {"tf": 1}}, "df": 3, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}}, "f": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.Unionable.intersect": {"tf": 2.23606797749979}, "sqlglot.expressions.intersect": {"tf": 2.23606797749979}}, "df": 2}}}}}, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot": {"tf": 1.4142135623730951}}, "df": 1}}}}, "l": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.Expression.is_int": {"tf": 1}, "sqlglot.expressions.Union.limit": {"tf": 1}, "sqlglot.expressions.Select.limit": {"tf": 1}, "sqlglot.expressions.Select.offset": {"tf": 1}, "sqlglot.helper.apply_index_offset": {"tf": 1}}, "df": 5, "t": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe": {"tf": 2.6457513110645907}}, "df": 1}}}}}}}, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}, "\u2019": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}, "v": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.diff": {"tf": 1}}, "df": 2}, "d": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}}}, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.schema.Schema.column_names": {"tf": 1}, "sqlglot.schema.MappingSchema.column_names": {"tf": 1}}, "df": 2}}}}}}}, "f": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe": {"tf": 1}}, "df": 1}}}}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dataframe": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 2.23606797749979}, "sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}, "sqlglot.schema.Schema.add_table": {"tf": 1}}, "df": 6}}}}}, "s": {"docs": {"sqlglot.expressions.Expression": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}, "r": {"docs": {"sqlglot.executor": {"tf": 1}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}}, "df": 2, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.Expression": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.values": {"tf": 1}, "sqlglot.optimizer.canonicalize.canonicalize": {"tf": 1}}, "df": 2}}}}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "x": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1.4142135623730951}, "sqlglot.helper.seq_get": {"tf": 1.4142135623730951}, "sqlglot.helper.apply_index_offset": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1.4142135623730951}}, "df": 21}, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}}, "df": 21, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}}, "df": 21}}}}}}}}, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Expression": {"tf": 1}}, "df": 1, "s": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.diff.Insert": {"tf": 1}, "sqlglot.diff.Remove": {"tf": 1}, "sqlglot.diff.Move": {"tf": 1}, "sqlglot.diff.Update": {"tf": 1}, "sqlglot.diff.Keep": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1}}, "df": 46}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.helper.is_iterable": {"tf": 1}}, "df": 1}}}}}}, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.diff": {"tf": 2}}, "df": 1}}}}}}}, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.condition": {"tf": 1}}, "df": 1, "s": {"docs": {"sqlglot.expressions.union": {"tf": 1}, "sqlglot.expressions.intersect": {"tf": 1}, "sqlglot.expressions.except_": {"tf": 1}, "sqlglot.expressions.select": {"tf": 1}, "sqlglot.expressions.from_": {"tf": 1}}, "df": 5}}}}}}}}}, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.diff": {"tf": 3.1622776601683795}, "sqlglot.expressions.Expression.unalias": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1}, "sqlglot.optimizer.optimize_joins.normalize": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 1}, "sqlglot.optimizer.scope.Scope.branch": {"tf": 1}}, "df": 6, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}}, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.executor.table.Tables": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1}}, "df": 2}}}}}}}}}, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot": {"tf": 4.358898943540674}, "sqlglot.dataframe": {"tf": 4.47213595499958}, "sqlglot.dialects": {"tf": 2}, "sqlglot.diff": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.output_name": {"tf": 1}, "sqlglot.expressions.Expression.assert_is": {"tf": 1}, "sqlglot.expressions.Unionable.union": {"tf": 1}, "sqlglot.expressions.Unionable.intersect": {"tf": 1}, "sqlglot.expressions.Unionable.except_": {"tf": 1}, "sqlglot.expressions.Column.output_name": {"tf": 1}, "sqlglot.expressions.Identifier.output_name": {"tf": 1}, "sqlglot.expressions.Literal.output_name": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Join.using": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 1}, "sqlglot.expressions.Subquery.output_name": {"tf": 1}, "sqlglot.expressions.Star.output_name": {"tf": 1}, "sqlglot.expressions.Alias.output_name": {"tf": 1}, "sqlglot.expressions.Cast.output_name": {"tf": 1}, "sqlglot.expressions.column_table_names": {"tf": 1}, "sqlglot.expressions.table_name": {"tf": 1}, "sqlglot.expressions.replace_tables": {"tf": 1}, "sqlglot.expressions.replace_placeholders": {"tf": 1}, "sqlglot.expressions.expand": {"tf": 1}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}, "sqlglot.optimizer.eliminate_ctes.eliminate_ctes": {"tf": 1}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 1}, "sqlglot.optimizer.eliminate_subqueries.eliminate_subqueries": {"tf": 1}, "sqlglot.optimizer.expand_laterals.expand_laterals": {"tf": 1}, "sqlglot.optimizer.expand_multi_table_selects.expand_multi_table_selects": {"tf": 1}, "sqlglot.optimizer.lower_identities.lower_identities": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1}, "sqlglot.optimizer.normalize.normalize": {"tf": 1}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1}, "sqlglot.optimizer.optimize_joins.optimize_joins": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_predicates": {"tf": 1}, "sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 1}, "sqlglot.optimizer.qualify_columns.qualify_columns": {"tf": 1}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}, "sqlglot.optimizer.simplify.simplify": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 1}, "sqlglot.transforms.unalias_group": {"tf": 1}}, "df": 43, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1.4142135623730951}}, "df": 2, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dialects": {"tf": 1}, "sqlglot.schema.Schema.add_table": {"tf": 1}}, "df": 3}}}, "s": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.dialects": {"tf": 1}}, "df": 2}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1}, "sqlglot.dialects": {"tf": 1}, "sqlglot.diff": {"tf": 3.4641016151377544}, "sqlglot.diff.ChangeDistiller": {"tf": 1}, "sqlglot.executor": {"tf": 1.7320508075688772}, "sqlglot.expressions": {"tf": 1}}, "df": 7, "s": {"docs": {"sqlglot.dataframe": {"tf": 1}}, "df": 1}}}}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}}, "df": 1}}}}}}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 2}}}}}}}}, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}}, "df": 1}}}}, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.errors.ErrorLevel.IMMEDIATE": {"tf": 1}}, "df": 1}}}}}}}}}}, "d": {"docs": {"sqlglot": {"tf": 4.69041575982343}, "sqlglot.dataframe": {"tf": 3}, "sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.expressions.update": {"tf": 1.4142135623730951}, "sqlglot.expressions.delete": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.ref_count": {"tf": 1}}, "df": 6, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot": {"tf": 3}, "sqlglot.dialects": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 2}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 2}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 2}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 2}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 2}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 2}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 2}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 2}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 2}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 2}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 2}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 2}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 2}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 2}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 2}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 2}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 2}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 2}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 2}, "sqlglot.diff": {"tf": 3.3166247903554}, "sqlglot.diff.diff": {"tf": 2}, "sqlglot.executor.python.Python.Generator": {"tf": 2}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1.4142135623730951}, "sqlglot.expressions.to_identifier": {"tf": 2}, "sqlglot.expressions.replace_placeholders": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator": {"tf": 2}, "sqlglot.optimizer.canonicalize.canonicalize": {"tf": 1}, "sqlglot.tokens.Token.identifier": {"tf": 1.4142135623730951}}, "df": 31, "s": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.dialects": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 2}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 2}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 2}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 2}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 2}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 2}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 2}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 2}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 2}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 2}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 2}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 2}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 2}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 2}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 2}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 2}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 2}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 2}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 2}, "sqlglot.diff": {"tf": 2}, "sqlglot.executor.python.Python.Generator": {"tf": 2}, "sqlglot.expressions.Expression.text": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 2}, "sqlglot.optimizer.lower_identities.lower_identities": {"tf": 1.4142135623730951}}, "df": 26}}, "d": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.helper.should_identify": {"tf": 1.4142135623730951}}, "df": 2}}}, "y": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.helper.should_identify": {"tf": 1.4142135623730951}, "sqlglot.optimizer.canonicalize.canonicalize": {"tf": 1.4142135623730951}}, "df": 26, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}}, "df": 1}}}}}, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.transpile": {"tf": 1}}, "df": 1}, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.optimizer.lower_identities.lower_identities": {"tf": 1}}, "df": 1}}}}, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}, "a": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}, "sqlglot.transforms.eliminate_qualify": {"tf": 1}}, "df": 2}}, "s": {"docs": {"sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}}, "df": 3}}, "f": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.transpile": {"tf": 1.4142135623730951}, "sqlglot.dataframe": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1.7320508075688772}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 2.8284271247461903}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 2.8284271247461903}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 2.8284271247461903}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 2.8284271247461903}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 2.8284271247461903}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 2.8284271247461903}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 2.8284271247461903}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 2.8284271247461903}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 2.8284271247461903}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 2.8284271247461903}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 2.8284271247461903}, "sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 2.8284271247461903}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 2.8284271247461903}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 2.8284271247461903}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 2.8284271247461903}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 2.8284271247461903}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 2.8284271247461903}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 2.8284271247461903}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 2.8284271247461903}, "sqlglot.diff": {"tf": 4.69041575982343}, "sqlglot.executor": {"tf": 1.7320508075688772}, "sqlglot.executor.env.null_if_any": {"tf": 1.4142135623730951}, "sqlglot.executor.python.Python.Generator": {"tf": 2.8284271247461903}, "sqlglot.expressions.Expression.alias": {"tf": 1}, "sqlglot.expressions.Expression.output_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.append": {"tf": 1}, "sqlglot.expressions.Expression.find": {"tf": 1}, "sqlglot.expressions.Expression.same_parent": {"tf": 1}, "sqlglot.expressions.Expression.walk": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.unalias": {"tf": 1}, "sqlglot.expressions.Expression.transform": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.assert_is": {"tf": 1}, "sqlglot.expressions.Expression.error_messages": {"tf": 1}, "sqlglot.expressions.Condition.and_": {"tf": 1}, "sqlglot.expressions.Condition.or_": {"tf": 1}, "sqlglot.expressions.Unionable.union": {"tf": 1.7320508075688772}, "sqlglot.expressions.Unionable.intersect": {"tf": 1.7320508075688772}, "sqlglot.expressions.Unionable.except_": {"tf": 1.7320508075688772}, "sqlglot.expressions.Column.output_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.Delete.delete": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1.7320508075688772}, "sqlglot.expressions.Delete.returning": {"tf": 1.4142135623730951}, "sqlglot.expressions.Identifier.output_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.Literal.output_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.Join.on": {"tf": 1.7320508075688772}, "sqlglot.expressions.Join.using": {"tf": 1.7320508075688772}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 2}, "sqlglot.expressions.Union.limit": {"tf": 1.7320508075688772}, "sqlglot.expressions.Union.select": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.from_": {"tf": 2}, "sqlglot.expressions.Select.group_by": {"tf": 2.23606797749979}, "sqlglot.expressions.Select.order_by": {"tf": 2}, "sqlglot.expressions.Select.sort_by": {"tf": 2}, "sqlglot.expressions.Select.cluster_by": {"tf": 2}, "sqlglot.expressions.Select.limit": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.offset": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.select": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.lateral": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.join": {"tf": 2.449489742783178}, "sqlglot.expressions.Select.where": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.having": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.distinct": {"tf": 1}, "sqlglot.expressions.Select.ctas": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.lock": {"tf": 1.4142135623730951}, "sqlglot.expressions.Subquery.output_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.Star.output_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.Alias.output_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.Func": {"tf": 1}, "sqlglot.expressions.Cast.output_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.union": {"tf": 2}, "sqlglot.expressions.intersect": {"tf": 2}, "sqlglot.expressions.except_": {"tf": 2}, "sqlglot.expressions.select": {"tf": 1}, "sqlglot.expressions.from_": {"tf": 1}, "sqlglot.expressions.condition": {"tf": 1}, "sqlglot.expressions.and_": {"tf": 1}, "sqlglot.expressions.or_": {"tf": 1}, "sqlglot.expressions.not_": {"tf": 1}, "sqlglot.expressions.to_table": {"tf": 1}, "sqlglot.expressions.to_column": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1.4142135623730951}, "sqlglot.expressions.subquery": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1.4142135623730951}, "sqlglot.expressions.convert": {"tf": 1}, "sqlglot.expressions.func": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 2.8284271247461903}, "sqlglot.generator.Generator.generate": {"tf": 1}, "sqlglot.helper.seq_get": {"tf": 1}, "sqlglot.helper.ensure_list": {"tf": 1}, "sqlglot.helper.ensure_collection": {"tf": 1}, "sqlglot.helper.apply_index_offset": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1}, "sqlglot.helper.is_iterable": {"tf": 1.7320508075688772}, "sqlglot.helper.should_identify": {"tf": 1.4142135623730951}, "sqlglot.optimizer.eliminate_subqueries.eliminate_subqueries": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1.7320508075688772}, "sqlglot.optimizer.optimize_joins.optimize_joins": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1.4142135623730951}, "sqlglot.optimizer.pushdown_predicates.pushdown_cnf": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_dnf": {"tf": 1}, "sqlglot.optimizer.qualify_columns.validate_qualify_columns": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.get_table": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1}, "sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_subquery": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_derived_table": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_union": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_cte": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_root": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_udtf": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_correlated_subquery": {"tf": 1}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1.7320508075688772}, "sqlglot.parser.Parser.parse_into": {"tf": 1}, "sqlglot.parser.Parser.validate_expression": {"tf": 1}, "sqlglot.schema.MappingSchema": {"tf": 1}, "sqlglot.schema.MappingSchema.add_table": {"tf": 1}, "sqlglot.transforms.eliminate_qualify": {"tf": 1}}, "df": 144}, "b": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 2}}}, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1}}, "df": 2}}}}}}}}, "g": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.errors.ErrorLevel.IGNORE": {"tf": 1}}, "df": 2}}}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "v": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}}}, "\u2019": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}, "m": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.diff.ChangeDistiller": {"tf": 1}}, "df": 2}}}, "o": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.lineage.LineageHTML": {"tf": 1}}, "df": 1}}}}}}, "a": {"docs": {"sqlglot": {"tf": 7.615773105863909}, "sqlglot.parse": {"tf": 1}, "sqlglot.parse_one": {"tf": 1}, "sqlglot.transpile": {"tf": 1.4142135623730951}, "sqlglot.dataframe": {"tf": 3.1622776601683795}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.cast": {"tf": 1.4142135623730951}, "sqlglot.dialects": {"tf": 2.449489742783178}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 3}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 3}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 3}, "sqlglot.dialects.dialect.format_time_lambda": {"tf": 1}, "sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 3}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 3}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 3}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 3}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 3}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 3}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 3}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 3}, "sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 3}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 2.449489742783178}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 3}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 3}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 3}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 3}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 3}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 3}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 3}, "sqlglot.diff": {"tf": 8.94427190999916}, "sqlglot.diff.Insert": {"tf": 1}, "sqlglot.diff.diff": {"tf": 2.449489742783178}, "sqlglot.errors.ErrorLevel.RAISE": {"tf": 1}, "sqlglot.executor": {"tf": 8.660254037844387}, "sqlglot.executor.execute": {"tf": 1.7320508075688772}, "sqlglot.executor.env.null_if_any": {"tf": 1.4142135623730951}, "sqlglot.executor.python.PythonExecutor.generate": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 3}, "sqlglot.executor.table.Tables": {"tf": 1.4142135623730951}, "sqlglot.expressions": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression": {"tf": 2.6457513110645907}, "sqlglot.expressions.Expression.text": {"tf": 1}, "sqlglot.expressions.Expression.is_string": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.is_number": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.is_int": {"tf": 1}, "sqlglot.expressions.Expression.is_star": {"tf": 1}, "sqlglot.expressions.Expression.output_name": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.copy": {"tf": 1}, "sqlglot.expressions.Expression.append": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.find_all": {"tf": 1}, "sqlglot.expressions.Expression.find_ancestor": {"tf": 1}, "sqlglot.expressions.Expression.walk": {"tf": 1}, "sqlglot.expressions.Expression.dfs": {"tf": 1}, "sqlglot.expressions.Expression.bfs": {"tf": 1}, "sqlglot.expressions.Expression.unnest_operands": {"tf": 1}, "sqlglot.expressions.Expression.flatten": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.transform": {"tf": 2}, "sqlglot.expressions.Expression.replace": {"tf": 1}, "sqlglot.expressions.Expression.error_messages": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.dump": {"tf": 1}, "sqlglot.expressions.Expression.load": {"tf": 1}, "sqlglot.expressions.Unionable.union": {"tf": 1}, "sqlglot.expressions.Column.output_name": {"tf": 1.7320508075688772}, "sqlglot.expressions.Column.parts": {"tf": 1}, "sqlglot.expressions.Column.to_dot": {"tf": 1}, "sqlglot.expressions.Delete.delete": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1.4142135623730951}, "sqlglot.expressions.Identifier.output_name": {"tf": 1.7320508075688772}, "sqlglot.expressions.Literal.output_name": {"tf": 1.7320508075688772}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 1}, "sqlglot.expressions.Union.limit": {"tf": 1.4142135623730951}, "sqlglot.expressions.Union.select": {"tf": 2.449489742783178}, "sqlglot.expressions.Union.is_star": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.group_by": {"tf": 2}, "sqlglot.expressions.Select.order_by": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.sort_by": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.cluster_by": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.limit": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.offset": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.join": {"tf": 2}, "sqlglot.expressions.Select.where": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.ctas": {"tf": 1}, "sqlglot.expressions.Select.lock": {"tf": 2}, "sqlglot.expressions.Select.is_star": {"tf": 1}, "sqlglot.expressions.Subquery.is_star": {"tf": 1}, "sqlglot.expressions.Subquery.output_name": {"tf": 1.7320508075688772}, "sqlglot.expressions.Star.output_name": {"tf": 1.7320508075688772}, "sqlglot.expressions.Dot.build": {"tf": 1.4142135623730951}, "sqlglot.expressions.Alias.output_name": {"tf": 1.7320508075688772}, "sqlglot.expressions.TimeUnit": {"tf": 1}, "sqlglot.expressions.Func": {"tf": 1.7320508075688772}, "sqlglot.expressions.Cast.output_name": {"tf": 1.7320508075688772}, "sqlglot.expressions.maybe_parse": {"tf": 2.23606797749979}, "sqlglot.expressions.union": {"tf": 1}, "sqlglot.expressions.intersect": {"tf": 1}, "sqlglot.expressions.except_": {"tf": 1}, "sqlglot.expressions.select": {"tf": 2}, "sqlglot.expressions.from_": {"tf": 2.23606797749979}, "sqlglot.expressions.update": {"tf": 1.4142135623730951}, "sqlglot.expressions.delete": {"tf": 1.7320508075688772}, "sqlglot.expressions.condition": {"tf": 1.7320508075688772}, "sqlglot.expressions.not_": {"tf": 1.4142135623730951}, "sqlglot.expressions.to_interval": {"tf": 1}, "sqlglot.expressions.to_table": {"tf": 2.23606797749979}, "sqlglot.expressions.to_column": {"tf": 2}, "sqlglot.expressions.alias_": {"tf": 2}, "sqlglot.expressions.subquery": {"tf": 1.4142135623730951}, "sqlglot.expressions.column": {"tf": 1}, "sqlglot.expressions.cast": {"tf": 1.4142135623730951}, "sqlglot.expressions.table_": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1}, "sqlglot.expressions.var": {"tf": 1}, "sqlglot.expressions.convert": {"tf": 1.7320508075688772}, "sqlglot.expressions.replace_children": {"tf": 1}, "sqlglot.expressions.column_table_names": {"tf": 1.7320508075688772}, "sqlglot.expressions.table_name": {"tf": 2}, "sqlglot.expressions.replace_tables": {"tf": 1.4142135623730951}, "sqlglot.expressions.expand": {"tf": 1}, "sqlglot.expressions.func": {"tf": 1}, "sqlglot.expressions.true": {"tf": 1}, "sqlglot.expressions.false": {"tf": 1}, "sqlglot.expressions.null": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 3}, "sqlglot.generator.Generator.generate": {"tf": 1}, "sqlglot.helper.ensure_list": {"tf": 2.449489742783178}, "sqlglot.helper.ensure_collection": {"tf": 2.23606797749979}, "sqlglot.helper.csv": {"tf": 1}, "sqlglot.helper.subclasses": {"tf": 1}, "sqlglot.helper.apply_index_offset": {"tf": 1.7320508075688772}, "sqlglot.helper.while_changing": {"tf": 1.7320508075688772}, "sqlglot.helper.tsort": {"tf": 1.4142135623730951}, "sqlglot.helper.open_file": {"tf": 1}, "sqlglot.helper.csv_reader": {"tf": 1.7320508075688772}, "sqlglot.helper.find_new_name": {"tf": 1.4142135623730951}, "sqlglot.helper.object_to_dict": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 2}, "sqlglot.helper.is_iterable": {"tf": 1}, "sqlglot.helper.count_params": {"tf": 1}, "sqlglot.helper.dict_depth": {"tf": 2}, "sqlglot.helper.should_identify": {"tf": 1}, "sqlglot.lineage.lineage": {"tf": 2}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}, "sqlglot.optimizer.canonicalize.canonicalize": {"tf": 1.4142135623730951}, "sqlglot.optimizer.eliminate_ctes.eliminate_ctes": {"tf": 1.7320508075688772}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 1.4142135623730951}, "sqlglot.optimizer.eliminate_joins.join_condition": {"tf": 1}, "sqlglot.optimizer.eliminate_subqueries.eliminate_subqueries": {"tf": 2}, "sqlglot.optimizer.expand_laterals.expand_laterals": {"tf": 1.7320508075688772}, "sqlglot.optimizer.lower_identities.lower_identities": {"tf": 2}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 2.8284271247461903}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1}, "sqlglot.optimizer.optimize_joins.optimize_joins": {"tf": 2.8284271247461903}, "sqlglot.optimizer.optimizer.optimize": {"tf": 2.6457513110645907}, "sqlglot.optimizer.pushdown_predicates.pushdown_predicates": {"tf": 1.4142135623730951}, "sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 2.8284271247461903}, "sqlglot.optimizer.qualify_columns.Resolver": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.get_table": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.get_source_columns": {"tf": 1}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 2.6457513110645907}, "sqlglot.optimizer.scope.Scope.branch": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1}, "sqlglot.optimizer.scope.Scope.derived_tables": {"tf": 1}, "sqlglot.optimizer.scope.Scope.subqueries": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 2}, "sqlglot.optimizer.scope.Scope.selects": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.source_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_subquery": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_derived_table": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_union": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_cte": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_udtf": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_correlated_subquery": {"tf": 1}, "sqlglot.optimizer.scope.Scope.rename_source": {"tf": 1}, "sqlglot.optimizer.scope.Scope.add_source": {"tf": 1}, "sqlglot.optimizer.scope.Scope.remove_source": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 3}, "sqlglot.optimizer.scope.build_scope": {"tf": 1}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1}, "sqlglot.optimizer.simplify.flatten": {"tf": 2}, "sqlglot.optimizer.simplify.remove_compliments": {"tf": 2}, "sqlglot.optimizer.simplify.uniq_sort": {"tf": 1.7320508075688772}, "sqlglot.optimizer.simplify.absorb_and_eliminate": {"tf": 4.242640687119285}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 3.4641016151377544}, "sqlglot.parser.Parser": {"tf": 2.23606797749979}, "sqlglot.parser.Parser.parse": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser.parse_into": {"tf": 1.7320508075688772}, "sqlglot.parser.Parser.expression": {"tf": 1}, "sqlglot.parser.Parser.validate_expression": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 3.4641016151377544}, "sqlglot.planner.Scan.from_expression": {"tf": 3.4641016151377544}, "sqlglot.planner.SetOperation.from_expression": {"tf": 3.4641016151377544}, "sqlglot.schema.Schema.add_table": {"tf": 1.4142135623730951}, "sqlglot.schema.Schema.column_names": {"tf": 1}, "sqlglot.schema.Schema.get_column_type": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1.4142135623730951}, "sqlglot.schema.MappingSchema": {"tf": 1}, "sqlglot.schema.MappingSchema.add_table": {"tf": 1.7320508075688772}, "sqlglot.schema.MappingSchema.column_names": {"tf": 1}, "sqlglot.schema.MappingSchema.get_column_type": {"tf": 1}, "sqlglot.serde.dump": {"tf": 1}, "sqlglot.serde.load": {"tf": 1}, "sqlglot.time.format_time": {"tf": 1.4142135623730951}, "sqlglot.tokens.Token.number": {"tf": 1}, "sqlglot.tokens.Token.string": {"tf": 1}, "sqlglot.tokens.Tokenizer.tokenize": {"tf": 1}, "sqlglot.transforms.unalias_group": {"tf": 1.4142135623730951}, "sqlglot.transforms.eliminate_distinct_on": {"tf": 1.4142135623730951}, "sqlglot.transforms.eliminate_qualify": {"tf": 1}, "sqlglot.transforms.preprocess": {"tf": 1.7320508075688772}, "sqlglot.trie.new_trie": {"tf": 2.6457513110645907}, "sqlglot.trie.in_trie": {"tf": 2.449489742783178}}, "df": 235, "n": {"docs": {"sqlglot": {"tf": 2}, "sqlglot.dataframe": {"tf": 1.7320508075688772}, "sqlglot.dialects": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.Dialects": {"tf": 1}, "sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.7320508075688772}, "sqlglot.diff": {"tf": 3}, "sqlglot.diff.Remove": {"tf": 1}, "sqlglot.diff.Move": {"tf": 1}, "sqlglot.diff.Update": {"tf": 1}, "sqlglot.diff.Keep": {"tf": 1}, "sqlglot.errors.ErrorLevel": {"tf": 1}, "sqlglot.errors.ErrorLevel.IMMEDIATE": {"tf": 1}, "sqlglot.executor": {"tf": 2.449489742783178}, "sqlglot.executor.execute": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.generate_tuple": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression": {"tf": 2.6457513110645907}, "sqlglot.expressions.Expression.is_int": {"tf": 1}, "sqlglot.expressions.Expression.is_star": {"tf": 1}, "sqlglot.expressions.Expression.alias": {"tf": 1}, "sqlglot.expressions.Expression.output_name": {"tf": 1}, "sqlglot.expressions.Expression.unalias": {"tf": 1}, "sqlglot.expressions.Expression.transform": {"tf": 1}, "sqlglot.expressions.Expression.assert_is": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.load": {"tf": 1}, "sqlglot.expressions.Condition.and_": {"tf": 1}, "sqlglot.expressions.Condition.or_": {"tf": 1}, "sqlglot.expressions.Unionable.union": {"tf": 1}, "sqlglot.expressions.Unionable.intersect": {"tf": 1.4142135623730951}, "sqlglot.expressions.Unionable.except_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Column.output_name": {"tf": 1}, "sqlglot.expressions.Delete.delete": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1.4142135623730951}, "sqlglot.expressions.Delete.returning": {"tf": 1}, "sqlglot.expressions.Identifier.output_name": {"tf": 1}, "sqlglot.expressions.Literal.output_name": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1.4142135623730951}, "sqlglot.expressions.Join.using": {"tf": 1}, "sqlglot.expressions.Properties.Location": {"tf": 1}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 1.4142135623730951}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Union.limit": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 1}, "sqlglot.expressions.Union.is_star": {"tf": 1}, "sqlglot.expressions.Select.limit": {"tf": 1}, "sqlglot.expressions.Select.offset": {"tf": 1}, "sqlglot.expressions.Select.select": {"tf": 1}, "sqlglot.expressions.Select.lateral": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.where": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.having": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.ctas": {"tf": 1}, "sqlglot.expressions.Select.is_star": {"tf": 1}, "sqlglot.expressions.Subquery.is_star": {"tf": 1}, "sqlglot.expressions.Subquery.output_name": {"tf": 1}, "sqlglot.expressions.Star.output_name": {"tf": 1}, "sqlglot.expressions.DataType.Type": {"tf": 1}, "sqlglot.expressions.Alias.output_name": {"tf": 1}, "sqlglot.expressions.Cast.output_name": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1.7320508075688772}, "sqlglot.expressions.union": {"tf": 1.4142135623730951}, "sqlglot.expressions.intersect": {"tf": 1.4142135623730951}, "sqlglot.expressions.except_": {"tf": 1.4142135623730951}, "sqlglot.expressions.select": {"tf": 1.7320508075688772}, "sqlglot.expressions.from_": {"tf": 1}, "sqlglot.expressions.update": {"tf": 1}, "sqlglot.expressions.condition": {"tf": 1}, "sqlglot.expressions.and_": {"tf": 1.4142135623730951}, "sqlglot.expressions.or_": {"tf": 1.4142135623730951}, "sqlglot.expressions.not_": {"tf": 1}, "sqlglot.expressions.to_identifier": {"tf": 1.4142135623730951}, "sqlglot.expressions.to_interval": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1.4142135623730951}, "sqlglot.expressions.subquery": {"tf": 1}, "sqlglot.expressions.cast": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1}, "sqlglot.expressions.var": {"tf": 1}, "sqlglot.expressions.convert": {"tf": 1.4142135623730951}, "sqlglot.expressions.replace_children": {"tf": 1}, "sqlglot.expressions.column_table_names": {"tf": 1}, "sqlglot.expressions.replace_placeholders": {"tf": 1}, "sqlglot.expressions.expand": {"tf": 1}, "sqlglot.expressions.func": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.generate": {"tf": 1.4142135623730951}, "sqlglot.helper.apply_index_offset": {"tf": 1}, "sqlglot.helper.object_to_dict": {"tf": 1}, "sqlglot.helper.is_iterable": {"tf": 1.7320508075688772}, "sqlglot.helper.flatten": {"tf": 1}, "sqlglot.helper.first": {"tf": 1}, "sqlglot.helper.should_identify": {"tf": 1}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}, "sqlglot.optimizer.eliminate_ctes.eliminate_ctes": {"tf": 1}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 1}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1.4142135623730951}, "sqlglot.optimizer.qualify_columns.validate_qualify_columns": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}, "sqlglot.parser.Parser.raise_error": {"tf": 1}, "sqlglot.parser.Parser.expression": {"tf": 1}, "sqlglot.parser.Parser.validate_expression": {"tf": 1.4142135623730951}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}, "sqlglot.serde.dump": {"tf": 1}, "sqlglot.serde.load": {"tf": 1}, "sqlglot.tokens.TokenType": {"tf": 1}, "sqlglot.tokens.Token.identifier": {"tf": 1}, "sqlglot.tokens.Token.var": {"tf": 1}, "sqlglot.transforms.preprocess": {"tf": 1}}, "df": 131, "d": {"docs": {"sqlglot": {"tf": 5.196152422706632}, "sqlglot.parse_one": {"tf": 1}, "sqlglot.transpile": {"tf": 1.7320508075688772}, "sqlglot.dataframe": {"tf": 3.1622776601683795}, "sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1.4142135623730951}, "sqlglot.dialects": {"tf": 1.7320508075688772}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.7320508075688772}, "sqlglot.diff": {"tf": 7.0710678118654755}, "sqlglot.diff.diff": {"tf": 1.7320508075688772}, "sqlglot.diff.ChangeDistiller": {"tf": 1}, "sqlglot.errors.ErrorLevel.RAISE": {"tf": 1}, "sqlglot.executor": {"tf": 7.0710678118654755}, "sqlglot.executor.context.Context": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.generate": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.text": {"tf": 1}, "sqlglot.expressions.Expression.iter_expressions": {"tf": 1}, "sqlglot.expressions.Expression.find_all": {"tf": 1}, "sqlglot.expressions.Expression.flatten": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.transform": {"tf": 1.4142135623730951}, "sqlglot.expressions.Condition.and_": {"tf": 2}, "sqlglot.expressions.Unionable.union": {"tf": 1}, "sqlglot.expressions.Unionable.intersect": {"tf": 1}, "sqlglot.expressions.Unionable.except_": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1.4142135623730951}, "sqlglot.expressions.Join.on": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.where": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.having": {"tf": 1.4142135623730951}, "sqlglot.expressions.Func": {"tf": 1.4142135623730951}, "sqlglot.expressions.union": {"tf": 1}, "sqlglot.expressions.intersect": {"tf": 1}, "sqlglot.expressions.except_": {"tf": 1}, "sqlglot.expressions.condition": {"tf": 1.4142135623730951}, "sqlglot.expressions.and_": {"tf": 2.449489742783178}, "sqlglot.expressions.to_table": {"tf": 1}, "sqlglot.expressions.column_table_names": {"tf": 1.4142135623730951}, "sqlglot.expressions.replace_tables": {"tf": 1}, "sqlglot.expressions.replace_placeholders": {"tf": 1}, "sqlglot.expressions.func": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1.7320508075688772}, "sqlglot.helper.ensure_collection": {"tf": 1}, "sqlglot.helper.camel_to_snake_case": {"tf": 1}, "sqlglot.helper.open_file": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1}, "sqlglot.helper.is_iterable": {"tf": 1}, "sqlglot.helper.flatten": {"tf": 1.4142135623730951}, "sqlglot.helper.count_params": {"tf": 1.4142135623730951}, "sqlglot.lineage.lineage": {"tf": 1}, "sqlglot.optimizer.normalize.normalize": {"tf": 1.4142135623730951}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1.7320508075688772}, "sqlglot.optimizer.normalize.distributive_law": {"tf": 2.6457513110645907}, "sqlglot.optimizer.optimize_joins.optimize_joins": {"tf": 1.7320508075688772}, "sqlglot.optimizer.optimize_joins.normalize": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_predicates": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1}, "sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.selects": {"tf": 1}, "sqlglot.optimizer.simplify.simplify": {"tf": 1}, "sqlglot.optimizer.simplify.rewrite_between": {"tf": 1.4142135623730951}, "sqlglot.optimizer.simplify.simplify_not": {"tf": 1.4142135623730951}, "sqlglot.optimizer.simplify.flatten": {"tf": 2}, "sqlglot.optimizer.simplify.remove_compliments": {"tf": 1}, "sqlglot.optimizer.simplify.uniq_sort": {"tf": 2.449489742783178}, "sqlglot.optimizer.simplify.absorb_and_eliminate": {"tf": 2.8284271247461903}, "sqlglot.parser.Parser": {"tf": 1}, "sqlglot.parser.Parser.parse": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}, "sqlglot.transforms.remove_precision_parameterized_types": {"tf": 1}, "sqlglot.transforms.preprocess": {"tf": 1}, "sqlglot.trie.in_trie": {"tf": 1}}, "df": 119}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.diff": {"tf": 1}}, "df": 2}}}}}, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1}, "sqlglot.expressions.Union.limit": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.expressions.Select.limit": {"tf": 1}, "sqlglot.expressions.Select.offset": {"tf": 1}, "sqlglot.expressions.Select.ctas": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 1}}, "df": 14}}}}, "n": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.func": {"tf": 1}}, "df": 1}}}}}}}, "y": {"docs": {"sqlglot.dataframe": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.diff": {"tf": 2.23606797749979}, "sqlglot.executor": {"tf": 1}, "sqlglot.executor.env.null_if_any": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.expressions.Expression.append": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.expressions.Select.select": {"tf": 1}, "sqlglot.expressions.Select.lateral": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1}, "sqlglot.expressions.Select.where": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1}, "sqlglot.expressions.convert": {"tf": 1}, "sqlglot.helper.csv": {"tf": 1}, "sqlglot.optimizer.qualify_columns.validate_qualify_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 1}, "sqlglot.parser.Parser.check_errors": {"tf": 1}}, "df": 29, "w": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1}}, "df": 2}}}}, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.executor": {"tf": 1}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1.7320508075688772}, "sqlglot.optimizer.canonicalize.canonicalize": {"tf": 1}}, "df": 3, "d": {"docs": {"sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1.7320508075688772}}, "df": 1}}, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}}, "df": 1}}}}}}}}}, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dialects": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 3}}}, "l": {"docs": {"sqlglot.diff": {"tf": 2.23606797749979}, "sqlglot.diff.ChangeDistiller": {"tf": 1}}, "df": 2, "s": {"docs": {}, "df": 0, "o": {"docs": {"sqlglot": {"tf": 2.449489742783178}, "sqlglot.dialects": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 2.6457513110645907}, "sqlglot.executor": {"tf": 1}, "sqlglot.executor.env.null_if_any": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.expressions.Union.limit": {"tf": 1}, "sqlglot.expressions.Select.limit": {"tf": 1}, "sqlglot.expressions.Select.offset": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1}, "sqlglot.optimizer.eliminate_subqueries.eliminate_subqueries": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1}, "sqlglot.schema.Schema.add_table": {"tf": 1}, "sqlglot.transforms.eliminate_qualify": {"tf": 1}}, "df": 18}}, "l": {"docs": {"sqlglot": {"tf": 2.449489742783178}, "sqlglot.dataframe": {"tf": 1.4142135623730951}, "sqlglot.dialects": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.diff": {"tf": 2.6457513110645907}, "sqlglot.errors.ErrorLevel.IGNORE": {"tf": 1}, "sqlglot.errors.ErrorLevel.WARN": {"tf": 1}, "sqlglot.errors.ErrorLevel.RAISE": {"tf": 1}, "sqlglot.errors.SqlglotError": {"tf": 1}, "sqlglot.errors.UnsupportedError": {"tf": 1}, "sqlglot.errors.ParseError": {"tf": 1}, "sqlglot.errors.TokenError": {"tf": 1}, "sqlglot.errors.OptimizeError": {"tf": 1}, "sqlglot.errors.SchemaError": {"tf": 1}, "sqlglot.errors.ExecuteError": {"tf": 1}, "sqlglot.executor": {"tf": 2.8284271247461903}, "sqlglot.executor.env.null_if_any": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.expressions": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.expressions.Expression.iter_expressions": {"tf": 1}, "sqlglot.expressions.Expression.find_all": {"tf": 1}, "sqlglot.expressions.Expression.walk": {"tf": 1}, "sqlglot.expressions.Expression.dfs": {"tf": 1}, "sqlglot.expressions.Expression.bfs": {"tf": 1}, "sqlglot.expressions.Expression.transform": {"tf": 1}, "sqlglot.expressions.Expression.error_messages": {"tf": 1.4142135623730951}, "sqlglot.expressions.Delete.returning": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.expressions.Func": {"tf": 1}, "sqlglot.expressions.column_table_names": {"tf": 1}, "sqlglot.expressions.replace_tables": {"tf": 1}, "sqlglot.expressions.expand": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.helper.subclasses": {"tf": 1}, "sqlglot.helper.tsort": {"tf": 1}, "sqlglot.optimizer.lower_identities.lower_identities": {"tf": 1.4142135623730951}, "sqlglot.optimizer.pushdown_predicates.pushdown_dnf": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.all_columns": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope": {"tf": 2}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1}, "sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 1}, "sqlglot.optimizer.scope.Scope.source_columns": {"tf": 1}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1}, "sqlglot.parser.Parser.validate_expression": {"tf": 1}, "sqlglot.schema.MappingSchema": {"tf": 1}}, "df": 70, "o": {"docs": {}, "df": 0, "w": {"docs": {"sqlglot.transforms.remove_precision_parameterized_types": {"tf": 1}}, "df": 1, "s": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.executor.context.Context": {"tf": 1}}, "df": 2}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}, "/": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot": {"tf": 2}, "sqlglot.dataframe": {"tf": 2.23606797749979}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.alias": {"tf": 1}, "sqlglot.expressions.Expression.unalias": {"tf": 1}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 1.7320508075688772}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 2.8284271247461903}, "sqlglot.expressions.subquery": {"tf": 1.4142135623730951}, "sqlglot.expressions.values": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator": {"tf": 1.4142135623730951}, "sqlglot.optimizer.expand_laterals.expand_laterals": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 1}, "sqlglot.optimizer.scope.Scope.cte_sources": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1.4142135623730951}}, "df": 55, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.executor.python.Python.Generator": {"tf": 1.4142135623730951}, "sqlglot.expressions.Func": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1.4142135623730951}, "sqlglot.transforms.unalias_group": {"tf": 1}, "sqlglot.transforms.eliminate_qualify": {"tf": 1}}, "df": 24}, "d": {"docs": {"sqlglot.expressions.Expression.alias": {"tf": 1}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}}, "df": 6}}}}}, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 2}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.Select.join": {"tf": 1}, "sqlglot.expressions.rename_table": {"tf": 1.4142135623730951}, "sqlglot.helper.find_new_name": {"tf": 1}}, "df": 3, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}}, "w": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.7320508075688772}, "sqlglot.executor": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator": {"tf": 1.7320508075688772}, "sqlglot.helper.should_identify": {"tf": 1.4142135623730951}}, "df": 24}}}}, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1, "g": {"docs": {"sqlglot.parser.Parser.expression": {"tf": 1}}, "df": 1, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}, "g": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "m": {"docs": {"sqlglot.diff": {"tf": 5}, "sqlglot.diff.diff": {"tf": 1}, "sqlglot.diff.ChangeDistiller": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1}}, "df": 4, "s": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}}, "df": 1}, "\u2019": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.transform": {"tf": 1}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}, "sqlglot.optimizer.expand_laterals.expand_laterals": {"tf": 1}, "sqlglot.parser.Parser.validate_expression": {"tf": 1}}, "df": 5}}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 2.23606797749979}, "sqlglot.dataframe": {"tf": 1.7320508075688772}, "sqlglot.dialects": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 2.449489742783178}, "sqlglot.diff": {"tf": 4.47213595499958}, "sqlglot.diff.diff": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 3.605551275463989}, "sqlglot.executor.env.null_if_any": {"tf": 1.4142135623730951}, "sqlglot.executor.python.Python.Generator": {"tf": 2.449489742783178}, "sqlglot.expressions": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.text": {"tf": 1}, "sqlglot.expressions.Expression.flatten": {"tf": 1}, "sqlglot.expressions.Expression.error_messages": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Select.where": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1}, "sqlglot.expressions.Tag": {"tf": 1}, "sqlglot.expressions.Func": {"tf": 1}, "sqlglot.expressions.update": {"tf": 1}, "sqlglot.expressions.to_table": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1}, "sqlglot.expressions.func": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 2.449489742783178}, "sqlglot.helper.split_num_words": {"tf": 1}, "sqlglot.helper.flatten": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1}, "sqlglot.optimizer.optimize_joins.normalize": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_cnf": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_dnf": {"tf": 1.4142135623730951}, "sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 1}, "sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.cte_sources": {"tf": 1}, "sqlglot.optimizer.scope.Scope.selects": {"tf": 1}, "sqlglot.optimizer.scope.Scope.join_hints": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 2.23606797749979}, "sqlglot.parser.Parser.validate_expression": {"tf": 1}, "sqlglot.schema.MappingSchema": {"tf": 1.4142135623730951}, "sqlglot.schema.MappingSchema.add_table": {"tf": 1}}, "df": 79, "n": {"docs": {"sqlglot.optimizer.qualify_columns.validate_qualify_columns": {"tf": 1}}, "df": 1}}, "g": {"docs": {"sqlglot.expressions.Expression": {"tf": 2.6457513110645907}, "sqlglot.expressions.Expression.append": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.set": {"tf": 2}, "sqlglot.expressions.Expression.walk": {"tf": 1}, "sqlglot.expressions.TimeUnit": {"tf": 1}, "sqlglot.expressions.Func": {"tf": 1}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1}}, "df": 7, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.this": {"tf": 1}, "sqlglot.expressions.Expression.expression": {"tf": 1}, "sqlglot.expressions.Expression.expressions": {"tf": 1}, "sqlglot.expressions.Expression.text": {"tf": 1}, "sqlglot.expressions.Expression.transform": {"tf": 1}, "sqlglot.expressions.Expression.error_messages": {"tf": 1}, "sqlglot.expressions.Func": {"tf": 1.7320508075688772}, "sqlglot.helper.csv": {"tf": 1}, "sqlglot.helper.apply_index_offset": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 14, "s": {"docs": {"sqlglot.parse": {"tf": 1}, "sqlglot.parse_one": {"tf": 1}, "sqlglot.transpile": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.dialect.format_time_lambda": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.diff.diff": {"tf": 1}, "sqlglot.executor.execute": {"tf": 1}, "sqlglot.executor.env.null_if_any": {"tf": 1.7320508075688772}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.append": {"tf": 1}, "sqlglot.expressions.Expression.set": {"tf": 1}, "sqlglot.expressions.Expression.iter_expressions": {"tf": 1}, "sqlglot.expressions.Expression.find": {"tf": 1}, "sqlglot.expressions.Expression.find_all": {"tf": 1}, "sqlglot.expressions.Expression.find_ancestor": {"tf": 1}, "sqlglot.expressions.Expression.walk": {"tf": 1}, "sqlglot.expressions.Expression.sql": {"tf": 1}, "sqlglot.expressions.Expression.transform": {"tf": 1}, "sqlglot.expressions.Expression.replace": {"tf": 1}, "sqlglot.expressions.Expression.error_messages": {"tf": 1.4142135623730951}, "sqlglot.expressions.Condition.and_": {"tf": 1}, "sqlglot.expressions.Condition.or_": {"tf": 1}, "sqlglot.expressions.Unionable.union": {"tf": 1}, "sqlglot.expressions.Unionable.intersect": {"tf": 1}, "sqlglot.expressions.Unionable.except_": {"tf": 1}, "sqlglot.expressions.Delete.delete": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Delete.returning": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Join.using": {"tf": 1}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1}, "sqlglot.expressions.Union.limit": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.expressions.Select.limit": {"tf": 1}, "sqlglot.expressions.Select.offset": {"tf": 1}, "sqlglot.expressions.Select.select": {"tf": 1}, "sqlglot.expressions.Select.lateral": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1}, "sqlglot.expressions.Select.where": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1}, "sqlglot.expressions.Select.distinct": {"tf": 1}, "sqlglot.expressions.Select.ctas": {"tf": 1}, "sqlglot.expressions.Select.lock": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1}, "sqlglot.expressions.union": {"tf": 1}, "sqlglot.expressions.intersect": {"tf": 1}, "sqlglot.expressions.except_": {"tf": 1}, "sqlglot.expressions.select": {"tf": 1}, "sqlglot.expressions.from_": {"tf": 1}, "sqlglot.expressions.update": {"tf": 1}, "sqlglot.expressions.delete": {"tf": 1}, "sqlglot.expressions.condition": {"tf": 1}, "sqlglot.expressions.and_": {"tf": 1}, "sqlglot.expressions.or_": {"tf": 1}, "sqlglot.expressions.not_": {"tf": 1}, "sqlglot.expressions.to_identifier": {"tf": 1}, "sqlglot.expressions.to_table": {"tf": 1}, "sqlglot.expressions.to_column": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1}, "sqlglot.expressions.subquery": {"tf": 1}, "sqlglot.expressions.column": {"tf": 1}, "sqlglot.expressions.cast": {"tf": 1}, "sqlglot.expressions.table_": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1}, "sqlglot.expressions.var": {"tf": 1}, "sqlglot.expressions.rename_table": {"tf": 1}, "sqlglot.expressions.convert": {"tf": 1}, "sqlglot.expressions.column_table_names": {"tf": 1}, "sqlglot.expressions.table_name": {"tf": 1}, "sqlglot.expressions.replace_tables": {"tf": 1}, "sqlglot.expressions.replace_placeholders": {"tf": 1.4142135623730951}, "sqlglot.expressions.expand": {"tf": 1}, "sqlglot.expressions.func": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.helper.ensure_list": {"tf": 1}, "sqlglot.helper.ensure_collection": {"tf": 1}, "sqlglot.helper.csv": {"tf": 2}, "sqlglot.helper.subclasses": {"tf": 1}, "sqlglot.helper.apply_index_offset": {"tf": 1}, "sqlglot.helper.while_changing": {"tf": 1}, "sqlglot.helper.tsort": {"tf": 1}, "sqlglot.helper.csv_reader": {"tf": 1}, "sqlglot.helper.find_new_name": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1}, "sqlglot.helper.is_iterable": {"tf": 1}, "sqlglot.helper.flatten": {"tf": 1}, "sqlglot.helper.dict_depth": {"tf": 1}, "sqlglot.helper.should_identify": {"tf": 1}, "sqlglot.lineage.lineage": {"tf": 1}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}, "sqlglot.optimizer.canonicalize.canonicalize": {"tf": 1}, "sqlglot.optimizer.eliminate_ctes.eliminate_ctes": {"tf": 1}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 1}, "sqlglot.optimizer.eliminate_joins.join_condition": {"tf": 1}, "sqlglot.optimizer.eliminate_subqueries.eliminate_subqueries": {"tf": 1}, "sqlglot.optimizer.expand_laterals.expand_laterals": {"tf": 1}, "sqlglot.optimizer.lower_identities.lower_identities": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1}, "sqlglot.optimizer.normalize.normalize": {"tf": 1}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_predicates": {"tf": 1}, "sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 1}, "sqlglot.optimizer.qualify_columns.qualify_columns": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.get_table": {"tf": 1}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1}, "sqlglot.optimizer.scope.Scope.replace": {"tf": 1}, "sqlglot.optimizer.scope.Scope.source_columns": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}, "sqlglot.optimizer.scope.build_scope": {"tf": 1}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1}, "sqlglot.optimizer.simplify.simplify": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1}, "sqlglot.parser.Parser.parse": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 1}, "sqlglot.parser.Parser.expression": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser.validate_expression": {"tf": 1.4142135623730951}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}, "sqlglot.schema.Schema.add_table": {"tf": 1}, "sqlglot.schema.Schema.column_names": {"tf": 1}, "sqlglot.schema.Schema.get_column_type": {"tf": 1}, "sqlglot.schema.Schema.supported_table_args": {"tf": 1}, "sqlglot.schema.MappingSchema": {"tf": 1}, "sqlglot.schema.MappingSchema.add_table": {"tf": 1}, "sqlglot.schema.MappingSchema.column_names": {"tf": 1}, "sqlglot.schema.MappingSchema.get_column_type": {"tf": 1}, "sqlglot.transforms.unalias_group": {"tf": 1}, "sqlglot.transforms.eliminate_distinct_on": {"tf": 1}, "sqlglot.transforms.preprocess": {"tf": 1}, "sqlglot.trie.new_trie": {"tf": 1}, "sqlglot.trie.in_trie": {"tf": 1}}, "df": 180}}}}}}, "s": {"docs": {"sqlglot.executor.context.Context.__init__": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.text": {"tf": 1}, "sqlglot.expressions.Expression.iter_expressions": {"tf": 1}, "sqlglot.expressions.Expression.error_messages": {"tf": 1.4142135623730951}, "sqlglot.expressions.Func": {"tf": 1}, "sqlglot.expressions.replace_placeholders": {"tf": 1}, "sqlglot.expressions.func": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.generate": {"tf": 1}, "sqlglot.helper.csv": {"tf": 1}, "sqlglot.parser.Parser.validate_expression": {"tf": 1}, "sqlglot.time.format_time": {"tf": 1}}, "df": 12}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dialects": {"tf": 1}, "sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.generate_tuple": {"tf": 1}}, "df": 4, "s": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1}}, "df": 19}, "[": {"0": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1}}, "df": 19}, "1": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1}}, "df": 19}, "docs": {}, "df": 0}}}, "o": {"docs": {}, "df": 0, "w": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1.7320508075688772}}, "df": 3}}}}, "b": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.executor": {"tf": 1}, "sqlglot.expressions.Tag": {"tf": 1}}, "df": 2}}}}}}}}, "s": {"docs": {"sqlglot": {"tf": 4.47213595499958}, "sqlglot.transpile": {"tf": 1}, "sqlglot.dataframe": {"tf": 3}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.dialects": {"tf": 2.23606797749979}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator.with_properties": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 4}, "sqlglot.executor": {"tf": 4.242640687119285}, "sqlglot.executor.python.Python.Generator": {"tf": 1.4142135623730951}, "sqlglot.executor.table.Tables": {"tf": 1.4142135623730951}, "sqlglot.expressions": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.text": {"tf": 1}, "sqlglot.expressions.Expression.output_name": {"tf": 1}, "sqlglot.expressions.Expression.append": {"tf": 1}, "sqlglot.expressions.Expression.same_parent": {"tf": 1}, "sqlglot.expressions.Expression.unnest_operands": {"tf": 1}, "sqlglot.expressions.Expression.transform": {"tf": 1}, "sqlglot.expressions.Expression.load": {"tf": 1}, "sqlglot.expressions.Condition.and_": {"tf": 1}, "sqlglot.expressions.Condition.or_": {"tf": 1}, "sqlglot.expressions.Unionable.union": {"tf": 1}, "sqlglot.expressions.Unionable.intersect": {"tf": 1}, "sqlglot.expressions.Unionable.except_": {"tf": 1}, "sqlglot.expressions.Column.output_name": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Delete.returning": {"tf": 1}, "sqlglot.expressions.Identifier.output_name": {"tf": 1}, "sqlglot.expressions.Literal.output_name": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Join.using": {"tf": 1}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 2.6457513110645907}, "sqlglot.expressions.Union.limit": {"tf": 1.4142135623730951}, "sqlglot.expressions.Union.select": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.expressions.Select.limit": {"tf": 1}, "sqlglot.expressions.Select.offset": {"tf": 1}, "sqlglot.expressions.Select.select": {"tf": 1}, "sqlglot.expressions.Select.lateral": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.join": {"tf": 2.23606797749979}, "sqlglot.expressions.Select.where": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1}, "sqlglot.expressions.Select.ctas": {"tf": 2.23606797749979}, "sqlglot.expressions.Subquery.output_name": {"tf": 1}, "sqlglot.expressions.Star.output_name": {"tf": 1}, "sqlglot.expressions.Alias.output_name": {"tf": 1}, "sqlglot.expressions.Func": {"tf": 2}, "sqlglot.expressions.Cast.output_name": {"tf": 1}, "sqlglot.expressions.union": {"tf": 1.4142135623730951}, "sqlglot.expressions.intersect": {"tf": 1.4142135623730951}, "sqlglot.expressions.except_": {"tf": 1.4142135623730951}, "sqlglot.expressions.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.from_": {"tf": 1.4142135623730951}, "sqlglot.expressions.condition": {"tf": 1}, "sqlglot.expressions.and_": {"tf": 1}, "sqlglot.expressions.or_": {"tf": 1}, "sqlglot.expressions.not_": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1.7320508075688772}, "sqlglot.expressions.subquery": {"tf": 1.4142135623730951}, "sqlglot.expressions.cast": {"tf": 1}, "sqlglot.expressions.table_name": {"tf": 1}, "sqlglot.expressions.expand": {"tf": 2.23606797749979}, "sqlglot.expressions.func": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1.4142135623730951}, "sqlglot.helper.ensure_list": {"tf": 1}, "sqlglot.helper.csv": {"tf": 1.4142135623730951}, "sqlglot.helper.open_file": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1}, "sqlglot.helper.flatten": {"tf": 1}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 2.23606797749979}, "sqlglot.optimizer.eliminate_ctes.eliminate_ctes": {"tf": 1}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 1}, "sqlglot.optimizer.eliminate_subqueries.eliminate_subqueries": {"tf": 3}, "sqlglot.optimizer.expand_laterals.expand_laterals": {"tf": 2.23606797749979}, "sqlglot.optimizer.lower_identities.lower_identities": {"tf": 1.4142135623730951}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1}, "sqlglot.optimizer.optimize_joins.normalize": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1.4142135623730951}, "sqlglot.optimizer.pushdown_predicates.pushdown_predicates": {"tf": 2}, "sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 2.6457513110645907}, "sqlglot.optimizer.qualify_columns.qualify_columns": {"tf": 1}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 2.23606797749979}, "sqlglot.optimizer.scope.Scope.selects": {"tf": 2}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1.4142135623730951}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 2.6457513110645907}, "sqlglot.parser.Parser": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 2}, "sqlglot.planner.Scan.from_expression": {"tf": 2}, "sqlglot.planner.SetOperation.from_expression": {"tf": 2}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1.4142135623730951}, "sqlglot.serde.load": {"tf": 1}, "sqlglot.tokens.Token.number": {"tf": 1}, "sqlglot.tokens.Token.string": {"tf": 1}, "sqlglot.tokens.Token.identifier": {"tf": 1}, "sqlglot.tokens.Token.var": {"tf": 1}, "sqlglot.transforms.unalias_group": {"tf": 1.4142135623730951}, "sqlglot.transforms.eliminate_qualify": {"tf": 1}, "sqlglot.transforms.preprocess": {"tf": 1}, "sqlglot.trie.new_trie": {"tf": 1}}, "df": 143, "t": {"docs": {"sqlglot": {"tf": 2.6457513110645907}, "sqlglot.diff": {"tf": 3.1622776601683795}, "sqlglot.executor": {"tf": 3.4641016151377544}, "sqlglot.expressions": {"tf": 1}, "sqlglot.expressions.Expression.pop": {"tf": 1}, "sqlglot.expressions.to_identifier": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1}, "sqlglot.optimizer.normalize.normalize": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_predicates": {"tf": 1}, "sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 1}, "sqlglot.optimizer.qualify_columns.qualify_columns": {"tf": 1}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"tf": 1}, "sqlglot.optimizer.simplify.simplify": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 1}, "sqlglot.serde.dump": {"tf": 1}, "sqlglot.serde.load": {"tf": 1}}, "df": 17, "s": {"docs": {"sqlglot.diff": {"tf": 2}}, "df": 1}}, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.diff": {"tf": 1}}, "df": 2}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.assert_is": {"tf": 1.4142135623730951}}, "df": 2, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.Expression.assert_is": {"tf": 1}}, "df": 1}}}}}, "s": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.dialects": {"tf": 1}, "sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1.4142135623730951}}, "df": 4}}}}}}}, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}, "sqlglot.optimizer.expand_laterals.expand_laterals": {"tf": 1}}, "df": 2}, "d": {"docs": {"sqlglot.schema.MappingSchema": {"tf": 1}}, "df": 1}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.optimizer.lower_identities.lower_identities": {"tf": 1}}, "df": 1}}}}}}, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1}}, "df": 2}}}}}}}, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}, "c": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}}}}, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dataframe.sql.Column.cast": {"tf": 1.4142135623730951}}, "df": 1}}}}, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 2}}, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 2}}}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.transpile": {"tf": 1}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.expressions.replace_tables": {"tf": 1}}, "df": 1, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 2}}}}}, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 2, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}, "sqlglot.executor": {"tf": 2.449489742783178}, "sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 1}}, "df": 3}}}}}, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}}, "s": {"docs": {"sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1}}, "df": 1}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.optimizer.qualify_columns.Resolver": {"tf": 1}}, "df": 3}}}}, "m": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}, "y": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot.helper.tsort": {"tf": 1}}, "df": 1}}}}}}, "p": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "x": {"docs": {"sqlglot": {"tf": 2}}, "df": 1, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}}, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.transforms.preprocess": {"tf": 1}}, "df": 2, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dialects.dialect.format_time_lambda": {"tf": 1}}, "df": 1}}}}}}}}, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.diff": {"tf": 2}, "sqlglot.executor": {"tf": 1}}, "df": 2, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.parse": {"tf": 1}, "sqlglot.parse_one": {"tf": 1}, "sqlglot.executor.execute": {"tf": 1}, "sqlglot.lineage.lineage": {"tf": 1}}, "df": 4, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.diff": {"tf": 1.7320508075688772}}, "df": 2}}}}, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.walk": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.helper.apply_index_offset": {"tf": 1.7320508075688772}, "sqlglot.helper.while_changing": {"tf": 1}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1}}, "df": 7}, "s": {"docs": {"sqlglot.executor": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.transform": {"tf": 1}, "sqlglot.helper.apply_index_offset": {"tf": 1}, "sqlglot.helper.while_changing": {"tf": 1}}, "df": 4}}}}, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 2.23606797749979}, "sqlglot.expressions.Expression.append": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1.4142135623730951}, "sqlglot.expressions.Join.on": {"tf": 1.4142135623730951}, "sqlglot.expressions.Join.using": {"tf": 1.4142135623730951}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Union.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.expressions.Select.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.lateral": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.join": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.where": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.having": {"tf": 1.4142135623730951}}, "df": 17, "s": {"docs": {"sqlglot.executor": {"tf": 1}, "sqlglot.expressions.Expression.append": {"tf": 1}, "sqlglot.parser.Parser.raise_error": {"tf": 1}}, "df": 3}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.optimizer.scope.Scope.external_columns": {"tf": 1}}, "df": 1, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}, "i": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dataframe": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 1}}, "df": 3}, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.DataFrame.persist": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 2}}}}}, "d": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.dataframe": {"tf": 2}, "sqlglot.diff": {"tf": 2.449489742783178}, "sqlglot.diff.diff": {"tf": 1.4142135623730951}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.expressions.Select.select": {"tf": 1}, "sqlglot.expressions.Select.lateral": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1}, "sqlglot.optimizer.scope.Scope.add_source": {"tf": 1}}, "df": 15, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dataframe": {"tf": 1}, "sqlglot.schema.MappingSchema": {"tf": 1}}, "df": 3}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1}, "sqlglot.executor.execute": {"tf": 1}}, "df": 3, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.expressions": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_dnf": {"tf": 1}}, "df": 4}}}}}}}}, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.dialects": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}}, "df": 4}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}, "s": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}, "j": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}, "g": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.dataframe": {"tf": 2.23606797749979}}, "df": 1, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.executor.context.Context": {"tf": 1}}, "df": 1, "s": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}}, "df": 4}, "/": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}}}}, "e": {"docs": {"sqlglot.executor": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}}, "df": 4}}}}}}}, "e": {"docs": {"sqlglot.dataframe": {"tf": 3.872983346207417}}, "df": 1}, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.maybe_parse": {"tf": 1}, "sqlglot.expressions.select": {"tf": 1}, "sqlglot.expressions.from_": {"tf": 1}, "sqlglot.expressions.condition": {"tf": 1}}, "df": 4, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.diff.diff": {"tf": 1}, "sqlglot.executor.execute": {"tf": 1}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}}, "df": 3}}}}}}, "b": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.func": {"tf": 1.4142135623730951}}, "df": 1, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.executor.table.Tables": {"tf": 1}, "sqlglot.schema.Schema": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1}}, "df": 5}}}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.optimizer.simplify.absorb_and_eliminate": {"tf": 1}}, "df": 1}}}}}}}}, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}, "sqlglot.executor": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}}, "df": 3}}, "v": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 2}, "sqlglot.expressions.Expression": {"tf": 1}}, "df": 2}}}, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}, "b": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}}}, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.executor": {"tf": 1}, "sqlglot.transforms.eliminate_qualify": {"tf": 1}}, "df": 2}}}, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dataframe": {"tf": 1.7320508075688772}}, "df": 1}}}}, "x": {"docs": {"sqlglot.dataframe.sql.DataFrame.persist": {"tf": 1}}, "df": 1}, "t": {"docs": {}, "df": 0, "o": {"docs": {"sqlglot.expressions.update": {"tf": 1}, "sqlglot.helper.AutoName": {"tf": 1}}, "df": 2, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.expressions.TimeUnit": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1}}, "df": 3}}}}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}}, "df": 1}}}}}, "g": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.helper.split_num_words": {"tf": 1}}, "df": 1}}}}}}}}, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1}}, "df": 19, "s": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}, "p": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}}, "df": 2}}, "f": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.diff": {"tf": 2.23606797749979}, "sqlglot.executor": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1}}, "df": 44}}}, "f": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}, "t": {"docs": {"sqlglot.diff": {"tf": 3.4641016151377544}, "sqlglot.executor": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.find": {"tf": 1}, "sqlglot.expressions.Expression.find_all": {"tf": 1}, "sqlglot.helper.seq_get": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1}, "sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 1}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 1}, "sqlglot.trie.in_trie": {"tf": 1}}, "df": 13, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.optimizer.normalize.normalize": {"tf": 1}}, "df": 1, "s": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.expressions.Func": {"tf": 1}, "sqlglot.helper.object_to_dict": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 1}}, "df": 4}}}}}}}, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.parser.Parser.expression": {"tf": 1}}, "df": 1}}}}}, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.helper.find_new_name": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.all_columns": {"tf": 1}}, "df": 3}}}}}}}, "o": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "n": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1}}, "df": 2, "o": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.diff": {"tf": 2}, "sqlglot.executor.env.null_if_any": {"tf": 1}, "sqlglot.expressions.Expression.output_name": {"tf": 1}, "sqlglot.expressions.Expression.find": {"tf": 1}, "sqlglot.expressions.Column.output_name": {"tf": 1}, "sqlglot.expressions.Identifier.output_name": {"tf": 1}, "sqlglot.expressions.Literal.output_name": {"tf": 1}, "sqlglot.expressions.Subquery.output_name": {"tf": 1}, "sqlglot.expressions.Star.output_name": {"tf": 1}, "sqlglot.expressions.Alias.output_name": {"tf": 1}, "sqlglot.expressions.Cast.output_name": {"tf": 1}, "sqlglot.helper.should_identify": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1}}, "df": 15, "t": {"docs": {"sqlglot": {"tf": 2.449489742783178}, "sqlglot.transpile": {"tf": 1}, "sqlglot.dataframe": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1.4142135623730951}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.redshift.Redshift.Generator.renametable_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.7320508075688772}, "sqlglot.diff": {"tf": 3.605551275463989}, "sqlglot.executor": {"tf": 3}, "sqlglot.executor.python.Python.Generator": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.expressions.Expression.alias": {"tf": 1}, "sqlglot.expressions.Expression.assert_is": {"tf": 1}, "sqlglot.expressions.Condition.not_": {"tf": 2}, "sqlglot.expressions.Delete.returning": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1}, "sqlglot.expressions.not_": {"tf": 2}, "sqlglot.expressions.to_identifier": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1.4142135623730951}, "sqlglot.expressions.column": {"tf": 1}, "sqlglot.expressions.convert": {"tf": 1}, "sqlglot.expressions.expand": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1.7320508075688772}, "sqlglot.helper.flatten": {"tf": 1}, "sqlglot.helper.should_identify": {"tf": 1}, "sqlglot.optimizer.canonicalize.canonicalize": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1}, "sqlglot.optimizer.simplify.simplify_not": {"tf": 2.449489742783178}, "sqlglot.optimizer.simplify.remove_compliments": {"tf": 1.4142135623730951}, "sqlglot.optimizer.simplify.absorb_and_eliminate": {"tf": 2}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1}, "sqlglot.schema.MappingSchema": {"tf": 1}, "sqlglot.transforms.eliminate_qualify": {"tf": 1}, "sqlglot.transforms.remove_precision_parameterized_types": {"tf": 1}}, "df": 75, "e": {"docs": {"sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.diff.diff": {"tf": 1}, "sqlglot.expressions.func": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}}, "df": 8, "d": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.expressions.Select.group_by": {"tf": 1}}, "df": 1}}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 2.23606797749979}, "sqlglot.diff": {"tf": 7.745966692414834}, "sqlglot.diff.Insert": {"tf": 1}, "sqlglot.diff.Remove": {"tf": 1}, "sqlglot.diff.Move": {"tf": 1}, "sqlglot.diff.Update": {"tf": 1}, "sqlglot.diff.Keep": {"tf": 1}, "sqlglot.diff.diff": {"tf": 1.7320508075688772}, "sqlglot.executor": {"tf": 1}, "sqlglot.expressions": {"tf": 1}, "sqlglot.expressions.Expression.find": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.find_ancestor": {"tf": 1}, "sqlglot.expressions.Expression.walk": {"tf": 1}, "sqlglot.expressions.Expression.transform": {"tf": 2.23606797749979}, "sqlglot.expressions.Expression.replace": {"tf": 1}, "sqlglot.expressions.Func": {"tf": 1}, "sqlglot.expressions.to_identifier": {"tf": 1}, "sqlglot.expressions.cast": {"tf": 1}, "sqlglot.expressions.var": {"tf": 1}, "sqlglot.expressions.table_name": {"tf": 1}, "sqlglot.expressions.replace_tables": {"tf": 1}, "sqlglot.expressions.replace_placeholders": {"tf": 1}, "sqlglot.generator.Generator.generate": {"tf": 1}, "sqlglot.lineage.lineage": {"tf": 1}, "sqlglot.lineage.LineageHTML": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.Scope.replace": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.traverse": {"tf": 1}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1}}, "df": 29, "s": {"docs": {"sqlglot.diff": {"tf": 8.12403840463596}, "sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.expressions.Expression.find_all": {"tf": 1}, "sqlglot.expressions.Expression.walk": {"tf": 1}, "sqlglot.expressions.Expression.dfs": {"tf": 1}, "sqlglot.expressions.Expression.bfs": {"tf": 1}, "sqlglot.expressions.Expression.flatten": {"tf": 1}, "sqlglot.expressions.Expression.transform": {"tf": 1}, "sqlglot.helper.tsort": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1.4142135623730951}}, "df": 12}, "\u2019": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}, "n": {"docs": {"sqlglot.errors.SqlglotError": {"tf": 1}, "sqlglot.errors.UnsupportedError": {"tf": 1}, "sqlglot.errors.ParseError": {"tf": 1}, "sqlglot.errors.TokenError": {"tf": 1}, "sqlglot.errors.OptimizeError": {"tf": 1}, "sqlglot.errors.SchemaError": {"tf": 1}, "sqlglot.errors.ExecuteError": {"tf": 1}, "sqlglot.expressions.Expression.unnest": {"tf": 1}, "sqlglot.expressions.Subquery.unnest": {"tf": 1}, "sqlglot.helper.flatten": {"tf": 1.4142135623730951}}, "df": 10, "e": {"docs": {"sqlglot.dataframe": {"tf": 2}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.executor.env.null_if_any": {"tf": 1.4142135623730951}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.expressions.Expression.find": {"tf": 1}, "sqlglot.expressions.Expression.transform": {"tf": 1}, "sqlglot.expressions.update": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.helper.seq_get": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 2.23606797749979}, "sqlglot.helper.dict_depth": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1}, "sqlglot.schema.MappingSchema": {"tf": 1}}, "df": 32}}, "r": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.executor": {"tf": 1}, "sqlglot.optimizer.normalize.normalize": {"tf": 1.7320508075688772}}, "df": 2, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.7320508075688772}, "sqlglot.executor": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator": {"tf": 1.7320508075688772}, "sqlglot.optimizer.normalize.normalize": {"tf": 1.4142135623730951}}, "df": 23, "d": {"docs": {"sqlglot.optimizer.normalize.normalize": {"tf": 1}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1}}, "df": 2}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.optimizer.normalize.normalization_distance": {"tf": 1}}, "df": 1}}}}}}}}}}}, "w": {"docs": {"sqlglot.diff": {"tf": 2.6457513110645907}, "sqlglot.executor": {"tf": 1.4142135623730951}}, "df": 2}}, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 2}, "sqlglot.dataframe": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator.renametable_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.executor.table.Tables": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.expressions.Expression.output_name": {"tf": 2.23606797749979}, "sqlglot.expressions.Expression.append": {"tf": 1}, "sqlglot.expressions.Expression.set": {"tf": 1}, "sqlglot.expressions.Column.output_name": {"tf": 2.23606797749979}, "sqlglot.expressions.Column.parts": {"tf": 1}, "sqlglot.expressions.Identifier.output_name": {"tf": 2.23606797749979}, "sqlglot.expressions.Literal.output_name": {"tf": 2.23606797749979}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1}, "sqlglot.expressions.Select.ctas": {"tf": 1}, "sqlglot.expressions.Subquery.output_name": {"tf": 2.23606797749979}, "sqlglot.expressions.Star.output_name": {"tf": 2.23606797749979}, "sqlglot.expressions.Alias.output_name": {"tf": 2.23606797749979}, "sqlglot.expressions.Func": {"tf": 2.23606797749979}, "sqlglot.expressions.Cast.output_name": {"tf": 2.23606797749979}, "sqlglot.expressions.to_identifier": {"tf": 1.4142135623730951}, "sqlglot.expressions.alias_": {"tf": 1.4142135623730951}, "sqlglot.expressions.subquery": {"tf": 1}, "sqlglot.expressions.column": {"tf": 2}, "sqlglot.expressions.table_": {"tf": 1.7320508075688772}, "sqlglot.expressions.var": {"tf": 1.7320508075688772}, "sqlglot.expressions.rename_table": {"tf": 2}, "sqlglot.expressions.table_name": {"tf": 1.7320508075688772}, "sqlglot.expressions.expand": {"tf": 1}, "sqlglot.expressions.func": {"tf": 1.7320508075688772}, "sqlglot.helper.AutoName": {"tf": 1}, "sqlglot.helper.subclasses": {"tf": 1.4142135623730951}, "sqlglot.helper.camel_to_snake_case": {"tf": 1}, "sqlglot.helper.csv_reader": {"tf": 1}, "sqlglot.helper.find_new_name": {"tf": 1.7320508075688772}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.get_table": {"tf": 2}, "sqlglot.optimizer.qualify_columns.Resolver.get_source_columns": {"tf": 1}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope": {"tf": 1}, "sqlglot.optimizer.scope.Scope.source_columns": {"tf": 1.7320508075688772}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1}}, "df": 46, "s": {"docs": {"sqlglot.dataframe": {"tf": 1.7320508075688772}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.expressions.Func": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1.4142135623730951}, "sqlglot.expressions.column_table_names": {"tf": 2}, "sqlglot.expressions.replace_tables": {"tf": 1}, "sqlglot.expressions.replace_placeholders": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.helper.find_new_name": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}, "sqlglot.schema.Schema.column_names": {"tf": 1.4142135623730951}, "sqlglot.schema.MappingSchema.column_names": {"tf": 1.4142135623730951}}, "df": 33}, "d": {"docs": {"sqlglot.expressions.replace_placeholders": {"tf": 1}}, "df": 1}}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}}}}, "\u00ef": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "w": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dialects": {"tf": 1.4142135623730951}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.diff.Insert": {"tf": 1}, "sqlglot.executor": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.expressions.Expression.append": {"tf": 1}, "sqlglot.expressions.Expression.transform": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.replace": {"tf": 1.7320508075688772}, "sqlglot.expressions.Condition.and_": {"tf": 1}, "sqlglot.expressions.Condition.or_": {"tf": 1}, "sqlglot.expressions.Condition.not_": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Join.using": {"tf": 1}, "sqlglot.expressions.Select.where": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1}, "sqlglot.expressions.and_": {"tf": 1}, "sqlglot.expressions.or_": {"tf": 1}, "sqlglot.expressions.not_": {"tf": 1}, "sqlglot.expressions.subquery": {"tf": 1}, "sqlglot.expressions.var": {"tf": 1}, "sqlglot.expressions.rename_table": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.helper.find_new_name": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.branch": {"tf": 1}, "sqlglot.optimizer.scope.Scope.replace": {"tf": 1.7320508075688772}, "sqlglot.parser.Parser.expression": {"tf": 1}, "sqlglot.schema.MappingSchema.add_table": {"tf": 1}, "sqlglot.transforms.preprocess": {"tf": 1}, "sqlglot.trie.new_trie": {"tf": 1.7320508075688772}, "sqlglot.trie.in_trie": {"tf": 1.7320508075688772}}, "df": 51, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.helper.open_file": {"tf": 1}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.dialects": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.diff": {"tf": 2.449489742783178}, "sqlglot.executor": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}, "sqlglot.transforms.eliminate_qualify": {"tf": 1.4142135623730951}}, "df": 8, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dialects": {"tf": 1}, "sqlglot.diff.diff": {"tf": 1}}, "df": 3}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}, "x": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1.4142135623730951}}, "df": 3}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.schema.MappingSchema": {"tf": 1}, "sqlglot.trie.new_trie": {"tf": 1}}, "df": 3}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.helper.dict_depth": {"tf": 1}, "sqlglot.schema.MappingSchema": {"tf": 1}}, "df": 2}}}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}, "g": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "t": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "x": {"docs": {"sqlglot.executor": {"tf": 1.4142135623730951}}, "df": 1}}}}, "w": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.lineage.LineageHTML": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.Expression": {"tf": 1}}, "df": 1}}}}}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.Expression.find_ancestor": {"tf": 1}}, "df": 1}}}}}}, "u": {"docs": {}, "df": 0, "m": {"docs": {"sqlglot.dataframe": {"tf": 3}, "sqlglot.diff": {"tf": 2.23606797749979}, "sqlglot.helper.split_num_words": {"tf": 2}}, "df": 3, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dialects": {"tf": 1}}, "df": 2}}}}, "b": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 2.449489742783178}, "sqlglot.executor.python.Python.Generator": {"tf": 1.4142135623730951}, "sqlglot.expressions": {"tf": 1}, "sqlglot.expressions.Expression.is_number": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1.4142135623730951}, "sqlglot.helper.csv": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1.4142135623730951}, "sqlglot.helper.count_params": {"tf": 1}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1}, "sqlglot.optimizer.scope.Scope.ref_count": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1.4142135623730951}, "sqlglot.tokens.Token.number": {"tf": 1.4142135623730951}}, "df": 50}}}, "p": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1.4142135623730951}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1}, "sqlglot.executor.env.null_if_any": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1.4142135623730951}, "sqlglot.expressions.update": {"tf": 1.4142135623730951}, "sqlglot.expressions.null": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser": {"tf": 1.4142135623730951}}, "df": 45, "s": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 2}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 2}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 2}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 2}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 2}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 2}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 2}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 2}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 2}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 2}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 2}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 2}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 2}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 2}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 2}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 2}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 2}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 2}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 2}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 2}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 2}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 2}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 2}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 2}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 2}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 2}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 2}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 2}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 2}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 2}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 2}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 2}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 2}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 2}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 2}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 2}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 2}, "sqlglot.executor.python.Python.Generator": {"tf": 2}, "sqlglot.generator.Generator": {"tf": 2}, "sqlglot.parser.Parser": {"tf": 2}}, "df": 40}}}}, "^": {"2": {"docs": {"sqlglot.diff": {"tf": 2.23606797749979}}, "df": 1}, "docs": {}, "df": 0}, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}, "d": {"docs": {"sqlglot": {"tf": 3.1622776601683795}, "sqlglot.diff": {"tf": 2.8284271247461903}, "sqlglot.executor": {"tf": 2}, "sqlglot.expressions.column_table_names": {"tf": 1}, "sqlglot.helper.dict_depth": {"tf": 1}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1}}, "df": 6, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 1}, "sqlglot.optimizer.optimize_joins.optimize_joins": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1.4142135623730951}, "sqlglot.planner.Scan.from_expression": {"tf": 1.4142135623730951}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1.4142135623730951}}, "df": 6}}}}, "t": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.parser.Parser.check_errors": {"tf": 1}, "sqlglot.parser.Parser.raise_error": {"tf": 1}}, "df": 3}}}}}}, "t": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.expressions.Expression.depth": {"tf": 1}, "sqlglot.expressions.Expression.dfs": {"tf": 1}, "sqlglot.helper.dict_depth": {"tf": 2.6457513110645907}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1}, "sqlglot.optimizer.scope.Scope.traverse": {"tf": 1}}, "df": 6}}}, "v": {"docs": {"sqlglot": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1.4142135623730951}}, "df": 3}}}}}}}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}}, "df": 1, "s": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.scope.Scope.is_subquery": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_derived_table": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_union": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_cte": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_root": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_udtf": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_correlated_subquery": {"tf": 1}}, "df": 7, "s": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.7320508075688772}, "sqlglot.executor.python.Python.Generator": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.expressions.Func": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1.7320508075688772}, "sqlglot.parser.Parser": {"tf": 1}}, "df": 42}}}}}}}, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}, "s": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot.expressions.Select.order_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.sort_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.cluster_by": {"tf": 1.4142135623730951}}, "df": 3, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}}}, "b": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.diff.ChangeDistiller": {"tf": 1.4142135623730951}}, "df": 2}, "s": {"docs": {"sqlglot.schema.Schema.add_table": {"tf": 1}, "sqlglot.schema.MappingSchema.add_table": {"tf": 1}}, "df": 2}}}}}, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.transpile": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser": {"tf": 1}}, "df": 21}}, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}, "g": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 2}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.trie.new_trie": {"tf": 1}}, "df": 1}}}}}}, "p": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}, "f": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.diff": {"tf": 2}, "sqlglot.executor.env.null_if_any": {"tf": 1}, "sqlglot.executor.table.Tables": {"tf": 1.4142135623730951}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1.4142135623730951}}, "df": 5, "a": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.pretty": {"tf": 1}, "sqlglot.schema": {"tf": 1}, "sqlglot.dataframe": {"tf": 1.4142135623730951}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 2.6457513110645907}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 4.358898943540674}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 2.6457513110645907}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 4.358898943540674}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 2.6457513110645907}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 4.358898943540674}, "sqlglot.dialects.dialect.format_time_lambda": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 2.6457513110645907}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 4.358898943540674}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 2.6457513110645907}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 4.358898943540674}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 2.6457513110645907}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 4.358898943540674}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 2.6457513110645907}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 4.358898943540674}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 2.6457513110645907}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 4.358898943540674}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 2.6457513110645907}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 4.358898943540674}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 2.6457513110645907}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 4.358898943540674}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 2.6457513110645907}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 4.358898943540674}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 2.6457513110645907}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 4.358898943540674}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 2.6457513110645907}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 4.358898943540674}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 2.6457513110645907}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 4.358898943540674}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 2.6457513110645907}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 4.358898943540674}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 4.358898943540674}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 2.6457513110645907}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 2.6457513110645907}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 4.358898943540674}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 4.358898943540674}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 2.6457513110645907}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 4.358898943540674}, "sqlglot.executor.python.Python.Generator": {"tf": 4.358898943540674}, "sqlglot.executor.table.Tables": {"tf": 1.4142135623730951}, "sqlglot.expressions.Func": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 4.358898943540674}, "sqlglot.lineage.lineage": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1.7320508075688772}, "sqlglot.parser.Parser": {"tf": 2.6457513110645907}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1.4142135623730951}}, "df": 50, "s": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1}, "sqlglot.expressions.expand": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}}, "df": 23}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1, "d": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.executor.table.Tables": {"tf": 1}, "sqlglot.expressions.Func": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.udtfs": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_udtf": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1}, "sqlglot.transforms.remove_precision_parameterized_types": {"tf": 1}}, "df": 9}, "s": {"docs": {"sqlglot.optimizer.scope.Scope": {"tf": 1}}, "df": 1}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.dialects.redshift.Redshift.Generator.renametable_sql": {"tf": 1}}, "df": 1}}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.Expression": {"tf": 1}}, "df": 1, "s": {"docs": {"sqlglot.executor": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}}, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dialects": {"tf": 1}}, "df": 2}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1, "d": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}}, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.executor.env.null_if_any": {"tf": 1}}, "df": 1}}, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.executor.env.null_if_any": {"tf": 1}}, "df": 1}}}}}}}, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.executor.table.Tables": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1}}, "df": 2}}}}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 2}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 2}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 2}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 2}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 2}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 2}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 2}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 2}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 2}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 2}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 2}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 2}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 2}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 2}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 2}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 2}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 2}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 2}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 2}, "sqlglot.executor.python.Python.Generator": {"tf": 2}, "sqlglot.generator.Generator": {"tf": 2}}, "df": 21, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.helper.csv_reader": {"tf": 1}}, "df": 1, "s": {"docs": {"sqlglot.dialects": {"tf": 1}}, "df": 1}}}}}}}, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {"sqlglot.expressions.Delete.delete": {"tf": 2.449489742783178}, "sqlglot.expressions.Delete.where": {"tf": 1.7320508075688772}, "sqlglot.expressions.Delete.returning": {"tf": 1.7320508075688772}, "sqlglot.expressions.delete": {"tf": 2.23606797749979}}, "df": 4}}}}, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}, "e": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1, "d": {"docs": {"sqlglot.optimizer.eliminate_subqueries.eliminate_subqueries": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 2}, "sqlglot.optimizer.scope.Scope.derived_tables": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.Scope.is_derived_table": {"tf": 1}}, "df": 5}}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "u": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.optimizer.eliminate_subqueries.eliminate_subqueries": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.optimizer.eliminate_subqueries.eliminate_subqueries": {"tf": 1}}, "df": 1}}}}}}}}}}, "b": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.executor": {"tf": 1}, "sqlglot.parser.Parser.parse": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 1}}, "df": 3}}}, "e": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.expressions.Expression.copy": {"tf": 1}}, "df": 1}}, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.optimizer.simplify.simplify_not": {"tf": 1}}, "df": 1}}}}}}}, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "f": {"docs": {"sqlglot": {"tf": 2.23606797749979}, "sqlglot.diff": {"tf": 3.4641016151377544}, "sqlglot.diff.diff": {"tf": 1.4142135623730951}}, "df": 3, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}}, "df": 3, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dialects": {"tf": 1}, "sqlglot.diff": {"tf": 2.6457513110645907}, "sqlglot.executor": {"tf": 1}}, "df": 4, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.dataframe.sql.Column.cast": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1.4142135623730951}}, "df": 5}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects": {"tf": 1}}, "df": 1}}}}, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}}, "df": 1}}}, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot": {"tf": 2.6457513110645907}, "sqlglot.parse": {"tf": 1}, "sqlglot.parse_one": {"tf": 1}, "sqlglot.transpile": {"tf": 2.6457513110645907}, "sqlglot.dataframe": {"tf": 2.449489742783178}, "sqlglot.dialects": {"tf": 3.1622776601683795}, "sqlglot.dialects.dialect.format_time_lambda": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.executor.execute": {"tf": 1}, "sqlglot.expressions.Expression.sql": {"tf": 1.4142135623730951}, "sqlglot.expressions.Condition.and_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Condition.or_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Unionable.union": {"tf": 1.4142135623730951}, "sqlglot.expressions.Unionable.intersect": {"tf": 1.4142135623730951}, "sqlglot.expressions.Unionable.except_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Delete.delete": {"tf": 1.4142135623730951}, "sqlglot.expressions.Delete.where": {"tf": 1.4142135623730951}, "sqlglot.expressions.Delete.returning": {"tf": 1.7320508075688772}, "sqlglot.expressions.Join.on": {"tf": 1.4142135623730951}, "sqlglot.expressions.Join.using": {"tf": 1.4142135623730951}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Union.limit": {"tf": 1.4142135623730951}, "sqlglot.expressions.Union.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.from_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.group_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.order_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.sort_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.cluster_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.limit": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.offset": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.lateral": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.join": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.where": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.having": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.ctas": {"tf": 1.4142135623730951}, "sqlglot.expressions.maybe_parse": {"tf": 1.4142135623730951}, "sqlglot.expressions.union": {"tf": 1.4142135623730951}, "sqlglot.expressions.intersect": {"tf": 1.4142135623730951}, "sqlglot.expressions.except_": {"tf": 1.4142135623730951}, "sqlglot.expressions.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.from_": {"tf": 1.4142135623730951}, "sqlglot.expressions.update": {"tf": 1.4142135623730951}, "sqlglot.expressions.delete": {"tf": 1.4142135623730951}, "sqlglot.expressions.condition": {"tf": 1.4142135623730951}, "sqlglot.expressions.and_": {"tf": 1.4142135623730951}, "sqlglot.expressions.or_": {"tf": 1.4142135623730951}, "sqlglot.expressions.not_": {"tf": 1.4142135623730951}, "sqlglot.expressions.alias_": {"tf": 1.4142135623730951}, "sqlglot.expressions.subquery": {"tf": 1.4142135623730951}, "sqlglot.expressions.func": {"tf": 1.4142135623730951}, "sqlglot.lineage.lineage": {"tf": 1.4142135623730951}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1.4142135623730951}, "sqlglot.schema.MappingSchema": {"tf": 1.4142135623730951}}, "df": 54, "s": {"docs": {"sqlglot": {"tf": 2.6457513110645907}, "sqlglot.dataframe": {"tf": 1.7320508075688772}, "sqlglot.dialects": {"tf": 2}, "sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.expressions.Delete.returning": {"tf": 1}, "sqlglot.transforms.eliminate_distinct_on": {"tf": 1}, "sqlglot.transforms.eliminate_qualify": {"tf": 1}, "sqlglot.transforms.remove_precision_parameterized_types": {"tf": 1}}, "df": 9}}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot": {"tf": 2}, "sqlglot.dataframe": {"tf": 1}, "sqlglot.expressions.Unionable.union": {"tf": 1.4142135623730951}, "sqlglot.expressions.Unionable.intersect": {"tf": 1.4142135623730951}, "sqlglot.expressions.Unionable.except_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.distinct": {"tf": 2}, "sqlglot.expressions.union": {"tf": 1.4142135623730951}, "sqlglot.expressions.intersect": {"tf": 1.4142135623730951}, "sqlglot.expressions.except_": {"tf": 1.4142135623730951}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 1}, "sqlglot.transforms.eliminate_distinct_on": {"tf": 1.4142135623730951}}, "df": 11, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.diff": {"tf": 2.23606797749979}, "sqlglot.diff.ChangeDistiller": {"tf": 1}}, "df": 2}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.normalize.normalize": {"tf": 1.4142135623730951}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1.7320508075688772}}, "df": 2}}}}}, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1}}, "df": 19}}}}}}, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}, "o": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}, "j": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.normalize.normalize": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}}, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.expressions.Expression.dump": {"tf": 1}, "sqlglot.expressions.Expression.load": {"tf": 1}, "sqlglot.expressions.Select.ctas": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.helper.dict_depth": {"tf": 2.449489742783178}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1.4142135623730951}, "sqlglot.schema.MappingSchema": {"tf": 1.4142135623730951}, "sqlglot.serde.dump": {"tf": 1}, "sqlglot.serde.load": {"tf": 1}}, "df": 29, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.trie.new_trie": {"tf": 1}}, "df": 2}}}, "y": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.executor.context.Context.__init__": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.expressions.update": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1.4142135623730951}, "sqlglot.expressions.expand": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.helper.object_to_dict": {"tf": 1}, "sqlglot.helper.dict_depth": {"tf": 1.4142135623730951}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}, "sqlglot.time.format_time": {"tf": 1}}, "df": 32}}}}}}, "[": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.replace_tables": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 1}, "sqlglot.optimizer.scope.Scope.cte_sources": {"tf": 1}}, "df": 4}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.optimizer.scope.Scope.ref_count": {"tf": 1}}, "df": 1}}}}, "|": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}, "sqlglot.optimizer.qualify_columns.qualify_columns": {"tf": 1}}, "df": 2}}}}}}}}}, "e": {"docs": {"sqlglot.diff": {"tf": 2.23606797749979}}, "df": 1}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 2}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.helper.tsort": {"tf": 1}}, "df": 1}}}}}}, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}, "d": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 2}}, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "b": {"docs": {"sqlglot": {"tf": 1.7320508075688772}, "sqlglot.dataframe": {"tf": 1}}, "df": 2}}}}, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.parse": {"tf": 1}, "sqlglot.parse_one": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.executor.execute": {"tf": 1}, "sqlglot.expressions.Func": {"tf": 1.4142135623730951}, "sqlglot.expressions.expand": {"tf": 1}}, "df": 6}}}}, "e": {"docs": {"sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.diff": {"tf": 1}}, "df": 3}, "m": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.expressions.Expression.dump": {"tf": 1}, "sqlglot.expressions.Expression.load": {"tf": 1}, "sqlglot.serde.dump": {"tf": 1}, "sqlglot.serde.load": {"tf": 1}}, "df": 4}}, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 1}}, "df": 1}}}}}}}}, "o": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.diff": {"tf": 2.6457513110645907}, "sqlglot.executor": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 4, "c": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot": {"tf": 1.7320508075688772}, "sqlglot.transforms.eliminate_qualify": {"tf": 1}}, "df": 2}}}}}}}}}}, "s": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1}, "sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1}}, "df": 6, "n": {"docs": {"sqlglot.dataframe.sql.Column.cast": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.with_properties": {"tf": 1}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.expressions.func": {"tf": 1}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 1}}, "df": 5, "\u2019": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}}, "df": 1}}}}}, "u": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.dialects": {"tf": 1.4142135623730951}, "sqlglot.expressions.func": {"tf": 1.4142135623730951}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1.4142135623730951}}, "df": 4}}}}, "n": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.executor": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.expressions.Expression.error_messages": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1}, "sqlglot.optimizer.scope.Scope.external_columns": {"tf": 1}, "sqlglot.transforms.eliminate_distinct_on": {"tf": 1}, "sqlglot.transforms.eliminate_qualify": {"tf": 1}}, "df": 27, "e": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.dialects": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1}, "sqlglot.optimizer.simplify.rewrite_between": {"tf": 1.4142135623730951}}, "df": 5}, "\u2019": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}, "m": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}, "w": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.executor": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_dnf": {"tf": 1}}, "df": 2}}, "t": {"docs": {"sqlglot.expressions.Column.to_dot": {"tf": 1}, "sqlglot.expressions.Dot.build": {"tf": 1}}, "df": 2}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 2}, "sqlglot.optimizer.scope.Scope.replace": {"tf": 1}}, "df": 2, "/": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}}}, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}}}, "a": {"docs": {"sqlglot.dataframe": {"tf": 2.449489742783178}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 3.605551275463989}, "sqlglot.executor.execute": {"tf": 1.4142135623730951}, "sqlglot.executor.context.Context": {"tf": 1}, "sqlglot.expressions.cast": {"tf": 1}}, "df": 7, "t": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 3}, "sqlglot.dataframe.sql.Column.cast": {"tf": 1.4142135623730951}, "sqlglot.dialects": {"tf": 3}, "sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.expressions.cast": {"tf": 1}, "sqlglot.expressions.func": {"tf": 1}, "sqlglot.schema.Schema.get_column_type": {"tf": 1}, "sqlglot.schema.MappingSchema.get_column_type": {"tf": 1}}, "df": 8}}}}, "f": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe": {"tf": 4.58257569495584}, "sqlglot.executor": {"tf": 1}}, "df": 2, "s": {"docs": {"sqlglot.dataframe": {"tf": 1}}, "df": 1}}}}}}, "b": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.executor.execute": {"tf": 1}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1.7320508075688772}, "sqlglot.optimizer.qualify_columns.qualify_columns": {"tf": 1}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"tf": 1}, "sqlglot.schema.Schema": {"tf": 1}}, "df": 6}}}}}}, "g": {"docs": {"sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.helper.tsort": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 2.23606797749979}, "sqlglot.planner.Scan.from_expression": {"tf": 2.23606797749979}, "sqlglot.planner.SetOperation.from_expression": {"tf": 2.23606797749979}}, "df": 5}, "y": {"docs": {"sqlglot.expressions.to_interval": {"tf": 1}}, "df": 1}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.dataframe": {"tf": 1}}, "df": 1}}, "a": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}, "u": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}, "f": {"docs": {"sqlglot.dataframe": {"tf": 2.8284271247461903}}, "df": 1, "s": {"docs": {"sqlglot.expressions.Expression.walk": {"tf": 1}, "sqlglot.expressions.Expression.dfs": {"tf": 1}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1}}, "df": 3}}, "b": {"docs": {"sqlglot.dialects.redshift.Redshift.Generator.renametable_sql": {"tf": 1}, "sqlglot.executor": {"tf": 1}, "sqlglot.executor.execute": {"tf": 1.4142135623730951}, "sqlglot.expressions.Column.parts": {"tf": 1}, "sqlglot.expressions.column": {"tf": 1.4142135623730951}, "sqlglot.expressions.table_": {"tf": 1.4142135623730951}, "sqlglot.helper.split_num_words": {"tf": 2.449489742783178}, "sqlglot.optimizer.optimizer.optimize": {"tf": 2}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"tf": 2}, "sqlglot.schema.Schema.supported_table_args": {"tf": 1}, "sqlglot.schema.MappingSchema": {"tf": 2}}, "df": 11, "/": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}}}}, "y": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}, "n": {"docs": {}, "df": 0, "f": {"docs": {"sqlglot.executor": {"tf": 1}, "sqlglot.optimizer.normalize.normalize": {"tf": 1.4142135623730951}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1.4142135623730951}, "sqlglot.optimizer.pushdown_predicates.pushdown_dnf": {"tf": 1}}, "df": 4}}, "s": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}, "d": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.transforms.remove_precision_parameterized_types": {"tf": 1}}, "df": 1}}}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 3.872983346207417}, "sqlglot.parse": {"tf": 1}, "sqlglot.parse_one": {"tf": 1.4142135623730951}, "sqlglot.transpile": {"tf": 1}, "sqlglot.diff": {"tf": 2.23606797749979}, "sqlglot.diff.diff": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.output_name": {"tf": 2}, "sqlglot.expressions.Expression.assert_is": {"tf": 1}, "sqlglot.expressions.Condition.and_": {"tf": 1.7320508075688772}, "sqlglot.expressions.Condition.or_": {"tf": 1.7320508075688772}, "sqlglot.expressions.Unionable.union": {"tf": 1.7320508075688772}, "sqlglot.expressions.Unionable.intersect": {"tf": 1.7320508075688772}, "sqlglot.expressions.Unionable.except_": {"tf": 1.7320508075688772}, "sqlglot.expressions.Column.output_name": {"tf": 2}, "sqlglot.expressions.Delete.delete": {"tf": 1.4142135623730951}, "sqlglot.expressions.Delete.where": {"tf": 1.7320508075688772}, "sqlglot.expressions.Delete.returning": {"tf": 1.7320508075688772}, "sqlglot.expressions.Identifier.output_name": {"tf": 2}, "sqlglot.expressions.Literal.output_name": {"tf": 2}, "sqlglot.expressions.Join.on": {"tf": 2}, "sqlglot.expressions.Join.using": {"tf": 2}, "sqlglot.expressions.Subqueryable.with_": {"tf": 2}, "sqlglot.expressions.Union.limit": {"tf": 1.7320508075688772}, "sqlglot.expressions.Union.select": {"tf": 2.23606797749979}, "sqlglot.expressions.Select.from_": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.group_by": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.order_by": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.sort_by": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.cluster_by": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.limit": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.offset": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.select": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.lateral": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.join": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.where": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.having": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.ctas": {"tf": 1.7320508075688772}, "sqlglot.expressions.Subquery.output_name": {"tf": 2}, "sqlglot.expressions.Star.output_name": {"tf": 2}, "sqlglot.expressions.Alias.output_name": {"tf": 2}, "sqlglot.expressions.Cast.output_name": {"tf": 2}, "sqlglot.expressions.maybe_parse": {"tf": 2.23606797749979}, "sqlglot.expressions.union": {"tf": 1.4142135623730951}, "sqlglot.expressions.intersect": {"tf": 1.4142135623730951}, "sqlglot.expressions.except_": {"tf": 1.4142135623730951}, "sqlglot.expressions.select": {"tf": 1.7320508075688772}, "sqlglot.expressions.from_": {"tf": 1.7320508075688772}, "sqlglot.expressions.update": {"tf": 1.4142135623730951}, "sqlglot.expressions.delete": {"tf": 1.4142135623730951}, "sqlglot.expressions.condition": {"tf": 1.7320508075688772}, "sqlglot.expressions.and_": {"tf": 1.7320508075688772}, "sqlglot.expressions.or_": {"tf": 1.7320508075688772}, "sqlglot.expressions.not_": {"tf": 1.7320508075688772}, "sqlglot.expressions.alias_": {"tf": 1.7320508075688772}, "sqlglot.expressions.subquery": {"tf": 1.7320508075688772}, "sqlglot.expressions.column_table_names": {"tf": 1}, "sqlglot.expressions.table_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.replace_tables": {"tf": 1.4142135623730951}, "sqlglot.expressions.replace_placeholders": {"tf": 1.4142135623730951}, "sqlglot.expressions.expand": {"tf": 2.449489742783178}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}, "sqlglot.optimizer.eliminate_ctes.eliminate_ctes": {"tf": 1}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 1}, "sqlglot.optimizer.eliminate_subqueries.eliminate_subqueries": {"tf": 1.4142135623730951}, "sqlglot.optimizer.expand_laterals.expand_laterals": {"tf": 1}, "sqlglot.optimizer.expand_multi_table_selects.expand_multi_table_selects": {"tf": 1.4142135623730951}, "sqlglot.optimizer.lower_identities.lower_identities": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1.4142135623730951}, "sqlglot.optimizer.normalize.normalize": {"tf": 1}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1}, "sqlglot.optimizer.optimize_joins.optimize_joins": {"tf": 1.4142135623730951}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_predicates": {"tf": 1}, "sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 1}, "sqlglot.optimizer.qualify_columns.qualify_columns": {"tf": 1}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}, "sqlglot.optimizer.simplify.simplify": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 1.4142135623730951}, "sqlglot.transforms.unalias_group": {"tf": 1}}, "df": 82, "r": {"docs": {"sqlglot": {"tf": 2.6457513110645907}, "sqlglot.parse": {"tf": 1.4142135623730951}, "sqlglot.parse_one": {"tf": 1.4142135623730951}, "sqlglot.transpile": {"tf": 1}, "sqlglot.dialects": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.executor": {"tf": 2.6457513110645907}, "sqlglot.parser.Parser": {"tf": 1}}, "df": 25, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}}}, "/": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}}}}}}, "s": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1}}, "df": 20}}}}}, "d": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.parse": {"tf": 1}, "sqlglot.parse_one": {"tf": 1.4142135623730951}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1.4142135623730951}, "sqlglot.expressions.update": {"tf": 1.4142135623730951}, "sqlglot.expressions.delete": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser": {"tf": 1}, "sqlglot.parser.Parser.parse": {"tf": 1}}, "df": 27}, "s": {"docs": {"sqlglot.parse": {"tf": 1}, "sqlglot.parse_one": {"tf": 1}, "sqlglot.transpile": {"tf": 1}, "sqlglot.executor": {"tf": 1}, "sqlglot.parser.Parser.parse": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 1}}, "df": 6}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.parse": {"tf": 1}, "sqlglot.parse_one": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 2}, "sqlglot.executor.execute": {"tf": 1}, "sqlglot.expressions.Func": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 1}}, "df": 7, "/": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}, "t": {"docs": {"sqlglot.dialects.redshift.Redshift.Generator.with_properties": {"tf": 1}, "sqlglot.diff": {"tf": 2.23606797749979}, "sqlglot.executor": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1}, "sqlglot.expressions.column": {"tf": 1}}, "df": 5, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "c": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.executor": {"tf": 1}, "sqlglot.optimizer.scope.Scope.source_columns": {"tf": 1}}, "df": 2, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}}, "s": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1}, "sqlglot.expressions.Column.parts": {"tf": 1}}, "df": 3}}, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.find_ancestor": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.parent_select": {"tf": 1}, "sqlglot.expressions.Expression.same_parent": {"tf": 1}, "sqlglot.expressions.Expression.walk": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_cnf": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1}}, "df": 9, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.Expression.unnest": {"tf": 1}}, "df": 1}}}}}, "s": {"docs": {"sqlglot.expressions.Expression.flatten": {"tf": 1}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.executor.table.Tables": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1}, "sqlglot.transforms.remove_precision_parameterized_types": {"tf": 1.4142135623730951}}, "df": 3}}}}, "s": {"docs": {"sqlglot.helper.count_params": {"tf": 1}}, "df": 1}}}}}}}}, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot": {"tf": 1}}, "df": 1, "/": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}}}}}, "s": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1}}, "df": 3, "w": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.dataframe": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}, "d": {"docs": {"sqlglot.expressions.Condition.and_": {"tf": 1}, "sqlglot.expressions.Condition.or_": {"tf": 1}, "sqlglot.expressions.Unionable.union": {"tf": 1}, "sqlglot.expressions.Unionable.intersect": {"tf": 1}, "sqlglot.expressions.Unionable.except_": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Delete.returning": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Join.using": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Union.limit": {"tf": 1.4142135623730951}, "sqlglot.expressions.Union.select": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.group_by": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.order_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.sort_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.cluster_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.limit": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.offset": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.select": {"tf": 1}, "sqlglot.expressions.Select.lateral": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.where": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1}, "sqlglot.expressions.Select.ctas": {"tf": 1}, "sqlglot.expressions.union": {"tf": 1.4142135623730951}, "sqlglot.expressions.intersect": {"tf": 1.4142135623730951}, "sqlglot.expressions.except_": {"tf": 1.4142135623730951}, "sqlglot.expressions.select": {"tf": 1}, "sqlglot.expressions.from_": {"tf": 1}, "sqlglot.expressions.condition": {"tf": 1}, "sqlglot.expressions.and_": {"tf": 1}, "sqlglot.expressions.or_": {"tf": 1}, "sqlglot.expressions.not_": {"tf": 1}, "sqlglot.expressions.to_table": {"tf": 1}, "sqlglot.expressions.to_column": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1}, "sqlglot.expressions.subquery": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.time.format_time": {"tf": 1}}, "df": 40}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}, "d": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}}, "df": 21, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}}, "df": 21}}}}}, "i": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.diff": {"tf": 2.6457513110645907}, "sqlglot.trie.in_trie": {"tf": 1}}, "df": 2, "s": {"docs": {"sqlglot.diff": {"tf": 3.4641016151377544}, "sqlglot.diff.diff": {"tf": 1}}, "df": 2}}}, "t": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.expressions.to_table": {"tf": 1.4142135623730951}, "sqlglot.expressions.to_column": {"tf": 1.4142135623730951}}, "df": 3, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.diff": {"tf": 2}, "sqlglot.diff.ChangeDistiller": {"tf": 1}}, "df": 2}}}}, "r": {"docs": {"sqlglot.dataframe": {"tf": 1}}, "df": 1, "e": {"docs": {"sqlglot.diff.diff": {"tf": 1}}, "df": 1, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {"sqlglot": {"tf": 1.7320508075688772}, "sqlglot.parse": {"tf": 1}, "sqlglot.parse_one": {"tf": 1}, "sqlglot.transpile": {"tf": 1.4142135623730951}, "sqlglot.dataframe": {"tf": 1}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.executor.execute": {"tf": 1}, "sqlglot.expressions.Expression.sql": {"tf": 1}, "sqlglot.transforms.unnest_to_explode": {"tf": 1}, "sqlglot.transforms.explode_to_unnest": {"tf": 1}}, "df": 10}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}}, "df": 22, "d": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 2}}}}, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}, "t": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot": {"tf": 1.7320508075688772}, "sqlglot.dataframe": {"tf": 2}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.executor.python.Python.Generator": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator": {"tf": 1.4142135623730951}}, "df": 24}}}, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.dataframe.sql.DataFrame.persist": {"tf": 1}}, "df": 1}}}}}}, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}}, "df": 2, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1.4142135623730951}, "sqlglot.transforms.remove_precision_parameterized_types": {"tf": 1.4142135623730951}}, "df": 2}}}, "e": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.eliminate_joins.join_condition": {"tf": 1}, "sqlglot.optimizer.optimize_joins.optimize_joins": {"tf": 1}, "sqlglot.optimizer.optimize_joins.reorder_joins": {"tf": 1}}, "df": 3, "s": {"docs": {"sqlglot.executor": {"tf": 1.7320508075688772}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_predicates": {"tf": 1.4142135623730951}, "sqlglot.optimizer.pushdown_predicates.pushdown_cnf": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_dnf": {"tf": 1.4142135623730951}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 1}}, "df": 6}}}}}}}, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "x": {"docs": {"sqlglot.expressions.maybe_parse": {"tf": 1.4142135623730951}, "sqlglot.trie.in_trie": {"tf": 1}}, "df": 2}}}}, "o": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot": {"tf": 1}}, "df": 1, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.executor": {"tf": 1}, "sqlglot.expressions": {"tf": 1}}, "df": 3}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}}, "j": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot": {"tf": 1.4142135623730951}}, "df": 1, "s": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.executor": {"tf": 1}, "sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 1.4142135623730951}, "sqlglot.planner.Step.from_expression": {"tf": 2}, "sqlglot.planner.Scan.from_expression": {"tf": 2}, "sqlglot.planner.SetOperation.from_expression": {"tf": 2}, "sqlglot.transforms.eliminate_qualify": {"tf": 1}}, "df": 7}}}}}}}}, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.expressions.Func": {"tf": 1}}, "df": 3, "d": {"docs": {"sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.error_messages": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1.4142135623730951}, "sqlglot.helper.apply_index_offset": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.schema.Schema.add_table": {"tf": 1}, "sqlglot.schema.MappingSchema": {"tf": 1}, "sqlglot.schema.MappingSchema.add_table": {"tf": 1}}, "df": 11}, "s": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}}, "df": 2}}, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1}}, "df": 1}, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dialects.redshift.Redshift.Generator.with_properties": {"tf": 1}, "sqlglot.expressions.Select.ctas": {"tf": 1.4142135623730951}, "sqlglot.expressions.update": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}}, "df": 4}}}}}}, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}, "d": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.diff.diff": {"tf": 1}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 1}, "sqlglot.parser.Parser.parse": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 1}}, "df": 5, "d": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}}, "df": 23}, "s": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1}}, "df": 42}}, "t": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}}, "df": 1}}}}, "c": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}}, "df": 1, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}, "d": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}}, "df": 1, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}}, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}}, "df": 1}}}, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}}}}}, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot": {"tf": 3.1622776601683795}, "sqlglot.dataframe": {"tf": 2}}, "df": 2}}, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 2.449489742783178}}, "df": 1}}, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dataframe": {"tf": 1.4142135623730951}}, "df": 1, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.dataframe": {"tf": 1}}, "df": 1}}}}, "y": {"docs": {"sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1}}, "df": 2}}}}}, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}}, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Expression.walk": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.parse": {"tf": 1}, "sqlglot.parser.Parser.parse": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}}, "df": 5, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {"sqlglot.executor": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1}}, "df": 2, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 2.23606797749979}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.time.format_time": {"tf": 1}}, "df": 3}}}}, "s": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 2}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.schema.MappingSchema.add_table": {"tf": 1}}, "df": 1}}}}}}, "m": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}}}}, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1}}, "df": 1}}}}}, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.executor": {"tf": 1.4142135623730951}}, "df": 1, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}, "s": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.optimizer.pushdown_predicates.pushdown_dnf": {"tf": 1}}, "df": 3, "d": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.executor": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_predicates": {"tf": 1.4142135623730951}, "sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 1}}, "df": 3}}}}}}}, "y": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot": {"tf": 2.23606797749979}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 4.898979485566356}, "sqlglot.executor.python.PythonExecutor.generate": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.generate_tuple": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.expressions.convert": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.helper.csv_reader": {"tf": 1}}, "df": 28, "\u2019": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}, "p": {"docs": {}, "df": 0, "i": {"docs": {"sqlglot": {"tf": 1}}, "df": 1, "k": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.dataframe": {"tf": 2.8284271247461903}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.dataframe.sql.Column.cast": {"tf": 1}}, "df": 3, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dataframe": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}}}}}}, "i": {"docs": {}, "df": 0, "p": {"3": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1.4142135623730951}}, "df": 2}}}}}}}, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}, "c": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}}, "df": 1, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}, "n": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.diff.ChangeDistiller": {"tf": 1}}, "df": 2}}}}}}, "d": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}, "f": {"docs": {"sqlglot.diff.ChangeDistiller": {"tf": 1}}, "df": 1}}, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 2}}}, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1}, "sqlglot.expressions.Expression.transform": {"tf": 1}, "sqlglot.expressions.Delete.delete": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Delete.returning": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Join.using": {"tf": 1}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1}, "sqlglot.expressions.Union.limit": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.expressions.Select.limit": {"tf": 1}, "sqlglot.expressions.Select.offset": {"tf": 1}, "sqlglot.expressions.Select.select": {"tf": 1}, "sqlglot.expressions.Select.lateral": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1}, "sqlglot.expressions.Select.where": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1}, "sqlglot.expressions.Select.distinct": {"tf": 1}, "sqlglot.expressions.Select.ctas": {"tf": 1}, "sqlglot.expressions.Select.lock": {"tf": 1}}, "df": 27, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.replace_placeholders": {"tf": 2}}, "df": 1}}}}}}}}}, "n": {"docs": {"sqlglot.executor": {"tf": 2.8284271247461903}}, "df": 1, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.executor": {"tf": 1.7320508075688772}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}, "r": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {"sqlglot.executor": {"tf": 1.7320508075688772}}, "df": 1}}}}}}, "u": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.optimizer.scope.Scope.columns": {"tf": 1}}, "df": 2}}}, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}}, "df": 1}}}}}, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects": {"tf": 1}, "sqlglot.diff": {"tf": 2}, "sqlglot.expressions.Expression.error_messages": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1}, "sqlglot.expressions.convert": {"tf": 1}, "sqlglot.optimizer.eliminate_subqueries.eliminate_subqueries": {"tf": 1}, "sqlglot.optimizer.optimize_joins.optimize_joins": {"tf": 1}}, "df": 7}, "y": {"docs": {"sqlglot.helper.subclasses": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1}}, "df": 2}}}}}, "t": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.diff": {"tf": 2.23606797749979}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.optimizer.scope.Scope.traverse": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1}}, "df": 43, "s": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.Delete.returning": {"tf": 1}}, "df": 1}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.diff.Move": {"tf": 1}, "sqlglot.helper.seq_get": {"tf": 1}}, "df": 3, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.expressions.replace_placeholders": {"tf": 1}}, "df": 1}}}}}}}}, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects": {"tf": 1}}, "df": 1}}}}}}, "p": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"tf": 1}}, "df": 2}}}}}, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.Expression.pop": {"tf": 1}}, "df": 1}}}}, "w": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}, "sqlglot.helper.while_changing": {"tf": 1}, "sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 1}, "sqlglot.trie.in_trie": {"tf": 1}}, "df": 4, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}, "p": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}, "h": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.executor": {"tf": 1.7320508075688772}}, "df": 1}}}}}}}}, "t": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.dataframe.sql.Column.cast": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.with_properties": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.diff": {"tf": 3.3166247903554}, "sqlglot.diff.Keep": {"tf": 1}, "sqlglot.executor": {"tf": 2.6457513110645907}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.expressions.Expression.error_messages": {"tf": 1}, "sqlglot.expressions.func": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_dnf": {"tf": 1}, "sqlglot.optimizer.qualify_columns.validate_qualify_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.external_columns": {"tf": 1}, "sqlglot.transforms.eliminate_distinct_on": {"tf": 1}, "sqlglot.transforms.eliminate_qualify": {"tf": 1.4142135623730951}, "sqlglot.trie.in_trie": {"tf": 1.4142135623730951}}, "df": 40, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1, "p": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 2.8284271247461903}, "sqlglot.transpile": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 3, "r": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 2}, "d": {"docs": {"sqlglot.transpile": {"tf": 1}}, "df": 1}, "s": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot": {"tf": 1.7320508075688772}, "sqlglot.dataframe": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1}}, "df": 3}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dialects": {"tf": 1}}, "df": 1}}}}}}}}, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1.7320508075688772}, "sqlglot.executor": {"tf": 1}}, "df": 2}}}}, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {"sqlglot": {"tf": 1.7320508075688772}, "sqlglot.diff": {"tf": 1.7320508075688772}, "sqlglot.diff.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.transforms.unalias_group": {"tf": 1}, "sqlglot.transforms.preprocess": {"tf": 1.7320508075688772}}, "df": 6, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot": {"tf": 1.4142135623730951}}, "df": 1}, "d": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.transpile": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1}, "sqlglot.expressions.Expression.transform": {"tf": 1.7320508075688772}, "sqlglot.expressions.Func": {"tf": 1}, "sqlglot.expressions.replace_tables": {"tf": 1}, "sqlglot.expressions.replace_placeholders": {"tf": 1}, "sqlglot.expressions.expand": {"tf": 1}, "sqlglot.helper.while_changing": {"tf": 1.4142135623730951}, "sqlglot.transforms.unalias_group": {"tf": 1.4142135623730951}, "sqlglot.transforms.eliminate_distinct_on": {"tf": 1.4142135623730951}}, "df": 11}}, "s": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dialects": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1}, "sqlglot.expressions.expand": {"tf": 1}, "sqlglot.transforms.remove_precision_parameterized_types": {"tf": 1}, "sqlglot.transforms.preprocess": {"tf": 1.4142135623730951}}, "df": 6}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.Expression.transform": {"tf": 1}, "sqlglot.expressions.expand": {"tf": 1}, "sqlglot.helper.while_changing": {"tf": 1.4142135623730951}, "sqlglot.transforms.eliminate_qualify": {"tf": 1}}, "df": 4, "s": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.transforms.preprocess": {"tf": 1}}, "df": 3}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.executor": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1}, "sqlglot.optimizer.scope.Scope.traverse": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1.7320508075688772}}, "df": 5, "d": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.walk": {"tf": 1}}, "df": 2}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.expressions.Expression.walk": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1.4142135623730951}}, "df": 2, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}}, "df": 21}}}}}}, "e": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 2.6457513110645907}, "sqlglot.parse": {"tf": 1}, "sqlglot.parse_one": {"tf": 1.4142135623730951}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.diff": {"tf": 3.872983346207417}, "sqlglot.diff.Move": {"tf": 1}, "sqlglot.diff.diff": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.expressions.Expression.depth": {"tf": 1}, "sqlglot.expressions.Expression.find": {"tf": 1}, "sqlglot.expressions.Expression.find_all": {"tf": 1}, "sqlglot.expressions.Expression.root": {"tf": 1}, "sqlglot.expressions.Expression.walk": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.dfs": {"tf": 1}, "sqlglot.expressions.Expression.bfs": {"tf": 1}, "sqlglot.expressions.Expression.sql": {"tf": 1}, "sqlglot.expressions.Expression.transform": {"tf": 2.23606797749979}, "sqlglot.expressions.Expression.replace": {"tf": 1.7320508075688772}, "sqlglot.expressions.union": {"tf": 1.4142135623730951}, "sqlglot.expressions.intersect": {"tf": 1.4142135623730951}, "sqlglot.expressions.except_": {"tf": 1.4142135623730951}, "sqlglot.expressions.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.from_": {"tf": 1.4142135623730951}, "sqlglot.expressions.update": {"tf": 1}, "sqlglot.expressions.delete": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.generator.Generator.generate": {"tf": 1.4142135623730951}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}, "sqlglot.optimizer.scope.Scope.traverse": {"tf": 1}, "sqlglot.optimizer.scope.Scope.ref_count": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}, "sqlglot.optimizer.scope.build_scope": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1}, "sqlglot.parser.Parser.parse": {"tf": 1}}, "df": 72, "s": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.parse": {"tf": 1}, "sqlglot.diff": {"tf": 3.3166247903554}, "sqlglot.diff.diff": {"tf": 1.4142135623730951}, "sqlglot.expressions.condition": {"tf": 1}, "sqlglot.parser.Parser.parse": {"tf": 1.4142135623730951}}, "df": 6}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.Func": {"tf": 1}}, "df": 1}}}}}, "u": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 2}, "sqlglot.transpile": {"tf": 1}, "sqlglot.dataframe": {"tf": 2}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.dialect.format_time_lambda": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 2.449489742783178}, "sqlglot.executor": {"tf": 1.7320508075688772}, "sqlglot.executor.python.Python.Generator": {"tf": 2.449489742783178}, "sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.expressions.Expression.walk": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.transform": {"tf": 1}, "sqlglot.expressions.Unionable.union": {"tf": 1}, "sqlglot.expressions.Unionable.intersect": {"tf": 1}, "sqlglot.expressions.Unionable.except_": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Join.using": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.expressions.Select.select": {"tf": 1}, "sqlglot.expressions.Select.lateral": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1}, "sqlglot.expressions.Select.where": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1}, "sqlglot.expressions.Select.lock": {"tf": 1}, "sqlglot.expressions.Func": {"tf": 1}, "sqlglot.expressions.union": {"tf": 1}, "sqlglot.expressions.intersect": {"tf": 1}, "sqlglot.expressions.except_": {"tf": 1}, "sqlglot.expressions.expand": {"tf": 1}, "sqlglot.expressions.true": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 2.449489742783178}, "sqlglot.helper.is_iterable": {"tf": 1}, "sqlglot.helper.should_identify": {"tf": 1.7320508075688772}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1.4142135623730951}, "sqlglot.optimizer.optimize_joins.optimize_joins": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_predicates": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1}, "sqlglot.optimizer.simplify.simplify": {"tf": 1.7320508075688772}, "sqlglot.optimizer.simplify.remove_compliments": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 1}, "sqlglot.trie.new_trie": {"tf": 1.7320508075688772}, "sqlglot.trie.in_trie": {"tf": 1.7320508075688772}}, "df": 68}}, "y": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dataframe": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.diff": {"tf": 1.7320508075688772}, "sqlglot.executor.table.Tables": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 1.4142135623730951}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1}}, "df": 7}, "i": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.7320508075688772}, "sqlglot.executor.python.Python.Generator": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator": {"tf": 1.7320508075688772}, "sqlglot.time.format_time": {"tf": 1.4142135623730951}, "sqlglot.trie.new_trie": {"tf": 2.8284271247461903}, "sqlglot.trie.in_trie": {"tf": 3.4641016151377544}}, "df": 24, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}}}, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1, "\u2019": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}}, "o": {"docs": {"sqlglot": {"tf": 4.358898943540674}, "sqlglot.pretty": {"tf": 1}, "sqlglot.parse": {"tf": 1.4142135623730951}, "sqlglot.parse_one": {"tf": 1.7320508075688772}, "sqlglot.transpile": {"tf": 2.23606797749979}, "sqlglot.dataframe": {"tf": 3.7416573867739413}, "sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 2.23606797749979}, "sqlglot.dialects": {"tf": 2}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 3.7416573867739413}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 3.7416573867739413}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 3.7416573867739413}, "sqlglot.dialects.dialect.format_time_lambda": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 3.7416573867739413}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 3.7416573867739413}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 3.7416573867739413}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 3.7416573867739413}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 3.7416573867739413}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 3.7416573867739413}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 3.7416573867739413}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 3.7416573867739413}, "sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 3.7416573867739413}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 2.23606797749979}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 2.23606797749979}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 3.7416573867739413}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 3.7416573867739413}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 3.7416573867739413}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 3.7416573867739413}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 3.7416573867739413}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 3.7416573867739413}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 3.7416573867739413}, "sqlglot.diff": {"tf": 8.48528137423857}, "sqlglot.diff.diff": {"tf": 2}, "sqlglot.executor": {"tf": 6.708203932499369}, "sqlglot.executor.execute": {"tf": 1.4142135623730951}, "sqlglot.executor.context.Context": {"tf": 2}, "sqlglot.executor.python.Python.Generator": {"tf": 3.7416573867739413}, "sqlglot.expressions": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 2.449489742783178}, "sqlglot.expressions.Expression.text": {"tf": 1}, "sqlglot.expressions.Expression.append": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.set": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.find": {"tf": 1}, "sqlglot.expressions.Expression.find_all": {"tf": 1}, "sqlglot.expressions.Expression.find_ancestor": {"tf": 1}, "sqlglot.expressions.Expression.walk": {"tf": 1}, "sqlglot.expressions.Expression.transform": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.error_messages": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.dump": {"tf": 1}, "sqlglot.expressions.Condition.and_": {"tf": 2}, "sqlglot.expressions.Condition.or_": {"tf": 2}, "sqlglot.expressions.Unionable.union": {"tf": 1.7320508075688772}, "sqlglot.expressions.Unionable.intersect": {"tf": 1.7320508075688772}, "sqlglot.expressions.Unionable.except_": {"tf": 1.7320508075688772}, "sqlglot.expressions.Delete.delete": {"tf": 2}, "sqlglot.expressions.Delete.where": {"tf": 2.449489742783178}, "sqlglot.expressions.Delete.returning": {"tf": 2}, "sqlglot.expressions.Join.on": {"tf": 2.449489742783178}, "sqlglot.expressions.Join.using": {"tf": 2.449489742783178}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 2.8284271247461903}, "sqlglot.expressions.Union.limit": {"tf": 2}, "sqlglot.expressions.Union.select": {"tf": 2.449489742783178}, "sqlglot.expressions.Select.from_": {"tf": 2.23606797749979}, "sqlglot.expressions.Select.group_by": {"tf": 2.449489742783178}, "sqlglot.expressions.Select.order_by": {"tf": 2.23606797749979}, "sqlglot.expressions.Select.sort_by": {"tf": 2.23606797749979}, "sqlglot.expressions.Select.cluster_by": {"tf": 2.23606797749979}, "sqlglot.expressions.Select.limit": {"tf": 2}, "sqlglot.expressions.Select.offset": {"tf": 2}, "sqlglot.expressions.Select.select": {"tf": 2.449489742783178}, "sqlglot.expressions.Select.lateral": {"tf": 2.449489742783178}, "sqlglot.expressions.Select.join": {"tf": 2.6457513110645907}, "sqlglot.expressions.Select.where": {"tf": 2.449489742783178}, "sqlglot.expressions.Select.having": {"tf": 2.449489742783178}, "sqlglot.expressions.Select.ctas": {"tf": 2.23606797749979}, "sqlglot.expressions.Func": {"tf": 2.449489742783178}, "sqlglot.expressions.maybe_parse": {"tf": 2.6457513110645907}, "sqlglot.expressions.union": {"tf": 2.23606797749979}, "sqlglot.expressions.intersect": {"tf": 2.23606797749979}, "sqlglot.expressions.except_": {"tf": 2.23606797749979}, "sqlglot.expressions.select": {"tf": 2}, "sqlglot.expressions.from_": {"tf": 2}, "sqlglot.expressions.update": {"tf": 2.23606797749979}, "sqlglot.expressions.delete": {"tf": 1.7320508075688772}, "sqlglot.expressions.condition": {"tf": 2}, "sqlglot.expressions.and_": {"tf": 2}, "sqlglot.expressions.or_": {"tf": 2}, "sqlglot.expressions.not_": {"tf": 2}, "sqlglot.expressions.to_identifier": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 2.6457513110645907}, "sqlglot.expressions.subquery": {"tf": 2.23606797749979}, "sqlglot.expressions.column": {"tf": 1}, "sqlglot.expressions.cast": {"tf": 2.23606797749979}, "sqlglot.expressions.values": {"tf": 2}, "sqlglot.expressions.column_table_names": {"tf": 1}, "sqlglot.expressions.replace_tables": {"tf": 1.4142135623730951}, "sqlglot.expressions.replace_placeholders": {"tf": 1.7320508075688772}, "sqlglot.expressions.expand": {"tf": 2}, "sqlglot.expressions.func": {"tf": 2.23606797749979}, "sqlglot.generator.Generator": {"tf": 3.7416573867739413}, "sqlglot.helper.csv": {"tf": 1}, "sqlglot.helper.subclasses": {"tf": 1.7320508075688772}, "sqlglot.helper.apply_index_offset": {"tf": 1.7320508075688772}, "sqlglot.helper.camel_to_snake_case": {"tf": 1}, "sqlglot.helper.while_changing": {"tf": 1.7320508075688772}, "sqlglot.helper.tsort": {"tf": 1}, "sqlglot.helper.find_new_name": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 2}, "sqlglot.helper.is_iterable": {"tf": 1}, "sqlglot.helper.flatten": {"tf": 1}, "sqlglot.helper.should_identify": {"tf": 1}, "sqlglot.lineage.lineage": {"tf": 1.7320508075688772}, "sqlglot.lineage.LineageHTML": {"tf": 1}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 2}, "sqlglot.optimizer.canonicalize.canonicalize": {"tf": 1.4142135623730951}, "sqlglot.optimizer.eliminate_ctes.eliminate_ctes": {"tf": 1}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 1}, "sqlglot.optimizer.expand_laterals.expand_laterals": {"tf": 1}, "sqlglot.optimizer.lower_identities.lower_identities": {"tf": 1.4142135623730951}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1.4142135623730951}, "sqlglot.optimizer.normalize.normalize": {"tf": 1.4142135623730951}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1.4142135623730951}, "sqlglot.optimizer.optimizer.optimize": {"tf": 2}, "sqlglot.optimizer.pushdown_predicates.pushdown_predicates": {"tf": 1.4142135623730951}, "sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 1.4142135623730951}, "sqlglot.optimizer.qualify_columns.qualify_columns": {"tf": 1.4142135623730951}, "sqlglot.optimizer.qualify_columns.Resolver.get_table": {"tf": 1}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.Scope": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.branch": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.Scope.replace": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.cte_sources": {"tf": 1}, "sqlglot.optimizer.scope.Scope.external_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.add_source": {"tf": 1}, "sqlglot.optimizer.scope.Scope.ref_count": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}, "sqlglot.optimizer.scope.build_scope": {"tf": 1}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1}, "sqlglot.optimizer.simplify.simplify": {"tf": 1.4142135623730951}, "sqlglot.optimizer.simplify.rewrite_between": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 1.7320508075688772}, "sqlglot.parser.Parser": {"tf": 1.7320508075688772}, "sqlglot.parser.Parser.parse": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 1.7320508075688772}, "sqlglot.parser.Parser.expression": {"tf": 2}, "sqlglot.parser.Parser.validate_expression": {"tf": 1.4142135623730951}, "sqlglot.planner.Step.from_expression": {"tf": 2.23606797749979}, "sqlglot.planner.Scan.from_expression": {"tf": 2.23606797749979}, "sqlglot.planner.SetOperation.from_expression": {"tf": 2.23606797749979}, "sqlglot.schema.Schema.add_table": {"tf": 1}, "sqlglot.schema.Schema.column_names": {"tf": 1}, "sqlglot.schema.MappingSchema": {"tf": 1.4142135623730951}, "sqlglot.schema.MappingSchema.column_names": {"tf": 1}, "sqlglot.time.format_time": {"tf": 1}, "sqlglot.tokens.Tokenizer.tokenize": {"tf": 1}, "sqlglot.transforms.unalias_group": {"tf": 1}, "sqlglot.transforms.eliminate_distinct_on": {"tf": 1}, "sqlglot.transforms.eliminate_qualify": {"tf": 2.449489742783178}, "sqlglot.transforms.remove_precision_parameterized_types": {"tf": 1}, "sqlglot.transforms.preprocess": {"tf": 1}, "sqlglot.trie.new_trie": {"tf": 2}, "sqlglot.trie.in_trie": {"tf": 1}}, "df": 186, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1}}, "df": 2}}, "g": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.executor": {"tf": 2.23606797749979}, "sqlglot.parser.Parser.parse_into": {"tf": 1.4142135623730951}, "sqlglot.tokens.Token.number": {"tf": 1}, "sqlglot.tokens.Token.string": {"tf": 1}, "sqlglot.tokens.Token.identifier": {"tf": 1}, "sqlglot.tokens.Token.var": {"tf": 1}, "sqlglot.tokens.Token.start": {"tf": 1}}, "df": 7, "s": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dialects": {"tf": 1.4142135623730951}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 2}, "sqlglot.parser.Parser": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser.parse": {"tf": 1.7320508075688772}, "sqlglot.parser.Parser.parse_into": {"tf": 1.7320508075688772}, "sqlglot.tokens.Tokenizer.tokenize": {"tf": 1}}, "df": 25}, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot": {"tf": 2}, "sqlglot.dialects": {"tf": 2.23606797749979}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.executor": {"tf": 2}, "sqlglot.parser.Parser": {"tf": 1}}, "df": 22}, "d": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.executor": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "t": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1.7320508075688772}, "sqlglot.dialects": {"tf": 1.7320508075688772}}, "df": 2}}}}}}}, "o": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.transforms.eliminate_qualify": {"tf": 1}}, "df": 2, "l": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.diff": {"tf": 1}}, "df": 2, "s": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1}}, "df": 2}, "k": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}, "k": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}, "p": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.helper.tsort": {"tf": 1.4142135623730951}, "sqlglot.optimizer.optimize_joins.reorder_joins": {"tf": 1}}, "df": 3}}}}}}}}}, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.diff": {"tf": 2}}, "df": 1}}}, "b": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}, "w": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}}, "h": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 4.242640687119285}, "sqlglot.schema": {"tf": 1.4142135623730951}, "sqlglot.parse": {"tf": 2}, "sqlglot.parse_one": {"tf": 2.6457513110645907}, "sqlglot.transpile": {"tf": 4}, "sqlglot.dataframe": {"tf": 4.358898943540674}, "sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 3}, "sqlglot.dataframe.sql.Column.cast": {"tf": 1}, "sqlglot.dialects": {"tf": 2.6457513110645907}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 2.6457513110645907}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 4.358898943540674}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 2.6457513110645907}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 4.358898943540674}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 2.6457513110645907}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 4.358898943540674}, "sqlglot.dialects.dialect.format_time_lambda": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 2}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 2.6457513110645907}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 4.358898943540674}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 2.6457513110645907}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 4.358898943540674}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 2.6457513110645907}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 4.358898943540674}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 2.6457513110645907}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 4.358898943540674}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 2.6457513110645907}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 4.358898943540674}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 2.6457513110645907}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 4.358898943540674}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 2.6457513110645907}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 4.358898943540674}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 2.6457513110645907}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 4.358898943540674}, "sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.renametable_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 2.6457513110645907}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 4.358898943540674}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 2.23606797749979}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 2.6457513110645907}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 4.358898943540674}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 2.6457513110645907}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 4.358898943540674}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 2.6457513110645907}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 4.358898943540674}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 4.358898943540674}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 2.6457513110645907}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 2.6457513110645907}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 4.358898943540674}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 4.358898943540674}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 2.6457513110645907}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 4.358898943540674}, "sqlglot.diff": {"tf": 15.066519173319364}, "sqlglot.diff.Move": {"tf": 1}, "sqlglot.diff.diff": {"tf": 3.7416573867739413}, "sqlglot.diff.ChangeDistiller": {"tf": 1.7320508075688772}, "sqlglot.errors.ErrorLevel.IMMEDIATE": {"tf": 1}, "sqlglot.executor": {"tf": 8.48528137423857}, "sqlglot.executor.execute": {"tf": 1.4142135623730951}, "sqlglot.executor.context.Context.__init__": {"tf": 1.7320508075688772}, "sqlglot.executor.env.null_if_any": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 4.358898943540674}, "sqlglot.expressions": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 3.1622776601683795}, "sqlglot.expressions.Expression.this": {"tf": 1}, "sqlglot.expressions.Expression.expression": {"tf": 1}, "sqlglot.expressions.Expression.expressions": {"tf": 1}, "sqlglot.expressions.Expression.text": {"tf": 1}, "sqlglot.expressions.Expression.alias": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.output_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.copy": {"tf": 1}, "sqlglot.expressions.Expression.append": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.set": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.depth": {"tf": 1}, "sqlglot.expressions.Expression.iter_expressions": {"tf": 1}, "sqlglot.expressions.Expression.find": {"tf": 2.23606797749979}, "sqlglot.expressions.Expression.find_all": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.find_ancestor": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.parent_select": {"tf": 1}, "sqlglot.expressions.Expression.same_parent": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.root": {"tf": 1}, "sqlglot.expressions.Expression.walk": {"tf": 2.23606797749979}, "sqlglot.expressions.Expression.dfs": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.bfs": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.unnest": {"tf": 1}, "sqlglot.expressions.Expression.unalias": {"tf": 1}, "sqlglot.expressions.Expression.flatten": {"tf": 1}, "sqlglot.expressions.Expression.sql": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.transform": {"tf": 2.6457513110645907}, "sqlglot.expressions.Expression.replace": {"tf": 1}, "sqlglot.expressions.Expression.pop": {"tf": 1}, "sqlglot.expressions.Expression.error_messages": {"tf": 1.4142135623730951}, "sqlglot.expressions.Condition.and_": {"tf": 2.23606797749979}, "sqlglot.expressions.Condition.or_": {"tf": 2.23606797749979}, "sqlglot.expressions.Condition.not_": {"tf": 1}, "sqlglot.expressions.Unionable.union": {"tf": 2.449489742783178}, "sqlglot.expressions.Unionable.intersect": {"tf": 2.449489742783178}, "sqlglot.expressions.Unionable.except_": {"tf": 2.449489742783178}, "sqlglot.expressions.Column.output_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.Column.parts": {"tf": 1}, "sqlglot.expressions.Column.to_dot": {"tf": 1}, "sqlglot.expressions.Delete.delete": {"tf": 2.449489742783178}, "sqlglot.expressions.Delete.where": {"tf": 2.8284271247461903}, "sqlglot.expressions.Delete.returning": {"tf": 2.449489742783178}, "sqlglot.expressions.Identifier.output_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.Literal.output_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.Join.on": {"tf": 2.8284271247461903}, "sqlglot.expressions.Join.using": {"tf": 3}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 1.4142135623730951}, "sqlglot.expressions.Subqueryable.with_": {"tf": 3.4641016151377544}, "sqlglot.expressions.Union.limit": {"tf": 2.449489742783178}, "sqlglot.expressions.Union.select": {"tf": 2.8284271247461903}, "sqlglot.expressions.Select.from_": {"tf": 2.6457513110645907}, "sqlglot.expressions.Select.group_by": {"tf": 2.8284271247461903}, "sqlglot.expressions.Select.order_by": {"tf": 2.6457513110645907}, "sqlglot.expressions.Select.sort_by": {"tf": 2.6457513110645907}, "sqlglot.expressions.Select.cluster_by": {"tf": 2.6457513110645907}, "sqlglot.expressions.Select.limit": {"tf": 2.449489742783178}, "sqlglot.expressions.Select.offset": {"tf": 2.449489742783178}, "sqlglot.expressions.Select.select": {"tf": 2.6457513110645907}, "sqlglot.expressions.Select.lateral": {"tf": 2.6457513110645907}, "sqlglot.expressions.Select.join": {"tf": 3.3166247903554}, "sqlglot.expressions.Select.where": {"tf": 2.8284271247461903}, "sqlglot.expressions.Select.having": {"tf": 2.8284271247461903}, "sqlglot.expressions.Select.distinct": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.ctas": {"tf": 2.449489742783178}, "sqlglot.expressions.Select.lock": {"tf": 1.7320508075688772}, "sqlglot.expressions.Subquery.unnest": {"tf": 1}, "sqlglot.expressions.Subquery.output_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.Star.output_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.Alias.output_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.Func": {"tf": 2.8284271247461903}, "sqlglot.expressions.Cast.output_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.maybe_parse": {"tf": 3.1622776601683795}, "sqlglot.expressions.union": {"tf": 3.1622776601683795}, "sqlglot.expressions.intersect": {"tf": 3.1622776601683795}, "sqlglot.expressions.except_": {"tf": 3.1622776601683795}, "sqlglot.expressions.select": {"tf": 3}, "sqlglot.expressions.from_": {"tf": 3.3166247903554}, "sqlglot.expressions.update": {"tf": 2.23606797749979}, "sqlglot.expressions.delete": {"tf": 2.23606797749979}, "sqlglot.expressions.condition": {"tf": 3}, "sqlglot.expressions.and_": {"tf": 2.23606797749979}, "sqlglot.expressions.or_": {"tf": 2.23606797749979}, "sqlglot.expressions.not_": {"tf": 2.23606797749979}, "sqlglot.expressions.to_identifier": {"tf": 1.7320508075688772}, "sqlglot.expressions.alias_": {"tf": 2.8284271247461903}, "sqlglot.expressions.subquery": {"tf": 2.449489742783178}, "sqlglot.expressions.cast": {"tf": 1.4142135623730951}, "sqlglot.expressions.values": {"tf": 2}, "sqlglot.expressions.var": {"tf": 2}, "sqlglot.expressions.rename_table": {"tf": 2}, "sqlglot.expressions.convert": {"tf": 1}, "sqlglot.expressions.replace_children": {"tf": 1}, "sqlglot.expressions.table_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.replace_tables": {"tf": 1.4142135623730951}, "sqlglot.expressions.replace_placeholders": {"tf": 1.4142135623730951}, "sqlglot.expressions.expand": {"tf": 1.7320508075688772}, "sqlglot.expressions.func": {"tf": 3}, "sqlglot.generator.Generator": {"tf": 4.358898943540674}, "sqlglot.generator.Generator.generate": {"tf": 2}, "sqlglot.helper.AutoName": {"tf": 1.4142135623730951}, "sqlglot.helper.seq_get": {"tf": 1}, "sqlglot.helper.ensure_list": {"tf": 1.7320508075688772}, "sqlglot.helper.ensure_collection": {"tf": 1.7320508075688772}, "sqlglot.helper.csv": {"tf": 1.7320508075688772}, "sqlglot.helper.subclasses": {"tf": 2.23606797749979}, "sqlglot.helper.apply_index_offset": {"tf": 2.8284271247461903}, "sqlglot.helper.camel_to_snake_case": {"tf": 1}, "sqlglot.helper.while_changing": {"tf": 1.7320508075688772}, "sqlglot.helper.tsort": {"tf": 1.4142135623730951}, "sqlglot.helper.csv_reader": {"tf": 1}, "sqlglot.helper.find_new_name": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 2.6457513110645907}, "sqlglot.helper.is_iterable": {"tf": 1.7320508075688772}, "sqlglot.helper.flatten": {"tf": 1}, "sqlglot.helper.count_params": {"tf": 1}, "sqlglot.helper.dict_depth": {"tf": 1}, "sqlglot.helper.first": {"tf": 1}, "sqlglot.helper.should_identify": {"tf": 1}, "sqlglot.lineage.lineage": {"tf": 2.449489742783178}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1.4142135623730951}, "sqlglot.optimizer.canonicalize.canonicalize": {"tf": 1.4142135623730951}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 1}, "sqlglot.optimizer.eliminate_joins.join_condition": {"tf": 1}, "sqlglot.optimizer.lower_identities.lower_identities": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1}, "sqlglot.optimizer.normalize.normalize": {"tf": 1}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 2.449489742783178}, "sqlglot.optimizer.optimizer.optimize": {"tf": 2.8284271247461903}, "sqlglot.optimizer.pushdown_predicates.pushdown_cnf": {"tf": 1.4142135623730951}, "sqlglot.optimizer.pushdown_predicates.pushdown_dnf": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.get_table": {"tf": 2}, "sqlglot.optimizer.qualify_columns.Resolver.get_source_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 2.23606797749979}, "sqlglot.optimizer.scope.Scope.branch": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find": {"tf": 2.449489742783178}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.replace": {"tf": 1}, "sqlglot.optimizer.scope.Scope.selects": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.Scope.external_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.unqualified_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.join_hints": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.source_columns": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.is_root": {"tf": 1}, "sqlglot.optimizer.scope.Scope.traverse": {"tf": 1}, "sqlglot.optimizer.scope.Scope.ref_count": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.build_scope": {"tf": 1}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1.7320508075688772}, "sqlglot.parser.Parser": {"tf": 2.6457513110645907}, "sqlglot.parser.Parser.parse": {"tf": 1.7320508075688772}, "sqlglot.parser.Parser.parse_into": {"tf": 2.8284271247461903}, "sqlglot.parser.Parser.check_errors": {"tf": 1}, "sqlglot.parser.Parser.raise_error": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser.expression": {"tf": 2.23606797749979}, "sqlglot.parser.Parser.validate_expression": {"tf": 1.4142135623730951}, "sqlglot.planner.Step.from_expression": {"tf": 2.449489742783178}, "sqlglot.planner.Scan.from_expression": {"tf": 2.449489742783178}, "sqlglot.planner.SetOperation.from_expression": {"tf": 2.449489742783178}, "sqlglot.schema.Schema.add_table": {"tf": 1.7320508075688772}, "sqlglot.schema.Schema.column_names": {"tf": 1.7320508075688772}, "sqlglot.schema.Schema.get_column_type": {"tf": 2.23606797749979}, "sqlglot.schema.MappingSchema": {"tf": 2.23606797749979}, "sqlglot.schema.MappingSchema.add_table": {"tf": 2}, "sqlglot.schema.MappingSchema.column_names": {"tf": 1.7320508075688772}, "sqlglot.schema.MappingSchema.get_column_type": {"tf": 2.23606797749979}, "sqlglot.time.format_time": {"tf": 1}, "sqlglot.tokens.Token.start": {"tf": 1.4142135623730951}, "sqlglot.tokens.Tokenizer.tokenize": {"tf": 1}, "sqlglot.transforms.unalias_group": {"tf": 1.4142135623730951}, "sqlglot.transforms.eliminate_distinct_on": {"tf": 1.4142135623730951}, "sqlglot.transforms.eliminate_qualify": {"tf": 2.6457513110645907}, "sqlglot.transforms.remove_precision_parameterized_types": {"tf": 1.7320508075688772}, "sqlglot.transforms.preprocess": {"tf": 1}, "sqlglot.trie.new_trie": {"tf": 2.23606797749979}, "sqlglot.trie.in_trie": {"tf": 2.23606797749979}}, "df": 240, "n": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dataframe": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1}, "sqlglot.diff": {"tf": 2.6457513110645907}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.executor.context.Context": {"tf": 1}, "sqlglot.executor.table.Tables": {"tf": 1}, "sqlglot.expressions.Expression.transform": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.to_table": {"tf": 1}, "sqlglot.expressions.to_column": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1.4142135623730951}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1}}, "df": 16}, "r": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dialects": {"tf": 1}, "sqlglot.diff": {"tf": 3.1622776601683795}, "sqlglot.executor": {"tf": 2}}, "df": 4, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1}, "sqlglot.diff": {"tf": 1}}, "df": 2}}}}, "\u2019": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}, "m": {"docs": {"sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.diff": {"tf": 2.23606797749979}, "sqlglot.helper.subclasses": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 1}, "sqlglot.transforms.eliminate_qualify": {"tf": 1.4142135623730951}}, "df": 6}, "y": {"docs": {"sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.dialects": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.diff": {"tf": 2}, "sqlglot.executor": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1}, "sqlglot.optimizer.optimize_joins.normalize": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 1}}, "df": 29}, "i": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dialects.redshift.Redshift.Generator.with_properties": {"tf": 1}, "sqlglot.diff": {"tf": 2.449489742783178}, "sqlglot.diff.ChangeDistiller": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1.4142135623730951}, "sqlglot.optimizer.pushdown_predicates.pushdown_dnf": {"tf": 1}, "sqlglot.parser.Parser.expression": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}}, "df": 9}}, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.expressions.Func": {"tf": 1}, "sqlglot.transforms.preprocess": {"tf": 1}}, "df": 4}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot": {"tf": 2}, "sqlglot.dataframe": {"tf": 3.1622776601683795}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.dialects": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.format_time_lambda": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 2.449489742783178}, "sqlglot.diff": {"tf": 5.744562646538029}, "sqlglot.diff.Insert": {"tf": 1}, "sqlglot.diff.Remove": {"tf": 1}, "sqlglot.diff.Move": {"tf": 1}, "sqlglot.diff.Update": {"tf": 1}, "sqlglot.diff.Keep": {"tf": 1}, "sqlglot.diff.diff": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 3.605551275463989}, "sqlglot.executor.env.null_if_any": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 2.23606797749979}, "sqlglot.expressions.Expression.text": {"tf": 1}, "sqlglot.expressions.Expression.find_all": {"tf": 1}, "sqlglot.expressions.Expression.walk": {"tf": 1}, "sqlglot.expressions.Expression.assert_is": {"tf": 1}, "sqlglot.expressions.Expression.error_messages": {"tf": 1.7320508075688772}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1.4142135623730951}, "sqlglot.expressions.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.from_": {"tf": 1.4142135623730951}, "sqlglot.expressions.condition": {"tf": 1.4142135623730951}, "sqlglot.expressions.to_table": {"tf": 1}, "sqlglot.expressions.to_column": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1}, "sqlglot.expressions.replace_placeholders": {"tf": 1.4142135623730951}, "sqlglot.helper.ensure_list": {"tf": 1}, "sqlglot.helper.ensure_collection": {"tf": 1}, "sqlglot.helper.apply_index_offset": {"tf": 1}, "sqlglot.helper.tsort": {"tf": 1}, "sqlglot.helper.open_file": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1.7320508075688772}, "sqlglot.helper.flatten": {"tf": 1}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1.4142135623730951}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_dnf": {"tf": 1}, "sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1}, "sqlglot.optimizer.scope.Scope.derived_tables": {"tf": 1}, "sqlglot.optimizer.scope.Scope.subqueries": {"tf": 1}, "sqlglot.optimizer.scope.Scope.columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.cte_sources": {"tf": 1}, "sqlglot.optimizer.scope.Scope.external_columns": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.join_hints": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.Scope.source_columns": {"tf": 1}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1}, "sqlglot.parser.Parser.validate_expression": {"tf": 1.4142135623730951}, "sqlglot.planner.Step.from_expression": {"tf": 1.4142135623730951}, "sqlglot.planner.Scan.from_expression": {"tf": 1.4142135623730951}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1.4142135623730951}, "sqlglot.schema.Schema.add_table": {"tf": 1}, "sqlglot.schema.MappingSchema": {"tf": 1}, "sqlglot.schema.MappingSchema.add_table": {"tf": 1}, "sqlglot.transforms.unalias_group": {"tf": 1}, "sqlglot.transforms.eliminate_distinct_on": {"tf": 1.4142135623730951}, "sqlglot.transforms.eliminate_qualify": {"tf": 1}, "sqlglot.transforms.preprocess": {"tf": 1}, "sqlglot.trie.new_trie": {"tf": 1}}, "df": 65}, "n": {"docs": {"sqlglot.diff": {"tf": 2.6457513110645907}, "sqlglot.helper.apply_index_offset": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}}, "df": 3, "k": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.optimizer.qualify_columns.Resolver": {"tf": 1}}, "df": 4}}, "k": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}, "s": {"docs": {"sqlglot": {"tf": 4.58257569495584}, "sqlglot.dataframe": {"tf": 2.449489742783178}, "sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.dataframe.sql.Column.cast": {"tf": 1}, "sqlglot.dialects": {"tf": 1.7320508075688772}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.diff": {"tf": 6.244997998398398}, "sqlglot.diff.diff": {"tf": 3.4641016151377544}, "sqlglot.executor": {"tf": 2.6457513110645907}, "sqlglot.executor.execute": {"tf": 1}, "sqlglot.executor.context.Context": {"tf": 1}, "sqlglot.executor.env.null_if_any": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.executor.table.Tables": {"tf": 1.4142135623730951}, "sqlglot.expressions": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 2.23606797749979}, "sqlglot.expressions.Expression.this": {"tf": 1}, "sqlglot.expressions.Expression.text": {"tf": 1}, "sqlglot.expressions.Expression.output_name": {"tf": 1}, "sqlglot.expressions.Expression.depth": {"tf": 1}, "sqlglot.expressions.Expression.find": {"tf": 1}, "sqlglot.expressions.Expression.find_all": {"tf": 1}, "sqlglot.expressions.Expression.root": {"tf": 1}, "sqlglot.expressions.Expression.walk": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.dfs": {"tf": 1}, "sqlglot.expressions.Expression.bfs": {"tf": 1}, "sqlglot.expressions.Expression.unalias": {"tf": 1}, "sqlglot.expressions.Expression.sql": {"tf": 1}, "sqlglot.expressions.Expression.replace": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.pop": {"tf": 1}, "sqlglot.expressions.Expression.assert_is": {"tf": 2.23606797749979}, "sqlglot.expressions.Expression.error_messages": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.dump": {"tf": 1}, "sqlglot.expressions.Condition.and_": {"tf": 1}, "sqlglot.expressions.Condition.or_": {"tf": 1}, "sqlglot.expressions.Condition.not_": {"tf": 1}, "sqlglot.expressions.Unionable.union": {"tf": 1}, "sqlglot.expressions.Unionable.intersect": {"tf": 1}, "sqlglot.expressions.Unionable.except_": {"tf": 1}, "sqlglot.expressions.Column.output_name": {"tf": 1}, "sqlglot.expressions.Delete.delete": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1.4142135623730951}, "sqlglot.expressions.Delete.returning": {"tf": 1}, "sqlglot.expressions.Identifier.output_name": {"tf": 1}, "sqlglot.expressions.Literal.output_name": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1.4142135623730951}, "sqlglot.expressions.Join.using": {"tf": 1.4142135623730951}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 1.4142135623730951}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1.7320508075688772}, "sqlglot.expressions.Union.limit": {"tf": 1.7320508075688772}, "sqlglot.expressions.Union.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.from_": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.group_by": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.order_by": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.sort_by": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.cluster_by": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.limit": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.offset": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.lateral": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.join": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.where": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.having": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.distinct": {"tf": 1}, "sqlglot.expressions.Select.ctas": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.lock": {"tf": 1.4142135623730951}, "sqlglot.expressions.Subquery.output_name": {"tf": 1}, "sqlglot.expressions.Star.output_name": {"tf": 1}, "sqlglot.expressions.Alias.output_name": {"tf": 1}, "sqlglot.expressions.Func": {"tf": 1.4142135623730951}, "sqlglot.expressions.Cast.output_name": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1.4142135623730951}, "sqlglot.expressions.union": {"tf": 1}, "sqlglot.expressions.intersect": {"tf": 1}, "sqlglot.expressions.except_": {"tf": 1}, "sqlglot.expressions.select": {"tf": 1}, "sqlglot.expressions.from_": {"tf": 1}, "sqlglot.expressions.condition": {"tf": 1.4142135623730951}, "sqlglot.expressions.and_": {"tf": 1}, "sqlglot.expressions.or_": {"tf": 1}, "sqlglot.expressions.not_": {"tf": 1.7320508075688772}, "sqlglot.expressions.alias_": {"tf": 1}, "sqlglot.expressions.subquery": {"tf": 1}, "sqlglot.expressions.var": {"tf": 1.4142135623730951}, "sqlglot.expressions.func": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.generator.Generator.generate": {"tf": 1.4142135623730951}, "sqlglot.helper.AutoName": {"tf": 1}, "sqlglot.helper.apply_index_offset": {"tf": 1}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}, "sqlglot.optimizer.canonicalize.canonicalize": {"tf": 1}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 1}, "sqlglot.optimizer.eliminate_subqueries.eliminate_subqueries": {"tf": 1}, "sqlglot.optimizer.expand_laterals.expand_laterals": {"tf": 1}, "sqlglot.optimizer.lower_identities.lower_identities": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1.4142135623730951}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.all_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 3}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.replace": {"tf": 1}, "sqlglot.optimizer.scope.Scope.tables": {"tf": 1}, "sqlglot.optimizer.scope.Scope.ctes": {"tf": 1}, "sqlglot.optimizer.scope.Scope.derived_tables": {"tf": 1}, "sqlglot.optimizer.scope.Scope.udtfs": {"tf": 1}, "sqlglot.optimizer.scope.Scope.subqueries": {"tf": 1}, "sqlglot.optimizer.scope.Scope.columns": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 1}, "sqlglot.optimizer.scope.Scope.selects": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_subquery": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_derived_table": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_union": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_cte": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_root": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_udtf": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_correlated_subquery": {"tf": 1}, "sqlglot.optimizer.scope.Scope.rename_source": {"tf": 1}, "sqlglot.optimizer.scope.Scope.add_source": {"tf": 1}, "sqlglot.optimizer.scope.Scope.remove_source": {"tf": 1}, "sqlglot.optimizer.scope.Scope.traverse": {"tf": 1}, "sqlglot.optimizer.scope.Scope.ref_count": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}, "sqlglot.optimizer.simplify.rewrite_between": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}, "sqlglot.schema.Schema.supported_table_args": {"tf": 1.4142135623730951}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1.4142135623730951}, "sqlglot.transforms.eliminate_distinct_on": {"tf": 1}, "sqlglot.transforms.eliminate_qualify": {"tf": 1}, "sqlglot.transforms.remove_precision_parameterized_types": {"tf": 1}}, "df": 176}, "r": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 3, "t": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.find_all": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1}}, "df": 4}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.expressions.column_table_names": {"tf": 1}}, "df": 3, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 2}}}}}}}, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 2}}, "df": 1}}}}}}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.transpile": {"tf": 2}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.dialect.format_time_lambda": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.diff": {"tf": 7.280109889280518}, "sqlglot.diff.diff": {"tf": 2.8284271247461903}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.helper.subclasses": {"tf": 1}, "sqlglot.helper.apply_index_offset": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 1}, "sqlglot.parser.Parser.expression": {"tf": 1}, "sqlglot.schema.Schema.get_column_type": {"tf": 1}, "sqlglot.schema.MappingSchema.get_column_type": {"tf": 1}, "sqlglot.time.format_time": {"tf": 1}, "sqlglot.trie.in_trie": {"tf": 1}}, "df": 34, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}}, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 2}, "sqlglot.dataframe": {"tf": 3.3166247903554}, "sqlglot.dataframe.sql.DataFrame.persist": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator.renametable_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 2}, "sqlglot.executor.execute": {"tf": 1.7320508075688772}, "sqlglot.executor.python.Python.Generator": {"tf": 1.4142135623730951}, "sqlglot.expressions.Column.parts": {"tf": 1}, "sqlglot.expressions.Delete.delete": {"tf": 1.7320508075688772}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.ctas": {"tf": 2.8284271247461903}, "sqlglot.expressions.update": {"tf": 1.4142135623730951}, "sqlglot.expressions.delete": {"tf": 1.4142135623730951}, "sqlglot.expressions.to_table": {"tf": 2.449489742783178}, "sqlglot.expressions.to_column": {"tf": 1.7320508075688772}, "sqlglot.expressions.alias_": {"tf": 1.7320508075688772}, "sqlglot.expressions.column": {"tf": 1.4142135623730951}, "sqlglot.expressions.table_": {"tf": 2}, "sqlglot.expressions.var": {"tf": 1}, "sqlglot.expressions.rename_table": {"tf": 2}, "sqlglot.expressions.column_table_names": {"tf": 1.7320508075688772}, "sqlglot.expressions.table_name": {"tf": 2.6457513110645907}, "sqlglot.expressions.replace_tables": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1.4142135623730951}, "sqlglot.helper.split_num_words": {"tf": 2.449489742783178}, "sqlglot.optimizer.expand_multi_table_selects.expand_multi_table_selects": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1.4142135623730951}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1.7320508075688772}, "sqlglot.optimizer.qualify_columns.Resolver.get_table": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.Scope": {"tf": 2.6457513110645907}, "sqlglot.optimizer.scope.Scope.tables": {"tf": 1}, "sqlglot.optimizer.scope.Scope.derived_tables": {"tf": 1}, "sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_derived_table": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_cte": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_udtf": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1}, "sqlglot.schema.Schema.add_table": {"tf": 2.23606797749979}, "sqlglot.schema.Schema.column_names": {"tf": 1.7320508075688772}, "sqlglot.schema.Schema.get_column_type": {"tf": 1.4142135623730951}, "sqlglot.schema.Schema.supported_table_args": {"tf": 1}, "sqlglot.schema.MappingSchema": {"tf": 2.449489742783178}, "sqlglot.schema.MappingSchema.add_table": {"tf": 2.23606797749979}, "sqlglot.schema.MappingSchema.column_names": {"tf": 1.7320508075688772}, "sqlglot.schema.MappingSchema.get_column_type": {"tf": 1.4142135623730951}, "sqlglot.transforms.remove_target_from_merge": {"tf": 1}}, "df": 87, "s": {"docs": {"sqlglot": {"tf": 2.449489742783178}, "sqlglot.dialects.redshift.Redshift.Generator.renametable_sql": {"tf": 1}, "sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1.7320508075688772}, "sqlglot.executor.execute": {"tf": 1.4142135623730951}, "sqlglot.executor.context.Context": {"tf": 1}, "sqlglot.executor.context.Context.__init__": {"tf": 1}, "sqlglot.expressions.replace_tables": {"tf": 1.4142135623730951}, "sqlglot.lineage.lineage": {"tf": 1.4142135623730951}, "sqlglot.optimizer.eliminate_subqueries.eliminate_subqueries": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 2}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1.4142135623730951}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope": {"tf": 1}, "sqlglot.optimizer.scope.Scope.tables": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.derived_tables": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 1}, "sqlglot.optimizer.scope.Scope.join_hints": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}, "sqlglot.schema.MappingSchema": {"tf": 1}}, "df": 22, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.executor.python.Python.Generator": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser": {"tf": 1.4142135623730951}}, "df": 40}}}}}}, "|": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.scope.Scope": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 1}}, "df": 2}}}}}, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 1}}, "df": 1}}}}}}, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.optimizer.scope.Scope": {"tf": 1}, "sqlglot.optimizer.scope.Scope.udtfs": {"tf": 1}}, "df": 2}}}}}, "k": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1.7320508075688772}}, "df": 4, "s": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.transform": {"tf": 1}}, "df": 3}, "n": {"docs": {"sqlglot.helper.find_new_name": {"tf": 1.4142135623730951}}, "df": 1}}}, "s": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}, "g": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.Tag": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.executor": {"tf": 1.7320508075688772}, "sqlglot.helper.is_iterable": {"tf": 1}}, "df": 3, "s": {"docs": {"sqlglot": {"tf": 1.7320508075688772}, "sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 2}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 2}}}}}, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}}}}}}, "x": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dialects": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.diff": {"tf": 1.7320508075688772}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.helper.should_identify": {"tf": 1.7320508075688772}, "sqlglot.tokens.Token.number": {"tf": 1}, "sqlglot.tokens.Token.string": {"tf": 1}, "sqlglot.tokens.Token.identifier": {"tf": 1}, "sqlglot.tokens.Token.var": {"tf": 1}}, "df": 30, "u": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.expressions.Expression.text": {"tf": 1}}, "df": 1}}}}}, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}, "m": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 2}}, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}}, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}, "a": {"docs": {}, "df": 0, "m": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dataframe": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.dialect.format_time_lambda": {"tf": 1.7320508075688772}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 2.449489742783178}, "sqlglot.diff": {"tf": 1.7320508075688772}, "sqlglot.executor": {"tf": 1.7320508075688772}, "sqlglot.executor.python.Python.Generator": {"tf": 2.449489742783178}, "sqlglot.generator.Generator": {"tf": 2.449489742783178}, "sqlglot.time.format_time": {"tf": 2.23606797749979}}, "df": 27, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}}}, "s": {"docs": {"sqlglot.optimizer.scope.Scope.ref_count": {"tf": 1}}, "df": 1}}}, "n": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dialects": {"tf": 1}}, "df": 2}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "\u2019": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}, "b": {"docs": {}, "df": 0, "l": {"1": {"docs": {"sqlglot.expressions.Select.join": {"tf": 2}}, "df": 1}, "2": {"docs": {"sqlglot.expressions.Subqueryable.with_": {"tf": 2}, "sqlglot.expressions.Select.lateral": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.join": {"tf": 2.8284271247461903}}, "df": 3}, "docs": {"sqlglot": {"tf": 2.449489742783178}, "sqlglot.expressions.Expression.replace": {"tf": 1.4142135623730951}, "sqlglot.expressions.Delete.delete": {"tf": 1.4142135623730951}, "sqlglot.expressions.Delete.where": {"tf": 1.4142135623730951}, "sqlglot.expressions.Delete.returning": {"tf": 1.4142135623730951}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 1.4142135623730951}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.from_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.group_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.order_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.sort_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.cluster_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.limit": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.offset": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.lateral": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.join": {"tf": 2}, "sqlglot.expressions.Select.where": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.having": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.distinct": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.ctas": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.lock": {"tf": 2}, "sqlglot.expressions.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.from_": {"tf": 1.4142135623730951}, "sqlglot.expressions.condition": {"tf": 1.4142135623730951}, "sqlglot.expressions.subquery": {"tf": 1.4142135623730951}, "sqlglot.expressions.replace_placeholders": {"tf": 1.4142135623730951}, "sqlglot.optimizer.qualify_columns.qualify_columns": {"tf": 2}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"tf": 1.7320508075688772}}, "df": 28}}, "w": {"docs": {}, "df": 0, "o": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1}, "sqlglot.diff": {"tf": 5}, "sqlglot.executor": {"tf": 1}}, "df": 5}, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 3.1622776601683795}, "sqlglot.dataframe": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 2.23606797749979}, "sqlglot.dialects": {"tf": 3.1622776601683795}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 2.23606797749979}, "sqlglot.executor": {"tf": 1}, "sqlglot.executor.execute": {"tf": 1.7320508075688772}, "sqlglot.executor.table.Tables": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.find": {"tf": 1}, "sqlglot.expressions.Expression.find_all": {"tf": 1}, "sqlglot.expressions.Expression.find_ancestor": {"tf": 1}, "sqlglot.expressions.Expression.assert_is": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.join": {"tf": 2.23606797749979}, "sqlglot.expressions.Select.lock": {"tf": 1}, "sqlglot.expressions.cast": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1.4142135623730951}, "sqlglot.helper.flatten": {"tf": 1}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 2.23606797749979}, "sqlglot.optimizer.canonicalize.canonicalize": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.Scope": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser.parse_into": {"tf": 1.4142135623730951}, "sqlglot.schema.Schema.get_column_type": {"tf": 1.4142135623730951}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1.7320508075688772}, "sqlglot.schema.MappingSchema": {"tf": 2}, "sqlglot.schema.MappingSchema.get_column_type": {"tf": 1.4142135623730951}}, "df": 30, "s": {"docs": {"sqlglot.dataframe": {"tf": 5.656854249492381}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.dialects": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.executor.table.Tables": {"tf": 1}, "sqlglot.expressions": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.find": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.find_all": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.find_ancestor": {"tf": 1.4142135623730951}, "sqlglot.expressions.Func": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1}, "sqlglot.helper.is_iterable": {"tf": 1}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 2}, "sqlglot.optimizer.canonicalize.canonicalize": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser.parse_into": {"tf": 1.4142135623730951}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1}, "sqlglot.transforms.remove_precision_parameterized_types": {"tf": 1.4142135623730951}}, "df": 21}, "o": {"docs": {}, "df": 0, "f": {"docs": {"sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.dialects": {"tf": 1}}, "df": 1, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.executor.table.Tables": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1}}, "df": 2}}}}}}}}, "p": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot.executor": {"tf": 1.4142135623730951}}, "df": 1, "h": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.diff.ChangeDistiller": {"tf": 1}, "sqlglot.expressions.to_identifier": {"tf": 1}}, "df": 3}}, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.executor.python.PythonExecutor.generate_tuple": {"tf": 1}, "sqlglot.expressions.Expression.unnest_operands": {"tf": 1}, "sqlglot.helper.ensure_list": {"tf": 1}, "sqlglot.optimizer.eliminate_joins.join_condition": {"tf": 1}}, "df": 4, "[": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "[": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.optimizer.eliminate_joins.join_condition": {"tf": 1}}, "df": 1}}}}}}}}, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.optimizer.scope.walk_in_scope": {"tf": 1}}, "df": 1}}}}}}}}}, "o": {"docs": {"sqlglot": {"tf": 2}, "sqlglot.diff": {"tf": 2.23606797749979}, "sqlglot.trie.new_trie": {"tf": 1.4142135623730951}}, "df": 3, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.optimizer.eliminate_ctes.eliminate_ctes": {"tf": 1}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 1}, "sqlglot.optimizer.expand_laterals.expand_laterals": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1}, "sqlglot.optimizer.optimize_joins.optimize_joins": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_predicates": {"tf": 1}, "sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 1}}, "df": 11, "r": {"docs": {"sqlglot": {"tf": 2.23606797749979}, "sqlglot.schema": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.lineage.lineage": {"tf": 1}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1.4142135623730951}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1.4142135623730951}, "sqlglot.optimizer.qualify_columns.qualify_columns": {"tf": 1}}, "df": 9, "/": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}}}}, "d": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.diff": {"tf": 2}, "sqlglot.executor": {"tf": 1}, "sqlglot.optimizer.eliminate_ctes.eliminate_ctes": {"tf": 1}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 1}, "sqlglot.optimizer.expand_laterals.expand_laterals": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1.4142135623730951}, "sqlglot.optimizer.pushdown_predicates.pushdown_predicates": {"tf": 1}, "sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 1}}, "df": 10}, "s": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.optimizer.qualify_columns.validate_qualify_columns": {"tf": 1}}, "df": 1}}}}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1}}, "df": 1, "s": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1.4142135623730951}}, "df": 2}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.executor": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}}, "df": 2}}}}}}, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.executor": {"tf": 1}, "sqlglot.helper.should_identify": {"tf": 1}}, "df": 2, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression": {"tf": 1.4142135623730951}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 1}, "sqlglot.expressions.Select.ctas": {"tf": 1}, "sqlglot.expressions.to_table": {"tf": 1}, "sqlglot.expressions.to_column": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.generate": {"tf": 1}, "sqlglot.optimizer.optimize_joins.normalize": {"tf": 1}, "sqlglot.parser.Parser.expression": {"tf": 1}, "sqlglot.parser.Parser.validate_expression": {"tf": 1}, "sqlglot.schema.MappingSchema": {"tf": 1}, "sqlglot.time.format_time": {"tf": 1}}, "df": 13, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1.4142135623730951}}, "df": 2}}, "[": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.optimizer.scope.walk_in_scope": {"tf": 1}}, "df": 1}}}}}}, "s": {"docs": {"sqlglot.parse": {"tf": 1}, "sqlglot.parse_one": {"tf": 1}, "sqlglot.transpile": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.persist": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.executor": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.expressions.Expression.sql": {"tf": 1}, "sqlglot.expressions.Condition.and_": {"tf": 1}, "sqlglot.expressions.Condition.or_": {"tf": 1}, "sqlglot.expressions.Unionable.union": {"tf": 1}, "sqlglot.expressions.Unionable.intersect": {"tf": 1}, "sqlglot.expressions.Unionable.except_": {"tf": 1}, "sqlglot.expressions.Delete.delete": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Delete.returning": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Join.using": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1}, "sqlglot.expressions.Union.limit": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.expressions.Select.limit": {"tf": 1}, "sqlglot.expressions.Select.offset": {"tf": 1}, "sqlglot.expressions.Select.select": {"tf": 1}, "sqlglot.expressions.Select.lateral": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1}, "sqlglot.expressions.Select.where": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1}, "sqlglot.expressions.Select.ctas": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1}, "sqlglot.expressions.union": {"tf": 1}, "sqlglot.expressions.intersect": {"tf": 1}, "sqlglot.expressions.except_": {"tf": 1}, "sqlglot.expressions.select": {"tf": 1}, "sqlglot.expressions.from_": {"tf": 1}, "sqlglot.expressions.update": {"tf": 1}, "sqlglot.expressions.delete": {"tf": 1}, "sqlglot.expressions.condition": {"tf": 1}, "sqlglot.expressions.and_": {"tf": 1}, "sqlglot.expressions.or_": {"tf": 1}, "sqlglot.expressions.not_": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1}, "sqlglot.expressions.subquery": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1}}, "df": 86}}}}, "s": {"docs": {"sqlglot.parse": {"tf": 1}, "sqlglot.parse_one": {"tf": 1}, "sqlglot.transpile": {"tf": 1}, "sqlglot.expressions.Expression.sql": {"tf": 1}, "sqlglot.expressions.Condition.and_": {"tf": 1}, "sqlglot.expressions.Condition.or_": {"tf": 1}, "sqlglot.expressions.Unionable.union": {"tf": 1}, "sqlglot.expressions.Unionable.intersect": {"tf": 1}, "sqlglot.expressions.Unionable.except_": {"tf": 1}, "sqlglot.expressions.Delete.delete": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Delete.returning": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Join.using": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1}, "sqlglot.expressions.Union.limit": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.expressions.Select.limit": {"tf": 1}, "sqlglot.expressions.Select.offset": {"tf": 1}, "sqlglot.expressions.Select.select": {"tf": 1}, "sqlglot.expressions.Select.lateral": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1}, "sqlglot.expressions.Select.where": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1}, "sqlglot.expressions.Select.ctas": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1}, "sqlglot.expressions.union": {"tf": 1}, "sqlglot.expressions.intersect": {"tf": 1}, "sqlglot.expressions.except_": {"tf": 1}, "sqlglot.expressions.select": {"tf": 1}, "sqlglot.expressions.from_": {"tf": 1}, "sqlglot.expressions.update": {"tf": 1}, "sqlglot.expressions.delete": {"tf": 1}, "sqlglot.expressions.condition": {"tf": 1}, "sqlglot.expressions.and_": {"tf": 1}, "sqlglot.expressions.or_": {"tf": 1}, "sqlglot.expressions.not_": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1}, "sqlglot.expressions.subquery": {"tf": 1}}, "df": 44}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dataframe": {"tf": 1}}, "df": 1, "s": {"docs": {"sqlglot.dataframe": {"tf": 2.23606797749979}, "sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 3}}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Select.where": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1}, "sqlglot.expressions.and_": {"tf": 1}, "sqlglot.expressions.or_": {"tf": 1}, "sqlglot.expressions.not_": {"tf": 1}}, "df": 7, "s": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.Expression.unnest_operands": {"tf": 1}}, "df": 1}}}}}, "n": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.executor": {"tf": 1}, "sqlglot.helper.open_file": {"tf": 1}}, "df": 3}}, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}, "y": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}}}}, "r": {"docs": {"sqlglot": {"tf": 3.605551275463989}, "sqlglot.dataframe": {"tf": 2}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.7320508075688772}, "sqlglot.diff": {"tf": 3.7416573867739413}, "sqlglot.executor": {"tf": 2.6457513110645907}, "sqlglot.executor.execute": {"tf": 1}, "sqlglot.executor.context.Context": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1.7320508075688772}, "sqlglot.executor.table.Tables": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.text": {"tf": 1}, "sqlglot.expressions.Expression.alias": {"tf": 1}, "sqlglot.expressions.Expression.append": {"tf": 1}, "sqlglot.expressions.Expression.find": {"tf": 1}, "sqlglot.expressions.Expression.unnest": {"tf": 1}, "sqlglot.expressions.Expression.transform": {"tf": 1}, "sqlglot.expressions.Expression.replace": {"tf": 1}, "sqlglot.expressions.Condition.and_": {"tf": 1}, "sqlglot.expressions.Condition.or_": {"tf": 2.23606797749979}, "sqlglot.expressions.Delete.delete": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1.7320508075688772}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Join.using": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 1}, "sqlglot.expressions.Select.select": {"tf": 1}, "sqlglot.expressions.Select.lateral": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1}, "sqlglot.expressions.Select.where": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.having": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 2.23606797749979}, "sqlglot.expressions.select": {"tf": 1}, "sqlglot.expressions.or_": {"tf": 2.449489742783178}, "sqlglot.expressions.to_identifier": {"tf": 1}, "sqlglot.expressions.to_interval": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1.4142135623730951}, "sqlglot.expressions.column": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1}, "sqlglot.expressions.var": {"tf": 1}, "sqlglot.expressions.table_name": {"tf": 1}, "sqlglot.expressions.expand": {"tf": 1}, "sqlglot.expressions.func": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1.7320508075688772}, "sqlglot.helper.seq_get": {"tf": 1}, "sqlglot.helper.ensure_list": {"tf": 1.7320508075688772}, "sqlglot.helper.ensure_collection": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1}, "sqlglot.helper.should_identify": {"tf": 1}, "sqlglot.lineage.lineage": {"tf": 1}, "sqlglot.optimizer.canonicalize.canonicalize": {"tf": 1}, "sqlglot.optimizer.normalize.normalize": {"tf": 2}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1}, "sqlglot.optimizer.normalize.distributive_law": {"tf": 2.8284271247461903}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1}, "sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 1}, "sqlglot.optimizer.simplify.simplify_not": {"tf": 1.4142135623730951}, "sqlglot.optimizer.simplify.flatten": {"tf": 2}, "sqlglot.optimizer.simplify.remove_compliments": {"tf": 1}, "sqlglot.optimizer.simplify.absorb_and_eliminate": {"tf": 2.8284271247461903}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 1}, "sqlglot.parser.Parser.check_errors": {"tf": 1}, "sqlglot.parser.Parser.raise_error": {"tf": 1}, "sqlglot.schema.Schema.add_table": {"tf": 1.4142135623730951}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1}, "sqlglot.schema.MappingSchema.add_table": {"tf": 1.4142135623730951}, "sqlglot.trie.new_trie": {"tf": 1}, "sqlglot.trie.in_trie": {"tf": 1}}, "df": 87, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot": {"tf": 2.6457513110645907}, "sqlglot.diff": {"tf": 2}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.walk": {"tf": 1}, "sqlglot.expressions.Expression.dfs": {"tf": 1}, "sqlglot.expressions.Expression.bfs": {"tf": 1}, "sqlglot.expressions.Column.parts": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 2.23606797749979}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1}, "sqlglot.expressions.replace_placeholders": {"tf": 1}, "sqlglot.helper.tsort": {"tf": 1.4142135623730951}, "sqlglot.optimizer.optimize_joins.reorder_joins": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 1}, "sqlglot.optimizer.scope.Scope.traverse": {"tf": 1}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1}, "sqlglot.transforms.eliminate_qualify": {"tf": 1}, "sqlglot.transforms.preprocess": {"tf": 1}}, "df": 20, "s": {"docs": {"sqlglot": {"tf": 1.4142135623730951}}, "df": 1}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1.4142135623730951}}, "df": 3}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.executor.python.Python.Generator": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser": {"tf": 1.4142135623730951}}, "df": 40}}}}}}, "g": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "/": {"3": {"docs": {"sqlglot.dataframe.sql.DataFrame.persist": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}}, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "/": {"4": {"3": {"3": {"9": {"2": {"3": {"0": {"docs": {"sqlglot.diff.ChangeDistiller": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}}}}}}}}}}}, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.helper.apply_index_offset": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_dnf": {"tf": 1}, "sqlglot.parser.Parser.parse": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 1}}, "df": 5}}}}}}}, "f": {"docs": {"sqlglot": {"tf": 3}, "sqlglot.parse": {"tf": 1}, "sqlglot.transpile": {"tf": 1.7320508075688772}, "sqlglot.dataframe": {"tf": 3.1622776601683795}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.Column.cast": {"tf": 1}, "sqlglot.dialects": {"tf": 1.4142135623730951}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.redshift.Redshift.Generator.with_properties": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 2.23606797749979}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 2.23606797749979}, "sqlglot.diff": {"tf": 10.488088481701515}, "sqlglot.diff.diff": {"tf": 2}, "sqlglot.diff.ChangeDistiller": {"tf": 1}, "sqlglot.executor": {"tf": 4.69041575982343}, "sqlglot.executor.execute": {"tf": 1.4142135623730951}, "sqlglot.executor.context.Context": {"tf": 1}, "sqlglot.executor.context.Context.__init__": {"tf": 1.4142135623730951}, "sqlglot.executor.env.null_if_any": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.generate_tuple": {"tf": 1.4142135623730951}, "sqlglot.executor.python.Python.Generator": {"tf": 2.23606797749979}, "sqlglot.expressions": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression": {"tf": 2}, "sqlglot.expressions.Expression.text": {"tf": 1}, "sqlglot.expressions.Expression.alias": {"tf": 1}, "sqlglot.expressions.Expression.output_name": {"tf": 1}, "sqlglot.expressions.Expression.copy": {"tf": 1}, "sqlglot.expressions.Expression.append": {"tf": 1}, "sqlglot.expressions.Expression.set": {"tf": 1}, "sqlglot.expressions.Expression.depth": {"tf": 1}, "sqlglot.expressions.Expression.find": {"tf": 1}, "sqlglot.expressions.Expression.find_all": {"tf": 1}, "sqlglot.expressions.Expression.root": {"tf": 1}, "sqlglot.expressions.Expression.walk": {"tf": 1}, "sqlglot.expressions.Expression.sql": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.assert_is": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.error_messages": {"tf": 1.4142135623730951}, "sqlglot.expressions.Column.output_name": {"tf": 1}, "sqlglot.expressions.Column.parts": {"tf": 1}, "sqlglot.expressions.Identifier.output_name": {"tf": 1}, "sqlglot.expressions.Literal.output_name": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1}, "sqlglot.expressions.Select.ctas": {"tf": 1}, "sqlglot.expressions.Subquery.output_name": {"tf": 1}, "sqlglot.expressions.Star.output_name": {"tf": 1}, "sqlglot.expressions.Dot.build": {"tf": 1}, "sqlglot.expressions.Alias.output_name": {"tf": 1}, "sqlglot.expressions.Cast.output_name": {"tf": 1}, "sqlglot.expressions.select": {"tf": 1}, "sqlglot.expressions.from_": {"tf": 1}, "sqlglot.expressions.update": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1.7320508075688772}, "sqlglot.expressions.var": {"tf": 1}, "sqlglot.expressions.rename_table": {"tf": 1.4142135623730951}, "sqlglot.expressions.replace_children": {"tf": 1.4142135623730951}, "sqlglot.expressions.column_table_names": {"tf": 1}, "sqlglot.expressions.table_name": {"tf": 1}, "sqlglot.expressions.replace_tables": {"tf": 1}, "sqlglot.expressions.expand": {"tf": 1}, "sqlglot.expressions.func": {"tf": 2.23606797749979}, "sqlglot.generator.Generator": {"tf": 2.23606797749979}, "sqlglot.generator.Generator.generate": {"tf": 1}, "sqlglot.helper.AutoName": {"tf": 1}, "sqlglot.helper.seq_get": {"tf": 1}, "sqlglot.helper.ensure_list": {"tf": 1}, "sqlglot.helper.ensure_collection": {"tf": 1}, "sqlglot.helper.csv": {"tf": 1}, "sqlglot.helper.subclasses": {"tf": 2}, "sqlglot.helper.apply_index_offset": {"tf": 1}, "sqlglot.helper.tsort": {"tf": 1}, "sqlglot.helper.find_new_name": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 2}, "sqlglot.helper.flatten": {"tf": 1}, "sqlglot.helper.count_params": {"tf": 1.4142135623730951}, "sqlglot.helper.dict_depth": {"tf": 1}, "sqlglot.lineage.lineage": {"tf": 2}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1.4142135623730951}, "sqlglot.optimizer.canonicalize.canonicalize": {"tf": 1}, "sqlglot.optimizer.eliminate_joins.join_condition": {"tf": 1}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1.7320508075688772}, "sqlglot.optimizer.optimizer.optimize": {"tf": 2.23606797749979}, "sqlglot.optimizer.qualify_columns.Resolver.all_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 3.3166247903554}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1}, "sqlglot.optimizer.scope.Scope.replace": {"tf": 1}, "sqlglot.optimizer.scope.Scope.tables": {"tf": 1}, "sqlglot.optimizer.scope.Scope.ctes": {"tf": 1}, "sqlglot.optimizer.scope.Scope.derived_tables": {"tf": 1}, "sqlglot.optimizer.scope.Scope.udtfs": {"tf": 1}, "sqlglot.optimizer.scope.Scope.subqueries": {"tf": 1}, "sqlglot.optimizer.scope.Scope.columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 1}, "sqlglot.optimizer.scope.Scope.cte_sources": {"tf": 1}, "sqlglot.optimizer.scope.Scope.selects": {"tf": 1}, "sqlglot.optimizer.scope.Scope.source_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.ref_count": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 2.23606797749979}, "sqlglot.parser.Parser.parse": {"tf": 2}, "sqlglot.parser.Parser.parse_into": {"tf": 2}, "sqlglot.parser.Parser.raise_error": {"tf": 1}, "sqlglot.parser.Parser.expression": {"tf": 1}, "sqlglot.parser.Parser.validate_expression": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}, "sqlglot.schema.Schema.add_table": {"tf": 1}, "sqlglot.schema.Schema.column_names": {"tf": 1}, "sqlglot.schema.Schema.get_column_type": {"tf": 1}, "sqlglot.schema.MappingSchema": {"tf": 1.7320508075688772}, "sqlglot.schema.MappingSchema.add_table": {"tf": 1}, "sqlglot.schema.MappingSchema.column_names": {"tf": 1}, "sqlglot.schema.MappingSchema.get_column_type": {"tf": 1}, "sqlglot.time.format_time": {"tf": 1}, "sqlglot.tokens.Token.start": {"tf": 1}, "sqlglot.tokens.Tokenizer.tokenize": {"tf": 1}, "sqlglot.transforms.preprocess": {"tf": 1.4142135623730951}, "sqlglot.trie.new_trie": {"tf": 2}, "sqlglot.trie.in_trie": {"tf": 1}}, "df": 160, "f": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.offset": {"tf": 2.23606797749979}, "sqlglot.expressions.Select.distinct": {"tf": 1}, "sqlglot.helper.apply_index_offset": {"tf": 2.23606797749979}, "sqlglot.parser.Parser": {"tf": 1.4142135623730951}}, "df": 22}}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}, "u": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.diff": {"tf": 2.23606797749979}, "sqlglot.executor": {"tf": 1}, "sqlglot.expressions.Expression.replace": {"tf": 1}, "sqlglot.helper.seq_get": {"tf": 1}, "sqlglot.trie.new_trie": {"tf": 1}}, "df": 5, "p": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.dataframe": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.7320508075688772}, "sqlglot.diff": {"tf": 2.23606797749979}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.executor.python.Python.Generator": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.output_name": {"tf": 2.23606797749979}, "sqlglot.expressions.Expression.sql": {"tf": 1}, "sqlglot.expressions.Column.output_name": {"tf": 2.23606797749979}, "sqlglot.expressions.Identifier.output_name": {"tf": 2.23606797749979}, "sqlglot.expressions.Literal.output_name": {"tf": 2.23606797749979}, "sqlglot.expressions.Subquery.output_name": {"tf": 2.23606797749979}, "sqlglot.expressions.Star.output_name": {"tf": 2.23606797749979}, "sqlglot.expressions.Alias.output_name": {"tf": 2.23606797749979}, "sqlglot.expressions.Cast.output_name": {"tf": 2.23606797749979}, "sqlglot.generator.Generator": {"tf": 1.7320508075688772}}, "df": 34, "s": {"docs": {"sqlglot.optimizer.scope.Scope.selects": {"tf": 1}}, "df": 1}}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.Select.lateral": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.join": {"tf": 1.4142135623730951}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1.4142135623730951}, "sqlglot.optimizer.optimize_joins.normalize": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.Scope.external_columns": {"tf": 1}, "sqlglot.transforms.eliminate_qualify": {"tf": 1.4142135623730951}}, "df": 7}}}, "r": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.diff": {"tf": 2.449489742783178}, "sqlglot.executor": {"tf": 1}}, "df": 3}}, "n": {"docs": {"sqlglot": {"tf": 2.8284271247461903}, "sqlglot.dataframe": {"tf": 1.7320508075688772}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.diff": {"tf": 4.795831523312719}, "sqlglot.diff.ChangeDistiller": {"tf": 1}, "sqlglot.errors.ErrorLevel.IMMEDIATE": {"tf": 1}, "sqlglot.executor": {"tf": 3}, "sqlglot.executor.context.Context": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.expressions.Delete.delete": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.join": {"tf": 2.449489742783178}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.generator.Generator.generate": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1.4142135623730951}, "sqlglot.optimizer.canonicalize.canonicalize": {"tf": 1.4142135623730951}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 1}, "sqlglot.optimizer.optimize_joins.optimize_joins": {"tf": 2}, "sqlglot.optimizer.optimize_joins.reorder_joins": {"tf": 1}, "sqlglot.optimizer.simplify.rewrite_between": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 1}, "sqlglot.parser.Parser.check_errors": {"tf": 1}, "sqlglot.parser.Parser.raise_error": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1.4142135623730951}, "sqlglot.planner.Scan.from_expression": {"tf": 1.4142135623730951}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1.4142135623730951}, "sqlglot.schema.MappingSchema": {"tf": 1}, "sqlglot.transforms.eliminate_distinct_on": {"tf": 1.4142135623730951}}, "df": 46, "e": {"docs": {"sqlglot": {"tf": 4.242640687119285}, "sqlglot.parse": {"tf": 1}, "sqlglot.dataframe": {"tf": 1}, "sqlglot.diff": {"tf": 3.3166247903554}, "sqlglot.diff.diff": {"tf": 1.7320508075688772}, "sqlglot.executor": {"tf": 1}, "sqlglot.executor.execute": {"tf": 1}, "sqlglot.executor.table.Tables": {"tf": 1}, "sqlglot.expressions.Expression.output_name": {"tf": 2}, "sqlglot.expressions.Expression.find": {"tf": 1}, "sqlglot.expressions.Expression.find_all": {"tf": 1}, "sqlglot.expressions.Expression.assert_is": {"tf": 1}, "sqlglot.expressions.Condition.and_": {"tf": 1}, "sqlglot.expressions.Condition.or_": {"tf": 1}, "sqlglot.expressions.Unionable.union": {"tf": 1}, "sqlglot.expressions.Unionable.intersect": {"tf": 1}, "sqlglot.expressions.Unionable.except_": {"tf": 1}, "sqlglot.expressions.Column.output_name": {"tf": 2}, "sqlglot.expressions.Identifier.output_name": {"tf": 2}, "sqlglot.expressions.Literal.output_name": {"tf": 2}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Join.using": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.Subquery.output_name": {"tf": 2}, "sqlglot.expressions.Star.output_name": {"tf": 2}, "sqlglot.expressions.Alias.output_name": {"tf": 2}, "sqlglot.expressions.Cast.output_name": {"tf": 2}, "sqlglot.expressions.union": {"tf": 1}, "sqlglot.expressions.intersect": {"tf": 1}, "sqlglot.expressions.except_": {"tf": 1}, "sqlglot.expressions.select": {"tf": 1}, "sqlglot.expressions.column_table_names": {"tf": 1}, "sqlglot.expressions.table_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.replace_tables": {"tf": 1.4142135623730951}, "sqlglot.expressions.replace_placeholders": {"tf": 1.4142135623730951}, "sqlglot.expressions.expand": {"tf": 2.449489742783178}, "sqlglot.helper.ensure_list": {"tf": 1}, "sqlglot.helper.apply_index_offset": {"tf": 1}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}, "sqlglot.optimizer.eliminate_ctes.eliminate_ctes": {"tf": 1}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 1}, "sqlglot.optimizer.eliminate_subqueries.eliminate_subqueries": {"tf": 1.4142135623730951}, "sqlglot.optimizer.expand_laterals.expand_laterals": {"tf": 1}, "sqlglot.optimizer.expand_multi_table_selects.expand_multi_table_selects": {"tf": 1.4142135623730951}, "sqlglot.optimizer.lower_identities.lower_identities": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1.4142135623730951}, "sqlglot.optimizer.normalize.normalize": {"tf": 1}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1}, "sqlglot.optimizer.optimize_joins.optimize_joins": {"tf": 1.4142135623730951}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_predicates": {"tf": 1}, "sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 1}, "sqlglot.optimizer.qualify_columns.qualify_columns": {"tf": 1}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}, "sqlglot.optimizer.simplify.simplify": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 1}, "sqlglot.parser.Parser.parse": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1}, "sqlglot.schema.MappingSchema": {"tf": 1}, "sqlglot.transforms.unalias_group": {"tf": 1}, "sqlglot.trie.new_trie": {"tf": 1}}, "df": 65, "s": {"docs": {"sqlglot.diff": {"tf": 2}, "sqlglot.expressions.Expression.transform": {"tf": 1}}, "df": 2}}, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.dataframe.sql.Column.cast": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 2}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 2}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 2}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 2}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 2}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 2}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 2}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 2}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 2}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 2}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 2}, "sqlglot.dialects.redshift.Redshift.Generator.renametable_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 2}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 2}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 2}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 2}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 2}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 2}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 2}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 2}, "sqlglot.diff": {"tf": 2.449489742783178}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.executor.python.Python.Generator": {"tf": 2}, "sqlglot.expressions.Expression.text": {"tf": 1}, "sqlglot.expressions.Expression.find_all": {"tf": 1}, "sqlglot.expressions.Unionable.union": {"tf": 1}, "sqlglot.expressions.Unionable.intersect": {"tf": 1}, "sqlglot.expressions.Unionable.except_": {"tf": 1}, "sqlglot.expressions.union": {"tf": 1}, "sqlglot.expressions.intersect": {"tf": 1}, "sqlglot.expressions.except_": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 2}, "sqlglot.generator.Generator.generate": {"tf": 1}, "sqlglot.lineage.lineage": {"tf": 1}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_dnf": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1}, "sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 1}, "sqlglot.optimizer.simplify.rewrite_between": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1}, "sqlglot.schema.Schema.column_names": {"tf": 1}, "sqlglot.schema.MappingSchema.add_table": {"tf": 1}, "sqlglot.schema.MappingSchema.column_names": {"tf": 1}, "sqlglot.transforms.remove_precision_parameterized_types": {"tf": 1}}, "df": 65}}, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 2}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1}}, "df": 3}}, "t": {"docs": {}, "df": 0, "o": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}, "b": {"docs": {}, "df": 0, "j": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.find_all": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.walk": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.dfs": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.bfs": {"tf": 1.4142135623730951}, "sqlglot.expressions.Dot.build": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1}, "sqlglot.expressions.convert": {"tf": 1.7320508075688772}, "sqlglot.helper.object_to_dict": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1}}, "df": 12, "s": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.diff.diff": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1}, "sqlglot.expressions.update": {"tf": 1}, "sqlglot.helper.flatten": {"tf": 1}}, "df": 6}}}}}, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.parse": {"tf": 1}, "sqlglot.parse_one": {"tf": 1}, "sqlglot.transpile": {"tf": 1}, "sqlglot.dataframe": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1}, "sqlglot.expressions.Expression.sql": {"tf": 1}, "sqlglot.expressions.Condition.and_": {"tf": 1}, "sqlglot.expressions.Condition.or_": {"tf": 1}, "sqlglot.expressions.Unionable.union": {"tf": 1}, "sqlglot.expressions.Unionable.intersect": {"tf": 1}, "sqlglot.expressions.Unionable.except_": {"tf": 1}, "sqlglot.expressions.Delete.delete": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Delete.returning": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Join.using": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1}, "sqlglot.expressions.Union.limit": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.expressions.Select.limit": {"tf": 1}, "sqlglot.expressions.Select.offset": {"tf": 1}, "sqlglot.expressions.Select.select": {"tf": 1}, "sqlglot.expressions.Select.lateral": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1}, "sqlglot.expressions.Select.where": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1}, "sqlglot.expressions.Select.ctas": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1}, "sqlglot.expressions.union": {"tf": 1}, "sqlglot.expressions.intersect": {"tf": 1}, "sqlglot.expressions.except_": {"tf": 1}, "sqlglot.expressions.select": {"tf": 1}, "sqlglot.expressions.from_": {"tf": 1}, "sqlglot.expressions.update": {"tf": 1}, "sqlglot.expressions.delete": {"tf": 1}, "sqlglot.expressions.condition": {"tf": 1}, "sqlglot.expressions.and_": {"tf": 1}, "sqlglot.expressions.or_": {"tf": 1}, "sqlglot.expressions.not_": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1}, "sqlglot.expressions.subquery": {"tf": 1}, "sqlglot.transforms.remove_precision_parameterized_types": {"tf": 1}}, "df": 48, "w": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Expression.walk": {"tf": 1}, "sqlglot.expressions.Expression.transform": {"tf": 1}, "sqlglot.expressions.Expression.assert_is": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Join.using": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.expressions.Select.select": {"tf": 1}, "sqlglot.expressions.Select.lateral": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1}, "sqlglot.expressions.Select.where": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1}, "sqlglot.helper.ensure_list": {"tf": 1}, "sqlglot.helper.ensure_collection": {"tf": 1}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1}, "sqlglot.transforms.eliminate_qualify": {"tf": 1}}, "df": 22}}}}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1.7320508075688772}}, "df": 5, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 2}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}}, "df": 1, "p": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}, "s": {"docs": {"sqlglot.dataframe": {"tf": 2}}, "df": 1}, "w": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dialects": {"tf": 1}, "sqlglot.executor": {"tf": 1.4142135623730951}}, "df": 2}}, "l": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.rename_table": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.replace": {"tf": 1.7320508075688772}}, "df": 2}}}, "e": {"docs": {"sqlglot": {"tf": 2}, "sqlglot.schema": {"tf": 1}, "sqlglot.dialects": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 3.1622776601683795}, "sqlglot.executor": {"tf": 1}, "sqlglot.executor.env.null_if_any": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.expressions.Expression.error_messages": {"tf": 1}, "sqlglot.expressions.column_table_names": {"tf": 1}, "sqlglot.schema.Schema.supported_table_args": {"tf": 1}}, "df": 10, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 2}, "sqlglot.dataframe": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 4}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}}, "df": 6, "s": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.dialects": {"tf": 1}, "sqlglot.executor": {"tf": 2}}, "df": 3}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}}}, "d": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.7320508075688772}, "sqlglot.diff": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator": {"tf": 1.7320508075688772}, "sqlglot.helper.split_num_words": {"tf": 1}}, "df": 24, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.executor.python.Python.Generator": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator": {"tf": 1.4142135623730951}}, "df": 21}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.executor": {"tf": 1.4142135623730951}}, "df": 1}}}, "v": {"docs": {"sqlglot.executor.context.Context.__init__": {"tf": 1}}, "df": 1, "i": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dataframe": {"tf": 1.7320508075688772}}, "df": 1}}}}}, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dialects": {"tf": 1}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}}}}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}}, "df": 21}}}}}}}, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.Expression": {"tf": 1}}, "df": 1}}}}}}}}}}, "u": {"docs": {}, "df": 0, "m": {"docs": {"sqlglot.helper.AutoName": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dialects.dialect.Dialects": {"tf": 1}, "sqlglot.errors.ErrorLevel": {"tf": 1}, "sqlglot.expressions.Properties.Location": {"tf": 1}, "sqlglot.expressions.DataType.Type": {"tf": 1}, "sqlglot.optimizer.scope.ScopeType": {"tf": 1}, "sqlglot.tokens.TokenType": {"tf": 1}}, "df": 6}}}}}}}}}, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.executor": {"tf": 1}, "sqlglot.optimizer.scope.Scope.replace": {"tf": 1}}, "df": 2, "s": {"docs": {"sqlglot.helper.ensure_list": {"tf": 1}, "sqlglot.helper.ensure_collection": {"tf": 1}}, "df": 2}}}}}, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Expression": {"tf": 1}}, "df": 1}}}}}, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot": {"tf": 1.7320508075688772}, "sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver": {"tf": 1}}, "df": 4}}, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.executor": {"tf": 1.7320508075688772}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}}, "df": 4}}}, "y": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 2}, "e": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}, "c": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.transpile": {"tf": 1}, "sqlglot.dialects": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 2.449489742783178}, "sqlglot.diff.diff": {"tf": 1}, "sqlglot.executor": {"tf": 2.8284271247461903}, "sqlglot.expressions.Expression": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.transform": {"tf": 1}, "sqlglot.expressions.column": {"tf": 1}, "sqlglot.generator.Generator.generate": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_cnf": {"tf": 1}, "sqlglot.optimizer.scope.Scope.ref_count": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 1}}, "df": 13}}, "r": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 2}}}}, "x": {"docs": {"sqlglot.dataframe": {"tf": 2.23606797749979}}, "df": 1, "p": {"docs": {"sqlglot": {"tf": 4.123105625617661}, "sqlglot.dialects": {"tf": 3.3166247903554}, "sqlglot.dialects.dialect.format_time_lambda": {"tf": 1}, "sqlglot.expressions.replace_children": {"tf": 1}, "sqlglot.expressions.table_name": {"tf": 1.7320508075688772}, "sqlglot.expressions.replace_tables": {"tf": 1}, "sqlglot.expressions.replace_placeholders": {"tf": 1.7320508075688772}, "sqlglot.optimizer.eliminate_joins.join_condition": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1}, "sqlglot.optimizer.scope.Scope.replace": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}, "sqlglot.optimizer.scope.build_scope": {"tf": 1}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1}, "sqlglot.parser.Parser.expression": {"tf": 1}, "sqlglot.schema.Schema.get_column_type": {"tf": 1}, "sqlglot.schema.MappingSchema.get_column_type": {"tf": 1}}, "df": 19, "r": {"docs": {"sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1.4142135623730951}}, "df": 1, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot": {"tf": 3.4641016151377544}, "sqlglot.parse_one": {"tf": 1}, "sqlglot.dialects": {"tf": 1}, "sqlglot.dialects.dialect.format_time_lambda": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 2.23606797749979}, "sqlglot.diff.diff": {"tf": 2.6457513110645907}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.executor.python.PythonExecutor.generate": {"tf": 1}, "sqlglot.expressions": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression": {"tf": 3.7416573867739413}, "sqlglot.expressions.Expression.expression": {"tf": 1}, "sqlglot.expressions.Expression.text": {"tf": 1}, "sqlglot.expressions.Expression.is_string": {"tf": 1}, "sqlglot.expressions.Expression.is_number": {"tf": 1}, "sqlglot.expressions.Expression.is_int": {"tf": 1}, "sqlglot.expressions.Expression.is_star": {"tf": 1}, "sqlglot.expressions.Expression.alias": {"tf": 1}, "sqlglot.expressions.Expression.output_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.copy": {"tf": 1}, "sqlglot.expressions.Expression.append": {"tf": 1}, "sqlglot.expressions.Expression.set": {"tf": 1}, "sqlglot.expressions.Expression.iter_expressions": {"tf": 1}, "sqlglot.expressions.Expression.find": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.find_all": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.find_ancestor": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.root": {"tf": 1}, "sqlglot.expressions.Expression.unalias": {"tf": 1}, "sqlglot.expressions.Expression.replace": {"tf": 2}, "sqlglot.expressions.Expression.pop": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.assert_is": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.error_messages": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.dump": {"tf": 1}, "sqlglot.expressions.Expression.load": {"tf": 1.4142135623730951}, "sqlglot.expressions.Condition.and_": {"tf": 1.7320508075688772}, "sqlglot.expressions.Condition.or_": {"tf": 1.7320508075688772}, "sqlglot.expressions.Unionable.union": {"tf": 2.449489742783178}, "sqlglot.expressions.Unionable.intersect": {"tf": 2.449489742783178}, "sqlglot.expressions.Unionable.except_": {"tf": 2.449489742783178}, "sqlglot.expressions.Column.output_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.Column.to_dot": {"tf": 1}, "sqlglot.expressions.Delete.delete": {"tf": 2.23606797749979}, "sqlglot.expressions.Delete.where": {"tf": 2.23606797749979}, "sqlglot.expressions.Delete.returning": {"tf": 2.23606797749979}, "sqlglot.expressions.Identifier.output_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.Literal.output_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.Join.on": {"tf": 2.449489742783178}, "sqlglot.expressions.Join.using": {"tf": 2.23606797749979}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 1.7320508075688772}, "sqlglot.expressions.Subqueryable.with_": {"tf": 3}, "sqlglot.expressions.Union.limit": {"tf": 2.449489742783178}, "sqlglot.expressions.Union.select": {"tf": 1.7320508075688772}, "sqlglot.expressions.Union.is_star": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 2.8284271247461903}, "sqlglot.expressions.Select.group_by": {"tf": 3}, "sqlglot.expressions.Select.order_by": {"tf": 2.8284271247461903}, "sqlglot.expressions.Select.sort_by": {"tf": 2.8284271247461903}, "sqlglot.expressions.Select.cluster_by": {"tf": 2.8284271247461903}, "sqlglot.expressions.Select.limit": {"tf": 2.6457513110645907}, "sqlglot.expressions.Select.offset": {"tf": 2.6457513110645907}, "sqlglot.expressions.Select.select": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.lateral": {"tf": 2}, "sqlglot.expressions.Select.join": {"tf": 3}, "sqlglot.expressions.Select.where": {"tf": 2.449489742783178}, "sqlglot.expressions.Select.having": {"tf": 2.449489742783178}, "sqlglot.expressions.Select.distinct": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.ctas": {"tf": 2.23606797749979}, "sqlglot.expressions.Select.lock": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.is_star": {"tf": 1}, "sqlglot.expressions.Subquery.is_star": {"tf": 1}, "sqlglot.expressions.Subquery.output_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.Star.output_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.Alias.output_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.Func": {"tf": 1.4142135623730951}, "sqlglot.expressions.Cast.output_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.maybe_parse": {"tf": 3}, "sqlglot.expressions.union": {"tf": 2.6457513110645907}, "sqlglot.expressions.intersect": {"tf": 2.6457513110645907}, "sqlglot.expressions.except_": {"tf": 2.449489742783178}, "sqlglot.expressions.select": {"tf": 1.7320508075688772}, "sqlglot.expressions.from_": {"tf": 2.449489742783178}, "sqlglot.expressions.condition": {"tf": 2.8284271247461903}, "sqlglot.expressions.and_": {"tf": 1.7320508075688772}, "sqlglot.expressions.or_": {"tf": 1.7320508075688772}, "sqlglot.expressions.not_": {"tf": 2}, "sqlglot.expressions.to_interval": {"tf": 1}, "sqlglot.expressions.to_table": {"tf": 1.4142135623730951}, "sqlglot.expressions.to_column": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 2.23606797749979}, "sqlglot.expressions.subquery": {"tf": 2.6457513110645907}, "sqlglot.expressions.cast": {"tf": 1.7320508075688772}, "sqlglot.expressions.table_": {"tf": 1.7320508075688772}, "sqlglot.expressions.values": {"tf": 1}, "sqlglot.expressions.var": {"tf": 1}, "sqlglot.expressions.rename_table": {"tf": 1.4142135623730951}, "sqlglot.expressions.convert": {"tf": 1.7320508075688772}, "sqlglot.expressions.replace_children": {"tf": 1}, "sqlglot.expressions.column_table_names": {"tf": 2}, "sqlglot.expressions.table_name": {"tf": 1}, "sqlglot.expressions.replace_tables": {"tf": 2.23606797749979}, "sqlglot.expressions.replace_placeholders": {"tf": 2.23606797749979}, "sqlglot.expressions.expand": {"tf": 2.23606797749979}, "sqlglot.expressions.func": {"tf": 1}, "sqlglot.expressions.true": {"tf": 1}, "sqlglot.expressions.false": {"tf": 1}, "sqlglot.expressions.null": {"tf": 1}, "sqlglot.generator.Generator.generate": {"tf": 1.4142135623730951}, "sqlglot.helper.apply_index_offset": {"tf": 1.7320508075688772}, "sqlglot.helper.while_changing": {"tf": 2}, "sqlglot.helper.csv_reader": {"tf": 1}, "sqlglot.lineage.lineage": {"tf": 1}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 2.8284271247461903}, "sqlglot.optimizer.canonicalize.canonicalize": {"tf": 1.7320508075688772}, "sqlglot.optimizer.eliminate_ctes.eliminate_ctes": {"tf": 2.8284271247461903}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 2.8284271247461903}, "sqlglot.optimizer.eliminate_joins.join_condition": {"tf": 1.4142135623730951}, "sqlglot.optimizer.eliminate_subqueries.eliminate_subqueries": {"tf": 3}, "sqlglot.optimizer.expand_laterals.expand_laterals": {"tf": 2.23606797749979}, "sqlglot.optimizer.lower_identities.lower_identities": {"tf": 2.6457513110645907}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 3}, "sqlglot.optimizer.normalize.normalize": {"tf": 2.449489742783178}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 2.449489742783178}, "sqlglot.optimizer.optimizer.optimize": {"tf": 2}, "sqlglot.optimizer.pushdown_predicates.pushdown_predicates": {"tf": 2.6457513110645907}, "sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 2.6457513110645907}, "sqlglot.optimizer.qualify_columns.qualify_columns": {"tf": 2.6457513110645907}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"tf": 2.6457513110645907}, "sqlglot.optimizer.scope.Scope": {"tf": 2}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 2}, "sqlglot.optimizer.scope.Scope.replace": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.Scope.selects": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.is_cte": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 3}, "sqlglot.optimizer.scope.build_scope": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 2}, "sqlglot.optimizer.simplify.simplify": {"tf": 2.6457513110645907}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 2.6457513110645907}, "sqlglot.parser.Parser.parse_into": {"tf": 2.23606797749979}, "sqlglot.parser.Parser.expression": {"tf": 2.23606797749979}, "sqlglot.parser.Parser.validate_expression": {"tf": 2}, "sqlglot.planner.Step.from_expression": {"tf": 2.6457513110645907}, "sqlglot.planner.Scan.from_expression": {"tf": 2.6457513110645907}, "sqlglot.planner.SetOperation.from_expression": {"tf": 2.6457513110645907}, "sqlglot.schema.Schema.add_table": {"tf": 1}, "sqlglot.schema.Schema.column_names": {"tf": 1}, "sqlglot.schema.MappingSchema.add_table": {"tf": 1}, "sqlglot.schema.MappingSchema.column_names": {"tf": 1}, "sqlglot.transforms.unalias_group": {"tf": 1.7320508075688772}, "sqlglot.transforms.eliminate_distinct_on": {"tf": 1.7320508075688772}, "sqlglot.transforms.preprocess": {"tf": 1}}, "df": 152, "s": {"docs": {"sqlglot": {"tf": 2.6457513110645907}, "sqlglot.dialects": {"tf": 1.4142135623730951}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.dialect.format_time_lambda": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.diff.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.executor.context.Context": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.generate_tuple": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.expressions": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression": {"tf": 2.23606797749979}, "sqlglot.expressions.Expression.expressions": {"tf": 1}, "sqlglot.expressions.Expression.output_name": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.replace": {"tf": 1}, "sqlglot.expressions.Expression.assert_is": {"tf": 1}, "sqlglot.expressions.Condition.and_": {"tf": 1.7320508075688772}, "sqlglot.expressions.Condition.or_": {"tf": 1.7320508075688772}, "sqlglot.expressions.Unionable.union": {"tf": 1}, "sqlglot.expressions.Unionable.intersect": {"tf": 1}, "sqlglot.expressions.Unionable.except_": {"tf": 1}, "sqlglot.expressions.Column.output_name": {"tf": 1.7320508075688772}, "sqlglot.expressions.Delete.delete": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 2.449489742783178}, "sqlglot.expressions.Delete.returning": {"tf": 1.4142135623730951}, "sqlglot.expressions.Identifier.output_name": {"tf": 1.7320508075688772}, "sqlglot.expressions.Literal.output_name": {"tf": 1.7320508075688772}, "sqlglot.expressions.Join.on": {"tf": 2.449489742783178}, "sqlglot.expressions.Join.using": {"tf": 2.23606797749979}, "sqlglot.expressions.Subqueryable.with_": {"tf": 2}, "sqlglot.expressions.Union.limit": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 2.23606797749979}, "sqlglot.expressions.Select.from_": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.group_by": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.order_by": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.sort_by": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.cluster_by": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.limit": {"tf": 1}, "sqlglot.expressions.Select.offset": {"tf": 1}, "sqlglot.expressions.Select.select": {"tf": 2.449489742783178}, "sqlglot.expressions.Select.lateral": {"tf": 2.449489742783178}, "sqlglot.expressions.Select.join": {"tf": 2.23606797749979}, "sqlglot.expressions.Select.where": {"tf": 2.449489742783178}, "sqlglot.expressions.Select.having": {"tf": 2.449489742783178}, "sqlglot.expressions.Subquery.output_name": {"tf": 1.7320508075688772}, "sqlglot.expressions.Star.output_name": {"tf": 1.7320508075688772}, "sqlglot.expressions.Dot.build": {"tf": 1}, "sqlglot.expressions.Alias.output_name": {"tf": 1.7320508075688772}, "sqlglot.expressions.Func": {"tf": 1}, "sqlglot.expressions.Cast.output_name": {"tf": 1.7320508075688772}, "sqlglot.expressions.maybe_parse": {"tf": 1.4142135623730951}, "sqlglot.expressions.union": {"tf": 1}, "sqlglot.expressions.intersect": {"tf": 1}, "sqlglot.expressions.except_": {"tf": 1}, "sqlglot.expressions.select": {"tf": 2.23606797749979}, "sqlglot.expressions.from_": {"tf": 1.7320508075688772}, "sqlglot.expressions.update": {"tf": 1.4142135623730951}, "sqlglot.expressions.delete": {"tf": 1.4142135623730951}, "sqlglot.expressions.condition": {"tf": 1}, "sqlglot.expressions.and_": {"tf": 1.4142135623730951}, "sqlglot.expressions.or_": {"tf": 1.4142135623730951}, "sqlglot.expressions.not_": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1}, "sqlglot.expressions.subquery": {"tf": 1}, "sqlglot.expressions.func": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.helper.apply_index_offset": {"tf": 1.7320508075688772}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}, "sqlglot.optimizer.expand_multi_table_selects.expand_multi_table_selects": {"tf": 1}, "sqlglot.optimizer.scope.Scope.selects": {"tf": 1.7320508075688772}, "sqlglot.optimizer.simplify.simplify": {"tf": 1}, "sqlglot.transforms.remove_precision_parameterized_types": {"tf": 1.4142135623730951}}, "df": 90}, "|": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Expression.replace": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 2}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.expressions.Expression.iter_expressions": {"tf": 1}}, "df": 1}}}, "e": {"docs": {"sqlglot.expressions.Select.lateral": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope": {"tf": 1.4142135623730951}, "sqlglot.transforms.unnest_to_explode": {"tf": 1}}, "df": 3, "/": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.transforms.explode_to_unnest": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1}}, "df": 40}}}}}}}, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot": {"tf": 1.4142135623730951}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.values": {"tf": 1}, "sqlglot.helper.count_params": {"tf": 1}}, "df": 2}}}}, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1}}, "df": 2}}}}, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.executor": {"tf": 1}, "sqlglot.expressions.expand": {"tf": 1.7320508075688772}, "sqlglot.optimizer.expand_laterals.expand_laterals": {"tf": 1.4142135623730951}, "sqlglot.optimizer.expand_multi_table_selects.expand_multi_table_selects": {"tf": 1}}, "df": 4, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.expressions.expand": {"tf": 1}}, "df": 1}}}}}}, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions": {"tf": 1}}, "df": 1}}}, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.optimizer.normalize.normalization_distance": {"tf": 1}}, "df": 1}}}}}}}}}, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 2}, "sqlglot.dataframe": {"tf": 1.4142135623730951}, "sqlglot.dialects": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 2.23606797749979}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.executor.table.Tables": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.expressions.Expression.output_name": {"tf": 1}, "sqlglot.expressions.Expression.replace": {"tf": 1}, "sqlglot.expressions.Condition.and_": {"tf": 1}, "sqlglot.expressions.Condition.or_": {"tf": 1}, "sqlglot.expressions.Condition.not_": {"tf": 1}, "sqlglot.expressions.Unionable.union": {"tf": 1}, "sqlglot.expressions.Unionable.intersect": {"tf": 1}, "sqlglot.expressions.Unionable.except_": {"tf": 1}, "sqlglot.expressions.Column.output_name": {"tf": 1}, "sqlglot.expressions.Delete.delete": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Delete.returning": {"tf": 1}, "sqlglot.expressions.Identifier.output_name": {"tf": 1}, "sqlglot.expressions.Literal.output_name": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Join.using": {"tf": 1}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1}, "sqlglot.expressions.Union.limit": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.expressions.Select.limit": {"tf": 1}, "sqlglot.expressions.Select.offset": {"tf": 1}, "sqlglot.expressions.Select.select": {"tf": 1}, "sqlglot.expressions.Select.lateral": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1}, "sqlglot.expressions.Select.where": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1}, "sqlglot.expressions.Select.distinct": {"tf": 1}, "sqlglot.expressions.Select.ctas": {"tf": 1}, "sqlglot.expressions.Subquery.output_name": {"tf": 1}, "sqlglot.expressions.Star.output_name": {"tf": 1}, "sqlglot.expressions.Alias.output_name": {"tf": 1}, "sqlglot.expressions.Cast.output_name": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1}, "sqlglot.expressions.union": {"tf": 1}, "sqlglot.expressions.intersect": {"tf": 1}, "sqlglot.expressions.except_": {"tf": 1}, "sqlglot.expressions.select": {"tf": 1}, "sqlglot.expressions.from_": {"tf": 1}, "sqlglot.expressions.update": {"tf": 1}, "sqlglot.expressions.delete": {"tf": 1}, "sqlglot.expressions.condition": {"tf": 1}, "sqlglot.expressions.and_": {"tf": 1}, "sqlglot.expressions.or_": {"tf": 1}, "sqlglot.expressions.not_": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1}, "sqlglot.expressions.subquery": {"tf": 1}, "sqlglot.expressions.cast": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1}, "sqlglot.expressions.var": {"tf": 1}, "sqlglot.expressions.column_table_names": {"tf": 1}, "sqlglot.helper.dict_depth": {"tf": 1}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}, "sqlglot.optimizer.eliminate_ctes.eliminate_ctes": {"tf": 1}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 1}, "sqlglot.optimizer.eliminate_subqueries.eliminate_subqueries": {"tf": 1}, "sqlglot.optimizer.expand_laterals.expand_laterals": {"tf": 1}, "sqlglot.optimizer.expand_multi_table_selects.expand_multi_table_selects": {"tf": 1}, "sqlglot.optimizer.lower_identities.lower_identities": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1}, "sqlglot.optimizer.normalize.normalize": {"tf": 1}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1}, "sqlglot.optimizer.optimize_joins.optimize_joins": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_predicates": {"tf": 1}, "sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 1}, "sqlglot.optimizer.qualify_columns.qualify_columns": {"tf": 1}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.Scope.derived_tables": {"tf": 1}, "sqlglot.optimizer.scope.Scope.subqueries": {"tf": 1}, "sqlglot.optimizer.scope.Scope.selects": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}, "sqlglot.optimizer.simplify.simplify": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1}, "sqlglot.transforms.unalias_group": {"tf": 1}, "sqlglot.trie.new_trie": {"tf": 1}}, "df": 92, "s": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.dataframe": {"tf": 1.4142135623730951}, "sqlglot.diff.diff": {"tf": 1}, "sqlglot.expressions.Expression.assert_is": {"tf": 1}, "sqlglot.expressions.Select.lock": {"tf": 1}, "sqlglot.expressions.table_name": {"tf": 1}, "sqlglot.expressions.replace_tables": {"tf": 1}, "sqlglot.expressions.replace_placeholders": {"tf": 1}, "sqlglot.expressions.expand": {"tf": 1}, "sqlglot.expressions.func": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1}, "sqlglot.helper.is_iterable": {"tf": 1}, "sqlglot.helper.flatten": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}, "sqlglot.time.format_time": {"tf": 1}, "sqlglot.trie.in_trie": {"tf": 1}}, "df": 16}}}}}, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot": {"tf": 1.7320508075688772}, "sqlglot.executor": {"tf": 2.8284271247461903}, "sqlglot.executor.context.Context": {"tf": 1}, "sqlglot.executor.context.Context.__init__": {"tf": 1.4142135623730951}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}}, "df": 7}}, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.dataframe": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1.4142135623730951}}, "df": 2}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}, "e": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.dataframe": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}}, "df": 6, "s": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}, "d": {"docs": {"sqlglot.executor": {"tf": 1}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}}, "df": 2}}}}}}, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.executor.table.Tables": {"tf": 1}, "sqlglot.expressions.Unionable.except_": {"tf": 2.23606797749979}, "sqlglot.expressions.except_": {"tf": 2.23606797749979}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1}}, "df": 5, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.errors.ErrorLevel.RAISE": {"tf": 1}, "sqlglot.errors.ErrorLevel.IMMEDIATE": {"tf": 1}}, "df": 4, "s": {"docs": {"sqlglot.errors.SqlglotError": {"tf": 1}, "sqlglot.errors.UnsupportedError": {"tf": 1}, "sqlglot.errors.ParseError": {"tf": 1}, "sqlglot.errors.TokenError": {"tf": 1}, "sqlglot.errors.OptimizeError": {"tf": 1}, "sqlglot.errors.SchemaError": {"tf": 1}, "sqlglot.errors.ExecuteError": {"tf": 1}}, "df": 7}}}}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.expressions.Expression.error_messages": {"tf": 1}}, "df": 2}}}, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.helper.subclasses": {"tf": 1.4142135623730951}}, "df": 2}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.expressions.Expression.transform": {"tf": 1}, "sqlglot.helper.ensure_collection": {"tf": 1}, "sqlglot.helper.subclasses": {"tf": 1}, "sqlglot.helper.is_iterable": {"tf": 1}}, "df": 4}}}}, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.expressions.func": {"tf": 1}}, "df": 2}}}}}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.diff": {"tf": 1}}, "df": 2, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dataframe": {"tf": 1.4142135623730951}}, "df": 1}}, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.dataframe": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}}}, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects": {"tf": 1}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1}}, "df": 1}}, "v": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.dialects": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1.4142135623730951}}, "df": 2}}}}}, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.optimizer.eliminate_joins.join_condition": {"tf": 1}}, "df": 1, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}}, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.executor": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1}, "sqlglot.optimizer.scope.Scope.join_hints": {"tf": 1}}, "df": 3, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.diff.Remove": {"tf": 1}, "sqlglot.diff.Move": {"tf": 1}, "sqlglot.diff.Update": {"tf": 1}, "sqlglot.diff.Keep": {"tf": 1}, "sqlglot.expressions.Delete.delete": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Join.using": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.expressions.Select.select": {"tf": 1}, "sqlglot.expressions.Select.lateral": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1}, "sqlglot.expressions.Select.where": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1}, "sqlglot.expressions.func": {"tf": 1}}, "df": 21}}}}}, "t": {"docs": {"sqlglot.errors.SqlglotError": {"tf": 1}, "sqlglot.errors.UnsupportedError": {"tf": 1}, "sqlglot.errors.ParseError": {"tf": 1}, "sqlglot.errors.TokenError": {"tf": 1}, "sqlglot.errors.OptimizeError": {"tf": 1}, "sqlglot.errors.SchemaError": {"tf": 1}, "sqlglot.errors.ExecuteError": {"tf": 1}}, "df": 7}}}, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.transpile": {"tf": 1.4142135623730951}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 2.449489742783178}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 2.449489742783178}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 2.449489742783178}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 2.449489742783178}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 2.449489742783178}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 2.449489742783178}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 2.449489742783178}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 2.449489742783178}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 2.449489742783178}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 2.449489742783178}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 2.449489742783178}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 2.449489742783178}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 2.449489742783178}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 2.449489742783178}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 2.449489742783178}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 2.449489742783178}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 2.449489742783178}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 2.449489742783178}, "sqlglot.errors.ErrorLevel.IMMEDIATE": {"tf": 1}, "sqlglot.executor": {"tf": 1}, "sqlglot.expressions.Expression.assert_is": {"tf": 1}, "sqlglot.expressions.Expression.error_messages": {"tf": 1}, "sqlglot.expressions.convert": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 2.449489742783178}, "sqlglot.parser.Parser.check_errors": {"tf": 1}, "sqlglot.parser.Parser.raise_error": {"tf": 1.4142135623730951}}, "df": 28, "s": {"docs": {"sqlglot": {"tf": 3.1622776601683795}, "sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.errors.ErrorLevel.IGNORE": {"tf": 1}, "sqlglot.errors.ErrorLevel.WARN": {"tf": 1}, "sqlglot.errors.ErrorLevel.RAISE": {"tf": 1}, "sqlglot.expressions.Expression.error_messages": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1}, "sqlglot.parser.Parser.check_errors": {"tf": 1}, "sqlglot.parser.Parser.raise_error": {"tf": 1}}, "df": 28}, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.7320508075688772}, "sqlglot.executor.python.Python.Generator": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator": {"tf": 1.7320508075688772}, "sqlglot.parser.Parser": {"tf": 1.4142135623730951}}, "df": 40}}}}}}}}}, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1.4142135623730951}}, "df": 3, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions": {"tf": 1}}, "df": 1, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.executor": {"tf": 1}, "sqlglot.executor.context.Context": {"tf": 1}}, "df": 2, "u": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1}, "sqlglot.executor.context.Context": {"tf": 1}}, "df": 2, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}, "s": {"docs": {"sqlglot.executor": {"tf": 1}, "sqlglot.executor.context.Context": {"tf": 1}}, "df": 2}}, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.executor.context.Context": {"tf": 1}}, "df": 1}}}}}}}}, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}, "f": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 2}}}, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.executor.context.Context": {"tf": 1}}, "df": 1, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}}}}}, "g": {"docs": {"sqlglot.parse": {"tf": 1}, "sqlglot.parse_one": {"tf": 1}, "sqlglot.transpile": {"tf": 1.4142135623730951}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.executor.execute": {"tf": 1}, "sqlglot.expressions.Expression.sql": {"tf": 1}, "sqlglot.expressions.update": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1}}, "df": 25}, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe": {"tf": 4.123105625617661}}, "df": 1, "s": {"docs": {"sqlglot.dataframe": {"tf": 3}}, "df": 1}}}}}}, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.Expression.alias": {"tf": 1}, "sqlglot.expressions.Expression.output_name": {"tf": 1}, "sqlglot.expressions.Column.output_name": {"tf": 1}, "sqlglot.expressions.Identifier.output_name": {"tf": 1}, "sqlglot.expressions.Literal.output_name": {"tf": 1}, "sqlglot.expressions.Subquery.output_name": {"tf": 1}, "sqlglot.expressions.Star.output_name": {"tf": 1}, "sqlglot.expressions.Alias.output_name": {"tf": 1}, "sqlglot.expressions.Cast.output_name": {"tf": 1}}, "df": 9}}}, "b": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}, "s": {"docs": {"sqlglot.helper.subclasses": {"tf": 1.4142135623730951}}, "df": 1, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 2}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 2}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 2}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 2}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 2}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 2}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 2}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 2}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 2}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 2}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 2}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 2}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 2}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 2}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 2}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 2}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 2}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 2}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 2}, "sqlglot.diff": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 2}, "sqlglot.generator.Generator": {"tf": 2}}, "df": 22}}}}, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1}}, "df": 2}}}}}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.optimizer.lower_identities.lower_identities": {"tf": 1}}, "df": 2}}}}}}}}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.normalize.normalization_distance": {"tf": 1}}, "df": 1, "d": {"docs": {"sqlglot.optimizer.normalize.normalize": {"tf": 1}}, "df": 1}}}}}}}}, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.helper.first": {"tf": 1}}, "df": 1, "s": {"docs": {"sqlglot.diff": {"tf": 2.8284271247461903}, "sqlglot.helper.flatten": {"tf": 1.4142135623730951}}, "df": 2}, "\u2019": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 2.449489742783178}, "sqlglot.expressions.Select.lock": {"tf": 1}, "sqlglot.helper.ensure_list": {"tf": 1}, "sqlglot.helper.ensure_collection": {"tf": 1}}, "df": 4}}, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.eliminate_ctes.eliminate_ctes": {"tf": 1}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 1}, "sqlglot.optimizer.eliminate_subqueries.eliminate_subqueries": {"tf": 1.4142135623730951}}, "df": 3}, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.optimizer.simplify.absorb_and_eliminate": {"tf": 1}}, "df": 1}}}}}}}}}}, "y": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1}, "sqlglot.executor.execute": {"tf": 1}, "sqlglot.executor.context.Context": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 1}, "sqlglot.trie.new_trie": {"tf": 1}, "sqlglot.trie.in_trie": {"tf": 1}}, "df": 9}}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.diff": {"tf": 3.872983346207417}}, "df": 1, "s": {"docs": {"sqlglot.diff": {"tf": 3}}, "df": 1}}}, "u": {"docs": {}, "df": 0, ":": {"8": {"0": {"9": {"0": {"docs": {}, "df": 0, "/": {"1": {"1": {"5": {"docs": {}, "df": 0, "/": {"1": {"docs": {}, "df": 0, "/": {"1": {"9": {"9": {"5": {"docs": {"sqlglot.diff.ChangeDistiller": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}}, "docs": {}, "df": 0}}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}}}, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}}, "df": 1, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.diff": {"tf": 2.23606797749979}}, "df": 1}}}}}, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.expressions.convert": {"tf": 1}}, "df": 2, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.transforms.eliminate_qualify": {"tf": 1}}, "df": 1}}}}}}}}}}}, "t": {"docs": {"sqlglot.diff": {"tf": 2.23606797749979}, "sqlglot.diff.ChangeDistiller": {"tf": 1}}, "df": 2, "c": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.executor.table.Tables": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1}}, "df": 3}}, "u": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {"sqlglot.executor": {"tf": 1.7320508075688772}}, "df": 1}}}}}}}}}, "c": {"docs": {"sqlglot": {"tf": 3.605551275463989}, "sqlglot.diff": {"tf": 3.4641016151377544}, "sqlglot.diff.diff": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.output_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.flatten": {"tf": 1.4142135623730951}, "sqlglot.expressions.Column.output_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.Identifier.output_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.Literal.output_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.Subquery.output_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.Star.output_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.Alias.output_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.Cast.output_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.column_table_names": {"tf": 1.7320508075688772}, "sqlglot.expressions.table_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.replace_tables": {"tf": 1.4142135623730951}, "sqlglot.optimizer.expand_laterals.expand_laterals": {"tf": 1.4142135623730951}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 1.4142135623730951}, "sqlglot.optimizer.simplify.flatten": {"tf": 2}, "sqlglot.optimizer.simplify.uniq_sort": {"tf": 1.4142135623730951}, "sqlglot.trie.in_trie": {"tf": 1}}, "df": 23, "a": {"docs": {"sqlglot.trie.in_trie": {"tf": 1}}, "df": 1, "n": {"docs": {"sqlglot": {"tf": 3.872983346207417}, "sqlglot.dataframe": {"tf": 2}, "sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1}, "sqlglot.dialects.dialect.format_time_lambda": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 4.242640687119285}, "sqlglot.executor": {"tf": 4}, "sqlglot.executor.execute": {"tf": 1}, "sqlglot.executor.context.Context": {"tf": 1.4142135623730951}, "sqlglot.executor.table.Tables": {"tf": 1}, "sqlglot.expressions.Expression.text": {"tf": 1}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 1}, "sqlglot.expressions.Union.limit": {"tf": 1}, "sqlglot.expressions.Select.limit": {"tf": 1}, "sqlglot.expressions.Select.offset": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1}, "sqlglot.helper.flatten": {"tf": 1}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_cnf": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_dnf": {"tf": 1.4142135623730951}, "sqlglot.optimizer.qualify_columns.Resolver": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.get_table": {"tf": 1}, "sqlglot.optimizer.scope.Scope.replace": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1}, "sqlglot.time.format_time": {"tf": 1}, "sqlglot.transforms.eliminate_qualify": {"tf": 1}, "sqlglot.transforms.preprocess": {"tf": 1}}, "df": 30, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.diff": {"tf": 1.7320508075688772}, "sqlglot.executor": {"tf": 1.7320508075688772}}, "df": 3, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.canonicalize.canonicalize": {"tf": 1}}, "df": 1}}}}}}}}}, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dataframe": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 3}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 2.6457513110645907}}, "df": 1, "s": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot": {"tf": 2.6457513110645907}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.dataframe.sql.Column.cast": {"tf": 1}, "sqlglot.expressions.cast": {"tf": 2.449489742783178}, "sqlglot.expressions.func": {"tf": 1.4142135623730951}, "sqlglot.helper.ensure_list": {"tf": 1}}, "df": 6, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.values": {"tf": 1}}, "df": 1}}, "s": {"docs": {"sqlglot.helper.ensure_list": {"tf": 1}}, "df": 1}}, "e": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.diff": {"tf": 2.6457513110645907}, "sqlglot.executor.env.null_if_any": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.expressions.Func": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1.4142135623730951}, "sqlglot.expressions.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.from_": {"tf": 1.4142135623730951}, "sqlglot.expressions.condition": {"tf": 1.4142135623730951}, "sqlglot.helper.camel_to_snake_case": {"tf": 1}, "sqlglot.helper.count_params": {"tf": 1}, "sqlglot.helper.should_identify": {"tf": 1}, "sqlglot.optimizer.lower_identities.lower_identities": {"tf": 1.7320508075688772}}, "df": 14, "s": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.diff": {"tf": 2.23606797749979}, "sqlglot.executor": {"tf": 1.4142135623730951}}, "df": 5}, "d": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}}, "df": 21}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.helper.csv_reader": {"tf": 1}}, "df": 1, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.dialects": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1.4142135623730951}, "sqlglot.transforms.preprocess": {"tf": 1}}, "df": 4}, "r": {"docs": {"sqlglot.diff.diff": {"tf": 1}}, "df": 1}}, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.dialect.format_time_lambda": {"tf": 1}, "sqlglot.expressions.Expression.walk": {"tf": 1}}, "df": 2}}}}}, "c": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1}}, "df": 1, "d": {"docs": {"sqlglot.diff.diff": {"tf": 1}}, "df": 1}}, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.executor": {"tf": 1.7320508075688772}}, "df": 1}}}}}, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.diff": {"tf": 1}}, "df": 2}}}, "e": {"docs": {"sqlglot.dataframe.sql.DataFrame.persist": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 1}, "sqlglot.generator.Generator.generate": {"tf": 1.4142135623730951}}, "df": 3}}}, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1}}, "df": 19, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "e": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}}, "df": 2}}, "t": {"docs": {"sqlglot.trie.in_trie": {"tf": 2}}, "df": 1, "c": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.executor.execute": {"tf": 1}, "sqlglot.expressions.Column.parts": {"tf": 1}, "sqlglot.expressions.to_table": {"tf": 1.7320508075688772}, "sqlglot.expressions.column": {"tf": 1.4142135623730951}, "sqlglot.expressions.table_": {"tf": 1.4142135623730951}, "sqlglot.optimizer.optimizer.optimize": {"tf": 2}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"tf": 1.4142135623730951}, "sqlglot.schema.Schema.supported_table_args": {"tf": 1}, "sqlglot.schema.MappingSchema": {"tf": 1.4142135623730951}}, "df": 9}}}}}, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1, "l": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.helper.camel_to_snake_case": {"tf": 1}}, "df": 1}}}}}}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 3}}, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.func": {"tf": 1}}, "df": 1, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.dialects": {"tf": 1}, "sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.expressions.Expression.text": {"tf": 1}, "sqlglot.expressions.Expression.transform": {"tf": 1}, "sqlglot.expressions.union": {"tf": 1.4142135623730951}, "sqlglot.expressions.intersect": {"tf": 1.4142135623730951}, "sqlglot.expressions.except_": {"tf": 1.4142135623730951}, "sqlglot.helper.AutoName": {"tf": 1}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1.4142135623730951}, "sqlglot.planner.Scan.from_expression": {"tf": 1.4142135623730951}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1.4142135623730951}, "sqlglot.tokens.Tokenizer.tokenize": {"tf": 1}, "sqlglot.trie.new_trie": {"tf": 1}}, "df": 15}}}}}}}}, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.optimizer.scope.Scope.columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_correlated_subquery": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 1}}, "df": 3}}}}}}}, "e": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1}}, "df": 2}}, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.diff": {"tf": 1}}, "df": 2}}}}}}}, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.helper.open_file": {"tf": 1}}, "df": 1}}}}}}, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.diff": {"tf": 2}, "sqlglot.executor": {"tf": 1}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1.4142135623730951}}, "df": 4, "d": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 2.449489742783178}}, "df": 1, "d": {"docs": {"sqlglot.diff": {"tf": 2.23606797749979}}, "df": 1}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.diff": {"tf": 2.449489742783178}}, "df": 1}}, "s": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.optimizer.simplify.rewrite_between": {"tf": 1}}, "df": 1}}}}}}, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 2}}, "df": 1, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}, "x": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1}}, "df": 2}}}}}, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.optimizer.simplify.remove_compliments": {"tf": 1}}, "df": 1}}}}}}}, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.expressions.condition": {"tf": 1}}, "df": 2}}}}, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.executor.python.PythonExecutor.generate": {"tf": 1}}, "df": 1, "r": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}, "m": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot": {"tf": 3.7416573867739413}}, "df": 1, "s": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.executor.python.Python.Generator": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser.expression": {"tf": 1.4142135623730951}}, "df": 25}}}}, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.dialects": {"tf": 1}, "sqlglot.diff": {"tf": 3.4641016151377544}, "sqlglot.errors.SqlglotError": {"tf": 1}, "sqlglot.errors.UnsupportedError": {"tf": 1}, "sqlglot.errors.ParseError": {"tf": 1}, "sqlglot.errors.TokenError": {"tf": 1}, "sqlglot.errors.OptimizeError": {"tf": 1}, "sqlglot.errors.SchemaError": {"tf": 1}, "sqlglot.errors.ExecuteError": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1}, "sqlglot.optimizer.eliminate_subqueries.eliminate_subqueries": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_cte": {"tf": 1}}, "df": 13, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}, "a": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.executor.python.Python.Generator": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator": {"tf": 1.4142135623730951}}, "df": 21, "n": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.dataframe": {"tf": 1.4142135623730951}}, "df": 1}}}}, "b": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.and_": {"tf": 1}, "sqlglot.expressions.or_": {"tf": 1}}, "df": 2, "d": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Select.where": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1}}, "df": 5}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 2, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}}}, "e": {"docs": {"sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1}, "sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 3, "s": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1}}, "df": 41}}, "/": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "/": {"8": {"docs": {"sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.transforms.eliminate_qualify": {"tf": 1}}, "df": 1}}}}}}}}, "n": {"docs": {}, "df": 0, "f": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}}}}}}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {"sqlglot.transpile": {"tf": 1}}, "df": 1}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.optimizer.scope.traverse_scope": {"tf": 1}}, "df": 1}}}}}}, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dataframe": {"tf": 1}}, "df": 2, "s": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}}}, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}, "x": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.executor.context.Context": {"tf": 1.4142135623730951}, "sqlglot.executor.context.Context.__init__": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1.4142135623730951}, "sqlglot.planner.Step.from_expression": {"tf": 2}, "sqlglot.planner.Scan.from_expression": {"tf": 2}, "sqlglot.planner.SetOperation.from_expression": {"tf": 2}}, "df": 28}}}, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.helper.flatten": {"tf": 1}, "sqlglot.transforms.eliminate_qualify": {"tf": 1}}, "df": 23, "s": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.expressions": {"tf": 1}, "sqlglot.helper.apply_index_offset": {"tf": 1}, "sqlglot.helper.tsort": {"tf": 1}}, "df": 5}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.executor": {"tf": 1}, "sqlglot.lineage.lineage": {"tf": 1}}, "df": 2}}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.expressions.Condition.and_": {"tf": 1.7320508075688772}, "sqlglot.expressions.Condition.or_": {"tf": 1.7320508075688772}, "sqlglot.expressions.Condition.not_": {"tf": 1.7320508075688772}, "sqlglot.expressions.condition": {"tf": 2}, "sqlglot.expressions.and_": {"tf": 1}, "sqlglot.expressions.or_": {"tf": 1}, "sqlglot.expressions.not_": {"tf": 1.4142135623730951}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 1}, "sqlglot.optimizer.eliminate_joins.join_condition": {"tf": 1}}, "df": 10, "s": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.expressions.and_": {"tf": 1}, "sqlglot.expressions.or_": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_dnf": {"tf": 1}}, "df": 4}, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.expressions.update": {"tf": 1}, "sqlglot.expressions.delete": {"tf": 1.4142135623730951}}, "df": 2}}}}}}}}, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe": {"tf": 1}}, "df": 1, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dataframe": {"tf": 1.4142135623730951}, "sqlglot.optimizer.simplify.uniq_sort": {"tf": 1}}, "df": 2}}}}}}, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dataframe": {"tf": 1}}, "df": 1}}}, "r": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Join.using": {"tf": 1}}, "df": 1}}}}}}}}, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dialects": {"tf": 1}, "sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 2, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}}, "df": 22}}, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.executor": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1}}, "df": 20}}}}, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.Expression.transform": {"tf": 1}}, "df": 1}}}}}}}, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 2.8284271247461903}, "sqlglot.executor.python.PythonExecutor.generate": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.generate_tuple": {"tf": 1}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 1}, "sqlglot.expressions.Select.ctas": {"tf": 1}, "sqlglot.expressions.convert": {"tf": 1}, "sqlglot.optimizer.lower_identities.lower_identities": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 1.7320508075688772}, "sqlglot.transforms.eliminate_distinct_on": {"tf": 1}, "sqlglot.transforms.eliminate_qualify": {"tf": 1}, "sqlglot.transforms.unnest_to_explode": {"tf": 1}, "sqlglot.transforms.explode_to_unnest": {"tf": 1}}, "df": 13, "s": {"docs": {"sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1}, "sqlglot.executor": {"tf": 1}, "sqlglot.expressions.Column.to_dot": {"tf": 1}, "sqlglot.expressions.TimeUnit": {"tf": 1}, "sqlglot.helper.camel_to_snake_case": {"tf": 1}, "sqlglot.optimizer.canonicalize.canonicalize": {"tf": 1}, "sqlglot.time.format_time": {"tf": 1}, "sqlglot.transforms.preprocess": {"tf": 1}}, "df": 9}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.executor": {"tf": 2.449489742783178}, "sqlglot.expressions.update": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1}, "sqlglot.time.format_time": {"tf": 1}}, "df": 4}}}, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.convert": {"tf": 1}, "sqlglot.optimizer.normalize.normalize": {"tf": 1}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1}}, "df": 3, "s": {"docs": {"sqlglot.optimizer.canonicalize.canonicalize": {"tf": 1}}, "df": 1}}}}}}, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.executor.context.Context": {"tf": 1}}, "df": 1}}}}}}}, "j": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.executor": {"tf": 1}, "sqlglot.optimizer.normalize.normalize": {"tf": 1}}, "df": 2}}}}}}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.parse": {"tf": 1}, "sqlglot.parse_one": {"tf": 1}, "sqlglot.transpile": {"tf": 1}, "sqlglot.dataframe": {"tf": 1}, "sqlglot.dialects": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.diff": {"tf": 3.605551275463989}, "sqlglot.executor": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.generate": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.generate_tuple": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.expressions.Condition.and_": {"tf": 1}, "sqlglot.expressions.Condition.or_": {"tf": 1}, "sqlglot.expressions.Unionable.union": {"tf": 1}, "sqlglot.expressions.Unionable.intersect": {"tf": 1}, "sqlglot.expressions.Unionable.except_": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Delete.returning": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Join.using": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Union.limit": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.expressions.Select.limit": {"tf": 1}, "sqlglot.expressions.Select.offset": {"tf": 1}, "sqlglot.expressions.Select.select": {"tf": 1}, "sqlglot.expressions.Select.lateral": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1}, "sqlglot.expressions.Select.where": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1}, "sqlglot.expressions.Select.ctas": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1}, "sqlglot.expressions.union": {"tf": 1.4142135623730951}, "sqlglot.expressions.intersect": {"tf": 1.4142135623730951}, "sqlglot.expressions.except_": {"tf": 1.4142135623730951}, "sqlglot.expressions.select": {"tf": 1}, "sqlglot.expressions.from_": {"tf": 1}, "sqlglot.expressions.condition": {"tf": 1}, "sqlglot.expressions.and_": {"tf": 1}, "sqlglot.expressions.or_": {"tf": 1}, "sqlglot.expressions.not_": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1}, "sqlglot.expressions.subquery": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}}, "df": 69}}, "l": {"1": {"docs": {"sqlglot.expressions.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.from_": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope": {"tf": 1.4142135623730951}}, "df": 3}, "2": {"docs": {"sqlglot.expressions.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.from_": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope": {"tf": 1.4142135623730951}}, "df": 3}, "docs": {"sqlglot": {"tf": 1.7320508075688772}, "sqlglot.dataframe": {"tf": 3.1622776601683795}, "sqlglot.executor.execute": {"tf": 1.7320508075688772}, "sqlglot.expressions.column": {"tf": 1}, "sqlglot.expressions.replace_placeholders": {"tf": 1.4142135623730951}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1.7320508075688772}, "sqlglot.optimizer.qualify_columns.qualify_columns": {"tf": 2}, "sqlglot.schema.MappingSchema": {"tf": 1.7320508075688772}}, "df": 8, "a": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.dataframe": {"tf": 2}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 2.6457513110645907}}, "df": 3}, "b": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.dataframe": {"tf": 2}}, "df": 2}, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot": {"tf": 3.3166247903554}, "sqlglot.dataframe": {"tf": 2.23606797749979}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1.7320508075688772}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 3.1622776601683795}, "sqlglot.diff.diff": {"tf": 2}, "sqlglot.executor": {"tf": 1}, "sqlglot.executor.context.Context": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.output_name": {"tf": 1}, "sqlglot.expressions.Expression.replace": {"tf": 1.7320508075688772}, "sqlglot.expressions.Column.output_name": {"tf": 1}, "sqlglot.expressions.Column.parts": {"tf": 1}, "sqlglot.expressions.Column.to_dot": {"tf": 1}, "sqlglot.expressions.Identifier.output_name": {"tf": 1}, "sqlglot.expressions.Literal.output_name": {"tf": 1}, "sqlglot.expressions.Subquery.output_name": {"tf": 1}, "sqlglot.expressions.Star.output_name": {"tf": 1}, "sqlglot.expressions.Alias.output_name": {"tf": 1}, "sqlglot.expressions.Cast.output_name": {"tf": 1}, "sqlglot.expressions.to_column": {"tf": 2.449489742783178}, "sqlglot.expressions.column": {"tf": 2}, "sqlglot.expressions.table_": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1.7320508075688772}, "sqlglot.expressions.var": {"tf": 1}, "sqlglot.expressions.column_table_names": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1.4142135623730951}, "sqlglot.lineage.lineage": {"tf": 1.7320508075688772}, "sqlglot.optimizer.expand_laterals.expand_laterals": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.get_table": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.Scope": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.Scope.columns": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.external_columns": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.unqualified_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.source_columns": {"tf": 1.4142135623730951}, "sqlglot.schema.Schema.add_table": {"tf": 1.7320508075688772}, "sqlglot.schema.Schema.column_names": {"tf": 1.4142135623730951}, "sqlglot.schema.Schema.get_column_type": {"tf": 2}, "sqlglot.schema.MappingSchema.add_table": {"tf": 1.7320508075688772}, "sqlglot.schema.MappingSchema.column_names": {"tf": 1.4142135623730951}, "sqlglot.schema.MappingSchema.get_column_type": {"tf": 2}, "sqlglot.transforms.eliminate_qualify": {"tf": 1}}, "df": 63, "s": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1}, "sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1.7320508075688772}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.executor.context.Context": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1}, "sqlglot.expressions.column_table_names": {"tf": 1}, "sqlglot.lineage.lineage": {"tf": 1}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}, "sqlglot.optimizer.expand_laterals.expand_laterals": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1.4142135623730951}, "sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 1}, "sqlglot.optimizer.qualify_columns.qualify_columns": {"tf": 1.4142135623730951}, "sqlglot.optimizer.qualify_columns.validate_qualify_columns": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.all_columns": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.get_source_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 1}, "sqlglot.optimizer.scope.Scope.columns": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.external_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.unqualified_columns": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.source_columns": {"tf": 1}, "sqlglot.schema.Schema.column_names": {"tf": 1}, "sqlglot.schema.MappingSchema": {"tf": 1.4142135623730951}, "sqlglot.schema.MappingSchema.column_names": {"tf": 1}, "sqlglot.transforms.remove_target_from_merge": {"tf": 1}}, "df": 30}, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.executor.execute": {"tf": 1}}, "df": 1}}}}}, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.errors.ErrorLevel.RAISE": {"tf": 1}}, "df": 1, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.parse": {"tf": 1.4142135623730951}, "sqlglot.helper.ensure_collection": {"tf": 1.4142135623730951}, "sqlglot.helper.subclasses": {"tf": 1}, "sqlglot.helper.find_new_name": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 1}, "sqlglot.trie.new_trie": {"tf": 1}}, "df": 6, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}}, "s": {"docs": {"sqlglot.schema.MappingSchema": {"tf": 1.7320508075688772}}, "df": 1}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.dataframe": {"tf": 1}, "sqlglot.diff": {"tf": 2.449489742783178}, "sqlglot.expressions.Select.group_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.having": {"tf": 2}, "sqlglot.optimizer.scope.Scope.ref_count": {"tf": 1.4142135623730951}}, "df": 6, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe": {"tf": 2.23606797749979}}, "df": 1}}}}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.helper.count_params": {"tf": 1}}, "df": 2}}}}}, "l": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}, "sqlglot.executor": {"tf": 2.23606797749979}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}}, "df": 3, "n": {"docs": {}, "df": 0, "\u2019": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.dataframe": {"tf": 1}}, "df": 1}}}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}, "s": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}, "t": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1}}, "df": 2, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}, "g": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "\u2019": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}, "e": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.diff": {"tf": 2.23606797749979}}, "df": 1}}}}}}}}, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}}, "df": 1}, "d": {"docs": {"sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}}, "df": 1}}}}}, "p": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.copy": {"tf": 1}, "sqlglot.expressions.Expression.transform": {"tf": 1}, "sqlglot.expressions.Delete.delete": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Delete.returning": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Join.using": {"tf": 1}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1}, "sqlglot.expressions.Union.limit": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.expressions.Select.limit": {"tf": 1}, "sqlglot.expressions.Select.offset": {"tf": 1}, "sqlglot.expressions.Select.select": {"tf": 1}, "sqlglot.expressions.Select.lateral": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1}, "sqlglot.expressions.Select.where": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1}, "sqlglot.expressions.Select.distinct": {"tf": 1}, "sqlglot.expressions.Select.ctas": {"tf": 1}, "sqlglot.expressions.Select.lock": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1.4142135623730951}, "sqlglot.expressions.expand": {"tf": 1.4142135623730951}}, "df": 29}}}, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {"sqlglot": {"tf": 2.449489742783178}, "sqlglot.dataframe": {"tf": 1.4142135623730951}, "sqlglot.dialects": {"tf": 1.4142135623730951}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.schema.MappingSchema": {"tf": 1}}, "df": 26, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}}}}}, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.executor": {"tf": 1}, "sqlglot.executor.context.Context.__init__": {"tf": 1}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1}, "sqlglot.optimizer.scope.Scope.branch": {"tf": 1}, "sqlglot.optimizer.scope.Scope.external_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.unqualified_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.source_columns": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}}, "df": 8, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dataframe": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.Column.cast": {"tf": 1}, "sqlglot.executor": {"tf": 1.4142135623730951}}, "df": 3}}}}}}, "s": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dataframe": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1}, "sqlglot.expressions.Expression.error_messages": {"tf": 1}, "sqlglot.helper.is_iterable": {"tf": 1}, "sqlglot.helper.should_identify": {"tf": 1}}, "df": 7, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}}, "df": 1}}}, "s": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1}, "sqlglot.expressions.Expression.is_string": {"tf": 1}, "sqlglot.expressions.Expression.is_number": {"tf": 1}, "sqlglot.expressions.Expression.is_int": {"tf": 1}, "sqlglot.expressions.Expression.is_star": {"tf": 1}, "sqlglot.expressions.Expression.error_messages": {"tf": 1}, "sqlglot.expressions.Union.is_star": {"tf": 1}, "sqlglot.expressions.Select.is_star": {"tf": 1}, "sqlglot.expressions.Subquery.is_star": {"tf": 1}, "sqlglot.helper.is_iterable": {"tf": 1}, "sqlglot.helper.should_identify": {"tf": 1}, "sqlglot.trie.in_trie": {"tf": 1}}, "df": 13}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 2}}}, "g": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 3.3166247903554}, "sqlglot.diff.ChangeDistiller": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1}}, "df": 3, "s": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.diff": {"tf": 2.6457513110645907}, "sqlglot.diff.diff": {"tf": 1}}, "df": 3}, "d": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}, "sqlglot.diff.Move": {"tf": 1}, "sqlglot.diff.Keep": {"tf": 1}}, "df": 3}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 2.449489742783178}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.executor.python.Python.Generator": {"tf": 2.449489742783178}, "sqlglot.generator.Generator": {"tf": 2.449489742783178}, "sqlglot.trie.new_trie": {"tf": 1}}, "df": 23, "s": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1}}, "df": 41}}}}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}}}, "w": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}, "sqlglot.diff.ChangeDistiller": {"tf": 1}}, "df": 2}}}}}, "t": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.Expression.assert_is": {"tf": 1}}, "df": 1}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.transforms.preprocess": {"tf": 1}}, "df": 1}}}}}}, "o": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 2, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1, "n": {"docs": {"sqlglot.parser.Parser.check_errors": {"tf": 1}, "sqlglot.parser.Parser.raise_error": {"tf": 1}}, "df": 2}}}}, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.unnest": {"tf": 1}, "sqlglot.expressions.Expression.flatten": {"tf": 1}, "sqlglot.expressions.replace_children": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 2.23606797749979}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1}}, "df": 7, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.diff": {"tf": 2.8284271247461903}, "sqlglot.expressions.replace_children": {"tf": 1}}, "df": 2}}}}}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.ctes": {"tf": 1}}, "df": 4, "s": {"docs": {"sqlglot.optimizer.eliminate_ctes.eliminate_ctes": {"tf": 1.4142135623730951}, "sqlglot.optimizer.eliminate_subqueries.eliminate_subqueries": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 1}, "sqlglot.optimizer.scope.Scope.ctes": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.cte_sources": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1.4142135623730951}, "sqlglot.planner.Scan.from_expression": {"tf": 1.4142135623730951}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1.4142135623730951}}, "df": 9}}, "x": {"docs": {"sqlglot.dataframe": {"tf": 1.7320508075688772}}, "df": 1}, "a": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.Select.ctas": {"tf": 1}}, "df": 1}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.expressions.Delete.delete": {"tf": 1}, "sqlglot.expressions.Select.ctas": {"tf": 2}, "sqlglot.expressions.to_table": {"tf": 1}, "sqlglot.expressions.to_column": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1.4142135623730951}, "sqlglot.trie.new_trie": {"tf": 1}}, "df": 9, "d": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.helper.object_to_dict": {"tf": 1}}, "df": 2, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe": {"tf": 2.23606797749979}}, "df": 1}}}}}}}}}, "s": {"docs": {"sqlglot.executor": {"tf": 1}, "sqlglot.expressions.update": {"tf": 1}, "sqlglot.parser.Parser.expression": {"tf": 1}, "sqlglot.transforms.preprocess": {"tf": 1}, "sqlglot.trie.new_trie": {"tf": 1}}, "df": 5}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.helper.AutoName": {"tf": 1}, "sqlglot.trie.new_trie": {"tf": 1}}, "df": 24}}, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}, "a": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}, "f": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.diff": {"tf": 3.3166247903554}, "sqlglot.expressions.Expression.find": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1.4142135623730951}}, "df": 4}}}}}}, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.optimizer.expand_multi_table_selects.expand_multi_table_selects": {"tf": 1}, "sqlglot.optimizer.optimize_joins.optimize_joins": {"tf": 1.4142135623730951}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 1}, "sqlglot.transforms.unnest_to_explode": {"tf": 1}}, "df": 4}}}}, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot": {"tf": 2}, "sqlglot.dataframe": {"tf": 2.23606797749979}, "sqlglot.dataframe.sql.Column.cast": {"tf": 1.4142135623730951}, "sqlglot.dialects": {"tf": 2}, "sqlglot.dialects.dialect.format_time_lambda": {"tf": 1.4142135623730951}, "sqlglot.errors.SqlglotError": {"tf": 1}, "sqlglot.errors.UnsupportedError": {"tf": 1}, "sqlglot.errors.ParseError": {"tf": 1}, "sqlglot.errors.TokenError": {"tf": 1}, "sqlglot.errors.OptimizeError": {"tf": 1}, "sqlglot.errors.SchemaError": {"tf": 1}, "sqlglot.errors.ExecuteError": {"tf": 1}, "sqlglot.executor.table.Tables": {"tf": 2}, "sqlglot.expressions.Expression": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.same_parent": {"tf": 1}, "sqlglot.expressions.Expression.flatten": {"tf": 1}, "sqlglot.expressions.Func": {"tf": 1.4142135623730951}, "sqlglot.expressions.func": {"tf": 1}, "sqlglot.helper.subclasses": {"tf": 1.4142135623730951}, "sqlglot.helper.count_params": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver": {"tf": 1}, "sqlglot.parser.Parser.expression": {"tf": 1.4142135623730951}, "sqlglot.schema.Schema": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema": {"tf": 2}}, "df": 24, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dialects": {"tf": 1.4142135623730951}, "sqlglot.helper.AutoName": {"tf": 1}, "sqlglot.helper.subclasses": {"tf": 1.4142135623730951}, "sqlglot.schema.Schema.add_table": {"tf": 1}}, "df": 4}}}}, "i": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe": {"tf": 1.7320508075688772}}, "df": 1}}, "m": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 1}, "sqlglot.transforms.eliminate_qualify": {"tf": 2}}, "df": 2, "s": {"docs": {"sqlglot.transforms.unalias_group": {"tf": 1}}, "df": 1}}}}}, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe": {"tf": 2.23606797749979}}, "df": 1}}}}, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.dataframe": {"tf": 1}}, "df": 1}}, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe": {"tf": 1.4142135623730951}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.Select.cluster_by": {"tf": 2}}, "df": 1}}}}}, "s": {"docs": {"sqlglot.helper.count_params": {"tf": 1}}, "df": 1}}, "s": {"docs": {"sqlglot.dataframe": {"tf": 2}}, "df": 1, "v": {"docs": {"sqlglot.helper.csv": {"tf": 1.4142135623730951}, "sqlglot.helper.csv_reader": {"tf": 2}}, "df": 2}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}, "i": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}, "n": {"docs": {}, "df": 0, "f": {"docs": {"sqlglot.executor": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_cnf": {"tf": 1}}, "df": 2, "/": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "f": {"docs": {"sqlglot.optimizer.normalize.normalize": {"tf": 1}}, "df": 1}}}}}}}, "b": {"docs": {"sqlglot": {"tf": 4.795831523312719}, "sqlglot.diff": {"tf": 3.7416573867739413}, "sqlglot.diff.diff": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 2.23606797749979}, "sqlglot.executor.env.null_if_any": {"tf": 1}, "sqlglot.expressions.Expression.output_name": {"tf": 1}, "sqlglot.expressions.Expression.flatten": {"tf": 1.4142135623730951}, "sqlglot.expressions.Column.output_name": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1.4142135623730951}, "sqlglot.expressions.Identifier.output_name": {"tf": 1}, "sqlglot.expressions.Literal.output_name": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 2}, "sqlglot.expressions.Select.join": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.where": {"tf": 1.4142135623730951}, "sqlglot.expressions.Subquery.output_name": {"tf": 1}, "sqlglot.expressions.Star.output_name": {"tf": 1}, "sqlglot.expressions.Alias.output_name": {"tf": 1}, "sqlglot.expressions.Cast.output_name": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1.4142135623730951}, "sqlglot.expressions.column_table_names": {"tf": 1}, "sqlglot.expressions.table_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.replace_tables": {"tf": 1.4142135623730951}, "sqlglot.expressions.replace_placeholders": {"tf": 1.4142135623730951}, "sqlglot.helper.dict_depth": {"tf": 1.4142135623730951}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 1.7320508075688772}, "sqlglot.optimizer.expand_laterals.expand_laterals": {"tf": 1.7320508075688772}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1}, "sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.selects": {"tf": 1.4142135623730951}, "sqlglot.optimizer.simplify.flatten": {"tf": 2}, "sqlglot.optimizer.simplify.uniq_sort": {"tf": 1.7320508075688772}, "sqlglot.optimizer.simplify.absorb_and_eliminate": {"tf": 3.1622776601683795}, "sqlglot.planner.Step.from_expression": {"tf": 1.4142135623730951}, "sqlglot.planner.Scan.from_expression": {"tf": 1.4142135623730951}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1.4142135623730951}, "sqlglot.transforms.unalias_group": {"tf": 1.7320508075688772}, "sqlglot.trie.new_trie": {"tf": 1.4142135623730951}}, "df": 37, "e": {"docs": {"sqlglot": {"tf": 3}, "sqlglot.transpile": {"tf": 1.4142135623730951}, "sqlglot.dataframe": {"tf": 3}, "sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.dialects": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.dialect.format_time_lambda": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 2}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.diff": {"tf": 4.242640687119285}, "sqlglot.diff.diff": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 4}, "sqlglot.executor.execute": {"tf": 1}, "sqlglot.executor.context.Context": {"tf": 1.4142135623730951}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.executor.table.Tables": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.text": {"tf": 1}, "sqlglot.expressions.Expression.walk": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.transform": {"tf": 1}, "sqlglot.expressions.Condition.and_": {"tf": 1}, "sqlglot.expressions.Condition.or_": {"tf": 1}, "sqlglot.expressions.Unionable.union": {"tf": 1}, "sqlglot.expressions.Unionable.intersect": {"tf": 1}, "sqlglot.expressions.Unionable.except_": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Delete.returning": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Join.using": {"tf": 1}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1}, "sqlglot.expressions.Union.limit": {"tf": 1.4142135623730951}, "sqlglot.expressions.Union.select": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.expressions.Select.limit": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.offset": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.select": {"tf": 1}, "sqlglot.expressions.Select.lateral": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.where": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1}, "sqlglot.expressions.Select.distinct": {"tf": 1}, "sqlglot.expressions.Select.ctas": {"tf": 1}, "sqlglot.expressions.Select.lock": {"tf": 1.4142135623730951}, "sqlglot.expressions.Func": {"tf": 1.4142135623730951}, "sqlglot.expressions.union": {"tf": 1.4142135623730951}, "sqlglot.expressions.intersect": {"tf": 1.4142135623730951}, "sqlglot.expressions.except_": {"tf": 1.4142135623730951}, "sqlglot.expressions.alias_": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1.4142135623730951}, "sqlglot.expressions.replace_tables": {"tf": 1}, "sqlglot.expressions.replace_placeholders": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.helper.apply_index_offset": {"tf": 1.4142135623730951}, "sqlglot.helper.while_changing": {"tf": 1.4142135623730951}, "sqlglot.helper.tsort": {"tf": 1}, "sqlglot.helper.open_file": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1.7320508075688772}, "sqlglot.helper.flatten": {"tf": 1}, "sqlglot.helper.should_identify": {"tf": 1.4142135623730951}, "sqlglot.lineage.lineage": {"tf": 1}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 2.449489742783178}, "sqlglot.optimizer.qualify_columns.Resolver.get_table": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 1}, "sqlglot.optimizer.scope.Scope.replace": {"tf": 1}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1.4142135623730951}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}, "sqlglot.schema.Schema.add_table": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1.4142135623730951}, "sqlglot.schema.MappingSchema": {"tf": 1.7320508075688772}, "sqlglot.time.format_time": {"tf": 1}, "sqlglot.transforms.unalias_group": {"tf": 1}, "sqlglot.transforms.eliminate_distinct_on": {"tf": 1}, "sqlglot.transforms.eliminate_qualify": {"tf": 1.4142135623730951}, "sqlglot.transforms.remove_precision_parameterized_types": {"tf": 1}, "sqlglot.transforms.preprocess": {"tf": 1.4142135623730951}, "sqlglot.trie.in_trie": {"tf": 1}}, "df": 103, "t": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 2.8284271247461903}, "sqlglot.diff.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1}, "sqlglot.optimizer.simplify.rewrite_between": {"tf": 1}}, "df": 6}}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.diff": {"tf": 2}, "sqlglot.diff.diff": {"tf": 1}}, "df": 2}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dialects.dialect.format_time_lambda": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 3}}}, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot": {"tf": 1.7320508075688772}}, "df": 1}}}}}}}, "e": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 3}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}}, "df": 23}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.transforms.eliminate_qualify": {"tf": 1}}, "df": 1}}}}, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.executor": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}}, "df": 23}}}}, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 2}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.optimizer.canonicalize.canonicalize": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}, "sqlglot.optimizer.simplify.rewrite_between": {"tf": 1}}, "df": 26}}}, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.expressions.var": {"tf": 1}}, "df": 3, "s": {"docs": {"sqlglot.diff": {"tf": 2.449489742783178}, "sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 1}}, "df": 2}}}}}, "e": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.diff": {"tf": 2.449489742783178}, "sqlglot.diff.Insert": {"tf": 1}, "sqlglot.diff.Remove": {"tf": 1}, "sqlglot.diff.Update": {"tf": 1}, "sqlglot.diff.Keep": {"tf": 1}, "sqlglot.executor": {"tf": 2.23606797749979}}, "df": 6}}, "y": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}, "g": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.diff.ChangeDistiller": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 2}}}, "i": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dataframe": {"tf": 2.449489742783178}, "sqlglot.dialects.bigquery": {"tf": 1}}, "df": 3}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.dialects": {"tf": 1.4142135623730951}}, "df": 2}}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {"sqlglot.diff": {"tf": 3.872983346207417}}, "df": 1, "s": {"docs": {"sqlglot.diff": {"tf": 2}}, "df": 1}}}}, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}, "u": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot": {"tf": 1.7320508075688772}, "sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.expressions": {"tf": 1}, "sqlglot.expressions.Dot.build": {"tf": 1}, "sqlglot.expressions.subquery": {"tf": 1}, "sqlglot.expressions.column": {"tf": 1}, "sqlglot.expressions.table_": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1}, "sqlglot.expressions.var": {"tf": 1}, "sqlglot.expressions.rename_table": {"tf": 1}, "sqlglot.expressions.func": {"tf": 1.4142135623730951}, "sqlglot.lineage.lineage": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.build_scope": {"tf": 1.4142135623730951}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}}, "df": 16, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.diff": {"tf": 2}, "sqlglot.executor": {"tf": 1}, "sqlglot.lineage.lineage": {"tf": 1}}, "df": 4}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.executor": {"tf": 1.4142135623730951}}, "df": 2}}, "s": {"docs": {"sqlglot.expressions.Unionable.union": {"tf": 1}, "sqlglot.expressions.Unionable.intersect": {"tf": 1}, "sqlglot.expressions.Unionable.except_": {"tf": 1}, "sqlglot.expressions.delete": {"tf": 1}, "sqlglot.expressions.to_identifier": {"tf": 1}, "sqlglot.expressions.to_interval": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}}, "df": 9}}, "t": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 2}}, "df": 2}}}, "g": {"docs": {"sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}}, "df": 2}, "t": {"docs": {"sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.diff": {"tf": 2.6457513110645907}, "sqlglot.executor": {"tf": 2.23606797749979}, "sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 1}, "sqlglot.transforms.eliminate_distinct_on": {"tf": 1}, "sqlglot.transforms.eliminate_qualify": {"tf": 1}}, "df": 6}, "l": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}, "y": {"docs": {"sqlglot": {"tf": 2.449489742783178}, "sqlglot.pretty": {"tf": 1}, "sqlglot.schema": {"tf": 1}, "sqlglot.dataframe": {"tf": 2}, "sqlglot.dialects": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.diff": {"tf": 4.47213595499958}, "sqlglot.diff.diff": {"tf": 1}, "sqlglot.diff.ChangeDistiller": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 2.23606797749979}, "sqlglot.executor.table.Tables": {"tf": 1}, "sqlglot.expressions": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.load": {"tf": 1}, "sqlglot.expressions.Delete.returning": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 2}, "sqlglot.expressions.Select.order_by": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.sort_by": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.cluster_by": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.having": {"tf": 1.4142135623730951}, "sqlglot.expressions.Func": {"tf": 1}, "sqlglot.expressions.expand": {"tf": 1}, "sqlglot.generator.Generator.generate": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1.4142135623730951}, "sqlglot.helper.count_params": {"tf": 1}, "sqlglot.lineage.lineage": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1}, "sqlglot.optimizer.optimize_joins.reorder_joins": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1.4142135623730951}, "sqlglot.planner.Scan.from_expression": {"tf": 1.4142135623730951}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1.4142135623730951}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1}, "sqlglot.serde.load": {"tf": 1}, "sqlglot.transforms.unalias_group": {"tf": 1.7320508075688772}, "sqlglot.transforms.preprocess": {"tf": 1}, "sqlglot.trie.new_trie": {"tf": 1.4142135623730951}}, "df": 61, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.executor.python.PythonExecutor.generate_tuple": {"tf": 1}}, "df": 1, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.executor.python.PythonExecutor.generate": {"tf": 1}}, "df": 1}}}}, "s": {"docs": {"sqlglot.helper.ensure_collection": {"tf": 1}, "sqlglot.helper.is_iterable": {"tf": 1}, "sqlglot.helper.flatten": {"tf": 1}}, "df": 3}}}}, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}}}, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}}, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}, "z": {"docs": {"sqlglot": {"tf": 2.8284271247461903}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.expressions.update": {"tf": 1.4142135623730951}}, "df": 3}, "r": {"docs": {"sqlglot": {"tf": 2.8284271247461903}, "sqlglot.executor": {"tf": 2}, "sqlglot.expressions.alias_": {"tf": 2}, "sqlglot.expressions.subquery": {"tf": 1.4142135623730951}, "sqlglot.optimizer.lower_identities.lower_identities": {"tf": 2}}, "df": 5, "e": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}, "a": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "c": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}, "e": {"docs": {"sqlglot.dialects": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.errors.SqlglotError": {"tf": 1}, "sqlglot.errors.UnsupportedError": {"tf": 1}, "sqlglot.errors.ParseError": {"tf": 1}, "sqlglot.errors.TokenError": {"tf": 1}, "sqlglot.errors.OptimizeError": {"tf": 1}, "sqlglot.errors.SchemaError": {"tf": 1}, "sqlglot.errors.ExecuteError": {"tf": 1}, "sqlglot.executor.table.Tables": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.expressions.Func": {"tf": 1}, "sqlglot.helper.find_new_name": {"tf": 1.4142135623730951}, "sqlglot.schema.Schema": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1}}, "df": 15, "d": {"docs": {"sqlglot.diff": {"tf": 2.449489742783178}, "sqlglot.diff.ChangeDistiller": {"tf": 1}, "sqlglot.executor": {"tf": 2}, "sqlglot.optimizer.optimize_joins.optimize_joins": {"tf": 1}, "sqlglot.optimizer.optimize_joins.reorder_joins": {"tf": 1}, "sqlglot.schema.MappingSchema": {"tf": 1}}, "df": 6}}}, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}}, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dialects": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 2.449489742783178}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 2.449489742783178}, "sqlglot.executor.python.Python.Generator": {"tf": 2.449489742783178}, "sqlglot.expressions.Expression.walk": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.transform": {"tf": 1}, "sqlglot.expressions.Unionable.union": {"tf": 1}, "sqlglot.expressions.Unionable.intersect": {"tf": 1}, "sqlglot.expressions.Unionable.except_": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1.4142135623730951}, "sqlglot.expressions.Join.using": {"tf": 1.4142135623730951}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1.7320508075688772}, "sqlglot.expressions.Union.limit": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.group_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.order_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.sort_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.cluster_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.limit": {"tf": 1}, "sqlglot.expressions.Select.offset": {"tf": 1}, "sqlglot.expressions.Select.lateral": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.join": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.where": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.having": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.distinct": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.ctas": {"tf": 1}, "sqlglot.expressions.Func": {"tf": 1}, "sqlglot.expressions.union": {"tf": 1}, "sqlglot.expressions.intersect": {"tf": 1}, "sqlglot.expressions.except_": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 2.449489742783178}, "sqlglot.helper.is_iterable": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1}, "sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1}}, "df": 57, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dialects": {"tf": 1}, "sqlglot.executor": {"tf": 1}, "sqlglot.expressions.true": {"tf": 1}, "sqlglot.expressions.false": {"tf": 1}}, "df": 5, "s": {"docs": {"sqlglot.expressions.Expression": {"tf": 1}}, "df": 1}}}}}}, "t": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.transpile": {"tf": 1}, "sqlglot.diff": {"tf": 2}, "sqlglot.executor": {"tf": 1}, "sqlglot.helper.flatten": {"tf": 1}}, "df": 4}, "t": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.helper.seq_get": {"tf": 1}}, "df": 1}}}}, "b": {"docs": {"sqlglot.trie.in_trie": {"tf": 1}}, "df": 1}}, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dialects": {"tf": 1}}, "df": 1}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}, "e": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}, "d": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.expressions.Expression.bfs": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1}}, "df": 3}}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.expressions.Expression.walk": {"tf": 1}, "sqlglot.optimizer.scope.Scope.branch": {"tf": 1}}, "df": 2}}}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}, "c": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.optimizer.pushdown_predicates.pushdown_cnf": {"tf": 1}}, "df": 1, "s": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_dnf": {"tf": 1}}, "df": 2}}}}, "a": {"docs": {"sqlglot.expressions.Unionable.union": {"tf": 1.4142135623730951}, "sqlglot.expressions.Unionable.intersect": {"tf": 1.4142135623730951}, "sqlglot.expressions.Unionable.except_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Join.using": {"tf": 1.4142135623730951}, "sqlglot.expressions.union": {"tf": 1.4142135623730951}, "sqlglot.expressions.intersect": {"tf": 1.4142135623730951}, "sqlglot.expressions.except_": {"tf": 1.4142135623730951}, "sqlglot.helper.flatten": {"tf": 1.4142135623730951}, "sqlglot.trie.new_trie": {"tf": 1}}, "df": 9, "n": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}, "c": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.expressions.not_": {"tf": 1.4142135623730951}}, "df": 1}}, "b": {"docs": {"sqlglot.trie.new_trie": {"tf": 1}}, "df": 1}}}, "f": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.Expression.walk": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.bfs": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1.4142135623730951}}, "df": 5}}}, "u": {"docs": {"sqlglot.executor": {"tf": 2}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 1.7320508075688772}}, "df": 2, "s": {"docs": {"sqlglot.expressions.Expression": {"tf": 1}}, "df": 1, "e": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dataframe": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 2.23606797749979}, "sqlglot.diff": {"tf": 2}, "sqlglot.executor": {"tf": 1.7320508075688772}, "sqlglot.executor.python.Python.Generator": {"tf": 2.23606797749979}, "sqlglot.expressions.Condition.and_": {"tf": 1}, "sqlglot.expressions.Condition.or_": {"tf": 1}, "sqlglot.expressions.Unionable.union": {"tf": 1}, "sqlglot.expressions.Unionable.intersect": {"tf": 1}, "sqlglot.expressions.Unionable.except_": {"tf": 1}, "sqlglot.expressions.Delete.delete": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Delete.returning": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Join.using": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1}, "sqlglot.expressions.Union.limit": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.expressions.Select.limit": {"tf": 1}, "sqlglot.expressions.Select.offset": {"tf": 1}, "sqlglot.expressions.Select.select": {"tf": 1}, "sqlglot.expressions.Select.lateral": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.where": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1}, "sqlglot.expressions.Select.ctas": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1}, "sqlglot.expressions.union": {"tf": 1}, "sqlglot.expressions.intersect": {"tf": 1}, "sqlglot.expressions.except_": {"tf": 1}, "sqlglot.expressions.select": {"tf": 1}, "sqlglot.expressions.from_": {"tf": 1}, "sqlglot.expressions.update": {"tf": 1}, "sqlglot.expressions.delete": {"tf": 1}, "sqlglot.expressions.condition": {"tf": 1}, "sqlglot.expressions.and_": {"tf": 1}, "sqlglot.expressions.or_": {"tf": 1}, "sqlglot.expressions.not_": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1.4142135623730951}, "sqlglot.expressions.subquery": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator": {"tf": 2.23606797749979}, "sqlglot.generator.Generator.generate": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser": {"tf": 1}}, "df": 90, "d": {"docs": {"sqlglot": {"tf": 2}, "sqlglot.schema": {"tf": 1}, "sqlglot.transpile": {"tf": 1.4142135623730951}, "sqlglot.dataframe": {"tf": 1}, "sqlglot.dialects.dialect.format_time_lambda": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 1.7320508075688772}, "sqlglot.diff.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1.7320508075688772}, "sqlglot.executor.context.Context": {"tf": 1.4142135623730951}, "sqlglot.executor.table.Tables": {"tf": 1}, "sqlglot.expressions": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.text": {"tf": 1}, "sqlglot.expressions.Expression.walk": {"tf": 1}, "sqlglot.expressions.Expression.error_messages": {"tf": 1.4142135623730951}, "sqlglot.expressions.Condition.and_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Condition.or_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Unionable.union": {"tf": 1.4142135623730951}, "sqlglot.expressions.Unionable.intersect": {"tf": 1.4142135623730951}, "sqlglot.expressions.Unionable.except_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Delete.delete": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1.4142135623730951}, "sqlglot.expressions.Delete.returning": {"tf": 1.4142135623730951}, "sqlglot.expressions.Join.on": {"tf": 1.4142135623730951}, "sqlglot.expressions.Join.using": {"tf": 1.4142135623730951}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1.7320508075688772}, "sqlglot.expressions.Union.limit": {"tf": 1.4142135623730951}, "sqlglot.expressions.Union.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.from_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.group_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.order_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.sort_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.cluster_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.limit": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.offset": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.lateral": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.join": {"tf": 2}, "sqlglot.expressions.Select.where": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.having": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.ctas": {"tf": 1.4142135623730951}, "sqlglot.expressions.Tag": {"tf": 1}, "sqlglot.expressions.Func": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1}, "sqlglot.expressions.union": {"tf": 1.7320508075688772}, "sqlglot.expressions.intersect": {"tf": 1.7320508075688772}, "sqlglot.expressions.except_": {"tf": 1.7320508075688772}, "sqlglot.expressions.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.from_": {"tf": 1.4142135623730951}, "sqlglot.expressions.update": {"tf": 1}, "sqlglot.expressions.delete": {"tf": 1}, "sqlglot.expressions.condition": {"tf": 1.4142135623730951}, "sqlglot.expressions.and_": {"tf": 1.4142135623730951}, "sqlglot.expressions.or_": {"tf": 1.4142135623730951}, "sqlglot.expressions.not_": {"tf": 1.4142135623730951}, "sqlglot.expressions.alias_": {"tf": 1.4142135623730951}, "sqlglot.expressions.subquery": {"tf": 1.4142135623730951}, "sqlglot.expressions.func": {"tf": 1.4142135623730951}, "sqlglot.helper.AutoName": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1}, "sqlglot.lineage.lineage": {"tf": 1}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.optimizer.scope.Scope.replace": {"tf": 1}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1}, "sqlglot.parser.Parser.parse": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 1}, "sqlglot.parser.Parser.validate_expression": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1}, "sqlglot.schema.MappingSchema": {"tf": 1}, "sqlglot.transforms.unnest_to_explode": {"tf": 1}, "sqlglot.transforms.explode_to_unnest": {"tf": 1}, "sqlglot.transforms.preprocess": {"tf": 1}, "sqlglot.trie.new_trie": {"tf": 1}}, "df": 75}, "s": {"docs": {"sqlglot": {"tf": 1.7320508075688772}, "sqlglot.dialects": {"tf": 1}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression": {"tf": 1}}, "df": 4}, "f": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.executor": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.expressions.Expression.assert_is": {"tf": 1}, "sqlglot.helper.first": {"tf": 1}, "sqlglot.transforms.eliminate_distinct_on": {"tf": 1}}, "df": 6}}}, "r": {"docs": {"sqlglot": {"tf": 2.23606797749979}, "sqlglot.dataframe": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope": {"tf": 1}, "sqlglot.optimizer.scope.Scope.udtfs": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_udtf": {"tf": 1}}, "df": 5, "s": {"docs": {"sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 5}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dataframe": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.diff": {"tf": 2}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.expressions.Join.using": {"tf": 2}, "sqlglot.expressions.Select.join": {"tf": 2}, "sqlglot.lineage.LineageHTML": {"tf": 1}, "sqlglot.transforms.eliminate_qualify": {"tf": 1}, "sqlglot.transforms.preprocess": {"tf": 1}}, "df": 11}}}, "u": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dialects": {"tf": 1}}, "df": 1}}}}}}, "n": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}}}}, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator": {"tf": 1.4142135623730951}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 1.4142135623730951}, "sqlglot.transforms.unnest_to_explode": {"tf": 1}, "sqlglot.transforms.explode_to_unnest": {"tf": 1}}, "df": 25, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.Expression.unnest_operands": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 1}}, "df": 2}}}}}, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.replace_placeholders": {"tf": 1}}, "df": 1}}}}}, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 2.23606797749979}, "sqlglot.executor.python.Python.Generator": {"tf": 2.23606797749979}, "sqlglot.generator.Generator": {"tf": 2.23606797749979}}, "df": 22, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}}, "df": 21}}}}}}}, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe": {"tf": 1}}, "df": 1}}}}}}}}}, "r": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}, "c": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.trie.in_trie": {"tf": 1}}, "df": 1}}}}}}}}}}, "i": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}}}, "t": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.executor": {"tf": 1}, "sqlglot.expressions.TimeUnit": {"tf": 1}}, "df": 3}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.dialects": {"tf": 1}, "sqlglot.executor": {"tf": 1}, "sqlglot.helper.open_file": {"tf": 1}}, "df": 3}}}}}}, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.Unionable.union": {"tf": 2.23606797749979}, "sqlglot.expressions.Union.limit": {"tf": 1.4142135623730951}, "sqlglot.expressions.Union.select": {"tf": 2.449489742783178}, "sqlglot.expressions.union": {"tf": 2.23606797749979}, "sqlglot.optimizer.scope.Scope": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.Scope.is_union": {"tf": 1}}, "df": 6, "s": {"docs": {"sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1.4142135623730951}}, "df": 1}, "/": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}}}, "q": {"docs": {"sqlglot.optimizer.simplify.uniq_sort": {"tf": 1}}, "df": 1, "u": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.expressions.column_table_names": {"tf": 1}}, "df": 3}}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1}}, "df": 2}}}}}, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 1}}}}, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}}, "df": 2, "d": {"docs": {"sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1.7320508075688772}, "sqlglot.optimizer.lower_identities.lower_identities": {"tf": 1}}, "df": 3}}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.optimizer.scope.Scope.unqualified_columns": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1, "l": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}}, "df": 1}}}}}}}, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 4}}, "df": 1}}}}}}}, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}}}, "f": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.helper.apply_index_offset": {"tf": 1}}, "df": 1}}}}}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.transforms.unalias_group": {"tf": 1}}, "df": 1}}}}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.helper.while_changing": {"tf": 1}}, "df": 1}}}, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.optimizer.eliminate_ctes.eliminate_ctes": {"tf": 1}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 1}, "sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 1.7320508075688772}}, "df": 3}}}}}, "p": {"docs": {"sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1}, "sqlglot.diff": {"tf": 1.7320508075688772}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.replace": {"tf": 1}}, "df": 5, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}}, "df": 21}}}}, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.executor.python.Python.Generator": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator": {"tf": 1.4142135623730951}, "sqlglot.helper.should_identify": {"tf": 1}}, "df": 22}}}, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 2}, "sqlglot.diff.diff": {"tf": 1}, "sqlglot.expressions.Select.lock": {"tf": 2}, "sqlglot.expressions.update": {"tf": 2.23606797749979}, "sqlglot.schema.Schema.add_table": {"tf": 1}, "sqlglot.schema.MappingSchema.add_table": {"tf": 1}}, "df": 6, "s": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.schema.MappingSchema.add_table": {"tf": 1}}, "df": 2}, "d": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.diff.Update": {"tf": 1}}, "df": 2}}}}}}, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}}}, "d": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}, "t": {"docs": {}, "df": 0, "f": {"docs": {"sqlglot.optimizer.scope.Scope": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.udtfs": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_udtf": {"tf": 1}}, "df": 3, "s": {"docs": {"sqlglot.optimizer.scope.Scope.udtfs": {"tf": 1}}, "df": 1}}}}}, "f": {"docs": {"sqlglot": {"tf": 3}, "sqlglot.dataframe": {"tf": 4.69041575982343}, "sqlglot.dialects": {"tf": 1}, "sqlglot.diff": {"tf": 2.8284271247461903}, "sqlglot.trie.new_trie": {"tf": 1}}, "df": 5, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot": {"tf": 3.4641016151377544}, "sqlglot.parse_one": {"tf": 1.4142135623730951}, "sqlglot.dataframe": {"tf": 2.8284271247461903}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.dialects": {"tf": 1.7320508075688772}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.dialect.format_time_lambda": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.diff": {"tf": 6.855654600401044}, "sqlglot.diff.diff": {"tf": 1.4142135623730951}, "sqlglot.errors.SqlglotError": {"tf": 1}, "sqlglot.errors.UnsupportedError": {"tf": 1}, "sqlglot.errors.ParseError": {"tf": 1}, "sqlglot.errors.TokenError": {"tf": 1}, "sqlglot.errors.OptimizeError": {"tf": 1}, "sqlglot.errors.SchemaError": {"tf": 1}, "sqlglot.errors.ExecuteError": {"tf": 1}, "sqlglot.executor": {"tf": 4}, "sqlglot.executor.context.Context": {"tf": 1}, "sqlglot.executor.table.Tables": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression": {"tf": 2}, "sqlglot.expressions.Expression.text": {"tf": 1}, "sqlglot.expressions.Expression.iter_expressions": {"tf": 1}, "sqlglot.expressions.Expression.replace": {"tf": 1}, "sqlglot.expressions.Expression.assert_is": {"tf": 1}, "sqlglot.expressions.Expression.error_messages": {"tf": 1}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 1}, "sqlglot.expressions.Select.lock": {"tf": 2.23606797749979}, "sqlglot.expressions.Tag": {"tf": 1}, "sqlglot.expressions.Func": {"tf": 1.4142135623730951}, "sqlglot.expressions.union": {"tf": 1}, "sqlglot.expressions.intersect": {"tf": 1}, "sqlglot.expressions.except_": {"tf": 1}, "sqlglot.expressions.select": {"tf": 1}, "sqlglot.expressions.from_": {"tf": 1}, "sqlglot.expressions.update": {"tf": 1}, "sqlglot.expressions.delete": {"tf": 1}, "sqlglot.expressions.condition": {"tf": 1}, "sqlglot.helper.AutoName": {"tf": 1}, "sqlglot.helper.subclasses": {"tf": 1.4142135623730951}, "sqlglot.helper.find_new_name": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1}, "sqlglot.helper.dict_depth": {"tf": 1}, "sqlglot.helper.first": {"tf": 1}, "sqlglot.lineage.lineage": {"tf": 1.4142135623730951}, "sqlglot.optimizer.qualify_columns.Resolver": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.get_table": {"tf": 1.4142135623730951}, "sqlglot.optimizer.qualify_columns.Resolver.get_source_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 3}, "sqlglot.optimizer.scope.Scope.derived_tables": {"tf": 1}, "sqlglot.optimizer.scope.Scope.subqueries": {"tf": 1}, "sqlglot.optimizer.scope.Scope.selects": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.source_columns": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.build_scope": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 1}, "sqlglot.parser.Parser.expression": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1.4142135623730951}, "sqlglot.planner.Scan.from_expression": {"tf": 1.4142135623730951}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1.4142135623730951}, "sqlglot.schema.Schema": {"tf": 1}, "sqlglot.schema.Schema.column_names": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1.4142135623730951}, "sqlglot.schema.MappingSchema": {"tf": 1}, "sqlglot.schema.MappingSchema.column_names": {"tf": 1}, "sqlglot.time.format_time": {"tf": 1}, "sqlglot.transforms.eliminate_distinct_on": {"tf": 1}, "sqlglot.transforms.eliminate_qualify": {"tf": 1}, "sqlglot.transforms.remove_precision_parameterized_types": {"tf": 1}}, "df": 86, "m": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 1.7320508075688772}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.helper.AutoName": {"tf": 1}, "sqlglot.optimizer.canonicalize.canonicalize": {"tf": 1}, "sqlglot.optimizer.normalize.normalize": {"tf": 1.7320508075688772}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_cnf": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_dnf": {"tf": 1.4142135623730951}}, "df": 10, "a": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.pretty": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.format_time_lambda": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.executor.python.Python.Generator": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator": {"tf": 1.4142135623730951}, "sqlglot.helper.csv": {"tf": 1}, "sqlglot.time.format_time": {"tf": 1.7320508075688772}}, "df": 26, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1}}, "df": 3}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.dialect.format_time_lambda": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.7320508075688772}, "sqlglot.executor.python.Python.Generator": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator": {"tf": 1.7320508075688772}, "sqlglot.helper.csv": {"tf": 1}}, "df": 23}}}, "s": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.helper.csv": {"tf": 1}}, "df": 2}}, "l": {"docs": {"sqlglot.helper.count_params": {"tf": 1}}, "df": 1, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}, "s": {"docs": {"sqlglot.executor.execute": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.schema.MappingSchema": {"tf": 1}}, "df": 3}}, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.expressions.to_identifier": {"tf": 1}, "sqlglot.expressions.column": {"tf": 1}, "sqlglot.optimizer.canonicalize.canonicalize": {"tf": 1}}, "df": 4, "s": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}, "o": {"docs": {"sqlglot": {"tf": 3.1622776601683795}, "sqlglot.executor.env.null_if_any": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1.4142135623730951}, "sqlglot.expressions.Unionable.union": {"tf": 1.4142135623730951}, "sqlglot.expressions.Unionable.intersect": {"tf": 1.4142135623730951}, "sqlglot.expressions.Unionable.except_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Join.using": {"tf": 1.4142135623730951}, "sqlglot.expressions.union": {"tf": 1.4142135623730951}, "sqlglot.expressions.intersect": {"tf": 1.4142135623730951}, "sqlglot.expressions.except_": {"tf": 1.4142135623730951}, "sqlglot.expressions.alias_": {"tf": 1.4142135623730951}, "sqlglot.expressions.replace_placeholders": {"tf": 1.4142135623730951}, "sqlglot.optimizer.lower_identities.lower_identities": {"tf": 1.4142135623730951}, "sqlglot.trie.new_trie": {"tf": 1}}, "df": 14}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.errors.ErrorLevel.IMMEDIATE": {"tf": 1}, "sqlglot.executor": {"tf": 1}, "sqlglot.expressions.Expression.find": {"tf": 1}, "sqlglot.expressions.Expression.error_messages": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1}, "sqlglot.parser.Parser.check_errors": {"tf": 1}}, "df": 8, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 2, "s": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}}}}, "/": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.optimizer.qualify_columns.Resolver.get_table": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dataframe": {"tf": 1}, "sqlglot.dialects": {"tf": 1}, "sqlglot.diff": {"tf": 2.8284271247461903}, "sqlglot.executor": {"tf": 1.7320508075688772}, "sqlglot.executor.execute": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.optimizer.scope.Scope.selects": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1.4142135623730951}, "sqlglot.planner.Scan.from_expression": {"tf": 1.4142135623730951}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1.4142135623730951}, "sqlglot.schema.MappingSchema": {"tf": 1}}, "df": 12}}}, "s": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}, "sqlglot.executor.table.Tables": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1}}, "df": 3}}}}, "k": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}, "c": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 2}}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {"sqlglot": {"tf": 6.557438524302}, "sqlglot.dataframe": {"tf": 4.58257569495584}, "sqlglot.dialects": {"tf": 2}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.diff": {"tf": 4.358898943540674}, "sqlglot.executor": {"tf": 4}, "sqlglot.executor.table.Tables": {"tf": 1}, "sqlglot.expressions.Expression.output_name": {"tf": 1}, "sqlglot.expressions.Expression.transform": {"tf": 1}, "sqlglot.expressions.Expression.replace": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.pop": {"tf": 1}, "sqlglot.expressions.Expression.assert_is": {"tf": 1.4142135623730951}, "sqlglot.expressions.Unionable.union": {"tf": 2}, "sqlglot.expressions.Unionable.intersect": {"tf": 2}, "sqlglot.expressions.Unionable.except_": {"tf": 2}, "sqlglot.expressions.Column.output_name": {"tf": 1}, "sqlglot.expressions.Delete.delete": {"tf": 1.4142135623730951}, "sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Delete.returning": {"tf": 1}, "sqlglot.expressions.Identifier.output_name": {"tf": 1}, "sqlglot.expressions.Literal.output_name": {"tf": 1}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 2}, "sqlglot.expressions.Subqueryable.with_": {"tf": 2}, "sqlglot.expressions.Union.limit": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 2.6457513110645907}, "sqlglot.expressions.Select.from_": {"tf": 2.449489742783178}, "sqlglot.expressions.Select.group_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.order_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.sort_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.cluster_by": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.limit": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.offset": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.lateral": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.join": {"tf": 2.449489742783178}, "sqlglot.expressions.Select.where": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.having": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.distinct": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.ctas": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.lock": {"tf": 2}, "sqlglot.expressions.Subquery.output_name": {"tf": 1}, "sqlglot.expressions.Star.output_name": {"tf": 1}, "sqlglot.expressions.Alias.output_name": {"tf": 1}, "sqlglot.expressions.Cast.output_name": {"tf": 1}, "sqlglot.expressions.union": {"tf": 2.23606797749979}, "sqlglot.expressions.intersect": {"tf": 2.23606797749979}, "sqlglot.expressions.except_": {"tf": 2.23606797749979}, "sqlglot.expressions.select": {"tf": 1.7320508075688772}, "sqlglot.expressions.from_": {"tf": 2.23606797749979}, "sqlglot.expressions.update": {"tf": 2}, "sqlglot.expressions.delete": {"tf": 1}, "sqlglot.expressions.condition": {"tf": 1.4142135623730951}, "sqlglot.expressions.to_interval": {"tf": 1}, "sqlglot.expressions.to_table": {"tf": 1}, "sqlglot.expressions.to_column": {"tf": 1}, "sqlglot.expressions.subquery": {"tf": 1.7320508075688772}, "sqlglot.expressions.table_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.replace_tables": {"tf": 1.7320508075688772}, "sqlglot.expressions.replace_placeholders": {"tf": 1.7320508075688772}, "sqlglot.expressions.expand": {"tf": 3.3166247903554}, "sqlglot.helper.subclasses": {"tf": 1}, "sqlglot.helper.camel_to_snake_case": {"tf": 1}, "sqlglot.helper.object_to_dict": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1.4142135623730951}, "sqlglot.helper.first": {"tf": 1}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1.4142135623730951}, "sqlglot.optimizer.eliminate_ctes.eliminate_ctes": {"tf": 2}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 2}, "sqlglot.optimizer.eliminate_joins.join_condition": {"tf": 1}, "sqlglot.optimizer.eliminate_subqueries.eliminate_subqueries": {"tf": 3}, "sqlglot.optimizer.expand_laterals.expand_laterals": {"tf": 1.4142135623730951}, "sqlglot.optimizer.expand_multi_table_selects.expand_multi_table_selects": {"tf": 2}, "sqlglot.optimizer.lower_identities.lower_identities": {"tf": 1.4142135623730951}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 2.8284271247461903}, "sqlglot.optimizer.normalize.normalize": {"tf": 1}, "sqlglot.optimizer.optimize_joins.optimize_joins": {"tf": 1.7320508075688772}, "sqlglot.optimizer.optimize_joins.normalize": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_predicates": {"tf": 2}, "sqlglot.optimizer.pushdown_predicates.pushdown_dnf": {"tf": 1}, "sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 2}, "sqlglot.optimizer.qualify_columns.qualify_columns": {"tf": 1.4142135623730951}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope": {"tf": 2.449489742783178}, "sqlglot.optimizer.scope.Scope.branch": {"tf": 1}, "sqlglot.optimizer.scope.Scope.derived_tables": {"tf": 1}, "sqlglot.optimizer.scope.Scope.subqueries": {"tf": 1}, "sqlglot.optimizer.scope.Scope.columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.selects": {"tf": 1}, "sqlglot.optimizer.scope.Scope.remove_source": {"tf": 1}, "sqlglot.optimizer.scope.Scope.traverse": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 2.23606797749979}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 2}, "sqlglot.parser.Parser": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1.7320508075688772}, "sqlglot.planner.Scan.from_expression": {"tf": 1.7320508075688772}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1.7320508075688772}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1}, "sqlglot.transforms.unalias_group": {"tf": 1.4142135623730951}, "sqlglot.transforms.remove_precision_parameterized_types": {"tf": 1}, "sqlglot.transforms.remove_target_from_merge": {"tf": 1}, "sqlglot.trie.new_trie": {"tf": 1}}, "df": 122, "s": {"docs": {"sqlglot.optimizer.pushdown_predicates.pushdown_predicates": {"tf": 1}}, "df": 1}}}, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.dialects": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 2}}}}}}}, "e": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1}, "sqlglot.expressions.Expression.transform": {"tf": 1}, "sqlglot.expressions.replace_children": {"tf": 1}}, "df": 4, "c": {"docs": {"sqlglot.expressions.Expression.error_messages": {"tf": 1}, "sqlglot.expressions.Kwarg": {"tf": 1}, "sqlglot.expressions.func": {"tf": 2}, "sqlglot.helper.while_changing": {"tf": 1}, "sqlglot.parser.Parser.validate_expression": {"tf": 1}}, "df": 5, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.executor": {"tf": 1}, "sqlglot.executor.env.null_if_any": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.expressions.Expression.transform": {"tf": 2}, "sqlglot.expressions.Expression.error_messages": {"tf": 1}, "sqlglot.expressions.Func": {"tf": 1.7320508075688772}, "sqlglot.expressions.func": {"tf": 2.23606797749979}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.helper.csv_reader": {"tf": 1}, "sqlglot.helper.count_params": {"tf": 1}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_udtf": {"tf": 1}, "sqlglot.transforms.eliminate_distinct_on": {"tf": 1}, "sqlglot.transforms.preprocess": {"tf": 1.4142135623730951}}, "df": 35, "s": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dataframe": {"tf": 2.23606797749979}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.executor.context.Context": {"tf": 1}, "sqlglot.executor.context.Context.__init__": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.expressions": {"tf": 1}, "sqlglot.expressions.Kwarg": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 1}, "sqlglot.optimizer.scope.Scope.udtfs": {"tf": 1}, "sqlglot.transforms.eliminate_distinct_on": {"tf": 1}, "sqlglot.transforms.eliminate_qualify": {"tf": 1}, "sqlglot.transforms.preprocess": {"tf": 1}}, "df": 33}, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dataframe": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.dataframe.sql.Column.cast": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 4}}}}}}}}}}}, "g": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.diff": {"tf": 1}}, "df": 2}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.executor": {"tf": 1}, "sqlglot.expressions.table_name": {"tf": 1}}, "df": 3, "y": {"docs": {"sqlglot.optimizer.qualify_columns.qualify_columns": {"tf": 1}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"tf": 1}}, "df": 2}}}, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"6": {"4": {"docs": {"sqlglot": {"tf": 1.7320508075688772}, "sqlglot.dialects": {"tf": 1.7320508075688772}}, "df": 2}, "docs": {}, "df": 0}, "docs": {"sqlglot": {"tf": 1.7320508075688772}, "sqlglot.dialects": {"tf": 1}}, "df": 2}}, "r": {"docs": {}, "df": 0, "\u00e9": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.helper.flatten": {"tf": 1.4142135623730951}}, "df": 1, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}, "s": {"docs": {"sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.helper.flatten": {"tf": 1}}, "df": 6}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.helper.flatten": {"tf": 1}}, "df": 1}}}}}}, "g": {"docs": {"sqlglot.expressions.Unionable.union": {"tf": 1}, "sqlglot.expressions.Unionable.intersect": {"tf": 1}, "sqlglot.expressions.Unionable.except_": {"tf": 1}, "sqlglot.expressions.union": {"tf": 1}, "sqlglot.expressions.intersect": {"tf": 1}, "sqlglot.expressions.except_": {"tf": 1}}, "df": 6}}, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}, "sqlglot.diff.ChangeDistiller": {"tf": 1}}, "df": 2}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot": {"tf": 2.449489742783178}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.diff": {"tf": 2}, "sqlglot.executor": {"tf": 1}, "sqlglot.expressions.Expression.replace": {"tf": 1}, "sqlglot.expressions.column_table_names": {"tf": 1}, "sqlglot.expressions.table_name": {"tf": 1}, "sqlglot.helper.subclasses": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.get_table": {"tf": 1}}, "df": 10, "/": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe": {"tf": 1}}, "df": 1}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.dataframe": {"tf": 1}}, "df": 1, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1.7320508075688772}}, "df": 3}}, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}, "e": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.parse_one": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 2.8284271247461903}, "sqlglot.errors.ErrorLevel.IMMEDIATE": {"tf": 1}, "sqlglot.executor": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.find": {"tf": 1}, "sqlglot.expressions.Expression.dfs": {"tf": 1}, "sqlglot.expressions.Expression.bfs": {"tf": 1}, "sqlglot.expressions.Expression.unnest": {"tf": 1}, "sqlglot.expressions.Subquery.unnest": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1}, "sqlglot.helper.first": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.traverse": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 1}}, "df": 15}}}, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.helper.open_file": {"tf": 1}}, "df": 2, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.transforms.eliminate_qualify": {"tf": 1}}, "df": 1, "s": {"docs": {"sqlglot.executor": {"tf": 1.4142135623730951}}, "df": 1}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.transforms.eliminate_qualify": {"tf": 1}}, "df": 1}}}}}, "l": {"docs": {"sqlglot.helper.split_num_words": {"tf": 1.4142135623730951}}, "df": 1}}, "g": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 2.23606797749979}}, "df": 1}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}, "x": {"docs": {"sqlglot.helper.while_changing": {"tf": 1}}, "df": 1}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 3.1622776601683795}, "sqlglot.dataframe": {"tf": 3.4641016151377544}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.7320508075688772}, "sqlglot.diff": {"tf": 1}, "sqlglot.diff.diff": {"tf": 2}, "sqlglot.executor": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.expressions.Delete.delete": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Delete.returning": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Join.using": {"tf": 1}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Union.limit": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.expressions.Select.limit": {"tf": 1}, "sqlglot.expressions.Select.offset": {"tf": 1}, "sqlglot.expressions.Select.select": {"tf": 1}, "sqlglot.expressions.Select.lateral": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1}, "sqlglot.expressions.Select.where": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1}, "sqlglot.expressions.Select.distinct": {"tf": 1}, "sqlglot.expressions.Select.ctas": {"tf": 1}, "sqlglot.expressions.Select.lock": {"tf": 1.4142135623730951}, "sqlglot.expressions.maybe_parse": {"tf": 1.4142135623730951}, "sqlglot.expressions.false": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1.7320508075688772}, "sqlglot.helper.split_num_words": {"tf": 1}, "sqlglot.helper.is_iterable": {"tf": 1}, "sqlglot.optimizer.normalize.normalize": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1}, "sqlglot.optimizer.simplify.remove_compliments": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1}}, "df": 78}}, "l": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1.7320508075688772}}, "df": 2, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}}, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 2}}}}}}}, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.dataframe": {"tf": 1}}, "df": 1}}}}}}, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.dataframe": {"tf": 1}}, "df": 1}}}}}}, "w": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}, "l": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe": {"tf": 2}}, "df": 1}}}}}, "l": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.expressions.Union.limit": {"tf": 1}, "sqlglot.trie.new_trie": {"tf": 1}}, "df": 3, "i": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1.7320508075688772}, "sqlglot.dataframe": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 2.23606797749979}, "sqlglot.expressions.Predicate": {"tf": 1}, "sqlglot.expressions.Tag": {"tf": 1}, "sqlglot.expressions.Kwarg": {"tf": 1}, "sqlglot.expressions.to_interval": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_cnf": {"tf": 1}}, "df": 9}}, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot": {"tf": 1.4142135623730951}}, "df": 1}, "e": {"docs": {"sqlglot": {"tf": 2}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}}, "df": 22, "s": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}}, "df": 22}, "/": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}}, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.lineage.lineage": {"tf": 2}}, "df": 1}}}}, "k": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 1}, "sqlglot.executor.python.PythonExecutor.generate": {"tf": 1}, "sqlglot.expressions.Expression.is_string": {"tf": 1}, "sqlglot.expressions.Expression.is_number": {"tf": 1}, "sqlglot.expressions.Expression.is_int": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1}, "sqlglot.helper.apply_index_offset": {"tf": 1}}, "df": 8, "s": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.expressions.Expression.text": {"tf": 1}}, "df": 2}}}}}, "t": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 2}, "sqlglot.executor": {"tf": 1}}, "df": 2, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dataframe": {"tf": 1.7320508075688772}}, "df": 1}}}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.transpile": {"tf": 1.7320508075688772}, "sqlglot.dataframe": {"tf": 1.7320508075688772}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.diff.diff": {"tf": 2.23606797749979}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.expressions.Expression.append": {"tf": 2}, "sqlglot.expressions.Expression.iter_expressions": {"tf": 1}, "sqlglot.expressions.Expression.error_messages": {"tf": 1}, "sqlglot.expressions.Join.using": {"tf": 1}, "sqlglot.expressions.Func": {"tf": 1.7320508075688772}, "sqlglot.expressions.alias_": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1}, "sqlglot.expressions.column_table_names": {"tf": 1.4142135623730951}, "sqlglot.helper.ensure_list": {"tf": 2}, "sqlglot.helper.ensure_collection": {"tf": 1.4142135623730951}, "sqlglot.helper.subclasses": {"tf": 1}, "sqlglot.helper.apply_index_offset": {"tf": 1.4142135623730951}, "sqlglot.helper.tsort": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1.4142135623730951}, "sqlglot.helper.flatten": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope": {"tf": 3}, "sqlglot.optimizer.scope.Scope.tables": {"tf": 1}, "sqlglot.optimizer.scope.Scope.ctes": {"tf": 1}, "sqlglot.optimizer.scope.Scope.derived_tables": {"tf": 1}, "sqlglot.optimizer.scope.Scope.udtfs": {"tf": 1}, "sqlglot.optimizer.scope.Scope.subqueries": {"tf": 1}, "sqlglot.optimizer.scope.Scope.columns": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1.7320508075688772}, "sqlglot.parser.Parser": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser.parse": {"tf": 2}, "sqlglot.parser.Parser.parse_into": {"tf": 2}, "sqlglot.parser.Parser.raise_error": {"tf": 1}, "sqlglot.parser.Parser.expression": {"tf": 1}, "sqlglot.parser.Parser.validate_expression": {"tf": 1}, "sqlglot.schema.Schema.column_names": {"tf": 1}, "sqlglot.schema.MappingSchema.column_names": {"tf": 1}, "sqlglot.tokens.Tokenizer.tokenize": {"tf": 1}}, "df": 56, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}, "[": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.optimizer.eliminate_joins.join_condition": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 1}}, "df": 2}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.scope.Scope": {"tf": 2.449489742783178}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}}, "df": 2}}}}}, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.optimizer.scope.Scope.tables": {"tf": 1}, "sqlglot.optimizer.scope.Scope.ctes": {"tf": 1}, "sqlglot.optimizer.scope.Scope.derived_tables": {"tf": 1}, "sqlglot.optimizer.scope.Scope.udtfs": {"tf": 1}, "sqlglot.optimizer.scope.Scope.subqueries": {"tf": 1}, "sqlglot.optimizer.scope.Scope.columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.selects": {"tf": 1}, "sqlglot.optimizer.scope.Scope.external_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.unqualified_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.join_hints": {"tf": 1}, "sqlglot.optimizer.scope.Scope.source_columns": {"tf": 1}}, "df": 11}}}}}}, "b": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1}}, "df": 3}}}}}, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.expressions.Expression.error_messages": {"tf": 1}, "sqlglot.expressions.Union.limit": {"tf": 2.23606797749979}, "sqlglot.expressions.Select.limit": {"tf": 2.23606797749979}}, "df": 4, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.Union.limit": {"tf": 1}}, "df": 1}}}}}, "g": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}}}}}, "o": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dataframe": {"tf": 1}}, "df": 2, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}, "k": {"docs": {"sqlglot.expressions.Select.lock": {"tf": 1.4142135623730951}}, "df": 1, "e": {"docs": {"sqlglot.dataframe": {"tf": 1.7320508075688772}}, "df": 1}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.expressions.Select.lock": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}}, "df": 1}}}}}, "g": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.errors.ErrorLevel.WARN": {"tf": 1}}, "df": 2, "i": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot.dialects": {"tf": 1}}, "df": 1, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.executor": {"tf": 2.23606797749979}, "sqlglot.expressions.condition": {"tf": 1.4142135623730951}, "sqlglot.expressions.and_": {"tf": 1}, "sqlglot.expressions.or_": {"tf": 1}}, "df": 4}}}}, "s": {"docs": {"sqlglot.parser.Parser.check_errors": {"tf": 1}}, "df": 1}}, "w": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.executor.python.Python.Generator": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator": {"tf": 1.4142135623730951}, "sqlglot.optimizer.lower_identities.lower_identities": {"tf": 1.7320508075688772}}, "df": 22}}}, "t": {"docs": {"sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1}, "sqlglot.diff": {"tf": 2}, "sqlglot.executor": {"tf": 1}}, "df": 3}, "o": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}}, "s": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}, "u": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.executor.table.Tables": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1}}, "df": 2}}}, "p": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}, "a": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.Expression.load": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver": {"tf": 1}, "sqlglot.serde.load": {"tf": 1}}, "df": 3}}}, "e": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot": {"tf": 1}}, "df": 1, "s": {"docs": {"sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1}}, "df": 2}, "\u2019": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}}, "f": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.join": {"tf": 1.4142135623730951}, "sqlglot.expressions.union": {"tf": 1.4142135623730951}, "sqlglot.expressions.intersect": {"tf": 1.4142135623730951}, "sqlglot.expressions.except_": {"tf": 1.4142135623730951}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 1.4142135623730951}}, "df": 10}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.transpile": {"tf": 1.4142135623730951}, "sqlglot.dataframe.sql.DataFrame.persist": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1.7320508075688772}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.executor.python.Python.Generator": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser": {"tf": 1.7320508075688772}, "sqlglot.parser.Parser.check_errors": {"tf": 1}, "sqlglot.parser.Parser.raise_error": {"tf": 1}}, "df": 45}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1, "s": {"docs": {"sqlglot.executor": {"tf": 1}, "sqlglot.generator.Generator.generate": {"tf": 1}}, "df": 2}}}}}}}, "a": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.executor.python.Python.Generator": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator": {"tf": 1.4142135623730951}}, "df": 21}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1.7320508075688772}}, "df": 1, "s": {"docs": {"sqlglot.diff": {"tf": 5.196152422706632}}, "df": 1}}}, "f": {"docs": {"sqlglot.diff": {"tf": 6.324555320336759}, "sqlglot.expressions.Expression.text": {"tf": 1}}, "df": 2}, "r": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.Expression.find": {"tf": 1}, "sqlglot.expressions.Expression.find_all": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1}}, "df": 4}}}, "n": {"docs": {"sqlglot.diff": {"tf": 3.1622776601683795}, "sqlglot.expressions.Func": {"tf": 1}}, "df": 2, "g": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1.4142135623730951}, "sqlglot.expressions.Func": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1.4142135623730951}}, "df": 24}}}}, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}, "s": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}, "x": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}, "a": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1, "m": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dialects": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.expressions.replace_children": {"tf": 1}}, "df": 4}}}}, "c": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.diff": {"tf": 1}}, "df": 2, "s": {"docs": {"sqlglot.dataframe": {"tf": 1}}, "df": 1}}}, "r": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1}}, "df": 43, "r": {"docs": {"sqlglot.expressions.condition": {"tf": 1}}, "df": 1}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.executor": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.expressions.Func": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1}}, "df": 42}}, "b": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.executor": {"tf": 1}, "sqlglot.schema.MappingSchema": {"tf": 1}}, "df": 2, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.expressions.Select.lateral": {"tf": 1.7320508075688772}, "sqlglot.optimizer.expand_laterals.expand_laterals": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 1.7320508075688772}, "sqlglot.transforms.unnest_to_explode": {"tf": 1}}, "df": 4, "s": {"docs": {"sqlglot.optimizer.expand_laterals.expand_laterals": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 1}}, "df": 2}}}}}}, "y": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}, "z": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.optimizer.qualify_columns.Resolver": {"tf": 1}}, "df": 1}}}}, "w": {"docs": {"sqlglot.optimizer.simplify.simplify_not": {"tf": 1}}, "df": 1}}, "t": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dataframe": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.where": {"tf": 1.4142135623730951}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}, "sqlglot.optimizer.scope.Scope.derived_tables": {"tf": 1}, "sqlglot.optimizer.scope.Scope.subqueries": {"tf": 1}, "sqlglot.optimizer.simplify.rewrite_between": {"tf": 1}}, "df": 9, "/": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.simplify.rewrite_between": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe": {"tf": 2.23606797749979}}, "df": 1}}}}, "c": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 2}}, "df": 1}}, "l": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}, "r": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1}}, "df": 2, "e": {"docs": {"sqlglot.dialects": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 1}}, "df": 3, "a": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot": {"tf": 2.6457513110645907}, "sqlglot.parse": {"tf": 1}, "sqlglot.parse_one": {"tf": 1}, "sqlglot.transpile": {"tf": 1}, "sqlglot.dataframe": {"tf": 1}, "sqlglot.executor.execute": {"tf": 1}, "sqlglot.expressions.Select.lock": {"tf": 1}, "sqlglot.helper.csv_reader": {"tf": 1.4142135623730951}}, "df": 8, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.dataframe": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.helper.csv_reader": {"tf": 1.4142135623730951}}, "df": 1}}, "c": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "v": {"docs": {"sqlglot.helper.csv_reader": {"tf": 1}}, "df": 1}}}}, "l": {"docs": {"sqlglot": {"tf": 1.7320508075688772}}, "df": 1, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}, "d": {"docs": {"sqlglot.helper.while_changing": {"tf": 1}}, "df": 1}}}}, "s": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1, "s": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 2}}}}}, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.schema.Schema.add_table": {"tf": 1}}, "df": 4, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}}}, "d": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.executor.env.null_if_any": {"tf": 1.4142135623730951}, "sqlglot.expressions.values": {"tf": 1}}, "df": 4}, "s": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1}}, "df": 2}}}}}}, "f": {"docs": {"sqlglot.dataframe.sql.DataFrame.persist": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.diff.diff": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.transforms.eliminate_qualify": {"tf": 1.4142135623730951}}, "df": 4, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.optimizer.scope.Scope.columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.external_columns": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.join_hints": {"tf": 1}, "sqlglot.optimizer.scope.Scope.source_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.ref_count": {"tf": 1}}, "df": 6, "s": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.diff.diff": {"tf": 1}, "sqlglot.executor.context.Context": {"tf": 1.4142135623730951}, "sqlglot.optimizer.expand_laterals.expand_laterals": {"tf": 1}, "sqlglot.optimizer.optimize_joins.reorder_joins": {"tf": 1}, "sqlglot.transforms.unalias_group": {"tf": 1}}, "df": 7}, "d": {"docs": {"sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.diff.diff": {"tf": 1}, "sqlglot.expressions.column_table_names": {"tf": 1}, "sqlglot.expressions.expand": {"tf": 1}, "sqlglot.optimizer.scope.Scope.join_hints": {"tf": 1}, "sqlglot.optimizer.scope.Scope.ref_count": {"tf": 1}, "sqlglot.transforms.eliminate_qualify": {"tf": 1}}, "df": 7}, "/": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.transforms.eliminate_qualify": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}}}}}}, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}, "s": {"docs": {"sqlglot.transforms.remove_target_from_merge": {"tf": 1}}, "df": 1}}, "c": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1.4142135623730951}}, "df": 4, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.expressions.Expression.transform": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 1}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}, "sqlglot.serde.dump": {"tf": 1}, "sqlglot.serde.load": {"tf": 1}}, "df": 6}}}}}}}}, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.diff": {"tf": 1}}, "df": 2}}}}}}}, "r": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.parser.Parser.raise_error": {"tf": 1}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Expression": {"tf": 1}}, "df": 1}}}}}, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.dataframe": {"tf": 1}, "sqlglot.dialects.dialect.format_time_lambda": {"tf": 1}, "sqlglot.diff": {"tf": 2.23606797749979}, "sqlglot.executor.env.null_if_any": {"tf": 1}, "sqlglot.executor.table.Tables": {"tf": 1.4142135623730951}, "sqlglot.expressions.Column.parts": {"tf": 1}, "sqlglot.expressions.column_table_names": {"tf": 1}, "sqlglot.helper.open_file": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1.4142135623730951}}, "df": 11, "s": {"docs": {"sqlglot.parse": {"tf": 1}, "sqlglot.parse_one": {"tf": 1.4142135623730951}, "sqlglot.transpile": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.format_time_lambda": {"tf": 1}, "sqlglot.diff.diff": {"tf": 1.4142135623730951}, "sqlglot.executor.execute": {"tf": 1}, "sqlglot.expressions.Expression.text": {"tf": 1}, "sqlglot.expressions.Expression.alias": {"tf": 1}, "sqlglot.expressions.Expression.copy": {"tf": 1}, "sqlglot.expressions.Expression.depth": {"tf": 1}, "sqlglot.expressions.Expression.find": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.find_all": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.find_ancestor": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.parent_select": {"tf": 1}, "sqlglot.expressions.Expression.same_parent": {"tf": 1}, "sqlglot.expressions.Expression.root": {"tf": 1}, "sqlglot.expressions.Expression.walk": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.dfs": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.bfs": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.unnest": {"tf": 1}, "sqlglot.expressions.Expression.unalias": {"tf": 1}, "sqlglot.expressions.Expression.unnest_operands": {"tf": 1}, "sqlglot.expressions.Expression.flatten": {"tf": 1}, "sqlglot.expressions.Expression.sql": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.transform": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.replace": {"tf": 1}, "sqlglot.expressions.Expression.pop": {"tf": 1}, "sqlglot.expressions.Expression.assert_is": {"tf": 1}, "sqlglot.expressions.Expression.error_messages": {"tf": 1}, "sqlglot.expressions.Condition.and_": {"tf": 1}, "sqlglot.expressions.Condition.or_": {"tf": 1}, "sqlglot.expressions.Condition.not_": {"tf": 1}, "sqlglot.expressions.Unionable.union": {"tf": 1}, "sqlglot.expressions.Unionable.intersect": {"tf": 1}, "sqlglot.expressions.Unionable.except_": {"tf": 1}, "sqlglot.expressions.Delete.delete": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Delete.returning": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Join.using": {"tf": 1}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1}, "sqlglot.expressions.Union.limit": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.expressions.Select.limit": {"tf": 1}, "sqlglot.expressions.Select.offset": {"tf": 1}, "sqlglot.expressions.Select.select": {"tf": 1}, "sqlglot.expressions.Select.lateral": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1}, "sqlglot.expressions.Select.where": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1}, "sqlglot.expressions.Select.distinct": {"tf": 1}, "sqlglot.expressions.Select.ctas": {"tf": 1}, "sqlglot.expressions.Select.lock": {"tf": 1}, "sqlglot.expressions.Subquery.unnest": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1}, "sqlglot.expressions.union": {"tf": 1}, "sqlglot.expressions.intersect": {"tf": 1}, "sqlglot.expressions.except_": {"tf": 1}, "sqlglot.expressions.select": {"tf": 1}, "sqlglot.expressions.from_": {"tf": 1}, "sqlglot.expressions.update": {"tf": 1}, "sqlglot.expressions.delete": {"tf": 1}, "sqlglot.expressions.condition": {"tf": 1}, "sqlglot.expressions.and_": {"tf": 1}, "sqlglot.expressions.or_": {"tf": 1}, "sqlglot.expressions.not_": {"tf": 1}, "sqlglot.expressions.to_identifier": {"tf": 1}, "sqlglot.expressions.to_table": {"tf": 1}, "sqlglot.expressions.to_column": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1}, "sqlglot.expressions.subquery": {"tf": 1}, "sqlglot.expressions.column": {"tf": 1}, "sqlglot.expressions.cast": {"tf": 1}, "sqlglot.expressions.table_": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1}, "sqlglot.expressions.var": {"tf": 1}, "sqlglot.expressions.rename_table": {"tf": 1}, "sqlglot.expressions.convert": {"tf": 1}, "sqlglot.expressions.column_table_names": {"tf": 1}, "sqlglot.expressions.table_name": {"tf": 1}, "sqlglot.expressions.replace_tables": {"tf": 1}, "sqlglot.expressions.replace_placeholders": {"tf": 1}, "sqlglot.expressions.expand": {"tf": 1}, "sqlglot.expressions.func": {"tf": 1.4142135623730951}, "sqlglot.expressions.true": {"tf": 1}, "sqlglot.expressions.false": {"tf": 1}, "sqlglot.expressions.null": {"tf": 1}, "sqlglot.generator.Generator.generate": {"tf": 1}, "sqlglot.helper.seq_get": {"tf": 1}, "sqlglot.helper.ensure_list": {"tf": 1}, "sqlglot.helper.ensure_collection": {"tf": 1}, "sqlglot.helper.csv": {"tf": 1}, "sqlglot.helper.subclasses": {"tf": 1.4142135623730951}, "sqlglot.helper.apply_index_offset": {"tf": 1}, "sqlglot.helper.camel_to_snake_case": {"tf": 1}, "sqlglot.helper.while_changing": {"tf": 1}, "sqlglot.helper.tsort": {"tf": 1}, "sqlglot.helper.csv_reader": {"tf": 1}, "sqlglot.helper.find_new_name": {"tf": 1}, "sqlglot.helper.object_to_dict": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1}, "sqlglot.helper.is_iterable": {"tf": 1}, "sqlglot.helper.count_params": {"tf": 1}, "sqlglot.helper.dict_depth": {"tf": 1}, "sqlglot.helper.first": {"tf": 1}, "sqlglot.helper.should_identify": {"tf": 1.4142135623730951}, "sqlglot.lineage.lineage": {"tf": 1}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}, "sqlglot.optimizer.eliminate_ctes.eliminate_ctes": {"tf": 1}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 1}, "sqlglot.optimizer.eliminate_joins.join_condition": {"tf": 1}, "sqlglot.optimizer.eliminate_subqueries.eliminate_subqueries": {"tf": 1}, "sqlglot.optimizer.expand_laterals.expand_laterals": {"tf": 1}, "sqlglot.optimizer.lower_identities.lower_identities": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1}, "sqlglot.optimizer.normalize.normalize": {"tf": 1}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_predicates": {"tf": 1}, "sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 1}, "sqlglot.optimizer.qualify_columns.qualify_columns": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.get_table": {"tf": 1}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1}, "sqlglot.optimizer.scope.Scope.tables": {"tf": 1}, "sqlglot.optimizer.scope.Scope.ctes": {"tf": 1}, "sqlglot.optimizer.scope.Scope.derived_tables": {"tf": 1}, "sqlglot.optimizer.scope.Scope.udtfs": {"tf": 1}, "sqlglot.optimizer.scope.Scope.subqueries": {"tf": 1}, "sqlglot.optimizer.scope.Scope.columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 1}, "sqlglot.optimizer.scope.Scope.cte_sources": {"tf": 1}, "sqlglot.optimizer.scope.Scope.selects": {"tf": 1}, "sqlglot.optimizer.scope.Scope.external_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.unqualified_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.join_hints": {"tf": 1}, "sqlglot.optimizer.scope.Scope.source_columns": {"tf": 1}, "sqlglot.optimizer.scope.Scope.ref_count": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.build_scope": {"tf": 1}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1}, "sqlglot.optimizer.simplify.simplify": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 1}, "sqlglot.parser.Parser.parse": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser.parse_into": {"tf": 1}, "sqlglot.parser.Parser.expression": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}, "sqlglot.schema.Schema.column_names": {"tf": 1}, "sqlglot.schema.Schema.get_column_type": {"tf": 1}, "sqlglot.schema.MappingSchema.column_names": {"tf": 1}, "sqlglot.schema.MappingSchema.get_column_type": {"tf": 1}, "sqlglot.time.format_time": {"tf": 1}, "sqlglot.tokens.Token.number": {"tf": 1}, "sqlglot.tokens.Token.string": {"tf": 1}, "sqlglot.tokens.Token.identifier": {"tf": 1}, "sqlglot.tokens.Token.var": {"tf": 1}, "sqlglot.tokens.Token.start": {"tf": 1}, "sqlglot.tokens.Tokenizer.tokenize": {"tf": 1}, "sqlglot.transforms.unalias_group": {"tf": 1}, "sqlglot.transforms.eliminate_distinct_on": {"tf": 1}, "sqlglot.transforms.preprocess": {"tf": 1}, "sqlglot.trie.new_trie": {"tf": 1}, "sqlglot.trie.in_trie": {"tf": 1}}, "df": 172}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.transpile": {"tf": 1}, "sqlglot.dataframe": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.expressions.Expression.output_name": {"tf": 1}, "sqlglot.expressions.Expression.load": {"tf": 1}, "sqlglot.expressions.Column.output_name": {"tf": 1}, "sqlglot.expressions.Identifier.output_name": {"tf": 1}, "sqlglot.expressions.Literal.output_name": {"tf": 1}, "sqlglot.expressions.Subquery.output_name": {"tf": 1}, "sqlglot.expressions.Star.output_name": {"tf": 1}, "sqlglot.expressions.Alias.output_name": {"tf": 1}, "sqlglot.expressions.Cast.output_name": {"tf": 1}, "sqlglot.expressions.to_table": {"tf": 1}, "sqlglot.expressions.to_column": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.helper.subclasses": {"tf": 1}, "sqlglot.helper.apply_index_offset": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1}, "sqlglot.serde.load": {"tf": 1}}, "df": 38}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.expressions.Delete.returning": {"tf": 1.7320508075688772}, "sqlglot.expressions.delete": {"tf": 1.4142135623730951}}, "df": 2}}}}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}}}, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.expressions.Expression": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.Expression.this": {"tf": 1}, "sqlglot.expressions.Expression.expression": {"tf": 1}, "sqlglot.expressions.Expression.expressions": {"tf": 1}}, "df": 3}}}}}}}, "w": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.optimizer.eliminate_subqueries.eliminate_subqueries": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1}, "sqlglot.optimizer.normalize.normalize": {"tf": 1.4142135623730951}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_predicates": {"tf": 1}, "sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 1}, "sqlglot.optimizer.qualify_columns.qualify_columns": {"tf": 1}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"tf": 1}, "sqlglot.optimizer.simplify.simplify": {"tf": 1}, "sqlglot.optimizer.simplify.rewrite_between": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 1}}, "df": 12}}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 2}}}}}}}, "p": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.expressions.var": {"tf": 1.4142135623730951}}, "df": 2, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.expressions": {"tf": 1}, "sqlglot.trie.new_trie": {"tf": 1}}, "df": 3}}, "s": {"docs": {"sqlglot.transpile": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 1.7320508075688772}, "sqlglot.diff.diff": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}}, "df": 25}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.text": {"tf": 1}, "sqlglot.expressions.Expression.sql": {"tf": 1}}, "df": 4, "s": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.executor.context.Context.__init__": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.schema.Schema.add_table": {"tf": 1}, "sqlglot.schema.MappingSchema.add_table": {"tf": 1}}, "df": 4}}}}}}}}}, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.executor": {"tf": 1}, "sqlglot.expressions.Expression.replace": {"tf": 1}, "sqlglot.expressions.Delete.delete": {"tf": 1}, "sqlglot.expressions.replace_children": {"tf": 1}, "sqlglot.expressions.replace_tables": {"tf": 1.4142135623730951}, "sqlglot.expressions.replace_placeholders": {"tf": 1.4142135623730951}, "sqlglot.optimizer.expand_multi_table_selects.expand_multi_table_selects": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_cnf": {"tf": 1}, "sqlglot.optimizer.scope.Scope.replace": {"tf": 1.4142135623730951}, "sqlglot.transforms.unalias_group": {"tf": 1}}, "df": 11, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1.4142135623730951}}, "df": 2}}}}, "d": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.expressions.replace_tables": {"tf": 1}, "sqlglot.expressions.replace_placeholders": {"tf": 1}}, "df": 3}}}}, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.Column.cast": {"tf": 1}}, "df": 1}}}}}}}, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.with_properties": {"tf": 1}, "sqlglot.diff": {"tf": 3.1622776601683795}, "sqlglot.diff.diff": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.pop": {"tf": 1}, "sqlglot.optimizer.eliminate_ctes.eliminate_ctes": {"tf": 1}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 1}, "sqlglot.optimizer.optimize_joins.normalize": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_dnf": {"tf": 1}, "sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.Scope.remove_source": {"tf": 1}, "sqlglot.transforms.remove_target_from_merge": {"tf": 1}}, "df": 13, "d": {"docs": {"sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1}, "sqlglot.diff": {"tf": 2}, "sqlglot.diff.Remove": {"tf": 1}, "sqlglot.expressions.Expression.transform": {"tf": 1}}, "df": 4}, "s": {"docs": {"sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 1}, "sqlglot.optimizer.optimize_joins.optimize_joins": {"tf": 1}, "sqlglot.transforms.remove_precision_parameterized_types": {"tf": 1}}, "df": 3}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.optimizer.simplify.remove_compliments": {"tf": 1}}, "df": 1}}}}}, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.diff": {"tf": 2}, "sqlglot.optimizer.eliminate_joins.join_condition": {"tf": 1}}, "df": 2}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.scope.Scope": {"tf": 1}}, "df": 1, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}}, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.Predicate": {"tf": 1}}, "df": 1}}}}}}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dataframe": {"tf": 1}}, "df": 1}}}}, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1}, "sqlglot.executor.context.Context": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1}}, "df": 43}}}}}, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.optimizer.canonicalize.canonicalize": {"tf": 1}}, "df": 2}, "d": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}, "y": {"docs": {"sqlglot.optimizer.canonicalize.canonicalize": {"tf": 1}}, "df": 1}}, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe": {"tf": 2}, "sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.expressions.replace_children": {"tf": 1}, "sqlglot.helper.camel_to_snake_case": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1.4142135623730951}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}}, "df": 10, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.parse": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.schema.Schema.get_column_type": {"tf": 1}, "sqlglot.schema.MappingSchema.get_column_type": {"tf": 1}, "sqlglot.transforms.preprocess": {"tf": 1}}, "df": 5}}}, "s": {"docs": {"sqlglot.dataframe": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.diff.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 4}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}, "t": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}}, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}, "sqlglot.parser.Parser.expression": {"tf": 1}}, "df": 2, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.helper.count_params": {"tf": 1}}, "df": 1}}}}}, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}}}, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}, "t": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Join.using": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 1}, "sqlglot.expressions.Select.select": {"tf": 1}, "sqlglot.expressions.Select.lateral": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1}, "sqlglot.expressions.Select.where": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1}}, "df": 10}}}, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.optimizer.qualify_columns.Resolver": {"tf": 1}}, "df": 1}}}, "e": {"docs": {"sqlglot.optimizer.qualify_columns.Resolver.get_source_columns": {"tf": 1}}, "df": 1}}}}}, "g": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.executor.execute": {"tf": 1}, "sqlglot.schema.Schema.add_table": {"tf": 1}, "sqlglot.schema.MappingSchema.add_table": {"tf": 1}}, "df": 4, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.dataframe": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.helper.flatten": {"tf": 1}}, "df": 1}}}}}}, "y": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dataframe": {"tf": 1.7320508075688772}}, "df": 1}}}, "d": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.redshift.Redshift.Generator.with_properties": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.renametable_sql": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1.4142135623730951}}, "df": 3}}}}}, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.dialects.redshift.Redshift.Generator.renametable_sql": {"tf": 1}}, "df": 1}}}, "e": {"docs": {"sqlglot.expressions.rename_table": {"tf": 1}, "sqlglot.optimizer.scope.Scope.rename_source": {"tf": 1}}, "df": 2}}}}, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.optimizer.optimize_joins.optimize_joins": {"tf": 1}, "sqlglot.optimizer.optimize_joins.reorder_joins": {"tf": 1}}, "df": 2, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}}}}, "o": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}}, "w": {"docs": {"sqlglot.dataframe": {"tf": 2.449489742783178}, "sqlglot.executor.context.Context": {"tf": 1}}, "df": 2, "s": {"docs": {"sqlglot.executor": {"tf": 1}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 1}}, "df": 2}}, "o": {"docs": {}, "df": 0, "m": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}, "t": {"docs": {"sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.expressions.Expression.root": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 1}, "sqlglot.optimizer.scope.Scope.is_root": {"tf": 1}, "sqlglot.optimizer.scope.build_scope": {"tf": 1}}, "df": 5}}, "u": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.errors.ErrorLevel.RAISE": {"tf": 1}, "sqlglot.errors.ErrorLevel.IMMEDIATE": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.optimizer.qualify_columns.validate_qualify_columns": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1.4142135623730951}}, "df": 44, "s": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.expressions.Expression.assert_is": {"tf": 1}, "sqlglot.expressions.convert": {"tf": 1}, "sqlglot.parser.Parser.check_errors": {"tf": 1}, "sqlglot.parser.Parser.raise_error": {"tf": 1}}, "df": 5}, "d": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1}}, "df": 40}}}}, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.executor.context.Context": {"tf": 1}}, "df": 2}}, "k": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}}}, "d": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "o": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}, "e": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}, "j": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}, "w": {"docs": {"sqlglot.executor": {"tf": 1}, "sqlglot.parser.Parser.parse": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 1}}, "df": 3}}, "u": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot": {"tf": 1.7320508075688772}, "sqlglot.dataframe": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1}, "sqlglot.executor": {"tf": 2.23606797749979}, "sqlglot.executor.execute": {"tf": 1}, "sqlglot.optimizer.expand_laterals.expand_laterals": {"tf": 1}}, "df": 6, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.executor": {"tf": 1.7320508075688772}}, "df": 2}}}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1}, "sqlglot.diff": {"tf": 2.449489742783178}}, "df": 3}}}}, "s": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 1, "s": {"docs": {"sqlglot.executor": {"tf": 2.23606797749979}, "sqlglot.lineage.lineage": {"tf": 1.4142135623730951}, "sqlglot.optimizer.optimizer.optimize": {"tf": 2}}, "df": 3}}}}, "d": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.dataframe": {"tf": 1}}, "df": 1}}, "\u00e9": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.expressions.union": {"tf": 1.4142135623730951}, "sqlglot.expressions.intersect": {"tf": 1.4142135623730951}, "sqlglot.expressions.except_": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope": {"tf": 1}}, "df": 4}}}}}, "w": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "t": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}}, "df": 21}}, "o": {"docs": {}, "df": 0, "m": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}, "t": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot": {"tf": 2.6457513110645907}, "sqlglot.transpile": {"tf": 1}, "sqlglot.dataframe": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.dialects": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator.with_properties": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 4.58257569495584}, "sqlglot.executor": {"tf": 3.4641016151377544}, "sqlglot.executor.context.Context": {"tf": 1}, "sqlglot.executor.env.null_if_any": {"tf": 1}, "sqlglot.executor.table.Tables": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.this": {"tf": 1}, "sqlglot.expressions.Expression.expression": {"tf": 1}, "sqlglot.expressions.Expression.expressions": {"tf": 1}, "sqlglot.expressions.Expression.replace": {"tf": 1}, "sqlglot.expressions.Condition.and_": {"tf": 1}, "sqlglot.expressions.Condition.or_": {"tf": 1}, "sqlglot.expressions.Condition.not_": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.where": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1}, "sqlglot.expressions.Dot.build": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1}, "sqlglot.expressions.and_": {"tf": 1}, "sqlglot.expressions.or_": {"tf": 1}, "sqlglot.expressions.not_": {"tf": 1}, "sqlglot.expressions.subquery": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1}, "sqlglot.expressions.replace_children": {"tf": 1}, "sqlglot.helper.apply_index_offset": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}, "sqlglot.optimizer.eliminate_ctes.eliminate_ctes": {"tf": 1}, "sqlglot.optimizer.eliminate_subqueries.eliminate_subqueries": {"tf": 1.4142135623730951}, "sqlglot.optimizer.expand_multi_table_selects.expand_multi_table_selects": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.optimizer.scope.Scope.replace": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 1}, "sqlglot.parser.Parser.expression": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1}, "sqlglot.tokens.Token.number": {"tf": 1}, "sqlglot.tokens.Token.string": {"tf": 1}, "sqlglot.tokens.Token.identifier": {"tf": 1}, "sqlglot.tokens.Token.var": {"tf": 1}, "sqlglot.transforms.eliminate_distinct_on": {"tf": 1}}, "df": 48, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.transform": {"tf": 1}, "sqlglot.helper.count_params": {"tf": 1}}, "df": 6}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.diff.Move": {"tf": 1}, "sqlglot.executor.context.Context.__init__": {"tf": 1}, "sqlglot.optimizer.scope.Scope.join_hints": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}}, "df": 5}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.transpile": {"tf": 1}, "sqlglot.dataframe": {"tf": 2}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1.4142135623730951}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1.7320508075688772}, "sqlglot.executor.python.Python.Generator": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.walk": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.transform": {"tf": 1}, "sqlglot.expressions.Condition.and_": {"tf": 1}, "sqlglot.expressions.Condition.or_": {"tf": 1}, "sqlglot.expressions.Unionable.union": {"tf": 1}, "sqlglot.expressions.Unionable.intersect": {"tf": 1}, "sqlglot.expressions.Unionable.except_": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Delete.returning": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Join.using": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1}, "sqlglot.expressions.Union.limit": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.expressions.Select.limit": {"tf": 1}, "sqlglot.expressions.Select.offset": {"tf": 1}, "sqlglot.expressions.Select.select": {"tf": 1}, "sqlglot.expressions.Select.lateral": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.where": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1}, "sqlglot.expressions.Select.ctas": {"tf": 1}, "sqlglot.expressions.Select.lock": {"tf": 1.4142135623730951}, "sqlglot.expressions.Func": {"tf": 1.4142135623730951}, "sqlglot.expressions.union": {"tf": 1.4142135623730951}, "sqlglot.expressions.intersect": {"tf": 1.4142135623730951}, "sqlglot.expressions.except_": {"tf": 1.4142135623730951}, "sqlglot.expressions.values": {"tf": 1.4142135623730951}, "sqlglot.expressions.var": {"tf": 1}, "sqlglot.expressions.replace_placeholders": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator": {"tf": 1.4142135623730951}, "sqlglot.helper.apply_index_offset": {"tf": 1.4142135623730951}, "sqlglot.lineage.lineage": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope": {"tf": 1}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser.parse_into": {"tf": 1}, "sqlglot.schema.MappingSchema": {"tf": 1}, "sqlglot.transforms.unalias_group": {"tf": 1}, "sqlglot.transforms.eliminate_distinct_on": {"tf": 1}, "sqlglot.transforms.preprocess": {"tf": 1}}, "df": 74}}, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.transforms.eliminate_distinct_on": {"tf": 1.4142135623730951}, "sqlglot.transforms.eliminate_qualify": {"tf": 1}}, "df": 3}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dialects": {"tf": 1}, "sqlglot.diff": {"tf": 2.8284271247461903}, "sqlglot.executor": {"tf": 1}, "sqlglot.executor.context.Context": {"tf": 1}}, "df": 5}}, "c": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.transpile": {"tf": 1}, "sqlglot.dataframe": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 2.23606797749979}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 2.23606797749979}, "sqlglot.diff": {"tf": 4}, "sqlglot.diff.diff": {"tf": 1.4142135623730951}, "sqlglot.diff.ChangeDistiller": {"tf": 1}, "sqlglot.executor": {"tf": 1.7320508075688772}, "sqlglot.executor.context.Context": {"tf": 1}, "sqlglot.executor.env.null_if_any": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 2.23606797749979}, "sqlglot.expressions": {"tf": 1}, "sqlglot.expressions.Expression.find": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.find_all": {"tf": 1}, "sqlglot.expressions.Expression.walk": {"tf": 1}, "sqlglot.expressions.Expression.dfs": {"tf": 1}, "sqlglot.expressions.Expression.bfs": {"tf": 1}, "sqlglot.expressions.Expression.flatten": {"tf": 1}, "sqlglot.expressions.Expression.transform": {"tf": 1}, "sqlglot.expressions.Delete.delete": {"tf": 1}, "sqlglot.expressions.update": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 2.23606797749979}, "sqlglot.generator.Generator.generate": {"tf": 1}, "sqlglot.lineage.lineage": {"tf": 1}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 1}, "sqlglot.schema.MappingSchema": {"tf": 1}, "sqlglot.trie.new_trie": {"tf": 1}}, "df": 51}}, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 3}, "sqlglot.dataframe": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 2}, "sqlglot.executor": {"tf": 3}, "sqlglot.expressions.Delete.where": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.where": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.lock": {"tf": 2}, "sqlglot.expressions.update": {"tf": 2}, "sqlglot.expressions.delete": {"tf": 2}, "sqlglot.expressions.condition": {"tf": 2.449489742783178}, "sqlglot.expressions.replace_placeholders": {"tf": 1.4142135623730951}, "sqlglot.helper.AutoName": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_predicates": {"tf": 1.7320508075688772}, "sqlglot.optimizer.scope.Scope.subqueries": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 2}, "sqlglot.transforms.eliminate_qualify": {"tf": 1.4142135623730951}, "sqlglot.trie.in_trie": {"tf": 1.4142135623730951}}, "df": 20}}, "n": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.dataframe": {"tf": 1.7320508075688772}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.renametable_sql": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.diff": {"tf": 3.4641016151377544}, "sqlglot.executor": {"tf": 2}, "sqlglot.executor.context.Context": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1}, "sqlglot.transforms.remove_target_from_merge": {"tf": 1}}, "df": 53}, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.pretty": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.diff": {"tf": 1.7320508075688772}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.is_string": {"tf": 1}, "sqlglot.expressions.Expression.is_number": {"tf": 1}, "sqlglot.expressions.Expression.is_int": {"tf": 1}, "sqlglot.expressions.Expression.is_star": {"tf": 1}, "sqlglot.expressions.Union.is_star": {"tf": 1}, "sqlglot.expressions.Select.distinct": {"tf": 1}, "sqlglot.expressions.Select.is_star": {"tf": 1}, "sqlglot.expressions.Subquery.is_star": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1}, "sqlglot.expressions.to_identifier": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1.4142135623730951}, "sqlglot.expressions.column": {"tf": 1}, "sqlglot.expressions.expand": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.helper.should_identify": {"tf": 1}, "sqlglot.optimizer.canonicalize.canonicalize": {"tf": 1}, "sqlglot.schema.Schema.column_names": {"tf": 1}, "sqlglot.schema.MappingSchema.column_names": {"tf": 1}, "sqlglot.trie.in_trie": {"tf": 1}}, "df": 42}}}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe": {"tf": 1.4142135623730951}, "sqlglot.dialects": {"tf": 1}, "sqlglot.diff": {"tf": 2.23606797749979}, "sqlglot.executor": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 6, "e": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1}}, "df": 2}}}}}}, "o": {"docs": {"sqlglot.expressions.Expression.flatten": {"tf": 1}, "sqlglot.expressions.var": {"tf": 1}}, "df": 2, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}, "\u2019": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}, "y": {"docs": {"sqlglot.executor": {"tf": 2}}, "df": 1}}, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 2}}}, "e": {"docs": {"sqlglot": {"tf": 2}, "sqlglot.transpile": {"tf": 1}, "sqlglot.dataframe": {"tf": 1}, "sqlglot.dialects": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 5}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dataframe": {"tf": 1}, "sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 2}}, "df": 4}}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}, "p": {"docs": {"sqlglot.expressions.Condition.not_": {"tf": 1}, "sqlglot.expressions.not_": {"tf": 1}}, "df": 2, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.Union.limit": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.expressions.Select.limit": {"tf": 1}, "sqlglot.expressions.Select.offset": {"tf": 1}, "sqlglot.helper.ensure_list": {"tf": 1}, "sqlglot.helper.ensure_collection": {"tf": 1}, "sqlglot.helper.apply_index_offset": {"tf": 1.4142135623730951}}, "df": 11}}}, "s": {"docs": {"sqlglot.helper.ensure_list": {"tf": 1}, "sqlglot.helper.ensure_collection": {"tf": 1}}, "df": 2}}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}}, "df": 22}, "e": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}}, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1.4142135623730951}, "sqlglot.helper.subclasses": {"tf": 1.4142135623730951}}, "df": 4, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}, "y": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dataframe": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1.4142135623730951}}, "df": 4, "s": {"docs": {"sqlglot.dataframe": {"tf": 1}}, "df": 1}}, "s": {"docs": {"sqlglot.diff": {"tf": 2.6457513110645907}, "sqlglot.executor": {"tf": 2.6457513110645907}, "sqlglot.expressions.Expression.find": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1}, "sqlglot.parser.Parser.validate_expression": {"tf": 1}, "sqlglot.trie.in_trie": {"tf": 1}}, "df": 6, "n": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}, "l": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}, "e": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.dialects": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator.with_properties": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 2.23606797749979}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 2.449489742783178}, "sqlglot.diff": {"tf": 5.5677643628300215}, "sqlglot.executor": {"tf": 2.23606797749979}, "sqlglot.helper.subclasses": {"tf": 1.4142135623730951}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_cnf": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_dnf": {"tf": 1.4142135623730951}, "sqlglot.optimizer.qualify_columns.Resolver": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1.4142135623730951}, "sqlglot.transforms.eliminate_qualify": {"tf": 1.7320508075688772}, "sqlglot.trie.in_trie": {"tf": 1}}, "df": 17, "l": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}}, "l": {"docs": {"sqlglot.dialects": {"tf": 1}, "sqlglot.diff": {"tf": 1.7320508075688772}, "sqlglot.expressions.Func": {"tf": 1}}, "df": 3}}, "r": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 2.449489742783178}, "sqlglot.executor": {"tf": 1}, "sqlglot.expressions.Expression.error_messages": {"tf": 1.4142135623730951}}, "df": 3}}, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 2}}, "\u2019": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}}, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.diff": {"tf": 1.7320508075688772}, "sqlglot.executor": {"tf": 1.7320508075688772}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 1}}, "df": 5, "n": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1, "\u2019": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}, "n": {"docs": {"sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.transforms.eliminate_qualify": {"tf": 1}}, "df": 2}, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}, "t": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}, "k": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 2.23606797749979}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}}, "df": 5, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}, "l": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}, "d": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.helper.split_num_words": {"tf": 2.8284271247461903}}, "df": 1}}}}, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.TimeUnit": {"tf": 1}, "sqlglot.expressions.Func": {"tf": 1}, "sqlglot.expressions.var": {"tf": 2.449489742783178}, "sqlglot.tokens.Token.var": {"tf": 1.4142135623730951}}, "df": 4, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot": {"tf": 1.4142135623730951}}, "df": 1}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dialects": {"tf": 1.4142135623730951}}, "df": 1, "s": {"docs": {"sqlglot.dialects": {"tf": 1}, "sqlglot.diff": {"tf": 1}}, "df": 2}}}}}, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Func": {"tf": 1}, "sqlglot.expressions.var": {"tf": 1.4142135623730951}}, "df": 2, "s": {"docs": {"sqlglot.executor.table.Tables": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1}}, "df": 2}}}}}, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}, "y": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 2.23606797749979}}, "df": 1}}}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.Expression.error_messages": {"tf": 1}}, "df": 1, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}, "e": {"docs": {"sqlglot.executor": {"tf": 1}, "sqlglot.parser.Parser.validate_expression": {"tf": 1}}, "df": 2, "d": {"docs": {"sqlglot.parser.Parser.expression": {"tf": 1}}, "df": 1}, "s": {"docs": {"sqlglot.parser.Parser.validate_expression": {"tf": 1}}, "df": 1}}}}}}, "u": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1}, "sqlglot.diff": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.append": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.set": {"tf": 1.7320508075688772}, "sqlglot.expressions.Func": {"tf": 1}, "sqlglot.expressions.convert": {"tf": 1.4142135623730951}, "sqlglot.helper.AutoName": {"tf": 1}, "sqlglot.helper.seq_get": {"tf": 1}, "sqlglot.helper.ensure_list": {"tf": 2.23606797749979}, "sqlglot.helper.ensure_collection": {"tf": 2.23606797749979}, "sqlglot.helper.split_num_words": {"tf": 2}, "sqlglot.helper.is_iterable": {"tf": 2}, "sqlglot.helper.flatten": {"tf": 1}, "sqlglot.trie.in_trie": {"tf": 1.7320508075688772}}, "df": 15, "s": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 2.23606797749979}, "sqlglot.expressions.Expression.error_messages": {"tf": 1}, "sqlglot.expressions.Func": {"tf": 1}, "sqlglot.expressions.values": {"tf": 2.8284271247461903}, "sqlglot.helper.split_num_words": {"tf": 1.4142135623730951}, "sqlglot.helper.flatten": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser.expression": {"tf": 1}}, "df": 11}}}}}, "e": {"docs": {"sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}}, "df": 2, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot": {"tf": 1.7320508075688772}, "sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1}, "sqlglot.diff": {"tf": 1.7320508075688772}, "sqlglot.executor": {"tf": 1.4142135623730951}}, "df": 4}, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot": {"tf": 1}}, "df": 1, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}, "a": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}, "b": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 1}}, "df": 2}}}}, "s": {"docs": {"sqlglot.executor.context.Context": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "s": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1}}, "df": 19}, "i": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.lineage.LineageHTML": {"tf": 1}}, "df": 1, "u": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.Expression.find_all": {"tf": 1}, "sqlglot.expressions.Expression.walk": {"tf": 1}, "sqlglot.expressions.Expression.dfs": {"tf": 1}, "sqlglot.expressions.Expression.bfs": {"tf": 1}, "sqlglot.expressions.Expression.transform": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1}}, "df": 7}}, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.schema.Schema.column_names": {"tf": 1}, "sqlglot.schema.MappingSchema": {"tf": 1.7320508075688772}, "sqlglot.schema.MappingSchema.column_names": {"tf": 1}}, "df": 3}}}}}, "c": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}, "e": {"docs": {}, "df": 0, "w": {"docs": {"sqlglot.expressions.Select.lateral": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 1.4142135623730951}, "sqlglot.transforms.unnest_to_explode": {"tf": 1}}, "df": 3}}}, "\u00e4": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}, "t": {"docs": {"sqlglot.executor.table.Tables": {"tf": 2.23606797749979}, "sqlglot.schema.AbstractMappingSchema": {"tf": 2.23606797749979}}, "df": 2}}, "g": {"docs": {"sqlglot.schema": {"tf": 1}, "sqlglot.diff": {"tf": 1.7320508075688772}, "sqlglot.executor": {"tf": 1}, "sqlglot.executor.env.null_if_any": {"tf": 1}, "sqlglot.expressions.Expression.error_messages": {"tf": 1}, "sqlglot.schema.Schema.supported_table_args": {"tf": 1}}, "df": 6, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dialects": {"tf": 1}, "sqlglot.executor": {"tf": 1}, "sqlglot.executor.table.Tables": {"tf": 1.7320508075688772}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1.7320508075688772}}, "df": 5, "[": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.executor.table.Tables": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1}}, "df": 2}}}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot": {"tf": 2}, "sqlglot.transpile": {"tf": 1.4142135623730951}, "sqlglot.dataframe": {"tf": 1}, "sqlglot.dialects": {"tf": 2.23606797749979}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.find_all": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.walk": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.dfs": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.bfs": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.flatten": {"tf": 1}, "sqlglot.expressions.Expression.sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator": {"tf": 1.4142135623730951}, "sqlglot.lineage.LineageHTML": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1}, "sqlglot.transforms.preprocess": {"tf": 1.4142135623730951}}, "df": 37}}, "e": {"docs": {"sqlglot.dataframe": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 2}, "sqlglot.executor": {"tf": 1.4142135623730951}}, "df": 3, "d": {"docs": {"sqlglot.pretty": {"tf": 1}, "sqlglot.diff": {"tf": 1}}, "df": 2}, "s": {"docs": {"sqlglot.generator.Generator.generate": {"tf": 1}}, "df": 1}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.expressions.Tag": {"tf": 1}}, "df": 5}}, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dialects": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.expressions.Func": {"tf": 1}}, "df": 3}}}}, "l": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1}}, "df": 1}}}}}}}, "t": {"docs": {"sqlglot": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1}, "sqlglot.diff": {"tf": 2.449489742783178}, "sqlglot.executor": {"tf": 1}, "sqlglot.expressions.table_name": {"tf": 1}, "sqlglot.helper.dict_depth": {"tf": 1}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.get_table": {"tf": 1}, "sqlglot.optimizer.scope.Scope.source_columns": {"tf": 1}, "sqlglot.schema.Schema.column_names": {"tf": 1}, "sqlglot.schema.Schema.get_column_type": {"tf": 1}, "sqlglot.schema.MappingSchema.column_names": {"tf": 1}, "sqlglot.schema.MappingSchema.get_column_type": {"tf": 1}, "sqlglot.trie.in_trie": {"tf": 1}}, "df": 15, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe": {"tf": 1}}, "df": 1}}}}}}}}, "s": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 1}}, "df": 3}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {"sqlglot.executor.table.Tables": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1}}, "df": 2}}}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}, "o": {"docs": {"sqlglot": {"tf": 1}}, "df": 1, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 2}}, "o": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe": {"tf": 1}}, "df": 1}}}, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.executor": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1}}, "df": 2}}}}, "u": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 2}}}, "m": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}}, "df": 1}}}}}}, "t": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dataframe": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 5.656854249492381}, "sqlglot.diff.diff": {"tf": 1.7320508075688772}, "sqlglot.executor": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.output_name": {"tf": 3.4641016151377544}, "sqlglot.expressions.Expression.replace": {"tf": 3}, "sqlglot.expressions.Expression.assert_is": {"tf": 2.449489742783178}, "sqlglot.expressions.Condition.and_": {"tf": 1.7320508075688772}, "sqlglot.expressions.Condition.or_": {"tf": 1.7320508075688772}, "sqlglot.expressions.Condition.not_": {"tf": 1.7320508075688772}, "sqlglot.expressions.Predicate": {"tf": 1.4142135623730951}, "sqlglot.expressions.Unionable.union": {"tf": 2.449489742783178}, "sqlglot.expressions.Unionable.intersect": {"tf": 2.449489742783178}, "sqlglot.expressions.Unionable.except_": {"tf": 2.449489742783178}, "sqlglot.expressions.Column.output_name": {"tf": 3.4641016151377544}, "sqlglot.expressions.Delete.delete": {"tf": 1.7320508075688772}, "sqlglot.expressions.Delete.where": {"tf": 1.7320508075688772}, "sqlglot.expressions.Delete.returning": {"tf": 1.7320508075688772}, "sqlglot.expressions.Identifier.output_name": {"tf": 3.4641016151377544}, "sqlglot.expressions.Literal.output_name": {"tf": 3.4641016151377544}, "sqlglot.expressions.Join.on": {"tf": 2.449489742783178}, "sqlglot.expressions.Join.using": {"tf": 2.449489742783178}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 2.449489742783178}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1.7320508075688772}, "sqlglot.expressions.Union.limit": {"tf": 1.7320508075688772}, "sqlglot.expressions.Union.select": {"tf": 2.449489742783178}, "sqlglot.expressions.Select.from_": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.group_by": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.order_by": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.sort_by": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.cluster_by": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.limit": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.offset": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.select": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.lateral": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.join": {"tf": 3}, "sqlglot.expressions.Select.where": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.having": {"tf": 2.23606797749979}, "sqlglot.expressions.Select.distinct": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.ctas": {"tf": 1.7320508075688772}, "sqlglot.expressions.Select.lock": {"tf": 2.449489742783178}, "sqlglot.expressions.Subquery.output_name": {"tf": 3.4641016151377544}, "sqlglot.expressions.Star.output_name": {"tf": 3.4641016151377544}, "sqlglot.expressions.Kwarg": {"tf": 1}, "sqlglot.expressions.Alias.output_name": {"tf": 3.4641016151377544}, "sqlglot.expressions.Cast.output_name": {"tf": 3.4641016151377544}, "sqlglot.expressions.maybe_parse": {"tf": 2.449489742783178}, "sqlglot.expressions.union": {"tf": 1.7320508075688772}, "sqlglot.expressions.intersect": {"tf": 1.7320508075688772}, "sqlglot.expressions.except_": {"tf": 1.7320508075688772}, "sqlglot.expressions.select": {"tf": 1.7320508075688772}, "sqlglot.expressions.from_": {"tf": 1.7320508075688772}, "sqlglot.expressions.update": {"tf": 2.23606797749979}, "sqlglot.expressions.delete": {"tf": 2.23606797749979}, "sqlglot.expressions.condition": {"tf": 3.4641016151377544}, "sqlglot.expressions.and_": {"tf": 1.7320508075688772}, "sqlglot.expressions.or_": {"tf": 1.7320508075688772}, "sqlglot.expressions.not_": {"tf": 1.7320508075688772}, "sqlglot.expressions.alias_": {"tf": 2.449489742783178}, "sqlglot.expressions.subquery": {"tf": 1.7320508075688772}, "sqlglot.expressions.cast": {"tf": 1.7320508075688772}, "sqlglot.expressions.values": {"tf": 1.7320508075688772}, "sqlglot.expressions.var": {"tf": 2.449489742783178}, "sqlglot.expressions.column_table_names": {"tf": 2.449489742783178}, "sqlglot.expressions.table_name": {"tf": 2.449489742783178}, "sqlglot.expressions.replace_tables": {"tf": 2.449489742783178}, "sqlglot.expressions.replace_placeholders": {"tf": 2.449489742783178}, "sqlglot.expressions.expand": {"tf": 3}, "sqlglot.expressions.func": {"tf": 2.449489742783178}, "sqlglot.helper.split_num_words": {"tf": 3}, "sqlglot.helper.is_iterable": {"tf": 2.449489742783178}, "sqlglot.helper.flatten": {"tf": 2.449489742783178}, "sqlglot.helper.dict_depth": {"tf": 3.872983346207417}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 4}, "sqlglot.optimizer.eliminate_ctes.eliminate_ctes": {"tf": 3.4641016151377544}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 3.4641016151377544}, "sqlglot.optimizer.eliminate_subqueries.eliminate_subqueries": {"tf": 3.872983346207417}, "sqlglot.optimizer.expand_laterals.expand_laterals": {"tf": 3.4641016151377544}, "sqlglot.optimizer.expand_multi_table_selects.expand_multi_table_selects": {"tf": 2.449489742783178}, "sqlglot.optimizer.lower_identities.lower_identities": {"tf": 3}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 3}, "sqlglot.optimizer.normalize.normalize": {"tf": 3}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 3}, "sqlglot.optimizer.optimize_joins.optimize_joins": {"tf": 2.449489742783178}, "sqlglot.optimizer.pushdown_predicates.pushdown_predicates": {"tf": 3.4641016151377544}, "sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 3.4641016151377544}, "sqlglot.optimizer.qualify_columns.qualify_columns": {"tf": 3.4641016151377544}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"tf": 3}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 3.872983346207417}, "sqlglot.optimizer.simplify.simplify": {"tf": 3}, "sqlglot.optimizer.simplify.rewrite_between": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 3}, "sqlglot.time.format_time": {"tf": 1.7320508075688772}, "sqlglot.transforms.unalias_group": {"tf": 2.449489742783178}, "sqlglot.trie.new_trie": {"tf": 1.7320508075688772}, "sqlglot.trie.in_trie": {"tf": 3}}, "df": 98}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dataframe": {"tf": 1}, "sqlglot.executor": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 2.6457513110645907}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1.4142135623730951}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 1.4142135623730951}, "sqlglot.planner.Step.from_expression": {"tf": 1.4142135623730951}, "sqlglot.planner.Scan.from_expression": {"tf": 1.4142135623730951}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1.4142135623730951}, "sqlglot.transforms.unalias_group": {"tf": 2}}, "df": 13, "b": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dataframe": {"tf": 2.23606797749979}}, "df": 1}}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}}, "p": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.helper.tsort": {"tf": 1.7320508075688772}, "sqlglot.lineage.lineage": {"tf": 1}}, "df": 3}}, "m": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 2.23606797749979}}, "df": 1}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}}}, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.maybe_parse": {"tf": 1}}, "df": 1}}}}}}}}, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}}, "df": 1}}}}}}, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1, "n": {"docs": {"sqlglot.parse": {"tf": 1}, "sqlglot.parse_one": {"tf": 1}, "sqlglot.transpile": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1.7320508075688772}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.transform": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1}, "sqlglot.expressions.replace_placeholders": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.generator.Generator.generate": {"tf": 1}, "sqlglot.helper.apply_index_offset": {"tf": 1}, "sqlglot.helper.while_changing": {"tf": 1}, "sqlglot.helper.tsort": {"tf": 1}, "sqlglot.helper.csv_reader": {"tf": 1}, "sqlglot.helper.should_identify": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.get_source_columns": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 1.4142135623730951}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}, "sqlglot.time.format_time": {"tf": 1}}, "df": 42}}}, "t": {"docs": {"sqlglot.diff": {"tf": 2}}, "df": 1, "h": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "b": {"docs": {"sqlglot.lineage.LineageHTML": {"tf": 1}}, "df": 1}}}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}, "z": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.helper.open_file": {"tf": 1}}, "df": 1}}}}, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.diff": {"tf": 1.7320508075688772}, "sqlglot.executor": {"tf": 1.7320508075688772}}, "df": 3}}, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 2}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot": {"tf": 2}, "sqlglot.diff": {"tf": 1.7320508075688772}, "sqlglot.executor": {"tf": 2.8284271247461903}, "sqlglot.lineage.lineage": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}}, "df": 6}, "d": {"docs": {"sqlglot.executor.context.Context": {"tf": 1}}, "df": 1}}}, "y": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.dataframe": {"tf": 1.4142135623730951}, "sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.diff": {"tf": 2.449489742783178}, "sqlglot.executor": {"tf": 3.7416573867739413}, "sqlglot.executor.execute": {"tf": 1}, "sqlglot.lineage.lineage": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser": {"tf": 1}, "sqlglot.transforms.eliminate_qualify": {"tf": 1}}, "df": 28, "b": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "u": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot": {"tf": 14.594519519326424}, "sqlglot.dataframe": {"tf": 10.392304845413264}, "sqlglot.dialects": {"tf": 5.385164807134504}, "sqlglot.diff": {"tf": 5.830951894845301}, "sqlglot.diff.diff": {"tf": 2}, "sqlglot.executor": {"tf": 3.7416573867739413}, "sqlglot.expressions.Expression": {"tf": 2}, "sqlglot.expressions.Expression.output_name": {"tf": 2.449489742783178}, "sqlglot.expressions.Expression.assert_is": {"tf": 2}, "sqlglot.expressions.Condition.and_": {"tf": 2}, "sqlglot.expressions.Condition.or_": {"tf": 2}, "sqlglot.expressions.Condition.not_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Unionable.union": {"tf": 2}, "sqlglot.expressions.Unionable.intersect": {"tf": 2}, "sqlglot.expressions.Unionable.except_": {"tf": 2}, "sqlglot.expressions.Column.output_name": {"tf": 2.449489742783178}, "sqlglot.expressions.Delete.delete": {"tf": 1.4142135623730951}, "sqlglot.expressions.Delete.where": {"tf": 2.449489742783178}, "sqlglot.expressions.Delete.returning": {"tf": 2.449489742783178}, "sqlglot.expressions.Identifier.output_name": {"tf": 2.449489742783178}, "sqlglot.expressions.Literal.output_name": {"tf": 2.449489742783178}, "sqlglot.expressions.Join.on": {"tf": 2}, "sqlglot.expressions.Join.using": {"tf": 2.449489742783178}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 2.449489742783178}, "sqlglot.expressions.Subqueryable.with_": {"tf": 2.8284271247461903}, "sqlglot.expressions.Union.limit": {"tf": 2}, "sqlglot.expressions.Union.select": {"tf": 2}, "sqlglot.expressions.Select.from_": {"tf": 2}, "sqlglot.expressions.Select.group_by": {"tf": 2.8284271247461903}, "sqlglot.expressions.Select.order_by": {"tf": 2.449489742783178}, "sqlglot.expressions.Select.sort_by": {"tf": 2.449489742783178}, "sqlglot.expressions.Select.cluster_by": {"tf": 2.449489742783178}, "sqlglot.expressions.Select.limit": {"tf": 2}, "sqlglot.expressions.Select.offset": {"tf": 2}, "sqlglot.expressions.Select.select": {"tf": 2}, "sqlglot.expressions.Select.lateral": {"tf": 2.449489742783178}, "sqlglot.expressions.Select.join": {"tf": 5.477225575051661}, "sqlglot.expressions.Select.where": {"tf": 2.8284271247461903}, "sqlglot.expressions.Select.having": {"tf": 3.1622776601683795}, "sqlglot.expressions.Select.distinct": {"tf": 2}, "sqlglot.expressions.Select.ctas": {"tf": 2.449489742783178}, "sqlglot.expressions.Select.lock": {"tf": 4.47213595499958}, "sqlglot.expressions.Subquery.output_name": {"tf": 2.449489742783178}, "sqlglot.expressions.Star.output_name": {"tf": 2.449489742783178}, "sqlglot.expressions.Alias.output_name": {"tf": 2.449489742783178}, "sqlglot.expressions.Cast.output_name": {"tf": 2.449489742783178}, "sqlglot.expressions.maybe_parse": {"tf": 2}, "sqlglot.expressions.union": {"tf": 2}, "sqlglot.expressions.intersect": {"tf": 2}, "sqlglot.expressions.except_": {"tf": 2}, "sqlglot.expressions.select": {"tf": 2.449489742783178}, "sqlglot.expressions.from_": {"tf": 2.449489742783178}, "sqlglot.expressions.update": {"tf": 4}, "sqlglot.expressions.delete": {"tf": 2}, "sqlglot.expressions.condition": {"tf": 3.1622776601683795}, "sqlglot.expressions.and_": {"tf": 2.449489742783178}, "sqlglot.expressions.or_": {"tf": 2.449489742783178}, "sqlglot.expressions.not_": {"tf": 2}, "sqlglot.expressions.values": {"tf": 1.4142135623730951}, "sqlglot.expressions.column_table_names": {"tf": 1.4142135623730951}, "sqlglot.expressions.table_name": {"tf": 1.4142135623730951}, "sqlglot.expressions.replace_tables": {"tf": 2.449489742783178}, "sqlglot.expressions.replace_placeholders": {"tf": 3.1622776601683795}, "sqlglot.expressions.expand": {"tf": 4}, "sqlglot.expressions.func": {"tf": 2.449489742783178}, "sqlglot.helper.split_num_words": {"tf": 3.4641016151377544}, "sqlglot.helper.is_iterable": {"tf": 1.4142135623730951}, "sqlglot.helper.flatten": {"tf": 1.4142135623730951}, "sqlglot.helper.dict_depth": {"tf": 3.1622776601683795}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 3.1622776601683795}, "sqlglot.optimizer.eliminate_ctes.eliminate_ctes": {"tf": 1.4142135623730951}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 1.4142135623730951}, "sqlglot.optimizer.eliminate_subqueries.eliminate_subqueries": {"tf": 2}, "sqlglot.optimizer.expand_laterals.expand_laterals": {"tf": 1.4142135623730951}, "sqlglot.optimizer.expand_multi_table_selects.expand_multi_table_selects": {"tf": 1.4142135623730951}, "sqlglot.optimizer.lower_identities.lower_identities": {"tf": 2}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1.4142135623730951}, "sqlglot.optimizer.normalize.normalize": {"tf": 1.4142135623730951}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 1.4142135623730951}, "sqlglot.optimizer.optimize_joins.optimize_joins": {"tf": 1.4142135623730951}, "sqlglot.optimizer.pushdown_predicates.pushdown_predicates": {"tf": 1.4142135623730951}, "sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 1.4142135623730951}, "sqlglot.optimizer.qualify_columns.qualify_columns": {"tf": 2.8284271247461903}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"tf": 2}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1.4142135623730951}, "sqlglot.optimizer.simplify.simplify": {"tf": 1.4142135623730951}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 1.4142135623730951}, "sqlglot.time.format_time": {"tf": 2.449489742783178}, "sqlglot.transforms.unalias_group": {"tf": 1.4142135623730951}, "sqlglot.trie.new_trie": {"tf": 2.449489742783178}, "sqlglot.trie.in_trie": {"tf": 3.4641016151377544}}, "df": 91, "e": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 2}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 2}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 2}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 2}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 2}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 2}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 2}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 2}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 2}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 2}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 2}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 2}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 2}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 2}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 2}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 2}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 2}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 2}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 2}, "sqlglot.executor.python.Python.Generator": {"tf": 2}, "sqlglot.expressions.to_identifier": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1}, "sqlglot.expressions.column": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 2}, "sqlglot.optimizer.lower_identities.lower_identities": {"tf": 1}}, "df": 26, "d": {"docs": {"sqlglot": {"tf": 3}, "sqlglot.diff.diff": {"tf": 2}, "sqlglot.expressions.maybe_parse": {"tf": 1}, "sqlglot.expressions.to_identifier": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1.4142135623730951}, "sqlglot.expressions.column": {"tf": 1}, "sqlglot.optimizer.lower_identities.lower_identities": {"tf": 1}}, "df": 7}, "s": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dialects": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.executor.python.Python.Generator": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator": {"tf": 1.4142135623730951}}, "df": 25}}}, "k": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 2}}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1}, "sqlglot.optimizer.expand_laterals.expand_laterals": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1.4142135623730951}, "sqlglot.optimizer.qualify_columns.qualify_columns": {"tf": 1.4142135623730951}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"tf": 1.4142135623730951}, "sqlglot.transforms.eliminate_qualify": {"tf": 1.7320508075688772}}, "df": 7, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.lineage.lineage": {"tf": 1}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}, "d": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.optimizer.qualify_columns.qualify_columns": {"tf": 1.4142135623730951}, "sqlglot.optimizer.qualify_columns.validate_qualify_columns": {"tf": 1}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"tf": 1.4142135623730951}}, "df": 4}}}}}}}}}, "y": {"docs": {"sqlglot": {"tf": 3.3166247903554}, "sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 3.4641016151377544}, "sqlglot.expressions.Expression.replace": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression.assert_is": {"tf": 1.4142135623730951}, "sqlglot.expressions.Condition.and_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Condition.or_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Predicate": {"tf": 1.4142135623730951}, "sqlglot.expressions.Join.on": {"tf": 1.4142135623730951}, "sqlglot.expressions.Union.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.lateral": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.join": {"tf": 3.1622776601683795}, "sqlglot.expressions.Select.having": {"tf": 2}, "sqlglot.expressions.Kwarg": {"tf": 1}, "sqlglot.expressions.update": {"tf": 1.4142135623730951}, "sqlglot.expressions.condition": {"tf": 1.4142135623730951}, "sqlglot.expressions.and_": {"tf": 1.4142135623730951}, "sqlglot.expressions.or_": {"tf": 1.4142135623730951}, "sqlglot.expressions.var": {"tf": 1}, "sqlglot.expressions.expand": {"tf": 2.449489742783178}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 2}, "sqlglot.optimizer.eliminate_ctes.eliminate_ctes": {"tf": 1}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 2}, "sqlglot.optimizer.eliminate_subqueries.eliminate_subqueries": {"tf": 3}, "sqlglot.optimizer.expand_multi_table_selects.expand_multi_table_selects": {"tf": 1.4142135623730951}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 2}, "sqlglot.optimizer.normalize.normalize": {"tf": 1.4142135623730951}, "sqlglot.optimizer.normalize.distributive_law": {"tf": 2.8284271247461903}, "sqlglot.optimizer.optimize_joins.optimize_joins": {"tf": 2}, "sqlglot.optimizer.pushdown_predicates.pushdown_predicates": {"tf": 2}, "sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 2}, "sqlglot.optimizer.scope.Scope": {"tf": 2.23606797749979}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1.7320508075688772}, "sqlglot.optimizer.simplify.rewrite_between": {"tf": 1.4142135623730951}, "sqlglot.optimizer.simplify.simplify_not": {"tf": 2}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 2.8284271247461903}, "sqlglot.planner.Step.from_expression": {"tf": 2.8284271247461903}, "sqlglot.planner.Scan.from_expression": {"tf": 2.8284271247461903}, "sqlglot.planner.SetOperation.from_expression": {"tf": 2.8284271247461903}, "sqlglot.time.format_time": {"tf": 1.4142135623730951}}, "df": 41, "o": {"docs": {}, "df": 0, "u": {"docs": {"sqlglot": {"tf": 2.23606797749979}, "sqlglot.dataframe": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 2}, "sqlglot.executor": {"tf": 2}, "sqlglot.generator.Generator.generate": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1.4142135623730951}}, "df": 8, "r": {"docs": {"sqlglot.dataframe": {"tf": 1.7320508075688772}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 4}}}, "y": {"docs": {"sqlglot": {"tf": 1}}, "df": 1, "y": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.time.format_time": {"tf": 1.4142135623730951}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1, "s": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.expressions.Expression.iter_expressions": {"tf": 1}, "sqlglot.expressions.Expression.find_all": {"tf": 1}, "sqlglot.expressions.Expression.flatten": {"tf": 1}, "sqlglot.helper.csv_reader": {"tf": 1}, "sqlglot.helper.flatten": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.traverse": {"tf": 1}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1}}, "df": 9}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}, "e": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 2}, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}, "h": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1}}, "df": 2, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 2, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}}}}}, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 2}, "sqlglot.parse": {"tf": 1}, "sqlglot.parse_one": {"tf": 1}, "sqlglot.transpile": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.create_with_partitions_sql": {"tf": 1}, "sqlglot.executor.execute": {"tf": 1}, "sqlglot.expressions.Expression.sql": {"tf": 1}, "sqlglot.transforms.unnest_to_explode": {"tf": 1}, "sqlglot.transforms.explode_to_unnest": {"tf": 1}}, "df": 9}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}, "y": {"docs": {"sqlglot.expressions.Expression": {"tf": 1}}, "df": 1}}}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {"sqlglot.diff": {"tf": 3.7416573867739413}}, "df": 1, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}}, "df": 1}}}}}}}}, "m": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "f": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.optimizer.scope.Scope.join_hints": {"tf": 1.4142135623730951}}, "df": 1}}}}, "o": {"docs": {}, "df": 0, "w": {"docs": {"sqlglot.dataframe": {"tf": 1.4142135623730951}, "sqlglot.dialects": {"tf": 1}, "sqlglot.diff": {"tf": 2.449489742783178}, "sqlglot.executor": {"tf": 1.4142135623730951}}, "df": 4, "e": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1.7320508075688772}}, "df": 3}}}}}, "p": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}, "l": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.executor.context.Context": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.diff": {"tf": 1}}, "df": 2}, "d": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1}}, "df": 19}, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}, "p": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1, "q": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}, "p": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "l": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.diff": {"tf": 1.7320508075688772}, "sqlglot.diff.diff": {"tf": 1}, "sqlglot.expressions.values": {"tf": 1}}, "df": 4, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dialects.dialect.format_time_lambda": {"tf": 1}, "sqlglot.expressions": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver": {"tf": 1}}, "df": 3, "s": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}, "f": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.expressions.condition": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}, "sqlglot.parser.Parser.parse": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 1}}, "df": 4}}}}}, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 2.23606797749979}, "sqlglot.diff.diff": {"tf": 1}}, "df": 2}}}}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1}}, "df": 2}}, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}, "v": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.with_properties": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1}, "sqlglot.diff": {"tf": 4.69041575982343}, "sqlglot.executor": {"tf": 1.7320508075688772}, "sqlglot.optimizer.qualify_columns.qualify_columns": {"tf": 1}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 1}}, "df": 9, "n": {"docs": {}, "df": 0, "\u2019": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.executor": {"tf": 2}, "sqlglot.expressions.Select.having": {"tf": 1.7320508075688772}}, "df": 2}}}}, "s": {"docs": {"sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1}, "sqlglot.dialects": {"tf": 1}, "sqlglot.diff": {"tf": 2.23606797749979}, "sqlglot.diff.Insert": {"tf": 1}, "sqlglot.diff.Remove": {"tf": 1}, "sqlglot.diff.Move": {"tf": 1}, "sqlglot.diff.Update": {"tf": 1}, "sqlglot.executor": {"tf": 2.449489742783178}, "sqlglot.expressions.Expression.output_name": {"tf": 1}, "sqlglot.expressions.Column.output_name": {"tf": 1}, "sqlglot.expressions.Identifier.output_name": {"tf": 1}, "sqlglot.expressions.Literal.output_name": {"tf": 1}, "sqlglot.expressions.Subquery.output_name": {"tf": 1}, "sqlglot.expressions.Star.output_name": {"tf": 1}, "sqlglot.expressions.Alias.output_name": {"tf": 1}, "sqlglot.expressions.Cast.output_name": {"tf": 1}, "sqlglot.expressions.alias_": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 19, "n": {"docs": {"sqlglot.diff.Keep": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 2, "\u2019": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}, "h": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.generator.Generator.generate": {"tf": 1.4142135623730951}}, "df": 2, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.expressions.Expression": {"tf": 1}}, "df": 1}}}}}, "d": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}, "sqlglot.executor": {"tf": 1}}, "df": 2}, "n": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.union": {"tf": 1.4142135623730951}, "sqlglot.expressions.intersect": {"tf": 1.4142135623730951}, "sqlglot.expressions.except_": {"tf": 1.4142135623730951}}, "df": 3, "y": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1}}, "df": 2}}, "w": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}}}}, "l": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1, "f": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}, "p": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}, "u": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "o": {"docs": {"sqlglot.dataframe": {"tf": 1.7320508075688772}}, "df": 1}}, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "\u2019": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}, "t": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, ":": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.dataframe.sql.DataFrame.persist": {"tf": 1}}, "df": 1}}}}}, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff.ChangeDistiller": {"tf": 1}}, "df": 1}}}}}}}}}}, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "j": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.lineage.LineageHTML": {"tf": 1}}, "df": 1}}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "v": {"docs": {"sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1}}, "df": 1}}, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.transforms.eliminate_qualify": {"tf": 1}}, "df": 1}}}}}}}}, ":": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff.ChangeDistiller": {"tf": 1}}, "df": 1}}}}}}}}}}}, "m": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.dataframe.sql.DataFrame.persist": {"tf": 1}, "sqlglot.lineage.LineageHTML": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1}}, "df": 3}}}}, "m": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1.7320508075688772}}, "df": 3, "a": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.dataframe": {"tf": 1}, "sqlglot.dialects": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.values_sql": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.helper.open_file": {"tf": 1}, "sqlglot.schema.Schema.add_table": {"tf": 1}}, "df": 9, "b": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.maybe_parse": {"tf": 1.4142135623730951}}, "df": 1}}}, "k": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 2}, "sqlglot.dataframe": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1.7320508075688772}, "sqlglot.diff": {"tf": 1}}, "df": 6, "s": {"docs": {"sqlglot.dialects": {"tf": 1}, "sqlglot.executor": {"tf": 1}, "sqlglot.executor.env.null_if_any": {"tf": 1}, "sqlglot.optimizer.lower_identities.lower_identities": {"tf": 1}}, "df": 4}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.parser.Parser.validate_expression": {"tf": 1}}, "df": 2}}}}, "p": {"docs": {"sqlglot.expressions.Func": {"tf": 1}}, "df": 1, "p": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.dialects": {"tf": 1.4142135623730951}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.4142135623730951}, "sqlglot.executor.execute": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1.4142135623730951}, "sqlglot.executor.table.Tables": {"tf": 1.7320508075688772}, "sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.expressions.Select.ctas": {"tf": 1}, "sqlglot.expressions.replace_tables": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator": {"tf": 1.4142135623730951}, "sqlglot.lineage.lineage": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.optimizer.scope.Scope": {"tf": 1}, "sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 1}, "sqlglot.optimizer.scope.Scope.cte_sources": {"tf": 1}, "sqlglot.optimizer.scope.Scope.ref_count": {"tf": 1}, "sqlglot.schema.Schema.add_table": {"tf": 1.4142135623730951}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1.7320508075688772}, "sqlglot.schema.MappingSchema": {"tf": 1.7320508075688772}, "sqlglot.schema.MappingSchema.add_table": {"tf": 1.7320508075688772}, "sqlglot.time.format_time": {"tf": 1.4142135623730951}}, "df": 39, "s": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.schema.MappingSchema": {"tf": 1}}, "df": 22}, "[": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.executor.table.Tables": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1}}, "df": 2}, "e": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.executor.table.Tables": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1}}, "df": 2}}}}}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.replace_tables": {"tf": 1}, "sqlglot.expressions.replace_placeholders": {"tf": 1}}, "df": 2}}}, "s": {"docs": {"sqlglot.expressions.Expression": {"tf": 1}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1.4142135623730951}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}}, "df": 5}}, "i": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1.4142135623730951}}, "df": 3, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions": {"tf": 1}}, "df": 1}}}}, "n": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.diff": {"tf": 1.7320508075688772}, "sqlglot.executor": {"tf": 1.7320508075688772}, "sqlglot.optimizer.canonicalize.canonicalize": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 1.4142135623730951}}, "df": 6}, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.expressions.Expression.error_messages": {"tf": 1}, "sqlglot.parser.Parser.validate_expression": {"tf": 1}}, "df": 2}}}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.dataframe": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.diff": {"tf": 2}, "sqlglot.expressions.Expression.find": {"tf": 1}, "sqlglot.expressions.Expression.find_all": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.find_ancestor": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find_all": {"tf": 1.4142135623730951}}, "df": 7, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.values_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.expressions.Expression.find": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1.4142135623730951}}, "df": 5}, "d": {"docs": {"sqlglot.diff": {"tf": 2.23606797749979}, "sqlglot.diff.diff": {"tf": 1}}, "df": 2}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.diff": {"tf": 7.14142842854285}, "sqlglot.diff.diff": {"tf": 1}, "sqlglot.expressions.Expression.find_ancestor": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1}}, "df": 4, "s": {"docs": {"sqlglot.diff": {"tf": 3}, "sqlglot.diff.diff": {"tf": 1}}, "df": 2}}}}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}, "h": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}, "x": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1.7320508075688772}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1.7320508075688772}, "sqlglot.diff": {"tf": 2.449489742783178}, "sqlglot.executor.python.Python.Generator": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator": {"tf": 1.7320508075688772}, "sqlglot.optimizer.normalize.normalize": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1}}, "df": 43, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1}}, "df": 40}}, "a": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot.optimizer.normalize.normalize": {"tf": 1}}, "df": 1}}}}}, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.diff.ChangeDistiller": {"tf": 1}}, "df": 2, "e": {"docs": {}, "df": 0, "z": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}, "o": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}, "e": {"docs": {"sqlglot.diff": {"tf": 1.7320508075688772}, "sqlglot.executor": {"tf": 1}}, "df": 2, "t": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.dataframe": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 3}}}}, "l": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.optimizer.canonicalize.canonicalize": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}}, "df": 45, "s": {"docs": {"sqlglot.helper.count_params": {"tf": 1}}, "df": 1}}}}, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1, "s": {"docs": {"sqlglot.executor": {"tf": 1.7320508075688772}}, "df": 1}}}}}, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser": {"tf": 1.4142135623730951}}, "df": 19, "s": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Parser": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Parser": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Parser": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Parser": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Parser": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Parser": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Parser": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Parser": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Parser": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Parser": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Parser": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Parser": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Parser": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Parser": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Parser": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Parser": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Parser": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.executor": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.expressions.Expression.error_messages": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.parser.Parser": {"tf": 1}, "sqlglot.parser.Parser.parse": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 1}}, "df": 44}}}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1}}, "df": 1, "t": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}, "r": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 2}}, "df": 1, "s": {"docs": {"sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1}}, "df": 1}}}}}, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot": {"tf": 1.7320508075688772}, "sqlglot.expressions.Delete.delete": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Delete.returning": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Join.using": {"tf": 1}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1}, "sqlglot.expressions.Union.limit": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.expressions.Select.limit": {"tf": 1}, "sqlglot.expressions.Select.offset": {"tf": 1}, "sqlglot.expressions.Select.select": {"tf": 1}, "sqlglot.expressions.Select.lateral": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1}, "sqlglot.expressions.Select.where": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1}, "sqlglot.expressions.Select.distinct": {"tf": 1}, "sqlglot.expressions.Select.ctas": {"tf": 1}, "sqlglot.expressions.Select.lock": {"tf": 1}}, "df": 25}, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.expressions.Expression.transform": {"tf": 1}}, "df": 2}}}}}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.expressions.Expression.transform": {"tf": 1}, "sqlglot.expressions.Delete.delete": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Delete.returning": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Join.using": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1}, "sqlglot.expressions.Union.select": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.expressions.Select.limit": {"tf": 1}, "sqlglot.expressions.Select.offset": {"tf": 1}, "sqlglot.expressions.Select.select": {"tf": 1}, "sqlglot.expressions.Select.lateral": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1}, "sqlglot.expressions.Select.where": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1}, "sqlglot.expressions.Select.distinct": {"tf": 1}, "sqlglot.expressions.Select.lock": {"tf": 1}}, "df": 22}}}}}, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.expressions": {"tf": 1}, "sqlglot.helper.subclasses": {"tf": 1.4142135623730951}}, "df": 4}}}, "e": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.expressions.Select.lock": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.helper.open_file": {"tf": 1}}, "df": 23, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.dataframe": {"tf": 1}}, "df": 1}}}}}, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot": {"tf": 1.4142135623730951}}, "df": 1, "s": {"docs": {"sqlglot.expressions.to_interval": {"tf": 1}}, "df": 1}}}, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.diff": {"tf": 3.1622776601683795}, "sqlglot.diff.diff": {"tf": 1}}, "df": 3, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 2}}, "df": 1}}}}}, "d": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}}, "df": 1}}}, "z": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "r": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1}, "sqlglot.diff": {"tf": 2.6457513110645907}, "sqlglot.executor": {"tf": 2}, "sqlglot.executor.table.Tables": {"tf": 1}, "sqlglot.helper.apply_index_offset": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1}}, "df": 8}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe": {"tf": 1.4142135623730951}, "sqlglot.dialects": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1}}, "df": 5, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1}}, "df": 3}}}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}, "c": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.executor": {"tf": 1.4142135623730951}}, "df": 1}}}, "s": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.optimizer.expand_multi_table_selects.expand_multi_table_selects": {"tf": 1}}, "df": 2, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}, "e": {"docs": {"sqlglot.executor": {"tf": 1.7320508075688772}, "sqlglot.expressions.Condition.and_": {"tf": 1}, "sqlglot.expressions.Condition.or_": {"tf": 1}, "sqlglot.expressions.Delete.where": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Select.where": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1}, "sqlglot.expressions.select": {"tf": 1}, "sqlglot.expressions.and_": {"tf": 1}, "sqlglot.expressions.or_": {"tf": 1}, "sqlglot.optimizer.expand_multi_table_selects.expand_multi_table_selects": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1}}, "df": 12}}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.diff.diff": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}}, "df": 5}}, "c": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1.4142135623730951}}, "df": 2}}, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.expressions.func": {"tf": 1}}, "df": 2}}}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.trie.new_trie": {"tf": 1}}, "df": 1}}}}}, "y": {"docs": {"sqlglot.diff": {"tf": 2.449489742783178}, "sqlglot.executor": {"tf": 2.23606797749979}, "sqlglot.expressions.update": {"tf": 1.4142135623730951}, "sqlglot.expressions.delete": {"tf": 1.4142135623730951}}, "df": 4, "s": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "l": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.parse": {"tf": 1}, "sqlglot.parse_one": {"tf": 1}, "sqlglot.transpile": {"tf": 1.4142135623730951}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.executor.execute": {"tf": 1}, "sqlglot.expressions.Expression.sql": {"tf": 1}, "sqlglot.expressions.Select.lock": {"tf": 1.4142135623730951}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 1}}, "df": 9}}, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "f": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 2.6457513110645907}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 2}}}, "x": {"docs": {"sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}}, "df": 1, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.dataframe.sql.DataFrame.orderBy": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.sort": {"tf": 1}}, "df": 2}}}}, "g": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dialects.snowflake.Snowflake.Generator.select_sql": {"tf": 1}, "sqlglot.executor.table.Tables": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 1}, "sqlglot.planner.Step.from_expression": {"tf": 1}, "sqlglot.planner.Scan.from_expression": {"tf": 1}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1}}, "df": 8}}}, "n": {"docs": {"sqlglot.diff": {"tf": 1.4142135623730951}, "sqlglot.helper.split_num_words": {"tf": 1}}, "df": 2, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {"sqlglot.helper.split_num_words": {"tf": 1}}, "df": 1}}}}}, "d": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}, "s": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}}}}}}}, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.schema.MappingSchema": {"tf": 1}}, "df": 1}}}}}}, "j": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1, "o": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot": {"tf": 3}, "sqlglot.executor": {"tf": 2.449489742783178}, "sqlglot.expressions.Join.on": {"tf": 2.23606797749979}, "sqlglot.expressions.Join.using": {"tf": 2.23606797749979}, "sqlglot.expressions.Select.join": {"tf": 3.7416573867739413}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 1.4142135623730951}, "sqlglot.optimizer.eliminate_joins.join_condition": {"tf": 2.23606797749979}, "sqlglot.optimizer.eliminate_subqueries.eliminate_subqueries": {"tf": 1.4142135623730951}, "sqlglot.optimizer.expand_multi_table_selects.expand_multi_table_selects": {"tf": 1}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 2}, "sqlglot.optimizer.optimize_joins.optimize_joins": {"tf": 2}, "sqlglot.optimizer.scope.Scope.selected_sources": {"tf": 1}, "sqlglot.optimizer.scope.Scope.join_hints": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 1.4142135623730951}, "sqlglot.planner.Step.from_expression": {"tf": 1.4142135623730951}, "sqlglot.planner.Scan.from_expression": {"tf": 1.4142135623730951}, "sqlglot.planner.SetOperation.from_expression": {"tf": 1.4142135623730951}, "sqlglot.transforms.unnest_to_explode": {"tf": 1}}, "df": 18, "s": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.executor": {"tf": 1.4142135623730951}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 1.7320508075688772}, "sqlglot.optimizer.expand_multi_table_selects.expand_multi_table_selects": {"tf": 1}, "sqlglot.optimizer.optimize_joins.optimize_joins": {"tf": 1.7320508075688772}, "sqlglot.optimizer.optimize_joins.reorder_joins": {"tf": 1}, "sqlglot.optimizer.optimize_joins.normalize": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_predicates": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 1.4142135623730951}}, "df": 9}, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.optimizer.scope.Scope.join_hints": {"tf": 1}}, "df": 1}}}}}}, "h": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.dataframe": {"tf": 1.7320508075688772}}, "df": 1}}, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}, "b": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.dataframe.sql.DataFrame.fillna": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator.datatype_sql": {"tf": 1}, "sqlglot.diff": {"tf": 2.23606797749979}, "sqlglot.executor": {"tf": 2.23606797749979}}, "df": 5}}, "n": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {"sqlglot.dataframe": {"tf": 1.7320508075688772}}, "df": 1}}, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}, "v": {"docs": {}, "df": 0, "a": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 1}}, "df": 2}}}, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}, "v": {"docs": {}, "df": 0, "m": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}, "s": {"docs": {"sqlglot.lineage.LineageHTML": {"tf": 1}}, "df": 1, "o": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.Expression.dump": {"tf": 1}, "sqlglot.serde.dump": {"tf": 1}}, "df": 2}}}}, "x": {"docs": {"sqlglot": {"tf": 4.898979485566356}, "sqlglot.diff": {"tf": 1}, "sqlglot.executor": {"tf": 4.358898943540674}, "sqlglot.expressions.Expression.replace": {"tf": 1}, "sqlglot.expressions.Expression.assert_is": {"tf": 1.4142135623730951}, "sqlglot.expressions.Condition.and_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Condition.or_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Condition.not_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Predicate": {"tf": 1.7320508075688772}, "sqlglot.expressions.Delete.where": {"tf": 2}, "sqlglot.expressions.Join.on": {"tf": 1.4142135623730951}, "sqlglot.expressions.Join.using": {"tf": 1.4142135623730951}, "sqlglot.expressions.Subqueryable.subquery": {"tf": 2}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Union.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.from_": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.group_by": {"tf": 2}, "sqlglot.expressions.Select.order_by": {"tf": 2}, "sqlglot.expressions.Select.sort_by": {"tf": 2}, "sqlglot.expressions.Select.cluster_by": {"tf": 2}, "sqlglot.expressions.Select.limit": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.offset": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.lateral": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.join": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.where": {"tf": 2.449489742783178}, "sqlglot.expressions.Select.having": {"tf": 2}, "sqlglot.expressions.Select.distinct": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.ctas": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.lock": {"tf": 2.8284271247461903}, "sqlglot.expressions.Tag": {"tf": 1}, "sqlglot.expressions.maybe_parse": {"tf": 1.4142135623730951}, "sqlglot.expressions.update": {"tf": 1.4142135623730951}, "sqlglot.expressions.condition": {"tf": 2}, "sqlglot.expressions.and_": {"tf": 1.4142135623730951}, "sqlglot.expressions.or_": {"tf": 1.4142135623730951}, "sqlglot.expressions.subquery": {"tf": 2}, "sqlglot.expressions.cast": {"tf": 1.4142135623730951}, "sqlglot.expressions.var": {"tf": 2}, "sqlglot.expressions.expand": {"tf": 2.449489742783178}, "sqlglot.optimizer.annotate_types.annotate_types": {"tf": 1.7320508075688772}, "sqlglot.optimizer.eliminate_ctes.eliminate_ctes": {"tf": 1}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 2.23606797749979}, "sqlglot.optimizer.eliminate_subqueries.eliminate_subqueries": {"tf": 2.23606797749979}, "sqlglot.optimizer.expand_laterals.expand_laterals": {"tf": 2.23606797749979}, "sqlglot.optimizer.expand_multi_table_selects.expand_multi_table_selects": {"tf": 1.4142135623730951}, "sqlglot.optimizer.merge_subqueries.merge_subqueries": {"tf": 2.8284271247461903}, "sqlglot.optimizer.normalize.normalize": {"tf": 1.4142135623730951}, "sqlglot.optimizer.normalize.distributive_law": {"tf": 2.449489742783178}, "sqlglot.optimizer.optimize_joins.optimize_joins": {"tf": 2}, "sqlglot.optimizer.pushdown_predicates.pushdown_predicates": {"tf": 2}, "sqlglot.optimizer.pushdown_projections.pushdown_projections": {"tf": 2.23606797749979}, "sqlglot.optimizer.scope.Scope": {"tf": 2.6457513110645907}, "sqlglot.optimizer.scope.Scope.subqueries": {"tf": 1}, "sqlglot.optimizer.scope.Scope.selects": {"tf": 1}, "sqlglot.optimizer.scope.traverse_scope": {"tf": 2}, "sqlglot.optimizer.simplify.rewrite_between": {"tf": 1.7320508075688772}, "sqlglot.optimizer.simplify.simplify_not": {"tf": 2}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"tf": 2.449489742783178}, "sqlglot.planner.Step.from_expression": {"tf": 4}, "sqlglot.planner.Scan.from_expression": {"tf": 4}, "sqlglot.planner.SetOperation.from_expression": {"tf": 4}, "sqlglot.transforms.unalias_group": {"tf": 1.4142135623730951}}, "df": 63, "a": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}, "z": {"docs": {"sqlglot": {"tf": 3}, "sqlglot.expressions.Expression.assert_is": {"tf": 1.4142135623730951}, "sqlglot.expressions.Union.select": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.lateral": {"tf": 1.4142135623730951}, "sqlglot.expressions.Select.join": {"tf": 1.4142135623730951}, "sqlglot.expressions.update": {"tf": 1.4142135623730951}, "sqlglot.expressions.and_": {"tf": 1.4142135623730951}, "sqlglot.expressions.or_": {"tf": 1.4142135623730951}, "sqlglot.expressions.expand": {"tf": 2.449489742783178}, "sqlglot.optimizer.eliminate_ctes.eliminate_ctes": {"tf": 1.4142135623730951}, "sqlglot.optimizer.eliminate_subqueries.eliminate_subqueries": {"tf": 1.4142135623730951}, "sqlglot.optimizer.normalize.normalize": {"tf": 1.7320508075688772}, "sqlglot.optimizer.normalize.distributive_law": {"tf": 2.23606797749979}, "sqlglot.optimizer.optimize_joins.optimize_joins": {"tf": 2.449489742783178}, "sqlglot.optimizer.simplify.rewrite_between": {"tf": 1.4142135623730951}}, "df": 15, "e": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {"sqlglot.executor": {"tf": 1}}, "df": 1}}}}, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {"sqlglot": {"tf": 1}, "sqlglot.diff": {"tf": 3.605551275463989}, "sqlglot.diff.diff": {"tf": 1.7320508075688772}, "sqlglot.executor": {"tf": 1}}, "df": 4}}, "y": {"docs": {"sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.executor.table.Tables": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression": {"tf": 2}, "sqlglot.expressions.Expression.this": {"tf": 1}, "sqlglot.expressions.Expression.expression": {"tf": 1}, "sqlglot.expressions.Expression.expressions": {"tf": 1}, "sqlglot.expressions.Expression.text": {"tf": 1}, "sqlglot.expressions.Expression.append": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.set": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.iter_expressions": {"tf": 1}, "sqlglot.expressions.Expression.walk": {"tf": 1}, "sqlglot.generator.Generator": {"tf": 1}, "sqlglot.optimizer.eliminate_joins.join_condition": {"tf": 1.4142135623730951}, "sqlglot.optimizer.scope.walk_in_scope": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1.4142135623730951}, "sqlglot.trie.in_trie": {"tf": 2}}, "df": 35, "w": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.executor": {"tf": 1}, "sqlglot.expressions.replace_placeholders": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.trie.new_trie": {"tf": 1}, "sqlglot.trie.in_trie": {"tf": 1}}, "df": 5, "s": {"docs": {"sqlglot": {"tf": 1.4142135623730951}, "sqlglot.dialects": {"tf": 1.4142135623730951}, "sqlglot.trie.new_trie": {"tf": 2}}, "df": 3}}}}}, "s": {"docs": {"sqlglot.dataframe": {"tf": 1}, "sqlglot.dialects.bigquery.BigQuery.Generator": {"tf": 1}, "sqlglot.dialects.clickhouse.ClickHouse.Generator": {"tf": 1}, "sqlglot.dialects.databricks.Databricks.Generator": {"tf": 1}, "sqlglot.dialects.drill.Drill.Generator": {"tf": 1}, "sqlglot.dialects.duckdb.DuckDB.Generator": {"tf": 1}, "sqlglot.dialects.hive.Hive.Generator": {"tf": 1}, "sqlglot.dialects.mysql.MySQL.Generator": {"tf": 1}, "sqlglot.dialects.oracle.Oracle.Generator": {"tf": 1}, "sqlglot.dialects.postgres.Postgres.Generator": {"tf": 1}, "sqlglot.dialects.presto.Presto.Generator": {"tf": 1}, "sqlglot.dialects.redshift.Redshift.Generator": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator": {"tf": 1}, "sqlglot.dialects.spark.Spark.Generator": {"tf": 1}, "sqlglot.dialects.sqlite.SQLite.Generator": {"tf": 1}, "sqlglot.dialects.starrocks.StarRocks.Generator": {"tf": 1}, "sqlglot.dialects.tableau.Tableau.Generator": {"tf": 1}, "sqlglot.dialects.teradata.Teradata.Generator": {"tf": 1}, "sqlglot.dialects.trino.Trino.Generator": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator": {"tf": 1}, "sqlglot.diff": {"tf": 1}, "sqlglot.executor.python.Python.Generator": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator": {"tf": 1}}, "df": 24}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.executor.table.Tables": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1}}, "df": 2}}}}, "d": {"docs": {"sqlglot.trie.new_trie": {"tf": 1}}, "df": 1}}}, "r": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot": {"tf": 1}}, "df": 1}}}}}, "p": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.optimizer.scope.Scope.replace": {"tf": 1}}, "df": 1}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.dataframe": {"tf": 1.7320508075688772}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1, "s": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {"sqlglot.diff": {"tf": 1}, "sqlglot.optimizer.eliminate_joins.eliminate_joins": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 3, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.diff": {"tf": 1}}, "df": 1}}}}}, "n": {"docs": {"sqlglot.diff.diff": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {"sqlglot.executor.table.Tables": {"tf": 1.4142135623730951}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1.4142135623730951}}, "df": 2}, "w": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "g": {"docs": {"sqlglot.expressions.Kwarg": {"tf": 1.4142135623730951}}, "df": 1, "s": {"docs": {"sqlglot.expressions.Condition.and_": {"tf": 1}, "sqlglot.expressions.Condition.or_": {"tf": 1}, "sqlglot.expressions.Unionable.union": {"tf": 1}, "sqlglot.expressions.Unionable.intersect": {"tf": 1}, "sqlglot.expressions.Unionable.except_": {"tf": 1}, "sqlglot.expressions.Join.on": {"tf": 1}, "sqlglot.expressions.Join.using": {"tf": 1}, "sqlglot.expressions.Subqueryable.with_": {"tf": 1}, "sqlglot.expressions.Union.limit": {"tf": 1}, "sqlglot.expressions.Select.from_": {"tf": 1}, "sqlglot.expressions.Select.group_by": {"tf": 1}, "sqlglot.expressions.Select.order_by": {"tf": 1}, "sqlglot.expressions.Select.sort_by": {"tf": 1}, "sqlglot.expressions.Select.cluster_by": {"tf": 1}, "sqlglot.expressions.Select.limit": {"tf": 1}, "sqlglot.expressions.Select.offset": {"tf": 1}, "sqlglot.expressions.Select.lateral": {"tf": 1}, "sqlglot.expressions.Select.join": {"tf": 1}, "sqlglot.expressions.Select.where": {"tf": 1}, "sqlglot.expressions.Select.having": {"tf": 1}, "sqlglot.expressions.Select.ctas": {"tf": 1}, "sqlglot.expressions.union": {"tf": 1}, "sqlglot.expressions.intersect": {"tf": 1}, "sqlglot.expressions.except_": {"tf": 1}, "sqlglot.expressions.replace_placeholders": {"tf": 1}, "sqlglot.expressions.func": {"tf": 1.7320508075688772}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1.4142135623730951}, "sqlglot.parser.Parser.expression": {"tf": 1}}, "df": 28}}}}}}}}}, "pipeline": ["trimmer"], "_isPrebuiltIndex": true}; // mirrored in build-search-index.js (part 1) // Also split on html tags. this is a cheap heuristic, but good enough. diff --git a/docs/sqlglot.html b/docs/sqlglot.html index bca466c..8c37b8d 100644 --- a/docs/sqlglot.html +++ b/docs/sqlglot.html @@ -3,7 +3,7 @@ - + sqlglot API documentation @@ -146,7 +146,7 @@

Get in Touch

-

We'd love to hear from you. Join our community Slack channel!

+

We'd love to hear from you. Join our community Slack channel!

Examples

@@ -557,6 +557,7 @@

Used By

    +
  • SQLMesh
  • Fugue
  • ibis
  • mysql-mimic
  • @@ -698,7 +699,7 @@ 47 T = t.TypeVar("T", bound=Expression) 48 49 - 50__version__ = "11.5.1" + 50__version__ = "11.6.3" 51 52pretty = False 53"""Whether to format generated SQL by default.""" diff --git a/docs/sqlglot/dataframe.html b/docs/sqlglot/dataframe.html index e042de2..d86d6ff 100644 --- a/docs/sqlglot/dataframe.html +++ b/docs/sqlglot/dataframe.html @@ -3,7 +3,7 @@ - + sqlglot.dataframe API documentation diff --git a/docs/sqlglot/dataframe/sql.html b/docs/sqlglot/dataframe/sql.html index 9fd995a..a9a7f9d 100644 --- a/docs/sqlglot/dataframe/sql.html +++ b/docs/sqlglot/dataframe/sql.html @@ -3,7 +3,7 @@ - + sqlglot.dataframe.sql API documentation @@ -608,7 +608,7 @@
    def - createDataFrame( self, data: Sequence[Union[Dict[str, <MagicMock id='139719846869552'>], List[<MagicMock id='139719846869552'>], Tuple]], schema: Optional[<MagicMock id='139719847382416'>] = None, samplingRatio: Optional[float] = None, verifySchema: bool = False) -> sqlglot.dataframe.sql.DataFrame: + createDataFrame( self, data: Sequence[Union[Dict[str, <MagicMock id='140377708850400'>], List[<MagicMock id='140377708850400'>], Tuple]], schema: Optional[<MagicMock id='140377708766032'>] = None, samplingRatio: Optional[float] = None, verifySchema: bool = False) -> sqlglot.dataframe.sql.DataFrame: @@ -835,9 +835,9 @@ 147 def _ensure_list_of_columns(self, cols): 148 return Column.ensure_cols(ensure_list(cols)) 149 -150 def _ensure_and_normalize_cols(self, cols): +150 def _ensure_and_normalize_cols(self, cols, expression: t.Optional[exp.Select] = None): 151 cols = self._ensure_list_of_columns(cols) -152 normalize(self.spark, self.expression, cols) +152 normalize(self.spark, expression or self.expression, cols) 153 return cols 154 155 def _ensure_and_normalize_col(self, col): @@ -1044,429 +1044,466 @@ 356 cols = self._ensure_and_normalize_cols(cols) 357 kwargs["append"] = kwargs.get("append", False) 358 if self.expression.args.get("joins"): -359 ambiguous_cols = [col for col in cols if not col.column_expression.table] -360 if ambiguous_cols: -361 join_table_identifiers = [ -362 x.this for x in get_tables_from_expression_with_join(self.expression) -363 ] -364 cte_names_in_join = [x.this for x in join_table_identifiers] -365 for ambiguous_col in ambiguous_cols: -366 ctes_with_column = [ -367 cte -368 for cte in self.expression.ctes -369 if cte.alias_or_name in cte_names_in_join -370 and ambiguous_col.alias_or_name in cte.this.named_selects -371 ] -372 # If the select column does not specify a table and there is a join -373 # then we assume they are referring to the left table -374 if len(ctes_with_column) > 1: -375 table_identifier = self.expression.args["from"].args["expressions"][0].this -376 else: -377 table_identifier = ctes_with_column[0].args["alias"].this -378 ambiguous_col.expression.set("table", table_identifier) -379 return self.copy( -380 expression=self.expression.select(*[x.expression for x in cols], **kwargs), **kwargs -381 ) -382 -383 @operation(Operation.NO_OP) -384 def alias(self, name: str, **kwargs) -> DataFrame: -385 new_sequence_id = self.spark._random_sequence_id -386 df = self.copy() -387 for join_hint in df.pending_join_hints: -388 for expression in join_hint.expressions: -389 if expression.alias_or_name == self.sequence_id: -390 expression.set("this", Column.ensure_col(new_sequence_id).expression) -391 df.spark._add_alias_to_mapping(name, new_sequence_id) -392 return df._convert_leaf_to_cte(sequence_id=new_sequence_id) -393 -394 @operation(Operation.WHERE) -395 def where(self, column: t.Union[Column, bool], **kwargs) -> DataFrame: -396 col = self._ensure_and_normalize_col(column) -397 return self.copy(expression=self.expression.where(col.expression)) -398 -399 filter = where -400 -401 @operation(Operation.GROUP_BY) -402 def groupBy(self, *cols, **kwargs) -> GroupedData: -403 columns = self._ensure_and_normalize_cols(cols) -404 return GroupedData(self, columns, self.last_op) -405 -406 @operation(Operation.SELECT) -407 def agg(self, *exprs, **kwargs) -> DataFrame: -408 cols = self._ensure_and_normalize_cols(exprs) -409 return self.groupBy().agg(*cols) -410 -411 @operation(Operation.FROM) -412 def join( -413 self, -414 other_df: DataFrame, -415 on: t.Union[str, t.List[str], Column, t.List[Column]], -416 how: str = "inner", -417 **kwargs, -418 ) -> DataFrame: -419 other_df = other_df._convert_leaf_to_cte() -420 pre_join_self_latest_cte_name = self.latest_cte_name -421 columns = self._ensure_and_normalize_cols(on) -422 join_type = how.replace("_", " ") -423 if isinstance(columns[0].expression, exp.Column): -424 join_columns = [ -425 Column(x).set_table_name(pre_join_self_latest_cte_name) for x in columns -426 ] -427 join_clause = functools.reduce( -428 lambda x, y: x & y, -429 [ -430 col.copy().set_table_name(pre_join_self_latest_cte_name) -431 == col.copy().set_table_name(other_df.latest_cte_name) -432 for col in columns -433 ], -434 ) -435 else: -436 if len(columns) > 1: -437 columns = [functools.reduce(lambda x, y: x & y, columns)] -438 join_clause = columns[0] -439 join_columns = [ -440 Column(x).set_table_name(pre_join_self_latest_cte_name) -441 if i % 2 == 0 -442 else Column(x).set_table_name(other_df.latest_cte_name) -443 for i, x in enumerate(join_clause.expression.find_all(exp.Column)) -444 ] -445 self_columns = [ -446 column.set_table_name(pre_join_self_latest_cte_name, copy=True) -447 for column in self._get_outer_select_columns(self) -448 ] -449 other_columns = [ -450 column.set_table_name(other_df.latest_cte_name, copy=True) -451 for column in self._get_outer_select_columns(other_df) -452 ] -453 column_value_mapping = { -454 column.alias_or_name -455 if not isinstance(column.expression.this, exp.Star) -456 else column.sql(): column -457 for column in other_columns + self_columns + join_columns -458 } -459 all_columns = [ -460 column_value_mapping[name] -461 for name in {x.alias_or_name: None for x in join_columns + self_columns + other_columns} -462 ] -463 new_df = self.copy( -464 expression=self.expression.join( -465 other_df.latest_cte_name, on=join_clause.expression, join_type=join_type -466 ) -467 ) -468 new_df.expression = new_df._add_ctes_to_expression( -469 new_df.expression, other_df.expression.ctes -470 ) -471 new_df.pending_hints.extend(other_df.pending_hints) -472 new_df = new_df.select.__wrapped__(new_df, *all_columns) -473 return new_df -474 -475 @operation(Operation.ORDER_BY) -476 def orderBy( -477 self, -478 *cols: t.Union[str, Column], -479 ascending: t.Optional[t.Union[t.Any, t.List[t.Any]]] = None, -480 ) -> DataFrame: -481 """ -482 This implementation lets any ordered columns take priority over whatever is provided in `ascending`. Spark -483 has irregular behavior and can result in runtime errors. Users shouldn't be mixing the two anyways so this -484 is unlikely to come up. -485 """ -486 columns = self._ensure_and_normalize_cols(cols) -487 pre_ordered_col_indexes = [ -488 x -489 for x in [ -490 i if isinstance(col.expression, exp.Ordered) else None -491 for i, col in enumerate(columns) -492 ] -493 if x is not None -494 ] -495 if ascending is None: -496 ascending = [True] * len(columns) -497 elif not isinstance(ascending, list): -498 ascending = [ascending] * len(columns) -499 ascending = [bool(x) for i, x in enumerate(ascending)] -500 assert len(columns) == len( -501 ascending -502 ), "The length of items in ascending must equal the number of columns provided" -503 col_and_ascending = list(zip(columns, ascending)) -504 order_by_columns = [ -505 exp.Ordered(this=col.expression, desc=not asc) -506 if i not in pre_ordered_col_indexes -507 else columns[i].column_expression -508 for i, (col, asc) in enumerate(col_and_ascending) -509 ] -510 return self.copy(expression=self.expression.order_by(*order_by_columns)) +359 ambiguous_cols = [ +360 col +361 for col in cols +362 if isinstance(col.column_expression, exp.Column) and not col.column_expression.table +363 ] +364 if ambiguous_cols: +365 join_table_identifiers = [ +366 x.this for x in get_tables_from_expression_with_join(self.expression) +367 ] +368 cte_names_in_join = [x.this for x in join_table_identifiers] +369 # If we have columns that resolve to multiple CTE expressions then we want to use each CTE left-to-right +370 # and therefore we allow multiple columns with the same name in the result. This matches the behavior +371 # of Spark. +372 resolved_column_position: t.Dict[Column, int] = {col: -1 for col in ambiguous_cols} +373 for ambiguous_col in ambiguous_cols: +374 ctes_with_column = [ +375 cte +376 for cte in self.expression.ctes +377 if cte.alias_or_name in cte_names_in_join +378 and ambiguous_col.alias_or_name in cte.this.named_selects +379 ] +380 # Check if there is a CTE with this column that we haven't used before. If so, use it. Otherwise, +381 # use the same CTE we used before +382 cte = seq_get(ctes_with_column, resolved_column_position[ambiguous_col] + 1) +383 if cte: +384 resolved_column_position[ambiguous_col] += 1 +385 else: +386 cte = ctes_with_column[resolved_column_position[ambiguous_col]] +387 ambiguous_col.expression.set("table", cte.alias_or_name) +388 return self.copy( +389 expression=self.expression.select(*[x.expression for x in cols], **kwargs), **kwargs +390 ) +391 +392 @operation(Operation.NO_OP) +393 def alias(self, name: str, **kwargs) -> DataFrame: +394 new_sequence_id = self.spark._random_sequence_id +395 df = self.copy() +396 for join_hint in df.pending_join_hints: +397 for expression in join_hint.expressions: +398 if expression.alias_or_name == self.sequence_id: +399 expression.set("this", Column.ensure_col(new_sequence_id).expression) +400 df.spark._add_alias_to_mapping(name, new_sequence_id) +401 return df._convert_leaf_to_cte(sequence_id=new_sequence_id) +402 +403 @operation(Operation.WHERE) +404 def where(self, column: t.Union[Column, bool], **kwargs) -> DataFrame: +405 col = self._ensure_and_normalize_col(column) +406 return self.copy(expression=self.expression.where(col.expression)) +407 +408 filter = where +409 +410 @operation(Operation.GROUP_BY) +411 def groupBy(self, *cols, **kwargs) -> GroupedData: +412 columns = self._ensure_and_normalize_cols(cols) +413 return GroupedData(self, columns, self.last_op) +414 +415 @operation(Operation.SELECT) +416 def agg(self, *exprs, **kwargs) -> DataFrame: +417 cols = self._ensure_and_normalize_cols(exprs) +418 return self.groupBy().agg(*cols) +419 +420 @operation(Operation.FROM) +421 def join( +422 self, +423 other_df: DataFrame, +424 on: t.Union[str, t.List[str], Column, t.List[Column]], +425 how: str = "inner", +426 **kwargs, +427 ) -> DataFrame: +428 other_df = other_df._convert_leaf_to_cte() +429 join_columns = self._ensure_list_of_columns(on) +430 # We will determine actual "join on" expression later so we don't provide it at first +431 join_expression = self.expression.join( +432 other_df.latest_cte_name, join_type=how.replace("_", " ") +433 ) +434 join_expression = self._add_ctes_to_expression(join_expression, other_df.expression.ctes) +435 self_columns = self._get_outer_select_columns(join_expression) +436 other_columns = self._get_outer_select_columns(other_df) +437 # Determines the join clause and select columns to be used passed on what type of columns were provided for +438 # the join. The columns returned changes based on how the on expression is provided. +439 if isinstance(join_columns[0].expression, exp.Column): +440 """ +441 Unique characteristics of join on column names only: +442 * The column names are put at the front of the select list +443 * The column names are deduplicated across the entire select list and only the column names (other dups are allowed) +444 """ +445 table_names = [ +446 table.alias_or_name +447 for table in get_tables_from_expression_with_join(join_expression) +448 ] +449 potential_ctes = [ +450 cte +451 for cte in join_expression.ctes +452 if cte.alias_or_name in table_names +453 and cte.alias_or_name != other_df.latest_cte_name +454 ] +455 # Determine the table to reference for the left side of the join by checking each of the left side +456 # tables and see if they have the column being referenced. +457 join_column_pairs = [] +458 for join_column in join_columns: +459 num_matching_ctes = 0 +460 for cte in potential_ctes: +461 if join_column.alias_or_name in cte.this.named_selects: +462 left_column = join_column.copy().set_table_name(cte.alias_or_name) +463 right_column = join_column.copy().set_table_name(other_df.latest_cte_name) +464 join_column_pairs.append((left_column, right_column)) +465 num_matching_ctes += 1 +466 if num_matching_ctes > 1: +467 raise ValueError( +468 f"Column {join_column.alias_or_name} is ambiguous. Please specify the table name." +469 ) +470 elif num_matching_ctes == 0: +471 raise ValueError( +472 f"Column {join_column.alias_or_name} does not exist in any of the tables." +473 ) +474 join_clause = functools.reduce( +475 lambda x, y: x & y, +476 [left_column == right_column for left_column, right_column in join_column_pairs], +477 ) +478 join_column_names = [left_col.alias_or_name for left_col, _ in join_column_pairs] +479 # To match spark behavior only the join clause gets deduplicated and it gets put in the front of the column list +480 select_column_names = [ +481 column.alias_or_name +482 if not isinstance(column.expression.this, exp.Star) +483 else column.sql() +484 for column in self_columns + other_columns +485 ] +486 select_column_names = [ +487 column_name +488 for column_name in select_column_names +489 if column_name not in join_column_names +490 ] +491 select_column_names = join_column_names + select_column_names +492 else: +493 """ +494 Unique characteristics of join on expressions: +495 * There is no deduplication of the results. +496 * The left join dataframe columns go first and right come after. No sort preference is given to join columns +497 """ +498 join_columns = self._ensure_and_normalize_cols(join_columns, join_expression) +499 if len(join_columns) > 1: +500 join_columns = [functools.reduce(lambda x, y: x & y, join_columns)] +501 join_clause = join_columns[0] +502 select_column_names = [column.alias_or_name for column in self_columns + other_columns] +503 +504 # Update the on expression with the actual join clause to replace the dummy one from before +505 join_expression.args["joins"][-1].set("on", join_clause.expression) +506 new_df = self.copy(expression=join_expression) +507 new_df.pending_join_hints.extend(self.pending_join_hints) +508 new_df.pending_hints.extend(other_df.pending_hints) +509 new_df = new_df.select.__wrapped__(new_df, *select_column_names) +510 return new_df 511 -512 sort = orderBy -513 -514 @operation(Operation.FROM) -515 def union(self, other: DataFrame) -> DataFrame: -516 return self._set_operation(exp.Union, other, False) -517 -518 unionAll = union -519 -520 @operation(Operation.FROM) -521 def unionByName(self, other: DataFrame, allowMissingColumns: bool = False): -522 l_columns = self.columns -523 r_columns = other.columns -524 if not allowMissingColumns: -525 l_expressions = l_columns -526 r_expressions = l_columns -527 else: -528 l_expressions = [] -529 r_expressions = [] -530 r_columns_unused = copy(r_columns) -531 for l_column in l_columns: -532 l_expressions.append(l_column) -533 if l_column in r_columns: -534 r_expressions.append(l_column) -535 r_columns_unused.remove(l_column) -536 else: -537 r_expressions.append(exp.alias_(exp.Null(), l_column)) -538 for r_column in r_columns_unused: -539 l_expressions.append(exp.alias_(exp.Null(), r_column)) -540 r_expressions.append(r_column) -541 r_df = ( -542 other.copy()._convert_leaf_to_cte().select(*self._ensure_list_of_columns(r_expressions)) -543 ) -544 l_df = self.copy() -545 if allowMissingColumns: -546 l_df = l_df._convert_leaf_to_cte().select(*self._ensure_list_of_columns(l_expressions)) -547 return l_df._set_operation(exp.Union, r_df, False) +512 @operation(Operation.ORDER_BY) +513 def orderBy( +514 self, +515 *cols: t.Union[str, Column], +516 ascending: t.Optional[t.Union[t.Any, t.List[t.Any]]] = None, +517 ) -> DataFrame: +518 """ +519 This implementation lets any ordered columns take priority over whatever is provided in `ascending`. Spark +520 has irregular behavior and can result in runtime errors. Users shouldn't be mixing the two anyways so this +521 is unlikely to come up. +522 """ +523 columns = self._ensure_and_normalize_cols(cols) +524 pre_ordered_col_indexes = [ +525 x +526 for x in [ +527 i if isinstance(col.expression, exp.Ordered) else None +528 for i, col in enumerate(columns) +529 ] +530 if x is not None +531 ] +532 if ascending is None: +533 ascending = [True] * len(columns) +534 elif not isinstance(ascending, list): +535 ascending = [ascending] * len(columns) +536 ascending = [bool(x) for i, x in enumerate(ascending)] +537 assert len(columns) == len( +538 ascending +539 ), "The length of items in ascending must equal the number of columns provided" +540 col_and_ascending = list(zip(columns, ascending)) +541 order_by_columns = [ +542 exp.Ordered(this=col.expression, desc=not asc) +543 if i not in pre_ordered_col_indexes +544 else columns[i].column_expression +545 for i, (col, asc) in enumerate(col_and_ascending) +546 ] +547 return self.copy(expression=self.expression.order_by(*order_by_columns)) 548 -549 @operation(Operation.FROM) -550 def intersect(self, other: DataFrame) -> DataFrame: -551 return self._set_operation(exp.Intersect, other, True) -552 -553 @operation(Operation.FROM) -554 def intersectAll(self, other: DataFrame) -> DataFrame: -555 return self._set_operation(exp.Intersect, other, False) +549 sort = orderBy +550 +551 @operation(Operation.FROM) +552 def union(self, other: DataFrame) -> DataFrame: +553 return self._set_operation(exp.Union, other, False) +554 +555 unionAll = union 556 557 @operation(Operation.FROM) -558 def exceptAll(self, other: DataFrame) -> DataFrame: -559 return self._set_operation(exp.Except, other, False) -560 -561 @operation(Operation.SELECT) -562 def distinct(self) -> DataFrame: -563 return self.copy(expression=self.expression.distinct()) -564 -565 @operation(Operation.SELECT) -566 def dropDuplicates(self, subset: t.Optional[t.List[str]] = None): -567 if not subset: -568 return self.distinct() -569 column_names = ensure_list(subset) -570 window = Window.partitionBy(*column_names).orderBy(*column_names) -571 return ( -572 self.copy() -573 .withColumn("row_num", F.row_number().over(window)) -574 .where(F.col("row_num") == F.lit(1)) -575 .drop("row_num") -576 ) -577 -578 @operation(Operation.FROM) -579 def dropna( -580 self, -581 how: str = "any", -582 thresh: t.Optional[int] = None, -583 subset: t.Optional[t.Union[str, t.Tuple[str, ...], t.List[str]]] = None, -584 ) -> DataFrame: -585 minimum_non_null = thresh or 0 # will be determined later if thresh is null -586 new_df = self.copy() -587 all_columns = self._get_outer_select_columns(new_df.expression) -588 if subset: -589 null_check_columns = self._ensure_and_normalize_cols(subset) -590 else: -591 null_check_columns = all_columns -592 if thresh is None: -593 minimum_num_nulls = 1 if how == "any" else len(null_check_columns) -594 else: -595 minimum_num_nulls = len(null_check_columns) - minimum_non_null + 1 -596 if minimum_num_nulls > len(null_check_columns): -597 raise RuntimeError( -598 f"The minimum num nulls for dropna must be less than or equal to the number of columns. " -599 f"Minimum num nulls: {minimum_num_nulls}, Num Columns: {len(null_check_columns)}" -600 ) -601 if_null_checks = [ -602 F.when(column.isNull(), F.lit(1)).otherwise(F.lit(0)) for column in null_check_columns -603 ] -604 nulls_added_together = functools.reduce(lambda x, y: x + y, if_null_checks) -605 num_nulls = nulls_added_together.alias("num_nulls") -606 new_df = new_df.select(num_nulls, append=True) -607 filtered_df = new_df.where(F.col("num_nulls") < F.lit(minimum_num_nulls)) -608 final_df = filtered_df.select(*all_columns) -609 return final_df -610 -611 @operation(Operation.FROM) -612 def fillna( -613 self, -614 value: t.Union[ColumnLiterals], -615 subset: t.Optional[t.Union[str, t.Tuple[str, ...], t.List[str]]] = None, -616 ) -> DataFrame: -617 """ -618 Functionality Difference: If you provide a value to replace a null and that type conflicts -619 with the type of the column then PySpark will just ignore your replacement. -620 This will try to cast them to be the same in some cases. So they won't always match. -621 Best to not mix types so make sure replacement is the same type as the column -622 -623 Possibility for improvement: Use `typeof` function to get the type of the column -624 and check if it matches the type of the value provided. If not then make it null. -625 """ -626 from sqlglot.dataframe.sql.functions import lit -627 -628 values = None -629 columns = None -630 new_df = self.copy() -631 all_columns = self._get_outer_select_columns(new_df.expression) -632 all_column_mapping = {column.alias_or_name: column for column in all_columns} -633 if isinstance(value, dict): -634 values = list(value.values()) -635 columns = self._ensure_and_normalize_cols(list(value)) -636 if not columns: -637 columns = self._ensure_and_normalize_cols(subset) if subset else all_columns -638 if not values: -639 values = [value] * len(columns) -640 value_columns = [lit(value) for value in values] -641 -642 null_replacement_mapping = { -643 column.alias_or_name: ( -644 F.when(column.isNull(), value).otherwise(column).alias(column.alias_or_name) -645 ) -646 for column, value in zip(columns, value_columns) -647 } -648 null_replacement_mapping = {**all_column_mapping, **null_replacement_mapping} -649 null_replacement_columns = [ -650 null_replacement_mapping[column.alias_or_name] for column in all_columns -651 ] -652 new_df = new_df.select(*null_replacement_columns) -653 return new_df -654 -655 @operation(Operation.FROM) -656 def replace( -657 self, -658 to_replace: t.Union[bool, int, float, str, t.List, t.Dict], -659 value: t.Optional[t.Union[bool, int, float, str, t.List]] = None, -660 subset: t.Optional[t.Collection[ColumnOrName] | ColumnOrName] = None, -661 ) -> DataFrame: -662 from sqlglot.dataframe.sql.functions import lit -663 -664 old_values = None -665 new_df = self.copy() -666 all_columns = self._get_outer_select_columns(new_df.expression) -667 all_column_mapping = {column.alias_or_name: column for column in all_columns} -668 -669 columns = self._ensure_and_normalize_cols(subset) if subset else all_columns -670 if isinstance(to_replace, dict): -671 old_values = list(to_replace) -672 new_values = list(to_replace.values()) -673 elif not old_values and isinstance(to_replace, list): -674 assert isinstance(value, list), "value must be a list since the replacements are a list" -675 assert len(to_replace) == len( -676 value -677 ), "the replacements and values must be the same length" -678 old_values = to_replace -679 new_values = value -680 else: -681 old_values = [to_replace] * len(columns) -682 new_values = [value] * len(columns) -683 old_values = [lit(value) for value in old_values] -684 new_values = [lit(value) for value in new_values] -685 -686 replacement_mapping = {} -687 for column in columns: -688 expression = Column(None) -689 for i, (old_value, new_value) in enumerate(zip(old_values, new_values)): -690 if i == 0: -691 expression = F.when(column == old_value, new_value) -692 else: -693 expression = expression.when(column == old_value, new_value) # type: ignore -694 replacement_mapping[column.alias_or_name] = expression.otherwise(column).alias( -695 column.expression.alias_or_name -696 ) -697 -698 replacement_mapping = {**all_column_mapping, **replacement_mapping} -699 replacement_columns = [replacement_mapping[column.alias_or_name] for column in all_columns] -700 new_df = new_df.select(*replacement_columns) -701 return new_df -702 -703 @operation(Operation.SELECT) -704 def withColumn(self, colName: str, col: Column) -> DataFrame: -705 col = self._ensure_and_normalize_col(col) -706 existing_col_names = self.expression.named_selects -707 existing_col_index = ( -708 existing_col_names.index(colName) if colName in existing_col_names else None -709 ) -710 if existing_col_index: -711 expression = self.expression.copy() -712 expression.expressions[existing_col_index] = col.expression -713 return self.copy(expression=expression) -714 return self.copy().select(col.alias(colName), append=True) -715 -716 @operation(Operation.SELECT) -717 def withColumnRenamed(self, existing: str, new: str): -718 expression = self.expression.copy() -719 existing_columns = [ -720 expression -721 for expression in expression.expressions -722 if expression.alias_or_name == existing -723 ] -724 if not existing_columns: -725 raise ValueError("Tried to rename a column that doesn't exist") -726 for existing_column in existing_columns: -727 if isinstance(existing_column, exp.Column): -728 existing_column.replace(exp.alias_(existing_column.copy(), new)) -729 else: -730 existing_column.set("alias", exp.to_identifier(new)) -731 return self.copy(expression=expression) -732 -733 @operation(Operation.SELECT) -734 def drop(self, *cols: t.Union[str, Column]) -> DataFrame: -735 all_columns = self._get_outer_select_columns(self.expression) -736 drop_cols = self._ensure_and_normalize_cols(cols) -737 new_columns = [ -738 col -739 for col in all_columns -740 if col.alias_or_name not in [drop_column.alias_or_name for drop_column in drop_cols] -741 ] -742 return self.copy().select(*new_columns, append=False) -743 -744 @operation(Operation.LIMIT) -745 def limit(self, num: int) -> DataFrame: -746 return self.copy(expression=self.expression.limit(num)) -747 -748 @operation(Operation.NO_OP) -749 def hint(self, name: str, *parameters: t.Optional[t.Union[str, int]]) -> DataFrame: -750 parameter_list = ensure_list(parameters) -751 parameter_columns = ( -752 self._ensure_list_of_columns(parameter_list) -753 if parameters -754 else Column.ensure_cols([self.sequence_id]) -755 ) -756 return self._hint(name, parameter_columns) -757 -758 @operation(Operation.NO_OP) -759 def repartition( -760 self, numPartitions: t.Union[int, ColumnOrName], *cols: ColumnOrName -761 ) -> DataFrame: -762 num_partition_cols = self._ensure_list_of_columns(numPartitions) -763 columns = self._ensure_and_normalize_cols(cols) -764 args = num_partition_cols + columns -765 return self._hint("repartition", args) -766 -767 @operation(Operation.NO_OP) -768 def coalesce(self, numPartitions: int) -> DataFrame: -769 num_partitions = Column.ensure_cols([numPartitions]) -770 return self._hint("coalesce", num_partitions) -771 -772 @operation(Operation.NO_OP) -773 def cache(self) -> DataFrame: -774 return self._cache(storage_level="MEMORY_AND_DISK") -775 -776 @operation(Operation.NO_OP) -777 def persist(self, storageLevel: str = "MEMORY_AND_DISK_SER") -> DataFrame: -778 """ -779 Storage Level Options: https://spark.apache.org/docs/3.0.0-preview/sql-ref-syntax-aux-cache-cache-table.html -780 """ -781 return self._cache(storageLevel) +558 def unionByName(self, other: DataFrame, allowMissingColumns: bool = False): +559 l_columns = self.columns +560 r_columns = other.columns +561 if not allowMissingColumns: +562 l_expressions = l_columns +563 r_expressions = l_columns +564 else: +565 l_expressions = [] +566 r_expressions = [] +567 r_columns_unused = copy(r_columns) +568 for l_column in l_columns: +569 l_expressions.append(l_column) +570 if l_column in r_columns: +571 r_expressions.append(l_column) +572 r_columns_unused.remove(l_column) +573 else: +574 r_expressions.append(exp.alias_(exp.Null(), l_column)) +575 for r_column in r_columns_unused: +576 l_expressions.append(exp.alias_(exp.Null(), r_column)) +577 r_expressions.append(r_column) +578 r_df = ( +579 other.copy()._convert_leaf_to_cte().select(*self._ensure_list_of_columns(r_expressions)) +580 ) +581 l_df = self.copy() +582 if allowMissingColumns: +583 l_df = l_df._convert_leaf_to_cte().select(*self._ensure_list_of_columns(l_expressions)) +584 return l_df._set_operation(exp.Union, r_df, False) +585 +586 @operation(Operation.FROM) +587 def intersect(self, other: DataFrame) -> DataFrame: +588 return self._set_operation(exp.Intersect, other, True) +589 +590 @operation(Operation.FROM) +591 def intersectAll(self, other: DataFrame) -> DataFrame: +592 return self._set_operation(exp.Intersect, other, False) +593 +594 @operation(Operation.FROM) +595 def exceptAll(self, other: DataFrame) -> DataFrame: +596 return self._set_operation(exp.Except, other, False) +597 +598 @operation(Operation.SELECT) +599 def distinct(self) -> DataFrame: +600 return self.copy(expression=self.expression.distinct()) +601 +602 @operation(Operation.SELECT) +603 def dropDuplicates(self, subset: t.Optional[t.List[str]] = None): +604 if not subset: +605 return self.distinct() +606 column_names = ensure_list(subset) +607 window = Window.partitionBy(*column_names).orderBy(*column_names) +608 return ( +609 self.copy() +610 .withColumn("row_num", F.row_number().over(window)) +611 .where(F.col("row_num") == F.lit(1)) +612 .drop("row_num") +613 ) +614 +615 @operation(Operation.FROM) +616 def dropna( +617 self, +618 how: str = "any", +619 thresh: t.Optional[int] = None, +620 subset: t.Optional[t.Union[str, t.Tuple[str, ...], t.List[str]]] = None, +621 ) -> DataFrame: +622 minimum_non_null = thresh or 0 # will be determined later if thresh is null +623 new_df = self.copy() +624 all_columns = self._get_outer_select_columns(new_df.expression) +625 if subset: +626 null_check_columns = self._ensure_and_normalize_cols(subset) +627 else: +628 null_check_columns = all_columns +629 if thresh is None: +630 minimum_num_nulls = 1 if how == "any" else len(null_check_columns) +631 else: +632 minimum_num_nulls = len(null_check_columns) - minimum_non_null + 1 +633 if minimum_num_nulls > len(null_check_columns): +634 raise RuntimeError( +635 f"The minimum num nulls for dropna must be less than or equal to the number of columns. " +636 f"Minimum num nulls: {minimum_num_nulls}, Num Columns: {len(null_check_columns)}" +637 ) +638 if_null_checks = [ +639 F.when(column.isNull(), F.lit(1)).otherwise(F.lit(0)) for column in null_check_columns +640 ] +641 nulls_added_together = functools.reduce(lambda x, y: x + y, if_null_checks) +642 num_nulls = nulls_added_together.alias("num_nulls") +643 new_df = new_df.select(num_nulls, append=True) +644 filtered_df = new_df.where(F.col("num_nulls") < F.lit(minimum_num_nulls)) +645 final_df = filtered_df.select(*all_columns) +646 return final_df +647 +648 @operation(Operation.FROM) +649 def fillna( +650 self, +651 value: t.Union[ColumnLiterals], +652 subset: t.Optional[t.Union[str, t.Tuple[str, ...], t.List[str]]] = None, +653 ) -> DataFrame: +654 """ +655 Functionality Difference: If you provide a value to replace a null and that type conflicts +656 with the type of the column then PySpark will just ignore your replacement. +657 This will try to cast them to be the same in some cases. So they won't always match. +658 Best to not mix types so make sure replacement is the same type as the column +659 +660 Possibility for improvement: Use `typeof` function to get the type of the column +661 and check if it matches the type of the value provided. If not then make it null. +662 """ +663 from sqlglot.dataframe.sql.functions import lit +664 +665 values = None +666 columns = None +667 new_df = self.copy() +668 all_columns = self._get_outer_select_columns(new_df.expression) +669 all_column_mapping = {column.alias_or_name: column for column in all_columns} +670 if isinstance(value, dict): +671 values = list(value.values()) +672 columns = self._ensure_and_normalize_cols(list(value)) +673 if not columns: +674 columns = self._ensure_and_normalize_cols(subset) if subset else all_columns +675 if not values: +676 values = [value] * len(columns) +677 value_columns = [lit(value) for value in values] +678 +679 null_replacement_mapping = { +680 column.alias_or_name: ( +681 F.when(column.isNull(), value).otherwise(column).alias(column.alias_or_name) +682 ) +683 for column, value in zip(columns, value_columns) +684 } +685 null_replacement_mapping = {**all_column_mapping, **null_replacement_mapping} +686 null_replacement_columns = [ +687 null_replacement_mapping[column.alias_or_name] for column in all_columns +688 ] +689 new_df = new_df.select(*null_replacement_columns) +690 return new_df +691 +692 @operation(Operation.FROM) +693 def replace( +694 self, +695 to_replace: t.Union[bool, int, float, str, t.List, t.Dict], +696 value: t.Optional[t.Union[bool, int, float, str, t.List]] = None, +697 subset: t.Optional[t.Collection[ColumnOrName] | ColumnOrName] = None, +698 ) -> DataFrame: +699 from sqlglot.dataframe.sql.functions import lit +700 +701 old_values = None +702 new_df = self.copy() +703 all_columns = self._get_outer_select_columns(new_df.expression) +704 all_column_mapping = {column.alias_or_name: column for column in all_columns} +705 +706 columns = self._ensure_and_normalize_cols(subset) if subset else all_columns +707 if isinstance(to_replace, dict): +708 old_values = list(to_replace) +709 new_values = list(to_replace.values()) +710 elif not old_values and isinstance(to_replace, list): +711 assert isinstance(value, list), "value must be a list since the replacements are a list" +712 assert len(to_replace) == len( +713 value +714 ), "the replacements and values must be the same length" +715 old_values = to_replace +716 new_values = value +717 else: +718 old_values = [to_replace] * len(columns) +719 new_values = [value] * len(columns) +720 old_values = [lit(value) for value in old_values] +721 new_values = [lit(value) for value in new_values] +722 +723 replacement_mapping = {} +724 for column in columns: +725 expression = Column(None) +726 for i, (old_value, new_value) in enumerate(zip(old_values, new_values)): +727 if i == 0: +728 expression = F.when(column == old_value, new_value) +729 else: +730 expression = expression.when(column == old_value, new_value) # type: ignore +731 replacement_mapping[column.alias_or_name] = expression.otherwise(column).alias( +732 column.expression.alias_or_name +733 ) +734 +735 replacement_mapping = {**all_column_mapping, **replacement_mapping} +736 replacement_columns = [replacement_mapping[column.alias_or_name] for column in all_columns] +737 new_df = new_df.select(*replacement_columns) +738 return new_df +739 +740 @operation(Operation.SELECT) +741 def withColumn(self, colName: str, col: Column) -> DataFrame: +742 col = self._ensure_and_normalize_col(col) +743 existing_col_names = self.expression.named_selects +744 existing_col_index = ( +745 existing_col_names.index(colName) if colName in existing_col_names else None +746 ) +747 if existing_col_index: +748 expression = self.expression.copy() +749 expression.expressions[existing_col_index] = col.expression +750 return self.copy(expression=expression) +751 return self.copy().select(col.alias(colName), append=True) +752 +753 @operation(Operation.SELECT) +754 def withColumnRenamed(self, existing: str, new: str): +755 expression = self.expression.copy() +756 existing_columns = [ +757 expression +758 for expression in expression.expressions +759 if expression.alias_or_name == existing +760 ] +761 if not existing_columns: +762 raise ValueError("Tried to rename a column that doesn't exist") +763 for existing_column in existing_columns: +764 if isinstance(existing_column, exp.Column): +765 existing_column.replace(exp.alias_(existing_column.copy(), new)) +766 else: +767 existing_column.set("alias", exp.to_identifier(new)) +768 return self.copy(expression=expression) +769 +770 @operation(Operation.SELECT) +771 def drop(self, *cols: t.Union[str, Column]) -> DataFrame: +772 all_columns = self._get_outer_select_columns(self.expression) +773 drop_cols = self._ensure_and_normalize_cols(cols) +774 new_columns = [ +775 col +776 for col in all_columns +777 if col.alias_or_name not in [drop_column.alias_or_name for drop_column in drop_cols] +778 ] +779 return self.copy().select(*new_columns, append=False) +780 +781 @operation(Operation.LIMIT) +782 def limit(self, num: int) -> DataFrame: +783 return self.copy(expression=self.expression.limit(num)) +784 +785 @operation(Operation.NO_OP) +786 def hint(self, name: str, *parameters: t.Optional[t.Union[str, int]]) -> DataFrame: +787 parameter_list = ensure_list(parameters) +788 parameter_columns = ( +789 self._ensure_list_of_columns(parameter_list) +790 if parameters +791 else Column.ensure_cols([self.sequence_id]) +792 ) +793 return self._hint(name, parameter_columns) +794 +795 @operation(Operation.NO_OP) +796 def repartition( +797 self, numPartitions: t.Union[int, ColumnOrName], *cols: ColumnOrName +798 ) -> DataFrame: +799 num_partition_cols = self._ensure_list_of_columns(numPartitions) +800 columns = self._ensure_and_normalize_cols(cols) +801 args = num_partition_cols + columns +802 return self._hint("repartition", args) +803 +804 @operation(Operation.NO_OP) +805 def coalesce(self, numPartitions: int) -> DataFrame: +806 num_partitions = Column.ensure_cols([numPartitions]) +807 return self._hint("coalesce", num_partitions) +808 +809 @operation(Operation.NO_OP) +810 def cache(self) -> DataFrame: +811 return self._cache(storage_level="MEMORY_AND_DISK") +812 +813 @operation(Operation.NO_OP) +814 def persist(self, storageLevel: str = "MEMORY_AND_DISK_SER") -> DataFrame: +815 """ +816 Storage Level Options: https://spark.apache.org/docs/3.0.0-preview/sql-ref-syntax-aux-cache-cache-table.html +817 """ +818 return self._cache(storageLevel)
    @@ -1476,7 +1513,7 @@
    - DataFrame( spark: <MagicMock id='139719851707024'>, expression: sqlglot.expressions.Select, branch_id: Optional[str] = None, sequence_id: Optional[str] = None, last_op: sqlglot.dataframe.sql.operations.Operation = <Operation.INIT: -1>, pending_hints: Optional[List[sqlglot.expressions.Expression]] = None, output_expression_container: Optional[<MagicMock id='139719851535440'>] = None, **kwargs) + DataFrame( spark: <MagicMock id='140377712280432'>, expression: sqlglot.expressions.Select, branch_id: Optional[str] = None, sequence_id: Optional[str] = None, last_op: sqlglot.dataframe.sql.operations.Operation = <Operation.INIT: -1>, pending_hints: Optional[List[sqlglot.expressions.Expression]] = None, output_expression_container: Optional[<MagicMock id='140377711871072'>] = None, **kwargs) @@ -1614,29 +1651,38 @@ 356 cols = self._ensure_and_normalize_cols(cols) 357 kwargs["append"] = kwargs.get("append", False) 358 if self.expression.args.get("joins"): -359 ambiguous_cols = [col for col in cols if not col.column_expression.table] -360 if ambiguous_cols: -361 join_table_identifiers = [ -362 x.this for x in get_tables_from_expression_with_join(self.expression) -363 ] -364 cte_names_in_join = [x.this for x in join_table_identifiers] -365 for ambiguous_col in ambiguous_cols: -366 ctes_with_column = [ -367 cte -368 for cte in self.expression.ctes -369 if cte.alias_or_name in cte_names_in_join -370 and ambiguous_col.alias_or_name in cte.this.named_selects -371 ] -372 # If the select column does not specify a table and there is a join -373 # then we assume they are referring to the left table -374 if len(ctes_with_column) > 1: -375 table_identifier = self.expression.args["from"].args["expressions"][0].this -376 else: -377 table_identifier = ctes_with_column[0].args["alias"].this -378 ambiguous_col.expression.set("table", table_identifier) -379 return self.copy( -380 expression=self.expression.select(*[x.expression for x in cols], **kwargs), **kwargs -381 ) +359 ambiguous_cols = [ +360 col +361 for col in cols +362 if isinstance(col.column_expression, exp.Column) and not col.column_expression.table +363 ] +364 if ambiguous_cols: +365 join_table_identifiers = [ +366 x.this for x in get_tables_from_expression_with_join(self.expression) +367 ] +368 cte_names_in_join = [x.this for x in join_table_identifiers] +369 # If we have columns that resolve to multiple CTE expressions then we want to use each CTE left-to-right +370 # and therefore we allow multiple columns with the same name in the result. This matches the behavior +371 # of Spark. +372 resolved_column_position: t.Dict[Column, int] = {col: -1 for col in ambiguous_cols} +373 for ambiguous_col in ambiguous_cols: +374 ctes_with_column = [ +375 cte +376 for cte in self.expression.ctes +377 if cte.alias_or_name in cte_names_in_join +378 and ambiguous_col.alias_or_name in cte.this.named_selects +379 ] +380 # Check if there is a CTE with this column that we haven't used before. If so, use it. Otherwise, +381 # use the same CTE we used before +382 cte = seq_get(ctes_with_column, resolved_column_position[ambiguous_col] + 1) +383 if cte: +384 resolved_column_position[ambiguous_col] += 1 +385 else: +386 cte = ctes_with_column[resolved_column_position[ambiguous_col]] +387 ambiguous_col.expression.set("table", cte.alias_or_name) +388 return self.copy( +389 expression=self.expression.select(*[x.expression for x in cols], **kwargs), **kwargs +390 )
    @@ -1655,16 +1701,16 @@ -
    383    @operation(Operation.NO_OP)
    -384    def alias(self, name: str, **kwargs) -> DataFrame:
    -385        new_sequence_id = self.spark._random_sequence_id
    -386        df = self.copy()
    -387        for join_hint in df.pending_join_hints:
    -388            for expression in join_hint.expressions:
    -389                if expression.alias_or_name == self.sequence_id:
    -390                    expression.set("this", Column.ensure_col(new_sequence_id).expression)
    -391        df.spark._add_alias_to_mapping(name, new_sequence_id)
    -392        return df._convert_leaf_to_cte(sequence_id=new_sequence_id)
    +            
    392    @operation(Operation.NO_OP)
    +393    def alias(self, name: str, **kwargs) -> DataFrame:
    +394        new_sequence_id = self.spark._random_sequence_id
    +395        df = self.copy()
    +396        for join_hint in df.pending_join_hints:
    +397            for expression in join_hint.expressions:
    +398                if expression.alias_or_name == self.sequence_id:
    +399                    expression.set("this", Column.ensure_col(new_sequence_id).expression)
    +400        df.spark._add_alias_to_mapping(name, new_sequence_id)
    +401        return df._convert_leaf_to_cte(sequence_id=new_sequence_id)
     
    @@ -1683,10 +1729,10 @@
    -
    394    @operation(Operation.WHERE)
    -395    def where(self, column: t.Union[Column, bool], **kwargs) -> DataFrame:
    -396        col = self._ensure_and_normalize_col(column)
    -397        return self.copy(expression=self.expression.where(col.expression))
    +            
    403    @operation(Operation.WHERE)
    +404    def where(self, column: t.Union[Column, bool], **kwargs) -> DataFrame:
    +405        col = self._ensure_and_normalize_col(column)
    +406        return self.copy(expression=self.expression.where(col.expression))
     
    @@ -1705,10 +1751,10 @@
    -
    394    @operation(Operation.WHERE)
    -395    def where(self, column: t.Union[Column, bool], **kwargs) -> DataFrame:
    -396        col = self._ensure_and_normalize_col(column)
    -397        return self.copy(expression=self.expression.where(col.expression))
    +            
    403    @operation(Operation.WHERE)
    +404    def where(self, column: t.Union[Column, bool], **kwargs) -> DataFrame:
    +405        col = self._ensure_and_normalize_col(column)
    +406        return self.copy(expression=self.expression.where(col.expression))
     
    @@ -1727,10 +1773,10 @@
    -
    401    @operation(Operation.GROUP_BY)
    -402    def groupBy(self, *cols, **kwargs) -> GroupedData:
    -403        columns = self._ensure_and_normalize_cols(cols)
    -404        return GroupedData(self, columns, self.last_op)
    +            
    410    @operation(Operation.GROUP_BY)
    +411    def groupBy(self, *cols, **kwargs) -> GroupedData:
    +412        columns = self._ensure_and_normalize_cols(cols)
    +413        return GroupedData(self, columns, self.last_op)
     
    @@ -1749,10 +1795,10 @@
    -
    406    @operation(Operation.SELECT)
    -407    def agg(self, *exprs, **kwargs) -> DataFrame:
    -408        cols = self._ensure_and_normalize_cols(exprs)
    -409        return self.groupBy().agg(*cols)
    +            
    415    @operation(Operation.SELECT)
    +416    def agg(self, *exprs, **kwargs) -> DataFrame:
    +417        cols = self._ensure_and_normalize_cols(exprs)
    +418        return self.groupBy().agg(*cols)
     
    @@ -1771,69 +1817,97 @@
    -
    411    @operation(Operation.FROM)
    -412    def join(
    -413        self,
    -414        other_df: DataFrame,
    -415        on: t.Union[str, t.List[str], Column, t.List[Column]],
    -416        how: str = "inner",
    -417        **kwargs,
    -418    ) -> DataFrame:
    -419        other_df = other_df._convert_leaf_to_cte()
    -420        pre_join_self_latest_cte_name = self.latest_cte_name
    -421        columns = self._ensure_and_normalize_cols(on)
    -422        join_type = how.replace("_", " ")
    -423        if isinstance(columns[0].expression, exp.Column):
    -424            join_columns = [
    -425                Column(x).set_table_name(pre_join_self_latest_cte_name) for x in columns
    -426            ]
    -427            join_clause = functools.reduce(
    -428                lambda x, y: x & y,
    -429                [
    -430                    col.copy().set_table_name(pre_join_self_latest_cte_name)
    -431                    == col.copy().set_table_name(other_df.latest_cte_name)
    -432                    for col in columns
    -433                ],
    -434            )
    -435        else:
    -436            if len(columns) > 1:
    -437                columns = [functools.reduce(lambda x, y: x & y, columns)]
    -438            join_clause = columns[0]
    -439            join_columns = [
    -440                Column(x).set_table_name(pre_join_self_latest_cte_name)
    -441                if i % 2 == 0
    -442                else Column(x).set_table_name(other_df.latest_cte_name)
    -443                for i, x in enumerate(join_clause.expression.find_all(exp.Column))
    -444            ]
    -445        self_columns = [
    -446            column.set_table_name(pre_join_self_latest_cte_name, copy=True)
    -447            for column in self._get_outer_select_columns(self)
    -448        ]
    -449        other_columns = [
    -450            column.set_table_name(other_df.latest_cte_name, copy=True)
    -451            for column in self._get_outer_select_columns(other_df)
    -452        ]
    -453        column_value_mapping = {
    -454            column.alias_or_name
    -455            if not isinstance(column.expression.this, exp.Star)
    -456            else column.sql(): column
    -457            for column in other_columns + self_columns + join_columns
    -458        }
    -459        all_columns = [
    -460            column_value_mapping[name]
    -461            for name in {x.alias_or_name: None for x in join_columns + self_columns + other_columns}
    -462        ]
    -463        new_df = self.copy(
    -464            expression=self.expression.join(
    -465                other_df.latest_cte_name, on=join_clause.expression, join_type=join_type
    -466            )
    -467        )
    -468        new_df.expression = new_df._add_ctes_to_expression(
    -469            new_df.expression, other_df.expression.ctes
    -470        )
    -471        new_df.pending_hints.extend(other_df.pending_hints)
    -472        new_df = new_df.select.__wrapped__(new_df, *all_columns)
    -473        return new_df
    +            
    420    @operation(Operation.FROM)
    +421    def join(
    +422        self,
    +423        other_df: DataFrame,
    +424        on: t.Union[str, t.List[str], Column, t.List[Column]],
    +425        how: str = "inner",
    +426        **kwargs,
    +427    ) -> DataFrame:
    +428        other_df = other_df._convert_leaf_to_cte()
    +429        join_columns = self._ensure_list_of_columns(on)
    +430        # We will determine actual "join on" expression later so we don't provide it at first
    +431        join_expression = self.expression.join(
    +432            other_df.latest_cte_name, join_type=how.replace("_", " ")
    +433        )
    +434        join_expression = self._add_ctes_to_expression(join_expression, other_df.expression.ctes)
    +435        self_columns = self._get_outer_select_columns(join_expression)
    +436        other_columns = self._get_outer_select_columns(other_df)
    +437        # Determines the join clause and select columns to be used passed on what type of columns were provided for
    +438        # the join. The columns returned changes based on how the on expression is provided.
    +439        if isinstance(join_columns[0].expression, exp.Column):
    +440            """
    +441            Unique characteristics of join on column names only:
    +442            * The column names are put at the front of the select list
    +443            * The column names are deduplicated across the entire select list and only the column names (other dups are allowed)
    +444            """
    +445            table_names = [
    +446                table.alias_or_name
    +447                for table in get_tables_from_expression_with_join(join_expression)
    +448            ]
    +449            potential_ctes = [
    +450                cte
    +451                for cte in join_expression.ctes
    +452                if cte.alias_or_name in table_names
    +453                and cte.alias_or_name != other_df.latest_cte_name
    +454            ]
    +455            # Determine the table to reference for the left side of the join by checking each of the left side
    +456            # tables and see if they have the column being referenced.
    +457            join_column_pairs = []
    +458            for join_column in join_columns:
    +459                num_matching_ctes = 0
    +460                for cte in potential_ctes:
    +461                    if join_column.alias_or_name in cte.this.named_selects:
    +462                        left_column = join_column.copy().set_table_name(cte.alias_or_name)
    +463                        right_column = join_column.copy().set_table_name(other_df.latest_cte_name)
    +464                        join_column_pairs.append((left_column, right_column))
    +465                        num_matching_ctes += 1
    +466                if num_matching_ctes > 1:
    +467                    raise ValueError(
    +468                        f"Column {join_column.alias_or_name} is ambiguous. Please specify the table name."
    +469                    )
    +470                elif num_matching_ctes == 0:
    +471                    raise ValueError(
    +472                        f"Column {join_column.alias_or_name} does not exist in any of the tables."
    +473                    )
    +474            join_clause = functools.reduce(
    +475                lambda x, y: x & y,
    +476                [left_column == right_column for left_column, right_column in join_column_pairs],
    +477            )
    +478            join_column_names = [left_col.alias_or_name for left_col, _ in join_column_pairs]
    +479            # To match spark behavior only the join clause gets deduplicated and it gets put in the front of the column list
    +480            select_column_names = [
    +481                column.alias_or_name
    +482                if not isinstance(column.expression.this, exp.Star)
    +483                else column.sql()
    +484                for column in self_columns + other_columns
    +485            ]
    +486            select_column_names = [
    +487                column_name
    +488                for column_name in select_column_names
    +489                if column_name not in join_column_names
    +490            ]
    +491            select_column_names = join_column_names + select_column_names
    +492        else:
    +493            """
    +494            Unique characteristics of join on expressions:
    +495            * There is no deduplication of the results.
    +496            * The left join dataframe columns go first and right come after. No sort preference is given to join columns
    +497            """
    +498            join_columns = self._ensure_and_normalize_cols(join_columns, join_expression)
    +499            if len(join_columns) > 1:
    +500                join_columns = [functools.reduce(lambda x, y: x & y, join_columns)]
    +501            join_clause = join_columns[0]
    +502            select_column_names = [column.alias_or_name for column in self_columns + other_columns]
    +503
    +504        # Update the on expression with the actual join clause to replace the dummy one from before
    +505        join_expression.args["joins"][-1].set("on", join_clause.expression)
    +506        new_df = self.copy(expression=join_expression)
    +507        new_df.pending_join_hints.extend(self.pending_join_hints)
    +508        new_df.pending_hints.extend(other_df.pending_hints)
    +509        new_df = new_df.select.__wrapped__(new_df, *select_column_names)
    +510        return new_df
     
    @@ -1852,42 +1926,42 @@
    -
    475    @operation(Operation.ORDER_BY)
    -476    def orderBy(
    -477        self,
    -478        *cols: t.Union[str, Column],
    -479        ascending: t.Optional[t.Union[t.Any, t.List[t.Any]]] = None,
    -480    ) -> DataFrame:
    -481        """
    -482        This implementation lets any ordered columns take priority over whatever is provided in `ascending`. Spark
    -483        has irregular behavior and can result in runtime errors. Users shouldn't be mixing the two anyways so this
    -484        is unlikely to come up.
    -485        """
    -486        columns = self._ensure_and_normalize_cols(cols)
    -487        pre_ordered_col_indexes = [
    -488            x
    -489            for x in [
    -490                i if isinstance(col.expression, exp.Ordered) else None
    -491                for i, col in enumerate(columns)
    -492            ]
    -493            if x is not None
    -494        ]
    -495        if ascending is None:
    -496            ascending = [True] * len(columns)
    -497        elif not isinstance(ascending, list):
    -498            ascending = [ascending] * len(columns)
    -499        ascending = [bool(x) for i, x in enumerate(ascending)]
    -500        assert len(columns) == len(
    -501            ascending
    -502        ), "The length of items in ascending must equal the number of columns provided"
    -503        col_and_ascending = list(zip(columns, ascending))
    -504        order_by_columns = [
    -505            exp.Ordered(this=col.expression, desc=not asc)
    -506            if i not in pre_ordered_col_indexes
    -507            else columns[i].column_expression
    -508            for i, (col, asc) in enumerate(col_and_ascending)
    -509        ]
    -510        return self.copy(expression=self.expression.order_by(*order_by_columns))
    +            
    512    @operation(Operation.ORDER_BY)
    +513    def orderBy(
    +514        self,
    +515        *cols: t.Union[str, Column],
    +516        ascending: t.Optional[t.Union[t.Any, t.List[t.Any]]] = None,
    +517    ) -> DataFrame:
    +518        """
    +519        This implementation lets any ordered columns take priority over whatever is provided in `ascending`. Spark
    +520        has irregular behavior and can result in runtime errors. Users shouldn't be mixing the two anyways so this
    +521        is unlikely to come up.
    +522        """
    +523        columns = self._ensure_and_normalize_cols(cols)
    +524        pre_ordered_col_indexes = [
    +525            x
    +526            for x in [
    +527                i if isinstance(col.expression, exp.Ordered) else None
    +528                for i, col in enumerate(columns)
    +529            ]
    +530            if x is not None
    +531        ]
    +532        if ascending is None:
    +533            ascending = [True] * len(columns)
    +534        elif not isinstance(ascending, list):
    +535            ascending = [ascending] * len(columns)
    +536        ascending = [bool(x) for i, x in enumerate(ascending)]
    +537        assert len(columns) == len(
    +538            ascending
    +539        ), "The length of items in ascending must equal the number of columns provided"
    +540        col_and_ascending = list(zip(columns, ascending))
    +541        order_by_columns = [
    +542            exp.Ordered(this=col.expression, desc=not asc)
    +543            if i not in pre_ordered_col_indexes
    +544            else columns[i].column_expression
    +545            for i, (col, asc) in enumerate(col_and_ascending)
    +546        ]
    +547        return self.copy(expression=self.expression.order_by(*order_by_columns))
     
    @@ -1910,42 +1984,42 @@ is unlikely to come up.

    -
    475    @operation(Operation.ORDER_BY)
    -476    def orderBy(
    -477        self,
    -478        *cols: t.Union[str, Column],
    -479        ascending: t.Optional[t.Union[t.Any, t.List[t.Any]]] = None,
    -480    ) -> DataFrame:
    -481        """
    -482        This implementation lets any ordered columns take priority over whatever is provided in `ascending`. Spark
    -483        has irregular behavior and can result in runtime errors. Users shouldn't be mixing the two anyways so this
    -484        is unlikely to come up.
    -485        """
    -486        columns = self._ensure_and_normalize_cols(cols)
    -487        pre_ordered_col_indexes = [
    -488            x
    -489            for x in [
    -490                i if isinstance(col.expression, exp.Ordered) else None
    -491                for i, col in enumerate(columns)
    -492            ]
    -493            if x is not None
    -494        ]
    -495        if ascending is None:
    -496            ascending = [True] * len(columns)
    -497        elif not isinstance(ascending, list):
    -498            ascending = [ascending] * len(columns)
    -499        ascending = [bool(x) for i, x in enumerate(ascending)]
    -500        assert len(columns) == len(
    -501            ascending
    -502        ), "The length of items in ascending must equal the number of columns provided"
    -503        col_and_ascending = list(zip(columns, ascending))
    -504        order_by_columns = [
    -505            exp.Ordered(this=col.expression, desc=not asc)
    -506            if i not in pre_ordered_col_indexes
    -507            else columns[i].column_expression
    -508            for i, (col, asc) in enumerate(col_and_ascending)
    -509        ]
    -510        return self.copy(expression=self.expression.order_by(*order_by_columns))
    +            
    512    @operation(Operation.ORDER_BY)
    +513    def orderBy(
    +514        self,
    +515        *cols: t.Union[str, Column],
    +516        ascending: t.Optional[t.Union[t.Any, t.List[t.Any]]] = None,
    +517    ) -> DataFrame:
    +518        """
    +519        This implementation lets any ordered columns take priority over whatever is provided in `ascending`. Spark
    +520        has irregular behavior and can result in runtime errors. Users shouldn't be mixing the two anyways so this
    +521        is unlikely to come up.
    +522        """
    +523        columns = self._ensure_and_normalize_cols(cols)
    +524        pre_ordered_col_indexes = [
    +525            x
    +526            for x in [
    +527                i if isinstance(col.expression, exp.Ordered) else None
    +528                for i, col in enumerate(columns)
    +529            ]
    +530            if x is not None
    +531        ]
    +532        if ascending is None:
    +533            ascending = [True] * len(columns)
    +534        elif not isinstance(ascending, list):
    +535            ascending = [ascending] * len(columns)
    +536        ascending = [bool(x) for i, x in enumerate(ascending)]
    +537        assert len(columns) == len(
    +538            ascending
    +539        ), "The length of items in ascending must equal the number of columns provided"
    +540        col_and_ascending = list(zip(columns, ascending))
    +541        order_by_columns = [
    +542            exp.Ordered(this=col.expression, desc=not asc)
    +543            if i not in pre_ordered_col_indexes
    +544            else columns[i].column_expression
    +545            for i, (col, asc) in enumerate(col_and_ascending)
    +546        ]
    +547        return self.copy(expression=self.expression.order_by(*order_by_columns))
     
    @@ -1968,9 +2042,9 @@ is unlikely to come up.

    -
    514    @operation(Operation.FROM)
    -515    def union(self, other: DataFrame) -> DataFrame:
    -516        return self._set_operation(exp.Union, other, False)
    +            
    551    @operation(Operation.FROM)
    +552    def union(self, other: DataFrame) -> DataFrame:
    +553        return self._set_operation(exp.Union, other, False)
     
    @@ -1989,9 +2063,9 @@ is unlikely to come up.

    -
    514    @operation(Operation.FROM)
    -515    def union(self, other: DataFrame) -> DataFrame:
    -516        return self._set_operation(exp.Union, other, False)
    +            
    551    @operation(Operation.FROM)
    +552    def union(self, other: DataFrame) -> DataFrame:
    +553        return self._set_operation(exp.Union, other, False)
     
    @@ -2010,34 +2084,34 @@ is unlikely to come up.

    -
    520    @operation(Operation.FROM)
    -521    def unionByName(self, other: DataFrame, allowMissingColumns: bool = False):
    -522        l_columns = self.columns
    -523        r_columns = other.columns
    -524        if not allowMissingColumns:
    -525            l_expressions = l_columns
    -526            r_expressions = l_columns
    -527        else:
    -528            l_expressions = []
    -529            r_expressions = []
    -530            r_columns_unused = copy(r_columns)
    -531            for l_column in l_columns:
    -532                l_expressions.append(l_column)
    -533                if l_column in r_columns:
    -534                    r_expressions.append(l_column)
    -535                    r_columns_unused.remove(l_column)
    -536                else:
    -537                    r_expressions.append(exp.alias_(exp.Null(), l_column))
    -538            for r_column in r_columns_unused:
    -539                l_expressions.append(exp.alias_(exp.Null(), r_column))
    -540                r_expressions.append(r_column)
    -541        r_df = (
    -542            other.copy()._convert_leaf_to_cte().select(*self._ensure_list_of_columns(r_expressions))
    -543        )
    -544        l_df = self.copy()
    -545        if allowMissingColumns:
    -546            l_df = l_df._convert_leaf_to_cte().select(*self._ensure_list_of_columns(l_expressions))
    -547        return l_df._set_operation(exp.Union, r_df, False)
    +            
    557    @operation(Operation.FROM)
    +558    def unionByName(self, other: DataFrame, allowMissingColumns: bool = False):
    +559        l_columns = self.columns
    +560        r_columns = other.columns
    +561        if not allowMissingColumns:
    +562            l_expressions = l_columns
    +563            r_expressions = l_columns
    +564        else:
    +565            l_expressions = []
    +566            r_expressions = []
    +567            r_columns_unused = copy(r_columns)
    +568            for l_column in l_columns:
    +569                l_expressions.append(l_column)
    +570                if l_column in r_columns:
    +571                    r_expressions.append(l_column)
    +572                    r_columns_unused.remove(l_column)
    +573                else:
    +574                    r_expressions.append(exp.alias_(exp.Null(), l_column))
    +575            for r_column in r_columns_unused:
    +576                l_expressions.append(exp.alias_(exp.Null(), r_column))
    +577                r_expressions.append(r_column)
    +578        r_df = (
    +579            other.copy()._convert_leaf_to_cte().select(*self._ensure_list_of_columns(r_expressions))
    +580        )
    +581        l_df = self.copy()
    +582        if allowMissingColumns:
    +583            l_df = l_df._convert_leaf_to_cte().select(*self._ensure_list_of_columns(l_expressions))
    +584        return l_df._set_operation(exp.Union, r_df, False)
     
    @@ -2056,9 +2130,9 @@ is unlikely to come up.

    -
    549    @operation(Operation.FROM)
    -550    def intersect(self, other: DataFrame) -> DataFrame:
    -551        return self._set_operation(exp.Intersect, other, True)
    +            
    586    @operation(Operation.FROM)
    +587    def intersect(self, other: DataFrame) -> DataFrame:
    +588        return self._set_operation(exp.Intersect, other, True)
     
    @@ -2077,9 +2151,9 @@ is unlikely to come up.

    -
    553    @operation(Operation.FROM)
    -554    def intersectAll(self, other: DataFrame) -> DataFrame:
    -555        return self._set_operation(exp.Intersect, other, False)
    +            
    590    @operation(Operation.FROM)
    +591    def intersectAll(self, other: DataFrame) -> DataFrame:
    +592        return self._set_operation(exp.Intersect, other, False)
     
    @@ -2098,9 +2172,9 @@ is unlikely to come up.

    -
    557    @operation(Operation.FROM)
    -558    def exceptAll(self, other: DataFrame) -> DataFrame:
    -559        return self._set_operation(exp.Except, other, False)
    +            
    594    @operation(Operation.FROM)
    +595    def exceptAll(self, other: DataFrame) -> DataFrame:
    +596        return self._set_operation(exp.Except, other, False)
     
    @@ -2119,9 +2193,9 @@ is unlikely to come up.

    -
    561    @operation(Operation.SELECT)
    -562    def distinct(self) -> DataFrame:
    -563        return self.copy(expression=self.expression.distinct())
    +            
    598    @operation(Operation.SELECT)
    +599    def distinct(self) -> DataFrame:
    +600        return self.copy(expression=self.expression.distinct())
     
    @@ -2140,18 +2214,18 @@ is unlikely to come up.

    -
    565    @operation(Operation.SELECT)
    -566    def dropDuplicates(self, subset: t.Optional[t.List[str]] = None):
    -567        if not subset:
    -568            return self.distinct()
    -569        column_names = ensure_list(subset)
    -570        window = Window.partitionBy(*column_names).orderBy(*column_names)
    -571        return (
    -572            self.copy()
    -573            .withColumn("row_num", F.row_number().over(window))
    -574            .where(F.col("row_num") == F.lit(1))
    -575            .drop("row_num")
    -576        )
    +            
    602    @operation(Operation.SELECT)
    +603    def dropDuplicates(self, subset: t.Optional[t.List[str]] = None):
    +604        if not subset:
    +605            return self.distinct()
    +606        column_names = ensure_list(subset)
    +607        window = Window.partitionBy(*column_names).orderBy(*column_names)
    +608        return (
    +609            self.copy()
    +610            .withColumn("row_num", F.row_number().over(window))
    +611            .where(F.col("row_num") == F.lit(1))
    +612            .drop("row_num")
    +613        )
     
    @@ -2170,38 +2244,38 @@ is unlikely to come up.

    -
    578    @operation(Operation.FROM)
    -579    def dropna(
    -580        self,
    -581        how: str = "any",
    -582        thresh: t.Optional[int] = None,
    -583        subset: t.Optional[t.Union[str, t.Tuple[str, ...], t.List[str]]] = None,
    -584    ) -> DataFrame:
    -585        minimum_non_null = thresh or 0  # will be determined later if thresh is null
    -586        new_df = self.copy()
    -587        all_columns = self._get_outer_select_columns(new_df.expression)
    -588        if subset:
    -589            null_check_columns = self._ensure_and_normalize_cols(subset)
    -590        else:
    -591            null_check_columns = all_columns
    -592        if thresh is None:
    -593            minimum_num_nulls = 1 if how == "any" else len(null_check_columns)
    -594        else:
    -595            minimum_num_nulls = len(null_check_columns) - minimum_non_null + 1
    -596        if minimum_num_nulls > len(null_check_columns):
    -597            raise RuntimeError(
    -598                f"The minimum num nulls for dropna must be less than or equal to the number of columns. "
    -599                f"Minimum num nulls: {minimum_num_nulls}, Num Columns: {len(null_check_columns)}"
    -600            )
    -601        if_null_checks = [
    -602            F.when(column.isNull(), F.lit(1)).otherwise(F.lit(0)) for column in null_check_columns
    -603        ]
    -604        nulls_added_together = functools.reduce(lambda x, y: x + y, if_null_checks)
    -605        num_nulls = nulls_added_together.alias("num_nulls")
    -606        new_df = new_df.select(num_nulls, append=True)
    -607        filtered_df = new_df.where(F.col("num_nulls") < F.lit(minimum_num_nulls))
    -608        final_df = filtered_df.select(*all_columns)
    -609        return final_df
    +            
    615    @operation(Operation.FROM)
    +616    def dropna(
    +617        self,
    +618        how: str = "any",
    +619        thresh: t.Optional[int] = None,
    +620        subset: t.Optional[t.Union[str, t.Tuple[str, ...], t.List[str]]] = None,
    +621    ) -> DataFrame:
    +622        minimum_non_null = thresh or 0  # will be determined later if thresh is null
    +623        new_df = self.copy()
    +624        all_columns = self._get_outer_select_columns(new_df.expression)
    +625        if subset:
    +626            null_check_columns = self._ensure_and_normalize_cols(subset)
    +627        else:
    +628            null_check_columns = all_columns
    +629        if thresh is None:
    +630            minimum_num_nulls = 1 if how == "any" else len(null_check_columns)
    +631        else:
    +632            minimum_num_nulls = len(null_check_columns) - minimum_non_null + 1
    +633        if minimum_num_nulls > len(null_check_columns):
    +634            raise RuntimeError(
    +635                f"The minimum num nulls for dropna must be less than or equal to the number of columns. "
    +636                f"Minimum num nulls: {minimum_num_nulls}, Num Columns: {len(null_check_columns)}"
    +637            )
    +638        if_null_checks = [
    +639            F.when(column.isNull(), F.lit(1)).otherwise(F.lit(0)) for column in null_check_columns
    +640        ]
    +641        nulls_added_together = functools.reduce(lambda x, y: x + y, if_null_checks)
    +642        num_nulls = nulls_added_together.alias("num_nulls")
    +643        new_df = new_df.select(num_nulls, append=True)
    +644        filtered_df = new_df.where(F.col("num_nulls") < F.lit(minimum_num_nulls))
    +645        final_df = filtered_df.select(*all_columns)
    +646        return final_df
     
    @@ -2214,55 +2288,55 @@ is unlikely to come up.

    @operation(Operation.FROM)
    def - fillna( self, value: <MagicMock id='139719847202288'>, subset: Union[str, Tuple[str, ...], List[str], NoneType] = None) -> sqlglot.dataframe.sql.DataFrame: + fillna( self, value: <MagicMock id='140377707652544'>, subset: Union[str, Tuple[str, ...], List[str], NoneType] = None) -> sqlglot.dataframe.sql.DataFrame:
    -
    611    @operation(Operation.FROM)
    -612    def fillna(
    -613        self,
    -614        value: t.Union[ColumnLiterals],
    -615        subset: t.Optional[t.Union[str, t.Tuple[str, ...], t.List[str]]] = None,
    -616    ) -> DataFrame:
    -617        """
    -618        Functionality Difference: If you provide a value to replace a null and that type conflicts
    -619        with the type of the column then PySpark will just ignore your replacement.
    -620        This will try to cast them to be the same in some cases. So they won't always match.
    -621        Best to not mix types so make sure replacement is the same type as the column
    -622
    -623        Possibility for improvement: Use `typeof` function to get the type of the column
    -624        and check if it matches the type of the value provided. If not then make it null.
    -625        """
    -626        from sqlglot.dataframe.sql.functions import lit
    -627
    -628        values = None
    -629        columns = None
    -630        new_df = self.copy()
    -631        all_columns = self._get_outer_select_columns(new_df.expression)
    -632        all_column_mapping = {column.alias_or_name: column for column in all_columns}
    -633        if isinstance(value, dict):
    -634            values = list(value.values())
    -635            columns = self._ensure_and_normalize_cols(list(value))
    -636        if not columns:
    -637            columns = self._ensure_and_normalize_cols(subset) if subset else all_columns
    -638        if not values:
    -639            values = [value] * len(columns)
    -640        value_columns = [lit(value) for value in values]
    -641
    -642        null_replacement_mapping = {
    -643            column.alias_or_name: (
    -644                F.when(column.isNull(), value).otherwise(column).alias(column.alias_or_name)
    -645            )
    -646            for column, value in zip(columns, value_columns)
    -647        }
    -648        null_replacement_mapping = {**all_column_mapping, **null_replacement_mapping}
    -649        null_replacement_columns = [
    -650            null_replacement_mapping[column.alias_or_name] for column in all_columns
    -651        ]
    -652        new_df = new_df.select(*null_replacement_columns)
    -653        return new_df
    +            
    648    @operation(Operation.FROM)
    +649    def fillna(
    +650        self,
    +651        value: t.Union[ColumnLiterals],
    +652        subset: t.Optional[t.Union[str, t.Tuple[str, ...], t.List[str]]] = None,
    +653    ) -> DataFrame:
    +654        """
    +655        Functionality Difference: If you provide a value to replace a null and that type conflicts
    +656        with the type of the column then PySpark will just ignore your replacement.
    +657        This will try to cast them to be the same in some cases. So they won't always match.
    +658        Best to not mix types so make sure replacement is the same type as the column
    +659
    +660        Possibility for improvement: Use `typeof` function to get the type of the column
    +661        and check if it matches the type of the value provided. If not then make it null.
    +662        """
    +663        from sqlglot.dataframe.sql.functions import lit
    +664
    +665        values = None
    +666        columns = None
    +667        new_df = self.copy()
    +668        all_columns = self._get_outer_select_columns(new_df.expression)
    +669        all_column_mapping = {column.alias_or_name: column for column in all_columns}
    +670        if isinstance(value, dict):
    +671            values = list(value.values())
    +672            columns = self._ensure_and_normalize_cols(list(value))
    +673        if not columns:
    +674            columns = self._ensure_and_normalize_cols(subset) if subset else all_columns
    +675        if not values:
    +676            values = [value] * len(columns)
    +677        value_columns = [lit(value) for value in values]
    +678
    +679        null_replacement_mapping = {
    +680            column.alias_or_name: (
    +681                F.when(column.isNull(), value).otherwise(column).alias(column.alias_or_name)
    +682            )
    +683            for column, value in zip(columns, value_columns)
    +684        }
    +685        null_replacement_mapping = {**all_column_mapping, **null_replacement_mapping}
    +686        null_replacement_columns = [
    +687            null_replacement_mapping[column.alias_or_name] for column in all_columns
    +688        ]
    +689        new_df = new_df.select(*null_replacement_columns)
    +690        return new_df
     
    @@ -2283,59 +2357,59 @@ and check if it matches the type of the value provided. If not then make it null
    @operation(Operation.FROM)
    def - replace( self, to_replace: Union[bool, int, float, str, List, Dict], value: Union[bool, int, float, str, List, NoneType] = None, subset: Union[Collection[<MagicMock id='139719846105664'>], <MagicMock id='139719846105664'>, NoneType] = None) -> sqlglot.dataframe.sql.DataFrame: + replace( self, to_replace: Union[bool, int, float, str, List, Dict], value: Union[bool, int, float, str, List, NoneType] = None, subset: Union[Collection[<MagicMock id='140377707950480'>], <MagicMock id='140377707950480'>, NoneType] = None) -> sqlglot.dataframe.sql.DataFrame:
    -
    655    @operation(Operation.FROM)
    -656    def replace(
    -657        self,
    -658        to_replace: t.Union[bool, int, float, str, t.List, t.Dict],
    -659        value: t.Optional[t.Union[bool, int, float, str, t.List]] = None,
    -660        subset: t.Optional[t.Collection[ColumnOrName] | ColumnOrName] = None,
    -661    ) -> DataFrame:
    -662        from sqlglot.dataframe.sql.functions import lit
    -663
    -664        old_values = None
    -665        new_df = self.copy()
    -666        all_columns = self._get_outer_select_columns(new_df.expression)
    -667        all_column_mapping = {column.alias_or_name: column for column in all_columns}
    -668
    -669        columns = self._ensure_and_normalize_cols(subset) if subset else all_columns
    -670        if isinstance(to_replace, dict):
    -671            old_values = list(to_replace)
    -672            new_values = list(to_replace.values())
    -673        elif not old_values and isinstance(to_replace, list):
    -674            assert isinstance(value, list), "value must be a list since the replacements are a list"
    -675            assert len(to_replace) == len(
    -676                value
    -677            ), "the replacements and values must be the same length"
    -678            old_values = to_replace
    -679            new_values = value
    -680        else:
    -681            old_values = [to_replace] * len(columns)
    -682            new_values = [value] * len(columns)
    -683        old_values = [lit(value) for value in old_values]
    -684        new_values = [lit(value) for value in new_values]
    -685
    -686        replacement_mapping = {}
    -687        for column in columns:
    -688            expression = Column(None)
    -689            for i, (old_value, new_value) in enumerate(zip(old_values, new_values)):
    -690                if i == 0:
    -691                    expression = F.when(column == old_value, new_value)
    -692                else:
    -693                    expression = expression.when(column == old_value, new_value)  # type: ignore
    -694            replacement_mapping[column.alias_or_name] = expression.otherwise(column).alias(
    -695                column.expression.alias_or_name
    -696            )
    -697
    -698        replacement_mapping = {**all_column_mapping, **replacement_mapping}
    -699        replacement_columns = [replacement_mapping[column.alias_or_name] for column in all_columns]
    -700        new_df = new_df.select(*replacement_columns)
    -701        return new_df
    +            
    692    @operation(Operation.FROM)
    +693    def replace(
    +694        self,
    +695        to_replace: t.Union[bool, int, float, str, t.List, t.Dict],
    +696        value: t.Optional[t.Union[bool, int, float, str, t.List]] = None,
    +697        subset: t.Optional[t.Collection[ColumnOrName] | ColumnOrName] = None,
    +698    ) -> DataFrame:
    +699        from sqlglot.dataframe.sql.functions import lit
    +700
    +701        old_values = None
    +702        new_df = self.copy()
    +703        all_columns = self._get_outer_select_columns(new_df.expression)
    +704        all_column_mapping = {column.alias_or_name: column for column in all_columns}
    +705
    +706        columns = self._ensure_and_normalize_cols(subset) if subset else all_columns
    +707        if isinstance(to_replace, dict):
    +708            old_values = list(to_replace)
    +709            new_values = list(to_replace.values())
    +710        elif not old_values and isinstance(to_replace, list):
    +711            assert isinstance(value, list), "value must be a list since the replacements are a list"
    +712            assert len(to_replace) == len(
    +713                value
    +714            ), "the replacements and values must be the same length"
    +715            old_values = to_replace
    +716            new_values = value
    +717        else:
    +718            old_values = [to_replace] * len(columns)
    +719            new_values = [value] * len(columns)
    +720        old_values = [lit(value) for value in old_values]
    +721        new_values = [lit(value) for value in new_values]
    +722
    +723        replacement_mapping = {}
    +724        for column in columns:
    +725            expression = Column(None)
    +726            for i, (old_value, new_value) in enumerate(zip(old_values, new_values)):
    +727                if i == 0:
    +728                    expression = F.when(column == old_value, new_value)
    +729                else:
    +730                    expression = expression.when(column == old_value, new_value)  # type: ignore
    +731            replacement_mapping[column.alias_or_name] = expression.otherwise(column).alias(
    +732                column.expression.alias_or_name
    +733            )
    +734
    +735        replacement_mapping = {**all_column_mapping, **replacement_mapping}
    +736        replacement_columns = [replacement_mapping[column.alias_or_name] for column in all_columns]
    +737        new_df = new_df.select(*replacement_columns)
    +738        return new_df
     
    @@ -2354,18 +2428,18 @@ and check if it matches the type of the value provided. If not then make it null
    -
    703    @operation(Operation.SELECT)
    -704    def withColumn(self, colName: str, col: Column) -> DataFrame:
    -705        col = self._ensure_and_normalize_col(col)
    -706        existing_col_names = self.expression.named_selects
    -707        existing_col_index = (
    -708            existing_col_names.index(colName) if colName in existing_col_names else None
    -709        )
    -710        if existing_col_index:
    -711            expression = self.expression.copy()
    -712            expression.expressions[existing_col_index] = col.expression
    -713            return self.copy(expression=expression)
    -714        return self.copy().select(col.alias(colName), append=True)
    +            
    740    @operation(Operation.SELECT)
    +741    def withColumn(self, colName: str, col: Column) -> DataFrame:
    +742        col = self._ensure_and_normalize_col(col)
    +743        existing_col_names = self.expression.named_selects
    +744        existing_col_index = (
    +745            existing_col_names.index(colName) if colName in existing_col_names else None
    +746        )
    +747        if existing_col_index:
    +748            expression = self.expression.copy()
    +749            expression.expressions[existing_col_index] = col.expression
    +750            return self.copy(expression=expression)
    +751        return self.copy().select(col.alias(colName), append=True)
     
    @@ -2384,22 +2458,22 @@ and check if it matches the type of the value provided. If not then make it null
    -
    716    @operation(Operation.SELECT)
    -717    def withColumnRenamed(self, existing: str, new: str):
    -718        expression = self.expression.copy()
    -719        existing_columns = [
    -720            expression
    -721            for expression in expression.expressions
    -722            if expression.alias_or_name == existing
    -723        ]
    -724        if not existing_columns:
    -725            raise ValueError("Tried to rename a column that doesn't exist")
    -726        for existing_column in existing_columns:
    -727            if isinstance(existing_column, exp.Column):
    -728                existing_column.replace(exp.alias_(existing_column.copy(), new))
    -729            else:
    -730                existing_column.set("alias", exp.to_identifier(new))
    -731        return self.copy(expression=expression)
    +            
    753    @operation(Operation.SELECT)
    +754    def withColumnRenamed(self, existing: str, new: str):
    +755        expression = self.expression.copy()
    +756        existing_columns = [
    +757            expression
    +758            for expression in expression.expressions
    +759            if expression.alias_or_name == existing
    +760        ]
    +761        if not existing_columns:
    +762            raise ValueError("Tried to rename a column that doesn't exist")
    +763        for existing_column in existing_columns:
    +764            if isinstance(existing_column, exp.Column):
    +765                existing_column.replace(exp.alias_(existing_column.copy(), new))
    +766            else:
    +767                existing_column.set("alias", exp.to_identifier(new))
    +768        return self.copy(expression=expression)
     
    @@ -2418,16 +2492,16 @@ and check if it matches the type of the value provided. If not then make it null
    -
    733    @operation(Operation.SELECT)
    -734    def drop(self, *cols: t.Union[str, Column]) -> DataFrame:
    -735        all_columns = self._get_outer_select_columns(self.expression)
    -736        drop_cols = self._ensure_and_normalize_cols(cols)
    -737        new_columns = [
    -738            col
    -739            for col in all_columns
    -740            if col.alias_or_name not in [drop_column.alias_or_name for drop_column in drop_cols]
    -741        ]
    -742        return self.copy().select(*new_columns, append=False)
    +            
    770    @operation(Operation.SELECT)
    +771    def drop(self, *cols: t.Union[str, Column]) -> DataFrame:
    +772        all_columns = self._get_outer_select_columns(self.expression)
    +773        drop_cols = self._ensure_and_normalize_cols(cols)
    +774        new_columns = [
    +775            col
    +776            for col in all_columns
    +777            if col.alias_or_name not in [drop_column.alias_or_name for drop_column in drop_cols]
    +778        ]
    +779        return self.copy().select(*new_columns, append=False)
     
    @@ -2446,9 +2520,9 @@ and check if it matches the type of the value provided. If not then make it null
    -
    744    @operation(Operation.LIMIT)
    -745    def limit(self, num: int) -> DataFrame:
    -746        return self.copy(expression=self.expression.limit(num))
    +            
    781    @operation(Operation.LIMIT)
    +782    def limit(self, num: int) -> DataFrame:
    +783        return self.copy(expression=self.expression.limit(num))
     
    @@ -2467,15 +2541,15 @@ and check if it matches the type of the value provided. If not then make it null
    -
    748    @operation(Operation.NO_OP)
    -749    def hint(self, name: str, *parameters: t.Optional[t.Union[str, int]]) -> DataFrame:
    -750        parameter_list = ensure_list(parameters)
    -751        parameter_columns = (
    -752            self._ensure_list_of_columns(parameter_list)
    -753            if parameters
    -754            else Column.ensure_cols([self.sequence_id])
    -755        )
    -756        return self._hint(name, parameter_columns)
    +            
    785    @operation(Operation.NO_OP)
    +786    def hint(self, name: str, *parameters: t.Optional[t.Union[str, int]]) -> DataFrame:
    +787        parameter_list = ensure_list(parameters)
    +788        parameter_columns = (
    +789            self._ensure_list_of_columns(parameter_list)
    +790            if parameters
    +791            else Column.ensure_cols([self.sequence_id])
    +792        )
    +793        return self._hint(name, parameter_columns)
     
    @@ -2488,20 +2562,20 @@ and check if it matches the type of the value provided. If not then make it null
    @operation(Operation.NO_OP)
    def - repartition( self, numPartitions: Union[int, <MagicMock id='139719845685008'>], *cols: <MagicMock id='139719845795232'>) -> sqlglot.dataframe.sql.DataFrame: + repartition( self, numPartitions: Union[int, <MagicMock id='140377708152048'>], *cols: <MagicMock id='140377708084144'>) -> sqlglot.dataframe.sql.DataFrame:
    -
    758    @operation(Operation.NO_OP)
    -759    def repartition(
    -760        self, numPartitions: t.Union[int, ColumnOrName], *cols: ColumnOrName
    -761    ) -> DataFrame:
    -762        num_partition_cols = self._ensure_list_of_columns(numPartitions)
    -763        columns = self._ensure_and_normalize_cols(cols)
    -764        args = num_partition_cols + columns
    -765        return self._hint("repartition", args)
    +            
    795    @operation(Operation.NO_OP)
    +796    def repartition(
    +797        self, numPartitions: t.Union[int, ColumnOrName], *cols: ColumnOrName
    +798    ) -> DataFrame:
    +799        num_partition_cols = self._ensure_list_of_columns(numPartitions)
    +800        columns = self._ensure_and_normalize_cols(cols)
    +801        args = num_partition_cols + columns
    +802        return self._hint("repartition", args)
     
    @@ -2520,10 +2594,10 @@ and check if it matches the type of the value provided. If not then make it null
    -
    767    @operation(Operation.NO_OP)
    -768    def coalesce(self, numPartitions: int) -> DataFrame:
    -769        num_partitions = Column.ensure_cols([numPartitions])
    -770        return self._hint("coalesce", num_partitions)
    +            
    804    @operation(Operation.NO_OP)
    +805    def coalesce(self, numPartitions: int) -> DataFrame:
    +806        num_partitions = Column.ensure_cols([numPartitions])
    +807        return self._hint("coalesce", num_partitions)
     
    @@ -2542,9 +2616,9 @@ and check if it matches the type of the value provided. If not then make it null
    -
    772    @operation(Operation.NO_OP)
    -773    def cache(self) -> DataFrame:
    -774        return self._cache(storage_level="MEMORY_AND_DISK")
    +            
    809    @operation(Operation.NO_OP)
    +810    def cache(self) -> DataFrame:
    +811        return self._cache(storage_level="MEMORY_AND_DISK")
     
    @@ -2563,12 +2637,12 @@ and check if it matches the type of the value provided. If not then make it null
    -
    776    @operation(Operation.NO_OP)
    -777    def persist(self, storageLevel: str = "MEMORY_AND_DISK_SER") -> DataFrame:
    -778        """
    -779        Storage Level Options: https://spark.apache.org/docs/3.0.0-preview/sql-ref-syntax-aux-cache-cache-table.html
    -780        """
    -781        return self._cache(storageLevel)
    +            
    813    @operation(Operation.NO_OP)
    +814    def persist(self, storageLevel: str = "MEMORY_AND_DISK_SER") -> DataFrame:
    +815        """
    +816        Storage Level Options: https://spark.apache.org/docs/3.0.0-preview/sql-ref-syntax-aux-cache-cache-table.html
    +817        """
    +818        return self._cache(storageLevel)
     
    @@ -3002,7 +3076,7 @@ and check if it matches the type of the value provided. If not then make it null
    177 return isinstance(self.expression, exp.Column) 178 179 @property -180 def column_expression(self) -> exp.Column: +180 def column_expression(self) -> t.Union[exp.Column, exp.Literal]: 181 return self.expression.unalias() 182 183 @property @@ -3156,7 +3230,7 @@ and check if it matches the type of the value provided. If not then make it null
    - Column( expression: Union[<MagicMock id='139719847713120'>, sqlglot.expressions.Expression, NoneType]) + Column( expression: Union[<MagicMock id='140377710043744'>, sqlglot.expressions.Expression, NoneType]) @@ -3184,7 +3258,7 @@ and check if it matches the type of the value provided. If not then make it null
    @classmethod
    def - ensure_col( cls, value: Union[<MagicMock id='139719845612224'>, sqlglot.expressions.Expression, NoneType]): + ensure_col( cls, value: Union[<MagicMock id='140377708259664'>, sqlglot.expressions.Expression, NoneType]): @@ -3205,7 +3279,7 @@ and check if it matches the type of the value provided. If not then make it null
    @classmethod
    def - ensure_cols( cls, args: List[Union[<MagicMock id='139719846275024'>, sqlglot.expressions.Expression]]) -> List[sqlglot.dataframe.sql.Column]: + ensure_cols( cls, args: List[Union[<MagicMock id='140377708547664'>, sqlglot.expressions.Expression]]) -> List[sqlglot.dataframe.sql.Column]: @@ -3226,7 +3300,7 @@ and check if it matches the type of the value provided. If not then make it null
    @classmethod
    def - invoke_anonymous_function( cls, column: Optional[<MagicMock id='139719846030752'>], func_name: str, *args: Optional[<MagicMock id='139719845950944'>]) -> sqlglot.dataframe.sql.Column: + invoke_anonymous_function( cls, column: Optional[<MagicMock id='140377708420048'>], func_name: str, *args: Optional[<MagicMock id='140377708523584'>]) -> sqlglot.dataframe.sql.Column: @@ -3253,7 +3327,7 @@ and check if it matches the type of the value provided. If not then make it null
    @classmethod
    def - invoke_expression_over_column( cls, column: Optional[<MagicMock id='139719845906896'>], callable_expression: Callable, **kwargs) -> sqlglot.dataframe.sql.Column: + invoke_expression_over_column( cls, column: Optional[<MagicMock id='140377708376176'>], callable_expression: Callable, **kwargs) -> sqlglot.dataframe.sql.Column: @@ -3290,7 +3364,7 @@ and check if it matches the type of the value provided. If not then make it null
    def - binary_op( self, klass: Callable, other: <MagicMock id='139719845931152'>, **kwargs) -> sqlglot.dataframe.sql.Column: + binary_op( self, klass: Callable, other: <MagicMock id='140377706598112'>, **kwargs) -> sqlglot.dataframe.sql.Column: @@ -3311,7 +3385,7 @@ and check if it matches the type of the value provided. If not then make it null
    def - inverse_binary_op( self, klass: Callable, other: <MagicMock id='139719845815168'>, **kwargs) -> sqlglot.dataframe.sql.Column: + inverse_binary_op( self, klass: Callable, other: <MagicMock id='140377706608240'>, **kwargs) -> sqlglot.dataframe.sql.Column: @@ -3821,7 +3895,7 @@ Sqlglot doesn't currently replicate this class so it only accepts a string

    def - isin( self, *cols: Union[<MagicMock id='139719846379728'>, Iterable[<MagicMock id='139719846379728'>]]): + isin( self, *cols: Union[<MagicMock id='140377706743696'>, Iterable[<MagicMock id='140377706743696'>]]): @@ -3842,7 +3916,7 @@ Sqlglot doesn't currently replicate this class so it only accepts a string

    def - between( self, lowerBound: <MagicMock id='139719846507952'>, upperBound: <MagicMock id='139719844481728'>) -> sqlglot.dataframe.sql.Column: + between( self, lowerBound: <MagicMock id='140377706814464'>, upperBound: <MagicMock id='140377706852560'>) -> sqlglot.dataframe.sql.Column: @@ -3877,7 +3951,7 @@ Sqlglot doesn't currently replicate this class so it only accepts a string

    def - over( self, window: <MagicMock id='139719844522944'>) -> sqlglot.dataframe.sql.Column: + over( self, window: <MagicMock id='140377706910272'>) -> sqlglot.dataframe.sql.Column: @@ -3905,32 +3979,32 @@ Sqlglot doesn't currently replicate this class so it only accepts a string

    -
    784class DataFrameNaFunctions:
    -785    def __init__(self, df: DataFrame):
    -786        self.df = df
    -787
    -788    def drop(
    -789        self,
    -790        how: str = "any",
    -791        thresh: t.Optional[int] = None,
    -792        subset: t.Optional[t.Union[str, t.Tuple[str, ...], t.List[str]]] = None,
    -793    ) -> DataFrame:
    -794        return self.df.dropna(how=how, thresh=thresh, subset=subset)
    -795
    -796    def fill(
    -797        self,
    -798        value: t.Union[int, bool, float, str, t.Dict[str, t.Any]],
    -799        subset: t.Optional[t.Union[str, t.Tuple[str, ...], t.List[str]]] = None,
    -800    ) -> DataFrame:
    -801        return self.df.fillna(value=value, subset=subset)
    -802
    -803    def replace(
    -804        self,
    -805        to_replace: t.Union[bool, int, float, str, t.List, t.Dict],
    -806        value: t.Optional[t.Union[bool, int, float, str, t.List]] = None,
    -807        subset: t.Optional[t.Union[str, t.List[str]]] = None,
    -808    ) -> DataFrame:
    -809        return self.df.replace(to_replace=to_replace, value=value, subset=subset)
    +            
    821class DataFrameNaFunctions:
    +822    def __init__(self, df: DataFrame):
    +823        self.df = df
    +824
    +825    def drop(
    +826        self,
    +827        how: str = "any",
    +828        thresh: t.Optional[int] = None,
    +829        subset: t.Optional[t.Union[str, t.Tuple[str, ...], t.List[str]]] = None,
    +830    ) -> DataFrame:
    +831        return self.df.dropna(how=how, thresh=thresh, subset=subset)
    +832
    +833    def fill(
    +834        self,
    +835        value: t.Union[int, bool, float, str, t.Dict[str, t.Any]],
    +836        subset: t.Optional[t.Union[str, t.Tuple[str, ...], t.List[str]]] = None,
    +837    ) -> DataFrame:
    +838        return self.df.fillna(value=value, subset=subset)
    +839
    +840    def replace(
    +841        self,
    +842        to_replace: t.Union[bool, int, float, str, t.List, t.Dict],
    +843        value: t.Optional[t.Union[bool, int, float, str, t.List]] = None,
    +844        subset: t.Optional[t.Union[str, t.List[str]]] = None,
    +845    ) -> DataFrame:
    +846        return self.df.replace(to_replace=to_replace, value=value, subset=subset)
     
    @@ -3946,8 +4020,8 @@ Sqlglot doesn't currently replicate this class so it only accepts a string

    -
    785    def __init__(self, df: DataFrame):
    -786        self.df = df
    +            
    822    def __init__(self, df: DataFrame):
    +823        self.df = df
     
    @@ -3965,13 +4039,13 @@ Sqlglot doesn't currently replicate this class so it only accepts a string

    -
    788    def drop(
    -789        self,
    -790        how: str = "any",
    -791        thresh: t.Optional[int] = None,
    -792        subset: t.Optional[t.Union[str, t.Tuple[str, ...], t.List[str]]] = None,
    -793    ) -> DataFrame:
    -794        return self.df.dropna(how=how, thresh=thresh, subset=subset)
    +            
    825    def drop(
    +826        self,
    +827        how: str = "any",
    +828        thresh: t.Optional[int] = None,
    +829        subset: t.Optional[t.Union[str, t.Tuple[str, ...], t.List[str]]] = None,
    +830    ) -> DataFrame:
    +831        return self.df.dropna(how=how, thresh=thresh, subset=subset)
     
    @@ -3989,12 +4063,12 @@ Sqlglot doesn't currently replicate this class so it only accepts a string

    -
    796    def fill(
    -797        self,
    -798        value: t.Union[int, bool, float, str, t.Dict[str, t.Any]],
    -799        subset: t.Optional[t.Union[str, t.Tuple[str, ...], t.List[str]]] = None,
    -800    ) -> DataFrame:
    -801        return self.df.fillna(value=value, subset=subset)
    +            
    833    def fill(
    +834        self,
    +835        value: t.Union[int, bool, float, str, t.Dict[str, t.Any]],
    +836        subset: t.Optional[t.Union[str, t.Tuple[str, ...], t.List[str]]] = None,
    +837    ) -> DataFrame:
    +838        return self.df.fillna(value=value, subset=subset)
     
    @@ -4012,13 +4086,13 @@ Sqlglot doesn't currently replicate this class so it only accepts a string

    -
    803    def replace(
    -804        self,
    -805        to_replace: t.Union[bool, int, float, str, t.List, t.Dict],
    -806        value: t.Optional[t.Union[bool, int, float, str, t.List]] = None,
    -807        subset: t.Optional[t.Union[str, t.List[str]]] = None,
    -808    ) -> DataFrame:
    -809        return self.df.replace(to_replace=to_replace, value=value, subset=subset)
    +            
    840    def replace(
    +841        self,
    +842        to_replace: t.Union[bool, int, float, str, t.List, t.Dict],
    +843        value: t.Optional[t.Union[bool, int, float, str, t.List]] = None,
    +844        subset: t.Optional[t.Union[str, t.List[str]]] = None,
    +845    ) -> DataFrame:
    +846        return self.df.replace(to_replace=to_replace, value=value, subset=subset)
     
    @@ -4075,7 +4149,7 @@ Sqlglot doesn't currently replicate this class so it only accepts a string

    @classmethod
    def - partitionBy( cls, *cols: Union[<MagicMock id='139719845053776'>, List[<MagicMock id='139719845053776'>]]) -> sqlglot.dataframe.sql.WindowSpec: + partitionBy( cls, *cols: Union[<MagicMock id='140377707221328'>, List[<MagicMock id='140377707221328'>]]) -> sqlglot.dataframe.sql.WindowSpec: @@ -4096,7 +4170,7 @@ Sqlglot doesn't currently replicate this class so it only accepts a string

    @classmethod
    def - orderBy( cls, *cols: Union[<MagicMock id='139719844989536'>, List[<MagicMock id='139719844989536'>]]) -> sqlglot.dataframe.sql.WindowSpec: + orderBy( cls, *cols: Union[<MagicMock id='140377707360368'>, List[<MagicMock id='140377707360368'>]]) -> sqlglot.dataframe.sql.WindowSpec: @@ -4321,7 +4395,7 @@ Sqlglot doesn't currently replicate this class so it only accepts a string

    def - partitionBy( self, *cols: Union[<MagicMock id='139719844913712'>, List[<MagicMock id='139719844913712'>]]) -> sqlglot.dataframe.sql.WindowSpec: + partitionBy( self, *cols: Union[<MagicMock id='140377707291568'>, List[<MagicMock id='140377707291568'>]]) -> sqlglot.dataframe.sql.WindowSpec: @@ -4348,7 +4422,7 @@ Sqlglot doesn't currently replicate this class so it only accepts a string

    def - orderBy( self, *cols: Union[<MagicMock id='139719844813248'>, List[<MagicMock id='139719844813248'>]]) -> sqlglot.dataframe.sql.WindowSpec: + orderBy( self, *cols: Union[<MagicMock id='140377707161408'>, List[<MagicMock id='140377707161408'>]]) -> sqlglot.dataframe.sql.WindowSpec: @@ -4448,10 +4522,18 @@ Sqlglot doesn't currently replicate this class so it only accepts a string

    20 from sqlglot.dataframe.sql.dataframe import DataFrame 21 22 sqlglot.schema.add_table(tableName) -23 return DataFrame( -24 self.spark, -25 exp.Select().from_(tableName).select(*sqlglot.schema.column_names(tableName)), -26 ) +23 +24 return DataFrame( +25 self.spark, +26 exp.Select() +27 .from_(tableName) +28 .select( +29 *( +30 column if should_identify(column, "safe") else f'"{column}"' +31 for column in sqlglot.schema.column_names(tableName) +32 ) +33 ), +34 )
    @@ -4490,10 +4572,18 @@ Sqlglot doesn't currently replicate this class so it only accepts a string

    20 from sqlglot.dataframe.sql.dataframe import DataFrame 21 22 sqlglot.schema.add_table(tableName) -23 return DataFrame( -24 self.spark, -25 exp.Select().from_(tableName).select(*sqlglot.schema.column_names(tableName)), -26 ) +23 +24 return DataFrame( +25 self.spark, +26 exp.Select() +27 .from_(tableName) +28 .select( +29 *( +30 column if should_identify(column, "safe") else f'"{column}"' +31 for column in sqlglot.schema.column_names(tableName) +32 ) +33 ), +34 )
    @@ -4512,68 +4602,68 @@ Sqlglot doesn't currently replicate this class so it only accepts a string

    -
    29class DataFrameWriter:
    -30    def __init__(
    -31        self,
    -32        df: DataFrame,
    -33        spark: t.Optional[SparkSession] = None,
    -34        mode: t.Optional[str] = None,
    -35        by_name: bool = False,
    -36    ):
    -37        self._df = df
    -38        self._spark = spark or df.spark
    -39        self._mode = mode
    -40        self._by_name = by_name
    -41
    -42    def copy(self, **kwargs) -> DataFrameWriter:
    -43        return DataFrameWriter(
    -44            **{
    -45                k[1:] if k.startswith("_") else k: v
    -46                for k, v in object_to_dict(self, **kwargs).items()
    -47            }
    -48        )
    +            
    37class DataFrameWriter:
    +38    def __init__(
    +39        self,
    +40        df: DataFrame,
    +41        spark: t.Optional[SparkSession] = None,
    +42        mode: t.Optional[str] = None,
    +43        by_name: bool = False,
    +44    ):
    +45        self._df = df
    +46        self._spark = spark or df.spark
    +47        self._mode = mode
    +48        self._by_name = by_name
     49
    -50    def sql(self, **kwargs) -> t.List[str]:
    -51        return self._df.sql(**kwargs)
    -52
    -53    def mode(self, saveMode: t.Optional[str]) -> DataFrameWriter:
    -54        return self.copy(_mode=saveMode)
    -55
    -56    @property
    -57    def byName(self):
    -58        return self.copy(by_name=True)
    -59
    -60    def insertInto(self, tableName: str, overwrite: t.Optional[bool] = None) -> DataFrameWriter:
    -61        output_expression_container = exp.Insert(
    -62            **{
    -63                "this": exp.to_table(tableName),
    -64                "overwrite": overwrite,
    -65            }
    -66        )
    -67        df = self._df.copy(output_expression_container=output_expression_container)
    -68        if self._by_name:
    -69            columns = sqlglot.schema.column_names(tableName, only_visible=True)
    -70            df = df._convert_leaf_to_cte().select(*columns)
    -71
    -72        return self.copy(_df=df)
    -73
    -74    def saveAsTable(self, name: str, format: t.Optional[str] = None, mode: t.Optional[str] = None):
    -75        if format is not None:
    -76            raise NotImplementedError("Providing Format in the save as table is not supported")
    -77        exists, replace, mode = None, None, mode or str(self._mode)
    -78        if mode == "append":
    -79            return self.insertInto(name)
    -80        if mode == "ignore":
    -81            exists = True
    -82        if mode == "overwrite":
    -83            replace = True
    -84        output_expression_container = exp.Create(
    -85            this=exp.to_table(name),
    -86            kind="TABLE",
    -87            exists=exists,
    -88            replace=replace,
    -89        )
    -90        return self.copy(_df=self._df.copy(output_expression_container=output_expression_container))
    +50    def copy(self, **kwargs) -> DataFrameWriter:
    +51        return DataFrameWriter(
    +52            **{
    +53                k[1:] if k.startswith("_") else k: v
    +54                for k, v in object_to_dict(self, **kwargs).items()
    +55            }
    +56        )
    +57
    +58    def sql(self, **kwargs) -> t.List[str]:
    +59        return self._df.sql(**kwargs)
    +60
    +61    def mode(self, saveMode: t.Optional[str]) -> DataFrameWriter:
    +62        return self.copy(_mode=saveMode)
    +63
    +64    @property
    +65    def byName(self):
    +66        return self.copy(by_name=True)
    +67
    +68    def insertInto(self, tableName: str, overwrite: t.Optional[bool] = None) -> DataFrameWriter:
    +69        output_expression_container = exp.Insert(
    +70            **{
    +71                "this": exp.to_table(tableName),
    +72                "overwrite": overwrite,
    +73            }
    +74        )
    +75        df = self._df.copy(output_expression_container=output_expression_container)
    +76        if self._by_name:
    +77            columns = sqlglot.schema.column_names(tableName, only_visible=True)
    +78            df = df._convert_leaf_to_cte().select(*columns)
    +79
    +80        return self.copy(_df=df)
    +81
    +82    def saveAsTable(self, name: str, format: t.Optional[str] = None, mode: t.Optional[str] = None):
    +83        if format is not None:
    +84            raise NotImplementedError("Providing Format in the save as table is not supported")
    +85        exists, replace, mode = None, None, mode or str(self._mode)
    +86        if mode == "append":
    +87            return self.insertInto(name)
    +88        if mode == "ignore":
    +89            exists = True
    +90        if mode == "overwrite":
    +91            replace = True
    +92        output_expression_container = exp.Create(
    +93            this=exp.to_table(name),
    +94            kind="TABLE",
    +95            exists=exists,
    +96            replace=replace,
    +97        )
    +98        return self.copy(_df=self._df.copy(output_expression_container=output_expression_container))
     
    @@ -4589,17 +4679,17 @@ Sqlglot doesn't currently replicate this class so it only accepts a string

    -
    30    def __init__(
    -31        self,
    -32        df: DataFrame,
    -33        spark: t.Optional[SparkSession] = None,
    -34        mode: t.Optional[str] = None,
    -35        by_name: bool = False,
    -36    ):
    -37        self._df = df
    -38        self._spark = spark or df.spark
    -39        self._mode = mode
    -40        self._by_name = by_name
    +            
    38    def __init__(
    +39        self,
    +40        df: DataFrame,
    +41        spark: t.Optional[SparkSession] = None,
    +42        mode: t.Optional[str] = None,
    +43        by_name: bool = False,
    +44    ):
    +45        self._df = df
    +46        self._spark = spark or df.spark
    +47        self._mode = mode
    +48        self._by_name = by_name
     
    @@ -4617,13 +4707,13 @@ Sqlglot doesn't currently replicate this class so it only accepts a string

    -
    42    def copy(self, **kwargs) -> DataFrameWriter:
    -43        return DataFrameWriter(
    -44            **{
    -45                k[1:] if k.startswith("_") else k: v
    -46                for k, v in object_to_dict(self, **kwargs).items()
    -47            }
    -48        )
    +            
    50    def copy(self, **kwargs) -> DataFrameWriter:
    +51        return DataFrameWriter(
    +52            **{
    +53                k[1:] if k.startswith("_") else k: v
    +54                for k, v in object_to_dict(self, **kwargs).items()
    +55            }
    +56        )
     
    @@ -4641,8 +4731,8 @@ Sqlglot doesn't currently replicate this class so it only accepts a string

    -
    50    def sql(self, **kwargs) -> t.List[str]:
    -51        return self._df.sql(**kwargs)
    +            
    58    def sql(self, **kwargs) -> t.List[str]:
    +59        return self._df.sql(**kwargs)
     
    @@ -4660,8 +4750,8 @@ Sqlglot doesn't currently replicate this class so it only accepts a string

    -
    53    def mode(self, saveMode: t.Optional[str]) -> DataFrameWriter:
    -54        return self.copy(_mode=saveMode)
    +            
    61    def mode(self, saveMode: t.Optional[str]) -> DataFrameWriter:
    +62        return self.copy(_mode=saveMode)
     
    @@ -4679,19 +4769,19 @@ Sqlglot doesn't currently replicate this class so it only accepts a string

    -
    60    def insertInto(self, tableName: str, overwrite: t.Optional[bool] = None) -> DataFrameWriter:
    -61        output_expression_container = exp.Insert(
    -62            **{
    -63                "this": exp.to_table(tableName),
    -64                "overwrite": overwrite,
    -65            }
    -66        )
    -67        df = self._df.copy(output_expression_container=output_expression_container)
    -68        if self._by_name:
    -69            columns = sqlglot.schema.column_names(tableName, only_visible=True)
    -70            df = df._convert_leaf_to_cte().select(*columns)
    -71
    -72        return self.copy(_df=df)
    +            
    68    def insertInto(self, tableName: str, overwrite: t.Optional[bool] = None) -> DataFrameWriter:
    +69        output_expression_container = exp.Insert(
    +70            **{
    +71                "this": exp.to_table(tableName),
    +72                "overwrite": overwrite,
    +73            }
    +74        )
    +75        df = self._df.copy(output_expression_container=output_expression_container)
    +76        if self._by_name:
    +77            columns = sqlglot.schema.column_names(tableName, only_visible=True)
    +78            df = df._convert_leaf_to_cte().select(*columns)
    +79
    +80        return self.copy(_df=df)
     
    @@ -4709,23 +4799,23 @@ Sqlglot doesn't currently replicate this class so it only accepts a string

    -
    74    def saveAsTable(self, name: str, format: t.Optional[str] = None, mode: t.Optional[str] = None):
    -75        if format is not None:
    -76            raise NotImplementedError("Providing Format in the save as table is not supported")
    -77        exists, replace, mode = None, None, mode or str(self._mode)
    -78        if mode == "append":
    -79            return self.insertInto(name)
    -80        if mode == "ignore":
    -81            exists = True
    -82        if mode == "overwrite":
    -83            replace = True
    -84        output_expression_container = exp.Create(
    -85            this=exp.to_table(name),
    -86            kind="TABLE",
    -87            exists=exists,
    -88            replace=replace,
    -89        )
    -90        return self.copy(_df=self._df.copy(output_expression_container=output_expression_container))
    +            
    82    def saveAsTable(self, name: str, format: t.Optional[str] = None, mode: t.Optional[str] = None):
    +83        if format is not None:
    +84            raise NotImplementedError("Providing Format in the save as table is not supported")
    +85        exists, replace, mode = None, None, mode or str(self._mode)
    +86        if mode == "append":
    +87            return self.insertInto(name)
    +88        if mode == "ignore":
    +89            exists = True
    +90        if mode == "overwrite":
    +91            replace = True
    +92        output_expression_container = exp.Create(
    +93            this=exp.to_table(name),
    +94            kind="TABLE",
    +95            exists=exists,
    +96            replace=replace,
    +97        )
    +98        return self.copy(_df=self._df.copy(output_expression_container=output_expression_container))
     
    diff --git a/docs/sqlglot/dialects.html b/docs/sqlglot/dialects.html index 8ec3beb..5777d08 100644 --- a/docs/sqlglot/dialects.html +++ b/docs/sqlglot/dialects.html @@ -3,7 +3,7 @@ - + sqlglot.dialects API documentation diff --git a/docs/sqlglot/dialects/bigquery.html b/docs/sqlglot/dialects/bigquery.html index c1b1dce..761adb6 100644 --- a/docs/sqlglot/dialects/bigquery.html +++ b/docs/sqlglot/dialects/bigquery.html @@ -3,7 +3,7 @@ - + sqlglot.dialects.bigquery API documentation @@ -113,304 +113,303 @@
    13 max_or_greatest, 14 min_or_least, 15 no_ilike_sql, - 16 rename_func, - 17 timestrtotime_sql, - 18 ts_or_ds_to_date_sql, - 19) - 20from sqlglot.helper import seq_get - 21from sqlglot.tokens import TokenType - 22 - 23E = t.TypeVar("E", bound=exp.Expression) - 24 + 16 parse_date_delta_with_interval, + 17 rename_func, + 18 timestrtotime_sql, + 19 ts_or_ds_to_date_sql, + 20) + 21from sqlglot.helper import seq_get + 22from sqlglot.tokens import TokenType + 23 + 24E = t.TypeVar("E", bound=exp.Expression) 25 - 26def _date_add(expression_class: t.Type[E]) -> t.Callable[[t.Sequence], E]: - 27 def func(args): - 28 interval = seq_get(args, 1) - 29 return expression_class( - 30 this=seq_get(args, 0), - 31 expression=interval.this, - 32 unit=interval.args.get("unit"), - 33 ) - 34 - 35 return func + 26 + 27def _date_add_sql( + 28 data_type: str, kind: str + 29) -> t.Callable[[generator.Generator, exp.Expression], str]: + 30 def func(self, expression): + 31 this = self.sql(expression, "this") + 32 unit = expression.args.get("unit") + 33 unit = exp.var(unit.name.upper() if unit else "DAY") + 34 interval = exp.Interval(this=expression.expression, unit=unit) + 35 return f"{data_type}_{kind}({this}, {self.sql(interval)})" 36 - 37 - 38def _date_add_sql( - 39 data_type: str, kind: str - 40) -> t.Callable[[generator.Generator, exp.Expression], str]: - 41 def func(self, expression): - 42 this = self.sql(expression, "this") - 43 unit = expression.args.get("unit") - 44 unit = exp.var(unit.name.upper() if unit else "DAY") - 45 interval = exp.Interval(this=expression.expression, unit=unit) - 46 return f"{data_type}_{kind}({this}, {self.sql(interval)})" - 47 - 48 return func - 49 - 50 - 51def _derived_table_values_to_unnest(self: generator.Generator, expression: exp.Values) -> str: - 52 if not isinstance(expression.unnest().parent, exp.From): - 53 expression = t.cast(exp.Values, transforms.remove_precision_parameterized_types(expression)) - 54 return self.values_sql(expression) - 55 rows = [tuple_exp.expressions for tuple_exp in expression.find_all(exp.Tuple)] - 56 structs = [] - 57 for row in rows: - 58 aliases = [ - 59 exp.alias_(value, column_name) - 60 for value, column_name in zip(row, expression.args["alias"].args["columns"]) - 61 ] - 62 structs.append(exp.Struct(expressions=aliases)) - 63 unnest_exp = exp.Unnest(expressions=[exp.Array(expressions=structs)]) - 64 return self.unnest_sql(unnest_exp) - 65 - 66 - 67def _returnsproperty_sql(self: generator.Generator, expression: exp.ReturnsProperty) -> str: - 68 this = expression.this - 69 if isinstance(this, exp.Schema): - 70 this = f"{this.this} <{self.expressions(this)}>" - 71 else: - 72 this = self.sql(this) - 73 return f"RETURNS {this}" - 74 - 75 - 76def _create_sql(self: generator.Generator, expression: exp.Create) -> str: - 77 kind = expression.args["kind"] - 78 returns = expression.find(exp.ReturnsProperty) - 79 if kind.upper() == "FUNCTION" and returns and returns.args.get("is_table"): - 80 expression = expression.copy() - 81 expression.set("kind", "TABLE FUNCTION") - 82 if isinstance( - 83 expression.expression, - 84 ( - 85 exp.Subquery, - 86 exp.Literal, - 87 ), - 88 ): - 89 expression.set("expression", expression.expression.this) - 90 - 91 return self.create_sql(expression) - 92 - 93 return self.create_sql(expression) - 94 - 95 - 96def _unqualify_unnest(expression: exp.Expression) -> exp.Expression: - 97 """Remove references to unnest table aliases since bigquery doesn't allow them. - 98 - 99 These are added by the optimizer's qualify_column step. -100 """ -101 if isinstance(expression, exp.Select): -102 unnests = { -103 unnest.alias -104 for unnest in expression.args.get("from", exp.From(expressions=[])).expressions -105 if isinstance(unnest, exp.Unnest) and unnest.alias -106 } + 37 return func + 38 + 39 + 40def _derived_table_values_to_unnest(self: generator.Generator, expression: exp.Values) -> str: + 41 if not isinstance(expression.unnest().parent, exp.From): + 42 expression = t.cast(exp.Values, transforms.remove_precision_parameterized_types(expression)) + 43 return self.values_sql(expression) + 44 rows = [tuple_exp.expressions for tuple_exp in expression.find_all(exp.Tuple)] + 45 structs = [] + 46 for row in rows: + 47 aliases = [ + 48 exp.alias_(value, column_name) + 49 for value, column_name in zip(row, expression.args["alias"].args["columns"]) + 50 ] + 51 structs.append(exp.Struct(expressions=aliases)) + 52 unnest_exp = exp.Unnest(expressions=[exp.Array(expressions=structs)]) + 53 return self.unnest_sql(unnest_exp) + 54 + 55 + 56def _returnsproperty_sql(self: generator.Generator, expression: exp.ReturnsProperty) -> str: + 57 this = expression.this + 58 if isinstance(this, exp.Schema): + 59 this = f"{this.this} <{self.expressions(this)}>" + 60 else: + 61 this = self.sql(this) + 62 return f"RETURNS {this}" + 63 + 64 + 65def _create_sql(self: generator.Generator, expression: exp.Create) -> str: + 66 kind = expression.args["kind"] + 67 returns = expression.find(exp.ReturnsProperty) + 68 if kind.upper() == "FUNCTION" and returns and returns.args.get("is_table"): + 69 expression = expression.copy() + 70 expression.set("kind", "TABLE FUNCTION") + 71 if isinstance( + 72 expression.expression, + 73 ( + 74 exp.Subquery, + 75 exp.Literal, + 76 ), + 77 ): + 78 expression.set("expression", expression.expression.this) + 79 + 80 return self.create_sql(expression) + 81 + 82 return self.create_sql(expression) + 83 + 84 + 85def _unqualify_unnest(expression: exp.Expression) -> exp.Expression: + 86 """Remove references to unnest table aliases since bigquery doesn't allow them. + 87 + 88 These are added by the optimizer's qualify_column step. + 89 """ + 90 if isinstance(expression, exp.Select): + 91 unnests = { + 92 unnest.alias + 93 for unnest in expression.args.get("from", exp.From(expressions=[])).expressions + 94 if isinstance(unnest, exp.Unnest) and unnest.alias + 95 } + 96 + 97 if unnests: + 98 expression = expression.copy() + 99 +100 for select in expression.expressions: +101 for column in select.find_all(exp.Column): +102 if column.table in unnests: +103 column.set("table", None) +104 +105 return expression +106 107 -108 if unnests: -109 expression = expression.copy() -110 -111 for select in expression.expressions: -112 for column in select.find_all(exp.Column): -113 if column.table in unnests: -114 column.set("table", None) -115 -116 return expression -117 -118 -119class BigQuery(Dialect): -120 unnest_column_only = True -121 time_mapping = { -122 "%M": "%-M", -123 "%d": "%-d", -124 "%m": "%-m", -125 "%y": "%-y", -126 "%H": "%-H", -127 "%I": "%-I", -128 "%S": "%-S", -129 "%j": "%-j", -130 } +108class BigQuery(Dialect): +109 unnest_column_only = True +110 time_mapping = { +111 "%M": "%-M", +112 "%d": "%-d", +113 "%m": "%-m", +114 "%y": "%-y", +115 "%H": "%-H", +116 "%I": "%-I", +117 "%S": "%-S", +118 "%j": "%-j", +119 } +120 +121 class Tokenizer(tokens.Tokenizer): +122 QUOTES = [ +123 (prefix + quote, quote) if prefix else quote +124 for quote in ["'", '"', '"""', "'''"] +125 for prefix in ["", "r", "R"] +126 ] +127 COMMENTS = ["--", "#", ("/*", "*/")] +128 IDENTIFIERS = ["`"] +129 STRING_ESCAPES = ["\\"] +130 HEX_STRINGS = [("0x", ""), ("0X", "")] 131 -132 class Tokenizer(tokens.Tokenizer): -133 QUOTES = [ -134 (prefix + quote, quote) if prefix else quote -135 for quote in ["'", '"', '"""', "'''"] -136 for prefix in ["", "r", "R"] -137 ] -138 COMMENTS = ["--", "#", ("/*", "*/")] -139 IDENTIFIERS = ["`"] -140 STRING_ESCAPES = ["\\"] -141 HEX_STRINGS = [("0x", ""), ("0X", "")] -142 -143 KEYWORDS = { -144 **tokens.Tokenizer.KEYWORDS, -145 "BEGIN": TokenType.COMMAND, -146 "BEGIN TRANSACTION": TokenType.BEGIN, -147 "CURRENT_DATETIME": TokenType.CURRENT_DATETIME, -148 "DECLARE": TokenType.COMMAND, -149 "GEOGRAPHY": TokenType.GEOGRAPHY, -150 "FLOAT64": TokenType.DOUBLE, -151 "INT64": TokenType.BIGINT, -152 "NOT DETERMINISTIC": TokenType.VOLATILE, -153 "UNKNOWN": TokenType.NULL, -154 } -155 KEYWORDS.pop("DIV") -156 -157 class Parser(parser.Parser): -158 FUNCTIONS = { -159 **parser.Parser.FUNCTIONS, # type: ignore -160 "DATE_TRUNC": lambda args: exp.DateTrunc( -161 unit=exp.Literal.string(seq_get(args, 1).name), # type: ignore -162 this=seq_get(args, 0), -163 ), -164 "DATE_ADD": _date_add(exp.DateAdd), -165 "DATETIME_ADD": _date_add(exp.DatetimeAdd), -166 "DIV": lambda args: exp.IntDiv(this=seq_get(args, 0), expression=seq_get(args, 1)), -167 "REGEXP_CONTAINS": exp.RegexpLike.from_arg_list, -168 "REGEXP_EXTRACT": lambda args: exp.RegexpExtract( -169 this=seq_get(args, 0), -170 expression=seq_get(args, 1), -171 position=seq_get(args, 2), -172 occurrence=seq_get(args, 3), -173 group=exp.Literal.number(1) -174 if re.compile(str(seq_get(args, 1))).groups == 1 -175 else None, -176 ), -177 "TIME_ADD": _date_add(exp.TimeAdd), -178 "TIMESTAMP_ADD": _date_add(exp.TimestampAdd), -179 "DATE_SUB": _date_add(exp.DateSub), -180 "DATETIME_SUB": _date_add(exp.DatetimeSub), -181 "TIME_SUB": _date_add(exp.TimeSub), -182 "TIMESTAMP_SUB": _date_add(exp.TimestampSub), -183 "PARSE_TIMESTAMP": lambda args: exp.StrToTime( -184 this=seq_get(args, 1), format=seq_get(args, 0) -185 ), +132 KEYWORDS = { +133 **tokens.Tokenizer.KEYWORDS, +134 "ANY TYPE": TokenType.VARIANT, +135 "BEGIN": TokenType.COMMAND, +136 "BEGIN TRANSACTION": TokenType.BEGIN, +137 "CURRENT_DATETIME": TokenType.CURRENT_DATETIME, +138 "DECLARE": TokenType.COMMAND, +139 "GEOGRAPHY": TokenType.GEOGRAPHY, +140 "FLOAT64": TokenType.DOUBLE, +141 "INT64": TokenType.BIGINT, +142 "NOT DETERMINISTIC": TokenType.VOLATILE, +143 "UNKNOWN": TokenType.NULL, +144 } +145 KEYWORDS.pop("DIV") +146 +147 class Parser(parser.Parser): +148 PREFIXED_PIVOT_COLUMNS = True +149 +150 LOG_BASE_FIRST = False +151 LOG_DEFAULTS_TO_LN = True +152 +153 FUNCTIONS = { +154 **parser.Parser.FUNCTIONS, # type: ignore +155 "DATE_TRUNC": lambda args: exp.DateTrunc( +156 unit=exp.Literal.string(seq_get(args, 1).name), # type: ignore +157 this=seq_get(args, 0), +158 ), +159 "DATE_ADD": parse_date_delta_with_interval(exp.DateAdd), +160 "DATETIME_ADD": parse_date_delta_with_interval(exp.DatetimeAdd), +161 "DIV": lambda args: exp.IntDiv(this=seq_get(args, 0), expression=seq_get(args, 1)), +162 "REGEXP_CONTAINS": exp.RegexpLike.from_arg_list, +163 "REGEXP_EXTRACT": lambda args: exp.RegexpExtract( +164 this=seq_get(args, 0), +165 expression=seq_get(args, 1), +166 position=seq_get(args, 2), +167 occurrence=seq_get(args, 3), +168 group=exp.Literal.number(1) +169 if re.compile(str(seq_get(args, 1))).groups == 1 +170 else None, +171 ), +172 "TIME_ADD": parse_date_delta_with_interval(exp.TimeAdd), +173 "TIMESTAMP_ADD": parse_date_delta_with_interval(exp.TimestampAdd), +174 "DATE_SUB": parse_date_delta_with_interval(exp.DateSub), +175 "DATETIME_SUB": parse_date_delta_with_interval(exp.DatetimeSub), +176 "TIME_SUB": parse_date_delta_with_interval(exp.TimeSub), +177 "TIMESTAMP_SUB": parse_date_delta_with_interval(exp.TimestampSub), +178 "PARSE_TIMESTAMP": lambda args: exp.StrToTime( +179 this=seq_get(args, 1), format=seq_get(args, 0) +180 ), +181 } +182 +183 FUNCTION_PARSERS = { +184 **parser.Parser.FUNCTION_PARSERS, # type: ignore +185 "ARRAY": lambda self: self.expression(exp.Array, expressions=[self._parse_statement()]), 186 } -187 -188 FUNCTION_PARSERS = { -189 **parser.Parser.FUNCTION_PARSERS, # type: ignore -190 "ARRAY": lambda self: self.expression(exp.Array, expressions=[self._parse_statement()]), -191 } -192 FUNCTION_PARSERS.pop("TRIM") +187 FUNCTION_PARSERS.pop("TRIM") +188 +189 NO_PAREN_FUNCTIONS = { +190 **parser.Parser.NO_PAREN_FUNCTIONS, # type: ignore +191 TokenType.CURRENT_DATETIME: exp.CurrentDatetime, +192 } 193 -194 NO_PAREN_FUNCTIONS = { -195 **parser.Parser.NO_PAREN_FUNCTIONS, # type: ignore -196 TokenType.CURRENT_DATETIME: exp.CurrentDatetime, +194 NESTED_TYPE_TOKENS = { +195 *parser.Parser.NESTED_TYPE_TOKENS, # type: ignore +196 TokenType.TABLE, 197 } 198 -199 NESTED_TYPE_TOKENS = { -200 *parser.Parser.NESTED_TYPE_TOKENS, # type: ignore -201 TokenType.TABLE, +199 ID_VAR_TOKENS = { +200 *parser.Parser.ID_VAR_TOKENS, # type: ignore +201 TokenType.VALUES, 202 } 203 -204 ID_VAR_TOKENS = { -205 *parser.Parser.ID_VAR_TOKENS, # type: ignore -206 TokenType.VALUES, -207 } -208 -209 PROPERTY_PARSERS = { -210 **parser.Parser.PROPERTY_PARSERS, # type: ignore -211 "NOT DETERMINISTIC": lambda self: self.expression( -212 exp.VolatilityProperty, this=exp.Literal.string("VOLATILE") -213 ), -214 } -215 -216 LOG_BASE_FIRST = False -217 LOG_DEFAULTS_TO_LN = True -218 -219 class Generator(generator.Generator): -220 TRANSFORMS = { -221 **generator.Generator.TRANSFORMS, # type: ignore -222 **transforms.REMOVE_PRECISION_PARAMETERIZED_TYPES, # type: ignore -223 exp.ArraySize: rename_func("ARRAY_LENGTH"), -224 exp.AtTimeZone: lambda self, e: self.func( -225 "TIMESTAMP", self.func("DATETIME", e.this, e.args.get("zone")) -226 ), -227 exp.DateAdd: _date_add_sql("DATE", "ADD"), -228 exp.DateSub: _date_add_sql("DATE", "SUB"), -229 exp.DatetimeAdd: _date_add_sql("DATETIME", "ADD"), -230 exp.DatetimeSub: _date_add_sql("DATETIME", "SUB"), -231 exp.DateDiff: lambda self, e: f"DATE_DIFF({self.sql(e, 'this')}, {self.sql(e, 'expression')}, {self.sql(e.args.get('unit', 'DAY'))})", -232 exp.DateStrToDate: datestrtodate_sql, -233 exp.DateTrunc: lambda self, e: self.func("DATE_TRUNC", e.this, e.text("unit")), -234 exp.GroupConcat: rename_func("STRING_AGG"), -235 exp.ILike: no_ilike_sql, -236 exp.IntDiv: rename_func("DIV"), -237 exp.Max: max_or_greatest, -238 exp.Min: min_or_least, -239 exp.Select: transforms.preprocess( -240 [_unqualify_unnest], transforms.delegate("select_sql") -241 ), -242 exp.StrToTime: lambda self, e: f"PARSE_TIMESTAMP({self.format_time(e)}, {self.sql(e, 'this')})", -243 exp.TimeAdd: _date_add_sql("TIME", "ADD"), -244 exp.TimeSub: _date_add_sql("TIME", "SUB"), -245 exp.TimestampAdd: _date_add_sql("TIMESTAMP", "ADD"), -246 exp.TimestampSub: _date_add_sql("TIMESTAMP", "SUB"), -247 exp.TimeStrToTime: timestrtotime_sql, -248 exp.TsOrDsToDate: ts_or_ds_to_date_sql("bigquery"), -249 exp.TsOrDsAdd: _date_add_sql("DATE", "ADD"), -250 exp.PartitionedByProperty: lambda self, e: f"PARTITION BY {self.sql(e, 'this')}", -251 exp.VariancePop: rename_func("VAR_POP"), -252 exp.Values: _derived_table_values_to_unnest, -253 exp.ReturnsProperty: _returnsproperty_sql, -254 exp.Create: _create_sql, -255 exp.Trim: lambda self, e: self.func(f"TRIM", e.this, e.expression), -256 exp.VolatilityProperty: lambda self, e: f"DETERMINISTIC" -257 if e.name == "IMMUTABLE" -258 else "NOT DETERMINISTIC", -259 exp.RegexpLike: rename_func("REGEXP_CONTAINS"), -260 } -261 -262 TYPE_MAPPING = { -263 **generator.Generator.TYPE_MAPPING, # type: ignore -264 exp.DataType.Type.BIGINT: "INT64", -265 exp.DataType.Type.BOOLEAN: "BOOL", -266 exp.DataType.Type.CHAR: "STRING", -267 exp.DataType.Type.DECIMAL: "NUMERIC", -268 exp.DataType.Type.DOUBLE: "FLOAT64", -269 exp.DataType.Type.FLOAT: "FLOAT64", -270 exp.DataType.Type.INT: "INT64", -271 exp.DataType.Type.NCHAR: "STRING", -272 exp.DataType.Type.NVARCHAR: "STRING", -273 exp.DataType.Type.SMALLINT: "INT64", -274 exp.DataType.Type.TEXT: "STRING", -275 exp.DataType.Type.TINYINT: "INT64", -276 exp.DataType.Type.VARCHAR: "STRING", +204 PROPERTY_PARSERS = { +205 **parser.Parser.PROPERTY_PARSERS, # type: ignore +206 "NOT DETERMINISTIC": lambda self: self.expression( +207 exp.StabilityProperty, this=exp.Literal.string("VOLATILE") +208 ), +209 } +210 +211 class Generator(generator.Generator): +212 EXPLICIT_UNION = True +213 INTERVAL_ALLOWS_PLURAL_FORM = False +214 JOIN_HINTS = False +215 TABLE_HINTS = False +216 LIMIT_FETCH = "LIMIT" +217 +218 TRANSFORMS = { +219 **generator.Generator.TRANSFORMS, # type: ignore +220 **transforms.REMOVE_PRECISION_PARAMETERIZED_TYPES, # type: ignore +221 exp.ArraySize: rename_func("ARRAY_LENGTH"), +222 exp.AtTimeZone: lambda self, e: self.func( +223 "TIMESTAMP", self.func("DATETIME", e.this, e.args.get("zone")) +224 ), +225 exp.DateAdd: _date_add_sql("DATE", "ADD"), +226 exp.DateSub: _date_add_sql("DATE", "SUB"), +227 exp.DatetimeAdd: _date_add_sql("DATETIME", "ADD"), +228 exp.DatetimeSub: _date_add_sql("DATETIME", "SUB"), +229 exp.DateDiff: lambda self, e: f"DATE_DIFF({self.sql(e, 'this')}, {self.sql(e, 'expression')}, {self.sql(e.args.get('unit', 'DAY'))})", +230 exp.DateStrToDate: datestrtodate_sql, +231 exp.DateTrunc: lambda self, e: self.func("DATE_TRUNC", e.this, e.text("unit")), +232 exp.GroupConcat: rename_func("STRING_AGG"), +233 exp.ILike: no_ilike_sql, +234 exp.IntDiv: rename_func("DIV"), +235 exp.Max: max_or_greatest, +236 exp.Min: min_or_least, +237 exp.Select: transforms.preprocess([_unqualify_unnest]), +238 exp.StrToTime: lambda self, e: f"PARSE_TIMESTAMP({self.format_time(e)}, {self.sql(e, 'this')})", +239 exp.TimeAdd: _date_add_sql("TIME", "ADD"), +240 exp.TimeSub: _date_add_sql("TIME", "SUB"), +241 exp.TimestampAdd: _date_add_sql("TIMESTAMP", "ADD"), +242 exp.TimestampSub: _date_add_sql("TIMESTAMP", "SUB"), +243 exp.TimeStrToTime: timestrtotime_sql, +244 exp.TsOrDsToDate: ts_or_ds_to_date_sql("bigquery"), +245 exp.TsOrDsAdd: _date_add_sql("DATE", "ADD"), +246 exp.PartitionedByProperty: lambda self, e: f"PARTITION BY {self.sql(e, 'this')}", +247 exp.VariancePop: rename_func("VAR_POP"), +248 exp.Values: _derived_table_values_to_unnest, +249 exp.ReturnsProperty: _returnsproperty_sql, +250 exp.Create: _create_sql, +251 exp.Trim: lambda self, e: self.func(f"TRIM", e.this, e.expression), +252 exp.StabilityProperty: lambda self, e: f"DETERMINISTIC" +253 if e.name == "IMMUTABLE" +254 else "NOT DETERMINISTIC", +255 exp.RegexpLike: rename_func("REGEXP_CONTAINS"), +256 } +257 +258 TYPE_MAPPING = { +259 **generator.Generator.TYPE_MAPPING, # type: ignore +260 exp.DataType.Type.BIGDECIMAL: "BIGNUMERIC", +261 exp.DataType.Type.BIGINT: "INT64", +262 exp.DataType.Type.BOOLEAN: "BOOL", +263 exp.DataType.Type.CHAR: "STRING", +264 exp.DataType.Type.DECIMAL: "NUMERIC", +265 exp.DataType.Type.DOUBLE: "FLOAT64", +266 exp.DataType.Type.FLOAT: "FLOAT64", +267 exp.DataType.Type.INT: "INT64", +268 exp.DataType.Type.NCHAR: "STRING", +269 exp.DataType.Type.NVARCHAR: "STRING", +270 exp.DataType.Type.SMALLINT: "INT64", +271 exp.DataType.Type.TEXT: "STRING", +272 exp.DataType.Type.TIMESTAMP: "DATETIME", +273 exp.DataType.Type.TIMESTAMPTZ: "TIMESTAMP", +274 exp.DataType.Type.TINYINT: "INT64", +275 exp.DataType.Type.VARCHAR: "STRING", +276 exp.DataType.Type.VARIANT: "ANY TYPE", 277 } -278 PROPERTIES_LOCATION = { -279 **generator.Generator.PROPERTIES_LOCATION, # type: ignore -280 exp.PartitionedByProperty: exp.Properties.Location.POST_SCHEMA, -281 } -282 -283 EXPLICIT_UNION = True -284 LIMIT_FETCH = "LIMIT" -285 -286 def array_sql(self, expression: exp.Array) -> str: -287 first_arg = seq_get(expression.expressions, 0) -288 if isinstance(first_arg, exp.Subqueryable): -289 return f"ARRAY{self.wrap(self.sql(first_arg))}" -290 -291 return inline_array_sql(self, expression) -292 -293 def transaction_sql(self, *_) -> str: -294 return "BEGIN TRANSACTION" -295 -296 def commit_sql(self, *_) -> str: -297 return "COMMIT TRANSACTION" -298 -299 def rollback_sql(self, *_) -> str: -300 return "ROLLBACK TRANSACTION" -301 -302 def in_unnest_op(self, expression: exp.Unnest) -> str: -303 return self.sql(expression) -304 -305 def except_op(self, expression: exp.Except) -> str: -306 if not expression.args.get("distinct", False): -307 self.unsupported("EXCEPT without DISTINCT is not supported in BigQuery") -308 return f"EXCEPT{' DISTINCT' if expression.args.get('distinct') else ' ALL'}" -309 -310 def intersect_op(self, expression: exp.Intersect) -> str: -311 if not expression.args.get("distinct", False): -312 self.unsupported("INTERSECT without DISTINCT is not supported in BigQuery") -313 return f"INTERSECT{' DISTINCT' if expression.args.get('distinct') else ' ALL'}" +278 +279 PROPERTIES_LOCATION = { +280 **generator.Generator.PROPERTIES_LOCATION, # type: ignore +281 exp.PartitionedByProperty: exp.Properties.Location.POST_SCHEMA, +282 exp.VolatileProperty: exp.Properties.Location.UNSUPPORTED, +283 } +284 +285 def array_sql(self, expression: exp.Array) -> str: +286 first_arg = seq_get(expression.expressions, 0) +287 if isinstance(first_arg, exp.Subqueryable): +288 return f"ARRAY{self.wrap(self.sql(first_arg))}" +289 +290 return inline_array_sql(self, expression) +291 +292 def transaction_sql(self, *_) -> str: +293 return "BEGIN TRANSACTION" +294 +295 def commit_sql(self, *_) -> str: +296 return "COMMIT TRANSACTION" +297 +298 def rollback_sql(self, *_) -> str: +299 return "ROLLBACK TRANSACTION" +300 +301 def in_unnest_op(self, expression: exp.Unnest) -> str: +302 return self.sql(expression) +303 +304 def except_op(self, expression: exp.Except) -> str: +305 if not expression.args.get("distinct", False): +306 self.unsupported("EXCEPT without DISTINCT is not supported in BigQuery") +307 return f"EXCEPT{' DISTINCT' if expression.args.get('distinct') else ' ALL'}" +308 +309 def intersect_op(self, expression: exp.Intersect) -> str: +310 if not expression.args.get("distinct", False): +311 self.unsupported("INTERSECT without DISTINCT is not supported in BigQuery") +312 return f"INTERSECT{' DISTINCT' if expression.args.get('distinct') else ' ALL'}"
    @@ -426,201 +425,211 @@ -
    120class BigQuery(Dialect):
    -121    unnest_column_only = True
    -122    time_mapping = {
    -123        "%M": "%-M",
    -124        "%d": "%-d",
    -125        "%m": "%-m",
    -126        "%y": "%-y",
    -127        "%H": "%-H",
    -128        "%I": "%-I",
    -129        "%S": "%-S",
    -130        "%j": "%-j",
    -131    }
    +            
    109class BigQuery(Dialect):
    +110    unnest_column_only = True
    +111    time_mapping = {
    +112        "%M": "%-M",
    +113        "%d": "%-d",
    +114        "%m": "%-m",
    +115        "%y": "%-y",
    +116        "%H": "%-H",
    +117        "%I": "%-I",
    +118        "%S": "%-S",
    +119        "%j": "%-j",
    +120    }
    +121
    +122    class Tokenizer(tokens.Tokenizer):
    +123        QUOTES = [
    +124            (prefix + quote, quote) if prefix else quote
    +125            for quote in ["'", '"', '"""', "'''"]
    +126            for prefix in ["", "r", "R"]
    +127        ]
    +128        COMMENTS = ["--", "#", ("/*", "*/")]
    +129        IDENTIFIERS = ["`"]
    +130        STRING_ESCAPES = ["\\"]
    +131        HEX_STRINGS = [("0x", ""), ("0X", "")]
     132
    -133    class Tokenizer(tokens.Tokenizer):
    -134        QUOTES = [
    -135            (prefix + quote, quote) if prefix else quote
    -136            for quote in ["'", '"', '"""', "'''"]
    -137            for prefix in ["", "r", "R"]
    -138        ]
    -139        COMMENTS = ["--", "#", ("/*", "*/")]
    -140        IDENTIFIERS = ["`"]
    -141        STRING_ESCAPES = ["\\"]
    -142        HEX_STRINGS = [("0x", ""), ("0X", "")]
    -143
    -144        KEYWORDS = {
    -145            **tokens.Tokenizer.KEYWORDS,
    -146            "BEGIN": TokenType.COMMAND,
    -147            "BEGIN TRANSACTION": TokenType.BEGIN,
    -148            "CURRENT_DATETIME": TokenType.CURRENT_DATETIME,
    -149            "DECLARE": TokenType.COMMAND,
    -150            "GEOGRAPHY": TokenType.GEOGRAPHY,
    -151            "FLOAT64": TokenType.DOUBLE,
    -152            "INT64": TokenType.BIGINT,
    -153            "NOT DETERMINISTIC": TokenType.VOLATILE,
    -154            "UNKNOWN": TokenType.NULL,
    -155        }
    -156        KEYWORDS.pop("DIV")
    -157
    -158    class Parser(parser.Parser):
    -159        FUNCTIONS = {
    -160            **parser.Parser.FUNCTIONS,  # type: ignore
    -161            "DATE_TRUNC": lambda args: exp.DateTrunc(
    -162                unit=exp.Literal.string(seq_get(args, 1).name),  # type: ignore
    -163                this=seq_get(args, 0),
    -164            ),
    -165            "DATE_ADD": _date_add(exp.DateAdd),
    -166            "DATETIME_ADD": _date_add(exp.DatetimeAdd),
    -167            "DIV": lambda args: exp.IntDiv(this=seq_get(args, 0), expression=seq_get(args, 1)),
    -168            "REGEXP_CONTAINS": exp.RegexpLike.from_arg_list,
    -169            "REGEXP_EXTRACT": lambda args: exp.RegexpExtract(
    -170                this=seq_get(args, 0),
    -171                expression=seq_get(args, 1),
    -172                position=seq_get(args, 2),
    -173                occurrence=seq_get(args, 3),
    -174                group=exp.Literal.number(1)
    -175                if re.compile(str(seq_get(args, 1))).groups == 1
    -176                else None,
    -177            ),
    -178            "TIME_ADD": _date_add(exp.TimeAdd),
    -179            "TIMESTAMP_ADD": _date_add(exp.TimestampAdd),
    -180            "DATE_SUB": _date_add(exp.DateSub),
    -181            "DATETIME_SUB": _date_add(exp.DatetimeSub),
    -182            "TIME_SUB": _date_add(exp.TimeSub),
    -183            "TIMESTAMP_SUB": _date_add(exp.TimestampSub),
    -184            "PARSE_TIMESTAMP": lambda args: exp.StrToTime(
    -185                this=seq_get(args, 1), format=seq_get(args, 0)
    -186            ),
    +133        KEYWORDS = {
    +134            **tokens.Tokenizer.KEYWORDS,
    +135            "ANY TYPE": TokenType.VARIANT,
    +136            "BEGIN": TokenType.COMMAND,
    +137            "BEGIN TRANSACTION": TokenType.BEGIN,
    +138            "CURRENT_DATETIME": TokenType.CURRENT_DATETIME,
    +139            "DECLARE": TokenType.COMMAND,
    +140            "GEOGRAPHY": TokenType.GEOGRAPHY,
    +141            "FLOAT64": TokenType.DOUBLE,
    +142            "INT64": TokenType.BIGINT,
    +143            "NOT DETERMINISTIC": TokenType.VOLATILE,
    +144            "UNKNOWN": TokenType.NULL,
    +145        }
    +146        KEYWORDS.pop("DIV")
    +147
    +148    class Parser(parser.Parser):
    +149        PREFIXED_PIVOT_COLUMNS = True
    +150
    +151        LOG_BASE_FIRST = False
    +152        LOG_DEFAULTS_TO_LN = True
    +153
    +154        FUNCTIONS = {
    +155            **parser.Parser.FUNCTIONS,  # type: ignore
    +156            "DATE_TRUNC": lambda args: exp.DateTrunc(
    +157                unit=exp.Literal.string(seq_get(args, 1).name),  # type: ignore
    +158                this=seq_get(args, 0),
    +159            ),
    +160            "DATE_ADD": parse_date_delta_with_interval(exp.DateAdd),
    +161            "DATETIME_ADD": parse_date_delta_with_interval(exp.DatetimeAdd),
    +162            "DIV": lambda args: exp.IntDiv(this=seq_get(args, 0), expression=seq_get(args, 1)),
    +163            "REGEXP_CONTAINS": exp.RegexpLike.from_arg_list,
    +164            "REGEXP_EXTRACT": lambda args: exp.RegexpExtract(
    +165                this=seq_get(args, 0),
    +166                expression=seq_get(args, 1),
    +167                position=seq_get(args, 2),
    +168                occurrence=seq_get(args, 3),
    +169                group=exp.Literal.number(1)
    +170                if re.compile(str(seq_get(args, 1))).groups == 1
    +171                else None,
    +172            ),
    +173            "TIME_ADD": parse_date_delta_with_interval(exp.TimeAdd),
    +174            "TIMESTAMP_ADD": parse_date_delta_with_interval(exp.TimestampAdd),
    +175            "DATE_SUB": parse_date_delta_with_interval(exp.DateSub),
    +176            "DATETIME_SUB": parse_date_delta_with_interval(exp.DatetimeSub),
    +177            "TIME_SUB": parse_date_delta_with_interval(exp.TimeSub),
    +178            "TIMESTAMP_SUB": parse_date_delta_with_interval(exp.TimestampSub),
    +179            "PARSE_TIMESTAMP": lambda args: exp.StrToTime(
    +180                this=seq_get(args, 1), format=seq_get(args, 0)
    +181            ),
    +182        }
    +183
    +184        FUNCTION_PARSERS = {
    +185            **parser.Parser.FUNCTION_PARSERS,  # type: ignore
    +186            "ARRAY": lambda self: self.expression(exp.Array, expressions=[self._parse_statement()]),
     187        }
    -188
    -189        FUNCTION_PARSERS = {
    -190            **parser.Parser.FUNCTION_PARSERS,  # type: ignore
    -191            "ARRAY": lambda self: self.expression(exp.Array, expressions=[self._parse_statement()]),
    -192        }
    -193        FUNCTION_PARSERS.pop("TRIM")
    +188        FUNCTION_PARSERS.pop("TRIM")
    +189
    +190        NO_PAREN_FUNCTIONS = {
    +191            **parser.Parser.NO_PAREN_FUNCTIONS,  # type: ignore
    +192            TokenType.CURRENT_DATETIME: exp.CurrentDatetime,
    +193        }
     194
    -195        NO_PAREN_FUNCTIONS = {
    -196            **parser.Parser.NO_PAREN_FUNCTIONS,  # type: ignore
    -197            TokenType.CURRENT_DATETIME: exp.CurrentDatetime,
    +195        NESTED_TYPE_TOKENS = {
    +196            *parser.Parser.NESTED_TYPE_TOKENS,  # type: ignore
    +197            TokenType.TABLE,
     198        }
     199
    -200        NESTED_TYPE_TOKENS = {
    -201            *parser.Parser.NESTED_TYPE_TOKENS,  # type: ignore
    -202            TokenType.TABLE,
    +200        ID_VAR_TOKENS = {
    +201            *parser.Parser.ID_VAR_TOKENS,  # type: ignore
    +202            TokenType.VALUES,
     203        }
     204
    -205        ID_VAR_TOKENS = {
    -206            *parser.Parser.ID_VAR_TOKENS,  # type: ignore
    -207            TokenType.VALUES,
    -208        }
    -209
    -210        PROPERTY_PARSERS = {
    -211            **parser.Parser.PROPERTY_PARSERS,  # type: ignore
    -212            "NOT DETERMINISTIC": lambda self: self.expression(
    -213                exp.VolatilityProperty, this=exp.Literal.string("VOLATILE")
    -214            ),
    -215        }
    -216
    -217        LOG_BASE_FIRST = False
    -218        LOG_DEFAULTS_TO_LN = True
    -219
    -220    class Generator(generator.Generator):
    -221        TRANSFORMS = {
    -222            **generator.Generator.TRANSFORMS,  # type: ignore
    -223            **transforms.REMOVE_PRECISION_PARAMETERIZED_TYPES,  # type: ignore
    -224            exp.ArraySize: rename_func("ARRAY_LENGTH"),
    -225            exp.AtTimeZone: lambda self, e: self.func(
    -226                "TIMESTAMP", self.func("DATETIME", e.this, e.args.get("zone"))
    -227            ),
    -228            exp.DateAdd: _date_add_sql("DATE", "ADD"),
    -229            exp.DateSub: _date_add_sql("DATE", "SUB"),
    -230            exp.DatetimeAdd: _date_add_sql("DATETIME", "ADD"),
    -231            exp.DatetimeSub: _date_add_sql("DATETIME", "SUB"),
    -232            exp.DateDiff: lambda self, e: f"DATE_DIFF({self.sql(e, 'this')}, {self.sql(e, 'expression')}, {self.sql(e.args.get('unit', 'DAY'))})",
    -233            exp.DateStrToDate: datestrtodate_sql,
    -234            exp.DateTrunc: lambda self, e: self.func("DATE_TRUNC", e.this, e.text("unit")),
    -235            exp.GroupConcat: rename_func("STRING_AGG"),
    -236            exp.ILike: no_ilike_sql,
    -237            exp.IntDiv: rename_func("DIV"),
    -238            exp.Max: max_or_greatest,
    -239            exp.Min: min_or_least,
    -240            exp.Select: transforms.preprocess(
    -241                [_unqualify_unnest], transforms.delegate("select_sql")
    -242            ),
    -243            exp.StrToTime: lambda self, e: f"PARSE_TIMESTAMP({self.format_time(e)}, {self.sql(e, 'this')})",
    -244            exp.TimeAdd: _date_add_sql("TIME", "ADD"),
    -245            exp.TimeSub: _date_add_sql("TIME", "SUB"),
    -246            exp.TimestampAdd: _date_add_sql("TIMESTAMP", "ADD"),
    -247            exp.TimestampSub: _date_add_sql("TIMESTAMP", "SUB"),
    -248            exp.TimeStrToTime: timestrtotime_sql,
    -249            exp.TsOrDsToDate: ts_or_ds_to_date_sql("bigquery"),
    -250            exp.TsOrDsAdd: _date_add_sql("DATE", "ADD"),
    -251            exp.PartitionedByProperty: lambda self, e: f"PARTITION BY {self.sql(e, 'this')}",
    -252            exp.VariancePop: rename_func("VAR_POP"),
    -253            exp.Values: _derived_table_values_to_unnest,
    -254            exp.ReturnsProperty: _returnsproperty_sql,
    -255            exp.Create: _create_sql,
    -256            exp.Trim: lambda self, e: self.func(f"TRIM", e.this, e.expression),
    -257            exp.VolatilityProperty: lambda self, e: f"DETERMINISTIC"
    -258            if e.name == "IMMUTABLE"
    -259            else "NOT DETERMINISTIC",
    -260            exp.RegexpLike: rename_func("REGEXP_CONTAINS"),
    -261        }
    -262
    -263        TYPE_MAPPING = {
    -264            **generator.Generator.TYPE_MAPPING,  # type: ignore
    -265            exp.DataType.Type.BIGINT: "INT64",
    -266            exp.DataType.Type.BOOLEAN: "BOOL",
    -267            exp.DataType.Type.CHAR: "STRING",
    -268            exp.DataType.Type.DECIMAL: "NUMERIC",
    -269            exp.DataType.Type.DOUBLE: "FLOAT64",
    -270            exp.DataType.Type.FLOAT: "FLOAT64",
    -271            exp.DataType.Type.INT: "INT64",
    -272            exp.DataType.Type.NCHAR: "STRING",
    -273            exp.DataType.Type.NVARCHAR: "STRING",
    -274            exp.DataType.Type.SMALLINT: "INT64",
    -275            exp.DataType.Type.TEXT: "STRING",
    -276            exp.DataType.Type.TINYINT: "INT64",
    -277            exp.DataType.Type.VARCHAR: "STRING",
    +205        PROPERTY_PARSERS = {
    +206            **parser.Parser.PROPERTY_PARSERS,  # type: ignore
    +207            "NOT DETERMINISTIC": lambda self: self.expression(
    +208                exp.StabilityProperty, this=exp.Literal.string("VOLATILE")
    +209            ),
    +210        }
    +211
    +212    class Generator(generator.Generator):
    +213        EXPLICIT_UNION = True
    +214        INTERVAL_ALLOWS_PLURAL_FORM = False
    +215        JOIN_HINTS = False
    +216        TABLE_HINTS = False
    +217        LIMIT_FETCH = "LIMIT"
    +218
    +219        TRANSFORMS = {
    +220            **generator.Generator.TRANSFORMS,  # type: ignore
    +221            **transforms.REMOVE_PRECISION_PARAMETERIZED_TYPES,  # type: ignore
    +222            exp.ArraySize: rename_func("ARRAY_LENGTH"),
    +223            exp.AtTimeZone: lambda self, e: self.func(
    +224                "TIMESTAMP", self.func("DATETIME", e.this, e.args.get("zone"))
    +225            ),
    +226            exp.DateAdd: _date_add_sql("DATE", "ADD"),
    +227            exp.DateSub: _date_add_sql("DATE", "SUB"),
    +228            exp.DatetimeAdd: _date_add_sql("DATETIME", "ADD"),
    +229            exp.DatetimeSub: _date_add_sql("DATETIME", "SUB"),
    +230            exp.DateDiff: lambda self, e: f"DATE_DIFF({self.sql(e, 'this')}, {self.sql(e, 'expression')}, {self.sql(e.args.get('unit', 'DAY'))})",
    +231            exp.DateStrToDate: datestrtodate_sql,
    +232            exp.DateTrunc: lambda self, e: self.func("DATE_TRUNC", e.this, e.text("unit")),
    +233            exp.GroupConcat: rename_func("STRING_AGG"),
    +234            exp.ILike: no_ilike_sql,
    +235            exp.IntDiv: rename_func("DIV"),
    +236            exp.Max: max_or_greatest,
    +237            exp.Min: min_or_least,
    +238            exp.Select: transforms.preprocess([_unqualify_unnest]),
    +239            exp.StrToTime: lambda self, e: f"PARSE_TIMESTAMP({self.format_time(e)}, {self.sql(e, 'this')})",
    +240            exp.TimeAdd: _date_add_sql("TIME", "ADD"),
    +241            exp.TimeSub: _date_add_sql("TIME", "SUB"),
    +242            exp.TimestampAdd: _date_add_sql("TIMESTAMP", "ADD"),
    +243            exp.TimestampSub: _date_add_sql("TIMESTAMP", "SUB"),
    +244            exp.TimeStrToTime: timestrtotime_sql,
    +245            exp.TsOrDsToDate: ts_or_ds_to_date_sql("bigquery"),
    +246            exp.TsOrDsAdd: _date_add_sql("DATE", "ADD"),
    +247            exp.PartitionedByProperty: lambda self, e: f"PARTITION BY {self.sql(e, 'this')}",
    +248            exp.VariancePop: rename_func("VAR_POP"),
    +249            exp.Values: _derived_table_values_to_unnest,
    +250            exp.ReturnsProperty: _returnsproperty_sql,
    +251            exp.Create: _create_sql,
    +252            exp.Trim: lambda self, e: self.func(f"TRIM", e.this, e.expression),
    +253            exp.StabilityProperty: lambda self, e: f"DETERMINISTIC"
    +254            if e.name == "IMMUTABLE"
    +255            else "NOT DETERMINISTIC",
    +256            exp.RegexpLike: rename_func("REGEXP_CONTAINS"),
    +257        }
    +258
    +259        TYPE_MAPPING = {
    +260            **generator.Generator.TYPE_MAPPING,  # type: ignore
    +261            exp.DataType.Type.BIGDECIMAL: "BIGNUMERIC",
    +262            exp.DataType.Type.BIGINT: "INT64",
    +263            exp.DataType.Type.BOOLEAN: "BOOL",
    +264            exp.DataType.Type.CHAR: "STRING",
    +265            exp.DataType.Type.DECIMAL: "NUMERIC",
    +266            exp.DataType.Type.DOUBLE: "FLOAT64",
    +267            exp.DataType.Type.FLOAT: "FLOAT64",
    +268            exp.DataType.Type.INT: "INT64",
    +269            exp.DataType.Type.NCHAR: "STRING",
    +270            exp.DataType.Type.NVARCHAR: "STRING",
    +271            exp.DataType.Type.SMALLINT: "INT64",
    +272            exp.DataType.Type.TEXT: "STRING",
    +273            exp.DataType.Type.TIMESTAMP: "DATETIME",
    +274            exp.DataType.Type.TIMESTAMPTZ: "TIMESTAMP",
    +275            exp.DataType.Type.TINYINT: "INT64",
    +276            exp.DataType.Type.VARCHAR: "STRING",
    +277            exp.DataType.Type.VARIANT: "ANY TYPE",
     278        }
    -279        PROPERTIES_LOCATION = {
    -280            **generator.Generator.PROPERTIES_LOCATION,  # type: ignore
    -281            exp.PartitionedByProperty: exp.Properties.Location.POST_SCHEMA,
    -282        }
    -283
    -284        EXPLICIT_UNION = True
    -285        LIMIT_FETCH = "LIMIT"
    -286
    -287        def array_sql(self, expression: exp.Array) -> str:
    -288            first_arg = seq_get(expression.expressions, 0)
    -289            if isinstance(first_arg, exp.Subqueryable):
    -290                return f"ARRAY{self.wrap(self.sql(first_arg))}"
    -291
    -292            return inline_array_sql(self, expression)
    -293
    -294        def transaction_sql(self, *_) -> str:
    -295            return "BEGIN TRANSACTION"
    -296
    -297        def commit_sql(self, *_) -> str:
    -298            return "COMMIT TRANSACTION"
    -299
    -300        def rollback_sql(self, *_) -> str:
    -301            return "ROLLBACK TRANSACTION"
    -302
    -303        def in_unnest_op(self, expression: exp.Unnest) -> str:
    -304            return self.sql(expression)
    -305
    -306        def except_op(self, expression: exp.Except) -> str:
    -307            if not expression.args.get("distinct", False):
    -308                self.unsupported("EXCEPT without DISTINCT is not supported in BigQuery")
    -309            return f"EXCEPT{' DISTINCT' if expression.args.get('distinct') else ' ALL'}"
    -310
    -311        def intersect_op(self, expression: exp.Intersect) -> str:
    -312            if not expression.args.get("distinct", False):
    -313                self.unsupported("INTERSECT without DISTINCT is not supported in BigQuery")
    -314            return f"INTERSECT{' DISTINCT' if expression.args.get('distinct') else ' ALL'}"
    +279
    +280        PROPERTIES_LOCATION = {
    +281            **generator.Generator.PROPERTIES_LOCATION,  # type: ignore
    +282            exp.PartitionedByProperty: exp.Properties.Location.POST_SCHEMA,
    +283            exp.VolatileProperty: exp.Properties.Location.UNSUPPORTED,
    +284        }
    +285
    +286        def array_sql(self, expression: exp.Array) -> str:
    +287            first_arg = seq_get(expression.expressions, 0)
    +288            if isinstance(first_arg, exp.Subqueryable):
    +289                return f"ARRAY{self.wrap(self.sql(first_arg))}"
    +290
    +291            return inline_array_sql(self, expression)
    +292
    +293        def transaction_sql(self, *_) -> str:
    +294            return "BEGIN TRANSACTION"
    +295
    +296        def commit_sql(self, *_) -> str:
    +297            return "COMMIT TRANSACTION"
    +298
    +299        def rollback_sql(self, *_) -> str:
    +300            return "ROLLBACK TRANSACTION"
    +301
    +302        def in_unnest_op(self, expression: exp.Unnest) -> str:
    +303            return self.sql(expression)
    +304
    +305        def except_op(self, expression: exp.Except) -> str:
    +306            if not expression.args.get("distinct", False):
    +307                self.unsupported("EXCEPT without DISTINCT is not supported in BigQuery")
    +308            return f"EXCEPT{' DISTINCT' if expression.args.get('distinct') else ' ALL'}"
    +309
    +310        def intersect_op(self, expression: exp.Intersect) -> str:
    +311            if not expression.args.get("distinct", False):
    +312                self.unsupported("INTERSECT without DISTINCT is not supported in BigQuery")
    +313            return f"INTERSECT{' DISTINCT' if expression.args.get('distinct') else ' ALL'}"
     
    @@ -655,30 +664,31 @@
    -
    133    class Tokenizer(tokens.Tokenizer):
    -134        QUOTES = [
    -135            (prefix + quote, quote) if prefix else quote
    -136            for quote in ["'", '"', '"""', "'''"]
    -137            for prefix in ["", "r", "R"]
    -138        ]
    -139        COMMENTS = ["--", "#", ("/*", "*/")]
    -140        IDENTIFIERS = ["`"]
    -141        STRING_ESCAPES = ["\\"]
    -142        HEX_STRINGS = [("0x", ""), ("0X", "")]
    -143
    -144        KEYWORDS = {
    -145            **tokens.Tokenizer.KEYWORDS,
    -146            "BEGIN": TokenType.COMMAND,
    -147            "BEGIN TRANSACTION": TokenType.BEGIN,
    -148            "CURRENT_DATETIME": TokenType.CURRENT_DATETIME,
    -149            "DECLARE": TokenType.COMMAND,
    -150            "GEOGRAPHY": TokenType.GEOGRAPHY,
    -151            "FLOAT64": TokenType.DOUBLE,
    -152            "INT64": TokenType.BIGINT,
    -153            "NOT DETERMINISTIC": TokenType.VOLATILE,
    -154            "UNKNOWN": TokenType.NULL,
    -155        }
    -156        KEYWORDS.pop("DIV")
    +            
    122    class Tokenizer(tokens.Tokenizer):
    +123        QUOTES = [
    +124            (prefix + quote, quote) if prefix else quote
    +125            for quote in ["'", '"', '"""', "'''"]
    +126            for prefix in ["", "r", "R"]
    +127        ]
    +128        COMMENTS = ["--", "#", ("/*", "*/")]
    +129        IDENTIFIERS = ["`"]
    +130        STRING_ESCAPES = ["\\"]
    +131        HEX_STRINGS = [("0x", ""), ("0X", "")]
    +132
    +133        KEYWORDS = {
    +134            **tokens.Tokenizer.KEYWORDS,
    +135            "ANY TYPE": TokenType.VARIANT,
    +136            "BEGIN": TokenType.COMMAND,
    +137            "BEGIN TRANSACTION": TokenType.BEGIN,
    +138            "CURRENT_DATETIME": TokenType.CURRENT_DATETIME,
    +139            "DECLARE": TokenType.COMMAND,
    +140            "GEOGRAPHY": TokenType.GEOGRAPHY,
    +141            "FLOAT64": TokenType.DOUBLE,
    +142            "INT64": TokenType.BIGINT,
    +143            "NOT DETERMINISTIC": TokenType.VOLATILE,
    +144            "UNKNOWN": TokenType.NULL,
    +145        }
    +146        KEYWORDS.pop("DIV")
     
    @@ -706,67 +716,69 @@
    -
    158    class Parser(parser.Parser):
    -159        FUNCTIONS = {
    -160            **parser.Parser.FUNCTIONS,  # type: ignore
    -161            "DATE_TRUNC": lambda args: exp.DateTrunc(
    -162                unit=exp.Literal.string(seq_get(args, 1).name),  # type: ignore
    -163                this=seq_get(args, 0),
    -164            ),
    -165            "DATE_ADD": _date_add(exp.DateAdd),
    -166            "DATETIME_ADD": _date_add(exp.DatetimeAdd),
    -167            "DIV": lambda args: exp.IntDiv(this=seq_get(args, 0), expression=seq_get(args, 1)),
    -168            "REGEXP_CONTAINS": exp.RegexpLike.from_arg_list,
    -169            "REGEXP_EXTRACT": lambda args: exp.RegexpExtract(
    -170                this=seq_get(args, 0),
    -171                expression=seq_get(args, 1),
    -172                position=seq_get(args, 2),
    -173                occurrence=seq_get(args, 3),
    -174                group=exp.Literal.number(1)
    -175                if re.compile(str(seq_get(args, 1))).groups == 1
    -176                else None,
    -177            ),
    -178            "TIME_ADD": _date_add(exp.TimeAdd),
    -179            "TIMESTAMP_ADD": _date_add(exp.TimestampAdd),
    -180            "DATE_SUB": _date_add(exp.DateSub),
    -181            "DATETIME_SUB": _date_add(exp.DatetimeSub),
    -182            "TIME_SUB": _date_add(exp.TimeSub),
    -183            "TIMESTAMP_SUB": _date_add(exp.TimestampSub),
    -184            "PARSE_TIMESTAMP": lambda args: exp.StrToTime(
    -185                this=seq_get(args, 1), format=seq_get(args, 0)
    -186            ),
    +            
    148    class Parser(parser.Parser):
    +149        PREFIXED_PIVOT_COLUMNS = True
    +150
    +151        LOG_BASE_FIRST = False
    +152        LOG_DEFAULTS_TO_LN = True
    +153
    +154        FUNCTIONS = {
    +155            **parser.Parser.FUNCTIONS,  # type: ignore
    +156            "DATE_TRUNC": lambda args: exp.DateTrunc(
    +157                unit=exp.Literal.string(seq_get(args, 1).name),  # type: ignore
    +158                this=seq_get(args, 0),
    +159            ),
    +160            "DATE_ADD": parse_date_delta_with_interval(exp.DateAdd),
    +161            "DATETIME_ADD": parse_date_delta_with_interval(exp.DatetimeAdd),
    +162            "DIV": lambda args: exp.IntDiv(this=seq_get(args, 0), expression=seq_get(args, 1)),
    +163            "REGEXP_CONTAINS": exp.RegexpLike.from_arg_list,
    +164            "REGEXP_EXTRACT": lambda args: exp.RegexpExtract(
    +165                this=seq_get(args, 0),
    +166                expression=seq_get(args, 1),
    +167                position=seq_get(args, 2),
    +168                occurrence=seq_get(args, 3),
    +169                group=exp.Literal.number(1)
    +170                if re.compile(str(seq_get(args, 1))).groups == 1
    +171                else None,
    +172            ),
    +173            "TIME_ADD": parse_date_delta_with_interval(exp.TimeAdd),
    +174            "TIMESTAMP_ADD": parse_date_delta_with_interval(exp.TimestampAdd),
    +175            "DATE_SUB": parse_date_delta_with_interval(exp.DateSub),
    +176            "DATETIME_SUB": parse_date_delta_with_interval(exp.DatetimeSub),
    +177            "TIME_SUB": parse_date_delta_with_interval(exp.TimeSub),
    +178            "TIMESTAMP_SUB": parse_date_delta_with_interval(exp.TimestampSub),
    +179            "PARSE_TIMESTAMP": lambda args: exp.StrToTime(
    +180                this=seq_get(args, 1), format=seq_get(args, 0)
    +181            ),
    +182        }
    +183
    +184        FUNCTION_PARSERS = {
    +185            **parser.Parser.FUNCTION_PARSERS,  # type: ignore
    +186            "ARRAY": lambda self: self.expression(exp.Array, expressions=[self._parse_statement()]),
     187        }
    -188
    -189        FUNCTION_PARSERS = {
    -190            **parser.Parser.FUNCTION_PARSERS,  # type: ignore
    -191            "ARRAY": lambda self: self.expression(exp.Array, expressions=[self._parse_statement()]),
    -192        }
    -193        FUNCTION_PARSERS.pop("TRIM")
    +188        FUNCTION_PARSERS.pop("TRIM")
    +189
    +190        NO_PAREN_FUNCTIONS = {
    +191            **parser.Parser.NO_PAREN_FUNCTIONS,  # type: ignore
    +192            TokenType.CURRENT_DATETIME: exp.CurrentDatetime,
    +193        }
     194
    -195        NO_PAREN_FUNCTIONS = {
    -196            **parser.Parser.NO_PAREN_FUNCTIONS,  # type: ignore
    -197            TokenType.CURRENT_DATETIME: exp.CurrentDatetime,
    +195        NESTED_TYPE_TOKENS = {
    +196            *parser.Parser.NESTED_TYPE_TOKENS,  # type: ignore
    +197            TokenType.TABLE,
     198        }
     199
    -200        NESTED_TYPE_TOKENS = {
    -201            *parser.Parser.NESTED_TYPE_TOKENS,  # type: ignore
    -202            TokenType.TABLE,
    +200        ID_VAR_TOKENS = {
    +201            *parser.Parser.ID_VAR_TOKENS,  # type: ignore
    +202            TokenType.VALUES,
     203        }
     204
    -205        ID_VAR_TOKENS = {
    -206            *parser.Parser.ID_VAR_TOKENS,  # type: ignore
    -207            TokenType.VALUES,
    -208        }
    -209
    -210        PROPERTY_PARSERS = {
    -211            **parser.Parser.PROPERTY_PARSERS,  # type: ignore
    -212            "NOT DETERMINISTIC": lambda self: self.expression(
    -213                exp.VolatilityProperty, this=exp.Literal.string("VOLATILE")
    -214            ),
    -215        }
    -216
    -217        LOG_BASE_FIRST = False
    -218        LOG_DEFAULTS_TO_LN = True
    +205        PROPERTY_PARSERS = {
    +206            **parser.Parser.PROPERTY_PARSERS,  # type: ignore
    +207            "NOT DETERMINISTIC": lambda self: self.expression(
    +208                exp.StabilityProperty, this=exp.Literal.string("VOLATILE")
    +209            ),
    +210        }
     
    @@ -823,101 +835,108 @@ Default: "nulls_are_small"
    -
    220    class Generator(generator.Generator):
    -221        TRANSFORMS = {
    -222            **generator.Generator.TRANSFORMS,  # type: ignore
    -223            **transforms.REMOVE_PRECISION_PARAMETERIZED_TYPES,  # type: ignore
    -224            exp.ArraySize: rename_func("ARRAY_LENGTH"),
    -225            exp.AtTimeZone: lambda self, e: self.func(
    -226                "TIMESTAMP", self.func("DATETIME", e.this, e.args.get("zone"))
    -227            ),
    -228            exp.DateAdd: _date_add_sql("DATE", "ADD"),
    -229            exp.DateSub: _date_add_sql("DATE", "SUB"),
    -230            exp.DatetimeAdd: _date_add_sql("DATETIME", "ADD"),
    -231            exp.DatetimeSub: _date_add_sql("DATETIME", "SUB"),
    -232            exp.DateDiff: lambda self, e: f"DATE_DIFF({self.sql(e, 'this')}, {self.sql(e, 'expression')}, {self.sql(e.args.get('unit', 'DAY'))})",
    -233            exp.DateStrToDate: datestrtodate_sql,
    -234            exp.DateTrunc: lambda self, e: self.func("DATE_TRUNC", e.this, e.text("unit")),
    -235            exp.GroupConcat: rename_func("STRING_AGG"),
    -236            exp.ILike: no_ilike_sql,
    -237            exp.IntDiv: rename_func("DIV"),
    -238            exp.Max: max_or_greatest,
    -239            exp.Min: min_or_least,
    -240            exp.Select: transforms.preprocess(
    -241                [_unqualify_unnest], transforms.delegate("select_sql")
    -242            ),
    -243            exp.StrToTime: lambda self, e: f"PARSE_TIMESTAMP({self.format_time(e)}, {self.sql(e, 'this')})",
    -244            exp.TimeAdd: _date_add_sql("TIME", "ADD"),
    -245            exp.TimeSub: _date_add_sql("TIME", "SUB"),
    -246            exp.TimestampAdd: _date_add_sql("TIMESTAMP", "ADD"),
    -247            exp.TimestampSub: _date_add_sql("TIMESTAMP", "SUB"),
    -248            exp.TimeStrToTime: timestrtotime_sql,
    -249            exp.TsOrDsToDate: ts_or_ds_to_date_sql("bigquery"),
    -250            exp.TsOrDsAdd: _date_add_sql("DATE", "ADD"),
    -251            exp.PartitionedByProperty: lambda self, e: f"PARTITION BY {self.sql(e, 'this')}",
    -252            exp.VariancePop: rename_func("VAR_POP"),
    -253            exp.Values: _derived_table_values_to_unnest,
    -254            exp.ReturnsProperty: _returnsproperty_sql,
    -255            exp.Create: _create_sql,
    -256            exp.Trim: lambda self, e: self.func(f"TRIM", e.this, e.expression),
    -257            exp.VolatilityProperty: lambda self, e: f"DETERMINISTIC"
    -258            if e.name == "IMMUTABLE"
    -259            else "NOT DETERMINISTIC",
    -260            exp.RegexpLike: rename_func("REGEXP_CONTAINS"),
    -261        }
    -262
    -263        TYPE_MAPPING = {
    -264            **generator.Generator.TYPE_MAPPING,  # type: ignore
    -265            exp.DataType.Type.BIGINT: "INT64",
    -266            exp.DataType.Type.BOOLEAN: "BOOL",
    -267            exp.DataType.Type.CHAR: "STRING",
    -268            exp.DataType.Type.DECIMAL: "NUMERIC",
    -269            exp.DataType.Type.DOUBLE: "FLOAT64",
    -270            exp.DataType.Type.FLOAT: "FLOAT64",
    -271            exp.DataType.Type.INT: "INT64",
    -272            exp.DataType.Type.NCHAR: "STRING",
    -273            exp.DataType.Type.NVARCHAR: "STRING",
    -274            exp.DataType.Type.SMALLINT: "INT64",
    -275            exp.DataType.Type.TEXT: "STRING",
    -276            exp.DataType.Type.TINYINT: "INT64",
    -277            exp.DataType.Type.VARCHAR: "STRING",
    +            
    212    class Generator(generator.Generator):
    +213        EXPLICIT_UNION = True
    +214        INTERVAL_ALLOWS_PLURAL_FORM = False
    +215        JOIN_HINTS = False
    +216        TABLE_HINTS = False
    +217        LIMIT_FETCH = "LIMIT"
    +218
    +219        TRANSFORMS = {
    +220            **generator.Generator.TRANSFORMS,  # type: ignore
    +221            **transforms.REMOVE_PRECISION_PARAMETERIZED_TYPES,  # type: ignore
    +222            exp.ArraySize: rename_func("ARRAY_LENGTH"),
    +223            exp.AtTimeZone: lambda self, e: self.func(
    +224                "TIMESTAMP", self.func("DATETIME", e.this, e.args.get("zone"))
    +225            ),
    +226            exp.DateAdd: _date_add_sql("DATE", "ADD"),
    +227            exp.DateSub: _date_add_sql("DATE", "SUB"),
    +228            exp.DatetimeAdd: _date_add_sql("DATETIME", "ADD"),
    +229            exp.DatetimeSub: _date_add_sql("DATETIME", "SUB"),
    +230            exp.DateDiff: lambda self, e: f"DATE_DIFF({self.sql(e, 'this')}, {self.sql(e, 'expression')}, {self.sql(e.args.get('unit', 'DAY'))})",
    +231            exp.DateStrToDate: datestrtodate_sql,
    +232            exp.DateTrunc: lambda self, e: self.func("DATE_TRUNC", e.this, e.text("unit")),
    +233            exp.GroupConcat: rename_func("STRING_AGG"),
    +234            exp.ILike: no_ilike_sql,
    +235            exp.IntDiv: rename_func("DIV"),
    +236            exp.Max: max_or_greatest,
    +237            exp.Min: min_or_least,
    +238            exp.Select: transforms.preprocess([_unqualify_unnest]),
    +239            exp.StrToTime: lambda self, e: f"PARSE_TIMESTAMP({self.format_time(e)}, {self.sql(e, 'this')})",
    +240            exp.TimeAdd: _date_add_sql("TIME", "ADD"),
    +241            exp.TimeSub: _date_add_sql("TIME", "SUB"),
    +242            exp.TimestampAdd: _date_add_sql("TIMESTAMP", "ADD"),
    +243            exp.TimestampSub: _date_add_sql("TIMESTAMP", "SUB"),
    +244            exp.TimeStrToTime: timestrtotime_sql,
    +245            exp.TsOrDsToDate: ts_or_ds_to_date_sql("bigquery"),
    +246            exp.TsOrDsAdd: _date_add_sql("DATE", "ADD"),
    +247            exp.PartitionedByProperty: lambda self, e: f"PARTITION BY {self.sql(e, 'this')}",
    +248            exp.VariancePop: rename_func("VAR_POP"),
    +249            exp.Values: _derived_table_values_to_unnest,
    +250            exp.ReturnsProperty: _returnsproperty_sql,
    +251            exp.Create: _create_sql,
    +252            exp.Trim: lambda self, e: self.func(f"TRIM", e.this, e.expression),
    +253            exp.StabilityProperty: lambda self, e: f"DETERMINISTIC"
    +254            if e.name == "IMMUTABLE"
    +255            else "NOT DETERMINISTIC",
    +256            exp.RegexpLike: rename_func("REGEXP_CONTAINS"),
    +257        }
    +258
    +259        TYPE_MAPPING = {
    +260            **generator.Generator.TYPE_MAPPING,  # type: ignore
    +261            exp.DataType.Type.BIGDECIMAL: "BIGNUMERIC",
    +262            exp.DataType.Type.BIGINT: "INT64",
    +263            exp.DataType.Type.BOOLEAN: "BOOL",
    +264            exp.DataType.Type.CHAR: "STRING",
    +265            exp.DataType.Type.DECIMAL: "NUMERIC",
    +266            exp.DataType.Type.DOUBLE: "FLOAT64",
    +267            exp.DataType.Type.FLOAT: "FLOAT64",
    +268            exp.DataType.Type.INT: "INT64",
    +269            exp.DataType.Type.NCHAR: "STRING",
    +270            exp.DataType.Type.NVARCHAR: "STRING",
    +271            exp.DataType.Type.SMALLINT: "INT64",
    +272            exp.DataType.Type.TEXT: "STRING",
    +273            exp.DataType.Type.TIMESTAMP: "DATETIME",
    +274            exp.DataType.Type.TIMESTAMPTZ: "TIMESTAMP",
    +275            exp.DataType.Type.TINYINT: "INT64",
    +276            exp.DataType.Type.VARCHAR: "STRING",
    +277            exp.DataType.Type.VARIANT: "ANY TYPE",
     278        }
    -279        PROPERTIES_LOCATION = {
    -280            **generator.Generator.PROPERTIES_LOCATION,  # type: ignore
    -281            exp.PartitionedByProperty: exp.Properties.Location.POST_SCHEMA,
    -282        }
    -283
    -284        EXPLICIT_UNION = True
    -285        LIMIT_FETCH = "LIMIT"
    -286
    -287        def array_sql(self, expression: exp.Array) -> str:
    -288            first_arg = seq_get(expression.expressions, 0)
    -289            if isinstance(first_arg, exp.Subqueryable):
    -290                return f"ARRAY{self.wrap(self.sql(first_arg))}"
    -291
    -292            return inline_array_sql(self, expression)
    -293
    -294        def transaction_sql(self, *_) -> str:
    -295            return "BEGIN TRANSACTION"
    -296
    -297        def commit_sql(self, *_) -> str:
    -298            return "COMMIT TRANSACTION"
    -299
    -300        def rollback_sql(self, *_) -> str:
    -301            return "ROLLBACK TRANSACTION"
    -302
    -303        def in_unnest_op(self, expression: exp.Unnest) -> str:
    -304            return self.sql(expression)
    -305
    -306        def except_op(self, expression: exp.Except) -> str:
    -307            if not expression.args.get("distinct", False):
    -308                self.unsupported("EXCEPT without DISTINCT is not supported in BigQuery")
    -309            return f"EXCEPT{' DISTINCT' if expression.args.get('distinct') else ' ALL'}"
    -310
    -311        def intersect_op(self, expression: exp.Intersect) -> str:
    -312            if not expression.args.get("distinct", False):
    -313                self.unsupported("INTERSECT without DISTINCT is not supported in BigQuery")
    -314            return f"INTERSECT{' DISTINCT' if expression.args.get('distinct') else ' ALL'}"
    +279
    +280        PROPERTIES_LOCATION = {
    +281            **generator.Generator.PROPERTIES_LOCATION,  # type: ignore
    +282            exp.PartitionedByProperty: exp.Properties.Location.POST_SCHEMA,
    +283            exp.VolatileProperty: exp.Properties.Location.UNSUPPORTED,
    +284        }
    +285
    +286        def array_sql(self, expression: exp.Array) -> str:
    +287            first_arg = seq_get(expression.expressions, 0)
    +288            if isinstance(first_arg, exp.Subqueryable):
    +289                return f"ARRAY{self.wrap(self.sql(first_arg))}"
    +290
    +291            return inline_array_sql(self, expression)
    +292
    +293        def transaction_sql(self, *_) -> str:
    +294            return "BEGIN TRANSACTION"
    +295
    +296        def commit_sql(self, *_) -> str:
    +297            return "COMMIT TRANSACTION"
    +298
    +299        def rollback_sql(self, *_) -> str:
    +300            return "ROLLBACK TRANSACTION"
    +301
    +302        def in_unnest_op(self, expression: exp.Unnest) -> str:
    +303            return self.sql(expression)
    +304
    +305        def except_op(self, expression: exp.Except) -> str:
    +306            if not expression.args.get("distinct", False):
    +307                self.unsupported("EXCEPT without DISTINCT is not supported in BigQuery")
    +308            return f"EXCEPT{' DISTINCT' if expression.args.get('distinct') else ' ALL'}"
    +309
    +310        def intersect_op(self, expression: exp.Intersect) -> str:
    +311            if not expression.args.get("distinct", False):
    +312                self.unsupported("INTERSECT without DISTINCT is not supported in BigQuery")
    +313            return f"INTERSECT{' DISTINCT' if expression.args.get('distinct') else ' ALL'}"
     
    @@ -976,12 +995,12 @@ Default: True
    -
    287        def array_sql(self, expression: exp.Array) -> str:
    -288            first_arg = seq_get(expression.expressions, 0)
    -289            if isinstance(first_arg, exp.Subqueryable):
    -290                return f"ARRAY{self.wrap(self.sql(first_arg))}"
    -291
    -292            return inline_array_sql(self, expression)
    +            
    286        def array_sql(self, expression: exp.Array) -> str:
    +287            first_arg = seq_get(expression.expressions, 0)
    +288            if isinstance(first_arg, exp.Subqueryable):
    +289                return f"ARRAY{self.wrap(self.sql(first_arg))}"
    +290
    +291            return inline_array_sql(self, expression)
     
    @@ -999,8 +1018,8 @@ Default: True
    -
    294        def transaction_sql(self, *_) -> str:
    -295            return "BEGIN TRANSACTION"
    +            
    293        def transaction_sql(self, *_) -> str:
    +294            return "BEGIN TRANSACTION"
     
    @@ -1018,8 +1037,8 @@ Default: True
    -
    297        def commit_sql(self, *_) -> str:
    -298            return "COMMIT TRANSACTION"
    +            
    296        def commit_sql(self, *_) -> str:
    +297            return "COMMIT TRANSACTION"
     
    @@ -1037,8 +1056,8 @@ Default: True
    -
    300        def rollback_sql(self, *_) -> str:
    -301            return "ROLLBACK TRANSACTION"
    +            
    299        def rollback_sql(self, *_) -> str:
    +300            return "ROLLBACK TRANSACTION"
     
    @@ -1056,8 +1075,8 @@ Default: True
    -
    303        def in_unnest_op(self, expression: exp.Unnest) -> str:
    -304            return self.sql(expression)
    +            
    302        def in_unnest_op(self, expression: exp.Unnest) -> str:
    +303            return self.sql(expression)
     
    @@ -1075,10 +1094,10 @@ Default: True
    -
    306        def except_op(self, expression: exp.Except) -> str:
    -307            if not expression.args.get("distinct", False):
    -308                self.unsupported("EXCEPT without DISTINCT is not supported in BigQuery")
    -309            return f"EXCEPT{' DISTINCT' if expression.args.get('distinct') else ' ALL'}"
    +            
    305        def except_op(self, expression: exp.Except) -> str:
    +306            if not expression.args.get("distinct", False):
    +307                self.unsupported("EXCEPT without DISTINCT is not supported in BigQuery")
    +308            return f"EXCEPT{' DISTINCT' if expression.args.get('distinct') else ' ALL'}"
     
    @@ -1096,10 +1115,10 @@ Default: True
    -
    311        def intersect_op(self, expression: exp.Intersect) -> str:
    -312            if not expression.args.get("distinct", False):
    -313                self.unsupported("INTERSECT without DISTINCT is not supported in BigQuery")
    -314            return f"INTERSECT{' DISTINCT' if expression.args.get('distinct') else ' ALL'}"
    +            
    310        def intersect_op(self, expression: exp.Intersect) -> str:
    +311            if not expression.args.get("distinct", False):
    +312                self.unsupported("INTERSECT without DISTINCT is not supported in BigQuery")
    +313            return f"INTERSECT{' DISTINCT' if expression.args.get('distinct') else ' ALL'}"
     
    @@ -1143,6 +1162,7 @@ Default: True
    tablealias_sql
    bitstring_sql
    hexstring_sql
    +
    bytestring_sql
    datatype_sql
    directory_sql
    delete_sql
    @@ -1153,6 +1173,7 @@ Default: True
    hint_sql
    index_sql
    identifier_sql
    +
    inputoutputformat_sql
    national_sql
    partition_sql
    properties_sql
    @@ -1177,6 +1198,7 @@ Default: True
    intersect_sql
    introducer_sql
    pseudotype_sql
    +
    onconflict_sql
    returning_sql
    rowformatdelimitedproperty_sql
    table_sql
    diff --git a/docs/sqlglot/dialects/clickhouse.html b/docs/sqlglot/dialects/clickhouse.html index 7bd3cf0..f1de27d 100644 --- a/docs/sqlglot/dialects/clickhouse.html +++ b/docs/sqlglot/dialects/clickhouse.html @@ -3,7 +3,7 @@ - + sqlglot.dialects.clickhouse API documentation @@ -128,128 +128,140 @@
    46 time=seq_get(args, 1), 47 decay=seq_get(params, 0), 48 ), - 49 "MAP": parse_var_map, - 50 "HISTOGRAM": lambda params, args: exp.Histogram( - 51 this=seq_get(args, 0), bins=seq_get(params, 0) - 52 ), - 53 "GROUPUNIQARRAY": lambda params, args: exp.GroupUniqArray( - 54 this=seq_get(args, 0), size=seq_get(params, 0) - 55 ), - 56 "QUANTILE": lambda params, args: exp.Quantile(this=args, quantile=params), - 57 "QUANTILES": lambda params, args: exp.Quantiles(parameters=params, expressions=args), - 58 "QUANTILEIF": lambda params, args: exp.QuantileIf(parameters=params, expressions=args), - 59 } - 60 - 61 RANGE_PARSERS = { - 62 **parser.Parser.RANGE_PARSERS, - 63 TokenType.GLOBAL: lambda self, this: self._match(TokenType.IN) - 64 and self._parse_in(this, is_global=True), - 65 } - 66 - 67 JOIN_KINDS = {*parser.Parser.JOIN_KINDS, TokenType.ANY, TokenType.ASOF} # type: ignore - 68 - 69 TABLE_ALIAS_TOKENS = {*parser.Parser.TABLE_ALIAS_TOKENS} - {TokenType.ANY} # type: ignore + 49 "GROUPUNIQARRAY": lambda params, args: exp.GroupUniqArray( + 50 this=seq_get(args, 0), size=seq_get(params, 0) + 51 ), + 52 "HISTOGRAM": lambda params, args: exp.Histogram( + 53 this=seq_get(args, 0), bins=seq_get(params, 0) + 54 ), + 55 "MAP": parse_var_map, + 56 "MATCH": exp.RegexpLike.from_arg_list, + 57 "QUANTILE": lambda params, args: exp.Quantile(this=args, quantile=params), + 58 "QUANTILES": lambda params, args: exp.Quantiles(parameters=params, expressions=args), + 59 "QUANTILEIF": lambda params, args: exp.QuantileIf(parameters=params, expressions=args), + 60 } + 61 + 62 FUNCTION_PARSERS = parser.Parser.FUNCTION_PARSERS.copy() + 63 FUNCTION_PARSERS.pop("MATCH") + 64 + 65 RANGE_PARSERS = { + 66 **parser.Parser.RANGE_PARSERS, + 67 TokenType.GLOBAL: lambda self, this: self._match(TokenType.IN) + 68 and self._parse_in(this, is_global=True), + 69 } 70 - 71 LOG_DEFAULTS_TO_LN = True + 71 JOIN_KINDS = {*parser.Parser.JOIN_KINDS, TokenType.ANY, TokenType.ASOF} # type: ignore 72 - 73 def _parse_in( - 74 self, this: t.Optional[exp.Expression], is_global: bool = False - 75 ) -> exp.Expression: - 76 this = super()._parse_in(this) - 77 this.set("is_global", is_global) - 78 return this - 79 - 80 def _parse_table( - 81 self, schema: bool = False, alias_tokens: t.Optional[t.Collection[TokenType]] = None - 82 ) -> t.Optional[exp.Expression]: - 83 this = super()._parse_table(schema=schema, alias_tokens=alias_tokens) - 84 - 85 if self._match(TokenType.FINAL): - 86 this = self.expression(exp.Final, this=this) - 87 - 88 return this - 89 - 90 def _parse_position(self, haystack_first: bool = False) -> exp.Expression: - 91 return super()._parse_position(haystack_first=True) - 92 - 93 # https://clickhouse.com/docs/en/sql-reference/statements/select/with/ - 94 def _parse_cte(self) -> exp.Expression: - 95 index = self._index - 96 try: - 97 # WITH <identifier> AS <subquery expression> - 98 return super()._parse_cte() - 99 except ParseError: -100 # WITH <expression> AS <identifier> -101 self._retreat(index) -102 statement = self._parse_statement() -103 -104 if statement and isinstance(statement.this, exp.Alias): -105 self.raise_error("Expected CTE to have alias") -106 -107 return self.expression(exp.CTE, this=statement, alias=statement and statement.this) -108 -109 class Generator(generator.Generator): -110 STRUCT_DELIMITER = ("(", ")") -111 -112 TYPE_MAPPING = { -113 **generator.Generator.TYPE_MAPPING, # type: ignore -114 exp.DataType.Type.NULLABLE: "Nullable", -115 exp.DataType.Type.DATETIME: "DateTime64", -116 exp.DataType.Type.MAP: "Map", -117 exp.DataType.Type.ARRAY: "Array", -118 exp.DataType.Type.STRUCT: "Tuple", -119 exp.DataType.Type.TINYINT: "Int8", -120 exp.DataType.Type.SMALLINT: "Int16", -121 exp.DataType.Type.INT: "Int32", -122 exp.DataType.Type.BIGINT: "Int64", -123 exp.DataType.Type.FLOAT: "Float32", -124 exp.DataType.Type.DOUBLE: "Float64", -125 } -126 -127 TRANSFORMS = { -128 **generator.Generator.TRANSFORMS, # type: ignore -129 exp.Array: inline_array_sql, -130 exp.ExponentialTimeDecayedAvg: lambda self, e: f"exponentialTimeDecayedAvg{self._param_args_sql(e, 'decay', ['this', 'time'])}", -131 exp.Final: lambda self, e: f"{self.sql(e, 'this')} FINAL", -132 exp.GroupUniqArray: lambda self, e: f"groupUniqArray{self._param_args_sql(e, 'size', 'this')}", -133 exp.Histogram: lambda self, e: f"histogram{self._param_args_sql(e, 'bins', 'this')}", -134 exp.Map: lambda self, e: _lower_func(var_map_sql(self, e)), -135 exp.Quantile: lambda self, e: f"quantile{self._param_args_sql(e, 'quantile', 'this')}", -136 exp.Quantiles: lambda self, e: f"quantiles{self._param_args_sql(e, 'parameters', 'expressions')}", -137 exp.QuantileIf: lambda self, e: f"quantileIf{self._param_args_sql(e, 'parameters', 'expressions')}", -138 exp.StrPosition: lambda self, e: f"position({self.format_args(e.this, e.args.get('substr'), e.args.get('position'))})", -139 exp.VarMap: lambda self, e: _lower_func(var_map_sql(self, e)), -140 } -141 -142 EXPLICIT_UNION = True -143 -144 def _param_args_sql( -145 self, -146 expression: exp.Expression, -147 param_names: str | t.List[str], -148 arg_names: str | t.List[str], -149 ) -> str: -150 params = self.format_args( -151 *( -152 arg -153 for name in ensure_list(param_names) -154 for arg in ensure_list(expression.args.get(name)) -155 ) -156 ) -157 args = self.format_args( -158 *( -159 arg -160 for name in ensure_list(arg_names) -161 for arg in ensure_list(expression.args.get(name)) -162 ) -163 ) -164 return f"({params})({args})" -165 -166 def cte_sql(self, expression: exp.CTE) -> str: -167 if isinstance(expression.this, exp.Alias): -168 return self.sql(expression, "this") -169 -170 return super().cte_sql(expression) + 73 TABLE_ALIAS_TOKENS = {*parser.Parser.TABLE_ALIAS_TOKENS} - {TokenType.ANY} # type: ignore + 74 + 75 LOG_DEFAULTS_TO_LN = True + 76 + 77 def _parse_in( + 78 self, this: t.Optional[exp.Expression], is_global: bool = False + 79 ) -> exp.Expression: + 80 this = super()._parse_in(this) + 81 this.set("is_global", is_global) + 82 return this + 83 + 84 def _parse_table( + 85 self, schema: bool = False, alias_tokens: t.Optional[t.Collection[TokenType]] = None + 86 ) -> t.Optional[exp.Expression]: + 87 this = super()._parse_table(schema=schema, alias_tokens=alias_tokens) + 88 + 89 if self._match(TokenType.FINAL): + 90 this = self.expression(exp.Final, this=this) + 91 + 92 return this + 93 + 94 def _parse_position(self, haystack_first: bool = False) -> exp.Expression: + 95 return super()._parse_position(haystack_first=True) + 96 + 97 # https://clickhouse.com/docs/en/sql-reference/statements/select/with/ + 98 def _parse_cte(self) -> exp.Expression: + 99 index = self._index +100 try: +101 # WITH <identifier> AS <subquery expression> +102 return super()._parse_cte() +103 except ParseError: +104 # WITH <expression> AS <identifier> +105 self._retreat(index) +106 statement = self._parse_statement() +107 +108 if statement and isinstance(statement.this, exp.Alias): +109 self.raise_error("Expected CTE to have alias") +110 +111 return self.expression(exp.CTE, this=statement, alias=statement and statement.this) +112 +113 class Generator(generator.Generator): +114 STRUCT_DELIMITER = ("(", ")") +115 +116 TYPE_MAPPING = { +117 **generator.Generator.TYPE_MAPPING, # type: ignore +118 exp.DataType.Type.NULLABLE: "Nullable", +119 exp.DataType.Type.DATETIME: "DateTime64", +120 exp.DataType.Type.MAP: "Map", +121 exp.DataType.Type.ARRAY: "Array", +122 exp.DataType.Type.STRUCT: "Tuple", +123 exp.DataType.Type.TINYINT: "Int8", +124 exp.DataType.Type.SMALLINT: "Int16", +125 exp.DataType.Type.INT: "Int32", +126 exp.DataType.Type.BIGINT: "Int64", +127 exp.DataType.Type.FLOAT: "Float32", +128 exp.DataType.Type.DOUBLE: "Float64", +129 } +130 +131 TRANSFORMS = { +132 **generator.Generator.TRANSFORMS, # type: ignore +133 exp.Array: inline_array_sql, +134 exp.ExponentialTimeDecayedAvg: lambda self, e: f"exponentialTimeDecayedAvg{self._param_args_sql(e, 'decay', ['this', 'time'])}", +135 exp.Final: lambda self, e: f"{self.sql(e, 'this')} FINAL", +136 exp.GroupUniqArray: lambda self, e: f"groupUniqArray{self._param_args_sql(e, 'size', 'this')}", +137 exp.Histogram: lambda self, e: f"histogram{self._param_args_sql(e, 'bins', 'this')}", +138 exp.Map: lambda self, e: _lower_func(var_map_sql(self, e)), +139 exp.Quantile: lambda self, e: f"quantile{self._param_args_sql(e, 'quantile', 'this')}", +140 exp.Quantiles: lambda self, e: f"quantiles{self._param_args_sql(e, 'parameters', 'expressions')}", +141 exp.QuantileIf: lambda self, e: f"quantileIf{self._param_args_sql(e, 'parameters', 'expressions')}", +142 exp.RegexpLike: lambda self, e: f"match({self.format_args(e.this, e.expression)})", +143 exp.StrPosition: lambda self, e: f"position({self.format_args(e.this, e.args.get('substr'), e.args.get('position'))})", +144 exp.VarMap: lambda self, e: _lower_func(var_map_sql(self, e)), +145 } +146 +147 PROPERTIES_LOCATION = { +148 **generator.Generator.PROPERTIES_LOCATION, # type: ignore +149 exp.VolatileProperty: exp.Properties.Location.UNSUPPORTED, +150 } +151 +152 JOIN_HINTS = False +153 TABLE_HINTS = False +154 EXPLICIT_UNION = True +155 +156 def _param_args_sql( +157 self, +158 expression: exp.Expression, +159 param_names: str | t.List[str], +160 arg_names: str | t.List[str], +161 ) -> str: +162 params = self.format_args( +163 *( +164 arg +165 for name in ensure_list(param_names) +166 for arg in ensure_list(expression.args.get(name)) +167 ) +168 ) +169 args = self.format_args( +170 *( +171 arg +172 for name in ensure_list(arg_names) +173 for arg in ensure_list(expression.args.get(name)) +174 ) +175 ) +176 return f"({params})({args})" +177 +178 def cte_sql(self, expression: exp.CTE) -> str: +179 if isinstance(expression.this, exp.Alias): +180 return self.sql(expression, "this") +181 +182 return super().cte_sql(expression)
    @@ -296,128 +308,140 @@
    47 time=seq_get(args, 1), 48 decay=seq_get(params, 0), 49 ), - 50 "MAP": parse_var_map, - 51 "HISTOGRAM": lambda params, args: exp.Histogram( - 52 this=seq_get(args, 0), bins=seq_get(params, 0) - 53 ), - 54 "GROUPUNIQARRAY": lambda params, args: exp.GroupUniqArray( - 55 this=seq_get(args, 0), size=seq_get(params, 0) - 56 ), - 57 "QUANTILE": lambda params, args: exp.Quantile(this=args, quantile=params), - 58 "QUANTILES": lambda params, args: exp.Quantiles(parameters=params, expressions=args), - 59 "QUANTILEIF": lambda params, args: exp.QuantileIf(parameters=params, expressions=args), - 60 } - 61 - 62 RANGE_PARSERS = { - 63 **parser.Parser.RANGE_PARSERS, - 64 TokenType.GLOBAL: lambda self, this: self._match(TokenType.IN) - 65 and self._parse_in(this, is_global=True), - 66 } - 67 - 68 JOIN_KINDS = {*parser.Parser.JOIN_KINDS, TokenType.ANY, TokenType.ASOF} # type: ignore - 69 - 70 TABLE_ALIAS_TOKENS = {*parser.Parser.TABLE_ALIAS_TOKENS} - {TokenType.ANY} # type: ignore + 50 "GROUPUNIQARRAY": lambda params, args: exp.GroupUniqArray( + 51 this=seq_get(args, 0), size=seq_get(params, 0) + 52 ), + 53 "HISTOGRAM": lambda params, args: exp.Histogram( + 54 this=seq_get(args, 0), bins=seq_get(params, 0) + 55 ), + 56 "MAP": parse_var_map, + 57 "MATCH": exp.RegexpLike.from_arg_list, + 58 "QUANTILE": lambda params, args: exp.Quantile(this=args, quantile=params), + 59 "QUANTILES": lambda params, args: exp.Quantiles(parameters=params, expressions=args), + 60 "QUANTILEIF": lambda params, args: exp.QuantileIf(parameters=params, expressions=args), + 61 } + 62 + 63 FUNCTION_PARSERS = parser.Parser.FUNCTION_PARSERS.copy() + 64 FUNCTION_PARSERS.pop("MATCH") + 65 + 66 RANGE_PARSERS = { + 67 **parser.Parser.RANGE_PARSERS, + 68 TokenType.GLOBAL: lambda self, this: self._match(TokenType.IN) + 69 and self._parse_in(this, is_global=True), + 70 } 71 - 72 LOG_DEFAULTS_TO_LN = True + 72 JOIN_KINDS = {*parser.Parser.JOIN_KINDS, TokenType.ANY, TokenType.ASOF} # type: ignore 73 - 74 def _parse_in( - 75 self, this: t.Optional[exp.Expression], is_global: bool = False - 76 ) -> exp.Expression: - 77 this = super()._parse_in(this) - 78 this.set("is_global", is_global) - 79 return this - 80 - 81 def _parse_table( - 82 self, schema: bool = False, alias_tokens: t.Optional[t.Collection[TokenType]] = None - 83 ) -> t.Optional[exp.Expression]: - 84 this = super()._parse_table(schema=schema, alias_tokens=alias_tokens) - 85 - 86 if self._match(TokenType.FINAL): - 87 this = self.expression(exp.Final, this=this) - 88 - 89 return this - 90 - 91 def _parse_position(self, haystack_first: bool = False) -> exp.Expression: - 92 return super()._parse_position(haystack_first=True) - 93 - 94 # https://clickhouse.com/docs/en/sql-reference/statements/select/with/ - 95 def _parse_cte(self) -> exp.Expression: - 96 index = self._index - 97 try: - 98 # WITH <identifier> AS <subquery expression> - 99 return super()._parse_cte() -100 except ParseError: -101 # WITH <expression> AS <identifier> -102 self._retreat(index) -103 statement = self._parse_statement() -104 -105 if statement and isinstance(statement.this, exp.Alias): -106 self.raise_error("Expected CTE to have alias") -107 -108 return self.expression(exp.CTE, this=statement, alias=statement and statement.this) -109 -110 class Generator(generator.Generator): -111 STRUCT_DELIMITER = ("(", ")") -112 -113 TYPE_MAPPING = { -114 **generator.Generator.TYPE_MAPPING, # type: ignore -115 exp.DataType.Type.NULLABLE: "Nullable", -116 exp.DataType.Type.DATETIME: "DateTime64", -117 exp.DataType.Type.MAP: "Map", -118 exp.DataType.Type.ARRAY: "Array", -119 exp.DataType.Type.STRUCT: "Tuple", -120 exp.DataType.Type.TINYINT: "Int8", -121 exp.DataType.Type.SMALLINT: "Int16", -122 exp.DataType.Type.INT: "Int32", -123 exp.DataType.Type.BIGINT: "Int64", -124 exp.DataType.Type.FLOAT: "Float32", -125 exp.DataType.Type.DOUBLE: "Float64", -126 } -127 -128 TRANSFORMS = { -129 **generator.Generator.TRANSFORMS, # type: ignore -130 exp.Array: inline_array_sql, -131 exp.ExponentialTimeDecayedAvg: lambda self, e: f"exponentialTimeDecayedAvg{self._param_args_sql(e, 'decay', ['this', 'time'])}", -132 exp.Final: lambda self, e: f"{self.sql(e, 'this')} FINAL", -133 exp.GroupUniqArray: lambda self, e: f"groupUniqArray{self._param_args_sql(e, 'size', 'this')}", -134 exp.Histogram: lambda self, e: f"histogram{self._param_args_sql(e, 'bins', 'this')}", -135 exp.Map: lambda self, e: _lower_func(var_map_sql(self, e)), -136 exp.Quantile: lambda self, e: f"quantile{self._param_args_sql(e, 'quantile', 'this')}", -137 exp.Quantiles: lambda self, e: f"quantiles{self._param_args_sql(e, 'parameters', 'expressions')}", -138 exp.QuantileIf: lambda self, e: f"quantileIf{self._param_args_sql(e, 'parameters', 'expressions')}", -139 exp.StrPosition: lambda self, e: f"position({self.format_args(e.this, e.args.get('substr'), e.args.get('position'))})", -140 exp.VarMap: lambda self, e: _lower_func(var_map_sql(self, e)), -141 } -142 -143 EXPLICIT_UNION = True -144 -145 def _param_args_sql( -146 self, -147 expression: exp.Expression, -148 param_names: str | t.List[str], -149 arg_names: str | t.List[str], -150 ) -> str: -151 params = self.format_args( -152 *( -153 arg -154 for name in ensure_list(param_names) -155 for arg in ensure_list(expression.args.get(name)) -156 ) -157 ) -158 args = self.format_args( -159 *( -160 arg -161 for name in ensure_list(arg_names) -162 for arg in ensure_list(expression.args.get(name)) -163 ) -164 ) -165 return f"({params})({args})" -166 -167 def cte_sql(self, expression: exp.CTE) -> str: -168 if isinstance(expression.this, exp.Alias): -169 return self.sql(expression, "this") -170 -171 return super().cte_sql(expression) + 74 TABLE_ALIAS_TOKENS = {*parser.Parser.TABLE_ALIAS_TOKENS} - {TokenType.ANY} # type: ignore + 75 + 76 LOG_DEFAULTS_TO_LN = True + 77 + 78 def _parse_in( + 79 self, this: t.Optional[exp.Expression], is_global: bool = False + 80 ) -> exp.Expression: + 81 this = super()._parse_in(this) + 82 this.set("is_global", is_global) + 83 return this + 84 + 85 def _parse_table( + 86 self, schema: bool = False, alias_tokens: t.Optional[t.Collection[TokenType]] = None + 87 ) -> t.Optional[exp.Expression]: + 88 this = super()._parse_table(schema=schema, alias_tokens=alias_tokens) + 89 + 90 if self._match(TokenType.FINAL): + 91 this = self.expression(exp.Final, this=this) + 92 + 93 return this + 94 + 95 def _parse_position(self, haystack_first: bool = False) -> exp.Expression: + 96 return super()._parse_position(haystack_first=True) + 97 + 98 # https://clickhouse.com/docs/en/sql-reference/statements/select/with/ + 99 def _parse_cte(self) -> exp.Expression: +100 index = self._index +101 try: +102 # WITH <identifier> AS <subquery expression> +103 return super()._parse_cte() +104 except ParseError: +105 # WITH <expression> AS <identifier> +106 self._retreat(index) +107 statement = self._parse_statement() +108 +109 if statement and isinstance(statement.this, exp.Alias): +110 self.raise_error("Expected CTE to have alias") +111 +112 return self.expression(exp.CTE, this=statement, alias=statement and statement.this) +113 +114 class Generator(generator.Generator): +115 STRUCT_DELIMITER = ("(", ")") +116 +117 TYPE_MAPPING = { +118 **generator.Generator.TYPE_MAPPING, # type: ignore +119 exp.DataType.Type.NULLABLE: "Nullable", +120 exp.DataType.Type.DATETIME: "DateTime64", +121 exp.DataType.Type.MAP: "Map", +122 exp.DataType.Type.ARRAY: "Array", +123 exp.DataType.Type.STRUCT: "Tuple", +124 exp.DataType.Type.TINYINT: "Int8", +125 exp.DataType.Type.SMALLINT: "Int16", +126 exp.DataType.Type.INT: "Int32", +127 exp.DataType.Type.BIGINT: "Int64", +128 exp.DataType.Type.FLOAT: "Float32", +129 exp.DataType.Type.DOUBLE: "Float64", +130 } +131 +132 TRANSFORMS = { +133 **generator.Generator.TRANSFORMS, # type: ignore +134 exp.Array: inline_array_sql, +135 exp.ExponentialTimeDecayedAvg: lambda self, e: f"exponentialTimeDecayedAvg{self._param_args_sql(e, 'decay', ['this', 'time'])}", +136 exp.Final: lambda self, e: f"{self.sql(e, 'this')} FINAL", +137 exp.GroupUniqArray: lambda self, e: f"groupUniqArray{self._param_args_sql(e, 'size', 'this')}", +138 exp.Histogram: lambda self, e: f"histogram{self._param_args_sql(e, 'bins', 'this')}", +139 exp.Map: lambda self, e: _lower_func(var_map_sql(self, e)), +140 exp.Quantile: lambda self, e: f"quantile{self._param_args_sql(e, 'quantile', 'this')}", +141 exp.Quantiles: lambda self, e: f"quantiles{self._param_args_sql(e, 'parameters', 'expressions')}", +142 exp.QuantileIf: lambda self, e: f"quantileIf{self._param_args_sql(e, 'parameters', 'expressions')}", +143 exp.RegexpLike: lambda self, e: f"match({self.format_args(e.this, e.expression)})", +144 exp.StrPosition: lambda self, e: f"position({self.format_args(e.this, e.args.get('substr'), e.args.get('position'))})", +145 exp.VarMap: lambda self, e: _lower_func(var_map_sql(self, e)), +146 } +147 +148 PROPERTIES_LOCATION = { +149 **generator.Generator.PROPERTIES_LOCATION, # type: ignore +150 exp.VolatileProperty: exp.Properties.Location.UNSUPPORTED, +151 } +152 +153 JOIN_HINTS = False +154 TABLE_HINTS = False +155 EXPLICIT_UNION = True +156 +157 def _param_args_sql( +158 self, +159 expression: exp.Expression, +160 param_names: str | t.List[str], +161 arg_names: str | t.List[str], +162 ) -> str: +163 params = self.format_args( +164 *( +165 arg +166 for name in ensure_list(param_names) +167 for arg in ensure_list(expression.args.get(name)) +168 ) +169 ) +170 args = self.format_args( +171 *( +172 arg +173 for name in ensure_list(arg_names) +174 for arg in ensure_list(expression.args.get(name)) +175 ) +176 ) +177 return f"({params})({args})" +178 +179 def cte_sql(self, expression: exp.CTE) -> str: +180 if isinstance(expression.this, exp.Alias): +181 return self.sql(expression, "this") +182 +183 return super().cte_sql(expression) @@ -505,65 +529,69 @@ 47 time=seq_get(args, 1), 48 decay=seq_get(params, 0), 49 ), - 50 "MAP": parse_var_map, - 51 "HISTOGRAM": lambda params, args: exp.Histogram( - 52 this=seq_get(args, 0), bins=seq_get(params, 0) - 53 ), - 54 "GROUPUNIQARRAY": lambda params, args: exp.GroupUniqArray( - 55 this=seq_get(args, 0), size=seq_get(params, 0) - 56 ), - 57 "QUANTILE": lambda params, args: exp.Quantile(this=args, quantile=params), - 58 "QUANTILES": lambda params, args: exp.Quantiles(parameters=params, expressions=args), - 59 "QUANTILEIF": lambda params, args: exp.QuantileIf(parameters=params, expressions=args), - 60 } - 61 - 62 RANGE_PARSERS = { - 63 **parser.Parser.RANGE_PARSERS, - 64 TokenType.GLOBAL: lambda self, this: self._match(TokenType.IN) - 65 and self._parse_in(this, is_global=True), - 66 } - 67 - 68 JOIN_KINDS = {*parser.Parser.JOIN_KINDS, TokenType.ANY, TokenType.ASOF} # type: ignore - 69 - 70 TABLE_ALIAS_TOKENS = {*parser.Parser.TABLE_ALIAS_TOKENS} - {TokenType.ANY} # type: ignore + 50 "GROUPUNIQARRAY": lambda params, args: exp.GroupUniqArray( + 51 this=seq_get(args, 0), size=seq_get(params, 0) + 52 ), + 53 "HISTOGRAM": lambda params, args: exp.Histogram( + 54 this=seq_get(args, 0), bins=seq_get(params, 0) + 55 ), + 56 "MAP": parse_var_map, + 57 "MATCH": exp.RegexpLike.from_arg_list, + 58 "QUANTILE": lambda params, args: exp.Quantile(this=args, quantile=params), + 59 "QUANTILES": lambda params, args: exp.Quantiles(parameters=params, expressions=args), + 60 "QUANTILEIF": lambda params, args: exp.QuantileIf(parameters=params, expressions=args), + 61 } + 62 + 63 FUNCTION_PARSERS = parser.Parser.FUNCTION_PARSERS.copy() + 64 FUNCTION_PARSERS.pop("MATCH") + 65 + 66 RANGE_PARSERS = { + 67 **parser.Parser.RANGE_PARSERS, + 68 TokenType.GLOBAL: lambda self, this: self._match(TokenType.IN) + 69 and self._parse_in(this, is_global=True), + 70 } 71 - 72 LOG_DEFAULTS_TO_LN = True + 72 JOIN_KINDS = {*parser.Parser.JOIN_KINDS, TokenType.ANY, TokenType.ASOF} # type: ignore 73 - 74 def _parse_in( - 75 self, this: t.Optional[exp.Expression], is_global: bool = False - 76 ) -> exp.Expression: - 77 this = super()._parse_in(this) - 78 this.set("is_global", is_global) - 79 return this - 80 - 81 def _parse_table( - 82 self, schema: bool = False, alias_tokens: t.Optional[t.Collection[TokenType]] = None - 83 ) -> t.Optional[exp.Expression]: - 84 this = super()._parse_table(schema=schema, alias_tokens=alias_tokens) - 85 - 86 if self._match(TokenType.FINAL): - 87 this = self.expression(exp.Final, this=this) - 88 - 89 return this - 90 - 91 def _parse_position(self, haystack_first: bool = False) -> exp.Expression: - 92 return super()._parse_position(haystack_first=True) - 93 - 94 # https://clickhouse.com/docs/en/sql-reference/statements/select/with/ - 95 def _parse_cte(self) -> exp.Expression: - 96 index = self._index - 97 try: - 98 # WITH <identifier> AS <subquery expression> - 99 return super()._parse_cte() -100 except ParseError: -101 # WITH <expression> AS <identifier> -102 self._retreat(index) -103 statement = self._parse_statement() -104 -105 if statement and isinstance(statement.this, exp.Alias): -106 self.raise_error("Expected CTE to have alias") -107 -108 return self.expression(exp.CTE, this=statement, alias=statement and statement.this) + 74 TABLE_ALIAS_TOKENS = {*parser.Parser.TABLE_ALIAS_TOKENS} - {TokenType.ANY} # type: ignore + 75 + 76 LOG_DEFAULTS_TO_LN = True + 77 + 78 def _parse_in( + 79 self, this: t.Optional[exp.Expression], is_global: bool = False + 80 ) -> exp.Expression: + 81 this = super()._parse_in(this) + 82 this.set("is_global", is_global) + 83 return this + 84 + 85 def _parse_table( + 86 self, schema: bool = False, alias_tokens: t.Optional[t.Collection[TokenType]] = None + 87 ) -> t.Optional[exp.Expression]: + 88 this = super()._parse_table(schema=schema, alias_tokens=alias_tokens) + 89 + 90 if self._match(TokenType.FINAL): + 91 this = self.expression(exp.Final, this=this) + 92 + 93 return this + 94 + 95 def _parse_position(self, haystack_first: bool = False) -> exp.Expression: + 96 return super()._parse_position(haystack_first=True) + 97 + 98 # https://clickhouse.com/docs/en/sql-reference/statements/select/with/ + 99 def _parse_cte(self) -> exp.Expression: +100 index = self._index +101 try: +102 # WITH <identifier> AS <subquery expression> +103 return super()._parse_cte() +104 except ParseError: +105 # WITH <expression> AS <identifier> +106 self._retreat(index) +107 statement = self._parse_statement() +108 +109 if statement and isinstance(statement.this, exp.Alias): +110 self.raise_error("Expected CTE to have alias") +111 +112 return self.expression(exp.CTE, this=statement, alias=statement and statement.this) @@ -620,68 +648,76 @@ Default: "nulls_are_small" -
    110    class Generator(generator.Generator):
    -111        STRUCT_DELIMITER = ("(", ")")
    -112
    -113        TYPE_MAPPING = {
    -114            **generator.Generator.TYPE_MAPPING,  # type: ignore
    -115            exp.DataType.Type.NULLABLE: "Nullable",
    -116            exp.DataType.Type.DATETIME: "DateTime64",
    -117            exp.DataType.Type.MAP: "Map",
    -118            exp.DataType.Type.ARRAY: "Array",
    -119            exp.DataType.Type.STRUCT: "Tuple",
    -120            exp.DataType.Type.TINYINT: "Int8",
    -121            exp.DataType.Type.SMALLINT: "Int16",
    -122            exp.DataType.Type.INT: "Int32",
    -123            exp.DataType.Type.BIGINT: "Int64",
    -124            exp.DataType.Type.FLOAT: "Float32",
    -125            exp.DataType.Type.DOUBLE: "Float64",
    -126        }
    -127
    -128        TRANSFORMS = {
    -129            **generator.Generator.TRANSFORMS,  # type: ignore
    -130            exp.Array: inline_array_sql,
    -131            exp.ExponentialTimeDecayedAvg: lambda self, e: f"exponentialTimeDecayedAvg{self._param_args_sql(e, 'decay', ['this', 'time'])}",
    -132            exp.Final: lambda self, e: f"{self.sql(e, 'this')} FINAL",
    -133            exp.GroupUniqArray: lambda self, e: f"groupUniqArray{self._param_args_sql(e, 'size', 'this')}",
    -134            exp.Histogram: lambda self, e: f"histogram{self._param_args_sql(e, 'bins', 'this')}",
    -135            exp.Map: lambda self, e: _lower_func(var_map_sql(self, e)),
    -136            exp.Quantile: lambda self, e: f"quantile{self._param_args_sql(e, 'quantile', 'this')}",
    -137            exp.Quantiles: lambda self, e: f"quantiles{self._param_args_sql(e, 'parameters', 'expressions')}",
    -138            exp.QuantileIf: lambda self, e: f"quantileIf{self._param_args_sql(e, 'parameters', 'expressions')}",
    -139            exp.StrPosition: lambda self, e: f"position({self.format_args(e.this, e.args.get('substr'), e.args.get('position'))})",
    -140            exp.VarMap: lambda self, e: _lower_func(var_map_sql(self, e)),
    -141        }
    -142
    -143        EXPLICIT_UNION = True
    -144
    -145        def _param_args_sql(
    -146            self,
    -147            expression: exp.Expression,
    -148            param_names: str | t.List[str],
    -149            arg_names: str | t.List[str],
    -150        ) -> str:
    -151            params = self.format_args(
    -152                *(
    -153                    arg
    -154                    for name in ensure_list(param_names)
    -155                    for arg in ensure_list(expression.args.get(name))
    -156                )
    -157            )
    -158            args = self.format_args(
    -159                *(
    -160                    arg
    -161                    for name in ensure_list(arg_names)
    -162                    for arg in ensure_list(expression.args.get(name))
    -163                )
    -164            )
    -165            return f"({params})({args})"
    -166
    -167        def cte_sql(self, expression: exp.CTE) -> str:
    -168            if isinstance(expression.this, exp.Alias):
    -169                return self.sql(expression, "this")
    -170
    -171            return super().cte_sql(expression)
    +            
    114    class Generator(generator.Generator):
    +115        STRUCT_DELIMITER = ("(", ")")
    +116
    +117        TYPE_MAPPING = {
    +118            **generator.Generator.TYPE_MAPPING,  # type: ignore
    +119            exp.DataType.Type.NULLABLE: "Nullable",
    +120            exp.DataType.Type.DATETIME: "DateTime64",
    +121            exp.DataType.Type.MAP: "Map",
    +122            exp.DataType.Type.ARRAY: "Array",
    +123            exp.DataType.Type.STRUCT: "Tuple",
    +124            exp.DataType.Type.TINYINT: "Int8",
    +125            exp.DataType.Type.SMALLINT: "Int16",
    +126            exp.DataType.Type.INT: "Int32",
    +127            exp.DataType.Type.BIGINT: "Int64",
    +128            exp.DataType.Type.FLOAT: "Float32",
    +129            exp.DataType.Type.DOUBLE: "Float64",
    +130        }
    +131
    +132        TRANSFORMS = {
    +133            **generator.Generator.TRANSFORMS,  # type: ignore
    +134            exp.Array: inline_array_sql,
    +135            exp.ExponentialTimeDecayedAvg: lambda self, e: f"exponentialTimeDecayedAvg{self._param_args_sql(e, 'decay', ['this', 'time'])}",
    +136            exp.Final: lambda self, e: f"{self.sql(e, 'this')} FINAL",
    +137            exp.GroupUniqArray: lambda self, e: f"groupUniqArray{self._param_args_sql(e, 'size', 'this')}",
    +138            exp.Histogram: lambda self, e: f"histogram{self._param_args_sql(e, 'bins', 'this')}",
    +139            exp.Map: lambda self, e: _lower_func(var_map_sql(self, e)),
    +140            exp.Quantile: lambda self, e: f"quantile{self._param_args_sql(e, 'quantile', 'this')}",
    +141            exp.Quantiles: lambda self, e: f"quantiles{self._param_args_sql(e, 'parameters', 'expressions')}",
    +142            exp.QuantileIf: lambda self, e: f"quantileIf{self._param_args_sql(e, 'parameters', 'expressions')}",
    +143            exp.RegexpLike: lambda self, e: f"match({self.format_args(e.this, e.expression)})",
    +144            exp.StrPosition: lambda self, e: f"position({self.format_args(e.this, e.args.get('substr'), e.args.get('position'))})",
    +145            exp.VarMap: lambda self, e: _lower_func(var_map_sql(self, e)),
    +146        }
    +147
    +148        PROPERTIES_LOCATION = {
    +149            **generator.Generator.PROPERTIES_LOCATION,  # type: ignore
    +150            exp.VolatileProperty: exp.Properties.Location.UNSUPPORTED,
    +151        }
    +152
    +153        JOIN_HINTS = False
    +154        TABLE_HINTS = False
    +155        EXPLICIT_UNION = True
    +156
    +157        def _param_args_sql(
    +158            self,
    +159            expression: exp.Expression,
    +160            param_names: str | t.List[str],
    +161            arg_names: str | t.List[str],
    +162        ) -> str:
    +163            params = self.format_args(
    +164                *(
    +165                    arg
    +166                    for name in ensure_list(param_names)
    +167                    for arg in ensure_list(expression.args.get(name))
    +168                )
    +169            )
    +170            args = self.format_args(
    +171                *(
    +172                    arg
    +173                    for name in ensure_list(arg_names)
    +174                    for arg in ensure_list(expression.args.get(name))
    +175                )
    +176            )
    +177            return f"({params})({args})"
    +178
    +179        def cte_sql(self, expression: exp.CTE) -> str:
    +180            if isinstance(expression.this, exp.Alias):
    +181                return self.sql(expression, "this")
    +182
    +183            return super().cte_sql(expression)
     
    @@ -740,11 +776,11 @@ Default: True
    -
    167        def cte_sql(self, expression: exp.CTE) -> str:
    -168            if isinstance(expression.this, exp.Alias):
    -169                return self.sql(expression, "this")
    -170
    -171            return super().cte_sql(expression)
    +            
    179        def cte_sql(self, expression: exp.CTE) -> str:
    +180            if isinstance(expression.this, exp.Alias):
    +181                return self.sql(expression, "this")
    +182
    +183            return super().cte_sql(expression)
     
    @@ -787,6 +823,7 @@ Default: True
    tablealias_sql
    bitstring_sql
    hexstring_sql
    +
    bytestring_sql
    datatype_sql
    directory_sql
    delete_sql
    @@ -798,6 +835,7 @@ Default: True
    hint_sql
    index_sql
    identifier_sql
    +
    inputoutputformat_sql
    national_sql
    partition_sql
    properties_sql
    @@ -823,6 +861,7 @@ Default: True
    intersect_op
    introducer_sql
    pseudotype_sql
    +
    onconflict_sql
    returning_sql
    rowformatdelimitedproperty_sql
    table_sql
    diff --git a/docs/sqlglot/dialects/databricks.html b/docs/sqlglot/dialects/databricks.html index a7c10e6..c6b2049 100644 --- a/docs/sqlglot/dialects/databricks.html +++ b/docs/sqlglot/dialects/databricks.html @@ -3,7 +3,7 @@ - + sqlglot.dialects.databricks API documentation @@ -88,31 +88,37 @@
    9 10class Databricks(Spark): 11 class Parser(Spark.Parser): -12 FUNCTIONS = { -13 **Spark.Parser.FUNCTIONS, -14 "DATEADD": parse_date_delta(exp.DateAdd), -15 "DATE_ADD": parse_date_delta(exp.DateAdd), -16 "DATEDIFF": parse_date_delta(exp.DateDiff), -17 } -18 -19 LOG_DEFAULTS_TO_LN = True +12 LOG_DEFAULTS_TO_LN = True +13 +14 FUNCTIONS = { +15 **Spark.Parser.FUNCTIONS, +16 "DATEADD": parse_date_delta(exp.DateAdd), +17 "DATE_ADD": parse_date_delta(exp.DateAdd), +18 "DATEDIFF": parse_date_delta(exp.DateDiff), +19 } 20 -21 class Generator(Spark.Generator): -22 TRANSFORMS = { -23 **Spark.Generator.TRANSFORMS, # type: ignore -24 exp.DateAdd: generate_date_delta_with_unit_sql, -25 exp.DateDiff: generate_date_delta_with_unit_sql, -26 exp.ToChar: lambda self, e: self.function_fallback_sql(e), -27 } -28 TRANSFORMS.pop(exp.Select) # Remove the ELIMINATE_QUALIFY transformation -29 -30 PARAMETER_TOKEN = "$" -31 -32 class Tokenizer(Spark.Tokenizer): -33 SINGLE_TOKENS = { -34 **Spark.Tokenizer.SINGLE_TOKENS, -35 "$": TokenType.PARAMETER, -36 } +21 FACTOR = { +22 **Spark.Parser.FACTOR, +23 TokenType.COLON: exp.JSONExtract, +24 } +25 +26 class Generator(Spark.Generator): +27 TRANSFORMS = { +28 **Spark.Generator.TRANSFORMS, # type: ignore +29 exp.DateAdd: generate_date_delta_with_unit_sql, +30 exp.DateDiff: generate_date_delta_with_unit_sql, +31 exp.JSONExtract: lambda self, e: self.binary(e, ":"), +32 exp.ToChar: lambda self, e: self.function_fallback_sql(e), +33 } +34 TRANSFORMS.pop(exp.Select) # Remove the ELIMINATE_QUALIFY transformation +35 +36 PARAMETER_TOKEN = "$" +37 +38 class Tokenizer(Spark.Tokenizer): +39 SINGLE_TOKENS = { +40 **Spark.Tokenizer.SINGLE_TOKENS, +41 "$": TokenType.PARAMETER, +42 }
    @@ -130,31 +136,37 @@
    11class Databricks(Spark):
     12    class Parser(Spark.Parser):
    -13        FUNCTIONS = {
    -14            **Spark.Parser.FUNCTIONS,
    -15            "DATEADD": parse_date_delta(exp.DateAdd),
    -16            "DATE_ADD": parse_date_delta(exp.DateAdd),
    -17            "DATEDIFF": parse_date_delta(exp.DateDiff),
    -18        }
    -19
    -20        LOG_DEFAULTS_TO_LN = True
    +13        LOG_DEFAULTS_TO_LN = True
    +14
    +15        FUNCTIONS = {
    +16            **Spark.Parser.FUNCTIONS,
    +17            "DATEADD": parse_date_delta(exp.DateAdd),
    +18            "DATE_ADD": parse_date_delta(exp.DateAdd),
    +19            "DATEDIFF": parse_date_delta(exp.DateDiff),
    +20        }
     21
    -22    class Generator(Spark.Generator):
    -23        TRANSFORMS = {
    -24            **Spark.Generator.TRANSFORMS,  # type: ignore
    -25            exp.DateAdd: generate_date_delta_with_unit_sql,
    -26            exp.DateDiff: generate_date_delta_with_unit_sql,
    -27            exp.ToChar: lambda self, e: self.function_fallback_sql(e),
    -28        }
    -29        TRANSFORMS.pop(exp.Select)  # Remove the ELIMINATE_QUALIFY transformation
    -30
    -31        PARAMETER_TOKEN = "$"
    -32
    -33    class Tokenizer(Spark.Tokenizer):
    -34        SINGLE_TOKENS = {
    -35            **Spark.Tokenizer.SINGLE_TOKENS,
    -36            "$": TokenType.PARAMETER,
    -37        }
    +22        FACTOR = {
    +23            **Spark.Parser.FACTOR,
    +24            TokenType.COLON: exp.JSONExtract,
    +25        }
    +26
    +27    class Generator(Spark.Generator):
    +28        TRANSFORMS = {
    +29            **Spark.Generator.TRANSFORMS,  # type: ignore
    +30            exp.DateAdd: generate_date_delta_with_unit_sql,
    +31            exp.DateDiff: generate_date_delta_with_unit_sql,
    +32            exp.JSONExtract: lambda self, e: self.binary(e, ":"),
    +33            exp.ToChar: lambda self, e: self.function_fallback_sql(e),
    +34        }
    +35        TRANSFORMS.pop(exp.Select)  # Remove the ELIMINATE_QUALIFY transformation
    +36
    +37        PARAMETER_TOKEN = "$"
    +38
    +39    class Tokenizer(Spark.Tokenizer):
    +40        SINGLE_TOKENS = {
    +41            **Spark.Tokenizer.SINGLE_TOKENS,
    +42            "$": TokenType.PARAMETER,
    +43        }
     
    @@ -190,14 +202,19 @@
    12    class Parser(Spark.Parser):
    -13        FUNCTIONS = {
    -14            **Spark.Parser.FUNCTIONS,
    -15            "DATEADD": parse_date_delta(exp.DateAdd),
    -16            "DATE_ADD": parse_date_delta(exp.DateAdd),
    -17            "DATEDIFF": parse_date_delta(exp.DateDiff),
    -18        }
    -19
    -20        LOG_DEFAULTS_TO_LN = True
    +13        LOG_DEFAULTS_TO_LN = True
    +14
    +15        FUNCTIONS = {
    +16            **Spark.Parser.FUNCTIONS,
    +17            "DATEADD": parse_date_delta(exp.DateAdd),
    +18            "DATE_ADD": parse_date_delta(exp.DateAdd),
    +19            "DATEDIFF": parse_date_delta(exp.DateDiff),
    +20        }
    +21
    +22        FACTOR = {
    +23            **Spark.Parser.FACTOR,
    +24            TokenType.COLON: exp.JSONExtract,
    +25        }
     
    @@ -254,16 +271,17 @@ Default: "nulls_are_small" -
    22    class Generator(Spark.Generator):
    -23        TRANSFORMS = {
    -24            **Spark.Generator.TRANSFORMS,  # type: ignore
    -25            exp.DateAdd: generate_date_delta_with_unit_sql,
    -26            exp.DateDiff: generate_date_delta_with_unit_sql,
    -27            exp.ToChar: lambda self, e: self.function_fallback_sql(e),
    -28        }
    -29        TRANSFORMS.pop(exp.Select)  # Remove the ELIMINATE_QUALIFY transformation
    -30
    -31        PARAMETER_TOKEN = "$"
    +            
    27    class Generator(Spark.Generator):
    +28        TRANSFORMS = {
    +29            **Spark.Generator.TRANSFORMS,  # type: ignore
    +30            exp.DateAdd: generate_date_delta_with_unit_sql,
    +31            exp.DateDiff: generate_date_delta_with_unit_sql,
    +32            exp.JSONExtract: lambda self, e: self.binary(e, ":"),
    +33            exp.ToChar: lambda self, e: self.function_fallback_sql(e),
    +34        }
    +35        TRANSFORMS.pop(exp.Select)  # Remove the ELIMINATE_QUALIFY transformation
    +36
    +37        PARAMETER_TOKEN = "$"
     
    @@ -348,6 +366,7 @@ Default: True
    tablealias_sql
    bitstring_sql
    hexstring_sql
    +
    bytestring_sql
    directory_sql
    delete_sql
    drop_sql
    @@ -358,6 +377,7 @@ Default: True
    hint_sql
    index_sql
    identifier_sql
    +
    inputoutputformat_sql
    national_sql
    partition_sql
    properties_sql
    @@ -382,6 +402,7 @@ Default: True
    intersect_op
    introducer_sql
    pseudotype_sql
    +
    onconflict_sql
    returning_sql
    rowformatdelimitedproperty_sql
    table_sql
    @@ -559,11 +580,11 @@ Default: True
    -
    33    class Tokenizer(Spark.Tokenizer):
    -34        SINGLE_TOKENS = {
    -35            **Spark.Tokenizer.SINGLE_TOKENS,
    -36            "$": TokenType.PARAMETER,
    -37        }
    +            
    39    class Tokenizer(Spark.Tokenizer):
    +40        SINGLE_TOKENS = {
    +41            **Spark.Tokenizer.SINGLE_TOKENS,
    +42            "$": TokenType.PARAMETER,
    +43        }
     
    diff --git a/docs/sqlglot/dialects/dialect.html b/docs/sqlglot/dialects/dialect.html index 6d80873..16d62bb 100644 --- a/docs/sqlglot/dialects/dialect.html +++ b/docs/sqlglot/dialects/dialect.html @@ -3,7 +3,7 @@ - + sqlglot.dialects.dialect API documentation @@ -171,6 +171,9 @@
  • no_properties_sql
  • +
  • + no_comment_column_constraint_sql +
  • str_position_sql
  • @@ -189,6 +192,9 @@
  • parse_date_delta
  • +
  • + parse_date_delta_with_interval +
  • date_trunc_to_time
  • @@ -543,188 +549,215 @@
    293 return "" 294 295 -296def str_position_sql(self: Generator, expression: exp.StrPosition) -> str: -297 this = self.sql(expression, "this") -298 substr = self.sql(expression, "substr") -299 position = self.sql(expression, "position") -300 if position: -301 return f"STRPOS(SUBSTR({this}, {position}), {substr}) + {position} - 1" -302 return f"STRPOS({this}, {substr})" -303 -304 -305def struct_extract_sql(self: Generator, expression: exp.StructExtract) -> str: -306 this = self.sql(expression, "this") -307 struct_key = self.sql(exp.Identifier(this=expression.expression, quoted=True)) -308 return f"{this}.{struct_key}" -309 +296def no_comment_column_constraint_sql( +297 self: Generator, expression: exp.CommentColumnConstraint +298) -> str: +299 self.unsupported("CommentColumnConstraint unsupported") +300 return "" +301 +302 +303def str_position_sql(self: Generator, expression: exp.StrPosition) -> str: +304 this = self.sql(expression, "this") +305 substr = self.sql(expression, "substr") +306 position = self.sql(expression, "position") +307 if position: +308 return f"STRPOS(SUBSTR({this}, {position}), {substr}) + {position} - 1" +309 return f"STRPOS({this}, {substr})" 310 -311def var_map_sql( -312 self: Generator, expression: exp.Map | exp.VarMap, map_func_name: str = "MAP" -313) -> str: -314 keys = expression.args["keys"] -315 values = expression.args["values"] +311 +312def struct_extract_sql(self: Generator, expression: exp.StructExtract) -> str: +313 this = self.sql(expression, "this") +314 struct_key = self.sql(exp.Identifier(this=expression.expression, quoted=True)) +315 return f"{this}.{struct_key}" 316 -317 if not isinstance(keys, exp.Array) or not isinstance(values, exp.Array): -318 self.unsupported("Cannot convert array columns into map.") -319 return self.func(map_func_name, keys, values) -320 -321 args = [] -322 for key, value in zip(keys.expressions, values.expressions): -323 args.append(self.sql(key)) -324 args.append(self.sql(value)) -325 return self.func(map_func_name, *args) -326 +317 +318def var_map_sql( +319 self: Generator, expression: exp.Map | exp.VarMap, map_func_name: str = "MAP" +320) -> str: +321 keys = expression.args["keys"] +322 values = expression.args["values"] +323 +324 if not isinstance(keys, exp.Array) or not isinstance(values, exp.Array): +325 self.unsupported("Cannot convert array columns into map.") +326 return self.func(map_func_name, keys, values) 327 -328def format_time_lambda( -329 exp_class: t.Type[E], dialect: str, default: t.Optional[bool | str] = None -330) -> t.Callable[[t.Sequence], E]: -331 """Helper used for time expressions. -332 -333 Args: -334 exp_class: the expression class to instantiate. -335 dialect: target sql dialect. -336 default: the default format, True being time. -337 -338 Returns: -339 A callable that can be used to return the appropriately formatted time expression. -340 """ -341 -342 def _format_time(args: t.Sequence): -343 return exp_class( -344 this=seq_get(args, 0), -345 format=Dialect[dialect].format_time( -346 seq_get(args, 1) -347 or (Dialect[dialect].time_format if default is True else default or None) -348 ), -349 ) -350 -351 return _format_time -352 -353 -354def create_with_partitions_sql(self: Generator, expression: exp.Create) -> str: -355 """ -356 In Hive and Spark, the PARTITIONED BY property acts as an extension of a table's schema. When the -357 PARTITIONED BY value is an array of column names, they are transformed into a schema. The corresponding -358 columns are removed from the create statement. -359 """ -360 has_schema = isinstance(expression.this, exp.Schema) -361 is_partitionable = expression.args.get("kind") in ("TABLE", "VIEW") -362 -363 if has_schema and is_partitionable: -364 expression = expression.copy() -365 prop = expression.find(exp.PartitionedByProperty) -366 if prop and prop.this and not isinstance(prop.this, exp.Schema): -367 schema = expression.this -368 columns = {v.name.upper() for v in prop.this.expressions} -369 partitions = [col for col in schema.expressions if col.name.upper() in columns] -370 schema.set("expressions", [e for e in schema.expressions if e not in partitions]) -371 prop.replace(exp.PartitionedByProperty(this=exp.Schema(expressions=partitions))) -372 expression.set("this", schema) -373 -374 return self.create_sql(expression) -375 -376 -377def parse_date_delta( -378 exp_class: t.Type[E], unit_mapping: t.Optional[t.Dict[str, str]] = None -379) -> t.Callable[[t.Sequence], E]: -380 def inner_func(args: t.Sequence) -> E: -381 unit_based = len(args) == 3 -382 this = seq_get(args, 2) if unit_based else seq_get(args, 0) -383 expression = seq_get(args, 1) if unit_based else seq_get(args, 1) -384 unit = seq_get(args, 0) if unit_based else exp.Literal.string("DAY") -385 unit = unit_mapping.get(unit.name.lower(), unit) if unit_mapping else unit # type: ignore -386 return exp_class(this=this, expression=expression, unit=unit) -387 -388 return inner_func -389 -390 -391def date_trunc_to_time(args: t.Sequence) -> exp.DateTrunc | exp.TimestampTrunc: -392 unit = seq_get(args, 0) -393 this = seq_get(args, 1) -394 -395 if isinstance(this, exp.Cast) and this.is_type(exp.DataType.Type.DATE): -396 return exp.DateTrunc(unit=unit, this=this) -397 return exp.TimestampTrunc(this=this, unit=unit) -398 -399 -400def timestamptrunc_sql(self: Generator, expression: exp.TimestampTrunc) -> str: -401 return self.func( -402 "DATE_TRUNC", exp.Literal.string(expression.text("unit") or "day"), expression.this -403 ) -404 -405 -406def locate_to_strposition(args: t.Sequence) -> exp.Expression: -407 return exp.StrPosition( -408 this=seq_get(args, 1), -409 substr=seq_get(args, 0), -410 position=seq_get(args, 2), -411 ) -412 -413 -414def strposition_to_locate_sql(self: Generator, expression: exp.StrPosition) -> str: -415 return self.func( -416 "LOCATE", expression.args.get("substr"), expression.this, expression.args.get("position") -417 ) -418 -419 -420def timestrtotime_sql(self: Generator, expression: exp.TimeStrToTime) -> str: -421 return f"CAST({self.sql(expression, 'this')} AS TIMESTAMP)" -422 -423 -424def datestrtodate_sql(self: Generator, expression: exp.DateStrToDate) -> str: -425 return f"CAST({self.sql(expression, 'this')} AS DATE)" +328 args = [] +329 for key, value in zip(keys.expressions, values.expressions): +330 args.append(self.sql(key)) +331 args.append(self.sql(value)) +332 return self.func(map_func_name, *args) +333 +334 +335def format_time_lambda( +336 exp_class: t.Type[E], dialect: str, default: t.Optional[bool | str] = None +337) -> t.Callable[[t.Sequence], E]: +338 """Helper used for time expressions. +339 +340 Args: +341 exp_class: the expression class to instantiate. +342 dialect: target sql dialect. +343 default: the default format, True being time. +344 +345 Returns: +346 A callable that can be used to return the appropriately formatted time expression. +347 """ +348 +349 def _format_time(args: t.Sequence): +350 return exp_class( +351 this=seq_get(args, 0), +352 format=Dialect[dialect].format_time( +353 seq_get(args, 1) +354 or (Dialect[dialect].time_format if default is True else default or None) +355 ), +356 ) +357 +358 return _format_time +359 +360 +361def create_with_partitions_sql(self: Generator, expression: exp.Create) -> str: +362 """ +363 In Hive and Spark, the PARTITIONED BY property acts as an extension of a table's schema. When the +364 PARTITIONED BY value is an array of column names, they are transformed into a schema. The corresponding +365 columns are removed from the create statement. +366 """ +367 has_schema = isinstance(expression.this, exp.Schema) +368 is_partitionable = expression.args.get("kind") in ("TABLE", "VIEW") +369 +370 if has_schema and is_partitionable: +371 expression = expression.copy() +372 prop = expression.find(exp.PartitionedByProperty) +373 if prop and prop.this and not isinstance(prop.this, exp.Schema): +374 schema = expression.this +375 columns = {v.name.upper() for v in prop.this.expressions} +376 partitions = [col for col in schema.expressions if col.name.upper() in columns] +377 schema.set("expressions", [e for e in schema.expressions if e not in partitions]) +378 prop.replace(exp.PartitionedByProperty(this=exp.Schema(expressions=partitions))) +379 expression.set("this", schema) +380 +381 return self.create_sql(expression) +382 +383 +384def parse_date_delta( +385 exp_class: t.Type[E], unit_mapping: t.Optional[t.Dict[str, str]] = None +386) -> t.Callable[[t.Sequence], E]: +387 def inner_func(args: t.Sequence) -> E: +388 unit_based = len(args) == 3 +389 this = args[2] if unit_based else seq_get(args, 0) +390 unit = args[0] if unit_based else exp.Literal.string("DAY") +391 unit = unit_mapping.get(unit.name.lower(), unit) if unit_mapping else unit +392 return exp_class(this=this, expression=seq_get(args, 1), unit=unit) +393 +394 return inner_func +395 +396 +397def parse_date_delta_with_interval( +398 expression_class: t.Type[E], +399) -> t.Callable[[t.Sequence], t.Optional[E]]: +400 def func(args: t.Sequence) -> t.Optional[E]: +401 if len(args) < 2: +402 return None +403 +404 interval = args[1] +405 expression = interval.this +406 if expression and expression.is_string: +407 expression = exp.Literal.number(expression.this) +408 +409 return expression_class( +410 this=args[0], +411 expression=expression, +412 unit=exp.Literal.string(interval.text("unit")), +413 ) +414 +415 return func +416 +417 +418def date_trunc_to_time(args: t.Sequence) -> exp.DateTrunc | exp.TimestampTrunc: +419 unit = seq_get(args, 0) +420 this = seq_get(args, 1) +421 +422 if isinstance(this, exp.Cast) and this.is_type(exp.DataType.Type.DATE): +423 return exp.DateTrunc(unit=unit, this=this) +424 return exp.TimestampTrunc(this=this, unit=unit) +425 426 -427 -428def min_or_least(self: Generator, expression: exp.Min) -> str: -429 name = "LEAST" if expression.expressions else "MIN" -430 return rename_func(name)(self, expression) +427def timestamptrunc_sql(self: Generator, expression: exp.TimestampTrunc) -> str: +428 return self.func( +429 "DATE_TRUNC", exp.Literal.string(expression.text("unit") or "day"), expression.this +430 ) 431 432 -433def max_or_greatest(self: Generator, expression: exp.Max) -> str: -434 name = "GREATEST" if expression.expressions else "MAX" -435 return rename_func(name)(self, expression) -436 -437 -438def count_if_to_sum(self: Generator, expression: exp.CountIf) -> str: -439 cond = expression.this +433def locate_to_strposition(args: t.Sequence) -> exp.Expression: +434 return exp.StrPosition( +435 this=seq_get(args, 1), +436 substr=seq_get(args, 0), +437 position=seq_get(args, 2), +438 ) +439 440 -441 if isinstance(expression.this, exp.Distinct): -442 cond = expression.this.expressions[0] -443 self.unsupported("DISTINCT is not supported when converting COUNT_IF to SUM") -444 -445 return self.func("sum", exp.func("if", cond, 1, 0)) +441def strposition_to_locate_sql(self: Generator, expression: exp.StrPosition) -> str: +442 return self.func( +443 "LOCATE", expression.args.get("substr"), expression.this, expression.args.get("position") +444 ) +445 446 -447 -448def trim_sql(self: Generator, expression: exp.Trim) -> str: -449 target = self.sql(expression, "this") -450 trim_type = self.sql(expression, "position") -451 remove_chars = self.sql(expression, "expression") -452 collation = self.sql(expression, "collation") +447def timestrtotime_sql(self: Generator, expression: exp.TimeStrToTime) -> str: +448 return f"CAST({self.sql(expression, 'this')} AS TIMESTAMP)" +449 +450 +451def datestrtodate_sql(self: Generator, expression: exp.DateStrToDate) -> str: +452 return f"CAST({self.sql(expression, 'this')} AS DATE)" 453 -454 # Use TRIM/LTRIM/RTRIM syntax if the expression isn't database-specific -455 if not remove_chars and not collation: -456 return self.trim_sql(expression) -457 -458 trim_type = f"{trim_type} " if trim_type else "" -459 remove_chars = f"{remove_chars} " if remove_chars else "" -460 from_part = "FROM " if trim_type or remove_chars else "" -461 collation = f" COLLATE {collation}" if collation else "" -462 return f"TRIM({trim_type}{remove_chars}{from_part}{target}{collation})" +454 +455def min_or_least(self: Generator, expression: exp.Min) -> str: +456 name = "LEAST" if expression.expressions else "MIN" +457 return rename_func(name)(self, expression) +458 +459 +460def max_or_greatest(self: Generator, expression: exp.Max) -> str: +461 name = "GREATEST" if expression.expressions else "MAX" +462 return rename_func(name)(self, expression) 463 464 -465def str_to_time_sql(self, expression: exp.Expression) -> str: -466 return self.func("STRPTIME", expression.this, self.format_time(expression)) +465def count_if_to_sum(self: Generator, expression: exp.CountIf) -> str: +466 cond = expression.this 467 -468 -469def ts_or_ds_to_date_sql(dialect: str) -> t.Callable: -470 def _ts_or_ds_to_date_sql(self: Generator, expression: exp.TsOrDsToDate) -> str: -471 _dialect = Dialect.get_or_raise(dialect) -472 time_format = self.format_time(expression) -473 if time_format and time_format not in (_dialect.time_format, _dialect.date_format): -474 return f"CAST({str_to_time_sql(self, expression)} AS DATE)" -475 return f"CAST({self.sql(expression, 'this')} AS DATE)" -476 -477 return _ts_or_ds_to_date_sql +468 if isinstance(expression.this, exp.Distinct): +469 cond = expression.this.expressions[0] +470 self.unsupported("DISTINCT is not supported when converting COUNT_IF to SUM") +471 +472 return self.func("sum", exp.func("if", cond, 1, 0)) +473 +474 +475def trim_sql(self: Generator, expression: exp.Trim) -> str: +476 target = self.sql(expression, "this") +477 trim_type = self.sql(expression, "position") +478 remove_chars = self.sql(expression, "expression") +479 collation = self.sql(expression, "collation") +480 +481 # Use TRIM/LTRIM/RTRIM syntax if the expression isn't database-specific +482 if not remove_chars and not collation: +483 return self.trim_sql(expression) +484 +485 trim_type = f"{trim_type} " if trim_type else "" +486 remove_chars = f"{remove_chars} " if remove_chars else "" +487 from_part = "FROM " if trim_type or remove_chars else "" +488 collation = f" COLLATE {collation}" if collation else "" +489 return f"TRIM({trim_type}{remove_chars}{from_part}{target}{collation})" +490 +491 +492def str_to_time_sql(self, expression: exp.Expression) -> str: +493 return self.func("STRPTIME", expression.this, self.format_time(expression)) +494 +495 +496def ts_or_ds_to_date_sql(dialect: str) -> t.Callable: +497 def _ts_or_ds_to_date_sql(self: Generator, expression: exp.TsOrDsToDate) -> str: +498 _dialect = Dialect.get_or_raise(dialect) +499 time_format = self.format_time(expression) +500 if time_format and time_format not in (_dialect.time_format, _dialect.date_format): +501 return f"CAST({str_to_time_sql(self, expression)} AS DATE)" +502 return f"CAST({self.sql(expression, 'this')} AS DATE)" +503 +504 return _ts_or_ds_to_date_sql
    @@ -1718,6 +1751,28 @@ + +
    + +
    + + def + no_comment_column_constraint_sql( self: sqlglot.generator.Generator, expression: sqlglot.expressions.CommentColumnConstraint) -> str: + + + +
    + +
    297def no_comment_column_constraint_sql(
    +298    self: Generator, expression: exp.CommentColumnConstraint
    +299) -> str:
    +300    self.unsupported("CommentColumnConstraint unsupported")
    +301    return ""
    +
    + + + +
    @@ -1730,13 +1785,13 @@ -
    297def str_position_sql(self: Generator, expression: exp.StrPosition) -> str:
    -298    this = self.sql(expression, "this")
    -299    substr = self.sql(expression, "substr")
    -300    position = self.sql(expression, "position")
    -301    if position:
    -302        return f"STRPOS(SUBSTR({this}, {position}), {substr}) + {position} - 1"
    -303    return f"STRPOS({this}, {substr})"
    +            
    304def str_position_sql(self: Generator, expression: exp.StrPosition) -> str:
    +305    this = self.sql(expression, "this")
    +306    substr = self.sql(expression, "substr")
    +307    position = self.sql(expression, "position")
    +308    if position:
    +309        return f"STRPOS(SUBSTR({this}, {position}), {substr}) + {position} - 1"
    +310    return f"STRPOS({this}, {substr})"
     
    @@ -1754,10 +1809,10 @@
    -
    306def struct_extract_sql(self: Generator, expression: exp.StructExtract) -> str:
    -307    this = self.sql(expression, "this")
    -308    struct_key = self.sql(exp.Identifier(this=expression.expression, quoted=True))
    -309    return f"{this}.{struct_key}"
    +            
    313def struct_extract_sql(self: Generator, expression: exp.StructExtract) -> str:
    +314    this = self.sql(expression, "this")
    +315    struct_key = self.sql(exp.Identifier(this=expression.expression, quoted=True))
    +316    return f"{this}.{struct_key}"
     
    @@ -1775,21 +1830,21 @@
    -
    312def var_map_sql(
    -313    self: Generator, expression: exp.Map | exp.VarMap, map_func_name: str = "MAP"
    -314) -> str:
    -315    keys = expression.args["keys"]
    -316    values = expression.args["values"]
    -317
    -318    if not isinstance(keys, exp.Array) or not isinstance(values, exp.Array):
    -319        self.unsupported("Cannot convert array columns into map.")
    -320        return self.func(map_func_name, keys, values)
    -321
    -322    args = []
    -323    for key, value in zip(keys.expressions, values.expressions):
    -324        args.append(self.sql(key))
    -325        args.append(self.sql(value))
    -326    return self.func(map_func_name, *args)
    +            
    319def var_map_sql(
    +320    self: Generator, expression: exp.Map | exp.VarMap, map_func_name: str = "MAP"
    +321) -> str:
    +322    keys = expression.args["keys"]
    +323    values = expression.args["values"]
    +324
    +325    if not isinstance(keys, exp.Array) or not isinstance(values, exp.Array):
    +326        self.unsupported("Cannot convert array columns into map.")
    +327        return self.func(map_func_name, keys, values)
    +328
    +329    args = []
    +330    for key, value in zip(keys.expressions, values.expressions):
    +331        args.append(self.sql(key))
    +332        args.append(self.sql(value))
    +333    return self.func(map_func_name, *args)
     
    @@ -1807,30 +1862,30 @@
    -
    329def format_time_lambda(
    -330    exp_class: t.Type[E], dialect: str, default: t.Optional[bool | str] = None
    -331) -> t.Callable[[t.Sequence], E]:
    -332    """Helper used for time expressions.
    -333
    -334    Args:
    -335        exp_class: the expression class to instantiate.
    -336        dialect: target sql dialect.
    -337        default: the default format, True being time.
    -338
    -339    Returns:
    -340        A callable that can be used to return the appropriately formatted time expression.
    -341    """
    -342
    -343    def _format_time(args: t.Sequence):
    -344        return exp_class(
    -345            this=seq_get(args, 0),
    -346            format=Dialect[dialect].format_time(
    -347                seq_get(args, 1)
    -348                or (Dialect[dialect].time_format if default is True else default or None)
    -349            ),
    -350        )
    -351
    -352    return _format_time
    +            
    336def format_time_lambda(
    +337    exp_class: t.Type[E], dialect: str, default: t.Optional[bool | str] = None
    +338) -> t.Callable[[t.Sequence], E]:
    +339    """Helper used for time expressions.
    +340
    +341    Args:
    +342        exp_class: the expression class to instantiate.
    +343        dialect: target sql dialect.
    +344        default: the default format, True being time.
    +345
    +346    Returns:
    +347        A callable that can be used to return the appropriately formatted time expression.
    +348    """
    +349
    +350    def _format_time(args: t.Sequence):
    +351        return exp_class(
    +352            this=seq_get(args, 0),
    +353            format=Dialect[dialect].format_time(
    +354                seq_get(args, 1)
    +355                or (Dialect[dialect].time_format if default is True else default or None)
    +356            ),
    +357        )
    +358
    +359    return _format_time
     
    @@ -1864,27 +1919,27 @@
    -
    355def create_with_partitions_sql(self: Generator, expression: exp.Create) -> str:
    -356    """
    -357    In Hive and Spark, the PARTITIONED BY property acts as an extension of a table's schema. When the
    -358    PARTITIONED BY value is an array of column names, they are transformed into a schema. The corresponding
    -359    columns are removed from the create statement.
    -360    """
    -361    has_schema = isinstance(expression.this, exp.Schema)
    -362    is_partitionable = expression.args.get("kind") in ("TABLE", "VIEW")
    -363
    -364    if has_schema and is_partitionable:
    -365        expression = expression.copy()
    -366        prop = expression.find(exp.PartitionedByProperty)
    -367        if prop and prop.this and not isinstance(prop.this, exp.Schema):
    -368            schema = expression.this
    -369            columns = {v.name.upper() for v in prop.this.expressions}
    -370            partitions = [col for col in schema.expressions if col.name.upper() in columns]
    -371            schema.set("expressions", [e for e in schema.expressions if e not in partitions])
    -372            prop.replace(exp.PartitionedByProperty(this=exp.Schema(expressions=partitions)))
    -373            expression.set("this", schema)
    -374
    -375    return self.create_sql(expression)
    +            
    362def create_with_partitions_sql(self: Generator, expression: exp.Create) -> str:
    +363    """
    +364    In Hive and Spark, the PARTITIONED BY property acts as an extension of a table's schema. When the
    +365    PARTITIONED BY value is an array of column names, they are transformed into a schema. The corresponding
    +366    columns are removed from the create statement.
    +367    """
    +368    has_schema = isinstance(expression.this, exp.Schema)
    +369    is_partitionable = expression.args.get("kind") in ("TABLE", "VIEW")
    +370
    +371    if has_schema and is_partitionable:
    +372        expression = expression.copy()
    +373        prop = expression.find(exp.PartitionedByProperty)
    +374        if prop and prop.this and not isinstance(prop.this, exp.Schema):
    +375            schema = expression.this
    +376            columns = {v.name.upper() for v in prop.this.expressions}
    +377            partitions = [col for col in schema.expressions if col.name.upper() in columns]
    +378            schema.set("expressions", [e for e in schema.expressions if e not in partitions])
    +379            prop.replace(exp.PartitionedByProperty(this=exp.Schema(expressions=partitions)))
    +380            expression.set("this", schema)
    +381
    +382    return self.create_sql(expression)
     
    @@ -1906,18 +1961,53 @@ columns are removed from the create statement.

    -
    378def parse_date_delta(
    -379    exp_class: t.Type[E], unit_mapping: t.Optional[t.Dict[str, str]] = None
    -380) -> t.Callable[[t.Sequence], E]:
    -381    def inner_func(args: t.Sequence) -> E:
    -382        unit_based = len(args) == 3
    -383        this = seq_get(args, 2) if unit_based else seq_get(args, 0)
    -384        expression = seq_get(args, 1) if unit_based else seq_get(args, 1)
    -385        unit = seq_get(args, 0) if unit_based else exp.Literal.string("DAY")
    -386        unit = unit_mapping.get(unit.name.lower(), unit) if unit_mapping else unit  # type: ignore
    -387        return exp_class(this=this, expression=expression, unit=unit)
    -388
    -389    return inner_func
    +            
    385def parse_date_delta(
    +386    exp_class: t.Type[E], unit_mapping: t.Optional[t.Dict[str, str]] = None
    +387) -> t.Callable[[t.Sequence], E]:
    +388    def inner_func(args: t.Sequence) -> E:
    +389        unit_based = len(args) == 3
    +390        this = args[2] if unit_based else seq_get(args, 0)
    +391        unit = args[0] if unit_based else exp.Literal.string("DAY")
    +392        unit = unit_mapping.get(unit.name.lower(), unit) if unit_mapping else unit
    +393        return exp_class(this=this, expression=seq_get(args, 1), unit=unit)
    +394
    +395    return inner_func
    +
    + + + + +
    +
    + +
    + + def + parse_date_delta_with_interval(expression_class: Type[~E]) -> Callable[[Sequence], Optional[~E]]: + + + +
    + +
    398def parse_date_delta_with_interval(
    +399    expression_class: t.Type[E],
    +400) -> t.Callable[[t.Sequence], t.Optional[E]]:
    +401    def func(args: t.Sequence) -> t.Optional[E]:
    +402        if len(args) < 2:
    +403            return None
    +404
    +405        interval = args[1]
    +406        expression = interval.this
    +407        if expression and expression.is_string:
    +408            expression = exp.Literal.number(expression.this)
    +409
    +410        return expression_class(
    +411            this=args[0],
    +412            expression=expression,
    +413            unit=exp.Literal.string(interval.text("unit")),
    +414        )
    +415
    +416    return func
     
    @@ -1935,13 +2025,13 @@ columns are removed from the create statement.

    -
    392def date_trunc_to_time(args: t.Sequence) -> exp.DateTrunc | exp.TimestampTrunc:
    -393    unit = seq_get(args, 0)
    -394    this = seq_get(args, 1)
    -395
    -396    if isinstance(this, exp.Cast) and this.is_type(exp.DataType.Type.DATE):
    -397        return exp.DateTrunc(unit=unit, this=this)
    -398    return exp.TimestampTrunc(this=this, unit=unit)
    +            
    419def date_trunc_to_time(args: t.Sequence) -> exp.DateTrunc | exp.TimestampTrunc:
    +420    unit = seq_get(args, 0)
    +421    this = seq_get(args, 1)
    +422
    +423    if isinstance(this, exp.Cast) and this.is_type(exp.DataType.Type.DATE):
    +424        return exp.DateTrunc(unit=unit, this=this)
    +425    return exp.TimestampTrunc(this=this, unit=unit)
     
    @@ -1959,10 +2049,10 @@ columns are removed from the create statement.

    -
    401def timestamptrunc_sql(self: Generator, expression: exp.TimestampTrunc) -> str:
    -402    return self.func(
    -403        "DATE_TRUNC", exp.Literal.string(expression.text("unit") or "day"), expression.this
    -404    )
    +            
    428def timestamptrunc_sql(self: Generator, expression: exp.TimestampTrunc) -> str:
    +429    return self.func(
    +430        "DATE_TRUNC", exp.Literal.string(expression.text("unit") or "day"), expression.this
    +431    )
     
    @@ -1980,12 +2070,12 @@ columns are removed from the create statement.

    -
    407def locate_to_strposition(args: t.Sequence) -> exp.Expression:
    -408    return exp.StrPosition(
    -409        this=seq_get(args, 1),
    -410        substr=seq_get(args, 0),
    -411        position=seq_get(args, 2),
    -412    )
    +            
    434def locate_to_strposition(args: t.Sequence) -> exp.Expression:
    +435    return exp.StrPosition(
    +436        this=seq_get(args, 1),
    +437        substr=seq_get(args, 0),
    +438        position=seq_get(args, 2),
    +439    )
     
    @@ -2003,10 +2093,10 @@ columns are removed from the create statement.

    -
    415def strposition_to_locate_sql(self: Generator, expression: exp.StrPosition) -> str:
    -416    return self.func(
    -417        "LOCATE", expression.args.get("substr"), expression.this, expression.args.get("position")
    -418    )
    +            
    442def strposition_to_locate_sql(self: Generator, expression: exp.StrPosition) -> str:
    +443    return self.func(
    +444        "LOCATE", expression.args.get("substr"), expression.this, expression.args.get("position")
    +445    )
     
    @@ -2024,8 +2114,8 @@ columns are removed from the create statement.

    -
    421def timestrtotime_sql(self: Generator, expression: exp.TimeStrToTime) -> str:
    -422    return f"CAST({self.sql(expression, 'this')} AS TIMESTAMP)"
    +            
    448def timestrtotime_sql(self: Generator, expression: exp.TimeStrToTime) -> str:
    +449    return f"CAST({self.sql(expression, 'this')} AS TIMESTAMP)"
     
    @@ -2043,8 +2133,8 @@ columns are removed from the create statement.

    -
    425def datestrtodate_sql(self: Generator, expression: exp.DateStrToDate) -> str:
    -426    return f"CAST({self.sql(expression, 'this')} AS DATE)"
    +            
    452def datestrtodate_sql(self: Generator, expression: exp.DateStrToDate) -> str:
    +453    return f"CAST({self.sql(expression, 'this')} AS DATE)"
     
    @@ -2062,9 +2152,9 @@ columns are removed from the create statement.

    -
    429def min_or_least(self: Generator, expression: exp.Min) -> str:
    -430    name = "LEAST" if expression.expressions else "MIN"
    -431    return rename_func(name)(self, expression)
    +            
    456def min_or_least(self: Generator, expression: exp.Min) -> str:
    +457    name = "LEAST" if expression.expressions else "MIN"
    +458    return rename_func(name)(self, expression)
     
    @@ -2082,9 +2172,9 @@ columns are removed from the create statement.

    -
    434def max_or_greatest(self: Generator, expression: exp.Max) -> str:
    -435    name = "GREATEST" if expression.expressions else "MAX"
    -436    return rename_func(name)(self, expression)
    +            
    461def max_or_greatest(self: Generator, expression: exp.Max) -> str:
    +462    name = "GREATEST" if expression.expressions else "MAX"
    +463    return rename_func(name)(self, expression)
     
    @@ -2102,14 +2192,14 @@ columns are removed from the create statement.

    -
    439def count_if_to_sum(self: Generator, expression: exp.CountIf) -> str:
    -440    cond = expression.this
    -441
    -442    if isinstance(expression.this, exp.Distinct):
    -443        cond = expression.this.expressions[0]
    -444        self.unsupported("DISTINCT is not supported when converting COUNT_IF to SUM")
    -445
    -446    return self.func("sum", exp.func("if", cond, 1, 0))
    +            
    466def count_if_to_sum(self: Generator, expression: exp.CountIf) -> str:
    +467    cond = expression.this
    +468
    +469    if isinstance(expression.this, exp.Distinct):
    +470        cond = expression.this.expressions[0]
    +471        self.unsupported("DISTINCT is not supported when converting COUNT_IF to SUM")
    +472
    +473    return self.func("sum", exp.func("if", cond, 1, 0))
     
    @@ -2127,21 +2217,21 @@ columns are removed from the create statement.

    -
    449def trim_sql(self: Generator, expression: exp.Trim) -> str:
    -450    target = self.sql(expression, "this")
    -451    trim_type = self.sql(expression, "position")
    -452    remove_chars = self.sql(expression, "expression")
    -453    collation = self.sql(expression, "collation")
    -454
    -455    # Use TRIM/LTRIM/RTRIM syntax if the expression isn't database-specific
    -456    if not remove_chars and not collation:
    -457        return self.trim_sql(expression)
    -458
    -459    trim_type = f"{trim_type} " if trim_type else ""
    -460    remove_chars = f"{remove_chars} " if remove_chars else ""
    -461    from_part = "FROM " if trim_type or remove_chars else ""
    -462    collation = f" COLLATE {collation}" if collation else ""
    -463    return f"TRIM({trim_type}{remove_chars}{from_part}{target}{collation})"
    +            
    476def trim_sql(self: Generator, expression: exp.Trim) -> str:
    +477    target = self.sql(expression, "this")
    +478    trim_type = self.sql(expression, "position")
    +479    remove_chars = self.sql(expression, "expression")
    +480    collation = self.sql(expression, "collation")
    +481
    +482    # Use TRIM/LTRIM/RTRIM syntax if the expression isn't database-specific
    +483    if not remove_chars and not collation:
    +484        return self.trim_sql(expression)
    +485
    +486    trim_type = f"{trim_type} " if trim_type else ""
    +487    remove_chars = f"{remove_chars} " if remove_chars else ""
    +488    from_part = "FROM " if trim_type or remove_chars else ""
    +489    collation = f" COLLATE {collation}" if collation else ""
    +490    return f"TRIM({trim_type}{remove_chars}{from_part}{target}{collation})"
     
    @@ -2159,8 +2249,8 @@ columns are removed from the create statement.

    -
    466def str_to_time_sql(self, expression: exp.Expression) -> str:
    -467    return self.func("STRPTIME", expression.this, self.format_time(expression))
    +            
    493def str_to_time_sql(self, expression: exp.Expression) -> str:
    +494    return self.func("STRPTIME", expression.this, self.format_time(expression))
     
    @@ -2178,15 +2268,15 @@ columns are removed from the create statement.

    -
    470def ts_or_ds_to_date_sql(dialect: str) -> t.Callable:
    -471    def _ts_or_ds_to_date_sql(self: Generator, expression: exp.TsOrDsToDate) -> str:
    -472        _dialect = Dialect.get_or_raise(dialect)
    -473        time_format = self.format_time(expression)
    -474        if time_format and time_format not in (_dialect.time_format, _dialect.date_format):
    -475            return f"CAST({str_to_time_sql(self, expression)} AS DATE)"
    -476        return f"CAST({self.sql(expression, 'this')} AS DATE)"
    -477
    -478    return _ts_or_ds_to_date_sql
    +            
    497def ts_or_ds_to_date_sql(dialect: str) -> t.Callable:
    +498    def _ts_or_ds_to_date_sql(self: Generator, expression: exp.TsOrDsToDate) -> str:
    +499        _dialect = Dialect.get_or_raise(dialect)
    +500        time_format = self.format_time(expression)
    +501        if time_format and time_format not in (_dialect.time_format, _dialect.date_format):
    +502            return f"CAST({str_to_time_sql(self, expression)} AS DATE)"
    +503        return f"CAST({self.sql(expression, 'this')} AS DATE)"
    +504
    +505    return _ts_or_ds_to_date_sql
     
    diff --git a/docs/sqlglot/dialects/drill.html b/docs/sqlglot/dialects/drill.html index e6ed13c..bd76bd7 100644 --- a/docs/sqlglot/dialects/drill.html +++ b/docs/sqlglot/dialects/drill.html @@ -3,7 +3,7 @@ - + sqlglot.dialects.drill API documentation @@ -186,58 +186,62 @@
    104 LOG_DEFAULTS_TO_LN = True 105 106 class Generator(generator.Generator): -107 TYPE_MAPPING = { -108 **generator.Generator.TYPE_MAPPING, # type: ignore -109 exp.DataType.Type.INT: "INTEGER", -110 exp.DataType.Type.SMALLINT: "INTEGER", -111 exp.DataType.Type.TINYINT: "INTEGER", -112 exp.DataType.Type.BINARY: "VARBINARY", -113 exp.DataType.Type.TEXT: "VARCHAR", -114 exp.DataType.Type.NCHAR: "VARCHAR", -115 exp.DataType.Type.TIMESTAMPLTZ: "TIMESTAMP", -116 exp.DataType.Type.TIMESTAMPTZ: "TIMESTAMP", -117 exp.DataType.Type.DATETIME: "TIMESTAMP", -118 } -119 -120 PROPERTIES_LOCATION = { -121 **generator.Generator.PROPERTIES_LOCATION, # type: ignore -122 exp.PartitionedByProperty: exp.Properties.Location.POST_SCHEMA, -123 } -124 -125 TRANSFORMS = { -126 **generator.Generator.TRANSFORMS, # type: ignore -127 exp.CurrentTimestamp: lambda *_: "CURRENT_TIMESTAMP", -128 exp.ArrayContains: rename_func("REPEATED_CONTAINS"), -129 exp.ArraySize: rename_func("REPEATED_COUNT"), -130 exp.Create: create_with_partitions_sql, -131 exp.DateAdd: _date_add_sql("ADD"), -132 exp.DateStrToDate: datestrtodate_sql, -133 exp.DateSub: _date_add_sql("SUB"), -134 exp.DateToDi: lambda self, e: f"CAST(TO_DATE({self.sql(e, 'this')}, {Drill.dateint_format}) AS INT)", -135 exp.DiToDate: lambda self, e: f"TO_DATE(CAST({self.sql(e, 'this')} AS VARCHAR), {Drill.dateint_format})", -136 exp.If: lambda self, e: f"`IF`({self.format_args(e.this, e.args.get('true'), e.args.get('false'))})", -137 exp.ILike: lambda self, e: f" {self.sql(e, 'this')} `ILIKE` {self.sql(e, 'expression')}", -138 exp.Levenshtein: rename_func("LEVENSHTEIN_DISTANCE"), -139 exp.PartitionedByProperty: lambda self, e: f"PARTITION BY {self.sql(e, 'this')}", -140 exp.RegexpLike: rename_func("REGEXP_MATCHES"), -141 exp.StrPosition: str_position_sql, -142 exp.StrToDate: _str_to_date, -143 exp.Pow: rename_func("POW"), -144 exp.StrToTime: lambda self, e: f"TO_TIMESTAMP({self.sql(e, 'this')}, {self.format_time(e)})", -145 exp.TimeStrToDate: lambda self, e: f"CAST({self.sql(e, 'this')} AS DATE)", -146 exp.TimeStrToTime: timestrtotime_sql, -147 exp.TimeStrToUnix: rename_func("UNIX_TIMESTAMP"), -148 exp.TimeToStr: lambda self, e: f"TO_CHAR({self.sql(e, 'this')}, {self.format_time(e)})", -149 exp.TimeToUnix: rename_func("UNIX_TIMESTAMP"), -150 exp.ToChar: lambda self, e: self.function_fallback_sql(e), -151 exp.TryCast: no_trycast_sql, -152 exp.TsOrDsAdd: lambda self, e: f"DATE_ADD(CAST({self.sql(e, 'this')} AS DATE), {self.sql(exp.Interval(this=e.expression, unit=exp.Var(this='DAY')))})", -153 exp.TsOrDsToDate: ts_or_ds_to_date_sql("drill"), -154 exp.TsOrDiToDi: lambda self, e: f"CAST(SUBSTR(REPLACE(CAST({self.sql(e, 'this')} AS VARCHAR), '-', ''), 1, 8) AS INT)", -155 } -156 -157 def normalize_func(self, name: str) -> str: -158 return name if exp.SAFE_IDENTIFIER_RE.match(name) else f"`{name}`" +107 JOIN_HINTS = False +108 TABLE_HINTS = False +109 +110 TYPE_MAPPING = { +111 **generator.Generator.TYPE_MAPPING, # type: ignore +112 exp.DataType.Type.INT: "INTEGER", +113 exp.DataType.Type.SMALLINT: "INTEGER", +114 exp.DataType.Type.TINYINT: "INTEGER", +115 exp.DataType.Type.BINARY: "VARBINARY", +116 exp.DataType.Type.TEXT: "VARCHAR", +117 exp.DataType.Type.NCHAR: "VARCHAR", +118 exp.DataType.Type.TIMESTAMPLTZ: "TIMESTAMP", +119 exp.DataType.Type.TIMESTAMPTZ: "TIMESTAMP", +120 exp.DataType.Type.DATETIME: "TIMESTAMP", +121 } +122 +123 PROPERTIES_LOCATION = { +124 **generator.Generator.PROPERTIES_LOCATION, # type: ignore +125 exp.PartitionedByProperty: exp.Properties.Location.POST_SCHEMA, +126 exp.VolatileProperty: exp.Properties.Location.UNSUPPORTED, +127 } +128 +129 TRANSFORMS = { +130 **generator.Generator.TRANSFORMS, # type: ignore +131 exp.CurrentTimestamp: lambda *_: "CURRENT_TIMESTAMP", +132 exp.ArrayContains: rename_func("REPEATED_CONTAINS"), +133 exp.ArraySize: rename_func("REPEATED_COUNT"), +134 exp.Create: create_with_partitions_sql, +135 exp.DateAdd: _date_add_sql("ADD"), +136 exp.DateStrToDate: datestrtodate_sql, +137 exp.DateSub: _date_add_sql("SUB"), +138 exp.DateToDi: lambda self, e: f"CAST(TO_DATE({self.sql(e, 'this')}, {Drill.dateint_format}) AS INT)", +139 exp.DiToDate: lambda self, e: f"TO_DATE(CAST({self.sql(e, 'this')} AS VARCHAR), {Drill.dateint_format})", +140 exp.If: lambda self, e: f"`IF`({self.format_args(e.this, e.args.get('true'), e.args.get('false'))})", +141 exp.ILike: lambda self, e: f" {self.sql(e, 'this')} `ILIKE` {self.sql(e, 'expression')}", +142 exp.Levenshtein: rename_func("LEVENSHTEIN_DISTANCE"), +143 exp.PartitionedByProperty: lambda self, e: f"PARTITION BY {self.sql(e, 'this')}", +144 exp.RegexpLike: rename_func("REGEXP_MATCHES"), +145 exp.StrPosition: str_position_sql, +146 exp.StrToDate: _str_to_date, +147 exp.Pow: rename_func("POW"), +148 exp.StrToTime: lambda self, e: f"TO_TIMESTAMP({self.sql(e, 'this')}, {self.format_time(e)})", +149 exp.TimeStrToDate: lambda self, e: f"CAST({self.sql(e, 'this')} AS DATE)", +150 exp.TimeStrToTime: timestrtotime_sql, +151 exp.TimeStrToUnix: rename_func("UNIX_TIMESTAMP"), +152 exp.TimeToStr: lambda self, e: f"TO_CHAR({self.sql(e, 'this')}, {self.format_time(e)})", +153 exp.TimeToUnix: rename_func("UNIX_TIMESTAMP"), +154 exp.ToChar: lambda self, e: self.function_fallback_sql(e), +155 exp.TryCast: no_trycast_sql, +156 exp.TsOrDsAdd: lambda self, e: f"DATE_ADD(CAST({self.sql(e, 'this')} AS DATE), {self.sql(exp.Interval(this=e.expression, unit=exp.Var(this='DAY')))})", +157 exp.TsOrDsToDate: ts_or_ds_to_date_sql("drill"), +158 exp.TsOrDiToDi: lambda self, e: f"CAST(SUBSTR(REPLACE(CAST({self.sql(e, 'this')} AS VARCHAR), '-', ''), 1, 8) AS INT)", +159 } +160 +161 def normalize_func(self, name: str) -> str: +162 return name if exp.SAFE_IDENTIFIER_RE.match(name) else f"`{name}`"
    @@ -311,58 +315,62 @@ 105 LOG_DEFAULTS_TO_LN = True 106 107 class Generator(generator.Generator): -108 TYPE_MAPPING = { -109 **generator.Generator.TYPE_MAPPING, # type: ignore -110 exp.DataType.Type.INT: "INTEGER", -111 exp.DataType.Type.SMALLINT: "INTEGER", -112 exp.DataType.Type.TINYINT: "INTEGER", -113 exp.DataType.Type.BINARY: "VARBINARY", -114 exp.DataType.Type.TEXT: "VARCHAR", -115 exp.DataType.Type.NCHAR: "VARCHAR", -116 exp.DataType.Type.TIMESTAMPLTZ: "TIMESTAMP", -117 exp.DataType.Type.TIMESTAMPTZ: "TIMESTAMP", -118 exp.DataType.Type.DATETIME: "TIMESTAMP", -119 } -120 -121 PROPERTIES_LOCATION = { -122 **generator.Generator.PROPERTIES_LOCATION, # type: ignore -123 exp.PartitionedByProperty: exp.Properties.Location.POST_SCHEMA, -124 } -125 -126 TRANSFORMS = { -127 **generator.Generator.TRANSFORMS, # type: ignore -128 exp.CurrentTimestamp: lambda *_: "CURRENT_TIMESTAMP", -129 exp.ArrayContains: rename_func("REPEATED_CONTAINS"), -130 exp.ArraySize: rename_func("REPEATED_COUNT"), -131 exp.Create: create_with_partitions_sql, -132 exp.DateAdd: _date_add_sql("ADD"), -133 exp.DateStrToDate: datestrtodate_sql, -134 exp.DateSub: _date_add_sql("SUB"), -135 exp.DateToDi: lambda self, e: f"CAST(TO_DATE({self.sql(e, 'this')}, {Drill.dateint_format}) AS INT)", -136 exp.DiToDate: lambda self, e: f"TO_DATE(CAST({self.sql(e, 'this')} AS VARCHAR), {Drill.dateint_format})", -137 exp.If: lambda self, e: f"`IF`({self.format_args(e.this, e.args.get('true'), e.args.get('false'))})", -138 exp.ILike: lambda self, e: f" {self.sql(e, 'this')} `ILIKE` {self.sql(e, 'expression')}", -139 exp.Levenshtein: rename_func("LEVENSHTEIN_DISTANCE"), -140 exp.PartitionedByProperty: lambda self, e: f"PARTITION BY {self.sql(e, 'this')}", -141 exp.RegexpLike: rename_func("REGEXP_MATCHES"), -142 exp.StrPosition: str_position_sql, -143 exp.StrToDate: _str_to_date, -144 exp.Pow: rename_func("POW"), -145 exp.StrToTime: lambda self, e: f"TO_TIMESTAMP({self.sql(e, 'this')}, {self.format_time(e)})", -146 exp.TimeStrToDate: lambda self, e: f"CAST({self.sql(e, 'this')} AS DATE)", -147 exp.TimeStrToTime: timestrtotime_sql, -148 exp.TimeStrToUnix: rename_func("UNIX_TIMESTAMP"), -149 exp.TimeToStr: lambda self, e: f"TO_CHAR({self.sql(e, 'this')}, {self.format_time(e)})", -150 exp.TimeToUnix: rename_func("UNIX_TIMESTAMP"), -151 exp.ToChar: lambda self, e: self.function_fallback_sql(e), -152 exp.TryCast: no_trycast_sql, -153 exp.TsOrDsAdd: lambda self, e: f"DATE_ADD(CAST({self.sql(e, 'this')} AS DATE), {self.sql(exp.Interval(this=e.expression, unit=exp.Var(this='DAY')))})", -154 exp.TsOrDsToDate: ts_or_ds_to_date_sql("drill"), -155 exp.TsOrDiToDi: lambda self, e: f"CAST(SUBSTR(REPLACE(CAST({self.sql(e, 'this')} AS VARCHAR), '-', ''), 1, 8) AS INT)", -156 } -157 -158 def normalize_func(self, name: str) -> str: -159 return name if exp.SAFE_IDENTIFIER_RE.match(name) else f"`{name}`" +108 JOIN_HINTS = False +109 TABLE_HINTS = False +110 +111 TYPE_MAPPING = { +112 **generator.Generator.TYPE_MAPPING, # type: ignore +113 exp.DataType.Type.INT: "INTEGER", +114 exp.DataType.Type.SMALLINT: "INTEGER", +115 exp.DataType.Type.TINYINT: "INTEGER", +116 exp.DataType.Type.BINARY: "VARBINARY", +117 exp.DataType.Type.TEXT: "VARCHAR", +118 exp.DataType.Type.NCHAR: "VARCHAR", +119 exp.DataType.Type.TIMESTAMPLTZ: "TIMESTAMP", +120 exp.DataType.Type.TIMESTAMPTZ: "TIMESTAMP", +121 exp.DataType.Type.DATETIME: "TIMESTAMP", +122 } +123 +124 PROPERTIES_LOCATION = { +125 **generator.Generator.PROPERTIES_LOCATION, # type: ignore +126 exp.PartitionedByProperty: exp.Properties.Location.POST_SCHEMA, +127 exp.VolatileProperty: exp.Properties.Location.UNSUPPORTED, +128 } +129 +130 TRANSFORMS = { +131 **generator.Generator.TRANSFORMS, # type: ignore +132 exp.CurrentTimestamp: lambda *_: "CURRENT_TIMESTAMP", +133 exp.ArrayContains: rename_func("REPEATED_CONTAINS"), +134 exp.ArraySize: rename_func("REPEATED_COUNT"), +135 exp.Create: create_with_partitions_sql, +136 exp.DateAdd: _date_add_sql("ADD"), +137 exp.DateStrToDate: datestrtodate_sql, +138 exp.DateSub: _date_add_sql("SUB"), +139 exp.DateToDi: lambda self, e: f"CAST(TO_DATE({self.sql(e, 'this')}, {Drill.dateint_format}) AS INT)", +140 exp.DiToDate: lambda self, e: f"TO_DATE(CAST({self.sql(e, 'this')} AS VARCHAR), {Drill.dateint_format})", +141 exp.If: lambda self, e: f"`IF`({self.format_args(e.this, e.args.get('true'), e.args.get('false'))})", +142 exp.ILike: lambda self, e: f" {self.sql(e, 'this')} `ILIKE` {self.sql(e, 'expression')}", +143 exp.Levenshtein: rename_func("LEVENSHTEIN_DISTANCE"), +144 exp.PartitionedByProperty: lambda self, e: f"PARTITION BY {self.sql(e, 'this')}", +145 exp.RegexpLike: rename_func("REGEXP_MATCHES"), +146 exp.StrPosition: str_position_sql, +147 exp.StrToDate: _str_to_date, +148 exp.Pow: rename_func("POW"), +149 exp.StrToTime: lambda self, e: f"TO_TIMESTAMP({self.sql(e, 'this')}, {self.format_time(e)})", +150 exp.TimeStrToDate: lambda self, e: f"CAST({self.sql(e, 'this')} AS DATE)", +151 exp.TimeStrToTime: timestrtotime_sql, +152 exp.TimeStrToUnix: rename_func("UNIX_TIMESTAMP"), +153 exp.TimeToStr: lambda self, e: f"TO_CHAR({self.sql(e, 'this')}, {self.format_time(e)})", +154 exp.TimeToUnix: rename_func("UNIX_TIMESTAMP"), +155 exp.ToChar: lambda self, e: self.function_fallback_sql(e), +156 exp.TryCast: no_trycast_sql, +157 exp.TsOrDsAdd: lambda self, e: f"DATE_ADD(CAST({self.sql(e, 'this')} AS DATE), {self.sql(exp.Interval(this=e.expression, unit=exp.Var(this='DAY')))})", +158 exp.TsOrDsToDate: ts_or_ds_to_date_sql("drill"), +159 exp.TsOrDiToDi: lambda self, e: f"CAST(SUBSTR(REPLACE(CAST({self.sql(e, 'this')} AS VARCHAR), '-', ''), 1, 8) AS INT)", +160 } +161 +162 def normalize_func(self, name: str) -> str: +163 return name if exp.SAFE_IDENTIFIER_RE.match(name) else f"`{name}`" @@ -497,58 +505,62 @@ Default: "nulls_are_small"
    107    class Generator(generator.Generator):
    -108        TYPE_MAPPING = {
    -109            **generator.Generator.TYPE_MAPPING,  # type: ignore
    -110            exp.DataType.Type.INT: "INTEGER",
    -111            exp.DataType.Type.SMALLINT: "INTEGER",
    -112            exp.DataType.Type.TINYINT: "INTEGER",
    -113            exp.DataType.Type.BINARY: "VARBINARY",
    -114            exp.DataType.Type.TEXT: "VARCHAR",
    -115            exp.DataType.Type.NCHAR: "VARCHAR",
    -116            exp.DataType.Type.TIMESTAMPLTZ: "TIMESTAMP",
    -117            exp.DataType.Type.TIMESTAMPTZ: "TIMESTAMP",
    -118            exp.DataType.Type.DATETIME: "TIMESTAMP",
    -119        }
    -120
    -121        PROPERTIES_LOCATION = {
    -122            **generator.Generator.PROPERTIES_LOCATION,  # type: ignore
    -123            exp.PartitionedByProperty: exp.Properties.Location.POST_SCHEMA,
    -124        }
    -125
    -126        TRANSFORMS = {
    -127            **generator.Generator.TRANSFORMS,  # type: ignore
    -128            exp.CurrentTimestamp: lambda *_: "CURRENT_TIMESTAMP",
    -129            exp.ArrayContains: rename_func("REPEATED_CONTAINS"),
    -130            exp.ArraySize: rename_func("REPEATED_COUNT"),
    -131            exp.Create: create_with_partitions_sql,
    -132            exp.DateAdd: _date_add_sql("ADD"),
    -133            exp.DateStrToDate: datestrtodate_sql,
    -134            exp.DateSub: _date_add_sql("SUB"),
    -135            exp.DateToDi: lambda self, e: f"CAST(TO_DATE({self.sql(e, 'this')}, {Drill.dateint_format}) AS INT)",
    -136            exp.DiToDate: lambda self, e: f"TO_DATE(CAST({self.sql(e, 'this')} AS VARCHAR), {Drill.dateint_format})",
    -137            exp.If: lambda self, e: f"`IF`({self.format_args(e.this, e.args.get('true'), e.args.get('false'))})",
    -138            exp.ILike: lambda self, e: f" {self.sql(e, 'this')} `ILIKE` {self.sql(e, 'expression')}",
    -139            exp.Levenshtein: rename_func("LEVENSHTEIN_DISTANCE"),
    -140            exp.PartitionedByProperty: lambda self, e: f"PARTITION BY {self.sql(e, 'this')}",
    -141            exp.RegexpLike: rename_func("REGEXP_MATCHES"),
    -142            exp.StrPosition: str_position_sql,
    -143            exp.StrToDate: _str_to_date,
    -144            exp.Pow: rename_func("POW"),
    -145            exp.StrToTime: lambda self, e: f"TO_TIMESTAMP({self.sql(e, 'this')}, {self.format_time(e)})",
    -146            exp.TimeStrToDate: lambda self, e: f"CAST({self.sql(e, 'this')} AS DATE)",
    -147            exp.TimeStrToTime: timestrtotime_sql,
    -148            exp.TimeStrToUnix: rename_func("UNIX_TIMESTAMP"),
    -149            exp.TimeToStr: lambda self, e: f"TO_CHAR({self.sql(e, 'this')}, {self.format_time(e)})",
    -150            exp.TimeToUnix: rename_func("UNIX_TIMESTAMP"),
    -151            exp.ToChar: lambda self, e: self.function_fallback_sql(e),
    -152            exp.TryCast: no_trycast_sql,
    -153            exp.TsOrDsAdd: lambda self, e: f"DATE_ADD(CAST({self.sql(e, 'this')} AS DATE), {self.sql(exp.Interval(this=e.expression, unit=exp.Var(this='DAY')))})",
    -154            exp.TsOrDsToDate: ts_or_ds_to_date_sql("drill"),
    -155            exp.TsOrDiToDi: lambda self, e: f"CAST(SUBSTR(REPLACE(CAST({self.sql(e, 'this')} AS VARCHAR), '-', ''), 1, 8) AS INT)",
    -156        }
    -157
    -158        def normalize_func(self, name: str) -> str:
    -159            return name if exp.SAFE_IDENTIFIER_RE.match(name) else f"`{name}`"
    +108        JOIN_HINTS = False
    +109        TABLE_HINTS = False
    +110
    +111        TYPE_MAPPING = {
    +112            **generator.Generator.TYPE_MAPPING,  # type: ignore
    +113            exp.DataType.Type.INT: "INTEGER",
    +114            exp.DataType.Type.SMALLINT: "INTEGER",
    +115            exp.DataType.Type.TINYINT: "INTEGER",
    +116            exp.DataType.Type.BINARY: "VARBINARY",
    +117            exp.DataType.Type.TEXT: "VARCHAR",
    +118            exp.DataType.Type.NCHAR: "VARCHAR",
    +119            exp.DataType.Type.TIMESTAMPLTZ: "TIMESTAMP",
    +120            exp.DataType.Type.TIMESTAMPTZ: "TIMESTAMP",
    +121            exp.DataType.Type.DATETIME: "TIMESTAMP",
    +122        }
    +123
    +124        PROPERTIES_LOCATION = {
    +125            **generator.Generator.PROPERTIES_LOCATION,  # type: ignore
    +126            exp.PartitionedByProperty: exp.Properties.Location.POST_SCHEMA,
    +127            exp.VolatileProperty: exp.Properties.Location.UNSUPPORTED,
    +128        }
    +129
    +130        TRANSFORMS = {
    +131            **generator.Generator.TRANSFORMS,  # type: ignore
    +132            exp.CurrentTimestamp: lambda *_: "CURRENT_TIMESTAMP",
    +133            exp.ArrayContains: rename_func("REPEATED_CONTAINS"),
    +134            exp.ArraySize: rename_func("REPEATED_COUNT"),
    +135            exp.Create: create_with_partitions_sql,
    +136            exp.DateAdd: _date_add_sql("ADD"),
    +137            exp.DateStrToDate: datestrtodate_sql,
    +138            exp.DateSub: _date_add_sql("SUB"),
    +139            exp.DateToDi: lambda self, e: f"CAST(TO_DATE({self.sql(e, 'this')}, {Drill.dateint_format}) AS INT)",
    +140            exp.DiToDate: lambda self, e: f"TO_DATE(CAST({self.sql(e, 'this')} AS VARCHAR), {Drill.dateint_format})",
    +141            exp.If: lambda self, e: f"`IF`({self.format_args(e.this, e.args.get('true'), e.args.get('false'))})",
    +142            exp.ILike: lambda self, e: f" {self.sql(e, 'this')} `ILIKE` {self.sql(e, 'expression')}",
    +143            exp.Levenshtein: rename_func("LEVENSHTEIN_DISTANCE"),
    +144            exp.PartitionedByProperty: lambda self, e: f"PARTITION BY {self.sql(e, 'this')}",
    +145            exp.RegexpLike: rename_func("REGEXP_MATCHES"),
    +146            exp.StrPosition: str_position_sql,
    +147            exp.StrToDate: _str_to_date,
    +148            exp.Pow: rename_func("POW"),
    +149            exp.StrToTime: lambda self, e: f"TO_TIMESTAMP({self.sql(e, 'this')}, {self.format_time(e)})",
    +150            exp.TimeStrToDate: lambda self, e: f"CAST({self.sql(e, 'this')} AS DATE)",
    +151            exp.TimeStrToTime: timestrtotime_sql,
    +152            exp.TimeStrToUnix: rename_func("UNIX_TIMESTAMP"),
    +153            exp.TimeToStr: lambda self, e: f"TO_CHAR({self.sql(e, 'this')}, {self.format_time(e)})",
    +154            exp.TimeToUnix: rename_func("UNIX_TIMESTAMP"),
    +155            exp.ToChar: lambda self, e: self.function_fallback_sql(e),
    +156            exp.TryCast: no_trycast_sql,
    +157            exp.TsOrDsAdd: lambda self, e: f"DATE_ADD(CAST({self.sql(e, 'this')} AS DATE), {self.sql(exp.Interval(this=e.expression, unit=exp.Var(this='DAY')))})",
    +158            exp.TsOrDsToDate: ts_or_ds_to_date_sql("drill"),
    +159            exp.TsOrDiToDi: lambda self, e: f"CAST(SUBSTR(REPLACE(CAST({self.sql(e, 'this')} AS VARCHAR), '-', ''), 1, 8) AS INT)",
    +160        }
    +161
    +162        def normalize_func(self, name: str) -> str:
    +163            return name if exp.SAFE_IDENTIFIER_RE.match(name) else f"`{name}`"
     
    @@ -607,8 +619,8 @@ Default: True -
    158        def normalize_func(self, name: str) -> str:
    -159            return name if exp.SAFE_IDENTIFIER_RE.match(name) else f"`{name}`"
    +            
    162        def normalize_func(self, name: str) -> str:
    +163            return name if exp.SAFE_IDENTIFIER_RE.match(name) else f"`{name}`"
     
    @@ -651,6 +663,7 @@ Default: True
    tablealias_sql
    bitstring_sql
    hexstring_sql
    +
    bytestring_sql
    datatype_sql
    directory_sql
    delete_sql
    @@ -662,6 +675,7 @@ Default: True
    hint_sql
    index_sql
    identifier_sql
    +
    inputoutputformat_sql
    national_sql
    partition_sql
    properties_sql
    @@ -687,6 +701,7 @@ Default: True
    intersect_op
    introducer_sql
    pseudotype_sql
    +
    onconflict_sql
    returning_sql
    rowformatdelimitedproperty_sql
    table_sql
    diff --git a/docs/sqlglot/dialects/duckdb.html b/docs/sqlglot/dialects/duckdb.html index da06284..87d47ec 100644 --- a/docs/sqlglot/dialects/duckdb.html +++ b/docs/sqlglot/dialects/duckdb.html @@ -3,7 +3,7 @@ - + sqlglot.dialects.duckdb API documentation @@ -90,215 +90,224 @@
    8 arrow_json_extract_sql, 9 datestrtodate_sql, 10 format_time_lambda, - 11 no_pivot_sql, - 12 no_properties_sql, - 13 no_safe_divide_sql, - 14 rename_func, - 15 str_position_sql, - 16 str_to_time_sql, - 17 timestamptrunc_sql, - 18 timestrtotime_sql, - 19 ts_or_ds_to_date_sql, - 20) - 21from sqlglot.helper import seq_get - 22from sqlglot.tokens import TokenType - 23 + 11 no_comment_column_constraint_sql, + 12 no_pivot_sql, + 13 no_properties_sql, + 14 no_safe_divide_sql, + 15 rename_func, + 16 str_position_sql, + 17 str_to_time_sql, + 18 timestamptrunc_sql, + 19 timestrtotime_sql, + 20 ts_or_ds_to_date_sql, + 21) + 22from sqlglot.helper import seq_get + 23from sqlglot.tokens import TokenType 24 - 25def _ts_or_ds_add(self, expression): - 26 this = expression.args.get("this") - 27 unit = self.sql(expression, "unit").strip("'") or "DAY" - 28 return f"CAST({this} AS DATE) + {self.sql(exp.Interval(this=expression.expression, unit=unit))}" - 29 + 25 + 26def _ts_or_ds_add(self, expression): + 27 this = self.sql(expression, "this") + 28 unit = self.sql(expression, "unit").strip("'") or "DAY" + 29 return f"CAST({this} AS DATE) + {self.sql(exp.Interval(this=expression.expression, unit=unit))}" 30 - 31def _date_add(self, expression): - 32 this = self.sql(expression, "this") - 33 unit = self.sql(expression, "unit").strip("'") or "DAY" - 34 return f"{this} + {self.sql(exp.Interval(this=expression.expression, unit=unit))}" - 35 + 31 + 32def _date_add(self, expression): + 33 this = self.sql(expression, "this") + 34 unit = self.sql(expression, "unit").strip("'") or "DAY" + 35 return f"{this} + {self.sql(exp.Interval(this=expression.expression, unit=unit))}" 36 - 37def _array_sort_sql(self, expression): - 38 if expression.expression: - 39 self.unsupported("DUCKDB ARRAY_SORT does not support a comparator") - 40 return f"ARRAY_SORT({self.sql(expression, 'this')})" - 41 + 37 + 38def _array_sort_sql(self, expression): + 39 if expression.expression: + 40 self.unsupported("DUCKDB ARRAY_SORT does not support a comparator") + 41 return f"ARRAY_SORT({self.sql(expression, 'this')})" 42 - 43def _sort_array_sql(self, expression): - 44 this = self.sql(expression, "this") - 45 if expression.args.get("asc") == exp.false(): - 46 return f"ARRAY_REVERSE_SORT({this})" - 47 return f"ARRAY_SORT({this})" - 48 + 43 + 44def _sort_array_sql(self, expression): + 45 this = self.sql(expression, "this") + 46 if expression.args.get("asc") == exp.false(): + 47 return f"ARRAY_REVERSE_SORT({this})" + 48 return f"ARRAY_SORT({this})" 49 - 50def _sort_array_reverse(args): - 51 return exp.SortArray(this=seq_get(args, 0), asc=exp.false()) - 52 + 50 + 51def _sort_array_reverse(args): + 52 return exp.SortArray(this=seq_get(args, 0), asc=exp.false()) 53 - 54def _struct_sql(self, expression): - 55 args = [ - 56 f"'{e.name or e.this.name}': {self.sql(e, 'expression')}" for e in expression.expressions - 57 ] - 58 return f"{{{', '.join(args)}}}" - 59 + 54 + 55def _struct_sql(self, expression): + 56 args = [ + 57 f"'{e.name or e.this.name}': {self.sql(e, 'expression')}" for e in expression.expressions + 58 ] + 59 return f"{{{', '.join(args)}}}" 60 - 61def _datatype_sql(self, expression): - 62 if expression.this == exp.DataType.Type.ARRAY: - 63 return f"{self.expressions(expression, flat=True)}[]" - 64 return self.datatype_sql(expression) - 65 + 61 + 62def _datatype_sql(self, expression): + 63 if expression.this == exp.DataType.Type.ARRAY: + 64 return f"{self.expressions(expression, flat=True)}[]" + 65 return self.datatype_sql(expression) 66 - 67def _regexp_extract_sql(self, expression): - 68 bad_args = list(filter(expression.args.get, ("position", "occurrence"))) - 69 if bad_args: - 70 self.unsupported(f"REGEXP_EXTRACT does not support arg(s) {bad_args}") - 71 return self.func( - 72 "REGEXP_EXTRACT", - 73 expression.args.get("this"), - 74 expression.args.get("expression"), - 75 expression.args.get("group"), - 76 ) - 77 + 67 + 68def _regexp_extract_sql(self, expression): + 69 bad_args = list(filter(expression.args.get, ("position", "occurrence"))) + 70 if bad_args: + 71 self.unsupported(f"REGEXP_EXTRACT does not support arg(s) {bad_args}") + 72 return self.func( + 73 "REGEXP_EXTRACT", + 74 expression.args.get("this"), + 75 expression.args.get("expression"), + 76 expression.args.get("group"), + 77 ) 78 - 79class DuckDB(Dialect): - 80 class Tokenizer(tokens.Tokenizer): - 81 KEYWORDS = { - 82 **tokens.Tokenizer.KEYWORDS, - 83 "~": TokenType.RLIKE, - 84 ":=": TokenType.EQ, - 85 "ATTACH": TokenType.COMMAND, - 86 "BINARY": TokenType.VARBINARY, - 87 "BPCHAR": TokenType.TEXT, - 88 "BITSTRING": TokenType.BIT, - 89 "CHAR": TokenType.TEXT, - 90 "CHARACTER VARYING": TokenType.TEXT, - 91 "EXCLUDE": TokenType.EXCEPT, - 92 "INT1": TokenType.TINYINT, - 93 "LOGICAL": TokenType.BOOLEAN, - 94 "NUMERIC": TokenType.DOUBLE, - 95 "SIGNED": TokenType.INT, - 96 "STRING": TokenType.VARCHAR, - 97 "UBIGINT": TokenType.UBIGINT, - 98 "UINTEGER": TokenType.UINT, - 99 "USMALLINT": TokenType.USMALLINT, -100 "UTINYINT": TokenType.UTINYINT, -101 } -102 -103 class Parser(parser.Parser): -104 FUNCTIONS = { -105 **parser.Parser.FUNCTIONS, # type: ignore -106 "APPROX_COUNT_DISTINCT": exp.ApproxDistinct.from_arg_list, -107 "ARRAY_LENGTH": exp.ArraySize.from_arg_list, -108 "ARRAY_SORT": exp.SortArray.from_arg_list, -109 "ARRAY_REVERSE_SORT": _sort_array_reverse, -110 "EPOCH": exp.TimeToUnix.from_arg_list, -111 "EPOCH_MS": lambda args: exp.UnixToTime( -112 this=exp.Div( -113 this=seq_get(args, 0), -114 expression=exp.Literal.number(1000), -115 ) -116 ), -117 "LIST_SORT": exp.SortArray.from_arg_list, -118 "LIST_REVERSE_SORT": _sort_array_reverse, -119 "LIST_VALUE": exp.Array.from_arg_list, -120 "REGEXP_MATCHES": exp.RegexpLike.from_arg_list, -121 "STRFTIME": format_time_lambda(exp.TimeToStr, "duckdb"), -122 "STRPTIME": format_time_lambda(exp.StrToTime, "duckdb"), -123 "STR_SPLIT": exp.Split.from_arg_list, -124 "STRING_SPLIT": exp.Split.from_arg_list, -125 "STRING_TO_ARRAY": exp.Split.from_arg_list, -126 "STR_SPLIT_REGEX": exp.RegexpSplit.from_arg_list, -127 "STRING_SPLIT_REGEX": exp.RegexpSplit.from_arg_list, -128 "STRUCT_PACK": exp.Struct.from_arg_list, -129 "TO_TIMESTAMP": exp.UnixToTime.from_arg_list, -130 "UNNEST": exp.Explode.from_arg_list, -131 } -132 -133 TYPE_TOKENS = { -134 *parser.Parser.TYPE_TOKENS, -135 TokenType.UBIGINT, -136 TokenType.UINT, -137 TokenType.USMALLINT, -138 TokenType.UTINYINT, -139 } -140 -141 class Generator(generator.Generator): -142 STRUCT_DELIMITER = ("(", ")") -143 -144 TRANSFORMS = { -145 **generator.Generator.TRANSFORMS, # type: ignore -146 exp.ApproxDistinct: approx_count_distinct_sql, -147 exp.Array: lambda self, e: self.func("ARRAY", e.expressions[0]) -148 if isinstance(seq_get(e.expressions, 0), exp.Select) -149 else rename_func("LIST_VALUE")(self, e), -150 exp.ArraySize: rename_func("ARRAY_LENGTH"), -151 exp.ArraySort: _array_sort_sql, -152 exp.ArraySum: rename_func("LIST_SUM"), -153 exp.DayOfMonth: rename_func("DAYOFMONTH"), -154 exp.DayOfWeek: rename_func("DAYOFWEEK"), -155 exp.DayOfYear: rename_func("DAYOFYEAR"), -156 exp.DataType: _datatype_sql, -157 exp.DateAdd: _date_add, -158 exp.DateDiff: lambda self, e: self.func( -159 "DATE_DIFF", e.args.get("unit") or exp.Literal.string("day"), e.expression, e.this -160 ), -161 exp.DateStrToDate: datestrtodate_sql, -162 exp.DateToDi: lambda self, e: f"CAST(STRFTIME({self.sql(e, 'this')}, {DuckDB.dateint_format}) AS INT)", -163 exp.DiToDate: lambda self, e: f"CAST(STRPTIME(CAST({self.sql(e, 'this')} AS TEXT), {DuckDB.dateint_format}) AS DATE)", -164 exp.Explode: rename_func("UNNEST"), -165 exp.JSONExtract: arrow_json_extract_sql, -166 exp.JSONExtractScalar: arrow_json_extract_scalar_sql, -167 exp.JSONBExtract: arrow_json_extract_sql, -168 exp.JSONBExtractScalar: arrow_json_extract_scalar_sql, -169 exp.LogicalOr: rename_func("BOOL_OR"), -170 exp.LogicalAnd: rename_func("BOOL_AND"), -171 exp.Pivot: no_pivot_sql, -172 exp.Properties: no_properties_sql, -173 exp.RegexpExtract: _regexp_extract_sql, -174 exp.RegexpLike: rename_func("REGEXP_MATCHES"), -175 exp.RegexpSplit: rename_func("STR_SPLIT_REGEX"), -176 exp.SafeDivide: no_safe_divide_sql, -177 exp.Split: rename_func("STR_SPLIT"), -178 exp.SortArray: _sort_array_sql, -179 exp.StrPosition: str_position_sql, -180 exp.StrToDate: lambda self, e: f"CAST({str_to_time_sql(self, e)} AS DATE)", -181 exp.StrToTime: str_to_time_sql, -182 exp.StrToUnix: lambda self, e: f"EPOCH(STRPTIME({self.sql(e, 'this')}, {self.format_time(e)}))", -183 exp.Struct: _struct_sql, -184 exp.TimestampTrunc: timestamptrunc_sql, -185 exp.TimeStrToDate: lambda self, e: f"CAST({self.sql(e, 'this')} AS DATE)", -186 exp.TimeStrToTime: timestrtotime_sql, -187 exp.TimeStrToUnix: lambda self, e: f"EPOCH(CAST({self.sql(e, 'this')} AS TIMESTAMP))", -188 exp.TimeToStr: lambda self, e: f"STRFTIME({self.sql(e, 'this')}, {self.format_time(e)})", -189 exp.TimeToUnix: rename_func("EPOCH"), -190 exp.TsOrDiToDi: lambda self, e: f"CAST(SUBSTR(REPLACE(CAST({self.sql(e, 'this')} AS TEXT), '-', ''), 1, 8) AS INT)", -191 exp.TsOrDsAdd: _ts_or_ds_add, -192 exp.TsOrDsToDate: ts_or_ds_to_date_sql("duckdb"), -193 exp.UnixToStr: lambda self, e: f"STRFTIME(TO_TIMESTAMP({self.sql(e, 'this')}), {self.format_time(e)})", -194 exp.UnixToTime: rename_func("TO_TIMESTAMP"), -195 exp.UnixToTimeStr: lambda self, e: f"CAST(TO_TIMESTAMP({self.sql(e, 'this')}) AS TEXT)", -196 exp.WeekOfYear: rename_func("WEEKOFYEAR"), -197 } -198 -199 TYPE_MAPPING = { -200 **generator.Generator.TYPE_MAPPING, # type: ignore -201 exp.DataType.Type.BINARY: "BLOB", -202 exp.DataType.Type.CHAR: "TEXT", -203 exp.DataType.Type.FLOAT: "REAL", -204 exp.DataType.Type.NCHAR: "TEXT", -205 exp.DataType.Type.NVARCHAR: "TEXT", -206 exp.DataType.Type.UINT: "UINTEGER", -207 exp.DataType.Type.VARBINARY: "BLOB", -208 exp.DataType.Type.VARCHAR: "TEXT", -209 } -210 -211 STAR_MAPPING = { -212 **generator.Generator.STAR_MAPPING, -213 "except": "EXCLUDE", -214 } -215 -216 LIMIT_FETCH = "LIMIT" -217 -218 def tablesample_sql(self, expression: exp.TableSample, seed_prefix: str = "SEED") -> str: -219 return super().tablesample_sql(expression, seed_prefix="REPEATABLE") + 79 + 80class DuckDB(Dialect): + 81 class Tokenizer(tokens.Tokenizer): + 82 KEYWORDS = { + 83 **tokens.Tokenizer.KEYWORDS, + 84 "~": TokenType.RLIKE, + 85 ":=": TokenType.EQ, + 86 "ATTACH": TokenType.COMMAND, + 87 "BINARY": TokenType.VARBINARY, + 88 "BPCHAR": TokenType.TEXT, + 89 "BITSTRING": TokenType.BIT, + 90 "CHAR": TokenType.TEXT, + 91 "CHARACTER VARYING": TokenType.TEXT, + 92 "EXCLUDE": TokenType.EXCEPT, + 93 "INT1": TokenType.TINYINT, + 94 "LOGICAL": TokenType.BOOLEAN, + 95 "NUMERIC": TokenType.DOUBLE, + 96 "SIGNED": TokenType.INT, + 97 "STRING": TokenType.VARCHAR, + 98 "UBIGINT": TokenType.UBIGINT, + 99 "UINTEGER": TokenType.UINT, +100 "USMALLINT": TokenType.USMALLINT, +101 "UTINYINT": TokenType.UTINYINT, +102 } +103 +104 class Parser(parser.Parser): +105 FUNCTIONS = { +106 **parser.Parser.FUNCTIONS, # type: ignore +107 "APPROX_COUNT_DISTINCT": exp.ApproxDistinct.from_arg_list, +108 "ARRAY_LENGTH": exp.ArraySize.from_arg_list, +109 "ARRAY_SORT": exp.SortArray.from_arg_list, +110 "ARRAY_REVERSE_SORT": _sort_array_reverse, +111 "EPOCH": exp.TimeToUnix.from_arg_list, +112 "EPOCH_MS": lambda args: exp.UnixToTime( +113 this=exp.Div( +114 this=seq_get(args, 0), +115 expression=exp.Literal.number(1000), +116 ) +117 ), +118 "LIST_SORT": exp.SortArray.from_arg_list, +119 "LIST_REVERSE_SORT": _sort_array_reverse, +120 "LIST_VALUE": exp.Array.from_arg_list, +121 "REGEXP_MATCHES": exp.RegexpLike.from_arg_list, +122 "STRFTIME": format_time_lambda(exp.TimeToStr, "duckdb"), +123 "STRPTIME": format_time_lambda(exp.StrToTime, "duckdb"), +124 "STR_SPLIT": exp.Split.from_arg_list, +125 "STRING_SPLIT": exp.Split.from_arg_list, +126 "STRING_TO_ARRAY": exp.Split.from_arg_list, +127 "STR_SPLIT_REGEX": exp.RegexpSplit.from_arg_list, +128 "STRING_SPLIT_REGEX": exp.RegexpSplit.from_arg_list, +129 "STRUCT_PACK": exp.Struct.from_arg_list, +130 "TO_TIMESTAMP": exp.UnixToTime.from_arg_list, +131 "UNNEST": exp.Explode.from_arg_list, +132 } +133 +134 TYPE_TOKENS = { +135 *parser.Parser.TYPE_TOKENS, +136 TokenType.UBIGINT, +137 TokenType.UINT, +138 TokenType.USMALLINT, +139 TokenType.UTINYINT, +140 } +141 +142 class Generator(generator.Generator): +143 JOIN_HINTS = False +144 TABLE_HINTS = False +145 STRUCT_DELIMITER = ("(", ")") +146 +147 TRANSFORMS = { +148 **generator.Generator.TRANSFORMS, # type: ignore +149 exp.ApproxDistinct: approx_count_distinct_sql, +150 exp.Array: lambda self, e: self.func("ARRAY", e.expressions[0]) +151 if isinstance(seq_get(e.expressions, 0), exp.Select) +152 else rename_func("LIST_VALUE")(self, e), +153 exp.ArraySize: rename_func("ARRAY_LENGTH"), +154 exp.ArraySort: _array_sort_sql, +155 exp.ArraySum: rename_func("LIST_SUM"), +156 exp.CommentColumnConstraint: no_comment_column_constraint_sql, +157 exp.DayOfMonth: rename_func("DAYOFMONTH"), +158 exp.DayOfWeek: rename_func("DAYOFWEEK"), +159 exp.DayOfYear: rename_func("DAYOFYEAR"), +160 exp.DataType: _datatype_sql, +161 exp.DateAdd: _date_add, +162 exp.DateDiff: lambda self, e: self.func( +163 "DATE_DIFF", e.args.get("unit") or exp.Literal.string("day"), e.expression, e.this +164 ), +165 exp.DateStrToDate: datestrtodate_sql, +166 exp.DateToDi: lambda self, e: f"CAST(STRFTIME({self.sql(e, 'this')}, {DuckDB.dateint_format}) AS INT)", +167 exp.DiToDate: lambda self, e: f"CAST(STRPTIME(CAST({self.sql(e, 'this')} AS TEXT), {DuckDB.dateint_format}) AS DATE)", +168 exp.Explode: rename_func("UNNEST"), +169 exp.JSONExtract: arrow_json_extract_sql, +170 exp.JSONExtractScalar: arrow_json_extract_scalar_sql, +171 exp.JSONBExtract: arrow_json_extract_sql, +172 exp.JSONBExtractScalar: arrow_json_extract_scalar_sql, +173 exp.LogicalOr: rename_func("BOOL_OR"), +174 exp.LogicalAnd: rename_func("BOOL_AND"), +175 exp.Pivot: no_pivot_sql, +176 exp.Properties: no_properties_sql, +177 exp.RegexpExtract: _regexp_extract_sql, +178 exp.RegexpLike: rename_func("REGEXP_MATCHES"), +179 exp.RegexpSplit: rename_func("STR_SPLIT_REGEX"), +180 exp.SafeDivide: no_safe_divide_sql, +181 exp.Split: rename_func("STR_SPLIT"), +182 exp.SortArray: _sort_array_sql, +183 exp.StrPosition: str_position_sql, +184 exp.StrToDate: lambda self, e: f"CAST({str_to_time_sql(self, e)} AS DATE)", +185 exp.StrToTime: str_to_time_sql, +186 exp.StrToUnix: lambda self, e: f"EPOCH(STRPTIME({self.sql(e, 'this')}, {self.format_time(e)}))", +187 exp.Struct: _struct_sql, +188 exp.TimestampTrunc: timestamptrunc_sql, +189 exp.TimeStrToDate: lambda self, e: f"CAST({self.sql(e, 'this')} AS DATE)", +190 exp.TimeStrToTime: timestrtotime_sql, +191 exp.TimeStrToUnix: lambda self, e: f"EPOCH(CAST({self.sql(e, 'this')} AS TIMESTAMP))", +192 exp.TimeToStr: lambda self, e: f"STRFTIME({self.sql(e, 'this')}, {self.format_time(e)})", +193 exp.TimeToUnix: rename_func("EPOCH"), +194 exp.TsOrDiToDi: lambda self, e: f"CAST(SUBSTR(REPLACE(CAST({self.sql(e, 'this')} AS TEXT), '-', ''), 1, 8) AS INT)", +195 exp.TsOrDsAdd: _ts_or_ds_add, +196 exp.TsOrDsToDate: ts_or_ds_to_date_sql("duckdb"), +197 exp.UnixToStr: lambda self, e: f"STRFTIME(TO_TIMESTAMP({self.sql(e, 'this')}), {self.format_time(e)})", +198 exp.UnixToTime: rename_func("TO_TIMESTAMP"), +199 exp.UnixToTimeStr: lambda self, e: f"CAST(TO_TIMESTAMP({self.sql(e, 'this')}) AS TEXT)", +200 exp.WeekOfYear: rename_func("WEEKOFYEAR"), +201 } +202 +203 TYPE_MAPPING = { +204 **generator.Generator.TYPE_MAPPING, # type: ignore +205 exp.DataType.Type.BINARY: "BLOB", +206 exp.DataType.Type.CHAR: "TEXT", +207 exp.DataType.Type.FLOAT: "REAL", +208 exp.DataType.Type.NCHAR: "TEXT", +209 exp.DataType.Type.NVARCHAR: "TEXT", +210 exp.DataType.Type.UINT: "UINTEGER", +211 exp.DataType.Type.VARBINARY: "BLOB", +212 exp.DataType.Type.VARCHAR: "TEXT", +213 } +214 +215 STAR_MAPPING = { +216 **generator.Generator.STAR_MAPPING, +217 "except": "EXCLUDE", +218 } +219 +220 PROPERTIES_LOCATION = { +221 **generator.Generator.PROPERTIES_LOCATION, # type: ignore +222 exp.VolatileProperty: exp.Properties.Location.UNSUPPORTED, +223 } +224 +225 LIMIT_FETCH = "LIMIT" +226 +227 def tablesample_sql(self, expression: exp.TableSample, seed_prefix: str = "SEED") -> str: +228 return super().tablesample_sql(expression, seed_prefix="REPEATABLE")
    @@ -314,147 +323,155 @@ -
     80class DuckDB(Dialect):
    - 81    class Tokenizer(tokens.Tokenizer):
    - 82        KEYWORDS = {
    - 83            **tokens.Tokenizer.KEYWORDS,
    - 84            "~": TokenType.RLIKE,
    - 85            ":=": TokenType.EQ,
    - 86            "ATTACH": TokenType.COMMAND,
    - 87            "BINARY": TokenType.VARBINARY,
    - 88            "BPCHAR": TokenType.TEXT,
    - 89            "BITSTRING": TokenType.BIT,
    - 90            "CHAR": TokenType.TEXT,
    - 91            "CHARACTER VARYING": TokenType.TEXT,
    - 92            "EXCLUDE": TokenType.EXCEPT,
    - 93            "INT1": TokenType.TINYINT,
    - 94            "LOGICAL": TokenType.BOOLEAN,
    - 95            "NUMERIC": TokenType.DOUBLE,
    - 96            "SIGNED": TokenType.INT,
    - 97            "STRING": TokenType.VARCHAR,
    - 98            "UBIGINT": TokenType.UBIGINT,
    - 99            "UINTEGER": TokenType.UINT,
    -100            "USMALLINT": TokenType.USMALLINT,
    -101            "UTINYINT": TokenType.UTINYINT,
    -102        }
    -103
    -104    class Parser(parser.Parser):
    -105        FUNCTIONS = {
    -106            **parser.Parser.FUNCTIONS,  # type: ignore
    -107            "APPROX_COUNT_DISTINCT": exp.ApproxDistinct.from_arg_list,
    -108            "ARRAY_LENGTH": exp.ArraySize.from_arg_list,
    -109            "ARRAY_SORT": exp.SortArray.from_arg_list,
    -110            "ARRAY_REVERSE_SORT": _sort_array_reverse,
    -111            "EPOCH": exp.TimeToUnix.from_arg_list,
    -112            "EPOCH_MS": lambda args: exp.UnixToTime(
    -113                this=exp.Div(
    -114                    this=seq_get(args, 0),
    -115                    expression=exp.Literal.number(1000),
    -116                )
    -117            ),
    -118            "LIST_SORT": exp.SortArray.from_arg_list,
    -119            "LIST_REVERSE_SORT": _sort_array_reverse,
    -120            "LIST_VALUE": exp.Array.from_arg_list,
    -121            "REGEXP_MATCHES": exp.RegexpLike.from_arg_list,
    -122            "STRFTIME": format_time_lambda(exp.TimeToStr, "duckdb"),
    -123            "STRPTIME": format_time_lambda(exp.StrToTime, "duckdb"),
    -124            "STR_SPLIT": exp.Split.from_arg_list,
    -125            "STRING_SPLIT": exp.Split.from_arg_list,
    -126            "STRING_TO_ARRAY": exp.Split.from_arg_list,
    -127            "STR_SPLIT_REGEX": exp.RegexpSplit.from_arg_list,
    -128            "STRING_SPLIT_REGEX": exp.RegexpSplit.from_arg_list,
    -129            "STRUCT_PACK": exp.Struct.from_arg_list,
    -130            "TO_TIMESTAMP": exp.UnixToTime.from_arg_list,
    -131            "UNNEST": exp.Explode.from_arg_list,
    -132        }
    -133
    -134        TYPE_TOKENS = {
    -135            *parser.Parser.TYPE_TOKENS,
    -136            TokenType.UBIGINT,
    -137            TokenType.UINT,
    -138            TokenType.USMALLINT,
    -139            TokenType.UTINYINT,
    -140        }
    -141
    -142    class Generator(generator.Generator):
    -143        STRUCT_DELIMITER = ("(", ")")
    -144
    -145        TRANSFORMS = {
    -146            **generator.Generator.TRANSFORMS,  # type: ignore
    -147            exp.ApproxDistinct: approx_count_distinct_sql,
    -148            exp.Array: lambda self, e: self.func("ARRAY", e.expressions[0])
    -149            if isinstance(seq_get(e.expressions, 0), exp.Select)
    -150            else rename_func("LIST_VALUE")(self, e),
    -151            exp.ArraySize: rename_func("ARRAY_LENGTH"),
    -152            exp.ArraySort: _array_sort_sql,
    -153            exp.ArraySum: rename_func("LIST_SUM"),
    -154            exp.DayOfMonth: rename_func("DAYOFMONTH"),
    -155            exp.DayOfWeek: rename_func("DAYOFWEEK"),
    -156            exp.DayOfYear: rename_func("DAYOFYEAR"),
    -157            exp.DataType: _datatype_sql,
    -158            exp.DateAdd: _date_add,
    -159            exp.DateDiff: lambda self, e: self.func(
    -160                "DATE_DIFF", e.args.get("unit") or exp.Literal.string("day"), e.expression, e.this
    -161            ),
    -162            exp.DateStrToDate: datestrtodate_sql,
    -163            exp.DateToDi: lambda self, e: f"CAST(STRFTIME({self.sql(e, 'this')}, {DuckDB.dateint_format}) AS INT)",
    -164            exp.DiToDate: lambda self, e: f"CAST(STRPTIME(CAST({self.sql(e, 'this')} AS TEXT), {DuckDB.dateint_format}) AS DATE)",
    -165            exp.Explode: rename_func("UNNEST"),
    -166            exp.JSONExtract: arrow_json_extract_sql,
    -167            exp.JSONExtractScalar: arrow_json_extract_scalar_sql,
    -168            exp.JSONBExtract: arrow_json_extract_sql,
    -169            exp.JSONBExtractScalar: arrow_json_extract_scalar_sql,
    -170            exp.LogicalOr: rename_func("BOOL_OR"),
    -171            exp.LogicalAnd: rename_func("BOOL_AND"),
    -172            exp.Pivot: no_pivot_sql,
    -173            exp.Properties: no_properties_sql,
    -174            exp.RegexpExtract: _regexp_extract_sql,
    -175            exp.RegexpLike: rename_func("REGEXP_MATCHES"),
    -176            exp.RegexpSplit: rename_func("STR_SPLIT_REGEX"),
    -177            exp.SafeDivide: no_safe_divide_sql,
    -178            exp.Split: rename_func("STR_SPLIT"),
    -179            exp.SortArray: _sort_array_sql,
    -180            exp.StrPosition: str_position_sql,
    -181            exp.StrToDate: lambda self, e: f"CAST({str_to_time_sql(self, e)} AS DATE)",
    -182            exp.StrToTime: str_to_time_sql,
    -183            exp.StrToUnix: lambda self, e: f"EPOCH(STRPTIME({self.sql(e, 'this')}, {self.format_time(e)}))",
    -184            exp.Struct: _struct_sql,
    -185            exp.TimestampTrunc: timestamptrunc_sql,
    -186            exp.TimeStrToDate: lambda self, e: f"CAST({self.sql(e, 'this')} AS DATE)",
    -187            exp.TimeStrToTime: timestrtotime_sql,
    -188            exp.TimeStrToUnix: lambda self, e: f"EPOCH(CAST({self.sql(e, 'this')} AS TIMESTAMP))",
    -189            exp.TimeToStr: lambda self, e: f"STRFTIME({self.sql(e, 'this')}, {self.format_time(e)})",
    -190            exp.TimeToUnix: rename_func("EPOCH"),
    -191            exp.TsOrDiToDi: lambda self, e: f"CAST(SUBSTR(REPLACE(CAST({self.sql(e, 'this')} AS TEXT), '-', ''), 1, 8) AS INT)",
    -192            exp.TsOrDsAdd: _ts_or_ds_add,
    -193            exp.TsOrDsToDate: ts_or_ds_to_date_sql("duckdb"),
    -194            exp.UnixToStr: lambda self, e: f"STRFTIME(TO_TIMESTAMP({self.sql(e, 'this')}), {self.format_time(e)})",
    -195            exp.UnixToTime: rename_func("TO_TIMESTAMP"),
    -196            exp.UnixToTimeStr: lambda self, e: f"CAST(TO_TIMESTAMP({self.sql(e, 'this')}) AS TEXT)",
    -197            exp.WeekOfYear: rename_func("WEEKOFYEAR"),
    -198        }
    -199
    -200        TYPE_MAPPING = {
    -201            **generator.Generator.TYPE_MAPPING,  # type: ignore
    -202            exp.DataType.Type.BINARY: "BLOB",
    -203            exp.DataType.Type.CHAR: "TEXT",
    -204            exp.DataType.Type.FLOAT: "REAL",
    -205            exp.DataType.Type.NCHAR: "TEXT",
    -206            exp.DataType.Type.NVARCHAR: "TEXT",
    -207            exp.DataType.Type.UINT: "UINTEGER",
    -208            exp.DataType.Type.VARBINARY: "BLOB",
    -209            exp.DataType.Type.VARCHAR: "TEXT",
    -210        }
    -211
    -212        STAR_MAPPING = {
    -213            **generator.Generator.STAR_MAPPING,
    -214            "except": "EXCLUDE",
    -215        }
    -216
    -217        LIMIT_FETCH = "LIMIT"
    -218
    -219        def tablesample_sql(self, expression: exp.TableSample, seed_prefix: str = "SEED") -> str:
    -220            return super().tablesample_sql(expression, seed_prefix="REPEATABLE")
    +            
     81class DuckDB(Dialect):
    + 82    class Tokenizer(tokens.Tokenizer):
    + 83        KEYWORDS = {
    + 84            **tokens.Tokenizer.KEYWORDS,
    + 85            "~": TokenType.RLIKE,
    + 86            ":=": TokenType.EQ,
    + 87            "ATTACH": TokenType.COMMAND,
    + 88            "BINARY": TokenType.VARBINARY,
    + 89            "BPCHAR": TokenType.TEXT,
    + 90            "BITSTRING": TokenType.BIT,
    + 91            "CHAR": TokenType.TEXT,
    + 92            "CHARACTER VARYING": TokenType.TEXT,
    + 93            "EXCLUDE": TokenType.EXCEPT,
    + 94            "INT1": TokenType.TINYINT,
    + 95            "LOGICAL": TokenType.BOOLEAN,
    + 96            "NUMERIC": TokenType.DOUBLE,
    + 97            "SIGNED": TokenType.INT,
    + 98            "STRING": TokenType.VARCHAR,
    + 99            "UBIGINT": TokenType.UBIGINT,
    +100            "UINTEGER": TokenType.UINT,
    +101            "USMALLINT": TokenType.USMALLINT,
    +102            "UTINYINT": TokenType.UTINYINT,
    +103        }
    +104
    +105    class Parser(parser.Parser):
    +106        FUNCTIONS = {
    +107            **parser.Parser.FUNCTIONS,  # type: ignore
    +108            "APPROX_COUNT_DISTINCT": exp.ApproxDistinct.from_arg_list,
    +109            "ARRAY_LENGTH": exp.ArraySize.from_arg_list,
    +110            "ARRAY_SORT": exp.SortArray.from_arg_list,
    +111            "ARRAY_REVERSE_SORT": _sort_array_reverse,
    +112            "EPOCH": exp.TimeToUnix.from_arg_list,
    +113            "EPOCH_MS": lambda args: exp.UnixToTime(
    +114                this=exp.Div(
    +115                    this=seq_get(args, 0),
    +116                    expression=exp.Literal.number(1000),
    +117                )
    +118            ),
    +119            "LIST_SORT": exp.SortArray.from_arg_list,
    +120            "LIST_REVERSE_SORT": _sort_array_reverse,
    +121            "LIST_VALUE": exp.Array.from_arg_list,
    +122            "REGEXP_MATCHES": exp.RegexpLike.from_arg_list,
    +123            "STRFTIME": format_time_lambda(exp.TimeToStr, "duckdb"),
    +124            "STRPTIME": format_time_lambda(exp.StrToTime, "duckdb"),
    +125            "STR_SPLIT": exp.Split.from_arg_list,
    +126            "STRING_SPLIT": exp.Split.from_arg_list,
    +127            "STRING_TO_ARRAY": exp.Split.from_arg_list,
    +128            "STR_SPLIT_REGEX": exp.RegexpSplit.from_arg_list,
    +129            "STRING_SPLIT_REGEX": exp.RegexpSplit.from_arg_list,
    +130            "STRUCT_PACK": exp.Struct.from_arg_list,
    +131            "TO_TIMESTAMP": exp.UnixToTime.from_arg_list,
    +132            "UNNEST": exp.Explode.from_arg_list,
    +133        }
    +134
    +135        TYPE_TOKENS = {
    +136            *parser.Parser.TYPE_TOKENS,
    +137            TokenType.UBIGINT,
    +138            TokenType.UINT,
    +139            TokenType.USMALLINT,
    +140            TokenType.UTINYINT,
    +141        }
    +142
    +143    class Generator(generator.Generator):
    +144        JOIN_HINTS = False
    +145        TABLE_HINTS = False
    +146        STRUCT_DELIMITER = ("(", ")")
    +147
    +148        TRANSFORMS = {
    +149            **generator.Generator.TRANSFORMS,  # type: ignore
    +150            exp.ApproxDistinct: approx_count_distinct_sql,
    +151            exp.Array: lambda self, e: self.func("ARRAY", e.expressions[0])
    +152            if isinstance(seq_get(e.expressions, 0), exp.Select)
    +153            else rename_func("LIST_VALUE")(self, e),
    +154            exp.ArraySize: rename_func("ARRAY_LENGTH"),
    +155            exp.ArraySort: _array_sort_sql,
    +156            exp.ArraySum: rename_func("LIST_SUM"),
    +157            exp.CommentColumnConstraint: no_comment_column_constraint_sql,
    +158            exp.DayOfMonth: rename_func("DAYOFMONTH"),
    +159            exp.DayOfWeek: rename_func("DAYOFWEEK"),
    +160            exp.DayOfYear: rename_func("DAYOFYEAR"),
    +161            exp.DataType: _datatype_sql,
    +162            exp.DateAdd: _date_add,
    +163            exp.DateDiff: lambda self, e: self.func(
    +164                "DATE_DIFF", e.args.get("unit") or exp.Literal.string("day"), e.expression, e.this
    +165            ),
    +166            exp.DateStrToDate: datestrtodate_sql,
    +167            exp.DateToDi: lambda self, e: f"CAST(STRFTIME({self.sql(e, 'this')}, {DuckDB.dateint_format}) AS INT)",
    +168            exp.DiToDate: lambda self, e: f"CAST(STRPTIME(CAST({self.sql(e, 'this')} AS TEXT), {DuckDB.dateint_format}) AS DATE)",
    +169            exp.Explode: rename_func("UNNEST"),
    +170            exp.JSONExtract: arrow_json_extract_sql,
    +171            exp.JSONExtractScalar: arrow_json_extract_scalar_sql,
    +172            exp.JSONBExtract: arrow_json_extract_sql,
    +173            exp.JSONBExtractScalar: arrow_json_extract_scalar_sql,
    +174            exp.LogicalOr: rename_func("BOOL_OR"),
    +175            exp.LogicalAnd: rename_func("BOOL_AND"),
    +176            exp.Pivot: no_pivot_sql,
    +177            exp.Properties: no_properties_sql,
    +178            exp.RegexpExtract: _regexp_extract_sql,
    +179            exp.RegexpLike: rename_func("REGEXP_MATCHES"),
    +180            exp.RegexpSplit: rename_func("STR_SPLIT_REGEX"),
    +181            exp.SafeDivide: no_safe_divide_sql,
    +182            exp.Split: rename_func("STR_SPLIT"),
    +183            exp.SortArray: _sort_array_sql,
    +184            exp.StrPosition: str_position_sql,
    +185            exp.StrToDate: lambda self, e: f"CAST({str_to_time_sql(self, e)} AS DATE)",
    +186            exp.StrToTime: str_to_time_sql,
    +187            exp.StrToUnix: lambda self, e: f"EPOCH(STRPTIME({self.sql(e, 'this')}, {self.format_time(e)}))",
    +188            exp.Struct: _struct_sql,
    +189            exp.TimestampTrunc: timestamptrunc_sql,
    +190            exp.TimeStrToDate: lambda self, e: f"CAST({self.sql(e, 'this')} AS DATE)",
    +191            exp.TimeStrToTime: timestrtotime_sql,
    +192            exp.TimeStrToUnix: lambda self, e: f"EPOCH(CAST({self.sql(e, 'this')} AS TIMESTAMP))",
    +193            exp.TimeToStr: lambda self, e: f"STRFTIME({self.sql(e, 'this')}, {self.format_time(e)})",
    +194            exp.TimeToUnix: rename_func("EPOCH"),
    +195            exp.TsOrDiToDi: lambda self, e: f"CAST(SUBSTR(REPLACE(CAST({self.sql(e, 'this')} AS TEXT), '-', ''), 1, 8) AS INT)",
    +196            exp.TsOrDsAdd: _ts_or_ds_add,
    +197            exp.TsOrDsToDate: ts_or_ds_to_date_sql("duckdb"),
    +198            exp.UnixToStr: lambda self, e: f"STRFTIME(TO_TIMESTAMP({self.sql(e, 'this')}), {self.format_time(e)})",
    +199            exp.UnixToTime: rename_func("TO_TIMESTAMP"),
    +200            exp.UnixToTimeStr: lambda self, e: f"CAST(TO_TIMESTAMP({self.sql(e, 'this')}) AS TEXT)",
    +201            exp.WeekOfYear: rename_func("WEEKOFYEAR"),
    +202        }
    +203
    +204        TYPE_MAPPING = {
    +205            **generator.Generator.TYPE_MAPPING,  # type: ignore
    +206            exp.DataType.Type.BINARY: "BLOB",
    +207            exp.DataType.Type.CHAR: "TEXT",
    +208            exp.DataType.Type.FLOAT: "REAL",
    +209            exp.DataType.Type.NCHAR: "TEXT",
    +210            exp.DataType.Type.NVARCHAR: "TEXT",
    +211            exp.DataType.Type.UINT: "UINTEGER",
    +212            exp.DataType.Type.VARBINARY: "BLOB",
    +213            exp.DataType.Type.VARCHAR: "TEXT",
    +214        }
    +215
    +216        STAR_MAPPING = {
    +217            **generator.Generator.STAR_MAPPING,
    +218            "except": "EXCLUDE",
    +219        }
    +220
    +221        PROPERTIES_LOCATION = {
    +222            **generator.Generator.PROPERTIES_LOCATION,  # type: ignore
    +223            exp.VolatileProperty: exp.Properties.Location.UNSUPPORTED,
    +224        }
    +225
    +226        LIMIT_FETCH = "LIMIT"
    +227
    +228        def tablesample_sql(self, expression: exp.TableSample, seed_prefix: str = "SEED") -> str:
    +229            return super().tablesample_sql(expression, seed_prefix="REPEATABLE")
     
    @@ -489,28 +506,28 @@
    -
     81    class Tokenizer(tokens.Tokenizer):
    - 82        KEYWORDS = {
    - 83            **tokens.Tokenizer.KEYWORDS,
    - 84            "~": TokenType.RLIKE,
    - 85            ":=": TokenType.EQ,
    - 86            "ATTACH": TokenType.COMMAND,
    - 87            "BINARY": TokenType.VARBINARY,
    - 88            "BPCHAR": TokenType.TEXT,
    - 89            "BITSTRING": TokenType.BIT,
    - 90            "CHAR": TokenType.TEXT,
    - 91            "CHARACTER VARYING": TokenType.TEXT,
    - 92            "EXCLUDE": TokenType.EXCEPT,
    - 93            "INT1": TokenType.TINYINT,
    - 94            "LOGICAL": TokenType.BOOLEAN,
    - 95            "NUMERIC": TokenType.DOUBLE,
    - 96            "SIGNED": TokenType.INT,
    - 97            "STRING": TokenType.VARCHAR,
    - 98            "UBIGINT": TokenType.UBIGINT,
    - 99            "UINTEGER": TokenType.UINT,
    -100            "USMALLINT": TokenType.USMALLINT,
    -101            "UTINYINT": TokenType.UTINYINT,
    -102        }
    +            
     82    class Tokenizer(tokens.Tokenizer):
    + 83        KEYWORDS = {
    + 84            **tokens.Tokenizer.KEYWORDS,
    + 85            "~": TokenType.RLIKE,
    + 86            ":=": TokenType.EQ,
    + 87            "ATTACH": TokenType.COMMAND,
    + 88            "BINARY": TokenType.VARBINARY,
    + 89            "BPCHAR": TokenType.TEXT,
    + 90            "BITSTRING": TokenType.BIT,
    + 91            "CHAR": TokenType.TEXT,
    + 92            "CHARACTER VARYING": TokenType.TEXT,
    + 93            "EXCLUDE": TokenType.EXCEPT,
    + 94            "INT1": TokenType.TINYINT,
    + 95            "LOGICAL": TokenType.BOOLEAN,
    + 96            "NUMERIC": TokenType.DOUBLE,
    + 97            "SIGNED": TokenType.INT,
    + 98            "STRING": TokenType.VARCHAR,
    + 99            "UBIGINT": TokenType.UBIGINT,
    +100            "UINTEGER": TokenType.UINT,
    +101            "USMALLINT": TokenType.USMALLINT,
    +102            "UTINYINT": TokenType.UTINYINT,
    +103        }
     
    @@ -538,43 +555,43 @@
    -
    104    class Parser(parser.Parser):
    -105        FUNCTIONS = {
    -106            **parser.Parser.FUNCTIONS,  # type: ignore
    -107            "APPROX_COUNT_DISTINCT": exp.ApproxDistinct.from_arg_list,
    -108            "ARRAY_LENGTH": exp.ArraySize.from_arg_list,
    -109            "ARRAY_SORT": exp.SortArray.from_arg_list,
    -110            "ARRAY_REVERSE_SORT": _sort_array_reverse,
    -111            "EPOCH": exp.TimeToUnix.from_arg_list,
    -112            "EPOCH_MS": lambda args: exp.UnixToTime(
    -113                this=exp.Div(
    -114                    this=seq_get(args, 0),
    -115                    expression=exp.Literal.number(1000),
    -116                )
    -117            ),
    -118            "LIST_SORT": exp.SortArray.from_arg_list,
    -119            "LIST_REVERSE_SORT": _sort_array_reverse,
    -120            "LIST_VALUE": exp.Array.from_arg_list,
    -121            "REGEXP_MATCHES": exp.RegexpLike.from_arg_list,
    -122            "STRFTIME": format_time_lambda(exp.TimeToStr, "duckdb"),
    -123            "STRPTIME": format_time_lambda(exp.StrToTime, "duckdb"),
    -124            "STR_SPLIT": exp.Split.from_arg_list,
    -125            "STRING_SPLIT": exp.Split.from_arg_list,
    -126            "STRING_TO_ARRAY": exp.Split.from_arg_list,
    -127            "STR_SPLIT_REGEX": exp.RegexpSplit.from_arg_list,
    -128            "STRING_SPLIT_REGEX": exp.RegexpSplit.from_arg_list,
    -129            "STRUCT_PACK": exp.Struct.from_arg_list,
    -130            "TO_TIMESTAMP": exp.UnixToTime.from_arg_list,
    -131            "UNNEST": exp.Explode.from_arg_list,
    -132        }
    -133
    -134        TYPE_TOKENS = {
    -135            *parser.Parser.TYPE_TOKENS,
    -136            TokenType.UBIGINT,
    -137            TokenType.UINT,
    -138            TokenType.USMALLINT,
    -139            TokenType.UTINYINT,
    -140        }
    +            
    105    class Parser(parser.Parser):
    +106        FUNCTIONS = {
    +107            **parser.Parser.FUNCTIONS,  # type: ignore
    +108            "APPROX_COUNT_DISTINCT": exp.ApproxDistinct.from_arg_list,
    +109            "ARRAY_LENGTH": exp.ArraySize.from_arg_list,
    +110            "ARRAY_SORT": exp.SortArray.from_arg_list,
    +111            "ARRAY_REVERSE_SORT": _sort_array_reverse,
    +112            "EPOCH": exp.TimeToUnix.from_arg_list,
    +113            "EPOCH_MS": lambda args: exp.UnixToTime(
    +114                this=exp.Div(
    +115                    this=seq_get(args, 0),
    +116                    expression=exp.Literal.number(1000),
    +117                )
    +118            ),
    +119            "LIST_SORT": exp.SortArray.from_arg_list,
    +120            "LIST_REVERSE_SORT": _sort_array_reverse,
    +121            "LIST_VALUE": exp.Array.from_arg_list,
    +122            "REGEXP_MATCHES": exp.RegexpLike.from_arg_list,
    +123            "STRFTIME": format_time_lambda(exp.TimeToStr, "duckdb"),
    +124            "STRPTIME": format_time_lambda(exp.StrToTime, "duckdb"),
    +125            "STR_SPLIT": exp.Split.from_arg_list,
    +126            "STRING_SPLIT": exp.Split.from_arg_list,
    +127            "STRING_TO_ARRAY": exp.Split.from_arg_list,
    +128            "STR_SPLIT_REGEX": exp.RegexpSplit.from_arg_list,
    +129            "STRING_SPLIT_REGEX": exp.RegexpSplit.from_arg_list,
    +130            "STRUCT_PACK": exp.Struct.from_arg_list,
    +131            "TO_TIMESTAMP": exp.UnixToTime.from_arg_list,
    +132            "UNNEST": exp.Explode.from_arg_list,
    +133        }
    +134
    +135        TYPE_TOKENS = {
    +136            *parser.Parser.TYPE_TOKENS,
    +137            TokenType.UBIGINT,
    +138            TokenType.UINT,
    +139            TokenType.USMALLINT,
    +140            TokenType.UTINYINT,
    +141        }
     
    @@ -631,85 +648,93 @@ Default: "nulls_are_small"
    -
    142    class Generator(generator.Generator):
    -143        STRUCT_DELIMITER = ("(", ")")
    -144
    -145        TRANSFORMS = {
    -146            **generator.Generator.TRANSFORMS,  # type: ignore
    -147            exp.ApproxDistinct: approx_count_distinct_sql,
    -148            exp.Array: lambda self, e: self.func("ARRAY", e.expressions[0])
    -149            if isinstance(seq_get(e.expressions, 0), exp.Select)
    -150            else rename_func("LIST_VALUE")(self, e),
    -151            exp.ArraySize: rename_func("ARRAY_LENGTH"),
    -152            exp.ArraySort: _array_sort_sql,
    -153            exp.ArraySum: rename_func("LIST_SUM"),
    -154            exp.DayOfMonth: rename_func("DAYOFMONTH"),
    -155            exp.DayOfWeek: rename_func("DAYOFWEEK"),
    -156            exp.DayOfYear: rename_func("DAYOFYEAR"),
    -157            exp.DataType: _datatype_sql,
    -158            exp.DateAdd: _date_add,
    -159            exp.DateDiff: lambda self, e: self.func(
    -160                "DATE_DIFF", e.args.get("unit") or exp.Literal.string("day"), e.expression, e.this
    -161            ),
    -162            exp.DateStrToDate: datestrtodate_sql,
    -163            exp.DateToDi: lambda self, e: f"CAST(STRFTIME({self.sql(e, 'this')}, {DuckDB.dateint_format}) AS INT)",
    -164            exp.DiToDate: lambda self, e: f"CAST(STRPTIME(CAST({self.sql(e, 'this')} AS TEXT), {DuckDB.dateint_format}) AS DATE)",
    -165            exp.Explode: rename_func("UNNEST"),
    -166            exp.JSONExtract: arrow_json_extract_sql,
    -167            exp.JSONExtractScalar: arrow_json_extract_scalar_sql,
    -168            exp.JSONBExtract: arrow_json_extract_sql,
    -169            exp.JSONBExtractScalar: arrow_json_extract_scalar_sql,
    -170            exp.LogicalOr: rename_func("BOOL_OR"),
    -171            exp.LogicalAnd: rename_func("BOOL_AND"),
    -172            exp.Pivot: no_pivot_sql,
    -173            exp.Properties: no_properties_sql,
    -174            exp.RegexpExtract: _regexp_extract_sql,
    -175            exp.RegexpLike: rename_func("REGEXP_MATCHES"),
    -176            exp.RegexpSplit: rename_func("STR_SPLIT_REGEX"),
    -177            exp.SafeDivide: no_safe_divide_sql,
    -178            exp.Split: rename_func("STR_SPLIT"),
    -179            exp.SortArray: _sort_array_sql,
    -180            exp.StrPosition: str_position_sql,
    -181            exp.StrToDate: lambda self, e: f"CAST({str_to_time_sql(self, e)} AS DATE)",
    -182            exp.StrToTime: str_to_time_sql,
    -183            exp.StrToUnix: lambda self, e: f"EPOCH(STRPTIME({self.sql(e, 'this')}, {self.format_time(e)}))",
    -184            exp.Struct: _struct_sql,
    -185            exp.TimestampTrunc: timestamptrunc_sql,
    -186            exp.TimeStrToDate: lambda self, e: f"CAST({self.sql(e, 'this')} AS DATE)",
    -187            exp.TimeStrToTime: timestrtotime_sql,
    -188            exp.TimeStrToUnix: lambda self, e: f"EPOCH(CAST({self.sql(e, 'this')} AS TIMESTAMP))",
    -189            exp.TimeToStr: lambda self, e: f"STRFTIME({self.sql(e, 'this')}, {self.format_time(e)})",
    -190            exp.TimeToUnix: rename_func("EPOCH"),
    -191            exp.TsOrDiToDi: lambda self, e: f"CAST(SUBSTR(REPLACE(CAST({self.sql(e, 'this')} AS TEXT), '-', ''), 1, 8) AS INT)",
    -192            exp.TsOrDsAdd: _ts_or_ds_add,
    -193            exp.TsOrDsToDate: ts_or_ds_to_date_sql("duckdb"),
    -194            exp.UnixToStr: lambda self, e: f"STRFTIME(TO_TIMESTAMP({self.sql(e, 'this')}), {self.format_time(e)})",
    -195            exp.UnixToTime: rename_func("TO_TIMESTAMP"),
    -196            exp.UnixToTimeStr: lambda self, e: f"CAST(TO_TIMESTAMP({self.sql(e, 'this')}) AS TEXT)",
    -197            exp.WeekOfYear: rename_func("WEEKOFYEAR"),
    -198        }
    -199
    -200        TYPE_MAPPING = {
    -201            **generator.Generator.TYPE_MAPPING,  # type: ignore
    -202            exp.DataType.Type.BINARY: "BLOB",
    -203            exp.DataType.Type.CHAR: "TEXT",
    -204            exp.DataType.Type.FLOAT: "REAL",
    -205            exp.DataType.Type.NCHAR: "TEXT",
    -206            exp.DataType.Type.NVARCHAR: "TEXT",
    -207            exp.DataType.Type.UINT: "UINTEGER",
    -208            exp.DataType.Type.VARBINARY: "BLOB",
    -209            exp.DataType.Type.VARCHAR: "TEXT",
    -210        }
    -211
    -212        STAR_MAPPING = {
    -213            **generator.Generator.STAR_MAPPING,
    -214            "except": "EXCLUDE",
    -215        }
    -216
    -217        LIMIT_FETCH = "LIMIT"
    -218
    -219        def tablesample_sql(self, expression: exp.TableSample, seed_prefix: str = "SEED") -> str:
    -220            return super().tablesample_sql(expression, seed_prefix="REPEATABLE")
    +            
    143    class Generator(generator.Generator):
    +144        JOIN_HINTS = False
    +145        TABLE_HINTS = False
    +146        STRUCT_DELIMITER = ("(", ")")
    +147
    +148        TRANSFORMS = {
    +149            **generator.Generator.TRANSFORMS,  # type: ignore
    +150            exp.ApproxDistinct: approx_count_distinct_sql,
    +151            exp.Array: lambda self, e: self.func("ARRAY", e.expressions[0])
    +152            if isinstance(seq_get(e.expressions, 0), exp.Select)
    +153            else rename_func("LIST_VALUE")(self, e),
    +154            exp.ArraySize: rename_func("ARRAY_LENGTH"),
    +155            exp.ArraySort: _array_sort_sql,
    +156            exp.ArraySum: rename_func("LIST_SUM"),
    +157            exp.CommentColumnConstraint: no_comment_column_constraint_sql,
    +158            exp.DayOfMonth: rename_func("DAYOFMONTH"),
    +159            exp.DayOfWeek: rename_func("DAYOFWEEK"),
    +160            exp.DayOfYear: rename_func("DAYOFYEAR"),
    +161            exp.DataType: _datatype_sql,
    +162            exp.DateAdd: _date_add,
    +163            exp.DateDiff: lambda self, e: self.func(
    +164                "DATE_DIFF", e.args.get("unit") or exp.Literal.string("day"), e.expression, e.this
    +165            ),
    +166            exp.DateStrToDate: datestrtodate_sql,
    +167            exp.DateToDi: lambda self, e: f"CAST(STRFTIME({self.sql(e, 'this')}, {DuckDB.dateint_format}) AS INT)",
    +168            exp.DiToDate: lambda self, e: f"CAST(STRPTIME(CAST({self.sql(e, 'this')} AS TEXT), {DuckDB.dateint_format}) AS DATE)",
    +169            exp.Explode: rename_func("UNNEST"),
    +170            exp.JSONExtract: arrow_json_extract_sql,
    +171            exp.JSONExtractScalar: arrow_json_extract_scalar_sql,
    +172            exp.JSONBExtract: arrow_json_extract_sql,
    +173            exp.JSONBExtractScalar: arrow_json_extract_scalar_sql,
    +174            exp.LogicalOr: rename_func("BOOL_OR"),
    +175            exp.LogicalAnd: rename_func("BOOL_AND"),
    +176            exp.Pivot: no_pivot_sql,
    +177            exp.Properties: no_properties_sql,
    +178            exp.RegexpExtract: _regexp_extract_sql,
    +179            exp.RegexpLike: rename_func("REGEXP_MATCHES"),
    +180            exp.RegexpSplit: rename_func("STR_SPLIT_REGEX"),
    +181            exp.SafeDivide: no_safe_divide_sql,
    +182            exp.Split: rename_func("STR_SPLIT"),
    +183            exp.SortArray: _sort_array_sql,
    +184            exp.StrPosition: str_position_sql,
    +185            exp.StrToDate: lambda self, e: f"CAST({str_to_time_sql(self, e)} AS DATE)",
    +186            exp.StrToTime: str_to_time_sql,
    +187            exp.StrToUnix: lambda self, e: f"EPOCH(STRPTIME({self.sql(e, 'this')}, {self.format_time(e)}))",
    +188            exp.Struct: _struct_sql,
    +189            exp.TimestampTrunc: timestamptrunc_sql,
    +190            exp.TimeStrToDate: lambda self, e: f"CAST({self.sql(e, 'this')} AS DATE)",
    +191            exp.TimeStrToTime: timestrtotime_sql,
    +192            exp.TimeStrToUnix: lambda self, e: f"EPOCH(CAST({self.sql(e, 'this')} AS TIMESTAMP))",
    +193            exp.TimeToStr: lambda self, e: f"STRFTIME({self.sql(e, 'this')}, {self.format_time(e)})",
    +194            exp.TimeToUnix: rename_func("EPOCH"),
    +195            exp.TsOrDiToDi: lambda self, e: f"CAST(SUBSTR(REPLACE(CAST({self.sql(e, 'this')} AS TEXT), '-', ''), 1, 8) AS INT)",
    +196            exp.TsOrDsAdd: _ts_or_ds_add,
    +197            exp.TsOrDsToDate: ts_or_ds_to_date_sql("duckdb"),
    +198            exp.UnixToStr: lambda self, e: f"STRFTIME(TO_TIMESTAMP({self.sql(e, 'this')}), {self.format_time(e)})",
    +199            exp.UnixToTime: rename_func("TO_TIMESTAMP"),
    +200            exp.UnixToTimeStr: lambda self, e: f"CAST(TO_TIMESTAMP({self.sql(e, 'this')}) AS TEXT)",
    +201            exp.WeekOfYear: rename_func("WEEKOFYEAR"),
    +202        }
    +203
    +204        TYPE_MAPPING = {
    +205            **generator.Generator.TYPE_MAPPING,  # type: ignore
    +206            exp.DataType.Type.BINARY: "BLOB",
    +207            exp.DataType.Type.CHAR: "TEXT",
    +208            exp.DataType.Type.FLOAT: "REAL",
    +209            exp.DataType.Type.NCHAR: "TEXT",
    +210            exp.DataType.Type.NVARCHAR: "TEXT",
    +211            exp.DataType.Type.UINT: "UINTEGER",
    +212            exp.DataType.Type.VARBINARY: "BLOB",
    +213            exp.DataType.Type.VARCHAR: "TEXT",
    +214        }
    +215
    +216        STAR_MAPPING = {
    +217            **generator.Generator.STAR_MAPPING,
    +218            "except": "EXCLUDE",
    +219        }
    +220
    +221        PROPERTIES_LOCATION = {
    +222            **generator.Generator.PROPERTIES_LOCATION,  # type: ignore
    +223            exp.VolatileProperty: exp.Properties.Location.UNSUPPORTED,
    +224        }
    +225
    +226        LIMIT_FETCH = "LIMIT"
    +227
    +228        def tablesample_sql(self, expression: exp.TableSample, seed_prefix: str = "SEED") -> str:
    +229            return super().tablesample_sql(expression, seed_prefix="REPEATABLE")
     
    @@ -768,8 +793,8 @@ Default: True
    -
    219        def tablesample_sql(self, expression: exp.TableSample, seed_prefix: str = "SEED") -> str:
    -220            return super().tablesample_sql(expression, seed_prefix="REPEATABLE")
    +            
    228        def tablesample_sql(self, expression: exp.TableSample, seed_prefix: str = "SEED") -> str:
    +229            return super().tablesample_sql(expression, seed_prefix="REPEATABLE")
     
    @@ -813,6 +838,7 @@ Default: True
    tablealias_sql
    bitstring_sql
    hexstring_sql
    +
    bytestring_sql
    datatype_sql
    directory_sql
    delete_sql
    @@ -824,6 +850,7 @@ Default: True
    hint_sql
    index_sql
    identifier_sql
    +
    inputoutputformat_sql
    national_sql
    partition_sql
    properties_sql
    @@ -849,6 +876,7 @@ Default: True
    intersect_op
    introducer_sql
    pseudotype_sql
    +
    onconflict_sql
    returning_sql
    rowformatdelimitedproperty_sql
    table_sql
    diff --git a/docs/sqlglot/dialects/hive.html b/docs/sqlglot/dialects/hive.html index 66a4b7f..b477f0e 100644 --- a/docs/sqlglot/dialects/hive.html +++ b/docs/sqlglot/dialects/hive.html @@ -3,7 +3,7 @@ - + sqlglot.dialects.hive API documentation @@ -133,338 +133,336 @@
    45DIFF_MONTH_SWITCH = ("YEAR", "QUARTER", "MONTH") 46 47 - 48def _add_date_sql(self: generator.Generator, expression: exp.DateAdd) -> str: + 48def _add_date_sql(self: generator.Generator, expression: exp.DateAdd | exp.DateSub) -> str: 49 unit = expression.text("unit").upper() 50 func, multiplier = DATE_DELTA_INTERVAL.get(unit, ("DATE_ADD", 1)) - 51 modified_increment = ( - 52 int(expression.text("expression")) * multiplier - 53 if expression.expression.is_number - 54 else expression.expression - 55 ) - 56 modified_increment = exp.Literal.number(modified_increment) - 57 return self.func(func, expression.this, modified_increment.this) - 58 - 59 - 60def _date_diff_sql(self: generator.Generator, expression: exp.DateDiff) -> str: - 61 unit = expression.text("unit").upper() - 62 - 63 factor = TIME_DIFF_FACTOR.get(unit) - 64 if factor is not None: - 65 left = self.sql(expression, "this") - 66 right = self.sql(expression, "expression") - 67 sec_diff = f"UNIX_TIMESTAMP({left}) - UNIX_TIMESTAMP({right})" - 68 return f"({sec_diff}){factor}" if factor else sec_diff + 51 + 52 if isinstance(expression, exp.DateSub): + 53 multiplier *= -1 + 54 + 55 if expression.expression.is_number: + 56 modified_increment = exp.Literal.number(int(expression.text("expression")) * multiplier) + 57 else: + 58 modified_increment = expression.expression + 59 if multiplier != 1: + 60 modified_increment = exp.Mul( # type: ignore + 61 this=modified_increment, expression=exp.Literal.number(multiplier) + 62 ) + 63 + 64 return self.func(func, expression.this, modified_increment) + 65 + 66 + 67def _date_diff_sql(self: generator.Generator, expression: exp.DateDiff) -> str: + 68 unit = expression.text("unit").upper() 69 - 70 sql_func = "MONTHS_BETWEEN" if unit in DIFF_MONTH_SWITCH else "DATEDIFF" - 71 _, multiplier = DATE_DELTA_INTERVAL.get(unit, ("", 1)) - 72 multiplier_sql = f" / {multiplier}" if multiplier > 1 else "" - 73 diff_sql = f"{sql_func}({self.format_args(expression.this, expression.expression)})" - 74 return f"{diff_sql}{multiplier_sql}" - 75 + 70 factor = TIME_DIFF_FACTOR.get(unit) + 71 if factor is not None: + 72 left = self.sql(expression, "this") + 73 right = self.sql(expression, "expression") + 74 sec_diff = f"UNIX_TIMESTAMP({left}) - UNIX_TIMESTAMP({right})" + 75 return f"({sec_diff}){factor}" if factor else sec_diff 76 - 77def _array_sort(self: generator.Generator, expression: exp.ArraySort) -> str: - 78 if expression.expression: - 79 self.unsupported("Hive SORT_ARRAY does not support a comparator") - 80 return f"SORT_ARRAY({self.sql(expression, 'this')})" - 81 + 77 sql_func = "MONTHS_BETWEEN" if unit in DIFF_MONTH_SWITCH else "DATEDIFF" + 78 _, multiplier = DATE_DELTA_INTERVAL.get(unit, ("", 1)) + 79 multiplier_sql = f" / {multiplier}" if multiplier > 1 else "" + 80 diff_sql = f"{sql_func}({self.format_args(expression.this, expression.expression)})" + 81 return f"{diff_sql}{multiplier_sql}" 82 - 83def _property_sql(self: generator.Generator, expression: exp.Property) -> str: - 84 return f"'{expression.name}'={self.sql(expression, 'value')}" - 85 - 86 - 87def _str_to_unix(self: generator.Generator, expression: exp.StrToUnix) -> str: - 88 return self.func("UNIX_TIMESTAMP", expression.this, _time_format(self, expression)) + 83 + 84def _array_sort(self: generator.Generator, expression: exp.ArraySort) -> str: + 85 if expression.expression: + 86 self.unsupported("Hive SORT_ARRAY does not support a comparator") + 87 return f"SORT_ARRAY({self.sql(expression, 'this')})" + 88 89 - 90 - 91def _str_to_date(self: generator.Generator, expression: exp.StrToDate) -> str: - 92 this = self.sql(expression, "this") - 93 time_format = self.format_time(expression) - 94 if time_format not in (Hive.time_format, Hive.date_format): - 95 this = f"FROM_UNIXTIME(UNIX_TIMESTAMP({this}, {time_format}))" - 96 return f"CAST({this} AS DATE)" + 90def _property_sql(self: generator.Generator, expression: exp.Property) -> str: + 91 return f"'{expression.name}'={self.sql(expression, 'value')}" + 92 + 93 + 94def _str_to_unix(self: generator.Generator, expression: exp.StrToUnix) -> str: + 95 return self.func("UNIX_TIMESTAMP", expression.this, _time_format(self, expression)) + 96 97 - 98 - 99def _str_to_time(self: generator.Generator, expression: exp.StrToTime) -> str: -100 this = self.sql(expression, "this") -101 time_format = self.format_time(expression) -102 if time_format not in (Hive.time_format, Hive.date_format): -103 this = f"FROM_UNIXTIME(UNIX_TIMESTAMP({this}, {time_format}))" -104 return f"CAST({this} AS TIMESTAMP)" + 98def _str_to_date(self: generator.Generator, expression: exp.StrToDate) -> str: + 99 this = self.sql(expression, "this") +100 time_format = self.format_time(expression) +101 if time_format not in (Hive.time_format, Hive.date_format): +102 this = f"FROM_UNIXTIME(UNIX_TIMESTAMP({this}, {time_format}))" +103 return f"CAST({this} AS DATE)" +104 105 -106 -107def _time_format( -108 self: generator.Generator, expression: exp.UnixToStr | exp.StrToUnix -109) -> t.Optional[str]: -110 time_format = self.format_time(expression) -111 if time_format == Hive.time_format: -112 return None -113 return time_format -114 -115 -116def _time_to_str(self: generator.Generator, expression: exp.TimeToStr) -> str: -117 this = self.sql(expression, "this") -118 time_format = self.format_time(expression) -119 return f"DATE_FORMAT({this}, {time_format})" -120 +106def _str_to_time(self: generator.Generator, expression: exp.StrToTime) -> str: +107 this = self.sql(expression, "this") +108 time_format = self.format_time(expression) +109 if time_format not in (Hive.time_format, Hive.date_format): +110 this = f"FROM_UNIXTIME(UNIX_TIMESTAMP({this}, {time_format}))" +111 return f"CAST({this} AS TIMESTAMP)" +112 +113 +114def _time_format( +115 self: generator.Generator, expression: exp.UnixToStr | exp.StrToUnix +116) -> t.Optional[str]: +117 time_format = self.format_time(expression) +118 if time_format == Hive.time_format: +119 return None +120 return time_format 121 -122def _to_date_sql(self: generator.Generator, expression: exp.TsOrDsToDate) -> str: -123 this = self.sql(expression, "this") -124 time_format = self.format_time(expression) -125 if time_format and time_format not in (Hive.time_format, Hive.date_format): -126 return f"TO_DATE({this}, {time_format})" -127 return f"TO_DATE({this})" +122 +123def _time_to_str(self: generator.Generator, expression: exp.TimeToStr) -> str: +124 this = self.sql(expression, "this") +125 time_format = self.format_time(expression) +126 return f"DATE_FORMAT({this}, {time_format})" +127 128 -129 -130def _unnest_to_explode_sql(self: generator.Generator, expression: exp.Join) -> str: -131 unnest = expression.this -132 if isinstance(unnest, exp.Unnest): -133 alias = unnest.args.get("alias") -134 udtf = exp.Posexplode if unnest.args.get("ordinality") else exp.Explode -135 return "".join( -136 self.sql( -137 exp.Lateral( -138 this=udtf(this=expression), -139 view=True, -140 alias=exp.TableAlias(this=alias.this, columns=[column]), # type: ignore -141 ) -142 ) -143 for expression, column in zip(unnest.expressions, alias.columns if alias else []) -144 ) -145 return self.join_sql(expression) +129def _to_date_sql(self: generator.Generator, expression: exp.TsOrDsToDate) -> str: +130 this = self.sql(expression, "this") +131 time_format = self.format_time(expression) +132 if time_format and time_format not in (Hive.time_format, Hive.date_format): +133 return f"TO_DATE({this}, {time_format})" +134 return f"TO_DATE({this})" +135 +136 +137def _index_sql(self: generator.Generator, expression: exp.Index) -> str: +138 this = self.sql(expression, "this") +139 table = self.sql(expression, "table") +140 columns = self.sql(expression, "columns") +141 return f"{this} ON TABLE {table} {columns}" +142 +143 +144class Hive(Dialect): +145 alias_post_tablesample = True 146 -147 -148def _index_sql(self: generator.Generator, expression: exp.Index) -> str: -149 this = self.sql(expression, "this") -150 table = self.sql(expression, "table") -151 columns = self.sql(expression, "columns") -152 return f"{this} ON TABLE {table} {columns}" -153 -154 -155class Hive(Dialect): -156 alias_post_tablesample = True -157 -158 time_mapping = { -159 "y": "%Y", -160 "Y": "%Y", -161 "YYYY": "%Y", -162 "yyyy": "%Y", -163 "YY": "%y", -164 "yy": "%y", -165 "MMMM": "%B", -166 "MMM": "%b", -167 "MM": "%m", -168 "M": "%-m", -169 "dd": "%d", -170 "d": "%-d", -171 "HH": "%H", -172 "H": "%-H", -173 "hh": "%I", -174 "h": "%-I", -175 "mm": "%M", -176 "m": "%-M", -177 "ss": "%S", -178 "s": "%-S", -179 "SSSSSS": "%f", -180 "a": "%p", -181 "DD": "%j", -182 "D": "%-j", -183 "E": "%a", -184 "EE": "%a", -185 "EEE": "%a", -186 "EEEE": "%A", -187 } +147 time_mapping = { +148 "y": "%Y", +149 "Y": "%Y", +150 "YYYY": "%Y", +151 "yyyy": "%Y", +152 "YY": "%y", +153 "yy": "%y", +154 "MMMM": "%B", +155 "MMM": "%b", +156 "MM": "%m", +157 "M": "%-m", +158 "dd": "%d", +159 "d": "%-d", +160 "HH": "%H", +161 "H": "%-H", +162 "hh": "%I", +163 "h": "%-I", +164 "mm": "%M", +165 "m": "%-M", +166 "ss": "%S", +167 "s": "%-S", +168 "SSSSSS": "%f", +169 "a": "%p", +170 "DD": "%j", +171 "D": "%-j", +172 "E": "%a", +173 "EE": "%a", +174 "EEE": "%a", +175 "EEEE": "%A", +176 } +177 +178 date_format = "'yyyy-MM-dd'" +179 dateint_format = "'yyyyMMdd'" +180 time_format = "'yyyy-MM-dd HH:mm:ss'" +181 +182 class Tokenizer(tokens.Tokenizer): +183 QUOTES = ["'", '"'] +184 IDENTIFIERS = ["`"] +185 STRING_ESCAPES = ["\\"] +186 ENCODE = "utf-8" +187 IDENTIFIER_CAN_START_WITH_DIGIT = True 188 -189 date_format = "'yyyy-MM-dd'" -190 dateint_format = "'yyyyMMdd'" -191 time_format = "'yyyy-MM-dd HH:mm:ss'" -192 -193 class Tokenizer(tokens.Tokenizer): -194 QUOTES = ["'", '"'] -195 IDENTIFIERS = ["`"] -196 STRING_ESCAPES = ["\\"] -197 ENCODE = "utf-8" -198 -199 KEYWORDS = { -200 **tokens.Tokenizer.KEYWORDS, -201 "ADD ARCHIVE": TokenType.COMMAND, -202 "ADD ARCHIVES": TokenType.COMMAND, -203 "ADD FILE": TokenType.COMMAND, -204 "ADD FILES": TokenType.COMMAND, -205 "ADD JAR": TokenType.COMMAND, -206 "ADD JARS": TokenType.COMMAND, -207 "MSCK REPAIR": TokenType.COMMAND, -208 "WITH SERDEPROPERTIES": TokenType.SERDE_PROPERTIES, -209 } -210 -211 NUMERIC_LITERALS = { -212 "L": "BIGINT", -213 "S": "SMALLINT", -214 "Y": "TINYINT", -215 "D": "DOUBLE", -216 "F": "FLOAT", -217 "BD": "DECIMAL", -218 } -219 -220 IDENTIFIER_CAN_START_WITH_DIGIT = True -221 -222 class Parser(parser.Parser): -223 STRICT_CAST = False -224 -225 FUNCTIONS = { -226 **parser.Parser.FUNCTIONS, # type: ignore -227 "APPROX_COUNT_DISTINCT": exp.ApproxDistinct.from_arg_list, -228 "COLLECT_LIST": exp.ArrayAgg.from_arg_list, -229 "DATE_ADD": lambda args: exp.TsOrDsAdd( -230 this=seq_get(args, 0), -231 expression=seq_get(args, 1), -232 unit=exp.Literal.string("DAY"), -233 ), -234 "DATEDIFF": lambda args: exp.DateDiff( -235 this=exp.TsOrDsToDate(this=seq_get(args, 0)), -236 expression=exp.TsOrDsToDate(this=seq_get(args, 1)), -237 ), -238 "DATE_SUB": lambda args: exp.TsOrDsAdd( -239 this=seq_get(args, 0), -240 expression=exp.Mul( -241 this=seq_get(args, 1), -242 expression=exp.Literal.number(-1), -243 ), -244 unit=exp.Literal.string("DAY"), -245 ), -246 "DATE_FORMAT": lambda args: format_time_lambda(exp.TimeToStr, "hive")( -247 [ -248 exp.TimeStrToTime(this=seq_get(args, 0)), -249 seq_get(args, 1), -250 ] -251 ), -252 "DAY": lambda args: exp.Day(this=exp.TsOrDsToDate(this=seq_get(args, 0))), -253 "FROM_UNIXTIME": format_time_lambda(exp.UnixToStr, "hive", True), -254 "GET_JSON_OBJECT": exp.JSONExtractScalar.from_arg_list, -255 "LOCATE": locate_to_strposition, -256 "MAP": parse_var_map, -257 "MONTH": lambda args: exp.Month(this=exp.TsOrDsToDate.from_arg_list(args)), -258 "PERCENTILE": exp.Quantile.from_arg_list, -259 "PERCENTILE_APPROX": exp.ApproxQuantile.from_arg_list, -260 "COLLECT_SET": exp.SetAgg.from_arg_list, -261 "SIZE": exp.ArraySize.from_arg_list, -262 "SPLIT": exp.RegexpSplit.from_arg_list, -263 "TO_DATE": format_time_lambda(exp.TsOrDsToDate, "hive"), -264 "TO_JSON": exp.JSONFormat.from_arg_list, -265 "UNIX_TIMESTAMP": format_time_lambda(exp.StrToUnix, "hive", True), -266 "YEAR": lambda args: exp.Year(this=exp.TsOrDsToDate.from_arg_list(args)), -267 } -268 -269 PROPERTY_PARSERS = { -270 **parser.Parser.PROPERTY_PARSERS, # type: ignore -271 "WITH SERDEPROPERTIES": lambda self: exp.SerdeProperties( -272 expressions=self._parse_wrapped_csv(self._parse_property) -273 ), -274 } -275 -276 LOG_DEFAULTS_TO_LN = True -277 -278 class Generator(generator.Generator): -279 TYPE_MAPPING = { -280 **generator.Generator.TYPE_MAPPING, # type: ignore -281 exp.DataType.Type.TEXT: "STRING", -282 exp.DataType.Type.DATETIME: "TIMESTAMP", -283 exp.DataType.Type.VARBINARY: "BINARY", -284 exp.DataType.Type.TIMESTAMPTZ: "TIMESTAMP", -285 } -286 -287 TRANSFORMS = { -288 **generator.Generator.TRANSFORMS, # type: ignore -289 **transforms.UNALIAS_GROUP, # type: ignore -290 **transforms.ELIMINATE_QUALIFY, # type: ignore -291 exp.Property: _property_sql, -292 exp.ApproxDistinct: approx_count_distinct_sql, -293 exp.ArrayConcat: rename_func("CONCAT"), -294 exp.ArraySize: rename_func("SIZE"), -295 exp.ArraySort: _array_sort, -296 exp.With: no_recursive_cte_sql, -297 exp.DateAdd: _add_date_sql, -298 exp.DateDiff: _date_diff_sql, -299 exp.DateStrToDate: rename_func("TO_DATE"), -300 exp.DateToDi: lambda self, e: f"CAST(DATE_FORMAT({self.sql(e, 'this')}, {Hive.dateint_format}) AS INT)", -301 exp.DiToDate: lambda self, e: f"TO_DATE(CAST({self.sql(e, 'this')} AS STRING), {Hive.dateint_format})", -302 exp.FileFormatProperty: lambda self, e: f"STORED AS {e.name.upper()}", -303 exp.If: if_sql, -304 exp.Index: _index_sql, -305 exp.ILike: no_ilike_sql, -306 exp.Join: _unnest_to_explode_sql, -307 exp.JSONExtract: rename_func("GET_JSON_OBJECT"), -308 exp.JSONExtractScalar: rename_func("GET_JSON_OBJECT"), -309 exp.JSONFormat: rename_func("TO_JSON"), -310 exp.Map: var_map_sql, -311 exp.Max: max_or_greatest, -312 exp.Min: min_or_least, -313 exp.VarMap: var_map_sql, -314 exp.Create: create_with_partitions_sql, -315 exp.Quantile: rename_func("PERCENTILE"), -316 exp.ApproxQuantile: rename_func("PERCENTILE_APPROX"), -317 exp.RegexpLike: lambda self, e: self.binary(e, "RLIKE"), -318 exp.RegexpSplit: rename_func("SPLIT"), -319 exp.SafeDivide: no_safe_divide_sql, -320 exp.SchemaCommentProperty: lambda self, e: self.naked_property(e), -321 exp.SetAgg: rename_func("COLLECT_SET"), -322 exp.Split: lambda self, e: f"SPLIT({self.sql(e, 'this')}, CONCAT('\\\\Q', {self.sql(e, 'expression')}))", -323 exp.StrPosition: strposition_to_locate_sql, -324 exp.StrToDate: _str_to_date, -325 exp.StrToTime: _str_to_time, -326 exp.StrToUnix: _str_to_unix, -327 exp.StructExtract: struct_extract_sql, -328 exp.TableFormatProperty: lambda self, e: f"USING {self.sql(e, 'this')}", -329 exp.TimeStrToDate: rename_func("TO_DATE"), -330 exp.TimeStrToTime: timestrtotime_sql, -331 exp.TimeStrToUnix: rename_func("UNIX_TIMESTAMP"), -332 exp.TimeToStr: _time_to_str, -333 exp.TimeToUnix: rename_func("UNIX_TIMESTAMP"), -334 exp.TsOrDiToDi: lambda self, e: f"CAST(SUBSTR(REPLACE(CAST({self.sql(e, 'this')} AS STRING), '-', ''), 1, 8) AS INT)", -335 exp.TsOrDsAdd: lambda self, e: f"DATE_ADD({self.sql(e, 'this')}, {self.sql(e, 'expression')})", -336 exp.TsOrDsToDate: _to_date_sql, -337 exp.TryCast: no_trycast_sql, -338 exp.UnixToStr: lambda self, e: self.func( -339 "FROM_UNIXTIME", e.this, _time_format(self, e) -340 ), -341 exp.UnixToTime: rename_func("FROM_UNIXTIME"), -342 exp.UnixToTimeStr: rename_func("FROM_UNIXTIME"), -343 exp.PartitionedByProperty: lambda self, e: f"PARTITIONED BY {self.sql(e, 'this')}", -344 exp.RowFormatSerdeProperty: lambda self, e: f"ROW FORMAT SERDE {self.sql(e, 'this')}", -345 exp.SerdeProperties: lambda self, e: self.properties(e, prefix="WITH SERDEPROPERTIES"), -346 exp.NumberToStr: rename_func("FORMAT_NUMBER"), -347 exp.LastDateOfMonth: rename_func("LAST_DAY"), -348 } -349 -350 PROPERTIES_LOCATION = { -351 **generator.Generator.PROPERTIES_LOCATION, # type: ignore -352 exp.FileFormatProperty: exp.Properties.Location.POST_SCHEMA, -353 exp.PartitionedByProperty: exp.Properties.Location.POST_SCHEMA, -354 exp.TableFormatProperty: exp.Properties.Location.POST_SCHEMA, -355 } -356 -357 LIMIT_FETCH = "LIMIT" -358 -359 def arrayagg_sql(self, expression: exp.ArrayAgg) -> str: -360 return self.func( -361 "COLLECT_LIST", -362 expression.this.this if isinstance(expression.this, exp.Order) else expression.this, -363 ) -364 -365 def with_properties(self, properties: exp.Properties) -> str: -366 return self.properties( -367 properties, -368 prefix=self.seg("TBLPROPERTIES"), -369 ) -370 -371 def datatype_sql(self, expression: exp.DataType) -> str: -372 if ( -373 expression.this in (exp.DataType.Type.VARCHAR, exp.DataType.Type.NVARCHAR) -374 and not expression.expressions -375 ): -376 expression = exp.DataType.build("text") -377 elif expression.this in exp.DataType.TEMPORAL_TYPES: -378 expression = exp.DataType.build(expression.this) -379 return super().datatype_sql(expression) +189 KEYWORDS = { +190 **tokens.Tokenizer.KEYWORDS, +191 "ADD ARCHIVE": TokenType.COMMAND, +192 "ADD ARCHIVES": TokenType.COMMAND, +193 "ADD FILE": TokenType.COMMAND, +194 "ADD FILES": TokenType.COMMAND, +195 "ADD JAR": TokenType.COMMAND, +196 "ADD JARS": TokenType.COMMAND, +197 "MSCK REPAIR": TokenType.COMMAND, +198 "WITH SERDEPROPERTIES": TokenType.SERDE_PROPERTIES, +199 } +200 +201 NUMERIC_LITERALS = { +202 "L": "BIGINT", +203 "S": "SMALLINT", +204 "Y": "TINYINT", +205 "D": "DOUBLE", +206 "F": "FLOAT", +207 "BD": "DECIMAL", +208 } +209 +210 class Parser(parser.Parser): +211 LOG_DEFAULTS_TO_LN = True +212 STRICT_CAST = False +213 +214 FUNCTIONS = { +215 **parser.Parser.FUNCTIONS, # type: ignore +216 "APPROX_COUNT_DISTINCT": exp.ApproxDistinct.from_arg_list, +217 "COLLECT_LIST": exp.ArrayAgg.from_arg_list, +218 "DATE_ADD": lambda args: exp.TsOrDsAdd( +219 this=seq_get(args, 0), +220 expression=seq_get(args, 1), +221 unit=exp.Literal.string("DAY"), +222 ), +223 "DATEDIFF": lambda args: exp.DateDiff( +224 this=exp.TsOrDsToDate(this=seq_get(args, 0)), +225 expression=exp.TsOrDsToDate(this=seq_get(args, 1)), +226 ), +227 "DATE_SUB": lambda args: exp.TsOrDsAdd( +228 this=seq_get(args, 0), +229 expression=exp.Mul( +230 this=seq_get(args, 1), +231 expression=exp.Literal.number(-1), +232 ), +233 unit=exp.Literal.string("DAY"), +234 ), +235 "DATE_FORMAT": lambda args: format_time_lambda(exp.TimeToStr, "hive")( +236 [ +237 exp.TimeStrToTime(this=seq_get(args, 0)), +238 seq_get(args, 1), +239 ] +240 ), +241 "DAY": lambda args: exp.Day(this=exp.TsOrDsToDate(this=seq_get(args, 0))), +242 "FROM_UNIXTIME": format_time_lambda(exp.UnixToStr, "hive", True), +243 "GET_JSON_OBJECT": exp.JSONExtractScalar.from_arg_list, +244 "LOCATE": locate_to_strposition, +245 "MAP": parse_var_map, +246 "MONTH": lambda args: exp.Month(this=exp.TsOrDsToDate.from_arg_list(args)), +247 "PERCENTILE": exp.Quantile.from_arg_list, +248 "PERCENTILE_APPROX": exp.ApproxQuantile.from_arg_list, +249 "COLLECT_SET": exp.SetAgg.from_arg_list, +250 "SIZE": exp.ArraySize.from_arg_list, +251 "SPLIT": exp.RegexpSplit.from_arg_list, +252 "TO_DATE": format_time_lambda(exp.TsOrDsToDate, "hive"), +253 "TO_JSON": exp.JSONFormat.from_arg_list, +254 "UNIX_TIMESTAMP": format_time_lambda(exp.StrToUnix, "hive", True), +255 "YEAR": lambda args: exp.Year(this=exp.TsOrDsToDate.from_arg_list(args)), +256 } +257 +258 PROPERTY_PARSERS = { +259 **parser.Parser.PROPERTY_PARSERS, # type: ignore +260 "WITH SERDEPROPERTIES": lambda self: exp.SerdeProperties( +261 expressions=self._parse_wrapped_csv(self._parse_property) +262 ), +263 } +264 +265 class Generator(generator.Generator): +266 LIMIT_FETCH = "LIMIT" +267 TABLESAMPLE_WITH_METHOD = False +268 TABLESAMPLE_SIZE_IS_PERCENT = True +269 JOIN_HINTS = False +270 TABLE_HINTS = False +271 +272 TYPE_MAPPING = { +273 **generator.Generator.TYPE_MAPPING, # type: ignore +274 exp.DataType.Type.TEXT: "STRING", +275 exp.DataType.Type.DATETIME: "TIMESTAMP", +276 exp.DataType.Type.VARBINARY: "BINARY", +277 exp.DataType.Type.TIMESTAMPTZ: "TIMESTAMP", +278 exp.DataType.Type.BIT: "BOOLEAN", +279 } +280 +281 TRANSFORMS = { +282 **generator.Generator.TRANSFORMS, # type: ignore +283 **transforms.UNALIAS_GROUP, # type: ignore +284 **transforms.ELIMINATE_QUALIFY, # type: ignore +285 exp.Select: transforms.preprocess( +286 [transforms.eliminate_qualify, transforms.unnest_to_explode] +287 ), +288 exp.Property: _property_sql, +289 exp.ApproxDistinct: approx_count_distinct_sql, +290 exp.ArrayConcat: rename_func("CONCAT"), +291 exp.ArraySize: rename_func("SIZE"), +292 exp.ArraySort: _array_sort, +293 exp.With: no_recursive_cte_sql, +294 exp.DateAdd: _add_date_sql, +295 exp.DateDiff: _date_diff_sql, +296 exp.DateStrToDate: rename_func("TO_DATE"), +297 exp.DateSub: _add_date_sql, +298 exp.DateToDi: lambda self, e: f"CAST(DATE_FORMAT({self.sql(e, 'this')}, {Hive.dateint_format}) AS INT)", +299 exp.DiToDate: lambda self, e: f"TO_DATE(CAST({self.sql(e, 'this')} AS STRING), {Hive.dateint_format})", +300 exp.FileFormatProperty: lambda self, e: f"STORED AS {self.sql(e, 'this') if isinstance(e.this, exp.InputOutputFormat) else e.name.upper()}", +301 exp.If: if_sql, +302 exp.Index: _index_sql, +303 exp.ILike: no_ilike_sql, +304 exp.JSONExtract: rename_func("GET_JSON_OBJECT"), +305 exp.JSONExtractScalar: rename_func("GET_JSON_OBJECT"), +306 exp.JSONFormat: rename_func("TO_JSON"), +307 exp.Map: var_map_sql, +308 exp.Max: max_or_greatest, +309 exp.Min: min_or_least, +310 exp.VarMap: var_map_sql, +311 exp.Create: create_with_partitions_sql, +312 exp.Quantile: rename_func("PERCENTILE"), +313 exp.ApproxQuantile: rename_func("PERCENTILE_APPROX"), +314 exp.RegexpLike: lambda self, e: self.binary(e, "RLIKE"), +315 exp.RegexpSplit: rename_func("SPLIT"), +316 exp.SafeDivide: no_safe_divide_sql, +317 exp.SchemaCommentProperty: lambda self, e: self.naked_property(e), +318 exp.SetAgg: rename_func("COLLECT_SET"), +319 exp.Split: lambda self, e: f"SPLIT({self.sql(e, 'this')}, CONCAT('\\\\Q', {self.sql(e, 'expression')}))", +320 exp.StrPosition: strposition_to_locate_sql, +321 exp.StrToDate: _str_to_date, +322 exp.StrToTime: _str_to_time, +323 exp.StrToUnix: _str_to_unix, +324 exp.StructExtract: struct_extract_sql, +325 exp.TableFormatProperty: lambda self, e: f"USING {self.sql(e, 'this')}", +326 exp.TimeStrToDate: rename_func("TO_DATE"), +327 exp.TimeStrToTime: timestrtotime_sql, +328 exp.TimeStrToUnix: rename_func("UNIX_TIMESTAMP"), +329 exp.TimeToStr: _time_to_str, +330 exp.TimeToUnix: rename_func("UNIX_TIMESTAMP"), +331 exp.TsOrDiToDi: lambda self, e: f"CAST(SUBSTR(REPLACE(CAST({self.sql(e, 'this')} AS STRING), '-', ''), 1, 8) AS INT)", +332 exp.TsOrDsAdd: lambda self, e: f"DATE_ADD({self.sql(e, 'this')}, {self.sql(e, 'expression')})", +333 exp.TsOrDsToDate: _to_date_sql, +334 exp.TryCast: no_trycast_sql, +335 exp.UnixToStr: lambda self, e: self.func( +336 "FROM_UNIXTIME", e.this, _time_format(self, e) +337 ), +338 exp.UnixToTime: rename_func("FROM_UNIXTIME"), +339 exp.UnixToTimeStr: rename_func("FROM_UNIXTIME"), +340 exp.PartitionedByProperty: lambda self, e: f"PARTITIONED BY {self.sql(e, 'this')}", +341 exp.RowFormatSerdeProperty: lambda self, e: f"ROW FORMAT SERDE {self.sql(e, 'this')}", +342 exp.SerdeProperties: lambda self, e: self.properties(e, prefix="WITH SERDEPROPERTIES"), +343 exp.NumberToStr: rename_func("FORMAT_NUMBER"), +344 exp.LastDateOfMonth: rename_func("LAST_DAY"), +345 exp.National: lambda self, e: self.sql(e, "this"), +346 } +347 +348 PROPERTIES_LOCATION = { +349 **generator.Generator.PROPERTIES_LOCATION, # type: ignore +350 exp.FileFormatProperty: exp.Properties.Location.POST_SCHEMA, +351 exp.PartitionedByProperty: exp.Properties.Location.POST_SCHEMA, +352 exp.TableFormatProperty: exp.Properties.Location.POST_SCHEMA, +353 exp.VolatileProperty: exp.Properties.Location.UNSUPPORTED, +354 } +355 +356 def arrayagg_sql(self, expression: exp.ArrayAgg) -> str: +357 return self.func( +358 "COLLECT_LIST", +359 expression.this.this if isinstance(expression.this, exp.Order) else expression.this, +360 ) +361 +362 def with_properties(self, properties: exp.Properties) -> str: +363 return self.properties( +364 properties, +365 prefix=self.seg("TBLPROPERTIES"), +366 ) +367 +368 def datatype_sql(self, expression: exp.DataType) -> str: +369 if ( +370 expression.this in (exp.DataType.Type.VARCHAR, exp.DataType.Type.NVARCHAR) +371 and not expression.expressions +372 ): +373 expression = exp.DataType.build("text") +374 elif expression.this in exp.DataType.TEMPORAL_TYPES: +375 expression = exp.DataType.build(expression.this) +376 +377 return super().datatype_sql(expression)
    @@ -480,231 +478,240 @@ -
    156class Hive(Dialect):
    -157    alias_post_tablesample = True
    -158
    -159    time_mapping = {
    -160        "y": "%Y",
    -161        "Y": "%Y",
    -162        "YYYY": "%Y",
    -163        "yyyy": "%Y",
    -164        "YY": "%y",
    -165        "yy": "%y",
    -166        "MMMM": "%B",
    -167        "MMM": "%b",
    -168        "MM": "%m",
    -169        "M": "%-m",
    -170        "dd": "%d",
    -171        "d": "%-d",
    -172        "HH": "%H",
    -173        "H": "%-H",
    -174        "hh": "%I",
    -175        "h": "%-I",
    -176        "mm": "%M",
    -177        "m": "%-M",
    -178        "ss": "%S",
    -179        "s": "%-S",
    -180        "SSSSSS": "%f",
    -181        "a": "%p",
    -182        "DD": "%j",
    -183        "D": "%-j",
    -184        "E": "%a",
    -185        "EE": "%a",
    -186        "EEE": "%a",
    -187        "EEEE": "%A",
    -188    }
    +            
    145class Hive(Dialect):
    +146    alias_post_tablesample = True
    +147
    +148    time_mapping = {
    +149        "y": "%Y",
    +150        "Y": "%Y",
    +151        "YYYY": "%Y",
    +152        "yyyy": "%Y",
    +153        "YY": "%y",
    +154        "yy": "%y",
    +155        "MMMM": "%B",
    +156        "MMM": "%b",
    +157        "MM": "%m",
    +158        "M": "%-m",
    +159        "dd": "%d",
    +160        "d": "%-d",
    +161        "HH": "%H",
    +162        "H": "%-H",
    +163        "hh": "%I",
    +164        "h": "%-I",
    +165        "mm": "%M",
    +166        "m": "%-M",
    +167        "ss": "%S",
    +168        "s": "%-S",
    +169        "SSSSSS": "%f",
    +170        "a": "%p",
    +171        "DD": "%j",
    +172        "D": "%-j",
    +173        "E": "%a",
    +174        "EE": "%a",
    +175        "EEE": "%a",
    +176        "EEEE": "%A",
    +177    }
    +178
    +179    date_format = "'yyyy-MM-dd'"
    +180    dateint_format = "'yyyyMMdd'"
    +181    time_format = "'yyyy-MM-dd HH:mm:ss'"
    +182
    +183    class Tokenizer(tokens.Tokenizer):
    +184        QUOTES = ["'", '"']
    +185        IDENTIFIERS = ["`"]
    +186        STRING_ESCAPES = ["\\"]
    +187        ENCODE = "utf-8"
    +188        IDENTIFIER_CAN_START_WITH_DIGIT = True
     189
    -190    date_format = "'yyyy-MM-dd'"
    -191    dateint_format = "'yyyyMMdd'"
    -192    time_format = "'yyyy-MM-dd HH:mm:ss'"
    -193
    -194    class Tokenizer(tokens.Tokenizer):
    -195        QUOTES = ["'", '"']
    -196        IDENTIFIERS = ["`"]
    -197        STRING_ESCAPES = ["\\"]
    -198        ENCODE = "utf-8"
    -199
    -200        KEYWORDS = {
    -201            **tokens.Tokenizer.KEYWORDS,
    -202            "ADD ARCHIVE": TokenType.COMMAND,
    -203            "ADD ARCHIVES": TokenType.COMMAND,
    -204            "ADD FILE": TokenType.COMMAND,
    -205            "ADD FILES": TokenType.COMMAND,
    -206            "ADD JAR": TokenType.COMMAND,
    -207            "ADD JARS": TokenType.COMMAND,
    -208            "MSCK REPAIR": TokenType.COMMAND,
    -209            "WITH SERDEPROPERTIES": TokenType.SERDE_PROPERTIES,
    -210        }
    -211
    -212        NUMERIC_LITERALS = {
    -213            "L": "BIGINT",
    -214            "S": "SMALLINT",
    -215            "Y": "TINYINT",
    -216            "D": "DOUBLE",
    -217            "F": "FLOAT",
    -218            "BD": "DECIMAL",
    -219        }
    -220
    -221        IDENTIFIER_CAN_START_WITH_DIGIT = True
    -222
    -223    class Parser(parser.Parser):
    -224        STRICT_CAST = False
    -225
    -226        FUNCTIONS = {
    -227            **parser.Parser.FUNCTIONS,  # type: ignore
    -228            "APPROX_COUNT_DISTINCT": exp.ApproxDistinct.from_arg_list,
    -229            "COLLECT_LIST": exp.ArrayAgg.from_arg_list,
    -230            "DATE_ADD": lambda args: exp.TsOrDsAdd(
    -231                this=seq_get(args, 0),
    -232                expression=seq_get(args, 1),
    -233                unit=exp.Literal.string("DAY"),
    -234            ),
    -235            "DATEDIFF": lambda args: exp.DateDiff(
    -236                this=exp.TsOrDsToDate(this=seq_get(args, 0)),
    -237                expression=exp.TsOrDsToDate(this=seq_get(args, 1)),
    -238            ),
    -239            "DATE_SUB": lambda args: exp.TsOrDsAdd(
    -240                this=seq_get(args, 0),
    -241                expression=exp.Mul(
    -242                    this=seq_get(args, 1),
    -243                    expression=exp.Literal.number(-1),
    -244                ),
    -245                unit=exp.Literal.string("DAY"),
    -246            ),
    -247            "DATE_FORMAT": lambda args: format_time_lambda(exp.TimeToStr, "hive")(
    -248                [
    -249                    exp.TimeStrToTime(this=seq_get(args, 0)),
    -250                    seq_get(args, 1),
    -251                ]
    -252            ),
    -253            "DAY": lambda args: exp.Day(this=exp.TsOrDsToDate(this=seq_get(args, 0))),
    -254            "FROM_UNIXTIME": format_time_lambda(exp.UnixToStr, "hive", True),
    -255            "GET_JSON_OBJECT": exp.JSONExtractScalar.from_arg_list,
    -256            "LOCATE": locate_to_strposition,
    -257            "MAP": parse_var_map,
    -258            "MONTH": lambda args: exp.Month(this=exp.TsOrDsToDate.from_arg_list(args)),
    -259            "PERCENTILE": exp.Quantile.from_arg_list,
    -260            "PERCENTILE_APPROX": exp.ApproxQuantile.from_arg_list,
    -261            "COLLECT_SET": exp.SetAgg.from_arg_list,
    -262            "SIZE": exp.ArraySize.from_arg_list,
    -263            "SPLIT": exp.RegexpSplit.from_arg_list,
    -264            "TO_DATE": format_time_lambda(exp.TsOrDsToDate, "hive"),
    -265            "TO_JSON": exp.JSONFormat.from_arg_list,
    -266            "UNIX_TIMESTAMP": format_time_lambda(exp.StrToUnix, "hive", True),
    -267            "YEAR": lambda args: exp.Year(this=exp.TsOrDsToDate.from_arg_list(args)),
    -268        }
    -269
    -270        PROPERTY_PARSERS = {
    -271            **parser.Parser.PROPERTY_PARSERS,  # type: ignore
    -272            "WITH SERDEPROPERTIES": lambda self: exp.SerdeProperties(
    -273                expressions=self._parse_wrapped_csv(self._parse_property)
    -274            ),
    -275        }
    -276
    -277        LOG_DEFAULTS_TO_LN = True
    -278
    -279    class Generator(generator.Generator):
    -280        TYPE_MAPPING = {
    -281            **generator.Generator.TYPE_MAPPING,  # type: ignore
    -282            exp.DataType.Type.TEXT: "STRING",
    -283            exp.DataType.Type.DATETIME: "TIMESTAMP",
    -284            exp.DataType.Type.VARBINARY: "BINARY",
    -285            exp.DataType.Type.TIMESTAMPTZ: "TIMESTAMP",
    -286        }
    -287
    -288        TRANSFORMS = {
    -289            **generator.Generator.TRANSFORMS,  # type: ignore
    -290            **transforms.UNALIAS_GROUP,  # type: ignore
    -291            **transforms.ELIMINATE_QUALIFY,  # type: ignore
    -292            exp.Property: _property_sql,
    -293            exp.ApproxDistinct: approx_count_distinct_sql,
    -294            exp.ArrayConcat: rename_func("CONCAT"),
    -295            exp.ArraySize: rename_func("SIZE"),
    -296            exp.ArraySort: _array_sort,
    -297            exp.With: no_recursive_cte_sql,
    -298            exp.DateAdd: _add_date_sql,
    -299            exp.DateDiff: _date_diff_sql,
    -300            exp.DateStrToDate: rename_func("TO_DATE"),
    -301            exp.DateToDi: lambda self, e: f"CAST(DATE_FORMAT({self.sql(e, 'this')}, {Hive.dateint_format}) AS INT)",
    -302            exp.DiToDate: lambda self, e: f"TO_DATE(CAST({self.sql(e, 'this')} AS STRING), {Hive.dateint_format})",
    -303            exp.FileFormatProperty: lambda self, e: f"STORED AS {e.name.upper()}",
    -304            exp.If: if_sql,
    -305            exp.Index: _index_sql,
    -306            exp.ILike: no_ilike_sql,
    -307            exp.Join: _unnest_to_explode_sql,
    -308            exp.JSONExtract: rename_func("GET_JSON_OBJECT"),
    -309            exp.JSONExtractScalar: rename_func("GET_JSON_OBJECT"),
    -310            exp.JSONFormat: rename_func("TO_JSON"),
    -311            exp.Map: var_map_sql,
    -312            exp.Max: max_or_greatest,
    -313            exp.Min: min_or_least,
    -314            exp.VarMap: var_map_sql,
    -315            exp.Create: create_with_partitions_sql,
    -316            exp.Quantile: rename_func("PERCENTILE"),
    -317            exp.ApproxQuantile: rename_func("PERCENTILE_APPROX"),
    -318            exp.RegexpLike: lambda self, e: self.binary(e, "RLIKE"),
    -319            exp.RegexpSplit: rename_func("SPLIT"),
    -320            exp.SafeDivide: no_safe_divide_sql,
    -321            exp.SchemaCommentProperty: lambda self, e: self.naked_property(e),
    -322            exp.SetAgg: rename_func("COLLECT_SET"),
    -323            exp.Split: lambda self, e: f"SPLIT({self.sql(e, 'this')}, CONCAT('\\\\Q', {self.sql(e, 'expression')}))",
    -324            exp.StrPosition: strposition_to_locate_sql,
    -325            exp.StrToDate: _str_to_date,
    -326            exp.StrToTime: _str_to_time,
    -327            exp.StrToUnix: _str_to_unix,
    -328            exp.StructExtract: struct_extract_sql,
    -329            exp.TableFormatProperty: lambda self, e: f"USING {self.sql(e, 'this')}",
    -330            exp.TimeStrToDate: rename_func("TO_DATE"),
    -331            exp.TimeStrToTime: timestrtotime_sql,
    -332            exp.TimeStrToUnix: rename_func("UNIX_TIMESTAMP"),
    -333            exp.TimeToStr: _time_to_str,
    -334            exp.TimeToUnix: rename_func("UNIX_TIMESTAMP"),
    -335            exp.TsOrDiToDi: lambda self, e: f"CAST(SUBSTR(REPLACE(CAST({self.sql(e, 'this')} AS STRING), '-', ''), 1, 8) AS INT)",
    -336            exp.TsOrDsAdd: lambda self, e: f"DATE_ADD({self.sql(e, 'this')}, {self.sql(e, 'expression')})",
    -337            exp.TsOrDsToDate: _to_date_sql,
    -338            exp.TryCast: no_trycast_sql,
    -339            exp.UnixToStr: lambda self, e: self.func(
    -340                "FROM_UNIXTIME", e.this, _time_format(self, e)
    -341            ),
    -342            exp.UnixToTime: rename_func("FROM_UNIXTIME"),
    -343            exp.UnixToTimeStr: rename_func("FROM_UNIXTIME"),
    -344            exp.PartitionedByProperty: lambda self, e: f"PARTITIONED BY {self.sql(e, 'this')}",
    -345            exp.RowFormatSerdeProperty: lambda self, e: f"ROW FORMAT SERDE {self.sql(e, 'this')}",
    -346            exp.SerdeProperties: lambda self, e: self.properties(e, prefix="WITH SERDEPROPERTIES"),
    -347            exp.NumberToStr: rename_func("FORMAT_NUMBER"),
    -348            exp.LastDateOfMonth: rename_func("LAST_DAY"),
    -349        }
    -350
    -351        PROPERTIES_LOCATION = {
    -352            **generator.Generator.PROPERTIES_LOCATION,  # type: ignore
    -353            exp.FileFormatProperty: exp.Properties.Location.POST_SCHEMA,
    -354            exp.PartitionedByProperty: exp.Properties.Location.POST_SCHEMA,
    -355            exp.TableFormatProperty: exp.Properties.Location.POST_SCHEMA,
    -356        }
    -357
    -358        LIMIT_FETCH = "LIMIT"
    -359
    -360        def arrayagg_sql(self, expression: exp.ArrayAgg) -> str:
    -361            return self.func(
    -362                "COLLECT_LIST",
    -363                expression.this.this if isinstance(expression.this, exp.Order) else expression.this,
    -364            )
    -365
    -366        def with_properties(self, properties: exp.Properties) -> str:
    -367            return self.properties(
    -368                properties,
    -369                prefix=self.seg("TBLPROPERTIES"),
    -370            )
    -371
    -372        def datatype_sql(self, expression: exp.DataType) -> str:
    -373            if (
    -374                expression.this in (exp.DataType.Type.VARCHAR, exp.DataType.Type.NVARCHAR)
    -375                and not expression.expressions
    -376            ):
    -377                expression = exp.DataType.build("text")
    -378            elif expression.this in exp.DataType.TEMPORAL_TYPES:
    -379                expression = exp.DataType.build(expression.this)
    -380            return super().datatype_sql(expression)
    +190        KEYWORDS = {
    +191            **tokens.Tokenizer.KEYWORDS,
    +192            "ADD ARCHIVE": TokenType.COMMAND,
    +193            "ADD ARCHIVES": TokenType.COMMAND,
    +194            "ADD FILE": TokenType.COMMAND,
    +195            "ADD FILES": TokenType.COMMAND,
    +196            "ADD JAR": TokenType.COMMAND,
    +197            "ADD JARS": TokenType.COMMAND,
    +198            "MSCK REPAIR": TokenType.COMMAND,
    +199            "WITH SERDEPROPERTIES": TokenType.SERDE_PROPERTIES,
    +200        }
    +201
    +202        NUMERIC_LITERALS = {
    +203            "L": "BIGINT",
    +204            "S": "SMALLINT",
    +205            "Y": "TINYINT",
    +206            "D": "DOUBLE",
    +207            "F": "FLOAT",
    +208            "BD": "DECIMAL",
    +209        }
    +210
    +211    class Parser(parser.Parser):
    +212        LOG_DEFAULTS_TO_LN = True
    +213        STRICT_CAST = False
    +214
    +215        FUNCTIONS = {
    +216            **parser.Parser.FUNCTIONS,  # type: ignore
    +217            "APPROX_COUNT_DISTINCT": exp.ApproxDistinct.from_arg_list,
    +218            "COLLECT_LIST": exp.ArrayAgg.from_arg_list,
    +219            "DATE_ADD": lambda args: exp.TsOrDsAdd(
    +220                this=seq_get(args, 0),
    +221                expression=seq_get(args, 1),
    +222                unit=exp.Literal.string("DAY"),
    +223            ),
    +224            "DATEDIFF": lambda args: exp.DateDiff(
    +225                this=exp.TsOrDsToDate(this=seq_get(args, 0)),
    +226                expression=exp.TsOrDsToDate(this=seq_get(args, 1)),
    +227            ),
    +228            "DATE_SUB": lambda args: exp.TsOrDsAdd(
    +229                this=seq_get(args, 0),
    +230                expression=exp.Mul(
    +231                    this=seq_get(args, 1),
    +232                    expression=exp.Literal.number(-1),
    +233                ),
    +234                unit=exp.Literal.string("DAY"),
    +235            ),
    +236            "DATE_FORMAT": lambda args: format_time_lambda(exp.TimeToStr, "hive")(
    +237                [
    +238                    exp.TimeStrToTime(this=seq_get(args, 0)),
    +239                    seq_get(args, 1),
    +240                ]
    +241            ),
    +242            "DAY": lambda args: exp.Day(this=exp.TsOrDsToDate(this=seq_get(args, 0))),
    +243            "FROM_UNIXTIME": format_time_lambda(exp.UnixToStr, "hive", True),
    +244            "GET_JSON_OBJECT": exp.JSONExtractScalar.from_arg_list,
    +245            "LOCATE": locate_to_strposition,
    +246            "MAP": parse_var_map,
    +247            "MONTH": lambda args: exp.Month(this=exp.TsOrDsToDate.from_arg_list(args)),
    +248            "PERCENTILE": exp.Quantile.from_arg_list,
    +249            "PERCENTILE_APPROX": exp.ApproxQuantile.from_arg_list,
    +250            "COLLECT_SET": exp.SetAgg.from_arg_list,
    +251            "SIZE": exp.ArraySize.from_arg_list,
    +252            "SPLIT": exp.RegexpSplit.from_arg_list,
    +253            "TO_DATE": format_time_lambda(exp.TsOrDsToDate, "hive"),
    +254            "TO_JSON": exp.JSONFormat.from_arg_list,
    +255            "UNIX_TIMESTAMP": format_time_lambda(exp.StrToUnix, "hive", True),
    +256            "YEAR": lambda args: exp.Year(this=exp.TsOrDsToDate.from_arg_list(args)),
    +257        }
    +258
    +259        PROPERTY_PARSERS = {
    +260            **parser.Parser.PROPERTY_PARSERS,  # type: ignore
    +261            "WITH SERDEPROPERTIES": lambda self: exp.SerdeProperties(
    +262                expressions=self._parse_wrapped_csv(self._parse_property)
    +263            ),
    +264        }
    +265
    +266    class Generator(generator.Generator):
    +267        LIMIT_FETCH = "LIMIT"
    +268        TABLESAMPLE_WITH_METHOD = False
    +269        TABLESAMPLE_SIZE_IS_PERCENT = True
    +270        JOIN_HINTS = False
    +271        TABLE_HINTS = False
    +272
    +273        TYPE_MAPPING = {
    +274            **generator.Generator.TYPE_MAPPING,  # type: ignore
    +275            exp.DataType.Type.TEXT: "STRING",
    +276            exp.DataType.Type.DATETIME: "TIMESTAMP",
    +277            exp.DataType.Type.VARBINARY: "BINARY",
    +278            exp.DataType.Type.TIMESTAMPTZ: "TIMESTAMP",
    +279            exp.DataType.Type.BIT: "BOOLEAN",
    +280        }
    +281
    +282        TRANSFORMS = {
    +283            **generator.Generator.TRANSFORMS,  # type: ignore
    +284            **transforms.UNALIAS_GROUP,  # type: ignore
    +285            **transforms.ELIMINATE_QUALIFY,  # type: ignore
    +286            exp.Select: transforms.preprocess(
    +287                [transforms.eliminate_qualify, transforms.unnest_to_explode]
    +288            ),
    +289            exp.Property: _property_sql,
    +290            exp.ApproxDistinct: approx_count_distinct_sql,
    +291            exp.ArrayConcat: rename_func("CONCAT"),
    +292            exp.ArraySize: rename_func("SIZE"),
    +293            exp.ArraySort: _array_sort,
    +294            exp.With: no_recursive_cte_sql,
    +295            exp.DateAdd: _add_date_sql,
    +296            exp.DateDiff: _date_diff_sql,
    +297            exp.DateStrToDate: rename_func("TO_DATE"),
    +298            exp.DateSub: _add_date_sql,
    +299            exp.DateToDi: lambda self, e: f"CAST(DATE_FORMAT({self.sql(e, 'this')}, {Hive.dateint_format}) AS INT)",
    +300            exp.DiToDate: lambda self, e: f"TO_DATE(CAST({self.sql(e, 'this')} AS STRING), {Hive.dateint_format})",
    +301            exp.FileFormatProperty: lambda self, e: f"STORED AS {self.sql(e, 'this') if isinstance(e.this, exp.InputOutputFormat) else e.name.upper()}",
    +302            exp.If: if_sql,
    +303            exp.Index: _index_sql,
    +304            exp.ILike: no_ilike_sql,
    +305            exp.JSONExtract: rename_func("GET_JSON_OBJECT"),
    +306            exp.JSONExtractScalar: rename_func("GET_JSON_OBJECT"),
    +307            exp.JSONFormat: rename_func("TO_JSON"),
    +308            exp.Map: var_map_sql,
    +309            exp.Max: max_or_greatest,
    +310            exp.Min: min_or_least,
    +311            exp.VarMap: var_map_sql,
    +312            exp.Create: create_with_partitions_sql,
    +313            exp.Quantile: rename_func("PERCENTILE"),
    +314            exp.ApproxQuantile: rename_func("PERCENTILE_APPROX"),
    +315            exp.RegexpLike: lambda self, e: self.binary(e, "RLIKE"),
    +316            exp.RegexpSplit: rename_func("SPLIT"),
    +317            exp.SafeDivide: no_safe_divide_sql,
    +318            exp.SchemaCommentProperty: lambda self, e: self.naked_property(e),
    +319            exp.SetAgg: rename_func("COLLECT_SET"),
    +320            exp.Split: lambda self, e: f"SPLIT({self.sql(e, 'this')}, CONCAT('\\\\Q', {self.sql(e, 'expression')}))",
    +321            exp.StrPosition: strposition_to_locate_sql,
    +322            exp.StrToDate: _str_to_date,
    +323            exp.StrToTime: _str_to_time,
    +324            exp.StrToUnix: _str_to_unix,
    +325            exp.StructExtract: struct_extract_sql,
    +326            exp.TableFormatProperty: lambda self, e: f"USING {self.sql(e, 'this')}",
    +327            exp.TimeStrToDate: rename_func("TO_DATE"),
    +328            exp.TimeStrToTime: timestrtotime_sql,
    +329            exp.TimeStrToUnix: rename_func("UNIX_TIMESTAMP"),
    +330            exp.TimeToStr: _time_to_str,
    +331            exp.TimeToUnix: rename_func("UNIX_TIMESTAMP"),
    +332            exp.TsOrDiToDi: lambda self, e: f"CAST(SUBSTR(REPLACE(CAST({self.sql(e, 'this')} AS STRING), '-', ''), 1, 8) AS INT)",
    +333            exp.TsOrDsAdd: lambda self, e: f"DATE_ADD({self.sql(e, 'this')}, {self.sql(e, 'expression')})",
    +334            exp.TsOrDsToDate: _to_date_sql,
    +335            exp.TryCast: no_trycast_sql,
    +336            exp.UnixToStr: lambda self, e: self.func(
    +337                "FROM_UNIXTIME", e.this, _time_format(self, e)
    +338            ),
    +339            exp.UnixToTime: rename_func("FROM_UNIXTIME"),
    +340            exp.UnixToTimeStr: rename_func("FROM_UNIXTIME"),
    +341            exp.PartitionedByProperty: lambda self, e: f"PARTITIONED BY {self.sql(e, 'this')}",
    +342            exp.RowFormatSerdeProperty: lambda self, e: f"ROW FORMAT SERDE {self.sql(e, 'this')}",
    +343            exp.SerdeProperties: lambda self, e: self.properties(e, prefix="WITH SERDEPROPERTIES"),
    +344            exp.NumberToStr: rename_func("FORMAT_NUMBER"),
    +345            exp.LastDateOfMonth: rename_func("LAST_DAY"),
    +346            exp.National: lambda self, e: self.sql(e, "this"),
    +347        }
    +348
    +349        PROPERTIES_LOCATION = {
    +350            **generator.Generator.PROPERTIES_LOCATION,  # type: ignore
    +351            exp.FileFormatProperty: exp.Properties.Location.POST_SCHEMA,
    +352            exp.PartitionedByProperty: exp.Properties.Location.POST_SCHEMA,
    +353            exp.TableFormatProperty: exp.Properties.Location.POST_SCHEMA,
    +354            exp.VolatileProperty: exp.Properties.Location.UNSUPPORTED,
    +355        }
    +356
    +357        def arrayagg_sql(self, expression: exp.ArrayAgg) -> str:
    +358            return self.func(
    +359                "COLLECT_LIST",
    +360                expression.this.this if isinstance(expression.this, exp.Order) else expression.this,
    +361            )
    +362
    +363        def with_properties(self, properties: exp.Properties) -> str:
    +364            return self.properties(
    +365                properties,
    +366                prefix=self.seg("TBLPROPERTIES"),
    +367            )
    +368
    +369        def datatype_sql(self, expression: exp.DataType) -> str:
    +370            if (
    +371                expression.this in (exp.DataType.Type.VARCHAR, exp.DataType.Type.NVARCHAR)
    +372                and not expression.expressions
    +373            ):
    +374                expression = exp.DataType.build("text")
    +375            elif expression.this in exp.DataType.TEMPORAL_TYPES:
    +376                expression = exp.DataType.build(expression.this)
    +377
    +378            return super().datatype_sql(expression)
     
    @@ -739,34 +746,33 @@
    -
    194    class Tokenizer(tokens.Tokenizer):
    -195        QUOTES = ["'", '"']
    -196        IDENTIFIERS = ["`"]
    -197        STRING_ESCAPES = ["\\"]
    -198        ENCODE = "utf-8"
    -199
    -200        KEYWORDS = {
    -201            **tokens.Tokenizer.KEYWORDS,
    -202            "ADD ARCHIVE": TokenType.COMMAND,
    -203            "ADD ARCHIVES": TokenType.COMMAND,
    -204            "ADD FILE": TokenType.COMMAND,
    -205            "ADD FILES": TokenType.COMMAND,
    -206            "ADD JAR": TokenType.COMMAND,
    -207            "ADD JARS": TokenType.COMMAND,
    -208            "MSCK REPAIR": TokenType.COMMAND,
    -209            "WITH SERDEPROPERTIES": TokenType.SERDE_PROPERTIES,
    -210        }
    -211
    -212        NUMERIC_LITERALS = {
    -213            "L": "BIGINT",
    -214            "S": "SMALLINT",
    -215            "Y": "TINYINT",
    -216            "D": "DOUBLE",
    -217            "F": "FLOAT",
    -218            "BD": "DECIMAL",
    -219        }
    -220
    -221        IDENTIFIER_CAN_START_WITH_DIGIT = True
    +            
    183    class Tokenizer(tokens.Tokenizer):
    +184        QUOTES = ["'", '"']
    +185        IDENTIFIERS = ["`"]
    +186        STRING_ESCAPES = ["\\"]
    +187        ENCODE = "utf-8"
    +188        IDENTIFIER_CAN_START_WITH_DIGIT = True
    +189
    +190        KEYWORDS = {
    +191            **tokens.Tokenizer.KEYWORDS,
    +192            "ADD ARCHIVE": TokenType.COMMAND,
    +193            "ADD ARCHIVES": TokenType.COMMAND,
    +194            "ADD FILE": TokenType.COMMAND,
    +195            "ADD FILES": TokenType.COMMAND,
    +196            "ADD JAR": TokenType.COMMAND,
    +197            "ADD JARS": TokenType.COMMAND,
    +198            "MSCK REPAIR": TokenType.COMMAND,
    +199            "WITH SERDEPROPERTIES": TokenType.SERDE_PROPERTIES,
    +200        }
    +201
    +202        NUMERIC_LITERALS = {
    +203            "L": "BIGINT",
    +204            "S": "SMALLINT",
    +205            "Y": "TINYINT",
    +206            "D": "DOUBLE",
    +207            "F": "FLOAT",
    +208            "BD": "DECIMAL",
    +209        }
     
    @@ -794,61 +800,60 @@
    -
    223    class Parser(parser.Parser):
    -224        STRICT_CAST = False
    -225
    -226        FUNCTIONS = {
    -227            **parser.Parser.FUNCTIONS,  # type: ignore
    -228            "APPROX_COUNT_DISTINCT": exp.ApproxDistinct.from_arg_list,
    -229            "COLLECT_LIST": exp.ArrayAgg.from_arg_list,
    -230            "DATE_ADD": lambda args: exp.TsOrDsAdd(
    -231                this=seq_get(args, 0),
    -232                expression=seq_get(args, 1),
    -233                unit=exp.Literal.string("DAY"),
    -234            ),
    -235            "DATEDIFF": lambda args: exp.DateDiff(
    -236                this=exp.TsOrDsToDate(this=seq_get(args, 0)),
    -237                expression=exp.TsOrDsToDate(this=seq_get(args, 1)),
    -238            ),
    -239            "DATE_SUB": lambda args: exp.TsOrDsAdd(
    -240                this=seq_get(args, 0),
    -241                expression=exp.Mul(
    -242                    this=seq_get(args, 1),
    -243                    expression=exp.Literal.number(-1),
    -244                ),
    -245                unit=exp.Literal.string("DAY"),
    -246            ),
    -247            "DATE_FORMAT": lambda args: format_time_lambda(exp.TimeToStr, "hive")(
    -248                [
    -249                    exp.TimeStrToTime(this=seq_get(args, 0)),
    -250                    seq_get(args, 1),
    -251                ]
    -252            ),
    -253            "DAY": lambda args: exp.Day(this=exp.TsOrDsToDate(this=seq_get(args, 0))),
    -254            "FROM_UNIXTIME": format_time_lambda(exp.UnixToStr, "hive", True),
    -255            "GET_JSON_OBJECT": exp.JSONExtractScalar.from_arg_list,
    -256            "LOCATE": locate_to_strposition,
    -257            "MAP": parse_var_map,
    -258            "MONTH": lambda args: exp.Month(this=exp.TsOrDsToDate.from_arg_list(args)),
    -259            "PERCENTILE": exp.Quantile.from_arg_list,
    -260            "PERCENTILE_APPROX": exp.ApproxQuantile.from_arg_list,
    -261            "COLLECT_SET": exp.SetAgg.from_arg_list,
    -262            "SIZE": exp.ArraySize.from_arg_list,
    -263            "SPLIT": exp.RegexpSplit.from_arg_list,
    -264            "TO_DATE": format_time_lambda(exp.TsOrDsToDate, "hive"),
    -265            "TO_JSON": exp.JSONFormat.from_arg_list,
    -266            "UNIX_TIMESTAMP": format_time_lambda(exp.StrToUnix, "hive", True),
    -267            "YEAR": lambda args: exp.Year(this=exp.TsOrDsToDate.from_arg_list(args)),
    -268        }
    -269
    -270        PROPERTY_PARSERS = {
    -271            **parser.Parser.PROPERTY_PARSERS,  # type: ignore
    -272            "WITH SERDEPROPERTIES": lambda self: exp.SerdeProperties(
    -273                expressions=self._parse_wrapped_csv(self._parse_property)
    -274            ),
    -275        }
    -276
    -277        LOG_DEFAULTS_TO_LN = True
    +            
    211    class Parser(parser.Parser):
    +212        LOG_DEFAULTS_TO_LN = True
    +213        STRICT_CAST = False
    +214
    +215        FUNCTIONS = {
    +216            **parser.Parser.FUNCTIONS,  # type: ignore
    +217            "APPROX_COUNT_DISTINCT": exp.ApproxDistinct.from_arg_list,
    +218            "COLLECT_LIST": exp.ArrayAgg.from_arg_list,
    +219            "DATE_ADD": lambda args: exp.TsOrDsAdd(
    +220                this=seq_get(args, 0),
    +221                expression=seq_get(args, 1),
    +222                unit=exp.Literal.string("DAY"),
    +223            ),
    +224            "DATEDIFF": lambda args: exp.DateDiff(
    +225                this=exp.TsOrDsToDate(this=seq_get(args, 0)),
    +226                expression=exp.TsOrDsToDate(this=seq_get(args, 1)),
    +227            ),
    +228            "DATE_SUB": lambda args: exp.TsOrDsAdd(
    +229                this=seq_get(args, 0),
    +230                expression=exp.Mul(
    +231                    this=seq_get(args, 1),
    +232                    expression=exp.Literal.number(-1),
    +233                ),
    +234                unit=exp.Literal.string("DAY"),
    +235            ),
    +236            "DATE_FORMAT": lambda args: format_time_lambda(exp.TimeToStr, "hive")(
    +237                [
    +238                    exp.TimeStrToTime(this=seq_get(args, 0)),
    +239                    seq_get(args, 1),
    +240                ]
    +241            ),
    +242            "DAY": lambda args: exp.Day(this=exp.TsOrDsToDate(this=seq_get(args, 0))),
    +243            "FROM_UNIXTIME": format_time_lambda(exp.UnixToStr, "hive", True),
    +244            "GET_JSON_OBJECT": exp.JSONExtractScalar.from_arg_list,
    +245            "LOCATE": locate_to_strposition,
    +246            "MAP": parse_var_map,
    +247            "MONTH": lambda args: exp.Month(this=exp.TsOrDsToDate.from_arg_list(args)),
    +248            "PERCENTILE": exp.Quantile.from_arg_list,
    +249            "PERCENTILE_APPROX": exp.ApproxQuantile.from_arg_list,
    +250            "COLLECT_SET": exp.SetAgg.from_arg_list,
    +251            "SIZE": exp.ArraySize.from_arg_list,
    +252            "SPLIT": exp.RegexpSplit.from_arg_list,
    +253            "TO_DATE": format_time_lambda(exp.TsOrDsToDate, "hive"),
    +254            "TO_JSON": exp.JSONFormat.from_arg_list,
    +255            "UNIX_TIMESTAMP": format_time_lambda(exp.StrToUnix, "hive", True),
    +256            "YEAR": lambda args: exp.Year(this=exp.TsOrDsToDate.from_arg_list(args)),
    +257        }
    +258
    +259        PROPERTY_PARSERS = {
    +260            **parser.Parser.PROPERTY_PARSERS,  # type: ignore
    +261            "WITH SERDEPROPERTIES": lambda self: exp.SerdeProperties(
    +262                expressions=self._parse_wrapped_csv(self._parse_property)
    +263            ),
    +264        }
     
    @@ -905,108 +910,119 @@ Default: "nulls_are_small"
    -
    279    class Generator(generator.Generator):
    -280        TYPE_MAPPING = {
    -281            **generator.Generator.TYPE_MAPPING,  # type: ignore
    -282            exp.DataType.Type.TEXT: "STRING",
    -283            exp.DataType.Type.DATETIME: "TIMESTAMP",
    -284            exp.DataType.Type.VARBINARY: "BINARY",
    -285            exp.DataType.Type.TIMESTAMPTZ: "TIMESTAMP",
    -286        }
    -287
    -288        TRANSFORMS = {
    -289            **generator.Generator.TRANSFORMS,  # type: ignore
    -290            **transforms.UNALIAS_GROUP,  # type: ignore
    -291            **transforms.ELIMINATE_QUALIFY,  # type: ignore
    -292            exp.Property: _property_sql,
    -293            exp.ApproxDistinct: approx_count_distinct_sql,
    -294            exp.ArrayConcat: rename_func("CONCAT"),
    -295            exp.ArraySize: rename_func("SIZE"),
    -296            exp.ArraySort: _array_sort,
    -297            exp.With: no_recursive_cte_sql,
    -298            exp.DateAdd: _add_date_sql,
    -299            exp.DateDiff: _date_diff_sql,
    -300            exp.DateStrToDate: rename_func("TO_DATE"),
    -301            exp.DateToDi: lambda self, e: f"CAST(DATE_FORMAT({self.sql(e, 'this')}, {Hive.dateint_format}) AS INT)",
    -302            exp.DiToDate: lambda self, e: f"TO_DATE(CAST({self.sql(e, 'this')} AS STRING), {Hive.dateint_format})",
    -303            exp.FileFormatProperty: lambda self, e: f"STORED AS {e.name.upper()}",
    -304            exp.If: if_sql,
    -305            exp.Index: _index_sql,
    -306            exp.ILike: no_ilike_sql,
    -307            exp.Join: _unnest_to_explode_sql,
    -308            exp.JSONExtract: rename_func("GET_JSON_OBJECT"),
    -309            exp.JSONExtractScalar: rename_func("GET_JSON_OBJECT"),
    -310            exp.JSONFormat: rename_func("TO_JSON"),
    -311            exp.Map: var_map_sql,
    -312            exp.Max: max_or_greatest,
    -313            exp.Min: min_or_least,
    -314            exp.VarMap: var_map_sql,
    -315            exp.Create: create_with_partitions_sql,
    -316            exp.Quantile: rename_func("PERCENTILE"),
    -317            exp.ApproxQuantile: rename_func("PERCENTILE_APPROX"),
    -318            exp.RegexpLike: lambda self, e: self.binary(e, "RLIKE"),
    -319            exp.RegexpSplit: rename_func("SPLIT"),
    -320            exp.SafeDivide: no_safe_divide_sql,
    -321            exp.SchemaCommentProperty: lambda self, e: self.naked_property(e),
    -322            exp.SetAgg: rename_func("COLLECT_SET"),
    -323            exp.Split: lambda self, e: f"SPLIT({self.sql(e, 'this')}, CONCAT('\\\\Q', {self.sql(e, 'expression')}))",
    -324            exp.StrPosition: strposition_to_locate_sql,
    -325            exp.StrToDate: _str_to_date,
    -326            exp.StrToTime: _str_to_time,
    -327            exp.StrToUnix: _str_to_unix,
    -328            exp.StructExtract: struct_extract_sql,
    -329            exp.TableFormatProperty: lambda self, e: f"USING {self.sql(e, 'this')}",
    -330            exp.TimeStrToDate: rename_func("TO_DATE"),
    -331            exp.TimeStrToTime: timestrtotime_sql,
    -332            exp.TimeStrToUnix: rename_func("UNIX_TIMESTAMP"),
    -333            exp.TimeToStr: _time_to_str,
    -334            exp.TimeToUnix: rename_func("UNIX_TIMESTAMP"),
    -335            exp.TsOrDiToDi: lambda self, e: f"CAST(SUBSTR(REPLACE(CAST({self.sql(e, 'this')} AS STRING), '-', ''), 1, 8) AS INT)",
    -336            exp.TsOrDsAdd: lambda self, e: f"DATE_ADD({self.sql(e, 'this')}, {self.sql(e, 'expression')})",
    -337            exp.TsOrDsToDate: _to_date_sql,
    -338            exp.TryCast: no_trycast_sql,
    -339            exp.UnixToStr: lambda self, e: self.func(
    -340                "FROM_UNIXTIME", e.this, _time_format(self, e)
    -341            ),
    -342            exp.UnixToTime: rename_func("FROM_UNIXTIME"),
    -343            exp.UnixToTimeStr: rename_func("FROM_UNIXTIME"),
    -344            exp.PartitionedByProperty: lambda self, e: f"PARTITIONED BY {self.sql(e, 'this')}",
    -345            exp.RowFormatSerdeProperty: lambda self, e: f"ROW FORMAT SERDE {self.sql(e, 'this')}",
    -346            exp.SerdeProperties: lambda self, e: self.properties(e, prefix="WITH SERDEPROPERTIES"),
    -347            exp.NumberToStr: rename_func("FORMAT_NUMBER"),
    -348            exp.LastDateOfMonth: rename_func("LAST_DAY"),
    -349        }
    -350
    -351        PROPERTIES_LOCATION = {
    -352            **generator.Generator.PROPERTIES_LOCATION,  # type: ignore
    -353            exp.FileFormatProperty: exp.Properties.Location.POST_SCHEMA,
    -354            exp.PartitionedByProperty: exp.Properties.Location.POST_SCHEMA,
    -355            exp.TableFormatProperty: exp.Properties.Location.POST_SCHEMA,
    -356        }
    -357
    -358        LIMIT_FETCH = "LIMIT"
    -359
    -360        def arrayagg_sql(self, expression: exp.ArrayAgg) -> str:
    -361            return self.func(
    -362                "COLLECT_LIST",
    -363                expression.this.this if isinstance(expression.this, exp.Order) else expression.this,
    -364            )
    -365
    -366        def with_properties(self, properties: exp.Properties) -> str:
    -367            return self.properties(
    -368                properties,
    -369                prefix=self.seg("TBLPROPERTIES"),
    -370            )
    -371
    -372        def datatype_sql(self, expression: exp.DataType) -> str:
    -373            if (
    -374                expression.this in (exp.DataType.Type.VARCHAR, exp.DataType.Type.NVARCHAR)
    -375                and not expression.expressions
    -376            ):
    -377                expression = exp.DataType.build("text")
    -378            elif expression.this in exp.DataType.TEMPORAL_TYPES:
    -379                expression = exp.DataType.build(expression.this)
    -380            return super().datatype_sql(expression)
    +            
    266    class Generator(generator.Generator):
    +267        LIMIT_FETCH = "LIMIT"
    +268        TABLESAMPLE_WITH_METHOD = False
    +269        TABLESAMPLE_SIZE_IS_PERCENT = True
    +270        JOIN_HINTS = False
    +271        TABLE_HINTS = False
    +272
    +273        TYPE_MAPPING = {
    +274            **generator.Generator.TYPE_MAPPING,  # type: ignore
    +275            exp.DataType.Type.TEXT: "STRING",
    +276            exp.DataType.Type.DATETIME: "TIMESTAMP",
    +277            exp.DataType.Type.VARBINARY: "BINARY",
    +278            exp.DataType.Type.TIMESTAMPTZ: "TIMESTAMP",
    +279            exp.DataType.Type.BIT: "BOOLEAN",
    +280        }
    +281
    +282        TRANSFORMS = {
    +283            **generator.Generator.TRANSFORMS,  # type: ignore
    +284            **transforms.UNALIAS_GROUP,  # type: ignore
    +285            **transforms.ELIMINATE_QUALIFY,  # type: ignore
    +286            exp.Select: transforms.preprocess(
    +287                [transforms.eliminate_qualify, transforms.unnest_to_explode]
    +288            ),
    +289            exp.Property: _property_sql,
    +290            exp.ApproxDistinct: approx_count_distinct_sql,
    +291            exp.ArrayConcat: rename_func("CONCAT"),
    +292            exp.ArraySize: rename_func("SIZE"),
    +293            exp.ArraySort: _array_sort,
    +294            exp.With: no_recursive_cte_sql,
    +295            exp.DateAdd: _add_date_sql,
    +296            exp.DateDiff: _date_diff_sql,
    +297            exp.DateStrToDate: rename_func("TO_DATE"),
    +298            exp.DateSub: _add_date_sql,
    +299            exp.DateToDi: lambda self, e: f"CAST(DATE_FORMAT({self.sql(e, 'this')}, {Hive.dateint_format}) AS INT)",
    +300            exp.DiToDate: lambda self, e: f"TO_DATE(CAST({self.sql(e, 'this')} AS STRING), {Hive.dateint_format})",
    +301            exp.FileFormatProperty: lambda self, e: f"STORED AS {self.sql(e, 'this') if isinstance(e.this, exp.InputOutputFormat) else e.name.upper()}",
    +302            exp.If: if_sql,
    +303            exp.Index: _index_sql,
    +304            exp.ILike: no_ilike_sql,
    +305            exp.JSONExtract: rename_func("GET_JSON_OBJECT"),
    +306            exp.JSONExtractScalar: rename_func("GET_JSON_OBJECT"),
    +307            exp.JSONFormat: rename_func("TO_JSON"),
    +308            exp.Map: var_map_sql,
    +309            exp.Max: max_or_greatest,
    +310            exp.Min: min_or_least,
    +311            exp.VarMap: var_map_sql,
    +312            exp.Create: create_with_partitions_sql,
    +313            exp.Quantile: rename_func("PERCENTILE"),
    +314            exp.ApproxQuantile: rename_func("PERCENTILE_APPROX"),
    +315            exp.RegexpLike: lambda self, e: self.binary(e, "RLIKE"),
    +316            exp.RegexpSplit: rename_func("SPLIT"),
    +317            exp.SafeDivide: no_safe_divide_sql,
    +318            exp.SchemaCommentProperty: lambda self, e: self.naked_property(e),
    +319            exp.SetAgg: rename_func("COLLECT_SET"),
    +320            exp.Split: lambda self, e: f"SPLIT({self.sql(e, 'this')}, CONCAT('\\\\Q', {self.sql(e, 'expression')}))",
    +321            exp.StrPosition: strposition_to_locate_sql,
    +322            exp.StrToDate: _str_to_date,
    +323            exp.StrToTime: _str_to_time,
    +324            exp.StrToUnix: _str_to_unix,
    +325            exp.StructExtract: struct_extract_sql,
    +326            exp.TableFormatProperty: lambda self, e: f"USING {self.sql(e, 'this')}",
    +327            exp.TimeStrToDate: rename_func("TO_DATE"),
    +328            exp.TimeStrToTime: timestrtotime_sql,
    +329            exp.TimeStrToUnix: rename_func("UNIX_TIMESTAMP"),
    +330            exp.TimeToStr: _time_to_str,
    +331            exp.TimeToUnix: rename_func("UNIX_TIMESTAMP"),
    +332            exp.TsOrDiToDi: lambda self, e: f"CAST(SUBSTR(REPLACE(CAST({self.sql(e, 'this')} AS STRING), '-', ''), 1, 8) AS INT)",
    +333            exp.TsOrDsAdd: lambda self, e: f"DATE_ADD({self.sql(e, 'this')}, {self.sql(e, 'expression')})",
    +334            exp.TsOrDsToDate: _to_date_sql,
    +335            exp.TryCast: no_trycast_sql,
    +336            exp.UnixToStr: lambda self, e: self.func(
    +337                "FROM_UNIXTIME", e.this, _time_format(self, e)
    +338            ),
    +339            exp.UnixToTime: rename_func("FROM_UNIXTIME"),
    +340            exp.UnixToTimeStr: rename_func("FROM_UNIXTIME"),
    +341            exp.PartitionedByProperty: lambda self, e: f"PARTITIONED BY {self.sql(e, 'this')}",
    +342            exp.RowFormatSerdeProperty: lambda self, e: f"ROW FORMAT SERDE {self.sql(e, 'this')}",
    +343            exp.SerdeProperties: lambda self, e: self.properties(e, prefix="WITH SERDEPROPERTIES"),
    +344            exp.NumberToStr: rename_func("FORMAT_NUMBER"),
    +345            exp.LastDateOfMonth: rename_func("LAST_DAY"),
    +346            exp.National: lambda self, e: self.sql(e, "this"),
    +347        }
    +348
    +349        PROPERTIES_LOCATION = {
    +350            **generator.Generator.PROPERTIES_LOCATION,  # type: ignore
    +351            exp.FileFormatProperty: exp.Properties.Location.POST_SCHEMA,
    +352            exp.PartitionedByProperty: exp.Properties.Location.POST_SCHEMA,
    +353            exp.TableFormatProperty: exp.Properties.Location.POST_SCHEMA,
    +354            exp.VolatileProperty: exp.Properties.Location.UNSUPPORTED,
    +355        }
    +356
    +357        def arrayagg_sql(self, expression: exp.ArrayAgg) -> str:
    +358            return self.func(
    +359                "COLLECT_LIST",
    +360                expression.this.this if isinstance(expression.this, exp.Order) else expression.this,
    +361            )
    +362
    +363        def with_properties(self, properties: exp.Properties) -> str:
    +364            return self.properties(
    +365                properties,
    +366                prefix=self.seg("TBLPROPERTIES"),
    +367            )
    +368
    +369        def datatype_sql(self, expression: exp.DataType) -> str:
    +370            if (
    +371                expression.this in (exp.DataType.Type.VARCHAR, exp.DataType.Type.NVARCHAR)
    +372                and not expression.expressions
    +373            ):
    +374                expression = exp.DataType.build("text")
    +375            elif expression.this in exp.DataType.TEMPORAL_TYPES:
    +376                expression = exp.DataType.build(expression.this)
    +377
    +378            return super().datatype_sql(expression)
     
    @@ -1065,11 +1081,11 @@ Default: True
    -
    360        def arrayagg_sql(self, expression: exp.ArrayAgg) -> str:
    -361            return self.func(
    -362                "COLLECT_LIST",
    -363                expression.this.this if isinstance(expression.this, exp.Order) else expression.this,
    -364            )
    +            
    357        def arrayagg_sql(self, expression: exp.ArrayAgg) -> str:
    +358            return self.func(
    +359                "COLLECT_LIST",
    +360                expression.this.this if isinstance(expression.this, exp.Order) else expression.this,
    +361            )
     
    @@ -1087,11 +1103,11 @@ Default: True
    -
    366        def with_properties(self, properties: exp.Properties) -> str:
    -367            return self.properties(
    -368                properties,
    -369                prefix=self.seg("TBLPROPERTIES"),
    -370            )
    +            
    363        def with_properties(self, properties: exp.Properties) -> str:
    +364            return self.properties(
    +365                properties,
    +366                prefix=self.seg("TBLPROPERTIES"),
    +367            )
     
    @@ -1109,15 +1125,16 @@ Default: True
    -
    372        def datatype_sql(self, expression: exp.DataType) -> str:
    -373            if (
    -374                expression.this in (exp.DataType.Type.VARCHAR, exp.DataType.Type.NVARCHAR)
    -375                and not expression.expressions
    -376            ):
    -377                expression = exp.DataType.build("text")
    -378            elif expression.this in exp.DataType.TEMPORAL_TYPES:
    -379                expression = exp.DataType.build(expression.this)
    -380            return super().datatype_sql(expression)
    +            
    369        def datatype_sql(self, expression: exp.DataType) -> str:
    +370            if (
    +371                expression.this in (exp.DataType.Type.VARCHAR, exp.DataType.Type.NVARCHAR)
    +372                and not expression.expressions
    +373            ):
    +374                expression = exp.DataType.build("text")
    +375            elif expression.this in exp.DataType.TEMPORAL_TYPES:
    +376                expression = exp.DataType.build(expression.this)
    +377
    +378            return super().datatype_sql(expression)
     
    @@ -1161,6 +1178,7 @@ Default: True
    tablealias_sql
    bitstring_sql
    hexstring_sql
    +
    bytestring_sql
    directory_sql
    delete_sql
    drop_sql
    @@ -1171,6 +1189,7 @@ Default: True
    hint_sql
    index_sql
    identifier_sql
    +
    inputoutputformat_sql
    national_sql
    partition_sql
    properties_sql
    @@ -1195,6 +1214,7 @@ Default: True
    intersect_op
    introducer_sql
    pseudotype_sql
    +
    onconflict_sql
    returning_sql
    rowformatdelimitedproperty_sql
    table_sql
    diff --git a/docs/sqlglot/dialects/mysql.html b/docs/sqlglot/dialects/mysql.html index b6d8558..d87f91a 100644 --- a/docs/sqlglot/dialects/mysql.html +++ b/docs/sqlglot/dialects/mysql.html @@ -3,7 +3,7 @@ - + sqlglot.dialects.mysql API documentation @@ -86,484 +86,483 @@
    4from sqlglot.dialects.dialect import ( 5 Dialect, 6 arrow_json_extract_scalar_sql, - 7 locate_to_strposition, - 8 max_or_greatest, - 9 min_or_least, - 10 no_ilike_sql, - 11 no_paren_current_date_sql, - 12 no_tablesample_sql, - 13 no_trycast_sql, - 14 rename_func, - 15 strposition_to_locate_sql, - 16) - 17from sqlglot.helper import seq_get - 18from sqlglot.tokens import TokenType - 19 - 20 - 21def _show_parser(*args, **kwargs): - 22 def _parse(self): - 23 return self._parse_show_mysql(*args, **kwargs) - 24 - 25 return _parse - 26 + 7 datestrtodate_sql, + 8 format_time_lambda, + 9 locate_to_strposition, + 10 max_or_greatest, + 11 min_or_least, + 12 no_ilike_sql, + 13 no_paren_current_date_sql, + 14 no_tablesample_sql, + 15 no_trycast_sql, + 16 parse_date_delta_with_interval, + 17 rename_func, + 18 strposition_to_locate_sql, + 19) + 20from sqlglot.helper import seq_get + 21from sqlglot.tokens import TokenType + 22 + 23 + 24def _show_parser(*args, **kwargs): + 25 def _parse(self): + 26 return self._parse_show_mysql(*args, **kwargs) 27 - 28def _date_trunc_sql(self, expression): - 29 expr = self.sql(expression, "this") - 30 unit = expression.text("unit") - 31 - 32 if unit == "day": - 33 return f"DATE({expr})" + 28 return _parse + 29 + 30 + 31def _date_trunc_sql(self, expression): + 32 expr = self.sql(expression, "this") + 33 unit = expression.text("unit") 34 - 35 if unit == "week": - 36 concat = f"CONCAT(YEAR({expr}), ' ', WEEK({expr}, 1), ' 1')" - 37 date_format = "%Y %u %w" - 38 elif unit == "month": - 39 concat = f"CONCAT(YEAR({expr}), ' ', MONTH({expr}), ' 1')" - 40 date_format = "%Y %c %e" - 41 elif unit == "quarter": - 42 concat = f"CONCAT(YEAR({expr}), ' ', QUARTER({expr}) * 3 - 2, ' 1')" + 35 if unit == "day": + 36 return f"DATE({expr})" + 37 + 38 if unit == "week": + 39 concat = f"CONCAT(YEAR({expr}), ' ', WEEK({expr}, 1), ' 1')" + 40 date_format = "%Y %u %w" + 41 elif unit == "month": + 42 concat = f"CONCAT(YEAR({expr}), ' ', MONTH({expr}), ' 1')" 43 date_format = "%Y %c %e" - 44 elif unit == "year": - 45 concat = f"CONCAT(YEAR({expr}), ' 1 1')" + 44 elif unit == "quarter": + 45 concat = f"CONCAT(YEAR({expr}), ' ', QUARTER({expr}) * 3 - 2, ' 1')" 46 date_format = "%Y %c %e" - 47 else: - 48 self.unsupported(f"Unexpected interval unit: {unit}") - 49 return f"DATE({expr})" - 50 - 51 return f"STR_TO_DATE({concat}, '{date_format}')" - 52 + 47 elif unit == "year": + 48 concat = f"CONCAT(YEAR({expr}), ' 1 1')" + 49 date_format = "%Y %c %e" + 50 else: + 51 self.unsupported(f"Unexpected interval unit: {unit}") + 52 return f"DATE({expr})" 53 - 54def _str_to_date(args): - 55 date_format = MySQL.format_time(seq_get(args, 1)) - 56 return exp.StrToDate(this=seq_get(args, 0), format=date_format) - 57 - 58 - 59def _str_to_date_sql(self, expression): - 60 date_format = self.format_time(expression) - 61 return f"STR_TO_DATE({self.sql(expression.this)}, {date_format})" - 62 - 63 - 64def _trim_sql(self, expression): - 65 target = self.sql(expression, "this") - 66 trim_type = self.sql(expression, "position") - 67 remove_chars = self.sql(expression, "expression") - 68 - 69 # Use TRIM/LTRIM/RTRIM syntax if the expression isn't mysql-specific - 70 if not remove_chars: - 71 return self.trim_sql(expression) - 72 - 73 trim_type = f"{trim_type} " if trim_type else "" - 74 remove_chars = f"{remove_chars} " if remove_chars else "" - 75 from_part = "FROM " if trim_type or remove_chars else "" - 76 return f"TRIM({trim_type}{remove_chars}{from_part}{target})" - 77 - 78 - 79def _date_add(expression_class): - 80 def func(args): - 81 interval = seq_get(args, 1) - 82 return expression_class( - 83 this=seq_get(args, 0), - 84 expression=interval.this, - 85 unit=exp.Literal.string(interval.text("unit").lower()), - 86 ) - 87 - 88 return func + 54 return f"STR_TO_DATE({concat}, '{date_format}')" + 55 + 56 + 57def _str_to_date(args): + 58 date_format = MySQL.format_time(seq_get(args, 1)) + 59 return exp.StrToDate(this=seq_get(args, 0), format=date_format) + 60 + 61 + 62def _str_to_date_sql(self, expression): + 63 date_format = self.format_time(expression) + 64 return f"STR_TO_DATE({self.sql(expression.this)}, {date_format})" + 65 + 66 + 67def _trim_sql(self, expression): + 68 target = self.sql(expression, "this") + 69 trim_type = self.sql(expression, "position") + 70 remove_chars = self.sql(expression, "expression") + 71 + 72 # Use TRIM/LTRIM/RTRIM syntax if the expression isn't mysql-specific + 73 if not remove_chars: + 74 return self.trim_sql(expression) + 75 + 76 trim_type = f"{trim_type} " if trim_type else "" + 77 remove_chars = f"{remove_chars} " if remove_chars else "" + 78 from_part = "FROM " if trim_type or remove_chars else "" + 79 return f"TRIM({trim_type}{remove_chars}{from_part}{target})" + 80 + 81 + 82def _date_add_sql(kind): + 83 def func(self, expression): + 84 this = self.sql(expression, "this") + 85 unit = expression.text("unit").upper() or "DAY" + 86 return ( + 87 f"DATE_{kind}({this}, {self.sql(exp.Interval(this=expression.expression, unit=unit))})" + 88 ) 89 - 90 - 91def _date_add_sql(kind): - 92 def func(self, expression): - 93 this = self.sql(expression, "this") - 94 unit = expression.text("unit").upper() or "DAY" - 95 return ( - 96 f"DATE_{kind}({this}, {self.sql(exp.Interval(this=expression.expression, unit=unit))})" - 97 ) - 98 - 99 return func -100 -101 -102class MySQL(Dialect): -103 time_format = "'%Y-%m-%d %T'" -104 -105 # https://prestodb.io/docs/current/functions/datetime.html#mysql-date-functions -106 time_mapping = { -107 "%M": "%B", -108 "%c": "%-m", -109 "%e": "%-d", -110 "%h": "%I", -111 "%i": "%M", -112 "%s": "%S", -113 "%S": "%S", -114 "%u": "%W", -115 "%k": "%-H", -116 "%l": "%-I", -117 "%T": "%H:%M:%S", -118 } + 90 return func + 91 + 92 + 93class MySQL(Dialect): + 94 time_format = "'%Y-%m-%d %T'" + 95 + 96 # https://prestodb.io/docs/current/functions/datetime.html#mysql-date-functions + 97 time_mapping = { + 98 "%M": "%B", + 99 "%c": "%-m", +100 "%e": "%-d", +101 "%h": "%I", +102 "%i": "%M", +103 "%s": "%S", +104 "%S": "%S", +105 "%u": "%W", +106 "%k": "%-H", +107 "%l": "%-I", +108 "%T": "%H:%M:%S", +109 "%W": "%a", +110 } +111 +112 class Tokenizer(tokens.Tokenizer): +113 QUOTES = ["'", '"'] +114 COMMENTS = ["--", "#", ("/*", "*/")] +115 IDENTIFIERS = ["`"] +116 STRING_ESCAPES = ["'", "\\"] +117 BIT_STRINGS = [("b'", "'"), ("B'", "'"), ("0b", "")] +118 HEX_STRINGS = [("x'", "'"), ("X'", "'"), ("0x", "")] 119 -120 class Tokenizer(tokens.Tokenizer): -121 QUOTES = ["'", '"'] -122 COMMENTS = ["--", "#", ("/*", "*/")] -123 IDENTIFIERS = ["`"] -124 STRING_ESCAPES = ["'", "\\"] -125 BIT_STRINGS = [("b'", "'"), ("B'", "'"), ("0b", "")] -126 HEX_STRINGS = [("x'", "'"), ("X'", "'"), ("0x", "")] -127 -128 KEYWORDS = { -129 **tokens.Tokenizer.KEYWORDS, -130 "MEDIUMTEXT": TokenType.MEDIUMTEXT, -131 "LONGTEXT": TokenType.LONGTEXT, -132 "MEDIUMBLOB": TokenType.MEDIUMBLOB, -133 "LONGBLOB": TokenType.LONGBLOB, -134 "START": TokenType.BEGIN, -135 "SEPARATOR": TokenType.SEPARATOR, -136 "_ARMSCII8": TokenType.INTRODUCER, -137 "_ASCII": TokenType.INTRODUCER, -138 "_BIG5": TokenType.INTRODUCER, -139 "_BINARY": TokenType.INTRODUCER, -140 "_CP1250": TokenType.INTRODUCER, -141 "_CP1251": TokenType.INTRODUCER, -142 "_CP1256": TokenType.INTRODUCER, -143 "_CP1257": TokenType.INTRODUCER, -144 "_CP850": TokenType.INTRODUCER, -145 "_CP852": TokenType.INTRODUCER, -146 "_CP866": TokenType.INTRODUCER, -147 "_CP932": TokenType.INTRODUCER, -148 "_DEC8": TokenType.INTRODUCER, -149 "_EUCJPMS": TokenType.INTRODUCER, -150 "_EUCKR": TokenType.INTRODUCER, -151 "_GB18030": TokenType.INTRODUCER, -152 "_GB2312": TokenType.INTRODUCER, -153 "_GBK": TokenType.INTRODUCER, -154 "_GEOSTD8": TokenType.INTRODUCER, -155 "_GREEK": TokenType.INTRODUCER, -156 "_HEBREW": TokenType.INTRODUCER, -157 "_HP8": TokenType.INTRODUCER, -158 "_KEYBCS2": TokenType.INTRODUCER, -159 "_KOI8R": TokenType.INTRODUCER, -160 "_KOI8U": TokenType.INTRODUCER, -161 "_LATIN1": TokenType.INTRODUCER, -162 "_LATIN2": TokenType.INTRODUCER, -163 "_LATIN5": TokenType.INTRODUCER, -164 "_LATIN7": TokenType.INTRODUCER, -165 "_MACCE": TokenType.INTRODUCER, -166 "_MACROMAN": TokenType.INTRODUCER, -167 "_SJIS": TokenType.INTRODUCER, -168 "_SWE7": TokenType.INTRODUCER, -169 "_TIS620": TokenType.INTRODUCER, -170 "_UCS2": TokenType.INTRODUCER, -171 "_UJIS": TokenType.INTRODUCER, -172 # https://dev.mysql.com/doc/refman/8.0/en/string-literals.html -173 "_UTF8": TokenType.INTRODUCER, -174 "_UTF16": TokenType.INTRODUCER, -175 "_UTF16LE": TokenType.INTRODUCER, -176 "_UTF32": TokenType.INTRODUCER, -177 "_UTF8MB3": TokenType.INTRODUCER, -178 "_UTF8MB4": TokenType.INTRODUCER, -179 "@@": TokenType.SESSION_PARAMETER, -180 } -181 -182 COMMANDS = tokens.Tokenizer.COMMANDS - {TokenType.SHOW} -183 -184 class Parser(parser.Parser): -185 FUNC_TOKENS = {*parser.Parser.FUNC_TOKENS, TokenType.SCHEMA, TokenType.DATABASE} # type: ignore -186 -187 FUNCTIONS = { -188 **parser.Parser.FUNCTIONS, # type: ignore -189 "DATE_ADD": _date_add(exp.DateAdd), -190 "DATE_SUB": _date_add(exp.DateSub), -191 "STR_TO_DATE": _str_to_date, -192 "LOCATE": locate_to_strposition, -193 "INSTR": lambda args: exp.StrPosition(substr=seq_get(args, 1), this=seq_get(args, 0)), -194 "LEFT": lambda args: exp.Substring( -195 this=seq_get(args, 0), start=exp.Literal.number(1), length=seq_get(args, 1) -196 ), -197 } -198 -199 FUNCTION_PARSERS = { -200 **parser.Parser.FUNCTION_PARSERS, # type: ignore -201 "GROUP_CONCAT": lambda self: self.expression( -202 exp.GroupConcat, -203 this=self._parse_lambda(), -204 separator=self._match(TokenType.SEPARATOR) and self._parse_field(), -205 ), -206 } -207 -208 PROPERTY_PARSERS = { -209 **parser.Parser.PROPERTY_PARSERS, # type: ignore -210 "ENGINE": lambda self: self._parse_property_assignment(exp.EngineProperty), -211 } -212 -213 STATEMENT_PARSERS = { -214 **parser.Parser.STATEMENT_PARSERS, # type: ignore -215 TokenType.SHOW: lambda self: self._parse_show(), -216 } -217 -218 SHOW_PARSERS = { -219 "BINARY LOGS": _show_parser("BINARY LOGS"), -220 "MASTER LOGS": _show_parser("BINARY LOGS"), -221 "BINLOG EVENTS": _show_parser("BINLOG EVENTS"), -222 "CHARACTER SET": _show_parser("CHARACTER SET"), -223 "CHARSET": _show_parser("CHARACTER SET"), -224 "COLLATION": _show_parser("COLLATION"), -225 "FULL COLUMNS": _show_parser("COLUMNS", target="FROM", full=True), -226 "COLUMNS": _show_parser("COLUMNS", target="FROM"), -227 "CREATE DATABASE": _show_parser("CREATE DATABASE", target=True), -228 "CREATE EVENT": _show_parser("CREATE EVENT", target=True), -229 "CREATE FUNCTION": _show_parser("CREATE FUNCTION", target=True), -230 "CREATE PROCEDURE": _show_parser("CREATE PROCEDURE", target=True), -231 "CREATE TABLE": _show_parser("CREATE TABLE", target=True), -232 "CREATE TRIGGER": _show_parser("CREATE TRIGGER", target=True), -233 "CREATE VIEW": _show_parser("CREATE VIEW", target=True), -234 "DATABASES": _show_parser("DATABASES"), -235 "ENGINE": _show_parser("ENGINE", target=True), -236 "STORAGE ENGINES": _show_parser("ENGINES"), -237 "ENGINES": _show_parser("ENGINES"), -238 "ERRORS": _show_parser("ERRORS"), -239 "EVENTS": _show_parser("EVENTS"), -240 "FUNCTION CODE": _show_parser("FUNCTION CODE", target=True), -241 "FUNCTION STATUS": _show_parser("FUNCTION STATUS"), -242 "GRANTS": _show_parser("GRANTS", target="FOR"), -243 "INDEX": _show_parser("INDEX", target="FROM"), -244 "MASTER STATUS": _show_parser("MASTER STATUS"), -245 "OPEN TABLES": _show_parser("OPEN TABLES"), -246 "PLUGINS": _show_parser("PLUGINS"), -247 "PROCEDURE CODE": _show_parser("PROCEDURE CODE", target=True), -248 "PROCEDURE STATUS": _show_parser("PROCEDURE STATUS"), -249 "PRIVILEGES": _show_parser("PRIVILEGES"), -250 "FULL PROCESSLIST": _show_parser("PROCESSLIST", full=True), -251 "PROCESSLIST": _show_parser("PROCESSLIST"), -252 "PROFILE": _show_parser("PROFILE"), -253 "PROFILES": _show_parser("PROFILES"), -254 "RELAYLOG EVENTS": _show_parser("RELAYLOG EVENTS"), -255 "REPLICAS": _show_parser("REPLICAS"), -256 "SLAVE HOSTS": _show_parser("REPLICAS"), -257 "REPLICA STATUS": _show_parser("REPLICA STATUS"), -258 "SLAVE STATUS": _show_parser("REPLICA STATUS"), -259 "GLOBAL STATUS": _show_parser("STATUS", global_=True), -260 "SESSION STATUS": _show_parser("STATUS"), -261 "STATUS": _show_parser("STATUS"), -262 "TABLE STATUS": _show_parser("TABLE STATUS"), -263 "FULL TABLES": _show_parser("TABLES", full=True), -264 "TABLES": _show_parser("TABLES"), -265 "TRIGGERS": _show_parser("TRIGGERS"), -266 "GLOBAL VARIABLES": _show_parser("VARIABLES", global_=True), -267 "SESSION VARIABLES": _show_parser("VARIABLES"), -268 "VARIABLES": _show_parser("VARIABLES"), -269 "WARNINGS": _show_parser("WARNINGS"), -270 } -271 -272 SET_PARSERS = { -273 **parser.Parser.SET_PARSERS, -274 "PERSIST": lambda self: self._parse_set_item_assignment("PERSIST"), -275 "PERSIST_ONLY": lambda self: self._parse_set_item_assignment("PERSIST_ONLY"), -276 "CHARACTER SET": lambda self: self._parse_set_item_charset("CHARACTER SET"), -277 "CHARSET": lambda self: self._parse_set_item_charset("CHARACTER SET"), -278 "NAMES": lambda self: self._parse_set_item_names(), -279 } -280 -281 PROFILE_TYPES = { -282 "ALL", -283 "BLOCK IO", -284 "CONTEXT SWITCHES", -285 "CPU", -286 "IPC", -287 "MEMORY", -288 "PAGE FAULTS", -289 "SOURCE", -290 "SWAPS", -291 } -292 -293 LOG_DEFAULTS_TO_LN = True -294 -295 def _parse_show_mysql(self, this, target=False, full=None, global_=None): -296 if target: -297 if isinstance(target, str): -298 self._match_text_seq(target) -299 target_id = self._parse_id_var() -300 else: -301 target_id = None -302 -303 log = self._parse_string() if self._match_text_seq("IN") else None -304 -305 if this in {"BINLOG EVENTS", "RELAYLOG EVENTS"}: -306 position = self._parse_number() if self._match_text_seq("FROM") else None -307 db = None -308 else: -309 position = None -310 db = None +120 KEYWORDS = { +121 **tokens.Tokenizer.KEYWORDS, +122 "CHARSET": TokenType.CHARACTER_SET, +123 "LONGBLOB": TokenType.LONGBLOB, +124 "LONGTEXT": TokenType.LONGTEXT, +125 "MEDIUMBLOB": TokenType.MEDIUMBLOB, +126 "MEDIUMTEXT": TokenType.MEDIUMTEXT, +127 "SEPARATOR": TokenType.SEPARATOR, +128 "START": TokenType.BEGIN, +129 "_ARMSCII8": TokenType.INTRODUCER, +130 "_ASCII": TokenType.INTRODUCER, +131 "_BIG5": TokenType.INTRODUCER, +132 "_BINARY": TokenType.INTRODUCER, +133 "_CP1250": TokenType.INTRODUCER, +134 "_CP1251": TokenType.INTRODUCER, +135 "_CP1256": TokenType.INTRODUCER, +136 "_CP1257": TokenType.INTRODUCER, +137 "_CP850": TokenType.INTRODUCER, +138 "_CP852": TokenType.INTRODUCER, +139 "_CP866": TokenType.INTRODUCER, +140 "_CP932": TokenType.INTRODUCER, +141 "_DEC8": TokenType.INTRODUCER, +142 "_EUCJPMS": TokenType.INTRODUCER, +143 "_EUCKR": TokenType.INTRODUCER, +144 "_GB18030": TokenType.INTRODUCER, +145 "_GB2312": TokenType.INTRODUCER, +146 "_GBK": TokenType.INTRODUCER, +147 "_GEOSTD8": TokenType.INTRODUCER, +148 "_GREEK": TokenType.INTRODUCER, +149 "_HEBREW": TokenType.INTRODUCER, +150 "_HP8": TokenType.INTRODUCER, +151 "_KEYBCS2": TokenType.INTRODUCER, +152 "_KOI8R": TokenType.INTRODUCER, +153 "_KOI8U": TokenType.INTRODUCER, +154 "_LATIN1": TokenType.INTRODUCER, +155 "_LATIN2": TokenType.INTRODUCER, +156 "_LATIN5": TokenType.INTRODUCER, +157 "_LATIN7": TokenType.INTRODUCER, +158 "_MACCE": TokenType.INTRODUCER, +159 "_MACROMAN": TokenType.INTRODUCER, +160 "_SJIS": TokenType.INTRODUCER, +161 "_SWE7": TokenType.INTRODUCER, +162 "_TIS620": TokenType.INTRODUCER, +163 "_UCS2": TokenType.INTRODUCER, +164 "_UJIS": TokenType.INTRODUCER, +165 # https://dev.mysql.com/doc/refman/8.0/en/string-literals.html +166 "_UTF8": TokenType.INTRODUCER, +167 "_UTF16": TokenType.INTRODUCER, +168 "_UTF16LE": TokenType.INTRODUCER, +169 "_UTF32": TokenType.INTRODUCER, +170 "_UTF8MB3": TokenType.INTRODUCER, +171 "_UTF8MB4": TokenType.INTRODUCER, +172 "@@": TokenType.SESSION_PARAMETER, +173 } +174 +175 COMMANDS = tokens.Tokenizer.COMMANDS - {TokenType.SHOW} +176 +177 class Parser(parser.Parser): +178 FUNC_TOKENS = {*parser.Parser.FUNC_TOKENS, TokenType.SCHEMA, TokenType.DATABASE} # type: ignore +179 +180 FUNCTIONS = { +181 **parser.Parser.FUNCTIONS, # type: ignore +182 "DATE_ADD": parse_date_delta_with_interval(exp.DateAdd), +183 "DATE_FORMAT": format_time_lambda(exp.TimeToStr, "mysql"), +184 "DATE_SUB": parse_date_delta_with_interval(exp.DateSub), +185 "INSTR": lambda args: exp.StrPosition(substr=seq_get(args, 1), this=seq_get(args, 0)), +186 "LEFT": lambda args: exp.Substring( +187 this=seq_get(args, 0), start=exp.Literal.number(1), length=seq_get(args, 1) +188 ), +189 "LOCATE": locate_to_strposition, +190 "STR_TO_DATE": _str_to_date, +191 } +192 +193 FUNCTION_PARSERS = { +194 **parser.Parser.FUNCTION_PARSERS, # type: ignore +195 "GROUP_CONCAT": lambda self: self.expression( +196 exp.GroupConcat, +197 this=self._parse_lambda(), +198 separator=self._match(TokenType.SEPARATOR) and self._parse_field(), +199 ), +200 } +201 +202 PROPERTY_PARSERS = { +203 **parser.Parser.PROPERTY_PARSERS, # type: ignore +204 "ENGINE": lambda self: self._parse_property_assignment(exp.EngineProperty), +205 } +206 +207 STATEMENT_PARSERS = { +208 **parser.Parser.STATEMENT_PARSERS, # type: ignore +209 TokenType.SHOW: lambda self: self._parse_show(), +210 } +211 +212 SHOW_PARSERS = { +213 "BINARY LOGS": _show_parser("BINARY LOGS"), +214 "MASTER LOGS": _show_parser("BINARY LOGS"), +215 "BINLOG EVENTS": _show_parser("BINLOG EVENTS"), +216 "CHARACTER SET": _show_parser("CHARACTER SET"), +217 "CHARSET": _show_parser("CHARACTER SET"), +218 "COLLATION": _show_parser("COLLATION"), +219 "FULL COLUMNS": _show_parser("COLUMNS", target="FROM", full=True), +220 "COLUMNS": _show_parser("COLUMNS", target="FROM"), +221 "CREATE DATABASE": _show_parser("CREATE DATABASE", target=True), +222 "CREATE EVENT": _show_parser("CREATE EVENT", target=True), +223 "CREATE FUNCTION": _show_parser("CREATE FUNCTION", target=True), +224 "CREATE PROCEDURE": _show_parser("CREATE PROCEDURE", target=True), +225 "CREATE TABLE": _show_parser("CREATE TABLE", target=True), +226 "CREATE TRIGGER": _show_parser("CREATE TRIGGER", target=True), +227 "CREATE VIEW": _show_parser("CREATE VIEW", target=True), +228 "DATABASES": _show_parser("DATABASES"), +229 "ENGINE": _show_parser("ENGINE", target=True), +230 "STORAGE ENGINES": _show_parser("ENGINES"), +231 "ENGINES": _show_parser("ENGINES"), +232 "ERRORS": _show_parser("ERRORS"), +233 "EVENTS": _show_parser("EVENTS"), +234 "FUNCTION CODE": _show_parser("FUNCTION CODE", target=True), +235 "FUNCTION STATUS": _show_parser("FUNCTION STATUS"), +236 "GRANTS": _show_parser("GRANTS", target="FOR"), +237 "INDEX": _show_parser("INDEX", target="FROM"), +238 "MASTER STATUS": _show_parser("MASTER STATUS"), +239 "OPEN TABLES": _show_parser("OPEN TABLES"), +240 "PLUGINS": _show_parser("PLUGINS"), +241 "PROCEDURE CODE": _show_parser("PROCEDURE CODE", target=True), +242 "PROCEDURE STATUS": _show_parser("PROCEDURE STATUS"), +243 "PRIVILEGES": _show_parser("PRIVILEGES"), +244 "FULL PROCESSLIST": _show_parser("PROCESSLIST", full=True), +245 "PROCESSLIST": _show_parser("PROCESSLIST"), +246 "PROFILE": _show_parser("PROFILE"), +247 "PROFILES": _show_parser("PROFILES"), +248 "RELAYLOG EVENTS": _show_parser("RELAYLOG EVENTS"), +249 "REPLICAS": _show_parser("REPLICAS"), +250 "SLAVE HOSTS": _show_parser("REPLICAS"), +251 "REPLICA STATUS": _show_parser("REPLICA STATUS"), +252 "SLAVE STATUS": _show_parser("REPLICA STATUS"), +253 "GLOBAL STATUS": _show_parser("STATUS", global_=True), +254 "SESSION STATUS": _show_parser("STATUS"), +255 "STATUS": _show_parser("STATUS"), +256 "TABLE STATUS": _show_parser("TABLE STATUS"), +257 "FULL TABLES": _show_parser("TABLES", full=True), +258 "TABLES": _show_parser("TABLES"), +259 "TRIGGERS": _show_parser("TRIGGERS"), +260 "GLOBAL VARIABLES": _show_parser("VARIABLES", global_=True), +261 "SESSION VARIABLES": _show_parser("VARIABLES"), +262 "VARIABLES": _show_parser("VARIABLES"), +263 "WARNINGS": _show_parser("WARNINGS"), +264 } +265 +266 SET_PARSERS = { +267 **parser.Parser.SET_PARSERS, +268 "PERSIST": lambda self: self._parse_set_item_assignment("PERSIST"), +269 "PERSIST_ONLY": lambda self: self._parse_set_item_assignment("PERSIST_ONLY"), +270 "CHARACTER SET": lambda self: self._parse_set_item_charset("CHARACTER SET"), +271 "CHARSET": lambda self: self._parse_set_item_charset("CHARACTER SET"), +272 "NAMES": lambda self: self._parse_set_item_names(), +273 } +274 +275 PROFILE_TYPES = { +276 "ALL", +277 "BLOCK IO", +278 "CONTEXT SWITCHES", +279 "CPU", +280 "IPC", +281 "MEMORY", +282 "PAGE FAULTS", +283 "SOURCE", +284 "SWAPS", +285 } +286 +287 LOG_DEFAULTS_TO_LN = True +288 +289 def _parse_show_mysql(self, this, target=False, full=None, global_=None): +290 if target: +291 if isinstance(target, str): +292 self._match_text_seq(target) +293 target_id = self._parse_id_var() +294 else: +295 target_id = None +296 +297 log = self._parse_string() if self._match_text_seq("IN") else None +298 +299 if this in {"BINLOG EVENTS", "RELAYLOG EVENTS"}: +300 position = self._parse_number() if self._match_text_seq("FROM") else None +301 db = None +302 else: +303 position = None +304 db = None +305 +306 if self._match(TokenType.FROM): +307 db = self._parse_id_var() +308 elif self._match(TokenType.DOT): +309 db = target_id +310 target_id = self._parse_id_var() 311 -312 if self._match(TokenType.FROM): -313 db = self._parse_id_var() -314 elif self._match(TokenType.DOT): -315 db = target_id -316 target_id = self._parse_id_var() -317 -318 channel = self._parse_id_var() if self._match_text_seq("FOR", "CHANNEL") else None -319 -320 like = self._parse_string() if self._match_text_seq("LIKE") else None -321 where = self._parse_where() -322 -323 if this == "PROFILE": -324 types = self._parse_csv(lambda: self._parse_var_from_options(self.PROFILE_TYPES)) -325 query = self._parse_number() if self._match_text_seq("FOR", "QUERY") else None -326 offset = self._parse_number() if self._match_text_seq("OFFSET") else None -327 limit = self._parse_number() if self._match_text_seq("LIMIT") else None -328 else: -329 types, query = None, None -330 offset, limit = self._parse_oldstyle_limit() -331 -332 mutex = True if self._match_text_seq("MUTEX") else None -333 mutex = False if self._match_text_seq("STATUS") else mutex -334 -335 return self.expression( -336 exp.Show, -337 this=this, -338 target=target_id, -339 full=full, -340 log=log, -341 position=position, -342 db=db, -343 channel=channel, -344 like=like, -345 where=where, -346 types=types, -347 query=query, -348 offset=offset, -349 limit=limit, -350 mutex=mutex, -351 **{"global": global_}, -352 ) -353 -354 def _parse_oldstyle_limit(self): -355 limit = None -356 offset = None -357 if self._match_text_seq("LIMIT"): -358 parts = self._parse_csv(self._parse_number) -359 if len(parts) == 1: -360 limit = parts[0] -361 elif len(parts) == 2: -362 limit = parts[1] -363 offset = parts[0] -364 return offset, limit -365 -366 def _parse_set_item_charset(self, kind): -367 this = self._parse_string() or self._parse_id_var() +312 channel = self._parse_id_var() if self._match_text_seq("FOR", "CHANNEL") else None +313 +314 like = self._parse_string() if self._match_text_seq("LIKE") else None +315 where = self._parse_where() +316 +317 if this == "PROFILE": +318 types = self._parse_csv(lambda: self._parse_var_from_options(self.PROFILE_TYPES)) +319 query = self._parse_number() if self._match_text_seq("FOR", "QUERY") else None +320 offset = self._parse_number() if self._match_text_seq("OFFSET") else None +321 limit = self._parse_number() if self._match_text_seq("LIMIT") else None +322 else: +323 types, query = None, None +324 offset, limit = self._parse_oldstyle_limit() +325 +326 mutex = True if self._match_text_seq("MUTEX") else None +327 mutex = False if self._match_text_seq("STATUS") else mutex +328 +329 return self.expression( +330 exp.Show, +331 this=this, +332 target=target_id, +333 full=full, +334 log=log, +335 position=position, +336 db=db, +337 channel=channel, +338 like=like, +339 where=where, +340 types=types, +341 query=query, +342 offset=offset, +343 limit=limit, +344 mutex=mutex, +345 **{"global": global_}, +346 ) +347 +348 def _parse_oldstyle_limit(self): +349 limit = None +350 offset = None +351 if self._match_text_seq("LIMIT"): +352 parts = self._parse_csv(self._parse_number) +353 if len(parts) == 1: +354 limit = parts[0] +355 elif len(parts) == 2: +356 limit = parts[1] +357 offset = parts[0] +358 return offset, limit +359 +360 def _parse_set_item_charset(self, kind): +361 this = self._parse_string() or self._parse_id_var() +362 +363 return self.expression( +364 exp.SetItem, +365 this=this, +366 kind=kind, +367 ) 368 -369 return self.expression( -370 exp.SetItem, -371 this=this, -372 kind=kind, -373 ) -374 -375 def _parse_set_item_names(self): -376 charset = self._parse_string() or self._parse_id_var() -377 if self._match_text_seq("COLLATE"): -378 collate = self._parse_string() or self._parse_id_var() -379 else: -380 collate = None -381 return self.expression( -382 exp.SetItem, -383 this=charset, -384 collate=collate, -385 kind="NAMES", -386 ) +369 def _parse_set_item_names(self): +370 charset = self._parse_string() or self._parse_id_var() +371 if self._match_text_seq("COLLATE"): +372 collate = self._parse_string() or self._parse_id_var() +373 else: +374 collate = None +375 return self.expression( +376 exp.SetItem, +377 this=charset, +378 collate=collate, +379 kind="NAMES", +380 ) +381 +382 class Generator(generator.Generator): +383 LOCKING_READS_SUPPORTED = True +384 NULL_ORDERING_SUPPORTED = False +385 JOIN_HINTS = False +386 TABLE_HINTS = False 387 -388 class Generator(generator.Generator): -389 LOCKING_READS_SUPPORTED = True -390 NULL_ORDERING_SUPPORTED = False -391 -392 TRANSFORMS = { -393 **generator.Generator.TRANSFORMS, # type: ignore -394 exp.CurrentDate: no_paren_current_date_sql, -395 exp.CurrentTimestamp: lambda *_: "CURRENT_TIMESTAMP", -396 exp.ILike: no_ilike_sql, -397 exp.JSONExtractScalar: arrow_json_extract_scalar_sql, -398 exp.Max: max_or_greatest, -399 exp.Min: min_or_least, -400 exp.TableSample: no_tablesample_sql, -401 exp.TryCast: no_trycast_sql, -402 exp.DateAdd: _date_add_sql("ADD"), -403 exp.DateDiff: lambda self, e: f"DATEDIFF({self.format_args(e.this, e.expression)})", -404 exp.DateSub: _date_add_sql("SUB"), -405 exp.DateTrunc: _date_trunc_sql, -406 exp.DayOfWeek: rename_func("DAYOFWEEK"), -407 exp.DayOfMonth: rename_func("DAYOFMONTH"), -408 exp.DayOfYear: rename_func("DAYOFYEAR"), -409 exp.WeekOfYear: rename_func("WEEKOFYEAR"), -410 exp.GroupConcat: lambda self, e: f"""GROUP_CONCAT({self.sql(e, "this")} SEPARATOR {self.sql(e, "separator") or "','"})""", -411 exp.StrToDate: _str_to_date_sql, -412 exp.StrToTime: _str_to_date_sql, -413 exp.Trim: _trim_sql, -414 exp.NullSafeEQ: lambda self, e: self.binary(e, "<=>"), -415 exp.NullSafeNEQ: lambda self, e: self.not_sql(self.binary(e, "<=>")), -416 exp.StrPosition: strposition_to_locate_sql, -417 } -418 -419 TYPE_MAPPING = generator.Generator.TYPE_MAPPING.copy() -420 TYPE_MAPPING.pop(exp.DataType.Type.MEDIUMTEXT) -421 TYPE_MAPPING.pop(exp.DataType.Type.LONGTEXT) -422 TYPE_MAPPING.pop(exp.DataType.Type.MEDIUMBLOB) -423 TYPE_MAPPING.pop(exp.DataType.Type.LONGBLOB) -424 -425 PROPERTIES_LOCATION = { -426 **generator.Generator.PROPERTIES_LOCATION, # type: ignore -427 exp.TransientProperty: exp.Properties.Location.UNSUPPORTED, -428 } -429 -430 LIMIT_FETCH = "LIMIT" -431 -432 def show_sql(self, expression: exp.Show) -> str: -433 this = f" {expression.name}" -434 full = " FULL" if expression.args.get("full") else "" -435 global_ = " GLOBAL" if expression.args.get("global") else "" -436 -437 target = self.sql(expression, "target") -438 target = f" {target}" if target else "" -439 if expression.name in {"COLUMNS", "INDEX"}: -440 target = f" FROM{target}" -441 elif expression.name == "GRANTS": -442 target = f" FOR{target}" -443 -444 db = self._prefixed_sql("FROM", expression, "db") -445 -446 like = self._prefixed_sql("LIKE", expression, "like") -447 where = self.sql(expression, "where") -448 -449 types = self.expressions(expression, key="types") -450 types = f" {types}" if types else types -451 query = self._prefixed_sql("FOR QUERY", expression, "query") -452 -453 if expression.name == "PROFILE": -454 offset = self._prefixed_sql("OFFSET", expression, "offset") -455 limit = self._prefixed_sql("LIMIT", expression, "limit") -456 else: -457 offset = "" -458 limit = self._oldstyle_limit_sql(expression) -459 -460 log = self._prefixed_sql("IN", expression, "log") -461 position = self._prefixed_sql("FROM", expression, "position") -462 -463 channel = self._prefixed_sql("FOR CHANNEL", expression, "channel") -464 -465 if expression.name == "ENGINE": -466 mutex_or_status = " MUTEX" if expression.args.get("mutex") else " STATUS" -467 else: -468 mutex_or_status = "" -469 -470 return f"SHOW{full}{global_}{this}{target}{types}{db}{query}{log}{position}{channel}{mutex_or_status}{like}{where}{offset}{limit}" -471 -472 def _prefixed_sql(self, prefix: str, expression: exp.Expression, arg: str) -> str: -473 sql = self.sql(expression, arg) -474 if not sql: -475 return "" -476 return f" {prefix} {sql}" -477 -478 def _oldstyle_limit_sql(self, expression: exp.Show) -> str: -479 limit = self.sql(expression, "limit") -480 offset = self.sql(expression, "offset") -481 if limit: -482 limit_offset = f"{offset}, {limit}" if offset else limit -483 return f" LIMIT {limit_offset}" -484 return "" +388 TRANSFORMS = { +389 **generator.Generator.TRANSFORMS, # type: ignore +390 exp.CurrentDate: no_paren_current_date_sql, +391 exp.DateDiff: lambda self, e: self.func("DATEDIFF", e.this, e.expression), +392 exp.DateAdd: _date_add_sql("ADD"), +393 exp.DateStrToDate: datestrtodate_sql, +394 exp.DateSub: _date_add_sql("SUB"), +395 exp.DateTrunc: _date_trunc_sql, +396 exp.DayOfMonth: rename_func("DAYOFMONTH"), +397 exp.DayOfWeek: rename_func("DAYOFWEEK"), +398 exp.DayOfYear: rename_func("DAYOFYEAR"), +399 exp.GroupConcat: lambda self, e: f"""GROUP_CONCAT({self.sql(e, "this")} SEPARATOR {self.sql(e, "separator") or "','"})""", +400 exp.ILike: no_ilike_sql, +401 exp.JSONExtractScalar: arrow_json_extract_scalar_sql, +402 exp.Max: max_or_greatest, +403 exp.Min: min_or_least, +404 exp.NullSafeEQ: lambda self, e: self.binary(e, "<=>"), +405 exp.NullSafeNEQ: lambda self, e: self.not_sql(self.binary(e, "<=>")), +406 exp.StrPosition: strposition_to_locate_sql, +407 exp.StrToDate: _str_to_date_sql, +408 exp.StrToTime: _str_to_date_sql, +409 exp.TableSample: no_tablesample_sql, +410 exp.TimeStrToUnix: rename_func("UNIX_TIMESTAMP"), +411 exp.TimeToStr: lambda self, e: self.func("DATE_FORMAT", e.this, self.format_time(e)), +412 exp.Trim: _trim_sql, +413 exp.TryCast: no_trycast_sql, +414 exp.WeekOfYear: rename_func("WEEKOFYEAR"), +415 } +416 +417 TYPE_MAPPING = generator.Generator.TYPE_MAPPING.copy() +418 TYPE_MAPPING.pop(exp.DataType.Type.MEDIUMTEXT) +419 TYPE_MAPPING.pop(exp.DataType.Type.LONGTEXT) +420 TYPE_MAPPING.pop(exp.DataType.Type.MEDIUMBLOB) +421 TYPE_MAPPING.pop(exp.DataType.Type.LONGBLOB) +422 +423 PROPERTIES_LOCATION = { +424 **generator.Generator.PROPERTIES_LOCATION, # type: ignore +425 exp.TransientProperty: exp.Properties.Location.UNSUPPORTED, +426 exp.VolatileProperty: exp.Properties.Location.UNSUPPORTED, +427 } +428 +429 LIMIT_FETCH = "LIMIT" +430 +431 def show_sql(self, expression: exp.Show) -> str: +432 this = f" {expression.name}" +433 full = " FULL" if expression.args.get("full") else "" +434 global_ = " GLOBAL" if expression.args.get("global") else "" +435 +436 target = self.sql(expression, "target") +437 target = f" {target}" if target else "" +438 if expression.name in {"COLUMNS", "INDEX"}: +439 target = f" FROM{target}" +440 elif expression.name == "GRANTS": +441 target = f" FOR{target}" +442 +443 db = self._prefixed_sql("FROM", expression, "db") +444 +445 like = self._prefixed_sql("LIKE", expression, "like") +446 where = self.sql(expression, "where") +447 +448 types = self.expressions(expression, key="types") +449 types = f" {types}" if types else types +450 query = self._prefixed_sql("FOR QUERY", expression, "query") +451 +452 if expression.name == "PROFILE": +453 offset = self._prefixed_sql("OFFSET", expression, "offset") +454 limit = self._prefixed_sql("LIMIT", expression, "limit") +455 else: +456 offset = "" +457 limit = self._oldstyle_limit_sql(expression) +458 +459 log = self._prefixed_sql("IN", expression, "log") +460 position = self._prefixed_sql("FROM", expression, "position") +461 +462 channel = self._prefixed_sql("FOR CHANNEL", expression, "channel") +463 +464 if expression.name == "ENGINE": +465 mutex_or_status = " MUTEX" if expression.args.get("mutex") else " STATUS" +466 else: +467 mutex_or_status = "" +468 +469 return f"SHOW{full}{global_}{this}{target}{types}{db}{query}{log}{position}{channel}{mutex_or_status}{like}{where}{offset}{limit}" +470 +471 def _prefixed_sql(self, prefix: str, expression: exp.Expression, arg: str) -> str: +472 sql = self.sql(expression, arg) +473 if not sql: +474 return "" +475 return f" {prefix} {sql}" +476 +477 def _oldstyle_limit_sql(self, expression: exp.Show) -> str: +478 limit = self.sql(expression, "limit") +479 offset = self.sql(expression, "offset") +480 if limit: +481 limit_offset = f"{offset}, {limit}" if offset else limit +482 return f" LIMIT {limit_offset}" +483 return ""
    @@ -579,389 +578,397 @@ -
    103class MySQL(Dialect):
    -104    time_format = "'%Y-%m-%d %T'"
    -105
    -106    # https://prestodb.io/docs/current/functions/datetime.html#mysql-date-functions
    -107    time_mapping = {
    -108        "%M": "%B",
    -109        "%c": "%-m",
    -110        "%e": "%-d",
    -111        "%h": "%I",
    -112        "%i": "%M",
    -113        "%s": "%S",
    -114        "%S": "%S",
    -115        "%u": "%W",
    -116        "%k": "%-H",
    -117        "%l": "%-I",
    -118        "%T": "%H:%M:%S",
    -119    }
    +            
     94class MySQL(Dialect):
    + 95    time_format = "'%Y-%m-%d %T'"
    + 96
    + 97    # https://prestodb.io/docs/current/functions/datetime.html#mysql-date-functions
    + 98    time_mapping = {
    + 99        "%M": "%B",
    +100        "%c": "%-m",
    +101        "%e": "%-d",
    +102        "%h": "%I",
    +103        "%i": "%M",
    +104        "%s": "%S",
    +105        "%S": "%S",
    +106        "%u": "%W",
    +107        "%k": "%-H",
    +108        "%l": "%-I",
    +109        "%T": "%H:%M:%S",
    +110        "%W": "%a",
    +111    }
    +112
    +113    class Tokenizer(tokens.Tokenizer):
    +114        QUOTES = ["'", '"']
    +115        COMMENTS = ["--", "#", ("/*", "*/")]
    +116        IDENTIFIERS = ["`"]
    +117        STRING_ESCAPES = ["'", "\\"]
    +118        BIT_STRINGS = [("b'", "'"), ("B'", "'"), ("0b", "")]
    +119        HEX_STRINGS = [("x'", "'"), ("X'", "'"), ("0x", "")]
     120
    -121    class Tokenizer(tokens.Tokenizer):
    -122        QUOTES = ["'", '"']
    -123        COMMENTS = ["--", "#", ("/*", "*/")]
    -124        IDENTIFIERS = ["`"]
    -125        STRING_ESCAPES = ["'", "\\"]
    -126        BIT_STRINGS = [("b'", "'"), ("B'", "'"), ("0b", "")]
    -127        HEX_STRINGS = [("x'", "'"), ("X'", "'"), ("0x", "")]
    -128
    -129        KEYWORDS = {
    -130            **tokens.Tokenizer.KEYWORDS,
    -131            "MEDIUMTEXT": TokenType.MEDIUMTEXT,
    -132            "LONGTEXT": TokenType.LONGTEXT,
    -133            "MEDIUMBLOB": TokenType.MEDIUMBLOB,
    -134            "LONGBLOB": TokenType.LONGBLOB,
    -135            "START": TokenType.BEGIN,
    -136            "SEPARATOR": TokenType.SEPARATOR,
    -137            "_ARMSCII8": TokenType.INTRODUCER,
    -138            "_ASCII": TokenType.INTRODUCER,
    -139            "_BIG5": TokenType.INTRODUCER,
    -140            "_BINARY": TokenType.INTRODUCER,
    -141            "_CP1250": TokenType.INTRODUCER,
    -142            "_CP1251": TokenType.INTRODUCER,
    -143            "_CP1256": TokenType.INTRODUCER,
    -144            "_CP1257": TokenType.INTRODUCER,
    -145            "_CP850": TokenType.INTRODUCER,
    -146            "_CP852": TokenType.INTRODUCER,
    -147            "_CP866": TokenType.INTRODUCER,
    -148            "_CP932": TokenType.INTRODUCER,
    -149            "_DEC8": TokenType.INTRODUCER,
    -150            "_EUCJPMS": TokenType.INTRODUCER,
    -151            "_EUCKR": TokenType.INTRODUCER,
    -152            "_GB18030": TokenType.INTRODUCER,
    -153            "_GB2312": TokenType.INTRODUCER,
    -154            "_GBK": TokenType.INTRODUCER,
    -155            "_GEOSTD8": TokenType.INTRODUCER,
    -156            "_GREEK": TokenType.INTRODUCER,
    -157            "_HEBREW": TokenType.INTRODUCER,
    -158            "_HP8": TokenType.INTRODUCER,
    -159            "_KEYBCS2": TokenType.INTRODUCER,
    -160            "_KOI8R": TokenType.INTRODUCER,
    -161            "_KOI8U": TokenType.INTRODUCER,
    -162            "_LATIN1": TokenType.INTRODUCER,
    -163            "_LATIN2": TokenType.INTRODUCER,
    -164            "_LATIN5": TokenType.INTRODUCER,
    -165            "_LATIN7": TokenType.INTRODUCER,
    -166            "_MACCE": TokenType.INTRODUCER,
    -167            "_MACROMAN": TokenType.INTRODUCER,
    -168            "_SJIS": TokenType.INTRODUCER,
    -169            "_SWE7": TokenType.INTRODUCER,
    -170            "_TIS620": TokenType.INTRODUCER,
    -171            "_UCS2": TokenType.INTRODUCER,
    -172            "_UJIS": TokenType.INTRODUCER,
    -173            # https://dev.mysql.com/doc/refman/8.0/en/string-literals.html
    -174            "_UTF8": TokenType.INTRODUCER,
    -175            "_UTF16": TokenType.INTRODUCER,
    -176            "_UTF16LE": TokenType.INTRODUCER,
    -177            "_UTF32": TokenType.INTRODUCER,
    -178            "_UTF8MB3": TokenType.INTRODUCER,
    -179            "_UTF8MB4": TokenType.INTRODUCER,
    -180            "@@": TokenType.SESSION_PARAMETER,
    -181        }
    -182
    -183        COMMANDS = tokens.Tokenizer.COMMANDS - {TokenType.SHOW}
    -184
    -185    class Parser(parser.Parser):
    -186        FUNC_TOKENS = {*parser.Parser.FUNC_TOKENS, TokenType.SCHEMA, TokenType.DATABASE}  # type: ignore
    -187
    -188        FUNCTIONS = {
    -189            **parser.Parser.FUNCTIONS,  # type: ignore
    -190            "DATE_ADD": _date_add(exp.DateAdd),
    -191            "DATE_SUB": _date_add(exp.DateSub),
    -192            "STR_TO_DATE": _str_to_date,
    -193            "LOCATE": locate_to_strposition,
    -194            "INSTR": lambda args: exp.StrPosition(substr=seq_get(args, 1), this=seq_get(args, 0)),
    -195            "LEFT": lambda args: exp.Substring(
    -196                this=seq_get(args, 0), start=exp.Literal.number(1), length=seq_get(args, 1)
    -197            ),
    -198        }
    -199
    -200        FUNCTION_PARSERS = {
    -201            **parser.Parser.FUNCTION_PARSERS,  # type: ignore
    -202            "GROUP_CONCAT": lambda self: self.expression(
    -203                exp.GroupConcat,
    -204                this=self._parse_lambda(),
    -205                separator=self._match(TokenType.SEPARATOR) and self._parse_field(),
    -206            ),
    -207        }
    -208
    -209        PROPERTY_PARSERS = {
    -210            **parser.Parser.PROPERTY_PARSERS,  # type: ignore
    -211            "ENGINE": lambda self: self._parse_property_assignment(exp.EngineProperty),
    -212        }
    -213
    -214        STATEMENT_PARSERS = {
    -215            **parser.Parser.STATEMENT_PARSERS,  # type: ignore
    -216            TokenType.SHOW: lambda self: self._parse_show(),
    -217        }
    -218
    -219        SHOW_PARSERS = {
    -220            "BINARY LOGS": _show_parser("BINARY LOGS"),
    -221            "MASTER LOGS": _show_parser("BINARY LOGS"),
    -222            "BINLOG EVENTS": _show_parser("BINLOG EVENTS"),
    -223            "CHARACTER SET": _show_parser("CHARACTER SET"),
    -224            "CHARSET": _show_parser("CHARACTER SET"),
    -225            "COLLATION": _show_parser("COLLATION"),
    -226            "FULL COLUMNS": _show_parser("COLUMNS", target="FROM", full=True),
    -227            "COLUMNS": _show_parser("COLUMNS", target="FROM"),
    -228            "CREATE DATABASE": _show_parser("CREATE DATABASE", target=True),
    -229            "CREATE EVENT": _show_parser("CREATE EVENT", target=True),
    -230            "CREATE FUNCTION": _show_parser("CREATE FUNCTION", target=True),
    -231            "CREATE PROCEDURE": _show_parser("CREATE PROCEDURE", target=True),
    -232            "CREATE TABLE": _show_parser("CREATE TABLE", target=True),
    -233            "CREATE TRIGGER": _show_parser("CREATE TRIGGER", target=True),
    -234            "CREATE VIEW": _show_parser("CREATE VIEW", target=True),
    -235            "DATABASES": _show_parser("DATABASES"),
    -236            "ENGINE": _show_parser("ENGINE", target=True),
    -237            "STORAGE ENGINES": _show_parser("ENGINES"),
    -238            "ENGINES": _show_parser("ENGINES"),
    -239            "ERRORS": _show_parser("ERRORS"),
    -240            "EVENTS": _show_parser("EVENTS"),
    -241            "FUNCTION CODE": _show_parser("FUNCTION CODE", target=True),
    -242            "FUNCTION STATUS": _show_parser("FUNCTION STATUS"),
    -243            "GRANTS": _show_parser("GRANTS", target="FOR"),
    -244            "INDEX": _show_parser("INDEX", target="FROM"),
    -245            "MASTER STATUS": _show_parser("MASTER STATUS"),
    -246            "OPEN TABLES": _show_parser("OPEN TABLES"),
    -247            "PLUGINS": _show_parser("PLUGINS"),
    -248            "PROCEDURE CODE": _show_parser("PROCEDURE CODE", target=True),
    -249            "PROCEDURE STATUS": _show_parser("PROCEDURE STATUS"),
    -250            "PRIVILEGES": _show_parser("PRIVILEGES"),
    -251            "FULL PROCESSLIST": _show_parser("PROCESSLIST", full=True),
    -252            "PROCESSLIST": _show_parser("PROCESSLIST"),
    -253            "PROFILE": _show_parser("PROFILE"),
    -254            "PROFILES": _show_parser("PROFILES"),
    -255            "RELAYLOG EVENTS": _show_parser("RELAYLOG EVENTS"),
    -256            "REPLICAS": _show_parser("REPLICAS"),
    -257            "SLAVE HOSTS": _show_parser("REPLICAS"),
    -258            "REPLICA STATUS": _show_parser("REPLICA STATUS"),
    -259            "SLAVE STATUS": _show_parser("REPLICA STATUS"),
    -260            "GLOBAL STATUS": _show_parser("STATUS", global_=True),
    -261            "SESSION STATUS": _show_parser("STATUS"),
    -262            "STATUS": _show_parser("STATUS"),
    -263            "TABLE STATUS": _show_parser("TABLE STATUS"),
    -264            "FULL TABLES": _show_parser("TABLES", full=True),
    -265            "TABLES": _show_parser("TABLES"),
    -266            "TRIGGERS": _show_parser("TRIGGERS"),
    -267            "GLOBAL VARIABLES": _show_parser("VARIABLES", global_=True),
    -268            "SESSION VARIABLES": _show_parser("VARIABLES"),
    -269            "VARIABLES": _show_parser("VARIABLES"),
    -270            "WARNINGS": _show_parser("WARNINGS"),
    -271        }
    -272
    -273        SET_PARSERS = {
    -274            **parser.Parser.SET_PARSERS,
    -275            "PERSIST": lambda self: self._parse_set_item_assignment("PERSIST"),
    -276            "PERSIST_ONLY": lambda self: self._parse_set_item_assignment("PERSIST_ONLY"),
    -277            "CHARACTER SET": lambda self: self._parse_set_item_charset("CHARACTER SET"),
    -278            "CHARSET": lambda self: self._parse_set_item_charset("CHARACTER SET"),
    -279            "NAMES": lambda self: self._parse_set_item_names(),
    -280        }
    -281
    -282        PROFILE_TYPES = {
    -283            "ALL",
    -284            "BLOCK IO",
    -285            "CONTEXT SWITCHES",
    -286            "CPU",
    -287            "IPC",
    -288            "MEMORY",
    -289            "PAGE FAULTS",
    -290            "SOURCE",
    -291            "SWAPS",
    -292        }
    -293
    -294        LOG_DEFAULTS_TO_LN = True
    -295
    -296        def _parse_show_mysql(self, this, target=False, full=None, global_=None):
    -297            if target:
    -298                if isinstance(target, str):
    -299                    self._match_text_seq(target)
    -300                target_id = self._parse_id_var()
    -301            else:
    -302                target_id = None
    -303
    -304            log = self._parse_string() if self._match_text_seq("IN") else None
    -305
    -306            if this in {"BINLOG EVENTS", "RELAYLOG EVENTS"}:
    -307                position = self._parse_number() if self._match_text_seq("FROM") else None
    -308                db = None
    -309            else:
    -310                position = None
    -311                db = None
    +121        KEYWORDS = {
    +122            **tokens.Tokenizer.KEYWORDS,
    +123            "CHARSET": TokenType.CHARACTER_SET,
    +124            "LONGBLOB": TokenType.LONGBLOB,
    +125            "LONGTEXT": TokenType.LONGTEXT,
    +126            "MEDIUMBLOB": TokenType.MEDIUMBLOB,
    +127            "MEDIUMTEXT": TokenType.MEDIUMTEXT,
    +128            "SEPARATOR": TokenType.SEPARATOR,
    +129            "START": TokenType.BEGIN,
    +130            "_ARMSCII8": TokenType.INTRODUCER,
    +131            "_ASCII": TokenType.INTRODUCER,
    +132            "_BIG5": TokenType.INTRODUCER,
    +133            "_BINARY": TokenType.INTRODUCER,
    +134            "_CP1250": TokenType.INTRODUCER,
    +135            "_CP1251": TokenType.INTRODUCER,
    +136            "_CP1256": TokenType.INTRODUCER,
    +137            "_CP1257": TokenType.INTRODUCER,
    +138            "_CP850": TokenType.INTRODUCER,
    +139            "_CP852": TokenType.INTRODUCER,
    +140            "_CP866": TokenType.INTRODUCER,
    +141            "_CP932": TokenType.INTRODUCER,
    +142            "_DEC8": TokenType.INTRODUCER,
    +143            "_EUCJPMS": TokenType.INTRODUCER,
    +144            "_EUCKR": TokenType.INTRODUCER,
    +145            "_GB18030": TokenType.INTRODUCER,
    +146            "_GB2312": TokenType.INTRODUCER,
    +147            "_GBK": TokenType.INTRODUCER,
    +148            "_GEOSTD8": TokenType.INTRODUCER,
    +149            "_GREEK": TokenType.INTRODUCER,
    +150            "_HEBREW": TokenType.INTRODUCER,
    +151            "_HP8": TokenType.INTRODUCER,
    +152            "_KEYBCS2": TokenType.INTRODUCER,
    +153            "_KOI8R": TokenType.INTRODUCER,
    +154            "_KOI8U": TokenType.INTRODUCER,
    +155            "_LATIN1": TokenType.INTRODUCER,
    +156            "_LATIN2": TokenType.INTRODUCER,
    +157            "_LATIN5": TokenType.INTRODUCER,
    +158            "_LATIN7": TokenType.INTRODUCER,
    +159            "_MACCE": TokenType.INTRODUCER,
    +160            "_MACROMAN": TokenType.INTRODUCER,
    +161            "_SJIS": TokenType.INTRODUCER,
    +162            "_SWE7": TokenType.INTRODUCER,
    +163            "_TIS620": TokenType.INTRODUCER,
    +164            "_UCS2": TokenType.INTRODUCER,
    +165            "_UJIS": TokenType.INTRODUCER,
    +166            # https://dev.mysql.com/doc/refman/8.0/en/string-literals.html
    +167            "_UTF8": TokenType.INTRODUCER,
    +168            "_UTF16": TokenType.INTRODUCER,
    +169            "_UTF16LE": TokenType.INTRODUCER,
    +170            "_UTF32": TokenType.INTRODUCER,
    +171            "_UTF8MB3": TokenType.INTRODUCER,
    +172            "_UTF8MB4": TokenType.INTRODUCER,
    +173            "@@": TokenType.SESSION_PARAMETER,
    +174        }
    +175
    +176        COMMANDS = tokens.Tokenizer.COMMANDS - {TokenType.SHOW}
    +177
    +178    class Parser(parser.Parser):
    +179        FUNC_TOKENS = {*parser.Parser.FUNC_TOKENS, TokenType.SCHEMA, TokenType.DATABASE}  # type: ignore
    +180
    +181        FUNCTIONS = {
    +182            **parser.Parser.FUNCTIONS,  # type: ignore
    +183            "DATE_ADD": parse_date_delta_with_interval(exp.DateAdd),
    +184            "DATE_FORMAT": format_time_lambda(exp.TimeToStr, "mysql"),
    +185            "DATE_SUB": parse_date_delta_with_interval(exp.DateSub),
    +186            "INSTR": lambda args: exp.StrPosition(substr=seq_get(args, 1), this=seq_get(args, 0)),
    +187            "LEFT": lambda args: exp.Substring(
    +188                this=seq_get(args, 0), start=exp.Literal.number(1), length=seq_get(args, 1)
    +189            ),
    +190            "LOCATE": locate_to_strposition,
    +191            "STR_TO_DATE": _str_to_date,
    +192        }
    +193
    +194        FUNCTION_PARSERS = {
    +195            **parser.Parser.FUNCTION_PARSERS,  # type: ignore
    +196            "GROUP_CONCAT": lambda self: self.expression(
    +197                exp.GroupConcat,
    +198                this=self._parse_lambda(),
    +199                separator=self._match(TokenType.SEPARATOR) and self._parse_field(),
    +200            ),
    +201        }
    +202
    +203        PROPERTY_PARSERS = {
    +204            **parser.Parser.PROPERTY_PARSERS,  # type: ignore
    +205            "ENGINE": lambda self: self._parse_property_assignment(exp.EngineProperty),
    +206        }
    +207
    +208        STATEMENT_PARSERS = {
    +209            **parser.Parser.STATEMENT_PARSERS,  # type: ignore
    +210            TokenType.SHOW: lambda self: self._parse_show(),
    +211        }
    +212
    +213        SHOW_PARSERS = {
    +214            "BINARY LOGS": _show_parser("BINARY LOGS"),
    +215            "MASTER LOGS": _show_parser("BINARY LOGS"),
    +216            "BINLOG EVENTS": _show_parser("BINLOG EVENTS"),
    +217            "CHARACTER SET": _show_parser("CHARACTER SET"),
    +218            "CHARSET": _show_parser("CHARACTER SET"),
    +219            "COLLATION": _show_parser("COLLATION"),
    +220            "FULL COLUMNS": _show_parser("COLUMNS", target="FROM", full=True),
    +221            "COLUMNS": _show_parser("COLUMNS", target="FROM"),
    +222            "CREATE DATABASE": _show_parser("CREATE DATABASE", target=True),
    +223            "CREATE EVENT": _show_parser("CREATE EVENT", target=True),
    +224            "CREATE FUNCTION": _show_parser("CREATE FUNCTION", target=True),
    +225            "CREATE PROCEDURE": _show_parser("CREATE PROCEDURE", target=True),
    +226            "CREATE TABLE": _show_parser("CREATE TABLE", target=True),
    +227            "CREATE TRIGGER": _show_parser("CREATE TRIGGER", target=True),
    +228            "CREATE VIEW": _show_parser("CREATE VIEW", target=True),
    +229            "DATABASES": _show_parser("DATABASES"),
    +230            "ENGINE": _show_parser("ENGINE", target=True),
    +231            "STORAGE ENGINES": _show_parser("ENGINES"),
    +232            "ENGINES": _show_parser("ENGINES"),
    +233            "ERRORS": _show_parser("ERRORS"),
    +234            "EVENTS": _show_parser("EVENTS"),
    +235            "FUNCTION CODE": _show_parser("FUNCTION CODE", target=True),
    +236            "FUNCTION STATUS": _show_parser("FUNCTION STATUS"),
    +237            "GRANTS": _show_parser("GRANTS", target="FOR"),
    +238            "INDEX": _show_parser("INDEX", target="FROM"),
    +239            "MASTER STATUS": _show_parser("MASTER STATUS"),
    +240            "OPEN TABLES": _show_parser("OPEN TABLES"),
    +241            "PLUGINS": _show_parser("PLUGINS"),
    +242            "PROCEDURE CODE": _show_parser("PROCEDURE CODE", target=True),
    +243            "PROCEDURE STATUS": _show_parser("PROCEDURE STATUS"),
    +244            "PRIVILEGES": _show_parser("PRIVILEGES"),
    +245            "FULL PROCESSLIST": _show_parser("PROCESSLIST", full=True),
    +246            "PROCESSLIST": _show_parser("PROCESSLIST"),
    +247            "PROFILE": _show_parser("PROFILE"),
    +248            "PROFILES": _show_parser("PROFILES"),
    +249            "RELAYLOG EVENTS": _show_parser("RELAYLOG EVENTS"),
    +250            "REPLICAS": _show_parser("REPLICAS"),
    +251            "SLAVE HOSTS": _show_parser("REPLICAS"),
    +252            "REPLICA STATUS": _show_parser("REPLICA STATUS"),
    +253            "SLAVE STATUS": _show_parser("REPLICA STATUS"),
    +254            "GLOBAL STATUS": _show_parser("STATUS", global_=True),
    +255            "SESSION STATUS": _show_parser("STATUS"),
    +256            "STATUS": _show_parser("STATUS"),
    +257            "TABLE STATUS": _show_parser("TABLE STATUS"),
    +258            "FULL TABLES": _show_parser("TABLES", full=True),
    +259            "TABLES": _show_parser("TABLES"),
    +260            "TRIGGERS": _show_parser("TRIGGERS"),
    +261            "GLOBAL VARIABLES": _show_parser("VARIABLES", global_=True),
    +262            "SESSION VARIABLES": _show_parser("VARIABLES"),
    +263            "VARIABLES": _show_parser("VARIABLES"),
    +264            "WARNINGS": _show_parser("WARNINGS"),
    +265        }
    +266
    +267        SET_PARSERS = {
    +268            **parser.Parser.SET_PARSERS,
    +269            "PERSIST": lambda self: self._parse_set_item_assignment("PERSIST"),
    +270            "PERSIST_ONLY": lambda self: self._parse_set_item_assignment("PERSIST_ONLY"),
    +271            "CHARACTER SET": lambda self: self._parse_set_item_charset("CHARACTER SET"),
    +272            "CHARSET": lambda self: self._parse_set_item_charset("CHARACTER SET"),
    +273            "NAMES": lambda self: self._parse_set_item_names(),
    +274        }
    +275
    +276        PROFILE_TYPES = {
    +277            "ALL",
    +278            "BLOCK IO",
    +279            "CONTEXT SWITCHES",
    +280            "CPU",
    +281            "IPC",
    +282            "MEMORY",
    +283            "PAGE FAULTS",
    +284            "SOURCE",
    +285            "SWAPS",
    +286        }
    +287
    +288        LOG_DEFAULTS_TO_LN = True
    +289
    +290        def _parse_show_mysql(self, this, target=False, full=None, global_=None):
    +291            if target:
    +292                if isinstance(target, str):
    +293                    self._match_text_seq(target)
    +294                target_id = self._parse_id_var()
    +295            else:
    +296                target_id = None
    +297
    +298            log = self._parse_string() if self._match_text_seq("IN") else None
    +299
    +300            if this in {"BINLOG EVENTS", "RELAYLOG EVENTS"}:
    +301                position = self._parse_number() if self._match_text_seq("FROM") else None
    +302                db = None
    +303            else:
    +304                position = None
    +305                db = None
    +306
    +307                if self._match(TokenType.FROM):
    +308                    db = self._parse_id_var()
    +309                elif self._match(TokenType.DOT):
    +310                    db = target_id
    +311                    target_id = self._parse_id_var()
     312
    -313                if self._match(TokenType.FROM):
    -314                    db = self._parse_id_var()
    -315                elif self._match(TokenType.DOT):
    -316                    db = target_id
    -317                    target_id = self._parse_id_var()
    -318
    -319            channel = self._parse_id_var() if self._match_text_seq("FOR", "CHANNEL") else None
    -320
    -321            like = self._parse_string() if self._match_text_seq("LIKE") else None
    -322            where = self._parse_where()
    -323
    -324            if this == "PROFILE":
    -325                types = self._parse_csv(lambda: self._parse_var_from_options(self.PROFILE_TYPES))
    -326                query = self._parse_number() if self._match_text_seq("FOR", "QUERY") else None
    -327                offset = self._parse_number() if self._match_text_seq("OFFSET") else None
    -328                limit = self._parse_number() if self._match_text_seq("LIMIT") else None
    -329            else:
    -330                types, query = None, None
    -331                offset, limit = self._parse_oldstyle_limit()
    -332
    -333            mutex = True if self._match_text_seq("MUTEX") else None
    -334            mutex = False if self._match_text_seq("STATUS") else mutex
    -335
    -336            return self.expression(
    -337                exp.Show,
    -338                this=this,
    -339                target=target_id,
    -340                full=full,
    -341                log=log,
    -342                position=position,
    -343                db=db,
    -344                channel=channel,
    -345                like=like,
    -346                where=where,
    -347                types=types,
    -348                query=query,
    -349                offset=offset,
    -350                limit=limit,
    -351                mutex=mutex,
    -352                **{"global": global_},
    -353            )
    -354
    -355        def _parse_oldstyle_limit(self):
    -356            limit = None
    -357            offset = None
    -358            if self._match_text_seq("LIMIT"):
    -359                parts = self._parse_csv(self._parse_number)
    -360                if len(parts) == 1:
    -361                    limit = parts[0]
    -362                elif len(parts) == 2:
    -363                    limit = parts[1]
    -364                    offset = parts[0]
    -365            return offset, limit
    -366
    -367        def _parse_set_item_charset(self, kind):
    -368            this = self._parse_string() or self._parse_id_var()
    +313            channel = self._parse_id_var() if self._match_text_seq("FOR", "CHANNEL") else None
    +314
    +315            like = self._parse_string() if self._match_text_seq("LIKE") else None
    +316            where = self._parse_where()
    +317
    +318            if this == "PROFILE":
    +319                types = self._parse_csv(lambda: self._parse_var_from_options(self.PROFILE_TYPES))
    +320                query = self._parse_number() if self._match_text_seq("FOR", "QUERY") else None
    +321                offset = self._parse_number() if self._match_text_seq("OFFSET") else None
    +322                limit = self._parse_number() if self._match_text_seq("LIMIT") else None
    +323            else:
    +324                types, query = None, None
    +325                offset, limit = self._parse_oldstyle_limit()
    +326
    +327            mutex = True if self._match_text_seq("MUTEX") else None
    +328            mutex = False if self._match_text_seq("STATUS") else mutex
    +329
    +330            return self.expression(
    +331                exp.Show,
    +332                this=this,
    +333                target=target_id,
    +334                full=full,
    +335                log=log,
    +336                position=position,
    +337                db=db,
    +338                channel=channel,
    +339                like=like,
    +340                where=where,
    +341                types=types,
    +342                query=query,
    +343                offset=offset,
    +344                limit=limit,
    +345                mutex=mutex,
    +346                **{"global": global_},
    +347            )
    +348
    +349        def _parse_oldstyle_limit(self):
    +350            limit = None
    +351            offset = None
    +352            if self._match_text_seq("LIMIT"):
    +353                parts = self._parse_csv(self._parse_number)
    +354                if len(parts) == 1:
    +355                    limit = parts[0]
    +356                elif len(parts) == 2:
    +357                    limit = parts[1]
    +358                    offset = parts[0]
    +359            return offset, limit
    +360
    +361        def _parse_set_item_charset(self, kind):
    +362            this = self._parse_string() or self._parse_id_var()
    +363
    +364            return self.expression(
    +365                exp.SetItem,
    +366                this=this,
    +367                kind=kind,
    +368            )
     369
    -370            return self.expression(
    -371                exp.SetItem,
    -372                this=this,
    -373                kind=kind,
    -374            )
    -375
    -376        def _parse_set_item_names(self):
    -377            charset = self._parse_string() or self._parse_id_var()
    -378            if self._match_text_seq("COLLATE"):
    -379                collate = self._parse_string() or self._parse_id_var()
    -380            else:
    -381                collate = None
    -382            return self.expression(
    -383                exp.SetItem,
    -384                this=charset,
    -385                collate=collate,
    -386                kind="NAMES",
    -387            )
    +370        def _parse_set_item_names(self):
    +371            charset = self._parse_string() or self._parse_id_var()
    +372            if self._match_text_seq("COLLATE"):
    +373                collate = self._parse_string() or self._parse_id_var()
    +374            else:
    +375                collate = None
    +376            return self.expression(
    +377                exp.SetItem,
    +378                this=charset,
    +379                collate=collate,
    +380                kind="NAMES",
    +381            )
    +382
    +383    class Generator(generator.Generator):
    +384        LOCKING_READS_SUPPORTED = True
    +385        NULL_ORDERING_SUPPORTED = False
    +386        JOIN_HINTS = False
    +387        TABLE_HINTS = False
     388
    -389    class Generator(generator.Generator):
    -390        LOCKING_READS_SUPPORTED = True
    -391        NULL_ORDERING_SUPPORTED = False
    -392
    -393        TRANSFORMS = {
    -394            **generator.Generator.TRANSFORMS,  # type: ignore
    -395            exp.CurrentDate: no_paren_current_date_sql,
    -396            exp.CurrentTimestamp: lambda *_: "CURRENT_TIMESTAMP",
    -397            exp.ILike: no_ilike_sql,
    -398            exp.JSONExtractScalar: arrow_json_extract_scalar_sql,
    -399            exp.Max: max_or_greatest,
    -400            exp.Min: min_or_least,
    -401            exp.TableSample: no_tablesample_sql,
    -402            exp.TryCast: no_trycast_sql,
    -403            exp.DateAdd: _date_add_sql("ADD"),
    -404            exp.DateDiff: lambda self, e: f"DATEDIFF({self.format_args(e.this, e.expression)})",
    -405            exp.DateSub: _date_add_sql("SUB"),
    -406            exp.DateTrunc: _date_trunc_sql,
    -407            exp.DayOfWeek: rename_func("DAYOFWEEK"),
    -408            exp.DayOfMonth: rename_func("DAYOFMONTH"),
    -409            exp.DayOfYear: rename_func("DAYOFYEAR"),
    -410            exp.WeekOfYear: rename_func("WEEKOFYEAR"),
    -411            exp.GroupConcat: lambda self, e: f"""GROUP_CONCAT({self.sql(e, "this")} SEPARATOR {self.sql(e, "separator") or "','"})""",
    -412            exp.StrToDate: _str_to_date_sql,
    -413            exp.StrToTime: _str_to_date_sql,
    -414            exp.Trim: _trim_sql,
    -415            exp.NullSafeEQ: lambda self, e: self.binary(e, "<=>"),
    -416            exp.NullSafeNEQ: lambda self, e: self.not_sql(self.binary(e, "<=>")),
    -417            exp.StrPosition: strposition_to_locate_sql,
    -418        }
    -419
    -420        TYPE_MAPPING = generator.Generator.TYPE_MAPPING.copy()
    -421        TYPE_MAPPING.pop(exp.DataType.Type.MEDIUMTEXT)
    -422        TYPE_MAPPING.pop(exp.DataType.Type.LONGTEXT)
    -423        TYPE_MAPPING.pop(exp.DataType.Type.MEDIUMBLOB)
    -424        TYPE_MAPPING.pop(exp.DataType.Type.LONGBLOB)
    -425
    -426        PROPERTIES_LOCATION = {
    -427            **generator.Generator.PROPERTIES_LOCATION,  # type: ignore
    -428            exp.TransientProperty: exp.Properties.Location.UNSUPPORTED,
    -429        }
    -430
    -431        LIMIT_FETCH = "LIMIT"
    -432
    -433        def show_sql(self, expression: exp.Show) -> str:
    -434            this = f" {expression.name}"
    -435            full = " FULL" if expression.args.get("full") else ""
    -436            global_ = " GLOBAL" if expression.args.get("global") else ""
    -437
    -438            target = self.sql(expression, "target")
    -439            target = f" {target}" if target else ""
    -440            if expression.name in {"COLUMNS", "INDEX"}:
    -441                target = f" FROM{target}"
    -442            elif expression.name == "GRANTS":
    -443                target = f" FOR{target}"
    -444
    -445            db = self._prefixed_sql("FROM", expression, "db")
    -446
    -447            like = self._prefixed_sql("LIKE", expression, "like")
    -448            where = self.sql(expression, "where")
    -449
    -450            types = self.expressions(expression, key="types")
    -451            types = f" {types}" if types else types
    -452            query = self._prefixed_sql("FOR QUERY", expression, "query")
    -453
    -454            if expression.name == "PROFILE":
    -455                offset = self._prefixed_sql("OFFSET", expression, "offset")
    -456                limit = self._prefixed_sql("LIMIT", expression, "limit")
    -457            else:
    -458                offset = ""
    -459                limit = self._oldstyle_limit_sql(expression)
    -460
    -461            log = self._prefixed_sql("IN", expression, "log")
    -462            position = self._prefixed_sql("FROM", expression, "position")
    -463
    -464            channel = self._prefixed_sql("FOR CHANNEL", expression, "channel")
    -465
    -466            if expression.name == "ENGINE":
    -467                mutex_or_status = " MUTEX" if expression.args.get("mutex") else " STATUS"
    -468            else:
    -469                mutex_or_status = ""
    -470
    -471            return f"SHOW{full}{global_}{this}{target}{types}{db}{query}{log}{position}{channel}{mutex_or_status}{like}{where}{offset}{limit}"
    -472
    -473        def _prefixed_sql(self, prefix: str, expression: exp.Expression, arg: str) -> str:
    -474            sql = self.sql(expression, arg)
    -475            if not sql:
    -476                return ""
    -477            return f" {prefix} {sql}"
    -478
    -479        def _oldstyle_limit_sql(self, expression: exp.Show) -> str:
    -480            limit = self.sql(expression, "limit")
    -481            offset = self.sql(expression, "offset")
    -482            if limit:
    -483                limit_offset = f"{offset}, {limit}" if offset else limit
    -484                return f" LIMIT {limit_offset}"
    -485            return ""
    +389        TRANSFORMS = {
    +390            **generator.Generator.TRANSFORMS,  # type: ignore
    +391            exp.CurrentDate: no_paren_current_date_sql,
    +392            exp.DateDiff: lambda self, e: self.func("DATEDIFF", e.this, e.expression),
    +393            exp.DateAdd: _date_add_sql("ADD"),
    +394            exp.DateStrToDate: datestrtodate_sql,
    +395            exp.DateSub: _date_add_sql("SUB"),
    +396            exp.DateTrunc: _date_trunc_sql,
    +397            exp.DayOfMonth: rename_func("DAYOFMONTH"),
    +398            exp.DayOfWeek: rename_func("DAYOFWEEK"),
    +399            exp.DayOfYear: rename_func("DAYOFYEAR"),
    +400            exp.GroupConcat: lambda self, e: f"""GROUP_CONCAT({self.sql(e, "this")} SEPARATOR {self.sql(e, "separator") or "','"})""",
    +401            exp.ILike: no_ilike_sql,
    +402            exp.JSONExtractScalar: arrow_json_extract_scalar_sql,
    +403            exp.Max: max_or_greatest,
    +404            exp.Min: min_or_least,
    +405            exp.NullSafeEQ: lambda self, e: self.binary(e, "<=>"),
    +406            exp.NullSafeNEQ: lambda self, e: self.not_sql(self.binary(e, "<=>")),
    +407            exp.StrPosition: strposition_to_locate_sql,
    +408            exp.StrToDate: _str_to_date_sql,
    +409            exp.StrToTime: _str_to_date_sql,
    +410            exp.TableSample: no_tablesample_sql,
    +411            exp.TimeStrToUnix: rename_func("UNIX_TIMESTAMP"),
    +412            exp.TimeToStr: lambda self, e: self.func("DATE_FORMAT", e.this, self.format_time(e)),
    +413            exp.Trim: _trim_sql,
    +414            exp.TryCast: no_trycast_sql,
    +415            exp.WeekOfYear: rename_func("WEEKOFYEAR"),
    +416        }
    +417
    +418        TYPE_MAPPING = generator.Generator.TYPE_MAPPING.copy()
    +419        TYPE_MAPPING.pop(exp.DataType.Type.MEDIUMTEXT)
    +420        TYPE_MAPPING.pop(exp.DataType.Type.LONGTEXT)
    +421        TYPE_MAPPING.pop(exp.DataType.Type.MEDIUMBLOB)
    +422        TYPE_MAPPING.pop(exp.DataType.Type.LONGBLOB)
    +423
    +424        PROPERTIES_LOCATION = {
    +425            **generator.Generator.PROPERTIES_LOCATION,  # type: ignore
    +426            exp.TransientProperty: exp.Properties.Location.UNSUPPORTED,
    +427            exp.VolatileProperty: exp.Properties.Location.UNSUPPORTED,
    +428        }
    +429
    +430        LIMIT_FETCH = "LIMIT"
    +431
    +432        def show_sql(self, expression: exp.Show) -> str:
    +433            this = f" {expression.name}"
    +434            full = " FULL" if expression.args.get("full") else ""
    +435            global_ = " GLOBAL" if expression.args.get("global") else ""
    +436
    +437            target = self.sql(expression, "target")
    +438            target = f" {target}" if target else ""
    +439            if expression.name in {"COLUMNS", "INDEX"}:
    +440                target = f" FROM{target}"
    +441            elif expression.name == "GRANTS":
    +442                target = f" FOR{target}"
    +443
    +444            db = self._prefixed_sql("FROM", expression, "db")
    +445
    +446            like = self._prefixed_sql("LIKE", expression, "like")
    +447            where = self.sql(expression, "where")
    +448
    +449            types = self.expressions(expression, key="types")
    +450            types = f" {types}" if types else types
    +451            query = self._prefixed_sql("FOR QUERY", expression, "query")
    +452
    +453            if expression.name == "PROFILE":
    +454                offset = self._prefixed_sql("OFFSET", expression, "offset")
    +455                limit = self._prefixed_sql("LIMIT", expression, "limit")
    +456            else:
    +457                offset = ""
    +458                limit = self._oldstyle_limit_sql(expression)
    +459
    +460            log = self._prefixed_sql("IN", expression, "log")
    +461            position = self._prefixed_sql("FROM", expression, "position")
    +462
    +463            channel = self._prefixed_sql("FOR CHANNEL", expression, "channel")
    +464
    +465            if expression.name == "ENGINE":
    +466                mutex_or_status = " MUTEX" if expression.args.get("mutex") else " STATUS"
    +467            else:
    +468                mutex_or_status = ""
    +469
    +470            return f"SHOW{full}{global_}{this}{target}{types}{db}{query}{log}{position}{channel}{mutex_or_status}{like}{where}{offset}{limit}"
    +471
    +472        def _prefixed_sql(self, prefix: str, expression: exp.Expression, arg: str) -> str:
    +473            sql = self.sql(expression, arg)
    +474            if not sql:
    +475                return ""
    +476            return f" {prefix} {sql}"
    +477
    +478        def _oldstyle_limit_sql(self, expression: exp.Show) -> str:
    +479            limit = self.sql(expression, "limit")
    +480            offset = self.sql(expression, "offset")
    +481            if limit:
    +482                limit_offset = f"{offset}, {limit}" if offset else limit
    +483                return f" LIMIT {limit_offset}"
    +484            return ""
     
    @@ -996,69 +1003,70 @@
    -
    121    class Tokenizer(tokens.Tokenizer):
    -122        QUOTES = ["'", '"']
    -123        COMMENTS = ["--", "#", ("/*", "*/")]
    -124        IDENTIFIERS = ["`"]
    -125        STRING_ESCAPES = ["'", "\\"]
    -126        BIT_STRINGS = [("b'", "'"), ("B'", "'"), ("0b", "")]
    -127        HEX_STRINGS = [("x'", "'"), ("X'", "'"), ("0x", "")]
    -128
    -129        KEYWORDS = {
    -130            **tokens.Tokenizer.KEYWORDS,
    -131            "MEDIUMTEXT": TokenType.MEDIUMTEXT,
    -132            "LONGTEXT": TokenType.LONGTEXT,
    -133            "MEDIUMBLOB": TokenType.MEDIUMBLOB,
    -134            "LONGBLOB": TokenType.LONGBLOB,
    -135            "START": TokenType.BEGIN,
    -136            "SEPARATOR": TokenType.SEPARATOR,
    -137            "_ARMSCII8": TokenType.INTRODUCER,
    -138            "_ASCII": TokenType.INTRODUCER,
    -139            "_BIG5": TokenType.INTRODUCER,
    -140            "_BINARY": TokenType.INTRODUCER,
    -141            "_CP1250": TokenType.INTRODUCER,
    -142            "_CP1251": TokenType.INTRODUCER,
    -143            "_CP1256": TokenType.INTRODUCER,
    -144            "_CP1257": TokenType.INTRODUCER,
    -145            "_CP850": TokenType.INTRODUCER,
    -146            "_CP852": TokenType.INTRODUCER,
    -147            "_CP866": TokenType.INTRODUCER,
    -148            "_CP932": TokenType.INTRODUCER,
    -149            "_DEC8": TokenType.INTRODUCER,
    -150            "_EUCJPMS": TokenType.INTRODUCER,
    -151            "_EUCKR": TokenType.INTRODUCER,
    -152            "_GB18030": TokenType.INTRODUCER,
    -153            "_GB2312": TokenType.INTRODUCER,
    -154            "_GBK": TokenType.INTRODUCER,
    -155            "_GEOSTD8": TokenType.INTRODUCER,
    -156            "_GREEK": TokenType.INTRODUCER,
    -157            "_HEBREW": TokenType.INTRODUCER,
    -158            "_HP8": TokenType.INTRODUCER,
    -159            "_KEYBCS2": TokenType.INTRODUCER,
    -160            "_KOI8R": TokenType.INTRODUCER,
    -161            "_KOI8U": TokenType.INTRODUCER,
    -162            "_LATIN1": TokenType.INTRODUCER,
    -163            "_LATIN2": TokenType.INTRODUCER,
    -164            "_LATIN5": TokenType.INTRODUCER,
    -165            "_LATIN7": TokenType.INTRODUCER,
    -166            "_MACCE": TokenType.INTRODUCER,
    -167            "_MACROMAN": TokenType.INTRODUCER,
    -168            "_SJIS": TokenType.INTRODUCER,
    -169            "_SWE7": TokenType.INTRODUCER,
    -170            "_TIS620": TokenType.INTRODUCER,
    -171            "_UCS2": TokenType.INTRODUCER,
    -172            "_UJIS": TokenType.INTRODUCER,
    -173            # https://dev.mysql.com/doc/refman/8.0/en/string-literals.html
    -174            "_UTF8": TokenType.INTRODUCER,
    -175            "_UTF16": TokenType.INTRODUCER,
    -176            "_UTF16LE": TokenType.INTRODUCER,
    -177            "_UTF32": TokenType.INTRODUCER,
    -178            "_UTF8MB3": TokenType.INTRODUCER,
    -179            "_UTF8MB4": TokenType.INTRODUCER,
    -180            "@@": TokenType.SESSION_PARAMETER,
    -181        }
    -182
    -183        COMMANDS = tokens.Tokenizer.COMMANDS - {TokenType.SHOW}
    +            
    113    class Tokenizer(tokens.Tokenizer):
    +114        QUOTES = ["'", '"']
    +115        COMMENTS = ["--", "#", ("/*", "*/")]
    +116        IDENTIFIERS = ["`"]
    +117        STRING_ESCAPES = ["'", "\\"]
    +118        BIT_STRINGS = [("b'", "'"), ("B'", "'"), ("0b", "")]
    +119        HEX_STRINGS = [("x'", "'"), ("X'", "'"), ("0x", "")]
    +120
    +121        KEYWORDS = {
    +122            **tokens.Tokenizer.KEYWORDS,
    +123            "CHARSET": TokenType.CHARACTER_SET,
    +124            "LONGBLOB": TokenType.LONGBLOB,
    +125            "LONGTEXT": TokenType.LONGTEXT,
    +126            "MEDIUMBLOB": TokenType.MEDIUMBLOB,
    +127            "MEDIUMTEXT": TokenType.MEDIUMTEXT,
    +128            "SEPARATOR": TokenType.SEPARATOR,
    +129            "START": TokenType.BEGIN,
    +130            "_ARMSCII8": TokenType.INTRODUCER,
    +131            "_ASCII": TokenType.INTRODUCER,
    +132            "_BIG5": TokenType.INTRODUCER,
    +133            "_BINARY": TokenType.INTRODUCER,
    +134            "_CP1250": TokenType.INTRODUCER,
    +135            "_CP1251": TokenType.INTRODUCER,
    +136            "_CP1256": TokenType.INTRODUCER,
    +137            "_CP1257": TokenType.INTRODUCER,
    +138            "_CP850": TokenType.INTRODUCER,
    +139            "_CP852": TokenType.INTRODUCER,
    +140            "_CP866": TokenType.INTRODUCER,
    +141            "_CP932": TokenType.INTRODUCER,
    +142            "_DEC8": TokenType.INTRODUCER,
    +143            "_EUCJPMS": TokenType.INTRODUCER,
    +144            "_EUCKR": TokenType.INTRODUCER,
    +145            "_GB18030": TokenType.INTRODUCER,
    +146            "_GB2312": TokenType.INTRODUCER,
    +147            "_GBK": TokenType.INTRODUCER,
    +148            "_GEOSTD8": TokenType.INTRODUCER,
    +149            "_GREEK": TokenType.INTRODUCER,
    +150            "_HEBREW": TokenType.INTRODUCER,
    +151            "_HP8": TokenType.INTRODUCER,
    +152            "_KEYBCS2": TokenType.INTRODUCER,
    +153            "_KOI8R": TokenType.INTRODUCER,
    +154            "_KOI8U": TokenType.INTRODUCER,
    +155            "_LATIN1": TokenType.INTRODUCER,
    +156            "_LATIN2": TokenType.INTRODUCER,
    +157            "_LATIN5": TokenType.INTRODUCER,
    +158            "_LATIN7": TokenType.INTRODUCER,
    +159            "_MACCE": TokenType.INTRODUCER,
    +160            "_MACROMAN": TokenType.INTRODUCER,
    +161            "_SJIS": TokenType.INTRODUCER,
    +162            "_SWE7": TokenType.INTRODUCER,
    +163            "_TIS620": TokenType.INTRODUCER,
    +164            "_UCS2": TokenType.INTRODUCER,
    +165            "_UJIS": TokenType.INTRODUCER,
    +166            # https://dev.mysql.com/doc/refman/8.0/en/string-literals.html
    +167            "_UTF8": TokenType.INTRODUCER,
    +168            "_UTF16": TokenType.INTRODUCER,
    +169            "_UTF16LE": TokenType.INTRODUCER,
    +170            "_UTF32": TokenType.INTRODUCER,
    +171            "_UTF8MB3": TokenType.INTRODUCER,
    +172            "_UTF8MB4": TokenType.INTRODUCER,
    +173            "@@": TokenType.SESSION_PARAMETER,
    +174        }
    +175
    +176        COMMANDS = tokens.Tokenizer.COMMANDS - {TokenType.SHOW}
     
    @@ -1086,209 +1094,210 @@
    -
    185    class Parser(parser.Parser):
    -186        FUNC_TOKENS = {*parser.Parser.FUNC_TOKENS, TokenType.SCHEMA, TokenType.DATABASE}  # type: ignore
    -187
    -188        FUNCTIONS = {
    -189            **parser.Parser.FUNCTIONS,  # type: ignore
    -190            "DATE_ADD": _date_add(exp.DateAdd),
    -191            "DATE_SUB": _date_add(exp.DateSub),
    -192            "STR_TO_DATE": _str_to_date,
    -193            "LOCATE": locate_to_strposition,
    -194            "INSTR": lambda args: exp.StrPosition(substr=seq_get(args, 1), this=seq_get(args, 0)),
    -195            "LEFT": lambda args: exp.Substring(
    -196                this=seq_get(args, 0), start=exp.Literal.number(1), length=seq_get(args, 1)
    -197            ),
    -198        }
    -199
    -200        FUNCTION_PARSERS = {
    -201            **parser.Parser.FUNCTION_PARSERS,  # type: ignore
    -202            "GROUP_CONCAT": lambda self: self.expression(
    -203                exp.GroupConcat,
    -204                this=self._parse_lambda(),
    -205                separator=self._match(TokenType.SEPARATOR) and self._parse_field(),
    -206            ),
    -207        }
    -208
    -209        PROPERTY_PARSERS = {
    -210            **parser.Parser.PROPERTY_PARSERS,  # type: ignore
    -211            "ENGINE": lambda self: self._parse_property_assignment(exp.EngineProperty),
    -212        }
    -213
    -214        STATEMENT_PARSERS = {
    -215            **parser.Parser.STATEMENT_PARSERS,  # type: ignore
    -216            TokenType.SHOW: lambda self: self._parse_show(),
    -217        }
    -218
    -219        SHOW_PARSERS = {
    -220            "BINARY LOGS": _show_parser("BINARY LOGS"),
    -221            "MASTER LOGS": _show_parser("BINARY LOGS"),
    -222            "BINLOG EVENTS": _show_parser("BINLOG EVENTS"),
    -223            "CHARACTER SET": _show_parser("CHARACTER SET"),
    -224            "CHARSET": _show_parser("CHARACTER SET"),
    -225            "COLLATION": _show_parser("COLLATION"),
    -226            "FULL COLUMNS": _show_parser("COLUMNS", target="FROM", full=True),
    -227            "COLUMNS": _show_parser("COLUMNS", target="FROM"),
    -228            "CREATE DATABASE": _show_parser("CREATE DATABASE", target=True),
    -229            "CREATE EVENT": _show_parser("CREATE EVENT", target=True),
    -230            "CREATE FUNCTION": _show_parser("CREATE FUNCTION", target=True),
    -231            "CREATE PROCEDURE": _show_parser("CREATE PROCEDURE", target=True),
    -232            "CREATE TABLE": _show_parser("CREATE TABLE", target=True),
    -233            "CREATE TRIGGER": _show_parser("CREATE TRIGGER", target=True),
    -234            "CREATE VIEW": _show_parser("CREATE VIEW", target=True),
    -235            "DATABASES": _show_parser("DATABASES"),
    -236            "ENGINE": _show_parser("ENGINE", target=True),
    -237            "STORAGE ENGINES": _show_parser("ENGINES"),
    -238            "ENGINES": _show_parser("ENGINES"),
    -239            "ERRORS": _show_parser("ERRORS"),
    -240            "EVENTS": _show_parser("EVENTS"),
    -241            "FUNCTION CODE": _show_parser("FUNCTION CODE", target=True),
    -242            "FUNCTION STATUS": _show_parser("FUNCTION STATUS"),
    -243            "GRANTS": _show_parser("GRANTS", target="FOR"),
    -244            "INDEX": _show_parser("INDEX", target="FROM"),
    -245            "MASTER STATUS": _show_parser("MASTER STATUS"),
    -246            "OPEN TABLES": _show_parser("OPEN TABLES"),
    -247            "PLUGINS": _show_parser("PLUGINS"),
    -248            "PROCEDURE CODE": _show_parser("PROCEDURE CODE", target=True),
    -249            "PROCEDURE STATUS": _show_parser("PROCEDURE STATUS"),
    -250            "PRIVILEGES": _show_parser("PRIVILEGES"),
    -251            "FULL PROCESSLIST": _show_parser("PROCESSLIST", full=True),
    -252            "PROCESSLIST": _show_parser("PROCESSLIST"),
    -253            "PROFILE": _show_parser("PROFILE"),
    -254            "PROFILES": _show_parser("PROFILES"),
    -255            "RELAYLOG EVENTS": _show_parser("RELAYLOG EVENTS"),
    -256            "REPLICAS": _show_parser("REPLICAS"),
    -257            "SLAVE HOSTS": _show_parser("REPLICAS"),
    -258            "REPLICA STATUS": _show_parser("REPLICA STATUS"),
    -259            "SLAVE STATUS": _show_parser("REPLICA STATUS"),
    -260            "GLOBAL STATUS": _show_parser("STATUS", global_=True),
    -261            "SESSION STATUS": _show_parser("STATUS"),
    -262            "STATUS": _show_parser("STATUS"),
    -263            "TABLE STATUS": _show_parser("TABLE STATUS"),
    -264            "FULL TABLES": _show_parser("TABLES", full=True),
    -265            "TABLES": _show_parser("TABLES"),
    -266            "TRIGGERS": _show_parser("TRIGGERS"),
    -267            "GLOBAL VARIABLES": _show_parser("VARIABLES", global_=True),
    -268            "SESSION VARIABLES": _show_parser("VARIABLES"),
    -269            "VARIABLES": _show_parser("VARIABLES"),
    -270            "WARNINGS": _show_parser("WARNINGS"),
    -271        }
    -272
    -273        SET_PARSERS = {
    -274            **parser.Parser.SET_PARSERS,
    -275            "PERSIST": lambda self: self._parse_set_item_assignment("PERSIST"),
    -276            "PERSIST_ONLY": lambda self: self._parse_set_item_assignment("PERSIST_ONLY"),
    -277            "CHARACTER SET": lambda self: self._parse_set_item_charset("CHARACTER SET"),
    -278            "CHARSET": lambda self: self._parse_set_item_charset("CHARACTER SET"),
    -279            "NAMES": lambda self: self._parse_set_item_names(),
    -280        }
    -281
    -282        PROFILE_TYPES = {
    -283            "ALL",
    -284            "BLOCK IO",
    -285            "CONTEXT SWITCHES",
    -286            "CPU",
    -287            "IPC",
    -288            "MEMORY",
    -289            "PAGE FAULTS",
    -290            "SOURCE",
    -291            "SWAPS",
    -292        }
    -293
    -294        LOG_DEFAULTS_TO_LN = True
    -295
    -296        def _parse_show_mysql(self, this, target=False, full=None, global_=None):
    -297            if target:
    -298                if isinstance(target, str):
    -299                    self._match_text_seq(target)
    -300                target_id = self._parse_id_var()
    -301            else:
    -302                target_id = None
    -303
    -304            log = self._parse_string() if self._match_text_seq("IN") else None
    -305
    -306            if this in {"BINLOG EVENTS", "RELAYLOG EVENTS"}:
    -307                position = self._parse_number() if self._match_text_seq("FROM") else None
    -308                db = None
    -309            else:
    -310                position = None
    -311                db = None
    +            
    178    class Parser(parser.Parser):
    +179        FUNC_TOKENS = {*parser.Parser.FUNC_TOKENS, TokenType.SCHEMA, TokenType.DATABASE}  # type: ignore
    +180
    +181        FUNCTIONS = {
    +182            **parser.Parser.FUNCTIONS,  # type: ignore
    +183            "DATE_ADD": parse_date_delta_with_interval(exp.DateAdd),
    +184            "DATE_FORMAT": format_time_lambda(exp.TimeToStr, "mysql"),
    +185            "DATE_SUB": parse_date_delta_with_interval(exp.DateSub),
    +186            "INSTR": lambda args: exp.StrPosition(substr=seq_get(args, 1), this=seq_get(args, 0)),
    +187            "LEFT": lambda args: exp.Substring(
    +188                this=seq_get(args, 0), start=exp.Literal.number(1), length=seq_get(args, 1)
    +189            ),
    +190            "LOCATE": locate_to_strposition,
    +191            "STR_TO_DATE": _str_to_date,
    +192        }
    +193
    +194        FUNCTION_PARSERS = {
    +195            **parser.Parser.FUNCTION_PARSERS,  # type: ignore
    +196            "GROUP_CONCAT": lambda self: self.expression(
    +197                exp.GroupConcat,
    +198                this=self._parse_lambda(),
    +199                separator=self._match(TokenType.SEPARATOR) and self._parse_field(),
    +200            ),
    +201        }
    +202
    +203        PROPERTY_PARSERS = {
    +204            **parser.Parser.PROPERTY_PARSERS,  # type: ignore
    +205            "ENGINE": lambda self: self._parse_property_assignment(exp.EngineProperty),
    +206        }
    +207
    +208        STATEMENT_PARSERS = {
    +209            **parser.Parser.STATEMENT_PARSERS,  # type: ignore
    +210            TokenType.SHOW: lambda self: self._parse_show(),
    +211        }
    +212
    +213        SHOW_PARSERS = {
    +214            "BINARY LOGS": _show_parser("BINARY LOGS"),
    +215            "MASTER LOGS": _show_parser("BINARY LOGS"),
    +216            "BINLOG EVENTS": _show_parser("BINLOG EVENTS"),
    +217            "CHARACTER SET": _show_parser("CHARACTER SET"),
    +218            "CHARSET": _show_parser("CHARACTER SET"),
    +219            "COLLATION": _show_parser("COLLATION"),
    +220            "FULL COLUMNS": _show_parser("COLUMNS", target="FROM", full=True),
    +221            "COLUMNS": _show_parser("COLUMNS", target="FROM"),
    +222            "CREATE DATABASE": _show_parser("CREATE DATABASE", target=True),
    +223            "CREATE EVENT": _show_parser("CREATE EVENT", target=True),
    +224            "CREATE FUNCTION": _show_parser("CREATE FUNCTION", target=True),
    +225            "CREATE PROCEDURE": _show_parser("CREATE PROCEDURE", target=True),
    +226            "CREATE TABLE": _show_parser("CREATE TABLE", target=True),
    +227            "CREATE TRIGGER": _show_parser("CREATE TRIGGER", target=True),
    +228            "CREATE VIEW": _show_parser("CREATE VIEW", target=True),
    +229            "DATABASES": _show_parser("DATABASES"),
    +230            "ENGINE": _show_parser("ENGINE", target=True),
    +231            "STORAGE ENGINES": _show_parser("ENGINES"),
    +232            "ENGINES": _show_parser("ENGINES"),
    +233            "ERRORS": _show_parser("ERRORS"),
    +234            "EVENTS": _show_parser("EVENTS"),
    +235            "FUNCTION CODE": _show_parser("FUNCTION CODE", target=True),
    +236            "FUNCTION STATUS": _show_parser("FUNCTION STATUS"),
    +237            "GRANTS": _show_parser("GRANTS", target="FOR"),
    +238            "INDEX": _show_parser("INDEX", target="FROM"),
    +239            "MASTER STATUS": _show_parser("MASTER STATUS"),
    +240            "OPEN TABLES": _show_parser("OPEN TABLES"),
    +241            "PLUGINS": _show_parser("PLUGINS"),
    +242            "PROCEDURE CODE": _show_parser("PROCEDURE CODE", target=True),
    +243            "PROCEDURE STATUS": _show_parser("PROCEDURE STATUS"),
    +244            "PRIVILEGES": _show_parser("PRIVILEGES"),
    +245            "FULL PROCESSLIST": _show_parser("PROCESSLIST", full=True),
    +246            "PROCESSLIST": _show_parser("PROCESSLIST"),
    +247            "PROFILE": _show_parser("PROFILE"),
    +248            "PROFILES": _show_parser("PROFILES"),
    +249            "RELAYLOG EVENTS": _show_parser("RELAYLOG EVENTS"),
    +250            "REPLICAS": _show_parser("REPLICAS"),
    +251            "SLAVE HOSTS": _show_parser("REPLICAS"),
    +252            "REPLICA STATUS": _show_parser("REPLICA STATUS"),
    +253            "SLAVE STATUS": _show_parser("REPLICA STATUS"),
    +254            "GLOBAL STATUS": _show_parser("STATUS", global_=True),
    +255            "SESSION STATUS": _show_parser("STATUS"),
    +256            "STATUS": _show_parser("STATUS"),
    +257            "TABLE STATUS": _show_parser("TABLE STATUS"),
    +258            "FULL TABLES": _show_parser("TABLES", full=True),
    +259            "TABLES": _show_parser("TABLES"),
    +260            "TRIGGERS": _show_parser("TRIGGERS"),
    +261            "GLOBAL VARIABLES": _show_parser("VARIABLES", global_=True),
    +262            "SESSION VARIABLES": _show_parser("VARIABLES"),
    +263            "VARIABLES": _show_parser("VARIABLES"),
    +264            "WARNINGS": _show_parser("WARNINGS"),
    +265        }
    +266
    +267        SET_PARSERS = {
    +268            **parser.Parser.SET_PARSERS,
    +269            "PERSIST": lambda self: self._parse_set_item_assignment("PERSIST"),
    +270            "PERSIST_ONLY": lambda self: self._parse_set_item_assignment("PERSIST_ONLY"),
    +271            "CHARACTER SET": lambda self: self._parse_set_item_charset("CHARACTER SET"),
    +272            "CHARSET": lambda self: self._parse_set_item_charset("CHARACTER SET"),
    +273            "NAMES": lambda self: self._parse_set_item_names(),
    +274        }
    +275
    +276        PROFILE_TYPES = {
    +277            "ALL",
    +278            "BLOCK IO",
    +279            "CONTEXT SWITCHES",
    +280            "CPU",
    +281            "IPC",
    +282            "MEMORY",
    +283            "PAGE FAULTS",
    +284            "SOURCE",
    +285            "SWAPS",
    +286        }
    +287
    +288        LOG_DEFAULTS_TO_LN = True
    +289
    +290        def _parse_show_mysql(self, this, target=False, full=None, global_=None):
    +291            if target:
    +292                if isinstance(target, str):
    +293                    self._match_text_seq(target)
    +294                target_id = self._parse_id_var()
    +295            else:
    +296                target_id = None
    +297
    +298            log = self._parse_string() if self._match_text_seq("IN") else None
    +299
    +300            if this in {"BINLOG EVENTS", "RELAYLOG EVENTS"}:
    +301                position = self._parse_number() if self._match_text_seq("FROM") else None
    +302                db = None
    +303            else:
    +304                position = None
    +305                db = None
    +306
    +307                if self._match(TokenType.FROM):
    +308                    db = self._parse_id_var()
    +309                elif self._match(TokenType.DOT):
    +310                    db = target_id
    +311                    target_id = self._parse_id_var()
     312
    -313                if self._match(TokenType.FROM):
    -314                    db = self._parse_id_var()
    -315                elif self._match(TokenType.DOT):
    -316                    db = target_id
    -317                    target_id = self._parse_id_var()
    -318
    -319            channel = self._parse_id_var() if self._match_text_seq("FOR", "CHANNEL") else None
    -320
    -321            like = self._parse_string() if self._match_text_seq("LIKE") else None
    -322            where = self._parse_where()
    -323
    -324            if this == "PROFILE":
    -325                types = self._parse_csv(lambda: self._parse_var_from_options(self.PROFILE_TYPES))
    -326                query = self._parse_number() if self._match_text_seq("FOR", "QUERY") else None
    -327                offset = self._parse_number() if self._match_text_seq("OFFSET") else None
    -328                limit = self._parse_number() if self._match_text_seq("LIMIT") else None
    -329            else:
    -330                types, query = None, None
    -331                offset, limit = self._parse_oldstyle_limit()
    -332
    -333            mutex = True if self._match_text_seq("MUTEX") else None
    -334            mutex = False if self._match_text_seq("STATUS") else mutex
    -335
    -336            return self.expression(
    -337                exp.Show,
    -338                this=this,
    -339                target=target_id,
    -340                full=full,
    -341                log=log,
    -342                position=position,
    -343                db=db,
    -344                channel=channel,
    -345                like=like,
    -346                where=where,
    -347                types=types,
    -348                query=query,
    -349                offset=offset,
    -350                limit=limit,
    -351                mutex=mutex,
    -352                **{"global": global_},
    -353            )
    -354
    -355        def _parse_oldstyle_limit(self):
    -356            limit = None
    -357            offset = None
    -358            if self._match_text_seq("LIMIT"):
    -359                parts = self._parse_csv(self._parse_number)
    -360                if len(parts) == 1:
    -361                    limit = parts[0]
    -362                elif len(parts) == 2:
    -363                    limit = parts[1]
    -364                    offset = parts[0]
    -365            return offset, limit
    -366
    -367        def _parse_set_item_charset(self, kind):
    -368            this = self._parse_string() or self._parse_id_var()
    +313            channel = self._parse_id_var() if self._match_text_seq("FOR", "CHANNEL") else None
    +314
    +315            like = self._parse_string() if self._match_text_seq("LIKE") else None
    +316            where = self._parse_where()
    +317
    +318            if this == "PROFILE":
    +319                types = self._parse_csv(lambda: self._parse_var_from_options(self.PROFILE_TYPES))
    +320                query = self._parse_number() if self._match_text_seq("FOR", "QUERY") else None
    +321                offset = self._parse_number() if self._match_text_seq("OFFSET") else None
    +322                limit = self._parse_number() if self._match_text_seq("LIMIT") else None
    +323            else:
    +324                types, query = None, None
    +325                offset, limit = self._parse_oldstyle_limit()
    +326
    +327            mutex = True if self._match_text_seq("MUTEX") else None
    +328            mutex = False if self._match_text_seq("STATUS") else mutex
    +329
    +330            return self.expression(
    +331                exp.Show,
    +332                this=this,
    +333                target=target_id,
    +334                full=full,
    +335                log=log,
    +336                position=position,
    +337                db=db,
    +338                channel=channel,
    +339                like=like,
    +340                where=where,
    +341                types=types,
    +342                query=query,
    +343                offset=offset,
    +344                limit=limit,
    +345                mutex=mutex,
    +346                **{"global": global_},
    +347            )
    +348
    +349        def _parse_oldstyle_limit(self):
    +350            limit = None
    +351            offset = None
    +352            if self._match_text_seq("LIMIT"):
    +353                parts = self._parse_csv(self._parse_number)
    +354                if len(parts) == 1:
    +355                    limit = parts[0]
    +356                elif len(parts) == 2:
    +357                    limit = parts[1]
    +358                    offset = parts[0]
    +359            return offset, limit
    +360
    +361        def _parse_set_item_charset(self, kind):
    +362            this = self._parse_string() or self._parse_id_var()
    +363
    +364            return self.expression(
    +365                exp.SetItem,
    +366                this=this,
    +367                kind=kind,
    +368            )
     369
    -370            return self.expression(
    -371                exp.SetItem,
    -372                this=this,
    -373                kind=kind,
    -374            )
    -375
    -376        def _parse_set_item_names(self):
    -377            charset = self._parse_string() or self._parse_id_var()
    -378            if self._match_text_seq("COLLATE"):
    -379                collate = self._parse_string() or self._parse_id_var()
    -380            else:
    -381                collate = None
    -382            return self.expression(
    -383                exp.SetItem,
    -384                this=charset,
    -385                collate=collate,
    -386                kind="NAMES",
    -387            )
    +370        def _parse_set_item_names(self):
    +371            charset = self._parse_string() or self._parse_id_var()
    +372            if self._match_text_seq("COLLATE"):
    +373                collate = self._parse_string() or self._parse_id_var()
    +374            else:
    +375                collate = None
    +376            return self.expression(
    +377                exp.SetItem,
    +378                this=charset,
    +379                collate=collate,
    +380                kind="NAMES",
    +381            )
     
    @@ -1345,103 +1354,108 @@ Default: "nulls_are_small"
    -
    389    class Generator(generator.Generator):
    -390        LOCKING_READS_SUPPORTED = True
    -391        NULL_ORDERING_SUPPORTED = False
    -392
    -393        TRANSFORMS = {
    -394            **generator.Generator.TRANSFORMS,  # type: ignore
    -395            exp.CurrentDate: no_paren_current_date_sql,
    -396            exp.CurrentTimestamp: lambda *_: "CURRENT_TIMESTAMP",
    -397            exp.ILike: no_ilike_sql,
    -398            exp.JSONExtractScalar: arrow_json_extract_scalar_sql,
    -399            exp.Max: max_or_greatest,
    -400            exp.Min: min_or_least,
    -401            exp.TableSample: no_tablesample_sql,
    -402            exp.TryCast: no_trycast_sql,
    -403            exp.DateAdd: _date_add_sql("ADD"),
    -404            exp.DateDiff: lambda self, e: f"DATEDIFF({self.format_args(e.this, e.expression)})",
    -405            exp.DateSub: _date_add_sql("SUB"),
    -406            exp.DateTrunc: _date_trunc_sql,
    -407            exp.DayOfWeek: rename_func("DAYOFWEEK"),
    -408            exp.DayOfMonth: rename_func("DAYOFMONTH"),
    -409            exp.DayOfYear: rename_func("DAYOFYEAR"),
    -410            exp.WeekOfYear: rename_func("WEEKOFYEAR"),
    -411            exp.GroupConcat: lambda self, e: f"""GROUP_CONCAT({self.sql(e, "this")} SEPARATOR {self.sql(e, "separator") or "','"})""",
    -412            exp.StrToDate: _str_to_date_sql,
    -413            exp.StrToTime: _str_to_date_sql,
    -414            exp.Trim: _trim_sql,
    -415            exp.NullSafeEQ: lambda self, e: self.binary(e, "<=>"),
    -416            exp.NullSafeNEQ: lambda self, e: self.not_sql(self.binary(e, "<=>")),
    -417            exp.StrPosition: strposition_to_locate_sql,
    -418        }
    -419
    -420        TYPE_MAPPING = generator.Generator.TYPE_MAPPING.copy()
    -421        TYPE_MAPPING.pop(exp.DataType.Type.MEDIUMTEXT)
    -422        TYPE_MAPPING.pop(exp.DataType.Type.LONGTEXT)
    -423        TYPE_MAPPING.pop(exp.DataType.Type.MEDIUMBLOB)
    -424        TYPE_MAPPING.pop(exp.DataType.Type.LONGBLOB)
    -425
    -426        PROPERTIES_LOCATION = {
    -427            **generator.Generator.PROPERTIES_LOCATION,  # type: ignore
    -428            exp.TransientProperty: exp.Properties.Location.UNSUPPORTED,
    -429        }
    -430
    -431        LIMIT_FETCH = "LIMIT"
    -432
    -433        def show_sql(self, expression: exp.Show) -> str:
    -434            this = f" {expression.name}"
    -435            full = " FULL" if expression.args.get("full") else ""
    -436            global_ = " GLOBAL" if expression.args.get("global") else ""
    -437
    -438            target = self.sql(expression, "target")
    -439            target = f" {target}" if target else ""
    -440            if expression.name in {"COLUMNS", "INDEX"}:
    -441                target = f" FROM{target}"
    -442            elif expression.name == "GRANTS":
    -443                target = f" FOR{target}"
    -444
    -445            db = self._prefixed_sql("FROM", expression, "db")
    -446
    -447            like = self._prefixed_sql("LIKE", expression, "like")
    -448            where = self.sql(expression, "where")
    -449
    -450            types = self.expressions(expression, key="types")
    -451            types = f" {types}" if types else types
    -452            query = self._prefixed_sql("FOR QUERY", expression, "query")
    -453
    -454            if expression.name == "PROFILE":
    -455                offset = self._prefixed_sql("OFFSET", expression, "offset")
    -456                limit = self._prefixed_sql("LIMIT", expression, "limit")
    -457            else:
    -458                offset = ""
    -459                limit = self._oldstyle_limit_sql(expression)
    -460
    -461            log = self._prefixed_sql("IN", expression, "log")
    -462            position = self._prefixed_sql("FROM", expression, "position")
    -463
    -464            channel = self._prefixed_sql("FOR CHANNEL", expression, "channel")
    -465
    -466            if expression.name == "ENGINE":
    -467                mutex_or_status = " MUTEX" if expression.args.get("mutex") else " STATUS"
    -468            else:
    -469                mutex_or_status = ""
    -470
    -471            return f"SHOW{full}{global_}{this}{target}{types}{db}{query}{log}{position}{channel}{mutex_or_status}{like}{where}{offset}{limit}"
    -472
    -473        def _prefixed_sql(self, prefix: str, expression: exp.Expression, arg: str) -> str:
    -474            sql = self.sql(expression, arg)
    -475            if not sql:
    -476                return ""
    -477            return f" {prefix} {sql}"
    -478
    -479        def _oldstyle_limit_sql(self, expression: exp.Show) -> str:
    -480            limit = self.sql(expression, "limit")
    -481            offset = self.sql(expression, "offset")
    -482            if limit:
    -483                limit_offset = f"{offset}, {limit}" if offset else limit
    -484                return f" LIMIT {limit_offset}"
    -485            return ""
    +            
    383    class Generator(generator.Generator):
    +384        LOCKING_READS_SUPPORTED = True
    +385        NULL_ORDERING_SUPPORTED = False
    +386        JOIN_HINTS = False
    +387        TABLE_HINTS = False
    +388
    +389        TRANSFORMS = {
    +390            **generator.Generator.TRANSFORMS,  # type: ignore
    +391            exp.CurrentDate: no_paren_current_date_sql,
    +392            exp.DateDiff: lambda self, e: self.func("DATEDIFF", e.this, e.expression),
    +393            exp.DateAdd: _date_add_sql("ADD"),
    +394            exp.DateStrToDate: datestrtodate_sql,
    +395            exp.DateSub: _date_add_sql("SUB"),
    +396            exp.DateTrunc: _date_trunc_sql,
    +397            exp.DayOfMonth: rename_func("DAYOFMONTH"),
    +398            exp.DayOfWeek: rename_func("DAYOFWEEK"),
    +399            exp.DayOfYear: rename_func("DAYOFYEAR"),
    +400            exp.GroupConcat: lambda self, e: f"""GROUP_CONCAT({self.sql(e, "this")} SEPARATOR {self.sql(e, "separator") or "','"})""",
    +401            exp.ILike: no_ilike_sql,
    +402            exp.JSONExtractScalar: arrow_json_extract_scalar_sql,
    +403            exp.Max: max_or_greatest,
    +404            exp.Min: min_or_least,
    +405            exp.NullSafeEQ: lambda self, e: self.binary(e, "<=>"),
    +406            exp.NullSafeNEQ: lambda self, e: self.not_sql(self.binary(e, "<=>")),
    +407            exp.StrPosition: strposition_to_locate_sql,
    +408            exp.StrToDate: _str_to_date_sql,
    +409            exp.StrToTime: _str_to_date_sql,
    +410            exp.TableSample: no_tablesample_sql,
    +411            exp.TimeStrToUnix: rename_func("UNIX_TIMESTAMP"),
    +412            exp.TimeToStr: lambda self, e: self.func("DATE_FORMAT", e.this, self.format_time(e)),
    +413            exp.Trim: _trim_sql,
    +414            exp.TryCast: no_trycast_sql,
    +415            exp.WeekOfYear: rename_func("WEEKOFYEAR"),
    +416        }
    +417
    +418        TYPE_MAPPING = generator.Generator.TYPE_MAPPING.copy()
    +419        TYPE_MAPPING.pop(exp.DataType.Type.MEDIUMTEXT)
    +420        TYPE_MAPPING.pop(exp.DataType.Type.LONGTEXT)
    +421        TYPE_MAPPING.pop(exp.DataType.Type.MEDIUMBLOB)
    +422        TYPE_MAPPING.pop(exp.DataType.Type.LONGBLOB)
    +423
    +424        PROPERTIES_LOCATION = {
    +425            **generator.Generator.PROPERTIES_LOCATION,  # type: ignore
    +426            exp.TransientProperty: exp.Properties.Location.UNSUPPORTED,
    +427            exp.VolatileProperty: exp.Properties.Location.UNSUPPORTED,
    +428        }
    +429
    +430        LIMIT_FETCH = "LIMIT"
    +431
    +432        def show_sql(self, expression: exp.Show) -> str:
    +433            this = f" {expression.name}"
    +434            full = " FULL" if expression.args.get("full") else ""
    +435            global_ = " GLOBAL" if expression.args.get("global") else ""
    +436
    +437            target = self.sql(expression, "target")
    +438            target = f" {target}" if target else ""
    +439            if expression.name in {"COLUMNS", "INDEX"}:
    +440                target = f" FROM{target}"
    +441            elif expression.name == "GRANTS":
    +442                target = f" FOR{target}"
    +443
    +444            db = self._prefixed_sql("FROM", expression, "db")
    +445
    +446            like = self._prefixed_sql("LIKE", expression, "like")
    +447            where = self.sql(expression, "where")
    +448
    +449            types = self.expressions(expression, key="types")
    +450            types = f" {types}" if types else types
    +451            query = self._prefixed_sql("FOR QUERY", expression, "query")
    +452
    +453            if expression.name == "PROFILE":
    +454                offset = self._prefixed_sql("OFFSET", expression, "offset")
    +455                limit = self._prefixed_sql("LIMIT", expression, "limit")
    +456            else:
    +457                offset = ""
    +458                limit = self._oldstyle_limit_sql(expression)
    +459
    +460            log = self._prefixed_sql("IN", expression, "log")
    +461            position = self._prefixed_sql("FROM", expression, "position")
    +462
    +463            channel = self._prefixed_sql("FOR CHANNEL", expression, "channel")
    +464
    +465            if expression.name == "ENGINE":
    +466                mutex_or_status = " MUTEX" if expression.args.get("mutex") else " STATUS"
    +467            else:
    +468                mutex_or_status = ""
    +469
    +470            return f"SHOW{full}{global_}{this}{target}{types}{db}{query}{log}{position}{channel}{mutex_or_status}{like}{where}{offset}{limit}"
    +471
    +472        def _prefixed_sql(self, prefix: str, expression: exp.Expression, arg: str) -> str:
    +473            sql = self.sql(expression, arg)
    +474            if not sql:
    +475                return ""
    +476            return f" {prefix} {sql}"
    +477
    +478        def _oldstyle_limit_sql(self, expression: exp.Show) -> str:
    +479            limit = self.sql(expression, "limit")
    +480            offset = self.sql(expression, "offset")
    +481            if limit:
    +482                limit_offset = f"{offset}, {limit}" if offset else limit
    +483                return f" LIMIT {limit_offset}"
    +484            return ""
     
    @@ -1500,45 +1514,45 @@ Default: True
    -
    433        def show_sql(self, expression: exp.Show) -> str:
    -434            this = f" {expression.name}"
    -435            full = " FULL" if expression.args.get("full") else ""
    -436            global_ = " GLOBAL" if expression.args.get("global") else ""
    -437
    -438            target = self.sql(expression, "target")
    -439            target = f" {target}" if target else ""
    -440            if expression.name in {"COLUMNS", "INDEX"}:
    -441                target = f" FROM{target}"
    -442            elif expression.name == "GRANTS":
    -443                target = f" FOR{target}"
    -444
    -445            db = self._prefixed_sql("FROM", expression, "db")
    -446
    -447            like = self._prefixed_sql("LIKE", expression, "like")
    -448            where = self.sql(expression, "where")
    -449
    -450            types = self.expressions(expression, key="types")
    -451            types = f" {types}" if types else types
    -452            query = self._prefixed_sql("FOR QUERY", expression, "query")
    -453
    -454            if expression.name == "PROFILE":
    -455                offset = self._prefixed_sql("OFFSET", expression, "offset")
    -456                limit = self._prefixed_sql("LIMIT", expression, "limit")
    -457            else:
    -458                offset = ""
    -459                limit = self._oldstyle_limit_sql(expression)
    -460
    -461            log = self._prefixed_sql("IN", expression, "log")
    -462            position = self._prefixed_sql("FROM", expression, "position")
    -463
    -464            channel = self._prefixed_sql("FOR CHANNEL", expression, "channel")
    -465
    -466            if expression.name == "ENGINE":
    -467                mutex_or_status = " MUTEX" if expression.args.get("mutex") else " STATUS"
    -468            else:
    -469                mutex_or_status = ""
    -470
    -471            return f"SHOW{full}{global_}{this}{target}{types}{db}{query}{log}{position}{channel}{mutex_or_status}{like}{where}{offset}{limit}"
    +            
    432        def show_sql(self, expression: exp.Show) -> str:
    +433            this = f" {expression.name}"
    +434            full = " FULL" if expression.args.get("full") else ""
    +435            global_ = " GLOBAL" if expression.args.get("global") else ""
    +436
    +437            target = self.sql(expression, "target")
    +438            target = f" {target}" if target else ""
    +439            if expression.name in {"COLUMNS", "INDEX"}:
    +440                target = f" FROM{target}"
    +441            elif expression.name == "GRANTS":
    +442                target = f" FOR{target}"
    +443
    +444            db = self._prefixed_sql("FROM", expression, "db")
    +445
    +446            like = self._prefixed_sql("LIKE", expression, "like")
    +447            where = self.sql(expression, "where")
    +448
    +449            types = self.expressions(expression, key="types")
    +450            types = f" {types}" if types else types
    +451            query = self._prefixed_sql("FOR QUERY", expression, "query")
    +452
    +453            if expression.name == "PROFILE":
    +454                offset = self._prefixed_sql("OFFSET", expression, "offset")
    +455                limit = self._prefixed_sql("LIMIT", expression, "limit")
    +456            else:
    +457                offset = ""
    +458                limit = self._oldstyle_limit_sql(expression)
    +459
    +460            log = self._prefixed_sql("IN", expression, "log")
    +461            position = self._prefixed_sql("FROM", expression, "position")
    +462
    +463            channel = self._prefixed_sql("FOR CHANNEL", expression, "channel")
    +464
    +465            if expression.name == "ENGINE":
    +466                mutex_or_status = " MUTEX" if expression.args.get("mutex") else " STATUS"
    +467            else:
    +468                mutex_or_status = ""
    +469
    +470            return f"SHOW{full}{global_}{this}{target}{types}{db}{query}{log}{position}{channel}{mutex_or_status}{like}{where}{offset}{limit}"
     
    @@ -1582,6 +1596,7 @@ Default: True
    tablealias_sql
    bitstring_sql
    hexstring_sql
    +
    bytestring_sql
    datatype_sql
    directory_sql
    delete_sql
    @@ -1593,6 +1608,7 @@ Default: True
    hint_sql
    index_sql
    identifier_sql
    +
    inputoutputformat_sql
    national_sql
    partition_sql
    properties_sql
    @@ -1618,6 +1634,7 @@ Default: True
    intersect_op
    introducer_sql
    pseudotype_sql
    +
    onconflict_sql
    returning_sql
    rowformatdelimitedproperty_sql
    table_sql
    diff --git a/docs/sqlglot/dialects/oracle.html b/docs/sqlglot/dialects/oracle.html index dcf8bf6..a6534d3 100644 --- a/docs/sqlglot/dialects/oracle.html +++ b/docs/sqlglot/dialects/oracle.html @@ -3,7 +3,7 @@ - + sqlglot.dialects.oracle API documentation @@ -95,163 +95,173 @@
    7from sqlglot.helper import seq_get 8from sqlglot.tokens import TokenType 9 - 10PASSING_TABLE_ALIAS_TOKENS = parser.Parser.TABLE_ALIAS_TOKENS - { - 11 TokenType.COLUMN, - 12 TokenType.RETURNING, - 13} - 14 - 15 - 16def _parse_xml_table(self) -> exp.XMLTable: - 17 this = self._parse_string() - 18 - 19 passing = None - 20 columns = None + 10 + 11def _parse_xml_table(self) -> exp.XMLTable: + 12 this = self._parse_string() + 13 + 14 passing = None + 15 columns = None + 16 + 17 if self._match_text_seq("PASSING"): + 18 # The BY VALUE keywords are optional and are provided for semantic clarity + 19 self._match_text_seq("BY", "VALUE") + 20 passing = self._parse_csv(self._parse_column) 21 - 22 if self._match_text_seq("PASSING"): - 23 # The BY VALUE keywords are optional and are provided for semantic clarity - 24 self._match_text_seq("BY", "VALUE") - 25 passing = self._parse_csv( - 26 lambda: self._parse_table(alias_tokens=PASSING_TABLE_ALIAS_TOKENS) - 27 ) - 28 - 29 by_ref = self._match_text_seq("RETURNING", "SEQUENCE", "BY", "REF") - 30 - 31 if self._match_text_seq("COLUMNS"): - 32 columns = self._parse_csv(lambda: self._parse_column_def(self._parse_field(any_token=True))) - 33 - 34 return self.expression( - 35 exp.XMLTable, - 36 this=this, - 37 passing=passing, - 38 columns=columns, - 39 by_ref=by_ref, - 40 ) - 41 - 42 - 43class Oracle(Dialect): - 44 # https://docs.oracle.com/database/121/SQLRF/sql_elements004.htm#SQLRF00212 - 45 # https://docs.python.org/3/library/datetime.html#strftime-and-strptime-format-codes - 46 time_mapping = { - 47 "AM": "%p", # Meridian indicator with or without periods - 48 "A.M.": "%p", # Meridian indicator with or without periods - 49 "PM": "%p", # Meridian indicator with or without periods - 50 "P.M.": "%p", # Meridian indicator with or without periods - 51 "D": "%u", # Day of week (1-7) - 52 "DAY": "%A", # name of day - 53 "DD": "%d", # day of month (1-31) - 54 "DDD": "%j", # day of year (1-366) - 55 "DY": "%a", # abbreviated name of day - 56 "HH": "%I", # Hour of day (1-12) - 57 "HH12": "%I", # alias for HH - 58 "HH24": "%H", # Hour of day (0-23) - 59 "IW": "%V", # Calendar week of year (1-52 or 1-53), as defined by the ISO 8601 standard - 60 "MI": "%M", # Minute (0-59) - 61 "MM": "%m", # Month (01-12; January = 01) - 62 "MON": "%b", # Abbreviated name of month - 63 "MONTH": "%B", # Name of month - 64 "SS": "%S", # Second (0-59) - 65 "WW": "%W", # Week of year (1-53) - 66 "YY": "%y", # 15 - 67 "YYYY": "%Y", # 2015 - 68 } - 69 - 70 class Parser(parser.Parser): - 71 FUNCTIONS = { - 72 **parser.Parser.FUNCTIONS, # type: ignore - 73 "SQUARE": lambda args: exp.Pow(this=seq_get(args, 0), expression=exp.Literal.number(2)), - 74 } - 75 - 76 FUNCTION_PARSERS: t.Dict[str, t.Callable] = { - 77 **parser.Parser.FUNCTION_PARSERS, - 78 "XMLTABLE": _parse_xml_table, - 79 } - 80 - 81 def _parse_column(self) -> t.Optional[exp.Expression]: - 82 column = super()._parse_column() - 83 if column: - 84 column.set("join_mark", self._match(TokenType.JOIN_MARKER)) - 85 return column - 86 - 87 def _parse_hint(self) -> t.Optional[exp.Expression]: - 88 if self._match(TokenType.HINT): - 89 start = self._curr - 90 while self._curr and not self._match_pair(TokenType.STAR, TokenType.SLASH): - 91 self._advance() - 92 - 93 if not self._curr: - 94 self.raise_error("Expected */ after HINT") - 95 - 96 end = self._tokens[self._index - 3] - 97 return exp.Hint(expressions=[self._find_sql(start, end)]) - 98 - 99 return None -100 -101 class Generator(generator.Generator): -102 LOCKING_READS_SUPPORTED = True -103 -104 TYPE_MAPPING = { -105 **generator.Generator.TYPE_MAPPING, # type: ignore -106 exp.DataType.Type.TINYINT: "NUMBER", -107 exp.DataType.Type.SMALLINT: "NUMBER", -108 exp.DataType.Type.INT: "NUMBER", -109 exp.DataType.Type.BIGINT: "NUMBER", -110 exp.DataType.Type.DECIMAL: "NUMBER", -111 exp.DataType.Type.DOUBLE: "DOUBLE PRECISION", -112 exp.DataType.Type.VARCHAR: "VARCHAR2", -113 exp.DataType.Type.NVARCHAR: "NVARCHAR2", -114 exp.DataType.Type.TEXT: "CLOB", -115 exp.DataType.Type.BINARY: "BLOB", -116 exp.DataType.Type.VARBINARY: "BLOB", -117 } -118 -119 TRANSFORMS = { -120 **generator.Generator.TRANSFORMS, # type: ignore -121 **transforms.UNALIAS_GROUP, # type: ignore -122 exp.Hint: lambda self, e: f" /*+ {self.expressions(e).strip()} */", -123 exp.ILike: no_ilike_sql, -124 exp.StrToTime: lambda self, e: f"TO_TIMESTAMP({self.sql(e, 'this')}, {self.format_time(e)})", -125 exp.Subquery: lambda self, e: self.subquery_sql(e, sep=" "), -126 exp.Substring: rename_func("SUBSTR"), -127 exp.Table: lambda self, e: self.table_sql(e, sep=" "), -128 exp.TimeToStr: lambda self, e: f"TO_CHAR({self.sql(e, 'this')}, {self.format_time(e)})", -129 exp.ToChar: lambda self, e: self.function_fallback_sql(e), -130 exp.Trim: trim_sql, -131 exp.UnixToTime: lambda self, e: f"TO_DATE('1970-01-01','YYYY-MM-DD') + ({self.sql(e, 'this')} / 86400)", -132 } -133 -134 LIMIT_FETCH = "FETCH" -135 -136 def offset_sql(self, expression: exp.Offset) -> str: -137 return f"{super().offset_sql(expression)} ROWS" + 22 by_ref = self._match_text_seq("RETURNING", "SEQUENCE", "BY", "REF") + 23 + 24 if self._match_text_seq("COLUMNS"): + 25 columns = self._parse_csv(lambda: self._parse_column_def(self._parse_field(any_token=True))) + 26 + 27 return self.expression( + 28 exp.XMLTable, + 29 this=this, + 30 passing=passing, + 31 columns=columns, + 32 by_ref=by_ref, + 33 ) + 34 + 35 + 36class Oracle(Dialect): + 37 # https://docs.oracle.com/database/121/SQLRF/sql_elements004.htm#SQLRF00212 + 38 # https://docs.python.org/3/library/datetime.html#strftime-and-strptime-format-codes + 39 time_mapping = { + 40 "AM": "%p", # Meridian indicator with or without periods + 41 "A.M.": "%p", # Meridian indicator with or without periods + 42 "PM": "%p", # Meridian indicator with or without periods + 43 "P.M.": "%p", # Meridian indicator with or without periods + 44 "D": "%u", # Day of week (1-7) + 45 "DAY": "%A", # name of day + 46 "DD": "%d", # day of month (1-31) + 47 "DDD": "%j", # day of year (1-366) + 48 "DY": "%a", # abbreviated name of day + 49 "HH": "%I", # Hour of day (1-12) + 50 "HH12": "%I", # alias for HH + 51 "HH24": "%H", # Hour of day (0-23) + 52 "IW": "%V", # Calendar week of year (1-52 or 1-53), as defined by the ISO 8601 standard + 53 "MI": "%M", # Minute (0-59) + 54 "MM": "%m", # Month (01-12; January = 01) + 55 "MON": "%b", # Abbreviated name of month + 56 "MONTH": "%B", # Name of month + 57 "SS": "%S", # Second (0-59) + 58 "WW": "%W", # Week of year (1-53) + 59 "YY": "%y", # 15 + 60 "YYYY": "%Y", # 2015 + 61 } + 62 + 63 class Parser(parser.Parser): + 64 FUNCTIONS = { + 65 **parser.Parser.FUNCTIONS, # type: ignore + 66 "SQUARE": lambda args: exp.Pow(this=seq_get(args, 0), expression=exp.Literal.number(2)), + 67 } + 68 + 69 FUNCTION_PARSERS: t.Dict[str, t.Callable] = { + 70 **parser.Parser.FUNCTION_PARSERS, + 71 "XMLTABLE": _parse_xml_table, + 72 } + 73 + 74 TYPE_LITERAL_PARSERS = { + 75 exp.DataType.Type.DATE: lambda self, this, _: self.expression( + 76 exp.DateStrToDate, this=this + 77 ) + 78 } + 79 + 80 def _parse_column(self) -> t.Optional[exp.Expression]: + 81 column = super()._parse_column() + 82 if column: + 83 column.set("join_mark", self._match(TokenType.JOIN_MARKER)) + 84 return column + 85 + 86 def _parse_hint(self) -> t.Optional[exp.Expression]: + 87 if self._match(TokenType.HINT): + 88 start = self._curr + 89 while self._curr and not self._match_pair(TokenType.STAR, TokenType.SLASH): + 90 self._advance() + 91 + 92 if not self._curr: + 93 self.raise_error("Expected */ after HINT") + 94 + 95 end = self._tokens[self._index - 3] + 96 return exp.Hint(expressions=[self._find_sql(start, end)]) + 97 + 98 return None + 99 +100 class Generator(generator.Generator): +101 LOCKING_READS_SUPPORTED = True +102 JOIN_HINTS = False +103 TABLE_HINTS = False +104 +105 TYPE_MAPPING = { +106 **generator.Generator.TYPE_MAPPING, # type: ignore +107 exp.DataType.Type.TINYINT: "NUMBER", +108 exp.DataType.Type.SMALLINT: "NUMBER", +109 exp.DataType.Type.INT: "NUMBER", +110 exp.DataType.Type.BIGINT: "NUMBER", +111 exp.DataType.Type.DECIMAL: "NUMBER", +112 exp.DataType.Type.DOUBLE: "DOUBLE PRECISION", +113 exp.DataType.Type.VARCHAR: "VARCHAR2", +114 exp.DataType.Type.NVARCHAR: "NVARCHAR2", +115 exp.DataType.Type.TEXT: "CLOB", +116 exp.DataType.Type.BINARY: "BLOB", +117 exp.DataType.Type.VARBINARY: "BLOB", +118 } +119 +120 TRANSFORMS = { +121 **generator.Generator.TRANSFORMS, # type: ignore +122 **transforms.UNALIAS_GROUP, # type: ignore +123 exp.DateStrToDate: lambda self, e: self.func( +124 "TO_DATE", e.this, exp.Literal.string("YYYY-MM-DD") +125 ), +126 exp.Hint: lambda self, e: f" /*+ {self.expressions(e).strip()} */", +127 exp.ILike: no_ilike_sql, +128 exp.StrToTime: lambda self, e: f"TO_TIMESTAMP({self.sql(e, 'this')}, {self.format_time(e)})", +129 exp.Subquery: lambda self, e: self.subquery_sql(e, sep=" "), +130 exp.Substring: rename_func("SUBSTR"), +131 exp.Table: lambda self, e: self.table_sql(e, sep=" "), +132 exp.TimeToStr: lambda self, e: f"TO_CHAR({self.sql(e, 'this')}, {self.format_time(e)})", +133 exp.ToChar: lambda self, e: self.function_fallback_sql(e), +134 exp.Trim: trim_sql, +135 exp.UnixToTime: lambda self, e: f"TO_DATE('1970-01-01','YYYY-MM-DD') + ({self.sql(e, 'this')} / 86400)", +136 exp.IfNull: rename_func("NVL"), +137 } 138 -139 def column_sql(self, expression: exp.Column) -> str: -140 column = super().column_sql(expression) -141 return f"{column} (+)" if expression.args.get("join_mark") else column -142 -143 def xmltable_sql(self, expression: exp.XMLTable) -> str: -144 this = self.sql(expression, "this") -145 passing = self.expressions(expression, "passing") -146 passing = f"{self.sep()}PASSING{self.seg(passing)}" if passing else "" -147 columns = self.expressions(expression, "columns") -148 columns = f"{self.sep()}COLUMNS{self.seg(columns)}" if columns else "" -149 by_ref = ( -150 f"{self.sep()}RETURNING SEQUENCE BY REF" if expression.args.get("by_ref") else "" -151 ) -152 return f"XMLTABLE({self.sep('')}{self.indent(this + passing + by_ref + columns)}{self.seg(')', sep='')}" -153 -154 class Tokenizer(tokens.Tokenizer): -155 KEYWORDS = { -156 **tokens.Tokenizer.KEYWORDS, -157 "(+)": TokenType.JOIN_MARKER, -158 "COLUMNS": TokenType.COLUMN, -159 "MATCH_RECOGNIZE": TokenType.MATCH_RECOGNIZE, -160 "MINUS": TokenType.EXCEPT, -161 "NVARCHAR2": TokenType.NVARCHAR, -162 "RETURNING": TokenType.RETURNING, -163 "START": TokenType.BEGIN, -164 "TOP": TokenType.TOP, -165 "VARCHAR2": TokenType.VARCHAR, -166 } +139 PROPERTIES_LOCATION = { +140 **generator.Generator.PROPERTIES_LOCATION, # type: ignore +141 exp.VolatileProperty: exp.Properties.Location.UNSUPPORTED, +142 } +143 +144 LIMIT_FETCH = "FETCH" +145 +146 def offset_sql(self, expression: exp.Offset) -> str: +147 return f"{super().offset_sql(expression)} ROWS" +148 +149 def column_sql(self, expression: exp.Column) -> str: +150 column = super().column_sql(expression) +151 return f"{column} (+)" if expression.args.get("join_mark") else column +152 +153 def xmltable_sql(self, expression: exp.XMLTable) -> str: +154 this = self.sql(expression, "this") +155 passing = self.expressions(expression, key="passing") +156 passing = f"{self.sep()}PASSING{self.seg(passing)}" if passing else "" +157 columns = self.expressions(expression, key="columns") +158 columns = f"{self.sep()}COLUMNS{self.seg(columns)}" if columns else "" +159 by_ref = ( +160 f"{self.sep()}RETURNING SEQUENCE BY REF" if expression.args.get("by_ref") else "" +161 ) +162 return f"XMLTABLE({self.sep('')}{self.indent(this + passing + by_ref + columns)}{self.seg(')', sep='')}" +163 +164 class Tokenizer(tokens.Tokenizer): +165 KEYWORDS = { +166 **tokens.Tokenizer.KEYWORDS, +167 "(+)": TokenType.JOIN_MARKER, +168 "COLUMNS": TokenType.COLUMN, +169 "MATCH_RECOGNIZE": TokenType.MATCH_RECOGNIZE, +170 "MINUS": TokenType.EXCEPT, +171 "NVARCHAR2": TokenType.NVARCHAR, +172 "RETURNING": TokenType.RETURNING, +173 "START": TokenType.BEGIN, +174 "TOP": TokenType.TOP, +175 "VARCHAR2": TokenType.VARCHAR, +176 }
    @@ -267,130 +277,147 @@ -
     44class Oracle(Dialect):
    - 45    # https://docs.oracle.com/database/121/SQLRF/sql_elements004.htm#SQLRF00212
    - 46    # https://docs.python.org/3/library/datetime.html#strftime-and-strptime-format-codes
    - 47    time_mapping = {
    - 48        "AM": "%p",  # Meridian indicator with or without periods
    - 49        "A.M.": "%p",  # Meridian indicator with or without periods
    - 50        "PM": "%p",  # Meridian indicator with or without periods
    - 51        "P.M.": "%p",  # Meridian indicator with or without periods
    - 52        "D": "%u",  # Day of week (1-7)
    - 53        "DAY": "%A",  # name of day
    - 54        "DD": "%d",  # day of month (1-31)
    - 55        "DDD": "%j",  # day of year (1-366)
    - 56        "DY": "%a",  # abbreviated name of day
    - 57        "HH": "%I",  # Hour of day (1-12)
    - 58        "HH12": "%I",  # alias for HH
    - 59        "HH24": "%H",  # Hour of day (0-23)
    - 60        "IW": "%V",  # Calendar week of year (1-52 or 1-53), as defined by the ISO 8601 standard
    - 61        "MI": "%M",  # Minute (0-59)
    - 62        "MM": "%m",  # Month (01-12; January = 01)
    - 63        "MON": "%b",  # Abbreviated name of month
    - 64        "MONTH": "%B",  # Name of month
    - 65        "SS": "%S",  # Second (0-59)
    - 66        "WW": "%W",  # Week of year (1-53)
    - 67        "YY": "%y",  # 15
    - 68        "YYYY": "%Y",  # 2015
    - 69    }
    - 70
    - 71    class Parser(parser.Parser):
    - 72        FUNCTIONS = {
    - 73            **parser.Parser.FUNCTIONS,  # type: ignore
    - 74            "SQUARE": lambda args: exp.Pow(this=seq_get(args, 0), expression=exp.Literal.number(2)),
    - 75        }
    - 76
    - 77        FUNCTION_PARSERS: t.Dict[str, t.Callable] = {
    - 78            **parser.Parser.FUNCTION_PARSERS,
    - 79            "XMLTABLE": _parse_xml_table,
    - 80        }
    - 81
    - 82        def _parse_column(self) -> t.Optional[exp.Expression]:
    - 83            column = super()._parse_column()
    - 84            if column:
    - 85                column.set("join_mark", self._match(TokenType.JOIN_MARKER))
    - 86            return column
    - 87
    - 88        def _parse_hint(self) -> t.Optional[exp.Expression]:
    - 89            if self._match(TokenType.HINT):
    - 90                start = self._curr
    - 91                while self._curr and not self._match_pair(TokenType.STAR, TokenType.SLASH):
    - 92                    self._advance()
    - 93
    - 94                if not self._curr:
    - 95                    self.raise_error("Expected */ after HINT")
    - 96
    - 97                end = self._tokens[self._index - 3]
    - 98                return exp.Hint(expressions=[self._find_sql(start, end)])
    - 99
    -100            return None
    -101
    -102    class Generator(generator.Generator):
    -103        LOCKING_READS_SUPPORTED = True
    -104
    -105        TYPE_MAPPING = {
    -106            **generator.Generator.TYPE_MAPPING,  # type: ignore
    -107            exp.DataType.Type.TINYINT: "NUMBER",
    -108            exp.DataType.Type.SMALLINT: "NUMBER",
    -109            exp.DataType.Type.INT: "NUMBER",
    -110            exp.DataType.Type.BIGINT: "NUMBER",
    -111            exp.DataType.Type.DECIMAL: "NUMBER",
    -112            exp.DataType.Type.DOUBLE: "DOUBLE PRECISION",
    -113            exp.DataType.Type.VARCHAR: "VARCHAR2",
    -114            exp.DataType.Type.NVARCHAR: "NVARCHAR2",
    -115            exp.DataType.Type.TEXT: "CLOB",
    -116            exp.DataType.Type.BINARY: "BLOB",
    -117            exp.DataType.Type.VARBINARY: "BLOB",
    -118        }
    -119
    -120        TRANSFORMS = {
    -121            **generator.Generator.TRANSFORMS,  # type: ignore
    -122            **transforms.UNALIAS_GROUP,  # type: ignore
    -123            exp.Hint: lambda self, e: f" /*+ {self.expressions(e).strip()} */",
    -124            exp.ILike: no_ilike_sql,
    -125            exp.StrToTime: lambda self, e: f"TO_TIMESTAMP({self.sql(e, 'this')}, {self.format_time(e)})",
    -126            exp.Subquery: lambda self, e: self.subquery_sql(e, sep=" "),
    -127            exp.Substring: rename_func("SUBSTR"),
    -128            exp.Table: lambda self, e: self.table_sql(e, sep=" "),
    -129            exp.TimeToStr: lambda self, e: f"TO_CHAR({self.sql(e, 'this')}, {self.format_time(e)})",
    -130            exp.ToChar: lambda self, e: self.function_fallback_sql(e),
    -131            exp.Trim: trim_sql,
    -132            exp.UnixToTime: lambda self, e: f"TO_DATE('1970-01-01','YYYY-MM-DD') + ({self.sql(e, 'this')} / 86400)",
    -133        }
    -134
    -135        LIMIT_FETCH = "FETCH"
    -136
    -137        def offset_sql(self, expression: exp.Offset) -> str:
    -138            return f"{super().offset_sql(expression)} ROWS"
    +            
     37class Oracle(Dialect):
    + 38    # https://docs.oracle.com/database/121/SQLRF/sql_elements004.htm#SQLRF00212
    + 39    # https://docs.python.org/3/library/datetime.html#strftime-and-strptime-format-codes
    + 40    time_mapping = {
    + 41        "AM": "%p",  # Meridian indicator with or without periods
    + 42        "A.M.": "%p",  # Meridian indicator with or without periods
    + 43        "PM": "%p",  # Meridian indicator with or without periods
    + 44        "P.M.": "%p",  # Meridian indicator with or without periods
    + 45        "D": "%u",  # Day of week (1-7)
    + 46        "DAY": "%A",  # name of day
    + 47        "DD": "%d",  # day of month (1-31)
    + 48        "DDD": "%j",  # day of year (1-366)
    + 49        "DY": "%a",  # abbreviated name of day
    + 50        "HH": "%I",  # Hour of day (1-12)
    + 51        "HH12": "%I",  # alias for HH
    + 52        "HH24": "%H",  # Hour of day (0-23)
    + 53        "IW": "%V",  # Calendar week of year (1-52 or 1-53), as defined by the ISO 8601 standard
    + 54        "MI": "%M",  # Minute (0-59)
    + 55        "MM": "%m",  # Month (01-12; January = 01)
    + 56        "MON": "%b",  # Abbreviated name of month
    + 57        "MONTH": "%B",  # Name of month
    + 58        "SS": "%S",  # Second (0-59)
    + 59        "WW": "%W",  # Week of year (1-53)
    + 60        "YY": "%y",  # 15
    + 61        "YYYY": "%Y",  # 2015
    + 62    }
    + 63
    + 64    class Parser(parser.Parser):
    + 65        FUNCTIONS = {
    + 66            **parser.Parser.FUNCTIONS,  # type: ignore
    + 67            "SQUARE": lambda args: exp.Pow(this=seq_get(args, 0), expression=exp.Literal.number(2)),
    + 68        }
    + 69
    + 70        FUNCTION_PARSERS: t.Dict[str, t.Callable] = {
    + 71            **parser.Parser.FUNCTION_PARSERS,
    + 72            "XMLTABLE": _parse_xml_table,
    + 73        }
    + 74
    + 75        TYPE_LITERAL_PARSERS = {
    + 76            exp.DataType.Type.DATE: lambda self, this, _: self.expression(
    + 77                exp.DateStrToDate, this=this
    + 78            )
    + 79        }
    + 80
    + 81        def _parse_column(self) -> t.Optional[exp.Expression]:
    + 82            column = super()._parse_column()
    + 83            if column:
    + 84                column.set("join_mark", self._match(TokenType.JOIN_MARKER))
    + 85            return column
    + 86
    + 87        def _parse_hint(self) -> t.Optional[exp.Expression]:
    + 88            if self._match(TokenType.HINT):
    + 89                start = self._curr
    + 90                while self._curr and not self._match_pair(TokenType.STAR, TokenType.SLASH):
    + 91                    self._advance()
    + 92
    + 93                if not self._curr:
    + 94                    self.raise_error("Expected */ after HINT")
    + 95
    + 96                end = self._tokens[self._index - 3]
    + 97                return exp.Hint(expressions=[self._find_sql(start, end)])
    + 98
    + 99            return None
    +100
    +101    class Generator(generator.Generator):
    +102        LOCKING_READS_SUPPORTED = True
    +103        JOIN_HINTS = False
    +104        TABLE_HINTS = False
    +105
    +106        TYPE_MAPPING = {
    +107            **generator.Generator.TYPE_MAPPING,  # type: ignore
    +108            exp.DataType.Type.TINYINT: "NUMBER",
    +109            exp.DataType.Type.SMALLINT: "NUMBER",
    +110            exp.DataType.Type.INT: "NUMBER",
    +111            exp.DataType.Type.BIGINT: "NUMBER",
    +112            exp.DataType.Type.DECIMAL: "NUMBER",
    +113            exp.DataType.Type.DOUBLE: "DOUBLE PRECISION",
    +114            exp.DataType.Type.VARCHAR: "VARCHAR2",
    +115            exp.DataType.Type.NVARCHAR: "NVARCHAR2",
    +116            exp.DataType.Type.TEXT: "CLOB",
    +117            exp.DataType.Type.BINARY: "BLOB",
    +118            exp.DataType.Type.VARBINARY: "BLOB",
    +119        }
    +120
    +121        TRANSFORMS = {
    +122            **generator.Generator.TRANSFORMS,  # type: ignore
    +123            **transforms.UNALIAS_GROUP,  # type: ignore
    +124            exp.DateStrToDate: lambda self, e: self.func(
    +125                "TO_DATE", e.this, exp.Literal.string("YYYY-MM-DD")
    +126            ),
    +127            exp.Hint: lambda self, e: f" /*+ {self.expressions(e).strip()} */",
    +128            exp.ILike: no_ilike_sql,
    +129            exp.StrToTime: lambda self, e: f"TO_TIMESTAMP({self.sql(e, 'this')}, {self.format_time(e)})",
    +130            exp.Subquery: lambda self, e: self.subquery_sql(e, sep=" "),
    +131            exp.Substring: rename_func("SUBSTR"),
    +132            exp.Table: lambda self, e: self.table_sql(e, sep=" "),
    +133            exp.TimeToStr: lambda self, e: f"TO_CHAR({self.sql(e, 'this')}, {self.format_time(e)})",
    +134            exp.ToChar: lambda self, e: self.function_fallback_sql(e),
    +135            exp.Trim: trim_sql,
    +136            exp.UnixToTime: lambda self, e: f"TO_DATE('1970-01-01','YYYY-MM-DD') + ({self.sql(e, 'this')} / 86400)",
    +137            exp.IfNull: rename_func("NVL"),
    +138        }
     139
    -140        def column_sql(self, expression: exp.Column) -> str:
    -141            column = super().column_sql(expression)
    -142            return f"{column} (+)" if expression.args.get("join_mark") else column
    -143
    -144        def xmltable_sql(self, expression: exp.XMLTable) -> str:
    -145            this = self.sql(expression, "this")
    -146            passing = self.expressions(expression, "passing")
    -147            passing = f"{self.sep()}PASSING{self.seg(passing)}" if passing else ""
    -148            columns = self.expressions(expression, "columns")
    -149            columns = f"{self.sep()}COLUMNS{self.seg(columns)}" if columns else ""
    -150            by_ref = (
    -151                f"{self.sep()}RETURNING SEQUENCE BY REF" if expression.args.get("by_ref") else ""
    -152            )
    -153            return f"XMLTABLE({self.sep('')}{self.indent(this + passing + by_ref + columns)}{self.seg(')', sep='')}"
    -154
    -155    class Tokenizer(tokens.Tokenizer):
    -156        KEYWORDS = {
    -157            **tokens.Tokenizer.KEYWORDS,
    -158            "(+)": TokenType.JOIN_MARKER,
    -159            "COLUMNS": TokenType.COLUMN,
    -160            "MATCH_RECOGNIZE": TokenType.MATCH_RECOGNIZE,
    -161            "MINUS": TokenType.EXCEPT,
    -162            "NVARCHAR2": TokenType.NVARCHAR,
    -163            "RETURNING": TokenType.RETURNING,
    -164            "START": TokenType.BEGIN,
    -165            "TOP": TokenType.TOP,
    -166            "VARCHAR2": TokenType.VARCHAR,
    -167        }
    +140        PROPERTIES_LOCATION = {
    +141            **generator.Generator.PROPERTIES_LOCATION,  # type: ignore
    +142            exp.VolatileProperty: exp.Properties.Location.UNSUPPORTED,
    +143        }
    +144
    +145        LIMIT_FETCH = "FETCH"
    +146
    +147        def offset_sql(self, expression: exp.Offset) -> str:
    +148            return f"{super().offset_sql(expression)} ROWS"
    +149
    +150        def column_sql(self, expression: exp.Column) -> str:
    +151            column = super().column_sql(expression)
    +152            return f"{column} (+)" if expression.args.get("join_mark") else column
    +153
    +154        def xmltable_sql(self, expression: exp.XMLTable) -> str:
    +155            this = self.sql(expression, "this")
    +156            passing = self.expressions(expression, key="passing")
    +157            passing = f"{self.sep()}PASSING{self.seg(passing)}" if passing else ""
    +158            columns = self.expressions(expression, key="columns")
    +159            columns = f"{self.sep()}COLUMNS{self.seg(columns)}" if columns else ""
    +160            by_ref = (
    +161                f"{self.sep()}RETURNING SEQUENCE BY REF" if expression.args.get("by_ref") else ""
    +162            )
    +163            return f"XMLTABLE({self.sep('')}{self.indent(this + passing + by_ref + columns)}{self.seg(')', sep='')}"
    +164
    +165    class Tokenizer(tokens.Tokenizer):
    +166        KEYWORDS = {
    +167            **tokens.Tokenizer.KEYWORDS,
    +168            "(+)": TokenType.JOIN_MARKER,
    +169            "COLUMNS": TokenType.COLUMN,
    +170            "MATCH_RECOGNIZE": TokenType.MATCH_RECOGNIZE,
    +171            "MINUS": TokenType.EXCEPT,
    +172            "NVARCHAR2": TokenType.NVARCHAR,
    +173            "RETURNING": TokenType.RETURNING,
    +174            "START": TokenType.BEGIN,
    +175            "TOP": TokenType.TOP,
    +176            "VARCHAR2": TokenType.VARCHAR,
    +177        }
     
    @@ -425,36 +452,42 @@
    -
     71    class Parser(parser.Parser):
    - 72        FUNCTIONS = {
    - 73            **parser.Parser.FUNCTIONS,  # type: ignore
    - 74            "SQUARE": lambda args: exp.Pow(this=seq_get(args, 0), expression=exp.Literal.number(2)),
    - 75        }
    - 76
    - 77        FUNCTION_PARSERS: t.Dict[str, t.Callable] = {
    - 78            **parser.Parser.FUNCTION_PARSERS,
    - 79            "XMLTABLE": _parse_xml_table,
    - 80        }
    - 81
    - 82        def _parse_column(self) -> t.Optional[exp.Expression]:
    - 83            column = super()._parse_column()
    - 84            if column:
    - 85                column.set("join_mark", self._match(TokenType.JOIN_MARKER))
    - 86            return column
    - 87
    - 88        def _parse_hint(self) -> t.Optional[exp.Expression]:
    - 89            if self._match(TokenType.HINT):
    - 90                start = self._curr
    - 91                while self._curr and not self._match_pair(TokenType.STAR, TokenType.SLASH):
    - 92                    self._advance()
    - 93
    - 94                if not self._curr:
    - 95                    self.raise_error("Expected */ after HINT")
    - 96
    - 97                end = self._tokens[self._index - 3]
    - 98                return exp.Hint(expressions=[self._find_sql(start, end)])
    - 99
    -100            return None
    +            
    64    class Parser(parser.Parser):
    +65        FUNCTIONS = {
    +66            **parser.Parser.FUNCTIONS,  # type: ignore
    +67            "SQUARE": lambda args: exp.Pow(this=seq_get(args, 0), expression=exp.Literal.number(2)),
    +68        }
    +69
    +70        FUNCTION_PARSERS: t.Dict[str, t.Callable] = {
    +71            **parser.Parser.FUNCTION_PARSERS,
    +72            "XMLTABLE": _parse_xml_table,
    +73        }
    +74
    +75        TYPE_LITERAL_PARSERS = {
    +76            exp.DataType.Type.DATE: lambda self, this, _: self.expression(
    +77                exp.DateStrToDate, this=this
    +78            )
    +79        }
    +80
    +81        def _parse_column(self) -> t.Optional[exp.Expression]:
    +82            column = super()._parse_column()
    +83            if column:
    +84                column.set("join_mark", self._match(TokenType.JOIN_MARKER))
    +85            return column
    +86
    +87        def _parse_hint(self) -> t.Optional[exp.Expression]:
    +88            if self._match(TokenType.HINT):
    +89                start = self._curr
    +90                while self._curr and not self._match_pair(TokenType.STAR, TokenType.SLASH):
    +91                    self._advance()
    +92
    +93                if not self._curr:
    +94                    self.raise_error("Expected */ after HINT")
    +95
    +96                end = self._tokens[self._index - 3]
    +97                return exp.Hint(expressions=[self._find_sql(start, end)])
    +98
    +99            return None
     
    @@ -511,58 +544,69 @@ Default: "nulls_are_small"
    -
    102    class Generator(generator.Generator):
    -103        LOCKING_READS_SUPPORTED = True
    -104
    -105        TYPE_MAPPING = {
    -106            **generator.Generator.TYPE_MAPPING,  # type: ignore
    -107            exp.DataType.Type.TINYINT: "NUMBER",
    -108            exp.DataType.Type.SMALLINT: "NUMBER",
    -109            exp.DataType.Type.INT: "NUMBER",
    -110            exp.DataType.Type.BIGINT: "NUMBER",
    -111            exp.DataType.Type.DECIMAL: "NUMBER",
    -112            exp.DataType.Type.DOUBLE: "DOUBLE PRECISION",
    -113            exp.DataType.Type.VARCHAR: "VARCHAR2",
    -114            exp.DataType.Type.NVARCHAR: "NVARCHAR2",
    -115            exp.DataType.Type.TEXT: "CLOB",
    -116            exp.DataType.Type.BINARY: "BLOB",
    -117            exp.DataType.Type.VARBINARY: "BLOB",
    -118        }
    -119
    -120        TRANSFORMS = {
    -121            **generator.Generator.TRANSFORMS,  # type: ignore
    -122            **transforms.UNALIAS_GROUP,  # type: ignore
    -123            exp.Hint: lambda self, e: f" /*+ {self.expressions(e).strip()} */",
    -124            exp.ILike: no_ilike_sql,
    -125            exp.StrToTime: lambda self, e: f"TO_TIMESTAMP({self.sql(e, 'this')}, {self.format_time(e)})",
    -126            exp.Subquery: lambda self, e: self.subquery_sql(e, sep=" "),
    -127            exp.Substring: rename_func("SUBSTR"),
    -128            exp.Table: lambda self, e: self.table_sql(e, sep=" "),
    -129            exp.TimeToStr: lambda self, e: f"TO_CHAR({self.sql(e, 'this')}, {self.format_time(e)})",
    -130            exp.ToChar: lambda self, e: self.function_fallback_sql(e),
    -131            exp.Trim: trim_sql,
    -132            exp.UnixToTime: lambda self, e: f"TO_DATE('1970-01-01','YYYY-MM-DD') + ({self.sql(e, 'this')} / 86400)",
    -133        }
    -134
    -135        LIMIT_FETCH = "FETCH"
    -136
    -137        def offset_sql(self, expression: exp.Offset) -> str:
    -138            return f"{super().offset_sql(expression)} ROWS"
    +            
    101    class Generator(generator.Generator):
    +102        LOCKING_READS_SUPPORTED = True
    +103        JOIN_HINTS = False
    +104        TABLE_HINTS = False
    +105
    +106        TYPE_MAPPING = {
    +107            **generator.Generator.TYPE_MAPPING,  # type: ignore
    +108            exp.DataType.Type.TINYINT: "NUMBER",
    +109            exp.DataType.Type.SMALLINT: "NUMBER",
    +110            exp.DataType.Type.INT: "NUMBER",
    +111            exp.DataType.Type.BIGINT: "NUMBER",
    +112            exp.DataType.Type.DECIMAL: "NUMBER",
    +113            exp.DataType.Type.DOUBLE: "DOUBLE PRECISION",
    +114            exp.DataType.Type.VARCHAR: "VARCHAR2",
    +115            exp.DataType.Type.NVARCHAR: "NVARCHAR2",
    +116            exp.DataType.Type.TEXT: "CLOB",
    +117            exp.DataType.Type.BINARY: "BLOB",
    +118            exp.DataType.Type.VARBINARY: "BLOB",
    +119        }
    +120
    +121        TRANSFORMS = {
    +122            **generator.Generator.TRANSFORMS,  # type: ignore
    +123            **transforms.UNALIAS_GROUP,  # type: ignore
    +124            exp.DateStrToDate: lambda self, e: self.func(
    +125                "TO_DATE", e.this, exp.Literal.string("YYYY-MM-DD")
    +126            ),
    +127            exp.Hint: lambda self, e: f" /*+ {self.expressions(e).strip()} */",
    +128            exp.ILike: no_ilike_sql,
    +129            exp.StrToTime: lambda self, e: f"TO_TIMESTAMP({self.sql(e, 'this')}, {self.format_time(e)})",
    +130            exp.Subquery: lambda self, e: self.subquery_sql(e, sep=" "),
    +131            exp.Substring: rename_func("SUBSTR"),
    +132            exp.Table: lambda self, e: self.table_sql(e, sep=" "),
    +133            exp.TimeToStr: lambda self, e: f"TO_CHAR({self.sql(e, 'this')}, {self.format_time(e)})",
    +134            exp.ToChar: lambda self, e: self.function_fallback_sql(e),
    +135            exp.Trim: trim_sql,
    +136            exp.UnixToTime: lambda self, e: f"TO_DATE('1970-01-01','YYYY-MM-DD') + ({self.sql(e, 'this')} / 86400)",
    +137            exp.IfNull: rename_func("NVL"),
    +138        }
     139
    -140        def column_sql(self, expression: exp.Column) -> str:
    -141            column = super().column_sql(expression)
    -142            return f"{column} (+)" if expression.args.get("join_mark") else column
    -143
    -144        def xmltable_sql(self, expression: exp.XMLTable) -> str:
    -145            this = self.sql(expression, "this")
    -146            passing = self.expressions(expression, "passing")
    -147            passing = f"{self.sep()}PASSING{self.seg(passing)}" if passing else ""
    -148            columns = self.expressions(expression, "columns")
    -149            columns = f"{self.sep()}COLUMNS{self.seg(columns)}" if columns else ""
    -150            by_ref = (
    -151                f"{self.sep()}RETURNING SEQUENCE BY REF" if expression.args.get("by_ref") else ""
    -152            )
    -153            return f"XMLTABLE({self.sep('')}{self.indent(this + passing + by_ref + columns)}{self.seg(')', sep='')}"
    +140        PROPERTIES_LOCATION = {
    +141            **generator.Generator.PROPERTIES_LOCATION,  # type: ignore
    +142            exp.VolatileProperty: exp.Properties.Location.UNSUPPORTED,
    +143        }
    +144
    +145        LIMIT_FETCH = "FETCH"
    +146
    +147        def offset_sql(self, expression: exp.Offset) -> str:
    +148            return f"{super().offset_sql(expression)} ROWS"
    +149
    +150        def column_sql(self, expression: exp.Column) -> str:
    +151            column = super().column_sql(expression)
    +152            return f"{column} (+)" if expression.args.get("join_mark") else column
    +153
    +154        def xmltable_sql(self, expression: exp.XMLTable) -> str:
    +155            this = self.sql(expression, "this")
    +156            passing = self.expressions(expression, key="passing")
    +157            passing = f"{self.sep()}PASSING{self.seg(passing)}" if passing else ""
    +158            columns = self.expressions(expression, key="columns")
    +159            columns = f"{self.sep()}COLUMNS{self.seg(columns)}" if columns else ""
    +160            by_ref = (
    +161                f"{self.sep()}RETURNING SEQUENCE BY REF" if expression.args.get("by_ref") else ""
    +162            )
    +163            return f"XMLTABLE({self.sep('')}{self.indent(this + passing + by_ref + columns)}{self.seg(')', sep='')}"
     
    @@ -621,8 +665,8 @@ Default: True
    -
    137        def offset_sql(self, expression: exp.Offset) -> str:
    -138            return f"{super().offset_sql(expression)} ROWS"
    +            
    147        def offset_sql(self, expression: exp.Offset) -> str:
    +148            return f"{super().offset_sql(expression)} ROWS"
     
    @@ -640,9 +684,9 @@ Default: True
    -
    140        def column_sql(self, expression: exp.Column) -> str:
    -141            column = super().column_sql(expression)
    -142            return f"{column} (+)" if expression.args.get("join_mark") else column
    +            
    150        def column_sql(self, expression: exp.Column) -> str:
    +151            column = super().column_sql(expression)
    +152            return f"{column} (+)" if expression.args.get("join_mark") else column
     
    @@ -660,16 +704,16 @@ Default: True
    -
    144        def xmltable_sql(self, expression: exp.XMLTable) -> str:
    -145            this = self.sql(expression, "this")
    -146            passing = self.expressions(expression, "passing")
    -147            passing = f"{self.sep()}PASSING{self.seg(passing)}" if passing else ""
    -148            columns = self.expressions(expression, "columns")
    -149            columns = f"{self.sep()}COLUMNS{self.seg(columns)}" if columns else ""
    -150            by_ref = (
    -151                f"{self.sep()}RETURNING SEQUENCE BY REF" if expression.args.get("by_ref") else ""
    -152            )
    -153            return f"XMLTABLE({self.sep('')}{self.indent(this + passing + by_ref + columns)}{self.seg(')', sep='')}"
    +            
    154        def xmltable_sql(self, expression: exp.XMLTable) -> str:
    +155            this = self.sql(expression, "this")
    +156            passing = self.expressions(expression, key="passing")
    +157            passing = f"{self.sep()}PASSING{self.seg(passing)}" if passing else ""
    +158            columns = self.expressions(expression, key="columns")
    +159            columns = f"{self.sep()}COLUMNS{self.seg(columns)}" if columns else ""
    +160            by_ref = (
    +161                f"{self.sep()}RETURNING SEQUENCE BY REF" if expression.args.get("by_ref") else ""
    +162            )
    +163            return f"XMLTABLE({self.sep('')}{self.indent(this + passing + by_ref + columns)}{self.seg(')', sep='')}"
     
    @@ -712,6 +756,7 @@ Default: True
    tablealias_sql
    bitstring_sql
    hexstring_sql
    +
    bytestring_sql
    datatype_sql
    directory_sql
    delete_sql
    @@ -723,6 +768,7 @@ Default: True
    hint_sql
    index_sql
    identifier_sql
    +
    inputoutputformat_sql
    national_sql
    partition_sql
    properties_sql
    @@ -748,6 +794,7 @@ Default: True
    intersect_op
    introducer_sql
    pseudotype_sql
    +
    onconflict_sql
    returning_sql
    rowformatdelimitedproperty_sql
    table_sql
    @@ -915,19 +962,19 @@ Default: True
    -
    155    class Tokenizer(tokens.Tokenizer):
    -156        KEYWORDS = {
    -157            **tokens.Tokenizer.KEYWORDS,
    -158            "(+)": TokenType.JOIN_MARKER,
    -159            "COLUMNS": TokenType.COLUMN,
    -160            "MATCH_RECOGNIZE": TokenType.MATCH_RECOGNIZE,
    -161            "MINUS": TokenType.EXCEPT,
    -162            "NVARCHAR2": TokenType.NVARCHAR,
    -163            "RETURNING": TokenType.RETURNING,
    -164            "START": TokenType.BEGIN,
    -165            "TOP": TokenType.TOP,
    -166            "VARCHAR2": TokenType.VARCHAR,
    -167        }
    +            
    165    class Tokenizer(tokens.Tokenizer):
    +166        KEYWORDS = {
    +167            **tokens.Tokenizer.KEYWORDS,
    +168            "(+)": TokenType.JOIN_MARKER,
    +169            "COLUMNS": TokenType.COLUMN,
    +170            "MATCH_RECOGNIZE": TokenType.MATCH_RECOGNIZE,
    +171            "MINUS": TokenType.EXCEPT,
    +172            "NVARCHAR2": TokenType.NVARCHAR,
    +173            "RETURNING": TokenType.RETURNING,
    +174            "START": TokenType.BEGIN,
    +175            "TOP": TokenType.TOP,
    +176            "VARCHAR2": TokenType.VARCHAR,
    +177        }
     
    diff --git a/docs/sqlglot/dialects/postgres.html b/docs/sqlglot/dialects/postgres.html index 6a3d84e..9eb542b 100644 --- a/docs/sqlglot/dialects/postgres.html +++ b/docs/sqlglot/dialects/postgres.html @@ -3,7 +3,7 @@ - + sqlglot.dialects.postgres API documentation @@ -84,241 +84,241 @@
    5 Dialect, 6 arrow_json_extract_scalar_sql, 7 arrow_json_extract_sql, - 8 format_time_lambda, - 9 max_or_greatest, - 10 min_or_least, - 11 no_paren_current_date_sql, - 12 no_tablesample_sql, - 13 no_trycast_sql, - 14 rename_func, - 15 str_position_sql, - 16 timestamptrunc_sql, - 17 trim_sql, - 18) - 19from sqlglot.helper import seq_get - 20from sqlglot.parser import binary_range_parser - 21from sqlglot.tokens import TokenType - 22from sqlglot.transforms import delegate, preprocess - 23 - 24DATE_DIFF_FACTOR = { - 25 "MICROSECOND": " * 1000000", - 26 "MILLISECOND": " * 1000", - 27 "SECOND": "", - 28 "MINUTE": " / 60", - 29 "HOUR": " / 3600", - 30 "DAY": " / 86400", - 31} - 32 + 8 datestrtodate_sql, + 9 format_time_lambda, + 10 max_or_greatest, + 11 min_or_least, + 12 no_paren_current_date_sql, + 13 no_tablesample_sql, + 14 no_trycast_sql, + 15 rename_func, + 16 str_position_sql, + 17 timestamptrunc_sql, + 18 trim_sql, + 19) + 20from sqlglot.helper import seq_get + 21from sqlglot.parser import binary_range_parser + 22from sqlglot.tokens import TokenType + 23from sqlglot.transforms import preprocess, remove_target_from_merge + 24 + 25DATE_DIFF_FACTOR = { + 26 "MICROSECOND": " * 1000000", + 27 "MILLISECOND": " * 1000", + 28 "SECOND": "", + 29 "MINUTE": " / 60", + 30 "HOUR": " / 3600", + 31 "DAY": " / 86400", + 32} 33 - 34def _date_add_sql(kind): - 35 def func(self, expression): - 36 from sqlglot.optimizer.simplify import simplify - 37 - 38 this = self.sql(expression, "this") - 39 unit = expression.args.get("unit") - 40 expression = simplify(expression.args["expression"]) - 41 - 42 if not isinstance(expression, exp.Literal): - 43 self.unsupported("Cannot add non literal") - 44 - 45 expression = expression.copy() - 46 expression.args["is_string"] = True - 47 return f"{this} {kind} {self.sql(exp.Interval(this=expression, unit=unit))}" - 48 - 49 return func - 50 + 34 + 35def _date_add_sql(kind): + 36 def func(self, expression): + 37 from sqlglot.optimizer.simplify import simplify + 38 + 39 this = self.sql(expression, "this") + 40 unit = expression.args.get("unit") + 41 expression = simplify(expression.args["expression"]) + 42 + 43 if not isinstance(expression, exp.Literal): + 44 self.unsupported("Cannot add non literal") + 45 + 46 expression = expression.copy() + 47 expression.args["is_string"] = True + 48 return f"{this} {kind} {self.sql(exp.Interval(this=expression, unit=unit))}" + 49 + 50 return func 51 - 52def _date_diff_sql(self, expression): - 53 unit = expression.text("unit").upper() - 54 factor = DATE_DIFF_FACTOR.get(unit) - 55 - 56 end = f"CAST({expression.this} AS TIMESTAMP)" - 57 start = f"CAST({expression.expression} AS TIMESTAMP)" - 58 - 59 if factor is not None: - 60 return f"CAST(EXTRACT(epoch FROM {end} - {start}){factor} AS BIGINT)" - 61 - 62 age = f"AGE({end}, {start})" - 63 - 64 if unit == "WEEK": - 65 unit = f"EXTRACT(year FROM {age}) * 48 + EXTRACT(month FROM {age}) * 4 + EXTRACT(day FROM {age}) / 7" - 66 elif unit == "MONTH": - 67 unit = f"EXTRACT(year FROM {age}) * 12 + EXTRACT(month FROM {age})" - 68 elif unit == "QUARTER": - 69 unit = f"EXTRACT(year FROM {age}) * 4 + EXTRACT(month FROM {age}) / 3" - 70 elif unit == "YEAR": - 71 unit = f"EXTRACT(year FROM {age})" - 72 else: - 73 unit = age - 74 - 75 return f"CAST({unit} AS BIGINT)" - 76 + 52 + 53def _date_diff_sql(self, expression): + 54 unit = expression.text("unit").upper() + 55 factor = DATE_DIFF_FACTOR.get(unit) + 56 + 57 end = f"CAST({expression.this} AS TIMESTAMP)" + 58 start = f"CAST({expression.expression} AS TIMESTAMP)" + 59 + 60 if factor is not None: + 61 return f"CAST(EXTRACT(epoch FROM {end} - {start}){factor} AS BIGINT)" + 62 + 63 age = f"AGE({end}, {start})" + 64 + 65 if unit == "WEEK": + 66 unit = f"EXTRACT(year FROM {age}) * 48 + EXTRACT(month FROM {age}) * 4 + EXTRACT(day FROM {age}) / 7" + 67 elif unit == "MONTH": + 68 unit = f"EXTRACT(year FROM {age}) * 12 + EXTRACT(month FROM {age})" + 69 elif unit == "QUARTER": + 70 unit = f"EXTRACT(year FROM {age}) * 4 + EXTRACT(month FROM {age}) / 3" + 71 elif unit == "YEAR": + 72 unit = f"EXTRACT(year FROM {age})" + 73 else: + 74 unit = age + 75 + 76 return f"CAST({unit} AS BIGINT)" 77 - 78def _substring_sql(self, expression): - 79 this = self.sql(expression, "this") - 80 start = self.sql(expression, "start") - 81 length = self.sql(expression, "length") - 82 - 83 from_part = f" FROM {start}" if start else "" - 84 for_part = f" FOR {length}" if length else "" - 85 - 86 return f"SUBSTRING({this}{from_part}{for_part})" - 87 + 78 + 79def _substring_sql(self, expression): + 80 this = self.sql(expression, "this") + 81 start = self.sql(expression, "start") + 82 length = self.sql(expression, "length") + 83 + 84 from_part = f" FROM {start}" if start else "" + 85 for_part = f" FOR {length}" if length else "" + 86 + 87 return f"SUBSTRING({this}{from_part}{for_part})" 88 - 89def _string_agg_sql(self, expression): - 90 expression = expression.copy() - 91 separator = expression.args.get("separator") or exp.Literal.string(",") - 92 - 93 order = "" - 94 this = expression.this - 95 if isinstance(this, exp.Order): - 96 if this.this: - 97 this = this.this.pop() - 98 order = self.sql(expression.this) # Order has a leading space - 99 -100 return f"STRING_AGG({self.format_args(this, separator)}{order})" -101 + 89 + 90def _string_agg_sql(self, expression): + 91 expression = expression.copy() + 92 separator = expression.args.get("separator") or exp.Literal.string(",") + 93 + 94 order = "" + 95 this = expression.this + 96 if isinstance(this, exp.Order): + 97 if this.this: + 98 this = this.this.pop() + 99 order = self.sql(expression.this) # Order has a leading space +100 +101 return f"STRING_AGG({self.format_args(this, separator)}{order})" 102 -103def _datatype_sql(self, expression): -104 if expression.this == exp.DataType.Type.ARRAY: -105 return f"{self.expressions(expression, flat=True)}[]" -106 return self.datatype_sql(expression) -107 +103 +104def _datatype_sql(self, expression): +105 if expression.this == exp.DataType.Type.ARRAY: +106 return f"{self.expressions(expression, flat=True)}[]" +107 return self.datatype_sql(expression) 108 -109def _auto_increment_to_serial(expression): -110 auto = expression.find(exp.AutoIncrementColumnConstraint) -111 -112 if auto: -113 expression = expression.copy() -114 expression.args["constraints"].remove(auto.parent) -115 kind = expression.args["kind"] -116 -117 if kind.this == exp.DataType.Type.INT: -118 kind.replace(exp.DataType(this=exp.DataType.Type.SERIAL)) -119 elif kind.this == exp.DataType.Type.SMALLINT: -120 kind.replace(exp.DataType(this=exp.DataType.Type.SMALLSERIAL)) -121 elif kind.this == exp.DataType.Type.BIGINT: -122 kind.replace(exp.DataType(this=exp.DataType.Type.BIGSERIAL)) -123 -124 return expression -125 +109 +110def _auto_increment_to_serial(expression): +111 auto = expression.find(exp.AutoIncrementColumnConstraint) +112 +113 if auto: +114 expression = expression.copy() +115 expression.args["constraints"].remove(auto.parent) +116 kind = expression.args["kind"] +117 +118 if kind.this == exp.DataType.Type.INT: +119 kind.replace(exp.DataType(this=exp.DataType.Type.SERIAL)) +120 elif kind.this == exp.DataType.Type.SMALLINT: +121 kind.replace(exp.DataType(this=exp.DataType.Type.SMALLSERIAL)) +122 elif kind.this == exp.DataType.Type.BIGINT: +123 kind.replace(exp.DataType(this=exp.DataType.Type.BIGSERIAL)) +124 +125 return expression 126 -127def _serial_to_generated(expression): -128 kind = expression.args["kind"] -129 -130 if kind.this == exp.DataType.Type.SERIAL: -131 data_type = exp.DataType(this=exp.DataType.Type.INT) -132 elif kind.this == exp.DataType.Type.SMALLSERIAL: -133 data_type = exp.DataType(this=exp.DataType.Type.SMALLINT) -134 elif kind.this == exp.DataType.Type.BIGSERIAL: -135 data_type = exp.DataType(this=exp.DataType.Type.BIGINT) -136 else: -137 data_type = None -138 -139 if data_type: -140 expression = expression.copy() -141 expression.args["kind"].replace(data_type) -142 constraints = expression.args["constraints"] -143 generated = exp.ColumnConstraint(kind=exp.GeneratedAsIdentityColumnConstraint(this=False)) -144 notnull = exp.ColumnConstraint(kind=exp.NotNullColumnConstraint()) -145 if notnull not in constraints: -146 constraints.insert(0, notnull) -147 if generated not in constraints: -148 constraints.insert(0, generated) -149 -150 return expression -151 +127 +128def _serial_to_generated(expression): +129 kind = expression.args["kind"] +130 +131 if kind.this == exp.DataType.Type.SERIAL: +132 data_type = exp.DataType(this=exp.DataType.Type.INT) +133 elif kind.this == exp.DataType.Type.SMALLSERIAL: +134 data_type = exp.DataType(this=exp.DataType.Type.SMALLINT) +135 elif kind.this == exp.DataType.Type.BIGSERIAL: +136 data_type = exp.DataType(this=exp.DataType.Type.BIGINT) +137 else: +138 data_type = None +139 +140 if data_type: +141 expression = expression.copy() +142 expression.args["kind"].replace(data_type) +143 constraints = expression.args["constraints"] +144 generated = exp.ColumnConstraint(kind=exp.GeneratedAsIdentityColumnConstraint(this=False)) +145 notnull = exp.ColumnConstraint(kind=exp.NotNullColumnConstraint()) +146 if notnull not in constraints: +147 constraints.insert(0, notnull) +148 if generated not in constraints: +149 constraints.insert(0, generated) +150 +151 return expression 152 -153def _generate_series(args): -154 # The goal is to convert step values like '1 day' or INTERVAL '1 day' into INTERVAL '1' day -155 step = seq_get(args, 2) -156 -157 if step is None: -158 # Postgres allows calls with just two arguments -- the "step" argument defaults to 1 -159 return exp.GenerateSeries.from_arg_list(args) -160 -161 if step.is_string: -162 args[2] = exp.to_interval(step.this) -163 elif isinstance(step, exp.Interval) and not step.args.get("unit"): -164 args[2] = exp.to_interval(step.this.this) -165 -166 return exp.GenerateSeries.from_arg_list(args) -167 +153 +154def _generate_series(args): +155 # The goal is to convert step values like '1 day' or INTERVAL '1 day' into INTERVAL '1' day +156 step = seq_get(args, 2) +157 +158 if step is None: +159 # Postgres allows calls with just two arguments -- the "step" argument defaults to 1 +160 return exp.GenerateSeries.from_arg_list(args) +161 +162 if step.is_string: +163 args[2] = exp.to_interval(step.this) +164 elif isinstance(step, exp.Interval) and not step.args.get("unit"): +165 args[2] = exp.to_interval(step.this.this) +166 +167 return exp.GenerateSeries.from_arg_list(args) 168 -169def _to_timestamp(args): -170 # TO_TIMESTAMP accepts either a single double argument or (text, text) -171 if len(args) == 1: -172 # https://www.postgresql.org/docs/current/functions-datetime.html#FUNCTIONS-DATETIME-TABLE -173 return exp.UnixToTime.from_arg_list(args) -174 # https://www.postgresql.org/docs/current/functions-formatting.html -175 return format_time_lambda(exp.StrToTime, "postgres")(args) -176 +169 +170def _to_timestamp(args): +171 # TO_TIMESTAMP accepts either a single double argument or (text, text) +172 if len(args) == 1: +173 # https://www.postgresql.org/docs/current/functions-datetime.html#FUNCTIONS-DATETIME-TABLE +174 return exp.UnixToTime.from_arg_list(args) +175 # https://www.postgresql.org/docs/current/functions-formatting.html +176 return format_time_lambda(exp.StrToTime, "postgres")(args) 177 -178class Postgres(Dialect): -179 null_ordering = "nulls_are_large" -180 time_format = "'YYYY-MM-DD HH24:MI:SS'" -181 time_mapping = { -182 "AM": "%p", -183 "PM": "%p", -184 "D": "%u", # 1-based day of week -185 "DD": "%d", # day of month -186 "DDD": "%j", # zero padded day of year -187 "FMDD": "%-d", # - is no leading zero for Python; same for FM in postgres -188 "FMDDD": "%-j", # day of year -189 "FMHH12": "%-I", # 9 -190 "FMHH24": "%-H", # 9 -191 "FMMI": "%-M", # Minute -192 "FMMM": "%-m", # 1 -193 "FMSS": "%-S", # Second -194 "HH12": "%I", # 09 -195 "HH24": "%H", # 09 -196 "MI": "%M", # zero padded minute -197 "MM": "%m", # 01 -198 "OF": "%z", # utc offset -199 "SS": "%S", # zero padded second -200 "TMDay": "%A", # TM is locale dependent -201 "TMDy": "%a", -202 "TMMon": "%b", # Sep -203 "TMMonth": "%B", # September -204 "TZ": "%Z", # uppercase timezone name -205 "US": "%f", # zero padded microsecond -206 "WW": "%U", # 1-based week of year -207 "YY": "%y", # 15 -208 "YYYY": "%Y", # 2015 -209 } -210 -211 class Tokenizer(tokens.Tokenizer): -212 QUOTES = ["'", "$$"] -213 -214 BIT_STRINGS = [("b'", "'"), ("B'", "'")] -215 HEX_STRINGS = [("x'", "'"), ("X'", "'")] -216 BYTE_STRINGS = [("e'", "'"), ("E'", "'")] -217 -218 KEYWORDS = { -219 **tokens.Tokenizer.KEYWORDS, -220 "~~": TokenType.LIKE, -221 "~~*": TokenType.ILIKE, -222 "~*": TokenType.IRLIKE, -223 "~": TokenType.RLIKE, -224 "@>": TokenType.AT_GT, -225 "<@": TokenType.LT_AT, -226 "BEGIN": TokenType.COMMAND, -227 "BEGIN TRANSACTION": TokenType.BEGIN, -228 "BIGSERIAL": TokenType.BIGSERIAL, -229 "CHARACTER VARYING": TokenType.VARCHAR, -230 "DECLARE": TokenType.COMMAND, -231 "DO": TokenType.COMMAND, -232 "HSTORE": TokenType.HSTORE, -233 "JSONB": TokenType.JSONB, -234 "REFRESH": TokenType.COMMAND, -235 "REINDEX": TokenType.COMMAND, -236 "RESET": TokenType.COMMAND, -237 "RETURNING": TokenType.RETURNING, -238 "REVOKE": TokenType.COMMAND, -239 "SERIAL": TokenType.SERIAL, -240 "SMALLSERIAL": TokenType.SMALLSERIAL, -241 "TEMP": TokenType.TEMPORARY, -242 "UUID": TokenType.UUID, +178 +179class Postgres(Dialect): +180 null_ordering = "nulls_are_large" +181 time_format = "'YYYY-MM-DD HH24:MI:SS'" +182 time_mapping = { +183 "AM": "%p", +184 "PM": "%p", +185 "D": "%u", # 1-based day of week +186 "DD": "%d", # day of month +187 "DDD": "%j", # zero padded day of year +188 "FMDD": "%-d", # - is no leading zero for Python; same for FM in postgres +189 "FMDDD": "%-j", # day of year +190 "FMHH12": "%-I", # 9 +191 "FMHH24": "%-H", # 9 +192 "FMMI": "%-M", # Minute +193 "FMMM": "%-m", # 1 +194 "FMSS": "%-S", # Second +195 "HH12": "%I", # 09 +196 "HH24": "%H", # 09 +197 "MI": "%M", # zero padded minute +198 "MM": "%m", # 01 +199 "OF": "%z", # utc offset +200 "SS": "%S", # zero padded second +201 "TMDay": "%A", # TM is locale dependent +202 "TMDy": "%a", +203 "TMMon": "%b", # Sep +204 "TMMonth": "%B", # September +205 "TZ": "%Z", # uppercase timezone name +206 "US": "%f", # zero padded microsecond +207 "WW": "%U", # 1-based week of year +208 "YY": "%y", # 15 +209 "YYYY": "%Y", # 2015 +210 } +211 +212 class Tokenizer(tokens.Tokenizer): +213 QUOTES = ["'", "$$"] +214 +215 BIT_STRINGS = [("b'", "'"), ("B'", "'")] +216 HEX_STRINGS = [("x'", "'"), ("X'", "'")] +217 BYTE_STRINGS = [("e'", "'"), ("E'", "'")] +218 +219 KEYWORDS = { +220 **tokens.Tokenizer.KEYWORDS, +221 "~~": TokenType.LIKE, +222 "~~*": TokenType.ILIKE, +223 "~*": TokenType.IRLIKE, +224 "~": TokenType.RLIKE, +225 "@>": TokenType.AT_GT, +226 "<@": TokenType.LT_AT, +227 "BEGIN": TokenType.COMMAND, +228 "BEGIN TRANSACTION": TokenType.BEGIN, +229 "BIGSERIAL": TokenType.BIGSERIAL, +230 "CHARACTER VARYING": TokenType.VARCHAR, +231 "DECLARE": TokenType.COMMAND, +232 "DO": TokenType.COMMAND, +233 "HSTORE": TokenType.HSTORE, +234 "JSONB": TokenType.JSONB, +235 "REFRESH": TokenType.COMMAND, +236 "REINDEX": TokenType.COMMAND, +237 "RESET": TokenType.COMMAND, +238 "RETURNING": TokenType.RETURNING, +239 "REVOKE": TokenType.COMMAND, +240 "SERIAL": TokenType.SERIAL, +241 "SMALLSERIAL": TokenType.SMALLSERIAL, +242 "TEMP": TokenType.TEMPORARY, 243 "CSTRING": TokenType.PSEUDO_TYPE, 244 } 245 @@ -327,103 +327,125 @@ 248 "$": TokenType.PARAMETER, 249 } 250 -251 class Parser(parser.Parser): -252 STRICT_CAST = False -253 -254 FUNCTIONS = { -255 **parser.Parser.FUNCTIONS, # type: ignore -256 "NOW": exp.CurrentTimestamp.from_arg_list, -257 "TO_TIMESTAMP": _to_timestamp, -258 "TO_CHAR": format_time_lambda(exp.TimeToStr, "postgres"), -259 "GENERATE_SERIES": _generate_series, -260 "DATE_TRUNC": lambda args: exp.TimestampTrunc( -261 this=seq_get(args, 1), unit=seq_get(args, 0) -262 ), -263 } -264 -265 BITWISE = { -266 **parser.Parser.BITWISE, # type: ignore -267 TokenType.HASH: exp.BitwiseXor, -268 } -269 -270 FACTOR = { -271 **parser.Parser.FACTOR, -272 TokenType.CARET: exp.Pow, -273 } -274 -275 RANGE_PARSERS = { -276 **parser.Parser.RANGE_PARSERS, # type: ignore -277 TokenType.DAMP: binary_range_parser(exp.ArrayOverlaps), -278 TokenType.AT_GT: binary_range_parser(exp.ArrayContains), -279 TokenType.LT_AT: binary_range_parser(exp.ArrayContained), +251 VAR_SINGLE_TOKENS = {"$"} +252 +253 class Parser(parser.Parser): +254 STRICT_CAST = False +255 +256 FUNCTIONS = { +257 **parser.Parser.FUNCTIONS, # type: ignore +258 "DATE_TRUNC": lambda args: exp.TimestampTrunc( +259 this=seq_get(args, 1), unit=seq_get(args, 0) +260 ), +261 "GENERATE_SERIES": _generate_series, +262 "NOW": exp.CurrentTimestamp.from_arg_list, +263 "TO_CHAR": format_time_lambda(exp.TimeToStr, "postgres"), +264 "TO_TIMESTAMP": _to_timestamp, +265 } +266 +267 FUNCTION_PARSERS = { +268 **parser.Parser.FUNCTION_PARSERS, +269 "DATE_PART": lambda self: self._parse_date_part(), +270 } +271 +272 BITWISE = { +273 **parser.Parser.BITWISE, # type: ignore +274 TokenType.HASH: exp.BitwiseXor, +275 } +276 +277 FACTOR = { +278 **parser.Parser.FACTOR, +279 TokenType.CARET: exp.Pow, 280 } 281 -282 class Generator(generator.Generator): -283 LOCKING_READS_SUPPORTED = True -284 PARAMETER_TOKEN = "$" -285 -286 TYPE_MAPPING = { -287 **generator.Generator.TYPE_MAPPING, # type: ignore -288 exp.DataType.Type.TINYINT: "SMALLINT", -289 exp.DataType.Type.FLOAT: "REAL", -290 exp.DataType.Type.DOUBLE: "DOUBLE PRECISION", -291 exp.DataType.Type.BINARY: "BYTEA", -292 exp.DataType.Type.VARBINARY: "BYTEA", -293 exp.DataType.Type.DATETIME: "TIMESTAMP", -294 } -295 -296 TRANSFORMS = { -297 **generator.Generator.TRANSFORMS, # type: ignore -298 exp.BitwiseXor: lambda self, e: self.binary(e, "#"), -299 exp.ColumnDef: preprocess( -300 [ -301 _auto_increment_to_serial, -302 _serial_to_generated, -303 ], -304 delegate("columndef_sql"), -305 ), -306 exp.JSONExtract: arrow_json_extract_sql, -307 exp.JSONExtractScalar: arrow_json_extract_scalar_sql, -308 exp.JSONBExtract: lambda self, e: self.binary(e, "#>"), -309 exp.JSONBExtractScalar: lambda self, e: self.binary(e, "#>>"), -310 exp.JSONBContains: lambda self, e: self.binary(e, "?"), -311 exp.Pow: lambda self, e: self.binary(e, "^"), -312 exp.CurrentDate: no_paren_current_date_sql, -313 exp.CurrentTimestamp: lambda *_: "CURRENT_TIMESTAMP", -314 exp.DateAdd: _date_add_sql("+"), -315 exp.DateSub: _date_add_sql("-"), -316 exp.DateDiff: _date_diff_sql, -317 exp.LogicalOr: rename_func("BOOL_OR"), -318 exp.LogicalAnd: rename_func("BOOL_AND"), -319 exp.Max: max_or_greatest, -320 exp.Min: min_or_least, -321 exp.ArrayOverlaps: lambda self, e: self.binary(e, "&&"), -322 exp.ArrayContains: lambda self, e: self.binary(e, "@>"), -323 exp.ArrayContained: lambda self, e: self.binary(e, "<@"), -324 exp.RegexpLike: lambda self, e: self.binary(e, "~"), -325 exp.RegexpILike: lambda self, e: self.binary(e, "~*"), -326 exp.StrPosition: str_position_sql, -327 exp.StrToTime: lambda self, e: f"TO_TIMESTAMP({self.sql(e, 'this')}, {self.format_time(e)})", -328 exp.Substring: _substring_sql, -329 exp.TimestampTrunc: timestamptrunc_sql, -330 exp.TimeStrToTime: lambda self, e: f"CAST({self.sql(e, 'this')} AS TIMESTAMP)", -331 exp.TimeToStr: lambda self, e: f"TO_CHAR({self.sql(e, 'this')}, {self.format_time(e)})", -332 exp.TableSample: no_tablesample_sql, -333 exp.ToChar: lambda self, e: self.function_fallback_sql(e), -334 exp.Trim: trim_sql, -335 exp.TryCast: no_trycast_sql, -336 exp.UnixToTime: lambda self, e: f"TO_TIMESTAMP({self.sql(e, 'this')})", -337 exp.DataType: _datatype_sql, -338 exp.GroupConcat: _string_agg_sql, -339 exp.Array: lambda self, e: f"{self.normalize_func('ARRAY')}({self.sql(e.expressions[0])})" -340 if isinstance(seq_get(e.expressions, 0), exp.Select) -341 else f"{self.normalize_func('ARRAY')}[{self.expressions(e, flat=True)}]", -342 } -343 -344 PROPERTIES_LOCATION = { -345 **generator.Generator.PROPERTIES_LOCATION, # type: ignore -346 exp.TransientProperty: exp.Properties.Location.UNSUPPORTED, -347 } +282 RANGE_PARSERS = { +283 **parser.Parser.RANGE_PARSERS, # type: ignore +284 TokenType.DAMP: binary_range_parser(exp.ArrayOverlaps), +285 TokenType.AT_GT: binary_range_parser(exp.ArrayContains), +286 TokenType.LT_AT: binary_range_parser(exp.ArrayContained), +287 } +288 +289 def _parse_date_part(self) -> exp.Expression: +290 part = self._parse_type() +291 self._match(TokenType.COMMA) +292 value = self._parse_bitwise() +293 +294 if part and part.is_string: +295 part = exp.Var(this=part.name) +296 +297 return self.expression(exp.Extract, this=part, expression=value) +298 +299 class Generator(generator.Generator): +300 INTERVAL_ALLOWS_PLURAL_FORM = False +301 LOCKING_READS_SUPPORTED = True +302 JOIN_HINTS = False +303 TABLE_HINTS = False +304 PARAMETER_TOKEN = "$" +305 +306 TYPE_MAPPING = { +307 **generator.Generator.TYPE_MAPPING, # type: ignore +308 exp.DataType.Type.TINYINT: "SMALLINT", +309 exp.DataType.Type.FLOAT: "REAL", +310 exp.DataType.Type.DOUBLE: "DOUBLE PRECISION", +311 exp.DataType.Type.BINARY: "BYTEA", +312 exp.DataType.Type.VARBINARY: "BYTEA", +313 exp.DataType.Type.DATETIME: "TIMESTAMP", +314 } +315 +316 TRANSFORMS = { +317 **generator.Generator.TRANSFORMS, # type: ignore +318 exp.BitwiseXor: lambda self, e: self.binary(e, "#"), +319 exp.ColumnDef: preprocess( +320 [ +321 _auto_increment_to_serial, +322 _serial_to_generated, +323 ], +324 ), +325 exp.JSONExtract: arrow_json_extract_sql, +326 exp.JSONExtractScalar: arrow_json_extract_scalar_sql, +327 exp.JSONBExtract: lambda self, e: self.binary(e, "#>"), +328 exp.JSONBExtractScalar: lambda self, e: self.binary(e, "#>>"), +329 exp.JSONBContains: lambda self, e: self.binary(e, "?"), +330 exp.Pow: lambda self, e: self.binary(e, "^"), +331 exp.CurrentDate: no_paren_current_date_sql, +332 exp.CurrentTimestamp: lambda *_: "CURRENT_TIMESTAMP", +333 exp.DateAdd: _date_add_sql("+"), +334 exp.DateStrToDate: datestrtodate_sql, +335 exp.DateSub: _date_add_sql("-"), +336 exp.DateDiff: _date_diff_sql, +337 exp.LogicalOr: rename_func("BOOL_OR"), +338 exp.LogicalAnd: rename_func("BOOL_AND"), +339 exp.Max: max_or_greatest, +340 exp.Min: min_or_least, +341 exp.ArrayOverlaps: lambda self, e: self.binary(e, "&&"), +342 exp.ArrayContains: lambda self, e: self.binary(e, "@>"), +343 exp.ArrayContained: lambda self, e: self.binary(e, "<@"), +344 exp.Merge: preprocess([remove_target_from_merge]), +345 exp.RegexpLike: lambda self, e: self.binary(e, "~"), +346 exp.RegexpILike: lambda self, e: self.binary(e, "~*"), +347 exp.StrPosition: str_position_sql, +348 exp.StrToTime: lambda self, e: f"TO_TIMESTAMP({self.sql(e, 'this')}, {self.format_time(e)})", +349 exp.Substring: _substring_sql, +350 exp.TimestampTrunc: timestamptrunc_sql, +351 exp.TimeStrToTime: lambda self, e: f"CAST({self.sql(e, 'this')} AS TIMESTAMP)", +352 exp.TimeToStr: lambda self, e: f"TO_CHAR({self.sql(e, 'this')}, {self.format_time(e)})", +353 exp.TableSample: no_tablesample_sql, +354 exp.ToChar: lambda self, e: self.function_fallback_sql(e), +355 exp.Trim: trim_sql, +356 exp.TryCast: no_trycast_sql, +357 exp.UnixToTime: lambda self, e: f"TO_TIMESTAMP({self.sql(e, 'this')})", +358 exp.DataType: _datatype_sql, +359 exp.GroupConcat: _string_agg_sql, +360 exp.Array: lambda self, e: f"{self.normalize_func('ARRAY')}({self.sql(e.expressions[0])})" +361 if isinstance(seq_get(e.expressions, 0), exp.Select) +362 else f"{self.normalize_func('ARRAY')}[{self.expressions(e, flat=True)}]", +363 } +364 +365 PROPERTIES_LOCATION = { +366 **generator.Generator.PROPERTIES_LOCATION, # type: ignore +367 exp.TransientProperty: exp.Properties.Location.UNSUPPORTED, +368 exp.VolatileProperty: exp.Properties.Location.UNSUPPORTED, +369 }
    @@ -439,71 +461,70 @@ -
    179class Postgres(Dialect):
    -180    null_ordering = "nulls_are_large"
    -181    time_format = "'YYYY-MM-DD HH24:MI:SS'"
    -182    time_mapping = {
    -183        "AM": "%p",
    -184        "PM": "%p",
    -185        "D": "%u",  # 1-based day of week
    -186        "DD": "%d",  # day of month
    -187        "DDD": "%j",  # zero padded day of year
    -188        "FMDD": "%-d",  # - is no leading zero for Python; same for FM in postgres
    -189        "FMDDD": "%-j",  # day of year
    -190        "FMHH12": "%-I",  # 9
    -191        "FMHH24": "%-H",  # 9
    -192        "FMMI": "%-M",  # Minute
    -193        "FMMM": "%-m",  # 1
    -194        "FMSS": "%-S",  # Second
    -195        "HH12": "%I",  # 09
    -196        "HH24": "%H",  # 09
    -197        "MI": "%M",  # zero padded minute
    -198        "MM": "%m",  # 01
    -199        "OF": "%z",  # utc offset
    -200        "SS": "%S",  # zero padded second
    -201        "TMDay": "%A",  # TM is locale dependent
    -202        "TMDy": "%a",
    -203        "TMMon": "%b",  # Sep
    -204        "TMMonth": "%B",  # September
    -205        "TZ": "%Z",  # uppercase timezone name
    -206        "US": "%f",  # zero padded microsecond
    -207        "WW": "%U",  # 1-based week of year
    -208        "YY": "%y",  # 15
    -209        "YYYY": "%Y",  # 2015
    -210    }
    -211
    -212    class Tokenizer(tokens.Tokenizer):
    -213        QUOTES = ["'", "$$"]
    -214
    -215        BIT_STRINGS = [("b'", "'"), ("B'", "'")]
    -216        HEX_STRINGS = [("x'", "'"), ("X'", "'")]
    -217        BYTE_STRINGS = [("e'", "'"), ("E'", "'")]
    -218
    -219        KEYWORDS = {
    -220            **tokens.Tokenizer.KEYWORDS,
    -221            "~~": TokenType.LIKE,
    -222            "~~*": TokenType.ILIKE,
    -223            "~*": TokenType.IRLIKE,
    -224            "~": TokenType.RLIKE,
    -225            "@>": TokenType.AT_GT,
    -226            "<@": TokenType.LT_AT,
    -227            "BEGIN": TokenType.COMMAND,
    -228            "BEGIN TRANSACTION": TokenType.BEGIN,
    -229            "BIGSERIAL": TokenType.BIGSERIAL,
    -230            "CHARACTER VARYING": TokenType.VARCHAR,
    -231            "DECLARE": TokenType.COMMAND,
    -232            "DO": TokenType.COMMAND,
    -233            "HSTORE": TokenType.HSTORE,
    -234            "JSONB": TokenType.JSONB,
    -235            "REFRESH": TokenType.COMMAND,
    -236            "REINDEX": TokenType.COMMAND,
    -237            "RESET": TokenType.COMMAND,
    -238            "RETURNING": TokenType.RETURNING,
    -239            "REVOKE": TokenType.COMMAND,
    -240            "SERIAL": TokenType.SERIAL,
    -241            "SMALLSERIAL": TokenType.SMALLSERIAL,
    -242            "TEMP": TokenType.TEMPORARY,
    -243            "UUID": TokenType.UUID,
    +            
    180class Postgres(Dialect):
    +181    null_ordering = "nulls_are_large"
    +182    time_format = "'YYYY-MM-DD HH24:MI:SS'"
    +183    time_mapping = {
    +184        "AM": "%p",
    +185        "PM": "%p",
    +186        "D": "%u",  # 1-based day of week
    +187        "DD": "%d",  # day of month
    +188        "DDD": "%j",  # zero padded day of year
    +189        "FMDD": "%-d",  # - is no leading zero for Python; same for FM in postgres
    +190        "FMDDD": "%-j",  # day of year
    +191        "FMHH12": "%-I",  # 9
    +192        "FMHH24": "%-H",  # 9
    +193        "FMMI": "%-M",  # Minute
    +194        "FMMM": "%-m",  # 1
    +195        "FMSS": "%-S",  # Second
    +196        "HH12": "%I",  # 09
    +197        "HH24": "%H",  # 09
    +198        "MI": "%M",  # zero padded minute
    +199        "MM": "%m",  # 01
    +200        "OF": "%z",  # utc offset
    +201        "SS": "%S",  # zero padded second
    +202        "TMDay": "%A",  # TM is locale dependent
    +203        "TMDy": "%a",
    +204        "TMMon": "%b",  # Sep
    +205        "TMMonth": "%B",  # September
    +206        "TZ": "%Z",  # uppercase timezone name
    +207        "US": "%f",  # zero padded microsecond
    +208        "WW": "%U",  # 1-based week of year
    +209        "YY": "%y",  # 15
    +210        "YYYY": "%Y",  # 2015
    +211    }
    +212
    +213    class Tokenizer(tokens.Tokenizer):
    +214        QUOTES = ["'", "$$"]
    +215
    +216        BIT_STRINGS = [("b'", "'"), ("B'", "'")]
    +217        HEX_STRINGS = [("x'", "'"), ("X'", "'")]
    +218        BYTE_STRINGS = [("e'", "'"), ("E'", "'")]
    +219
    +220        KEYWORDS = {
    +221            **tokens.Tokenizer.KEYWORDS,
    +222            "~~": TokenType.LIKE,
    +223            "~~*": TokenType.ILIKE,
    +224            "~*": TokenType.IRLIKE,
    +225            "~": TokenType.RLIKE,
    +226            "@>": TokenType.AT_GT,
    +227            "<@": TokenType.LT_AT,
    +228            "BEGIN": TokenType.COMMAND,
    +229            "BEGIN TRANSACTION": TokenType.BEGIN,
    +230            "BIGSERIAL": TokenType.BIGSERIAL,
    +231            "CHARACTER VARYING": TokenType.VARCHAR,
    +232            "DECLARE": TokenType.COMMAND,
    +233            "DO": TokenType.COMMAND,
    +234            "HSTORE": TokenType.HSTORE,
    +235            "JSONB": TokenType.JSONB,
    +236            "REFRESH": TokenType.COMMAND,
    +237            "REINDEX": TokenType.COMMAND,
    +238            "RESET": TokenType.COMMAND,
    +239            "RETURNING": TokenType.RETURNING,
    +240            "REVOKE": TokenType.COMMAND,
    +241            "SERIAL": TokenType.SERIAL,
    +242            "SMALLSERIAL": TokenType.SMALLSERIAL,
    +243            "TEMP": TokenType.TEMPORARY,
     244            "CSTRING": TokenType.PSEUDO_TYPE,
     245        }
     246
    @@ -512,103 +533,125 @@
     249            "$": TokenType.PARAMETER,
     250        }
     251
    -252    class Parser(parser.Parser):
    -253        STRICT_CAST = False
    -254
    -255        FUNCTIONS = {
    -256            **parser.Parser.FUNCTIONS,  # type: ignore
    -257            "NOW": exp.CurrentTimestamp.from_arg_list,
    -258            "TO_TIMESTAMP": _to_timestamp,
    -259            "TO_CHAR": format_time_lambda(exp.TimeToStr, "postgres"),
    -260            "GENERATE_SERIES": _generate_series,
    -261            "DATE_TRUNC": lambda args: exp.TimestampTrunc(
    -262                this=seq_get(args, 1), unit=seq_get(args, 0)
    -263            ),
    -264        }
    -265
    -266        BITWISE = {
    -267            **parser.Parser.BITWISE,  # type: ignore
    -268            TokenType.HASH: exp.BitwiseXor,
    -269        }
    -270
    -271        FACTOR = {
    -272            **parser.Parser.FACTOR,
    -273            TokenType.CARET: exp.Pow,
    -274        }
    -275
    -276        RANGE_PARSERS = {
    -277            **parser.Parser.RANGE_PARSERS,  # type: ignore
    -278            TokenType.DAMP: binary_range_parser(exp.ArrayOverlaps),
    -279            TokenType.AT_GT: binary_range_parser(exp.ArrayContains),
    -280            TokenType.LT_AT: binary_range_parser(exp.ArrayContained),
    +252        VAR_SINGLE_TOKENS = {"$"}
    +253
    +254    class Parser(parser.Parser):
    +255        STRICT_CAST = False
    +256
    +257        FUNCTIONS = {
    +258            **parser.Parser.FUNCTIONS,  # type: ignore
    +259            "DATE_TRUNC": lambda args: exp.TimestampTrunc(
    +260                this=seq_get(args, 1), unit=seq_get(args, 0)
    +261            ),
    +262            "GENERATE_SERIES": _generate_series,
    +263            "NOW": exp.CurrentTimestamp.from_arg_list,
    +264            "TO_CHAR": format_time_lambda(exp.TimeToStr, "postgres"),
    +265            "TO_TIMESTAMP": _to_timestamp,
    +266        }
    +267
    +268        FUNCTION_PARSERS = {
    +269            **parser.Parser.FUNCTION_PARSERS,
    +270            "DATE_PART": lambda self: self._parse_date_part(),
    +271        }
    +272
    +273        BITWISE = {
    +274            **parser.Parser.BITWISE,  # type: ignore
    +275            TokenType.HASH: exp.BitwiseXor,
    +276        }
    +277
    +278        FACTOR = {
    +279            **parser.Parser.FACTOR,
    +280            TokenType.CARET: exp.Pow,
     281        }
     282
    -283    class Generator(generator.Generator):
    -284        LOCKING_READS_SUPPORTED = True
    -285        PARAMETER_TOKEN = "$"
    -286
    -287        TYPE_MAPPING = {
    -288            **generator.Generator.TYPE_MAPPING,  # type: ignore
    -289            exp.DataType.Type.TINYINT: "SMALLINT",
    -290            exp.DataType.Type.FLOAT: "REAL",
    -291            exp.DataType.Type.DOUBLE: "DOUBLE PRECISION",
    -292            exp.DataType.Type.BINARY: "BYTEA",
    -293            exp.DataType.Type.VARBINARY: "BYTEA",
    -294            exp.DataType.Type.DATETIME: "TIMESTAMP",
    -295        }
    -296
    -297        TRANSFORMS = {
    -298            **generator.Generator.TRANSFORMS,  # type: ignore
    -299            exp.BitwiseXor: lambda self, e: self.binary(e, "#"),
    -300            exp.ColumnDef: preprocess(
    -301                [
    -302                    _auto_increment_to_serial,
    -303                    _serial_to_generated,
    -304                ],
    -305                delegate("columndef_sql"),
    -306            ),
    -307            exp.JSONExtract: arrow_json_extract_sql,
    -308            exp.JSONExtractScalar: arrow_json_extract_scalar_sql,
    -309            exp.JSONBExtract: lambda self, e: self.binary(e, "#>"),
    -310            exp.JSONBExtractScalar: lambda self, e: self.binary(e, "#>>"),
    -311            exp.JSONBContains: lambda self, e: self.binary(e, "?"),
    -312            exp.Pow: lambda self, e: self.binary(e, "^"),
    -313            exp.CurrentDate: no_paren_current_date_sql,
    -314            exp.CurrentTimestamp: lambda *_: "CURRENT_TIMESTAMP",
    -315            exp.DateAdd: _date_add_sql("+"),
    -316            exp.DateSub: _date_add_sql("-"),
    -317            exp.DateDiff: _date_diff_sql,
    -318            exp.LogicalOr: rename_func("BOOL_OR"),
    -319            exp.LogicalAnd: rename_func("BOOL_AND"),
    -320            exp.Max: max_or_greatest,
    -321            exp.Min: min_or_least,
    -322            exp.ArrayOverlaps: lambda self, e: self.binary(e, "&&"),
    -323            exp.ArrayContains: lambda self, e: self.binary(e, "@>"),
    -324            exp.ArrayContained: lambda self, e: self.binary(e, "<@"),
    -325            exp.RegexpLike: lambda self, e: self.binary(e, "~"),
    -326            exp.RegexpILike: lambda self, e: self.binary(e, "~*"),
    -327            exp.StrPosition: str_position_sql,
    -328            exp.StrToTime: lambda self, e: f"TO_TIMESTAMP({self.sql(e, 'this')}, {self.format_time(e)})",
    -329            exp.Substring: _substring_sql,
    -330            exp.TimestampTrunc: timestamptrunc_sql,
    -331            exp.TimeStrToTime: lambda self, e: f"CAST({self.sql(e, 'this')} AS TIMESTAMP)",
    -332            exp.TimeToStr: lambda self, e: f"TO_CHAR({self.sql(e, 'this')}, {self.format_time(e)})",
    -333            exp.TableSample: no_tablesample_sql,
    -334            exp.ToChar: lambda self, e: self.function_fallback_sql(e),
    -335            exp.Trim: trim_sql,
    -336            exp.TryCast: no_trycast_sql,
    -337            exp.UnixToTime: lambda self, e: f"TO_TIMESTAMP({self.sql(e, 'this')})",
    -338            exp.DataType: _datatype_sql,
    -339            exp.GroupConcat: _string_agg_sql,
    -340            exp.Array: lambda self, e: f"{self.normalize_func('ARRAY')}({self.sql(e.expressions[0])})"
    -341            if isinstance(seq_get(e.expressions, 0), exp.Select)
    -342            else f"{self.normalize_func('ARRAY')}[{self.expressions(e, flat=True)}]",
    -343        }
    -344
    -345        PROPERTIES_LOCATION = {
    -346            **generator.Generator.PROPERTIES_LOCATION,  # type: ignore
    -347            exp.TransientProperty: exp.Properties.Location.UNSUPPORTED,
    -348        }
    +283        RANGE_PARSERS = {
    +284            **parser.Parser.RANGE_PARSERS,  # type: ignore
    +285            TokenType.DAMP: binary_range_parser(exp.ArrayOverlaps),
    +286            TokenType.AT_GT: binary_range_parser(exp.ArrayContains),
    +287            TokenType.LT_AT: binary_range_parser(exp.ArrayContained),
    +288        }
    +289
    +290        def _parse_date_part(self) -> exp.Expression:
    +291            part = self._parse_type()
    +292            self._match(TokenType.COMMA)
    +293            value = self._parse_bitwise()
    +294
    +295            if part and part.is_string:
    +296                part = exp.Var(this=part.name)
    +297
    +298            return self.expression(exp.Extract, this=part, expression=value)
    +299
    +300    class Generator(generator.Generator):
    +301        INTERVAL_ALLOWS_PLURAL_FORM = False
    +302        LOCKING_READS_SUPPORTED = True
    +303        JOIN_HINTS = False
    +304        TABLE_HINTS = False
    +305        PARAMETER_TOKEN = "$"
    +306
    +307        TYPE_MAPPING = {
    +308            **generator.Generator.TYPE_MAPPING,  # type: ignore
    +309            exp.DataType.Type.TINYINT: "SMALLINT",
    +310            exp.DataType.Type.FLOAT: "REAL",
    +311            exp.DataType.Type.DOUBLE: "DOUBLE PRECISION",
    +312            exp.DataType.Type.BINARY: "BYTEA",
    +313            exp.DataType.Type.VARBINARY: "BYTEA",
    +314            exp.DataType.Type.DATETIME: "TIMESTAMP",
    +315        }
    +316
    +317        TRANSFORMS = {
    +318            **generator.Generator.TRANSFORMS,  # type: ignore
    +319            exp.BitwiseXor: lambda self, e: self.binary(e, "#"),
    +320            exp.ColumnDef: preprocess(
    +321                [
    +322                    _auto_increment_to_serial,
    +323                    _serial_to_generated,
    +324                ],
    +325            ),
    +326            exp.JSONExtract: arrow_json_extract_sql,
    +327            exp.JSONExtractScalar: arrow_json_extract_scalar_sql,
    +328            exp.JSONBExtract: lambda self, e: self.binary(e, "#>"),
    +329            exp.JSONBExtractScalar: lambda self, e: self.binary(e, "#>>"),
    +330            exp.JSONBContains: lambda self, e: self.binary(e, "?"),
    +331            exp.Pow: lambda self, e: self.binary(e, "^"),
    +332            exp.CurrentDate: no_paren_current_date_sql,
    +333            exp.CurrentTimestamp: lambda *_: "CURRENT_TIMESTAMP",
    +334            exp.DateAdd: _date_add_sql("+"),
    +335            exp.DateStrToDate: datestrtodate_sql,
    +336            exp.DateSub: _date_add_sql("-"),
    +337            exp.DateDiff: _date_diff_sql,
    +338            exp.LogicalOr: rename_func("BOOL_OR"),
    +339            exp.LogicalAnd: rename_func("BOOL_AND"),
    +340            exp.Max: max_or_greatest,
    +341            exp.Min: min_or_least,
    +342            exp.ArrayOverlaps: lambda self, e: self.binary(e, "&&"),
    +343            exp.ArrayContains: lambda self, e: self.binary(e, "@>"),
    +344            exp.ArrayContained: lambda self, e: self.binary(e, "<@"),
    +345            exp.Merge: preprocess([remove_target_from_merge]),
    +346            exp.RegexpLike: lambda self, e: self.binary(e, "~"),
    +347            exp.RegexpILike: lambda self, e: self.binary(e, "~*"),
    +348            exp.StrPosition: str_position_sql,
    +349            exp.StrToTime: lambda self, e: f"TO_TIMESTAMP({self.sql(e, 'this')}, {self.format_time(e)})",
    +350            exp.Substring: _substring_sql,
    +351            exp.TimestampTrunc: timestamptrunc_sql,
    +352            exp.TimeStrToTime: lambda self, e: f"CAST({self.sql(e, 'this')} AS TIMESTAMP)",
    +353            exp.TimeToStr: lambda self, e: f"TO_CHAR({self.sql(e, 'this')}, {self.format_time(e)})",
    +354            exp.TableSample: no_tablesample_sql,
    +355            exp.ToChar: lambda self, e: self.function_fallback_sql(e),
    +356            exp.Trim: trim_sql,
    +357            exp.TryCast: no_trycast_sql,
    +358            exp.UnixToTime: lambda self, e: f"TO_TIMESTAMP({self.sql(e, 'this')})",
    +359            exp.DataType: _datatype_sql,
    +360            exp.GroupConcat: _string_agg_sql,
    +361            exp.Array: lambda self, e: f"{self.normalize_func('ARRAY')}({self.sql(e.expressions[0])})"
    +362            if isinstance(seq_get(e.expressions, 0), exp.Select)
    +363            else f"{self.normalize_func('ARRAY')}[{self.expressions(e, flat=True)}]",
    +364        }
    +365
    +366        PROPERTIES_LOCATION = {
    +367            **generator.Generator.PROPERTIES_LOCATION,  # type: ignore
    +368            exp.TransientProperty: exp.Properties.Location.UNSUPPORTED,
    +369            exp.VolatileProperty: exp.Properties.Location.UNSUPPORTED,
    +370        }
     
    @@ -643,38 +686,37 @@
    -
    212    class Tokenizer(tokens.Tokenizer):
    -213        QUOTES = ["'", "$$"]
    -214
    -215        BIT_STRINGS = [("b'", "'"), ("B'", "'")]
    -216        HEX_STRINGS = [("x'", "'"), ("X'", "'")]
    -217        BYTE_STRINGS = [("e'", "'"), ("E'", "'")]
    -218
    -219        KEYWORDS = {
    -220            **tokens.Tokenizer.KEYWORDS,
    -221            "~~": TokenType.LIKE,
    -222            "~~*": TokenType.ILIKE,
    -223            "~*": TokenType.IRLIKE,
    -224            "~": TokenType.RLIKE,
    -225            "@>": TokenType.AT_GT,
    -226            "<@": TokenType.LT_AT,
    -227            "BEGIN": TokenType.COMMAND,
    -228            "BEGIN TRANSACTION": TokenType.BEGIN,
    -229            "BIGSERIAL": TokenType.BIGSERIAL,
    -230            "CHARACTER VARYING": TokenType.VARCHAR,
    -231            "DECLARE": TokenType.COMMAND,
    -232            "DO": TokenType.COMMAND,
    -233            "HSTORE": TokenType.HSTORE,
    -234            "JSONB": TokenType.JSONB,
    -235            "REFRESH": TokenType.COMMAND,
    -236            "REINDEX": TokenType.COMMAND,
    -237            "RESET": TokenType.COMMAND,
    -238            "RETURNING": TokenType.RETURNING,
    -239            "REVOKE": TokenType.COMMAND,
    -240            "SERIAL": TokenType.SERIAL,
    -241            "SMALLSERIAL": TokenType.SMALLSERIAL,
    -242            "TEMP": TokenType.TEMPORARY,
    -243            "UUID": TokenType.UUID,
    +            
    213    class Tokenizer(tokens.Tokenizer):
    +214        QUOTES = ["'", "$$"]
    +215
    +216        BIT_STRINGS = [("b'", "'"), ("B'", "'")]
    +217        HEX_STRINGS = [("x'", "'"), ("X'", "'")]
    +218        BYTE_STRINGS = [("e'", "'"), ("E'", "'")]
    +219
    +220        KEYWORDS = {
    +221            **tokens.Tokenizer.KEYWORDS,
    +222            "~~": TokenType.LIKE,
    +223            "~~*": TokenType.ILIKE,
    +224            "~*": TokenType.IRLIKE,
    +225            "~": TokenType.RLIKE,
    +226            "@>": TokenType.AT_GT,
    +227            "<@": TokenType.LT_AT,
    +228            "BEGIN": TokenType.COMMAND,
    +229            "BEGIN TRANSACTION": TokenType.BEGIN,
    +230            "BIGSERIAL": TokenType.BIGSERIAL,
    +231            "CHARACTER VARYING": TokenType.VARCHAR,
    +232            "DECLARE": TokenType.COMMAND,
    +233            "DO": TokenType.COMMAND,
    +234            "HSTORE": TokenType.HSTORE,
    +235            "JSONB": TokenType.JSONB,
    +236            "REFRESH": TokenType.COMMAND,
    +237            "REINDEX": TokenType.COMMAND,
    +238            "RESET": TokenType.COMMAND,
    +239            "RETURNING": TokenType.RETURNING,
    +240            "REVOKE": TokenType.COMMAND,
    +241            "SERIAL": TokenType.SERIAL,
    +242            "SMALLSERIAL": TokenType.SMALLSERIAL,
    +243            "TEMP": TokenType.TEMPORARY,
     244            "CSTRING": TokenType.PSEUDO_TYPE,
     245        }
     246
    @@ -682,6 +724,8 @@
     248            **tokens.Tokenizer.SINGLE_TOKENS,
     249            "$": TokenType.PARAMETER,
     250        }
    +251
    +252        VAR_SINGLE_TOKENS = {"$"}
     
    @@ -709,36 +753,51 @@
    -
    252    class Parser(parser.Parser):
    -253        STRICT_CAST = False
    -254
    -255        FUNCTIONS = {
    -256            **parser.Parser.FUNCTIONS,  # type: ignore
    -257            "NOW": exp.CurrentTimestamp.from_arg_list,
    -258            "TO_TIMESTAMP": _to_timestamp,
    -259            "TO_CHAR": format_time_lambda(exp.TimeToStr, "postgres"),
    -260            "GENERATE_SERIES": _generate_series,
    -261            "DATE_TRUNC": lambda args: exp.TimestampTrunc(
    -262                this=seq_get(args, 1), unit=seq_get(args, 0)
    -263            ),
    -264        }
    -265
    -266        BITWISE = {
    -267            **parser.Parser.BITWISE,  # type: ignore
    -268            TokenType.HASH: exp.BitwiseXor,
    -269        }
    -270
    -271        FACTOR = {
    -272            **parser.Parser.FACTOR,
    -273            TokenType.CARET: exp.Pow,
    -274        }
    -275
    -276        RANGE_PARSERS = {
    -277            **parser.Parser.RANGE_PARSERS,  # type: ignore
    -278            TokenType.DAMP: binary_range_parser(exp.ArrayOverlaps),
    -279            TokenType.AT_GT: binary_range_parser(exp.ArrayContains),
    -280            TokenType.LT_AT: binary_range_parser(exp.ArrayContained),
    +            
    254    class Parser(parser.Parser):
    +255        STRICT_CAST = False
    +256
    +257        FUNCTIONS = {
    +258            **parser.Parser.FUNCTIONS,  # type: ignore
    +259            "DATE_TRUNC": lambda args: exp.TimestampTrunc(
    +260                this=seq_get(args, 1), unit=seq_get(args, 0)
    +261            ),
    +262            "GENERATE_SERIES": _generate_series,
    +263            "NOW": exp.CurrentTimestamp.from_arg_list,
    +264            "TO_CHAR": format_time_lambda(exp.TimeToStr, "postgres"),
    +265            "TO_TIMESTAMP": _to_timestamp,
    +266        }
    +267
    +268        FUNCTION_PARSERS = {
    +269            **parser.Parser.FUNCTION_PARSERS,
    +270            "DATE_PART": lambda self: self._parse_date_part(),
    +271        }
    +272
    +273        BITWISE = {
    +274            **parser.Parser.BITWISE,  # type: ignore
    +275            TokenType.HASH: exp.BitwiseXor,
    +276        }
    +277
    +278        FACTOR = {
    +279            **parser.Parser.FACTOR,
    +280            TokenType.CARET: exp.Pow,
     281        }
    +282
    +283        RANGE_PARSERS = {
    +284            **parser.Parser.RANGE_PARSERS,  # type: ignore
    +285            TokenType.DAMP: binary_range_parser(exp.ArrayOverlaps),
    +286            TokenType.AT_GT: binary_range_parser(exp.ArrayContains),
    +287            TokenType.LT_AT: binary_range_parser(exp.ArrayContained),
    +288        }
    +289
    +290        def _parse_date_part(self) -> exp.Expression:
    +291            part = self._parse_type()
    +292            self._match(TokenType.COMMA)
    +293            value = self._parse_bitwise()
    +294
    +295            if part and part.is_string:
    +296                part = exp.Var(this=part.name)
    +297
    +298            return self.expression(exp.Extract, this=part, expression=value)
     
    @@ -795,72 +854,77 @@ Default: "nulls_are_small"
    -
    283    class Generator(generator.Generator):
    -284        LOCKING_READS_SUPPORTED = True
    -285        PARAMETER_TOKEN = "$"
    -286
    -287        TYPE_MAPPING = {
    -288            **generator.Generator.TYPE_MAPPING,  # type: ignore
    -289            exp.DataType.Type.TINYINT: "SMALLINT",
    -290            exp.DataType.Type.FLOAT: "REAL",
    -291            exp.DataType.Type.DOUBLE: "DOUBLE PRECISION",
    -292            exp.DataType.Type.BINARY: "BYTEA",
    -293            exp.DataType.Type.VARBINARY: "BYTEA",
    -294            exp.DataType.Type.DATETIME: "TIMESTAMP",
    -295        }
    -296
    -297        TRANSFORMS = {
    -298            **generator.Generator.TRANSFORMS,  # type: ignore
    -299            exp.BitwiseXor: lambda self, e: self.binary(e, "#"),
    -300            exp.ColumnDef: preprocess(
    -301                [
    -302                    _auto_increment_to_serial,
    -303                    _serial_to_generated,
    -304                ],
    -305                delegate("columndef_sql"),
    -306            ),
    -307            exp.JSONExtract: arrow_json_extract_sql,
    -308            exp.JSONExtractScalar: arrow_json_extract_scalar_sql,
    -309            exp.JSONBExtract: lambda self, e: self.binary(e, "#>"),
    -310            exp.JSONBExtractScalar: lambda self, e: self.binary(e, "#>>"),
    -311            exp.JSONBContains: lambda self, e: self.binary(e, "?"),
    -312            exp.Pow: lambda self, e: self.binary(e, "^"),
    -313            exp.CurrentDate: no_paren_current_date_sql,
    -314            exp.CurrentTimestamp: lambda *_: "CURRENT_TIMESTAMP",
    -315            exp.DateAdd: _date_add_sql("+"),
    -316            exp.DateSub: _date_add_sql("-"),
    -317            exp.DateDiff: _date_diff_sql,
    -318            exp.LogicalOr: rename_func("BOOL_OR"),
    -319            exp.LogicalAnd: rename_func("BOOL_AND"),
    -320            exp.Max: max_or_greatest,
    -321            exp.Min: min_or_least,
    -322            exp.ArrayOverlaps: lambda self, e: self.binary(e, "&&"),
    -323            exp.ArrayContains: lambda self, e: self.binary(e, "@>"),
    -324            exp.ArrayContained: lambda self, e: self.binary(e, "<@"),
    -325            exp.RegexpLike: lambda self, e: self.binary(e, "~"),
    -326            exp.RegexpILike: lambda self, e: self.binary(e, "~*"),
    -327            exp.StrPosition: str_position_sql,
    -328            exp.StrToTime: lambda self, e: f"TO_TIMESTAMP({self.sql(e, 'this')}, {self.format_time(e)})",
    -329            exp.Substring: _substring_sql,
    -330            exp.TimestampTrunc: timestamptrunc_sql,
    -331            exp.TimeStrToTime: lambda self, e: f"CAST({self.sql(e, 'this')} AS TIMESTAMP)",
    -332            exp.TimeToStr: lambda self, e: f"TO_CHAR({self.sql(e, 'this')}, {self.format_time(e)})",
    -333            exp.TableSample: no_tablesample_sql,
    -334            exp.ToChar: lambda self, e: self.function_fallback_sql(e),
    -335            exp.Trim: trim_sql,
    -336            exp.TryCast: no_trycast_sql,
    -337            exp.UnixToTime: lambda self, e: f"TO_TIMESTAMP({self.sql(e, 'this')})",
    -338            exp.DataType: _datatype_sql,
    -339            exp.GroupConcat: _string_agg_sql,
    -340            exp.Array: lambda self, e: f"{self.normalize_func('ARRAY')}({self.sql(e.expressions[0])})"
    -341            if isinstance(seq_get(e.expressions, 0), exp.Select)
    -342            else f"{self.normalize_func('ARRAY')}[{self.expressions(e, flat=True)}]",
    -343        }
    -344
    -345        PROPERTIES_LOCATION = {
    -346            **generator.Generator.PROPERTIES_LOCATION,  # type: ignore
    -347            exp.TransientProperty: exp.Properties.Location.UNSUPPORTED,
    -348        }
    +            
    300    class Generator(generator.Generator):
    +301        INTERVAL_ALLOWS_PLURAL_FORM = False
    +302        LOCKING_READS_SUPPORTED = True
    +303        JOIN_HINTS = False
    +304        TABLE_HINTS = False
    +305        PARAMETER_TOKEN = "$"
    +306
    +307        TYPE_MAPPING = {
    +308            **generator.Generator.TYPE_MAPPING,  # type: ignore
    +309            exp.DataType.Type.TINYINT: "SMALLINT",
    +310            exp.DataType.Type.FLOAT: "REAL",
    +311            exp.DataType.Type.DOUBLE: "DOUBLE PRECISION",
    +312            exp.DataType.Type.BINARY: "BYTEA",
    +313            exp.DataType.Type.VARBINARY: "BYTEA",
    +314            exp.DataType.Type.DATETIME: "TIMESTAMP",
    +315        }
    +316
    +317        TRANSFORMS = {
    +318            **generator.Generator.TRANSFORMS,  # type: ignore
    +319            exp.BitwiseXor: lambda self, e: self.binary(e, "#"),
    +320            exp.ColumnDef: preprocess(
    +321                [
    +322                    _auto_increment_to_serial,
    +323                    _serial_to_generated,
    +324                ],
    +325            ),
    +326            exp.JSONExtract: arrow_json_extract_sql,
    +327            exp.JSONExtractScalar: arrow_json_extract_scalar_sql,
    +328            exp.JSONBExtract: lambda self, e: self.binary(e, "#>"),
    +329            exp.JSONBExtractScalar: lambda self, e: self.binary(e, "#>>"),
    +330            exp.JSONBContains: lambda self, e: self.binary(e, "?"),
    +331            exp.Pow: lambda self, e: self.binary(e, "^"),
    +332            exp.CurrentDate: no_paren_current_date_sql,
    +333            exp.CurrentTimestamp: lambda *_: "CURRENT_TIMESTAMP",
    +334            exp.DateAdd: _date_add_sql("+"),
    +335            exp.DateStrToDate: datestrtodate_sql,
    +336            exp.DateSub: _date_add_sql("-"),
    +337            exp.DateDiff: _date_diff_sql,
    +338            exp.LogicalOr: rename_func("BOOL_OR"),
    +339            exp.LogicalAnd: rename_func("BOOL_AND"),
    +340            exp.Max: max_or_greatest,
    +341            exp.Min: min_or_least,
    +342            exp.ArrayOverlaps: lambda self, e: self.binary(e, "&&"),
    +343            exp.ArrayContains: lambda self, e: self.binary(e, "@>"),
    +344            exp.ArrayContained: lambda self, e: self.binary(e, "<@"),
    +345            exp.Merge: preprocess([remove_target_from_merge]),
    +346            exp.RegexpLike: lambda self, e: self.binary(e, "~"),
    +347            exp.RegexpILike: lambda self, e: self.binary(e, "~*"),
    +348            exp.StrPosition: str_position_sql,
    +349            exp.StrToTime: lambda self, e: f"TO_TIMESTAMP({self.sql(e, 'this')}, {self.format_time(e)})",
    +350            exp.Substring: _substring_sql,
    +351            exp.TimestampTrunc: timestamptrunc_sql,
    +352            exp.TimeStrToTime: lambda self, e: f"CAST({self.sql(e, 'this')} AS TIMESTAMP)",
    +353            exp.TimeToStr: lambda self, e: f"TO_CHAR({self.sql(e, 'this')}, {self.format_time(e)})",
    +354            exp.TableSample: no_tablesample_sql,
    +355            exp.ToChar: lambda self, e: self.function_fallback_sql(e),
    +356            exp.Trim: trim_sql,
    +357            exp.TryCast: no_trycast_sql,
    +358            exp.UnixToTime: lambda self, e: f"TO_TIMESTAMP({self.sql(e, 'this')})",
    +359            exp.DataType: _datatype_sql,
    +360            exp.GroupConcat: _string_agg_sql,
    +361            exp.Array: lambda self, e: f"{self.normalize_func('ARRAY')}({self.sql(e.expressions[0])})"
    +362            if isinstance(seq_get(e.expressions, 0), exp.Select)
    +363            else f"{self.normalize_func('ARRAY')}[{self.expressions(e, flat=True)}]",
    +364        }
    +365
    +366        PROPERTIES_LOCATION = {
    +367            **generator.Generator.PROPERTIES_LOCATION,  # type: ignore
    +368            exp.TransientProperty: exp.Properties.Location.UNSUPPORTED,
    +369            exp.VolatileProperty: exp.Properties.Location.UNSUPPORTED,
    +370        }
     
    @@ -945,6 +1009,7 @@ Default: True
    tablealias_sql
    bitstring_sql
    hexstring_sql
    +
    bytestring_sql
    datatype_sql
    directory_sql
    delete_sql
    @@ -956,6 +1021,7 @@ Default: True
    hint_sql
    index_sql
    identifier_sql
    +
    inputoutputformat_sql
    national_sql
    partition_sql
    properties_sql
    @@ -981,6 +1047,7 @@ Default: True
    intersect_op
    introducer_sql
    pseudotype_sql
    +
    onconflict_sql
    returning_sql
    rowformatdelimitedproperty_sql
    table_sql
    diff --git a/docs/sqlglot/dialects/presto.html b/docs/sqlglot/dialects/presto.html index cce2c46..d78e456 100644 --- a/docs/sqlglot/dialects/presto.html +++ b/docs/sqlglot/dialects/presto.html @@ -3,7 +3,7 @@ - + sqlglot.dialects.presto API documentation @@ -48,6 +48,9 @@
  • Presto.Generator
      +
    • + interval_sql +
    • transaction_sql
    • @@ -82,318 +85,345 @@
        1from __future__ import annotations
         2
      -  3from sqlglot import exp, generator, parser, tokens, transforms
      -  4from sqlglot.dialects.dialect import (
      -  5    Dialect,
      -  6    date_trunc_to_time,
      -  7    format_time_lambda,
      -  8    if_sql,
      -  9    no_ilike_sql,
      - 10    no_safe_divide_sql,
      - 11    rename_func,
      - 12    struct_extract_sql,
      - 13    timestamptrunc_sql,
      - 14    timestrtotime_sql,
      - 15)
      - 16from sqlglot.dialects.mysql import MySQL
      - 17from sqlglot.errors import UnsupportedError
      - 18from sqlglot.helper import seq_get
      - 19from sqlglot.tokens import TokenType
      - 20
      - 21
      - 22def _approx_distinct_sql(self, expression):
      - 23    accuracy = expression.args.get("accuracy")
      - 24    accuracy = ", " + self.sql(accuracy) if accuracy else ""
      - 25    return f"APPROX_DISTINCT({self.sql(expression, 'this')}{accuracy})"
      - 26
      - 27
      - 28def _datatype_sql(self, expression):
      - 29    sql = self.datatype_sql(expression)
      - 30    if expression.this == exp.DataType.Type.TIMESTAMPTZ:
      - 31        sql = f"{sql} WITH TIME ZONE"
      - 32    return sql
      - 33
      - 34
      - 35def _explode_to_unnest_sql(self, expression):
      - 36    if isinstance(expression.this, (exp.Explode, exp.Posexplode)):
      - 37        return self.sql(
      - 38            exp.Join(
      - 39                this=exp.Unnest(
      - 40                    expressions=[expression.this.this],
      - 41                    alias=expression.args.get("alias"),
      - 42                    ordinality=isinstance(expression.this, exp.Posexplode),
      - 43                ),
      - 44                kind="cross",
      - 45            )
      - 46        )
      - 47    return self.lateral_sql(expression)
      - 48
      - 49
      - 50def _initcap_sql(self, expression):
      - 51    regex = r"(\w)(\w*)"
      - 52    return f"REGEXP_REPLACE({self.sql(expression, 'this')}, '{regex}', x -> UPPER(x[1]) || LOWER(x[2]))"
      - 53
      - 54
      - 55def _decode_sql(self, expression):
      - 56    _ensure_utf8(expression.args.get("charset"))
      - 57    return self.func("FROM_UTF8", expression.this, expression.args.get("replace"))
      - 58
      - 59
      - 60def _encode_sql(self, expression):
      - 61    _ensure_utf8(expression.args.get("charset"))
      - 62    return f"TO_UTF8({self.sql(expression, 'this')})"
      - 63
      - 64
      - 65def _no_sort_array(self, expression):
      - 66    if expression.args.get("asc") == exp.false():
      - 67        comparator = "(a, b) -> CASE WHEN a < b THEN 1 WHEN a > b THEN -1 ELSE 0 END"
      - 68    else:
      - 69        comparator = None
      - 70    return self.func("ARRAY_SORT", expression.this, comparator)
      - 71
      - 72
      - 73def _schema_sql(self, expression):
      - 74    if isinstance(expression.parent, exp.Property):
      - 75        columns = ", ".join(f"'{c.name}'" for c in expression.expressions)
      - 76        return f"ARRAY[{columns}]"
      - 77
      - 78    for schema in expression.parent.find_all(exp.Schema):
      - 79        if isinstance(schema.parent, exp.Property):
      - 80            expression = expression.copy()
      - 81            expression.expressions.extend(schema.expressions)
      - 82
      - 83    return self.schema_sql(expression)
      - 84
      +  3import typing as t
      +  4
      +  5from sqlglot import exp, generator, parser, tokens, transforms
      +  6from sqlglot.dialects.dialect import (
      +  7    Dialect,
      +  8    date_trunc_to_time,
      +  9    format_time_lambda,
      + 10    if_sql,
      + 11    no_ilike_sql,
      + 12    no_safe_divide_sql,
      + 13    rename_func,
      + 14    struct_extract_sql,
      + 15    timestamptrunc_sql,
      + 16    timestrtotime_sql,
      + 17)
      + 18from sqlglot.dialects.mysql import MySQL
      + 19from sqlglot.errors import UnsupportedError
      + 20from sqlglot.helper import seq_get
      + 21from sqlglot.tokens import TokenType
      + 22
      + 23
      + 24def _approx_distinct_sql(self: generator.Generator, expression: exp.ApproxDistinct) -> str:
      + 25    accuracy = expression.args.get("accuracy")
      + 26    accuracy = ", " + self.sql(accuracy) if accuracy else ""
      + 27    return f"APPROX_DISTINCT({self.sql(expression, 'this')}{accuracy})"
      + 28
      + 29
      + 30def _datatype_sql(self: generator.Generator, expression: exp.DataType) -> str:
      + 31    sql = self.datatype_sql(expression)
      + 32    if expression.this == exp.DataType.Type.TIMESTAMPTZ:
      + 33        sql = f"{sql} WITH TIME ZONE"
      + 34    return sql
      + 35
      + 36
      + 37def _explode_to_unnest_sql(self: generator.Generator, expression: exp.Lateral) -> str:
      + 38    if isinstance(expression.this, (exp.Explode, exp.Posexplode)):
      + 39        return self.sql(
      + 40            exp.Join(
      + 41                this=exp.Unnest(
      + 42                    expressions=[expression.this.this],
      + 43                    alias=expression.args.get("alias"),
      + 44                    ordinality=isinstance(expression.this, exp.Posexplode),
      + 45                ),
      + 46                kind="cross",
      + 47            )
      + 48        )
      + 49    return self.lateral_sql(expression)
      + 50
      + 51
      + 52def _initcap_sql(self: generator.Generator, expression: exp.Initcap) -> str:
      + 53    regex = r"(\w)(\w*)"
      + 54    return f"REGEXP_REPLACE({self.sql(expression, 'this')}, '{regex}', x -> UPPER(x[1]) || LOWER(x[2]))"
      + 55
      + 56
      + 57def _decode_sql(self: generator.Generator, expression: exp.Decode) -> str:
      + 58    _ensure_utf8(expression.args["charset"])
      + 59    return self.func("FROM_UTF8", expression.this, expression.args.get("replace"))
      + 60
      + 61
      + 62def _encode_sql(self: generator.Generator, expression: exp.Encode) -> str:
      + 63    _ensure_utf8(expression.args["charset"])
      + 64    return f"TO_UTF8({self.sql(expression, 'this')})"
      + 65
      + 66
      + 67def _no_sort_array(self: generator.Generator, expression: exp.SortArray) -> str:
      + 68    if expression.args.get("asc") == exp.false():
      + 69        comparator = "(a, b) -> CASE WHEN a < b THEN 1 WHEN a > b THEN -1 ELSE 0 END"
      + 70    else:
      + 71        comparator = None
      + 72    return self.func("ARRAY_SORT", expression.this, comparator)
      + 73
      + 74
      + 75def _schema_sql(self: generator.Generator, expression: exp.Schema) -> str:
      + 76    if isinstance(expression.parent, exp.Property):
      + 77        columns = ", ".join(f"'{c.name}'" for c in expression.expressions)
      + 78        return f"ARRAY[{columns}]"
      + 79
      + 80    if expression.parent:
      + 81        for schema in expression.parent.find_all(exp.Schema):
      + 82            if isinstance(schema.parent, exp.Property):
      + 83                expression = expression.copy()
      + 84                expression.expressions.extend(schema.expressions)
        85
      - 86def _quantile_sql(self, expression):
      - 87    self.unsupported("Presto does not support exact quantiles")
      - 88    return f"APPROX_PERCENTILE({self.sql(expression, 'this')}, {self.sql(expression, 'quantile')})"
      - 89
      - 90
      - 91def _str_to_time_sql(self, expression):
      - 92    return f"DATE_PARSE({self.sql(expression, 'this')}, {self.format_time(expression)})"
      + 86    return self.schema_sql(expression)
      + 87
      + 88
      + 89def _quantile_sql(self: generator.Generator, expression: exp.Quantile) -> str:
      + 90    self.unsupported("Presto does not support exact quantiles")
      + 91    return f"APPROX_PERCENTILE({self.sql(expression, 'this')}, {self.sql(expression, 'quantile')})"
      + 92
        93
      - 94
      - 95def _ts_or_ds_to_date_sql(self, expression):
      - 96    time_format = self.format_time(expression)
      - 97    if time_format and time_format not in (Presto.time_format, Presto.date_format):
      - 98        return f"CAST({_str_to_time_sql(self, expression)} AS DATE)"
      - 99    return f"CAST(SUBSTR(CAST({self.sql(expression, 'this')} AS VARCHAR), 1, 10) AS DATE)"
      -100
      -101
      -102def _ts_or_ds_add_sql(self, expression):
      -103    return self.func(
      -104        "DATE_ADD",
      -105        exp.Literal.string(expression.text("unit") or "day"),
      -106        expression.expression,
      -107        self.func(
      -108            "DATE_PARSE",
      -109            self.func("SUBSTR", expression.this, exp.Literal.number(1), exp.Literal.number(10)),
      -110            Presto.date_format,
      -111        ),
      -112    )
      -113
      -114
      -115def _sequence_sql(self, expression):
      -116    start = expression.args["start"]
      -117    end = expression.args["end"]
      -118    step = expression.args.get("step", 1)  # Postgres defaults to 1 for generate_series
      -119
      -120    target_type = None
      + 94def _str_to_time_sql(
      + 95    self: generator.Generator, expression: exp.StrToDate | exp.StrToTime | exp.TsOrDsToDate
      + 96) -> str:
      + 97    return f"DATE_PARSE({self.sql(expression, 'this')}, {self.format_time(expression)})"
      + 98
      + 99
      +100def _ts_or_ds_to_date_sql(self: generator.Generator, expression: exp.TsOrDsToDate) -> str:
      +101    time_format = self.format_time(expression)
      +102    if time_format and time_format not in (Presto.time_format, Presto.date_format):
      +103        return f"CAST({_str_to_time_sql(self, expression)} AS DATE)"
      +104    return f"CAST(SUBSTR(CAST({self.sql(expression, 'this')} AS VARCHAR), 1, 10) AS DATE)"
      +105
      +106
      +107def _ts_or_ds_add_sql(self: generator.Generator, expression: exp.TsOrDsAdd) -> str:
      +108    this = expression.this
      +109
      +110    if not isinstance(this, exp.CurrentDate):
      +111        this = self.func(
      +112            "DATE_PARSE",
      +113            self.func(
      +114                "SUBSTR",
      +115                this if this.is_string else exp.cast(this, "VARCHAR"),
      +116                exp.Literal.number(1),
      +117                exp.Literal.number(10),
      +118            ),
      +119            Presto.date_format,
      +120        )
       121
      -122    if isinstance(start, exp.Cast):
      -123        target_type = start.to
      -124    elif isinstance(end, exp.Cast):
      -125        target_type = end.to
      -126
      -127    if target_type and target_type.this == exp.DataType.Type.TIMESTAMP:
      -128        to = target_type.copy()
      +122    return self.func(
      +123        "DATE_ADD",
      +124        exp.Literal.string(expression.text("unit") or "day"),
      +125        expression.expression,
      +126        this,
      +127    )
      +128
       129
      -130        if target_type is start.to:
      -131            end = exp.Cast(this=end, to=to)
      -132        else:
      -133            start = exp.Cast(this=start, to=to)
      +130def _sequence_sql(self: generator.Generator, expression: exp.GenerateSeries) -> str:
      +131    start = expression.args["start"]
      +132    end = expression.args["end"]
      +133    step = expression.args.get("step", 1)  # Postgres defaults to 1 for generate_series
       134
      -135    return self.func("SEQUENCE", start, end, step)
      +135    target_type = None
       136
      -137
      -138def _ensure_utf8(charset):
      -139    if charset.name.lower() != "utf-8":
      -140        raise UnsupportedError(f"Unsupported charset {charset}")
      +137    if isinstance(start, exp.Cast):
      +138        target_type = start.to
      +139    elif isinstance(end, exp.Cast):
      +140        target_type = end.to
       141
      -142
      -143def _approx_percentile(args):
      -144    if len(args) == 4:
      -145        return exp.ApproxQuantile(
      -146            this=seq_get(args, 0),
      -147            weight=seq_get(args, 1),
      -148            quantile=seq_get(args, 2),
      -149            accuracy=seq_get(args, 3),
      -150        )
      -151    if len(args) == 3:
      -152        return exp.ApproxQuantile(
      -153            this=seq_get(args, 0),
      -154            quantile=seq_get(args, 1),
      -155            accuracy=seq_get(args, 2),
      -156        )
      -157    return exp.ApproxQuantile.from_arg_list(args)
      -158
      -159
      -160def _from_unixtime(args):
      -161    if len(args) == 3:
      -162        return exp.UnixToTime(
      -163            this=seq_get(args, 0),
      -164            hours=seq_get(args, 1),
      -165            minutes=seq_get(args, 2),
      -166        )
      -167    if len(args) == 2:
      -168        return exp.UnixToTime(
      -169            this=seq_get(args, 0),
      -170            zone=seq_get(args, 1),
      +142    if target_type and target_type.this == exp.DataType.Type.TIMESTAMP:
      +143        to = target_type.copy()
      +144
      +145        if target_type is start.to:
      +146            end = exp.Cast(this=end, to=to)
      +147        else:
      +148            start = exp.Cast(this=start, to=to)
      +149
      +150    return self.func("SEQUENCE", start, end, step)
      +151
      +152
      +153def _ensure_utf8(charset: exp.Literal) -> None:
      +154    if charset.name.lower() != "utf-8":
      +155        raise UnsupportedError(f"Unsupported charset {charset}")
      +156
      +157
      +158def _approx_percentile(args: t.Sequence) -> exp.Expression:
      +159    if len(args) == 4:
      +160        return exp.ApproxQuantile(
      +161            this=seq_get(args, 0),
      +162            weight=seq_get(args, 1),
      +163            quantile=seq_get(args, 2),
      +164            accuracy=seq_get(args, 3),
      +165        )
      +166    if len(args) == 3:
      +167        return exp.ApproxQuantile(
      +168            this=seq_get(args, 0),
      +169            quantile=seq_get(args, 1),
      +170            accuracy=seq_get(args, 2),
       171        )
      -172    return exp.UnixToTime.from_arg_list(args)
      +172    return exp.ApproxQuantile.from_arg_list(args)
       173
       174
      -175class Presto(Dialect):
      -176    index_offset = 1
      -177    null_ordering = "nulls_are_last"
      -178    time_format = MySQL.time_format  # type: ignore
      -179    time_mapping = MySQL.time_mapping  # type: ignore
      -180
      -181    class Tokenizer(tokens.Tokenizer):
      -182        KEYWORDS = {
      -183            **tokens.Tokenizer.KEYWORDS,
      -184            "START": TokenType.BEGIN,
      -185            "ROW": TokenType.STRUCT,
      -186        }
      -187
      -188    class Parser(parser.Parser):
      -189        FUNCTIONS = {
      -190            **parser.Parser.FUNCTIONS,  # type: ignore
      -191            "APPROX_DISTINCT": exp.ApproxDistinct.from_arg_list,
      -192            "CARDINALITY": exp.ArraySize.from_arg_list,
      -193            "CONTAINS": exp.ArrayContains.from_arg_list,
      -194            "DATE_ADD": lambda args: exp.DateAdd(
      -195                this=seq_get(args, 2),
      -196                expression=seq_get(args, 1),
      -197                unit=seq_get(args, 0),
      -198            ),
      -199            "DATE_DIFF": lambda args: exp.DateDiff(
      -200                this=seq_get(args, 2),
      -201                expression=seq_get(args, 1),
      -202                unit=seq_get(args, 0),
      -203            ),
      -204            "DATE_FORMAT": format_time_lambda(exp.TimeToStr, "presto"),
      -205            "DATE_PARSE": format_time_lambda(exp.StrToTime, "presto"),
      -206            "DATE_TRUNC": date_trunc_to_time,
      -207            "FROM_UNIXTIME": _from_unixtime,
      -208            "NOW": exp.CurrentTimestamp.from_arg_list,
      -209            "STRPOS": lambda args: exp.StrPosition(
      -210                this=seq_get(args, 0),
      -211                substr=seq_get(args, 1),
      -212                instance=seq_get(args, 2),
      +175def _from_unixtime(args: t.Sequence) -> exp.Expression:
      +176    if len(args) == 3:
      +177        return exp.UnixToTime(
      +178            this=seq_get(args, 0),
      +179            hours=seq_get(args, 1),
      +180            minutes=seq_get(args, 2),
      +181        )
      +182    if len(args) == 2:
      +183        return exp.UnixToTime(
      +184            this=seq_get(args, 0),
      +185            zone=seq_get(args, 1),
      +186        )
      +187    return exp.UnixToTime.from_arg_list(args)
      +188
      +189
      +190class Presto(Dialect):
      +191    index_offset = 1
      +192    null_ordering = "nulls_are_last"
      +193    time_format = MySQL.time_format  # type: ignore
      +194    time_mapping = MySQL.time_mapping  # type: ignore
      +195
      +196    class Tokenizer(tokens.Tokenizer):
      +197        KEYWORDS = {
      +198            **tokens.Tokenizer.KEYWORDS,
      +199            "START": TokenType.BEGIN,
      +200            "ROW": TokenType.STRUCT,
      +201        }
      +202
      +203    class Parser(parser.Parser):
      +204        FUNCTIONS = {
      +205            **parser.Parser.FUNCTIONS,  # type: ignore
      +206            "APPROX_DISTINCT": exp.ApproxDistinct.from_arg_list,
      +207            "CARDINALITY": exp.ArraySize.from_arg_list,
      +208            "CONTAINS": exp.ArrayContains.from_arg_list,
      +209            "DATE_ADD": lambda args: exp.DateAdd(
      +210                this=seq_get(args, 2),
      +211                expression=seq_get(args, 1),
      +212                unit=seq_get(args, 0),
       213            ),
      -214            "TO_UNIXTIME": exp.TimeToUnix.from_arg_list,
      -215            "APPROX_PERCENTILE": _approx_percentile,
      -216            "FROM_HEX": exp.Unhex.from_arg_list,
      -217            "TO_HEX": exp.Hex.from_arg_list,
      -218            "TO_UTF8": lambda args: exp.Encode(
      -219                this=seq_get(args, 0), charset=exp.Literal.string("utf-8")
      -220            ),
      -221            "FROM_UTF8": lambda args: exp.Decode(
      -222                this=seq_get(args, 0), replace=seq_get(args, 1), charset=exp.Literal.string("utf-8")
      -223            ),
      -224        }
      -225        FUNCTION_PARSERS = parser.Parser.FUNCTION_PARSERS.copy()
      -226        FUNCTION_PARSERS.pop("TRIM")
      -227
      -228    class Generator(generator.Generator):
      -229        STRUCT_DELIMITER = ("(", ")")
      -230
      -231        PROPERTIES_LOCATION = {
      -232            **generator.Generator.PROPERTIES_LOCATION,  # type: ignore
      -233            exp.LocationProperty: exp.Properties.Location.UNSUPPORTED,
      -234        }
      -235
      -236        TYPE_MAPPING = {
      -237            **generator.Generator.TYPE_MAPPING,  # type: ignore
      -238            exp.DataType.Type.INT: "INTEGER",
      -239            exp.DataType.Type.FLOAT: "REAL",
      -240            exp.DataType.Type.BINARY: "VARBINARY",
      -241            exp.DataType.Type.TEXT: "VARCHAR",
      -242            exp.DataType.Type.TIMESTAMPTZ: "TIMESTAMP",
      -243            exp.DataType.Type.STRUCT: "ROW",
      -244        }
      -245
      -246        TRANSFORMS = {
      -247            **generator.Generator.TRANSFORMS,  # type: ignore
      -248            **transforms.UNALIAS_GROUP,  # type: ignore
      -249            **transforms.ELIMINATE_QUALIFY,  # type: ignore
      -250            exp.ApproxDistinct: _approx_distinct_sql,
      -251            exp.Array: lambda self, e: f"ARRAY[{self.expressions(e, flat=True)}]",
      -252            exp.ArrayConcat: rename_func("CONCAT"),
      -253            exp.ArrayContains: rename_func("CONTAINS"),
      -254            exp.ArraySize: rename_func("CARDINALITY"),
      -255            exp.BitwiseAnd: lambda self, e: f"BITWISE_AND({self.sql(e, 'this')}, {self.sql(e, 'expression')})",
      -256            exp.BitwiseLeftShift: lambda self, e: f"BITWISE_ARITHMETIC_SHIFT_LEFT({self.sql(e, 'this')}, {self.sql(e, 'expression')})",
      -257            exp.BitwiseNot: lambda self, e: f"BITWISE_NOT({self.sql(e, 'this')})",
      -258            exp.BitwiseOr: lambda self, e: f"BITWISE_OR({self.sql(e, 'this')}, {self.sql(e, 'expression')})",
      -259            exp.BitwiseRightShift: lambda self, e: f"BITWISE_ARITHMETIC_SHIFT_RIGHT({self.sql(e, 'this')}, {self.sql(e, 'expression')})",
      -260            exp.BitwiseXor: lambda self, e: f"BITWISE_XOR({self.sql(e, 'this')}, {self.sql(e, 'expression')})",
      -261            exp.CurrentTimestamp: lambda *_: "CURRENT_TIMESTAMP",
      -262            exp.DataType: _datatype_sql,
      -263            exp.DateAdd: lambda self, e: self.func(
      -264                "DATE_ADD", exp.Literal.string(e.text("unit") or "day"), e.expression, e.this
      -265            ),
      -266            exp.DateDiff: lambda self, e: self.func(
      -267                "DATE_DIFF", exp.Literal.string(e.text("unit") or "day"), e.expression, e.this
      -268            ),
      -269            exp.DateStrToDate: lambda self, e: f"CAST(DATE_PARSE({self.sql(e, 'this')}, {Presto.date_format}) AS DATE)",
      -270            exp.DateToDi: lambda self, e: f"CAST(DATE_FORMAT({self.sql(e, 'this')}, {Presto.dateint_format}) AS INT)",
      -271            exp.Decode: _decode_sql,
      -272            exp.DiToDate: lambda self, e: f"CAST(DATE_PARSE(CAST({self.sql(e, 'this')} AS VARCHAR), {Presto.dateint_format}) AS DATE)",
      -273            exp.Encode: _encode_sql,
      -274            exp.GenerateSeries: _sequence_sql,
      -275            exp.Hex: rename_func("TO_HEX"),
      -276            exp.If: if_sql,
      -277            exp.ILike: no_ilike_sql,
      -278            exp.Initcap: _initcap_sql,
      -279            exp.Lateral: _explode_to_unnest_sql,
      -280            exp.Levenshtein: rename_func("LEVENSHTEIN_DISTANCE"),
      -281            exp.LogicalOr: rename_func("BOOL_OR"),
      -282            exp.LogicalAnd: rename_func("BOOL_AND"),
      -283            exp.Quantile: _quantile_sql,
      -284            exp.ApproxQuantile: rename_func("APPROX_PERCENTILE"),
      -285            exp.SafeDivide: no_safe_divide_sql,
      -286            exp.Schema: _schema_sql,
      -287            exp.SortArray: _no_sort_array,
      -288            exp.StrPosition: rename_func("STRPOS"),
      -289            exp.StrToDate: lambda self, e: f"CAST({_str_to_time_sql(self, e)} AS DATE)",
      -290            exp.StrToTime: _str_to_time_sql,
      -291            exp.StrToUnix: lambda self, e: f"TO_UNIXTIME(DATE_PARSE({self.sql(e, 'this')}, {self.format_time(e)}))",
      -292            exp.StructExtract: struct_extract_sql,
      -293            exp.TableFormatProperty: lambda self, e: f"TABLE_FORMAT='{e.name.upper()}'",
      -294            exp.FileFormatProperty: lambda self, e: f"FORMAT='{e.name.upper()}'",
      -295            exp.TimestampTrunc: timestamptrunc_sql,
      -296            exp.TimeStrToDate: timestrtotime_sql,
      -297            exp.TimeStrToTime: timestrtotime_sql,
      -298            exp.TimeStrToUnix: lambda self, e: f"TO_UNIXTIME(DATE_PARSE({self.sql(e, 'this')}, {Presto.time_format}))",
      -299            exp.TimeToStr: lambda self, e: f"DATE_FORMAT({self.sql(e, 'this')}, {self.format_time(e)})",
      -300            exp.TimeToUnix: rename_func("TO_UNIXTIME"),
      -301            exp.TsOrDiToDi: lambda self, e: f"CAST(SUBSTR(REPLACE(CAST({self.sql(e, 'this')} AS VARCHAR), '-', ''), 1, 8) AS INT)",
      -302            exp.TsOrDsAdd: _ts_or_ds_add_sql,
      -303            exp.TsOrDsToDate: _ts_or_ds_to_date_sql,
      -304            exp.Unhex: rename_func("FROM_HEX"),
      -305            exp.UnixToStr: lambda self, e: f"DATE_FORMAT(FROM_UNIXTIME({self.sql(e, 'this')}), {self.format_time(e)})",
      -306            exp.UnixToTime: rename_func("FROM_UNIXTIME"),
      -307            exp.UnixToTimeStr: lambda self, e: f"CAST(FROM_UNIXTIME({self.sql(e, 'this')}) AS VARCHAR)",
      -308            exp.VariancePop: rename_func("VAR_POP"),
      -309        }
      -310
      -311        def transaction_sql(self, expression):
      -312            modes = expression.args.get("modes")
      -313            modes = f" {', '.join(modes)}" if modes else ""
      -314            return f"START TRANSACTION{modes}"
      +214            "DATE_DIFF": lambda args: exp.DateDiff(
      +215                this=seq_get(args, 2),
      +216                expression=seq_get(args, 1),
      +217                unit=seq_get(args, 0),
      +218            ),
      +219            "DATE_FORMAT": format_time_lambda(exp.TimeToStr, "presto"),
      +220            "DATE_PARSE": format_time_lambda(exp.StrToTime, "presto"),
      +221            "DATE_TRUNC": date_trunc_to_time,
      +222            "FROM_UNIXTIME": _from_unixtime,
      +223            "NOW": exp.CurrentTimestamp.from_arg_list,
      +224            "STRPOS": lambda args: exp.StrPosition(
      +225                this=seq_get(args, 0),
      +226                substr=seq_get(args, 1),
      +227                instance=seq_get(args, 2),
      +228            ),
      +229            "TO_UNIXTIME": exp.TimeToUnix.from_arg_list,
      +230            "APPROX_PERCENTILE": _approx_percentile,
      +231            "FROM_HEX": exp.Unhex.from_arg_list,
      +232            "TO_HEX": exp.Hex.from_arg_list,
      +233            "TO_UTF8": lambda args: exp.Encode(
      +234                this=seq_get(args, 0), charset=exp.Literal.string("utf-8")
      +235            ),
      +236            "FROM_UTF8": lambda args: exp.Decode(
      +237                this=seq_get(args, 0), replace=seq_get(args, 1), charset=exp.Literal.string("utf-8")
      +238            ),
      +239        }
      +240        FUNCTION_PARSERS = parser.Parser.FUNCTION_PARSERS.copy()
      +241        FUNCTION_PARSERS.pop("TRIM")
      +242
      +243    class Generator(generator.Generator):
      +244        INTERVAL_ALLOWS_PLURAL_FORM = False
      +245        JOIN_HINTS = False
      +246        TABLE_HINTS = False
      +247        STRUCT_DELIMITER = ("(", ")")
      +248
      +249        PROPERTIES_LOCATION = {
      +250            **generator.Generator.PROPERTIES_LOCATION,  # type: ignore
      +251            exp.LocationProperty: exp.Properties.Location.UNSUPPORTED,
      +252            exp.VolatileProperty: exp.Properties.Location.UNSUPPORTED,
      +253        }
      +254
      +255        TYPE_MAPPING = {
      +256            **generator.Generator.TYPE_MAPPING,  # type: ignore
      +257            exp.DataType.Type.INT: "INTEGER",
      +258            exp.DataType.Type.FLOAT: "REAL",
      +259            exp.DataType.Type.BINARY: "VARBINARY",
      +260            exp.DataType.Type.TEXT: "VARCHAR",
      +261            exp.DataType.Type.TIMESTAMPTZ: "TIMESTAMP",
      +262            exp.DataType.Type.STRUCT: "ROW",
      +263        }
      +264
      +265        TRANSFORMS = {
      +266            **generator.Generator.TRANSFORMS,  # type: ignore
      +267            **transforms.UNALIAS_GROUP,  # type: ignore
      +268            exp.ApproxDistinct: _approx_distinct_sql,
      +269            exp.Array: lambda self, e: f"ARRAY[{self.expressions(e, flat=True)}]",
      +270            exp.ArrayConcat: rename_func("CONCAT"),
      +271            exp.ArrayContains: rename_func("CONTAINS"),
      +272            exp.ArraySize: rename_func("CARDINALITY"),
      +273            exp.BitwiseAnd: lambda self, e: f"BITWISE_AND({self.sql(e, 'this')}, {self.sql(e, 'expression')})",
      +274            exp.BitwiseLeftShift: lambda self, e: f"BITWISE_ARITHMETIC_SHIFT_LEFT({self.sql(e, 'this')}, {self.sql(e, 'expression')})",
      +275            exp.BitwiseNot: lambda self, e: f"BITWISE_NOT({self.sql(e, 'this')})",
      +276            exp.BitwiseOr: lambda self, e: f"BITWISE_OR({self.sql(e, 'this')}, {self.sql(e, 'expression')})",
      +277            exp.BitwiseRightShift: lambda self, e: f"BITWISE_ARITHMETIC_SHIFT_RIGHT({self.sql(e, 'this')}, {self.sql(e, 'expression')})",
      +278            exp.BitwiseXor: lambda self, e: f"BITWISE_XOR({self.sql(e, 'this')}, {self.sql(e, 'expression')})",
      +279            exp.CurrentTimestamp: lambda *_: "CURRENT_TIMESTAMP",
      +280            exp.DataType: _datatype_sql,
      +281            exp.DateAdd: lambda self, e: self.func(
      +282                "DATE_ADD", exp.Literal.string(e.text("unit") or "day"), e.expression, e.this
      +283            ),
      +284            exp.DateDiff: lambda self, e: self.func(
      +285                "DATE_DIFF", exp.Literal.string(e.text("unit") or "day"), e.expression, e.this
      +286            ),
      +287            exp.DateStrToDate: lambda self, e: f"CAST(DATE_PARSE({self.sql(e, 'this')}, {Presto.date_format}) AS DATE)",
      +288            exp.DateToDi: lambda self, e: f"CAST(DATE_FORMAT({self.sql(e, 'this')}, {Presto.dateint_format}) AS INT)",
      +289            exp.Decode: _decode_sql,
      +290            exp.DiToDate: lambda self, e: f"CAST(DATE_PARSE(CAST({self.sql(e, 'this')} AS VARCHAR), {Presto.dateint_format}) AS DATE)",
      +291            exp.Encode: _encode_sql,
      +292            exp.GenerateSeries: _sequence_sql,
      +293            exp.Hex: rename_func("TO_HEX"),
      +294            exp.If: if_sql,
      +295            exp.ILike: no_ilike_sql,
      +296            exp.Initcap: _initcap_sql,
      +297            exp.Lateral: _explode_to_unnest_sql,
      +298            exp.Levenshtein: rename_func("LEVENSHTEIN_DISTANCE"),
      +299            exp.LogicalOr: rename_func("BOOL_OR"),
      +300            exp.LogicalAnd: rename_func("BOOL_AND"),
      +301            exp.Quantile: _quantile_sql,
      +302            exp.ApproxQuantile: rename_func("APPROX_PERCENTILE"),
      +303            exp.SafeDivide: no_safe_divide_sql,
      +304            exp.Schema: _schema_sql,
      +305            exp.Select: transforms.preprocess(
      +306                [transforms.eliminate_qualify, transforms.explode_to_unnest]
      +307            ),
      +308            exp.SortArray: _no_sort_array,
      +309            exp.StrPosition: rename_func("STRPOS"),
      +310            exp.StrToDate: lambda self, e: f"CAST({_str_to_time_sql(self, e)} AS DATE)",
      +311            exp.StrToTime: _str_to_time_sql,
      +312            exp.StrToUnix: lambda self, e: f"TO_UNIXTIME(DATE_PARSE({self.sql(e, 'this')}, {self.format_time(e)}))",
      +313            exp.StructExtract: struct_extract_sql,
      +314            exp.TableFormatProperty: lambda self, e: f"TABLE_FORMAT='{e.name.upper()}'",
      +315            exp.FileFormatProperty: lambda self, e: f"FORMAT='{e.name.upper()}'",
      +316            exp.TimestampTrunc: timestamptrunc_sql,
      +317            exp.TimeStrToDate: timestrtotime_sql,
      +318            exp.TimeStrToTime: timestrtotime_sql,
      +319            exp.TimeStrToUnix: lambda self, e: f"TO_UNIXTIME(DATE_PARSE({self.sql(e, 'this')}, {Presto.time_format}))",
      +320            exp.TimeToStr: lambda self, e: f"DATE_FORMAT({self.sql(e, 'this')}, {self.format_time(e)})",
      +321            exp.TimeToUnix: rename_func("TO_UNIXTIME"),
      +322            exp.TsOrDiToDi: lambda self, e: f"CAST(SUBSTR(REPLACE(CAST({self.sql(e, 'this')} AS VARCHAR), '-', ''), 1, 8) AS INT)",
      +323            exp.TsOrDsAdd: _ts_or_ds_add_sql,
      +324            exp.TsOrDsToDate: _ts_or_ds_to_date_sql,
      +325            exp.Unhex: rename_func("FROM_HEX"),
      +326            exp.UnixToStr: lambda self, e: f"DATE_FORMAT(FROM_UNIXTIME({self.sql(e, 'this')}), {self.format_time(e)})",
      +327            exp.UnixToTime: rename_func("FROM_UNIXTIME"),
      +328            exp.UnixToTimeStr: lambda self, e: f"CAST(FROM_UNIXTIME({self.sql(e, 'this')}) AS VARCHAR)",
      +329            exp.VariancePop: rename_func("VAR_POP"),
      +330        }
      +331
      +332        def interval_sql(self, expression: exp.Interval) -> str:
      +333            unit = self.sql(expression, "unit")
      +334            if expression.this and unit.lower().startswith("week"):
      +335                return f"({expression.this.name} * INTERVAL '7' day)"
      +336            return super().interval_sql(expression)
      +337
      +338        def transaction_sql(self, expression: exp.Transaction) -> str:
      +339            modes = expression.args.get("modes")
      +340            modes = f" {', '.join(modes)}" if modes else ""
      +341            return f"START TRANSACTION{modes}"
       
      @@ -409,146 +439,158 @@
  • -
    176class Presto(Dialect):
    -177    index_offset = 1
    -178    null_ordering = "nulls_are_last"
    -179    time_format = MySQL.time_format  # type: ignore
    -180    time_mapping = MySQL.time_mapping  # type: ignore
    -181
    -182    class Tokenizer(tokens.Tokenizer):
    -183        KEYWORDS = {
    -184            **tokens.Tokenizer.KEYWORDS,
    -185            "START": TokenType.BEGIN,
    -186            "ROW": TokenType.STRUCT,
    -187        }
    -188
    -189    class Parser(parser.Parser):
    -190        FUNCTIONS = {
    -191            **parser.Parser.FUNCTIONS,  # type: ignore
    -192            "APPROX_DISTINCT": exp.ApproxDistinct.from_arg_list,
    -193            "CARDINALITY": exp.ArraySize.from_arg_list,
    -194            "CONTAINS": exp.ArrayContains.from_arg_list,
    -195            "DATE_ADD": lambda args: exp.DateAdd(
    -196                this=seq_get(args, 2),
    -197                expression=seq_get(args, 1),
    -198                unit=seq_get(args, 0),
    -199            ),
    -200            "DATE_DIFF": lambda args: exp.DateDiff(
    -201                this=seq_get(args, 2),
    -202                expression=seq_get(args, 1),
    -203                unit=seq_get(args, 0),
    -204            ),
    -205            "DATE_FORMAT": format_time_lambda(exp.TimeToStr, "presto"),
    -206            "DATE_PARSE": format_time_lambda(exp.StrToTime, "presto"),
    -207            "DATE_TRUNC": date_trunc_to_time,
    -208            "FROM_UNIXTIME": _from_unixtime,
    -209            "NOW": exp.CurrentTimestamp.from_arg_list,
    -210            "STRPOS": lambda args: exp.StrPosition(
    -211                this=seq_get(args, 0),
    -212                substr=seq_get(args, 1),
    -213                instance=seq_get(args, 2),
    +            
    191class Presto(Dialect):
    +192    index_offset = 1
    +193    null_ordering = "nulls_are_last"
    +194    time_format = MySQL.time_format  # type: ignore
    +195    time_mapping = MySQL.time_mapping  # type: ignore
    +196
    +197    class Tokenizer(tokens.Tokenizer):
    +198        KEYWORDS = {
    +199            **tokens.Tokenizer.KEYWORDS,
    +200            "START": TokenType.BEGIN,
    +201            "ROW": TokenType.STRUCT,
    +202        }
    +203
    +204    class Parser(parser.Parser):
    +205        FUNCTIONS = {
    +206            **parser.Parser.FUNCTIONS,  # type: ignore
    +207            "APPROX_DISTINCT": exp.ApproxDistinct.from_arg_list,
    +208            "CARDINALITY": exp.ArraySize.from_arg_list,
    +209            "CONTAINS": exp.ArrayContains.from_arg_list,
    +210            "DATE_ADD": lambda args: exp.DateAdd(
    +211                this=seq_get(args, 2),
    +212                expression=seq_get(args, 1),
    +213                unit=seq_get(args, 0),
     214            ),
    -215            "TO_UNIXTIME": exp.TimeToUnix.from_arg_list,
    -216            "APPROX_PERCENTILE": _approx_percentile,
    -217            "FROM_HEX": exp.Unhex.from_arg_list,
    -218            "TO_HEX": exp.Hex.from_arg_list,
    -219            "TO_UTF8": lambda args: exp.Encode(
    -220                this=seq_get(args, 0), charset=exp.Literal.string("utf-8")
    -221            ),
    -222            "FROM_UTF8": lambda args: exp.Decode(
    -223                this=seq_get(args, 0), replace=seq_get(args, 1), charset=exp.Literal.string("utf-8")
    -224            ),
    -225        }
    -226        FUNCTION_PARSERS = parser.Parser.FUNCTION_PARSERS.copy()
    -227        FUNCTION_PARSERS.pop("TRIM")
    -228
    -229    class Generator(generator.Generator):
    -230        STRUCT_DELIMITER = ("(", ")")
    -231
    -232        PROPERTIES_LOCATION = {
    -233            **generator.Generator.PROPERTIES_LOCATION,  # type: ignore
    -234            exp.LocationProperty: exp.Properties.Location.UNSUPPORTED,
    -235        }
    -236
    -237        TYPE_MAPPING = {
    -238            **generator.Generator.TYPE_MAPPING,  # type: ignore
    -239            exp.DataType.Type.INT: "INTEGER",
    -240            exp.DataType.Type.FLOAT: "REAL",
    -241            exp.DataType.Type.BINARY: "VARBINARY",
    -242            exp.DataType.Type.TEXT: "VARCHAR",
    -243            exp.DataType.Type.TIMESTAMPTZ: "TIMESTAMP",
    -244            exp.DataType.Type.STRUCT: "ROW",
    -245        }
    -246
    -247        TRANSFORMS = {
    -248            **generator.Generator.TRANSFORMS,  # type: ignore
    -249            **transforms.UNALIAS_GROUP,  # type: ignore
    -250            **transforms.ELIMINATE_QUALIFY,  # type: ignore
    -251            exp.ApproxDistinct: _approx_distinct_sql,
    -252            exp.Array: lambda self, e: f"ARRAY[{self.expressions(e, flat=True)}]",
    -253            exp.ArrayConcat: rename_func("CONCAT"),
    -254            exp.ArrayContains: rename_func("CONTAINS"),
    -255            exp.ArraySize: rename_func("CARDINALITY"),
    -256            exp.BitwiseAnd: lambda self, e: f"BITWISE_AND({self.sql(e, 'this')}, {self.sql(e, 'expression')})",
    -257            exp.BitwiseLeftShift: lambda self, e: f"BITWISE_ARITHMETIC_SHIFT_LEFT({self.sql(e, 'this')}, {self.sql(e, 'expression')})",
    -258            exp.BitwiseNot: lambda self, e: f"BITWISE_NOT({self.sql(e, 'this')})",
    -259            exp.BitwiseOr: lambda self, e: f"BITWISE_OR({self.sql(e, 'this')}, {self.sql(e, 'expression')})",
    -260            exp.BitwiseRightShift: lambda self, e: f"BITWISE_ARITHMETIC_SHIFT_RIGHT({self.sql(e, 'this')}, {self.sql(e, 'expression')})",
    -261            exp.BitwiseXor: lambda self, e: f"BITWISE_XOR({self.sql(e, 'this')}, {self.sql(e, 'expression')})",
    -262            exp.CurrentTimestamp: lambda *_: "CURRENT_TIMESTAMP",
    -263            exp.DataType: _datatype_sql,
    -264            exp.DateAdd: lambda self, e: self.func(
    -265                "DATE_ADD", exp.Literal.string(e.text("unit") or "day"), e.expression, e.this
    -266            ),
    -267            exp.DateDiff: lambda self, e: self.func(
    -268                "DATE_DIFF", exp.Literal.string(e.text("unit") or "day"), e.expression, e.this
    -269            ),
    -270            exp.DateStrToDate: lambda self, e: f"CAST(DATE_PARSE({self.sql(e, 'this')}, {Presto.date_format}) AS DATE)",
    -271            exp.DateToDi: lambda self, e: f"CAST(DATE_FORMAT({self.sql(e, 'this')}, {Presto.dateint_format}) AS INT)",
    -272            exp.Decode: _decode_sql,
    -273            exp.DiToDate: lambda self, e: f"CAST(DATE_PARSE(CAST({self.sql(e, 'this')} AS VARCHAR), {Presto.dateint_format}) AS DATE)",
    -274            exp.Encode: _encode_sql,
    -275            exp.GenerateSeries: _sequence_sql,
    -276            exp.Hex: rename_func("TO_HEX"),
    -277            exp.If: if_sql,
    -278            exp.ILike: no_ilike_sql,
    -279            exp.Initcap: _initcap_sql,
    -280            exp.Lateral: _explode_to_unnest_sql,
    -281            exp.Levenshtein: rename_func("LEVENSHTEIN_DISTANCE"),
    -282            exp.LogicalOr: rename_func("BOOL_OR"),
    -283            exp.LogicalAnd: rename_func("BOOL_AND"),
    -284            exp.Quantile: _quantile_sql,
    -285            exp.ApproxQuantile: rename_func("APPROX_PERCENTILE"),
    -286            exp.SafeDivide: no_safe_divide_sql,
    -287            exp.Schema: _schema_sql,
    -288            exp.SortArray: _no_sort_array,
    -289            exp.StrPosition: rename_func("STRPOS"),
    -290            exp.StrToDate: lambda self, e: f"CAST({_str_to_time_sql(self, e)} AS DATE)",
    -291            exp.StrToTime: _str_to_time_sql,
    -292            exp.StrToUnix: lambda self, e: f"TO_UNIXTIME(DATE_PARSE({self.sql(e, 'this')}, {self.format_time(e)}))",
    -293            exp.StructExtract: struct_extract_sql,
    -294            exp.TableFormatProperty: lambda self, e: f"TABLE_FORMAT='{e.name.upper()}'",
    -295            exp.FileFormatProperty: lambda self, e: f"FORMAT='{e.name.upper()}'",
    -296            exp.TimestampTrunc: timestamptrunc_sql,
    -297            exp.TimeStrToDate: timestrtotime_sql,
    -298            exp.TimeStrToTime: timestrtotime_sql,
    -299            exp.TimeStrToUnix: lambda self, e: f"TO_UNIXTIME(DATE_PARSE({self.sql(e, 'this')}, {Presto.time_format}))",
    -300            exp.TimeToStr: lambda self, e: f"DATE_FORMAT({self.sql(e, 'this')}, {self.format_time(e)})",
    -301            exp.TimeToUnix: rename_func("TO_UNIXTIME"),
    -302            exp.TsOrDiToDi: lambda self, e: f"CAST(SUBSTR(REPLACE(CAST({self.sql(e, 'this')} AS VARCHAR), '-', ''), 1, 8) AS INT)",
    -303            exp.TsOrDsAdd: _ts_or_ds_add_sql,
    -304            exp.TsOrDsToDate: _ts_or_ds_to_date_sql,
    -305            exp.Unhex: rename_func("FROM_HEX"),
    -306            exp.UnixToStr: lambda self, e: f"DATE_FORMAT(FROM_UNIXTIME({self.sql(e, 'this')}), {self.format_time(e)})",
    -307            exp.UnixToTime: rename_func("FROM_UNIXTIME"),
    -308            exp.UnixToTimeStr: lambda self, e: f"CAST(FROM_UNIXTIME({self.sql(e, 'this')}) AS VARCHAR)",
    -309            exp.VariancePop: rename_func("VAR_POP"),
    -310        }
    -311
    -312        def transaction_sql(self, expression):
    -313            modes = expression.args.get("modes")
    -314            modes = f" {', '.join(modes)}" if modes else ""
    -315            return f"START TRANSACTION{modes}"
    +215            "DATE_DIFF": lambda args: exp.DateDiff(
    +216                this=seq_get(args, 2),
    +217                expression=seq_get(args, 1),
    +218                unit=seq_get(args, 0),
    +219            ),
    +220            "DATE_FORMAT": format_time_lambda(exp.TimeToStr, "presto"),
    +221            "DATE_PARSE": format_time_lambda(exp.StrToTime, "presto"),
    +222            "DATE_TRUNC": date_trunc_to_time,
    +223            "FROM_UNIXTIME": _from_unixtime,
    +224            "NOW": exp.CurrentTimestamp.from_arg_list,
    +225            "STRPOS": lambda args: exp.StrPosition(
    +226                this=seq_get(args, 0),
    +227                substr=seq_get(args, 1),
    +228                instance=seq_get(args, 2),
    +229            ),
    +230            "TO_UNIXTIME": exp.TimeToUnix.from_arg_list,
    +231            "APPROX_PERCENTILE": _approx_percentile,
    +232            "FROM_HEX": exp.Unhex.from_arg_list,
    +233            "TO_HEX": exp.Hex.from_arg_list,
    +234            "TO_UTF8": lambda args: exp.Encode(
    +235                this=seq_get(args, 0), charset=exp.Literal.string("utf-8")
    +236            ),
    +237            "FROM_UTF8": lambda args: exp.Decode(
    +238                this=seq_get(args, 0), replace=seq_get(args, 1), charset=exp.Literal.string("utf-8")
    +239            ),
    +240        }
    +241        FUNCTION_PARSERS = parser.Parser.FUNCTION_PARSERS.copy()
    +242        FUNCTION_PARSERS.pop("TRIM")
    +243
    +244    class Generator(generator.Generator):
    +245        INTERVAL_ALLOWS_PLURAL_FORM = False
    +246        JOIN_HINTS = False
    +247        TABLE_HINTS = False
    +248        STRUCT_DELIMITER = ("(", ")")
    +249
    +250        PROPERTIES_LOCATION = {
    +251            **generator.Generator.PROPERTIES_LOCATION,  # type: ignore
    +252            exp.LocationProperty: exp.Properties.Location.UNSUPPORTED,
    +253            exp.VolatileProperty: exp.Properties.Location.UNSUPPORTED,
    +254        }
    +255
    +256        TYPE_MAPPING = {
    +257            **generator.Generator.TYPE_MAPPING,  # type: ignore
    +258            exp.DataType.Type.INT: "INTEGER",
    +259            exp.DataType.Type.FLOAT: "REAL",
    +260            exp.DataType.Type.BINARY: "VARBINARY",
    +261            exp.DataType.Type.TEXT: "VARCHAR",
    +262            exp.DataType.Type.TIMESTAMPTZ: "TIMESTAMP",
    +263            exp.DataType.Type.STRUCT: "ROW",
    +264        }
    +265
    +266        TRANSFORMS = {
    +267            **generator.Generator.TRANSFORMS,  # type: ignore
    +268            **transforms.UNALIAS_GROUP,  # type: ignore
    +269            exp.ApproxDistinct: _approx_distinct_sql,
    +270            exp.Array: lambda self, e: f"ARRAY[{self.expressions(e, flat=True)}]",
    +271            exp.ArrayConcat: rename_func("CONCAT"),
    +272            exp.ArrayContains: rename_func("CONTAINS"),
    +273            exp.ArraySize: rename_func("CARDINALITY"),
    +274            exp.BitwiseAnd: lambda self, e: f"BITWISE_AND({self.sql(e, 'this')}, {self.sql(e, 'expression')})",
    +275            exp.BitwiseLeftShift: lambda self, e: f"BITWISE_ARITHMETIC_SHIFT_LEFT({self.sql(e, 'this')}, {self.sql(e, 'expression')})",
    +276            exp.BitwiseNot: lambda self, e: f"BITWISE_NOT({self.sql(e, 'this')})",
    +277            exp.BitwiseOr: lambda self, e: f"BITWISE_OR({self.sql(e, 'this')}, {self.sql(e, 'expression')})",
    +278            exp.BitwiseRightShift: lambda self, e: f"BITWISE_ARITHMETIC_SHIFT_RIGHT({self.sql(e, 'this')}, {self.sql(e, 'expression')})",
    +279            exp.BitwiseXor: lambda self, e: f"BITWISE_XOR({self.sql(e, 'this')}, {self.sql(e, 'expression')})",
    +280            exp.CurrentTimestamp: lambda *_: "CURRENT_TIMESTAMP",
    +281            exp.DataType: _datatype_sql,
    +282            exp.DateAdd: lambda self, e: self.func(
    +283                "DATE_ADD", exp.Literal.string(e.text("unit") or "day"), e.expression, e.this
    +284            ),
    +285            exp.DateDiff: lambda self, e: self.func(
    +286                "DATE_DIFF", exp.Literal.string(e.text("unit") or "day"), e.expression, e.this
    +287            ),
    +288            exp.DateStrToDate: lambda self, e: f"CAST(DATE_PARSE({self.sql(e, 'this')}, {Presto.date_format}) AS DATE)",
    +289            exp.DateToDi: lambda self, e: f"CAST(DATE_FORMAT({self.sql(e, 'this')}, {Presto.dateint_format}) AS INT)",
    +290            exp.Decode: _decode_sql,
    +291            exp.DiToDate: lambda self, e: f"CAST(DATE_PARSE(CAST({self.sql(e, 'this')} AS VARCHAR), {Presto.dateint_format}) AS DATE)",
    +292            exp.Encode: _encode_sql,
    +293            exp.GenerateSeries: _sequence_sql,
    +294            exp.Hex: rename_func("TO_HEX"),
    +295            exp.If: if_sql,
    +296            exp.ILike: no_ilike_sql,
    +297            exp.Initcap: _initcap_sql,
    +298            exp.Lateral: _explode_to_unnest_sql,
    +299            exp.Levenshtein: rename_func("LEVENSHTEIN_DISTANCE"),
    +300            exp.LogicalOr: rename_func("BOOL_OR"),
    +301            exp.LogicalAnd: rename_func("BOOL_AND"),
    +302            exp.Quantile: _quantile_sql,
    +303            exp.ApproxQuantile: rename_func("APPROX_PERCENTILE"),
    +304            exp.SafeDivide: no_safe_divide_sql,
    +305            exp.Schema: _schema_sql,
    +306            exp.Select: transforms.preprocess(
    +307                [transforms.eliminate_qualify, transforms.explode_to_unnest]
    +308            ),
    +309            exp.SortArray: _no_sort_array,
    +310            exp.StrPosition: rename_func("STRPOS"),
    +311            exp.StrToDate: lambda self, e: f"CAST({_str_to_time_sql(self, e)} AS DATE)",
    +312            exp.StrToTime: _str_to_time_sql,
    +313            exp.StrToUnix: lambda self, e: f"TO_UNIXTIME(DATE_PARSE({self.sql(e, 'this')}, {self.format_time(e)}))",
    +314            exp.StructExtract: struct_extract_sql,
    +315            exp.TableFormatProperty: lambda self, e: f"TABLE_FORMAT='{e.name.upper()}'",
    +316            exp.FileFormatProperty: lambda self, e: f"FORMAT='{e.name.upper()}'",
    +317            exp.TimestampTrunc: timestamptrunc_sql,
    +318            exp.TimeStrToDate: timestrtotime_sql,
    +319            exp.TimeStrToTime: timestrtotime_sql,
    +320            exp.TimeStrToUnix: lambda self, e: f"TO_UNIXTIME(DATE_PARSE({self.sql(e, 'this')}, {Presto.time_format}))",
    +321            exp.TimeToStr: lambda self, e: f"DATE_FORMAT({self.sql(e, 'this')}, {self.format_time(e)})",
    +322            exp.TimeToUnix: rename_func("TO_UNIXTIME"),
    +323            exp.TsOrDiToDi: lambda self, e: f"CAST(SUBSTR(REPLACE(CAST({self.sql(e, 'this')} AS VARCHAR), '-', ''), 1, 8) AS INT)",
    +324            exp.TsOrDsAdd: _ts_or_ds_add_sql,
    +325            exp.TsOrDsToDate: _ts_or_ds_to_date_sql,
    +326            exp.Unhex: rename_func("FROM_HEX"),
    +327            exp.UnixToStr: lambda self, e: f"DATE_FORMAT(FROM_UNIXTIME({self.sql(e, 'this')}), {self.format_time(e)})",
    +328            exp.UnixToTime: rename_func("FROM_UNIXTIME"),
    +329            exp.UnixToTimeStr: lambda self, e: f"CAST(FROM_UNIXTIME({self.sql(e, 'this')}) AS VARCHAR)",
    +330            exp.VariancePop: rename_func("VAR_POP"),
    +331        }
    +332
    +333        def interval_sql(self, expression: exp.Interval) -> str:
    +334            unit = self.sql(expression, "unit")
    +335            if expression.this and unit.lower().startswith("week"):
    +336                return f"({expression.this.name} * INTERVAL '7' day)"
    +337            return super().interval_sql(expression)
    +338
    +339        def transaction_sql(self, expression: exp.Transaction) -> str:
    +340            modes = expression.args.get("modes")
    +341            modes = f" {', '.join(modes)}" if modes else ""
    +342            return f"START TRANSACTION{modes}"
     
    @@ -583,12 +625,12 @@
    -
    182    class Tokenizer(tokens.Tokenizer):
    -183        KEYWORDS = {
    -184            **tokens.Tokenizer.KEYWORDS,
    -185            "START": TokenType.BEGIN,
    -186            "ROW": TokenType.STRUCT,
    -187        }
    +            
    197    class Tokenizer(tokens.Tokenizer):
    +198        KEYWORDS = {
    +199            **tokens.Tokenizer.KEYWORDS,
    +200            "START": TokenType.BEGIN,
    +201            "ROW": TokenType.STRUCT,
    +202        }
     
    @@ -616,45 +658,45 @@
    -
    189    class Parser(parser.Parser):
    -190        FUNCTIONS = {
    -191            **parser.Parser.FUNCTIONS,  # type: ignore
    -192            "APPROX_DISTINCT": exp.ApproxDistinct.from_arg_list,
    -193            "CARDINALITY": exp.ArraySize.from_arg_list,
    -194            "CONTAINS": exp.ArrayContains.from_arg_list,
    -195            "DATE_ADD": lambda args: exp.DateAdd(
    -196                this=seq_get(args, 2),
    -197                expression=seq_get(args, 1),
    -198                unit=seq_get(args, 0),
    -199            ),
    -200            "DATE_DIFF": lambda args: exp.DateDiff(
    -201                this=seq_get(args, 2),
    -202                expression=seq_get(args, 1),
    -203                unit=seq_get(args, 0),
    -204            ),
    -205            "DATE_FORMAT": format_time_lambda(exp.TimeToStr, "presto"),
    -206            "DATE_PARSE": format_time_lambda(exp.StrToTime, "presto"),
    -207            "DATE_TRUNC": date_trunc_to_time,
    -208            "FROM_UNIXTIME": _from_unixtime,
    -209            "NOW": exp.CurrentTimestamp.from_arg_list,
    -210            "STRPOS": lambda args: exp.StrPosition(
    -211                this=seq_get(args, 0),
    -212                substr=seq_get(args, 1),
    -213                instance=seq_get(args, 2),
    +            
    204    class Parser(parser.Parser):
    +205        FUNCTIONS = {
    +206            **parser.Parser.FUNCTIONS,  # type: ignore
    +207            "APPROX_DISTINCT": exp.ApproxDistinct.from_arg_list,
    +208            "CARDINALITY": exp.ArraySize.from_arg_list,
    +209            "CONTAINS": exp.ArrayContains.from_arg_list,
    +210            "DATE_ADD": lambda args: exp.DateAdd(
    +211                this=seq_get(args, 2),
    +212                expression=seq_get(args, 1),
    +213                unit=seq_get(args, 0),
     214            ),
    -215            "TO_UNIXTIME": exp.TimeToUnix.from_arg_list,
    -216            "APPROX_PERCENTILE": _approx_percentile,
    -217            "FROM_HEX": exp.Unhex.from_arg_list,
    -218            "TO_HEX": exp.Hex.from_arg_list,
    -219            "TO_UTF8": lambda args: exp.Encode(
    -220                this=seq_get(args, 0), charset=exp.Literal.string("utf-8")
    -221            ),
    -222            "FROM_UTF8": lambda args: exp.Decode(
    -223                this=seq_get(args, 0), replace=seq_get(args, 1), charset=exp.Literal.string("utf-8")
    -224            ),
    -225        }
    -226        FUNCTION_PARSERS = parser.Parser.FUNCTION_PARSERS.copy()
    -227        FUNCTION_PARSERS.pop("TRIM")
    +215            "DATE_DIFF": lambda args: exp.DateDiff(
    +216                this=seq_get(args, 2),
    +217                expression=seq_get(args, 1),
    +218                unit=seq_get(args, 0),
    +219            ),
    +220            "DATE_FORMAT": format_time_lambda(exp.TimeToStr, "presto"),
    +221            "DATE_PARSE": format_time_lambda(exp.StrToTime, "presto"),
    +222            "DATE_TRUNC": date_trunc_to_time,
    +223            "FROM_UNIXTIME": _from_unixtime,
    +224            "NOW": exp.CurrentTimestamp.from_arg_list,
    +225            "STRPOS": lambda args: exp.StrPosition(
    +226                this=seq_get(args, 0),
    +227                substr=seq_get(args, 1),
    +228                instance=seq_get(args, 2),
    +229            ),
    +230            "TO_UNIXTIME": exp.TimeToUnix.from_arg_list,
    +231            "APPROX_PERCENTILE": _approx_percentile,
    +232            "FROM_HEX": exp.Unhex.from_arg_list,
    +233            "TO_HEX": exp.Hex.from_arg_list,
    +234            "TO_UTF8": lambda args: exp.Encode(
    +235                this=seq_get(args, 0), charset=exp.Literal.string("utf-8")
    +236            ),
    +237            "FROM_UTF8": lambda args: exp.Decode(
    +238                this=seq_get(args, 0), replace=seq_get(args, 1), charset=exp.Literal.string("utf-8")
    +239            ),
    +240        }
    +241        FUNCTION_PARSERS = parser.Parser.FUNCTION_PARSERS.copy()
    +242        FUNCTION_PARSERS.pop("TRIM")
     
    @@ -711,93 +753,105 @@ Default: "nulls_are_small"
    -
    229    class Generator(generator.Generator):
    -230        STRUCT_DELIMITER = ("(", ")")
    -231
    -232        PROPERTIES_LOCATION = {
    -233            **generator.Generator.PROPERTIES_LOCATION,  # type: ignore
    -234            exp.LocationProperty: exp.Properties.Location.UNSUPPORTED,
    -235        }
    -236
    -237        TYPE_MAPPING = {
    -238            **generator.Generator.TYPE_MAPPING,  # type: ignore
    -239            exp.DataType.Type.INT: "INTEGER",
    -240            exp.DataType.Type.FLOAT: "REAL",
    -241            exp.DataType.Type.BINARY: "VARBINARY",
    -242            exp.DataType.Type.TEXT: "VARCHAR",
    -243            exp.DataType.Type.TIMESTAMPTZ: "TIMESTAMP",
    -244            exp.DataType.Type.STRUCT: "ROW",
    -245        }
    -246
    -247        TRANSFORMS = {
    -248            **generator.Generator.TRANSFORMS,  # type: ignore
    -249            **transforms.UNALIAS_GROUP,  # type: ignore
    -250            **transforms.ELIMINATE_QUALIFY,  # type: ignore
    -251            exp.ApproxDistinct: _approx_distinct_sql,
    -252            exp.Array: lambda self, e: f"ARRAY[{self.expressions(e, flat=True)}]",
    -253            exp.ArrayConcat: rename_func("CONCAT"),
    -254            exp.ArrayContains: rename_func("CONTAINS"),
    -255            exp.ArraySize: rename_func("CARDINALITY"),
    -256            exp.BitwiseAnd: lambda self, e: f"BITWISE_AND({self.sql(e, 'this')}, {self.sql(e, 'expression')})",
    -257            exp.BitwiseLeftShift: lambda self, e: f"BITWISE_ARITHMETIC_SHIFT_LEFT({self.sql(e, 'this')}, {self.sql(e, 'expression')})",
    -258            exp.BitwiseNot: lambda self, e: f"BITWISE_NOT({self.sql(e, 'this')})",
    -259            exp.BitwiseOr: lambda self, e: f"BITWISE_OR({self.sql(e, 'this')}, {self.sql(e, 'expression')})",
    -260            exp.BitwiseRightShift: lambda self, e: f"BITWISE_ARITHMETIC_SHIFT_RIGHT({self.sql(e, 'this')}, {self.sql(e, 'expression')})",
    -261            exp.BitwiseXor: lambda self, e: f"BITWISE_XOR({self.sql(e, 'this')}, {self.sql(e, 'expression')})",
    -262            exp.CurrentTimestamp: lambda *_: "CURRENT_TIMESTAMP",
    -263            exp.DataType: _datatype_sql,
    -264            exp.DateAdd: lambda self, e: self.func(
    -265                "DATE_ADD", exp.Literal.string(e.text("unit") or "day"), e.expression, e.this
    -266            ),
    -267            exp.DateDiff: lambda self, e: self.func(
    -268                "DATE_DIFF", exp.Literal.string(e.text("unit") or "day"), e.expression, e.this
    -269            ),
    -270            exp.DateStrToDate: lambda self, e: f"CAST(DATE_PARSE({self.sql(e, 'this')}, {Presto.date_format}) AS DATE)",
    -271            exp.DateToDi: lambda self, e: f"CAST(DATE_FORMAT({self.sql(e, 'this')}, {Presto.dateint_format}) AS INT)",
    -272            exp.Decode: _decode_sql,
    -273            exp.DiToDate: lambda self, e: f"CAST(DATE_PARSE(CAST({self.sql(e, 'this')} AS VARCHAR), {Presto.dateint_format}) AS DATE)",
    -274            exp.Encode: _encode_sql,
    -275            exp.GenerateSeries: _sequence_sql,
    -276            exp.Hex: rename_func("TO_HEX"),
    -277            exp.If: if_sql,
    -278            exp.ILike: no_ilike_sql,
    -279            exp.Initcap: _initcap_sql,
    -280            exp.Lateral: _explode_to_unnest_sql,
    -281            exp.Levenshtein: rename_func("LEVENSHTEIN_DISTANCE"),
    -282            exp.LogicalOr: rename_func("BOOL_OR"),
    -283            exp.LogicalAnd: rename_func("BOOL_AND"),
    -284            exp.Quantile: _quantile_sql,
    -285            exp.ApproxQuantile: rename_func("APPROX_PERCENTILE"),
    -286            exp.SafeDivide: no_safe_divide_sql,
    -287            exp.Schema: _schema_sql,
    -288            exp.SortArray: _no_sort_array,
    -289            exp.StrPosition: rename_func("STRPOS"),
    -290            exp.StrToDate: lambda self, e: f"CAST({_str_to_time_sql(self, e)} AS DATE)",
    -291            exp.StrToTime: _str_to_time_sql,
    -292            exp.StrToUnix: lambda self, e: f"TO_UNIXTIME(DATE_PARSE({self.sql(e, 'this')}, {self.format_time(e)}))",
    -293            exp.StructExtract: struct_extract_sql,
    -294            exp.TableFormatProperty: lambda self, e: f"TABLE_FORMAT='{e.name.upper()}'",
    -295            exp.FileFormatProperty: lambda self, e: f"FORMAT='{e.name.upper()}'",
    -296            exp.TimestampTrunc: timestamptrunc_sql,
    -297            exp.TimeStrToDate: timestrtotime_sql,
    -298            exp.TimeStrToTime: timestrtotime_sql,
    -299            exp.TimeStrToUnix: lambda self, e: f"TO_UNIXTIME(DATE_PARSE({self.sql(e, 'this')}, {Presto.time_format}))",
    -300            exp.TimeToStr: lambda self, e: f"DATE_FORMAT({self.sql(e, 'this')}, {self.format_time(e)})",
    -301            exp.TimeToUnix: rename_func("TO_UNIXTIME"),
    -302            exp.TsOrDiToDi: lambda self, e: f"CAST(SUBSTR(REPLACE(CAST({self.sql(e, 'this')} AS VARCHAR), '-', ''), 1, 8) AS INT)",
    -303            exp.TsOrDsAdd: _ts_or_ds_add_sql,
    -304            exp.TsOrDsToDate: _ts_or_ds_to_date_sql,
    -305            exp.Unhex: rename_func("FROM_HEX"),
    -306            exp.UnixToStr: lambda self, e: f"DATE_FORMAT(FROM_UNIXTIME({self.sql(e, 'this')}), {self.format_time(e)})",
    -307            exp.UnixToTime: rename_func("FROM_UNIXTIME"),
    -308            exp.UnixToTimeStr: lambda self, e: f"CAST(FROM_UNIXTIME({self.sql(e, 'this')}) AS VARCHAR)",
    -309            exp.VariancePop: rename_func("VAR_POP"),
    -310        }
    -311
    -312        def transaction_sql(self, expression):
    -313            modes = expression.args.get("modes")
    -314            modes = f" {', '.join(modes)}" if modes else ""
    -315            return f"START TRANSACTION{modes}"
    +            
    244    class Generator(generator.Generator):
    +245        INTERVAL_ALLOWS_PLURAL_FORM = False
    +246        JOIN_HINTS = False
    +247        TABLE_HINTS = False
    +248        STRUCT_DELIMITER = ("(", ")")
    +249
    +250        PROPERTIES_LOCATION = {
    +251            **generator.Generator.PROPERTIES_LOCATION,  # type: ignore
    +252            exp.LocationProperty: exp.Properties.Location.UNSUPPORTED,
    +253            exp.VolatileProperty: exp.Properties.Location.UNSUPPORTED,
    +254        }
    +255
    +256        TYPE_MAPPING = {
    +257            **generator.Generator.TYPE_MAPPING,  # type: ignore
    +258            exp.DataType.Type.INT: "INTEGER",
    +259            exp.DataType.Type.FLOAT: "REAL",
    +260            exp.DataType.Type.BINARY: "VARBINARY",
    +261            exp.DataType.Type.TEXT: "VARCHAR",
    +262            exp.DataType.Type.TIMESTAMPTZ: "TIMESTAMP",
    +263            exp.DataType.Type.STRUCT: "ROW",
    +264        }
    +265
    +266        TRANSFORMS = {
    +267            **generator.Generator.TRANSFORMS,  # type: ignore
    +268            **transforms.UNALIAS_GROUP,  # type: ignore
    +269            exp.ApproxDistinct: _approx_distinct_sql,
    +270            exp.Array: lambda self, e: f"ARRAY[{self.expressions(e, flat=True)}]",
    +271            exp.ArrayConcat: rename_func("CONCAT"),
    +272            exp.ArrayContains: rename_func("CONTAINS"),
    +273            exp.ArraySize: rename_func("CARDINALITY"),
    +274            exp.BitwiseAnd: lambda self, e: f"BITWISE_AND({self.sql(e, 'this')}, {self.sql(e, 'expression')})",
    +275            exp.BitwiseLeftShift: lambda self, e: f"BITWISE_ARITHMETIC_SHIFT_LEFT({self.sql(e, 'this')}, {self.sql(e, 'expression')})",
    +276            exp.BitwiseNot: lambda self, e: f"BITWISE_NOT({self.sql(e, 'this')})",
    +277            exp.BitwiseOr: lambda self, e: f"BITWISE_OR({self.sql(e, 'this')}, {self.sql(e, 'expression')})",
    +278            exp.BitwiseRightShift: lambda self, e: f"BITWISE_ARITHMETIC_SHIFT_RIGHT({self.sql(e, 'this')}, {self.sql(e, 'expression')})",
    +279            exp.BitwiseXor: lambda self, e: f"BITWISE_XOR({self.sql(e, 'this')}, {self.sql(e, 'expression')})",
    +280            exp.CurrentTimestamp: lambda *_: "CURRENT_TIMESTAMP",
    +281            exp.DataType: _datatype_sql,
    +282            exp.DateAdd: lambda self, e: self.func(
    +283                "DATE_ADD", exp.Literal.string(e.text("unit") or "day"), e.expression, e.this
    +284            ),
    +285            exp.DateDiff: lambda self, e: self.func(
    +286                "DATE_DIFF", exp.Literal.string(e.text("unit") or "day"), e.expression, e.this
    +287            ),
    +288            exp.DateStrToDate: lambda self, e: f"CAST(DATE_PARSE({self.sql(e, 'this')}, {Presto.date_format}) AS DATE)",
    +289            exp.DateToDi: lambda self, e: f"CAST(DATE_FORMAT({self.sql(e, 'this')}, {Presto.dateint_format}) AS INT)",
    +290            exp.Decode: _decode_sql,
    +291            exp.DiToDate: lambda self, e: f"CAST(DATE_PARSE(CAST({self.sql(e, 'this')} AS VARCHAR), {Presto.dateint_format}) AS DATE)",
    +292            exp.Encode: _encode_sql,
    +293            exp.GenerateSeries: _sequence_sql,
    +294            exp.Hex: rename_func("TO_HEX"),
    +295            exp.If: if_sql,
    +296            exp.ILike: no_ilike_sql,
    +297            exp.Initcap: _initcap_sql,
    +298            exp.Lateral: _explode_to_unnest_sql,
    +299            exp.Levenshtein: rename_func("LEVENSHTEIN_DISTANCE"),
    +300            exp.LogicalOr: rename_func("BOOL_OR"),
    +301            exp.LogicalAnd: rename_func("BOOL_AND"),
    +302            exp.Quantile: _quantile_sql,
    +303            exp.ApproxQuantile: rename_func("APPROX_PERCENTILE"),
    +304            exp.SafeDivide: no_safe_divide_sql,
    +305            exp.Schema: _schema_sql,
    +306            exp.Select: transforms.preprocess(
    +307                [transforms.eliminate_qualify, transforms.explode_to_unnest]
    +308            ),
    +309            exp.SortArray: _no_sort_array,
    +310            exp.StrPosition: rename_func("STRPOS"),
    +311            exp.StrToDate: lambda self, e: f"CAST({_str_to_time_sql(self, e)} AS DATE)",
    +312            exp.StrToTime: _str_to_time_sql,
    +313            exp.StrToUnix: lambda self, e: f"TO_UNIXTIME(DATE_PARSE({self.sql(e, 'this')}, {self.format_time(e)}))",
    +314            exp.StructExtract: struct_extract_sql,
    +315            exp.TableFormatProperty: lambda self, e: f"TABLE_FORMAT='{e.name.upper()}'",
    +316            exp.FileFormatProperty: lambda self, e: f"FORMAT='{e.name.upper()}'",
    +317            exp.TimestampTrunc: timestamptrunc_sql,
    +318            exp.TimeStrToDate: timestrtotime_sql,
    +319            exp.TimeStrToTime: timestrtotime_sql,
    +320            exp.TimeStrToUnix: lambda self, e: f"TO_UNIXTIME(DATE_PARSE({self.sql(e, 'this')}, {Presto.time_format}))",
    +321            exp.TimeToStr: lambda self, e: f"DATE_FORMAT({self.sql(e, 'this')}, {self.format_time(e)})",
    +322            exp.TimeToUnix: rename_func("TO_UNIXTIME"),
    +323            exp.TsOrDiToDi: lambda self, e: f"CAST(SUBSTR(REPLACE(CAST({self.sql(e, 'this')} AS VARCHAR), '-', ''), 1, 8) AS INT)",
    +324            exp.TsOrDsAdd: _ts_or_ds_add_sql,
    +325            exp.TsOrDsToDate: _ts_or_ds_to_date_sql,
    +326            exp.Unhex: rename_func("FROM_HEX"),
    +327            exp.UnixToStr: lambda self, e: f"DATE_FORMAT(FROM_UNIXTIME({self.sql(e, 'this')}), {self.format_time(e)})",
    +328            exp.UnixToTime: rename_func("FROM_UNIXTIME"),
    +329            exp.UnixToTimeStr: lambda self, e: f"CAST(FROM_UNIXTIME({self.sql(e, 'this')}) AS VARCHAR)",
    +330            exp.VariancePop: rename_func("VAR_POP"),
    +331        }
    +332
    +333        def interval_sql(self, expression: exp.Interval) -> str:
    +334            unit = self.sql(expression, "unit")
    +335            if expression.this and unit.lower().startswith("week"):
    +336                return f"({expression.this.name} * INTERVAL '7' day)"
    +337            return super().interval_sql(expression)
    +338
    +339        def transaction_sql(self, expression: exp.Transaction) -> str:
    +340            modes = expression.args.get("modes")
    +341            modes = f" {', '.join(modes)}" if modes else ""
    +342            return f"START TRANSACTION{modes}"
     
    @@ -845,21 +899,43 @@ Default: True
    +
    + +
    + + def + interval_sql(self, expression: sqlglot.expressions.Interval) -> str: + + + +
    + +
    333        def interval_sql(self, expression: exp.Interval) -> str:
    +334            unit = self.sql(expression, "unit")
    +335            if expression.this and unit.lower().startswith("week"):
    +336                return f"({expression.this.name} * INTERVAL '7' day)"
    +337            return super().interval_sql(expression)
    +
    + + + + +
    def - transaction_sql(self, expression): + transaction_sql(self, expression: sqlglot.expressions.Transaction) -> str:
    -
    312        def transaction_sql(self, expression):
    -313            modes = expression.args.get("modes")
    -314            modes = f" {', '.join(modes)}" if modes else ""
    -315            return f"START TRANSACTION{modes}"
    +            
    339        def transaction_sql(self, expression: exp.Transaction) -> str:
    +340            modes = expression.args.get("modes")
    +341            modes = f" {', '.join(modes)}" if modes else ""
    +342            return f"START TRANSACTION{modes}"
     
    @@ -903,6 +979,7 @@ Default: True
    tablealias_sql
    bitstring_sql
    hexstring_sql
    +
    bytestring_sql
    datatype_sql
    directory_sql
    delete_sql
    @@ -914,6 +991,7 @@ Default: True
    hint_sql
    index_sql
    identifier_sql
    +
    inputoutputformat_sql
    national_sql
    partition_sql
    properties_sql
    @@ -939,6 +1017,7 @@ Default: True
    intersect_op
    introducer_sql
    pseudotype_sql
    +
    onconflict_sql
    returning_sql
    rowformatdelimitedproperty_sql
    table_sql
    @@ -1009,7 +1088,6 @@ Default: True
    jsonobject_sql
    in_sql
    in_unnest_op
    -
    interval_sql
    return_sql
    reference_sql
    anonymous_sql
    diff --git a/docs/sqlglot/dialects/redshift.html b/docs/sqlglot/dialects/redshift.html index 6c2abad..825d63c 100644 --- a/docs/sqlglot/dialects/redshift.html +++ b/docs/sqlglot/dialects/redshift.html @@ -3,7 +3,7 @@ - + sqlglot.dialects.redshift API documentation @@ -99,144 +99,161 @@
    8from sqlglot.tokens import TokenType 9 10 - 11class Redshift(Postgres): - 12 time_format = "'YYYY-MM-DD HH:MI:SS'" - 13 time_mapping = { - 14 **Postgres.time_mapping, # type: ignore - 15 "MON": "%b", - 16 "HH": "%H", - 17 } - 18 - 19 class Parser(Postgres.Parser): - 20 FUNCTIONS = { - 21 **Postgres.Parser.FUNCTIONS, # type: ignore - 22 "DATEADD": lambda args: exp.DateAdd( - 23 this=seq_get(args, 2), - 24 expression=seq_get(args, 1), - 25 unit=seq_get(args, 0), - 26 ), - 27 "DATEDIFF": lambda args: exp.DateDiff( - 28 this=seq_get(args, 2), - 29 expression=seq_get(args, 1), - 30 unit=seq_get(args, 0), - 31 ), - 32 "NVL": exp.Coalesce.from_arg_list, - 33 } - 34 - 35 CONVERT_TYPE_FIRST = True - 36 - 37 def _parse_types(self, check_func: bool = False) -> t.Optional[exp.Expression]: - 38 this = super()._parse_types(check_func=check_func) - 39 - 40 if ( - 41 isinstance(this, exp.DataType) - 42 and this.this == exp.DataType.Type.VARCHAR - 43 and this.expressions - 44 and this.expressions[0] == exp.column("MAX") - 45 ): - 46 this.set("expressions", [exp.Var(this="MAX")]) - 47 - 48 return this - 49 - 50 class Tokenizer(Postgres.Tokenizer): - 51 STRING_ESCAPES = ["\\"] - 52 - 53 KEYWORDS = { - 54 **Postgres.Tokenizer.KEYWORDS, # type: ignore - 55 "GEOMETRY": TokenType.GEOMETRY, - 56 "GEOGRAPHY": TokenType.GEOGRAPHY, - 57 "HLLSKETCH": TokenType.HLLSKETCH, - 58 "SUPER": TokenType.SUPER, - 59 "TIME": TokenType.TIMESTAMP, - 60 "TIMETZ": TokenType.TIMESTAMPTZ, - 61 "TOP": TokenType.TOP, - 62 "UNLOAD": TokenType.COMMAND, - 63 "VARBYTE": TokenType.VARBINARY, - 64 } - 65 - 66 class Generator(Postgres.Generator): - 67 TYPE_MAPPING = { - 68 **Postgres.Generator.TYPE_MAPPING, # type: ignore - 69 exp.DataType.Type.BINARY: "VARBYTE", - 70 exp.DataType.Type.VARBINARY: "VARBYTE", - 71 exp.DataType.Type.INT: "INTEGER", - 72 } - 73 - 74 PROPERTIES_LOCATION = { - 75 **Postgres.Generator.PROPERTIES_LOCATION, # type: ignore - 76 exp.LikeProperty: exp.Properties.Location.POST_WITH, - 77 } + 11def _json_sql(self, e) -> str: + 12 return f'{self.sql(e, "this")}."{e.expression.name}"' + 13 + 14 + 15class Redshift(Postgres): + 16 time_format = "'YYYY-MM-DD HH:MI:SS'" + 17 time_mapping = { + 18 **Postgres.time_mapping, # type: ignore + 19 "MON": "%b", + 20 "HH": "%H", + 21 } + 22 + 23 class Parser(Postgres.Parser): + 24 FUNCTIONS = { + 25 **Postgres.Parser.FUNCTIONS, # type: ignore + 26 "DATEADD": lambda args: exp.DateAdd( + 27 this=seq_get(args, 2), + 28 expression=seq_get(args, 1), + 29 unit=seq_get(args, 0), + 30 ), + 31 "DATEDIFF": lambda args: exp.DateDiff( + 32 this=seq_get(args, 2), + 33 expression=seq_get(args, 1), + 34 unit=seq_get(args, 0), + 35 ), + 36 "NVL": exp.Coalesce.from_arg_list, + 37 } + 38 + 39 CONVERT_TYPE_FIRST = True + 40 + 41 def _parse_types(self, check_func: bool = False) -> t.Optional[exp.Expression]: + 42 this = super()._parse_types(check_func=check_func) + 43 + 44 if ( + 45 isinstance(this, exp.DataType) + 46 and this.this == exp.DataType.Type.VARCHAR + 47 and this.expressions + 48 and this.expressions[0] == exp.column("MAX") + 49 ): + 50 this.set("expressions", [exp.Var(this="MAX")]) + 51 + 52 return this + 53 + 54 class Tokenizer(Postgres.Tokenizer): + 55 STRING_ESCAPES = ["\\"] + 56 + 57 KEYWORDS = { + 58 **Postgres.Tokenizer.KEYWORDS, # type: ignore + 59 "GEOMETRY": TokenType.GEOMETRY, + 60 "GEOGRAPHY": TokenType.GEOGRAPHY, + 61 "HLLSKETCH": TokenType.HLLSKETCH, + 62 "SUPER": TokenType.SUPER, + 63 "SYSDATE": TokenType.CURRENT_TIMESTAMP, + 64 "TIME": TokenType.TIMESTAMP, + 65 "TIMETZ": TokenType.TIMESTAMPTZ, + 66 "TOP": TokenType.TOP, + 67 "UNLOAD": TokenType.COMMAND, + 68 "VARBYTE": TokenType.VARBINARY, + 69 } + 70 + 71 # Redshift allows # to appear as a table identifier prefix + 72 SINGLE_TOKENS = Postgres.Tokenizer.SINGLE_TOKENS.copy() + 73 SINGLE_TOKENS.pop("#") + 74 + 75 class Generator(Postgres.Generator): + 76 LOCKING_READS_SUPPORTED = False + 77 SINGLE_STRING_INTERVAL = True 78 - 79 TRANSFORMS = { - 80 **Postgres.Generator.TRANSFORMS, # type: ignore - 81 **transforms.ELIMINATE_DISTINCT_ON, # type: ignore - 82 exp.DateAdd: lambda self, e: self.func( - 83 "DATEADD", exp.var(e.text("unit") or "day"), e.expression, e.this - 84 ), - 85 exp.DateDiff: lambda self, e: self.func( - 86 "DATEDIFF", exp.var(e.text("unit") or "day"), e.expression, e.this - 87 ), - 88 exp.DistKeyProperty: lambda self, e: f"DISTKEY({e.name})", - 89 exp.DistStyleProperty: lambda self, e: self.naked_property(e), - 90 exp.SortKeyProperty: lambda self, e: f"{'COMPOUND ' if e.args['compound'] else ''}SORTKEY({self.format_args(*e.this)})", - 91 } - 92 - 93 # Redshift uses the POW | POWER (expr1, expr2) syntax instead of expr1 ^ expr2 (postgres) - 94 TRANSFORMS.pop(exp.Pow) - 95 - 96 def values_sql(self, expression: exp.Values) -> str: - 97 """ - 98 Converts `VALUES...` expression into a series of unions. - 99 -100 Note: If you have a lot of unions then this will result in a large number of recursive statements to -101 evaluate the expression. You may need to increase `sys.setrecursionlimit` to run and it can also be -102 very slow. -103 """ -104 if not isinstance(expression.unnest().parent, exp.From): -105 return super().values_sql(expression) -106 rows = [tuple_exp.expressions for tuple_exp in expression.expressions] -107 selects = [] -108 for i, row in enumerate(rows): -109 if i == 0 and expression.alias: -110 row = [ -111 exp.alias_(value, column_name) -112 for value, column_name in zip(row, expression.args["alias"].args["columns"]) -113 ] -114 selects.append(exp.Select(expressions=row)) -115 subquery_expression = selects[0] -116 if len(selects) > 1: -117 for select in selects[1:]: -118 subquery_expression = exp.union(subquery_expression, select, distinct=False) -119 return self.subquery_sql(subquery_expression.subquery(expression.alias)) -120 -121 def with_properties(self, properties: exp.Properties) -> str: -122 """Redshift doesn't have `WITH` as part of their with_properties so we remove it""" -123 return self.properties(properties, prefix=" ", suffix="") -124 -125 def renametable_sql(self, expression: exp.RenameTable) -> str: -126 """Redshift only supports defining the table name itself (not the db) when renaming tables""" -127 expression = expression.copy() -128 target_table = expression.this -129 for arg in target_table.args: -130 if arg != "this": -131 target_table.set(arg, None) -132 this = self.sql(expression, "this") -133 return f"RENAME TO {this}" -134 -135 def datatype_sql(self, expression: exp.DataType) -> str: -136 """ -137 Redshift converts the `TEXT` data type to `VARCHAR(255)` by default when people more generally mean -138 VARCHAR of max length which is `VARCHAR(max)` in Redshift. Therefore if we get a `TEXT` data type -139 without precision we convert it to `VARCHAR(max)` and if it does have precision then we just convert -140 `TEXT` to `VARCHAR`. -141 """ -142 if expression.this == exp.DataType.Type.TEXT: -143 expression = expression.copy() -144 expression.set("this", exp.DataType.Type.VARCHAR) -145 precision = expression.args.get("expressions") -146 if not precision: -147 expression.append("expressions", exp.Var(this="MAX")) -148 return super().datatype_sql(expression) + 79 TYPE_MAPPING = { + 80 **Postgres.Generator.TYPE_MAPPING, # type: ignore + 81 exp.DataType.Type.BINARY: "VARBYTE", + 82 exp.DataType.Type.VARBINARY: "VARBYTE", + 83 exp.DataType.Type.INT: "INTEGER", + 84 } + 85 + 86 PROPERTIES_LOCATION = { + 87 **Postgres.Generator.PROPERTIES_LOCATION, # type: ignore + 88 exp.LikeProperty: exp.Properties.Location.POST_WITH, + 89 } + 90 + 91 TRANSFORMS = { + 92 **Postgres.Generator.TRANSFORMS, # type: ignore + 93 **transforms.ELIMINATE_DISTINCT_ON, # type: ignore + 94 exp.CurrentTimestamp: lambda self, e: "SYSDATE", + 95 exp.DateAdd: lambda self, e: self.func( + 96 "DATEADD", exp.var(e.text("unit") or "day"), e.expression, e.this + 97 ), + 98 exp.DateDiff: lambda self, e: self.func( + 99 "DATEDIFF", exp.var(e.text("unit") or "day"), e.expression, e.this +100 ), +101 exp.DistKeyProperty: lambda self, e: f"DISTKEY({e.name})", +102 exp.DistStyleProperty: lambda self, e: self.naked_property(e), +103 exp.JSONExtract: _json_sql, +104 exp.JSONExtractScalar: _json_sql, +105 exp.SortKeyProperty: lambda self, e: f"{'COMPOUND ' if e.args['compound'] else ''}SORTKEY({self.format_args(*e.this)})", +106 } +107 +108 # Redshift uses the POW | POWER (expr1, expr2) syntax instead of expr1 ^ expr2 (postgres) +109 TRANSFORMS.pop(exp.Pow) +110 +111 RESERVED_KEYWORDS = {*Postgres.Generator.RESERVED_KEYWORDS, "snapshot"} +112 +113 def values_sql(self, expression: exp.Values) -> str: +114 """ +115 Converts `VALUES...` expression into a series of unions. +116 +117 Note: If you have a lot of unions then this will result in a large number of recursive statements to +118 evaluate the expression. You may need to increase `sys.setrecursionlimit` to run and it can also be +119 very slow. +120 """ +121 if not isinstance(expression.unnest().parent, exp.From): +122 return super().values_sql(expression) +123 rows = [tuple_exp.expressions for tuple_exp in expression.expressions] +124 selects = [] +125 for i, row in enumerate(rows): +126 if i == 0 and expression.alias: +127 row = [ +128 exp.alias_(value, column_name) +129 for value, column_name in zip(row, expression.args["alias"].args["columns"]) +130 ] +131 selects.append(exp.Select(expressions=row)) +132 subquery_expression = selects[0] +133 if len(selects) > 1: +134 for select in selects[1:]: +135 subquery_expression = exp.union(subquery_expression, select, distinct=False) +136 return self.subquery_sql(subquery_expression.subquery(expression.alias)) +137 +138 def with_properties(self, properties: exp.Properties) -> str: +139 """Redshift doesn't have `WITH` as part of their with_properties so we remove it""" +140 return self.properties(properties, prefix=" ", suffix="") +141 +142 def renametable_sql(self, expression: exp.RenameTable) -> str: +143 """Redshift only supports defining the table name itself (not the db) when renaming tables""" +144 expression = expression.copy() +145 target_table = expression.this +146 for arg in target_table.args: +147 if arg != "this": +148 target_table.set(arg, None) +149 this = self.sql(expression, "this") +150 return f"RENAME TO {this}" +151 +152 def datatype_sql(self, expression: exp.DataType) -> str: +153 """ +154 Redshift converts the `TEXT` data type to `VARCHAR(255)` by default when people more generally mean +155 VARCHAR of max length which is `VARCHAR(max)` in Redshift. Therefore if we get a `TEXT` data type +156 without precision we convert it to `VARCHAR(max)` and if it does have precision then we just convert +157 `TEXT` to `VARCHAR`. +158 """ +159 if expression.this == exp.DataType.Type.TEXT: +160 expression = expression.copy() +161 expression.set("this", exp.DataType.Type.VARCHAR) +162 precision = expression.args.get("expressions") +163 if not precision: +164 expression.append("expressions", exp.Var(this="MAX")) +165 return super().datatype_sql(expression)
    @@ -252,144 +269,157 @@
    -
     12class Redshift(Postgres):
    - 13    time_format = "'YYYY-MM-DD HH:MI:SS'"
    - 14    time_mapping = {
    - 15        **Postgres.time_mapping,  # type: ignore
    - 16        "MON": "%b",
    - 17        "HH": "%H",
    - 18    }
    - 19
    - 20    class Parser(Postgres.Parser):
    - 21        FUNCTIONS = {
    - 22            **Postgres.Parser.FUNCTIONS,  # type: ignore
    - 23            "DATEADD": lambda args: exp.DateAdd(
    - 24                this=seq_get(args, 2),
    - 25                expression=seq_get(args, 1),
    - 26                unit=seq_get(args, 0),
    - 27            ),
    - 28            "DATEDIFF": lambda args: exp.DateDiff(
    - 29                this=seq_get(args, 2),
    - 30                expression=seq_get(args, 1),
    - 31                unit=seq_get(args, 0),
    - 32            ),
    - 33            "NVL": exp.Coalesce.from_arg_list,
    - 34        }
    - 35
    - 36        CONVERT_TYPE_FIRST = True
    - 37
    - 38        def _parse_types(self, check_func: bool = False) -> t.Optional[exp.Expression]:
    - 39            this = super()._parse_types(check_func=check_func)
    - 40
    - 41            if (
    - 42                isinstance(this, exp.DataType)
    - 43                and this.this == exp.DataType.Type.VARCHAR
    - 44                and this.expressions
    - 45                and this.expressions[0] == exp.column("MAX")
    - 46            ):
    - 47                this.set("expressions", [exp.Var(this="MAX")])
    - 48
    - 49            return this
    - 50
    - 51    class Tokenizer(Postgres.Tokenizer):
    - 52        STRING_ESCAPES = ["\\"]
    - 53
    - 54        KEYWORDS = {
    - 55            **Postgres.Tokenizer.KEYWORDS,  # type: ignore
    - 56            "GEOMETRY": TokenType.GEOMETRY,
    - 57            "GEOGRAPHY": TokenType.GEOGRAPHY,
    - 58            "HLLSKETCH": TokenType.HLLSKETCH,
    - 59            "SUPER": TokenType.SUPER,
    - 60            "TIME": TokenType.TIMESTAMP,
    - 61            "TIMETZ": TokenType.TIMESTAMPTZ,
    - 62            "TOP": TokenType.TOP,
    - 63            "UNLOAD": TokenType.COMMAND,
    - 64            "VARBYTE": TokenType.VARBINARY,
    - 65        }
    - 66
    - 67    class Generator(Postgres.Generator):
    - 68        TYPE_MAPPING = {
    - 69            **Postgres.Generator.TYPE_MAPPING,  # type: ignore
    - 70            exp.DataType.Type.BINARY: "VARBYTE",
    - 71            exp.DataType.Type.VARBINARY: "VARBYTE",
    - 72            exp.DataType.Type.INT: "INTEGER",
    - 73        }
    - 74
    - 75        PROPERTIES_LOCATION = {
    - 76            **Postgres.Generator.PROPERTIES_LOCATION,  # type: ignore
    - 77            exp.LikeProperty: exp.Properties.Location.POST_WITH,
    - 78        }
    +            
     16class Redshift(Postgres):
    + 17    time_format = "'YYYY-MM-DD HH:MI:SS'"
    + 18    time_mapping = {
    + 19        **Postgres.time_mapping,  # type: ignore
    + 20        "MON": "%b",
    + 21        "HH": "%H",
    + 22    }
    + 23
    + 24    class Parser(Postgres.Parser):
    + 25        FUNCTIONS = {
    + 26            **Postgres.Parser.FUNCTIONS,  # type: ignore
    + 27            "DATEADD": lambda args: exp.DateAdd(
    + 28                this=seq_get(args, 2),
    + 29                expression=seq_get(args, 1),
    + 30                unit=seq_get(args, 0),
    + 31            ),
    + 32            "DATEDIFF": lambda args: exp.DateDiff(
    + 33                this=seq_get(args, 2),
    + 34                expression=seq_get(args, 1),
    + 35                unit=seq_get(args, 0),
    + 36            ),
    + 37            "NVL": exp.Coalesce.from_arg_list,
    + 38        }
    + 39
    + 40        CONVERT_TYPE_FIRST = True
    + 41
    + 42        def _parse_types(self, check_func: bool = False) -> t.Optional[exp.Expression]:
    + 43            this = super()._parse_types(check_func=check_func)
    + 44
    + 45            if (
    + 46                isinstance(this, exp.DataType)
    + 47                and this.this == exp.DataType.Type.VARCHAR
    + 48                and this.expressions
    + 49                and this.expressions[0] == exp.column("MAX")
    + 50            ):
    + 51                this.set("expressions", [exp.Var(this="MAX")])
    + 52
    + 53            return this
    + 54
    + 55    class Tokenizer(Postgres.Tokenizer):
    + 56        STRING_ESCAPES = ["\\"]
    + 57
    + 58        KEYWORDS = {
    + 59            **Postgres.Tokenizer.KEYWORDS,  # type: ignore
    + 60            "GEOMETRY": TokenType.GEOMETRY,
    + 61            "GEOGRAPHY": TokenType.GEOGRAPHY,
    + 62            "HLLSKETCH": TokenType.HLLSKETCH,
    + 63            "SUPER": TokenType.SUPER,
    + 64            "SYSDATE": TokenType.CURRENT_TIMESTAMP,
    + 65            "TIME": TokenType.TIMESTAMP,
    + 66            "TIMETZ": TokenType.TIMESTAMPTZ,
    + 67            "TOP": TokenType.TOP,
    + 68            "UNLOAD": TokenType.COMMAND,
    + 69            "VARBYTE": TokenType.VARBINARY,
    + 70        }
    + 71
    + 72        # Redshift allows # to appear as a table identifier prefix
    + 73        SINGLE_TOKENS = Postgres.Tokenizer.SINGLE_TOKENS.copy()
    + 74        SINGLE_TOKENS.pop("#")
    + 75
    + 76    class Generator(Postgres.Generator):
    + 77        LOCKING_READS_SUPPORTED = False
    + 78        SINGLE_STRING_INTERVAL = True
      79
    - 80        TRANSFORMS = {
    - 81            **Postgres.Generator.TRANSFORMS,  # type: ignore
    - 82            **transforms.ELIMINATE_DISTINCT_ON,  # type: ignore
    - 83            exp.DateAdd: lambda self, e: self.func(
    - 84                "DATEADD", exp.var(e.text("unit") or "day"), e.expression, e.this
    - 85            ),
    - 86            exp.DateDiff: lambda self, e: self.func(
    - 87                "DATEDIFF", exp.var(e.text("unit") or "day"), e.expression, e.this
    - 88            ),
    - 89            exp.DistKeyProperty: lambda self, e: f"DISTKEY({e.name})",
    - 90            exp.DistStyleProperty: lambda self, e: self.naked_property(e),
    - 91            exp.SortKeyProperty: lambda self, e: f"{'COMPOUND ' if e.args['compound'] else ''}SORTKEY({self.format_args(*e.this)})",
    - 92        }
    - 93
    - 94        # Redshift uses the POW | POWER (expr1, expr2) syntax instead of expr1 ^ expr2 (postgres)
    - 95        TRANSFORMS.pop(exp.Pow)
    - 96
    - 97        def values_sql(self, expression: exp.Values) -> str:
    - 98            """
    - 99            Converts `VALUES...` expression into a series of unions.
    -100
    -101            Note: If you have a lot of unions then this will result in a large number of recursive statements to
    -102            evaluate the expression. You may need to increase `sys.setrecursionlimit` to run and it can also be
    -103            very slow.
    -104            """
    -105            if not isinstance(expression.unnest().parent, exp.From):
    -106                return super().values_sql(expression)
    -107            rows = [tuple_exp.expressions for tuple_exp in expression.expressions]
    -108            selects = []
    -109            for i, row in enumerate(rows):
    -110                if i == 0 and expression.alias:
    -111                    row = [
    -112                        exp.alias_(value, column_name)
    -113                        for value, column_name in zip(row, expression.args["alias"].args["columns"])
    -114                    ]
    -115                selects.append(exp.Select(expressions=row))
    -116            subquery_expression = selects[0]
    -117            if len(selects) > 1:
    -118                for select in selects[1:]:
    -119                    subquery_expression = exp.union(subquery_expression, select, distinct=False)
    -120            return self.subquery_sql(subquery_expression.subquery(expression.alias))
    -121
    -122        def with_properties(self, properties: exp.Properties) -> str:
    -123            """Redshift doesn't have `WITH` as part of their with_properties so we remove it"""
    -124            return self.properties(properties, prefix=" ", suffix="")
    -125
    -126        def renametable_sql(self, expression: exp.RenameTable) -> str:
    -127            """Redshift only supports defining the table name itself (not the db) when renaming tables"""
    -128            expression = expression.copy()
    -129            target_table = expression.this
    -130            for arg in target_table.args:
    -131                if arg != "this":
    -132                    target_table.set(arg, None)
    -133            this = self.sql(expression, "this")
    -134            return f"RENAME TO {this}"
    -135
    -136        def datatype_sql(self, expression: exp.DataType) -> str:
    -137            """
    -138            Redshift converts the `TEXT` data type to `VARCHAR(255)` by default when people more generally mean
    -139            VARCHAR of max length which is `VARCHAR(max)` in Redshift. Therefore if we get a `TEXT` data type
    -140            without precision we convert it to `VARCHAR(max)` and if it does have precision then we just convert
    -141            `TEXT` to `VARCHAR`.
    -142            """
    -143            if expression.this == exp.DataType.Type.TEXT:
    -144                expression = expression.copy()
    -145                expression.set("this", exp.DataType.Type.VARCHAR)
    -146                precision = expression.args.get("expressions")
    -147                if not precision:
    -148                    expression.append("expressions", exp.Var(this="MAX"))
    -149            return super().datatype_sql(expression)
    + 80        TYPE_MAPPING = {
    + 81            **Postgres.Generator.TYPE_MAPPING,  # type: ignore
    + 82            exp.DataType.Type.BINARY: "VARBYTE",
    + 83            exp.DataType.Type.VARBINARY: "VARBYTE",
    + 84            exp.DataType.Type.INT: "INTEGER",
    + 85        }
    + 86
    + 87        PROPERTIES_LOCATION = {
    + 88            **Postgres.Generator.PROPERTIES_LOCATION,  # type: ignore
    + 89            exp.LikeProperty: exp.Properties.Location.POST_WITH,
    + 90        }
    + 91
    + 92        TRANSFORMS = {
    + 93            **Postgres.Generator.TRANSFORMS,  # type: ignore
    + 94            **transforms.ELIMINATE_DISTINCT_ON,  # type: ignore
    + 95            exp.CurrentTimestamp: lambda self, e: "SYSDATE",
    + 96            exp.DateAdd: lambda self, e: self.func(
    + 97                "DATEADD", exp.var(e.text("unit") or "day"), e.expression, e.this
    + 98            ),
    + 99            exp.DateDiff: lambda self, e: self.func(
    +100                "DATEDIFF", exp.var(e.text("unit") or "day"), e.expression, e.this
    +101            ),
    +102            exp.DistKeyProperty: lambda self, e: f"DISTKEY({e.name})",
    +103            exp.DistStyleProperty: lambda self, e: self.naked_property(e),
    +104            exp.JSONExtract: _json_sql,
    +105            exp.JSONExtractScalar: _json_sql,
    +106            exp.SortKeyProperty: lambda self, e: f"{'COMPOUND ' if e.args['compound'] else ''}SORTKEY({self.format_args(*e.this)})",
    +107        }
    +108
    +109        # Redshift uses the POW | POWER (expr1, expr2) syntax instead of expr1 ^ expr2 (postgres)
    +110        TRANSFORMS.pop(exp.Pow)
    +111
    +112        RESERVED_KEYWORDS = {*Postgres.Generator.RESERVED_KEYWORDS, "snapshot"}
    +113
    +114        def values_sql(self, expression: exp.Values) -> str:
    +115            """
    +116            Converts `VALUES...` expression into a series of unions.
    +117
    +118            Note: If you have a lot of unions then this will result in a large number of recursive statements to
    +119            evaluate the expression. You may need to increase `sys.setrecursionlimit` to run and it can also be
    +120            very slow.
    +121            """
    +122            if not isinstance(expression.unnest().parent, exp.From):
    +123                return super().values_sql(expression)
    +124            rows = [tuple_exp.expressions for tuple_exp in expression.expressions]
    +125            selects = []
    +126            for i, row in enumerate(rows):
    +127                if i == 0 and expression.alias:
    +128                    row = [
    +129                        exp.alias_(value, column_name)
    +130                        for value, column_name in zip(row, expression.args["alias"].args["columns"])
    +131                    ]
    +132                selects.append(exp.Select(expressions=row))
    +133            subquery_expression = selects[0]
    +134            if len(selects) > 1:
    +135                for select in selects[1:]:
    +136                    subquery_expression = exp.union(subquery_expression, select, distinct=False)
    +137            return self.subquery_sql(subquery_expression.subquery(expression.alias))
    +138
    +139        def with_properties(self, properties: exp.Properties) -> str:
    +140            """Redshift doesn't have `WITH` as part of their with_properties so we remove it"""
    +141            return self.properties(properties, prefix=" ", suffix="")
    +142
    +143        def renametable_sql(self, expression: exp.RenameTable) -> str:
    +144            """Redshift only supports defining the table name itself (not the db) when renaming tables"""
    +145            expression = expression.copy()
    +146            target_table = expression.this
    +147            for arg in target_table.args:
    +148                if arg != "this":
    +149                    target_table.set(arg, None)
    +150            this = self.sql(expression, "this")
    +151            return f"RENAME TO {this}"
    +152
    +153        def datatype_sql(self, expression: exp.DataType) -> str:
    +154            """
    +155            Redshift converts the `TEXT` data type to `VARCHAR(255)` by default when people more generally mean
    +156            VARCHAR of max length which is `VARCHAR(max)` in Redshift. Therefore if we get a `TEXT` data type
    +157            without precision we convert it to `VARCHAR(max)` and if it does have precision then we just convert
    +158            `TEXT` to `VARCHAR`.
    +159            """
    +160            if expression.this == exp.DataType.Type.TEXT:
    +161                expression = expression.copy()
    +162                expression.set("this", exp.DataType.Type.VARCHAR)
    +163                precision = expression.args.get("expressions")
    +164                if not precision:
    +165                    expression.append("expressions", exp.Var(this="MAX"))
    +166            return super().datatype_sql(expression)
     
    @@ -424,36 +454,36 @@
    -
    20    class Parser(Postgres.Parser):
    -21        FUNCTIONS = {
    -22            **Postgres.Parser.FUNCTIONS,  # type: ignore
    -23            "DATEADD": lambda args: exp.DateAdd(
    -24                this=seq_get(args, 2),
    -25                expression=seq_get(args, 1),
    -26                unit=seq_get(args, 0),
    -27            ),
    -28            "DATEDIFF": lambda args: exp.DateDiff(
    -29                this=seq_get(args, 2),
    -30                expression=seq_get(args, 1),
    -31                unit=seq_get(args, 0),
    -32            ),
    -33            "NVL": exp.Coalesce.from_arg_list,
    -34        }
    -35
    -36        CONVERT_TYPE_FIRST = True
    -37
    -38        def _parse_types(self, check_func: bool = False) -> t.Optional[exp.Expression]:
    -39            this = super()._parse_types(check_func=check_func)
    -40
    -41            if (
    -42                isinstance(this, exp.DataType)
    -43                and this.this == exp.DataType.Type.VARCHAR
    -44                and this.expressions
    -45                and this.expressions[0] == exp.column("MAX")
    -46            ):
    -47                this.set("expressions", [exp.Var(this="MAX")])
    -48
    -49            return this
    +            
    24    class Parser(Postgres.Parser):
    +25        FUNCTIONS = {
    +26            **Postgres.Parser.FUNCTIONS,  # type: ignore
    +27            "DATEADD": lambda args: exp.DateAdd(
    +28                this=seq_get(args, 2),
    +29                expression=seq_get(args, 1),
    +30                unit=seq_get(args, 0),
    +31            ),
    +32            "DATEDIFF": lambda args: exp.DateDiff(
    +33                this=seq_get(args, 2),
    +34                expression=seq_get(args, 1),
    +35                unit=seq_get(args, 0),
    +36            ),
    +37            "NVL": exp.Coalesce.from_arg_list,
    +38        }
    +39
    +40        CONVERT_TYPE_FIRST = True
    +41
    +42        def _parse_types(self, check_func: bool = False) -> t.Optional[exp.Expression]:
    +43            this = super()._parse_types(check_func=check_func)
    +44
    +45            if (
    +46                isinstance(this, exp.DataType)
    +47                and this.this == exp.DataType.Type.VARCHAR
    +48                and this.expressions
    +49                and this.expressions[0] == exp.column("MAX")
    +50            ):
    +51                this.set("expressions", [exp.Var(this="MAX")])
    +52
    +53            return this
     
    @@ -510,21 +540,26 @@ Default: "nulls_are_small"
    -
    51    class Tokenizer(Postgres.Tokenizer):
    -52        STRING_ESCAPES = ["\\"]
    -53
    -54        KEYWORDS = {
    -55            **Postgres.Tokenizer.KEYWORDS,  # type: ignore
    -56            "GEOMETRY": TokenType.GEOMETRY,
    -57            "GEOGRAPHY": TokenType.GEOGRAPHY,
    -58            "HLLSKETCH": TokenType.HLLSKETCH,
    -59            "SUPER": TokenType.SUPER,
    -60            "TIME": TokenType.TIMESTAMP,
    -61            "TIMETZ": TokenType.TIMESTAMPTZ,
    -62            "TOP": TokenType.TOP,
    -63            "UNLOAD": TokenType.COMMAND,
    -64            "VARBYTE": TokenType.VARBINARY,
    -65        }
    +            
    55    class Tokenizer(Postgres.Tokenizer):
    +56        STRING_ESCAPES = ["\\"]
    +57
    +58        KEYWORDS = {
    +59            **Postgres.Tokenizer.KEYWORDS,  # type: ignore
    +60            "GEOMETRY": TokenType.GEOMETRY,
    +61            "GEOGRAPHY": TokenType.GEOGRAPHY,
    +62            "HLLSKETCH": TokenType.HLLSKETCH,
    +63            "SUPER": TokenType.SUPER,
    +64            "SYSDATE": TokenType.CURRENT_TIMESTAMP,
    +65            "TIME": TokenType.TIMESTAMP,
    +66            "TIMETZ": TokenType.TIMESTAMPTZ,
    +67            "TOP": TokenType.TOP,
    +68            "UNLOAD": TokenType.COMMAND,
    +69            "VARBYTE": TokenType.VARBINARY,
    +70        }
    +71
    +72        # Redshift allows # to appear as a table identifier prefix
    +73        SINGLE_TOKENS = Postgres.Tokenizer.SINGLE_TOKENS.copy()
    +74        SINGLE_TOKENS.pop("#")
     
    @@ -552,89 +587,97 @@ Default: "nulls_are_small"
    -
     67    class Generator(Postgres.Generator):
    - 68        TYPE_MAPPING = {
    - 69            **Postgres.Generator.TYPE_MAPPING,  # type: ignore
    - 70            exp.DataType.Type.BINARY: "VARBYTE",
    - 71            exp.DataType.Type.VARBINARY: "VARBYTE",
    - 72            exp.DataType.Type.INT: "INTEGER",
    - 73        }
    - 74
    - 75        PROPERTIES_LOCATION = {
    - 76            **Postgres.Generator.PROPERTIES_LOCATION,  # type: ignore
    - 77            exp.LikeProperty: exp.Properties.Location.POST_WITH,
    - 78        }
    +            
     76    class Generator(Postgres.Generator):
    + 77        LOCKING_READS_SUPPORTED = False
    + 78        SINGLE_STRING_INTERVAL = True
      79
    - 80        TRANSFORMS = {
    - 81            **Postgres.Generator.TRANSFORMS,  # type: ignore
    - 82            **transforms.ELIMINATE_DISTINCT_ON,  # type: ignore
    - 83            exp.DateAdd: lambda self, e: self.func(
    - 84                "DATEADD", exp.var(e.text("unit") or "day"), e.expression, e.this
    - 85            ),
    - 86            exp.DateDiff: lambda self, e: self.func(
    - 87                "DATEDIFF", exp.var(e.text("unit") or "day"), e.expression, e.this
    - 88            ),
    - 89            exp.DistKeyProperty: lambda self, e: f"DISTKEY({e.name})",
    - 90            exp.DistStyleProperty: lambda self, e: self.naked_property(e),
    - 91            exp.SortKeyProperty: lambda self, e: f"{'COMPOUND ' if e.args['compound'] else ''}SORTKEY({self.format_args(*e.this)})",
    - 92        }
    - 93
    - 94        # Redshift uses the POW | POWER (expr1, expr2) syntax instead of expr1 ^ expr2 (postgres)
    - 95        TRANSFORMS.pop(exp.Pow)
    - 96
    - 97        def values_sql(self, expression: exp.Values) -> str:
    - 98            """
    - 99            Converts `VALUES...` expression into a series of unions.
    -100
    -101            Note: If you have a lot of unions then this will result in a large number of recursive statements to
    -102            evaluate the expression. You may need to increase `sys.setrecursionlimit` to run and it can also be
    -103            very slow.
    -104            """
    -105            if not isinstance(expression.unnest().parent, exp.From):
    -106                return super().values_sql(expression)
    -107            rows = [tuple_exp.expressions for tuple_exp in expression.expressions]
    -108            selects = []
    -109            for i, row in enumerate(rows):
    -110                if i == 0 and expression.alias:
    -111                    row = [
    -112                        exp.alias_(value, column_name)
    -113                        for value, column_name in zip(row, expression.args["alias"].args["columns"])
    -114                    ]
    -115                selects.append(exp.Select(expressions=row))
    -116            subquery_expression = selects[0]
    -117            if len(selects) > 1:
    -118                for select in selects[1:]:
    -119                    subquery_expression = exp.union(subquery_expression, select, distinct=False)
    -120            return self.subquery_sql(subquery_expression.subquery(expression.alias))
    -121
    -122        def with_properties(self, properties: exp.Properties) -> str:
    -123            """Redshift doesn't have `WITH` as part of their with_properties so we remove it"""
    -124            return self.properties(properties, prefix=" ", suffix="")
    -125
    -126        def renametable_sql(self, expression: exp.RenameTable) -> str:
    -127            """Redshift only supports defining the table name itself (not the db) when renaming tables"""
    -128            expression = expression.copy()
    -129            target_table = expression.this
    -130            for arg in target_table.args:
    -131                if arg != "this":
    -132                    target_table.set(arg, None)
    -133            this = self.sql(expression, "this")
    -134            return f"RENAME TO {this}"
    -135
    -136        def datatype_sql(self, expression: exp.DataType) -> str:
    -137            """
    -138            Redshift converts the `TEXT` data type to `VARCHAR(255)` by default when people more generally mean
    -139            VARCHAR of max length which is `VARCHAR(max)` in Redshift. Therefore if we get a `TEXT` data type
    -140            without precision we convert it to `VARCHAR(max)` and if it does have precision then we just convert
    -141            `TEXT` to `VARCHAR`.
    -142            """
    -143            if expression.this == exp.DataType.Type.TEXT:
    -144                expression = expression.copy()
    -145                expression.set("this", exp.DataType.Type.VARCHAR)
    -146                precision = expression.args.get("expressions")
    -147                if not precision:
    -148                    expression.append("expressions", exp.Var(this="MAX"))
    -149            return super().datatype_sql(expression)
    + 80        TYPE_MAPPING = {
    + 81            **Postgres.Generator.TYPE_MAPPING,  # type: ignore
    + 82            exp.DataType.Type.BINARY: "VARBYTE",
    + 83            exp.DataType.Type.VARBINARY: "VARBYTE",
    + 84            exp.DataType.Type.INT: "INTEGER",
    + 85        }
    + 86
    + 87        PROPERTIES_LOCATION = {
    + 88            **Postgres.Generator.PROPERTIES_LOCATION,  # type: ignore
    + 89            exp.LikeProperty: exp.Properties.Location.POST_WITH,
    + 90        }
    + 91
    + 92        TRANSFORMS = {
    + 93            **Postgres.Generator.TRANSFORMS,  # type: ignore
    + 94            **transforms.ELIMINATE_DISTINCT_ON,  # type: ignore
    + 95            exp.CurrentTimestamp: lambda self, e: "SYSDATE",
    + 96            exp.DateAdd: lambda self, e: self.func(
    + 97                "DATEADD", exp.var(e.text("unit") or "day"), e.expression, e.this
    + 98            ),
    + 99            exp.DateDiff: lambda self, e: self.func(
    +100                "DATEDIFF", exp.var(e.text("unit") or "day"), e.expression, e.this
    +101            ),
    +102            exp.DistKeyProperty: lambda self, e: f"DISTKEY({e.name})",
    +103            exp.DistStyleProperty: lambda self, e: self.naked_property(e),
    +104            exp.JSONExtract: _json_sql,
    +105            exp.JSONExtractScalar: _json_sql,
    +106            exp.SortKeyProperty: lambda self, e: f"{'COMPOUND ' if e.args['compound'] else ''}SORTKEY({self.format_args(*e.this)})",
    +107        }
    +108
    +109        # Redshift uses the POW | POWER (expr1, expr2) syntax instead of expr1 ^ expr2 (postgres)
    +110        TRANSFORMS.pop(exp.Pow)
    +111
    +112        RESERVED_KEYWORDS = {*Postgres.Generator.RESERVED_KEYWORDS, "snapshot"}
    +113
    +114        def values_sql(self, expression: exp.Values) -> str:
    +115            """
    +116            Converts `VALUES...` expression into a series of unions.
    +117
    +118            Note: If you have a lot of unions then this will result in a large number of recursive statements to
    +119            evaluate the expression. You may need to increase `sys.setrecursionlimit` to run and it can also be
    +120            very slow.
    +121            """
    +122            if not isinstance(expression.unnest().parent, exp.From):
    +123                return super().values_sql(expression)
    +124            rows = [tuple_exp.expressions for tuple_exp in expression.expressions]
    +125            selects = []
    +126            for i, row in enumerate(rows):
    +127                if i == 0 and expression.alias:
    +128                    row = [
    +129                        exp.alias_(value, column_name)
    +130                        for value, column_name in zip(row, expression.args["alias"].args["columns"])
    +131                    ]
    +132                selects.append(exp.Select(expressions=row))
    +133            subquery_expression = selects[0]
    +134            if len(selects) > 1:
    +135                for select in selects[1:]:
    +136                    subquery_expression = exp.union(subquery_expression, select, distinct=False)
    +137            return self.subquery_sql(subquery_expression.subquery(expression.alias))
    +138
    +139        def with_properties(self, properties: exp.Properties) -> str:
    +140            """Redshift doesn't have `WITH` as part of their with_properties so we remove it"""
    +141            return self.properties(properties, prefix=" ", suffix="")
    +142
    +143        def renametable_sql(self, expression: exp.RenameTable) -> str:
    +144            """Redshift only supports defining the table name itself (not the db) when renaming tables"""
    +145            expression = expression.copy()
    +146            target_table = expression.this
    +147            for arg in target_table.args:
    +148                if arg != "this":
    +149                    target_table.set(arg, None)
    +150            this = self.sql(expression, "this")
    +151            return f"RENAME TO {this}"
    +152
    +153        def datatype_sql(self, expression: exp.DataType) -> str:
    +154            """
    +155            Redshift converts the `TEXT` data type to `VARCHAR(255)` by default when people more generally mean
    +156            VARCHAR of max length which is `VARCHAR(max)` in Redshift. Therefore if we get a `TEXT` data type
    +157            without precision we convert it to `VARCHAR(max)` and if it does have precision then we just convert
    +158            `TEXT` to `VARCHAR`.
    +159            """
    +160            if expression.this == exp.DataType.Type.TEXT:
    +161                expression = expression.copy()
    +162                expression.set("this", exp.DataType.Type.VARCHAR)
    +163                precision = expression.args.get("expressions")
    +164                if not precision:
    +165                    expression.append("expressions", exp.Var(this="MAX"))
    +166            return super().datatype_sql(expression)
     
    @@ -693,30 +736,30 @@ Default: True
    -
     97        def values_sql(self, expression: exp.Values) -> str:
    - 98            """
    - 99            Converts `VALUES...` expression into a series of unions.
    -100
    -101            Note: If you have a lot of unions then this will result in a large number of recursive statements to
    -102            evaluate the expression. You may need to increase `sys.setrecursionlimit` to run and it can also be
    -103            very slow.
    -104            """
    -105            if not isinstance(expression.unnest().parent, exp.From):
    -106                return super().values_sql(expression)
    -107            rows = [tuple_exp.expressions for tuple_exp in expression.expressions]
    -108            selects = []
    -109            for i, row in enumerate(rows):
    -110                if i == 0 and expression.alias:
    -111                    row = [
    -112                        exp.alias_(value, column_name)
    -113                        for value, column_name in zip(row, expression.args["alias"].args["columns"])
    -114                    ]
    -115                selects.append(exp.Select(expressions=row))
    -116            subquery_expression = selects[0]
    -117            if len(selects) > 1:
    -118                for select in selects[1:]:
    -119                    subquery_expression = exp.union(subquery_expression, select, distinct=False)
    -120            return self.subquery_sql(subquery_expression.subquery(expression.alias))
    +            
    114        def values_sql(self, expression: exp.Values) -> str:
    +115            """
    +116            Converts `VALUES...` expression into a series of unions.
    +117
    +118            Note: If you have a lot of unions then this will result in a large number of recursive statements to
    +119            evaluate the expression. You may need to increase `sys.setrecursionlimit` to run and it can also be
    +120            very slow.
    +121            """
    +122            if not isinstance(expression.unnest().parent, exp.From):
    +123                return super().values_sql(expression)
    +124            rows = [tuple_exp.expressions for tuple_exp in expression.expressions]
    +125            selects = []
    +126            for i, row in enumerate(rows):
    +127                if i == 0 and expression.alias:
    +128                    row = [
    +129                        exp.alias_(value, column_name)
    +130                        for value, column_name in zip(row, expression.args["alias"].args["columns"])
    +131                    ]
    +132                selects.append(exp.Select(expressions=row))
    +133            subquery_expression = selects[0]
    +134            if len(selects) > 1:
    +135                for select in selects[1:]:
    +136                    subquery_expression = exp.union(subquery_expression, select, distinct=False)
    +137            return self.subquery_sql(subquery_expression.subquery(expression.alias))
     
    @@ -740,9 +783,9 @@ very slow.

    -
    122        def with_properties(self, properties: exp.Properties) -> str:
    -123            """Redshift doesn't have `WITH` as part of their with_properties so we remove it"""
    -124            return self.properties(properties, prefix=" ", suffix="")
    +            
    139        def with_properties(self, properties: exp.Properties) -> str:
    +140            """Redshift doesn't have `WITH` as part of their with_properties so we remove it"""
    +141            return self.properties(properties, prefix=" ", suffix="")
     
    @@ -762,15 +805,15 @@ very slow.

    -
    126        def renametable_sql(self, expression: exp.RenameTable) -> str:
    -127            """Redshift only supports defining the table name itself (not the db) when renaming tables"""
    -128            expression = expression.copy()
    -129            target_table = expression.this
    -130            for arg in target_table.args:
    -131                if arg != "this":
    -132                    target_table.set(arg, None)
    -133            this = self.sql(expression, "this")
    -134            return f"RENAME TO {this}"
    +            
    143        def renametable_sql(self, expression: exp.RenameTable) -> str:
    +144            """Redshift only supports defining the table name itself (not the db) when renaming tables"""
    +145            expression = expression.copy()
    +146            target_table = expression.this
    +147            for arg in target_table.args:
    +148                if arg != "this":
    +149                    target_table.set(arg, None)
    +150            this = self.sql(expression, "this")
    +151            return f"RENAME TO {this}"
     
    @@ -790,20 +833,20 @@ very slow.

    -
    136        def datatype_sql(self, expression: exp.DataType) -> str:
    -137            """
    -138            Redshift converts the `TEXT` data type to `VARCHAR(255)` by default when people more generally mean
    -139            VARCHAR of max length which is `VARCHAR(max)` in Redshift. Therefore if we get a `TEXT` data type
    -140            without precision we convert it to `VARCHAR(max)` and if it does have precision then we just convert
    -141            `TEXT` to `VARCHAR`.
    -142            """
    -143            if expression.this == exp.DataType.Type.TEXT:
    -144                expression = expression.copy()
    -145                expression.set("this", exp.DataType.Type.VARCHAR)
    -146                precision = expression.args.get("expressions")
    -147                if not precision:
    -148                    expression.append("expressions", exp.Var(this="MAX"))
    -149            return super().datatype_sql(expression)
    +            
    153        def datatype_sql(self, expression: exp.DataType) -> str:
    +154            """
    +155            Redshift converts the `TEXT` data type to `VARCHAR(255)` by default when people more generally mean
    +156            VARCHAR of max length which is `VARCHAR(max)` in Redshift. Therefore if we get a `TEXT` data type
    +157            without precision we convert it to `VARCHAR(max)` and if it does have precision then we just convert
    +158            `TEXT` to `VARCHAR`.
    +159            """
    +160            if expression.this == exp.DataType.Type.TEXT:
    +161                expression = expression.copy()
    +162                expression.set("this", exp.DataType.Type.VARCHAR)
    +163                precision = expression.args.get("expressions")
    +164                if not precision:
    +165                    expression.append("expressions", exp.Var(this="MAX"))
    +166            return super().datatype_sql(expression)
     
    @@ -852,6 +895,7 @@ without precision we convert it to VARCHAR(max) and if it does have
    tablealias_sql
    bitstring_sql
    hexstring_sql
    +
    bytestring_sql
    directory_sql
    delete_sql
    drop_sql
    @@ -862,6 +906,7 @@ without precision we convert it to VARCHAR(max) and if it does have
    hint_sql
    index_sql
    identifier_sql
    +
    inputoutputformat_sql
    national_sql
    partition_sql
    properties_sql
    @@ -886,6 +931,7 @@ without precision we convert it to VARCHAR(max) and if it does have
    intersect_op
    introducer_sql
    pseudotype_sql
    +
    onconflict_sql
    returning_sql
    rowformatdelimitedproperty_sql
    table_sql
    diff --git a/docs/sqlglot/dialects/snowflake.html b/docs/sqlglot/dialects/snowflake.html index f78f8c2..28bfb8c 100644 --- a/docs/sqlglot/dialects/snowflake.html +++ b/docs/sqlglot/dialects/snowflake.html @@ -3,7 +3,7 @@ - + sqlglot.dialects.snowflake API documentation @@ -123,14 +123,14 @@
    23from sqlglot.tokens import TokenType 24 25 - 26def _check_int(s): + 26def _check_int(s: str) -> bool: 27 if s[0] in ("-", "+"): 28 return s[1:].isdigit() 29 return s.isdigit() 30 31 32# from https://docs.snowflake.com/en/sql-reference/functions/to_timestamp.html - 33def _snowflake_to_timestamp(args): + 33def _snowflake_to_timestamp(args: t.Sequence) -> t.Union[exp.StrToTime, exp.UnixToTime]: 34 if len(args) == 2: 35 first_arg, second_arg = args 36 if second_arg.is_string: @@ -169,7 +169,7 @@ 69 return exp.UnixToTime.from_arg_list(args) 70 71 - 72def _unix_to_time_sql(self, expression): + 72def _unix_to_time_sql(self: generator.Generator, expression: exp.UnixToTime) -> str: 73 scale = expression.args.get("scale") 74 timestamp = self.sql(expression, "this") 75 if scale in [None, exp.UnixToTime.SECONDS]: @@ -184,318 +184,333 @@ 84 85# https://docs.snowflake.com/en/sql-reference/functions/date_part.html 86# https://docs.snowflake.com/en/sql-reference/functions-date-time.html#label-supported-date-time-parts - 87def _parse_date_part(self): + 87def _parse_date_part(self: parser.Parser) -> t.Optional[exp.Expression]: 88 this = self._parse_var() or self._parse_type() - 89 self._match(TokenType.COMMA) - 90 expression = self._parse_bitwise() - 91 - 92 name = this.name.upper() - 93 if name.startswith("EPOCH"): - 94 if name.startswith("EPOCH_MILLISECOND"): - 95 scale = 10**3 - 96 elif name.startswith("EPOCH_MICROSECOND"): - 97 scale = 10**6 - 98 elif name.startswith("EPOCH_NANOSECOND"): - 99 scale = 10**9 -100 else: -101 scale = None -102 -103 ts = self.expression(exp.Cast, this=expression, to=exp.DataType.build("TIMESTAMP")) -104 to_unix = self.expression(exp.TimeToUnix, this=ts) -105 -106 if scale: -107 to_unix = exp.Mul(this=to_unix, expression=exp.Literal.number(scale)) -108 -109 return to_unix -110 -111 return self.expression(exp.Extract, this=this, expression=expression) + 89 + 90 if not this: + 91 return None + 92 + 93 self._match(TokenType.COMMA) + 94 expression = self._parse_bitwise() + 95 + 96 name = this.name.upper() + 97 if name.startswith("EPOCH"): + 98 if name.startswith("EPOCH_MILLISECOND"): + 99 scale = 10**3 +100 elif name.startswith("EPOCH_MICROSECOND"): +101 scale = 10**6 +102 elif name.startswith("EPOCH_NANOSECOND"): +103 scale = 10**9 +104 else: +105 scale = None +106 +107 ts = self.expression(exp.Cast, this=expression, to=exp.DataType.build("TIMESTAMP")) +108 to_unix: exp.Expression = self.expression(exp.TimeToUnix, this=ts) +109 +110 if scale: +111 to_unix = exp.Mul(this=to_unix, expression=exp.Literal.number(scale)) 112 -113 -114# https://docs.snowflake.com/en/sql-reference/functions/div0 -115def _div0_to_if(args): -116 cond = exp.EQ(this=seq_get(args, 1), expression=exp.Literal.number(0)) -117 true = exp.Literal.number(0) -118 false = exp.Div(this=seq_get(args, 0), expression=seq_get(args, 1)) -119 return exp.If(this=cond, true=true, false=false) -120 -121 -122# https://docs.snowflake.com/en/sql-reference/functions/zeroifnull -123def _zeroifnull_to_if(args): -124 cond = exp.Is(this=seq_get(args, 0), expression=exp.Null()) -125 return exp.If(this=cond, true=exp.Literal.number(0), false=seq_get(args, 0)) -126 -127 -128# https://docs.snowflake.com/en/sql-reference/functions/zeroifnull -129def _nullifzero_to_if(args): -130 cond = exp.EQ(this=seq_get(args, 0), expression=exp.Literal.number(0)) -131 return exp.If(this=cond, true=exp.Null(), false=seq_get(args, 0)) -132 -133 -134def _datatype_sql(self, expression): -135 if expression.this == exp.DataType.Type.ARRAY: -136 return "ARRAY" -137 elif expression.this == exp.DataType.Type.MAP: -138 return "OBJECT" -139 return self.datatype_sql(expression) -140 -141 -142class Snowflake(Dialect): -143 null_ordering = "nulls_are_large" -144 time_format = "'yyyy-mm-dd hh24:mi:ss'" +113 return to_unix +114 +115 return self.expression(exp.Extract, this=this, expression=expression) +116 +117 +118# https://docs.snowflake.com/en/sql-reference/functions/div0 +119def _div0_to_if(args: t.Sequence) -> exp.Expression: +120 cond = exp.EQ(this=seq_get(args, 1), expression=exp.Literal.number(0)) +121 true = exp.Literal.number(0) +122 false = exp.Div(this=seq_get(args, 0), expression=seq_get(args, 1)) +123 return exp.If(this=cond, true=true, false=false) +124 +125 +126# https://docs.snowflake.com/en/sql-reference/functions/zeroifnull +127def _zeroifnull_to_if(args: t.Sequence) -> exp.Expression: +128 cond = exp.Is(this=seq_get(args, 0), expression=exp.Null()) +129 return exp.If(this=cond, true=exp.Literal.number(0), false=seq_get(args, 0)) +130 +131 +132# https://docs.snowflake.com/en/sql-reference/functions/zeroifnull +133def _nullifzero_to_if(args: t.Sequence) -> exp.Expression: +134 cond = exp.EQ(this=seq_get(args, 0), expression=exp.Literal.number(0)) +135 return exp.If(this=cond, true=exp.Null(), false=seq_get(args, 0)) +136 +137 +138def _datatype_sql(self: generator.Generator, expression: exp.DataType) -> str: +139 if expression.this == exp.DataType.Type.ARRAY: +140 return "ARRAY" +141 elif expression.this == exp.DataType.Type.MAP: +142 return "OBJECT" +143 return self.datatype_sql(expression) +144 145 -146 time_mapping = { -147 "YYYY": "%Y", -148 "yyyy": "%Y", -149 "YY": "%y", -150 "yy": "%y", -151 "MMMM": "%B", -152 "mmmm": "%B", -153 "MON": "%b", -154 "mon": "%b", -155 "MM": "%m", -156 "mm": "%m", -157 "DD": "%d", -158 "dd": "%d", -159 "d": "%-d", -160 "DY": "%w", -161 "dy": "%w", -162 "HH24": "%H", -163 "hh24": "%H", -164 "HH12": "%I", -165 "hh12": "%I", -166 "MI": "%M", -167 "mi": "%M", -168 "SS": "%S", -169 "ss": "%S", -170 "FF": "%f", -171 "ff": "%f", -172 "FF6": "%f", -173 "ff6": "%f", -174 } -175 -176 class Parser(parser.Parser): -177 FUNCTIONS = { -178 **parser.Parser.FUNCTIONS, -179 "ARRAYAGG": exp.ArrayAgg.from_arg_list, -180 "ARRAY_CONSTRUCT": exp.Array.from_arg_list, -181 "ARRAY_TO_STRING": exp.ArrayJoin.from_arg_list, -182 "CONVERT_TIMEZONE": lambda args: exp.AtTimeZone( -183 this=seq_get(args, 1), -184 zone=seq_get(args, 0), -185 ), -186 "DATE_TRUNC": date_trunc_to_time, -187 "DATEADD": lambda args: exp.DateAdd( -188 this=seq_get(args, 2), -189 expression=seq_get(args, 1), -190 unit=seq_get(args, 0), -191 ), -192 "DATEDIFF": lambda args: exp.DateDiff( +146class Snowflake(Dialect): +147 null_ordering = "nulls_are_large" +148 time_format = "'yyyy-mm-dd hh24:mi:ss'" +149 +150 time_mapping = { +151 "YYYY": "%Y", +152 "yyyy": "%Y", +153 "YY": "%y", +154 "yy": "%y", +155 "MMMM": "%B", +156 "mmmm": "%B", +157 "MON": "%b", +158 "mon": "%b", +159 "MM": "%m", +160 "mm": "%m", +161 "DD": "%d", +162 "dd": "%-d", +163 "DY": "%a", +164 "dy": "%w", +165 "HH24": "%H", +166 "hh24": "%H", +167 "HH12": "%I", +168 "hh12": "%I", +169 "MI": "%M", +170 "mi": "%M", +171 "SS": "%S", +172 "ss": "%S", +173 "FF": "%f", +174 "ff": "%f", +175 "FF6": "%f", +176 "ff6": "%f", +177 } +178 +179 class Parser(parser.Parser): +180 QUOTED_PIVOT_COLUMNS = True +181 +182 FUNCTIONS = { +183 **parser.Parser.FUNCTIONS, +184 "ARRAYAGG": exp.ArrayAgg.from_arg_list, +185 "ARRAY_CONSTRUCT": exp.Array.from_arg_list, +186 "ARRAY_TO_STRING": exp.ArrayJoin.from_arg_list, +187 "CONVERT_TIMEZONE": lambda args: exp.AtTimeZone( +188 this=seq_get(args, 1), +189 zone=seq_get(args, 0), +190 ), +191 "DATE_TRUNC": date_trunc_to_time, +192 "DATEADD": lambda args: exp.DateAdd( 193 this=seq_get(args, 2), 194 expression=seq_get(args, 1), 195 unit=seq_get(args, 0), 196 ), -197 "DIV0": _div0_to_if, -198 "IFF": exp.If.from_arg_list, -199 "NULLIFZERO": _nullifzero_to_if, -200 "OBJECT_CONSTRUCT": parser.parse_var_map, -201 "RLIKE": exp.RegexpLike.from_arg_list, -202 "SQUARE": lambda args: exp.Pow(this=seq_get(args, 0), expression=exp.Literal.number(2)), -203 "TO_ARRAY": exp.Array.from_arg_list, -204 "TO_VARCHAR": exp.ToChar.from_arg_list, -205 "TO_TIMESTAMP": _snowflake_to_timestamp, -206 "ZEROIFNULL": _zeroifnull_to_if, -207 } -208 -209 FUNCTION_PARSERS = { -210 **parser.Parser.FUNCTION_PARSERS, -211 "DATE_PART": _parse_date_part, +197 "DATEDIFF": lambda args: exp.DateDiff( +198 this=seq_get(args, 2), +199 expression=seq_get(args, 1), +200 unit=seq_get(args, 0), +201 ), +202 "DIV0": _div0_to_if, +203 "IFF": exp.If.from_arg_list, +204 "NULLIFZERO": _nullifzero_to_if, +205 "OBJECT_CONSTRUCT": parser.parse_var_map, +206 "RLIKE": exp.RegexpLike.from_arg_list, +207 "SQUARE": lambda args: exp.Pow(this=seq_get(args, 0), expression=exp.Literal.number(2)), +208 "TO_ARRAY": exp.Array.from_arg_list, +209 "TO_VARCHAR": exp.ToChar.from_arg_list, +210 "TO_TIMESTAMP": _snowflake_to_timestamp, +211 "ZEROIFNULL": _zeroifnull_to_if, 212 } -213 FUNCTION_PARSERS.pop("TRIM") -214 -215 FUNC_TOKENS = { -216 *parser.Parser.FUNC_TOKENS, -217 TokenType.RLIKE, -218 TokenType.TABLE, -219 } -220 -221 COLUMN_OPERATORS = { -222 **parser.Parser.COLUMN_OPERATORS, # type: ignore -223 TokenType.COLON: lambda self, this, path: self.expression( -224 exp.Bracket, -225 this=this, -226 expressions=[path], -227 ), -228 } -229 -230 RANGE_PARSERS = { -231 **parser.Parser.RANGE_PARSERS, # type: ignore -232 TokenType.LIKE_ANY: binary_range_parser(exp.LikeAny), -233 TokenType.ILIKE_ANY: binary_range_parser(exp.ILikeAny), -234 } -235 -236 ALTER_PARSERS = { -237 **parser.Parser.ALTER_PARSERS, # type: ignore -238 "UNSET": lambda self: self._parse_alter_table_set_tag(unset=True), -239 "SET": lambda self: self._parse_alter_table_set_tag(), -240 } -241 -242 def _parse_alter_table_set_tag(self, unset: bool = False) -> exp.Expression: -243 self._match_text_seq("TAG") -244 parser = t.cast(t.Callable, self._parse_id_var if unset else self._parse_conjunction) -245 return self.expression(exp.SetTag, expressions=self._parse_csv(parser), unset=unset) +213 +214 FUNCTION_PARSERS = { +215 **parser.Parser.FUNCTION_PARSERS, +216 "DATE_PART": _parse_date_part, +217 } +218 FUNCTION_PARSERS.pop("TRIM") +219 +220 FUNC_TOKENS = { +221 *parser.Parser.FUNC_TOKENS, +222 TokenType.RLIKE, +223 TokenType.TABLE, +224 } +225 +226 COLUMN_OPERATORS = { +227 **parser.Parser.COLUMN_OPERATORS, # type: ignore +228 TokenType.COLON: lambda self, this, path: self.expression( +229 exp.Bracket, +230 this=this, +231 expressions=[path], +232 ), +233 } +234 +235 RANGE_PARSERS = { +236 **parser.Parser.RANGE_PARSERS, # type: ignore +237 TokenType.LIKE_ANY: binary_range_parser(exp.LikeAny), +238 TokenType.ILIKE_ANY: binary_range_parser(exp.ILikeAny), +239 } +240 +241 ALTER_PARSERS = { +242 **parser.Parser.ALTER_PARSERS, # type: ignore +243 "UNSET": lambda self: self._parse_alter_table_set_tag(unset=True), +244 "SET": lambda self: self._parse_alter_table_set_tag(), +245 } 246 -247 class Tokenizer(tokens.Tokenizer): -248 QUOTES = ["'", "$$"] -249 STRING_ESCAPES = ["\\", "'"] -250 -251 KEYWORDS = { -252 **tokens.Tokenizer.KEYWORDS, -253 "EXCLUDE": TokenType.EXCEPT, -254 "ILIKE ANY": TokenType.ILIKE_ANY, -255 "LIKE ANY": TokenType.LIKE_ANY, -256 "MATCH_RECOGNIZE": TokenType.MATCH_RECOGNIZE, -257 "PUT": TokenType.COMMAND, -258 "RENAME": TokenType.REPLACE, -259 "TIMESTAMP_LTZ": TokenType.TIMESTAMPLTZ, -260 "TIMESTAMP_NTZ": TokenType.TIMESTAMP, -261 "TIMESTAMP_TZ": TokenType.TIMESTAMPTZ, -262 "TIMESTAMPNTZ": TokenType.TIMESTAMP, -263 "MINUS": TokenType.EXCEPT, -264 "SAMPLE": TokenType.TABLE_SAMPLE, -265 } -266 -267 SINGLE_TOKENS = { -268 **tokens.Tokenizer.SINGLE_TOKENS, -269 "$": TokenType.PARAMETER, +247 def _parse_alter_table_set_tag(self, unset: bool = False) -> exp.Expression: +248 self._match_text_seq("TAG") +249 parser = t.cast(t.Callable, self._parse_id_var if unset else self._parse_conjunction) +250 return self.expression(exp.SetTag, expressions=self._parse_csv(parser), unset=unset) +251 +252 class Tokenizer(tokens.Tokenizer): +253 QUOTES = ["'", "$$"] +254 STRING_ESCAPES = ["\\", "'"] +255 +256 KEYWORDS = { +257 **tokens.Tokenizer.KEYWORDS, +258 "EXCLUDE": TokenType.EXCEPT, +259 "ILIKE ANY": TokenType.ILIKE_ANY, +260 "LIKE ANY": TokenType.LIKE_ANY, +261 "MATCH_RECOGNIZE": TokenType.MATCH_RECOGNIZE, +262 "PUT": TokenType.COMMAND, +263 "RENAME": TokenType.REPLACE, +264 "TIMESTAMP_LTZ": TokenType.TIMESTAMPLTZ, +265 "TIMESTAMP_NTZ": TokenType.TIMESTAMP, +266 "TIMESTAMP_TZ": TokenType.TIMESTAMPTZ, +267 "TIMESTAMPNTZ": TokenType.TIMESTAMP, +268 "MINUS": TokenType.EXCEPT, +269 "SAMPLE": TokenType.TABLE_SAMPLE, 270 } 271 -272 class Generator(generator.Generator): -273 PARAMETER_TOKEN = "$" -274 MATCHED_BY_SOURCE = False -275 -276 TRANSFORMS = { -277 **generator.Generator.TRANSFORMS, # type: ignore -278 exp.Array: inline_array_sql, -279 exp.ArrayConcat: rename_func("ARRAY_CAT"), -280 exp.ArrayJoin: rename_func("ARRAY_TO_STRING"), -281 exp.AtTimeZone: lambda self, e: self.func( -282 "CONVERT_TIMEZONE", e.args.get("zone"), e.this -283 ), -284 exp.DateAdd: lambda self, e: self.func("DATEADD", e.text("unit"), e.expression, e.this), -285 exp.DateDiff: lambda self, e: self.func( -286 "DATEDIFF", e.text("unit"), e.expression, e.this -287 ), -288 exp.DateStrToDate: datestrtodate_sql, -289 exp.DataType: _datatype_sql, -290 exp.If: rename_func("IFF"), -291 exp.Map: lambda self, e: var_map_sql(self, e, "OBJECT_CONSTRUCT"), -292 exp.LogicalOr: rename_func("BOOLOR_AGG"), -293 exp.LogicalAnd: rename_func("BOOLAND_AGG"), -294 exp.VarMap: lambda self, e: var_map_sql(self, e, "OBJECT_CONSTRUCT"), -295 exp.PartitionedByProperty: lambda self, e: f"PARTITION BY {self.sql(e, 'this')}", -296 exp.StrPosition: lambda self, e: self.func( -297 "POSITION", e.args.get("substr"), e.this, e.args.get("position") -298 ), -299 exp.StrToTime: lambda self, e: f"TO_TIMESTAMP({self.sql(e, 'this')}, {self.format_time(e)})", -300 exp.TimestampTrunc: timestamptrunc_sql, -301 exp.TimeStrToTime: timestrtotime_sql, -302 exp.TimeToUnix: lambda self, e: f"EXTRACT(epoch_second FROM {self.sql(e, 'this')})", -303 exp.Trim: lambda self, e: self.func("TRIM", e.this, e.expression), -304 exp.ToChar: lambda self, e: self.function_fallback_sql(e), -305 exp.TsOrDsToDate: ts_or_ds_to_date_sql("snowflake"), -306 exp.UnixToTime: _unix_to_time_sql, -307 exp.DayOfWeek: rename_func("DAYOFWEEK"), -308 exp.Max: max_or_greatest, -309 exp.Min: min_or_least, -310 } -311 -312 TYPE_MAPPING = { -313 **generator.Generator.TYPE_MAPPING, # type: ignore -314 exp.DataType.Type.TIMESTAMP: "TIMESTAMPNTZ", -315 } -316 -317 STAR_MAPPING = { -318 "except": "EXCLUDE", -319 "replace": "RENAME", -320 } -321 -322 PROPERTIES_LOCATION = { -323 **generator.Generator.PROPERTIES_LOCATION, # type: ignore -324 exp.SetProperty: exp.Properties.Location.UNSUPPORTED, -325 } -326 -327 def except_op(self, expression): -328 if not expression.args.get("distinct", False): -329 self.unsupported("EXCEPT with All is not supported in Snowflake") -330 return super().except_op(expression) -331 -332 def intersect_op(self, expression): -333 if not expression.args.get("distinct", False): -334 self.unsupported("INTERSECT with All is not supported in Snowflake") -335 return super().intersect_op(expression) -336 -337 def values_sql(self, expression: exp.Values) -> str: -338 """Due to a bug in Snowflake we want to make sure that all columns in a VALUES table alias are unquoted. -339 -340 We also want to make sure that after we find matches where we need to unquote a column that we prevent users -341 from adding quotes to the column by using the `identify` argument when generating the SQL. -342 """ -343 alias = expression.args.get("alias") -344 if alias and alias.args.get("columns"): -345 expression = expression.transform( -346 lambda node: exp.Identifier(**{**node.args, "quoted": False}) -347 if isinstance(node, exp.Identifier) -348 and isinstance(node.parent, exp.TableAlias) -349 and node.arg_key == "columns" -350 else node, -351 ) -352 return self.no_identify(lambda: super(self.__class__, self).values_sql(expression)) -353 return super().values_sql(expression) +272 SINGLE_TOKENS = { +273 **tokens.Tokenizer.SINGLE_TOKENS, +274 "$": TokenType.PARAMETER, +275 } +276 +277 VAR_SINGLE_TOKENS = {"$"} +278 +279 class Generator(generator.Generator): +280 PARAMETER_TOKEN = "$" +281 MATCHED_BY_SOURCE = False +282 SINGLE_STRING_INTERVAL = True +283 JOIN_HINTS = False +284 TABLE_HINTS = False +285 +286 TRANSFORMS = { +287 **generator.Generator.TRANSFORMS, # type: ignore +288 exp.Array: inline_array_sql, +289 exp.ArrayConcat: rename_func("ARRAY_CAT"), +290 exp.ArrayJoin: rename_func("ARRAY_TO_STRING"), +291 exp.AtTimeZone: lambda self, e: self.func( +292 "CONVERT_TIMEZONE", e.args.get("zone"), e.this +293 ), +294 exp.DateAdd: lambda self, e: self.func("DATEADD", e.text("unit"), e.expression, e.this), +295 exp.DateDiff: lambda self, e: self.func( +296 "DATEDIFF", e.text("unit"), e.expression, e.this +297 ), +298 exp.DateStrToDate: datestrtodate_sql, +299 exp.DataType: _datatype_sql, +300 exp.DayOfWeek: rename_func("DAYOFWEEK"), +301 exp.If: rename_func("IFF"), +302 exp.LogicalAnd: rename_func("BOOLAND_AGG"), +303 exp.LogicalOr: rename_func("BOOLOR_AGG"), +304 exp.Map: lambda self, e: var_map_sql(self, e, "OBJECT_CONSTRUCT"), +305 exp.Max: max_or_greatest, +306 exp.Min: min_or_least, +307 exp.PartitionedByProperty: lambda self, e: f"PARTITION BY {self.sql(e, 'this')}", +308 exp.StarMap: rename_func("OBJECT_CONSTRUCT"), +309 exp.StrPosition: lambda self, e: self.func( +310 "POSITION", e.args.get("substr"), e.this, e.args.get("position") +311 ), +312 exp.StrToTime: lambda self, e: f"TO_TIMESTAMP({self.sql(e, 'this')}, {self.format_time(e)})", +313 exp.TimeStrToTime: timestrtotime_sql, +314 exp.TimeToUnix: lambda self, e: f"EXTRACT(epoch_second FROM {self.sql(e, 'this')})", +315 exp.TimeToStr: lambda self, e: self.func( +316 "TO_CHAR", exp.cast(e.this, "timestamp"), self.format_time(e) +317 ), +318 exp.TimestampTrunc: timestamptrunc_sql, +319 exp.ToChar: lambda self, e: self.function_fallback_sql(e), +320 exp.Trim: lambda self, e: self.func("TRIM", e.this, e.expression), +321 exp.TsOrDsToDate: ts_or_ds_to_date_sql("snowflake"), +322 exp.UnixToTime: _unix_to_time_sql, +323 exp.VarMap: lambda self, e: var_map_sql(self, e, "OBJECT_CONSTRUCT"), +324 } +325 +326 TYPE_MAPPING = { +327 **generator.Generator.TYPE_MAPPING, # type: ignore +328 exp.DataType.Type.TIMESTAMP: "TIMESTAMPNTZ", +329 } +330 +331 STAR_MAPPING = { +332 "except": "EXCLUDE", +333 "replace": "RENAME", +334 } +335 +336 PROPERTIES_LOCATION = { +337 **generator.Generator.PROPERTIES_LOCATION, # type: ignore +338 exp.SetProperty: exp.Properties.Location.UNSUPPORTED, +339 exp.VolatileProperty: exp.Properties.Location.UNSUPPORTED, +340 } +341 +342 def except_op(self, expression: exp.Except) -> str: +343 if not expression.args.get("distinct", False): +344 self.unsupported("EXCEPT with All is not supported in Snowflake") +345 return super().except_op(expression) +346 +347 def intersect_op(self, expression: exp.Intersect) -> str: +348 if not expression.args.get("distinct", False): +349 self.unsupported("INTERSECT with All is not supported in Snowflake") +350 return super().intersect_op(expression) +351 +352 def values_sql(self, expression: exp.Values) -> str: +353 """Due to a bug in Snowflake we want to make sure that all columns in a VALUES table alias are unquoted. 354 -355 def settag_sql(self, expression: exp.SetTag) -> str: -356 action = "UNSET" if expression.args.get("unset") else "SET" -357 return f"{action} TAG {self.expressions(expression)}" -358 -359 def select_sql(self, expression: exp.Select) -> str: -360 """Due to a bug in Snowflake we want to make sure that all columns in a VALUES table alias are unquoted and also -361 that all columns in a SELECT are unquoted. We also want to make sure that after we find matches where we need -362 to unquote a column that we prevent users from adding quotes to the column by using the `identify` argument when -363 generating the SQL. -364 -365 Note: We make an assumption that any columns referenced in a VALUES expression should be unquoted throughout the -366 expression. This might not be true in a case where the same column name can be sourced from another table that can -367 properly quote but should be true in most cases. -368 """ -369 values_identifiers = set( -370 flatten( -371 (v.args.get("alias") or exp.Alias()).args.get("columns", []) -372 for v in expression.find_all(exp.Values) -373 ) -374 ) -375 if values_identifiers: -376 expression = expression.transform( -377 lambda node: exp.Identifier(**{**node.args, "quoted": False}) -378 if isinstance(node, exp.Identifier) and node in values_identifiers -379 else node, -380 ) -381 return self.no_identify(lambda: super(self.__class__, self).select_sql(expression)) -382 return super().select_sql(expression) -383 -384 def describe_sql(self, expression: exp.Describe) -> str: -385 # Default to table if kind is unknown -386 kind_value = expression.args.get("kind") or "TABLE" -387 kind = f" {kind_value}" if kind_value else "" -388 this = f" {self.sql(expression, 'this')}" -389 return f"DESCRIBE{kind}{this}" -390 -391 def generatedasidentitycolumnconstraint_sql( -392 self, expression: exp.GeneratedAsIdentityColumnConstraint -393 ) -> str: -394 start = expression.args.get("start") -395 start = f" START {start}" if start else "" -396 increment = expression.args.get("increment") -397 increment = f" INCREMENT {increment}" if increment else "" -398 return f"AUTOINCREMENT{start}{increment}" +355 We also want to make sure that after we find matches where we need to unquote a column that we prevent users +356 from adding quotes to the column by using the `identify` argument when generating the SQL. +357 """ +358 alias = expression.args.get("alias") +359 if alias and alias.args.get("columns"): +360 expression = expression.transform( +361 lambda node: exp.Identifier(**{**node.args, "quoted": False}) +362 if isinstance(node, exp.Identifier) +363 and isinstance(node.parent, exp.TableAlias) +364 and node.arg_key == "columns" +365 else node, +366 ) +367 return self.no_identify(lambda: super(self.__class__, self).values_sql(expression)) +368 return super().values_sql(expression) +369 +370 def settag_sql(self, expression: exp.SetTag) -> str: +371 action = "UNSET" if expression.args.get("unset") else "SET" +372 return f"{action} TAG {self.expressions(expression)}" +373 +374 def select_sql(self, expression: exp.Select) -> str: +375 """Due to a bug in Snowflake we want to make sure that all columns in a VALUES table alias are unquoted and also +376 that all columns in a SELECT are unquoted. We also want to make sure that after we find matches where we need +377 to unquote a column that we prevent users from adding quotes to the column by using the `identify` argument when +378 generating the SQL. +379 +380 Note: We make an assumption that any columns referenced in a VALUES expression should be unquoted throughout the +381 expression. This might not be true in a case where the same column name can be sourced from another table that can +382 properly quote but should be true in most cases. +383 """ +384 values_identifiers = set( +385 flatten( +386 (v.args.get("alias") or exp.Alias()).args.get("columns", []) +387 for v in expression.find_all(exp.Values) +388 ) +389 ) +390 if values_identifiers: +391 expression = expression.transform( +392 lambda node: exp.Identifier(**{**node.args, "quoted": False}) +393 if isinstance(node, exp.Identifier) and node in values_identifiers +394 else node, +395 ) +396 return self.no_identify(lambda: super(self.__class__, self).select_sql(expression)) +397 return super().select_sql(expression) +398 +399 def describe_sql(self, expression: exp.Describe) -> str: +400 # Default to table if kind is unknown +401 kind_value = expression.args.get("kind") or "TABLE" +402 kind = f" {kind_value}" if kind_value else "" +403 this = f" {self.sql(expression, 'this')}" +404 return f"DESCRIBE{kind}{this}" +405 +406 def generatedasidentitycolumnconstraint_sql( +407 self, expression: exp.GeneratedAsIdentityColumnConstraint +408 ) -> str: +409 start = expression.args.get("start") +410 start = f" START {start}" if start else "" +411 increment = expression.args.get("increment") +412 increment = f" INCREMENT {increment}" if increment else "" +413 return f"AUTOINCREMENT{start}{increment}"
    @@ -511,263 +526,274 @@ -
    143class Snowflake(Dialect):
    -144    null_ordering = "nulls_are_large"
    -145    time_format = "'yyyy-mm-dd hh24:mi:ss'"
    -146
    -147    time_mapping = {
    -148        "YYYY": "%Y",
    -149        "yyyy": "%Y",
    -150        "YY": "%y",
    -151        "yy": "%y",
    -152        "MMMM": "%B",
    -153        "mmmm": "%B",
    -154        "MON": "%b",
    -155        "mon": "%b",
    -156        "MM": "%m",
    -157        "mm": "%m",
    -158        "DD": "%d",
    -159        "dd": "%d",
    -160        "d": "%-d",
    -161        "DY": "%w",
    -162        "dy": "%w",
    -163        "HH24": "%H",
    -164        "hh24": "%H",
    -165        "HH12": "%I",
    -166        "hh12": "%I",
    -167        "MI": "%M",
    -168        "mi": "%M",
    -169        "SS": "%S",
    -170        "ss": "%S",
    -171        "FF": "%f",
    -172        "ff": "%f",
    -173        "FF6": "%f",
    -174        "ff6": "%f",
    -175    }
    -176
    -177    class Parser(parser.Parser):
    -178        FUNCTIONS = {
    -179            **parser.Parser.FUNCTIONS,
    -180            "ARRAYAGG": exp.ArrayAgg.from_arg_list,
    -181            "ARRAY_CONSTRUCT": exp.Array.from_arg_list,
    -182            "ARRAY_TO_STRING": exp.ArrayJoin.from_arg_list,
    -183            "CONVERT_TIMEZONE": lambda args: exp.AtTimeZone(
    -184                this=seq_get(args, 1),
    -185                zone=seq_get(args, 0),
    -186            ),
    -187            "DATE_TRUNC": date_trunc_to_time,
    -188            "DATEADD": lambda args: exp.DateAdd(
    -189                this=seq_get(args, 2),
    -190                expression=seq_get(args, 1),
    -191                unit=seq_get(args, 0),
    -192            ),
    -193            "DATEDIFF": lambda args: exp.DateDiff(
    +            
    147class Snowflake(Dialect):
    +148    null_ordering = "nulls_are_large"
    +149    time_format = "'yyyy-mm-dd hh24:mi:ss'"
    +150
    +151    time_mapping = {
    +152        "YYYY": "%Y",
    +153        "yyyy": "%Y",
    +154        "YY": "%y",
    +155        "yy": "%y",
    +156        "MMMM": "%B",
    +157        "mmmm": "%B",
    +158        "MON": "%b",
    +159        "mon": "%b",
    +160        "MM": "%m",
    +161        "mm": "%m",
    +162        "DD": "%d",
    +163        "dd": "%-d",
    +164        "DY": "%a",
    +165        "dy": "%w",
    +166        "HH24": "%H",
    +167        "hh24": "%H",
    +168        "HH12": "%I",
    +169        "hh12": "%I",
    +170        "MI": "%M",
    +171        "mi": "%M",
    +172        "SS": "%S",
    +173        "ss": "%S",
    +174        "FF": "%f",
    +175        "ff": "%f",
    +176        "FF6": "%f",
    +177        "ff6": "%f",
    +178    }
    +179
    +180    class Parser(parser.Parser):
    +181        QUOTED_PIVOT_COLUMNS = True
    +182
    +183        FUNCTIONS = {
    +184            **parser.Parser.FUNCTIONS,
    +185            "ARRAYAGG": exp.ArrayAgg.from_arg_list,
    +186            "ARRAY_CONSTRUCT": exp.Array.from_arg_list,
    +187            "ARRAY_TO_STRING": exp.ArrayJoin.from_arg_list,
    +188            "CONVERT_TIMEZONE": lambda args: exp.AtTimeZone(
    +189                this=seq_get(args, 1),
    +190                zone=seq_get(args, 0),
    +191            ),
    +192            "DATE_TRUNC": date_trunc_to_time,
    +193            "DATEADD": lambda args: exp.DateAdd(
     194                this=seq_get(args, 2),
     195                expression=seq_get(args, 1),
     196                unit=seq_get(args, 0),
     197            ),
    -198            "DIV0": _div0_to_if,
    -199            "IFF": exp.If.from_arg_list,
    -200            "NULLIFZERO": _nullifzero_to_if,
    -201            "OBJECT_CONSTRUCT": parser.parse_var_map,
    -202            "RLIKE": exp.RegexpLike.from_arg_list,
    -203            "SQUARE": lambda args: exp.Pow(this=seq_get(args, 0), expression=exp.Literal.number(2)),
    -204            "TO_ARRAY": exp.Array.from_arg_list,
    -205            "TO_VARCHAR": exp.ToChar.from_arg_list,
    -206            "TO_TIMESTAMP": _snowflake_to_timestamp,
    -207            "ZEROIFNULL": _zeroifnull_to_if,
    -208        }
    -209
    -210        FUNCTION_PARSERS = {
    -211            **parser.Parser.FUNCTION_PARSERS,
    -212            "DATE_PART": _parse_date_part,
    +198            "DATEDIFF": lambda args: exp.DateDiff(
    +199                this=seq_get(args, 2),
    +200                expression=seq_get(args, 1),
    +201                unit=seq_get(args, 0),
    +202            ),
    +203            "DIV0": _div0_to_if,
    +204            "IFF": exp.If.from_arg_list,
    +205            "NULLIFZERO": _nullifzero_to_if,
    +206            "OBJECT_CONSTRUCT": parser.parse_var_map,
    +207            "RLIKE": exp.RegexpLike.from_arg_list,
    +208            "SQUARE": lambda args: exp.Pow(this=seq_get(args, 0), expression=exp.Literal.number(2)),
    +209            "TO_ARRAY": exp.Array.from_arg_list,
    +210            "TO_VARCHAR": exp.ToChar.from_arg_list,
    +211            "TO_TIMESTAMP": _snowflake_to_timestamp,
    +212            "ZEROIFNULL": _zeroifnull_to_if,
     213        }
    -214        FUNCTION_PARSERS.pop("TRIM")
    -215
    -216        FUNC_TOKENS = {
    -217            *parser.Parser.FUNC_TOKENS,
    -218            TokenType.RLIKE,
    -219            TokenType.TABLE,
    -220        }
    -221
    -222        COLUMN_OPERATORS = {
    -223            **parser.Parser.COLUMN_OPERATORS,  # type: ignore
    -224            TokenType.COLON: lambda self, this, path: self.expression(
    -225                exp.Bracket,
    -226                this=this,
    -227                expressions=[path],
    -228            ),
    -229        }
    -230
    -231        RANGE_PARSERS = {
    -232            **parser.Parser.RANGE_PARSERS,  # type: ignore
    -233            TokenType.LIKE_ANY: binary_range_parser(exp.LikeAny),
    -234            TokenType.ILIKE_ANY: binary_range_parser(exp.ILikeAny),
    -235        }
    -236
    -237        ALTER_PARSERS = {
    -238            **parser.Parser.ALTER_PARSERS,  # type: ignore
    -239            "UNSET": lambda self: self._parse_alter_table_set_tag(unset=True),
    -240            "SET": lambda self: self._parse_alter_table_set_tag(),
    -241        }
    -242
    -243        def _parse_alter_table_set_tag(self, unset: bool = False) -> exp.Expression:
    -244            self._match_text_seq("TAG")
    -245            parser = t.cast(t.Callable, self._parse_id_var if unset else self._parse_conjunction)
    -246            return self.expression(exp.SetTag, expressions=self._parse_csv(parser), unset=unset)
    +214
    +215        FUNCTION_PARSERS = {
    +216            **parser.Parser.FUNCTION_PARSERS,
    +217            "DATE_PART": _parse_date_part,
    +218        }
    +219        FUNCTION_PARSERS.pop("TRIM")
    +220
    +221        FUNC_TOKENS = {
    +222            *parser.Parser.FUNC_TOKENS,
    +223            TokenType.RLIKE,
    +224            TokenType.TABLE,
    +225        }
    +226
    +227        COLUMN_OPERATORS = {
    +228            **parser.Parser.COLUMN_OPERATORS,  # type: ignore
    +229            TokenType.COLON: lambda self, this, path: self.expression(
    +230                exp.Bracket,
    +231                this=this,
    +232                expressions=[path],
    +233            ),
    +234        }
    +235
    +236        RANGE_PARSERS = {
    +237            **parser.Parser.RANGE_PARSERS,  # type: ignore
    +238            TokenType.LIKE_ANY: binary_range_parser(exp.LikeAny),
    +239            TokenType.ILIKE_ANY: binary_range_parser(exp.ILikeAny),
    +240        }
    +241
    +242        ALTER_PARSERS = {
    +243            **parser.Parser.ALTER_PARSERS,  # type: ignore
    +244            "UNSET": lambda self: self._parse_alter_table_set_tag(unset=True),
    +245            "SET": lambda self: self._parse_alter_table_set_tag(),
    +246        }
     247
    -248    class Tokenizer(tokens.Tokenizer):
    -249        QUOTES = ["'", "$$"]
    -250        STRING_ESCAPES = ["\\", "'"]
    -251
    -252        KEYWORDS = {
    -253            **tokens.Tokenizer.KEYWORDS,
    -254            "EXCLUDE": TokenType.EXCEPT,
    -255            "ILIKE ANY": TokenType.ILIKE_ANY,
    -256            "LIKE ANY": TokenType.LIKE_ANY,
    -257            "MATCH_RECOGNIZE": TokenType.MATCH_RECOGNIZE,
    -258            "PUT": TokenType.COMMAND,
    -259            "RENAME": TokenType.REPLACE,
    -260            "TIMESTAMP_LTZ": TokenType.TIMESTAMPLTZ,
    -261            "TIMESTAMP_NTZ": TokenType.TIMESTAMP,
    -262            "TIMESTAMP_TZ": TokenType.TIMESTAMPTZ,
    -263            "TIMESTAMPNTZ": TokenType.TIMESTAMP,
    -264            "MINUS": TokenType.EXCEPT,
    -265            "SAMPLE": TokenType.TABLE_SAMPLE,
    -266        }
    -267
    -268        SINGLE_TOKENS = {
    -269            **tokens.Tokenizer.SINGLE_TOKENS,
    -270            "$": TokenType.PARAMETER,
    +248        def _parse_alter_table_set_tag(self, unset: bool = False) -> exp.Expression:
    +249            self._match_text_seq("TAG")
    +250            parser = t.cast(t.Callable, self._parse_id_var if unset else self._parse_conjunction)
    +251            return self.expression(exp.SetTag, expressions=self._parse_csv(parser), unset=unset)
    +252
    +253    class Tokenizer(tokens.Tokenizer):
    +254        QUOTES = ["'", "$$"]
    +255        STRING_ESCAPES = ["\\", "'"]
    +256
    +257        KEYWORDS = {
    +258            **tokens.Tokenizer.KEYWORDS,
    +259            "EXCLUDE": TokenType.EXCEPT,
    +260            "ILIKE ANY": TokenType.ILIKE_ANY,
    +261            "LIKE ANY": TokenType.LIKE_ANY,
    +262            "MATCH_RECOGNIZE": TokenType.MATCH_RECOGNIZE,
    +263            "PUT": TokenType.COMMAND,
    +264            "RENAME": TokenType.REPLACE,
    +265            "TIMESTAMP_LTZ": TokenType.TIMESTAMPLTZ,
    +266            "TIMESTAMP_NTZ": TokenType.TIMESTAMP,
    +267            "TIMESTAMP_TZ": TokenType.TIMESTAMPTZ,
    +268            "TIMESTAMPNTZ": TokenType.TIMESTAMP,
    +269            "MINUS": TokenType.EXCEPT,
    +270            "SAMPLE": TokenType.TABLE_SAMPLE,
     271        }
     272
    -273    class Generator(generator.Generator):
    -274        PARAMETER_TOKEN = "$"
    -275        MATCHED_BY_SOURCE = False
    -276
    -277        TRANSFORMS = {
    -278            **generator.Generator.TRANSFORMS,  # type: ignore
    -279            exp.Array: inline_array_sql,
    -280            exp.ArrayConcat: rename_func("ARRAY_CAT"),
    -281            exp.ArrayJoin: rename_func("ARRAY_TO_STRING"),
    -282            exp.AtTimeZone: lambda self, e: self.func(
    -283                "CONVERT_TIMEZONE", e.args.get("zone"), e.this
    -284            ),
    -285            exp.DateAdd: lambda self, e: self.func("DATEADD", e.text("unit"), e.expression, e.this),
    -286            exp.DateDiff: lambda self, e: self.func(
    -287                "DATEDIFF", e.text("unit"), e.expression, e.this
    -288            ),
    -289            exp.DateStrToDate: datestrtodate_sql,
    -290            exp.DataType: _datatype_sql,
    -291            exp.If: rename_func("IFF"),
    -292            exp.Map: lambda self, e: var_map_sql(self, e, "OBJECT_CONSTRUCT"),
    -293            exp.LogicalOr: rename_func("BOOLOR_AGG"),
    -294            exp.LogicalAnd: rename_func("BOOLAND_AGG"),
    -295            exp.VarMap: lambda self, e: var_map_sql(self, e, "OBJECT_CONSTRUCT"),
    -296            exp.PartitionedByProperty: lambda self, e: f"PARTITION BY {self.sql(e, 'this')}",
    -297            exp.StrPosition: lambda self, e: self.func(
    -298                "POSITION", e.args.get("substr"), e.this, e.args.get("position")
    -299            ),
    -300            exp.StrToTime: lambda self, e: f"TO_TIMESTAMP({self.sql(e, 'this')}, {self.format_time(e)})",
    -301            exp.TimestampTrunc: timestamptrunc_sql,
    -302            exp.TimeStrToTime: timestrtotime_sql,
    -303            exp.TimeToUnix: lambda self, e: f"EXTRACT(epoch_second FROM {self.sql(e, 'this')})",
    -304            exp.Trim: lambda self, e: self.func("TRIM", e.this, e.expression),
    -305            exp.ToChar: lambda self, e: self.function_fallback_sql(e),
    -306            exp.TsOrDsToDate: ts_or_ds_to_date_sql("snowflake"),
    -307            exp.UnixToTime: _unix_to_time_sql,
    -308            exp.DayOfWeek: rename_func("DAYOFWEEK"),
    -309            exp.Max: max_or_greatest,
    -310            exp.Min: min_or_least,
    -311        }
    -312
    -313        TYPE_MAPPING = {
    -314            **generator.Generator.TYPE_MAPPING,  # type: ignore
    -315            exp.DataType.Type.TIMESTAMP: "TIMESTAMPNTZ",
    -316        }
    -317
    -318        STAR_MAPPING = {
    -319            "except": "EXCLUDE",
    -320            "replace": "RENAME",
    -321        }
    -322
    -323        PROPERTIES_LOCATION = {
    -324            **generator.Generator.PROPERTIES_LOCATION,  # type: ignore
    -325            exp.SetProperty: exp.Properties.Location.UNSUPPORTED,
    -326        }
    -327
    -328        def except_op(self, expression):
    -329            if not expression.args.get("distinct", False):
    -330                self.unsupported("EXCEPT with All is not supported in Snowflake")
    -331            return super().except_op(expression)
    -332
    -333        def intersect_op(self, expression):
    -334            if not expression.args.get("distinct", False):
    -335                self.unsupported("INTERSECT with All is not supported in Snowflake")
    -336            return super().intersect_op(expression)
    -337
    -338        def values_sql(self, expression: exp.Values) -> str:
    -339            """Due to a bug in Snowflake we want to make sure that all columns in a VALUES table alias are unquoted.
    -340
    -341            We also want to make sure that after we find matches where we need to unquote a column that we prevent users
    -342            from adding quotes to the column by using the `identify` argument when generating the SQL.
    -343            """
    -344            alias = expression.args.get("alias")
    -345            if alias and alias.args.get("columns"):
    -346                expression = expression.transform(
    -347                    lambda node: exp.Identifier(**{**node.args, "quoted": False})
    -348                    if isinstance(node, exp.Identifier)
    -349                    and isinstance(node.parent, exp.TableAlias)
    -350                    and node.arg_key == "columns"
    -351                    else node,
    -352                )
    -353                return self.no_identify(lambda: super(self.__class__, self).values_sql(expression))
    -354            return super().values_sql(expression)
    +273        SINGLE_TOKENS = {
    +274            **tokens.Tokenizer.SINGLE_TOKENS,
    +275            "$": TokenType.PARAMETER,
    +276        }
    +277
    +278        VAR_SINGLE_TOKENS = {"$"}
    +279
    +280    class Generator(generator.Generator):
    +281        PARAMETER_TOKEN = "$"
    +282        MATCHED_BY_SOURCE = False
    +283        SINGLE_STRING_INTERVAL = True
    +284        JOIN_HINTS = False
    +285        TABLE_HINTS = False
    +286
    +287        TRANSFORMS = {
    +288            **generator.Generator.TRANSFORMS,  # type: ignore
    +289            exp.Array: inline_array_sql,
    +290            exp.ArrayConcat: rename_func("ARRAY_CAT"),
    +291            exp.ArrayJoin: rename_func("ARRAY_TO_STRING"),
    +292            exp.AtTimeZone: lambda self, e: self.func(
    +293                "CONVERT_TIMEZONE", e.args.get("zone"), e.this
    +294            ),
    +295            exp.DateAdd: lambda self, e: self.func("DATEADD", e.text("unit"), e.expression, e.this),
    +296            exp.DateDiff: lambda self, e: self.func(
    +297                "DATEDIFF", e.text("unit"), e.expression, e.this
    +298            ),
    +299            exp.DateStrToDate: datestrtodate_sql,
    +300            exp.DataType: _datatype_sql,
    +301            exp.DayOfWeek: rename_func("DAYOFWEEK"),
    +302            exp.If: rename_func("IFF"),
    +303            exp.LogicalAnd: rename_func("BOOLAND_AGG"),
    +304            exp.LogicalOr: rename_func("BOOLOR_AGG"),
    +305            exp.Map: lambda self, e: var_map_sql(self, e, "OBJECT_CONSTRUCT"),
    +306            exp.Max: max_or_greatest,
    +307            exp.Min: min_or_least,
    +308            exp.PartitionedByProperty: lambda self, e: f"PARTITION BY {self.sql(e, 'this')}",
    +309            exp.StarMap: rename_func("OBJECT_CONSTRUCT"),
    +310            exp.StrPosition: lambda self, e: self.func(
    +311                "POSITION", e.args.get("substr"), e.this, e.args.get("position")
    +312            ),
    +313            exp.StrToTime: lambda self, e: f"TO_TIMESTAMP({self.sql(e, 'this')}, {self.format_time(e)})",
    +314            exp.TimeStrToTime: timestrtotime_sql,
    +315            exp.TimeToUnix: lambda self, e: f"EXTRACT(epoch_second FROM {self.sql(e, 'this')})",
    +316            exp.TimeToStr: lambda self, e: self.func(
    +317                "TO_CHAR", exp.cast(e.this, "timestamp"), self.format_time(e)
    +318            ),
    +319            exp.TimestampTrunc: timestamptrunc_sql,
    +320            exp.ToChar: lambda self, e: self.function_fallback_sql(e),
    +321            exp.Trim: lambda self, e: self.func("TRIM", e.this, e.expression),
    +322            exp.TsOrDsToDate: ts_or_ds_to_date_sql("snowflake"),
    +323            exp.UnixToTime: _unix_to_time_sql,
    +324            exp.VarMap: lambda self, e: var_map_sql(self, e, "OBJECT_CONSTRUCT"),
    +325        }
    +326
    +327        TYPE_MAPPING = {
    +328            **generator.Generator.TYPE_MAPPING,  # type: ignore
    +329            exp.DataType.Type.TIMESTAMP: "TIMESTAMPNTZ",
    +330        }
    +331
    +332        STAR_MAPPING = {
    +333            "except": "EXCLUDE",
    +334            "replace": "RENAME",
    +335        }
    +336
    +337        PROPERTIES_LOCATION = {
    +338            **generator.Generator.PROPERTIES_LOCATION,  # type: ignore
    +339            exp.SetProperty: exp.Properties.Location.UNSUPPORTED,
    +340            exp.VolatileProperty: exp.Properties.Location.UNSUPPORTED,
    +341        }
    +342
    +343        def except_op(self, expression: exp.Except) -> str:
    +344            if not expression.args.get("distinct", False):
    +345                self.unsupported("EXCEPT with All is not supported in Snowflake")
    +346            return super().except_op(expression)
    +347
    +348        def intersect_op(self, expression: exp.Intersect) -> str:
    +349            if not expression.args.get("distinct", False):
    +350                self.unsupported("INTERSECT with All is not supported in Snowflake")
    +351            return super().intersect_op(expression)
    +352
    +353        def values_sql(self, expression: exp.Values) -> str:
    +354            """Due to a bug in Snowflake we want to make sure that all columns in a VALUES table alias are unquoted.
     355
    -356        def settag_sql(self, expression: exp.SetTag) -> str:
    -357            action = "UNSET" if expression.args.get("unset") else "SET"
    -358            return f"{action} TAG {self.expressions(expression)}"
    -359
    -360        def select_sql(self, expression: exp.Select) -> str:
    -361            """Due to a bug in Snowflake we want to make sure that all columns in a VALUES table alias are unquoted and also
    -362            that all columns in a SELECT are unquoted. We also want to make sure that after we find matches where we need
    -363            to unquote a column that we prevent users from adding quotes to the column by using the `identify` argument when
    -364            generating the SQL.
    -365
    -366            Note: We make an assumption that any columns referenced in a VALUES expression should be unquoted throughout the
    -367            expression. This might not be true in a case where the same column name can be sourced from another table that can
    -368            properly quote but should be true in most cases.
    -369            """
    -370            values_identifiers = set(
    -371                flatten(
    -372                    (v.args.get("alias") or exp.Alias()).args.get("columns", [])
    -373                    for v in expression.find_all(exp.Values)
    -374                )
    -375            )
    -376            if values_identifiers:
    -377                expression = expression.transform(
    -378                    lambda node: exp.Identifier(**{**node.args, "quoted": False})
    -379                    if isinstance(node, exp.Identifier) and node in values_identifiers
    -380                    else node,
    -381                )
    -382                return self.no_identify(lambda: super(self.__class__, self).select_sql(expression))
    -383            return super().select_sql(expression)
    -384
    -385        def describe_sql(self, expression: exp.Describe) -> str:
    -386            # Default to table if kind is unknown
    -387            kind_value = expression.args.get("kind") or "TABLE"
    -388            kind = f" {kind_value}" if kind_value else ""
    -389            this = f" {self.sql(expression, 'this')}"
    -390            return f"DESCRIBE{kind}{this}"
    -391
    -392        def generatedasidentitycolumnconstraint_sql(
    -393            self, expression: exp.GeneratedAsIdentityColumnConstraint
    -394        ) -> str:
    -395            start = expression.args.get("start")
    -396            start = f" START {start}" if start else ""
    -397            increment = expression.args.get("increment")
    -398            increment = f" INCREMENT {increment}" if increment else ""
    -399            return f"AUTOINCREMENT{start}{increment}"
    +356            We also want to make sure that after we find matches where we need to unquote a column that we prevent users
    +357            from adding quotes to the column by using the `identify` argument when generating the SQL.
    +358            """
    +359            alias = expression.args.get("alias")
    +360            if alias and alias.args.get("columns"):
    +361                expression = expression.transform(
    +362                    lambda node: exp.Identifier(**{**node.args, "quoted": False})
    +363                    if isinstance(node, exp.Identifier)
    +364                    and isinstance(node.parent, exp.TableAlias)
    +365                    and node.arg_key == "columns"
    +366                    else node,
    +367                )
    +368                return self.no_identify(lambda: super(self.__class__, self).values_sql(expression))
    +369            return super().values_sql(expression)
    +370
    +371        def settag_sql(self, expression: exp.SetTag) -> str:
    +372            action = "UNSET" if expression.args.get("unset") else "SET"
    +373            return f"{action} TAG {self.expressions(expression)}"
    +374
    +375        def select_sql(self, expression: exp.Select) -> str:
    +376            """Due to a bug in Snowflake we want to make sure that all columns in a VALUES table alias are unquoted and also
    +377            that all columns in a SELECT are unquoted. We also want to make sure that after we find matches where we need
    +378            to unquote a column that we prevent users from adding quotes to the column by using the `identify` argument when
    +379            generating the SQL.
    +380
    +381            Note: We make an assumption that any columns referenced in a VALUES expression should be unquoted throughout the
    +382            expression. This might not be true in a case where the same column name can be sourced from another table that can
    +383            properly quote but should be true in most cases.
    +384            """
    +385            values_identifiers = set(
    +386                flatten(
    +387                    (v.args.get("alias") or exp.Alias()).args.get("columns", [])
    +388                    for v in expression.find_all(exp.Values)
    +389                )
    +390            )
    +391            if values_identifiers:
    +392                expression = expression.transform(
    +393                    lambda node: exp.Identifier(**{**node.args, "quoted": False})
    +394                    if isinstance(node, exp.Identifier) and node in values_identifiers
    +395                    else node,
    +396                )
    +397                return self.no_identify(lambda: super(self.__class__, self).select_sql(expression))
    +398            return super().select_sql(expression)
    +399
    +400        def describe_sql(self, expression: exp.Describe) -> str:
    +401            # Default to table if kind is unknown
    +402            kind_value = expression.args.get("kind") or "TABLE"
    +403            kind = f" {kind_value}" if kind_value else ""
    +404            this = f" {self.sql(expression, 'this')}"
    +405            return f"DESCRIBE{kind}{this}"
    +406
    +407        def generatedasidentitycolumnconstraint_sql(
    +408            self, expression: exp.GeneratedAsIdentityColumnConstraint
    +409        ) -> str:
    +410            start = expression.args.get("start")
    +411            start = f" START {start}" if start else ""
    +412            increment = expression.args.get("increment")
    +413            increment = f" INCREMENT {increment}" if increment else ""
    +414            return f"AUTOINCREMENT{start}{increment}"
     
    @@ -802,76 +828,78 @@
    -
    177    class Parser(parser.Parser):
    -178        FUNCTIONS = {
    -179            **parser.Parser.FUNCTIONS,
    -180            "ARRAYAGG": exp.ArrayAgg.from_arg_list,
    -181            "ARRAY_CONSTRUCT": exp.Array.from_arg_list,
    -182            "ARRAY_TO_STRING": exp.ArrayJoin.from_arg_list,
    -183            "CONVERT_TIMEZONE": lambda args: exp.AtTimeZone(
    -184                this=seq_get(args, 1),
    -185                zone=seq_get(args, 0),
    -186            ),
    -187            "DATE_TRUNC": date_trunc_to_time,
    -188            "DATEADD": lambda args: exp.DateAdd(
    -189                this=seq_get(args, 2),
    -190                expression=seq_get(args, 1),
    -191                unit=seq_get(args, 0),
    -192            ),
    -193            "DATEDIFF": lambda args: exp.DateDiff(
    +            
    180    class Parser(parser.Parser):
    +181        QUOTED_PIVOT_COLUMNS = True
    +182
    +183        FUNCTIONS = {
    +184            **parser.Parser.FUNCTIONS,
    +185            "ARRAYAGG": exp.ArrayAgg.from_arg_list,
    +186            "ARRAY_CONSTRUCT": exp.Array.from_arg_list,
    +187            "ARRAY_TO_STRING": exp.ArrayJoin.from_arg_list,
    +188            "CONVERT_TIMEZONE": lambda args: exp.AtTimeZone(
    +189                this=seq_get(args, 1),
    +190                zone=seq_get(args, 0),
    +191            ),
    +192            "DATE_TRUNC": date_trunc_to_time,
    +193            "DATEADD": lambda args: exp.DateAdd(
     194                this=seq_get(args, 2),
     195                expression=seq_get(args, 1),
     196                unit=seq_get(args, 0),
     197            ),
    -198            "DIV0": _div0_to_if,
    -199            "IFF": exp.If.from_arg_list,
    -200            "NULLIFZERO": _nullifzero_to_if,
    -201            "OBJECT_CONSTRUCT": parser.parse_var_map,
    -202            "RLIKE": exp.RegexpLike.from_arg_list,
    -203            "SQUARE": lambda args: exp.Pow(this=seq_get(args, 0), expression=exp.Literal.number(2)),
    -204            "TO_ARRAY": exp.Array.from_arg_list,
    -205            "TO_VARCHAR": exp.ToChar.from_arg_list,
    -206            "TO_TIMESTAMP": _snowflake_to_timestamp,
    -207            "ZEROIFNULL": _zeroifnull_to_if,
    -208        }
    -209
    -210        FUNCTION_PARSERS = {
    -211            **parser.Parser.FUNCTION_PARSERS,
    -212            "DATE_PART": _parse_date_part,
    +198            "DATEDIFF": lambda args: exp.DateDiff(
    +199                this=seq_get(args, 2),
    +200                expression=seq_get(args, 1),
    +201                unit=seq_get(args, 0),
    +202            ),
    +203            "DIV0": _div0_to_if,
    +204            "IFF": exp.If.from_arg_list,
    +205            "NULLIFZERO": _nullifzero_to_if,
    +206            "OBJECT_CONSTRUCT": parser.parse_var_map,
    +207            "RLIKE": exp.RegexpLike.from_arg_list,
    +208            "SQUARE": lambda args: exp.Pow(this=seq_get(args, 0), expression=exp.Literal.number(2)),
    +209            "TO_ARRAY": exp.Array.from_arg_list,
    +210            "TO_VARCHAR": exp.ToChar.from_arg_list,
    +211            "TO_TIMESTAMP": _snowflake_to_timestamp,
    +212            "ZEROIFNULL": _zeroifnull_to_if,
     213        }
    -214        FUNCTION_PARSERS.pop("TRIM")
    -215
    -216        FUNC_TOKENS = {
    -217            *parser.Parser.FUNC_TOKENS,
    -218            TokenType.RLIKE,
    -219            TokenType.TABLE,
    -220        }
    -221
    -222        COLUMN_OPERATORS = {
    -223            **parser.Parser.COLUMN_OPERATORS,  # type: ignore
    -224            TokenType.COLON: lambda self, this, path: self.expression(
    -225                exp.Bracket,
    -226                this=this,
    -227                expressions=[path],
    -228            ),
    -229        }
    -230
    -231        RANGE_PARSERS = {
    -232            **parser.Parser.RANGE_PARSERS,  # type: ignore
    -233            TokenType.LIKE_ANY: binary_range_parser(exp.LikeAny),
    -234            TokenType.ILIKE_ANY: binary_range_parser(exp.ILikeAny),
    -235        }
    -236
    -237        ALTER_PARSERS = {
    -238            **parser.Parser.ALTER_PARSERS,  # type: ignore
    -239            "UNSET": lambda self: self._parse_alter_table_set_tag(unset=True),
    -240            "SET": lambda self: self._parse_alter_table_set_tag(),
    -241        }
    -242
    -243        def _parse_alter_table_set_tag(self, unset: bool = False) -> exp.Expression:
    -244            self._match_text_seq("TAG")
    -245            parser = t.cast(t.Callable, self._parse_id_var if unset else self._parse_conjunction)
    -246            return self.expression(exp.SetTag, expressions=self._parse_csv(parser), unset=unset)
    +214
    +215        FUNCTION_PARSERS = {
    +216            **parser.Parser.FUNCTION_PARSERS,
    +217            "DATE_PART": _parse_date_part,
    +218        }
    +219        FUNCTION_PARSERS.pop("TRIM")
    +220
    +221        FUNC_TOKENS = {
    +222            *parser.Parser.FUNC_TOKENS,
    +223            TokenType.RLIKE,
    +224            TokenType.TABLE,
    +225        }
    +226
    +227        COLUMN_OPERATORS = {
    +228            **parser.Parser.COLUMN_OPERATORS,  # type: ignore
    +229            TokenType.COLON: lambda self, this, path: self.expression(
    +230                exp.Bracket,
    +231                this=this,
    +232                expressions=[path],
    +233            ),
    +234        }
    +235
    +236        RANGE_PARSERS = {
    +237            **parser.Parser.RANGE_PARSERS,  # type: ignore
    +238            TokenType.LIKE_ANY: binary_range_parser(exp.LikeAny),
    +239            TokenType.ILIKE_ANY: binary_range_parser(exp.ILikeAny),
    +240        }
    +241
    +242        ALTER_PARSERS = {
    +243            **parser.Parser.ALTER_PARSERS,  # type: ignore
    +244            "UNSET": lambda self: self._parse_alter_table_set_tag(unset=True),
    +245            "SET": lambda self: self._parse_alter_table_set_tag(),
    +246        }
    +247
    +248        def _parse_alter_table_set_tag(self, unset: bool = False) -> exp.Expression:
    +249            self._match_text_seq("TAG")
    +250            parser = t.cast(t.Callable, self._parse_id_var if unset else self._parse_conjunction)
    +251            return self.expression(exp.SetTag, expressions=self._parse_csv(parser), unset=unset)
     
    @@ -928,30 +956,32 @@ Default: "nulls_are_small"
    -
    248    class Tokenizer(tokens.Tokenizer):
    -249        QUOTES = ["'", "$$"]
    -250        STRING_ESCAPES = ["\\", "'"]
    -251
    -252        KEYWORDS = {
    -253            **tokens.Tokenizer.KEYWORDS,
    -254            "EXCLUDE": TokenType.EXCEPT,
    -255            "ILIKE ANY": TokenType.ILIKE_ANY,
    -256            "LIKE ANY": TokenType.LIKE_ANY,
    -257            "MATCH_RECOGNIZE": TokenType.MATCH_RECOGNIZE,
    -258            "PUT": TokenType.COMMAND,
    -259            "RENAME": TokenType.REPLACE,
    -260            "TIMESTAMP_LTZ": TokenType.TIMESTAMPLTZ,
    -261            "TIMESTAMP_NTZ": TokenType.TIMESTAMP,
    -262            "TIMESTAMP_TZ": TokenType.TIMESTAMPTZ,
    -263            "TIMESTAMPNTZ": TokenType.TIMESTAMP,
    -264            "MINUS": TokenType.EXCEPT,
    -265            "SAMPLE": TokenType.TABLE_SAMPLE,
    -266        }
    -267
    -268        SINGLE_TOKENS = {
    -269            **tokens.Tokenizer.SINGLE_TOKENS,
    -270            "$": TokenType.PARAMETER,
    +            
    253    class Tokenizer(tokens.Tokenizer):
    +254        QUOTES = ["'", "$$"]
    +255        STRING_ESCAPES = ["\\", "'"]
    +256
    +257        KEYWORDS = {
    +258            **tokens.Tokenizer.KEYWORDS,
    +259            "EXCLUDE": TokenType.EXCEPT,
    +260            "ILIKE ANY": TokenType.ILIKE_ANY,
    +261            "LIKE ANY": TokenType.LIKE_ANY,
    +262            "MATCH_RECOGNIZE": TokenType.MATCH_RECOGNIZE,
    +263            "PUT": TokenType.COMMAND,
    +264            "RENAME": TokenType.REPLACE,
    +265            "TIMESTAMP_LTZ": TokenType.TIMESTAMPLTZ,
    +266            "TIMESTAMP_NTZ": TokenType.TIMESTAMP,
    +267            "TIMESTAMP_TZ": TokenType.TIMESTAMPTZ,
    +268            "TIMESTAMPNTZ": TokenType.TIMESTAMP,
    +269            "MINUS": TokenType.EXCEPT,
    +270            "SAMPLE": TokenType.TABLE_SAMPLE,
     271        }
    +272
    +273        SINGLE_TOKENS = {
    +274            **tokens.Tokenizer.SINGLE_TOKENS,
    +275            "$": TokenType.PARAMETER,
    +276        }
    +277
    +278        VAR_SINGLE_TOKENS = {"$"}
     
    @@ -979,133 +1009,141 @@ Default: "nulls_are_small"
    -
    273    class Generator(generator.Generator):
    -274        PARAMETER_TOKEN = "$"
    -275        MATCHED_BY_SOURCE = False
    -276
    -277        TRANSFORMS = {
    -278            **generator.Generator.TRANSFORMS,  # type: ignore
    -279            exp.Array: inline_array_sql,
    -280            exp.ArrayConcat: rename_func("ARRAY_CAT"),
    -281            exp.ArrayJoin: rename_func("ARRAY_TO_STRING"),
    -282            exp.AtTimeZone: lambda self, e: self.func(
    -283                "CONVERT_TIMEZONE", e.args.get("zone"), e.this
    -284            ),
    -285            exp.DateAdd: lambda self, e: self.func("DATEADD", e.text("unit"), e.expression, e.this),
    -286            exp.DateDiff: lambda self, e: self.func(
    -287                "DATEDIFF", e.text("unit"), e.expression, e.this
    -288            ),
    -289            exp.DateStrToDate: datestrtodate_sql,
    -290            exp.DataType: _datatype_sql,
    -291            exp.If: rename_func("IFF"),
    -292            exp.Map: lambda self, e: var_map_sql(self, e, "OBJECT_CONSTRUCT"),
    -293            exp.LogicalOr: rename_func("BOOLOR_AGG"),
    -294            exp.LogicalAnd: rename_func("BOOLAND_AGG"),
    -295            exp.VarMap: lambda self, e: var_map_sql(self, e, "OBJECT_CONSTRUCT"),
    -296            exp.PartitionedByProperty: lambda self, e: f"PARTITION BY {self.sql(e, 'this')}",
    -297            exp.StrPosition: lambda self, e: self.func(
    -298                "POSITION", e.args.get("substr"), e.this, e.args.get("position")
    -299            ),
    -300            exp.StrToTime: lambda self, e: f"TO_TIMESTAMP({self.sql(e, 'this')}, {self.format_time(e)})",
    -301            exp.TimestampTrunc: timestamptrunc_sql,
    -302            exp.TimeStrToTime: timestrtotime_sql,
    -303            exp.TimeToUnix: lambda self, e: f"EXTRACT(epoch_second FROM {self.sql(e, 'this')})",
    -304            exp.Trim: lambda self, e: self.func("TRIM", e.this, e.expression),
    -305            exp.ToChar: lambda self, e: self.function_fallback_sql(e),
    -306            exp.TsOrDsToDate: ts_or_ds_to_date_sql("snowflake"),
    -307            exp.UnixToTime: _unix_to_time_sql,
    -308            exp.DayOfWeek: rename_func("DAYOFWEEK"),
    -309            exp.Max: max_or_greatest,
    -310            exp.Min: min_or_least,
    -311        }
    -312
    -313        TYPE_MAPPING = {
    -314            **generator.Generator.TYPE_MAPPING,  # type: ignore
    -315            exp.DataType.Type.TIMESTAMP: "TIMESTAMPNTZ",
    -316        }
    -317
    -318        STAR_MAPPING = {
    -319            "except": "EXCLUDE",
    -320            "replace": "RENAME",
    -321        }
    -322
    -323        PROPERTIES_LOCATION = {
    -324            **generator.Generator.PROPERTIES_LOCATION,  # type: ignore
    -325            exp.SetProperty: exp.Properties.Location.UNSUPPORTED,
    -326        }
    -327
    -328        def except_op(self, expression):
    -329            if not expression.args.get("distinct", False):
    -330                self.unsupported("EXCEPT with All is not supported in Snowflake")
    -331            return super().except_op(expression)
    -332
    -333        def intersect_op(self, expression):
    -334            if not expression.args.get("distinct", False):
    -335                self.unsupported("INTERSECT with All is not supported in Snowflake")
    -336            return super().intersect_op(expression)
    -337
    -338        def values_sql(self, expression: exp.Values) -> str:
    -339            """Due to a bug in Snowflake we want to make sure that all columns in a VALUES table alias are unquoted.
    -340
    -341            We also want to make sure that after we find matches where we need to unquote a column that we prevent users
    -342            from adding quotes to the column by using the `identify` argument when generating the SQL.
    -343            """
    -344            alias = expression.args.get("alias")
    -345            if alias and alias.args.get("columns"):
    -346                expression = expression.transform(
    -347                    lambda node: exp.Identifier(**{**node.args, "quoted": False})
    -348                    if isinstance(node, exp.Identifier)
    -349                    and isinstance(node.parent, exp.TableAlias)
    -350                    and node.arg_key == "columns"
    -351                    else node,
    -352                )
    -353                return self.no_identify(lambda: super(self.__class__, self).values_sql(expression))
    -354            return super().values_sql(expression)
    +            
    280    class Generator(generator.Generator):
    +281        PARAMETER_TOKEN = "$"
    +282        MATCHED_BY_SOURCE = False
    +283        SINGLE_STRING_INTERVAL = True
    +284        JOIN_HINTS = False
    +285        TABLE_HINTS = False
    +286
    +287        TRANSFORMS = {
    +288            **generator.Generator.TRANSFORMS,  # type: ignore
    +289            exp.Array: inline_array_sql,
    +290            exp.ArrayConcat: rename_func("ARRAY_CAT"),
    +291            exp.ArrayJoin: rename_func("ARRAY_TO_STRING"),
    +292            exp.AtTimeZone: lambda self, e: self.func(
    +293                "CONVERT_TIMEZONE", e.args.get("zone"), e.this
    +294            ),
    +295            exp.DateAdd: lambda self, e: self.func("DATEADD", e.text("unit"), e.expression, e.this),
    +296            exp.DateDiff: lambda self, e: self.func(
    +297                "DATEDIFF", e.text("unit"), e.expression, e.this
    +298            ),
    +299            exp.DateStrToDate: datestrtodate_sql,
    +300            exp.DataType: _datatype_sql,
    +301            exp.DayOfWeek: rename_func("DAYOFWEEK"),
    +302            exp.If: rename_func("IFF"),
    +303            exp.LogicalAnd: rename_func("BOOLAND_AGG"),
    +304            exp.LogicalOr: rename_func("BOOLOR_AGG"),
    +305            exp.Map: lambda self, e: var_map_sql(self, e, "OBJECT_CONSTRUCT"),
    +306            exp.Max: max_or_greatest,
    +307            exp.Min: min_or_least,
    +308            exp.PartitionedByProperty: lambda self, e: f"PARTITION BY {self.sql(e, 'this')}",
    +309            exp.StarMap: rename_func("OBJECT_CONSTRUCT"),
    +310            exp.StrPosition: lambda self, e: self.func(
    +311                "POSITION", e.args.get("substr"), e.this, e.args.get("position")
    +312            ),
    +313            exp.StrToTime: lambda self, e: f"TO_TIMESTAMP({self.sql(e, 'this')}, {self.format_time(e)})",
    +314            exp.TimeStrToTime: timestrtotime_sql,
    +315            exp.TimeToUnix: lambda self, e: f"EXTRACT(epoch_second FROM {self.sql(e, 'this')})",
    +316            exp.TimeToStr: lambda self, e: self.func(
    +317                "TO_CHAR", exp.cast(e.this, "timestamp"), self.format_time(e)
    +318            ),
    +319            exp.TimestampTrunc: timestamptrunc_sql,
    +320            exp.ToChar: lambda self, e: self.function_fallback_sql(e),
    +321            exp.Trim: lambda self, e: self.func("TRIM", e.this, e.expression),
    +322            exp.TsOrDsToDate: ts_or_ds_to_date_sql("snowflake"),
    +323            exp.UnixToTime: _unix_to_time_sql,
    +324            exp.VarMap: lambda self, e: var_map_sql(self, e, "OBJECT_CONSTRUCT"),
    +325        }
    +326
    +327        TYPE_MAPPING = {
    +328            **generator.Generator.TYPE_MAPPING,  # type: ignore
    +329            exp.DataType.Type.TIMESTAMP: "TIMESTAMPNTZ",
    +330        }
    +331
    +332        STAR_MAPPING = {
    +333            "except": "EXCLUDE",
    +334            "replace": "RENAME",
    +335        }
    +336
    +337        PROPERTIES_LOCATION = {
    +338            **generator.Generator.PROPERTIES_LOCATION,  # type: ignore
    +339            exp.SetProperty: exp.Properties.Location.UNSUPPORTED,
    +340            exp.VolatileProperty: exp.Properties.Location.UNSUPPORTED,
    +341        }
    +342
    +343        def except_op(self, expression: exp.Except) -> str:
    +344            if not expression.args.get("distinct", False):
    +345                self.unsupported("EXCEPT with All is not supported in Snowflake")
    +346            return super().except_op(expression)
    +347
    +348        def intersect_op(self, expression: exp.Intersect) -> str:
    +349            if not expression.args.get("distinct", False):
    +350                self.unsupported("INTERSECT with All is not supported in Snowflake")
    +351            return super().intersect_op(expression)
    +352
    +353        def values_sql(self, expression: exp.Values) -> str:
    +354            """Due to a bug in Snowflake we want to make sure that all columns in a VALUES table alias are unquoted.
     355
    -356        def settag_sql(self, expression: exp.SetTag) -> str:
    -357            action = "UNSET" if expression.args.get("unset") else "SET"
    -358            return f"{action} TAG {self.expressions(expression)}"
    -359
    -360        def select_sql(self, expression: exp.Select) -> str:
    -361            """Due to a bug in Snowflake we want to make sure that all columns in a VALUES table alias are unquoted and also
    -362            that all columns in a SELECT are unquoted. We also want to make sure that after we find matches where we need
    -363            to unquote a column that we prevent users from adding quotes to the column by using the `identify` argument when
    -364            generating the SQL.
    -365
    -366            Note: We make an assumption that any columns referenced in a VALUES expression should be unquoted throughout the
    -367            expression. This might not be true in a case where the same column name can be sourced from another table that can
    -368            properly quote but should be true in most cases.
    -369            """
    -370            values_identifiers = set(
    -371                flatten(
    -372                    (v.args.get("alias") or exp.Alias()).args.get("columns", [])
    -373                    for v in expression.find_all(exp.Values)
    -374                )
    -375            )
    -376            if values_identifiers:
    -377                expression = expression.transform(
    -378                    lambda node: exp.Identifier(**{**node.args, "quoted": False})
    -379                    if isinstance(node, exp.Identifier) and node in values_identifiers
    -380                    else node,
    -381                )
    -382                return self.no_identify(lambda: super(self.__class__, self).select_sql(expression))
    -383            return super().select_sql(expression)
    -384
    -385        def describe_sql(self, expression: exp.Describe) -> str:
    -386            # Default to table if kind is unknown
    -387            kind_value = expression.args.get("kind") or "TABLE"
    -388            kind = f" {kind_value}" if kind_value else ""
    -389            this = f" {self.sql(expression, 'this')}"
    -390            return f"DESCRIBE{kind}{this}"
    -391
    -392        def generatedasidentitycolumnconstraint_sql(
    -393            self, expression: exp.GeneratedAsIdentityColumnConstraint
    -394        ) -> str:
    -395            start = expression.args.get("start")
    -396            start = f" START {start}" if start else ""
    -397            increment = expression.args.get("increment")
    -398            increment = f" INCREMENT {increment}" if increment else ""
    -399            return f"AUTOINCREMENT{start}{increment}"
    +356            We also want to make sure that after we find matches where we need to unquote a column that we prevent users
    +357            from adding quotes to the column by using the `identify` argument when generating the SQL.
    +358            """
    +359            alias = expression.args.get("alias")
    +360            if alias and alias.args.get("columns"):
    +361                expression = expression.transform(
    +362                    lambda node: exp.Identifier(**{**node.args, "quoted": False})
    +363                    if isinstance(node, exp.Identifier)
    +364                    and isinstance(node.parent, exp.TableAlias)
    +365                    and node.arg_key == "columns"
    +366                    else node,
    +367                )
    +368                return self.no_identify(lambda: super(self.__class__, self).values_sql(expression))
    +369            return super().values_sql(expression)
    +370
    +371        def settag_sql(self, expression: exp.SetTag) -> str:
    +372            action = "UNSET" if expression.args.get("unset") else "SET"
    +373            return f"{action} TAG {self.expressions(expression)}"
    +374
    +375        def select_sql(self, expression: exp.Select) -> str:
    +376            """Due to a bug in Snowflake we want to make sure that all columns in a VALUES table alias are unquoted and also
    +377            that all columns in a SELECT are unquoted. We also want to make sure that after we find matches where we need
    +378            to unquote a column that we prevent users from adding quotes to the column by using the `identify` argument when
    +379            generating the SQL.
    +380
    +381            Note: We make an assumption that any columns referenced in a VALUES expression should be unquoted throughout the
    +382            expression. This might not be true in a case where the same column name can be sourced from another table that can
    +383            properly quote but should be true in most cases.
    +384            """
    +385            values_identifiers = set(
    +386                flatten(
    +387                    (v.args.get("alias") or exp.Alias()).args.get("columns", [])
    +388                    for v in expression.find_all(exp.Values)
    +389                )
    +390            )
    +391            if values_identifiers:
    +392                expression = expression.transform(
    +393                    lambda node: exp.Identifier(**{**node.args, "quoted": False})
    +394                    if isinstance(node, exp.Identifier) and node in values_identifiers
    +395                    else node,
    +396                )
    +397                return self.no_identify(lambda: super(self.__class__, self).select_sql(expression))
    +398            return super().select_sql(expression)
    +399
    +400        def describe_sql(self, expression: exp.Describe) -> str:
    +401            # Default to table if kind is unknown
    +402            kind_value = expression.args.get("kind") or "TABLE"
    +403            kind = f" {kind_value}" if kind_value else ""
    +404            this = f" {self.sql(expression, 'this')}"
    +405            return f"DESCRIBE{kind}{this}"
    +406
    +407        def generatedasidentitycolumnconstraint_sql(
    +408            self, expression: exp.GeneratedAsIdentityColumnConstraint
    +409        ) -> str:
    +410            start = expression.args.get("start")
    +411            start = f" START {start}" if start else ""
    +412            increment = expression.args.get("increment")
    +413            increment = f" INCREMENT {increment}" if increment else ""
    +414            return f"AUTOINCREMENT{start}{increment}"
     
    @@ -1158,16 +1196,16 @@ Default: True
    def - except_op(self, expression): + except_op(self, expression: sqlglot.expressions.Except) -> str:
    -
    328        def except_op(self, expression):
    -329            if not expression.args.get("distinct", False):
    -330                self.unsupported("EXCEPT with All is not supported in Snowflake")
    -331            return super().except_op(expression)
    +            
    343        def except_op(self, expression: exp.Except) -> str:
    +344            if not expression.args.get("distinct", False):
    +345                self.unsupported("EXCEPT with All is not supported in Snowflake")
    +346            return super().except_op(expression)
     
    @@ -1179,16 +1217,16 @@ Default: True
    def - intersect_op(self, expression): + intersect_op(self, expression: sqlglot.expressions.Intersect) -> str:
    -
    333        def intersect_op(self, expression):
    -334            if not expression.args.get("distinct", False):
    -335                self.unsupported("INTERSECT with All is not supported in Snowflake")
    -336            return super().intersect_op(expression)
    +            
    348        def intersect_op(self, expression: exp.Intersect) -> str:
    +349            if not expression.args.get("distinct", False):
    +350                self.unsupported("INTERSECT with All is not supported in Snowflake")
    +351            return super().intersect_op(expression)
     
    @@ -1206,23 +1244,23 @@ Default: True
    -
    338        def values_sql(self, expression: exp.Values) -> str:
    -339            """Due to a bug in Snowflake we want to make sure that all columns in a VALUES table alias are unquoted.
    -340
    -341            We also want to make sure that after we find matches where we need to unquote a column that we prevent users
    -342            from adding quotes to the column by using the `identify` argument when generating the SQL.
    -343            """
    -344            alias = expression.args.get("alias")
    -345            if alias and alias.args.get("columns"):
    -346                expression = expression.transform(
    -347                    lambda node: exp.Identifier(**{**node.args, "quoted": False})
    -348                    if isinstance(node, exp.Identifier)
    -349                    and isinstance(node.parent, exp.TableAlias)
    -350                    and node.arg_key == "columns"
    -351                    else node,
    -352                )
    -353                return self.no_identify(lambda: super(self.__class__, self).values_sql(expression))
    -354            return super().values_sql(expression)
    +            
    353        def values_sql(self, expression: exp.Values) -> str:
    +354            """Due to a bug in Snowflake we want to make sure that all columns in a VALUES table alias are unquoted.
    +355
    +356            We also want to make sure that after we find matches where we need to unquote a column that we prevent users
    +357            from adding quotes to the column by using the `identify` argument when generating the SQL.
    +358            """
    +359            alias = expression.args.get("alias")
    +360            if alias and alias.args.get("columns"):
    +361                expression = expression.transform(
    +362                    lambda node: exp.Identifier(**{**node.args, "quoted": False})
    +363                    if isinstance(node, exp.Identifier)
    +364                    and isinstance(node.parent, exp.TableAlias)
    +365                    and node.arg_key == "columns"
    +366                    else node,
    +367                )
    +368                return self.no_identify(lambda: super(self.__class__, self).values_sql(expression))
    +369            return super().values_sql(expression)
     
    @@ -1245,9 +1283,9 @@ from adding quotes to the column by using the identify argument whe
    -
    356        def settag_sql(self, expression: exp.SetTag) -> str:
    -357            action = "UNSET" if expression.args.get("unset") else "SET"
    -358            return f"{action} TAG {self.expressions(expression)}"
    +            
    371        def settag_sql(self, expression: exp.SetTag) -> str:
    +372            action = "UNSET" if expression.args.get("unset") else "SET"
    +373            return f"{action} TAG {self.expressions(expression)}"
     
    @@ -1265,30 +1303,30 @@ from adding quotes to the column by using the identify argument whe
    -
    360        def select_sql(self, expression: exp.Select) -> str:
    -361            """Due to a bug in Snowflake we want to make sure that all columns in a VALUES table alias are unquoted and also
    -362            that all columns in a SELECT are unquoted. We also want to make sure that after we find matches where we need
    -363            to unquote a column that we prevent users from adding quotes to the column by using the `identify` argument when
    -364            generating the SQL.
    -365
    -366            Note: We make an assumption that any columns referenced in a VALUES expression should be unquoted throughout the
    -367            expression. This might not be true in a case where the same column name can be sourced from another table that can
    -368            properly quote but should be true in most cases.
    -369            """
    -370            values_identifiers = set(
    -371                flatten(
    -372                    (v.args.get("alias") or exp.Alias()).args.get("columns", [])
    -373                    for v in expression.find_all(exp.Values)
    -374                )
    -375            )
    -376            if values_identifiers:
    -377                expression = expression.transform(
    -378                    lambda node: exp.Identifier(**{**node.args, "quoted": False})
    -379                    if isinstance(node, exp.Identifier) and node in values_identifiers
    -380                    else node,
    -381                )
    -382                return self.no_identify(lambda: super(self.__class__, self).select_sql(expression))
    -383            return super().select_sql(expression)
    +            
    375        def select_sql(self, expression: exp.Select) -> str:
    +376            """Due to a bug in Snowflake we want to make sure that all columns in a VALUES table alias are unquoted and also
    +377            that all columns in a SELECT are unquoted. We also want to make sure that after we find matches where we need
    +378            to unquote a column that we prevent users from adding quotes to the column by using the `identify` argument when
    +379            generating the SQL.
    +380
    +381            Note: We make an assumption that any columns referenced in a VALUES expression should be unquoted throughout the
    +382            expression. This might not be true in a case where the same column name can be sourced from another table that can
    +383            properly quote but should be true in most cases.
    +384            """
    +385            values_identifiers = set(
    +386                flatten(
    +387                    (v.args.get("alias") or exp.Alias()).args.get("columns", [])
    +388                    for v in expression.find_all(exp.Values)
    +389                )
    +390            )
    +391            if values_identifiers:
    +392                expression = expression.transform(
    +393                    lambda node: exp.Identifier(**{**node.args, "quoted": False})
    +394                    if isinstance(node, exp.Identifier) and node in values_identifiers
    +395                    else node,
    +396                )
    +397                return self.no_identify(lambda: super(self.__class__, self).select_sql(expression))
    +398            return super().select_sql(expression)
     
    @@ -1315,12 +1353,12 @@ properly quote but should be true in most cases.

    -
    385        def describe_sql(self, expression: exp.Describe) -> str:
    -386            # Default to table if kind is unknown
    -387            kind_value = expression.args.get("kind") or "TABLE"
    -388            kind = f" {kind_value}" if kind_value else ""
    -389            this = f" {self.sql(expression, 'this')}"
    -390            return f"DESCRIBE{kind}{this}"
    +            
    400        def describe_sql(self, expression: exp.Describe) -> str:
    +401            # Default to table if kind is unknown
    +402            kind_value = expression.args.get("kind") or "TABLE"
    +403            kind = f" {kind_value}" if kind_value else ""
    +404            this = f" {self.sql(expression, 'this')}"
    +405            return f"DESCRIBE{kind}{this}"
     
    @@ -1338,14 +1376,14 @@ properly quote but should be true in most cases.

    -
    392        def generatedasidentitycolumnconstraint_sql(
    -393            self, expression: exp.GeneratedAsIdentityColumnConstraint
    -394        ) -> str:
    -395            start = expression.args.get("start")
    -396            start = f" START {start}" if start else ""
    -397            increment = expression.args.get("increment")
    -398            increment = f" INCREMENT {increment}" if increment else ""
    -399            return f"AUTOINCREMENT{start}{increment}"
    +            
    407        def generatedasidentitycolumnconstraint_sql(
    +408            self, expression: exp.GeneratedAsIdentityColumnConstraint
    +409        ) -> str:
    +410            start = expression.args.get("start")
    +411            start = f" START {start}" if start else ""
    +412            increment = expression.args.get("increment")
    +413            increment = f" INCREMENT {increment}" if increment else ""
    +414            return f"AUTOINCREMENT{start}{increment}"
     
    @@ -1387,6 +1425,7 @@ properly quote but should be true in most cases.

    tablealias_sql
    bitstring_sql
    hexstring_sql
    +
    bytestring_sql
    datatype_sql
    directory_sql
    delete_sql
    @@ -1397,6 +1436,7 @@ properly quote but should be true in most cases.

    hint_sql
    index_sql
    identifier_sql
    +
    inputoutputformat_sql
    national_sql
    partition_sql
    properties_sql
    @@ -1421,6 +1461,7 @@ properly quote but should be true in most cases.

    intersect_sql
    introducer_sql
    pseudotype_sql
    +
    onconflict_sql
    returning_sql
    rowformatdelimitedproperty_sql
    table_sql
    diff --git a/docs/sqlglot/dialects/spark.html b/docs/sqlglot/dialects/spark.html index 0633e78..bc53a56 100644 --- a/docs/sqlglot/dialects/spark.html +++ b/docs/sqlglot/dialects/spark.html @@ -3,7 +3,7 @@ - + sqlglot.dialects.spark API documentation @@ -82,189 +82,227 @@
      1from __future__ import annotations
       2
    -  3from sqlglot import exp, parser
    -  4from sqlglot.dialects.dialect import create_with_partitions_sql, rename_func, trim_sql
    -  5from sqlglot.dialects.hive import Hive
    -  6from sqlglot.helper import seq_get
    -  7
    -  8
    -  9def _create_sql(self, e):
    - 10    kind = e.args.get("kind")
    - 11    properties = e.args.get("properties")
    - 12
    - 13    if kind.upper() == "TABLE" and any(
    - 14        isinstance(prop, exp.TemporaryProperty)
    - 15        for prop in (properties.expressions if properties else [])
    - 16    ):
    - 17        return f"CREATE TEMPORARY VIEW {self.sql(e, 'this')} AS {self.sql(e, 'expression')}"
    - 18    return create_with_partitions_sql(self, e)
    - 19
    - 20
    - 21def _map_sql(self, expression):
    - 22    keys = self.sql(expression.args["keys"])
    - 23    values = self.sql(expression.args["values"])
    - 24    return f"MAP_FROM_ARRAYS({keys}, {values})"
    - 25
    - 26
    - 27def _str_to_date(self, expression):
    - 28    this = self.sql(expression, "this")
    - 29    time_format = self.format_time(expression)
    - 30    if time_format == Hive.date_format:
    - 31        return f"TO_DATE({this})"
    - 32    return f"TO_DATE({this}, {time_format})"
    - 33
    - 34
    - 35def _unix_to_time(self, expression):
    - 36    scale = expression.args.get("scale")
    - 37    timestamp = self.sql(expression, "this")
    - 38    if scale is None:
    - 39        return f"FROM_UNIXTIME({timestamp})"
    - 40    if scale == exp.UnixToTime.SECONDS:
    - 41        return f"TIMESTAMP_SECONDS({timestamp})"
    - 42    if scale == exp.UnixToTime.MILLIS:
    - 43        return f"TIMESTAMP_MILLIS({timestamp})"
    - 44    if scale == exp.UnixToTime.MICROS:
    - 45        return f"TIMESTAMP_MICROS({timestamp})"
    - 46
    - 47    raise ValueError("Improper scale for timestamp")
    +  3import typing as t
    +  4
    +  5from sqlglot import exp, parser
    +  6from sqlglot.dialects.dialect import create_with_partitions_sql, rename_func, trim_sql
    +  7from sqlglot.dialects.hive import Hive
    +  8from sqlglot.helper import seq_get
    +  9
    + 10
    + 11def _create_sql(self: Hive.Generator, e: exp.Create) -> str:
    + 12    kind = e.args["kind"]
    + 13    properties = e.args.get("properties")
    + 14
    + 15    if kind.upper() == "TABLE" and any(
    + 16        isinstance(prop, exp.TemporaryProperty)
    + 17        for prop in (properties.expressions if properties else [])
    + 18    ):
    + 19        return f"CREATE TEMPORARY VIEW {self.sql(e, 'this')} AS {self.sql(e, 'expression')}"
    + 20    return create_with_partitions_sql(self, e)
    + 21
    + 22
    + 23def _map_sql(self: Hive.Generator, expression: exp.Map) -> str:
    + 24    keys = self.sql(expression.args["keys"])
    + 25    values = self.sql(expression.args["values"])
    + 26    return f"MAP_FROM_ARRAYS({keys}, {values})"
    + 27
    + 28
    + 29def _str_to_date(self: Hive.Generator, expression: exp.StrToDate) -> str:
    + 30    this = self.sql(expression, "this")
    + 31    time_format = self.format_time(expression)
    + 32    if time_format == Hive.date_format:
    + 33        return f"TO_DATE({this})"
    + 34    return f"TO_DATE({this}, {time_format})"
    + 35
    + 36
    + 37def _unix_to_time_sql(self: Hive.Generator, expression: exp.UnixToTime) -> str:
    + 38    scale = expression.args.get("scale")
    + 39    timestamp = self.sql(expression, "this")
    + 40    if scale is None:
    + 41        return f"FROM_UNIXTIME({timestamp})"
    + 42    if scale == exp.UnixToTime.SECONDS:
    + 43        return f"TIMESTAMP_SECONDS({timestamp})"
    + 44    if scale == exp.UnixToTime.MILLIS:
    + 45        return f"TIMESTAMP_MILLIS({timestamp})"
    + 46    if scale == exp.UnixToTime.MICROS:
    + 47        return f"TIMESTAMP_MICROS({timestamp})"
      48
    - 49
    - 50class Spark(Hive):
    - 51    class Parser(Hive.Parser):
    - 52        FUNCTIONS = {
    - 53            **Hive.Parser.FUNCTIONS,  # type: ignore
    - 54            "MAP_FROM_ARRAYS": exp.Map.from_arg_list,
    - 55            "TO_UNIX_TIMESTAMP": exp.StrToUnix.from_arg_list,
    - 56            "LEFT": lambda args: exp.Substring(
    - 57                this=seq_get(args, 0),
    - 58                start=exp.Literal.number(1),
    - 59                length=seq_get(args, 1),
    - 60            ),
    - 61            "SHIFTLEFT": lambda args: exp.BitwiseLeftShift(
    - 62                this=seq_get(args, 0),
    - 63                expression=seq_get(args, 1),
    - 64            ),
    - 65            "SHIFTRIGHT": lambda args: exp.BitwiseRightShift(
    - 66                this=seq_get(args, 0),
    - 67                expression=seq_get(args, 1),
    - 68            ),
    - 69            "RIGHT": lambda args: exp.Substring(
    - 70                this=seq_get(args, 0),
    - 71                start=exp.Sub(
    - 72                    this=exp.Length(this=seq_get(args, 0)),
    - 73                    expression=exp.Add(this=seq_get(args, 1), expression=exp.Literal.number(1)),
    - 74                ),
    - 75                length=seq_get(args, 1),
    - 76            ),
    - 77            "APPROX_PERCENTILE": exp.ApproxQuantile.from_arg_list,
    - 78            "IIF": exp.If.from_arg_list,
    - 79            "AGGREGATE": exp.Reduce.from_arg_list,
    - 80            "DAYOFWEEK": lambda args: exp.DayOfWeek(
    - 81                this=exp.TsOrDsToDate(this=seq_get(args, 0)),
    + 49    raise ValueError("Improper scale for timestamp")
    + 50
    + 51
    + 52class Spark(Hive):
    + 53    class Parser(Hive.Parser):
    + 54        FUNCTIONS = {
    + 55            **Hive.Parser.FUNCTIONS,  # type: ignore
    + 56            "MAP_FROM_ARRAYS": exp.Map.from_arg_list,
    + 57            "TO_UNIX_TIMESTAMP": exp.StrToUnix.from_arg_list,
    + 58            "LEFT": lambda args: exp.Substring(
    + 59                this=seq_get(args, 0),
    + 60                start=exp.Literal.number(1),
    + 61                length=seq_get(args, 1),
    + 62            ),
    + 63            "SHIFTLEFT": lambda args: exp.BitwiseLeftShift(
    + 64                this=seq_get(args, 0),
    + 65                expression=seq_get(args, 1),
    + 66            ),
    + 67            "SHIFTRIGHT": lambda args: exp.BitwiseRightShift(
    + 68                this=seq_get(args, 0),
    + 69                expression=seq_get(args, 1),
    + 70            ),
    + 71            "RIGHT": lambda args: exp.Substring(
    + 72                this=seq_get(args, 0),
    + 73                start=exp.Sub(
    + 74                    this=exp.Length(this=seq_get(args, 0)),
    + 75                    expression=exp.Add(this=seq_get(args, 1), expression=exp.Literal.number(1)),
    + 76                ),
    + 77                length=seq_get(args, 1),
    + 78            ),
    + 79            "APPROX_PERCENTILE": exp.ApproxQuantile.from_arg_list,
    + 80            "BOOLEAN": lambda args: exp.Cast(
    + 81                this=seq_get(args, 0), to=exp.DataType.build("boolean")
      82            ),
    - 83            "DAYOFMONTH": lambda args: exp.DayOfMonth(
    - 84                this=exp.TsOrDsToDate(this=seq_get(args, 0)),
    - 85            ),
    - 86            "DAYOFYEAR": lambda args: exp.DayOfYear(
    + 83            "IIF": exp.If.from_arg_list,
    + 84            "INT": lambda args: exp.Cast(this=seq_get(args, 0), to=exp.DataType.build("int")),
    + 85            "AGGREGATE": exp.Reduce.from_arg_list,
    + 86            "DAYOFWEEK": lambda args: exp.DayOfWeek(
      87                this=exp.TsOrDsToDate(this=seq_get(args, 0)),
      88            ),
    - 89            "WEEKOFYEAR": lambda args: exp.WeekOfYear(
    + 89            "DAYOFMONTH": lambda args: exp.DayOfMonth(
      90                this=exp.TsOrDsToDate(this=seq_get(args, 0)),
      91            ),
    - 92            "DATE_TRUNC": lambda args: exp.TimestampTrunc(
    - 93                this=seq_get(args, 1),
    - 94                unit=exp.var(seq_get(args, 0)),
    - 95            ),
    - 96            "TRUNC": lambda args: exp.DateTrunc(unit=seq_get(args, 1), this=seq_get(args, 0)),
    - 97        }
    - 98
    - 99        FUNCTION_PARSERS = {
    -100            **parser.Parser.FUNCTION_PARSERS,  # type: ignore
    -101            "BROADCAST": lambda self: self._parse_join_hint("BROADCAST"),
    -102            "BROADCASTJOIN": lambda self: self._parse_join_hint("BROADCASTJOIN"),
    -103            "MAPJOIN": lambda self: self._parse_join_hint("MAPJOIN"),
    -104            "MERGE": lambda self: self._parse_join_hint("MERGE"),
    -105            "SHUFFLEMERGE": lambda self: self._parse_join_hint("SHUFFLEMERGE"),
    -106            "MERGEJOIN": lambda self: self._parse_join_hint("MERGEJOIN"),
    -107            "SHUFFLE_HASH": lambda self: self._parse_join_hint("SHUFFLE_HASH"),
    -108            "SHUFFLE_REPLICATE_NL": lambda self: self._parse_join_hint("SHUFFLE_REPLICATE_NL"),
    -109        }
    -110
    -111        def _parse_add_column(self):
    -112            return self._match_text_seq("ADD", "COLUMNS") and self._parse_schema()
    -113
    -114        def _parse_drop_column(self):
    -115            return self._match_text_seq("DROP", "COLUMNS") and self.expression(
    -116                exp.Drop,
    -117                this=self._parse_schema(),
    -118                kind="COLUMNS",
    -119            )
    -120
    -121    class Generator(Hive.Generator):
    -122        TYPE_MAPPING = {
    -123            **Hive.Generator.TYPE_MAPPING,  # type: ignore
    -124            exp.DataType.Type.TINYINT: "BYTE",
    -125            exp.DataType.Type.SMALLINT: "SHORT",
    -126            exp.DataType.Type.BIGINT: "LONG",
    -127        }
    -128
    -129        PROPERTIES_LOCATION = {
    -130            **Hive.Generator.PROPERTIES_LOCATION,  # type: ignore
    -131            exp.EngineProperty: exp.Properties.Location.UNSUPPORTED,
    -132            exp.AutoIncrementProperty: exp.Properties.Location.UNSUPPORTED,
    -133            exp.CharacterSetProperty: exp.Properties.Location.UNSUPPORTED,
    -134            exp.CollateProperty: exp.Properties.Location.UNSUPPORTED,
    -135        }
    + 92            "DAYOFYEAR": lambda args: exp.DayOfYear(
    + 93                this=exp.TsOrDsToDate(this=seq_get(args, 0)),
    + 94            ),
    + 95            "WEEKOFYEAR": lambda args: exp.WeekOfYear(
    + 96                this=exp.TsOrDsToDate(this=seq_get(args, 0)),
    + 97            ),
    + 98            "DATE": lambda args: exp.Cast(this=seq_get(args, 0), to=exp.DataType.build("date")),
    + 99            "DATE_TRUNC": lambda args: exp.TimestampTrunc(
    +100                this=seq_get(args, 1),
    +101                unit=exp.var(seq_get(args, 0)),
    +102            ),
    +103            "STRING": lambda args: exp.Cast(this=seq_get(args, 0), to=exp.DataType.build("string")),
    +104            "TRUNC": lambda args: exp.DateTrunc(unit=seq_get(args, 1), this=seq_get(args, 0)),
    +105            "TIMESTAMP": lambda args: exp.Cast(
    +106                this=seq_get(args, 0), to=exp.DataType.build("timestamp")
    +107            ),
    +108        }
    +109
    +110        FUNCTION_PARSERS = {
    +111            **parser.Parser.FUNCTION_PARSERS,  # type: ignore
    +112            "BROADCAST": lambda self: self._parse_join_hint("BROADCAST"),
    +113            "BROADCASTJOIN": lambda self: self._parse_join_hint("BROADCASTJOIN"),
    +114            "MAPJOIN": lambda self: self._parse_join_hint("MAPJOIN"),
    +115            "MERGE": lambda self: self._parse_join_hint("MERGE"),
    +116            "SHUFFLEMERGE": lambda self: self._parse_join_hint("SHUFFLEMERGE"),
    +117            "MERGEJOIN": lambda self: self._parse_join_hint("MERGEJOIN"),
    +118            "SHUFFLE_HASH": lambda self: self._parse_join_hint("SHUFFLE_HASH"),
    +119            "SHUFFLE_REPLICATE_NL": lambda self: self._parse_join_hint("SHUFFLE_REPLICATE_NL"),
    +120        }
    +121
    +122        def _parse_add_column(self) -> t.Optional[exp.Expression]:
    +123            return self._match_text_seq("ADD", "COLUMNS") and self._parse_schema()
    +124
    +125        def _parse_drop_column(self) -> t.Optional[exp.Expression]:
    +126            return self._match_text_seq("DROP", "COLUMNS") and self.expression(
    +127                exp.Drop,
    +128                this=self._parse_schema(),
    +129                kind="COLUMNS",
    +130            )
    +131
    +132        def _pivot_column_names(self, pivot_columns: t.List[exp.Expression]) -> t.List[str]:
    +133            # Spark doesn't add a suffix to the pivot columns when there's a single aggregation
    +134            if len(pivot_columns) == 1:
    +135                return [""]
     136
    -137        TRANSFORMS = {
    -138            **Hive.Generator.TRANSFORMS,  # type: ignore
    -139            exp.ApproxDistinct: rename_func("APPROX_COUNT_DISTINCT"),
    -140            exp.FileFormatProperty: lambda self, e: f"USING {e.name.upper()}",
    -141            exp.ArraySum: lambda self, e: f"AGGREGATE({self.sql(e, 'this')}, 0, (acc, x) -> acc + x, acc -> acc)",
    -142            exp.BitwiseLeftShift: rename_func("SHIFTLEFT"),
    -143            exp.BitwiseRightShift: rename_func("SHIFTRIGHT"),
    -144            exp.DateTrunc: lambda self, e: self.func("TRUNC", e.this, e.args.get("unit")),
    -145            exp.Hint: lambda self, e: f" /*+ {self.expressions(e).strip()} */",
    -146            exp.StrToDate: _str_to_date,
    -147            exp.StrToTime: lambda self, e: f"TO_TIMESTAMP({self.sql(e, 'this')}, {self.format_time(e)})",
    -148            exp.UnixToTime: _unix_to_time,
    -149            exp.Create: _create_sql,
    -150            exp.Map: _map_sql,
    -151            exp.Reduce: rename_func("AGGREGATE"),
    -152            exp.StructKwarg: lambda self, e: f"{self.sql(e, 'this')}: {self.sql(e, 'expression')}",
    -153            exp.TimestampTrunc: lambda self, e: self.func(
    -154                "DATE_TRUNC", exp.Literal.string(e.text("unit")), e.this
    -155            ),
    -156            exp.Trim: trim_sql,
    -157            exp.VariancePop: rename_func("VAR_POP"),
    -158            exp.DateFromParts: rename_func("MAKE_DATE"),
    -159            exp.LogicalOr: rename_func("BOOL_OR"),
    -160            exp.LogicalAnd: rename_func("BOOL_AND"),
    -161            exp.DayOfWeek: rename_func("DAYOFWEEK"),
    -162            exp.DayOfMonth: rename_func("DAYOFMONTH"),
    -163            exp.DayOfYear: rename_func("DAYOFYEAR"),
    -164            exp.WeekOfYear: rename_func("WEEKOFYEAR"),
    -165            exp.AtTimeZone: lambda self, e: f"FROM_UTC_TIMESTAMP({self.sql(e, 'this')}, {self.sql(e, 'zone')})",
    -166        }
    -167        TRANSFORMS.pop(exp.ArraySort)
    -168        TRANSFORMS.pop(exp.ILike)
    -169
    -170        WRAP_DERIVED_VALUES = False
    -171        CREATE_FUNCTION_RETURN_AS = False
    -172
    -173        def cast_sql(self, expression: exp.Cast) -> str:
    -174            if isinstance(expression.this, exp.Cast) and expression.this.is_type(
    -175                exp.DataType.Type.JSON
    -176            ):
    -177                schema = f"'{self.sql(expression, 'to')}'"
    -178                return self.func("FROM_JSON", expression.this.this, schema)
    -179            if expression.to.is_type(exp.DataType.Type.JSON):
    -180                return self.func("TO_JSON", expression.this)
    -181
    -182            return super(Spark.Generator, self).cast_sql(expression)
    -183
    -184    class Tokenizer(Hive.Tokenizer):
    -185        HEX_STRINGS = [("X'", "'")]
    +137            names = []
    +138            for agg in pivot_columns:
    +139                if isinstance(agg, exp.Alias):
    +140                    names.append(agg.alias)
    +141                else:
    +142                    """
    +143                    This case corresponds to aggregations without aliases being used as suffixes
    +144                    (e.g. col_avg(foo)). We need to unquote identifiers because they're going to
    +145                    be quoted in the base parser's `_parse_pivot` method, due to `to_identifier`.
    +146                    Otherwise, we'd end up with `col_avg(`foo`)` (notice the double quotes).
    +147
    +148                    Moreover, function names are lowercased in order to mimic Spark's naming scheme.
    +149                    """
    +150                    agg_all_unquoted = agg.transform(
    +151                        lambda node: exp.Identifier(this=node.name, quoted=False)
    +152                        if isinstance(node, exp.Identifier)
    +153                        else node
    +154                    )
    +155                    names.append(agg_all_unquoted.sql(dialect="spark", normalize_functions="lower"))
    +156
    +157            return names
    +158
    +159    class Generator(Hive.Generator):
    +160        TYPE_MAPPING = {
    +161            **Hive.Generator.TYPE_MAPPING,  # type: ignore
    +162            exp.DataType.Type.TINYINT: "BYTE",
    +163            exp.DataType.Type.SMALLINT: "SHORT",
    +164            exp.DataType.Type.BIGINT: "LONG",
    +165        }
    +166
    +167        PROPERTIES_LOCATION = {
    +168            **Hive.Generator.PROPERTIES_LOCATION,  # type: ignore
    +169            exp.EngineProperty: exp.Properties.Location.UNSUPPORTED,
    +170            exp.AutoIncrementProperty: exp.Properties.Location.UNSUPPORTED,
    +171            exp.CharacterSetProperty: exp.Properties.Location.UNSUPPORTED,
    +172            exp.CollateProperty: exp.Properties.Location.UNSUPPORTED,
    +173        }
    +174
    +175        TRANSFORMS = {
    +176            **Hive.Generator.TRANSFORMS,  # type: ignore
    +177            exp.ApproxDistinct: rename_func("APPROX_COUNT_DISTINCT"),
    +178            exp.FileFormatProperty: lambda self, e: f"USING {e.name.upper()}",
    +179            exp.ArraySum: lambda self, e: f"AGGREGATE({self.sql(e, 'this')}, 0, (acc, x) -> acc + x, acc -> acc)",
    +180            exp.BitwiseLeftShift: rename_func("SHIFTLEFT"),
    +181            exp.BitwiseRightShift: rename_func("SHIFTRIGHT"),
    +182            exp.DateTrunc: lambda self, e: self.func("TRUNC", e.this, e.args.get("unit")),
    +183            exp.Hint: lambda self, e: f" /*+ {self.expressions(e).strip()} */",
    +184            exp.StrToDate: _str_to_date,
    +185            exp.StrToTime: lambda self, e: f"TO_TIMESTAMP({self.sql(e, 'this')}, {self.format_time(e)})",
    +186            exp.UnixToTime: _unix_to_time_sql,
    +187            exp.Create: _create_sql,
    +188            exp.Map: _map_sql,
    +189            exp.Reduce: rename_func("AGGREGATE"),
    +190            exp.StructKwarg: lambda self, e: f"{self.sql(e, 'this')}: {self.sql(e, 'expression')}",
    +191            exp.TimestampTrunc: lambda self, e: self.func(
    +192                "DATE_TRUNC", exp.Literal.string(e.text("unit")), e.this
    +193            ),
    +194            exp.Trim: trim_sql,
    +195            exp.VariancePop: rename_func("VAR_POP"),
    +196            exp.DateFromParts: rename_func("MAKE_DATE"),
    +197            exp.LogicalOr: rename_func("BOOL_OR"),
    +198            exp.LogicalAnd: rename_func("BOOL_AND"),
    +199            exp.DayOfWeek: rename_func("DAYOFWEEK"),
    +200            exp.DayOfMonth: rename_func("DAYOFMONTH"),
    +201            exp.DayOfYear: rename_func("DAYOFYEAR"),
    +202            exp.WeekOfYear: rename_func("WEEKOFYEAR"),
    +203            exp.AtTimeZone: lambda self, e: f"FROM_UTC_TIMESTAMP({self.sql(e, 'this')}, {self.sql(e, 'zone')})",
    +204        }
    +205        TRANSFORMS.pop(exp.ArraySort)
    +206        TRANSFORMS.pop(exp.ILike)
    +207
    +208        WRAP_DERIVED_VALUES = False
    +209        CREATE_FUNCTION_RETURN_AS = False
    +210
    +211        def cast_sql(self, expression: exp.Cast) -> str:
    +212            if isinstance(expression.this, exp.Cast) and expression.this.is_type(
    +213                exp.DataType.Type.JSON
    +214            ):
    +215                schema = f"'{self.sql(expression, 'to')}'"
    +216                return self.func("FROM_JSON", expression.this.this, schema)
    +217            if expression.to.is_type(exp.DataType.Type.JSON):
    +218                return self.func("TO_JSON", expression.this)
    +219
    +220            return super(Spark.Generator, self).cast_sql(expression)
    +221
    +222    class Tokenizer(Hive.Tokenizer):
    +223        HEX_STRINGS = [("X'", "'")]
     
    @@ -280,142 +318,178 @@
    -
     51class Spark(Hive):
    - 52    class Parser(Hive.Parser):
    - 53        FUNCTIONS = {
    - 54            **Hive.Parser.FUNCTIONS,  # type: ignore
    - 55            "MAP_FROM_ARRAYS": exp.Map.from_arg_list,
    - 56            "TO_UNIX_TIMESTAMP": exp.StrToUnix.from_arg_list,
    - 57            "LEFT": lambda args: exp.Substring(
    - 58                this=seq_get(args, 0),
    - 59                start=exp.Literal.number(1),
    - 60                length=seq_get(args, 1),
    - 61            ),
    - 62            "SHIFTLEFT": lambda args: exp.BitwiseLeftShift(
    - 63                this=seq_get(args, 0),
    - 64                expression=seq_get(args, 1),
    - 65            ),
    - 66            "SHIFTRIGHT": lambda args: exp.BitwiseRightShift(
    - 67                this=seq_get(args, 0),
    - 68                expression=seq_get(args, 1),
    - 69            ),
    - 70            "RIGHT": lambda args: exp.Substring(
    - 71                this=seq_get(args, 0),
    - 72                start=exp.Sub(
    - 73                    this=exp.Length(this=seq_get(args, 0)),
    - 74                    expression=exp.Add(this=seq_get(args, 1), expression=exp.Literal.number(1)),
    - 75                ),
    - 76                length=seq_get(args, 1),
    - 77            ),
    - 78            "APPROX_PERCENTILE": exp.ApproxQuantile.from_arg_list,
    - 79            "IIF": exp.If.from_arg_list,
    - 80            "AGGREGATE": exp.Reduce.from_arg_list,
    - 81            "DAYOFWEEK": lambda args: exp.DayOfWeek(
    - 82                this=exp.TsOrDsToDate(this=seq_get(args, 0)),
    +            
     53class Spark(Hive):
    + 54    class Parser(Hive.Parser):
    + 55        FUNCTIONS = {
    + 56            **Hive.Parser.FUNCTIONS,  # type: ignore
    + 57            "MAP_FROM_ARRAYS": exp.Map.from_arg_list,
    + 58            "TO_UNIX_TIMESTAMP": exp.StrToUnix.from_arg_list,
    + 59            "LEFT": lambda args: exp.Substring(
    + 60                this=seq_get(args, 0),
    + 61                start=exp.Literal.number(1),
    + 62                length=seq_get(args, 1),
    + 63            ),
    + 64            "SHIFTLEFT": lambda args: exp.BitwiseLeftShift(
    + 65                this=seq_get(args, 0),
    + 66                expression=seq_get(args, 1),
    + 67            ),
    + 68            "SHIFTRIGHT": lambda args: exp.BitwiseRightShift(
    + 69                this=seq_get(args, 0),
    + 70                expression=seq_get(args, 1),
    + 71            ),
    + 72            "RIGHT": lambda args: exp.Substring(
    + 73                this=seq_get(args, 0),
    + 74                start=exp.Sub(
    + 75                    this=exp.Length(this=seq_get(args, 0)),
    + 76                    expression=exp.Add(this=seq_get(args, 1), expression=exp.Literal.number(1)),
    + 77                ),
    + 78                length=seq_get(args, 1),
    + 79            ),
    + 80            "APPROX_PERCENTILE": exp.ApproxQuantile.from_arg_list,
    + 81            "BOOLEAN": lambda args: exp.Cast(
    + 82                this=seq_get(args, 0), to=exp.DataType.build("boolean")
      83            ),
    - 84            "DAYOFMONTH": lambda args: exp.DayOfMonth(
    - 85                this=exp.TsOrDsToDate(this=seq_get(args, 0)),
    - 86            ),
    - 87            "DAYOFYEAR": lambda args: exp.DayOfYear(
    + 84            "IIF": exp.If.from_arg_list,
    + 85            "INT": lambda args: exp.Cast(this=seq_get(args, 0), to=exp.DataType.build("int")),
    + 86            "AGGREGATE": exp.Reduce.from_arg_list,
    + 87            "DAYOFWEEK": lambda args: exp.DayOfWeek(
      88                this=exp.TsOrDsToDate(this=seq_get(args, 0)),
      89            ),
    - 90            "WEEKOFYEAR": lambda args: exp.WeekOfYear(
    + 90            "DAYOFMONTH": lambda args: exp.DayOfMonth(
      91                this=exp.TsOrDsToDate(this=seq_get(args, 0)),
      92            ),
    - 93            "DATE_TRUNC": lambda args: exp.TimestampTrunc(
    - 94                this=seq_get(args, 1),
    - 95                unit=exp.var(seq_get(args, 0)),
    - 96            ),
    - 97            "TRUNC": lambda args: exp.DateTrunc(unit=seq_get(args, 1), this=seq_get(args, 0)),
    - 98        }
    - 99
    -100        FUNCTION_PARSERS = {
    -101            **parser.Parser.FUNCTION_PARSERS,  # type: ignore
    -102            "BROADCAST": lambda self: self._parse_join_hint("BROADCAST"),
    -103            "BROADCASTJOIN": lambda self: self._parse_join_hint("BROADCASTJOIN"),
    -104            "MAPJOIN": lambda self: self._parse_join_hint("MAPJOIN"),
    -105            "MERGE": lambda self: self._parse_join_hint("MERGE"),
    -106            "SHUFFLEMERGE": lambda self: self._parse_join_hint("SHUFFLEMERGE"),
    -107            "MERGEJOIN": lambda self: self._parse_join_hint("MERGEJOIN"),
    -108            "SHUFFLE_HASH": lambda self: self._parse_join_hint("SHUFFLE_HASH"),
    -109            "SHUFFLE_REPLICATE_NL": lambda self: self._parse_join_hint("SHUFFLE_REPLICATE_NL"),
    -110        }
    -111
    -112        def _parse_add_column(self):
    -113            return self._match_text_seq("ADD", "COLUMNS") and self._parse_schema()
    -114
    -115        def _parse_drop_column(self):
    -116            return self._match_text_seq("DROP", "COLUMNS") and self.expression(
    -117                exp.Drop,
    -118                this=self._parse_schema(),
    -119                kind="COLUMNS",
    -120            )
    -121
    -122    class Generator(Hive.Generator):
    -123        TYPE_MAPPING = {
    -124            **Hive.Generator.TYPE_MAPPING,  # type: ignore
    -125            exp.DataType.Type.TINYINT: "BYTE",
    -126            exp.DataType.Type.SMALLINT: "SHORT",
    -127            exp.DataType.Type.BIGINT: "LONG",
    -128        }
    -129
    -130        PROPERTIES_LOCATION = {
    -131            **Hive.Generator.PROPERTIES_LOCATION,  # type: ignore
    -132            exp.EngineProperty: exp.Properties.Location.UNSUPPORTED,
    -133            exp.AutoIncrementProperty: exp.Properties.Location.UNSUPPORTED,
    -134            exp.CharacterSetProperty: exp.Properties.Location.UNSUPPORTED,
    -135            exp.CollateProperty: exp.Properties.Location.UNSUPPORTED,
    -136        }
    + 93            "DAYOFYEAR": lambda args: exp.DayOfYear(
    + 94                this=exp.TsOrDsToDate(this=seq_get(args, 0)),
    + 95            ),
    + 96            "WEEKOFYEAR": lambda args: exp.WeekOfYear(
    + 97                this=exp.TsOrDsToDate(this=seq_get(args, 0)),
    + 98            ),
    + 99            "DATE": lambda args: exp.Cast(this=seq_get(args, 0), to=exp.DataType.build("date")),
    +100            "DATE_TRUNC": lambda args: exp.TimestampTrunc(
    +101                this=seq_get(args, 1),
    +102                unit=exp.var(seq_get(args, 0)),
    +103            ),
    +104            "STRING": lambda args: exp.Cast(this=seq_get(args, 0), to=exp.DataType.build("string")),
    +105            "TRUNC": lambda args: exp.DateTrunc(unit=seq_get(args, 1), this=seq_get(args, 0)),
    +106            "TIMESTAMP": lambda args: exp.Cast(
    +107                this=seq_get(args, 0), to=exp.DataType.build("timestamp")
    +108            ),
    +109        }
    +110
    +111        FUNCTION_PARSERS = {
    +112            **parser.Parser.FUNCTION_PARSERS,  # type: ignore
    +113            "BROADCAST": lambda self: self._parse_join_hint("BROADCAST"),
    +114            "BROADCASTJOIN": lambda self: self._parse_join_hint("BROADCASTJOIN"),
    +115            "MAPJOIN": lambda self: self._parse_join_hint("MAPJOIN"),
    +116            "MERGE": lambda self: self._parse_join_hint("MERGE"),
    +117            "SHUFFLEMERGE": lambda self: self._parse_join_hint("SHUFFLEMERGE"),
    +118            "MERGEJOIN": lambda self: self._parse_join_hint("MERGEJOIN"),
    +119            "SHUFFLE_HASH": lambda self: self._parse_join_hint("SHUFFLE_HASH"),
    +120            "SHUFFLE_REPLICATE_NL": lambda self: self._parse_join_hint("SHUFFLE_REPLICATE_NL"),
    +121        }
    +122
    +123        def _parse_add_column(self) -> t.Optional[exp.Expression]:
    +124            return self._match_text_seq("ADD", "COLUMNS") and self._parse_schema()
    +125
    +126        def _parse_drop_column(self) -> t.Optional[exp.Expression]:
    +127            return self._match_text_seq("DROP", "COLUMNS") and self.expression(
    +128                exp.Drop,
    +129                this=self._parse_schema(),
    +130                kind="COLUMNS",
    +131            )
    +132
    +133        def _pivot_column_names(self, pivot_columns: t.List[exp.Expression]) -> t.List[str]:
    +134            # Spark doesn't add a suffix to the pivot columns when there's a single aggregation
    +135            if len(pivot_columns) == 1:
    +136                return [""]
     137
    -138        TRANSFORMS = {
    -139            **Hive.Generator.TRANSFORMS,  # type: ignore
    -140            exp.ApproxDistinct: rename_func("APPROX_COUNT_DISTINCT"),
    -141            exp.FileFormatProperty: lambda self, e: f"USING {e.name.upper()}",
    -142            exp.ArraySum: lambda self, e: f"AGGREGATE({self.sql(e, 'this')}, 0, (acc, x) -> acc + x, acc -> acc)",
    -143            exp.BitwiseLeftShift: rename_func("SHIFTLEFT"),
    -144            exp.BitwiseRightShift: rename_func("SHIFTRIGHT"),
    -145            exp.DateTrunc: lambda self, e: self.func("TRUNC", e.this, e.args.get("unit")),
    -146            exp.Hint: lambda self, e: f" /*+ {self.expressions(e).strip()} */",
    -147            exp.StrToDate: _str_to_date,
    -148            exp.StrToTime: lambda self, e: f"TO_TIMESTAMP({self.sql(e, 'this')}, {self.format_time(e)})",
    -149            exp.UnixToTime: _unix_to_time,
    -150            exp.Create: _create_sql,
    -151            exp.Map: _map_sql,
    -152            exp.Reduce: rename_func("AGGREGATE"),
    -153            exp.StructKwarg: lambda self, e: f"{self.sql(e, 'this')}: {self.sql(e, 'expression')}",
    -154            exp.TimestampTrunc: lambda self, e: self.func(
    -155                "DATE_TRUNC", exp.Literal.string(e.text("unit")), e.this
    -156            ),
    -157            exp.Trim: trim_sql,
    -158            exp.VariancePop: rename_func("VAR_POP"),
    -159            exp.DateFromParts: rename_func("MAKE_DATE"),
    -160            exp.LogicalOr: rename_func("BOOL_OR"),
    -161            exp.LogicalAnd: rename_func("BOOL_AND"),
    -162            exp.DayOfWeek: rename_func("DAYOFWEEK"),
    -163            exp.DayOfMonth: rename_func("DAYOFMONTH"),
    -164            exp.DayOfYear: rename_func("DAYOFYEAR"),
    -165            exp.WeekOfYear: rename_func("WEEKOFYEAR"),
    -166            exp.AtTimeZone: lambda self, e: f"FROM_UTC_TIMESTAMP({self.sql(e, 'this')}, {self.sql(e, 'zone')})",
    -167        }
    -168        TRANSFORMS.pop(exp.ArraySort)
    -169        TRANSFORMS.pop(exp.ILike)
    -170
    -171        WRAP_DERIVED_VALUES = False
    -172        CREATE_FUNCTION_RETURN_AS = False
    -173
    -174        def cast_sql(self, expression: exp.Cast) -> str:
    -175            if isinstance(expression.this, exp.Cast) and expression.this.is_type(
    -176                exp.DataType.Type.JSON
    -177            ):
    -178                schema = f"'{self.sql(expression, 'to')}'"
    -179                return self.func("FROM_JSON", expression.this.this, schema)
    -180            if expression.to.is_type(exp.DataType.Type.JSON):
    -181                return self.func("TO_JSON", expression.this)
    -182
    -183            return super(Spark.Generator, self).cast_sql(expression)
    -184
    -185    class Tokenizer(Hive.Tokenizer):
    -186        HEX_STRINGS = [("X'", "'")]
    +138            names = []
    +139            for agg in pivot_columns:
    +140                if isinstance(agg, exp.Alias):
    +141                    names.append(agg.alias)
    +142                else:
    +143                    """
    +144                    This case corresponds to aggregations without aliases being used as suffixes
    +145                    (e.g. col_avg(foo)). We need to unquote identifiers because they're going to
    +146                    be quoted in the base parser's `_parse_pivot` method, due to `to_identifier`.
    +147                    Otherwise, we'd end up with `col_avg(`foo`)` (notice the double quotes).
    +148
    +149                    Moreover, function names are lowercased in order to mimic Spark's naming scheme.
    +150                    """
    +151                    agg_all_unquoted = agg.transform(
    +152                        lambda node: exp.Identifier(this=node.name, quoted=False)
    +153                        if isinstance(node, exp.Identifier)
    +154                        else node
    +155                    )
    +156                    names.append(agg_all_unquoted.sql(dialect="spark", normalize_functions="lower"))
    +157
    +158            return names
    +159
    +160    class Generator(Hive.Generator):
    +161        TYPE_MAPPING = {
    +162            **Hive.Generator.TYPE_MAPPING,  # type: ignore
    +163            exp.DataType.Type.TINYINT: "BYTE",
    +164            exp.DataType.Type.SMALLINT: "SHORT",
    +165            exp.DataType.Type.BIGINT: "LONG",
    +166        }
    +167
    +168        PROPERTIES_LOCATION = {
    +169            **Hive.Generator.PROPERTIES_LOCATION,  # type: ignore
    +170            exp.EngineProperty: exp.Properties.Location.UNSUPPORTED,
    +171            exp.AutoIncrementProperty: exp.Properties.Location.UNSUPPORTED,
    +172            exp.CharacterSetProperty: exp.Properties.Location.UNSUPPORTED,
    +173            exp.CollateProperty: exp.Properties.Location.UNSUPPORTED,
    +174        }
    +175
    +176        TRANSFORMS = {
    +177            **Hive.Generator.TRANSFORMS,  # type: ignore
    +178            exp.ApproxDistinct: rename_func("APPROX_COUNT_DISTINCT"),
    +179            exp.FileFormatProperty: lambda self, e: f"USING {e.name.upper()}",
    +180            exp.ArraySum: lambda self, e: f"AGGREGATE({self.sql(e, 'this')}, 0, (acc, x) -> acc + x, acc -> acc)",
    +181            exp.BitwiseLeftShift: rename_func("SHIFTLEFT"),
    +182            exp.BitwiseRightShift: rename_func("SHIFTRIGHT"),
    +183            exp.DateTrunc: lambda self, e: self.func("TRUNC", e.this, e.args.get("unit")),
    +184            exp.Hint: lambda self, e: f" /*+ {self.expressions(e).strip()} */",
    +185            exp.StrToDate: _str_to_date,
    +186            exp.StrToTime: lambda self, e: f"TO_TIMESTAMP({self.sql(e, 'this')}, {self.format_time(e)})",
    +187            exp.UnixToTime: _unix_to_time_sql,
    +188            exp.Create: _create_sql,
    +189            exp.Map: _map_sql,
    +190            exp.Reduce: rename_func("AGGREGATE"),
    +191            exp.StructKwarg: lambda self, e: f"{self.sql(e, 'this')}: {self.sql(e, 'expression')}",
    +192            exp.TimestampTrunc: lambda self, e: self.func(
    +193                "DATE_TRUNC", exp.Literal.string(e.text("unit")), e.this
    +194            ),
    +195            exp.Trim: trim_sql,
    +196            exp.VariancePop: rename_func("VAR_POP"),
    +197            exp.DateFromParts: rename_func("MAKE_DATE"),
    +198            exp.LogicalOr: rename_func("BOOL_OR"),
    +199            exp.LogicalAnd: rename_func("BOOL_AND"),
    +200            exp.DayOfWeek: rename_func("DAYOFWEEK"),
    +201            exp.DayOfMonth: rename_func("DAYOFMONTH"),
    +202            exp.DayOfYear: rename_func("DAYOFYEAR"),
    +203            exp.WeekOfYear: rename_func("WEEKOFYEAR"),
    +204            exp.AtTimeZone: lambda self, e: f"FROM_UTC_TIMESTAMP({self.sql(e, 'this')}, {self.sql(e, 'zone')})",
    +205        }
    +206        TRANSFORMS.pop(exp.ArraySort)
    +207        TRANSFORMS.pop(exp.ILike)
    +208
    +209        WRAP_DERIVED_VALUES = False
    +210        CREATE_FUNCTION_RETURN_AS = False
    +211
    +212        def cast_sql(self, expression: exp.Cast) -> str:
    +213            if isinstance(expression.this, exp.Cast) and expression.this.is_type(
    +214                exp.DataType.Type.JSON
    +215            ):
    +216                schema = f"'{self.sql(expression, 'to')}'"
    +217                return self.func("FROM_JSON", expression.this.this, schema)
    +218            if expression.to.is_type(exp.DataType.Type.JSON):
    +219                return self.func("TO_JSON", expression.this)
    +220
    +221            return super(Spark.Generator, self).cast_sql(expression)
    +222
    +223    class Tokenizer(Hive.Tokenizer):
    +224        HEX_STRINGS = [("X'", "'")]
     
    @@ -450,75 +524,111 @@
    -
     52    class Parser(Hive.Parser):
    - 53        FUNCTIONS = {
    - 54            **Hive.Parser.FUNCTIONS,  # type: ignore
    - 55            "MAP_FROM_ARRAYS": exp.Map.from_arg_list,
    - 56            "TO_UNIX_TIMESTAMP": exp.StrToUnix.from_arg_list,
    - 57            "LEFT": lambda args: exp.Substring(
    - 58                this=seq_get(args, 0),
    - 59                start=exp.Literal.number(1),
    - 60                length=seq_get(args, 1),
    - 61            ),
    - 62            "SHIFTLEFT": lambda args: exp.BitwiseLeftShift(
    - 63                this=seq_get(args, 0),
    - 64                expression=seq_get(args, 1),
    - 65            ),
    - 66            "SHIFTRIGHT": lambda args: exp.BitwiseRightShift(
    - 67                this=seq_get(args, 0),
    - 68                expression=seq_get(args, 1),
    - 69            ),
    - 70            "RIGHT": lambda args: exp.Substring(
    - 71                this=seq_get(args, 0),
    - 72                start=exp.Sub(
    - 73                    this=exp.Length(this=seq_get(args, 0)),
    - 74                    expression=exp.Add(this=seq_get(args, 1), expression=exp.Literal.number(1)),
    - 75                ),
    - 76                length=seq_get(args, 1),
    - 77            ),
    - 78            "APPROX_PERCENTILE": exp.ApproxQuantile.from_arg_list,
    - 79            "IIF": exp.If.from_arg_list,
    - 80            "AGGREGATE": exp.Reduce.from_arg_list,
    - 81            "DAYOFWEEK": lambda args: exp.DayOfWeek(
    - 82                this=exp.TsOrDsToDate(this=seq_get(args, 0)),
    +            
     54    class Parser(Hive.Parser):
    + 55        FUNCTIONS = {
    + 56            **Hive.Parser.FUNCTIONS,  # type: ignore
    + 57            "MAP_FROM_ARRAYS": exp.Map.from_arg_list,
    + 58            "TO_UNIX_TIMESTAMP": exp.StrToUnix.from_arg_list,
    + 59            "LEFT": lambda args: exp.Substring(
    + 60                this=seq_get(args, 0),
    + 61                start=exp.Literal.number(1),
    + 62                length=seq_get(args, 1),
    + 63            ),
    + 64            "SHIFTLEFT": lambda args: exp.BitwiseLeftShift(
    + 65                this=seq_get(args, 0),
    + 66                expression=seq_get(args, 1),
    + 67            ),
    + 68            "SHIFTRIGHT": lambda args: exp.BitwiseRightShift(
    + 69                this=seq_get(args, 0),
    + 70                expression=seq_get(args, 1),
    + 71            ),
    + 72            "RIGHT": lambda args: exp.Substring(
    + 73                this=seq_get(args, 0),
    + 74                start=exp.Sub(
    + 75                    this=exp.Length(this=seq_get(args, 0)),
    + 76                    expression=exp.Add(this=seq_get(args, 1), expression=exp.Literal.number(1)),
    + 77                ),
    + 78                length=seq_get(args, 1),
    + 79            ),
    + 80            "APPROX_PERCENTILE": exp.ApproxQuantile.from_arg_list,
    + 81            "BOOLEAN": lambda args: exp.Cast(
    + 82                this=seq_get(args, 0), to=exp.DataType.build("boolean")
      83            ),
    - 84            "DAYOFMONTH": lambda args: exp.DayOfMonth(
    - 85                this=exp.TsOrDsToDate(this=seq_get(args, 0)),
    - 86            ),
    - 87            "DAYOFYEAR": lambda args: exp.DayOfYear(
    + 84            "IIF": exp.If.from_arg_list,
    + 85            "INT": lambda args: exp.Cast(this=seq_get(args, 0), to=exp.DataType.build("int")),
    + 86            "AGGREGATE": exp.Reduce.from_arg_list,
    + 87            "DAYOFWEEK": lambda args: exp.DayOfWeek(
      88                this=exp.TsOrDsToDate(this=seq_get(args, 0)),
      89            ),
    - 90            "WEEKOFYEAR": lambda args: exp.WeekOfYear(
    + 90            "DAYOFMONTH": lambda args: exp.DayOfMonth(
      91                this=exp.TsOrDsToDate(this=seq_get(args, 0)),
      92            ),
    - 93            "DATE_TRUNC": lambda args: exp.TimestampTrunc(
    - 94                this=seq_get(args, 1),
    - 95                unit=exp.var(seq_get(args, 0)),
    - 96            ),
    - 97            "TRUNC": lambda args: exp.DateTrunc(unit=seq_get(args, 1), this=seq_get(args, 0)),
    - 98        }
    - 99
    -100        FUNCTION_PARSERS = {
    -101            **parser.Parser.FUNCTION_PARSERS,  # type: ignore
    -102            "BROADCAST": lambda self: self._parse_join_hint("BROADCAST"),
    -103            "BROADCASTJOIN": lambda self: self._parse_join_hint("BROADCASTJOIN"),
    -104            "MAPJOIN": lambda self: self._parse_join_hint("MAPJOIN"),
    -105            "MERGE": lambda self: self._parse_join_hint("MERGE"),
    -106            "SHUFFLEMERGE": lambda self: self._parse_join_hint("SHUFFLEMERGE"),
    -107            "MERGEJOIN": lambda self: self._parse_join_hint("MERGEJOIN"),
    -108            "SHUFFLE_HASH": lambda self: self._parse_join_hint("SHUFFLE_HASH"),
    -109            "SHUFFLE_REPLICATE_NL": lambda self: self._parse_join_hint("SHUFFLE_REPLICATE_NL"),
    -110        }
    -111
    -112        def _parse_add_column(self):
    -113            return self._match_text_seq("ADD", "COLUMNS") and self._parse_schema()
    -114
    -115        def _parse_drop_column(self):
    -116            return self._match_text_seq("DROP", "COLUMNS") and self.expression(
    -117                exp.Drop,
    -118                this=self._parse_schema(),
    -119                kind="COLUMNS",
    -120            )
    + 93            "DAYOFYEAR": lambda args: exp.DayOfYear(
    + 94                this=exp.TsOrDsToDate(this=seq_get(args, 0)),
    + 95            ),
    + 96            "WEEKOFYEAR": lambda args: exp.WeekOfYear(
    + 97                this=exp.TsOrDsToDate(this=seq_get(args, 0)),
    + 98            ),
    + 99            "DATE": lambda args: exp.Cast(this=seq_get(args, 0), to=exp.DataType.build("date")),
    +100            "DATE_TRUNC": lambda args: exp.TimestampTrunc(
    +101                this=seq_get(args, 1),
    +102                unit=exp.var(seq_get(args, 0)),
    +103            ),
    +104            "STRING": lambda args: exp.Cast(this=seq_get(args, 0), to=exp.DataType.build("string")),
    +105            "TRUNC": lambda args: exp.DateTrunc(unit=seq_get(args, 1), this=seq_get(args, 0)),
    +106            "TIMESTAMP": lambda args: exp.Cast(
    +107                this=seq_get(args, 0), to=exp.DataType.build("timestamp")
    +108            ),
    +109        }
    +110
    +111        FUNCTION_PARSERS = {
    +112            **parser.Parser.FUNCTION_PARSERS,  # type: ignore
    +113            "BROADCAST": lambda self: self._parse_join_hint("BROADCAST"),
    +114            "BROADCASTJOIN": lambda self: self._parse_join_hint("BROADCASTJOIN"),
    +115            "MAPJOIN": lambda self: self._parse_join_hint("MAPJOIN"),
    +116            "MERGE": lambda self: self._parse_join_hint("MERGE"),
    +117            "SHUFFLEMERGE": lambda self: self._parse_join_hint("SHUFFLEMERGE"),
    +118            "MERGEJOIN": lambda self: self._parse_join_hint("MERGEJOIN"),
    +119            "SHUFFLE_HASH": lambda self: self._parse_join_hint("SHUFFLE_HASH"),
    +120            "SHUFFLE_REPLICATE_NL": lambda self: self._parse_join_hint("SHUFFLE_REPLICATE_NL"),
    +121        }
    +122
    +123        def _parse_add_column(self) -> t.Optional[exp.Expression]:
    +124            return self._match_text_seq("ADD", "COLUMNS") and self._parse_schema()
    +125
    +126        def _parse_drop_column(self) -> t.Optional[exp.Expression]:
    +127            return self._match_text_seq("DROP", "COLUMNS") and self.expression(
    +128                exp.Drop,
    +129                this=self._parse_schema(),
    +130                kind="COLUMNS",
    +131            )
    +132
    +133        def _pivot_column_names(self, pivot_columns: t.List[exp.Expression]) -> t.List[str]:
    +134            # Spark doesn't add a suffix to the pivot columns when there's a single aggregation
    +135            if len(pivot_columns) == 1:
    +136                return [""]
    +137
    +138            names = []
    +139            for agg in pivot_columns:
    +140                if isinstance(agg, exp.Alias):
    +141                    names.append(agg.alias)
    +142                else:
    +143                    """
    +144                    This case corresponds to aggregations without aliases being used as suffixes
    +145                    (e.g. col_avg(foo)). We need to unquote identifiers because they're going to
    +146                    be quoted in the base parser's `_parse_pivot` method, due to `to_identifier`.
    +147                    Otherwise, we'd end up with `col_avg(`foo`)` (notice the double quotes).
    +148
    +149                    Moreover, function names are lowercased in order to mimic Spark's naming scheme.
    +150                    """
    +151                    agg_all_unquoted = agg.transform(
    +152                        lambda node: exp.Identifier(this=node.name, quoted=False)
    +153                        if isinstance(node, exp.Identifier)
    +154                        else node
    +155                    )
    +156                    names.append(agg_all_unquoted.sql(dialect="spark", normalize_functions="lower"))
    +157
    +158            return names
     
    @@ -575,68 +685,68 @@ Default: "nulls_are_small"
    -
    122    class Generator(Hive.Generator):
    -123        TYPE_MAPPING = {
    -124            **Hive.Generator.TYPE_MAPPING,  # type: ignore
    -125            exp.DataType.Type.TINYINT: "BYTE",
    -126            exp.DataType.Type.SMALLINT: "SHORT",
    -127            exp.DataType.Type.BIGINT: "LONG",
    -128        }
    -129
    -130        PROPERTIES_LOCATION = {
    -131            **Hive.Generator.PROPERTIES_LOCATION,  # type: ignore
    -132            exp.EngineProperty: exp.Properties.Location.UNSUPPORTED,
    -133            exp.AutoIncrementProperty: exp.Properties.Location.UNSUPPORTED,
    -134            exp.CharacterSetProperty: exp.Properties.Location.UNSUPPORTED,
    -135            exp.CollateProperty: exp.Properties.Location.UNSUPPORTED,
    -136        }
    -137
    -138        TRANSFORMS = {
    -139            **Hive.Generator.TRANSFORMS,  # type: ignore
    -140            exp.ApproxDistinct: rename_func("APPROX_COUNT_DISTINCT"),
    -141            exp.FileFormatProperty: lambda self, e: f"USING {e.name.upper()}",
    -142            exp.ArraySum: lambda self, e: f"AGGREGATE({self.sql(e, 'this')}, 0, (acc, x) -> acc + x, acc -> acc)",
    -143            exp.BitwiseLeftShift: rename_func("SHIFTLEFT"),
    -144            exp.BitwiseRightShift: rename_func("SHIFTRIGHT"),
    -145            exp.DateTrunc: lambda self, e: self.func("TRUNC", e.this, e.args.get("unit")),
    -146            exp.Hint: lambda self, e: f" /*+ {self.expressions(e).strip()} */",
    -147            exp.StrToDate: _str_to_date,
    -148            exp.StrToTime: lambda self, e: f"TO_TIMESTAMP({self.sql(e, 'this')}, {self.format_time(e)})",
    -149            exp.UnixToTime: _unix_to_time,
    -150            exp.Create: _create_sql,
    -151            exp.Map: _map_sql,
    -152            exp.Reduce: rename_func("AGGREGATE"),
    -153            exp.StructKwarg: lambda self, e: f"{self.sql(e, 'this')}: {self.sql(e, 'expression')}",
    -154            exp.TimestampTrunc: lambda self, e: self.func(
    -155                "DATE_TRUNC", exp.Literal.string(e.text("unit")), e.this
    -156            ),
    -157            exp.Trim: trim_sql,
    -158            exp.VariancePop: rename_func("VAR_POP"),
    -159            exp.DateFromParts: rename_func("MAKE_DATE"),
    -160            exp.LogicalOr: rename_func("BOOL_OR"),
    -161            exp.LogicalAnd: rename_func("BOOL_AND"),
    -162            exp.DayOfWeek: rename_func("DAYOFWEEK"),
    -163            exp.DayOfMonth: rename_func("DAYOFMONTH"),
    -164            exp.DayOfYear: rename_func("DAYOFYEAR"),
    -165            exp.WeekOfYear: rename_func("WEEKOFYEAR"),
    -166            exp.AtTimeZone: lambda self, e: f"FROM_UTC_TIMESTAMP({self.sql(e, 'this')}, {self.sql(e, 'zone')})",
    -167        }
    -168        TRANSFORMS.pop(exp.ArraySort)
    -169        TRANSFORMS.pop(exp.ILike)
    -170
    -171        WRAP_DERIVED_VALUES = False
    -172        CREATE_FUNCTION_RETURN_AS = False
    -173
    -174        def cast_sql(self, expression: exp.Cast) -> str:
    -175            if isinstance(expression.this, exp.Cast) and expression.this.is_type(
    -176                exp.DataType.Type.JSON
    -177            ):
    -178                schema = f"'{self.sql(expression, 'to')}'"
    -179                return self.func("FROM_JSON", expression.this.this, schema)
    -180            if expression.to.is_type(exp.DataType.Type.JSON):
    -181                return self.func("TO_JSON", expression.this)
    -182
    -183            return super(Spark.Generator, self).cast_sql(expression)
    +            
    160    class Generator(Hive.Generator):
    +161        TYPE_MAPPING = {
    +162            **Hive.Generator.TYPE_MAPPING,  # type: ignore
    +163            exp.DataType.Type.TINYINT: "BYTE",
    +164            exp.DataType.Type.SMALLINT: "SHORT",
    +165            exp.DataType.Type.BIGINT: "LONG",
    +166        }
    +167
    +168        PROPERTIES_LOCATION = {
    +169            **Hive.Generator.PROPERTIES_LOCATION,  # type: ignore
    +170            exp.EngineProperty: exp.Properties.Location.UNSUPPORTED,
    +171            exp.AutoIncrementProperty: exp.Properties.Location.UNSUPPORTED,
    +172            exp.CharacterSetProperty: exp.Properties.Location.UNSUPPORTED,
    +173            exp.CollateProperty: exp.Properties.Location.UNSUPPORTED,
    +174        }
    +175
    +176        TRANSFORMS = {
    +177            **Hive.Generator.TRANSFORMS,  # type: ignore
    +178            exp.ApproxDistinct: rename_func("APPROX_COUNT_DISTINCT"),
    +179            exp.FileFormatProperty: lambda self, e: f"USING {e.name.upper()}",
    +180            exp.ArraySum: lambda self, e: f"AGGREGATE({self.sql(e, 'this')}, 0, (acc, x) -> acc + x, acc -> acc)",
    +181            exp.BitwiseLeftShift: rename_func("SHIFTLEFT"),
    +182            exp.BitwiseRightShift: rename_func("SHIFTRIGHT"),
    +183            exp.DateTrunc: lambda self, e: self.func("TRUNC", e.this, e.args.get("unit")),
    +184            exp.Hint: lambda self, e: f" /*+ {self.expressions(e).strip()} */",
    +185            exp.StrToDate: _str_to_date,
    +186            exp.StrToTime: lambda self, e: f"TO_TIMESTAMP({self.sql(e, 'this')}, {self.format_time(e)})",
    +187            exp.UnixToTime: _unix_to_time_sql,
    +188            exp.Create: _create_sql,
    +189            exp.Map: _map_sql,
    +190            exp.Reduce: rename_func("AGGREGATE"),
    +191            exp.StructKwarg: lambda self, e: f"{self.sql(e, 'this')}: {self.sql(e, 'expression')}",
    +192            exp.TimestampTrunc: lambda self, e: self.func(
    +193                "DATE_TRUNC", exp.Literal.string(e.text("unit")), e.this
    +194            ),
    +195            exp.Trim: trim_sql,
    +196            exp.VariancePop: rename_func("VAR_POP"),
    +197            exp.DateFromParts: rename_func("MAKE_DATE"),
    +198            exp.LogicalOr: rename_func("BOOL_OR"),
    +199            exp.LogicalAnd: rename_func("BOOL_AND"),
    +200            exp.DayOfWeek: rename_func("DAYOFWEEK"),
    +201            exp.DayOfMonth: rename_func("DAYOFMONTH"),
    +202            exp.DayOfYear: rename_func("DAYOFYEAR"),
    +203            exp.WeekOfYear: rename_func("WEEKOFYEAR"),
    +204            exp.AtTimeZone: lambda self, e: f"FROM_UTC_TIMESTAMP({self.sql(e, 'this')}, {self.sql(e, 'zone')})",
    +205        }
    +206        TRANSFORMS.pop(exp.ArraySort)
    +207        TRANSFORMS.pop(exp.ILike)
    +208
    +209        WRAP_DERIVED_VALUES = False
    +210        CREATE_FUNCTION_RETURN_AS = False
    +211
    +212        def cast_sql(self, expression: exp.Cast) -> str:
    +213            if isinstance(expression.this, exp.Cast) and expression.this.is_type(
    +214                exp.DataType.Type.JSON
    +215            ):
    +216                schema = f"'{self.sql(expression, 'to')}'"
    +217                return self.func("FROM_JSON", expression.this.this, schema)
    +218            if expression.to.is_type(exp.DataType.Type.JSON):
    +219                return self.func("TO_JSON", expression.this)
    +220
    +221            return super(Spark.Generator, self).cast_sql(expression)
     
    @@ -695,16 +805,16 @@ Default: True
    -
    174        def cast_sql(self, expression: exp.Cast) -> str:
    -175            if isinstance(expression.this, exp.Cast) and expression.this.is_type(
    -176                exp.DataType.Type.JSON
    -177            ):
    -178                schema = f"'{self.sql(expression, 'to')}'"
    -179                return self.func("FROM_JSON", expression.this.this, schema)
    -180            if expression.to.is_type(exp.DataType.Type.JSON):
    -181                return self.func("TO_JSON", expression.this)
    -182
    -183            return super(Spark.Generator, self).cast_sql(expression)
    +            
    212        def cast_sql(self, expression: exp.Cast) -> str:
    +213            if isinstance(expression.this, exp.Cast) and expression.this.is_type(
    +214                exp.DataType.Type.JSON
    +215            ):
    +216                schema = f"'{self.sql(expression, 'to')}'"
    +217                return self.func("FROM_JSON", expression.this.this, schema)
    +218            if expression.to.is_type(exp.DataType.Type.JSON):
    +219                return self.func("TO_JSON", expression.this)
    +220
    +221            return super(Spark.Generator, self).cast_sql(expression)
     
    @@ -748,6 +858,7 @@ Default: True
    tablealias_sql
    bitstring_sql
    hexstring_sql
    +
    bytestring_sql
    directory_sql
    delete_sql
    drop_sql
    @@ -758,6 +869,7 @@ Default: True
    hint_sql
    index_sql
    identifier_sql
    +
    inputoutputformat_sql
    national_sql
    partition_sql
    properties_sql
    @@ -782,6 +894,7 @@ Default: True
    intersect_op
    introducer_sql
    pseudotype_sql
    +
    onconflict_sql
    returning_sql
    rowformatdelimitedproperty_sql
    table_sql
    @@ -955,8 +1068,8 @@ Default: True
    -
    185    class Tokenizer(Hive.Tokenizer):
    -186        HEX_STRINGS = [("X'", "'")]
    +            
    223    class Tokenizer(Hive.Tokenizer):
    +224        HEX_STRINGS = [("X'", "'")]
     
    diff --git a/docs/sqlglot/dialects/sqlite.html b/docs/sqlglot/dialects/sqlite.html index ce7b580..187ace6 100644 --- a/docs/sqlglot/dialects/sqlite.html +++ b/docs/sqlglot/dialects/sqlite.html @@ -3,7 +3,7 @@ - + sqlglot.dialects.sqlite API documentation @@ -110,7 +110,7 @@
    16 17def _date_add_sql(self, expression): 18 modifier = expression.expression - 19 modifier = expression.name if modifier.is_string else self.sql(modifier) + 19 modifier = modifier.name if modifier.is_string else self.sql(modifier) 20 unit = expression.args.get("unit") 21 modifier = f"'{modifier} {unit.name}'" if unit else f"'{modifier}'" 22 return self.func("DATE", expression.this, modifier) @@ -132,111 +132,119 @@ 38 } 39 40 class Generator(generator.Generator): - 41 TYPE_MAPPING = { - 42 **generator.Generator.TYPE_MAPPING, # type: ignore - 43 exp.DataType.Type.BOOLEAN: "INTEGER", - 44 exp.DataType.Type.TINYINT: "INTEGER", - 45 exp.DataType.Type.SMALLINT: "INTEGER", - 46 exp.DataType.Type.INT: "INTEGER", - 47 exp.DataType.Type.BIGINT: "INTEGER", - 48 exp.DataType.Type.FLOAT: "REAL", - 49 exp.DataType.Type.DOUBLE: "REAL", - 50 exp.DataType.Type.DECIMAL: "REAL", - 51 exp.DataType.Type.CHAR: "TEXT", - 52 exp.DataType.Type.NCHAR: "TEXT", - 53 exp.DataType.Type.VARCHAR: "TEXT", - 54 exp.DataType.Type.NVARCHAR: "TEXT", - 55 exp.DataType.Type.BINARY: "BLOB", - 56 exp.DataType.Type.VARBINARY: "BLOB", - 57 } - 58 - 59 TOKEN_MAPPING = { - 60 TokenType.AUTO_INCREMENT: "AUTOINCREMENT", - 61 } - 62 - 63 TRANSFORMS = { - 64 **generator.Generator.TRANSFORMS, # type: ignore - 65 **transforms.ELIMINATE_QUALIFY, # type: ignore - 66 exp.CountIf: count_if_to_sum, - 67 exp.CurrentDate: lambda *_: "CURRENT_DATE", - 68 exp.CurrentTime: lambda *_: "CURRENT_TIME", - 69 exp.CurrentTimestamp: lambda *_: "CURRENT_TIMESTAMP", - 70 exp.DateAdd: _date_add_sql, - 71 exp.DateStrToDate: lambda self, e: self.sql(e, "this"), - 72 exp.ILike: no_ilike_sql, - 73 exp.JSONExtract: arrow_json_extract_sql, - 74 exp.JSONExtractScalar: arrow_json_extract_scalar_sql, - 75 exp.JSONBExtract: arrow_json_extract_sql, - 76 exp.JSONBExtractScalar: arrow_json_extract_scalar_sql, - 77 exp.Levenshtein: rename_func("EDITDIST3"), - 78 exp.LogicalOr: rename_func("MAX"), - 79 exp.LogicalAnd: rename_func("MIN"), - 80 exp.TableSample: no_tablesample_sql, - 81 exp.TimeStrToTime: lambda self, e: self.sql(e, "this"), - 82 exp.TryCast: no_trycast_sql, - 83 } - 84 - 85 LIMIT_FETCH = "LIMIT" - 86 - 87 def cast_sql(self, expression: exp.Cast) -> str: - 88 if expression.to.this == exp.DataType.Type.DATE: - 89 return self.func("DATE", expression.this) - 90 - 91 return super().cast_sql(expression) + 41 JOIN_HINTS = False + 42 TABLE_HINTS = False + 43 + 44 TYPE_MAPPING = { + 45 **generator.Generator.TYPE_MAPPING, # type: ignore + 46 exp.DataType.Type.BOOLEAN: "INTEGER", + 47 exp.DataType.Type.TINYINT: "INTEGER", + 48 exp.DataType.Type.SMALLINT: "INTEGER", + 49 exp.DataType.Type.INT: "INTEGER", + 50 exp.DataType.Type.BIGINT: "INTEGER", + 51 exp.DataType.Type.FLOAT: "REAL", + 52 exp.DataType.Type.DOUBLE: "REAL", + 53 exp.DataType.Type.DECIMAL: "REAL", + 54 exp.DataType.Type.CHAR: "TEXT", + 55 exp.DataType.Type.NCHAR: "TEXT", + 56 exp.DataType.Type.VARCHAR: "TEXT", + 57 exp.DataType.Type.NVARCHAR: "TEXT", + 58 exp.DataType.Type.BINARY: "BLOB", + 59 exp.DataType.Type.VARBINARY: "BLOB", + 60 } + 61 + 62 TOKEN_MAPPING = { + 63 TokenType.AUTO_INCREMENT: "AUTOINCREMENT", + 64 } + 65 + 66 TRANSFORMS = { + 67 **generator.Generator.TRANSFORMS, # type: ignore + 68 **transforms.ELIMINATE_QUALIFY, # type: ignore + 69 exp.CountIf: count_if_to_sum, + 70 exp.CurrentDate: lambda *_: "CURRENT_DATE", + 71 exp.CurrentTime: lambda *_: "CURRENT_TIME", + 72 exp.CurrentTimestamp: lambda *_: "CURRENT_TIMESTAMP", + 73 exp.DateAdd: _date_add_sql, + 74 exp.DateStrToDate: lambda self, e: self.sql(e, "this"), + 75 exp.ILike: no_ilike_sql, + 76 exp.JSONExtract: arrow_json_extract_sql, + 77 exp.JSONExtractScalar: arrow_json_extract_scalar_sql, + 78 exp.JSONBExtract: arrow_json_extract_sql, + 79 exp.JSONBExtractScalar: arrow_json_extract_scalar_sql, + 80 exp.Levenshtein: rename_func("EDITDIST3"), + 81 exp.LogicalOr: rename_func("MAX"), + 82 exp.LogicalAnd: rename_func("MIN"), + 83 exp.TableSample: no_tablesample_sql, + 84 exp.TimeStrToTime: lambda self, e: self.sql(e, "this"), + 85 exp.TryCast: no_trycast_sql, + 86 } + 87 + 88 PROPERTIES_LOCATION = { + 89 **generator.Generator.PROPERTIES_LOCATION, # type: ignore + 90 exp.VolatileProperty: exp.Properties.Location.UNSUPPORTED, + 91 } 92 - 93 def datediff_sql(self, expression: exp.DateDiff) -> str: - 94 unit = expression.args.get("unit") - 95 unit = unit.name.upper() if unit else "DAY" - 96 - 97 sql = f"(JULIANDAY({self.sql(expression, 'this')}) - JULIANDAY({self.sql(expression, 'expression')}))" + 93 LIMIT_FETCH = "LIMIT" + 94 + 95 def cast_sql(self, expression: exp.Cast) -> str: + 96 if expression.to.this == exp.DataType.Type.DATE: + 97 return self.func("DATE", expression.this) 98 - 99 if unit == "MONTH": -100 sql = f"{sql} / 30.0" -101 elif unit == "YEAR": -102 sql = f"{sql} / 365.0" -103 elif unit == "HOUR": -104 sql = f"{sql} * 24.0" -105 elif unit == "MINUTE": -106 sql = f"{sql} * 1440.0" -107 elif unit == "SECOND": -108 sql = f"{sql} * 86400.0" -109 elif unit == "MILLISECOND": -110 sql = f"{sql} * 86400000.0" -111 elif unit == "MICROSECOND": -112 sql = f"{sql} * 86400000000.0" -113 elif unit == "NANOSECOND": -114 sql = f"{sql} * 8640000000000.0" -115 else: -116 self.unsupported("DATEDIFF unsupported for '{unit}'.") -117 -118 return f"CAST({sql} AS INTEGER)" -119 -120 # https://www.sqlite.org/lang_aggfunc.html#group_concat -121 def groupconcat_sql(self, expression): -122 this = expression.this -123 distinct = expression.find(exp.Distinct) -124 if distinct: -125 this = distinct.expressions[0] -126 distinct = "DISTINCT " + 99 return super().cast_sql(expression) +100 +101 def datediff_sql(self, expression: exp.DateDiff) -> str: +102 unit = expression.args.get("unit") +103 unit = unit.name.upper() if unit else "DAY" +104 +105 sql = f"(JULIANDAY({self.sql(expression, 'this')}) - JULIANDAY({self.sql(expression, 'expression')}))" +106 +107 if unit == "MONTH": +108 sql = f"{sql} / 30.0" +109 elif unit == "YEAR": +110 sql = f"{sql} / 365.0" +111 elif unit == "HOUR": +112 sql = f"{sql} * 24.0" +113 elif unit == "MINUTE": +114 sql = f"{sql} * 1440.0" +115 elif unit == "SECOND": +116 sql = f"{sql} * 86400.0" +117 elif unit == "MILLISECOND": +118 sql = f"{sql} * 86400000.0" +119 elif unit == "MICROSECOND": +120 sql = f"{sql} * 86400000000.0" +121 elif unit == "NANOSECOND": +122 sql = f"{sql} * 8640000000000.0" +123 else: +124 self.unsupported("DATEDIFF unsupported for '{unit}'.") +125 +126 return f"CAST({sql} AS INTEGER)" 127 -128 if isinstance(expression.this, exp.Order): -129 self.unsupported("SQLite GROUP_CONCAT doesn't support ORDER BY.") -130 if expression.this.this and not distinct: -131 this = expression.this.this -132 -133 separator = expression.args.get("separator") -134 return f"GROUP_CONCAT({distinct or ''}{self.format_args(this, separator)})" +128 # https://www.sqlite.org/lang_aggfunc.html#group_concat +129 def groupconcat_sql(self, expression): +130 this = expression.this +131 distinct = expression.find(exp.Distinct) +132 if distinct: +133 this = distinct.expressions[0] +134 distinct = "DISTINCT " 135 -136 def least_sql(self, expression: exp.Least) -> str: -137 if len(expression.expressions) > 1: -138 return rename_func("MIN")(self, expression) -139 -140 return self.expressions(expression) -141 -142 def transaction_sql(self, expression: exp.Transaction) -> str: -143 this = expression.this -144 this = f" {this}" if this else "" -145 return f"BEGIN{this} TRANSACTION" +136 if isinstance(expression.this, exp.Order): +137 self.unsupported("SQLite GROUP_CONCAT doesn't support ORDER BY.") +138 if expression.this.this and not distinct: +139 this = expression.this.this +140 +141 separator = expression.args.get("separator") +142 return f"GROUP_CONCAT({distinct or ''}{self.format_args(this, separator)})" +143 +144 def least_sql(self, expression: exp.Least) -> str: +145 if len(expression.expressions) > 1: +146 return rename_func("MIN")(self, expression) +147 +148 return self.expressions(expression) +149 +150 def transaction_sql(self, expression: exp.Transaction) -> str: +151 this = expression.this +152 this = f" {this}" if this else "" +153 return f"BEGIN{this} TRANSACTION"
    @@ -268,111 +276,119 @@
    39 } 40 41 class Generator(generator.Generator): - 42 TYPE_MAPPING = { - 43 **generator.Generator.TYPE_MAPPING, # type: ignore - 44 exp.DataType.Type.BOOLEAN: "INTEGER", - 45 exp.DataType.Type.TINYINT: "INTEGER", - 46 exp.DataType.Type.SMALLINT: "INTEGER", - 47 exp.DataType.Type.INT: "INTEGER", - 48 exp.DataType.Type.BIGINT: "INTEGER", - 49 exp.DataType.Type.FLOAT: "REAL", - 50 exp.DataType.Type.DOUBLE: "REAL", - 51 exp.DataType.Type.DECIMAL: "REAL", - 52 exp.DataType.Type.CHAR: "TEXT", - 53 exp.DataType.Type.NCHAR: "TEXT", - 54 exp.DataType.Type.VARCHAR: "TEXT", - 55 exp.DataType.Type.NVARCHAR: "TEXT", - 56 exp.DataType.Type.BINARY: "BLOB", - 57 exp.DataType.Type.VARBINARY: "BLOB", - 58 } - 59 - 60 TOKEN_MAPPING = { - 61 TokenType.AUTO_INCREMENT: "AUTOINCREMENT", - 62 } - 63 - 64 TRANSFORMS = { - 65 **generator.Generator.TRANSFORMS, # type: ignore - 66 **transforms.ELIMINATE_QUALIFY, # type: ignore - 67 exp.CountIf: count_if_to_sum, - 68 exp.CurrentDate: lambda *_: "CURRENT_DATE", - 69 exp.CurrentTime: lambda *_: "CURRENT_TIME", - 70 exp.CurrentTimestamp: lambda *_: "CURRENT_TIMESTAMP", - 71 exp.DateAdd: _date_add_sql, - 72 exp.DateStrToDate: lambda self, e: self.sql(e, "this"), - 73 exp.ILike: no_ilike_sql, - 74 exp.JSONExtract: arrow_json_extract_sql, - 75 exp.JSONExtractScalar: arrow_json_extract_scalar_sql, - 76 exp.JSONBExtract: arrow_json_extract_sql, - 77 exp.JSONBExtractScalar: arrow_json_extract_scalar_sql, - 78 exp.Levenshtein: rename_func("EDITDIST3"), - 79 exp.LogicalOr: rename_func("MAX"), - 80 exp.LogicalAnd: rename_func("MIN"), - 81 exp.TableSample: no_tablesample_sql, - 82 exp.TimeStrToTime: lambda self, e: self.sql(e, "this"), - 83 exp.TryCast: no_trycast_sql, - 84 } - 85 - 86 LIMIT_FETCH = "LIMIT" - 87 - 88 def cast_sql(self, expression: exp.Cast) -> str: - 89 if expression.to.this == exp.DataType.Type.DATE: - 90 return self.func("DATE", expression.this) - 91 - 92 return super().cast_sql(expression) + 42 JOIN_HINTS = False + 43 TABLE_HINTS = False + 44 + 45 TYPE_MAPPING = { + 46 **generator.Generator.TYPE_MAPPING, # type: ignore + 47 exp.DataType.Type.BOOLEAN: "INTEGER", + 48 exp.DataType.Type.TINYINT: "INTEGER", + 49 exp.DataType.Type.SMALLINT: "INTEGER", + 50 exp.DataType.Type.INT: "INTEGER", + 51 exp.DataType.Type.BIGINT: "INTEGER", + 52 exp.DataType.Type.FLOAT: "REAL", + 53 exp.DataType.Type.DOUBLE: "REAL", + 54 exp.DataType.Type.DECIMAL: "REAL", + 55 exp.DataType.Type.CHAR: "TEXT", + 56 exp.DataType.Type.NCHAR: "TEXT", + 57 exp.DataType.Type.VARCHAR: "TEXT", + 58 exp.DataType.Type.NVARCHAR: "TEXT", + 59 exp.DataType.Type.BINARY: "BLOB", + 60 exp.DataType.Type.VARBINARY: "BLOB", + 61 } + 62 + 63 TOKEN_MAPPING = { + 64 TokenType.AUTO_INCREMENT: "AUTOINCREMENT", + 65 } + 66 + 67 TRANSFORMS = { + 68 **generator.Generator.TRANSFORMS, # type: ignore + 69 **transforms.ELIMINATE_QUALIFY, # type: ignore + 70 exp.CountIf: count_if_to_sum, + 71 exp.CurrentDate: lambda *_: "CURRENT_DATE", + 72 exp.CurrentTime: lambda *_: "CURRENT_TIME", + 73 exp.CurrentTimestamp: lambda *_: "CURRENT_TIMESTAMP", + 74 exp.DateAdd: _date_add_sql, + 75 exp.DateStrToDate: lambda self, e: self.sql(e, "this"), + 76 exp.ILike: no_ilike_sql, + 77 exp.JSONExtract: arrow_json_extract_sql, + 78 exp.JSONExtractScalar: arrow_json_extract_scalar_sql, + 79 exp.JSONBExtract: arrow_json_extract_sql, + 80 exp.JSONBExtractScalar: arrow_json_extract_scalar_sql, + 81 exp.Levenshtein: rename_func("EDITDIST3"), + 82 exp.LogicalOr: rename_func("MAX"), + 83 exp.LogicalAnd: rename_func("MIN"), + 84 exp.TableSample: no_tablesample_sql, + 85 exp.TimeStrToTime: lambda self, e: self.sql(e, "this"), + 86 exp.TryCast: no_trycast_sql, + 87 } + 88 + 89 PROPERTIES_LOCATION = { + 90 **generator.Generator.PROPERTIES_LOCATION, # type: ignore + 91 exp.VolatileProperty: exp.Properties.Location.UNSUPPORTED, + 92 } 93 - 94 def datediff_sql(self, expression: exp.DateDiff) -> str: - 95 unit = expression.args.get("unit") - 96 unit = unit.name.upper() if unit else "DAY" - 97 - 98 sql = f"(JULIANDAY({self.sql(expression, 'this')}) - JULIANDAY({self.sql(expression, 'expression')}))" + 94 LIMIT_FETCH = "LIMIT" + 95 + 96 def cast_sql(self, expression: exp.Cast) -> str: + 97 if expression.to.this == exp.DataType.Type.DATE: + 98 return self.func("DATE", expression.this) 99 -100 if unit == "MONTH": -101 sql = f"{sql} / 30.0" -102 elif unit == "YEAR": -103 sql = f"{sql} / 365.0" -104 elif unit == "HOUR": -105 sql = f"{sql} * 24.0" -106 elif unit == "MINUTE": -107 sql = f"{sql} * 1440.0" -108 elif unit == "SECOND": -109 sql = f"{sql} * 86400.0" -110 elif unit == "MILLISECOND": -111 sql = f"{sql} * 86400000.0" -112 elif unit == "MICROSECOND": -113 sql = f"{sql} * 86400000000.0" -114 elif unit == "NANOSECOND": -115 sql = f"{sql} * 8640000000000.0" -116 else: -117 self.unsupported("DATEDIFF unsupported for '{unit}'.") -118 -119 return f"CAST({sql} AS INTEGER)" -120 -121 # https://www.sqlite.org/lang_aggfunc.html#group_concat -122 def groupconcat_sql(self, expression): -123 this = expression.this -124 distinct = expression.find(exp.Distinct) -125 if distinct: -126 this = distinct.expressions[0] -127 distinct = "DISTINCT " +100 return super().cast_sql(expression) +101 +102 def datediff_sql(self, expression: exp.DateDiff) -> str: +103 unit = expression.args.get("unit") +104 unit = unit.name.upper() if unit else "DAY" +105 +106 sql = f"(JULIANDAY({self.sql(expression, 'this')}) - JULIANDAY({self.sql(expression, 'expression')}))" +107 +108 if unit == "MONTH": +109 sql = f"{sql} / 30.0" +110 elif unit == "YEAR": +111 sql = f"{sql} / 365.0" +112 elif unit == "HOUR": +113 sql = f"{sql} * 24.0" +114 elif unit == "MINUTE": +115 sql = f"{sql} * 1440.0" +116 elif unit == "SECOND": +117 sql = f"{sql} * 86400.0" +118 elif unit == "MILLISECOND": +119 sql = f"{sql} * 86400000.0" +120 elif unit == "MICROSECOND": +121 sql = f"{sql} * 86400000000.0" +122 elif unit == "NANOSECOND": +123 sql = f"{sql} * 8640000000000.0" +124 else: +125 self.unsupported("DATEDIFF unsupported for '{unit}'.") +126 +127 return f"CAST({sql} AS INTEGER)" 128 -129 if isinstance(expression.this, exp.Order): -130 self.unsupported("SQLite GROUP_CONCAT doesn't support ORDER BY.") -131 if expression.this.this and not distinct: -132 this = expression.this.this -133 -134 separator = expression.args.get("separator") -135 return f"GROUP_CONCAT({distinct or ''}{self.format_args(this, separator)})" +129 # https://www.sqlite.org/lang_aggfunc.html#group_concat +130 def groupconcat_sql(self, expression): +131 this = expression.this +132 distinct = expression.find(exp.Distinct) +133 if distinct: +134 this = distinct.expressions[0] +135 distinct = "DISTINCT " 136 -137 def least_sql(self, expression: exp.Least) -> str: -138 if len(expression.expressions) > 1: -139 return rename_func("MIN")(self, expression) -140 -141 return self.expressions(expression) -142 -143 def transaction_sql(self, expression: exp.Transaction) -> str: -144 this = expression.this -145 this = f" {this}" if this else "" -146 return f"BEGIN{this} TRANSACTION" +137 if isinstance(expression.this, exp.Order): +138 self.unsupported("SQLite GROUP_CONCAT doesn't support ORDER BY.") +139 if expression.this.this and not distinct: +140 this = expression.this.this +141 +142 separator = expression.args.get("separator") +143 return f"GROUP_CONCAT({distinct or ''}{self.format_args(this, separator)})" +144 +145 def least_sql(self, expression: exp.Least) -> str: +146 if len(expression.expressions) > 1: +147 return rename_func("MIN")(self, expression) +148 +149 return self.expressions(expression) +150 +151 def transaction_sql(self, expression: exp.Transaction) -> str: +152 this = expression.this +153 this = f" {this}" if this else "" +154 return f"BEGIN{this} TRANSACTION"
    @@ -503,111 +519,119 @@ Default: "nulls_are_small"
     41    class Generator(generator.Generator):
    - 42        TYPE_MAPPING = {
    - 43            **generator.Generator.TYPE_MAPPING,  # type: ignore
    - 44            exp.DataType.Type.BOOLEAN: "INTEGER",
    - 45            exp.DataType.Type.TINYINT: "INTEGER",
    - 46            exp.DataType.Type.SMALLINT: "INTEGER",
    - 47            exp.DataType.Type.INT: "INTEGER",
    - 48            exp.DataType.Type.BIGINT: "INTEGER",
    - 49            exp.DataType.Type.FLOAT: "REAL",
    - 50            exp.DataType.Type.DOUBLE: "REAL",
    - 51            exp.DataType.Type.DECIMAL: "REAL",
    - 52            exp.DataType.Type.CHAR: "TEXT",
    - 53            exp.DataType.Type.NCHAR: "TEXT",
    - 54            exp.DataType.Type.VARCHAR: "TEXT",
    - 55            exp.DataType.Type.NVARCHAR: "TEXT",
    - 56            exp.DataType.Type.BINARY: "BLOB",
    - 57            exp.DataType.Type.VARBINARY: "BLOB",
    - 58        }
    - 59
    - 60        TOKEN_MAPPING = {
    - 61            TokenType.AUTO_INCREMENT: "AUTOINCREMENT",
    - 62        }
    - 63
    - 64        TRANSFORMS = {
    - 65            **generator.Generator.TRANSFORMS,  # type: ignore
    - 66            **transforms.ELIMINATE_QUALIFY,  # type: ignore
    - 67            exp.CountIf: count_if_to_sum,
    - 68            exp.CurrentDate: lambda *_: "CURRENT_DATE",
    - 69            exp.CurrentTime: lambda *_: "CURRENT_TIME",
    - 70            exp.CurrentTimestamp: lambda *_: "CURRENT_TIMESTAMP",
    - 71            exp.DateAdd: _date_add_sql,
    - 72            exp.DateStrToDate: lambda self, e: self.sql(e, "this"),
    - 73            exp.ILike: no_ilike_sql,
    - 74            exp.JSONExtract: arrow_json_extract_sql,
    - 75            exp.JSONExtractScalar: arrow_json_extract_scalar_sql,
    - 76            exp.JSONBExtract: arrow_json_extract_sql,
    - 77            exp.JSONBExtractScalar: arrow_json_extract_scalar_sql,
    - 78            exp.Levenshtein: rename_func("EDITDIST3"),
    - 79            exp.LogicalOr: rename_func("MAX"),
    - 80            exp.LogicalAnd: rename_func("MIN"),
    - 81            exp.TableSample: no_tablesample_sql,
    - 82            exp.TimeStrToTime: lambda self, e: self.sql(e, "this"),
    - 83            exp.TryCast: no_trycast_sql,
    - 84        }
    - 85
    - 86        LIMIT_FETCH = "LIMIT"
    - 87
    - 88        def cast_sql(self, expression: exp.Cast) -> str:
    - 89            if expression.to.this == exp.DataType.Type.DATE:
    - 90                return self.func("DATE", expression.this)
    - 91
    - 92            return super().cast_sql(expression)
    + 42        JOIN_HINTS = False
    + 43        TABLE_HINTS = False
    + 44
    + 45        TYPE_MAPPING = {
    + 46            **generator.Generator.TYPE_MAPPING,  # type: ignore
    + 47            exp.DataType.Type.BOOLEAN: "INTEGER",
    + 48            exp.DataType.Type.TINYINT: "INTEGER",
    + 49            exp.DataType.Type.SMALLINT: "INTEGER",
    + 50            exp.DataType.Type.INT: "INTEGER",
    + 51            exp.DataType.Type.BIGINT: "INTEGER",
    + 52            exp.DataType.Type.FLOAT: "REAL",
    + 53            exp.DataType.Type.DOUBLE: "REAL",
    + 54            exp.DataType.Type.DECIMAL: "REAL",
    + 55            exp.DataType.Type.CHAR: "TEXT",
    + 56            exp.DataType.Type.NCHAR: "TEXT",
    + 57            exp.DataType.Type.VARCHAR: "TEXT",
    + 58            exp.DataType.Type.NVARCHAR: "TEXT",
    + 59            exp.DataType.Type.BINARY: "BLOB",
    + 60            exp.DataType.Type.VARBINARY: "BLOB",
    + 61        }
    + 62
    + 63        TOKEN_MAPPING = {
    + 64            TokenType.AUTO_INCREMENT: "AUTOINCREMENT",
    + 65        }
    + 66
    + 67        TRANSFORMS = {
    + 68            **generator.Generator.TRANSFORMS,  # type: ignore
    + 69            **transforms.ELIMINATE_QUALIFY,  # type: ignore
    + 70            exp.CountIf: count_if_to_sum,
    + 71            exp.CurrentDate: lambda *_: "CURRENT_DATE",
    + 72            exp.CurrentTime: lambda *_: "CURRENT_TIME",
    + 73            exp.CurrentTimestamp: lambda *_: "CURRENT_TIMESTAMP",
    + 74            exp.DateAdd: _date_add_sql,
    + 75            exp.DateStrToDate: lambda self, e: self.sql(e, "this"),
    + 76            exp.ILike: no_ilike_sql,
    + 77            exp.JSONExtract: arrow_json_extract_sql,
    + 78            exp.JSONExtractScalar: arrow_json_extract_scalar_sql,
    + 79            exp.JSONBExtract: arrow_json_extract_sql,
    + 80            exp.JSONBExtractScalar: arrow_json_extract_scalar_sql,
    + 81            exp.Levenshtein: rename_func("EDITDIST3"),
    + 82            exp.LogicalOr: rename_func("MAX"),
    + 83            exp.LogicalAnd: rename_func("MIN"),
    + 84            exp.TableSample: no_tablesample_sql,
    + 85            exp.TimeStrToTime: lambda self, e: self.sql(e, "this"),
    + 86            exp.TryCast: no_trycast_sql,
    + 87        }
    + 88
    + 89        PROPERTIES_LOCATION = {
    + 90            **generator.Generator.PROPERTIES_LOCATION,  # type: ignore
    + 91            exp.VolatileProperty: exp.Properties.Location.UNSUPPORTED,
    + 92        }
      93
    - 94        def datediff_sql(self, expression: exp.DateDiff) -> str:
    - 95            unit = expression.args.get("unit")
    - 96            unit = unit.name.upper() if unit else "DAY"
    - 97
    - 98            sql = f"(JULIANDAY({self.sql(expression, 'this')}) - JULIANDAY({self.sql(expression, 'expression')}))"
    + 94        LIMIT_FETCH = "LIMIT"
    + 95
    + 96        def cast_sql(self, expression: exp.Cast) -> str:
    + 97            if expression.to.this == exp.DataType.Type.DATE:
    + 98                return self.func("DATE", expression.this)
      99
    -100            if unit == "MONTH":
    -101                sql = f"{sql} / 30.0"
    -102            elif unit == "YEAR":
    -103                sql = f"{sql} / 365.0"
    -104            elif unit == "HOUR":
    -105                sql = f"{sql} * 24.0"
    -106            elif unit == "MINUTE":
    -107                sql = f"{sql} * 1440.0"
    -108            elif unit == "SECOND":
    -109                sql = f"{sql} * 86400.0"
    -110            elif unit == "MILLISECOND":
    -111                sql = f"{sql} * 86400000.0"
    -112            elif unit == "MICROSECOND":
    -113                sql = f"{sql} * 86400000000.0"
    -114            elif unit == "NANOSECOND":
    -115                sql = f"{sql} * 8640000000000.0"
    -116            else:
    -117                self.unsupported("DATEDIFF unsupported for '{unit}'.")
    -118
    -119            return f"CAST({sql} AS INTEGER)"
    -120
    -121        # https://www.sqlite.org/lang_aggfunc.html#group_concat
    -122        def groupconcat_sql(self, expression):
    -123            this = expression.this
    -124            distinct = expression.find(exp.Distinct)
    -125            if distinct:
    -126                this = distinct.expressions[0]
    -127                distinct = "DISTINCT "
    +100            return super().cast_sql(expression)
    +101
    +102        def datediff_sql(self, expression: exp.DateDiff) -> str:
    +103            unit = expression.args.get("unit")
    +104            unit = unit.name.upper() if unit else "DAY"
    +105
    +106            sql = f"(JULIANDAY({self.sql(expression, 'this')}) - JULIANDAY({self.sql(expression, 'expression')}))"
    +107
    +108            if unit == "MONTH":
    +109                sql = f"{sql} / 30.0"
    +110            elif unit == "YEAR":
    +111                sql = f"{sql} / 365.0"
    +112            elif unit == "HOUR":
    +113                sql = f"{sql} * 24.0"
    +114            elif unit == "MINUTE":
    +115                sql = f"{sql} * 1440.0"
    +116            elif unit == "SECOND":
    +117                sql = f"{sql} * 86400.0"
    +118            elif unit == "MILLISECOND":
    +119                sql = f"{sql} * 86400000.0"
    +120            elif unit == "MICROSECOND":
    +121                sql = f"{sql} * 86400000000.0"
    +122            elif unit == "NANOSECOND":
    +123                sql = f"{sql} * 8640000000000.0"
    +124            else:
    +125                self.unsupported("DATEDIFF unsupported for '{unit}'.")
    +126
    +127            return f"CAST({sql} AS INTEGER)"
     128
    -129            if isinstance(expression.this, exp.Order):
    -130                self.unsupported("SQLite GROUP_CONCAT doesn't support ORDER BY.")
    -131                if expression.this.this and not distinct:
    -132                    this = expression.this.this
    -133
    -134            separator = expression.args.get("separator")
    -135            return f"GROUP_CONCAT({distinct or ''}{self.format_args(this, separator)})"
    +129        # https://www.sqlite.org/lang_aggfunc.html#group_concat
    +130        def groupconcat_sql(self, expression):
    +131            this = expression.this
    +132            distinct = expression.find(exp.Distinct)
    +133            if distinct:
    +134                this = distinct.expressions[0]
    +135                distinct = "DISTINCT "
     136
    -137        def least_sql(self, expression: exp.Least) -> str:
    -138            if len(expression.expressions) > 1:
    -139                return rename_func("MIN")(self, expression)
    -140
    -141            return self.expressions(expression)
    -142
    -143        def transaction_sql(self, expression: exp.Transaction) -> str:
    -144            this = expression.this
    -145            this = f" {this}" if this else ""
    -146            return f"BEGIN{this} TRANSACTION"
    +137            if isinstance(expression.this, exp.Order):
    +138                self.unsupported("SQLite GROUP_CONCAT doesn't support ORDER BY.")
    +139                if expression.this.this and not distinct:
    +140                    this = expression.this.this
    +141
    +142            separator = expression.args.get("separator")
    +143            return f"GROUP_CONCAT({distinct or ''}{self.format_args(this, separator)})"
    +144
    +145        def least_sql(self, expression: exp.Least) -> str:
    +146            if len(expression.expressions) > 1:
    +147                return rename_func("MIN")(self, expression)
    +148
    +149            return self.expressions(expression)
    +150
    +151        def transaction_sql(self, expression: exp.Transaction) -> str:
    +152            this = expression.this
    +153            this = f" {this}" if this else ""
    +154            return f"BEGIN{this} TRANSACTION"
     
    @@ -666,11 +690,11 @@ Default: True -
    88        def cast_sql(self, expression: exp.Cast) -> str:
    -89            if expression.to.this == exp.DataType.Type.DATE:
    -90                return self.func("DATE", expression.this)
    -91
    -92            return super().cast_sql(expression)
    +            
     96        def cast_sql(self, expression: exp.Cast) -> str:
    + 97            if expression.to.this == exp.DataType.Type.DATE:
    + 98                return self.func("DATE", expression.this)
    + 99
    +100            return super().cast_sql(expression)
     
    @@ -688,32 +712,32 @@ Default: True
    -
     94        def datediff_sql(self, expression: exp.DateDiff) -> str:
    - 95            unit = expression.args.get("unit")
    - 96            unit = unit.name.upper() if unit else "DAY"
    - 97
    - 98            sql = f"(JULIANDAY({self.sql(expression, 'this')}) - JULIANDAY({self.sql(expression, 'expression')}))"
    - 99
    -100            if unit == "MONTH":
    -101                sql = f"{sql} / 30.0"
    -102            elif unit == "YEAR":
    -103                sql = f"{sql} / 365.0"
    -104            elif unit == "HOUR":
    -105                sql = f"{sql} * 24.0"
    -106            elif unit == "MINUTE":
    -107                sql = f"{sql} * 1440.0"
    -108            elif unit == "SECOND":
    -109                sql = f"{sql} * 86400.0"
    -110            elif unit == "MILLISECOND":
    -111                sql = f"{sql} * 86400000.0"
    -112            elif unit == "MICROSECOND":
    -113                sql = f"{sql} * 86400000000.0"
    -114            elif unit == "NANOSECOND":
    -115                sql = f"{sql} * 8640000000000.0"
    -116            else:
    -117                self.unsupported("DATEDIFF unsupported for '{unit}'.")
    -118
    -119            return f"CAST({sql} AS INTEGER)"
    +            
    102        def datediff_sql(self, expression: exp.DateDiff) -> str:
    +103            unit = expression.args.get("unit")
    +104            unit = unit.name.upper() if unit else "DAY"
    +105
    +106            sql = f"(JULIANDAY({self.sql(expression, 'this')}) - JULIANDAY({self.sql(expression, 'expression')}))"
    +107
    +108            if unit == "MONTH":
    +109                sql = f"{sql} / 30.0"
    +110            elif unit == "YEAR":
    +111                sql = f"{sql} / 365.0"
    +112            elif unit == "HOUR":
    +113                sql = f"{sql} * 24.0"
    +114            elif unit == "MINUTE":
    +115                sql = f"{sql} * 1440.0"
    +116            elif unit == "SECOND":
    +117                sql = f"{sql} * 86400.0"
    +118            elif unit == "MILLISECOND":
    +119                sql = f"{sql} * 86400000.0"
    +120            elif unit == "MICROSECOND":
    +121                sql = f"{sql} * 86400000000.0"
    +122            elif unit == "NANOSECOND":
    +123                sql = f"{sql} * 8640000000000.0"
    +124            else:
    +125                self.unsupported("DATEDIFF unsupported for '{unit}'.")
    +126
    +127            return f"CAST({sql} AS INTEGER)"
     
    @@ -731,20 +755,20 @@ Default: True
    -
    122        def groupconcat_sql(self, expression):
    -123            this = expression.this
    -124            distinct = expression.find(exp.Distinct)
    -125            if distinct:
    -126                this = distinct.expressions[0]
    -127                distinct = "DISTINCT "
    -128
    -129            if isinstance(expression.this, exp.Order):
    -130                self.unsupported("SQLite GROUP_CONCAT doesn't support ORDER BY.")
    -131                if expression.this.this and not distinct:
    -132                    this = expression.this.this
    -133
    -134            separator = expression.args.get("separator")
    -135            return f"GROUP_CONCAT({distinct or ''}{self.format_args(this, separator)})"
    +            
    130        def groupconcat_sql(self, expression):
    +131            this = expression.this
    +132            distinct = expression.find(exp.Distinct)
    +133            if distinct:
    +134                this = distinct.expressions[0]
    +135                distinct = "DISTINCT "
    +136
    +137            if isinstance(expression.this, exp.Order):
    +138                self.unsupported("SQLite GROUP_CONCAT doesn't support ORDER BY.")
    +139                if expression.this.this and not distinct:
    +140                    this = expression.this.this
    +141
    +142            separator = expression.args.get("separator")
    +143            return f"GROUP_CONCAT({distinct or ''}{self.format_args(this, separator)})"
     
    @@ -762,11 +786,11 @@ Default: True
    -
    137        def least_sql(self, expression: exp.Least) -> str:
    -138            if len(expression.expressions) > 1:
    -139                return rename_func("MIN")(self, expression)
    -140
    -141            return self.expressions(expression)
    +            
    145        def least_sql(self, expression: exp.Least) -> str:
    +146            if len(expression.expressions) > 1:
    +147                return rename_func("MIN")(self, expression)
    +148
    +149            return self.expressions(expression)
     
    @@ -784,10 +808,10 @@ Default: True
    -
    143        def transaction_sql(self, expression: exp.Transaction) -> str:
    -144            this = expression.this
    -145            this = f" {this}" if this else ""
    -146            return f"BEGIN{this} TRANSACTION"
    +            
    151        def transaction_sql(self, expression: exp.Transaction) -> str:
    +152            this = expression.this
    +153            this = f" {this}" if this else ""
    +154            return f"BEGIN{this} TRANSACTION"
     
    @@ -831,6 +855,7 @@ Default: True
    tablealias_sql
    bitstring_sql
    hexstring_sql
    +
    bytestring_sql
    datatype_sql
    directory_sql
    delete_sql
    @@ -842,6 +867,7 @@ Default: True
    hint_sql
    index_sql
    identifier_sql
    +
    inputoutputformat_sql
    national_sql
    partition_sql
    properties_sql
    @@ -867,6 +893,7 @@ Default: True
    intersect_op
    introducer_sql
    pseudotype_sql
    +
    onconflict_sql
    returning_sql
    rowformatdelimitedproperty_sql
    table_sql
    diff --git a/docs/sqlglot/dialects/starrocks.html b/docs/sqlglot/dialects/starrocks.html index d310083..7ea6da5 100644 --- a/docs/sqlglot/dialects/starrocks.html +++ b/docs/sqlglot/dialects/starrocks.html @@ -3,7 +3,7 @@ - + sqlglot.dialects.starrocks API documentation @@ -74,42 +74,48 @@
     1from __future__ import annotations
      2
      3from sqlglot import exp
    - 4from sqlglot.dialects.dialect import arrow_json_extract_sql, rename_func
    - 5from sqlglot.dialects.mysql import MySQL
    - 6from sqlglot.helper import seq_get
    - 7
    - 8
    - 9class StarRocks(MySQL):
    -10    class Parser(MySQL.Parser):  # type: ignore
    -11        FUNCTIONS = {
    -12            **MySQL.Parser.FUNCTIONS,
    -13            "DATE_TRUNC": lambda args: exp.TimestampTrunc(
    -14                this=seq_get(args, 1), unit=seq_get(args, 0)
    -15            ),
    -16        }
    -17
    -18    class Generator(MySQL.Generator):  # type: ignore
    -19        TYPE_MAPPING = {
    -20            **MySQL.Generator.TYPE_MAPPING,  # type: ignore
    -21            exp.DataType.Type.TEXT: "STRING",
    -22            exp.DataType.Type.TIMESTAMP: "DATETIME",
    -23            exp.DataType.Type.TIMESTAMPTZ: "DATETIME",
    -24        }
    -25
    -26        TRANSFORMS = {
    -27            **MySQL.Generator.TRANSFORMS,  # type: ignore
    -28            exp.JSONExtractScalar: arrow_json_extract_sql,
    -29            exp.JSONExtract: arrow_json_extract_sql,
    -30            exp.DateDiff: rename_func("DATEDIFF"),
    -31            exp.StrToUnix: lambda self, e: f"UNIX_TIMESTAMP({self.sql(e, 'this')}, {self.format_time(e)})",
    -32            exp.TimestampTrunc: lambda self, e: self.func(
    -33                "DATE_TRUNC", exp.Literal.string(e.text("unit")), e.this
    -34            ),
    -35            exp.TimeStrToDate: rename_func("TO_DATE"),
    -36            exp.UnixToStr: lambda self, e: f"FROM_UNIXTIME({self.sql(e, 'this')}, {self.format_time(e)})",
    -37            exp.UnixToTime: rename_func("FROM_UNIXTIME"),
    -38        }
    -39        TRANSFORMS.pop(exp.DateTrunc)
    + 4from sqlglot.dialects.dialect import (
    + 5    approx_count_distinct_sql,
    + 6    arrow_json_extract_sql,
    + 7    rename_func,
    + 8)
    + 9from sqlglot.dialects.mysql import MySQL
    +10from sqlglot.helper import seq_get
    +11
    +12
    +13class StarRocks(MySQL):
    +14    class Parser(MySQL.Parser):  # type: ignore
    +15        FUNCTIONS = {
    +16            **MySQL.Parser.FUNCTIONS,
    +17            "APPROX_COUNT_DISTINCT": exp.ApproxDistinct.from_arg_list,
    +18            "DATE_TRUNC": lambda args: exp.TimestampTrunc(
    +19                this=seq_get(args, 1), unit=seq_get(args, 0)
    +20            ),
    +21        }
    +22
    +23    class Generator(MySQL.Generator):  # type: ignore
    +24        TYPE_MAPPING = {
    +25            **MySQL.Generator.TYPE_MAPPING,  # type: ignore
    +26            exp.DataType.Type.TEXT: "STRING",
    +27            exp.DataType.Type.TIMESTAMP: "DATETIME",
    +28            exp.DataType.Type.TIMESTAMPTZ: "DATETIME",
    +29        }
    +30
    +31        TRANSFORMS = {
    +32            **MySQL.Generator.TRANSFORMS,  # type: ignore
    +33            exp.ApproxDistinct: approx_count_distinct_sql,
    +34            exp.JSONExtractScalar: arrow_json_extract_sql,
    +35            exp.JSONExtract: arrow_json_extract_sql,
    +36            exp.DateDiff: rename_func("DATEDIFF"),
    +37            exp.StrToUnix: lambda self, e: f"UNIX_TIMESTAMP({self.sql(e, 'this')}, {self.format_time(e)})",
    +38            exp.TimestampTrunc: lambda self, e: self.func(
    +39                "DATE_TRUNC", exp.Literal.string(e.text("unit")), e.this
    +40            ),
    +41            exp.TimeStrToDate: rename_func("TO_DATE"),
    +42            exp.UnixToStr: lambda self, e: f"FROM_UNIXTIME({self.sql(e, 'this')}, {self.format_time(e)})",
    +43            exp.UnixToTime: rename_func("FROM_UNIXTIME"),
    +44        }
    +45        TRANSFORMS.pop(exp.DateTrunc)
     
    @@ -125,37 +131,39 @@
    -
    10class StarRocks(MySQL):
    -11    class Parser(MySQL.Parser):  # type: ignore
    -12        FUNCTIONS = {
    -13            **MySQL.Parser.FUNCTIONS,
    -14            "DATE_TRUNC": lambda args: exp.TimestampTrunc(
    -15                this=seq_get(args, 1), unit=seq_get(args, 0)
    -16            ),
    -17        }
    -18
    -19    class Generator(MySQL.Generator):  # type: ignore
    -20        TYPE_MAPPING = {
    -21            **MySQL.Generator.TYPE_MAPPING,  # type: ignore
    -22            exp.DataType.Type.TEXT: "STRING",
    -23            exp.DataType.Type.TIMESTAMP: "DATETIME",
    -24            exp.DataType.Type.TIMESTAMPTZ: "DATETIME",
    -25        }
    -26
    -27        TRANSFORMS = {
    -28            **MySQL.Generator.TRANSFORMS,  # type: ignore
    -29            exp.JSONExtractScalar: arrow_json_extract_sql,
    -30            exp.JSONExtract: arrow_json_extract_sql,
    -31            exp.DateDiff: rename_func("DATEDIFF"),
    -32            exp.StrToUnix: lambda self, e: f"UNIX_TIMESTAMP({self.sql(e, 'this')}, {self.format_time(e)})",
    -33            exp.TimestampTrunc: lambda self, e: self.func(
    -34                "DATE_TRUNC", exp.Literal.string(e.text("unit")), e.this
    -35            ),
    -36            exp.TimeStrToDate: rename_func("TO_DATE"),
    -37            exp.UnixToStr: lambda self, e: f"FROM_UNIXTIME({self.sql(e, 'this')}, {self.format_time(e)})",
    -38            exp.UnixToTime: rename_func("FROM_UNIXTIME"),
    -39        }
    -40        TRANSFORMS.pop(exp.DateTrunc)
    +            
    14class StarRocks(MySQL):
    +15    class Parser(MySQL.Parser):  # type: ignore
    +16        FUNCTIONS = {
    +17            **MySQL.Parser.FUNCTIONS,
    +18            "APPROX_COUNT_DISTINCT": exp.ApproxDistinct.from_arg_list,
    +19            "DATE_TRUNC": lambda args: exp.TimestampTrunc(
    +20                this=seq_get(args, 1), unit=seq_get(args, 0)
    +21            ),
    +22        }
    +23
    +24    class Generator(MySQL.Generator):  # type: ignore
    +25        TYPE_MAPPING = {
    +26            **MySQL.Generator.TYPE_MAPPING,  # type: ignore
    +27            exp.DataType.Type.TEXT: "STRING",
    +28            exp.DataType.Type.TIMESTAMP: "DATETIME",
    +29            exp.DataType.Type.TIMESTAMPTZ: "DATETIME",
    +30        }
    +31
    +32        TRANSFORMS = {
    +33            **MySQL.Generator.TRANSFORMS,  # type: ignore
    +34            exp.ApproxDistinct: approx_count_distinct_sql,
    +35            exp.JSONExtractScalar: arrow_json_extract_sql,
    +36            exp.JSONExtract: arrow_json_extract_sql,
    +37            exp.DateDiff: rename_func("DATEDIFF"),
    +38            exp.StrToUnix: lambda self, e: f"UNIX_TIMESTAMP({self.sql(e, 'this')}, {self.format_time(e)})",
    +39            exp.TimestampTrunc: lambda self, e: self.func(
    +40                "DATE_TRUNC", exp.Literal.string(e.text("unit")), e.this
    +41            ),
    +42            exp.TimeStrToDate: rename_func("TO_DATE"),
    +43            exp.UnixToStr: lambda self, e: f"FROM_UNIXTIME({self.sql(e, 'this')}, {self.format_time(e)})",
    +44            exp.UnixToTime: rename_func("FROM_UNIXTIME"),
    +45        }
    +46        TRANSFORMS.pop(exp.DateTrunc)
     
    @@ -194,13 +202,14 @@
    -
    11    class Parser(MySQL.Parser):  # type: ignore
    -12        FUNCTIONS = {
    -13            **MySQL.Parser.FUNCTIONS,
    -14            "DATE_TRUNC": lambda args: exp.TimestampTrunc(
    -15                this=seq_get(args, 1), unit=seq_get(args, 0)
    -16            ),
    -17        }
    +            
    15    class Parser(MySQL.Parser):  # type: ignore
    +16        FUNCTIONS = {
    +17            **MySQL.Parser.FUNCTIONS,
    +18            "APPROX_COUNT_DISTINCT": exp.ApproxDistinct.from_arg_list,
    +19            "DATE_TRUNC": lambda args: exp.TimestampTrunc(
    +20                this=seq_get(args, 1), unit=seq_get(args, 0)
    +21            ),
    +22        }
     
    @@ -257,28 +266,29 @@ Default: "nulls_are_small"
    -
    19    class Generator(MySQL.Generator):  # type: ignore
    -20        TYPE_MAPPING = {
    -21            **MySQL.Generator.TYPE_MAPPING,  # type: ignore
    -22            exp.DataType.Type.TEXT: "STRING",
    -23            exp.DataType.Type.TIMESTAMP: "DATETIME",
    -24            exp.DataType.Type.TIMESTAMPTZ: "DATETIME",
    -25        }
    -26
    -27        TRANSFORMS = {
    -28            **MySQL.Generator.TRANSFORMS,  # type: ignore
    -29            exp.JSONExtractScalar: arrow_json_extract_sql,
    -30            exp.JSONExtract: arrow_json_extract_sql,
    -31            exp.DateDiff: rename_func("DATEDIFF"),
    -32            exp.StrToUnix: lambda self, e: f"UNIX_TIMESTAMP({self.sql(e, 'this')}, {self.format_time(e)})",
    -33            exp.TimestampTrunc: lambda self, e: self.func(
    -34                "DATE_TRUNC", exp.Literal.string(e.text("unit")), e.this
    -35            ),
    -36            exp.TimeStrToDate: rename_func("TO_DATE"),
    -37            exp.UnixToStr: lambda self, e: f"FROM_UNIXTIME({self.sql(e, 'this')}, {self.format_time(e)})",
    -38            exp.UnixToTime: rename_func("FROM_UNIXTIME"),
    -39        }
    -40        TRANSFORMS.pop(exp.DateTrunc)
    +            
    24    class Generator(MySQL.Generator):  # type: ignore
    +25        TYPE_MAPPING = {
    +26            **MySQL.Generator.TYPE_MAPPING,  # type: ignore
    +27            exp.DataType.Type.TEXT: "STRING",
    +28            exp.DataType.Type.TIMESTAMP: "DATETIME",
    +29            exp.DataType.Type.TIMESTAMPTZ: "DATETIME",
    +30        }
    +31
    +32        TRANSFORMS = {
    +33            **MySQL.Generator.TRANSFORMS,  # type: ignore
    +34            exp.ApproxDistinct: approx_count_distinct_sql,
    +35            exp.JSONExtractScalar: arrow_json_extract_sql,
    +36            exp.JSONExtract: arrow_json_extract_sql,
    +37            exp.DateDiff: rename_func("DATEDIFF"),
    +38            exp.StrToUnix: lambda self, e: f"UNIX_TIMESTAMP({self.sql(e, 'this')}, {self.format_time(e)})",
    +39            exp.TimestampTrunc: lambda self, e: self.func(
    +40                "DATE_TRUNC", exp.Literal.string(e.text("unit")), e.this
    +41            ),
    +42            exp.TimeStrToDate: rename_func("TO_DATE"),
    +43            exp.UnixToStr: lambda self, e: f"FROM_UNIXTIME({self.sql(e, 'this')}, {self.format_time(e)})",
    +44            exp.UnixToTime: rename_func("FROM_UNIXTIME"),
    +45        }
    +46        TRANSFORMS.pop(exp.DateTrunc)
     
    @@ -363,6 +373,7 @@ Default: True
    tablealias_sql
    bitstring_sql
    hexstring_sql
    +
    bytestring_sql
    datatype_sql
    directory_sql
    delete_sql
    @@ -374,6 +385,7 @@ Default: True
    hint_sql
    index_sql
    identifier_sql
    +
    inputoutputformat_sql
    national_sql
    partition_sql
    properties_sql
    @@ -399,6 +411,7 @@ Default: True
    intersect_op
    introducer_sql
    pseudotype_sql
    +
    onconflict_sql
    returning_sql
    rowformatdelimitedproperty_sql
    table_sql
    diff --git a/docs/sqlglot/dialects/tableau.html b/docs/sqlglot/dialects/tableau.html index 56616ee..af176af 100644 --- a/docs/sqlglot/dialects/tableau.html +++ b/docs/sqlglot/dialects/tableau.html @@ -3,7 +3,7 @@ - + sqlglot.dialects.tableau API documentation @@ -94,18 +94,26 @@
    21 22class Tableau(Dialect): 23 class Generator(generator.Generator): -24 TRANSFORMS = { -25 **generator.Generator.TRANSFORMS, # type: ignore -26 exp.If: _if_sql, -27 exp.Coalesce: _coalesce_sql, -28 exp.Count: _count_sql, -29 } -30 -31 class Parser(parser.Parser): -32 FUNCTIONS = { -33 **parser.Parser.FUNCTIONS, # type: ignore -34 "COUNTD": lambda args: exp.Count(this=exp.Distinct(expressions=args)), -35 } +24 JOIN_HINTS = False +25 TABLE_HINTS = False +26 +27 TRANSFORMS = { +28 **generator.Generator.TRANSFORMS, # type: ignore +29 exp.If: _if_sql, +30 exp.Coalesce: _coalesce_sql, +31 exp.Count: _count_sql, +32 } +33 +34 PROPERTIES_LOCATION = { +35 **generator.Generator.PROPERTIES_LOCATION, # type: ignore +36 exp.VolatileProperty: exp.Properties.Location.UNSUPPORTED, +37 } +38 +39 class Parser(parser.Parser): +40 FUNCTIONS = { +41 **parser.Parser.FUNCTIONS, # type: ignore +42 "COUNTD": lambda args: exp.Count(this=exp.Distinct(expressions=args)), +43 }
    @@ -123,18 +131,26 @@
    23class Tableau(Dialect):
     24    class Generator(generator.Generator):
    -25        TRANSFORMS = {
    -26            **generator.Generator.TRANSFORMS,  # type: ignore
    -27            exp.If: _if_sql,
    -28            exp.Coalesce: _coalesce_sql,
    -29            exp.Count: _count_sql,
    -30        }
    -31
    -32    class Parser(parser.Parser):
    -33        FUNCTIONS = {
    -34            **parser.Parser.FUNCTIONS,  # type: ignore
    -35            "COUNTD": lambda args: exp.Count(this=exp.Distinct(expressions=args)),
    -36        }
    +25        JOIN_HINTS = False
    +26        TABLE_HINTS = False
    +27
    +28        TRANSFORMS = {
    +29            **generator.Generator.TRANSFORMS,  # type: ignore
    +30            exp.If: _if_sql,
    +31            exp.Coalesce: _coalesce_sql,
    +32            exp.Count: _count_sql,
    +33        }
    +34
    +35        PROPERTIES_LOCATION = {
    +36            **generator.Generator.PROPERTIES_LOCATION,  # type: ignore
    +37            exp.VolatileProperty: exp.Properties.Location.UNSUPPORTED,
    +38        }
    +39
    +40    class Parser(parser.Parser):
    +41        FUNCTIONS = {
    +42            **parser.Parser.FUNCTIONS,  # type: ignore
    +43            "COUNTD": lambda args: exp.Count(this=exp.Distinct(expressions=args)),
    +44        }
     
    @@ -170,12 +186,20 @@
    24    class Generator(generator.Generator):
    -25        TRANSFORMS = {
    -26            **generator.Generator.TRANSFORMS,  # type: ignore
    -27            exp.If: _if_sql,
    -28            exp.Coalesce: _coalesce_sql,
    -29            exp.Count: _count_sql,
    -30        }
    +25        JOIN_HINTS = False
    +26        TABLE_HINTS = False
    +27
    +28        TRANSFORMS = {
    +29            **generator.Generator.TRANSFORMS,  # type: ignore
    +30            exp.If: _if_sql,
    +31            exp.Coalesce: _coalesce_sql,
    +32            exp.Count: _count_sql,
    +33        }
    +34
    +35        PROPERTIES_LOCATION = {
    +36            **generator.Generator.PROPERTIES_LOCATION,  # type: ignore
    +37            exp.VolatileProperty: exp.Properties.Location.UNSUPPORTED,
    +38        }
     
    @@ -260,6 +284,7 @@ Default: True
    tablealias_sql
    bitstring_sql
    hexstring_sql
    +
    bytestring_sql
    datatype_sql
    directory_sql
    delete_sql
    @@ -271,6 +296,7 @@ Default: True
    hint_sql
    index_sql
    identifier_sql
    +
    inputoutputformat_sql
    national_sql
    partition_sql
    properties_sql
    @@ -296,6 +322,7 @@ Default: True
    intersect_op
    introducer_sql
    pseudotype_sql
    +
    onconflict_sql
    returning_sql
    rowformatdelimitedproperty_sql
    table_sql
    @@ -464,11 +491,11 @@ Default: True -
    32    class Parser(parser.Parser):
    -33        FUNCTIONS = {
    -34            **parser.Parser.FUNCTIONS,  # type: ignore
    -35            "COUNTD": lambda args: exp.Count(this=exp.Distinct(expressions=args)),
    -36        }
    +            
    40    class Parser(parser.Parser):
    +41        FUNCTIONS = {
    +42            **parser.Parser.FUNCTIONS,  # type: ignore
    +43            "COUNTD": lambda args: exp.Count(this=exp.Distinct(expressions=args)),
    +44        }
     
    diff --git a/docs/sqlglot/dialects/teradata.html b/docs/sqlglot/dialects/teradata.html index 2e299c0..0666ea1 100644 --- a/docs/sqlglot/dialects/teradata.html +++ b/docs/sqlglot/dialects/teradata.html @@ -3,7 +3,7 @@ - + sqlglot.dialects.teradata API documentation @@ -94,167 +94,186 @@
      1from __future__ import annotations
       2
    -  3from sqlglot import exp, generator, parser, tokens
    -  4from sqlglot.dialects.dialect import Dialect, max_or_greatest, min_or_least
    -  5from sqlglot.tokens import TokenType
    -  6
    -  7
    -  8class Teradata(Dialect):
    -  9    class Tokenizer(tokens.Tokenizer):
    - 10        # https://docs.teradata.com/r/Teradata-Database-SQL-Functions-Operators-Expressions-and-Predicates/March-2017/Comparison-Operators-and-Functions/Comparison-Operators/ANSI-Compliance
    - 11        KEYWORDS = {
    - 12            **tokens.Tokenizer.KEYWORDS,
    - 13            "BYTEINT": TokenType.SMALLINT,
    - 14            "SEL": TokenType.SELECT,
    - 15            "INS": TokenType.INSERT,
    - 16            "MOD": TokenType.MOD,
    - 17            "LT": TokenType.LT,
    - 18            "LE": TokenType.LTE,
    - 19            "GT": TokenType.GT,
    - 20            "GE": TokenType.GTE,
    - 21            "^=": TokenType.NEQ,
    - 22            "NE": TokenType.NEQ,
    - 23            "NOT=": TokenType.NEQ,
    - 24            "ST_GEOMETRY": TokenType.GEOMETRY,
    - 25        }
    - 26
    - 27        # teradata does not support % for modulus
    - 28        SINGLE_TOKENS = {**tokens.Tokenizer.SINGLE_TOKENS}
    - 29        SINGLE_TOKENS.pop("%")
    - 30
    - 31    class Parser(parser.Parser):
    - 32        CHARSET_TRANSLATORS = {
    - 33            "GRAPHIC_TO_KANJISJIS",
    - 34            "GRAPHIC_TO_LATIN",
    - 35            "GRAPHIC_TO_UNICODE",
    - 36            "GRAPHIC_TO_UNICODE_PadSpace",
    - 37            "KANJI1_KanjiEBCDIC_TO_UNICODE",
    - 38            "KANJI1_KanjiEUC_TO_UNICODE",
    - 39            "KANJI1_KANJISJIS_TO_UNICODE",
    - 40            "KANJI1_SBC_TO_UNICODE",
    - 41            "KANJISJIS_TO_GRAPHIC",
    - 42            "KANJISJIS_TO_LATIN",
    - 43            "KANJISJIS_TO_UNICODE",
    - 44            "LATIN_TO_GRAPHIC",
    - 45            "LATIN_TO_KANJISJIS",
    - 46            "LATIN_TO_UNICODE",
    - 47            "LOCALE_TO_UNICODE",
    - 48            "UNICODE_TO_GRAPHIC",
    - 49            "UNICODE_TO_GRAPHIC_PadGraphic",
    - 50            "UNICODE_TO_GRAPHIC_VarGraphic",
    - 51            "UNICODE_TO_KANJI1_KanjiEBCDIC",
    - 52            "UNICODE_TO_KANJI1_KanjiEUC",
    - 53            "UNICODE_TO_KANJI1_KANJISJIS",
    - 54            "UNICODE_TO_KANJI1_SBC",
    - 55            "UNICODE_TO_KANJISJIS",
    - 56            "UNICODE_TO_LATIN",
    - 57            "UNICODE_TO_LOCALE",
    - 58            "UNICODE_TO_UNICODE_FoldSpace",
    - 59            "UNICODE_TO_UNICODE_Fullwidth",
    - 60            "UNICODE_TO_UNICODE_Halfwidth",
    - 61            "UNICODE_TO_UNICODE_NFC",
    - 62            "UNICODE_TO_UNICODE_NFD",
    - 63            "UNICODE_TO_UNICODE_NFKC",
    - 64            "UNICODE_TO_UNICODE_NFKD",
    - 65        }
    - 66
    - 67        FUNC_TOKENS = {*parser.Parser.FUNC_TOKENS}
    - 68        FUNC_TOKENS.remove(TokenType.REPLACE)
    - 69
    - 70        STATEMENT_PARSERS = {
    - 71            **parser.Parser.STATEMENT_PARSERS,  # type: ignore
    - 72            TokenType.REPLACE: lambda self: self._parse_create(),
    - 73        }
    - 74
    - 75        FUNCTION_PARSERS = {
    - 76            **parser.Parser.FUNCTION_PARSERS,  # type: ignore
    - 77            "RANGE_N": lambda self: self._parse_rangen(),
    - 78            "TRANSLATE": lambda self: self._parse_translate(self.STRICT_CAST),
    - 79        }
    - 80
    - 81        def _parse_translate(self, strict: bool) -> exp.Expression:
    - 82            this = self._parse_conjunction()
    - 83
    - 84            if not self._match(TokenType.USING):
    - 85                self.raise_error("Expected USING in TRANSLATE")
    - 86
    - 87            if self._match_texts(self.CHARSET_TRANSLATORS):
    - 88                charset_split = self._prev.text.split("_TO_")
    - 89                to = self.expression(exp.CharacterSet, this=charset_split[1])
    - 90            else:
    - 91                self.raise_error("Expected a character set translator after USING in TRANSLATE")
    - 92
    - 93            return self.expression(exp.Cast if strict else exp.TryCast, this=this, to=to)
    - 94
    - 95        # FROM before SET in Teradata UPDATE syntax
    - 96        # https://docs.teradata.com/r/Enterprise_IntelliFlex_VMware/Teradata-VantageTM-SQL-Data-Manipulation-Language-17.20/Statement-Syntax/UPDATE/UPDATE-Syntax-Basic-Form-FROM-Clause
    - 97        def _parse_update(self) -> exp.Expression:
    - 98            return self.expression(
    - 99                exp.Update,
    -100                **{  # type: ignore
    -101                    "this": self._parse_table(alias_tokens=self.UPDATE_ALIAS_TOKENS),
    -102                    "from": self._parse_from(),
    -103                    "expressions": self._match(TokenType.SET)
    -104                    and self._parse_csv(self._parse_equality),
    -105                    "where": self._parse_where(),
    -106                },
    -107            )
    -108
    -109        def _parse_rangen(self):
    -110            this = self._parse_id_var()
    -111            self._match(TokenType.BETWEEN)
    -112
    -113            expressions = self._parse_csv(self._parse_conjunction)
    -114            each = self._match_text_seq("EACH") and self._parse_conjunction()
    +  3import typing as t
    +  4
    +  5from sqlglot import exp, generator, parser, tokens
    +  6from sqlglot.dialects.dialect import (
    +  7    Dialect,
    +  8    format_time_lambda,
    +  9    max_or_greatest,
    + 10    min_or_least,
    + 11)
    + 12from sqlglot.tokens import TokenType
    + 13
    + 14
    + 15class Teradata(Dialect):
    + 16    class Tokenizer(tokens.Tokenizer):
    + 17        # https://docs.teradata.com/r/Teradata-Database-SQL-Functions-Operators-Expressions-and-Predicates/March-2017/Comparison-Operators-and-Functions/Comparison-Operators/ANSI-Compliance
    + 18        KEYWORDS = {
    + 19            **tokens.Tokenizer.KEYWORDS,
    + 20            "BYTEINT": TokenType.SMALLINT,
    + 21            "SEL": TokenType.SELECT,
    + 22            "INS": TokenType.INSERT,
    + 23            "MOD": TokenType.MOD,
    + 24            "LT": TokenType.LT,
    + 25            "LE": TokenType.LTE,
    + 26            "GT": TokenType.GT,
    + 27            "GE": TokenType.GTE,
    + 28            "^=": TokenType.NEQ,
    + 29            "NE": TokenType.NEQ,
    + 30            "NOT=": TokenType.NEQ,
    + 31            "ST_GEOMETRY": TokenType.GEOMETRY,
    + 32        }
    + 33
    + 34        # teradata does not support % for modulus
    + 35        SINGLE_TOKENS = {**tokens.Tokenizer.SINGLE_TOKENS}
    + 36        SINGLE_TOKENS.pop("%")
    + 37
    + 38    class Parser(parser.Parser):
    + 39        CHARSET_TRANSLATORS = {
    + 40            "GRAPHIC_TO_KANJISJIS",
    + 41            "GRAPHIC_TO_LATIN",
    + 42            "GRAPHIC_TO_UNICODE",
    + 43            "GRAPHIC_TO_UNICODE_PadSpace",
    + 44            "KANJI1_KanjiEBCDIC_TO_UNICODE",
    + 45            "KANJI1_KanjiEUC_TO_UNICODE",
    + 46            "KANJI1_KANJISJIS_TO_UNICODE",
    + 47            "KANJI1_SBC_TO_UNICODE",
    + 48            "KANJISJIS_TO_GRAPHIC",
    + 49            "KANJISJIS_TO_LATIN",
    + 50            "KANJISJIS_TO_UNICODE",
    + 51            "LATIN_TO_GRAPHIC",
    + 52            "LATIN_TO_KANJISJIS",
    + 53            "LATIN_TO_UNICODE",
    + 54            "LOCALE_TO_UNICODE",
    + 55            "UNICODE_TO_GRAPHIC",
    + 56            "UNICODE_TO_GRAPHIC_PadGraphic",
    + 57            "UNICODE_TO_GRAPHIC_VarGraphic",
    + 58            "UNICODE_TO_KANJI1_KanjiEBCDIC",
    + 59            "UNICODE_TO_KANJI1_KanjiEUC",
    + 60            "UNICODE_TO_KANJI1_KANJISJIS",
    + 61            "UNICODE_TO_KANJI1_SBC",
    + 62            "UNICODE_TO_KANJISJIS",
    + 63            "UNICODE_TO_LATIN",
    + 64            "UNICODE_TO_LOCALE",
    + 65            "UNICODE_TO_UNICODE_FoldSpace",
    + 66            "UNICODE_TO_UNICODE_Fullwidth",
    + 67            "UNICODE_TO_UNICODE_Halfwidth",
    + 68            "UNICODE_TO_UNICODE_NFC",
    + 69            "UNICODE_TO_UNICODE_NFD",
    + 70            "UNICODE_TO_UNICODE_NFKC",
    + 71            "UNICODE_TO_UNICODE_NFKD",
    + 72        }
    + 73
    + 74        FUNC_TOKENS = {*parser.Parser.FUNC_TOKENS}
    + 75        FUNC_TOKENS.remove(TokenType.REPLACE)
    + 76
    + 77        STATEMENT_PARSERS = {
    + 78            **parser.Parser.STATEMENT_PARSERS,  # type: ignore
    + 79            TokenType.REPLACE: lambda self: self._parse_create(),
    + 80        }
    + 81
    + 82        FUNCTION_PARSERS = {
    + 83            **parser.Parser.FUNCTION_PARSERS,  # type: ignore
    + 84            "RANGE_N": lambda self: self._parse_rangen(),
    + 85            "TRANSLATE": lambda self: self._parse_translate(self.STRICT_CAST),
    + 86        }
    + 87
    + 88        def _parse_translate(self, strict: bool) -> exp.Expression:
    + 89            this = self._parse_conjunction()
    + 90
    + 91            if not self._match(TokenType.USING):
    + 92                self.raise_error("Expected USING in TRANSLATE")
    + 93
    + 94            if self._match_texts(self.CHARSET_TRANSLATORS):
    + 95                charset_split = self._prev.text.split("_TO_")
    + 96                to = self.expression(exp.CharacterSet, this=charset_split[1])
    + 97            else:
    + 98                self.raise_error("Expected a character set translator after USING in TRANSLATE")
    + 99
    +100            return self.expression(exp.Cast if strict else exp.TryCast, this=this, to=to)
    +101
    +102        # FROM before SET in Teradata UPDATE syntax
    +103        # https://docs.teradata.com/r/Enterprise_IntelliFlex_VMware/Teradata-VantageTM-SQL-Data-Manipulation-Language-17.20/Statement-Syntax/UPDATE/UPDATE-Syntax-Basic-Form-FROM-Clause
    +104        def _parse_update(self) -> exp.Expression:
    +105            return self.expression(
    +106                exp.Update,
    +107                **{  # type: ignore
    +108                    "this": self._parse_table(alias_tokens=self.UPDATE_ALIAS_TOKENS),
    +109                    "from": self._parse_from(),
    +110                    "expressions": self._match(TokenType.SET)
    +111                    and self._parse_csv(self._parse_equality),
    +112                    "where": self._parse_where(),
    +113                },
    +114            )
     115
    -116            return self.expression(exp.RangeN, this=this, expressions=expressions, each=each)
    -117
    -118    class Generator(generator.Generator):
    -119        TYPE_MAPPING = {
    -120            **generator.Generator.TYPE_MAPPING,  # type: ignore
    -121            exp.DataType.Type.GEOMETRY: "ST_GEOMETRY",
    -122        }
    -123
    -124        PROPERTIES_LOCATION = {
    -125            **generator.Generator.PROPERTIES_LOCATION,  # type: ignore
    -126            exp.PartitionedByProperty: exp.Properties.Location.POST_INDEX,
    -127        }
    -128
    -129        TRANSFORMS = {
    -130            **generator.Generator.TRANSFORMS,
    -131            exp.Max: max_or_greatest,
    -132            exp.Min: min_or_least,
    -133            exp.ToChar: lambda self, e: self.function_fallback_sql(e),
    -134        }
    -135
    -136        def partitionedbyproperty_sql(self, expression: exp.PartitionedByProperty) -> str:
    -137            return f"PARTITION BY {self.sql(expression, 'this')}"
    -138
    -139        # FROM before SET in Teradata UPDATE syntax
    -140        # https://docs.teradata.com/r/Enterprise_IntelliFlex_VMware/Teradata-VantageTM-SQL-Data-Manipulation-Language-17.20/Statement-Syntax/UPDATE/UPDATE-Syntax-Basic-Form-FROM-Clause
    -141        def update_sql(self, expression: exp.Update) -> str:
    -142            this = self.sql(expression, "this")
    -143            from_sql = self.sql(expression, "from")
    -144            set_sql = self.expressions(expression, flat=True)
    -145            where_sql = self.sql(expression, "where")
    -146            sql = f"UPDATE {this}{from_sql} SET {set_sql}{where_sql}"
    -147            return self.prepend_ctes(expression, sql)
    -148
    -149        def mod_sql(self, expression: exp.Mod) -> str:
    -150            return self.binary(expression, "MOD")
    -151
    -152        def datatype_sql(self, expression: exp.DataType) -> str:
    -153            type_sql = super().datatype_sql(expression)
    -154            prefix_sql = expression.args.get("prefix")
    -155            return f"SYSUDTLIB.{type_sql}" if prefix_sql else type_sql
    -156
    -157        def rangen_sql(self, expression: exp.RangeN) -> str:
    -158            this = self.sql(expression, "this")
    -159            expressions_sql = self.expressions(expression)
    -160            each_sql = self.sql(expression, "each")
    -161            each_sql = f" EACH {each_sql}" if each_sql else ""
    -162
    -163            return f"RANGE_N({this} BETWEEN {expressions_sql}{each_sql})"
    +116        def _parse_rangen(self):
    +117            this = self._parse_id_var()
    +118            self._match(TokenType.BETWEEN)
    +119
    +120            expressions = self._parse_csv(self._parse_conjunction)
    +121            each = self._match_text_seq("EACH") and self._parse_conjunction()
    +122
    +123            return self.expression(exp.RangeN, this=this, expressions=expressions, each=each)
    +124
    +125        def _parse_cast(self, strict: bool) -> exp.Expression:
    +126            cast = t.cast(exp.Cast, super()._parse_cast(strict))
    +127            if cast.to.this == exp.DataType.Type.DATE and self._match(TokenType.FORMAT):
    +128                return format_time_lambda(exp.TimeToStr, "teradata")(
    +129                    [cast.this, self._parse_string()]
    +130                )
    +131            return cast
    +132
    +133    class Generator(generator.Generator):
    +134        JOIN_HINTS = False
    +135        TABLE_HINTS = False
    +136
    +137        TYPE_MAPPING = {
    +138            **generator.Generator.TYPE_MAPPING,  # type: ignore
    +139            exp.DataType.Type.GEOMETRY: "ST_GEOMETRY",
    +140        }
    +141
    +142        PROPERTIES_LOCATION = {
    +143            **generator.Generator.PROPERTIES_LOCATION,  # type: ignore
    +144            exp.PartitionedByProperty: exp.Properties.Location.POST_INDEX,
    +145        }
    +146
    +147        TRANSFORMS = {
    +148            **generator.Generator.TRANSFORMS,
    +149            exp.Max: max_or_greatest,
    +150            exp.Min: min_or_least,
    +151            exp.TimeToStr: lambda self, e: f"CAST({self.sql(e, 'this')} AS DATE FORMAT {self.format_time(e)})",
    +152            exp.ToChar: lambda self, e: self.function_fallback_sql(e),
    +153        }
    +154
    +155        def partitionedbyproperty_sql(self, expression: exp.PartitionedByProperty) -> str:
    +156            return f"PARTITION BY {self.sql(expression, 'this')}"
    +157
    +158        # FROM before SET in Teradata UPDATE syntax
    +159        # https://docs.teradata.com/r/Enterprise_IntelliFlex_VMware/Teradata-VantageTM-SQL-Data-Manipulation-Language-17.20/Statement-Syntax/UPDATE/UPDATE-Syntax-Basic-Form-FROM-Clause
    +160        def update_sql(self, expression: exp.Update) -> str:
    +161            this = self.sql(expression, "this")
    +162            from_sql = self.sql(expression, "from")
    +163            set_sql = self.expressions(expression, flat=True)
    +164            where_sql = self.sql(expression, "where")
    +165            sql = f"UPDATE {this}{from_sql} SET {set_sql}{where_sql}"
    +166            return self.prepend_ctes(expression, sql)
    +167
    +168        def mod_sql(self, expression: exp.Mod) -> str:
    +169            return self.binary(expression, "MOD")
    +170
    +171        def datatype_sql(self, expression: exp.DataType) -> str:
    +172            type_sql = super().datatype_sql(expression)
    +173            prefix_sql = expression.args.get("prefix")
    +174            return f"SYSUDTLIB.{type_sql}" if prefix_sql else type_sql
    +175
    +176        def rangen_sql(self, expression: exp.RangeN) -> str:
    +177            this = self.sql(expression, "this")
    +178            expressions_sql = self.expressions(expression)
    +179            each_sql = self.sql(expression, "each")
    +180            each_sql = f" EACH {each_sql}" if each_sql else ""
    +181
    +182            return f"RANGE_N({this} BETWEEN {expressions_sql}{each_sql})"
     
    @@ -270,162 +289,174 @@
    -
      9class Teradata(Dialect):
    - 10    class Tokenizer(tokens.Tokenizer):
    - 11        # https://docs.teradata.com/r/Teradata-Database-SQL-Functions-Operators-Expressions-and-Predicates/March-2017/Comparison-Operators-and-Functions/Comparison-Operators/ANSI-Compliance
    - 12        KEYWORDS = {
    - 13            **tokens.Tokenizer.KEYWORDS,
    - 14            "BYTEINT": TokenType.SMALLINT,
    - 15            "SEL": TokenType.SELECT,
    - 16            "INS": TokenType.INSERT,
    - 17            "MOD": TokenType.MOD,
    - 18            "LT": TokenType.LT,
    - 19            "LE": TokenType.LTE,
    - 20            "GT": TokenType.GT,
    - 21            "GE": TokenType.GTE,
    - 22            "^=": TokenType.NEQ,
    - 23            "NE": TokenType.NEQ,
    - 24            "NOT=": TokenType.NEQ,
    - 25            "ST_GEOMETRY": TokenType.GEOMETRY,
    - 26        }
    - 27
    - 28        # teradata does not support % for modulus
    - 29        SINGLE_TOKENS = {**tokens.Tokenizer.SINGLE_TOKENS}
    - 30        SINGLE_TOKENS.pop("%")
    - 31
    - 32    class Parser(parser.Parser):
    - 33        CHARSET_TRANSLATORS = {
    - 34            "GRAPHIC_TO_KANJISJIS",
    - 35            "GRAPHIC_TO_LATIN",
    - 36            "GRAPHIC_TO_UNICODE",
    - 37            "GRAPHIC_TO_UNICODE_PadSpace",
    - 38            "KANJI1_KanjiEBCDIC_TO_UNICODE",
    - 39            "KANJI1_KanjiEUC_TO_UNICODE",
    - 40            "KANJI1_KANJISJIS_TO_UNICODE",
    - 41            "KANJI1_SBC_TO_UNICODE",
    - 42            "KANJISJIS_TO_GRAPHIC",
    - 43            "KANJISJIS_TO_LATIN",
    - 44            "KANJISJIS_TO_UNICODE",
    - 45            "LATIN_TO_GRAPHIC",
    - 46            "LATIN_TO_KANJISJIS",
    - 47            "LATIN_TO_UNICODE",
    - 48            "LOCALE_TO_UNICODE",
    - 49            "UNICODE_TO_GRAPHIC",
    - 50            "UNICODE_TO_GRAPHIC_PadGraphic",
    - 51            "UNICODE_TO_GRAPHIC_VarGraphic",
    - 52            "UNICODE_TO_KANJI1_KanjiEBCDIC",
    - 53            "UNICODE_TO_KANJI1_KanjiEUC",
    - 54            "UNICODE_TO_KANJI1_KANJISJIS",
    - 55            "UNICODE_TO_KANJI1_SBC",
    - 56            "UNICODE_TO_KANJISJIS",
    - 57            "UNICODE_TO_LATIN",
    - 58            "UNICODE_TO_LOCALE",
    - 59            "UNICODE_TO_UNICODE_FoldSpace",
    - 60            "UNICODE_TO_UNICODE_Fullwidth",
    - 61            "UNICODE_TO_UNICODE_Halfwidth",
    - 62            "UNICODE_TO_UNICODE_NFC",
    - 63            "UNICODE_TO_UNICODE_NFD",
    - 64            "UNICODE_TO_UNICODE_NFKC",
    - 65            "UNICODE_TO_UNICODE_NFKD",
    - 66        }
    - 67
    - 68        FUNC_TOKENS = {*parser.Parser.FUNC_TOKENS}
    - 69        FUNC_TOKENS.remove(TokenType.REPLACE)
    - 70
    - 71        STATEMENT_PARSERS = {
    - 72            **parser.Parser.STATEMENT_PARSERS,  # type: ignore
    - 73            TokenType.REPLACE: lambda self: self._parse_create(),
    - 74        }
    - 75
    - 76        FUNCTION_PARSERS = {
    - 77            **parser.Parser.FUNCTION_PARSERS,  # type: ignore
    - 78            "RANGE_N": lambda self: self._parse_rangen(),
    - 79            "TRANSLATE": lambda self: self._parse_translate(self.STRICT_CAST),
    - 80        }
    - 81
    - 82        def _parse_translate(self, strict: bool) -> exp.Expression:
    - 83            this = self._parse_conjunction()
    - 84
    - 85            if not self._match(TokenType.USING):
    - 86                self.raise_error("Expected USING in TRANSLATE")
    - 87
    - 88            if self._match_texts(self.CHARSET_TRANSLATORS):
    - 89                charset_split = self._prev.text.split("_TO_")
    - 90                to = self.expression(exp.CharacterSet, this=charset_split[1])
    - 91            else:
    - 92                self.raise_error("Expected a character set translator after USING in TRANSLATE")
    - 93
    - 94            return self.expression(exp.Cast if strict else exp.TryCast, this=this, to=to)
    - 95
    - 96        # FROM before SET in Teradata UPDATE syntax
    - 97        # https://docs.teradata.com/r/Enterprise_IntelliFlex_VMware/Teradata-VantageTM-SQL-Data-Manipulation-Language-17.20/Statement-Syntax/UPDATE/UPDATE-Syntax-Basic-Form-FROM-Clause
    - 98        def _parse_update(self) -> exp.Expression:
    - 99            return self.expression(
    -100                exp.Update,
    -101                **{  # type: ignore
    -102                    "this": self._parse_table(alias_tokens=self.UPDATE_ALIAS_TOKENS),
    -103                    "from": self._parse_from(),
    -104                    "expressions": self._match(TokenType.SET)
    -105                    and self._parse_csv(self._parse_equality),
    -106                    "where": self._parse_where(),
    -107                },
    -108            )
    -109
    -110        def _parse_rangen(self):
    -111            this = self._parse_id_var()
    -112            self._match(TokenType.BETWEEN)
    -113
    -114            expressions = self._parse_csv(self._parse_conjunction)
    -115            each = self._match_text_seq("EACH") and self._parse_conjunction()
    +            
     16class Teradata(Dialect):
    + 17    class Tokenizer(tokens.Tokenizer):
    + 18        # https://docs.teradata.com/r/Teradata-Database-SQL-Functions-Operators-Expressions-and-Predicates/March-2017/Comparison-Operators-and-Functions/Comparison-Operators/ANSI-Compliance
    + 19        KEYWORDS = {
    + 20            **tokens.Tokenizer.KEYWORDS,
    + 21            "BYTEINT": TokenType.SMALLINT,
    + 22            "SEL": TokenType.SELECT,
    + 23            "INS": TokenType.INSERT,
    + 24            "MOD": TokenType.MOD,
    + 25            "LT": TokenType.LT,
    + 26            "LE": TokenType.LTE,
    + 27            "GT": TokenType.GT,
    + 28            "GE": TokenType.GTE,
    + 29            "^=": TokenType.NEQ,
    + 30            "NE": TokenType.NEQ,
    + 31            "NOT=": TokenType.NEQ,
    + 32            "ST_GEOMETRY": TokenType.GEOMETRY,
    + 33        }
    + 34
    + 35        # teradata does not support % for modulus
    + 36        SINGLE_TOKENS = {**tokens.Tokenizer.SINGLE_TOKENS}
    + 37        SINGLE_TOKENS.pop("%")
    + 38
    + 39    class Parser(parser.Parser):
    + 40        CHARSET_TRANSLATORS = {
    + 41            "GRAPHIC_TO_KANJISJIS",
    + 42            "GRAPHIC_TO_LATIN",
    + 43            "GRAPHIC_TO_UNICODE",
    + 44            "GRAPHIC_TO_UNICODE_PadSpace",
    + 45            "KANJI1_KanjiEBCDIC_TO_UNICODE",
    + 46            "KANJI1_KanjiEUC_TO_UNICODE",
    + 47            "KANJI1_KANJISJIS_TO_UNICODE",
    + 48            "KANJI1_SBC_TO_UNICODE",
    + 49            "KANJISJIS_TO_GRAPHIC",
    + 50            "KANJISJIS_TO_LATIN",
    + 51            "KANJISJIS_TO_UNICODE",
    + 52            "LATIN_TO_GRAPHIC",
    + 53            "LATIN_TO_KANJISJIS",
    + 54            "LATIN_TO_UNICODE",
    + 55            "LOCALE_TO_UNICODE",
    + 56            "UNICODE_TO_GRAPHIC",
    + 57            "UNICODE_TO_GRAPHIC_PadGraphic",
    + 58            "UNICODE_TO_GRAPHIC_VarGraphic",
    + 59            "UNICODE_TO_KANJI1_KanjiEBCDIC",
    + 60            "UNICODE_TO_KANJI1_KanjiEUC",
    + 61            "UNICODE_TO_KANJI1_KANJISJIS",
    + 62            "UNICODE_TO_KANJI1_SBC",
    + 63            "UNICODE_TO_KANJISJIS",
    + 64            "UNICODE_TO_LATIN",
    + 65            "UNICODE_TO_LOCALE",
    + 66            "UNICODE_TO_UNICODE_FoldSpace",
    + 67            "UNICODE_TO_UNICODE_Fullwidth",
    + 68            "UNICODE_TO_UNICODE_Halfwidth",
    + 69            "UNICODE_TO_UNICODE_NFC",
    + 70            "UNICODE_TO_UNICODE_NFD",
    + 71            "UNICODE_TO_UNICODE_NFKC",
    + 72            "UNICODE_TO_UNICODE_NFKD",
    + 73        }
    + 74
    + 75        FUNC_TOKENS = {*parser.Parser.FUNC_TOKENS}
    + 76        FUNC_TOKENS.remove(TokenType.REPLACE)
    + 77
    + 78        STATEMENT_PARSERS = {
    + 79            **parser.Parser.STATEMENT_PARSERS,  # type: ignore
    + 80            TokenType.REPLACE: lambda self: self._parse_create(),
    + 81        }
    + 82
    + 83        FUNCTION_PARSERS = {
    + 84            **parser.Parser.FUNCTION_PARSERS,  # type: ignore
    + 85            "RANGE_N": lambda self: self._parse_rangen(),
    + 86            "TRANSLATE": lambda self: self._parse_translate(self.STRICT_CAST),
    + 87        }
    + 88
    + 89        def _parse_translate(self, strict: bool) -> exp.Expression:
    + 90            this = self._parse_conjunction()
    + 91
    + 92            if not self._match(TokenType.USING):
    + 93                self.raise_error("Expected USING in TRANSLATE")
    + 94
    + 95            if self._match_texts(self.CHARSET_TRANSLATORS):
    + 96                charset_split = self._prev.text.split("_TO_")
    + 97                to = self.expression(exp.CharacterSet, this=charset_split[1])
    + 98            else:
    + 99                self.raise_error("Expected a character set translator after USING in TRANSLATE")
    +100
    +101            return self.expression(exp.Cast if strict else exp.TryCast, this=this, to=to)
    +102
    +103        # FROM before SET in Teradata UPDATE syntax
    +104        # https://docs.teradata.com/r/Enterprise_IntelliFlex_VMware/Teradata-VantageTM-SQL-Data-Manipulation-Language-17.20/Statement-Syntax/UPDATE/UPDATE-Syntax-Basic-Form-FROM-Clause
    +105        def _parse_update(self) -> exp.Expression:
    +106            return self.expression(
    +107                exp.Update,
    +108                **{  # type: ignore
    +109                    "this": self._parse_table(alias_tokens=self.UPDATE_ALIAS_TOKENS),
    +110                    "from": self._parse_from(),
    +111                    "expressions": self._match(TokenType.SET)
    +112                    and self._parse_csv(self._parse_equality),
    +113                    "where": self._parse_where(),
    +114                },
    +115            )
     116
    -117            return self.expression(exp.RangeN, this=this, expressions=expressions, each=each)
    -118
    -119    class Generator(generator.Generator):
    -120        TYPE_MAPPING = {
    -121            **generator.Generator.TYPE_MAPPING,  # type: ignore
    -122            exp.DataType.Type.GEOMETRY: "ST_GEOMETRY",
    -123        }
    -124
    -125        PROPERTIES_LOCATION = {
    -126            **generator.Generator.PROPERTIES_LOCATION,  # type: ignore
    -127            exp.PartitionedByProperty: exp.Properties.Location.POST_INDEX,
    -128        }
    -129
    -130        TRANSFORMS = {
    -131            **generator.Generator.TRANSFORMS,
    -132            exp.Max: max_or_greatest,
    -133            exp.Min: min_or_least,
    -134            exp.ToChar: lambda self, e: self.function_fallback_sql(e),
    -135        }
    -136
    -137        def partitionedbyproperty_sql(self, expression: exp.PartitionedByProperty) -> str:
    -138            return f"PARTITION BY {self.sql(expression, 'this')}"
    -139
    -140        # FROM before SET in Teradata UPDATE syntax
    -141        # https://docs.teradata.com/r/Enterprise_IntelliFlex_VMware/Teradata-VantageTM-SQL-Data-Manipulation-Language-17.20/Statement-Syntax/UPDATE/UPDATE-Syntax-Basic-Form-FROM-Clause
    -142        def update_sql(self, expression: exp.Update) -> str:
    -143            this = self.sql(expression, "this")
    -144            from_sql = self.sql(expression, "from")
    -145            set_sql = self.expressions(expression, flat=True)
    -146            where_sql = self.sql(expression, "where")
    -147            sql = f"UPDATE {this}{from_sql} SET {set_sql}{where_sql}"
    -148            return self.prepend_ctes(expression, sql)
    -149
    -150        def mod_sql(self, expression: exp.Mod) -> str:
    -151            return self.binary(expression, "MOD")
    -152
    -153        def datatype_sql(self, expression: exp.DataType) -> str:
    -154            type_sql = super().datatype_sql(expression)
    -155            prefix_sql = expression.args.get("prefix")
    -156            return f"SYSUDTLIB.{type_sql}" if prefix_sql else type_sql
    -157
    -158        def rangen_sql(self, expression: exp.RangeN) -> str:
    -159            this = self.sql(expression, "this")
    -160            expressions_sql = self.expressions(expression)
    -161            each_sql = self.sql(expression, "each")
    -162            each_sql = f" EACH {each_sql}" if each_sql else ""
    -163
    -164            return f"RANGE_N({this} BETWEEN {expressions_sql}{each_sql})"
    +117        def _parse_rangen(self):
    +118            this = self._parse_id_var()
    +119            self._match(TokenType.BETWEEN)
    +120
    +121            expressions = self._parse_csv(self._parse_conjunction)
    +122            each = self._match_text_seq("EACH") and self._parse_conjunction()
    +123
    +124            return self.expression(exp.RangeN, this=this, expressions=expressions, each=each)
    +125
    +126        def _parse_cast(self, strict: bool) -> exp.Expression:
    +127            cast = t.cast(exp.Cast, super()._parse_cast(strict))
    +128            if cast.to.this == exp.DataType.Type.DATE and self._match(TokenType.FORMAT):
    +129                return format_time_lambda(exp.TimeToStr, "teradata")(
    +130                    [cast.this, self._parse_string()]
    +131                )
    +132            return cast
    +133
    +134    class Generator(generator.Generator):
    +135        JOIN_HINTS = False
    +136        TABLE_HINTS = False
    +137
    +138        TYPE_MAPPING = {
    +139            **generator.Generator.TYPE_MAPPING,  # type: ignore
    +140            exp.DataType.Type.GEOMETRY: "ST_GEOMETRY",
    +141        }
    +142
    +143        PROPERTIES_LOCATION = {
    +144            **generator.Generator.PROPERTIES_LOCATION,  # type: ignore
    +145            exp.PartitionedByProperty: exp.Properties.Location.POST_INDEX,
    +146        }
    +147
    +148        TRANSFORMS = {
    +149            **generator.Generator.TRANSFORMS,
    +150            exp.Max: max_or_greatest,
    +151            exp.Min: min_or_least,
    +152            exp.TimeToStr: lambda self, e: f"CAST({self.sql(e, 'this')} AS DATE FORMAT {self.format_time(e)})",
    +153            exp.ToChar: lambda self, e: self.function_fallback_sql(e),
    +154        }
    +155
    +156        def partitionedbyproperty_sql(self, expression: exp.PartitionedByProperty) -> str:
    +157            return f"PARTITION BY {self.sql(expression, 'this')}"
    +158
    +159        # FROM before SET in Teradata UPDATE syntax
    +160        # https://docs.teradata.com/r/Enterprise_IntelliFlex_VMware/Teradata-VantageTM-SQL-Data-Manipulation-Language-17.20/Statement-Syntax/UPDATE/UPDATE-Syntax-Basic-Form-FROM-Clause
    +161        def update_sql(self, expression: exp.Update) -> str:
    +162            this = self.sql(expression, "this")
    +163            from_sql = self.sql(expression, "from")
    +164            set_sql = self.expressions(expression, flat=True)
    +165            where_sql = self.sql(expression, "where")
    +166            sql = f"UPDATE {this}{from_sql} SET {set_sql}{where_sql}"
    +167            return self.prepend_ctes(expression, sql)
    +168
    +169        def mod_sql(self, expression: exp.Mod) -> str:
    +170            return self.binary(expression, "MOD")
    +171
    +172        def datatype_sql(self, expression: exp.DataType) -> str:
    +173            type_sql = super().datatype_sql(expression)
    +174            prefix_sql = expression.args.get("prefix")
    +175            return f"SYSUDTLIB.{type_sql}" if prefix_sql else type_sql
    +176
    +177        def rangen_sql(self, expression: exp.RangeN) -> str:
    +178            this = self.sql(expression, "this")
    +179            expressions_sql = self.expressions(expression)
    +180            each_sql = self.sql(expression, "each")
    +181            each_sql = f" EACH {each_sql}" if each_sql else ""
    +182
    +183            return f"RANGE_N({this} BETWEEN {expressions_sql}{each_sql})"
     
    @@ -460,27 +491,27 @@
    -
    10    class Tokenizer(tokens.Tokenizer):
    -11        # https://docs.teradata.com/r/Teradata-Database-SQL-Functions-Operators-Expressions-and-Predicates/March-2017/Comparison-Operators-and-Functions/Comparison-Operators/ANSI-Compliance
    -12        KEYWORDS = {
    -13            **tokens.Tokenizer.KEYWORDS,
    -14            "BYTEINT": TokenType.SMALLINT,
    -15            "SEL": TokenType.SELECT,
    -16            "INS": TokenType.INSERT,
    -17            "MOD": TokenType.MOD,
    -18            "LT": TokenType.LT,
    -19            "LE": TokenType.LTE,
    -20            "GT": TokenType.GT,
    -21            "GE": TokenType.GTE,
    -22            "^=": TokenType.NEQ,
    -23            "NE": TokenType.NEQ,
    -24            "NOT=": TokenType.NEQ,
    -25            "ST_GEOMETRY": TokenType.GEOMETRY,
    -26        }
    -27
    -28        # teradata does not support % for modulus
    -29        SINGLE_TOKENS = {**tokens.Tokenizer.SINGLE_TOKENS}
    -30        SINGLE_TOKENS.pop("%")
    +            
    17    class Tokenizer(tokens.Tokenizer):
    +18        # https://docs.teradata.com/r/Teradata-Database-SQL-Functions-Operators-Expressions-and-Predicates/March-2017/Comparison-Operators-and-Functions/Comparison-Operators/ANSI-Compliance
    +19        KEYWORDS = {
    +20            **tokens.Tokenizer.KEYWORDS,
    +21            "BYTEINT": TokenType.SMALLINT,
    +22            "SEL": TokenType.SELECT,
    +23            "INS": TokenType.INSERT,
    +24            "MOD": TokenType.MOD,
    +25            "LT": TokenType.LT,
    +26            "LE": TokenType.LTE,
    +27            "GT": TokenType.GT,
    +28            "GE": TokenType.GTE,
    +29            "^=": TokenType.NEQ,
    +30            "NE": TokenType.NEQ,
    +31            "NOT=": TokenType.NEQ,
    +32            "ST_GEOMETRY": TokenType.GEOMETRY,
    +33        }
    +34
    +35        # teradata does not support % for modulus
    +36        SINGLE_TOKENS = {**tokens.Tokenizer.SINGLE_TOKENS}
    +37        SINGLE_TOKENS.pop("%")
     
    @@ -508,92 +539,100 @@
    -
     32    class Parser(parser.Parser):
    - 33        CHARSET_TRANSLATORS = {
    - 34            "GRAPHIC_TO_KANJISJIS",
    - 35            "GRAPHIC_TO_LATIN",
    - 36            "GRAPHIC_TO_UNICODE",
    - 37            "GRAPHIC_TO_UNICODE_PadSpace",
    - 38            "KANJI1_KanjiEBCDIC_TO_UNICODE",
    - 39            "KANJI1_KanjiEUC_TO_UNICODE",
    - 40            "KANJI1_KANJISJIS_TO_UNICODE",
    - 41            "KANJI1_SBC_TO_UNICODE",
    - 42            "KANJISJIS_TO_GRAPHIC",
    - 43            "KANJISJIS_TO_LATIN",
    - 44            "KANJISJIS_TO_UNICODE",
    - 45            "LATIN_TO_GRAPHIC",
    - 46            "LATIN_TO_KANJISJIS",
    - 47            "LATIN_TO_UNICODE",
    - 48            "LOCALE_TO_UNICODE",
    - 49            "UNICODE_TO_GRAPHIC",
    - 50            "UNICODE_TO_GRAPHIC_PadGraphic",
    - 51            "UNICODE_TO_GRAPHIC_VarGraphic",
    - 52            "UNICODE_TO_KANJI1_KanjiEBCDIC",
    - 53            "UNICODE_TO_KANJI1_KanjiEUC",
    - 54            "UNICODE_TO_KANJI1_KANJISJIS",
    - 55            "UNICODE_TO_KANJI1_SBC",
    - 56            "UNICODE_TO_KANJISJIS",
    - 57            "UNICODE_TO_LATIN",
    - 58            "UNICODE_TO_LOCALE",
    - 59            "UNICODE_TO_UNICODE_FoldSpace",
    - 60            "UNICODE_TO_UNICODE_Fullwidth",
    - 61            "UNICODE_TO_UNICODE_Halfwidth",
    - 62            "UNICODE_TO_UNICODE_NFC",
    - 63            "UNICODE_TO_UNICODE_NFD",
    - 64            "UNICODE_TO_UNICODE_NFKC",
    - 65            "UNICODE_TO_UNICODE_NFKD",
    - 66        }
    - 67
    - 68        FUNC_TOKENS = {*parser.Parser.FUNC_TOKENS}
    - 69        FUNC_TOKENS.remove(TokenType.REPLACE)
    - 70
    - 71        STATEMENT_PARSERS = {
    - 72            **parser.Parser.STATEMENT_PARSERS,  # type: ignore
    - 73            TokenType.REPLACE: lambda self: self._parse_create(),
    - 74        }
    - 75
    - 76        FUNCTION_PARSERS = {
    - 77            **parser.Parser.FUNCTION_PARSERS,  # type: ignore
    - 78            "RANGE_N": lambda self: self._parse_rangen(),
    - 79            "TRANSLATE": lambda self: self._parse_translate(self.STRICT_CAST),
    - 80        }
    - 81
    - 82        def _parse_translate(self, strict: bool) -> exp.Expression:
    - 83            this = self._parse_conjunction()
    - 84
    - 85            if not self._match(TokenType.USING):
    - 86                self.raise_error("Expected USING in TRANSLATE")
    - 87
    - 88            if self._match_texts(self.CHARSET_TRANSLATORS):
    - 89                charset_split = self._prev.text.split("_TO_")
    - 90                to = self.expression(exp.CharacterSet, this=charset_split[1])
    - 91            else:
    - 92                self.raise_error("Expected a character set translator after USING in TRANSLATE")
    - 93
    - 94            return self.expression(exp.Cast if strict else exp.TryCast, this=this, to=to)
    - 95
    - 96        # FROM before SET in Teradata UPDATE syntax
    - 97        # https://docs.teradata.com/r/Enterprise_IntelliFlex_VMware/Teradata-VantageTM-SQL-Data-Manipulation-Language-17.20/Statement-Syntax/UPDATE/UPDATE-Syntax-Basic-Form-FROM-Clause
    - 98        def _parse_update(self) -> exp.Expression:
    - 99            return self.expression(
    -100                exp.Update,
    -101                **{  # type: ignore
    -102                    "this": self._parse_table(alias_tokens=self.UPDATE_ALIAS_TOKENS),
    -103                    "from": self._parse_from(),
    -104                    "expressions": self._match(TokenType.SET)
    -105                    and self._parse_csv(self._parse_equality),
    -106                    "where": self._parse_where(),
    -107                },
    -108            )
    -109
    -110        def _parse_rangen(self):
    -111            this = self._parse_id_var()
    -112            self._match(TokenType.BETWEEN)
    -113
    -114            expressions = self._parse_csv(self._parse_conjunction)
    -115            each = self._match_text_seq("EACH") and self._parse_conjunction()
    +            
     39    class Parser(parser.Parser):
    + 40        CHARSET_TRANSLATORS = {
    + 41            "GRAPHIC_TO_KANJISJIS",
    + 42            "GRAPHIC_TO_LATIN",
    + 43            "GRAPHIC_TO_UNICODE",
    + 44            "GRAPHIC_TO_UNICODE_PadSpace",
    + 45            "KANJI1_KanjiEBCDIC_TO_UNICODE",
    + 46            "KANJI1_KanjiEUC_TO_UNICODE",
    + 47            "KANJI1_KANJISJIS_TO_UNICODE",
    + 48            "KANJI1_SBC_TO_UNICODE",
    + 49            "KANJISJIS_TO_GRAPHIC",
    + 50            "KANJISJIS_TO_LATIN",
    + 51            "KANJISJIS_TO_UNICODE",
    + 52            "LATIN_TO_GRAPHIC",
    + 53            "LATIN_TO_KANJISJIS",
    + 54            "LATIN_TO_UNICODE",
    + 55            "LOCALE_TO_UNICODE",
    + 56            "UNICODE_TO_GRAPHIC",
    + 57            "UNICODE_TO_GRAPHIC_PadGraphic",
    + 58            "UNICODE_TO_GRAPHIC_VarGraphic",
    + 59            "UNICODE_TO_KANJI1_KanjiEBCDIC",
    + 60            "UNICODE_TO_KANJI1_KanjiEUC",
    + 61            "UNICODE_TO_KANJI1_KANJISJIS",
    + 62            "UNICODE_TO_KANJI1_SBC",
    + 63            "UNICODE_TO_KANJISJIS",
    + 64            "UNICODE_TO_LATIN",
    + 65            "UNICODE_TO_LOCALE",
    + 66            "UNICODE_TO_UNICODE_FoldSpace",
    + 67            "UNICODE_TO_UNICODE_Fullwidth",
    + 68            "UNICODE_TO_UNICODE_Halfwidth",
    + 69            "UNICODE_TO_UNICODE_NFC",
    + 70            "UNICODE_TO_UNICODE_NFD",
    + 71            "UNICODE_TO_UNICODE_NFKC",
    + 72            "UNICODE_TO_UNICODE_NFKD",
    + 73        }
    + 74
    + 75        FUNC_TOKENS = {*parser.Parser.FUNC_TOKENS}
    + 76        FUNC_TOKENS.remove(TokenType.REPLACE)
    + 77
    + 78        STATEMENT_PARSERS = {
    + 79            **parser.Parser.STATEMENT_PARSERS,  # type: ignore
    + 80            TokenType.REPLACE: lambda self: self._parse_create(),
    + 81        }
    + 82
    + 83        FUNCTION_PARSERS = {
    + 84            **parser.Parser.FUNCTION_PARSERS,  # type: ignore
    + 85            "RANGE_N": lambda self: self._parse_rangen(),
    + 86            "TRANSLATE": lambda self: self._parse_translate(self.STRICT_CAST),
    + 87        }
    + 88
    + 89        def _parse_translate(self, strict: bool) -> exp.Expression:
    + 90            this = self._parse_conjunction()
    + 91
    + 92            if not self._match(TokenType.USING):
    + 93                self.raise_error("Expected USING in TRANSLATE")
    + 94
    + 95            if self._match_texts(self.CHARSET_TRANSLATORS):
    + 96                charset_split = self._prev.text.split("_TO_")
    + 97                to = self.expression(exp.CharacterSet, this=charset_split[1])
    + 98            else:
    + 99                self.raise_error("Expected a character set translator after USING in TRANSLATE")
    +100
    +101            return self.expression(exp.Cast if strict else exp.TryCast, this=this, to=to)
    +102
    +103        # FROM before SET in Teradata UPDATE syntax
    +104        # https://docs.teradata.com/r/Enterprise_IntelliFlex_VMware/Teradata-VantageTM-SQL-Data-Manipulation-Language-17.20/Statement-Syntax/UPDATE/UPDATE-Syntax-Basic-Form-FROM-Clause
    +105        def _parse_update(self) -> exp.Expression:
    +106            return self.expression(
    +107                exp.Update,
    +108                **{  # type: ignore
    +109                    "this": self._parse_table(alias_tokens=self.UPDATE_ALIAS_TOKENS),
    +110                    "from": self._parse_from(),
    +111                    "expressions": self._match(TokenType.SET)
    +112                    and self._parse_csv(self._parse_equality),
    +113                    "where": self._parse_where(),
    +114                },
    +115            )
     116
    -117            return self.expression(exp.RangeN, this=this, expressions=expressions, each=each)
    +117        def _parse_rangen(self):
    +118            this = self._parse_id_var()
    +119            self._match(TokenType.BETWEEN)
    +120
    +121            expressions = self._parse_csv(self._parse_conjunction)
    +122            each = self._match_text_seq("EACH") and self._parse_conjunction()
    +123
    +124            return self.expression(exp.RangeN, this=this, expressions=expressions, each=each)
    +125
    +126        def _parse_cast(self, strict: bool) -> exp.Expression:
    +127            cast = t.cast(exp.Cast, super()._parse_cast(strict))
    +128            if cast.to.this == exp.DataType.Type.DATE and self._match(TokenType.FORMAT):
    +129                return format_time_lambda(exp.TimeToStr, "teradata")(
    +130                    [cast.this, self._parse_string()]
    +131                )
    +132            return cast
     
    @@ -650,52 +689,56 @@ Default: "nulls_are_small"
    -
    119    class Generator(generator.Generator):
    -120        TYPE_MAPPING = {
    -121            **generator.Generator.TYPE_MAPPING,  # type: ignore
    -122            exp.DataType.Type.GEOMETRY: "ST_GEOMETRY",
    -123        }
    -124
    -125        PROPERTIES_LOCATION = {
    -126            **generator.Generator.PROPERTIES_LOCATION,  # type: ignore
    -127            exp.PartitionedByProperty: exp.Properties.Location.POST_INDEX,
    -128        }
    -129
    -130        TRANSFORMS = {
    -131            **generator.Generator.TRANSFORMS,
    -132            exp.Max: max_or_greatest,
    -133            exp.Min: min_or_least,
    -134            exp.ToChar: lambda self, e: self.function_fallback_sql(e),
    -135        }
    -136
    -137        def partitionedbyproperty_sql(self, expression: exp.PartitionedByProperty) -> str:
    -138            return f"PARTITION BY {self.sql(expression, 'this')}"
    -139
    -140        # FROM before SET in Teradata UPDATE syntax
    -141        # https://docs.teradata.com/r/Enterprise_IntelliFlex_VMware/Teradata-VantageTM-SQL-Data-Manipulation-Language-17.20/Statement-Syntax/UPDATE/UPDATE-Syntax-Basic-Form-FROM-Clause
    -142        def update_sql(self, expression: exp.Update) -> str:
    -143            this = self.sql(expression, "this")
    -144            from_sql = self.sql(expression, "from")
    -145            set_sql = self.expressions(expression, flat=True)
    -146            where_sql = self.sql(expression, "where")
    -147            sql = f"UPDATE {this}{from_sql} SET {set_sql}{where_sql}"
    -148            return self.prepend_ctes(expression, sql)
    -149
    -150        def mod_sql(self, expression: exp.Mod) -> str:
    -151            return self.binary(expression, "MOD")
    -152
    -153        def datatype_sql(self, expression: exp.DataType) -> str:
    -154            type_sql = super().datatype_sql(expression)
    -155            prefix_sql = expression.args.get("prefix")
    -156            return f"SYSUDTLIB.{type_sql}" if prefix_sql else type_sql
    -157
    -158        def rangen_sql(self, expression: exp.RangeN) -> str:
    -159            this = self.sql(expression, "this")
    -160            expressions_sql = self.expressions(expression)
    -161            each_sql = self.sql(expression, "each")
    -162            each_sql = f" EACH {each_sql}" if each_sql else ""
    -163
    -164            return f"RANGE_N({this} BETWEEN {expressions_sql}{each_sql})"
    +            
    134    class Generator(generator.Generator):
    +135        JOIN_HINTS = False
    +136        TABLE_HINTS = False
    +137
    +138        TYPE_MAPPING = {
    +139            **generator.Generator.TYPE_MAPPING,  # type: ignore
    +140            exp.DataType.Type.GEOMETRY: "ST_GEOMETRY",
    +141        }
    +142
    +143        PROPERTIES_LOCATION = {
    +144            **generator.Generator.PROPERTIES_LOCATION,  # type: ignore
    +145            exp.PartitionedByProperty: exp.Properties.Location.POST_INDEX,
    +146        }
    +147
    +148        TRANSFORMS = {
    +149            **generator.Generator.TRANSFORMS,
    +150            exp.Max: max_or_greatest,
    +151            exp.Min: min_or_least,
    +152            exp.TimeToStr: lambda self, e: f"CAST({self.sql(e, 'this')} AS DATE FORMAT {self.format_time(e)})",
    +153            exp.ToChar: lambda self, e: self.function_fallback_sql(e),
    +154        }
    +155
    +156        def partitionedbyproperty_sql(self, expression: exp.PartitionedByProperty) -> str:
    +157            return f"PARTITION BY {self.sql(expression, 'this')}"
    +158
    +159        # FROM before SET in Teradata UPDATE syntax
    +160        # https://docs.teradata.com/r/Enterprise_IntelliFlex_VMware/Teradata-VantageTM-SQL-Data-Manipulation-Language-17.20/Statement-Syntax/UPDATE/UPDATE-Syntax-Basic-Form-FROM-Clause
    +161        def update_sql(self, expression: exp.Update) -> str:
    +162            this = self.sql(expression, "this")
    +163            from_sql = self.sql(expression, "from")
    +164            set_sql = self.expressions(expression, flat=True)
    +165            where_sql = self.sql(expression, "where")
    +166            sql = f"UPDATE {this}{from_sql} SET {set_sql}{where_sql}"
    +167            return self.prepend_ctes(expression, sql)
    +168
    +169        def mod_sql(self, expression: exp.Mod) -> str:
    +170            return self.binary(expression, "MOD")
    +171
    +172        def datatype_sql(self, expression: exp.DataType) -> str:
    +173            type_sql = super().datatype_sql(expression)
    +174            prefix_sql = expression.args.get("prefix")
    +175            return f"SYSUDTLIB.{type_sql}" if prefix_sql else type_sql
    +176
    +177        def rangen_sql(self, expression: exp.RangeN) -> str:
    +178            this = self.sql(expression, "this")
    +179            expressions_sql = self.expressions(expression)
    +180            each_sql = self.sql(expression, "each")
    +181            each_sql = f" EACH {each_sql}" if each_sql else ""
    +182
    +183            return f"RANGE_N({this} BETWEEN {expressions_sql}{each_sql})"
     
    @@ -754,8 +797,8 @@ Default: True
    -
    137        def partitionedbyproperty_sql(self, expression: exp.PartitionedByProperty) -> str:
    -138            return f"PARTITION BY {self.sql(expression, 'this')}"
    +            
    156        def partitionedbyproperty_sql(self, expression: exp.PartitionedByProperty) -> str:
    +157            return f"PARTITION BY {self.sql(expression, 'this')}"
     
    @@ -773,13 +816,13 @@ Default: True
    -
    142        def update_sql(self, expression: exp.Update) -> str:
    -143            this = self.sql(expression, "this")
    -144            from_sql = self.sql(expression, "from")
    -145            set_sql = self.expressions(expression, flat=True)
    -146            where_sql = self.sql(expression, "where")
    -147            sql = f"UPDATE {this}{from_sql} SET {set_sql}{where_sql}"
    -148            return self.prepend_ctes(expression, sql)
    +            
    161        def update_sql(self, expression: exp.Update) -> str:
    +162            this = self.sql(expression, "this")
    +163            from_sql = self.sql(expression, "from")
    +164            set_sql = self.expressions(expression, flat=True)
    +165            where_sql = self.sql(expression, "where")
    +166            sql = f"UPDATE {this}{from_sql} SET {set_sql}{where_sql}"
    +167            return self.prepend_ctes(expression, sql)
     
    @@ -797,8 +840,8 @@ Default: True
    -
    150        def mod_sql(self, expression: exp.Mod) -> str:
    -151            return self.binary(expression, "MOD")
    +            
    169        def mod_sql(self, expression: exp.Mod) -> str:
    +170            return self.binary(expression, "MOD")
     
    @@ -816,10 +859,10 @@ Default: True
    -
    153        def datatype_sql(self, expression: exp.DataType) -> str:
    -154            type_sql = super().datatype_sql(expression)
    -155            prefix_sql = expression.args.get("prefix")
    -156            return f"SYSUDTLIB.{type_sql}" if prefix_sql else type_sql
    +            
    172        def datatype_sql(self, expression: exp.DataType) -> str:
    +173            type_sql = super().datatype_sql(expression)
    +174            prefix_sql = expression.args.get("prefix")
    +175            return f"SYSUDTLIB.{type_sql}" if prefix_sql else type_sql
     
    @@ -837,13 +880,13 @@ Default: True
    -
    158        def rangen_sql(self, expression: exp.RangeN) -> str:
    -159            this = self.sql(expression, "this")
    -160            expressions_sql = self.expressions(expression)
    -161            each_sql = self.sql(expression, "each")
    -162            each_sql = f" EACH {each_sql}" if each_sql else ""
    -163
    -164            return f"RANGE_N({this} BETWEEN {expressions_sql}{each_sql})"
    +            
    177        def rangen_sql(self, expression: exp.RangeN) -> str:
    +178            this = self.sql(expression, "this")
    +179            expressions_sql = self.expressions(expression)
    +180            each_sql = self.sql(expression, "each")
    +181            each_sql = f" EACH {each_sql}" if each_sql else ""
    +182
    +183            return f"RANGE_N({this} BETWEEN {expressions_sql}{each_sql})"
     
    @@ -887,6 +930,7 @@ Default: True
    tablealias_sql
    bitstring_sql
    hexstring_sql
    +
    bytestring_sql
    directory_sql
    delete_sql
    drop_sql
    @@ -897,6 +941,7 @@ Default: True
    hint_sql
    index_sql
    identifier_sql
    +
    inputoutputformat_sql
    national_sql
    partition_sql
    properties_sql
    @@ -922,6 +967,7 @@ Default: True
    intersect_op
    introducer_sql
    pseudotype_sql
    +
    onconflict_sql
    returning_sql
    rowformatdelimitedproperty_sql
    table_sql
    diff --git a/docs/sqlglot/dialects/trino.html b/docs/sqlglot/dialects/trino.html index d732461..3baa74c 100644 --- a/docs/sqlglot/dialects/trino.html +++ b/docs/sqlglot/dialects/trino.html @@ -3,7 +3,7 @@ - + sqlglot.dialects.trino API documentation @@ -237,6 +237,7 @@ Default: True
    tablealias_sql
    bitstring_sql
    hexstring_sql
    +
    bytestring_sql
    datatype_sql
    directory_sql
    delete_sql
    @@ -248,6 +249,7 @@ Default: True
    hint_sql
    index_sql
    identifier_sql
    +
    inputoutputformat_sql
    national_sql
    partition_sql
    properties_sql
    @@ -273,6 +275,7 @@ Default: True
    intersect_op
    introducer_sql
    pseudotype_sql
    +
    onconflict_sql
    returning_sql
    rowformatdelimitedproperty_sql
    table_sql
    @@ -343,7 +346,6 @@ Default: True
    jsonobject_sql
    in_sql
    in_unnest_op
    -
    interval_sql
    return_sql
    reference_sql
    anonymous_sql
    @@ -427,7 +429,8 @@ Default: True
    diff --git a/docs/sqlglot/dialects/tsql.html b/docs/sqlglot/dialects/tsql.html index bd8c032..d1c2096 100644 --- a/docs/sqlglot/dialects/tsql.html +++ b/docs/sqlglot/dialects/tsql.html @@ -3,7 +3,7 @@ - + sqlglot.dialects.tsql API documentation @@ -187,380 +187,419 @@ 96 return exp.LastDateOfMonth(this=exp.DateAdd(this=date, expression=month_lag, unit=unit)) 97 98 - 99def generate_date_delta_with_unit_sql(self, e): -100 func = "DATEADD" if isinstance(e, exp.DateAdd) else "DATEDIFF" -101 return self.func(func, e.text("unit"), e.expression, e.this) + 99def _parse_hashbytes(args): +100 kind, data = args +101 kind = kind.name.upper() if kind.is_string else "" 102 -103 -104def _format_sql(self, e): -105 fmt = ( -106 e.args["format"] -107 if isinstance(e, exp.NumberToStr) -108 else exp.Literal.string(format_time(e.text("format"), TSQL.inverse_time_mapping)) -109 ) -110 return self.func("FORMAT", e.this, fmt) -111 -112 -113def _string_agg_sql(self, e): -114 e = e.copy() +103 if kind == "MD5": +104 args.pop(0) +105 return exp.MD5(this=data) +106 if kind in ("SHA", "SHA1"): +107 args.pop(0) +108 return exp.SHA(this=data) +109 if kind == "SHA2_256": +110 return exp.SHA2(this=data, length=exp.Literal.number(256)) +111 if kind == "SHA2_512": +112 return exp.SHA2(this=data, length=exp.Literal.number(512)) +113 return exp.func("HASHBYTES", *args) +114 115 -116 this = e.this -117 distinct = e.find(exp.Distinct) -118 if distinct: -119 # exp.Distinct can appear below an exp.Order or an exp.GroupConcat expression -120 self.unsupported("T-SQL STRING_AGG doesn't support DISTINCT.") -121 this = distinct.pop().expressions[0] -122 -123 order = "" -124 if isinstance(e.this, exp.Order): -125 if e.this.this: -126 this = e.this.this.pop() -127 order = f" WITHIN GROUP ({self.sql(e.this)[1:]})" # Order has a leading space +116def generate_date_delta_with_unit_sql(self, e): +117 func = "DATEADD" if isinstance(e, exp.DateAdd) else "DATEDIFF" +118 return self.func(func, e.text("unit"), e.expression, e.this) +119 +120 +121def _format_sql(self, e): +122 fmt = ( +123 e.args["format"] +124 if isinstance(e, exp.NumberToStr) +125 else exp.Literal.string(format_time(e.text("format"), TSQL.inverse_time_mapping)) +126 ) +127 return self.func("FORMAT", e.this, fmt) 128 -129 separator = e.args.get("separator") or exp.Literal.string(",") -130 return f"STRING_AGG({self.format_args(this, separator)}){order}" -131 +129 +130def _string_agg_sql(self, e): +131 e = e.copy() 132 -133class TSQL(Dialect): -134 null_ordering = "nulls_are_small" -135 time_format = "'yyyy-mm-dd hh:mm:ss'" -136 -137 time_mapping = { -138 "year": "%Y", -139 "qq": "%q", -140 "q": "%q", -141 "quarter": "%q", -142 "dayofyear": "%j", -143 "day": "%d", -144 "dy": "%d", -145 "y": "%Y", -146 "week": "%W", -147 "ww": "%W", -148 "wk": "%W", -149 "hour": "%h", -150 "hh": "%I", -151 "minute": "%M", -152 "mi": "%M", -153 "n": "%M", -154 "second": "%S", -155 "ss": "%S", -156 "s": "%-S", -157 "millisecond": "%f", -158 "ms": "%f", -159 "weekday": "%W", -160 "dw": "%W", -161 "month": "%m", -162 "mm": "%M", -163 "m": "%-M", -164 "Y": "%Y", -165 "YYYY": "%Y", -166 "YY": "%y", -167 "MMMM": "%B", -168 "MMM": "%b", -169 "MM": "%m", -170 "M": "%-m", -171 "dd": "%d", -172 "d": "%-d", -173 "HH": "%H", -174 "H": "%-H", -175 "h": "%-I", -176 "S": "%f", -177 "yyyy": "%Y", -178 "yy": "%y", -179 } -180 -181 convert_format_mapping = { -182 "0": "%b %d %Y %-I:%M%p", -183 "1": "%m/%d/%y", -184 "2": "%y.%m.%d", -185 "3": "%d/%m/%y", -186 "4": "%d.%m.%y", -187 "5": "%d-%m-%y", -188 "6": "%d %b %y", -189 "7": "%b %d, %y", -190 "8": "%H:%M:%S", -191 "9": "%b %d %Y %-I:%M:%S:%f%p", -192 "10": "mm-dd-yy", -193 "11": "yy/mm/dd", -194 "12": "yymmdd", -195 "13": "%d %b %Y %H:%M:ss:%f", -196 "14": "%H:%M:%S:%f", -197 "20": "%Y-%m-%d %H:%M:%S", -198 "21": "%Y-%m-%d %H:%M:%S.%f", -199 "22": "%m/%d/%y %-I:%M:%S %p", -200 "23": "%Y-%m-%d", -201 "24": "%H:%M:%S", -202 "25": "%Y-%m-%d %H:%M:%S.%f", -203 "100": "%b %d %Y %-I:%M%p", -204 "101": "%m/%d/%Y", -205 "102": "%Y.%m.%d", -206 "103": "%d/%m/%Y", -207 "104": "%d.%m.%Y", -208 "105": "%d-%m-%Y", -209 "106": "%d %b %Y", -210 "107": "%b %d, %Y", -211 "108": "%H:%M:%S", -212 "109": "%b %d %Y %-I:%M:%S:%f%p", -213 "110": "%m-%d-%Y", -214 "111": "%Y/%m/%d", -215 "112": "%Y%m%d", -216 "113": "%d %b %Y %H:%M:%S:%f", -217 "114": "%H:%M:%S:%f", -218 "120": "%Y-%m-%d %H:%M:%S", -219 "121": "%Y-%m-%d %H:%M:%S.%f", -220 } -221 # not sure if complete -222 format_time_mapping = { -223 "y": "%B %Y", -224 "d": "%m/%d/%Y", -225 "H": "%-H", -226 "h": "%-I", -227 "s": "%Y-%m-%d %H:%M:%S", -228 "D": "%A,%B,%Y", -229 "f": "%A,%B,%Y %-I:%M %p", -230 "F": "%A,%B,%Y %-I:%M:%S %p", -231 "g": "%m/%d/%Y %-I:%M %p", -232 "G": "%m/%d/%Y %-I:%M:%S %p", -233 "M": "%B %-d", -234 "m": "%B %-d", -235 "O": "%Y-%m-%dT%H:%M:%S", -236 "u": "%Y-%M-%D %H:%M:%S%z", -237 "U": "%A, %B %D, %Y %H:%M:%S%z", -238 "T": "%-I:%M:%S %p", -239 "t": "%-I:%M", -240 "Y": "%a %Y", -241 } -242 -243 class Tokenizer(tokens.Tokenizer): -244 IDENTIFIERS = ['"', ("[", "]")] -245 -246 QUOTES = ["'", '"'] -247 -248 KEYWORDS = { -249 **tokens.Tokenizer.KEYWORDS, -250 "DATETIME2": TokenType.DATETIME, -251 "DATETIMEOFFSET": TokenType.TIMESTAMPTZ, -252 "DECLARE": TokenType.COMMAND, -253 "IMAGE": TokenType.IMAGE, -254 "MONEY": TokenType.MONEY, -255 "NTEXT": TokenType.TEXT, -256 "NVARCHAR(MAX)": TokenType.TEXT, -257 "PRINT": TokenType.COMMAND, -258 "PROC": TokenType.PROCEDURE, -259 "REAL": TokenType.FLOAT, -260 "ROWVERSION": TokenType.ROWVERSION, -261 "SMALLDATETIME": TokenType.DATETIME, -262 "SMALLMONEY": TokenType.SMALLMONEY, -263 "SQL_VARIANT": TokenType.VARIANT, -264 "TIME": TokenType.TIMESTAMP, -265 "TOP": TokenType.TOP, -266 "UNIQUEIDENTIFIER": TokenType.UNIQUEIDENTIFIER, -267 "VARCHAR(MAX)": TokenType.TEXT, -268 "XML": TokenType.XML, -269 } -270 -271 # TSQL allows @, # to appear as a variable/identifier prefix -272 SINGLE_TOKENS = tokens.Tokenizer.SINGLE_TOKENS.copy() -273 SINGLE_TOKENS.pop("#") -274 -275 class Parser(parser.Parser): -276 FUNCTIONS = { -277 **parser.Parser.FUNCTIONS, # type: ignore -278 "CHARINDEX": lambda args: exp.StrPosition( -279 this=seq_get(args, 1), -280 substr=seq_get(args, 0), -281 position=seq_get(args, 2), -282 ), -283 "DATEADD": parse_date_delta(exp.DateAdd, unit_mapping=DATE_DELTA_INTERVAL), -284 "DATEDIFF": parse_date_delta(exp.DateDiff, unit_mapping=DATE_DELTA_INTERVAL), -285 "DATENAME": _format_time_lambda(exp.TimeToStr, full_format_mapping=True), -286 "DATEPART": _format_time_lambda(exp.TimeToStr), -287 "EOMONTH": _parse_eomonth, -288 "FORMAT": _parse_format, -289 "GETDATE": exp.CurrentTimestamp.from_arg_list, -290 "IIF": exp.If.from_arg_list, -291 "ISNULL": exp.Coalesce.from_arg_list, -292 "JSON_VALUE": exp.JSONExtractScalar.from_arg_list, -293 "LEN": exp.Length.from_arg_list, -294 "REPLICATE": exp.Repeat.from_arg_list, -295 "SQUARE": lambda args: exp.Pow(this=seq_get(args, 0), expression=exp.Literal.number(2)), -296 "SYSDATETIME": exp.CurrentTimestamp.from_arg_list, -297 } -298 -299 VAR_LENGTH_DATATYPES = { -300 DataType.Type.NVARCHAR, -301 DataType.Type.VARCHAR, -302 DataType.Type.CHAR, -303 DataType.Type.NCHAR, -304 } -305 -306 RETURNS_TABLE_TOKENS = parser.Parser.ID_VAR_TOKENS - { # type: ignore -307 TokenType.TABLE, -308 *parser.Parser.TYPE_TOKENS, # type: ignore -309 } -310 -311 STATEMENT_PARSERS = { -312 **parser.Parser.STATEMENT_PARSERS, # type: ignore -313 TokenType.END: lambda self: self._parse_command(), -314 } -315 -316 LOG_BASE_FIRST = False -317 LOG_DEFAULTS_TO_LN = True -318 -319 def _parse_system_time(self) -> t.Optional[exp.Expression]: -320 if not self._match_text_seq("FOR", "SYSTEM_TIME"): -321 return None -322 -323 if self._match_text_seq("AS", "OF"): -324 system_time = self.expression( -325 exp.SystemTime, this=self._parse_bitwise(), kind="AS OF" -326 ) -327 elif self._match_set((TokenType.FROM, TokenType.BETWEEN)): -328 kind = self._prev.text -329 this = self._parse_bitwise() -330 self._match_texts(("TO", "AND")) -331 expression = self._parse_bitwise() -332 system_time = self.expression( -333 exp.SystemTime, this=this, expression=expression, kind=kind -334 ) -335 elif self._match_text_seq("CONTAINED", "IN"): -336 args = self._parse_wrapped_csv(self._parse_bitwise) -337 system_time = self.expression( -338 exp.SystemTime, -339 this=seq_get(args, 0), -340 expression=seq_get(args, 1), -341 kind="CONTAINED IN", -342 ) -343 elif self._match(TokenType.ALL): -344 system_time = self.expression(exp.SystemTime, kind="ALL") -345 else: -346 system_time = None -347 self.raise_error("Unable to parse FOR SYSTEM_TIME clause") -348 -349 return system_time -350 -351 def _parse_table_parts(self, schema: bool = False) -> exp.Expression: -352 table = super()._parse_table_parts(schema=schema) -353 table.set("system_time", self._parse_system_time()) -354 return table -355 -356 def _parse_returns(self) -> exp.Expression: -357 table = self._parse_id_var(any_token=False, tokens=self.RETURNS_TABLE_TOKENS) -358 returns = super()._parse_returns() -359 returns.set("table", table) -360 return returns -361 -362 def _parse_convert(self, strict: bool) -> t.Optional[exp.Expression]: -363 to = self._parse_types() -364 self._match(TokenType.COMMA) -365 this = self._parse_conjunction() -366 -367 if not to or not this: -368 return None -369 -370 # Retrieve length of datatype and override to default if not specified -371 if seq_get(to.expressions, 0) is None and to.this in self.VAR_LENGTH_DATATYPES: -372 to = exp.DataType.build(to.this, expressions=[exp.Literal.number(30)], nested=False) -373 -374 # Check whether a conversion with format is applicable -375 if self._match(TokenType.COMMA): -376 format_val = self._parse_number() -377 format_val_name = format_val.name if format_val else "" -378 -379 if format_val_name not in TSQL.convert_format_mapping: -380 raise ValueError( -381 f"CONVERT function at T-SQL does not support format style {format_val_name}" -382 ) -383 -384 format_norm = exp.Literal.string(TSQL.convert_format_mapping[format_val_name]) -385 -386 # Check whether the convert entails a string to date format -387 if to.this == DataType.Type.DATE: -388 return self.expression(exp.StrToDate, this=this, format=format_norm) -389 # Check whether the convert entails a string to datetime format -390 elif to.this == DataType.Type.DATETIME: -391 return self.expression(exp.StrToTime, this=this, format=format_norm) -392 # Check whether the convert entails a date to string format -393 elif to.this in self.VAR_LENGTH_DATATYPES: -394 return self.expression( -395 exp.Cast if strict else exp.TryCast, -396 to=to, -397 this=self.expression(exp.TimeToStr, this=this, format=format_norm), -398 ) -399 elif to.this == DataType.Type.TEXT: -400 return self.expression(exp.TimeToStr, this=this, format=format_norm) -401 -402 # Entails a simple cast without any format requirement -403 return self.expression(exp.Cast if strict else exp.TryCast, this=this, to=to) -404 -405 def _parse_user_defined_function( -406 self, kind: t.Optional[TokenType] = None -407 ) -> t.Optional[exp.Expression]: -408 this = super()._parse_user_defined_function(kind=kind) -409 -410 if ( -411 kind == TokenType.FUNCTION -412 or isinstance(this, exp.UserDefinedFunction) -413 or self._match(TokenType.ALIAS, advance=False) -414 ): -415 return this -416 -417 expressions = self._parse_csv(self._parse_function_parameter) -418 return self.expression(exp.UserDefinedFunction, this=this, expressions=expressions) -419 -420 class Generator(generator.Generator): -421 LOCKING_READS_SUPPORTED = True -422 -423 TYPE_MAPPING = { -424 **generator.Generator.TYPE_MAPPING, # type: ignore -425 exp.DataType.Type.INT: "INTEGER", -426 exp.DataType.Type.DECIMAL: "NUMERIC", -427 exp.DataType.Type.DATETIME: "DATETIME2", -428 exp.DataType.Type.VARIANT: "SQL_VARIANT", -429 } +133 this = e.this +134 distinct = e.find(exp.Distinct) +135 if distinct: +136 # exp.Distinct can appear below an exp.Order or an exp.GroupConcat expression +137 self.unsupported("T-SQL STRING_AGG doesn't support DISTINCT.") +138 this = distinct.pop().expressions[0] +139 +140 order = "" +141 if isinstance(e.this, exp.Order): +142 if e.this.this: +143 this = e.this.this.pop() +144 order = f" WITHIN GROUP ({self.sql(e.this)[1:]})" # Order has a leading space +145 +146 separator = e.args.get("separator") or exp.Literal.string(",") +147 return f"STRING_AGG({self.format_args(this, separator)}){order}" +148 +149 +150class TSQL(Dialect): +151 null_ordering = "nulls_are_small" +152 time_format = "'yyyy-mm-dd hh:mm:ss'" +153 +154 time_mapping = { +155 "year": "%Y", +156 "qq": "%q", +157 "q": "%q", +158 "quarter": "%q", +159 "dayofyear": "%j", +160 "day": "%d", +161 "dy": "%d", +162 "y": "%Y", +163 "week": "%W", +164 "ww": "%W", +165 "wk": "%W", +166 "hour": "%h", +167 "hh": "%I", +168 "minute": "%M", +169 "mi": "%M", +170 "n": "%M", +171 "second": "%S", +172 "ss": "%S", +173 "s": "%-S", +174 "millisecond": "%f", +175 "ms": "%f", +176 "weekday": "%W", +177 "dw": "%W", +178 "month": "%m", +179 "mm": "%M", +180 "m": "%-M", +181 "Y": "%Y", +182 "YYYY": "%Y", +183 "YY": "%y", +184 "MMMM": "%B", +185 "MMM": "%b", +186 "MM": "%m", +187 "M": "%-m", +188 "dd": "%d", +189 "d": "%-d", +190 "HH": "%H", +191 "H": "%-H", +192 "h": "%-I", +193 "S": "%f", +194 "yyyy": "%Y", +195 "yy": "%y", +196 } +197 +198 convert_format_mapping = { +199 "0": "%b %d %Y %-I:%M%p", +200 "1": "%m/%d/%y", +201 "2": "%y.%m.%d", +202 "3": "%d/%m/%y", +203 "4": "%d.%m.%y", +204 "5": "%d-%m-%y", +205 "6": "%d %b %y", +206 "7": "%b %d, %y", +207 "8": "%H:%M:%S", +208 "9": "%b %d %Y %-I:%M:%S:%f%p", +209 "10": "mm-dd-yy", +210 "11": "yy/mm/dd", +211 "12": "yymmdd", +212 "13": "%d %b %Y %H:%M:ss:%f", +213 "14": "%H:%M:%S:%f", +214 "20": "%Y-%m-%d %H:%M:%S", +215 "21": "%Y-%m-%d %H:%M:%S.%f", +216 "22": "%m/%d/%y %-I:%M:%S %p", +217 "23": "%Y-%m-%d", +218 "24": "%H:%M:%S", +219 "25": "%Y-%m-%d %H:%M:%S.%f", +220 "100": "%b %d %Y %-I:%M%p", +221 "101": "%m/%d/%Y", +222 "102": "%Y.%m.%d", +223 "103": "%d/%m/%Y", +224 "104": "%d.%m.%Y", +225 "105": "%d-%m-%Y", +226 "106": "%d %b %Y", +227 "107": "%b %d, %Y", +228 "108": "%H:%M:%S", +229 "109": "%b %d %Y %-I:%M:%S:%f%p", +230 "110": "%m-%d-%Y", +231 "111": "%Y/%m/%d", +232 "112": "%Y%m%d", +233 "113": "%d %b %Y %H:%M:%S:%f", +234 "114": "%H:%M:%S:%f", +235 "120": "%Y-%m-%d %H:%M:%S", +236 "121": "%Y-%m-%d %H:%M:%S.%f", +237 } +238 # not sure if complete +239 format_time_mapping = { +240 "y": "%B %Y", +241 "d": "%m/%d/%Y", +242 "H": "%-H", +243 "h": "%-I", +244 "s": "%Y-%m-%d %H:%M:%S", +245 "D": "%A,%B,%Y", +246 "f": "%A,%B,%Y %-I:%M %p", +247 "F": "%A,%B,%Y %-I:%M:%S %p", +248 "g": "%m/%d/%Y %-I:%M %p", +249 "G": "%m/%d/%Y %-I:%M:%S %p", +250 "M": "%B %-d", +251 "m": "%B %-d", +252 "O": "%Y-%m-%dT%H:%M:%S", +253 "u": "%Y-%M-%D %H:%M:%S%z", +254 "U": "%A, %B %D, %Y %H:%M:%S%z", +255 "T": "%-I:%M:%S %p", +256 "t": "%-I:%M", +257 "Y": "%a %Y", +258 } +259 +260 class Tokenizer(tokens.Tokenizer): +261 IDENTIFIERS = ['"', ("[", "]")] +262 +263 QUOTES = ["'", '"'] +264 +265 KEYWORDS = { +266 **tokens.Tokenizer.KEYWORDS, +267 "DATETIME2": TokenType.DATETIME, +268 "DATETIMEOFFSET": TokenType.TIMESTAMPTZ, +269 "DECLARE": TokenType.COMMAND, +270 "IMAGE": TokenType.IMAGE, +271 "MONEY": TokenType.MONEY, +272 "NTEXT": TokenType.TEXT, +273 "NVARCHAR(MAX)": TokenType.TEXT, +274 "PRINT": TokenType.COMMAND, +275 "PROC": TokenType.PROCEDURE, +276 "REAL": TokenType.FLOAT, +277 "ROWVERSION": TokenType.ROWVERSION, +278 "SMALLDATETIME": TokenType.DATETIME, +279 "SMALLMONEY": TokenType.SMALLMONEY, +280 "SQL_VARIANT": TokenType.VARIANT, +281 "TIME": TokenType.TIMESTAMP, +282 "TOP": TokenType.TOP, +283 "UNIQUEIDENTIFIER": TokenType.UNIQUEIDENTIFIER, +284 "VARCHAR(MAX)": TokenType.TEXT, +285 "XML": TokenType.XML, +286 "SYSTEM_USER": TokenType.CURRENT_USER, +287 } +288 +289 # TSQL allows @, # to appear as a variable/identifier prefix +290 SINGLE_TOKENS = tokens.Tokenizer.SINGLE_TOKENS.copy() +291 SINGLE_TOKENS.pop("#") +292 +293 class Parser(parser.Parser): +294 FUNCTIONS = { +295 **parser.Parser.FUNCTIONS, # type: ignore +296 "CHARINDEX": lambda args: exp.StrPosition( +297 this=seq_get(args, 1), +298 substr=seq_get(args, 0), +299 position=seq_get(args, 2), +300 ), +301 "DATEADD": parse_date_delta(exp.DateAdd, unit_mapping=DATE_DELTA_INTERVAL), +302 "DATEDIFF": parse_date_delta(exp.DateDiff, unit_mapping=DATE_DELTA_INTERVAL), +303 "DATENAME": _format_time_lambda(exp.TimeToStr, full_format_mapping=True), +304 "DATEPART": _format_time_lambda(exp.TimeToStr), +305 "EOMONTH": _parse_eomonth, +306 "FORMAT": _parse_format, +307 "GETDATE": exp.CurrentTimestamp.from_arg_list, +308 "HASHBYTES": _parse_hashbytes, +309 "IIF": exp.If.from_arg_list, +310 "ISNULL": exp.Coalesce.from_arg_list, +311 "JSON_VALUE": exp.JSONExtractScalar.from_arg_list, +312 "LEN": exp.Length.from_arg_list, +313 "REPLICATE": exp.Repeat.from_arg_list, +314 "SQUARE": lambda args: exp.Pow(this=seq_get(args, 0), expression=exp.Literal.number(2)), +315 "SYSDATETIME": exp.CurrentTimestamp.from_arg_list, +316 "SUSER_NAME": exp.CurrentUser.from_arg_list, +317 "SUSER_SNAME": exp.CurrentUser.from_arg_list, +318 "SYSTEM_USER": exp.CurrentUser.from_arg_list, +319 } +320 +321 JOIN_HINTS = { +322 "LOOP", +323 "HASH", +324 "MERGE", +325 "REMOTE", +326 } +327 +328 VAR_LENGTH_DATATYPES = { +329 DataType.Type.NVARCHAR, +330 DataType.Type.VARCHAR, +331 DataType.Type.CHAR, +332 DataType.Type.NCHAR, +333 } +334 +335 RETURNS_TABLE_TOKENS = parser.Parser.ID_VAR_TOKENS - { # type: ignore +336 TokenType.TABLE, +337 *parser.Parser.TYPE_TOKENS, # type: ignore +338 } +339 +340 STATEMENT_PARSERS = { +341 **parser.Parser.STATEMENT_PARSERS, # type: ignore +342 TokenType.END: lambda self: self._parse_command(), +343 } +344 +345 LOG_BASE_FIRST = False +346 LOG_DEFAULTS_TO_LN = True +347 +348 def _parse_system_time(self) -> t.Optional[exp.Expression]: +349 if not self._match_text_seq("FOR", "SYSTEM_TIME"): +350 return None +351 +352 if self._match_text_seq("AS", "OF"): +353 system_time = self.expression( +354 exp.SystemTime, this=self._parse_bitwise(), kind="AS OF" +355 ) +356 elif self._match_set((TokenType.FROM, TokenType.BETWEEN)): +357 kind = self._prev.text +358 this = self._parse_bitwise() +359 self._match_texts(("TO", "AND")) +360 expression = self._parse_bitwise() +361 system_time = self.expression( +362 exp.SystemTime, this=this, expression=expression, kind=kind +363 ) +364 elif self._match_text_seq("CONTAINED", "IN"): +365 args = self._parse_wrapped_csv(self._parse_bitwise) +366 system_time = self.expression( +367 exp.SystemTime, +368 this=seq_get(args, 0), +369 expression=seq_get(args, 1), +370 kind="CONTAINED IN", +371 ) +372 elif self._match(TokenType.ALL): +373 system_time = self.expression(exp.SystemTime, kind="ALL") +374 else: +375 system_time = None +376 self.raise_error("Unable to parse FOR SYSTEM_TIME clause") +377 +378 return system_time +379 +380 def _parse_table_parts(self, schema: bool = False) -> exp.Expression: +381 table = super()._parse_table_parts(schema=schema) +382 table.set("system_time", self._parse_system_time()) +383 return table +384 +385 def _parse_returns(self) -> exp.Expression: +386 table = self._parse_id_var(any_token=False, tokens=self.RETURNS_TABLE_TOKENS) +387 returns = super()._parse_returns() +388 returns.set("table", table) +389 return returns +390 +391 def _parse_convert(self, strict: bool) -> t.Optional[exp.Expression]: +392 to = self._parse_types() +393 self._match(TokenType.COMMA) +394 this = self._parse_conjunction() +395 +396 if not to or not this: +397 return None +398 +399 # Retrieve length of datatype and override to default if not specified +400 if seq_get(to.expressions, 0) is None and to.this in self.VAR_LENGTH_DATATYPES: +401 to = exp.DataType.build(to.this, expressions=[exp.Literal.number(30)], nested=False) +402 +403 # Check whether a conversion with format is applicable +404 if self._match(TokenType.COMMA): +405 format_val = self._parse_number() +406 format_val_name = format_val.name if format_val else "" +407 +408 if format_val_name not in TSQL.convert_format_mapping: +409 raise ValueError( +410 f"CONVERT function at T-SQL does not support format style {format_val_name}" +411 ) +412 +413 format_norm = exp.Literal.string(TSQL.convert_format_mapping[format_val_name]) +414 +415 # Check whether the convert entails a string to date format +416 if to.this == DataType.Type.DATE: +417 return self.expression(exp.StrToDate, this=this, format=format_norm) +418 # Check whether the convert entails a string to datetime format +419 elif to.this == DataType.Type.DATETIME: +420 return self.expression(exp.StrToTime, this=this, format=format_norm) +421 # Check whether the convert entails a date to string format +422 elif to.this in self.VAR_LENGTH_DATATYPES: +423 return self.expression( +424 exp.Cast if strict else exp.TryCast, +425 to=to, +426 this=self.expression(exp.TimeToStr, this=this, format=format_norm), +427 ) +428 elif to.this == DataType.Type.TEXT: +429 return self.expression(exp.TimeToStr, this=this, format=format_norm) 430 -431 TRANSFORMS = { -432 **generator.Generator.TRANSFORMS, # type: ignore -433 exp.DateAdd: generate_date_delta_with_unit_sql, -434 exp.DateDiff: generate_date_delta_with_unit_sql, -435 exp.CurrentDate: rename_func("GETDATE"), -436 exp.CurrentTimestamp: rename_func("GETDATE"), -437 exp.If: rename_func("IIF"), -438 exp.NumberToStr: _format_sql, -439 exp.TimeToStr: _format_sql, -440 exp.GroupConcat: _string_agg_sql, -441 exp.Max: max_or_greatest, -442 exp.Min: min_or_least, -443 } -444 -445 TRANSFORMS.pop(exp.ReturnsProperty) -446 -447 LIMIT_FETCH = "FETCH" +431 # Entails a simple cast without any format requirement +432 return self.expression(exp.Cast if strict else exp.TryCast, this=this, to=to) +433 +434 def _parse_user_defined_function( +435 self, kind: t.Optional[TokenType] = None +436 ) -> t.Optional[exp.Expression]: +437 this = super()._parse_user_defined_function(kind=kind) +438 +439 if ( +440 kind == TokenType.FUNCTION +441 or isinstance(this, exp.UserDefinedFunction) +442 or self._match(TokenType.ALIAS, advance=False) +443 ): +444 return this +445 +446 expressions = self._parse_csv(self._parse_function_parameter) +447 return self.expression(exp.UserDefinedFunction, this=this, expressions=expressions) 448 -449 def offset_sql(self, expression: exp.Offset) -> str: -450 return f"{super().offset_sql(expression)} ROWS" +449 class Generator(generator.Generator): +450 LOCKING_READS_SUPPORTED = True 451 -452 def systemtime_sql(self, expression: exp.SystemTime) -> str: -453 kind = expression.args["kind"] -454 if kind == "ALL": -455 return "FOR SYSTEM_TIME ALL" -456 -457 start = self.sql(expression, "this") -458 if kind == "AS OF": -459 return f"FOR SYSTEM_TIME AS OF {start}" -460 -461 end = self.sql(expression, "expression") -462 if kind == "FROM": -463 return f"FOR SYSTEM_TIME FROM {start} TO {end}" -464 if kind == "BETWEEN": -465 return f"FOR SYSTEM_TIME BETWEEN {start} AND {end}" -466 -467 return f"FOR SYSTEM_TIME CONTAINED IN ({start}, {end})" -468 -469 def returnsproperty_sql(self, expression: exp.ReturnsProperty) -> str: -470 table = expression.args.get("table") -471 table = f"{table} " if table else "" -472 return f"RETURNS {table}{self.sql(expression, 'this')}" +452 TYPE_MAPPING = { +453 **generator.Generator.TYPE_MAPPING, # type: ignore +454 exp.DataType.Type.INT: "INTEGER", +455 exp.DataType.Type.DECIMAL: "NUMERIC", +456 exp.DataType.Type.DATETIME: "DATETIME2", +457 exp.DataType.Type.VARIANT: "SQL_VARIANT", +458 } +459 +460 TRANSFORMS = { +461 **generator.Generator.TRANSFORMS, # type: ignore +462 exp.DateAdd: generate_date_delta_with_unit_sql, +463 exp.DateDiff: generate_date_delta_with_unit_sql, +464 exp.CurrentDate: rename_func("GETDATE"), +465 exp.CurrentTimestamp: rename_func("GETDATE"), +466 exp.If: rename_func("IIF"), +467 exp.NumberToStr: _format_sql, +468 exp.TimeToStr: _format_sql, +469 exp.GroupConcat: _string_agg_sql, +470 exp.Max: max_or_greatest, +471 exp.MD5: lambda self, e: self.func("HASHBYTES", exp.Literal.string("MD5"), e.this), +472 exp.Min: min_or_least, +473 exp.SHA: lambda self, e: self.func("HASHBYTES", exp.Literal.string("SHA1"), e.this), +474 exp.SHA2: lambda self, e: self.func( +475 "HASHBYTES", exp.Literal.string(f"SHA2_{e.args.get('length', 256)}"), e.this +476 ), +477 } +478 +479 TRANSFORMS.pop(exp.ReturnsProperty) +480 +481 PROPERTIES_LOCATION = { +482 **generator.Generator.PROPERTIES_LOCATION, # type: ignore +483 exp.VolatileProperty: exp.Properties.Location.UNSUPPORTED, +484 } +485 +486 LIMIT_FETCH = "FETCH" +487 +488 def offset_sql(self, expression: exp.Offset) -> str: +489 return f"{super().offset_sql(expression)} ROWS" +490 +491 def systemtime_sql(self, expression: exp.SystemTime) -> str: +492 kind = expression.args["kind"] +493 if kind == "ALL": +494 return "FOR SYSTEM_TIME ALL" +495 +496 start = self.sql(expression, "this") +497 if kind == "AS OF": +498 return f"FOR SYSTEM_TIME AS OF {start}" +499 +500 end = self.sql(expression, "expression") +501 if kind == "FROM": +502 return f"FOR SYSTEM_TIME FROM {start} TO {end}" +503 if kind == "BETWEEN": +504 return f"FOR SYSTEM_TIME BETWEEN {start} AND {end}" +505 +506 return f"FOR SYSTEM_TIME CONTAINED IN ({start}, {end})" +507 +508 def returnsproperty_sql(self, expression: exp.ReturnsProperty) -> str: +509 table = expression.args.get("table") +510 table = f"{table} " if table else "" +511 return f"RETURNS {table}{self.sql(expression, 'this')}" @@ -576,9 +615,9 @@ -
    100def generate_date_delta_with_unit_sql(self, e):
    -101    func = "DATEADD" if isinstance(e, exp.DateAdd) else "DATEDIFF"
    -102    return self.func(func, e.text("unit"), e.expression, e.this)
    +            
    117def generate_date_delta_with_unit_sql(self, e):
    +118    func = "DATEADD" if isinstance(e, exp.DateAdd) else "DATEDIFF"
    +119    return self.func(func, e.text("unit"), e.expression, e.this)
     
    @@ -596,346 +635,368 @@
    -
    134class TSQL(Dialect):
    -135    null_ordering = "nulls_are_small"
    -136    time_format = "'yyyy-mm-dd hh:mm:ss'"
    -137
    -138    time_mapping = {
    -139        "year": "%Y",
    -140        "qq": "%q",
    -141        "q": "%q",
    -142        "quarter": "%q",
    -143        "dayofyear": "%j",
    -144        "day": "%d",
    -145        "dy": "%d",
    -146        "y": "%Y",
    -147        "week": "%W",
    -148        "ww": "%W",
    -149        "wk": "%W",
    -150        "hour": "%h",
    -151        "hh": "%I",
    -152        "minute": "%M",
    -153        "mi": "%M",
    -154        "n": "%M",
    -155        "second": "%S",
    -156        "ss": "%S",
    -157        "s": "%-S",
    -158        "millisecond": "%f",
    -159        "ms": "%f",
    -160        "weekday": "%W",
    -161        "dw": "%W",
    -162        "month": "%m",
    -163        "mm": "%M",
    -164        "m": "%-M",
    -165        "Y": "%Y",
    -166        "YYYY": "%Y",
    -167        "YY": "%y",
    -168        "MMMM": "%B",
    -169        "MMM": "%b",
    -170        "MM": "%m",
    -171        "M": "%-m",
    -172        "dd": "%d",
    -173        "d": "%-d",
    -174        "HH": "%H",
    -175        "H": "%-H",
    -176        "h": "%-I",
    -177        "S": "%f",
    -178        "yyyy": "%Y",
    -179        "yy": "%y",
    -180    }
    -181
    -182    convert_format_mapping = {
    -183        "0": "%b %d %Y %-I:%M%p",
    -184        "1": "%m/%d/%y",
    -185        "2": "%y.%m.%d",
    -186        "3": "%d/%m/%y",
    -187        "4": "%d.%m.%y",
    -188        "5": "%d-%m-%y",
    -189        "6": "%d %b %y",
    -190        "7": "%b %d, %y",
    -191        "8": "%H:%M:%S",
    -192        "9": "%b %d %Y %-I:%M:%S:%f%p",
    -193        "10": "mm-dd-yy",
    -194        "11": "yy/mm/dd",
    -195        "12": "yymmdd",
    -196        "13": "%d %b %Y %H:%M:ss:%f",
    -197        "14": "%H:%M:%S:%f",
    -198        "20": "%Y-%m-%d %H:%M:%S",
    -199        "21": "%Y-%m-%d %H:%M:%S.%f",
    -200        "22": "%m/%d/%y %-I:%M:%S %p",
    -201        "23": "%Y-%m-%d",
    -202        "24": "%H:%M:%S",
    -203        "25": "%Y-%m-%d %H:%M:%S.%f",
    -204        "100": "%b %d %Y %-I:%M%p",
    -205        "101": "%m/%d/%Y",
    -206        "102": "%Y.%m.%d",
    -207        "103": "%d/%m/%Y",
    -208        "104": "%d.%m.%Y",
    -209        "105": "%d-%m-%Y",
    -210        "106": "%d %b %Y",
    -211        "107": "%b %d, %Y",
    -212        "108": "%H:%M:%S",
    -213        "109": "%b %d %Y %-I:%M:%S:%f%p",
    -214        "110": "%m-%d-%Y",
    -215        "111": "%Y/%m/%d",
    -216        "112": "%Y%m%d",
    -217        "113": "%d %b %Y %H:%M:%S:%f",
    -218        "114": "%H:%M:%S:%f",
    -219        "120": "%Y-%m-%d %H:%M:%S",
    -220        "121": "%Y-%m-%d %H:%M:%S.%f",
    -221    }
    -222    # not sure if complete
    -223    format_time_mapping = {
    -224        "y": "%B %Y",
    -225        "d": "%m/%d/%Y",
    -226        "H": "%-H",
    -227        "h": "%-I",
    -228        "s": "%Y-%m-%d %H:%M:%S",
    -229        "D": "%A,%B,%Y",
    -230        "f": "%A,%B,%Y %-I:%M %p",
    -231        "F": "%A,%B,%Y %-I:%M:%S %p",
    -232        "g": "%m/%d/%Y %-I:%M %p",
    -233        "G": "%m/%d/%Y %-I:%M:%S %p",
    -234        "M": "%B %-d",
    -235        "m": "%B %-d",
    -236        "O": "%Y-%m-%dT%H:%M:%S",
    -237        "u": "%Y-%M-%D %H:%M:%S%z",
    -238        "U": "%A, %B %D, %Y %H:%M:%S%z",
    -239        "T": "%-I:%M:%S %p",
    -240        "t": "%-I:%M",
    -241        "Y": "%a %Y",
    -242    }
    -243
    -244    class Tokenizer(tokens.Tokenizer):
    -245        IDENTIFIERS = ['"', ("[", "]")]
    -246
    -247        QUOTES = ["'", '"']
    -248
    -249        KEYWORDS = {
    -250            **tokens.Tokenizer.KEYWORDS,
    -251            "DATETIME2": TokenType.DATETIME,
    -252            "DATETIMEOFFSET": TokenType.TIMESTAMPTZ,
    -253            "DECLARE": TokenType.COMMAND,
    -254            "IMAGE": TokenType.IMAGE,
    -255            "MONEY": TokenType.MONEY,
    -256            "NTEXT": TokenType.TEXT,
    -257            "NVARCHAR(MAX)": TokenType.TEXT,
    -258            "PRINT": TokenType.COMMAND,
    -259            "PROC": TokenType.PROCEDURE,
    -260            "REAL": TokenType.FLOAT,
    -261            "ROWVERSION": TokenType.ROWVERSION,
    -262            "SMALLDATETIME": TokenType.DATETIME,
    -263            "SMALLMONEY": TokenType.SMALLMONEY,
    -264            "SQL_VARIANT": TokenType.VARIANT,
    -265            "TIME": TokenType.TIMESTAMP,
    -266            "TOP": TokenType.TOP,
    -267            "UNIQUEIDENTIFIER": TokenType.UNIQUEIDENTIFIER,
    -268            "VARCHAR(MAX)": TokenType.TEXT,
    -269            "XML": TokenType.XML,
    -270        }
    -271
    -272        # TSQL allows @, # to appear as a variable/identifier prefix
    -273        SINGLE_TOKENS = tokens.Tokenizer.SINGLE_TOKENS.copy()
    -274        SINGLE_TOKENS.pop("#")
    -275
    -276    class Parser(parser.Parser):
    -277        FUNCTIONS = {
    -278            **parser.Parser.FUNCTIONS,  # type: ignore
    -279            "CHARINDEX": lambda args: exp.StrPosition(
    -280                this=seq_get(args, 1),
    -281                substr=seq_get(args, 0),
    -282                position=seq_get(args, 2),
    -283            ),
    -284            "DATEADD": parse_date_delta(exp.DateAdd, unit_mapping=DATE_DELTA_INTERVAL),
    -285            "DATEDIFF": parse_date_delta(exp.DateDiff, unit_mapping=DATE_DELTA_INTERVAL),
    -286            "DATENAME": _format_time_lambda(exp.TimeToStr, full_format_mapping=True),
    -287            "DATEPART": _format_time_lambda(exp.TimeToStr),
    -288            "EOMONTH": _parse_eomonth,
    -289            "FORMAT": _parse_format,
    -290            "GETDATE": exp.CurrentTimestamp.from_arg_list,
    -291            "IIF": exp.If.from_arg_list,
    -292            "ISNULL": exp.Coalesce.from_arg_list,
    -293            "JSON_VALUE": exp.JSONExtractScalar.from_arg_list,
    -294            "LEN": exp.Length.from_arg_list,
    -295            "REPLICATE": exp.Repeat.from_arg_list,
    -296            "SQUARE": lambda args: exp.Pow(this=seq_get(args, 0), expression=exp.Literal.number(2)),
    -297            "SYSDATETIME": exp.CurrentTimestamp.from_arg_list,
    -298        }
    -299
    -300        VAR_LENGTH_DATATYPES = {
    -301            DataType.Type.NVARCHAR,
    -302            DataType.Type.VARCHAR,
    -303            DataType.Type.CHAR,
    -304            DataType.Type.NCHAR,
    -305        }
    -306
    -307        RETURNS_TABLE_TOKENS = parser.Parser.ID_VAR_TOKENS - {  # type: ignore
    -308            TokenType.TABLE,
    -309            *parser.Parser.TYPE_TOKENS,  # type: ignore
    -310        }
    -311
    -312        STATEMENT_PARSERS = {
    -313            **parser.Parser.STATEMENT_PARSERS,  # type: ignore
    -314            TokenType.END: lambda self: self._parse_command(),
    -315        }
    -316
    -317        LOG_BASE_FIRST = False
    -318        LOG_DEFAULTS_TO_LN = True
    -319
    -320        def _parse_system_time(self) -> t.Optional[exp.Expression]:
    -321            if not self._match_text_seq("FOR", "SYSTEM_TIME"):
    -322                return None
    -323
    -324            if self._match_text_seq("AS", "OF"):
    -325                system_time = self.expression(
    -326                    exp.SystemTime, this=self._parse_bitwise(), kind="AS OF"
    -327                )
    -328            elif self._match_set((TokenType.FROM, TokenType.BETWEEN)):
    -329                kind = self._prev.text
    -330                this = self._parse_bitwise()
    -331                self._match_texts(("TO", "AND"))
    -332                expression = self._parse_bitwise()
    -333                system_time = self.expression(
    -334                    exp.SystemTime, this=this, expression=expression, kind=kind
    -335                )
    -336            elif self._match_text_seq("CONTAINED", "IN"):
    -337                args = self._parse_wrapped_csv(self._parse_bitwise)
    -338                system_time = self.expression(
    -339                    exp.SystemTime,
    -340                    this=seq_get(args, 0),
    -341                    expression=seq_get(args, 1),
    -342                    kind="CONTAINED IN",
    -343                )
    -344            elif self._match(TokenType.ALL):
    -345                system_time = self.expression(exp.SystemTime, kind="ALL")
    -346            else:
    -347                system_time = None
    -348                self.raise_error("Unable to parse FOR SYSTEM_TIME clause")
    -349
    -350            return system_time
    -351
    -352        def _parse_table_parts(self, schema: bool = False) -> exp.Expression:
    -353            table = super()._parse_table_parts(schema=schema)
    -354            table.set("system_time", self._parse_system_time())
    -355            return table
    -356
    -357        def _parse_returns(self) -> exp.Expression:
    -358            table = self._parse_id_var(any_token=False, tokens=self.RETURNS_TABLE_TOKENS)
    -359            returns = super()._parse_returns()
    -360            returns.set("table", table)
    -361            return returns
    -362
    -363        def _parse_convert(self, strict: bool) -> t.Optional[exp.Expression]:
    -364            to = self._parse_types()
    -365            self._match(TokenType.COMMA)
    -366            this = self._parse_conjunction()
    -367
    -368            if not to or not this:
    -369                return None
    -370
    -371            # Retrieve length of datatype and override to default if not specified
    -372            if seq_get(to.expressions, 0) is None and to.this in self.VAR_LENGTH_DATATYPES:
    -373                to = exp.DataType.build(to.this, expressions=[exp.Literal.number(30)], nested=False)
    -374
    -375            # Check whether a conversion with format is applicable
    -376            if self._match(TokenType.COMMA):
    -377                format_val = self._parse_number()
    -378                format_val_name = format_val.name if format_val else ""
    -379
    -380                if format_val_name not in TSQL.convert_format_mapping:
    -381                    raise ValueError(
    -382                        f"CONVERT function at T-SQL does not support format style {format_val_name}"
    -383                    )
    -384
    -385                format_norm = exp.Literal.string(TSQL.convert_format_mapping[format_val_name])
    -386
    -387                # Check whether the convert entails a string to date format
    -388                if to.this == DataType.Type.DATE:
    -389                    return self.expression(exp.StrToDate, this=this, format=format_norm)
    -390                # Check whether the convert entails a string to datetime format
    -391                elif to.this == DataType.Type.DATETIME:
    -392                    return self.expression(exp.StrToTime, this=this, format=format_norm)
    -393                # Check whether the convert entails a date to string format
    -394                elif to.this in self.VAR_LENGTH_DATATYPES:
    -395                    return self.expression(
    -396                        exp.Cast if strict else exp.TryCast,
    -397                        to=to,
    -398                        this=self.expression(exp.TimeToStr, this=this, format=format_norm),
    -399                    )
    -400                elif to.this == DataType.Type.TEXT:
    -401                    return self.expression(exp.TimeToStr, this=this, format=format_norm)
    -402
    -403            # Entails a simple cast without any format requirement
    -404            return self.expression(exp.Cast if strict else exp.TryCast, this=this, to=to)
    -405
    -406        def _parse_user_defined_function(
    -407            self, kind: t.Optional[TokenType] = None
    -408        ) -> t.Optional[exp.Expression]:
    -409            this = super()._parse_user_defined_function(kind=kind)
    -410
    -411            if (
    -412                kind == TokenType.FUNCTION
    -413                or isinstance(this, exp.UserDefinedFunction)
    -414                or self._match(TokenType.ALIAS, advance=False)
    -415            ):
    -416                return this
    -417
    -418            expressions = self._parse_csv(self._parse_function_parameter)
    -419            return self.expression(exp.UserDefinedFunction, this=this, expressions=expressions)
    -420
    -421    class Generator(generator.Generator):
    -422        LOCKING_READS_SUPPORTED = True
    -423
    -424        TYPE_MAPPING = {
    -425            **generator.Generator.TYPE_MAPPING,  # type: ignore
    -426            exp.DataType.Type.INT: "INTEGER",
    -427            exp.DataType.Type.DECIMAL: "NUMERIC",
    -428            exp.DataType.Type.DATETIME: "DATETIME2",
    -429            exp.DataType.Type.VARIANT: "SQL_VARIANT",
    -430        }
    +            
    151class TSQL(Dialect):
    +152    null_ordering = "nulls_are_small"
    +153    time_format = "'yyyy-mm-dd hh:mm:ss'"
    +154
    +155    time_mapping = {
    +156        "year": "%Y",
    +157        "qq": "%q",
    +158        "q": "%q",
    +159        "quarter": "%q",
    +160        "dayofyear": "%j",
    +161        "day": "%d",
    +162        "dy": "%d",
    +163        "y": "%Y",
    +164        "week": "%W",
    +165        "ww": "%W",
    +166        "wk": "%W",
    +167        "hour": "%h",
    +168        "hh": "%I",
    +169        "minute": "%M",
    +170        "mi": "%M",
    +171        "n": "%M",
    +172        "second": "%S",
    +173        "ss": "%S",
    +174        "s": "%-S",
    +175        "millisecond": "%f",
    +176        "ms": "%f",
    +177        "weekday": "%W",
    +178        "dw": "%W",
    +179        "month": "%m",
    +180        "mm": "%M",
    +181        "m": "%-M",
    +182        "Y": "%Y",
    +183        "YYYY": "%Y",
    +184        "YY": "%y",
    +185        "MMMM": "%B",
    +186        "MMM": "%b",
    +187        "MM": "%m",
    +188        "M": "%-m",
    +189        "dd": "%d",
    +190        "d": "%-d",
    +191        "HH": "%H",
    +192        "H": "%-H",
    +193        "h": "%-I",
    +194        "S": "%f",
    +195        "yyyy": "%Y",
    +196        "yy": "%y",
    +197    }
    +198
    +199    convert_format_mapping = {
    +200        "0": "%b %d %Y %-I:%M%p",
    +201        "1": "%m/%d/%y",
    +202        "2": "%y.%m.%d",
    +203        "3": "%d/%m/%y",
    +204        "4": "%d.%m.%y",
    +205        "5": "%d-%m-%y",
    +206        "6": "%d %b %y",
    +207        "7": "%b %d, %y",
    +208        "8": "%H:%M:%S",
    +209        "9": "%b %d %Y %-I:%M:%S:%f%p",
    +210        "10": "mm-dd-yy",
    +211        "11": "yy/mm/dd",
    +212        "12": "yymmdd",
    +213        "13": "%d %b %Y %H:%M:ss:%f",
    +214        "14": "%H:%M:%S:%f",
    +215        "20": "%Y-%m-%d %H:%M:%S",
    +216        "21": "%Y-%m-%d %H:%M:%S.%f",
    +217        "22": "%m/%d/%y %-I:%M:%S %p",
    +218        "23": "%Y-%m-%d",
    +219        "24": "%H:%M:%S",
    +220        "25": "%Y-%m-%d %H:%M:%S.%f",
    +221        "100": "%b %d %Y %-I:%M%p",
    +222        "101": "%m/%d/%Y",
    +223        "102": "%Y.%m.%d",
    +224        "103": "%d/%m/%Y",
    +225        "104": "%d.%m.%Y",
    +226        "105": "%d-%m-%Y",
    +227        "106": "%d %b %Y",
    +228        "107": "%b %d, %Y",
    +229        "108": "%H:%M:%S",
    +230        "109": "%b %d %Y %-I:%M:%S:%f%p",
    +231        "110": "%m-%d-%Y",
    +232        "111": "%Y/%m/%d",
    +233        "112": "%Y%m%d",
    +234        "113": "%d %b %Y %H:%M:%S:%f",
    +235        "114": "%H:%M:%S:%f",
    +236        "120": "%Y-%m-%d %H:%M:%S",
    +237        "121": "%Y-%m-%d %H:%M:%S.%f",
    +238    }
    +239    # not sure if complete
    +240    format_time_mapping = {
    +241        "y": "%B %Y",
    +242        "d": "%m/%d/%Y",
    +243        "H": "%-H",
    +244        "h": "%-I",
    +245        "s": "%Y-%m-%d %H:%M:%S",
    +246        "D": "%A,%B,%Y",
    +247        "f": "%A,%B,%Y %-I:%M %p",
    +248        "F": "%A,%B,%Y %-I:%M:%S %p",
    +249        "g": "%m/%d/%Y %-I:%M %p",
    +250        "G": "%m/%d/%Y %-I:%M:%S %p",
    +251        "M": "%B %-d",
    +252        "m": "%B %-d",
    +253        "O": "%Y-%m-%dT%H:%M:%S",
    +254        "u": "%Y-%M-%D %H:%M:%S%z",
    +255        "U": "%A, %B %D, %Y %H:%M:%S%z",
    +256        "T": "%-I:%M:%S %p",
    +257        "t": "%-I:%M",
    +258        "Y": "%a %Y",
    +259    }
    +260
    +261    class Tokenizer(tokens.Tokenizer):
    +262        IDENTIFIERS = ['"', ("[", "]")]
    +263
    +264        QUOTES = ["'", '"']
    +265
    +266        KEYWORDS = {
    +267            **tokens.Tokenizer.KEYWORDS,
    +268            "DATETIME2": TokenType.DATETIME,
    +269            "DATETIMEOFFSET": TokenType.TIMESTAMPTZ,
    +270            "DECLARE": TokenType.COMMAND,
    +271            "IMAGE": TokenType.IMAGE,
    +272            "MONEY": TokenType.MONEY,
    +273            "NTEXT": TokenType.TEXT,
    +274            "NVARCHAR(MAX)": TokenType.TEXT,
    +275            "PRINT": TokenType.COMMAND,
    +276            "PROC": TokenType.PROCEDURE,
    +277            "REAL": TokenType.FLOAT,
    +278            "ROWVERSION": TokenType.ROWVERSION,
    +279            "SMALLDATETIME": TokenType.DATETIME,
    +280            "SMALLMONEY": TokenType.SMALLMONEY,
    +281            "SQL_VARIANT": TokenType.VARIANT,
    +282            "TIME": TokenType.TIMESTAMP,
    +283            "TOP": TokenType.TOP,
    +284            "UNIQUEIDENTIFIER": TokenType.UNIQUEIDENTIFIER,
    +285            "VARCHAR(MAX)": TokenType.TEXT,
    +286            "XML": TokenType.XML,
    +287            "SYSTEM_USER": TokenType.CURRENT_USER,
    +288        }
    +289
    +290        # TSQL allows @, # to appear as a variable/identifier prefix
    +291        SINGLE_TOKENS = tokens.Tokenizer.SINGLE_TOKENS.copy()
    +292        SINGLE_TOKENS.pop("#")
    +293
    +294    class Parser(parser.Parser):
    +295        FUNCTIONS = {
    +296            **parser.Parser.FUNCTIONS,  # type: ignore
    +297            "CHARINDEX": lambda args: exp.StrPosition(
    +298                this=seq_get(args, 1),
    +299                substr=seq_get(args, 0),
    +300                position=seq_get(args, 2),
    +301            ),
    +302            "DATEADD": parse_date_delta(exp.DateAdd, unit_mapping=DATE_DELTA_INTERVAL),
    +303            "DATEDIFF": parse_date_delta(exp.DateDiff, unit_mapping=DATE_DELTA_INTERVAL),
    +304            "DATENAME": _format_time_lambda(exp.TimeToStr, full_format_mapping=True),
    +305            "DATEPART": _format_time_lambda(exp.TimeToStr),
    +306            "EOMONTH": _parse_eomonth,
    +307            "FORMAT": _parse_format,
    +308            "GETDATE": exp.CurrentTimestamp.from_arg_list,
    +309            "HASHBYTES": _parse_hashbytes,
    +310            "IIF": exp.If.from_arg_list,
    +311            "ISNULL": exp.Coalesce.from_arg_list,
    +312            "JSON_VALUE": exp.JSONExtractScalar.from_arg_list,
    +313            "LEN": exp.Length.from_arg_list,
    +314            "REPLICATE": exp.Repeat.from_arg_list,
    +315            "SQUARE": lambda args: exp.Pow(this=seq_get(args, 0), expression=exp.Literal.number(2)),
    +316            "SYSDATETIME": exp.CurrentTimestamp.from_arg_list,
    +317            "SUSER_NAME": exp.CurrentUser.from_arg_list,
    +318            "SUSER_SNAME": exp.CurrentUser.from_arg_list,
    +319            "SYSTEM_USER": exp.CurrentUser.from_arg_list,
    +320        }
    +321
    +322        JOIN_HINTS = {
    +323            "LOOP",
    +324            "HASH",
    +325            "MERGE",
    +326            "REMOTE",
    +327        }
    +328
    +329        VAR_LENGTH_DATATYPES = {
    +330            DataType.Type.NVARCHAR,
    +331            DataType.Type.VARCHAR,
    +332            DataType.Type.CHAR,
    +333            DataType.Type.NCHAR,
    +334        }
    +335
    +336        RETURNS_TABLE_TOKENS = parser.Parser.ID_VAR_TOKENS - {  # type: ignore
    +337            TokenType.TABLE,
    +338            *parser.Parser.TYPE_TOKENS,  # type: ignore
    +339        }
    +340
    +341        STATEMENT_PARSERS = {
    +342            **parser.Parser.STATEMENT_PARSERS,  # type: ignore
    +343            TokenType.END: lambda self: self._parse_command(),
    +344        }
    +345
    +346        LOG_BASE_FIRST = False
    +347        LOG_DEFAULTS_TO_LN = True
    +348
    +349        def _parse_system_time(self) -> t.Optional[exp.Expression]:
    +350            if not self._match_text_seq("FOR", "SYSTEM_TIME"):
    +351                return None
    +352
    +353            if self._match_text_seq("AS", "OF"):
    +354                system_time = self.expression(
    +355                    exp.SystemTime, this=self._parse_bitwise(), kind="AS OF"
    +356                )
    +357            elif self._match_set((TokenType.FROM, TokenType.BETWEEN)):
    +358                kind = self._prev.text
    +359                this = self._parse_bitwise()
    +360                self._match_texts(("TO", "AND"))
    +361                expression = self._parse_bitwise()
    +362                system_time = self.expression(
    +363                    exp.SystemTime, this=this, expression=expression, kind=kind
    +364                )
    +365            elif self._match_text_seq("CONTAINED", "IN"):
    +366                args = self._parse_wrapped_csv(self._parse_bitwise)
    +367                system_time = self.expression(
    +368                    exp.SystemTime,
    +369                    this=seq_get(args, 0),
    +370                    expression=seq_get(args, 1),
    +371                    kind="CONTAINED IN",
    +372                )
    +373            elif self._match(TokenType.ALL):
    +374                system_time = self.expression(exp.SystemTime, kind="ALL")
    +375            else:
    +376                system_time = None
    +377                self.raise_error("Unable to parse FOR SYSTEM_TIME clause")
    +378
    +379            return system_time
    +380
    +381        def _parse_table_parts(self, schema: bool = False) -> exp.Expression:
    +382            table = super()._parse_table_parts(schema=schema)
    +383            table.set("system_time", self._parse_system_time())
    +384            return table
    +385
    +386        def _parse_returns(self) -> exp.Expression:
    +387            table = self._parse_id_var(any_token=False, tokens=self.RETURNS_TABLE_TOKENS)
    +388            returns = super()._parse_returns()
    +389            returns.set("table", table)
    +390            return returns
    +391
    +392        def _parse_convert(self, strict: bool) -> t.Optional[exp.Expression]:
    +393            to = self._parse_types()
    +394            self._match(TokenType.COMMA)
    +395            this = self._parse_conjunction()
    +396
    +397            if not to or not this:
    +398                return None
    +399
    +400            # Retrieve length of datatype and override to default if not specified
    +401            if seq_get(to.expressions, 0) is None and to.this in self.VAR_LENGTH_DATATYPES:
    +402                to = exp.DataType.build(to.this, expressions=[exp.Literal.number(30)], nested=False)
    +403
    +404            # Check whether a conversion with format is applicable
    +405            if self._match(TokenType.COMMA):
    +406                format_val = self._parse_number()
    +407                format_val_name = format_val.name if format_val else ""
    +408
    +409                if format_val_name not in TSQL.convert_format_mapping:
    +410                    raise ValueError(
    +411                        f"CONVERT function at T-SQL does not support format style {format_val_name}"
    +412                    )
    +413
    +414                format_norm = exp.Literal.string(TSQL.convert_format_mapping[format_val_name])
    +415
    +416                # Check whether the convert entails a string to date format
    +417                if to.this == DataType.Type.DATE:
    +418                    return self.expression(exp.StrToDate, this=this, format=format_norm)
    +419                # Check whether the convert entails a string to datetime format
    +420                elif to.this == DataType.Type.DATETIME:
    +421                    return self.expression(exp.StrToTime, this=this, format=format_norm)
    +422                # Check whether the convert entails a date to string format
    +423                elif to.this in self.VAR_LENGTH_DATATYPES:
    +424                    return self.expression(
    +425                        exp.Cast if strict else exp.TryCast,
    +426                        to=to,
    +427                        this=self.expression(exp.TimeToStr, this=this, format=format_norm),
    +428                    )
    +429                elif to.this == DataType.Type.TEXT:
    +430                    return self.expression(exp.TimeToStr, this=this, format=format_norm)
     431
    -432        TRANSFORMS = {
    -433            **generator.Generator.TRANSFORMS,  # type: ignore
    -434            exp.DateAdd: generate_date_delta_with_unit_sql,
    -435            exp.DateDiff: generate_date_delta_with_unit_sql,
    -436            exp.CurrentDate: rename_func("GETDATE"),
    -437            exp.CurrentTimestamp: rename_func("GETDATE"),
    -438            exp.If: rename_func("IIF"),
    -439            exp.NumberToStr: _format_sql,
    -440            exp.TimeToStr: _format_sql,
    -441            exp.GroupConcat: _string_agg_sql,
    -442            exp.Max: max_or_greatest,
    -443            exp.Min: min_or_least,
    -444        }
    -445
    -446        TRANSFORMS.pop(exp.ReturnsProperty)
    -447
    -448        LIMIT_FETCH = "FETCH"
    +432            # Entails a simple cast without any format requirement
    +433            return self.expression(exp.Cast if strict else exp.TryCast, this=this, to=to)
    +434
    +435        def _parse_user_defined_function(
    +436            self, kind: t.Optional[TokenType] = None
    +437        ) -> t.Optional[exp.Expression]:
    +438            this = super()._parse_user_defined_function(kind=kind)
    +439
    +440            if (
    +441                kind == TokenType.FUNCTION
    +442                or isinstance(this, exp.UserDefinedFunction)
    +443                or self._match(TokenType.ALIAS, advance=False)
    +444            ):
    +445                return this
    +446
    +447            expressions = self._parse_csv(self._parse_function_parameter)
    +448            return self.expression(exp.UserDefinedFunction, this=this, expressions=expressions)
     449
    -450        def offset_sql(self, expression: exp.Offset) -> str:
    -451            return f"{super().offset_sql(expression)} ROWS"
    +450    class Generator(generator.Generator):
    +451        LOCKING_READS_SUPPORTED = True
     452
    -453        def systemtime_sql(self, expression: exp.SystemTime) -> str:
    -454            kind = expression.args["kind"]
    -455            if kind == "ALL":
    -456                return "FOR SYSTEM_TIME ALL"
    -457
    -458            start = self.sql(expression, "this")
    -459            if kind == "AS OF":
    -460                return f"FOR SYSTEM_TIME AS OF {start}"
    -461
    -462            end = self.sql(expression, "expression")
    -463            if kind == "FROM":
    -464                return f"FOR SYSTEM_TIME FROM {start} TO {end}"
    -465            if kind == "BETWEEN":
    -466                return f"FOR SYSTEM_TIME BETWEEN {start} AND {end}"
    -467
    -468            return f"FOR SYSTEM_TIME CONTAINED IN ({start}, {end})"
    -469
    -470        def returnsproperty_sql(self, expression: exp.ReturnsProperty) -> str:
    -471            table = expression.args.get("table")
    -472            table = f"{table} " if table else ""
    -473            return f"RETURNS {table}{self.sql(expression, 'this')}"
    +453        TYPE_MAPPING = {
    +454            **generator.Generator.TYPE_MAPPING,  # type: ignore
    +455            exp.DataType.Type.INT: "INTEGER",
    +456            exp.DataType.Type.DECIMAL: "NUMERIC",
    +457            exp.DataType.Type.DATETIME: "DATETIME2",
    +458            exp.DataType.Type.VARIANT: "SQL_VARIANT",
    +459        }
    +460
    +461        TRANSFORMS = {
    +462            **generator.Generator.TRANSFORMS,  # type: ignore
    +463            exp.DateAdd: generate_date_delta_with_unit_sql,
    +464            exp.DateDiff: generate_date_delta_with_unit_sql,
    +465            exp.CurrentDate: rename_func("GETDATE"),
    +466            exp.CurrentTimestamp: rename_func("GETDATE"),
    +467            exp.If: rename_func("IIF"),
    +468            exp.NumberToStr: _format_sql,
    +469            exp.TimeToStr: _format_sql,
    +470            exp.GroupConcat: _string_agg_sql,
    +471            exp.Max: max_or_greatest,
    +472            exp.MD5: lambda self, e: self.func("HASHBYTES", exp.Literal.string("MD5"), e.this),
    +473            exp.Min: min_or_least,
    +474            exp.SHA: lambda self, e: self.func("HASHBYTES", exp.Literal.string("SHA1"), e.this),
    +475            exp.SHA2: lambda self, e: self.func(
    +476                "HASHBYTES", exp.Literal.string(f"SHA2_{e.args.get('length', 256)}"), e.this
    +477            ),
    +478        }
    +479
    +480        TRANSFORMS.pop(exp.ReturnsProperty)
    +481
    +482        PROPERTIES_LOCATION = {
    +483            **generator.Generator.PROPERTIES_LOCATION,  # type: ignore
    +484            exp.VolatileProperty: exp.Properties.Location.UNSUPPORTED,
    +485        }
    +486
    +487        LIMIT_FETCH = "FETCH"
    +488
    +489        def offset_sql(self, expression: exp.Offset) -> str:
    +490            return f"{super().offset_sql(expression)} ROWS"
    +491
    +492        def systemtime_sql(self, expression: exp.SystemTime) -> str:
    +493            kind = expression.args["kind"]
    +494            if kind == "ALL":
    +495                return "FOR SYSTEM_TIME ALL"
    +496
    +497            start = self.sql(expression, "this")
    +498            if kind == "AS OF":
    +499                return f"FOR SYSTEM_TIME AS OF {start}"
    +500
    +501            end = self.sql(expression, "expression")
    +502            if kind == "FROM":
    +503                return f"FOR SYSTEM_TIME FROM {start} TO {end}"
    +504            if kind == "BETWEEN":
    +505                return f"FOR SYSTEM_TIME BETWEEN {start} AND {end}"
    +506
    +507            return f"FOR SYSTEM_TIME CONTAINED IN ({start}, {end})"
    +508
    +509        def returnsproperty_sql(self, expression: exp.ReturnsProperty) -> str:
    +510            table = expression.args.get("table")
    +511            table = f"{table} " if table else ""
    +512            return f"RETURNS {table}{self.sql(expression, 'this')}"
     
    @@ -970,37 +1031,38 @@
    -
    244    class Tokenizer(tokens.Tokenizer):
    -245        IDENTIFIERS = ['"', ("[", "]")]
    -246
    -247        QUOTES = ["'", '"']
    -248
    -249        KEYWORDS = {
    -250            **tokens.Tokenizer.KEYWORDS,
    -251            "DATETIME2": TokenType.DATETIME,
    -252            "DATETIMEOFFSET": TokenType.TIMESTAMPTZ,
    -253            "DECLARE": TokenType.COMMAND,
    -254            "IMAGE": TokenType.IMAGE,
    -255            "MONEY": TokenType.MONEY,
    -256            "NTEXT": TokenType.TEXT,
    -257            "NVARCHAR(MAX)": TokenType.TEXT,
    -258            "PRINT": TokenType.COMMAND,
    -259            "PROC": TokenType.PROCEDURE,
    -260            "REAL": TokenType.FLOAT,
    -261            "ROWVERSION": TokenType.ROWVERSION,
    -262            "SMALLDATETIME": TokenType.DATETIME,
    -263            "SMALLMONEY": TokenType.SMALLMONEY,
    -264            "SQL_VARIANT": TokenType.VARIANT,
    -265            "TIME": TokenType.TIMESTAMP,
    -266            "TOP": TokenType.TOP,
    -267            "UNIQUEIDENTIFIER": TokenType.UNIQUEIDENTIFIER,
    -268            "VARCHAR(MAX)": TokenType.TEXT,
    -269            "XML": TokenType.XML,
    -270        }
    -271
    -272        # TSQL allows @, # to appear as a variable/identifier prefix
    -273        SINGLE_TOKENS = tokens.Tokenizer.SINGLE_TOKENS.copy()
    -274        SINGLE_TOKENS.pop("#")
    +            
    261    class Tokenizer(tokens.Tokenizer):
    +262        IDENTIFIERS = ['"', ("[", "]")]
    +263
    +264        QUOTES = ["'", '"']
    +265
    +266        KEYWORDS = {
    +267            **tokens.Tokenizer.KEYWORDS,
    +268            "DATETIME2": TokenType.DATETIME,
    +269            "DATETIMEOFFSET": TokenType.TIMESTAMPTZ,
    +270            "DECLARE": TokenType.COMMAND,
    +271            "IMAGE": TokenType.IMAGE,
    +272            "MONEY": TokenType.MONEY,
    +273            "NTEXT": TokenType.TEXT,
    +274            "NVARCHAR(MAX)": TokenType.TEXT,
    +275            "PRINT": TokenType.COMMAND,
    +276            "PROC": TokenType.PROCEDURE,
    +277            "REAL": TokenType.FLOAT,
    +278            "ROWVERSION": TokenType.ROWVERSION,
    +279            "SMALLDATETIME": TokenType.DATETIME,
    +280            "SMALLMONEY": TokenType.SMALLMONEY,
    +281            "SQL_VARIANT": TokenType.VARIANT,
    +282            "TIME": TokenType.TIMESTAMP,
    +283            "TOP": TokenType.TOP,
    +284            "UNIQUEIDENTIFIER": TokenType.UNIQUEIDENTIFIER,
    +285            "VARCHAR(MAX)": TokenType.TEXT,
    +286            "XML": TokenType.XML,
    +287            "SYSTEM_USER": TokenType.CURRENT_USER,
    +288        }
    +289
    +290        # TSQL allows @, # to appear as a variable/identifier prefix
    +291        SINGLE_TOKENS = tokens.Tokenizer.SINGLE_TOKENS.copy()
    +292        SINGLE_TOKENS.pop("#")
     
    @@ -1028,150 +1090,161 @@
    -
    276    class Parser(parser.Parser):
    -277        FUNCTIONS = {
    -278            **parser.Parser.FUNCTIONS,  # type: ignore
    -279            "CHARINDEX": lambda args: exp.StrPosition(
    -280                this=seq_get(args, 1),
    -281                substr=seq_get(args, 0),
    -282                position=seq_get(args, 2),
    -283            ),
    -284            "DATEADD": parse_date_delta(exp.DateAdd, unit_mapping=DATE_DELTA_INTERVAL),
    -285            "DATEDIFF": parse_date_delta(exp.DateDiff, unit_mapping=DATE_DELTA_INTERVAL),
    -286            "DATENAME": _format_time_lambda(exp.TimeToStr, full_format_mapping=True),
    -287            "DATEPART": _format_time_lambda(exp.TimeToStr),
    -288            "EOMONTH": _parse_eomonth,
    -289            "FORMAT": _parse_format,
    -290            "GETDATE": exp.CurrentTimestamp.from_arg_list,
    -291            "IIF": exp.If.from_arg_list,
    -292            "ISNULL": exp.Coalesce.from_arg_list,
    -293            "JSON_VALUE": exp.JSONExtractScalar.from_arg_list,
    -294            "LEN": exp.Length.from_arg_list,
    -295            "REPLICATE": exp.Repeat.from_arg_list,
    -296            "SQUARE": lambda args: exp.Pow(this=seq_get(args, 0), expression=exp.Literal.number(2)),
    -297            "SYSDATETIME": exp.CurrentTimestamp.from_arg_list,
    -298        }
    -299
    -300        VAR_LENGTH_DATATYPES = {
    -301            DataType.Type.NVARCHAR,
    -302            DataType.Type.VARCHAR,
    -303            DataType.Type.CHAR,
    -304            DataType.Type.NCHAR,
    -305        }
    -306
    -307        RETURNS_TABLE_TOKENS = parser.Parser.ID_VAR_TOKENS - {  # type: ignore
    -308            TokenType.TABLE,
    -309            *parser.Parser.TYPE_TOKENS,  # type: ignore
    -310        }
    -311
    -312        STATEMENT_PARSERS = {
    -313            **parser.Parser.STATEMENT_PARSERS,  # type: ignore
    -314            TokenType.END: lambda self: self._parse_command(),
    -315        }
    -316
    -317        LOG_BASE_FIRST = False
    -318        LOG_DEFAULTS_TO_LN = True
    -319
    -320        def _parse_system_time(self) -> t.Optional[exp.Expression]:
    -321            if not self._match_text_seq("FOR", "SYSTEM_TIME"):
    -322                return None
    -323
    -324            if self._match_text_seq("AS", "OF"):
    -325                system_time = self.expression(
    -326                    exp.SystemTime, this=self._parse_bitwise(), kind="AS OF"
    -327                )
    -328            elif self._match_set((TokenType.FROM, TokenType.BETWEEN)):
    -329                kind = self._prev.text
    -330                this = self._parse_bitwise()
    -331                self._match_texts(("TO", "AND"))
    -332                expression = self._parse_bitwise()
    -333                system_time = self.expression(
    -334                    exp.SystemTime, this=this, expression=expression, kind=kind
    -335                )
    -336            elif self._match_text_seq("CONTAINED", "IN"):
    -337                args = self._parse_wrapped_csv(self._parse_bitwise)
    -338                system_time = self.expression(
    -339                    exp.SystemTime,
    -340                    this=seq_get(args, 0),
    -341                    expression=seq_get(args, 1),
    -342                    kind="CONTAINED IN",
    -343                )
    -344            elif self._match(TokenType.ALL):
    -345                system_time = self.expression(exp.SystemTime, kind="ALL")
    -346            else:
    -347                system_time = None
    -348                self.raise_error("Unable to parse FOR SYSTEM_TIME clause")
    -349
    -350            return system_time
    -351
    -352        def _parse_table_parts(self, schema: bool = False) -> exp.Expression:
    -353            table = super()._parse_table_parts(schema=schema)
    -354            table.set("system_time", self._parse_system_time())
    -355            return table
    -356
    -357        def _parse_returns(self) -> exp.Expression:
    -358            table = self._parse_id_var(any_token=False, tokens=self.RETURNS_TABLE_TOKENS)
    -359            returns = super()._parse_returns()
    -360            returns.set("table", table)
    -361            return returns
    -362
    -363        def _parse_convert(self, strict: bool) -> t.Optional[exp.Expression]:
    -364            to = self._parse_types()
    -365            self._match(TokenType.COMMA)
    -366            this = self._parse_conjunction()
    -367
    -368            if not to or not this:
    -369                return None
    -370
    -371            # Retrieve length of datatype and override to default if not specified
    -372            if seq_get(to.expressions, 0) is None and to.this in self.VAR_LENGTH_DATATYPES:
    -373                to = exp.DataType.build(to.this, expressions=[exp.Literal.number(30)], nested=False)
    -374
    -375            # Check whether a conversion with format is applicable
    -376            if self._match(TokenType.COMMA):
    -377                format_val = self._parse_number()
    -378                format_val_name = format_val.name if format_val else ""
    -379
    -380                if format_val_name not in TSQL.convert_format_mapping:
    -381                    raise ValueError(
    -382                        f"CONVERT function at T-SQL does not support format style {format_val_name}"
    -383                    )
    -384
    -385                format_norm = exp.Literal.string(TSQL.convert_format_mapping[format_val_name])
    -386
    -387                # Check whether the convert entails a string to date format
    -388                if to.this == DataType.Type.DATE:
    -389                    return self.expression(exp.StrToDate, this=this, format=format_norm)
    -390                # Check whether the convert entails a string to datetime format
    -391                elif to.this == DataType.Type.DATETIME:
    -392                    return self.expression(exp.StrToTime, this=this, format=format_norm)
    -393                # Check whether the convert entails a date to string format
    -394                elif to.this in self.VAR_LENGTH_DATATYPES:
    -395                    return self.expression(
    -396                        exp.Cast if strict else exp.TryCast,
    -397                        to=to,
    -398                        this=self.expression(exp.TimeToStr, this=this, format=format_norm),
    -399                    )
    -400                elif to.this == DataType.Type.TEXT:
    -401                    return self.expression(exp.TimeToStr, this=this, format=format_norm)
    -402
    -403            # Entails a simple cast without any format requirement
    -404            return self.expression(exp.Cast if strict else exp.TryCast, this=this, to=to)
    -405
    -406        def _parse_user_defined_function(
    -407            self, kind: t.Optional[TokenType] = None
    -408        ) -> t.Optional[exp.Expression]:
    -409            this = super()._parse_user_defined_function(kind=kind)
    -410
    -411            if (
    -412                kind == TokenType.FUNCTION
    -413                or isinstance(this, exp.UserDefinedFunction)
    -414                or self._match(TokenType.ALIAS, advance=False)
    -415            ):
    -416                return this
    -417
    -418            expressions = self._parse_csv(self._parse_function_parameter)
    -419            return self.expression(exp.UserDefinedFunction, this=this, expressions=expressions)
    +            
    294    class Parser(parser.Parser):
    +295        FUNCTIONS = {
    +296            **parser.Parser.FUNCTIONS,  # type: ignore
    +297            "CHARINDEX": lambda args: exp.StrPosition(
    +298                this=seq_get(args, 1),
    +299                substr=seq_get(args, 0),
    +300                position=seq_get(args, 2),
    +301            ),
    +302            "DATEADD": parse_date_delta(exp.DateAdd, unit_mapping=DATE_DELTA_INTERVAL),
    +303            "DATEDIFF": parse_date_delta(exp.DateDiff, unit_mapping=DATE_DELTA_INTERVAL),
    +304            "DATENAME": _format_time_lambda(exp.TimeToStr, full_format_mapping=True),
    +305            "DATEPART": _format_time_lambda(exp.TimeToStr),
    +306            "EOMONTH": _parse_eomonth,
    +307            "FORMAT": _parse_format,
    +308            "GETDATE": exp.CurrentTimestamp.from_arg_list,
    +309            "HASHBYTES": _parse_hashbytes,
    +310            "IIF": exp.If.from_arg_list,
    +311            "ISNULL": exp.Coalesce.from_arg_list,
    +312            "JSON_VALUE": exp.JSONExtractScalar.from_arg_list,
    +313            "LEN": exp.Length.from_arg_list,
    +314            "REPLICATE": exp.Repeat.from_arg_list,
    +315            "SQUARE": lambda args: exp.Pow(this=seq_get(args, 0), expression=exp.Literal.number(2)),
    +316            "SYSDATETIME": exp.CurrentTimestamp.from_arg_list,
    +317            "SUSER_NAME": exp.CurrentUser.from_arg_list,
    +318            "SUSER_SNAME": exp.CurrentUser.from_arg_list,
    +319            "SYSTEM_USER": exp.CurrentUser.from_arg_list,
    +320        }
    +321
    +322        JOIN_HINTS = {
    +323            "LOOP",
    +324            "HASH",
    +325            "MERGE",
    +326            "REMOTE",
    +327        }
    +328
    +329        VAR_LENGTH_DATATYPES = {
    +330            DataType.Type.NVARCHAR,
    +331            DataType.Type.VARCHAR,
    +332            DataType.Type.CHAR,
    +333            DataType.Type.NCHAR,
    +334        }
    +335
    +336        RETURNS_TABLE_TOKENS = parser.Parser.ID_VAR_TOKENS - {  # type: ignore
    +337            TokenType.TABLE,
    +338            *parser.Parser.TYPE_TOKENS,  # type: ignore
    +339        }
    +340
    +341        STATEMENT_PARSERS = {
    +342            **parser.Parser.STATEMENT_PARSERS,  # type: ignore
    +343            TokenType.END: lambda self: self._parse_command(),
    +344        }
    +345
    +346        LOG_BASE_FIRST = False
    +347        LOG_DEFAULTS_TO_LN = True
    +348
    +349        def _parse_system_time(self) -> t.Optional[exp.Expression]:
    +350            if not self._match_text_seq("FOR", "SYSTEM_TIME"):
    +351                return None
    +352
    +353            if self._match_text_seq("AS", "OF"):
    +354                system_time = self.expression(
    +355                    exp.SystemTime, this=self._parse_bitwise(), kind="AS OF"
    +356                )
    +357            elif self._match_set((TokenType.FROM, TokenType.BETWEEN)):
    +358                kind = self._prev.text
    +359                this = self._parse_bitwise()
    +360                self._match_texts(("TO", "AND"))
    +361                expression = self._parse_bitwise()
    +362                system_time = self.expression(
    +363                    exp.SystemTime, this=this, expression=expression, kind=kind
    +364                )
    +365            elif self._match_text_seq("CONTAINED", "IN"):
    +366                args = self._parse_wrapped_csv(self._parse_bitwise)
    +367                system_time = self.expression(
    +368                    exp.SystemTime,
    +369                    this=seq_get(args, 0),
    +370                    expression=seq_get(args, 1),
    +371                    kind="CONTAINED IN",
    +372                )
    +373            elif self._match(TokenType.ALL):
    +374                system_time = self.expression(exp.SystemTime, kind="ALL")
    +375            else:
    +376                system_time = None
    +377                self.raise_error("Unable to parse FOR SYSTEM_TIME clause")
    +378
    +379            return system_time
    +380
    +381        def _parse_table_parts(self, schema: bool = False) -> exp.Expression:
    +382            table = super()._parse_table_parts(schema=schema)
    +383            table.set("system_time", self._parse_system_time())
    +384            return table
    +385
    +386        def _parse_returns(self) -> exp.Expression:
    +387            table = self._parse_id_var(any_token=False, tokens=self.RETURNS_TABLE_TOKENS)
    +388            returns = super()._parse_returns()
    +389            returns.set("table", table)
    +390            return returns
    +391
    +392        def _parse_convert(self, strict: bool) -> t.Optional[exp.Expression]:
    +393            to = self._parse_types()
    +394            self._match(TokenType.COMMA)
    +395            this = self._parse_conjunction()
    +396
    +397            if not to or not this:
    +398                return None
    +399
    +400            # Retrieve length of datatype and override to default if not specified
    +401            if seq_get(to.expressions, 0) is None and to.this in self.VAR_LENGTH_DATATYPES:
    +402                to = exp.DataType.build(to.this, expressions=[exp.Literal.number(30)], nested=False)
    +403
    +404            # Check whether a conversion with format is applicable
    +405            if self._match(TokenType.COMMA):
    +406                format_val = self._parse_number()
    +407                format_val_name = format_val.name if format_val else ""
    +408
    +409                if format_val_name not in TSQL.convert_format_mapping:
    +410                    raise ValueError(
    +411                        f"CONVERT function at T-SQL does not support format style {format_val_name}"
    +412                    )
    +413
    +414                format_norm = exp.Literal.string(TSQL.convert_format_mapping[format_val_name])
    +415
    +416                # Check whether the convert entails a string to date format
    +417                if to.this == DataType.Type.DATE:
    +418                    return self.expression(exp.StrToDate, this=this, format=format_norm)
    +419                # Check whether the convert entails a string to datetime format
    +420                elif to.this == DataType.Type.DATETIME:
    +421                    return self.expression(exp.StrToTime, this=this, format=format_norm)
    +422                # Check whether the convert entails a date to string format
    +423                elif to.this in self.VAR_LENGTH_DATATYPES:
    +424                    return self.expression(
    +425                        exp.Cast if strict else exp.TryCast,
    +426                        to=to,
    +427                        this=self.expression(exp.TimeToStr, this=this, format=format_norm),
    +428                    )
    +429                elif to.this == DataType.Type.TEXT:
    +430                    return self.expression(exp.TimeToStr, this=this, format=format_norm)
    +431
    +432            # Entails a simple cast without any format requirement
    +433            return self.expression(exp.Cast if strict else exp.TryCast, this=this, to=to)
    +434
    +435        def _parse_user_defined_function(
    +436            self, kind: t.Optional[TokenType] = None
    +437        ) -> t.Optional[exp.Expression]:
    +438            this = super()._parse_user_defined_function(kind=kind)
    +439
    +440            if (
    +441                kind == TokenType.FUNCTION
    +442                or isinstance(this, exp.UserDefinedFunction)
    +443                or self._match(TokenType.ALIAS, advance=False)
    +444            ):
    +445                return this
    +446
    +447            expressions = self._parse_csv(self._parse_function_parameter)
    +448            return self.expression(exp.UserDefinedFunction, this=this, expressions=expressions)
     
    @@ -1228,59 +1301,69 @@ Default: "nulls_are_small"
    -
    421    class Generator(generator.Generator):
    -422        LOCKING_READS_SUPPORTED = True
    -423
    -424        TYPE_MAPPING = {
    -425            **generator.Generator.TYPE_MAPPING,  # type: ignore
    -426            exp.DataType.Type.INT: "INTEGER",
    -427            exp.DataType.Type.DECIMAL: "NUMERIC",
    -428            exp.DataType.Type.DATETIME: "DATETIME2",
    -429            exp.DataType.Type.VARIANT: "SQL_VARIANT",
    -430        }
    -431
    -432        TRANSFORMS = {
    -433            **generator.Generator.TRANSFORMS,  # type: ignore
    -434            exp.DateAdd: generate_date_delta_with_unit_sql,
    -435            exp.DateDiff: generate_date_delta_with_unit_sql,
    -436            exp.CurrentDate: rename_func("GETDATE"),
    -437            exp.CurrentTimestamp: rename_func("GETDATE"),
    -438            exp.If: rename_func("IIF"),
    -439            exp.NumberToStr: _format_sql,
    -440            exp.TimeToStr: _format_sql,
    -441            exp.GroupConcat: _string_agg_sql,
    -442            exp.Max: max_or_greatest,
    -443            exp.Min: min_or_least,
    -444        }
    -445
    -446        TRANSFORMS.pop(exp.ReturnsProperty)
    -447
    -448        LIMIT_FETCH = "FETCH"
    -449
    -450        def offset_sql(self, expression: exp.Offset) -> str:
    -451            return f"{super().offset_sql(expression)} ROWS"
    +            
    450    class Generator(generator.Generator):
    +451        LOCKING_READS_SUPPORTED = True
     452
    -453        def systemtime_sql(self, expression: exp.SystemTime) -> str:
    -454            kind = expression.args["kind"]
    -455            if kind == "ALL":
    -456                return "FOR SYSTEM_TIME ALL"
    -457
    -458            start = self.sql(expression, "this")
    -459            if kind == "AS OF":
    -460                return f"FOR SYSTEM_TIME AS OF {start}"
    -461
    -462            end = self.sql(expression, "expression")
    -463            if kind == "FROM":
    -464                return f"FOR SYSTEM_TIME FROM {start} TO {end}"
    -465            if kind == "BETWEEN":
    -466                return f"FOR SYSTEM_TIME BETWEEN {start} AND {end}"
    -467
    -468            return f"FOR SYSTEM_TIME CONTAINED IN ({start}, {end})"
    -469
    -470        def returnsproperty_sql(self, expression: exp.ReturnsProperty) -> str:
    -471            table = expression.args.get("table")
    -472            table = f"{table} " if table else ""
    -473            return f"RETURNS {table}{self.sql(expression, 'this')}"
    +453        TYPE_MAPPING = {
    +454            **generator.Generator.TYPE_MAPPING,  # type: ignore
    +455            exp.DataType.Type.INT: "INTEGER",
    +456            exp.DataType.Type.DECIMAL: "NUMERIC",
    +457            exp.DataType.Type.DATETIME: "DATETIME2",
    +458            exp.DataType.Type.VARIANT: "SQL_VARIANT",
    +459        }
    +460
    +461        TRANSFORMS = {
    +462            **generator.Generator.TRANSFORMS,  # type: ignore
    +463            exp.DateAdd: generate_date_delta_with_unit_sql,
    +464            exp.DateDiff: generate_date_delta_with_unit_sql,
    +465            exp.CurrentDate: rename_func("GETDATE"),
    +466            exp.CurrentTimestamp: rename_func("GETDATE"),
    +467            exp.If: rename_func("IIF"),
    +468            exp.NumberToStr: _format_sql,
    +469            exp.TimeToStr: _format_sql,
    +470            exp.GroupConcat: _string_agg_sql,
    +471            exp.Max: max_or_greatest,
    +472            exp.MD5: lambda self, e: self.func("HASHBYTES", exp.Literal.string("MD5"), e.this),
    +473            exp.Min: min_or_least,
    +474            exp.SHA: lambda self, e: self.func("HASHBYTES", exp.Literal.string("SHA1"), e.this),
    +475            exp.SHA2: lambda self, e: self.func(
    +476                "HASHBYTES", exp.Literal.string(f"SHA2_{e.args.get('length', 256)}"), e.this
    +477            ),
    +478        }
    +479
    +480        TRANSFORMS.pop(exp.ReturnsProperty)
    +481
    +482        PROPERTIES_LOCATION = {
    +483            **generator.Generator.PROPERTIES_LOCATION,  # type: ignore
    +484            exp.VolatileProperty: exp.Properties.Location.UNSUPPORTED,
    +485        }
    +486
    +487        LIMIT_FETCH = "FETCH"
    +488
    +489        def offset_sql(self, expression: exp.Offset) -> str:
    +490            return f"{super().offset_sql(expression)} ROWS"
    +491
    +492        def systemtime_sql(self, expression: exp.SystemTime) -> str:
    +493            kind = expression.args["kind"]
    +494            if kind == "ALL":
    +495                return "FOR SYSTEM_TIME ALL"
    +496
    +497            start = self.sql(expression, "this")
    +498            if kind == "AS OF":
    +499                return f"FOR SYSTEM_TIME AS OF {start}"
    +500
    +501            end = self.sql(expression, "expression")
    +502            if kind == "FROM":
    +503                return f"FOR SYSTEM_TIME FROM {start} TO {end}"
    +504            if kind == "BETWEEN":
    +505                return f"FOR SYSTEM_TIME BETWEEN {start} AND {end}"
    +506
    +507            return f"FOR SYSTEM_TIME CONTAINED IN ({start}, {end})"
    +508
    +509        def returnsproperty_sql(self, expression: exp.ReturnsProperty) -> str:
    +510            table = expression.args.get("table")
    +511            table = f"{table} " if table else ""
    +512            return f"RETURNS {table}{self.sql(expression, 'this')}"
     
    @@ -1339,8 +1422,8 @@ Default: True
    -
    450        def offset_sql(self, expression: exp.Offset) -> str:
    -451            return f"{super().offset_sql(expression)} ROWS"
    +            
    489        def offset_sql(self, expression: exp.Offset) -> str:
    +490            return f"{super().offset_sql(expression)} ROWS"
     
    @@ -1358,22 +1441,22 @@ Default: True
    -
    453        def systemtime_sql(self, expression: exp.SystemTime) -> str:
    -454            kind = expression.args["kind"]
    -455            if kind == "ALL":
    -456                return "FOR SYSTEM_TIME ALL"
    -457
    -458            start = self.sql(expression, "this")
    -459            if kind == "AS OF":
    -460                return f"FOR SYSTEM_TIME AS OF {start}"
    -461
    -462            end = self.sql(expression, "expression")
    -463            if kind == "FROM":
    -464                return f"FOR SYSTEM_TIME FROM {start} TO {end}"
    -465            if kind == "BETWEEN":
    -466                return f"FOR SYSTEM_TIME BETWEEN {start} AND {end}"
    -467
    -468            return f"FOR SYSTEM_TIME CONTAINED IN ({start}, {end})"
    +            
    492        def systemtime_sql(self, expression: exp.SystemTime) -> str:
    +493            kind = expression.args["kind"]
    +494            if kind == "ALL":
    +495                return "FOR SYSTEM_TIME ALL"
    +496
    +497            start = self.sql(expression, "this")
    +498            if kind == "AS OF":
    +499                return f"FOR SYSTEM_TIME AS OF {start}"
    +500
    +501            end = self.sql(expression, "expression")
    +502            if kind == "FROM":
    +503                return f"FOR SYSTEM_TIME FROM {start} TO {end}"
    +504            if kind == "BETWEEN":
    +505                return f"FOR SYSTEM_TIME BETWEEN {start} AND {end}"
    +506
    +507            return f"FOR SYSTEM_TIME CONTAINED IN ({start}, {end})"
     
    @@ -1391,10 +1474,10 @@ Default: True
    -
    470        def returnsproperty_sql(self, expression: exp.ReturnsProperty) -> str:
    -471            table = expression.args.get("table")
    -472            table = f"{table} " if table else ""
    -473            return f"RETURNS {table}{self.sql(expression, 'this')}"
    +            
    509        def returnsproperty_sql(self, expression: exp.ReturnsProperty) -> str:
    +510            table = expression.args.get("table")
    +511            table = f"{table} " if table else ""
    +512            return f"RETURNS {table}{self.sql(expression, 'this')}"
     
    @@ -1438,6 +1521,7 @@ Default: True
    tablealias_sql
    bitstring_sql
    hexstring_sql
    +
    bytestring_sql
    datatype_sql
    directory_sql
    delete_sql
    @@ -1449,6 +1533,7 @@ Default: True
    hint_sql
    index_sql
    identifier_sql
    +
    inputoutputformat_sql
    national_sql
    partition_sql
    properties_sql
    @@ -1474,6 +1559,7 @@ Default: True
    intersect_op
    introducer_sql
    pseudotype_sql
    +
    onconflict_sql
    returning_sql
    rowformatdelimitedproperty_sql
    table_sql
    diff --git a/docs/sqlglot/diff.html b/docs/sqlglot/diff.html index e1f3077..78d8396 100644 --- a/docs/sqlglot/diff.html +++ b/docs/sqlglot/diff.html @@ -3,7 +3,7 @@ - + sqlglot.diff API documentation diff --git a/docs/sqlglot/errors.html b/docs/sqlglot/errors.html index 2808c38..21b3d90 100644 --- a/docs/sqlglot/errors.html +++ b/docs/sqlglot/errors.html @@ -3,7 +3,7 @@ - + sqlglot.errors API documentation diff --git a/docs/sqlglot/executor.html b/docs/sqlglot/executor.html index a1e117c..fa13fd5 100644 --- a/docs/sqlglot/executor.html +++ b/docs/sqlglot/executor.html @@ -3,7 +3,7 @@ - + sqlglot.executor API documentation @@ -320,7 +320,7 @@

    Get in touch

    -

    If you'd like to chat more about SQLGlot, please join my Slack Channel!

    +

    If you'd like to chat more about SQLGlot, please join my Slack Channel!


    diff --git a/docs/sqlglot/executor/context.html b/docs/sqlglot/executor/context.html index 26e8ba8..6d45f9a 100644 --- a/docs/sqlglot/executor/context.html +++ b/docs/sqlglot/executor/context.html @@ -3,7 +3,7 @@ - + sqlglot.executor.context API documentation diff --git a/docs/sqlglot/executor/env.html b/docs/sqlglot/executor/env.html index eed261e..a7ae695 100644 --- a/docs/sqlglot/executor/env.html +++ b/docs/sqlglot/executor/env.html @@ -3,7 +3,7 @@ - + sqlglot.executor.env API documentation @@ -127,7 +127,7 @@ 42 In which case all arguments are required. 43 """ 44 f = None - 45 if len(required) == 1 and callable(required[0]): + 45 if len(required) == 1 and callable(required[0]): 46 f = required[0] 47 required = () 48 @@ -258,7 +258,14 @@ 173 "SUBSTRING": substring, 174 "TIMESTRTOTIME": null_if_any(lambda arg: datetime.datetime.fromisoformat(arg)), 175 "UPPER": null_if_any(lambda arg: arg.upper()), -176} +176 "YEAR": null_if_any(lambda arg: arg.year), +177 "MONTH": null_if_any(lambda arg: arg.month), +178 "DAY": null_if_any(lambda arg: arg.day), +179 "CURRENTDATETIME": datetime.datetime.now, +180 "CURRENTTIMESTAMP": datetime.datetime.now, +181 "CURRENTTIME": datetime.datetime.now, +182 "CURRENTDATE": datetime.date.today, +183} @@ -356,7 +363,7 @@ 43 In which case all arguments are required. 44 """ 45 f = None -46 if len(required) == 1 and callable(required[0]): +46 if len(required) == 1 and callable(required[0]): 47 f = required[0] 48 required = () 49 diff --git a/docs/sqlglot/executor/python.html b/docs/sqlglot/executor/python.html index 9f3c506..176df2e 100644 --- a/docs/sqlglot/executor/python.html +++ b/docs/sqlglot/executor/python.html @@ -3,7 +3,7 @@ - + sqlglot.executor.python API documentation @@ -1691,6 +1691,7 @@ Default: True
    tablealias_sql
    bitstring_sql
    hexstring_sql
    +
    bytestring_sql
    datatype_sql
    directory_sql
    delete_sql
    @@ -1702,6 +1703,7 @@ Default: True
    hint_sql
    index_sql
    identifier_sql
    +
    inputoutputformat_sql
    national_sql
    partition_sql
    properties_sql
    @@ -1727,6 +1729,7 @@ Default: True
    intersect_op
    introducer_sql
    pseudotype_sql
    +
    onconflict_sql
    returning_sql
    rowformatdelimitedproperty_sql
    table_sql
    diff --git a/docs/sqlglot/executor/table.html b/docs/sqlglot/executor/table.html index 38ad2df..cfc45c0 100644 --- a/docs/sqlglot/executor/table.html +++ b/docs/sqlglot/executor/table.html @@ -3,7 +3,7 @@ - + sqlglot.executor.table API documentation diff --git a/docs/sqlglot/expressions.html b/docs/sqlglot/expressions.html index 6463633..a4b82fc 100644 --- a/docs/sqlglot/expressions.html +++ b/docs/sqlglot/expressions.html @@ -3,7 +3,7 @@ - + sqlglot.expressions API documentation @@ -442,6 +442,12 @@
    + +
  • + OnUpdateColumnConstraint +
      +
    +
  • PrimaryKeyColumnConstraint @@ -586,6 +592,12 @@
    +
  • +
  • + OnConflict +
      +
    +
  • Returning @@ -829,6 +841,12 @@
    +
  • +
  • + InputOutputFormat +
      +
    +
  • IsolatedLoadingProperty @@ -907,6 +925,12 @@
    +
  • +
  • + RowFormatProperty +
      +
    +
  • RowFormatDelimitedProperty @@ -949,6 +973,12 @@
    +
  • +
  • + StabilityProperty +
      +
    +
  • TableFormatProperty @@ -969,7 +999,7 @@
  • - VolatilityProperty + VolatileProperty
    @@ -1361,6 +1391,9 @@
  • DECIMAL
  • +
  • + BIGDECIMAL +
  • BIT
  • @@ -2128,6 +2161,12 @@
    + +
  • + CurrentUser +
      +
    +
  • DateAdd @@ -2494,6 +2533,12 @@
    +
  • +
  • + StarMap +
      +
    +
  • VarMap @@ -2512,6 +2557,12 @@
    +
  • +
  • + MD5 +
      +
    +
  • Min @@ -2650,6 +2701,18 @@
    +
  • +
  • + SHA +
      +
    + +
  • +
  • + SHA2 +
      +
    +
  • SortArray @@ -3844,4316 +3907,4411 @@ SQL expressions, such as sqlglot.expressions.select< 818 "properties": False, 819 "replace": False, 820 "unique": False, - 821 "volatile": False, - 822 "indexes": False, - 823 "no_schema_binding": False, - 824 "begin": False, - 825 } + 821 "indexes": False, + 822 "no_schema_binding": False, + 823 "begin": False, + 824 } + 825 826 - 827 - 828class Describe(Expression): - 829 arg_types = {"this": True, "kind": False} + 827class Describe(Expression): + 828 arg_types = {"this": True, "kind": False} + 829 830 - 831 - 832class Pragma(Expression): - 833 pass + 831class Pragma(Expression): + 832 pass + 833 834 - 835 - 836class Set(Expression): - 837 arg_types = {"expressions": False} + 835class Set(Expression): + 836 arg_types = {"expressions": False} + 837 838 - 839 - 840class SetItem(Expression): - 841 arg_types = { - 842 "this": False, - 843 "expressions": False, - 844 "kind": False, - 845 "collate": False, # MySQL SET NAMES statement - 846 "global": False, - 847 } + 839class SetItem(Expression): + 840 arg_types = { + 841 "this": False, + 842 "expressions": False, + 843 "kind": False, + 844 "collate": False, # MySQL SET NAMES statement + 845 "global": False, + 846 } + 847 848 - 849 - 850class Show(Expression): - 851 arg_types = { - 852 "this": True, - 853 "target": False, - 854 "offset": False, - 855 "limit": False, - 856 "like": False, - 857 "where": False, - 858 "db": False, - 859 "full": False, - 860 "mutex": False, - 861 "query": False, - 862 "channel": False, - 863 "global": False, - 864 "log": False, - 865 "position": False, - 866 "types": False, - 867 } + 849class Show(Expression): + 850 arg_types = { + 851 "this": True, + 852 "target": False, + 853 "offset": False, + 854 "limit": False, + 855 "like": False, + 856 "where": False, + 857 "db": False, + 858 "full": False, + 859 "mutex": False, + 860 "query": False, + 861 "channel": False, + 862 "global": False, + 863 "log": False, + 864 "position": False, + 865 "types": False, + 866 } + 867 868 - 869 - 870class UserDefinedFunction(Expression): - 871 arg_types = {"this": True, "expressions": False, "wrapped": False} + 869class UserDefinedFunction(Expression): + 870 arg_types = {"this": True, "expressions": False, "wrapped": False} + 871 872 - 873 - 874class CharacterSet(Expression): - 875 arg_types = {"this": True, "default": False} + 873class CharacterSet(Expression): + 874 arg_types = {"this": True, "default": False} + 875 876 - 877 - 878class With(Expression): - 879 arg_types = {"expressions": True, "recursive": False} - 880 - 881 @property - 882 def recursive(self) -> bool: - 883 return bool(self.args.get("recursive")) + 877class With(Expression): + 878 arg_types = {"expressions": True, "recursive": False} + 879 + 880 @property + 881 def recursive(self) -> bool: + 882 return bool(self.args.get("recursive")) + 883 884 - 885 - 886class WithinGroup(Expression): - 887 arg_types = {"this": True, "expression": False} + 885class WithinGroup(Expression): + 886 arg_types = {"this": True, "expression": False} + 887 888 - 889 - 890class CTE(DerivedTable): - 891 arg_types = {"this": True, "alias": True} + 889class CTE(DerivedTable): + 890 arg_types = {"this": True, "alias": True} + 891 892 - 893 - 894class TableAlias(Expression): - 895 arg_types = {"this": False, "columns": False} - 896 - 897 @property - 898 def columns(self): - 899 return self.args.get("columns") or [] + 893class TableAlias(Expression): + 894 arg_types = {"this": False, "columns": False} + 895 + 896 @property + 897 def columns(self): + 898 return self.args.get("columns") or [] + 899 900 - 901 - 902class BitString(Condition): - 903 pass + 901class BitString(Condition): + 902 pass + 903 904 - 905 - 906class HexString(Condition): - 907 pass + 905class HexString(Condition): + 906 pass + 907 908 - 909 - 910class ByteString(Condition): - 911 pass + 909class ByteString(Condition): + 910 pass + 911 912 - 913 - 914class Column(Condition): - 915 arg_types = {"this": True, "table": False, "db": False, "catalog": False, "join_mark": False} - 916 - 917 @property - 918 def table(self) -> str: - 919 return self.text("table") - 920 - 921 @property - 922 def db(self) -> str: - 923 return self.text("db") - 924 - 925 @property - 926 def catalog(self) -> str: - 927 return self.text("catalog") - 928 - 929 @property - 930 def output_name(self) -> str: - 931 return self.name - 932 - 933 @property - 934 def parts(self) -> t.List[Identifier]: - 935 """Return the parts of a column in order catalog, db, table, name.""" - 936 return [part for part in reversed(list(self.args.values())) if part] - 937 - 938 def to_dot(self) -> Dot: - 939 """Converts the column into a dot expression.""" - 940 parts = self.parts - 941 parent = self.parent - 942 - 943 while parent: - 944 if isinstance(parent, Dot): - 945 parts.append(parent.expression) - 946 parent = parent.parent - 947 - 948 return Dot.build(parts) + 913class Column(Condition): + 914 arg_types = {"this": True, "table": False, "db": False, "catalog": False, "join_mark": False} + 915 + 916 @property + 917 def table(self) -> str: + 918 return self.text("table") + 919 + 920 @property + 921 def db(self) -> str: + 922 return self.text("db") + 923 + 924 @property + 925 def catalog(self) -> str: + 926 return self.text("catalog") + 927 + 928 @property + 929 def output_name(self) -> str: + 930 return self.name + 931 + 932 @property + 933 def parts(self) -> t.List[Identifier]: + 934 """Return the parts of a column in order catalog, db, table, name.""" + 935 return [part for part in reversed(list(self.args.values())) if part] + 936 + 937 def to_dot(self) -> Dot: + 938 """Converts the column into a dot expression.""" + 939 parts = self.parts + 940 parent = self.parent + 941 + 942 while parent: + 943 if isinstance(parent, Dot): + 944 parts.append(parent.expression) + 945 parent = parent.parent + 946 + 947 return Dot.build(parts) + 948 949 - 950 - 951class ColumnPosition(Expression): - 952 arg_types = {"this": False, "position": True} + 950class ColumnPosition(Expression): + 951 arg_types = {"this": False, "position": True} + 952 953 - 954 - 955class ColumnDef(Expression): - 956 arg_types = { - 957 "this": True, - 958 "kind": False, - 959 "constraints": False, - 960 "exists": False, - 961 "position": False, - 962 } + 954class ColumnDef(Expression): + 955 arg_types = { + 956 "this": True, + 957 "kind": False, + 958 "constraints": False, + 959 "exists": False, + 960 "position": False, + 961 } + 962 963 - 964 - 965class AlterColumn(Expression): - 966 arg_types = { - 967 "this": True, - 968 "dtype": False, - 969 "collate": False, - 970 "using": False, - 971 "default": False, - 972 "drop": False, - 973 } + 964class AlterColumn(Expression): + 965 arg_types = { + 966 "this": True, + 967 "dtype": False, + 968 "collate": False, + 969 "using": False, + 970 "default": False, + 971 "drop": False, + 972 } + 973 974 - 975 - 976class RenameTable(Expression): - 977 pass + 975class RenameTable(Expression): + 976 pass + 977 978 - 979 - 980class SetTag(Expression): - 981 arg_types = {"expressions": True, "unset": False} + 979class SetTag(Expression): + 980 arg_types = {"expressions": True, "unset": False} + 981 982 - 983 - 984class Comment(Expression): - 985 arg_types = {"this": True, "kind": True, "expression": True, "exists": False} + 983class Comment(Expression): + 984 arg_types = {"this": True, "kind": True, "expression": True, "exists": False} + 985 986 - 987 - 988class ColumnConstraint(Expression): - 989 arg_types = {"this": False, "kind": True} + 987class ColumnConstraint(Expression): + 988 arg_types = {"this": False, "kind": True} + 989 990 - 991 - 992class ColumnConstraintKind(Expression): - 993 pass + 991class ColumnConstraintKind(Expression): + 992 pass + 993 994 - 995 - 996class AutoIncrementColumnConstraint(ColumnConstraintKind): - 997 pass + 995class AutoIncrementColumnConstraint(ColumnConstraintKind): + 996 pass + 997 998 - 999 -1000class CaseSpecificColumnConstraint(ColumnConstraintKind): -1001 arg_types = {"not_": True} + 999class CaseSpecificColumnConstraint(ColumnConstraintKind): +1000 arg_types = {"not_": True} +1001 1002 -1003 -1004class CharacterSetColumnConstraint(ColumnConstraintKind): -1005 arg_types = {"this": True} +1003class CharacterSetColumnConstraint(ColumnConstraintKind): +1004 arg_types = {"this": True} +1005 1006 -1007 -1008class CheckColumnConstraint(ColumnConstraintKind): -1009 pass +1007class CheckColumnConstraint(ColumnConstraintKind): +1008 pass +1009 1010 -1011 -1012class CollateColumnConstraint(ColumnConstraintKind): -1013 pass +1011class CollateColumnConstraint(ColumnConstraintKind): +1012 pass +1013 1014 -1015 -1016class CommentColumnConstraint(ColumnConstraintKind): -1017 pass +1015class CommentColumnConstraint(ColumnConstraintKind): +1016 pass +1017 1018 -1019 -1020class CompressColumnConstraint(ColumnConstraintKind): -1021 pass +1019class CompressColumnConstraint(ColumnConstraintKind): +1020 pass +1021 1022 -1023 -1024class DateFormatColumnConstraint(ColumnConstraintKind): -1025 arg_types = {"this": True} +1023class DateFormatColumnConstraint(ColumnConstraintKind): +1024 arg_types = {"this": True} +1025 1026 -1027 -1028class DefaultColumnConstraint(ColumnConstraintKind): -1029 pass +1027class DefaultColumnConstraint(ColumnConstraintKind): +1028 pass +1029 1030 -1031 -1032class EncodeColumnConstraint(ColumnConstraintKind): -1033 pass +1031class EncodeColumnConstraint(ColumnConstraintKind): +1032 pass +1033 1034 -1035 -1036class GeneratedAsIdentityColumnConstraint(ColumnConstraintKind): -1037 # this: True -> ALWAYS, this: False -> BY DEFAULT -1038 arg_types = { -1039 "this": False, -1040 "start": False, -1041 "increment": False, -1042 "minvalue": False, -1043 "maxvalue": False, -1044 "cycle": False, -1045 } +1035class GeneratedAsIdentityColumnConstraint(ColumnConstraintKind): +1036 # this: True -> ALWAYS, this: False -> BY DEFAULT +1037 arg_types = { +1038 "this": False, +1039 "start": False, +1040 "increment": False, +1041 "minvalue": False, +1042 "maxvalue": False, +1043 "cycle": False, +1044 } +1045 1046 -1047 -1048class InlineLengthColumnConstraint(ColumnConstraintKind): -1049 pass +1047class InlineLengthColumnConstraint(ColumnConstraintKind): +1048 pass +1049 1050 -1051 -1052class NotNullColumnConstraint(ColumnConstraintKind): -1053 arg_types = {"allow_null": False} +1051class NotNullColumnConstraint(ColumnConstraintKind): +1052 arg_types = {"allow_null": False} +1053 1054 -1055 -1056class PrimaryKeyColumnConstraint(ColumnConstraintKind): -1057 arg_types = {"desc": False} +1055# https://dev.mysql.com/doc/refman/5.7/en/timestamp-initialization.html +1056class OnUpdateColumnConstraint(ColumnConstraintKind): +1057 pass 1058 1059 -1060class TitleColumnConstraint(ColumnConstraintKind): -1061 pass +1060class PrimaryKeyColumnConstraint(ColumnConstraintKind): +1061 arg_types = {"desc": False} 1062 1063 -1064class UniqueColumnConstraint(ColumnConstraintKind): -1065 arg_types: t.Dict[str, t.Any] = {} +1064class TitleColumnConstraint(ColumnConstraintKind): +1065 pass 1066 1067 -1068class UppercaseColumnConstraint(ColumnConstraintKind): +1068class UniqueColumnConstraint(ColumnConstraintKind): 1069 arg_types: t.Dict[str, t.Any] = {} 1070 1071 -1072class PathColumnConstraint(ColumnConstraintKind): -1073 pass +1072class UppercaseColumnConstraint(ColumnConstraintKind): +1073 arg_types: t.Dict[str, t.Any] = {} 1074 1075 -1076class Constraint(Expression): -1077 arg_types = {"this": True, "expressions": True} +1076class PathColumnConstraint(ColumnConstraintKind): +1077 pass 1078 1079 -1080class Delete(Expression): -1081 arg_types = {"with": False, "this": False, "using": False, "where": False, "returning": False} +1080class Constraint(Expression): +1081 arg_types = {"this": True, "expressions": True} 1082 -1083 def delete( -1084 self, -1085 table: ExpOrStr, -1086 dialect: DialectType = None, -1087 copy: bool = True, -1088 **opts, -1089 ) -> Delete: -1090 """ -1091 Create a DELETE expression or replace the table on an existing DELETE expression. -1092 -1093 Example: -1094 >>> delete("tbl").sql() -1095 'DELETE FROM tbl' +1083 +1084class Delete(Expression): +1085 arg_types = {"with": False, "this": False, "using": False, "where": False, "returning": False} +1086 +1087 def delete( +1088 self, +1089 table: ExpOrStr, +1090 dialect: DialectType = None, +1091 copy: bool = True, +1092 **opts, +1093 ) -> Delete: +1094 """ +1095 Create a DELETE expression or replace the table on an existing DELETE expression. 1096 -1097 Args: -1098 table: the table from which to delete. -1099 dialect: the dialect used to parse the input expression. -1100 copy: if `False`, modify this expression instance in-place. -1101 opts: other options to use to parse the input expressions. -1102 -1103 Returns: -1104 Delete: the modified expression. -1105 """ -1106 return _apply_builder( -1107 expression=table, -1108 instance=self, -1109 arg="this", -1110 dialect=dialect, -1111 into=Table, -1112 copy=copy, -1113 **opts, -1114 ) -1115 -1116 def where( -1117 self, -1118 *expressions: ExpOrStr, -1119 append: bool = True, -1120 dialect: DialectType = None, -1121 copy: bool = True, -1122 **opts, -1123 ) -> Delete: -1124 """ -1125 Append to or set the WHERE expressions. -1126 -1127 Example: -1128 >>> delete("tbl").where("x = 'a' OR x < 'b'").sql() -1129 "DELETE FROM tbl WHERE x = 'a' OR x < 'b'" +1097 Example: +1098 >>> delete("tbl").sql() +1099 'DELETE FROM tbl' +1100 +1101 Args: +1102 table: the table from which to delete. +1103 dialect: the dialect used to parse the input expression. +1104 copy: if `False`, modify this expression instance in-place. +1105 opts: other options to use to parse the input expressions. +1106 +1107 Returns: +1108 Delete: the modified expression. +1109 """ +1110 return _apply_builder( +1111 expression=table, +1112 instance=self, +1113 arg="this", +1114 dialect=dialect, +1115 into=Table, +1116 copy=copy, +1117 **opts, +1118 ) +1119 +1120 def where( +1121 self, +1122 *expressions: ExpOrStr, +1123 append: bool = True, +1124 dialect: DialectType = None, +1125 copy: bool = True, +1126 **opts, +1127 ) -> Delete: +1128 """ +1129 Append to or set the WHERE expressions. 1130 -1131 Args: -1132 *expressions: the SQL code strings to parse. -1133 If an `Expression` instance is passed, it will be used as-is. -1134 Multiple expressions are combined with an AND operator. -1135 append: if `True`, AND the new expressions to any existing expression. -1136 Otherwise, this resets the expression. -1137 dialect: the dialect used to parse the input expressions. -1138 copy: if `False`, modify this expression instance in-place. -1139 opts: other options to use to parse the input expressions. -1140 -1141 Returns: -1142 Delete: the modified expression. -1143 """ -1144 return _apply_conjunction_builder( -1145 *expressions, -1146 instance=self, -1147 arg="where", -1148 append=append, -1149 into=Where, -1150 dialect=dialect, -1151 copy=copy, -1152 **opts, -1153 ) -1154 -1155 def returning( -1156 self, -1157 expression: ExpOrStr, -1158 dialect: DialectType = None, -1159 copy: bool = True, -1160 **opts, -1161 ) -> Delete: -1162 """ -1163 Set the RETURNING expression. Not supported by all dialects. -1164 -1165 Example: -1166 >>> delete("tbl").returning("*", dialect="postgres").sql() -1167 'DELETE FROM tbl RETURNING *' +1131 Example: +1132 >>> delete("tbl").where("x = 'a' OR x < 'b'").sql() +1133 "DELETE FROM tbl WHERE x = 'a' OR x < 'b'" +1134 +1135 Args: +1136 *expressions: the SQL code strings to parse. +1137 If an `Expression` instance is passed, it will be used as-is. +1138 Multiple expressions are combined with an AND operator. +1139 append: if `True`, AND the new expressions to any existing expression. +1140 Otherwise, this resets the expression. +1141 dialect: the dialect used to parse the input expressions. +1142 copy: if `False`, modify this expression instance in-place. +1143 opts: other options to use to parse the input expressions. +1144 +1145 Returns: +1146 Delete: the modified expression. +1147 """ +1148 return _apply_conjunction_builder( +1149 *expressions, +1150 instance=self, +1151 arg="where", +1152 append=append, +1153 into=Where, +1154 dialect=dialect, +1155 copy=copy, +1156 **opts, +1157 ) +1158 +1159 def returning( +1160 self, +1161 expression: ExpOrStr, +1162 dialect: DialectType = None, +1163 copy: bool = True, +1164 **opts, +1165 ) -> Delete: +1166 """ +1167 Set the RETURNING expression. Not supported by all dialects. 1168 -1169 Args: -1170 expression: the SQL code strings to parse. -1171 If an `Expression` instance is passed, it will be used as-is. -1172 dialect: the dialect used to parse the input expressions. -1173 copy: if `False`, modify this expression instance in-place. -1174 opts: other options to use to parse the input expressions. -1175 -1176 Returns: -1177 Delete: the modified expression. -1178 """ -1179 return _apply_builder( -1180 expression=expression, -1181 instance=self, -1182 arg="returning", -1183 prefix="RETURNING", -1184 dialect=dialect, -1185 copy=copy, -1186 into=Returning, -1187 **opts, -1188 ) -1189 -1190 -1191class Drop(Expression): -1192 arg_types = { -1193 "this": False, -1194 "kind": False, -1195 "exists": False, -1196 "temporary": False, -1197 "materialized": False, -1198 "cascade": False, -1199 "constraints": False, -1200 } -1201 -1202 -1203class Filter(Expression): -1204 arg_types = {"this": True, "expression": True} -1205 +1169 Example: +1170 >>> delete("tbl").returning("*", dialect="postgres").sql() +1171 'DELETE FROM tbl RETURNING *' +1172 +1173 Args: +1174 expression: the SQL code strings to parse. +1175 If an `Expression` instance is passed, it will be used as-is. +1176 dialect: the dialect used to parse the input expressions. +1177 copy: if `False`, modify this expression instance in-place. +1178 opts: other options to use to parse the input expressions. +1179 +1180 Returns: +1181 Delete: the modified expression. +1182 """ +1183 return _apply_builder( +1184 expression=expression, +1185 instance=self, +1186 arg="returning", +1187 prefix="RETURNING", +1188 dialect=dialect, +1189 copy=copy, +1190 into=Returning, +1191 **opts, +1192 ) +1193 +1194 +1195class Drop(Expression): +1196 arg_types = { +1197 "this": False, +1198 "kind": False, +1199 "exists": False, +1200 "temporary": False, +1201 "materialized": False, +1202 "cascade": False, +1203 "constraints": False, +1204 "purge": False, +1205 } 1206 -1207class Check(Expression): -1208 pass -1209 +1207 +1208class Filter(Expression): +1209 arg_types = {"this": True, "expression": True} 1210 -1211class Directory(Expression): -1212 # https://spark.apache.org/docs/3.0.0-preview/sql-ref-syntax-dml-insert-overwrite-directory-hive.html -1213 arg_types = {"this": True, "local": False, "row_format": False} +1211 +1212class Check(Expression): +1213 pass 1214 1215 -1216class ForeignKey(Expression): -1217 arg_types = { -1218 "expressions": True, -1219 "reference": False, -1220 "delete": False, -1221 "update": False, -1222 } -1223 -1224 -1225class PrimaryKey(Expression): -1226 arg_types = {"expressions": True, "options": False} -1227 +1216class Directory(Expression): +1217 # https://spark.apache.org/docs/3.0.0-preview/sql-ref-syntax-dml-insert-overwrite-directory-hive.html +1218 arg_types = {"this": True, "local": False, "row_format": False} +1219 +1220 +1221class ForeignKey(Expression): +1222 arg_types = { +1223 "expressions": True, +1224 "reference": False, +1225 "delete": False, +1226 "update": False, +1227 } 1228 -1229class Unique(Expression): -1230 arg_types = {"expressions": True} -1231 +1229 +1230class PrimaryKey(Expression): +1231 arg_types = {"expressions": True, "options": False} 1232 -1233# https://www.postgresql.org/docs/9.1/sql-selectinto.html -1234# https://docs.aws.amazon.com/redshift/latest/dg/r_SELECT_INTO.html#r_SELECT_INTO-examples -1235class Into(Expression): -1236 arg_types = {"this": True, "temporary": False, "unlogged": False} +1233 +1234class Unique(Expression): +1235 arg_types = {"expressions": True} +1236 1237 -1238 -1239class From(Expression): -1240 arg_types = {"expressions": True} -1241 +1238# https://www.postgresql.org/docs/9.1/sql-selectinto.html +1239# https://docs.aws.amazon.com/redshift/latest/dg/r_SELECT_INTO.html#r_SELECT_INTO-examples +1240class Into(Expression): +1241 arg_types = {"this": True, "temporary": False, "unlogged": False} 1242 -1243class Having(Expression): -1244 pass -1245 +1243 +1244class From(Expression): +1245 arg_types = {"expressions": True} 1246 -1247class Hint(Expression): -1248 arg_types = {"expressions": True} -1249 +1247 +1248class Having(Expression): +1249 pass 1250 -1251class JoinHint(Expression): -1252 arg_types = {"this": True, "expressions": True} -1253 +1251 +1252class Hint(Expression): +1253 arg_types = {"expressions": True} 1254 -1255class Identifier(Expression): -1256 arg_types = {"this": True, "quoted": False} -1257 -1258 @property -1259 def quoted(self): -1260 return bool(self.args.get("quoted")) -1261 -1262 @property -1263 def hashable_args(self) -> t.Any: -1264 if self.quoted and any(char.isupper() for char in self.this): -1265 return (self.this, self.quoted) -1266 return self.this.lower() -1267 -1268 @property -1269 def output_name(self): -1270 return self.name -1271 +1255 +1256class JoinHint(Expression): +1257 arg_types = {"this": True, "expressions": True} +1258 +1259 +1260class Identifier(Expression): +1261 arg_types = {"this": True, "quoted": False} +1262 +1263 @property +1264 def quoted(self): +1265 return bool(self.args.get("quoted")) +1266 +1267 @property +1268 def hashable_args(self) -> t.Any: +1269 if self.quoted and any(char.isupper() for char in self.this): +1270 return (self.this, self.quoted) +1271 return self.this.lower() 1272 -1273class Index(Expression): -1274 arg_types = { -1275 "this": False, -1276 "table": False, -1277 "where": False, -1278 "columns": False, -1279 "unique": False, -1280 "primary": False, -1281 "amp": False, # teradata -1282 } -1283 -1284 -1285class Insert(Expression): -1286 arg_types = { -1287 "with": False, -1288 "this": True, -1289 "expression": False, -1290 "returning": False, -1291 "overwrite": False, -1292 "exists": False, -1293 "partition": False, -1294 "alternative": False, -1295 } -1296 -1297 -1298class Returning(Expression): -1299 arg_types = {"expressions": True} -1300 -1301 -1302# https://dev.mysql.com/doc/refman/8.0/en/charset-introducer.html -1303class Introducer(Expression): -1304 arg_types = {"this": True, "expression": True} -1305 -1306 -1307# national char, like n'utf8' -1308class National(Expression): -1309 pass -1310 -1311 -1312class LoadData(Expression): -1313 arg_types = { -1314 "this": True, -1315 "local": False, -1316 "overwrite": False, -1317 "inpath": True, -1318 "partition": False, -1319 "input_format": False, -1320 "serde": False, -1321 } +1273 @property +1274 def output_name(self): +1275 return self.name +1276 +1277 +1278class Index(Expression): +1279 arg_types = { +1280 "this": False, +1281 "table": False, +1282 "where": False, +1283 "columns": False, +1284 "unique": False, +1285 "primary": False, +1286 "amp": False, # teradata +1287 } +1288 +1289 +1290class Insert(Expression): +1291 arg_types = { +1292 "with": False, +1293 "this": True, +1294 "expression": False, +1295 "conflict": False, +1296 "returning": False, +1297 "overwrite": False, +1298 "exists": False, +1299 "partition": False, +1300 "alternative": False, +1301 } +1302 +1303 +1304class OnConflict(Expression): +1305 arg_types = { +1306 "duplicate": False, +1307 "expressions": False, +1308 "nothing": False, +1309 "key": False, +1310 "constraint": False, +1311 } +1312 +1313 +1314class Returning(Expression): +1315 arg_types = {"expressions": True} +1316 +1317 +1318# https://dev.mysql.com/doc/refman/8.0/en/charset-introducer.html +1319class Introducer(Expression): +1320 arg_types = {"this": True, "expression": True} +1321 1322 -1323 -1324class Partition(Expression): -1325 arg_types = {"expressions": True} +1323# national char, like n'utf8' +1324class National(Expression): +1325 pass 1326 1327 -1328class Fetch(Expression): -1329 arg_types = {"direction": False, "count": False} -1330 -1331 -1332class Group(Expression): -1333 arg_types = { -1334 "expressions": False, -1335 "grouping_sets": False, -1336 "cube": False, -1337 "rollup": False, -1338 } +1328class LoadData(Expression): +1329 arg_types = { +1330 "this": True, +1331 "local": False, +1332 "overwrite": False, +1333 "inpath": True, +1334 "partition": False, +1335 "input_format": False, +1336 "serde": False, +1337 } +1338 1339 -1340 -1341class Lambda(Expression): -1342 arg_types = {"this": True, "expressions": True} +1340class Partition(Expression): +1341 arg_types = {"expressions": True} +1342 1343 -1344 -1345class Limit(Expression): -1346 arg_types = {"this": False, "expression": True} -1347 -1348 -1349class Literal(Condition): -1350 arg_types = {"this": True, "is_string": True} +1344class Fetch(Expression): +1345 arg_types = { +1346 "direction": False, +1347 "count": False, +1348 "percent": False, +1349 "with_ties": False, +1350 } 1351 -1352 @property -1353 def hashable_args(self) -> t.Any: -1354 return (self.this, self.args.get("is_string")) -1355 -1356 @classmethod -1357 def number(cls, number) -> Literal: -1358 return cls(this=str(number), is_string=False) -1359 -1360 @classmethod -1361 def string(cls, string) -> Literal: -1362 return cls(this=str(string), is_string=True) -1363 -1364 @property -1365 def output_name(self): -1366 return self.name -1367 +1352 +1353class Group(Expression): +1354 arg_types = { +1355 "expressions": False, +1356 "grouping_sets": False, +1357 "cube": False, +1358 "rollup": False, +1359 } +1360 +1361 +1362class Lambda(Expression): +1363 arg_types = {"this": True, "expressions": True} +1364 +1365 +1366class Limit(Expression): +1367 arg_types = {"this": False, "expression": True} 1368 -1369class Join(Expression): -1370 arg_types = { -1371 "this": True, -1372 "on": False, -1373 "side": False, -1374 "kind": False, -1375 "using": False, -1376 "natural": False, -1377 } -1378 -1379 @property -1380 def kind(self): -1381 return self.text("kind").upper() -1382 -1383 @property -1384 def side(self): -1385 return self.text("side").upper() -1386 -1387 @property -1388 def alias_or_name(self): -1389 return self.this.alias_or_name -1390 -1391 def on(self, *expressions, append=True, dialect=None, copy=True, **opts): -1392 """ -1393 Append to or set the ON expressions. -1394 -1395 Example: -1396 >>> import sqlglot -1397 >>> sqlglot.parse_one("JOIN x", into=Join).on("y = 1").sql() -1398 'JOIN x ON y = 1' -1399 -1400 Args: -1401 *expressions (str | Expression): the SQL code strings to parse. -1402 If an `Expression` instance is passed, it will be used as-is. -1403 Multiple expressions are combined with an AND operator. -1404 append (bool): if `True`, AND the new expressions to any existing expression. -1405 Otherwise, this resets the expression. -1406 dialect (str): the dialect used to parse the input expressions. -1407 copy (bool): if `False`, modify this expression instance in-place. -1408 opts (kwargs): other options to use to parse the input expressions. -1409 -1410 Returns: -1411 Join: the modified join expression. -1412 """ -1413 join = _apply_conjunction_builder( -1414 *expressions, -1415 instance=self, -1416 arg="on", -1417 append=append, -1418 dialect=dialect, -1419 copy=copy, -1420 **opts, -1421 ) -1422 -1423 if join.kind == "CROSS": -1424 join.set("kind", None) +1369 +1370class Literal(Condition): +1371 arg_types = {"this": True, "is_string": True} +1372 +1373 @property +1374 def hashable_args(self) -> t.Any: +1375 return (self.this, self.args.get("is_string")) +1376 +1377 @classmethod +1378 def number(cls, number) -> Literal: +1379 return cls(this=str(number), is_string=False) +1380 +1381 @classmethod +1382 def string(cls, string) -> Literal: +1383 return cls(this=str(string), is_string=True) +1384 +1385 @property +1386 def output_name(self): +1387 return self.name +1388 +1389 +1390class Join(Expression): +1391 arg_types = { +1392 "this": True, +1393 "on": False, +1394 "side": False, +1395 "kind": False, +1396 "using": False, +1397 "natural": False, +1398 "hint": False, +1399 } +1400 +1401 @property +1402 def kind(self): +1403 return self.text("kind").upper() +1404 +1405 @property +1406 def side(self): +1407 return self.text("side").upper() +1408 +1409 @property +1410 def hint(self): +1411 return self.text("hint").upper() +1412 +1413 @property +1414 def alias_or_name(self): +1415 return self.this.alias_or_name +1416 +1417 def on(self, *expressions, append=True, dialect=None, copy=True, **opts): +1418 """ +1419 Append to or set the ON expressions. +1420 +1421 Example: +1422 >>> import sqlglot +1423 >>> sqlglot.parse_one("JOIN x", into=Join).on("y = 1").sql() +1424 'JOIN x ON y = 1' 1425 -1426 return join -1427 -1428 def using(self, *expressions, append=True, dialect=None, copy=True, **opts): -1429 """ -1430 Append to or set the USING expressions. -1431 -1432 Example: -1433 >>> import sqlglot -1434 >>> sqlglot.parse_one("JOIN x", into=Join).using("foo", "bla").sql() -1435 'JOIN x USING (foo, bla)' -1436 -1437 Args: -1438 *expressions (str | Expression): the SQL code strings to parse. -1439 If an `Expression` instance is passed, it will be used as-is. -1440 append (bool): if `True`, concatenate the new expressions to the existing "using" list. -1441 Otherwise, this resets the expression. -1442 dialect (str): the dialect used to parse the input expressions. -1443 copy (bool): if `False`, modify this expression instance in-place. -1444 opts (kwargs): other options to use to parse the input expressions. -1445 -1446 Returns: -1447 Join: the modified join expression. -1448 """ -1449 join = _apply_list_builder( -1450 *expressions, -1451 instance=self, -1452 arg="using", -1453 append=append, -1454 dialect=dialect, -1455 copy=copy, -1456 **opts, -1457 ) -1458 -1459 if join.kind == "CROSS": -1460 join.set("kind", None) -1461 -1462 return join -1463 -1464 -1465class Lateral(UDTF): -1466 arg_types = {"this": True, "view": False, "outer": False, "alias": False} -1467 -1468 -1469class MatchRecognize(Expression): -1470 arg_types = { -1471 "partition_by": False, -1472 "order": False, -1473 "measures": False, -1474 "rows": False, -1475 "after": False, -1476 "pattern": False, -1477 "define": False, -1478 } -1479 -1480 -1481# Clickhouse FROM FINAL modifier -1482# https://clickhouse.com/docs/en/sql-reference/statements/select/from/#final-modifier -1483class Final(Expression): -1484 pass -1485 -1486 -1487class Offset(Expression): -1488 arg_types = {"this": False, "expression": True} +1426 Args: +1427 *expressions (str | Expression): the SQL code strings to parse. +1428 If an `Expression` instance is passed, it will be used as-is. +1429 Multiple expressions are combined with an AND operator. +1430 append (bool): if `True`, AND the new expressions to any existing expression. +1431 Otherwise, this resets the expression. +1432 dialect (str): the dialect used to parse the input expressions. +1433 copy (bool): if `False`, modify this expression instance in-place. +1434 opts (kwargs): other options to use to parse the input expressions. +1435 +1436 Returns: +1437 Join: the modified join expression. +1438 """ +1439 join = _apply_conjunction_builder( +1440 *expressions, +1441 instance=self, +1442 arg="on", +1443 append=append, +1444 dialect=dialect, +1445 copy=copy, +1446 **opts, +1447 ) +1448 +1449 if join.kind == "CROSS": +1450 join.set("kind", None) +1451 +1452 return join +1453 +1454 def using(self, *expressions, append=True, dialect=None, copy=True, **opts): +1455 """ +1456 Append to or set the USING expressions. +1457 +1458 Example: +1459 >>> import sqlglot +1460 >>> sqlglot.parse_one("JOIN x", into=Join).using("foo", "bla").sql() +1461 'JOIN x USING (foo, bla)' +1462 +1463 Args: +1464 *expressions (str | Expression): the SQL code strings to parse. +1465 If an `Expression` instance is passed, it will be used as-is. +1466 append (bool): if `True`, concatenate the new expressions to the existing "using" list. +1467 Otherwise, this resets the expression. +1468 dialect (str): the dialect used to parse the input expressions. +1469 copy (bool): if `False`, modify this expression instance in-place. +1470 opts (kwargs): other options to use to parse the input expressions. +1471 +1472 Returns: +1473 Join: the modified join expression. +1474 """ +1475 join = _apply_list_builder( +1476 *expressions, +1477 instance=self, +1478 arg="using", +1479 append=append, +1480 dialect=dialect, +1481 copy=copy, +1482 **opts, +1483 ) +1484 +1485 if join.kind == "CROSS": +1486 join.set("kind", None) +1487 +1488 return join 1489 1490 -1491class Order(Expression): -1492 arg_types = {"this": False, "expressions": True} +1491class Lateral(UDTF): +1492 arg_types = {"this": True, "view": False, "outer": False, "alias": False} 1493 1494 -1495# hive specific sorts -1496# https://cwiki.apache.org/confluence/display/Hive/LanguageManual+SortBy -1497class Cluster(Order): -1498 pass -1499 -1500 -1501class Distribute(Order): -1502 pass -1503 -1504 -1505class Sort(Order): -1506 pass +1495class MatchRecognize(Expression): +1496 arg_types = { +1497 "partition_by": False, +1498 "order": False, +1499 "measures": False, +1500 "rows": False, +1501 "after": False, +1502 "pattern": False, +1503 "define": False, +1504 "alias": False, +1505 } +1506 1507 -1508 -1509class Ordered(Expression): -1510 arg_types = {"this": True, "desc": True, "nulls_first": True} -1511 +1508# Clickhouse FROM FINAL modifier +1509# https://clickhouse.com/docs/en/sql-reference/statements/select/from/#final-modifier +1510class Final(Expression): +1511 pass 1512 -1513class Property(Expression): -1514 arg_types = {"this": True, "value": True} -1515 +1513 +1514class Offset(Expression): +1515 arg_types = {"this": False, "expression": True} 1516 -1517class AfterJournalProperty(Property): -1518 arg_types = {"no": True, "dual": False, "local": False} -1519 +1517 +1518class Order(Expression): +1519 arg_types = {"this": False, "expressions": True} 1520 -1521class AlgorithmProperty(Property): -1522 arg_types = {"this": True} -1523 -1524 -1525class AutoIncrementProperty(Property): -1526 arg_types = {"this": True} +1521 +1522# hive specific sorts +1523# https://cwiki.apache.org/confluence/display/Hive/LanguageManual+SortBy +1524class Cluster(Order): +1525 pass +1526 1527 -1528 -1529class BlockCompressionProperty(Property): -1530 arg_types = {"autotemp": False, "always": False, "default": True, "manual": True, "never": True} +1528class Distribute(Order): +1529 pass +1530 1531 -1532 -1533class CharacterSetProperty(Property): -1534 arg_types = {"this": True, "default": True} +1532class Sort(Order): +1533 pass +1534 1535 -1536 -1537class ChecksumProperty(Property): -1538 arg_types = {"on": False, "default": False} +1536class Ordered(Expression): +1537 arg_types = {"this": True, "desc": True, "nulls_first": True} +1538 1539 -1540 -1541class CollateProperty(Property): -1542 arg_types = {"this": True} +1540class Property(Expression): +1541 arg_types = {"this": True, "value": True} +1542 1543 -1544 -1545class DataBlocksizeProperty(Property): -1546 arg_types = {"size": False, "units": False, "min": False, "default": False} +1544class AfterJournalProperty(Property): +1545 arg_types = {"no": True, "dual": False, "local": False} +1546 1547 -1548 -1549class DefinerProperty(Property): -1550 arg_types = {"this": True} +1548class AlgorithmProperty(Property): +1549 arg_types = {"this": True} +1550 1551 -1552 -1553class DistKeyProperty(Property): -1554 arg_types = {"this": True} +1552class AutoIncrementProperty(Property): +1553 arg_types = {"this": True} +1554 1555 -1556 -1557class DistStyleProperty(Property): -1558 arg_types = {"this": True} +1556class BlockCompressionProperty(Property): +1557 arg_types = {"autotemp": False, "always": False, "default": True, "manual": True, "never": True} +1558 1559 -1560 -1561class EngineProperty(Property): -1562 arg_types = {"this": True} +1560class CharacterSetProperty(Property): +1561 arg_types = {"this": True, "default": True} +1562 1563 -1564 -1565class ExecuteAsProperty(Property): -1566 arg_types = {"this": True} +1564class ChecksumProperty(Property): +1565 arg_types = {"on": False, "default": False} +1566 1567 -1568 -1569class ExternalProperty(Property): -1570 arg_types = {"this": False} +1568class CollateProperty(Property): +1569 arg_types = {"this": True} +1570 1571 -1572 -1573class FallbackProperty(Property): -1574 arg_types = {"no": True, "protection": False} +1572class DataBlocksizeProperty(Property): +1573 arg_types = {"size": False, "units": False, "min": False, "default": False} +1574 1575 -1576 -1577class FileFormatProperty(Property): -1578 arg_types = {"this": True} +1576class DefinerProperty(Property): +1577 arg_types = {"this": True} +1578 1579 -1580 -1581class FreespaceProperty(Property): -1582 arg_types = {"this": True, "percent": False} +1580class DistKeyProperty(Property): +1581 arg_types = {"this": True} +1582 1583 -1584 -1585class IsolatedLoadingProperty(Property): -1586 arg_types = { -1587 "no": True, -1588 "concurrent": True, -1589 "for_all": True, -1590 "for_insert": True, -1591 "for_none": True, -1592 } -1593 +1584class DistStyleProperty(Property): +1585 arg_types = {"this": True} +1586 +1587 +1588class EngineProperty(Property): +1589 arg_types = {"this": True} +1590 +1591 +1592class ExecuteAsProperty(Property): +1593 arg_types = {"this": True} 1594 -1595class JournalProperty(Property): -1596 arg_types = {"no": True, "dual": False, "before": False} -1597 +1595 +1596class ExternalProperty(Property): +1597 arg_types = {"this": False} 1598 -1599class LanguageProperty(Property): -1600 arg_types = {"this": True} -1601 +1599 +1600class FallbackProperty(Property): +1601 arg_types = {"no": True, "protection": False} 1602 -1603class LikeProperty(Property): -1604 arg_types = {"this": True, "expressions": False} -1605 +1603 +1604class FileFormatProperty(Property): +1605 arg_types = {"this": True} 1606 -1607class LocationProperty(Property): -1608 arg_types = {"this": True} -1609 +1607 +1608class FreespaceProperty(Property): +1609 arg_types = {"this": True, "percent": False} 1610 -1611class LockingProperty(Property): -1612 arg_types = { -1613 "this": False, -1614 "kind": True, -1615 "for_or_in": True, -1616 "lock_type": True, -1617 "override": False, -1618 } -1619 -1620 -1621class LogProperty(Property): -1622 arg_types = {"no": True} -1623 +1611 +1612class InputOutputFormat(Expression): +1613 arg_types = {"input_format": False, "output_format": False} +1614 +1615 +1616class IsolatedLoadingProperty(Property): +1617 arg_types = { +1618 "no": True, +1619 "concurrent": True, +1620 "for_all": True, +1621 "for_insert": True, +1622 "for_none": True, +1623 } 1624 -1625class MaterializedProperty(Property): -1626 arg_types = {"this": False} -1627 +1625 +1626class JournalProperty(Property): +1627 arg_types = {"no": True, "dual": False, "before": False} 1628 -1629class MergeBlockRatioProperty(Property): -1630 arg_types = {"this": False, "no": False, "default": False, "percent": False} -1631 +1629 +1630class LanguageProperty(Property): +1631 arg_types = {"this": True} 1632 -1633class NoPrimaryIndexProperty(Property): -1634 arg_types = {"this": False} -1635 +1633 +1634class LikeProperty(Property): +1635 arg_types = {"this": True, "expressions": False} 1636 -1637class OnCommitProperty(Property): -1638 arg_type = {"this": False} -1639 +1637 +1638class LocationProperty(Property): +1639 arg_types = {"this": True} 1640 -1641class PartitionedByProperty(Property): -1642 arg_types = {"this": True} -1643 -1644 -1645class ReturnsProperty(Property): -1646 arg_types = {"this": True, "is_table": False, "table": False} -1647 -1648 -1649class RowFormatDelimitedProperty(Property): -1650 # https://cwiki.apache.org/confluence/display/hive/languagemanual+dml -1651 arg_types = { -1652 "fields": False, -1653 "escaped": False, -1654 "collection_items": False, -1655 "map_keys": False, -1656 "lines": False, -1657 "null": False, -1658 "serde": False, -1659 } -1660 -1661 -1662class RowFormatSerdeProperty(Property): -1663 arg_types = {"this": True} -1664 -1665 -1666class SchemaCommentProperty(Property): -1667 arg_types = {"this": True} -1668 -1669 -1670class SerdeProperties(Property): -1671 arg_types = {"expressions": True} -1672 -1673 -1674class SetProperty(Property): -1675 arg_types = {"multi": True} -1676 -1677 -1678class SortKeyProperty(Property): -1679 arg_types = {"this": True, "compound": False} -1680 -1681 -1682class SqlSecurityProperty(Property): -1683 arg_types = {"definer": True} -1684 -1685 -1686class TableFormatProperty(Property): -1687 arg_types = {"this": True} -1688 -1689 -1690class TemporaryProperty(Property): -1691 arg_types = {"global_": True} -1692 -1693 -1694class TransientProperty(Property): -1695 arg_types = {"this": False} +1641 +1642class LockingProperty(Property): +1643 arg_types = { +1644 "this": False, +1645 "kind": True, +1646 "for_or_in": True, +1647 "lock_type": True, +1648 "override": False, +1649 } +1650 +1651 +1652class LogProperty(Property): +1653 arg_types = {"no": True} +1654 +1655 +1656class MaterializedProperty(Property): +1657 arg_types = {"this": False} +1658 +1659 +1660class MergeBlockRatioProperty(Property): +1661 arg_types = {"this": False, "no": False, "default": False, "percent": False} +1662 +1663 +1664class NoPrimaryIndexProperty(Property): +1665 arg_types = {"this": False} +1666 +1667 +1668class OnCommitProperty(Property): +1669 arg_type = {"this": False} +1670 +1671 +1672class PartitionedByProperty(Property): +1673 arg_types = {"this": True} +1674 +1675 +1676class ReturnsProperty(Property): +1677 arg_types = {"this": True, "is_table": False, "table": False} +1678 +1679 +1680class RowFormatProperty(Property): +1681 arg_types = {"this": True} +1682 +1683 +1684class RowFormatDelimitedProperty(Property): +1685 # https://cwiki.apache.org/confluence/display/hive/languagemanual+dml +1686 arg_types = { +1687 "fields": False, +1688 "escaped": False, +1689 "collection_items": False, +1690 "map_keys": False, +1691 "lines": False, +1692 "null": False, +1693 "serde": False, +1694 } +1695 1696 -1697 -1698class VolatilityProperty(Property): -1699 arg_types = {"this": True} +1697class RowFormatSerdeProperty(Property): +1698 arg_types = {"this": True} +1699 1700 -1701 -1702class WithDataProperty(Property): -1703 arg_types = {"no": True, "statistics": False} +1701class SchemaCommentProperty(Property): +1702 arg_types = {"this": True} +1703 1704 -1705 -1706class WithJournalTableProperty(Property): -1707 arg_types = {"this": True} +1705class SerdeProperties(Property): +1706 arg_types = {"expressions": True} +1707 1708 -1709 -1710class Properties(Expression): -1711 arg_types = {"expressions": True} +1709class SetProperty(Property): +1710 arg_types = {"multi": True} +1711 1712 -1713 NAME_TO_PROPERTY = { -1714 "ALGORITHM": AlgorithmProperty, -1715 "AUTO_INCREMENT": AutoIncrementProperty, -1716 "CHARACTER SET": CharacterSetProperty, -1717 "COLLATE": CollateProperty, -1718 "COMMENT": SchemaCommentProperty, -1719 "DEFINER": DefinerProperty, -1720 "DISTKEY": DistKeyProperty, -1721 "DISTSTYLE": DistStyleProperty, -1722 "ENGINE": EngineProperty, -1723 "EXECUTE AS": ExecuteAsProperty, -1724 "FORMAT": FileFormatProperty, -1725 "LANGUAGE": LanguageProperty, -1726 "LOCATION": LocationProperty, -1727 "PARTITIONED_BY": PartitionedByProperty, -1728 "RETURNS": ReturnsProperty, -1729 "SORTKEY": SortKeyProperty, -1730 "TABLE_FORMAT": TableFormatProperty, -1731 } +1713class SortKeyProperty(Property): +1714 arg_types = {"this": True, "compound": False} +1715 +1716 +1717class SqlSecurityProperty(Property): +1718 arg_types = {"definer": True} +1719 +1720 +1721class StabilityProperty(Property): +1722 arg_types = {"this": True} +1723 +1724 +1725class TableFormatProperty(Property): +1726 arg_types = {"this": True} +1727 +1728 +1729class TemporaryProperty(Property): +1730 arg_types = {"global_": True} +1731 1732 -1733 PROPERTY_TO_NAME = {v: k for k, v in NAME_TO_PROPERTY.items()} -1734 -1735 # CREATE property locations -1736 # Form: schema specified -1737 # create [POST_CREATE] -1738 # table a [POST_NAME] -1739 # (b int) [POST_SCHEMA] -1740 # with ([POST_WITH]) -1741 # index (b) [POST_INDEX] -1742 # -1743 # Form: alias selection -1744 # create [POST_CREATE] -1745 # table a [POST_NAME] -1746 # as [POST_ALIAS] (select * from b) [POST_EXPRESSION] -1747 # index (c) [POST_INDEX] -1748 class Location(AutoName): -1749 POST_CREATE = auto() -1750 POST_NAME = auto() -1751 POST_SCHEMA = auto() -1752 POST_WITH = auto() -1753 POST_ALIAS = auto() -1754 POST_EXPRESSION = auto() -1755 POST_INDEX = auto() -1756 UNSUPPORTED = auto() -1757 -1758 @classmethod -1759 def from_dict(cls, properties_dict) -> Properties: -1760 expressions = [] -1761 for key, value in properties_dict.items(): -1762 property_cls = cls.NAME_TO_PROPERTY.get(key.upper()) -1763 if property_cls: -1764 expressions.append(property_cls(this=convert(value))) -1765 else: -1766 expressions.append(Property(this=Literal.string(key), value=convert(value))) -1767 -1768 return cls(expressions=expressions) -1769 -1770 -1771class Qualify(Expression): -1772 pass -1773 +1733class TransientProperty(Property): +1734 arg_types = {"this": False} +1735 +1736 +1737class VolatileProperty(Property): +1738 arg_types = {"this": False} +1739 +1740 +1741class WithDataProperty(Property): +1742 arg_types = {"no": True, "statistics": False} +1743 +1744 +1745class WithJournalTableProperty(Property): +1746 arg_types = {"this": True} +1747 +1748 +1749class Properties(Expression): +1750 arg_types = {"expressions": True} +1751 +1752 NAME_TO_PROPERTY = { +1753 "ALGORITHM": AlgorithmProperty, +1754 "AUTO_INCREMENT": AutoIncrementProperty, +1755 "CHARACTER SET": CharacterSetProperty, +1756 "COLLATE": CollateProperty, +1757 "COMMENT": SchemaCommentProperty, +1758 "DEFINER": DefinerProperty, +1759 "DISTKEY": DistKeyProperty, +1760 "DISTSTYLE": DistStyleProperty, +1761 "ENGINE": EngineProperty, +1762 "EXECUTE AS": ExecuteAsProperty, +1763 "FORMAT": FileFormatProperty, +1764 "LANGUAGE": LanguageProperty, +1765 "LOCATION": LocationProperty, +1766 "PARTITIONED_BY": PartitionedByProperty, +1767 "RETURNS": ReturnsProperty, +1768 "ROW_FORMAT": RowFormatProperty, +1769 "SORTKEY": SortKeyProperty, +1770 "TABLE_FORMAT": TableFormatProperty, +1771 } +1772 +1773 PROPERTY_TO_NAME = {v: k for k, v in NAME_TO_PROPERTY.items()} 1774 -1775# https://www.ibm.com/docs/en/ias?topic=procedures-return-statement-in-sql -1776class Return(Expression): -1777 pass -1778 -1779 -1780class Reference(Expression): -1781 arg_types = {"this": True, "expressions": False, "options": False} -1782 -1783 -1784class Tuple(Expression): -1785 arg_types = {"expressions": False} -1786 -1787 -1788class Subqueryable(Unionable): -1789 def subquery(self, alias=None, copy=True) -> Subquery: -1790 """ -1791 Convert this expression to an aliased expression that can be used as a Subquery. -1792 -1793 Example: -1794 >>> subquery = Select().select("x").from_("tbl").subquery() -1795 >>> Select().select("x").from_(subquery).sql() -1796 'SELECT x FROM (SELECT x FROM tbl)' +1775 # CREATE property locations +1776 # Form: schema specified +1777 # create [POST_CREATE] +1778 # table a [POST_NAME] +1779 # (b int) [POST_SCHEMA] +1780 # with ([POST_WITH]) +1781 # index (b) [POST_INDEX] +1782 # +1783 # Form: alias selection +1784 # create [POST_CREATE] +1785 # table a [POST_NAME] +1786 # as [POST_ALIAS] (select * from b) [POST_EXPRESSION] +1787 # index (c) [POST_INDEX] +1788 class Location(AutoName): +1789 POST_CREATE = auto() +1790 POST_NAME = auto() +1791 POST_SCHEMA = auto() +1792 POST_WITH = auto() +1793 POST_ALIAS = auto() +1794 POST_EXPRESSION = auto() +1795 POST_INDEX = auto() +1796 UNSUPPORTED = auto() 1797 -1798 Args: -1799 alias (str | Identifier): an optional alias for the subquery -1800 copy (bool): if `False`, modify this expression instance in-place. -1801 -1802 Returns: -1803 Alias: the subquery -1804 """ -1805 instance = _maybe_copy(self, copy) -1806 return Subquery( -1807 this=instance, -1808 alias=TableAlias(this=to_identifier(alias)) if alias else None, -1809 ) +1798 @classmethod +1799 def from_dict(cls, properties_dict) -> Properties: +1800 expressions = [] +1801 for key, value in properties_dict.items(): +1802 property_cls = cls.NAME_TO_PROPERTY.get(key.upper()) +1803 if property_cls: +1804 expressions.append(property_cls(this=convert(value))) +1805 else: +1806 expressions.append(Property(this=Literal.string(key), value=convert(value))) +1807 +1808 return cls(expressions=expressions) +1809 1810 -1811 def limit(self, expression, dialect=None, copy=True, **opts) -> Select: -1812 raise NotImplementedError +1811class Qualify(Expression): +1812 pass 1813 -1814 @property -1815 def ctes(self): -1816 with_ = self.args.get("with") -1817 if not with_: -1818 return [] -1819 return with_.expressions -1820 -1821 @property -1822 def selects(self): -1823 raise NotImplementedError("Subqueryable objects must implement `selects`") -1824 -1825 @property -1826 def named_selects(self): -1827 raise NotImplementedError("Subqueryable objects must implement `named_selects`") -1828 -1829 def with_( -1830 self, -1831 alias, -1832 as_, -1833 recursive=None, -1834 append=True, -1835 dialect=None, -1836 copy=True, -1837 **opts, -1838 ): -1839 """ -1840 Append to or set the common table expressions. +1814 +1815# https://www.ibm.com/docs/en/ias?topic=procedures-return-statement-in-sql +1816class Return(Expression): +1817 pass +1818 +1819 +1820class Reference(Expression): +1821 arg_types = {"this": True, "expressions": False, "options": False} +1822 +1823 +1824class Tuple(Expression): +1825 arg_types = {"expressions": False} +1826 +1827 +1828class Subqueryable(Unionable): +1829 def subquery(self, alias=None, copy=True) -> Subquery: +1830 """ +1831 Convert this expression to an aliased expression that can be used as a Subquery. +1832 +1833 Example: +1834 >>> subquery = Select().select("x").from_("tbl").subquery() +1835 >>> Select().select("x").from_(subquery).sql() +1836 'SELECT x FROM (SELECT x FROM tbl)' +1837 +1838 Args: +1839 alias (str | Identifier): an optional alias for the subquery +1840 copy (bool): if `False`, modify this expression instance in-place. 1841 -1842 Example: -1843 >>> Select().with_("tbl2", as_="SELECT * FROM tbl").select("x").from_("tbl2").sql() -1844 'WITH tbl2 AS (SELECT * FROM tbl) SELECT x FROM tbl2' -1845 -1846 Args: -1847 alias (str | Expression): the SQL code string to parse as the table name. -1848 If an `Expression` instance is passed, this is used as-is. -1849 as_ (str | Expression): the SQL code string to parse as the table expression. -1850 If an `Expression` instance is passed, it will be used as-is. -1851 recursive (bool): set the RECURSIVE part of the expression. Defaults to `False`. -1852 append (bool): if `True`, add to any existing expressions. -1853 Otherwise, this resets the expressions. -1854 dialect (str): the dialect used to parse the input expression. -1855 copy (bool): if `False`, modify this expression instance in-place. -1856 opts (kwargs): other options to use to parse the input expressions. -1857 -1858 Returns: -1859 Select: the modified expression. -1860 """ -1861 alias_expression = maybe_parse( -1862 alias, -1863 dialect=dialect, -1864 into=TableAlias, -1865 **opts, -1866 ) -1867 as_expression = maybe_parse( -1868 as_, -1869 dialect=dialect, -1870 **opts, -1871 ) -1872 cte = CTE( -1873 this=as_expression, -1874 alias=alias_expression, -1875 ) -1876 return _apply_child_list_builder( -1877 cte, -1878 instance=self, -1879 arg="with", -1880 append=append, -1881 copy=copy, -1882 into=With, -1883 properties={"recursive": recursive or False}, -1884 ) +1842 Returns: +1843 Alias: the subquery +1844 """ +1845 instance = _maybe_copy(self, copy) +1846 return Subquery( +1847 this=instance, +1848 alias=TableAlias(this=to_identifier(alias)) if alias else None, +1849 ) +1850 +1851 def limit(self, expression, dialect=None, copy=True, **opts) -> Select: +1852 raise NotImplementedError +1853 +1854 @property +1855 def ctes(self): +1856 with_ = self.args.get("with") +1857 if not with_: +1858 return [] +1859 return with_.expressions +1860 +1861 @property +1862 def selects(self): +1863 raise NotImplementedError("Subqueryable objects must implement `selects`") +1864 +1865 @property +1866 def named_selects(self): +1867 raise NotImplementedError("Subqueryable objects must implement `named_selects`") +1868 +1869 def with_( +1870 self, +1871 alias, +1872 as_, +1873 recursive=None, +1874 append=True, +1875 dialect=None, +1876 copy=True, +1877 **opts, +1878 ): +1879 """ +1880 Append to or set the common table expressions. +1881 +1882 Example: +1883 >>> Select().with_("tbl2", as_="SELECT * FROM tbl").select("x").from_("tbl2").sql() +1884 'WITH tbl2 AS (SELECT * FROM tbl) SELECT x FROM tbl2' 1885 -1886 -1887QUERY_MODIFIERS = { -1888 "match": False, -1889 "laterals": False, -1890 "joins": False, -1891 "pivots": False, -1892 "where": False, -1893 "group": False, -1894 "having": False, -1895 "qualify": False, -1896 "windows": False, -1897 "distribute": False, -1898 "sort": False, -1899 "cluster": False, -1900 "order": False, -1901 "limit": False, -1902 "offset": False, -1903 "lock": False, -1904 "sample": False, -1905} -1906 -1907 -1908class Table(Expression): -1909 arg_types = { -1910 "this": True, -1911 "alias": False, -1912 "db": False, -1913 "catalog": False, -1914 "laterals": False, -1915 "joins": False, -1916 "pivots": False, -1917 "hints": False, -1918 "system_time": False, -1919 } -1920 -1921 @property -1922 def db(self) -> str: -1923 return self.text("db") -1924 -1925 @property -1926 def catalog(self) -> str: -1927 return self.text("catalog") -1928 -1929 -1930# See the TSQL "Querying data in a system-versioned temporal table" page -1931class SystemTime(Expression): -1932 arg_types = { -1933 "this": False, -1934 "expression": False, -1935 "kind": True, -1936 } -1937 -1938 -1939class Union(Subqueryable): -1940 arg_types = { -1941 "with": False, -1942 "this": True, -1943 "expression": True, -1944 "distinct": False, -1945 **QUERY_MODIFIERS, -1946 } +1886 Args: +1887 alias (str | Expression): the SQL code string to parse as the table name. +1888 If an `Expression` instance is passed, this is used as-is. +1889 as_ (str | Expression): the SQL code string to parse as the table expression. +1890 If an `Expression` instance is passed, it will be used as-is. +1891 recursive (bool): set the RECURSIVE part of the expression. Defaults to `False`. +1892 append (bool): if `True`, add to any existing expressions. +1893 Otherwise, this resets the expressions. +1894 dialect (str): the dialect used to parse the input expression. +1895 copy (bool): if `False`, modify this expression instance in-place. +1896 opts (kwargs): other options to use to parse the input expressions. +1897 +1898 Returns: +1899 Select: the modified expression. +1900 """ +1901 alias_expression = maybe_parse( +1902 alias, +1903 dialect=dialect, +1904 into=TableAlias, +1905 **opts, +1906 ) +1907 as_expression = maybe_parse( +1908 as_, +1909 dialect=dialect, +1910 **opts, +1911 ) +1912 cte = CTE( +1913 this=as_expression, +1914 alias=alias_expression, +1915 ) +1916 return _apply_child_list_builder( +1917 cte, +1918 instance=self, +1919 arg="with", +1920 append=append, +1921 copy=copy, +1922 into=With, +1923 properties={"recursive": recursive or False}, +1924 ) +1925 +1926 +1927QUERY_MODIFIERS = { +1928 "match": False, +1929 "laterals": False, +1930 "joins": False, +1931 "pivots": False, +1932 "where": False, +1933 "group": False, +1934 "having": False, +1935 "qualify": False, +1936 "windows": False, +1937 "distribute": False, +1938 "sort": False, +1939 "cluster": False, +1940 "order": False, +1941 "limit": False, +1942 "offset": False, +1943 "lock": False, +1944 "sample": False, +1945} +1946 1947 -1948 def limit(self, expression, dialect=None, copy=True, **opts) -> Select: -1949 """ -1950 Set the LIMIT expression. -1951 -1952 Example: -1953 >>> select("1").union(select("1")).limit(1).sql() -1954 'SELECT * FROM (SELECT 1 UNION SELECT 1) AS _l_0 LIMIT 1' -1955 -1956 Args: -1957 expression (str | int | Expression): the SQL code string to parse. -1958 This can also be an integer. -1959 If a `Limit` instance is passed, this is used as-is. -1960 If another `Expression` instance is passed, it will be wrapped in a `Limit`. -1961 dialect (str): the dialect used to parse the input expression. -1962 copy (bool): if `False`, modify this expression instance in-place. -1963 opts (kwargs): other options to use to parse the input expressions. +1948class Table(Expression): +1949 arg_types = { +1950 "this": True, +1951 "alias": False, +1952 "db": False, +1953 "catalog": False, +1954 "laterals": False, +1955 "joins": False, +1956 "pivots": False, +1957 "hints": False, +1958 "system_time": False, +1959 } +1960 +1961 @property +1962 def db(self) -> str: +1963 return self.text("db") 1964 -1965 Returns: -1966 Select: The limited subqueryable. -1967 """ -1968 return ( -1969 select("*") -1970 .from_(self.subquery(alias="_l_0", copy=copy)) -1971 .limit(expression, dialect=dialect, copy=False, **opts) -1972 ) -1973 -1974 def select( -1975 self, -1976 *expressions: ExpOrStr, -1977 append: bool = True, -1978 dialect: DialectType = None, -1979 copy: bool = True, -1980 **opts, -1981 ) -> Union: -1982 """Append to or set the SELECT of the union recursively. -1983 -1984 Example: -1985 >>> from sqlglot import parse_one -1986 >>> parse_one("select a from x union select a from y union select a from z").select("b").sql() -1987 'SELECT a, b FROM x UNION SELECT a, b FROM y UNION SELECT a, b FROM z' -1988 -1989 Args: -1990 *expressions: the SQL code strings to parse. -1991 If an `Expression` instance is passed, it will be used as-is. -1992 append: if `True`, add to any existing expressions. -1993 Otherwise, this resets the expressions. -1994 dialect: the dialect used to parse the input expressions. -1995 copy: if `False`, modify this expression instance in-place. -1996 opts: other options to use to parse the input expressions. -1997 -1998 Returns: -1999 Union: the modified expression. -2000 """ -2001 this = self.copy() if copy else self -2002 this.this.unnest().select(*expressions, append=append, dialect=dialect, copy=False, **opts) -2003 this.expression.unnest().select( -2004 *expressions, append=append, dialect=dialect, copy=False, **opts -2005 ) -2006 return this -2007 -2008 @property -2009 def named_selects(self): -2010 return self.this.unnest().named_selects -2011 -2012 @property -2013 def is_star(self) -> bool: -2014 return self.this.is_star or self.expression.is_star -2015 -2016 @property -2017 def selects(self): -2018 return self.this.unnest().selects -2019 -2020 @property -2021 def left(self): -2022 return self.this +1965 @property +1966 def catalog(self) -> str: +1967 return self.text("catalog") +1968 +1969 +1970# See the TSQL "Querying data in a system-versioned temporal table" page +1971class SystemTime(Expression): +1972 arg_types = { +1973 "this": False, +1974 "expression": False, +1975 "kind": True, +1976 } +1977 +1978 +1979class Union(Subqueryable): +1980 arg_types = { +1981 "with": False, +1982 "this": True, +1983 "expression": True, +1984 "distinct": False, +1985 **QUERY_MODIFIERS, +1986 } +1987 +1988 def limit(self, expression, dialect=None, copy=True, **opts) -> Select: +1989 """ +1990 Set the LIMIT expression. +1991 +1992 Example: +1993 >>> select("1").union(select("1")).limit(1).sql() +1994 'SELECT * FROM (SELECT 1 UNION SELECT 1) AS _l_0 LIMIT 1' +1995 +1996 Args: +1997 expression (str | int | Expression): the SQL code string to parse. +1998 This can also be an integer. +1999 If a `Limit` instance is passed, this is used as-is. +2000 If another `Expression` instance is passed, it will be wrapped in a `Limit`. +2001 dialect (str): the dialect used to parse the input expression. +2002 copy (bool): if `False`, modify this expression instance in-place. +2003 opts (kwargs): other options to use to parse the input expressions. +2004 +2005 Returns: +2006 Select: The limited subqueryable. +2007 """ +2008 return ( +2009 select("*") +2010 .from_(self.subquery(alias="_l_0", copy=copy)) +2011 .limit(expression, dialect=dialect, copy=False, **opts) +2012 ) +2013 +2014 def select( +2015 self, +2016 *expressions: ExpOrStr, +2017 append: bool = True, +2018 dialect: DialectType = None, +2019 copy: bool = True, +2020 **opts, +2021 ) -> Union: +2022 """Append to or set the SELECT of the union recursively. 2023 -2024 @property -2025 def right(self): -2026 return self.expression -2027 +2024 Example: +2025 >>> from sqlglot import parse_one +2026 >>> parse_one("select a from x union select a from y union select a from z").select("b").sql() +2027 'SELECT a, b FROM x UNION SELECT a, b FROM y UNION SELECT a, b FROM z' 2028 -2029class Except(Union): -2030 pass -2031 -2032 -2033class Intersect(Union): -2034 pass -2035 -2036 -2037class Unnest(UDTF): -2038 arg_types = { -2039 "expressions": True, -2040 "ordinality": False, -2041 "alias": False, -2042 "offset": False, -2043 } -2044 -2045 -2046class Update(Expression): -2047 arg_types = { -2048 "with": False, -2049 "this": False, -2050 "expressions": True, -2051 "from": False, -2052 "where": False, -2053 "returning": False, -2054 } +2029 Args: +2030 *expressions: the SQL code strings to parse. +2031 If an `Expression` instance is passed, it will be used as-is. +2032 append: if `True`, add to any existing expressions. +2033 Otherwise, this resets the expressions. +2034 dialect: the dialect used to parse the input expressions. +2035 copy: if `False`, modify this expression instance in-place. +2036 opts: other options to use to parse the input expressions. +2037 +2038 Returns: +2039 Union: the modified expression. +2040 """ +2041 this = self.copy() if copy else self +2042 this.this.unnest().select(*expressions, append=append, dialect=dialect, copy=False, **opts) +2043 this.expression.unnest().select( +2044 *expressions, append=append, dialect=dialect, copy=False, **opts +2045 ) +2046 return this +2047 +2048 @property +2049 def named_selects(self): +2050 return self.this.unnest().named_selects +2051 +2052 @property +2053 def is_star(self) -> bool: +2054 return self.this.is_star or self.expression.is_star 2055 -2056 -2057class Values(UDTF): -2058 arg_types = { -2059 "expressions": True, -2060 "ordinality": False, -2061 "alias": False, -2062 } +2056 @property +2057 def selects(self): +2058 return self.this.unnest().selects +2059 +2060 @property +2061 def left(self): +2062 return self.this 2063 -2064 -2065class Var(Expression): -2066 pass +2064 @property +2065 def right(self): +2066 return self.expression 2067 2068 -2069class Schema(Expression): -2070 arg_types = {"this": False, "expressions": False} +2069class Except(Union): +2070 pass 2071 2072 -2073# Used to represent the FOR UPDATE and FOR SHARE locking read types. -2074# https://dev.mysql.com/doc/refman/8.0/en/innodb-locking-reads.html -2075class Lock(Expression): -2076 arg_types = {"update": True} -2077 -2078 -2079class Select(Subqueryable): -2080 arg_types = { -2081 "with": False, -2082 "kind": False, -2083 "expressions": False, -2084 "hint": False, -2085 "distinct": False, -2086 "into": False, -2087 "from": False, -2088 **QUERY_MODIFIERS, -2089 } -2090 -2091 def from_(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select: -2092 """ -2093 Set the FROM expression. -2094 -2095 Example: -2096 >>> Select().from_("tbl").select("x").sql() -2097 'SELECT x FROM tbl' -2098 -2099 Args: -2100 *expressions (str | Expression): the SQL code strings to parse. -2101 If a `From` instance is passed, this is used as-is. -2102 If another `Expression` instance is passed, it will be wrapped in a `From`. -2103 append (bool): if `True`, add to any existing expressions. -2104 Otherwise, this flattens all the `From` expression into a single expression. -2105 dialect (str): the dialect used to parse the input expression. -2106 copy (bool): if `False`, modify this expression instance in-place. -2107 opts (kwargs): other options to use to parse the input expressions. +2073class Intersect(Union): +2074 pass +2075 +2076 +2077class Unnest(UDTF): +2078 arg_types = { +2079 "expressions": True, +2080 "ordinality": False, +2081 "alias": False, +2082 "offset": False, +2083 } +2084 +2085 +2086class Update(Expression): +2087 arg_types = { +2088 "with": False, +2089 "this": False, +2090 "expressions": True, +2091 "from": False, +2092 "where": False, +2093 "returning": False, +2094 } +2095 +2096 +2097class Values(UDTF): +2098 arg_types = { +2099 "expressions": True, +2100 "ordinality": False, +2101 "alias": False, +2102 } +2103 +2104 +2105class Var(Expression): +2106 pass +2107 2108 -2109 Returns: -2110 Select: the modified expression. -2111 """ -2112 return _apply_child_list_builder( -2113 *expressions, -2114 instance=self, -2115 arg="from", -2116 append=append, -2117 copy=copy, -2118 prefix="FROM", -2119 into=From, -2120 dialect=dialect, -2121 **opts, -2122 ) -2123 -2124 def group_by(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select: -2125 """ -2126 Set the GROUP BY expression. -2127 -2128 Example: -2129 >>> Select().from_("tbl").select("x", "COUNT(1)").group_by("x").sql() -2130 'SELECT x, COUNT(1) FROM tbl GROUP BY x' -2131 -2132 Args: -2133 *expressions (str | Expression): the SQL code strings to parse. -2134 If a `Group` instance is passed, this is used as-is. -2135 If another `Expression` instance is passed, it will be wrapped in a `Group`. -2136 If nothing is passed in then a group by is not applied to the expression -2137 append (bool): if `True`, add to any existing expressions. -2138 Otherwise, this flattens all the `Group` expression into a single expression. -2139 dialect (str): the dialect used to parse the input expression. -2140 copy (bool): if `False`, modify this expression instance in-place. -2141 opts (kwargs): other options to use to parse the input expressions. -2142 -2143 Returns: -2144 Select: the modified expression. -2145 """ -2146 if not expressions: -2147 return self if not copy else self.copy() -2148 return _apply_child_list_builder( -2149 *expressions, -2150 instance=self, -2151 arg="group", -2152 append=append, -2153 copy=copy, -2154 prefix="GROUP BY", -2155 into=Group, -2156 dialect=dialect, -2157 **opts, -2158 ) -2159 -2160 def order_by(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select: -2161 """ -2162 Set the ORDER BY expression. +2109class Schema(Expression): +2110 arg_types = {"this": False, "expressions": False} +2111 +2112 +2113# Used to represent the FOR UPDATE and FOR SHARE locking read types. +2114# https://dev.mysql.com/doc/refman/8.0/en/innodb-locking-reads.html +2115class Lock(Expression): +2116 arg_types = {"update": True} +2117 +2118 +2119class Select(Subqueryable): +2120 arg_types = { +2121 "with": False, +2122 "kind": False, +2123 "expressions": False, +2124 "hint": False, +2125 "distinct": False, +2126 "into": False, +2127 "from": False, +2128 **QUERY_MODIFIERS, +2129 } +2130 +2131 def from_(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select: +2132 """ +2133 Set the FROM expression. +2134 +2135 Example: +2136 >>> Select().from_("tbl").select("x").sql() +2137 'SELECT x FROM tbl' +2138 +2139 Args: +2140 *expressions (str | Expression): the SQL code strings to parse. +2141 If a `From` instance is passed, this is used as-is. +2142 If another `Expression` instance is passed, it will be wrapped in a `From`. +2143 append (bool): if `True`, add to any existing expressions. +2144 Otherwise, this flattens all the `From` expression into a single expression. +2145 dialect (str): the dialect used to parse the input expression. +2146 copy (bool): if `False`, modify this expression instance in-place. +2147 opts (kwargs): other options to use to parse the input expressions. +2148 +2149 Returns: +2150 Select: the modified expression. +2151 """ +2152 return _apply_child_list_builder( +2153 *expressions, +2154 instance=self, +2155 arg="from", +2156 append=append, +2157 copy=copy, +2158 prefix="FROM", +2159 into=From, +2160 dialect=dialect, +2161 **opts, +2162 ) 2163 -2164 Example: -2165 >>> Select().from_("tbl").select("x").order_by("x DESC").sql() -2166 'SELECT x FROM tbl ORDER BY x DESC' +2164 def group_by(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select: +2165 """ +2166 Set the GROUP BY expression. 2167 -2168 Args: -2169 *expressions (str | Expression): the SQL code strings to parse. -2170 If a `Group` instance is passed, this is used as-is. -2171 If another `Expression` instance is passed, it will be wrapped in a `Order`. -2172 append (bool): if `True`, add to any existing expressions. -2173 Otherwise, this flattens all the `Order` expression into a single expression. -2174 dialect (str): the dialect used to parse the input expression. -2175 copy (bool): if `False`, modify this expression instance in-place. -2176 opts (kwargs): other options to use to parse the input expressions. -2177 -2178 Returns: -2179 Select: the modified expression. -2180 """ -2181 return _apply_child_list_builder( -2182 *expressions, -2183 instance=self, -2184 arg="order", -2185 append=append, -2186 copy=copy, -2187 prefix="ORDER BY", -2188 into=Order, -2189 dialect=dialect, -2190 **opts, -2191 ) -2192 -2193 def sort_by(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select: -2194 """ -2195 Set the SORT BY expression. -2196 -2197 Example: -2198 >>> Select().from_("tbl").select("x").sort_by("x DESC").sql() -2199 'SELECT x FROM tbl SORT BY x DESC' -2200 -2201 Args: -2202 *expressions (str | Expression): the SQL code strings to parse. -2203 If a `Group` instance is passed, this is used as-is. -2204 If another `Expression` instance is passed, it will be wrapped in a `SORT`. -2205 append (bool): if `True`, add to any existing expressions. -2206 Otherwise, this flattens all the `Order` expression into a single expression. -2207 dialect (str): the dialect used to parse the input expression. -2208 copy (bool): if `False`, modify this expression instance in-place. -2209 opts (kwargs): other options to use to parse the input expressions. -2210 -2211 Returns: -2212 Select: the modified expression. -2213 """ -2214 return _apply_child_list_builder( -2215 *expressions, -2216 instance=self, -2217 arg="sort", -2218 append=append, -2219 copy=copy, -2220 prefix="SORT BY", -2221 into=Sort, -2222 dialect=dialect, -2223 **opts, -2224 ) -2225 -2226 def cluster_by(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select: -2227 """ -2228 Set the CLUSTER BY expression. -2229 -2230 Example: -2231 >>> Select().from_("tbl").select("x").cluster_by("x DESC").sql() -2232 'SELECT x FROM tbl CLUSTER BY x DESC' -2233 -2234 Args: -2235 *expressions (str | Expression): the SQL code strings to parse. -2236 If a `Group` instance is passed, this is used as-is. -2237 If another `Expression` instance is passed, it will be wrapped in a `Cluster`. -2238 append (bool): if `True`, add to any existing expressions. -2239 Otherwise, this flattens all the `Order` expression into a single expression. -2240 dialect (str): the dialect used to parse the input expression. -2241 copy (bool): if `False`, modify this expression instance in-place. -2242 opts (kwargs): other options to use to parse the input expressions. -2243 -2244 Returns: -2245 Select: the modified expression. -2246 """ -2247 return _apply_child_list_builder( -2248 *expressions, -2249 instance=self, -2250 arg="cluster", -2251 append=append, -2252 copy=copy, -2253 prefix="CLUSTER BY", -2254 into=Cluster, -2255 dialect=dialect, -2256 **opts, -2257 ) -2258 -2259 def limit(self, expression, dialect=None, copy=True, **opts) -> Select: -2260 """ -2261 Set the LIMIT expression. -2262 -2263 Example: -2264 >>> Select().from_("tbl").select("x").limit(10).sql() -2265 'SELECT x FROM tbl LIMIT 10' -2266 -2267 Args: -2268 expression (str | int | Expression): the SQL code string to parse. -2269 This can also be an integer. -2270 If a `Limit` instance is passed, this is used as-is. -2271 If another `Expression` instance is passed, it will be wrapped in a `Limit`. -2272 dialect (str): the dialect used to parse the input expression. -2273 copy (bool): if `False`, modify this expression instance in-place. -2274 opts (kwargs): other options to use to parse the input expressions. -2275 -2276 Returns: -2277 Select: the modified expression. -2278 """ -2279 return _apply_builder( -2280 expression=expression, -2281 instance=self, -2282 arg="limit", -2283 into=Limit, -2284 prefix="LIMIT", -2285 dialect=dialect, -2286 copy=copy, -2287 **opts, -2288 ) -2289 -2290 def offset(self, expression, dialect=None, copy=True, **opts) -> Select: -2291 """ -2292 Set the OFFSET expression. -2293 -2294 Example: -2295 >>> Select().from_("tbl").select("x").offset(10).sql() -2296 'SELECT x FROM tbl OFFSET 10' -2297 -2298 Args: -2299 expression (str | int | Expression): the SQL code string to parse. -2300 This can also be an integer. -2301 If a `Offset` instance is passed, this is used as-is. -2302 If another `Expression` instance is passed, it will be wrapped in a `Offset`. -2303 dialect (str): the dialect used to parse the input expression. -2304 copy (bool): if `False`, modify this expression instance in-place. -2305 opts (kwargs): other options to use to parse the input expressions. +2168 Example: +2169 >>> Select().from_("tbl").select("x", "COUNT(1)").group_by("x").sql() +2170 'SELECT x, COUNT(1) FROM tbl GROUP BY x' +2171 +2172 Args: +2173 *expressions (str | Expression): the SQL code strings to parse. +2174 If a `Group` instance is passed, this is used as-is. +2175 If another `Expression` instance is passed, it will be wrapped in a `Group`. +2176 If nothing is passed in then a group by is not applied to the expression +2177 append (bool): if `True`, add to any existing expressions. +2178 Otherwise, this flattens all the `Group` expression into a single expression. +2179 dialect (str): the dialect used to parse the input expression. +2180 copy (bool): if `False`, modify this expression instance in-place. +2181 opts (kwargs): other options to use to parse the input expressions. +2182 +2183 Returns: +2184 Select: the modified expression. +2185 """ +2186 if not expressions: +2187 return self if not copy else self.copy() +2188 return _apply_child_list_builder( +2189 *expressions, +2190 instance=self, +2191 arg="group", +2192 append=append, +2193 copy=copy, +2194 prefix="GROUP BY", +2195 into=Group, +2196 dialect=dialect, +2197 **opts, +2198 ) +2199 +2200 def order_by(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select: +2201 """ +2202 Set the ORDER BY expression. +2203 +2204 Example: +2205 >>> Select().from_("tbl").select("x").order_by("x DESC").sql() +2206 'SELECT x FROM tbl ORDER BY x DESC' +2207 +2208 Args: +2209 *expressions (str | Expression): the SQL code strings to parse. +2210 If a `Group` instance is passed, this is used as-is. +2211 If another `Expression` instance is passed, it will be wrapped in a `Order`. +2212 append (bool): if `True`, add to any existing expressions. +2213 Otherwise, this flattens all the `Order` expression into a single expression. +2214 dialect (str): the dialect used to parse the input expression. +2215 copy (bool): if `False`, modify this expression instance in-place. +2216 opts (kwargs): other options to use to parse the input expressions. +2217 +2218 Returns: +2219 Select: the modified expression. +2220 """ +2221 return _apply_child_list_builder( +2222 *expressions, +2223 instance=self, +2224 arg="order", +2225 append=append, +2226 copy=copy, +2227 prefix="ORDER BY", +2228 into=Order, +2229 dialect=dialect, +2230 **opts, +2231 ) +2232 +2233 def sort_by(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select: +2234 """ +2235 Set the SORT BY expression. +2236 +2237 Example: +2238 >>> Select().from_("tbl").select("x").sort_by("x DESC").sql() +2239 'SELECT x FROM tbl SORT BY x DESC' +2240 +2241 Args: +2242 *expressions (str | Expression): the SQL code strings to parse. +2243 If a `Group` instance is passed, this is used as-is. +2244 If another `Expression` instance is passed, it will be wrapped in a `SORT`. +2245 append (bool): if `True`, add to any existing expressions. +2246 Otherwise, this flattens all the `Order` expression into a single expression. +2247 dialect (str): the dialect used to parse the input expression. +2248 copy (bool): if `False`, modify this expression instance in-place. +2249 opts (kwargs): other options to use to parse the input expressions. +2250 +2251 Returns: +2252 Select: the modified expression. +2253 """ +2254 return _apply_child_list_builder( +2255 *expressions, +2256 instance=self, +2257 arg="sort", +2258 append=append, +2259 copy=copy, +2260 prefix="SORT BY", +2261 into=Sort, +2262 dialect=dialect, +2263 **opts, +2264 ) +2265 +2266 def cluster_by(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select: +2267 """ +2268 Set the CLUSTER BY expression. +2269 +2270 Example: +2271 >>> Select().from_("tbl").select("x").cluster_by("x DESC").sql() +2272 'SELECT x FROM tbl CLUSTER BY x DESC' +2273 +2274 Args: +2275 *expressions (str | Expression): the SQL code strings to parse. +2276 If a `Group` instance is passed, this is used as-is. +2277 If another `Expression` instance is passed, it will be wrapped in a `Cluster`. +2278 append (bool): if `True`, add to any existing expressions. +2279 Otherwise, this flattens all the `Order` expression into a single expression. +2280 dialect (str): the dialect used to parse the input expression. +2281 copy (bool): if `False`, modify this expression instance in-place. +2282 opts (kwargs): other options to use to parse the input expressions. +2283 +2284 Returns: +2285 Select: the modified expression. +2286 """ +2287 return _apply_child_list_builder( +2288 *expressions, +2289 instance=self, +2290 arg="cluster", +2291 append=append, +2292 copy=copy, +2293 prefix="CLUSTER BY", +2294 into=Cluster, +2295 dialect=dialect, +2296 **opts, +2297 ) +2298 +2299 def limit(self, expression, dialect=None, copy=True, **opts) -> Select: +2300 """ +2301 Set the LIMIT expression. +2302 +2303 Example: +2304 >>> Select().from_("tbl").select("x").limit(10).sql() +2305 'SELECT x FROM tbl LIMIT 10' 2306 -2307 Returns: -2308 Select: the modified expression. -2309 """ -2310 return _apply_builder( -2311 expression=expression, -2312 instance=self, -2313 arg="offset", -2314 into=Offset, -2315 prefix="OFFSET", -2316 dialect=dialect, -2317 copy=copy, -2318 **opts, -2319 ) -2320 -2321 def select( -2322 self, -2323 *expressions: ExpOrStr, -2324 append: bool = True, -2325 dialect: DialectType = None, -2326 copy: bool = True, -2327 **opts, -2328 ) -> Select: -2329 """ -2330 Append to or set the SELECT expressions. -2331 -2332 Example: -2333 >>> Select().select("x", "y").sql() -2334 'SELECT x, y' -2335 -2336 Args: -2337 *expressions: the SQL code strings to parse. -2338 If an `Expression` instance is passed, it will be used as-is. -2339 append: if `True`, add to any existing expressions. -2340 Otherwise, this resets the expressions. -2341 dialect: the dialect used to parse the input expressions. -2342 copy: if `False`, modify this expression instance in-place. -2343 opts: other options to use to parse the input expressions. -2344 -2345 Returns: -2346 Select: the modified expression. -2347 """ -2348 return _apply_list_builder( -2349 *expressions, -2350 instance=self, -2351 arg="expressions", -2352 append=append, -2353 dialect=dialect, -2354 copy=copy, -2355 **opts, -2356 ) -2357 -2358 def lateral(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select: -2359 """ -2360 Append to or set the LATERAL expressions. -2361 -2362 Example: -2363 >>> Select().select("x").lateral("OUTER explode(y) tbl2 AS z").from_("tbl").sql() -2364 'SELECT x FROM tbl LATERAL VIEW OUTER EXPLODE(y) tbl2 AS z' -2365 -2366 Args: -2367 *expressions (str | Expression): the SQL code strings to parse. -2368 If an `Expression` instance is passed, it will be used as-is. -2369 append (bool): if `True`, add to any existing expressions. -2370 Otherwise, this resets the expressions. -2371 dialect (str): the dialect used to parse the input expressions. -2372 copy (bool): if `False`, modify this expression instance in-place. -2373 opts (kwargs): other options to use to parse the input expressions. -2374 -2375 Returns: -2376 Select: the modified expression. -2377 """ -2378 return _apply_list_builder( -2379 *expressions, -2380 instance=self, -2381 arg="laterals", -2382 append=append, -2383 into=Lateral, -2384 prefix="LATERAL VIEW", -2385 dialect=dialect, -2386 copy=copy, -2387 **opts, -2388 ) -2389 -2390 def join( -2391 self, -2392 expression, -2393 on=None, -2394 using=None, -2395 append=True, -2396 join_type=None, -2397 join_alias=None, -2398 dialect=None, -2399 copy=True, -2400 **opts, -2401 ) -> Select: -2402 """ -2403 Append to or set the JOIN expressions. -2404 -2405 Example: -2406 >>> Select().select("*").from_("tbl").join("tbl2", on="tbl1.y = tbl2.y").sql() -2407 'SELECT * FROM tbl JOIN tbl2 ON tbl1.y = tbl2.y' -2408 -2409 >>> Select().select("1").from_("a").join("b", using=["x", "y", "z"]).sql() -2410 'SELECT 1 FROM a JOIN b USING (x, y, z)' -2411 -2412 Use `join_type` to change the type of join: -2413 -2414 >>> Select().select("*").from_("tbl").join("tbl2", on="tbl1.y = tbl2.y", join_type="left outer").sql() -2415 'SELECT * FROM tbl LEFT OUTER JOIN tbl2 ON tbl1.y = tbl2.y' -2416 -2417 Args: -2418 expression (str | Expression): the SQL code string to parse. -2419 If an `Expression` instance is passed, it will be used as-is. -2420 on (str | Expression): optionally specify the join "on" criteria as a SQL string. -2421 If an `Expression` instance is passed, it will be used as-is. -2422 using (str | Expression): optionally specify the join "using" criteria as a SQL string. -2423 If an `Expression` instance is passed, it will be used as-is. -2424 append (bool): if `True`, add to any existing expressions. -2425 Otherwise, this resets the expressions. -2426 join_type (str): If set, alter the parsed join type -2427 dialect (str): the dialect used to parse the input expressions. -2428 copy (bool): if `False`, modify this expression instance in-place. -2429 opts (kwargs): other options to use to parse the input expressions. -2430 -2431 Returns: -2432 Select: the modified expression. -2433 """ -2434 parse_args = {"dialect": dialect, **opts} -2435 -2436 try: -2437 expression = maybe_parse(expression, into=Join, prefix="JOIN", **parse_args) -2438 except ParseError: -2439 expression = maybe_parse(expression, into=(Join, Expression), **parse_args) -2440 -2441 join = expression if isinstance(expression, Join) else Join(this=expression) -2442 -2443 if isinstance(join.this, Select): -2444 join.this.replace(join.this.subquery()) -2445 -2446 if join_type: -2447 natural: t.Optional[Token] -2448 side: t.Optional[Token] -2449 kind: t.Optional[Token] -2450 -2451 natural, side, kind = maybe_parse(join_type, into="JOIN_TYPE", **parse_args) # type: ignore -2452 -2453 if natural: -2454 join.set("natural", True) -2455 if side: -2456 join.set("side", side.text) -2457 if kind: -2458 join.set("kind", kind.text) -2459 -2460 if on: -2461 on = and_(*ensure_collection(on), dialect=dialect, **opts) -2462 join.set("on", on) -2463 -2464 if using: -2465 join = _apply_list_builder( -2466 *ensure_collection(using), -2467 instance=join, -2468 arg="using", -2469 append=append, -2470 copy=copy, -2471 **opts, -2472 ) -2473 -2474 if join_alias: -2475 join.set("this", alias_(join.this, join_alias, table=True)) -2476 return _apply_list_builder( -2477 join, -2478 instance=self, -2479 arg="joins", -2480 append=append, -2481 copy=copy, -2482 **opts, -2483 ) -2484 -2485 def where(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select: -2486 """ -2487 Append to or set the WHERE expressions. -2488 -2489 Example: -2490 >>> Select().select("x").from_("tbl").where("x = 'a' OR x < 'b'").sql() -2491 "SELECT x FROM tbl WHERE x = 'a' OR x < 'b'" +2307 Args: +2308 expression (str | int | Expression): the SQL code string to parse. +2309 This can also be an integer. +2310 If a `Limit` instance is passed, this is used as-is. +2311 If another `Expression` instance is passed, it will be wrapped in a `Limit`. +2312 dialect (str): the dialect used to parse the input expression. +2313 copy (bool): if `False`, modify this expression instance in-place. +2314 opts (kwargs): other options to use to parse the input expressions. +2315 +2316 Returns: +2317 Select: the modified expression. +2318 """ +2319 return _apply_builder( +2320 expression=expression, +2321 instance=self, +2322 arg="limit", +2323 into=Limit, +2324 prefix="LIMIT", +2325 dialect=dialect, +2326 copy=copy, +2327 **opts, +2328 ) +2329 +2330 def offset(self, expression, dialect=None, copy=True, **opts) -> Select: +2331 """ +2332 Set the OFFSET expression. +2333 +2334 Example: +2335 >>> Select().from_("tbl").select("x").offset(10).sql() +2336 'SELECT x FROM tbl OFFSET 10' +2337 +2338 Args: +2339 expression (str | int | Expression): the SQL code string to parse. +2340 This can also be an integer. +2341 If a `Offset` instance is passed, this is used as-is. +2342 If another `Expression` instance is passed, it will be wrapped in a `Offset`. +2343 dialect (str): the dialect used to parse the input expression. +2344 copy (bool): if `False`, modify this expression instance in-place. +2345 opts (kwargs): other options to use to parse the input expressions. +2346 +2347 Returns: +2348 Select: the modified expression. +2349 """ +2350 return _apply_builder( +2351 expression=expression, +2352 instance=self, +2353 arg="offset", +2354 into=Offset, +2355 prefix="OFFSET", +2356 dialect=dialect, +2357 copy=copy, +2358 **opts, +2359 ) +2360 +2361 def select( +2362 self, +2363 *expressions: ExpOrStr, +2364 append: bool = True, +2365 dialect: DialectType = None, +2366 copy: bool = True, +2367 **opts, +2368 ) -> Select: +2369 """ +2370 Append to or set the SELECT expressions. +2371 +2372 Example: +2373 >>> Select().select("x", "y").sql() +2374 'SELECT x, y' +2375 +2376 Args: +2377 *expressions: the SQL code strings to parse. +2378 If an `Expression` instance is passed, it will be used as-is. +2379 append: if `True`, add to any existing expressions. +2380 Otherwise, this resets the expressions. +2381 dialect: the dialect used to parse the input expressions. +2382 copy: if `False`, modify this expression instance in-place. +2383 opts: other options to use to parse the input expressions. +2384 +2385 Returns: +2386 Select: the modified expression. +2387 """ +2388 return _apply_list_builder( +2389 *expressions, +2390 instance=self, +2391 arg="expressions", +2392 append=append, +2393 dialect=dialect, +2394 copy=copy, +2395 **opts, +2396 ) +2397 +2398 def lateral(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select: +2399 """ +2400 Append to or set the LATERAL expressions. +2401 +2402 Example: +2403 >>> Select().select("x").lateral("OUTER explode(y) tbl2 AS z").from_("tbl").sql() +2404 'SELECT x FROM tbl LATERAL VIEW OUTER EXPLODE(y) tbl2 AS z' +2405 +2406 Args: +2407 *expressions (str | Expression): the SQL code strings to parse. +2408 If an `Expression` instance is passed, it will be used as-is. +2409 append (bool): if `True`, add to any existing expressions. +2410 Otherwise, this resets the expressions. +2411 dialect (str): the dialect used to parse the input expressions. +2412 copy (bool): if `False`, modify this expression instance in-place. +2413 opts (kwargs): other options to use to parse the input expressions. +2414 +2415 Returns: +2416 Select: the modified expression. +2417 """ +2418 return _apply_list_builder( +2419 *expressions, +2420 instance=self, +2421 arg="laterals", +2422 append=append, +2423 into=Lateral, +2424 prefix="LATERAL VIEW", +2425 dialect=dialect, +2426 copy=copy, +2427 **opts, +2428 ) +2429 +2430 def join( +2431 self, +2432 expression, +2433 on=None, +2434 using=None, +2435 append=True, +2436 join_type=None, +2437 join_alias=None, +2438 dialect=None, +2439 copy=True, +2440 **opts, +2441 ) -> Select: +2442 """ +2443 Append to or set the JOIN expressions. +2444 +2445 Example: +2446 >>> Select().select("*").from_("tbl").join("tbl2", on="tbl1.y = tbl2.y").sql() +2447 'SELECT * FROM tbl JOIN tbl2 ON tbl1.y = tbl2.y' +2448 +2449 >>> Select().select("1").from_("a").join("b", using=["x", "y", "z"]).sql() +2450 'SELECT 1 FROM a JOIN b USING (x, y, z)' +2451 +2452 Use `join_type` to change the type of join: +2453 +2454 >>> Select().select("*").from_("tbl").join("tbl2", on="tbl1.y = tbl2.y", join_type="left outer").sql() +2455 'SELECT * FROM tbl LEFT OUTER JOIN tbl2 ON tbl1.y = tbl2.y' +2456 +2457 Args: +2458 expression (str | Expression): the SQL code string to parse. +2459 If an `Expression` instance is passed, it will be used as-is. +2460 on (str | Expression): optionally specify the join "on" criteria as a SQL string. +2461 If an `Expression` instance is passed, it will be used as-is. +2462 using (str | Expression): optionally specify the join "using" criteria as a SQL string. +2463 If an `Expression` instance is passed, it will be used as-is. +2464 append (bool): if `True`, add to any existing expressions. +2465 Otherwise, this resets the expressions. +2466 join_type (str): If set, alter the parsed join type +2467 dialect (str): the dialect used to parse the input expressions. +2468 copy (bool): if `False`, modify this expression instance in-place. +2469 opts (kwargs): other options to use to parse the input expressions. +2470 +2471 Returns: +2472 Select: the modified expression. +2473 """ +2474 parse_args = {"dialect": dialect, **opts} +2475 +2476 try: +2477 expression = maybe_parse(expression, into=Join, prefix="JOIN", **parse_args) +2478 except ParseError: +2479 expression = maybe_parse(expression, into=(Join, Expression), **parse_args) +2480 +2481 join = expression if isinstance(expression, Join) else Join(this=expression) +2482 +2483 if isinstance(join.this, Select): +2484 join.this.replace(join.this.subquery()) +2485 +2486 if join_type: +2487 natural: t.Optional[Token] +2488 side: t.Optional[Token] +2489 kind: t.Optional[Token] +2490 +2491 natural, side, kind = maybe_parse(join_type, into="JOIN_TYPE", **parse_args) # type: ignore 2492 -2493 Args: -2494 *expressions (str | Expression): the SQL code strings to parse. -2495 If an `Expression` instance is passed, it will be used as-is. -2496 Multiple expressions are combined with an AND operator. -2497 append (bool): if `True`, AND the new expressions to any existing expression. -2498 Otherwise, this resets the expression. -2499 dialect (str): the dialect used to parse the input expressions. -2500 copy (bool): if `False`, modify this expression instance in-place. -2501 opts (kwargs): other options to use to parse the input expressions. -2502 -2503 Returns: -2504 Select: the modified expression. -2505 """ -2506 return _apply_conjunction_builder( -2507 *expressions, -2508 instance=self, -2509 arg="where", -2510 append=append, -2511 into=Where, -2512 dialect=dialect, -2513 copy=copy, -2514 **opts, -2515 ) -2516 -2517 def having(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select: -2518 """ -2519 Append to or set the HAVING expressions. -2520 -2521 Example: -2522 >>> Select().select("x", "COUNT(y)").from_("tbl").group_by("x").having("COUNT(y) > 3").sql() -2523 'SELECT x, COUNT(y) FROM tbl GROUP BY x HAVING COUNT(y) > 3' +2493 if natural: +2494 join.set("natural", True) +2495 if side: +2496 join.set("side", side.text) +2497 if kind: +2498 join.set("kind", kind.text) +2499 +2500 if on: +2501 on = and_(*ensure_collection(on), dialect=dialect, **opts) +2502 join.set("on", on) +2503 +2504 if using: +2505 join = _apply_list_builder( +2506 *ensure_collection(using), +2507 instance=join, +2508 arg="using", +2509 append=append, +2510 copy=copy, +2511 **opts, +2512 ) +2513 +2514 if join_alias: +2515 join.set("this", alias_(join.this, join_alias, table=True)) +2516 return _apply_list_builder( +2517 join, +2518 instance=self, +2519 arg="joins", +2520 append=append, +2521 copy=copy, +2522 **opts, +2523 ) 2524 -2525 Args: -2526 *expressions (str | Expression): the SQL code strings to parse. -2527 If an `Expression` instance is passed, it will be used as-is. -2528 Multiple expressions are combined with an AND operator. -2529 append (bool): if `True`, AND the new expressions to any existing expression. -2530 Otherwise, this resets the expression. -2531 dialect (str): the dialect used to parse the input expressions. -2532 copy (bool): if `False`, modify this expression instance in-place. -2533 opts (kwargs): other options to use to parse the input expressions. -2534 -2535 Returns: -2536 Select: the modified expression. -2537 """ -2538 return _apply_conjunction_builder( -2539 *expressions, -2540 instance=self, -2541 arg="having", -2542 append=append, -2543 into=Having, -2544 dialect=dialect, -2545 copy=copy, -2546 **opts, -2547 ) -2548 -2549 def window(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select: -2550 return _apply_list_builder( -2551 *expressions, -2552 instance=self, -2553 arg="windows", -2554 append=append, -2555 into=Window, -2556 dialect=dialect, -2557 copy=copy, -2558 **opts, -2559 ) +2525 def where(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select: +2526 """ +2527 Append to or set the WHERE expressions. +2528 +2529 Example: +2530 >>> Select().select("x").from_("tbl").where("x = 'a' OR x < 'b'").sql() +2531 "SELECT x FROM tbl WHERE x = 'a' OR x < 'b'" +2532 +2533 Args: +2534 *expressions (str | Expression): the SQL code strings to parse. +2535 If an `Expression` instance is passed, it will be used as-is. +2536 Multiple expressions are combined with an AND operator. +2537 append (bool): if `True`, AND the new expressions to any existing expression. +2538 Otherwise, this resets the expression. +2539 dialect (str): the dialect used to parse the input expressions. +2540 copy (bool): if `False`, modify this expression instance in-place. +2541 opts (kwargs): other options to use to parse the input expressions. +2542 +2543 Returns: +2544 Select: the modified expression. +2545 """ +2546 return _apply_conjunction_builder( +2547 *expressions, +2548 instance=self, +2549 arg="where", +2550 append=append, +2551 into=Where, +2552 dialect=dialect, +2553 copy=copy, +2554 **opts, +2555 ) +2556 +2557 def having(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select: +2558 """ +2559 Append to or set the HAVING expressions. 2560 -2561 def qualify(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select: -2562 return _apply_conjunction_builder( -2563 *expressions, -2564 instance=self, -2565 arg="qualify", -2566 append=append, -2567 into=Qualify, -2568 dialect=dialect, -2569 copy=copy, -2570 **opts, -2571 ) -2572 -2573 def distinct(self, distinct=True, copy=True) -> Select: -2574 """ -2575 Set the OFFSET expression. -2576 -2577 Example: -2578 >>> Select().from_("tbl").select("x").distinct().sql() -2579 'SELECT DISTINCT x FROM tbl' -2580 -2581 Args: -2582 distinct (bool): whether the Select should be distinct -2583 copy (bool): if `False`, modify this expression instance in-place. -2584 -2585 Returns: -2586 Select: the modified expression. -2587 """ -2588 instance = _maybe_copy(self, copy) -2589 instance.set("distinct", Distinct() if distinct else None) -2590 return instance -2591 -2592 def ctas(self, table, properties=None, dialect=None, copy=True, **opts) -> Create: -2593 """ -2594 Convert this expression to a CREATE TABLE AS statement. -2595 -2596 Example: -2597 >>> Select().select("*").from_("tbl").ctas("x").sql() -2598 'CREATE TABLE x AS SELECT * FROM tbl' -2599 -2600 Args: -2601 table (str | Expression): the SQL code string to parse as the table name. -2602 If another `Expression` instance is passed, it will be used as-is. -2603 properties (dict): an optional mapping of table properties -2604 dialect (str): the dialect used to parse the input table. -2605 copy (bool): if `False`, modify this expression instance in-place. -2606 opts (kwargs): other options to use to parse the input table. -2607 -2608 Returns: -2609 Create: the CREATE TABLE AS expression -2610 """ -2611 instance = _maybe_copy(self, copy) -2612 table_expression = maybe_parse( -2613 table, -2614 into=Table, -2615 dialect=dialect, -2616 **opts, -2617 ) -2618 properties_expression = None -2619 if properties: -2620 properties_expression = Properties.from_dict(properties) -2621 -2622 return Create( -2623 this=table_expression, -2624 kind="table", -2625 expression=instance, -2626 properties=properties_expression, -2627 ) -2628 -2629 def lock(self, update: bool = True, copy: bool = True) -> Select: -2630 """ -2631 Set the locking read mode for this expression. -2632 -2633 Examples: -2634 >>> Select().select("x").from_("tbl").where("x = 'a'").lock().sql("mysql") -2635 "SELECT x FROM tbl WHERE x = 'a' FOR UPDATE" -2636 -2637 >>> Select().select("x").from_("tbl").where("x = 'a'").lock(update=False).sql("mysql") -2638 "SELECT x FROM tbl WHERE x = 'a' FOR SHARE" +2561 Example: +2562 >>> Select().select("x", "COUNT(y)").from_("tbl").group_by("x").having("COUNT(y) > 3").sql() +2563 'SELECT x, COUNT(y) FROM tbl GROUP BY x HAVING COUNT(y) > 3' +2564 +2565 Args: +2566 *expressions (str | Expression): the SQL code strings to parse. +2567 If an `Expression` instance is passed, it will be used as-is. +2568 Multiple expressions are combined with an AND operator. +2569 append (bool): if `True`, AND the new expressions to any existing expression. +2570 Otherwise, this resets the expression. +2571 dialect (str): the dialect used to parse the input expressions. +2572 copy (bool): if `False`, modify this expression instance in-place. +2573 opts (kwargs): other options to use to parse the input expressions. +2574 +2575 Returns: +2576 Select: the modified expression. +2577 """ +2578 return _apply_conjunction_builder( +2579 *expressions, +2580 instance=self, +2581 arg="having", +2582 append=append, +2583 into=Having, +2584 dialect=dialect, +2585 copy=copy, +2586 **opts, +2587 ) +2588 +2589 def window(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select: +2590 return _apply_list_builder( +2591 *expressions, +2592 instance=self, +2593 arg="windows", +2594 append=append, +2595 into=Window, +2596 dialect=dialect, +2597 copy=copy, +2598 **opts, +2599 ) +2600 +2601 def qualify(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select: +2602 return _apply_conjunction_builder( +2603 *expressions, +2604 instance=self, +2605 arg="qualify", +2606 append=append, +2607 into=Qualify, +2608 dialect=dialect, +2609 copy=copy, +2610 **opts, +2611 ) +2612 +2613 def distinct(self, distinct=True, copy=True) -> Select: +2614 """ +2615 Set the OFFSET expression. +2616 +2617 Example: +2618 >>> Select().from_("tbl").select("x").distinct().sql() +2619 'SELECT DISTINCT x FROM tbl' +2620 +2621 Args: +2622 distinct (bool): whether the Select should be distinct +2623 copy (bool): if `False`, modify this expression instance in-place. +2624 +2625 Returns: +2626 Select: the modified expression. +2627 """ +2628 instance = _maybe_copy(self, copy) +2629 instance.set("distinct", Distinct() if distinct else None) +2630 return instance +2631 +2632 def ctas(self, table, properties=None, dialect=None, copy=True, **opts) -> Create: +2633 """ +2634 Convert this expression to a CREATE TABLE AS statement. +2635 +2636 Example: +2637 >>> Select().select("*").from_("tbl").ctas("x").sql() +2638 'CREATE TABLE x AS SELECT * FROM tbl' 2639 2640 Args: -2641 update: if `True`, the locking type will be `FOR UPDATE`, else it will be `FOR SHARE`. -2642 copy: if `False`, modify this expression instance in-place. -2643 -2644 Returns: -2645 The modified expression. -2646 """ +2641 table (str | Expression): the SQL code string to parse as the table name. +2642 If another `Expression` instance is passed, it will be used as-is. +2643 properties (dict): an optional mapping of table properties +2644 dialect (str): the dialect used to parse the input table. +2645 copy (bool): if `False`, modify this expression instance in-place. +2646 opts (kwargs): other options to use to parse the input table. 2647 -2648 inst = _maybe_copy(self, copy) -2649 inst.set("lock", Lock(update=update)) -2650 -2651 return inst -2652 -2653 @property -2654 def named_selects(self) -> t.List[str]: -2655 return [e.output_name for e in self.expressions if e.alias_or_name] -2656 -2657 @property -2658 def is_star(self) -> bool: -2659 return any(expression.is_star for expression in self.expressions) -2660 -2661 @property -2662 def selects(self) -> t.List[Expression]: -2663 return self.expressions -2664 -2665 -2666class Subquery(DerivedTable, Unionable): -2667 arg_types = { -2668 "this": True, -2669 "alias": False, -2670 "with": False, -2671 **QUERY_MODIFIERS, -2672 } -2673 -2674 def unnest(self): -2675 """ -2676 Returns the first non subquery. -2677 """ -2678 expression = self -2679 while isinstance(expression, Subquery): -2680 expression = expression.this -2681 return expression -2682 -2683 @property -2684 def is_star(self) -> bool: -2685 return self.this.is_star -2686 -2687 @property -2688 def output_name(self): -2689 return self.alias +2648 Returns: +2649 Create: the CREATE TABLE AS expression +2650 """ +2651 instance = _maybe_copy(self, copy) +2652 table_expression = maybe_parse( +2653 table, +2654 into=Table, +2655 dialect=dialect, +2656 **opts, +2657 ) +2658 properties_expression = None +2659 if properties: +2660 properties_expression = Properties.from_dict(properties) +2661 +2662 return Create( +2663 this=table_expression, +2664 kind="table", +2665 expression=instance, +2666 properties=properties_expression, +2667 ) +2668 +2669 def lock(self, update: bool = True, copy: bool = True) -> Select: +2670 """ +2671 Set the locking read mode for this expression. +2672 +2673 Examples: +2674 >>> Select().select("x").from_("tbl").where("x = 'a'").lock().sql("mysql") +2675 "SELECT x FROM tbl WHERE x = 'a' FOR UPDATE" +2676 +2677 >>> Select().select("x").from_("tbl").where("x = 'a'").lock(update=False).sql("mysql") +2678 "SELECT x FROM tbl WHERE x = 'a' FOR SHARE" +2679 +2680 Args: +2681 update: if `True`, the locking type will be `FOR UPDATE`, else it will be `FOR SHARE`. +2682 copy: if `False`, modify this expression instance in-place. +2683 +2684 Returns: +2685 The modified expression. +2686 """ +2687 +2688 inst = _maybe_copy(self, copy) +2689 inst.set("lock", Lock(update=update)) 2690 -2691 -2692class TableSample(Expression): -2693 arg_types = { -2694 "this": False, -2695 "method": False, -2696 "bucket_numerator": False, -2697 "bucket_denominator": False, -2698 "bucket_field": False, -2699 "percent": False, -2700 "rows": False, -2701 "size": False, -2702 "seed": False, -2703 "kind": False, -2704 } +2691 return inst +2692 +2693 @property +2694 def named_selects(self) -> t.List[str]: +2695 return [e.output_name for e in self.expressions if e.alias_or_name] +2696 +2697 @property +2698 def is_star(self) -> bool: +2699 return any(expression.is_star for expression in self.expressions) +2700 +2701 @property +2702 def selects(self) -> t.List[Expression]: +2703 return self.expressions +2704 2705 -2706 -2707class Tag(Expression): -2708 """Tags are used for generating arbitrary sql like SELECT <span>x</span>.""" -2709 -2710 arg_types = { -2711 "this": False, -2712 "prefix": False, -2713 "postfix": False, -2714 } -2715 -2716 -2717class Pivot(Expression): -2718 arg_types = { -2719 "this": False, -2720 "alias": False, -2721 "expressions": True, -2722 "field": True, -2723 "unpivot": True, -2724 } -2725 +2706class Subquery(DerivedTable, Unionable): +2707 arg_types = { +2708 "this": True, +2709 "alias": False, +2710 "with": False, +2711 **QUERY_MODIFIERS, +2712 } +2713 +2714 def unnest(self): +2715 """ +2716 Returns the first non subquery. +2717 """ +2718 expression = self +2719 while isinstance(expression, Subquery): +2720 expression = expression.this +2721 return expression +2722 +2723 @property +2724 def is_star(self) -> bool: +2725 return self.this.is_star 2726 -2727class Window(Expression): -2728 arg_types = { -2729 "this": True, -2730 "partition_by": False, -2731 "order": False, -2732 "spec": False, -2733 "alias": False, -2734 } -2735 -2736 -2737class WindowSpec(Expression): -2738 arg_types = { -2739 "kind": False, -2740 "start": False, -2741 "start_side": False, -2742 "end": False, -2743 "end_side": False, +2727 @property +2728 def output_name(self): +2729 return self.alias +2730 +2731 +2732class TableSample(Expression): +2733 arg_types = { +2734 "this": False, +2735 "method": False, +2736 "bucket_numerator": False, +2737 "bucket_denominator": False, +2738 "bucket_field": False, +2739 "percent": False, +2740 "rows": False, +2741 "size": False, +2742 "seed": False, +2743 "kind": False, 2744 } 2745 2746 -2747class Where(Expression): -2748 pass +2747class Tag(Expression): +2748 """Tags are used for generating arbitrary sql like SELECT <span>x</span>.""" 2749 -2750 -2751class Star(Expression): -2752 arg_types = {"except": False, "replace": False} -2753 -2754 @property -2755 def name(self) -> str: -2756 return "*" -2757 -2758 @property -2759 def output_name(self): -2760 return self.name -2761 -2762 -2763class Parameter(Expression): -2764 arg_types = {"this": True, "wrapped": False} -2765 +2750 arg_types = { +2751 "this": False, +2752 "prefix": False, +2753 "postfix": False, +2754 } +2755 +2756 +2757class Pivot(Expression): +2758 arg_types = { +2759 "this": False, +2760 "alias": False, +2761 "expressions": True, +2762 "field": True, +2763 "unpivot": True, +2764 "columns": False, +2765 } 2766 -2767class SessionParameter(Expression): -2768 arg_types = {"this": True, "kind": False} -2769 -2770 -2771class Placeholder(Expression): -2772 arg_types = {"this": False} -2773 -2774 -2775class Null(Condition): -2776 arg_types: t.Dict[str, t.Any] = {} +2767 +2768class Window(Expression): +2769 arg_types = { +2770 "this": True, +2771 "partition_by": False, +2772 "order": False, +2773 "spec": False, +2774 "alias": False, +2775 } +2776 2777 -2778 @property -2779 def name(self) -> str: -2780 return "NULL" -2781 -2782 -2783class Boolean(Condition): -2784 pass -2785 +2778class WindowSpec(Expression): +2779 arg_types = { +2780 "kind": False, +2781 "start": False, +2782 "start_side": False, +2783 "end": False, +2784 "end_side": False, +2785 } 2786 -2787class DataType(Expression): -2788 arg_types = { -2789 "this": True, -2790 "expressions": False, -2791 "nested": False, -2792 "values": False, -2793 "prefix": False, -2794 } -2795 -2796 class Type(AutoName): -2797 CHAR = auto() -2798 NCHAR = auto() -2799 VARCHAR = auto() -2800 NVARCHAR = auto() -2801 TEXT = auto() -2802 MEDIUMTEXT = auto() -2803 LONGTEXT = auto() -2804 MEDIUMBLOB = auto() -2805 LONGBLOB = auto() -2806 BINARY = auto() -2807 VARBINARY = auto() -2808 INT = auto() -2809 UINT = auto() -2810 TINYINT = auto() -2811 UTINYINT = auto() -2812 SMALLINT = auto() -2813 USMALLINT = auto() -2814 BIGINT = auto() -2815 UBIGINT = auto() -2816 FLOAT = auto() -2817 DOUBLE = auto() -2818 DECIMAL = auto() -2819 BIT = auto() -2820 BOOLEAN = auto() -2821 JSON = auto() -2822 JSONB = auto() -2823 INTERVAL = auto() -2824 TIME = auto() -2825 TIMESTAMP = auto() -2826 TIMESTAMPTZ = auto() -2827 TIMESTAMPLTZ = auto() -2828 DATE = auto() -2829 DATETIME = auto() -2830 ARRAY = auto() -2831 MAP = auto() -2832 UUID = auto() -2833 GEOGRAPHY = auto() -2834 GEOMETRY = auto() -2835 STRUCT = auto() -2836 NULLABLE = auto() -2837 HLLSKETCH = auto() -2838 HSTORE = auto() -2839 SUPER = auto() -2840 SERIAL = auto() -2841 SMALLSERIAL = auto() -2842 BIGSERIAL = auto() -2843 XML = auto() -2844 UNIQUEIDENTIFIER = auto() -2845 MONEY = auto() -2846 SMALLMONEY = auto() -2847 ROWVERSION = auto() -2848 IMAGE = auto() -2849 VARIANT = auto() -2850 OBJECT = auto() -2851 INET = auto() -2852 NULL = auto() -2853 UNKNOWN = auto() # Sentinel value, useful for type annotation -2854 -2855 TEXT_TYPES = { -2856 Type.CHAR, -2857 Type.NCHAR, -2858 Type.VARCHAR, -2859 Type.NVARCHAR, -2860 Type.TEXT, -2861 } -2862 -2863 INTEGER_TYPES = { -2864 Type.INT, -2865 Type.TINYINT, -2866 Type.SMALLINT, -2867 Type.BIGINT, -2868 } -2869 -2870 FLOAT_TYPES = { -2871 Type.FLOAT, -2872 Type.DOUBLE, -2873 } -2874 -2875 NUMERIC_TYPES = {*INTEGER_TYPES, *FLOAT_TYPES} -2876 -2877 TEMPORAL_TYPES = { -2878 Type.TIMESTAMP, -2879 Type.TIMESTAMPTZ, -2880 Type.TIMESTAMPLTZ, -2881 Type.DATE, -2882 Type.DATETIME, -2883 } -2884 -2885 @classmethod -2886 def build( -2887 cls, dtype: str | DataType | DataType.Type, dialect: DialectType = None, **kwargs -2888 ) -> DataType: -2889 from sqlglot import parse_one -2890 -2891 if isinstance(dtype, str): -2892 if dtype.upper() in cls.Type.__members__: -2893 data_type_exp: t.Optional[Expression] = DataType(this=DataType.Type[dtype.upper()]) -2894 else: -2895 data_type_exp = parse_one(dtype, read=dialect, into=DataType) -2896 if data_type_exp is None: -2897 raise ValueError(f"Unparsable data type value: {dtype}") -2898 elif isinstance(dtype, DataType.Type): -2899 data_type_exp = DataType(this=dtype) -2900 elif isinstance(dtype, DataType): -2901 return dtype -2902 else: -2903 raise ValueError(f"Invalid data type: {type(dtype)}. Expected str or DataType.Type") -2904 return DataType(**{**data_type_exp.args, **kwargs}) -2905 -2906 def is_type(self, dtype: DataType.Type) -> bool: -2907 return self.this == dtype -2908 -2909 -2910# https://www.postgresql.org/docs/15/datatype-pseudo.html -2911class PseudoType(Expression): -2912 pass -2913 -2914 -2915class StructKwarg(Expression): -2916 arg_types = {"this": True, "expression": True} -2917 +2787 +2788class Where(Expression): +2789 pass +2790 +2791 +2792class Star(Expression): +2793 arg_types = {"except": False, "replace": False} +2794 +2795 @property +2796 def name(self) -> str: +2797 return "*" +2798 +2799 @property +2800 def output_name(self): +2801 return self.name +2802 +2803 +2804class Parameter(Expression): +2805 arg_types = {"this": True, "wrapped": False} +2806 +2807 +2808class SessionParameter(Expression): +2809 arg_types = {"this": True, "kind": False} +2810 +2811 +2812class Placeholder(Expression): +2813 arg_types = {"this": False} +2814 +2815 +2816class Null(Condition): +2817 arg_types: t.Dict[str, t.Any] = {} +2818 +2819 @property +2820 def name(self) -> str: +2821 return "NULL" +2822 +2823 +2824class Boolean(Condition): +2825 pass +2826 +2827 +2828class DataType(Expression): +2829 arg_types = { +2830 "this": True, +2831 "expressions": False, +2832 "nested": False, +2833 "values": False, +2834 "prefix": False, +2835 } +2836 +2837 class Type(AutoName): +2838 CHAR = auto() +2839 NCHAR = auto() +2840 VARCHAR = auto() +2841 NVARCHAR = auto() +2842 TEXT = auto() +2843 MEDIUMTEXT = auto() +2844 LONGTEXT = auto() +2845 MEDIUMBLOB = auto() +2846 LONGBLOB = auto() +2847 BINARY = auto() +2848 VARBINARY = auto() +2849 INT = auto() +2850 UINT = auto() +2851 TINYINT = auto() +2852 UTINYINT = auto() +2853 SMALLINT = auto() +2854 USMALLINT = auto() +2855 BIGINT = auto() +2856 UBIGINT = auto() +2857 FLOAT = auto() +2858 DOUBLE = auto() +2859 DECIMAL = auto() +2860 BIGDECIMAL = auto() +2861 BIT = auto() +2862 BOOLEAN = auto() +2863 JSON = auto() +2864 JSONB = auto() +2865 INTERVAL = auto() +2866 TIME = auto() +2867 TIMESTAMP = auto() +2868 TIMESTAMPTZ = auto() +2869 TIMESTAMPLTZ = auto() +2870 DATE = auto() +2871 DATETIME = auto() +2872 ARRAY = auto() +2873 MAP = auto() +2874 UUID = auto() +2875 GEOGRAPHY = auto() +2876 GEOMETRY = auto() +2877 STRUCT = auto() +2878 NULLABLE = auto() +2879 HLLSKETCH = auto() +2880 HSTORE = auto() +2881 SUPER = auto() +2882 SERIAL = auto() +2883 SMALLSERIAL = auto() +2884 BIGSERIAL = auto() +2885 XML = auto() +2886 UNIQUEIDENTIFIER = auto() +2887 MONEY = auto() +2888 SMALLMONEY = auto() +2889 ROWVERSION = auto() +2890 IMAGE = auto() +2891 VARIANT = auto() +2892 OBJECT = auto() +2893 INET = auto() +2894 NULL = auto() +2895 UNKNOWN = auto() # Sentinel value, useful for type annotation +2896 +2897 TEXT_TYPES = { +2898 Type.CHAR, +2899 Type.NCHAR, +2900 Type.VARCHAR, +2901 Type.NVARCHAR, +2902 Type.TEXT, +2903 } +2904 +2905 INTEGER_TYPES = { +2906 Type.INT, +2907 Type.TINYINT, +2908 Type.SMALLINT, +2909 Type.BIGINT, +2910 } +2911 +2912 FLOAT_TYPES = { +2913 Type.FLOAT, +2914 Type.DOUBLE, +2915 } +2916 +2917 NUMERIC_TYPES = {*INTEGER_TYPES, *FLOAT_TYPES} 2918 -2919# WHERE x <OP> EXISTS|ALL|ANY|SOME(SELECT ...) -2920class SubqueryPredicate(Predicate): -2921 pass -2922 -2923 -2924class All(SubqueryPredicate): -2925 pass +2919 TEMPORAL_TYPES = { +2920 Type.TIMESTAMP, +2921 Type.TIMESTAMPTZ, +2922 Type.TIMESTAMPLTZ, +2923 Type.DATE, +2924 Type.DATETIME, +2925 } 2926 -2927 -2928class Any(SubqueryPredicate): -2929 pass -2930 -2931 -2932class Exists(SubqueryPredicate): -2933 pass -2934 -2935 -2936# Commands to interact with the databases or engines. For most of the command -2937# expressions we parse whatever comes after the command's name as a string. -2938class Command(Expression): -2939 arg_types = {"this": True, "expression": False} -2940 -2941 -2942class Transaction(Expression): -2943 arg_types = {"this": False, "modes": False} -2944 -2945 -2946class Commit(Expression): -2947 arg_types = {"chain": False} -2948 -2949 -2950class Rollback(Expression): -2951 arg_types = {"savepoint": False} -2952 -2953 -2954class AlterTable(Expression): -2955 arg_types = {"this": True, "actions": True, "exists": False} +2927 @classmethod +2928 def build( +2929 cls, dtype: str | DataType | DataType.Type, dialect: DialectType = None, **kwargs +2930 ) -> DataType: +2931 from sqlglot import parse_one +2932 +2933 if isinstance(dtype, str): +2934 if dtype.upper() in cls.Type.__members__: +2935 data_type_exp: t.Optional[Expression] = DataType(this=DataType.Type[dtype.upper()]) +2936 else: +2937 data_type_exp = parse_one(dtype, read=dialect, into=DataType) +2938 if data_type_exp is None: +2939 raise ValueError(f"Unparsable data type value: {dtype}") +2940 elif isinstance(dtype, DataType.Type): +2941 data_type_exp = DataType(this=dtype) +2942 elif isinstance(dtype, DataType): +2943 return dtype +2944 else: +2945 raise ValueError(f"Invalid data type: {type(dtype)}. Expected str or DataType.Type") +2946 return DataType(**{**data_type_exp.args, **kwargs}) +2947 +2948 def is_type(self, dtype: DataType.Type) -> bool: +2949 return self.this == dtype +2950 +2951 +2952# https://www.postgresql.org/docs/15/datatype-pseudo.html +2953class PseudoType(Expression): +2954 pass +2955 2956 -2957 -2958class AddConstraint(Expression): -2959 arg_types = {"this": False, "expression": False, "enforced": False} +2957class StructKwarg(Expression): +2958 arg_types = {"this": True, "expression": True} +2959 2960 -2961 -2962class DropPartition(Expression): -2963 arg_types = {"expressions": True, "exists": False} +2961# WHERE x <OP> EXISTS|ALL|ANY|SOME(SELECT ...) +2962class SubqueryPredicate(Predicate): +2963 pass 2964 2965 -2966# Binary expressions like (ADD a b) -2967class Binary(Expression): -2968 arg_types = {"this": True, "expression": True} +2966class All(SubqueryPredicate): +2967 pass +2968 2969 -2970 @property -2971 def left(self): -2972 return self.this +2970class Any(SubqueryPredicate): +2971 pass +2972 2973 -2974 @property -2975 def right(self): -2976 return self.expression +2974class Exists(SubqueryPredicate): +2975 pass +2976 2977 -2978 -2979class Add(Binary): -2980 pass -2981 +2978# Commands to interact with the databases or engines. For most of the command +2979# expressions we parse whatever comes after the command's name as a string. +2980class Command(Expression): +2981 arg_types = {"this": True, "expression": False} 2982 -2983class Connector(Binary, Condition): -2984 pass -2985 +2983 +2984class Transaction(Expression): +2985 arg_types = {"this": False, "modes": False} 2986 -2987class And(Connector): -2988 pass -2989 +2987 +2988class Commit(Expression): +2989 arg_types = {"chain": False} 2990 -2991class Or(Connector): -2992 pass -2993 +2991 +2992class Rollback(Expression): +2993 arg_types = {"savepoint": False} 2994 -2995class BitwiseAnd(Binary): -2996 pass -2997 +2995 +2996class AlterTable(Expression): +2997 arg_types = {"this": True, "actions": True, "exists": False} 2998 -2999class BitwiseLeftShift(Binary): -3000 pass -3001 +2999 +3000class AddConstraint(Expression): +3001 arg_types = {"this": False, "expression": False, "enforced": False} 3002 -3003class BitwiseOr(Binary): -3004 pass -3005 +3003 +3004class DropPartition(Expression): +3005 arg_types = {"expressions": True, "exists": False} 3006 -3007class BitwiseRightShift(Binary): -3008 pass -3009 -3010 -3011class BitwiseXor(Binary): -3012 pass -3013 -3014 -3015class Div(Binary): -3016 pass -3017 -3018 -3019class Overlaps(Binary): -3020 pass -3021 -3022 -3023class Dot(Binary): -3024 @property -3025 def name(self) -> str: -3026 return self.expression.name +3007 +3008# Binary expressions like (ADD a b) +3009class Binary(Expression): +3010 arg_types = {"this": True, "expression": True} +3011 +3012 @property +3013 def left(self): +3014 return self.this +3015 +3016 @property +3017 def right(self): +3018 return self.expression +3019 +3020 +3021class Add(Binary): +3022 pass +3023 +3024 +3025class Connector(Binary, Condition): +3026 pass 3027 -3028 @classmethod -3029 def build(self, expressions: t.Sequence[Expression]) -> Dot: -3030 """Build a Dot object with a sequence of expressions.""" -3031 if len(expressions) < 2: -3032 raise ValueError(f"Dot requires >= 2 expressions.") -3033 -3034 a, b, *expressions = expressions -3035 dot = Dot(this=a, expression=b) +3028 +3029class And(Connector): +3030 pass +3031 +3032 +3033class Or(Connector): +3034 pass +3035 3036 -3037 for expression in expressions: -3038 dot = Dot(this=dot, expression=expression) +3037class BitwiseAnd(Binary): +3038 pass 3039 -3040 return dot -3041 -3042 -3043class DPipe(Binary): -3044 pass -3045 -3046 -3047class EQ(Binary, Predicate): -3048 pass -3049 -3050 -3051class NullSafeEQ(Binary, Predicate): -3052 pass -3053 -3054 -3055class NullSafeNEQ(Binary, Predicate): -3056 pass -3057 -3058 -3059class Distance(Binary): -3060 pass -3061 -3062 -3063class Escape(Binary): -3064 pass -3065 -3066 -3067class Glob(Binary, Predicate): -3068 pass +3040 +3041class BitwiseLeftShift(Binary): +3042 pass +3043 +3044 +3045class BitwiseOr(Binary): +3046 pass +3047 +3048 +3049class BitwiseRightShift(Binary): +3050 pass +3051 +3052 +3053class BitwiseXor(Binary): +3054 pass +3055 +3056 +3057class Div(Binary): +3058 pass +3059 +3060 +3061class Overlaps(Binary): +3062 pass +3063 +3064 +3065class Dot(Binary): +3066 @property +3067 def name(self) -> str: +3068 return self.expression.name 3069 -3070 -3071class GT(Binary, Predicate): -3072 pass -3073 -3074 -3075class GTE(Binary, Predicate): -3076 pass -3077 +3070 @classmethod +3071 def build(self, expressions: t.Sequence[Expression]) -> Dot: +3072 """Build a Dot object with a sequence of expressions.""" +3073 if len(expressions) < 2: +3074 raise ValueError(f"Dot requires >= 2 expressions.") +3075 +3076 a, b, *expressions = expressions +3077 dot = Dot(this=a, expression=b) 3078 -3079class ILike(Binary, Predicate): -3080 pass +3079 for expression in expressions: +3080 dot = Dot(this=dot, expression=expression) 3081 -3082 -3083class ILikeAny(Binary, Predicate): -3084 pass -3085 -3086 -3087class IntDiv(Binary): -3088 pass -3089 -3090 -3091class Is(Binary, Predicate): -3092 pass -3093 -3094 -3095class Kwarg(Binary): -3096 """Kwarg in special functions like func(kwarg => y).""" -3097 -3098 -3099class Like(Binary, Predicate): -3100 pass -3101 -3102 -3103class LikeAny(Binary, Predicate): -3104 pass -3105 -3106 -3107class LT(Binary, Predicate): -3108 pass -3109 -3110 -3111class LTE(Binary, Predicate): -3112 pass -3113 -3114 -3115class Mod(Binary): -3116 pass -3117 -3118 -3119class Mul(Binary): -3120 pass -3121 -3122 -3123class NEQ(Binary, Predicate): -3124 pass -3125 -3126 -3127class SimilarTo(Binary, Predicate): -3128 pass -3129 -3130 -3131class Slice(Binary): -3132 arg_types = {"this": False, "expression": False} -3133 -3134 -3135class Sub(Binary): -3136 pass -3137 -3138 -3139class ArrayOverlaps(Binary): -3140 pass -3141 -3142 -3143# Unary Expressions -3144# (NOT a) -3145class Unary(Expression): +3082 return dot +3083 +3084 +3085class DPipe(Binary): +3086 pass +3087 +3088 +3089class EQ(Binary, Predicate): +3090 pass +3091 +3092 +3093class NullSafeEQ(Binary, Predicate): +3094 pass +3095 +3096 +3097class NullSafeNEQ(Binary, Predicate): +3098 pass +3099 +3100 +3101class Distance(Binary): +3102 pass +3103 +3104 +3105class Escape(Binary): +3106 pass +3107 +3108 +3109class Glob(Binary, Predicate): +3110 pass +3111 +3112 +3113class GT(Binary, Predicate): +3114 pass +3115 +3116 +3117class GTE(Binary, Predicate): +3118 pass +3119 +3120 +3121class ILike(Binary, Predicate): +3122 pass +3123 +3124 +3125class ILikeAny(Binary, Predicate): +3126 pass +3127 +3128 +3129class IntDiv(Binary): +3130 pass +3131 +3132 +3133class Is(Binary, Predicate): +3134 pass +3135 +3136 +3137class Kwarg(Binary): +3138 """Kwarg in special functions like func(kwarg => y).""" +3139 +3140 +3141class Like(Binary, Predicate): +3142 pass +3143 +3144 +3145class LikeAny(Binary, Predicate): 3146 pass 3147 3148 -3149class BitwiseNot(Unary): +3149class LT(Binary, Predicate): 3150 pass 3151 3152 -3153class Not(Unary, Condition): +3153class LTE(Binary, Predicate): 3154 pass 3155 3156 -3157class Paren(Unary, Condition): -3158 arg_types = {"this": True, "with": False} +3157class Mod(Binary): +3158 pass 3159 3160 -3161class Neg(Unary): +3161class Mul(Binary): 3162 pass 3163 3164 -3165# Special Functions -3166class Alias(Expression): -3167 arg_types = {"this": True, "alias": False} +3165class NEQ(Binary, Predicate): +3166 pass +3167 3168 -3169 @property -3170 def output_name(self): -3171 return self.alias +3169class SimilarTo(Binary, Predicate): +3170 pass +3171 3172 -3173 -3174class Aliases(Expression): -3175 arg_types = {"this": True, "expressions": True} +3173class Slice(Binary): +3174 arg_types = {"this": False, "expression": False} +3175 3176 -3177 @property -3178 def aliases(self): -3179 return self.expressions +3177class Sub(Binary): +3178 pass +3179 3180 -3181 -3182class AtTimeZone(Expression): -3183 arg_types = {"this": True, "zone": True} +3181class ArrayOverlaps(Binary): +3182 pass +3183 3184 -3185 -3186class Between(Predicate): -3187 arg_types = {"this": True, "low": True, "high": True} -3188 +3185# Unary Expressions +3186# (NOT a) +3187class Unary(Expression): +3188 pass 3189 -3190class Bracket(Condition): -3191 arg_types = {"this": True, "expressions": True} -3192 +3190 +3191class BitwiseNot(Unary): +3192 pass 3193 -3194class Distinct(Expression): -3195 arg_types = {"expressions": False, "on": False} -3196 +3194 +3195class Not(Unary, Condition): +3196 pass 3197 -3198class In(Predicate): -3199 arg_types = { -3200 "this": True, -3201 "expressions": False, -3202 "query": False, -3203 "unnest": False, -3204 "field": False, -3205 "is_global": False, -3206 } -3207 -3208 -3209class TimeUnit(Expression): -3210 """Automatically converts unit arg into a var.""" -3211 -3212 arg_types = {"unit": False} +3198 +3199class Paren(Unary, Condition): +3200 arg_types = {"this": True, "with": False} +3201 +3202 +3203class Neg(Unary): +3204 pass +3205 +3206 +3207class Alias(Expression): +3208 arg_types = {"this": True, "alias": False} +3209 +3210 @property +3211 def output_name(self): +3212 return self.alias 3213 -3214 def __init__(self, **args): -3215 unit = args.get("unit") -3216 if isinstance(unit, (Column, Literal)): -3217 args["unit"] = Var(this=unit.name) -3218 elif isinstance(unit, Week): -3219 unit.set("this", Var(this=unit.this.name)) -3220 super().__init__(**args) +3214 +3215class Aliases(Expression): +3216 arg_types = {"this": True, "expressions": True} +3217 +3218 @property +3219 def aliases(self): +3220 return self.expressions 3221 3222 -3223class Interval(TimeUnit): -3224 arg_types = {"this": False, "unit": False} +3223class AtTimeZone(Expression): +3224 arg_types = {"this": True, "zone": True} 3225 3226 -3227class IgnoreNulls(Expression): -3228 pass +3227class Between(Predicate): +3228 arg_types = {"this": True, "low": True, "high": True} 3229 3230 -3231class RespectNulls(Expression): -3232 pass +3231class Bracket(Condition): +3232 arg_types = {"this": True, "expressions": True} 3233 3234 -3235# Functions -3236class Func(Condition): -3237 """ -3238 The base class for all function expressions. -3239 -3240 Attributes: -3241 is_var_len_args (bool): if set to True the last argument defined in arg_types will be -3242 treated as a variable length argument and the argument's value will be stored as a list. -3243 _sql_names (list): determines the SQL name (1st item in the list) and aliases (subsequent items) -3244 for this function expression. These values are used to map this node to a name during parsing -3245 as well as to provide the function's name during SQL string generation. By default the SQL -3246 name is set to the expression's class name transformed to snake case. -3247 """ +3235class Distinct(Expression): +3236 arg_types = {"expressions": False, "on": False} +3237 +3238 +3239class In(Predicate): +3240 arg_types = { +3241 "this": True, +3242 "expressions": False, +3243 "query": False, +3244 "unnest": False, +3245 "field": False, +3246 "is_global": False, +3247 } 3248 -3249 is_var_len_args = False -3250 -3251 @classmethod -3252 def from_arg_list(cls, args): -3253 if cls.is_var_len_args: -3254 all_arg_keys = list(cls.arg_types) -3255 # If this function supports variable length argument treat the last argument as such. -3256 non_var_len_arg_keys = all_arg_keys[:-1] if cls.is_var_len_args else all_arg_keys -3257 num_non_var = len(non_var_len_arg_keys) -3258 -3259 args_dict = {arg_key: arg for arg, arg_key in zip(args, non_var_len_arg_keys)} -3260 args_dict[all_arg_keys[-1]] = args[num_non_var:] -3261 else: -3262 args_dict = {arg_key: arg for arg, arg_key in zip(args, cls.arg_types)} +3249 +3250class TimeUnit(Expression): +3251 """Automatically converts unit arg into a var.""" +3252 +3253 arg_types = {"unit": False} +3254 +3255 def __init__(self, **args): +3256 unit = args.get("unit") +3257 if isinstance(unit, (Column, Literal)): +3258 args["unit"] = Var(this=unit.name) +3259 elif isinstance(unit, Week): +3260 unit.set("this", Var(this=unit.this.name)) +3261 super().__init__(**args) +3262 3263 -3264 return cls(**args_dict) -3265 -3266 @classmethod -3267 def sql_names(cls): -3268 if cls is Func: -3269 raise NotImplementedError( -3270 "SQL name is only supported by concrete function implementations" -3271 ) -3272 if "_sql_names" not in cls.__dict__: -3273 cls._sql_names = [camel_to_snake_case(cls.__name__)] -3274 return cls._sql_names +3264class Interval(TimeUnit): +3265 arg_types = {"this": False, "unit": False} +3266 +3267 +3268class IgnoreNulls(Expression): +3269 pass +3270 +3271 +3272class RespectNulls(Expression): +3273 pass +3274 3275 -3276 @classmethod -3277 def sql_name(cls): -3278 return cls.sql_names()[0] -3279 -3280 @classmethod -3281 def default_parser_mappings(cls): -3282 return {name: cls.from_arg_list for name in cls.sql_names()} -3283 -3284 -3285class AggFunc(Func): -3286 pass -3287 -3288 -3289class Abs(Func): -3290 pass +3276# Functions +3277class Func(Condition): +3278 """ +3279 The base class for all function expressions. +3280 +3281 Attributes: +3282 is_var_len_args (bool): if set to True the last argument defined in arg_types will be +3283 treated as a variable length argument and the argument's value will be stored as a list. +3284 _sql_names (list): determines the SQL name (1st item in the list) and aliases (subsequent items) +3285 for this function expression. These values are used to map this node to a name during parsing +3286 as well as to provide the function's name during SQL string generation. By default the SQL +3287 name is set to the expression's class name transformed to snake case. +3288 """ +3289 +3290 is_var_len_args = False 3291 -3292 -3293class Anonymous(Func): -3294 arg_types = {"this": True, "expressions": False} -3295 is_var_len_args = True -3296 -3297 -3298# https://docs.snowflake.com/en/sql-reference/functions/hll -3299# https://docs.aws.amazon.com/redshift/latest/dg/r_HLL_function.html -3300class Hll(AggFunc): -3301 arg_types = {"this": True, "expressions": False} -3302 is_var_len_args = True -3303 +3292 @classmethod +3293 def from_arg_list(cls, args): +3294 if cls.is_var_len_args: +3295 all_arg_keys = list(cls.arg_types) +3296 # If this function supports variable length argument treat the last argument as such. +3297 non_var_len_arg_keys = all_arg_keys[:-1] if cls.is_var_len_args else all_arg_keys +3298 num_non_var = len(non_var_len_arg_keys) +3299 +3300 args_dict = {arg_key: arg for arg, arg_key in zip(args, non_var_len_arg_keys)} +3301 args_dict[all_arg_keys[-1]] = args[num_non_var:] +3302 else: +3303 args_dict = {arg_key: arg for arg, arg_key in zip(args, cls.arg_types)} 3304 -3305class ApproxDistinct(AggFunc): -3306 arg_types = {"this": True, "accuracy": False} -3307 -3308 -3309class Array(Func): -3310 arg_types = {"expressions": False} -3311 is_var_len_args = True -3312 -3313 -3314# https://docs.snowflake.com/en/sql-reference/functions/to_char -3315class ToChar(Func): -3316 arg_types = {"this": True, "format": False} -3317 -3318 -3319class GenerateSeries(Func): -3320 arg_types = {"start": True, "end": True, "step": False} -3321 -3322 -3323class ArrayAgg(AggFunc): -3324 pass +3305 return cls(**args_dict) +3306 +3307 @classmethod +3308 def sql_names(cls): +3309 if cls is Func: +3310 raise NotImplementedError( +3311 "SQL name is only supported by concrete function implementations" +3312 ) +3313 if "_sql_names" not in cls.__dict__: +3314 cls._sql_names = [camel_to_snake_case(cls.__name__)] +3315 return cls._sql_names +3316 +3317 @classmethod +3318 def sql_name(cls): +3319 return cls.sql_names()[0] +3320 +3321 @classmethod +3322 def default_parser_mappings(cls): +3323 return {name: cls.from_arg_list for name in cls.sql_names()} +3324 3325 -3326 -3327class ArrayAll(Func): -3328 arg_types = {"this": True, "expression": True} +3326class AggFunc(Func): +3327 pass +3328 3329 -3330 -3331class ArrayAny(Func): -3332 arg_types = {"this": True, "expression": True} +3330class Abs(Func): +3331 pass +3332 3333 -3334 -3335class ArrayConcat(Func): -3336 arg_types = {"this": True, "expressions": False} -3337 is_var_len_args = True +3334class Anonymous(Func): +3335 arg_types = {"this": True, "expressions": False} +3336 is_var_len_args = True +3337 3338 -3339 -3340class ArrayContains(Binary, Func): -3341 pass -3342 -3343 -3344class ArrayContained(Binary): -3345 pass -3346 -3347 -3348class ArrayFilter(Func): -3349 arg_types = {"this": True, "expression": True} -3350 _sql_names = ["FILTER", "ARRAY_FILTER"] -3351 -3352 -3353class ArrayJoin(Func): -3354 arg_types = {"this": True, "expression": True, "null": False} -3355 -3356 -3357class ArraySize(Func): -3358 arg_types = {"this": True, "expression": False} +3339# https://docs.snowflake.com/en/sql-reference/functions/hll +3340# https://docs.aws.amazon.com/redshift/latest/dg/r_HLL_function.html +3341class Hll(AggFunc): +3342 arg_types = {"this": True, "expressions": False} +3343 is_var_len_args = True +3344 +3345 +3346class ApproxDistinct(AggFunc): +3347 arg_types = {"this": True, "accuracy": False} +3348 +3349 +3350class Array(Func): +3351 arg_types = {"expressions": False} +3352 is_var_len_args = True +3353 +3354 +3355# https://docs.snowflake.com/en/sql-reference/functions/to_char +3356class ToChar(Func): +3357 arg_types = {"this": True, "format": False} +3358 3359 -3360 -3361class ArraySort(Func): -3362 arg_types = {"this": True, "expression": False} +3360class GenerateSeries(Func): +3361 arg_types = {"start": True, "end": True, "step": False} +3362 3363 -3364 -3365class ArraySum(Func): -3366 pass +3364class ArrayAgg(AggFunc): +3365 pass +3366 3367 -3368 -3369class ArrayUnionAgg(AggFunc): -3370 pass +3368class ArrayAll(Func): +3369 arg_types = {"this": True, "expression": True} +3370 3371 -3372 -3373class Avg(AggFunc): -3374 pass +3372class ArrayAny(Func): +3373 arg_types = {"this": True, "expression": True} +3374 3375 -3376 -3377class AnyValue(AggFunc): -3378 pass +3376class ArrayConcat(Func): +3377 arg_types = {"this": True, "expressions": False} +3378 is_var_len_args = True 3379 3380 -3381class Case(Func): -3382 arg_types = {"this": False, "ifs": True, "default": False} +3381class ArrayContains(Binary, Func): +3382 pass 3383 3384 -3385class Cast(Func): -3386 arg_types = {"this": True, "to": True} +3385class ArrayContained(Binary): +3386 pass 3387 -3388 @property -3389 def name(self) -> str: -3390 return self.this.name -3391 -3392 @property -3393 def to(self): -3394 return self.args["to"] -3395 -3396 @property -3397 def output_name(self): -3398 return self.name -3399 -3400 def is_type(self, dtype: DataType.Type) -> bool: -3401 return self.to.is_type(dtype) -3402 -3403 -3404class Collate(Binary): -3405 pass -3406 -3407 -3408class TryCast(Cast): -3409 pass -3410 -3411 -3412class Ceil(Func): -3413 arg_types = {"this": True, "decimals": False} -3414 _sql_names = ["CEIL", "CEILING"] -3415 +3388 +3389class ArrayFilter(Func): +3390 arg_types = {"this": True, "expression": True} +3391 _sql_names = ["FILTER", "ARRAY_FILTER"] +3392 +3393 +3394class ArrayJoin(Func): +3395 arg_types = {"this": True, "expression": True, "null": False} +3396 +3397 +3398class ArraySize(Func): +3399 arg_types = {"this": True, "expression": False} +3400 +3401 +3402class ArraySort(Func): +3403 arg_types = {"this": True, "expression": False} +3404 +3405 +3406class ArraySum(Func): +3407 pass +3408 +3409 +3410class ArrayUnionAgg(AggFunc): +3411 pass +3412 +3413 +3414class Avg(AggFunc): +3415 pass 3416 -3417class Coalesce(Func): -3418 arg_types = {"this": True, "expressions": False} -3419 is_var_len_args = True +3417 +3418class AnyValue(AggFunc): +3419 pass 3420 3421 -3422class Concat(Func): -3423 arg_types = {"expressions": True} -3424 is_var_len_args = True +3422class Case(Func): +3423 arg_types = {"this": False, "ifs": True, "default": False} +3424 3425 -3426 -3427class ConcatWs(Concat): -3428 _sql_names = ["CONCAT_WS"] -3429 -3430 -3431class Count(AggFunc): -3432 arg_types = {"this": False} -3433 -3434 -3435class CountIf(AggFunc): -3436 pass -3437 -3438 -3439class CurrentDate(Func): -3440 arg_types = {"this": False} -3441 -3442 -3443class CurrentDatetime(Func): -3444 arg_types = {"this": False} -3445 -3446 -3447class CurrentTime(Func): -3448 arg_types = {"this": False} -3449 -3450 -3451class CurrentTimestamp(Func): -3452 arg_types = {"this": False} -3453 -3454 -3455class DateAdd(Func, TimeUnit): -3456 arg_types = {"this": True, "expression": True, "unit": False} +3426class Cast(Func): +3427 arg_types = {"this": True, "to": True} +3428 +3429 @property +3430 def name(self) -> str: +3431 return self.this.name +3432 +3433 @property +3434 def to(self): +3435 return self.args["to"] +3436 +3437 @property +3438 def output_name(self): +3439 return self.name +3440 +3441 def is_type(self, dtype: DataType.Type) -> bool: +3442 return self.to.is_type(dtype) +3443 +3444 +3445class Collate(Binary): +3446 pass +3447 +3448 +3449class TryCast(Cast): +3450 pass +3451 +3452 +3453class Ceil(Func): +3454 arg_types = {"this": True, "decimals": False} +3455 _sql_names = ["CEIL", "CEILING"] +3456 3457 -3458 -3459class DateSub(Func, TimeUnit): -3460 arg_types = {"this": True, "expression": True, "unit": False} +3458class Coalesce(Func): +3459 arg_types = {"this": True, "expressions": False} +3460 is_var_len_args = True 3461 3462 -3463class DateDiff(Func, TimeUnit): -3464 _sql_names = ["DATEDIFF", "DATE_DIFF"] -3465 arg_types = {"this": True, "expression": True, "unit": False} +3463class Concat(Func): +3464 arg_types = {"expressions": True} +3465 is_var_len_args = True 3466 3467 -3468class DateTrunc(Func): -3469 arg_types = {"unit": True, "this": True, "zone": False} +3468class ConcatWs(Concat): +3469 _sql_names = ["CONCAT_WS"] 3470 3471 -3472class DatetimeAdd(Func, TimeUnit): -3473 arg_types = {"this": True, "expression": True, "unit": False} +3472class Count(AggFunc): +3473 arg_types = {"this": False} 3474 3475 -3476class DatetimeSub(Func, TimeUnit): -3477 arg_types = {"this": True, "expression": True, "unit": False} +3476class CountIf(AggFunc): +3477 pass 3478 3479 -3480class DatetimeDiff(Func, TimeUnit): -3481 arg_types = {"this": True, "expression": True, "unit": False} +3480class CurrentDate(Func): +3481 arg_types = {"this": False} 3482 3483 -3484class DatetimeTrunc(Func, TimeUnit): -3485 arg_types = {"this": True, "unit": True, "zone": False} +3484class CurrentDatetime(Func): +3485 arg_types = {"this": False} 3486 3487 -3488class DayOfWeek(Func): -3489 _sql_names = ["DAY_OF_WEEK", "DAYOFWEEK"] +3488class CurrentTime(Func): +3489 arg_types = {"this": False} 3490 3491 -3492class DayOfMonth(Func): -3493 _sql_names = ["DAY_OF_MONTH", "DAYOFMONTH"] +3492class CurrentTimestamp(Func): +3493 arg_types = {"this": False} 3494 3495 -3496class DayOfYear(Func): -3497 _sql_names = ["DAY_OF_YEAR", "DAYOFYEAR"] +3496class CurrentUser(Func): +3497 arg_types = {"this": False} 3498 3499 -3500class WeekOfYear(Func): -3501 _sql_names = ["WEEK_OF_YEAR", "WEEKOFYEAR"] +3500class DateAdd(Func, TimeUnit): +3501 arg_types = {"this": True, "expression": True, "unit": False} 3502 3503 -3504class LastDateOfMonth(Func): -3505 pass +3504class DateSub(Func, TimeUnit): +3505 arg_types = {"this": True, "expression": True, "unit": False} 3506 3507 -3508class Extract(Func): -3509 arg_types = {"this": True, "expression": True} -3510 +3508class DateDiff(Func, TimeUnit): +3509 _sql_names = ["DATEDIFF", "DATE_DIFF"] +3510 arg_types = {"this": True, "expression": True, "unit": False} 3511 -3512class TimestampAdd(Func, TimeUnit): -3513 arg_types = {"this": True, "expression": True, "unit": False} -3514 +3512 +3513class DateTrunc(Func): +3514 arg_types = {"unit": True, "this": True, "zone": False} 3515 -3516class TimestampSub(Func, TimeUnit): -3517 arg_types = {"this": True, "expression": True, "unit": False} -3518 +3516 +3517class DatetimeAdd(Func, TimeUnit): +3518 arg_types = {"this": True, "expression": True, "unit": False} 3519 -3520class TimestampDiff(Func, TimeUnit): -3521 arg_types = {"this": True, "expression": True, "unit": False} -3522 +3520 +3521class DatetimeSub(Func, TimeUnit): +3522 arg_types = {"this": True, "expression": True, "unit": False} 3523 -3524class TimestampTrunc(Func, TimeUnit): -3525 arg_types = {"this": True, "unit": True, "zone": False} -3526 +3524 +3525class DatetimeDiff(Func, TimeUnit): +3526 arg_types = {"this": True, "expression": True, "unit": False} 3527 -3528class TimeAdd(Func, TimeUnit): -3529 arg_types = {"this": True, "expression": True, "unit": False} -3530 +3528 +3529class DatetimeTrunc(Func, TimeUnit): +3530 arg_types = {"this": True, "unit": True, "zone": False} 3531 -3532class TimeSub(Func, TimeUnit): -3533 arg_types = {"this": True, "expression": True, "unit": False} -3534 +3532 +3533class DayOfWeek(Func): +3534 _sql_names = ["DAY_OF_WEEK", "DAYOFWEEK"] 3535 -3536class TimeDiff(Func, TimeUnit): -3537 arg_types = {"this": True, "expression": True, "unit": False} -3538 +3536 +3537class DayOfMonth(Func): +3538 _sql_names = ["DAY_OF_MONTH", "DAYOFMONTH"] 3539 -3540class TimeTrunc(Func, TimeUnit): -3541 arg_types = {"this": True, "unit": True, "zone": False} -3542 +3540 +3541class DayOfYear(Func): +3542 _sql_names = ["DAY_OF_YEAR", "DAYOFYEAR"] 3543 -3544class DateFromParts(Func): -3545 _sql_names = ["DATEFROMPARTS"] -3546 arg_types = {"year": True, "month": True, "day": True} +3544 +3545class WeekOfYear(Func): +3546 _sql_names = ["WEEK_OF_YEAR", "WEEKOFYEAR"] 3547 3548 -3549class DateStrToDate(Func): +3549class LastDateOfMonth(Func): 3550 pass 3551 3552 -3553class DateToDateStr(Func): -3554 pass +3553class Extract(Func): +3554 arg_types = {"this": True, "expression": True} 3555 3556 -3557class DateToDi(Func): -3558 pass +3557class TimestampAdd(Func, TimeUnit): +3558 arg_types = {"this": True, "expression": True, "unit": False} 3559 3560 -3561class Day(Func): -3562 pass +3561class TimestampSub(Func, TimeUnit): +3562 arg_types = {"this": True, "expression": True, "unit": False} 3563 3564 -3565class Decode(Func): -3566 arg_types = {"this": True, "charset": True, "replace": False} +3565class TimestampDiff(Func, TimeUnit): +3566 arg_types = {"this": True, "expression": True, "unit": False} 3567 3568 -3569class DiToDate(Func): -3570 pass +3569class TimestampTrunc(Func, TimeUnit): +3570 arg_types = {"this": True, "unit": True, "zone": False} 3571 3572 -3573class Encode(Func): -3574 arg_types = {"this": True, "charset": True} +3573class TimeAdd(Func, TimeUnit): +3574 arg_types = {"this": True, "expression": True, "unit": False} 3575 3576 -3577class Exp(Func): -3578 pass +3577class TimeSub(Func, TimeUnit): +3578 arg_types = {"this": True, "expression": True, "unit": False} 3579 3580 -3581class Explode(Func): -3582 pass +3581class TimeDiff(Func, TimeUnit): +3582 arg_types = {"this": True, "expression": True, "unit": False} 3583 3584 -3585class ExponentialTimeDecayedAvg(AggFunc): -3586 arg_types = {"this": True, "time": False, "decay": False} +3585class TimeTrunc(Func, TimeUnit): +3586 arg_types = {"this": True, "unit": True, "zone": False} 3587 3588 -3589class Floor(Func): -3590 arg_types = {"this": True, "decimals": False} -3591 +3589class DateFromParts(Func): +3590 _sql_names = ["DATEFROMPARTS"] +3591 arg_types = {"year": True, "month": True, "day": True} 3592 -3593class Greatest(Func): -3594 arg_types = {"this": True, "expressions": False} -3595 is_var_len_args = True +3593 +3594class DateStrToDate(Func): +3595 pass 3596 3597 -3598class GroupConcat(Func): -3599 arg_types = {"this": True, "separator": False} +3598class DateToDateStr(Func): +3599 pass 3600 3601 -3602class GroupUniqArray(AggFunc): -3603 arg_types = {"this": True, "size": False} +3602class DateToDi(Func): +3603 pass 3604 3605 -3606class Hex(Func): +3606class Day(Func): 3607 pass 3608 3609 -3610class Histogram(AggFunc): -3611 arg_types = {"this": True, "bins": False} +3610class Decode(Func): +3611 arg_types = {"this": True, "charset": True, "replace": False} 3612 3613 -3614class If(Func): -3615 arg_types = {"this": True, "true": True, "false": False} +3614class DiToDate(Func): +3615 pass 3616 3617 -3618class IfNull(Func): -3619 arg_types = {"this": True, "expression": False} -3620 _sql_names = ["IFNULL", "NVL"] +3618class Encode(Func): +3619 arg_types = {"this": True, "charset": True} +3620 3621 -3622 -3623class Initcap(Func): -3624 pass +3622class Exp(Func): +3623 pass +3624 3625 -3626 -3627class JSONKeyValue(Expression): -3628 arg_types = {"this": True, "expression": True} +3626class Explode(Func): +3627 pass +3628 3629 -3630 -3631class JSONObject(Func): -3632 arg_types = { -3633 "expressions": False, -3634 "null_handling": False, -3635 "unique_keys": False, -3636 "return_type": False, -3637 "format_json": False, -3638 "encoding": False, -3639 } -3640 +3630class ExponentialTimeDecayedAvg(AggFunc): +3631 arg_types = {"this": True, "time": False, "decay": False} +3632 +3633 +3634class Floor(Func): +3635 arg_types = {"this": True, "decimals": False} +3636 +3637 +3638class Greatest(Func): +3639 arg_types = {"this": True, "expressions": False} +3640 is_var_len_args = True 3641 -3642class JSONBContains(Binary): -3643 _sql_names = ["JSONB_CONTAINS"] -3644 +3642 +3643class GroupConcat(Func): +3644 arg_types = {"this": True, "separator": False} 3645 -3646class JSONExtract(Binary, Func): -3647 _sql_names = ["JSON_EXTRACT"] -3648 +3646 +3647class GroupUniqArray(AggFunc): +3648 arg_types = {"this": True, "size": False} 3649 -3650class JSONExtractScalar(JSONExtract): -3651 _sql_names = ["JSON_EXTRACT_SCALAR"] -3652 +3650 +3651class Hex(Func): +3652 pass 3653 -3654class JSONBExtract(JSONExtract): -3655 _sql_names = ["JSONB_EXTRACT"] -3656 +3654 +3655class Histogram(AggFunc): +3656 arg_types = {"this": True, "bins": False} 3657 -3658class JSONBExtractScalar(JSONExtract): -3659 _sql_names = ["JSONB_EXTRACT_SCALAR"] -3660 +3658 +3659class If(Func): +3660 arg_types = {"this": True, "true": True, "false": False} 3661 -3662class JSONFormat(Func): -3663 arg_types = {"this": False, "options": False} -3664 _sql_names = ["JSON_FORMAT"] -3665 +3662 +3663class IfNull(Func): +3664 arg_types = {"this": True, "expression": False} +3665 _sql_names = ["IFNULL", "NVL"] 3666 -3667class Least(Func): -3668 arg_types = {"expressions": False} -3669 is_var_len_args = True +3667 +3668class Initcap(Func): +3669 pass 3670 3671 -3672class Length(Func): -3673 pass +3672class JSONKeyValue(Expression): +3673 arg_types = {"this": True, "expression": True} 3674 3675 -3676class Levenshtein(Func): +3676class JSONObject(Func): 3677 arg_types = { -3678 "this": True, -3679 "expression": False, -3680 "ins_cost": False, -3681 "del_cost": False, -3682 "sub_cost": False, -3683 } -3684 +3678 "expressions": False, +3679 "null_handling": False, +3680 "unique_keys": False, +3681 "return_type": False, +3682 "format_json": False, +3683 "encoding": False, +3684 } 3685 -3686class Ln(Func): -3687 pass -3688 +3686 +3687class JSONBContains(Binary): +3688 _sql_names = ["JSONB_CONTAINS"] 3689 -3690class Log(Func): -3691 arg_types = {"this": True, "expression": False} -3692 +3690 +3691class JSONExtract(Binary, Func): +3692 _sql_names = ["JSON_EXTRACT"] 3693 -3694class Log2(Func): -3695 pass -3696 +3694 +3695class JSONExtractScalar(JSONExtract): +3696 _sql_names = ["JSON_EXTRACT_SCALAR"] 3697 -3698class Log10(Func): -3699 pass -3700 +3698 +3699class JSONBExtract(JSONExtract): +3700 _sql_names = ["JSONB_EXTRACT"] 3701 -3702class LogicalOr(AggFunc): -3703 _sql_names = ["LOGICAL_OR", "BOOL_OR", "BOOLOR_AGG"] -3704 +3702 +3703class JSONBExtractScalar(JSONExtract): +3704 _sql_names = ["JSONB_EXTRACT_SCALAR"] 3705 -3706class LogicalAnd(AggFunc): -3707 _sql_names = ["LOGICAL_AND", "BOOL_AND", "BOOLAND_AGG"] -3708 -3709 -3710class Lower(Func): -3711 _sql_names = ["LOWER", "LCASE"] -3712 -3713 -3714class Map(Func): -3715 arg_types = {"keys": False, "values": False} +3706 +3707class JSONFormat(Func): +3708 arg_types = {"this": False, "options": False} +3709 _sql_names = ["JSON_FORMAT"] +3710 +3711 +3712class Least(Func): +3713 arg_types = {"expressions": False} +3714 is_var_len_args = True +3715 3716 -3717 -3718class VarMap(Func): -3719 arg_types = {"keys": True, "values": True} -3720 is_var_len_args = True -3721 -3722 -3723# https://dev.mysql.com/doc/refman/8.0/en/fulltext-search.html -3724class MatchAgainst(Func): -3725 arg_types = {"this": True, "expressions": True, "modifier": False} -3726 -3727 -3728class Max(AggFunc): -3729 arg_types = {"this": True, "expressions": False} -3730 is_var_len_args = True -3731 -3732 -3733class Min(AggFunc): -3734 arg_types = {"this": True, "expressions": False} -3735 is_var_len_args = True -3736 +3717class Length(Func): +3718 pass +3719 +3720 +3721class Levenshtein(Func): +3722 arg_types = { +3723 "this": True, +3724 "expression": False, +3725 "ins_cost": False, +3726 "del_cost": False, +3727 "sub_cost": False, +3728 } +3729 +3730 +3731class Ln(Func): +3732 pass +3733 +3734 +3735class Log(Func): +3736 arg_types = {"this": True, "expression": False} 3737 -3738class Month(Func): -3739 pass -3740 +3738 +3739class Log2(Func): +3740 pass 3741 -3742class Nvl2(Func): -3743 arg_types = {"this": True, "true": True, "false": False} -3744 +3742 +3743class Log10(Func): +3744 pass 3745 -3746class Posexplode(Func): -3747 pass -3748 +3746 +3747class LogicalOr(AggFunc): +3748 _sql_names = ["LOGICAL_OR", "BOOL_OR", "BOOLOR_AGG"] 3749 -3750class Pow(Binary, Func): -3751 _sql_names = ["POWER", "POW"] -3752 +3750 +3751class LogicalAnd(AggFunc): +3752 _sql_names = ["LOGICAL_AND", "BOOL_AND", "BOOLAND_AGG"] 3753 -3754class PercentileCont(AggFunc): -3755 pass -3756 +3754 +3755class Lower(Func): +3756 _sql_names = ["LOWER", "LCASE"] 3757 -3758class PercentileDisc(AggFunc): -3759 pass -3760 +3758 +3759class Map(Func): +3760 arg_types = {"keys": False, "values": False} 3761 -3762class Quantile(AggFunc): -3763 arg_types = {"this": True, "quantile": True} -3764 +3762 +3763class StarMap(Func): +3764 pass 3765 -3766# Clickhouse-specific: -3767# https://clickhouse.com/docs/en/sql-reference/aggregate-functions/reference/quantiles/#quantiles -3768class Quantiles(AggFunc): -3769 arg_types = {"parameters": True, "expressions": True} -3770 is_var_len_args = True +3766 +3767class VarMap(Func): +3768 arg_types = {"keys": True, "values": True} +3769 is_var_len_args = True +3770 3771 -3772 -3773class QuantileIf(AggFunc): -3774 arg_types = {"parameters": True, "expressions": True} +3772# https://dev.mysql.com/doc/refman/8.0/en/fulltext-search.html +3773class MatchAgainst(Func): +3774 arg_types = {"this": True, "expressions": True, "modifier": False} 3775 3776 -3777class ApproxQuantile(Quantile): -3778 arg_types = {"this": True, "quantile": True, "accuracy": False, "weight": False} -3779 +3777class Max(AggFunc): +3778 arg_types = {"this": True, "expressions": False} +3779 is_var_len_args = True 3780 -3781class RangeN(Func): -3782 arg_types = {"this": True, "expressions": True, "each": False} -3783 +3781 +3782class MD5(Func): +3783 _sql_names = ["MD5"] 3784 -3785class ReadCSV(Func): -3786 _sql_names = ["READ_CSV"] -3787 is_var_len_args = True -3788 arg_types = {"this": True, "expressions": False} +3785 +3786class Min(AggFunc): +3787 arg_types = {"this": True, "expressions": False} +3788 is_var_len_args = True 3789 3790 -3791class Reduce(Func): -3792 arg_types = {"this": True, "initial": True, "merge": True, "finish": False} +3791class Month(Func): +3792 pass 3793 3794 -3795class RegexpExtract(Func): -3796 arg_types = { -3797 "this": True, -3798 "expression": True, -3799 "position": False, -3800 "occurrence": False, -3801 "group": False, -3802 } -3803 -3804 -3805class RegexpLike(Func): -3806 arg_types = {"this": True, "expression": True, "flag": False} -3807 -3808 -3809class RegexpILike(Func): -3810 arg_types = {"this": True, "expression": True, "flag": False} -3811 -3812 -3813# https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.split.html -3814# limit is the number of times a pattern is applied -3815class RegexpSplit(Func): -3816 arg_types = {"this": True, "expression": True, "limit": False} +3795class Nvl2(Func): +3796 arg_types = {"this": True, "true": True, "false": False} +3797 +3798 +3799class Posexplode(Func): +3800 pass +3801 +3802 +3803class Pow(Binary, Func): +3804 _sql_names = ["POWER", "POW"] +3805 +3806 +3807class PercentileCont(AggFunc): +3808 pass +3809 +3810 +3811class PercentileDisc(AggFunc): +3812 pass +3813 +3814 +3815class Quantile(AggFunc): +3816 arg_types = {"this": True, "quantile": True} 3817 3818 -3819class Repeat(Func): -3820 arg_types = {"this": True, "times": True} -3821 -3822 -3823class Round(Func): -3824 arg_types = {"this": True, "decimals": False} +3819# Clickhouse-specific: +3820# https://clickhouse.com/docs/en/sql-reference/aggregate-functions/reference/quantiles/#quantiles +3821class Quantiles(AggFunc): +3822 arg_types = {"parameters": True, "expressions": True} +3823 is_var_len_args = True +3824 3825 -3826 -3827class RowNumber(Func): -3828 arg_types: t.Dict[str, t.Any] = {} +3826class QuantileIf(AggFunc): +3827 arg_types = {"parameters": True, "expressions": True} +3828 3829 -3830 -3831class SafeDivide(Func): -3832 arg_types = {"this": True, "expression": True} +3830class ApproxQuantile(Quantile): +3831 arg_types = {"this": True, "quantile": True, "accuracy": False, "weight": False} +3832 3833 -3834 -3835class SetAgg(AggFunc): -3836 pass +3834class RangeN(Func): +3835 arg_types = {"this": True, "expressions": True, "each": False} +3836 3837 -3838 -3839class SortArray(Func): -3840 arg_types = {"this": True, "asc": False} -3841 +3838class ReadCSV(Func): +3839 _sql_names = ["READ_CSV"] +3840 is_var_len_args = True +3841 arg_types = {"this": True, "expressions": False} 3842 -3843class Split(Func): -3844 arg_types = {"this": True, "expression": True, "limit": False} -3845 +3843 +3844class Reduce(Func): +3845 arg_types = {"this": True, "initial": True, "merge": True, "finish": False} 3846 -3847# Start may be omitted in the case of postgres -3848# https://www.postgresql.org/docs/9.1/functions-string.html @ Table 9-6 -3849class Substring(Func): -3850 arg_types = {"this": True, "start": False, "length": False} -3851 -3852 -3853class StrPosition(Func): -3854 arg_types = { -3855 "this": True, -3856 "substr": True, -3857 "position": False, -3858 "instance": False, -3859 } +3847 +3848class RegexpExtract(Func): +3849 arg_types = { +3850 "this": True, +3851 "expression": True, +3852 "position": False, +3853 "occurrence": False, +3854 "group": False, +3855 } +3856 +3857 +3858class RegexpLike(Func): +3859 arg_types = {"this": True, "expression": True, "flag": False} 3860 3861 -3862class StrToDate(Func): -3863 arg_types = {"this": True, "format": True} +3862class RegexpILike(Func): +3863 arg_types = {"this": True, "expression": True, "flag": False} 3864 3865 -3866class StrToTime(Func): -3867 arg_types = {"this": True, "format": True} -3868 -3869 -3870# Spark allows unix_timestamp() -3871# https://spark.apache.org/docs/3.1.3/api/python/reference/api/pyspark.sql.functions.unix_timestamp.html -3872class StrToUnix(Func): -3873 arg_types = {"this": False, "format": False} +3866# https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.split.html +3867# limit is the number of times a pattern is applied +3868class RegexpSplit(Func): +3869 arg_types = {"this": True, "expression": True, "limit": False} +3870 +3871 +3872class Repeat(Func): +3873 arg_types = {"this": True, "times": True} 3874 3875 -3876class NumberToStr(Func): -3877 arg_types = {"this": True, "format": True} +3876class Round(Func): +3877 arg_types = {"this": True, "decimals": False} 3878 3879 -3880class Struct(Func): -3881 arg_types = {"expressions": True} -3882 is_var_len_args = True +3880class RowNumber(Func): +3881 arg_types: t.Dict[str, t.Any] = {} +3882 3883 -3884 -3885class StructExtract(Func): -3886 arg_types = {"this": True, "expression": True} +3884class SafeDivide(Func): +3885 arg_types = {"this": True, "expression": True} +3886 3887 -3888 -3889class Sum(AggFunc): -3890 pass +3888class SetAgg(AggFunc): +3889 pass +3890 3891 -3892 -3893class Sqrt(Func): -3894 pass +3892class SHA(Func): +3893 _sql_names = ["SHA", "SHA1"] +3894 3895 -3896 -3897class Stddev(AggFunc): -3898 pass +3896class SHA2(Func): +3897 _sql_names = ["SHA2"] +3898 arg_types = {"this": True, "length": False} 3899 3900 -3901class StddevPop(AggFunc): -3902 pass +3901class SortArray(Func): +3902 arg_types = {"this": True, "asc": False} 3903 3904 -3905class StddevSamp(AggFunc): -3906 pass +3905class Split(Func): +3906 arg_types = {"this": True, "expression": True, "limit": False} 3907 3908 -3909class TimeToStr(Func): -3910 arg_types = {"this": True, "format": True} -3911 -3912 -3913class TimeToTimeStr(Func): -3914 pass -3915 -3916 -3917class TimeToUnix(Func): -3918 pass -3919 -3920 -3921class TimeStrToDate(Func): -3922 pass +3909# Start may be omitted in the case of postgres +3910# https://www.postgresql.org/docs/9.1/functions-string.html @ Table 9-6 +3911class Substring(Func): +3912 arg_types = {"this": True, "start": False, "length": False} +3913 +3914 +3915class StrPosition(Func): +3916 arg_types = { +3917 "this": True, +3918 "substr": True, +3919 "position": False, +3920 "instance": False, +3921 } +3922 3923 -3924 -3925class TimeStrToTime(Func): -3926 pass +3924class StrToDate(Func): +3925 arg_types = {"this": True, "format": True} +3926 3927 -3928 -3929class TimeStrToUnix(Func): -3930 pass +3928class StrToTime(Func): +3929 arg_types = {"this": True, "format": True} +3930 3931 -3932 -3933class Trim(Func): -3934 arg_types = { -3935 "this": True, -3936 "expression": False, -3937 "position": False, -3938 "collation": False, -3939 } +3932# Spark allows unix_timestamp() +3933# https://spark.apache.org/docs/3.1.3/api/python/reference/api/pyspark.sql.functions.unix_timestamp.html +3934class StrToUnix(Func): +3935 arg_types = {"this": False, "format": False} +3936 +3937 +3938class NumberToStr(Func): +3939 arg_types = {"this": True, "format": True} 3940 3941 -3942class TsOrDsAdd(Func, TimeUnit): -3943 arg_types = {"this": True, "expression": True, "unit": False} -3944 +3942class Struct(Func): +3943 arg_types = {"expressions": True} +3944 is_var_len_args = True 3945 -3946class TsOrDsToDateStr(Func): -3947 pass -3948 +3946 +3947class StructExtract(Func): +3948 arg_types = {"this": True, "expression": True} 3949 -3950class TsOrDsToDate(Func): -3951 arg_types = {"this": True, "format": False} -3952 +3950 +3951class Sum(AggFunc): +3952 pass 3953 -3954class TsOrDiToDi(Func): -3955 pass -3956 +3954 +3955class Sqrt(Func): +3956 pass 3957 -3958class Unhex(Func): -3959 pass -3960 +3958 +3959class Stddev(AggFunc): +3960 pass 3961 -3962class UnixToStr(Func): -3963 arg_types = {"this": True, "format": False} -3964 +3962 +3963class StddevPop(AggFunc): +3964 pass 3965 -3966# https://prestodb.io/docs/current/functions/datetime.html -3967# presto has weird zone/hours/minutes -3968class UnixToTime(Func): -3969 arg_types = {"this": True, "scale": False, "zone": False, "hours": False, "minutes": False} +3966 +3967class StddevSamp(AggFunc): +3968 pass +3969 3970 -3971 SECONDS = Literal.string("seconds") -3972 MILLIS = Literal.string("millis") -3973 MICROS = Literal.string("micros") +3971class TimeToStr(Func): +3972 arg_types = {"this": True, "format": True} +3973 3974 -3975 -3976class UnixToTimeStr(Func): -3977 pass +3975class TimeToTimeStr(Func): +3976 pass +3977 3978 -3979 -3980class Upper(Func): -3981 _sql_names = ["UPPER", "UCASE"] +3979class TimeToUnix(Func): +3980 pass +3981 3982 -3983 -3984class Variance(AggFunc): -3985 _sql_names = ["VARIANCE", "VARIANCE_SAMP", "VAR_SAMP"] +3983class TimeStrToDate(Func): +3984 pass +3985 3986 -3987 -3988class VariancePop(AggFunc): -3989 _sql_names = ["VARIANCE_POP", "VAR_POP"] +3987class TimeStrToTime(Func): +3988 pass +3989 3990 -3991 -3992class Week(Func): -3993 arg_types = {"this": True, "mode": False} +3991class TimeStrToUnix(Func): +3992 pass +3993 3994 -3995 -3996class XMLTable(Func): -3997 arg_types = {"this": True, "passing": False, "columns": False, "by_ref": False} -3998 -3999 -4000class Year(Func): -4001 pass +3995class Trim(Func): +3996 arg_types = { +3997 "this": True, +3998 "expression": False, +3999 "position": False, +4000 "collation": False, +4001 } 4002 4003 -4004class Use(Expression): -4005 arg_types = {"this": True, "kind": False} +4004class TsOrDsAdd(Func, TimeUnit): +4005 arg_types = {"this": True, "expression": True, "unit": False} 4006 4007 -4008class Merge(Expression): -4009 arg_types = {"this": True, "using": True, "on": True, "expressions": True} +4008class TsOrDsToDateStr(Func): +4009 pass 4010 4011 -4012class When(Func): -4013 arg_types = {"matched": True, "source": False, "condition": False, "then": True} +4012class TsOrDsToDate(Func): +4013 arg_types = {"this": True, "format": False} 4014 4015 -4016def _norm_arg(arg): -4017 return arg.lower() if type(arg) is str else arg +4016class TsOrDiToDi(Func): +4017 pass 4018 4019 -4020ALL_FUNCTIONS = subclasses(__name__, Func, (AggFunc, Anonymous, Func)) -4021 +4020class Unhex(Func): +4021 pass 4022 -4023# Helpers -4024def maybe_parse( -4025 sql_or_expression: ExpOrStr, -4026 *, -4027 into: t.Optional[IntoType] = None, -4028 dialect: DialectType = None, -4029 prefix: t.Optional[str] = None, -4030 copy: bool = False, -4031 **opts, -4032) -> Expression: -4033 """Gracefully handle a possible string or expression. -4034 -4035 Example: -4036 >>> maybe_parse("1") -4037 (LITERAL this: 1, is_string: False) -4038 >>> maybe_parse(to_identifier("x")) -4039 (IDENTIFIER this: x, quoted: False) +4023 +4024class UnixToStr(Func): +4025 arg_types = {"this": True, "format": False} +4026 +4027 +4028# https://prestodb.io/docs/current/functions/datetime.html +4029# presto has weird zone/hours/minutes +4030class UnixToTime(Func): +4031 arg_types = {"this": True, "scale": False, "zone": False, "hours": False, "minutes": False} +4032 +4033 SECONDS = Literal.string("seconds") +4034 MILLIS = Literal.string("millis") +4035 MICROS = Literal.string("micros") +4036 +4037 +4038class UnixToTimeStr(Func): +4039 pass 4040 -4041 Args: -4042 sql_or_expression: the SQL code string or an expression -4043 into: the SQLGlot Expression to parse into -4044 dialect: the dialect used to parse the input expressions (in the case that an -4045 input expression is a SQL string). -4046 prefix: a string to prefix the sql with before it gets parsed -4047 (automatically includes a space) -4048 copy: whether or not to copy the expression. -4049 **opts: other options to use to parse the input expressions (again, in the case -4050 that an input expression is a SQL string). -4051 -4052 Returns: -4053 Expression: the parsed or given expression. -4054 """ -4055 if isinstance(sql_or_expression, Expression): -4056 if copy: -4057 return sql_or_expression.copy() -4058 return sql_or_expression -4059 -4060 import sqlglot +4041 +4042class Upper(Func): +4043 _sql_names = ["UPPER", "UCASE"] +4044 +4045 +4046class Variance(AggFunc): +4047 _sql_names = ["VARIANCE", "VARIANCE_SAMP", "VAR_SAMP"] +4048 +4049 +4050class VariancePop(AggFunc): +4051 _sql_names = ["VARIANCE_POP", "VAR_POP"] +4052 +4053 +4054class Week(Func): +4055 arg_types = {"this": True, "mode": False} +4056 +4057 +4058class XMLTable(Func): +4059 arg_types = {"this": True, "passing": False, "columns": False, "by_ref": False} +4060 4061 -4062 sql = str(sql_or_expression) -4063 if prefix: -4064 sql = f"{prefix} {sql}" -4065 return sqlglot.parse_one(sql, read=dialect, into=into, **opts) -4066 -4067 -4068def _maybe_copy(instance, copy=True): -4069 return instance.copy() if copy else instance -4070 -4071 -4072def _is_wrong_expression(expression, into): -4073 return isinstance(expression, Expression) and not isinstance(expression, into) -4074 -4075 -4076def _apply_builder( -4077 expression, -4078 instance, -4079 arg, -4080 copy=True, -4081 prefix=None, -4082 into=None, -4083 dialect=None, -4084 **opts, -4085): -4086 if _is_wrong_expression(expression, into): -4087 expression = into(this=expression) -4088 instance = _maybe_copy(instance, copy) -4089 expression = maybe_parse( -4090 sql_or_expression=expression, -4091 prefix=prefix, -4092 into=into, -4093 dialect=dialect, -4094 **opts, -4095 ) -4096 instance.set(arg, expression) -4097 return instance +4062class Year(Func): +4063 pass +4064 +4065 +4066class Use(Expression): +4067 arg_types = {"this": True, "kind": False} +4068 +4069 +4070class Merge(Expression): +4071 arg_types = {"this": True, "using": True, "on": True, "expressions": True} +4072 +4073 +4074class When(Func): +4075 arg_types = {"matched": True, "source": False, "condition": False, "then": True} +4076 +4077 +4078def _norm_arg(arg): +4079 return arg.lower() if type(arg) is str else arg +4080 +4081 +4082ALL_FUNCTIONS = subclasses(__name__, Func, (AggFunc, Anonymous, Func)) +4083 +4084 +4085# Helpers +4086@t.overload +4087def maybe_parse( +4088 sql_or_expression: ExpOrStr, +4089 *, +4090 into: t.Type[E], +4091 dialect: DialectType = None, +4092 prefix: t.Optional[str] = None, +4093 copy: bool = False, +4094 **opts, +4095) -> E: +4096 ... +4097 4098 -4099 -4100def _apply_child_list_builder( -4101 *expressions, -4102 instance, -4103 arg, -4104 append=True, -4105 copy=True, -4106 prefix=None, -4107 into=None, -4108 dialect=None, -4109 properties=None, -4110 **opts, -4111): -4112 instance = _maybe_copy(instance, copy) -4113 parsed = [] -4114 for expression in expressions: -4115 if _is_wrong_expression(expression, into): -4116 expression = into(expressions=[expression]) -4117 expression = maybe_parse( -4118 expression, -4119 into=into, -4120 dialect=dialect, -4121 prefix=prefix, -4122 **opts, -4123 ) -4124 parsed.extend(expression.expressions) -4125 -4126 existing = instance.args.get(arg) -4127 if append and existing: -4128 parsed = existing.expressions + parsed -4129 -4130 child = into(expressions=parsed) -4131 for k, v in (properties or {}).items(): -4132 child.set(k, v) -4133 instance.set(arg, child) -4134 return instance -4135 -4136 -4137def _apply_list_builder( -4138 *expressions, -4139 instance, -4140 arg, -4141 append=True, -4142 copy=True, -4143 prefix=None, -4144 into=None, -4145 dialect=None, -4146 **opts, -4147): -4148 inst = _maybe_copy(instance, copy) +4099@t.overload +4100def maybe_parse( +4101 sql_or_expression: str | E, +4102 *, +4103 into: t.Optional[IntoType] = None, +4104 dialect: DialectType = None, +4105 prefix: t.Optional[str] = None, +4106 copy: bool = False, +4107 **opts, +4108) -> E: +4109 ... +4110 +4111 +4112def maybe_parse( +4113 sql_or_expression: ExpOrStr, +4114 *, +4115 into: t.Optional[IntoType] = None, +4116 dialect: DialectType = None, +4117 prefix: t.Optional[str] = None, +4118 copy: bool = False, +4119 **opts, +4120) -> Expression: +4121 """Gracefully handle a possible string or expression. +4122 +4123 Example: +4124 >>> maybe_parse("1") +4125 (LITERAL this: 1, is_string: False) +4126 >>> maybe_parse(to_identifier("x")) +4127 (IDENTIFIER this: x, quoted: False) +4128 +4129 Args: +4130 sql_or_expression: the SQL code string or an expression +4131 into: the SQLGlot Expression to parse into +4132 dialect: the dialect used to parse the input expressions (in the case that an +4133 input expression is a SQL string). +4134 prefix: a string to prefix the sql with before it gets parsed +4135 (automatically includes a space) +4136 copy: whether or not to copy the expression. +4137 **opts: other options to use to parse the input expressions (again, in the case +4138 that an input expression is a SQL string). +4139 +4140 Returns: +4141 Expression: the parsed or given expression. +4142 """ +4143 if isinstance(sql_or_expression, Expression): +4144 if copy: +4145 return sql_or_expression.copy() +4146 return sql_or_expression +4147 +4148 import sqlglot 4149 -4150 expressions = [ -4151 maybe_parse( -4152 sql_or_expression=expression, -4153 into=into, -4154 prefix=prefix, -4155 dialect=dialect, -4156 **opts, -4157 ) -4158 for expression in expressions -4159 ] -4160 -4161 existing_expressions = inst.args.get(arg) -4162 if append and existing_expressions: -4163 expressions = existing_expressions + expressions -4164 -4165 inst.set(arg, expressions) -4166 return inst -4167 -4168 -4169def _apply_conjunction_builder( -4170 *expressions, -4171 instance, -4172 arg, -4173 into=None, -4174 append=True, -4175 copy=True, -4176 dialect=None, -4177 **opts, -4178): -4179 expressions = [exp for exp in expressions if exp is not None and exp != ""] -4180 if not expressions: -4181 return instance -4182 -4183 inst = _maybe_copy(instance, copy) -4184 -4185 existing = inst.args.get(arg) -4186 if append and existing is not None: -4187 expressions = [existing.this if into else existing] + list(expressions) -4188 -4189 node = and_(*expressions, dialect=dialect, **opts) -4190 -4191 inst.set(arg, into(this=node) if into else node) -4192 return inst -4193 -4194 -4195def _combine(expressions, operator, dialect=None, **opts): -4196 expressions = [condition(expression, dialect=dialect, **opts) for expression in expressions] -4197 this = expressions[0] -4198 if expressions[1:]: -4199 this = _wrap_operator(this) -4200 for expression in expressions[1:]: -4201 this = operator(this=this, expression=_wrap_operator(expression)) -4202 return this -4203 -4204 -4205def _wrap_operator(expression): -4206 if isinstance(expression, (And, Or, Not)): -4207 expression = Paren(this=expression) -4208 return expression -4209 -4210 -4211def union(left, right, distinct=True, dialect=None, **opts): -4212 """ -4213 Initializes a syntax tree from one UNION expression. -4214 -4215 Example: -4216 >>> union("SELECT * FROM foo", "SELECT * FROM bla").sql() -4217 'SELECT * FROM foo UNION SELECT * FROM bla' -4218 -4219 Args: -4220 left (str | Expression): the SQL code string corresponding to the left-hand side. -4221 If an `Expression` instance is passed, it will be used as-is. -4222 right (str | Expression): the SQL code string corresponding to the right-hand side. -4223 If an `Expression` instance is passed, it will be used as-is. -4224 distinct (bool): set the DISTINCT flag if and only if this is true. -4225 dialect (str): the dialect used to parse the input expression. -4226 opts (kwargs): other options to use to parse the input expressions. -4227 Returns: -4228 Union: the syntax tree for the UNION expression. -4229 """ -4230 left = maybe_parse(sql_or_expression=left, dialect=dialect, **opts) -4231 right = maybe_parse(sql_or_expression=right, dialect=dialect, **opts) -4232 -4233 return Union(this=left, expression=right, distinct=distinct) -4234 -4235 -4236def intersect(left, right, distinct=True, dialect=None, **opts): -4237 """ -4238 Initializes a syntax tree from one INTERSECT expression. -4239 -4240 Example: -4241 >>> intersect("SELECT * FROM foo", "SELECT * FROM bla").sql() -4242 'SELECT * FROM foo INTERSECT SELECT * FROM bla' -4243 -4244 Args: -4245 left (str | Expression): the SQL code string corresponding to the left-hand side. -4246 If an `Expression` instance is passed, it will be used as-is. -4247 right (str | Expression): the SQL code string corresponding to the right-hand side. -4248 If an `Expression` instance is passed, it will be used as-is. -4249 distinct (bool): set the DISTINCT flag if and only if this is true. -4250 dialect (str): the dialect used to parse the input expression. -4251 opts (kwargs): other options to use to parse the input expressions. -4252 Returns: -4253 Intersect: the syntax tree for the INTERSECT expression. -4254 """ -4255 left = maybe_parse(sql_or_expression=left, dialect=dialect, **opts) -4256 right = maybe_parse(sql_or_expression=right, dialect=dialect, **opts) -4257 -4258 return Intersect(this=left, expression=right, distinct=distinct) -4259 -4260 -4261def except_(left, right, distinct=True, dialect=None, **opts): -4262 """ -4263 Initializes a syntax tree from one EXCEPT expression. -4264 -4265 Example: -4266 >>> except_("SELECT * FROM foo", "SELECT * FROM bla").sql() -4267 'SELECT * FROM foo EXCEPT SELECT * FROM bla' -4268 -4269 Args: -4270 left (str | Expression): the SQL code string corresponding to the left-hand side. -4271 If an `Expression` instance is passed, it will be used as-is. -4272 right (str | Expression): the SQL code string corresponding to the right-hand side. -4273 If an `Expression` instance is passed, it will be used as-is. -4274 distinct (bool): set the DISTINCT flag if and only if this is true. -4275 dialect (str): the dialect used to parse the input expression. -4276 opts (kwargs): other options to use to parse the input expressions. -4277 Returns: -4278 Except: the syntax tree for the EXCEPT statement. -4279 """ -4280 left = maybe_parse(sql_or_expression=left, dialect=dialect, **opts) -4281 right = maybe_parse(sql_or_expression=right, dialect=dialect, **opts) +4150 sql = str(sql_or_expression) +4151 if prefix: +4152 sql = f"{prefix} {sql}" +4153 return sqlglot.parse_one(sql, read=dialect, into=into, **opts) +4154 +4155 +4156def _maybe_copy(instance, copy=True): +4157 return instance.copy() if copy else instance +4158 +4159 +4160def _is_wrong_expression(expression, into): +4161 return isinstance(expression, Expression) and not isinstance(expression, into) +4162 +4163 +4164def _apply_builder( +4165 expression, +4166 instance, +4167 arg, +4168 copy=True, +4169 prefix=None, +4170 into=None, +4171 dialect=None, +4172 **opts, +4173): +4174 if _is_wrong_expression(expression, into): +4175 expression = into(this=expression) +4176 instance = _maybe_copy(instance, copy) +4177 expression = maybe_parse( +4178 sql_or_expression=expression, +4179 prefix=prefix, +4180 into=into, +4181 dialect=dialect, +4182 **opts, +4183 ) +4184 instance.set(arg, expression) +4185 return instance +4186 +4187 +4188def _apply_child_list_builder( +4189 *expressions, +4190 instance, +4191 arg, +4192 append=True, +4193 copy=True, +4194 prefix=None, +4195 into=None, +4196 dialect=None, +4197 properties=None, +4198 **opts, +4199): +4200 instance = _maybe_copy(instance, copy) +4201 parsed = [] +4202 for expression in expressions: +4203 if _is_wrong_expression(expression, into): +4204 expression = into(expressions=[expression]) +4205 expression = maybe_parse( +4206 expression, +4207 into=into, +4208 dialect=dialect, +4209 prefix=prefix, +4210 **opts, +4211 ) +4212 parsed.extend(expression.expressions) +4213 +4214 existing = instance.args.get(arg) +4215 if append and existing: +4216 parsed = existing.expressions + parsed +4217 +4218 child = into(expressions=parsed) +4219 for k, v in (properties or {}).items(): +4220 child.set(k, v) +4221 instance.set(arg, child) +4222 return instance +4223 +4224 +4225def _apply_list_builder( +4226 *expressions, +4227 instance, +4228 arg, +4229 append=True, +4230 copy=True, +4231 prefix=None, +4232 into=None, +4233 dialect=None, +4234 **opts, +4235): +4236 inst = _maybe_copy(instance, copy) +4237 +4238 expressions = [ +4239 maybe_parse( +4240 sql_or_expression=expression, +4241 into=into, +4242 prefix=prefix, +4243 dialect=dialect, +4244 **opts, +4245 ) +4246 for expression in expressions +4247 ] +4248 +4249 existing_expressions = inst.args.get(arg) +4250 if append and existing_expressions: +4251 expressions = existing_expressions + expressions +4252 +4253 inst.set(arg, expressions) +4254 return inst +4255 +4256 +4257def _apply_conjunction_builder( +4258 *expressions, +4259 instance, +4260 arg, +4261 into=None, +4262 append=True, +4263 copy=True, +4264 dialect=None, +4265 **opts, +4266): +4267 expressions = [exp for exp in expressions if exp is not None and exp != ""] +4268 if not expressions: +4269 return instance +4270 +4271 inst = _maybe_copy(instance, copy) +4272 +4273 existing = inst.args.get(arg) +4274 if append and existing is not None: +4275 expressions = [existing.this if into else existing] + list(expressions) +4276 +4277 node = and_(*expressions, dialect=dialect, **opts) +4278 +4279 inst.set(arg, into(this=node) if into else node) +4280 return inst +4281 4282 -4283 return Except(this=left, expression=right, distinct=distinct) -4284 -4285 -4286def select(*expressions: ExpOrStr, dialect: DialectType = None, **opts) -> Select: -4287 """ -4288 Initializes a syntax tree from one or multiple SELECT expressions. -4289 -4290 Example: -4291 >>> select("col1", "col2").from_("tbl").sql() -4292 'SELECT col1, col2 FROM tbl' -4293 -4294 Args: -4295 *expressions: the SQL code string to parse as the expressions of a -4296 SELECT statement. If an Expression instance is passed, this is used as-is. -4297 dialect: the dialect used to parse the input expressions (in the case that an -4298 input expression is a SQL string). -4299 **opts: other options to use to parse the input expressions (again, in the case -4300 that an input expression is a SQL string). -4301 -4302 Returns: -4303 Select: the syntax tree for the SELECT statement. -4304 """ -4305 return Select().select(*expressions, dialect=dialect, **opts) +4283def _combine(expressions, operator, dialect=None, **opts): +4284 expressions = [condition(expression, dialect=dialect, **opts) for expression in expressions] +4285 this = expressions[0] +4286 if expressions[1:]: +4287 this = _wrap_operator(this) +4288 for expression in expressions[1:]: +4289 this = operator(this=this, expression=_wrap_operator(expression)) +4290 return this +4291 +4292 +4293def _wrap_operator(expression): +4294 if isinstance(expression, (And, Or, Not)): +4295 expression = Paren(this=expression) +4296 return expression +4297 +4298 +4299def union(left, right, distinct=True, dialect=None, **opts): +4300 """ +4301 Initializes a syntax tree from one UNION expression. +4302 +4303 Example: +4304 >>> union("SELECT * FROM foo", "SELECT * FROM bla").sql() +4305 'SELECT * FROM foo UNION SELECT * FROM bla' 4306 -4307 -4308def from_(*expressions, dialect=None, **opts) -> Select: -4309 """ -4310 Initializes a syntax tree from a FROM expression. -4311 -4312 Example: -4313 >>> from_("tbl").select("col1", "col2").sql() -4314 'SELECT col1, col2 FROM tbl' -4315 -4316 Args: -4317 *expressions (str | Expression): the SQL code string to parse as the FROM expressions of a -4318 SELECT statement. If an Expression instance is passed, this is used as-is. -4319 dialect (str): the dialect used to parse the input expression (in the case that the -4320 input expression is a SQL string). -4321 **opts: other options to use to parse the input expressions (again, in the case -4322 that the input expression is a SQL string). +4307 Args: +4308 left (str | Expression): the SQL code string corresponding to the left-hand side. +4309 If an `Expression` instance is passed, it will be used as-is. +4310 right (str | Expression): the SQL code string corresponding to the right-hand side. +4311 If an `Expression` instance is passed, it will be used as-is. +4312 distinct (bool): set the DISTINCT flag if and only if this is true. +4313 dialect (str): the dialect used to parse the input expression. +4314 opts (kwargs): other options to use to parse the input expressions. +4315 Returns: +4316 Union: the syntax tree for the UNION expression. +4317 """ +4318 left = maybe_parse(sql_or_expression=left, dialect=dialect, **opts) +4319 right = maybe_parse(sql_or_expression=right, dialect=dialect, **opts) +4320 +4321 return Union(this=left, expression=right, distinct=distinct) +4322 4323 -4324 Returns: -4325 Select: the syntax tree for the SELECT statement. -4326 """ -4327 return Select().from_(*expressions, dialect=dialect, **opts) -4328 -4329 -4330def update( -4331 table: str | Table, -4332 properties: dict, -4333 where: t.Optional[ExpOrStr] = None, -4334 from_: t.Optional[ExpOrStr] = None, -4335 dialect: DialectType = None, -4336 **opts, -4337) -> Update: -4338 """ -4339 Creates an update statement. -4340 -4341 Example: -4342 >>> update("my_table", {"x": 1, "y": "2", "z": None}, from_="baz", where="id > 1").sql() -4343 "UPDATE my_table SET x = 1, y = '2', z = NULL FROM baz WHERE id > 1" -4344 -4345 Args: -4346 *properties: dictionary of properties to set which are -4347 auto converted to sql objects eg None -> NULL -4348 where: sql conditional parsed into a WHERE statement -4349 from_: sql statement parsed into a FROM statement -4350 dialect: the dialect used to parse the input expressions. -4351 **opts: other options to use to parse the input expressions. +4324def intersect(left, right, distinct=True, dialect=None, **opts): +4325 """ +4326 Initializes a syntax tree from one INTERSECT expression. +4327 +4328 Example: +4329 >>> intersect("SELECT * FROM foo", "SELECT * FROM bla").sql() +4330 'SELECT * FROM foo INTERSECT SELECT * FROM bla' +4331 +4332 Args: +4333 left (str | Expression): the SQL code string corresponding to the left-hand side. +4334 If an `Expression` instance is passed, it will be used as-is. +4335 right (str | Expression): the SQL code string corresponding to the right-hand side. +4336 If an `Expression` instance is passed, it will be used as-is. +4337 distinct (bool): set the DISTINCT flag if and only if this is true. +4338 dialect (str): the dialect used to parse the input expression. +4339 opts (kwargs): other options to use to parse the input expressions. +4340 Returns: +4341 Intersect: the syntax tree for the INTERSECT expression. +4342 """ +4343 left = maybe_parse(sql_or_expression=left, dialect=dialect, **opts) +4344 right = maybe_parse(sql_or_expression=right, dialect=dialect, **opts) +4345 +4346 return Intersect(this=left, expression=right, distinct=distinct) +4347 +4348 +4349def except_(left, right, distinct=True, dialect=None, **opts): +4350 """ +4351 Initializes a syntax tree from one EXCEPT expression. 4352 -4353 Returns: -4354 Update: the syntax tree for the UPDATE statement. -4355 """ -4356 update_expr = Update(this=maybe_parse(table, into=Table, dialect=dialect)) -4357 update_expr.set( -4358 "expressions", -4359 [ -4360 EQ(this=maybe_parse(k, dialect=dialect, **opts), expression=convert(v)) -4361 for k, v in properties.items() -4362 ], -4363 ) -4364 if from_: -4365 update_expr.set( -4366 "from", -4367 maybe_parse(from_, into=From, dialect=dialect, prefix="FROM", **opts), -4368 ) -4369 if isinstance(where, Condition): -4370 where = Where(this=where) -4371 if where: -4372 update_expr.set( -4373 "where", -4374 maybe_parse(where, into=Where, dialect=dialect, prefix="WHERE", **opts), -4375 ) -4376 return update_expr +4353 Example: +4354 >>> except_("SELECT * FROM foo", "SELECT * FROM bla").sql() +4355 'SELECT * FROM foo EXCEPT SELECT * FROM bla' +4356 +4357 Args: +4358 left (str | Expression): the SQL code string corresponding to the left-hand side. +4359 If an `Expression` instance is passed, it will be used as-is. +4360 right (str | Expression): the SQL code string corresponding to the right-hand side. +4361 If an `Expression` instance is passed, it will be used as-is. +4362 distinct (bool): set the DISTINCT flag if and only if this is true. +4363 dialect (str): the dialect used to parse the input expression. +4364 opts (kwargs): other options to use to parse the input expressions. +4365 Returns: +4366 Except: the syntax tree for the EXCEPT statement. +4367 """ +4368 left = maybe_parse(sql_or_expression=left, dialect=dialect, **opts) +4369 right = maybe_parse(sql_or_expression=right, dialect=dialect, **opts) +4370 +4371 return Except(this=left, expression=right, distinct=distinct) +4372 +4373 +4374def select(*expressions: ExpOrStr, dialect: DialectType = None, **opts) -> Select: +4375 """ +4376 Initializes a syntax tree from one or multiple SELECT expressions. 4377 -4378 -4379def delete( -4380 table: ExpOrStr, -4381 where: t.Optional[ExpOrStr] = None, -4382 returning: t.Optional[ExpOrStr] = None, -4383 dialect: DialectType = None, -4384 **opts, -4385) -> Delete: -4386 """ -4387 Builds a delete statement. -4388 -4389 Example: -4390 >>> delete("my_table", where="id > 1").sql() -4391 'DELETE FROM my_table WHERE id > 1' -4392 -4393 Args: -4394 where: sql conditional parsed into a WHERE statement -4395 returning: sql conditional parsed into a RETURNING statement -4396 dialect: the dialect used to parse the input expressions. -4397 **opts: other options to use to parse the input expressions. -4398 -4399 Returns: -4400 Delete: the syntax tree for the DELETE statement. -4401 """ -4402 delete_expr = Delete().delete(table, dialect=dialect, copy=False, **opts) -4403 if where: -4404 delete_expr = delete_expr.where(where, dialect=dialect, copy=False, **opts) -4405 if returning: -4406 delete_expr = delete_expr.returning(returning, dialect=dialect, copy=False, **opts) -4407 return delete_expr -4408 -4409 -4410def condition(expression, dialect=None, **opts) -> Condition: -4411 """ -4412 Initialize a logical condition expression. -4413 -4414 Example: -4415 >>> condition("x=1").sql() -4416 'x = 1' +4378 Example: +4379 >>> select("col1", "col2").from_("tbl").sql() +4380 'SELECT col1, col2 FROM tbl' +4381 +4382 Args: +4383 *expressions: the SQL code string to parse as the expressions of a +4384 SELECT statement. If an Expression instance is passed, this is used as-is. +4385 dialect: the dialect used to parse the input expressions (in the case that an +4386 input expression is a SQL string). +4387 **opts: other options to use to parse the input expressions (again, in the case +4388 that an input expression is a SQL string). +4389 +4390 Returns: +4391 Select: the syntax tree for the SELECT statement. +4392 """ +4393 return Select().select(*expressions, dialect=dialect, **opts) +4394 +4395 +4396def from_(*expressions, dialect=None, **opts) -> Select: +4397 """ +4398 Initializes a syntax tree from a FROM expression. +4399 +4400 Example: +4401 >>> from_("tbl").select("col1", "col2").sql() +4402 'SELECT col1, col2 FROM tbl' +4403 +4404 Args: +4405 *expressions (str | Expression): the SQL code string to parse as the FROM expressions of a +4406 SELECT statement. If an Expression instance is passed, this is used as-is. +4407 dialect (str): the dialect used to parse the input expression (in the case that the +4408 input expression is a SQL string). +4409 **opts: other options to use to parse the input expressions (again, in the case +4410 that the input expression is a SQL string). +4411 +4412 Returns: +4413 Select: the syntax tree for the SELECT statement. +4414 """ +4415 return Select().from_(*expressions, dialect=dialect, **opts) +4416 4417 -4418 This is helpful for composing larger logical syntax trees: -4419 >>> where = condition("x=1") -4420 >>> where = where.and_("y=1") -4421 >>> Select().from_("tbl").select("*").where(where).sql() -4422 'SELECT * FROM tbl WHERE x = 1 AND y = 1' -4423 -4424 Args: -4425 *expression (str | Expression): the SQL code string to parse. -4426 If an Expression instance is passed, this is used as-is. -4427 dialect (str): the dialect used to parse the input expression (in the case that the -4428 input expression is a SQL string). -4429 **opts: other options to use to parse the input expressions (again, in the case -4430 that the input expression is a SQL string). -4431 -4432 Returns: -4433 Condition: the expression -4434 """ -4435 return maybe_parse( # type: ignore -4436 expression, -4437 into=Condition, -4438 dialect=dialect, -4439 **opts, -4440 ) -4441 -4442 -4443def and_(*expressions, dialect=None, **opts) -> And: -4444 """ -4445 Combine multiple conditions with an AND logical operator. -4446 -4447 Example: -4448 >>> and_("x=1", and_("y=1", "z=1")).sql() -4449 'x = 1 AND (y = 1 AND z = 1)' -4450 -4451 Args: -4452 *expressions (str | Expression): the SQL code strings to parse. -4453 If an Expression instance is passed, this is used as-is. -4454 dialect (str): the dialect used to parse the input expression. -4455 **opts: other options to use to parse the input expressions. -4456 -4457 Returns: -4458 And: the new condition -4459 """ -4460 return _combine(expressions, And, dialect, **opts) -4461 -4462 -4463def or_(*expressions, dialect=None, **opts) -> Or: -4464 """ -4465 Combine multiple conditions with an OR logical operator. +4418def update( +4419 table: str | Table, +4420 properties: dict, +4421 where: t.Optional[ExpOrStr] = None, +4422 from_: t.Optional[ExpOrStr] = None, +4423 dialect: DialectType = None, +4424 **opts, +4425) -> Update: +4426 """ +4427 Creates an update statement. +4428 +4429 Example: +4430 >>> update("my_table", {"x": 1, "y": "2", "z": None}, from_="baz", where="id > 1").sql() +4431 "UPDATE my_table SET x = 1, y = '2', z = NULL FROM baz WHERE id > 1" +4432 +4433 Args: +4434 *properties: dictionary of properties to set which are +4435 auto converted to sql objects eg None -> NULL +4436 where: sql conditional parsed into a WHERE statement +4437 from_: sql statement parsed into a FROM statement +4438 dialect: the dialect used to parse the input expressions. +4439 **opts: other options to use to parse the input expressions. +4440 +4441 Returns: +4442 Update: the syntax tree for the UPDATE statement. +4443 """ +4444 update_expr = Update(this=maybe_parse(table, into=Table, dialect=dialect)) +4445 update_expr.set( +4446 "expressions", +4447 [ +4448 EQ(this=maybe_parse(k, dialect=dialect, **opts), expression=convert(v)) +4449 for k, v in properties.items() +4450 ], +4451 ) +4452 if from_: +4453 update_expr.set( +4454 "from", +4455 maybe_parse(from_, into=From, dialect=dialect, prefix="FROM", **opts), +4456 ) +4457 if isinstance(where, Condition): +4458 where = Where(this=where) +4459 if where: +4460 update_expr.set( +4461 "where", +4462 maybe_parse(where, into=Where, dialect=dialect, prefix="WHERE", **opts), +4463 ) +4464 return update_expr +4465 4466 -4467 Example: -4468 >>> or_("x=1", or_("y=1", "z=1")).sql() -4469 'x = 1 OR (y = 1 OR z = 1)' -4470 -4471 Args: -4472 *expressions (str | Expression): the SQL code strings to parse. -4473 If an Expression instance is passed, this is used as-is. -4474 dialect (str): the dialect used to parse the input expression. -4475 **opts: other options to use to parse the input expressions. +4467def delete( +4468 table: ExpOrStr, +4469 where: t.Optional[ExpOrStr] = None, +4470 returning: t.Optional[ExpOrStr] = None, +4471 dialect: DialectType = None, +4472 **opts, +4473) -> Delete: +4474 """ +4475 Builds a delete statement. 4476 -4477 Returns: -4478 Or: the new condition -4479 """ -4480 return _combine(expressions, Or, dialect, **opts) -4481 -4482 -4483def not_(expression, dialect=None, **opts) -> Not: -4484 """ -4485 Wrap a condition with a NOT operator. +4477 Example: +4478 >>> delete("my_table", where="id > 1").sql() +4479 'DELETE FROM my_table WHERE id > 1' +4480 +4481 Args: +4482 where: sql conditional parsed into a WHERE statement +4483 returning: sql conditional parsed into a RETURNING statement +4484 dialect: the dialect used to parse the input expressions. +4485 **opts: other options to use to parse the input expressions. 4486 -4487 Example: -4488 >>> not_("this_suit='black'").sql() -4489 "NOT this_suit = 'black'" -4490 -4491 Args: -4492 expression (str | Expression): the SQL code strings to parse. -4493 If an Expression instance is passed, this is used as-is. -4494 dialect (str): the dialect used to parse the input expression. -4495 **opts: other options to use to parse the input expressions. +4487 Returns: +4488 Delete: the syntax tree for the DELETE statement. +4489 """ +4490 delete_expr = Delete().delete(table, dialect=dialect, copy=False, **opts) +4491 if where: +4492 delete_expr = delete_expr.where(where, dialect=dialect, copy=False, **opts) +4493 if returning: +4494 delete_expr = delete_expr.returning(returning, dialect=dialect, copy=False, **opts) +4495 return delete_expr 4496 -4497 Returns: -4498 Not: the new condition -4499 """ -4500 this = condition( -4501 expression, -4502 dialect=dialect, -4503 **opts, -4504 ) -4505 return Not(this=_wrap_operator(this)) -4506 -4507 -4508def paren(expression) -> Paren: -4509 return Paren(this=expression) -4510 +4497 +4498def condition(expression, dialect=None, **opts) -> Condition: +4499 """ +4500 Initialize a logical condition expression. +4501 +4502 Example: +4503 >>> condition("x=1").sql() +4504 'x = 1' +4505 +4506 This is helpful for composing larger logical syntax trees: +4507 >>> where = condition("x=1") +4508 >>> where = where.and_("y=1") +4509 >>> Select().from_("tbl").select("*").where(where).sql() +4510 'SELECT * FROM tbl WHERE x = 1 AND y = 1' 4511 -4512SAFE_IDENTIFIER_RE = re.compile(r"^[_a-zA-Z][\w]*$") -4513 -4514 -4515@t.overload -4516def to_identifier(name: None, quoted: t.Optional[bool] = None) -> None: -4517 ... -4518 +4512 Args: +4513 *expression (str | Expression): the SQL code string to parse. +4514 If an Expression instance is passed, this is used as-is. +4515 dialect (str): the dialect used to parse the input expression (in the case that the +4516 input expression is a SQL string). +4517 **opts: other options to use to parse the input expressions (again, in the case +4518 that the input expression is a SQL string). 4519 -4520@t.overload -4521def to_identifier(name: str | Identifier, quoted: t.Optional[bool] = None) -> Identifier: -4522 ... -4523 -4524 -4525def to_identifier(name, quoted=None): -4526 """Builds an identifier. -4527 -4528 Args: -4529 name: The name to turn into an identifier. -4530 quoted: Whether or not force quote the identifier. -4531 -4532 Returns: -4533 The identifier ast node. -4534 """ -4535 -4536 if name is None: -4537 return None +4520 Returns: +4521 Condition: the expression +4522 """ +4523 return maybe_parse( # type: ignore +4524 expression, +4525 into=Condition, +4526 dialect=dialect, +4527 **opts, +4528 ) +4529 +4530 +4531def and_(*expressions, dialect=None, **opts) -> And: +4532 """ +4533 Combine multiple conditions with an AND logical operator. +4534 +4535 Example: +4536 >>> and_("x=1", and_("y=1", "z=1")).sql() +4537 'x = 1 AND (y = 1 AND z = 1)' 4538 -4539 if isinstance(name, Identifier): -4540 identifier = name -4541 elif isinstance(name, str): -4542 identifier = Identifier( -4543 this=name, -4544 quoted=not SAFE_IDENTIFIER_RE.match(name) if quoted is None else quoted, -4545 ) -4546 else: -4547 raise ValueError(f"Name needs to be a string or an Identifier, got: {name.__class__}") -4548 return identifier +4539 Args: +4540 *expressions (str | Expression): the SQL code strings to parse. +4541 If an Expression instance is passed, this is used as-is. +4542 dialect (str): the dialect used to parse the input expression. +4543 **opts: other options to use to parse the input expressions. +4544 +4545 Returns: +4546 And: the new condition +4547 """ +4548 return _combine(expressions, And, dialect, **opts) 4549 4550 -4551INTERVAL_STRING_RE = re.compile(r"\s*([0-9]+)\s*([a-zA-Z]+)\s*") -4552 -4553 -4554def to_interval(interval: str | Literal) -> Interval: -4555 """Builds an interval expression from a string like '1 day' or '5 months'.""" -4556 if isinstance(interval, Literal): -4557 if not interval.is_string: -4558 raise ValueError("Invalid interval string.") -4559 -4560 interval = interval.this -4561 -4562 interval_parts = INTERVAL_STRING_RE.match(interval) # type: ignore -4563 -4564 if not interval_parts: -4565 raise ValueError("Invalid interval string.") -4566 -4567 return Interval( -4568 this=Literal.string(interval_parts.group(1)), -4569 unit=Var(this=interval_parts.group(2)), -4570 ) -4571 -4572 -4573@t.overload -4574def to_table(sql_path: str | Table, **kwargs) -> Table: -4575 ... -4576 -4577 -4578@t.overload -4579def to_table(sql_path: None, **kwargs) -> None: -4580 ... -4581 -4582 -4583def to_table(sql_path: t.Optional[str | Table], **kwargs) -> t.Optional[Table]: -4584 """ -4585 Create a table expression from a `[catalog].[schema].[table]` sql path. Catalog and schema are optional. -4586 If a table is passed in then that table is returned. -4587 -4588 Args: -4589 sql_path: a `[catalog].[schema].[table]` string. -4590 -4591 Returns: -4592 A table expression. -4593 """ -4594 if sql_path is None or isinstance(sql_path, Table): -4595 return sql_path -4596 if not isinstance(sql_path, str): -4597 raise ValueError(f"Invalid type provided for a table: {type(sql_path)}") +4551def or_(*expressions, dialect=None, **opts) -> Or: +4552 """ +4553 Combine multiple conditions with an OR logical operator. +4554 +4555 Example: +4556 >>> or_("x=1", or_("y=1", "z=1")).sql() +4557 'x = 1 OR (y = 1 OR z = 1)' +4558 +4559 Args: +4560 *expressions (str | Expression): the SQL code strings to parse. +4561 If an Expression instance is passed, this is used as-is. +4562 dialect (str): the dialect used to parse the input expression. +4563 **opts: other options to use to parse the input expressions. +4564 +4565 Returns: +4566 Or: the new condition +4567 """ +4568 return _combine(expressions, Or, dialect, **opts) +4569 +4570 +4571def not_(expression, dialect=None, **opts) -> Not: +4572 """ +4573 Wrap a condition with a NOT operator. +4574 +4575 Example: +4576 >>> not_("this_suit='black'").sql() +4577 "NOT this_suit = 'black'" +4578 +4579 Args: +4580 expression (str | Expression): the SQL code strings to parse. +4581 If an Expression instance is passed, this is used as-is. +4582 dialect (str): the dialect used to parse the input expression. +4583 **opts: other options to use to parse the input expressions. +4584 +4585 Returns: +4586 Not: the new condition +4587 """ +4588 this = condition( +4589 expression, +4590 dialect=dialect, +4591 **opts, +4592 ) +4593 return Not(this=_wrap_operator(this)) +4594 +4595 +4596def paren(expression) -> Paren: +4597 return Paren(this=expression) 4598 -4599 catalog, db, table_name = (to_identifier(x) for x in split_num_words(sql_path, ".", 3)) -4600 return Table(this=table_name, db=db, catalog=catalog, **kwargs) +4599 +4600SAFE_IDENTIFIER_RE = re.compile(r"^[_a-zA-Z][\w]*$") 4601 4602 -4603def to_column(sql_path: str | Column, **kwargs) -> Column: -4604 """ -4605 Create a column from a `[table].[column]` sql path. Schema is optional. +4603@t.overload +4604def to_identifier(name: None, quoted: t.Optional[bool] = None) -> None: +4605 ... 4606 -4607 If a column is passed in then that column is returned. -4608 -4609 Args: -4610 sql_path: `[table].[column]` string -4611 Returns: -4612 Table: A column expression -4613 """ -4614 if sql_path is None or isinstance(sql_path, Column): -4615 return sql_path -4616 if not isinstance(sql_path, str): -4617 raise ValueError(f"Invalid type provided for column: {type(sql_path)}") -4618 return column(*reversed(sql_path.split(".")), **kwargs) # type: ignore +4607 +4608@t.overload +4609def to_identifier(name: str | Identifier, quoted: t.Optional[bool] = None) -> Identifier: +4610 ... +4611 +4612 +4613def to_identifier(name, quoted=None): +4614 """Builds an identifier. +4615 +4616 Args: +4617 name: The name to turn into an identifier. +4618 quoted: Whether or not force quote the identifier. 4619 -4620 -4621def alias_( -4622 expression: ExpOrStr, -4623 alias: str | Identifier, -4624 table: bool | t.Sequence[str | Identifier] = False, -4625 quoted: t.Optional[bool] = None, -4626 dialect: DialectType = None, -4627 **opts, -4628): -4629 """Create an Alias expression. -4630 -4631 Example: -4632 >>> alias_('foo', 'bar').sql() -4633 'foo AS bar' -4634 -4635 >>> alias_('(select 1, 2)', 'bar', table=['a', 'b']).sql() -4636 '(SELECT 1, 2) AS bar(a, b)' +4620 Returns: +4621 The identifier ast node. +4622 """ +4623 +4624 if name is None: +4625 return None +4626 +4627 if isinstance(name, Identifier): +4628 identifier = name +4629 elif isinstance(name, str): +4630 identifier = Identifier( +4631 this=name, +4632 quoted=not SAFE_IDENTIFIER_RE.match(name) if quoted is None else quoted, +4633 ) +4634 else: +4635 raise ValueError(f"Name needs to be a string or an Identifier, got: {name.__class__}") +4636 return identifier 4637 -4638 Args: -4639 expression: the SQL code strings to parse. -4640 If an Expression instance is passed, this is used as-is. -4641 alias: the alias name to use. If the name has -4642 special characters it is quoted. -4643 table: Whether or not to create a table alias, can also be a list of columns. -4644 quoted: whether or not to quote the alias -4645 dialect: the dialect used to parse the input expression. -4646 **opts: other options to use to parse the input expressions. +4638 +4639INTERVAL_STRING_RE = re.compile(r"\s*([0-9]+)\s*([a-zA-Z]+)\s*") +4640 +4641 +4642def to_interval(interval: str | Literal) -> Interval: +4643 """Builds an interval expression from a string like '1 day' or '5 months'.""" +4644 if isinstance(interval, Literal): +4645 if not interval.is_string: +4646 raise ValueError("Invalid interval string.") 4647 -4648 Returns: -4649 Alias: the aliased expression -4650 """ -4651 exp = maybe_parse(expression, dialect=dialect, **opts) -4652 alias = to_identifier(alias, quoted=quoted) -4653 -4654 if table: -4655 table_alias = TableAlias(this=alias) -4656 exp.set("alias", table_alias) -4657 -4658 if not isinstance(table, bool): -4659 for column in table: -4660 table_alias.append("columns", to_identifier(column, quoted=quoted)) -4661 -4662 return exp -4663 -4664 # We don't set the "alias" arg for Window expressions, because that would add an IDENTIFIER node in -4665 # the AST, representing a "named_window" [1] construct (eg. bigquery). What we want is an ALIAS node -4666 # for the complete Window expression. -4667 # -4668 # [1]: https://cloud.google.com/bigquery/docs/reference/standard-sql/window-function-calls +4648 interval = interval.this +4649 +4650 interval_parts = INTERVAL_STRING_RE.match(interval) # type: ignore +4651 +4652 if not interval_parts: +4653 raise ValueError("Invalid interval string.") +4654 +4655 return Interval( +4656 this=Literal.string(interval_parts.group(1)), +4657 unit=Var(this=interval_parts.group(2)), +4658 ) +4659 +4660 +4661@t.overload +4662def to_table(sql_path: str | Table, **kwargs) -> Table: +4663 ... +4664 +4665 +4666@t.overload +4667def to_table(sql_path: None, **kwargs) -> None: +4668 ... 4669 -4670 if "alias" in exp.arg_types and not isinstance(exp, Window): -4671 exp = exp.copy() -4672 exp.set("alias", alias) -4673 return exp -4674 return Alias(this=exp, alias=alias) +4670 +4671def to_table(sql_path: t.Optional[str | Table], **kwargs) -> t.Optional[Table]: +4672 """ +4673 Create a table expression from a `[catalog].[schema].[table]` sql path. Catalog and schema are optional. +4674 If a table is passed in then that table is returned. 4675 -4676 -4677def subquery(expression, alias=None, dialect=None, **opts): -4678 """ -4679 Build a subquery expression. -4680 -4681 Example: -4682 >>> subquery('select x from tbl', 'bar').select('x').sql() -4683 'SELECT x FROM (SELECT x FROM tbl) AS bar' -4684 -4685 Args: -4686 expression (str | Expression): the SQL code strings to parse. -4687 If an Expression instance is passed, this is used as-is. -4688 alias (str | Expression): the alias name to use. -4689 dialect (str): the dialect used to parse the input expression. -4690 **opts: other options to use to parse the input expressions. -4691 -4692 Returns: -4693 Select: a new select with the subquery expression included -4694 """ -4695 -4696 expression = maybe_parse(expression, dialect=dialect, **opts).subquery(alias) -4697 return Select().from_(expression, dialect=dialect, **opts) -4698 -4699 -4700def column( -4701 col: str | Identifier, -4702 table: t.Optional[str | Identifier] = None, -4703 db: t.Optional[str | Identifier] = None, -4704 catalog: t.Optional[str | Identifier] = None, -4705 quoted: t.Optional[bool] = None, -4706) -> Column: -4707 """ -4708 Build a Column. -4709 -4710 Args: -4711 col: column name -4712 table: table name -4713 db: db name -4714 catalog: catalog name -4715 quoted: whether or not to force quote each part -4716 Returns: -4717 Column: column instance -4718 """ -4719 return Column( -4720 this=to_identifier(col, quoted=quoted), -4721 table=to_identifier(table, quoted=quoted), -4722 db=to_identifier(db, quoted=quoted), -4723 catalog=to_identifier(catalog, quoted=quoted), -4724 ) +4676 Args: +4677 sql_path: a `[catalog].[schema].[table]` string. +4678 +4679 Returns: +4680 A table expression. +4681 """ +4682 if sql_path is None or isinstance(sql_path, Table): +4683 return sql_path +4684 if not isinstance(sql_path, str): +4685 raise ValueError(f"Invalid type provided for a table: {type(sql_path)}") +4686 +4687 catalog, db, table_name = (to_identifier(x) for x in split_num_words(sql_path, ".", 3)) +4688 return Table(this=table_name, db=db, catalog=catalog, **kwargs) +4689 +4690 +4691def to_column(sql_path: str | Column, **kwargs) -> Column: +4692 """ +4693 Create a column from a `[table].[column]` sql path. Schema is optional. +4694 +4695 If a column is passed in then that column is returned. +4696 +4697 Args: +4698 sql_path: `[table].[column]` string +4699 Returns: +4700 Table: A column expression +4701 """ +4702 if sql_path is None or isinstance(sql_path, Column): +4703 return sql_path +4704 if not isinstance(sql_path, str): +4705 raise ValueError(f"Invalid type provided for column: {type(sql_path)}") +4706 return column(*reversed(sql_path.split(".")), **kwargs) # type: ignore +4707 +4708 +4709def alias_( +4710 expression: ExpOrStr, +4711 alias: str | Identifier, +4712 table: bool | t.Sequence[str | Identifier] = False, +4713 quoted: t.Optional[bool] = None, +4714 dialect: DialectType = None, +4715 **opts, +4716): +4717 """Create an Alias expression. +4718 +4719 Example: +4720 >>> alias_('foo', 'bar').sql() +4721 'foo AS bar' +4722 +4723 >>> alias_('(select 1, 2)', 'bar', table=['a', 'b']).sql() +4724 '(SELECT 1, 2) AS bar(a, b)' 4725 -4726 -4727def cast(expression: ExpOrStr, to: str | DataType | DataType.Type, **opts) -> Cast: -4728 """Cast an expression to a data type. -4729 -4730 Example: -4731 >>> cast('x + 1', 'int').sql() -4732 'CAST(x + 1 AS INT)' -4733 -4734 Args: -4735 expression: The expression to cast. -4736 to: The datatype to cast to. -4737 -4738 Returns: -4739 A cast node. -4740 """ -4741 expression = maybe_parse(expression, **opts) -4742 return Cast(this=expression, to=DataType.build(to, **opts)) -4743 +4726 Args: +4727 expression: the SQL code strings to parse. +4728 If an Expression instance is passed, this is used as-is. +4729 alias: the alias name to use. If the name has +4730 special characters it is quoted. +4731 table: Whether or not to create a table alias, can also be a list of columns. +4732 quoted: whether or not to quote the alias +4733 dialect: the dialect used to parse the input expression. +4734 **opts: other options to use to parse the input expressions. +4735 +4736 Returns: +4737 Alias: the aliased expression +4738 """ +4739 exp = maybe_parse(expression, dialect=dialect, **opts) +4740 alias = to_identifier(alias, quoted=quoted) +4741 +4742 if table: +4743 table_alias = TableAlias(this=alias) 4744 -4745def table_(table, db=None, catalog=None, quoted=None, alias=None) -> Table: -4746 """Build a Table. +4745 exp = exp.copy() if isinstance(expression, Expression) else exp +4746 exp.set("alias", table_alias) 4747 -4748 Args: -4749 table (str | Expression): column name -4750 db (str | Expression): db name -4751 catalog (str | Expression): catalog name -4752 -4753 Returns: -4754 Table: table instance -4755 """ -4756 return Table( -4757 this=to_identifier(table, quoted=quoted), -4758 db=to_identifier(db, quoted=quoted), -4759 catalog=to_identifier(catalog, quoted=quoted), -4760 alias=TableAlias(this=to_identifier(alias)) if alias else None, -4761 ) -4762 -4763 -4764def values( -4765 values: t.Iterable[t.Tuple[t.Any, ...]], -4766 alias: t.Optional[str] = None, -4767 columns: t.Optional[t.Iterable[str] | t.Dict[str, DataType]] = None, -4768) -> Values: -4769 """Build VALUES statement. +4748 if not isinstance(table, bool): +4749 for column in table: +4750 table_alias.append("columns", to_identifier(column, quoted=quoted)) +4751 +4752 return exp +4753 +4754 # We don't set the "alias" arg for Window expressions, because that would add an IDENTIFIER node in +4755 # the AST, representing a "named_window" [1] construct (eg. bigquery). What we want is an ALIAS node +4756 # for the complete Window expression. +4757 # +4758 # [1]: https://cloud.google.com/bigquery/docs/reference/standard-sql/window-function-calls +4759 +4760 if "alias" in exp.arg_types and not isinstance(exp, Window): +4761 exp = exp.copy() +4762 exp.set("alias", alias) +4763 return exp +4764 return Alias(this=exp, alias=alias) +4765 +4766 +4767def subquery(expression, alias=None, dialect=None, **opts): +4768 """ +4769 Build a subquery expression. 4770 4771 Example: -4772 >>> values([(1, '2')]).sql() -4773 "VALUES (1, '2')" +4772 >>> subquery('select x from tbl', 'bar').select('x').sql() +4773 'SELECT x FROM (SELECT x FROM tbl) AS bar' 4774 4775 Args: -4776 values: values statements that will be converted to SQL -4777 alias: optional alias -4778 columns: Optional list of ordered column names or ordered dictionary of column names to types. -4779 If either are provided then an alias is also required. -4780 If a dictionary is provided then the first column of the values will be casted to the expected type -4781 in order to help with type inference. -4782 -4783 Returns: -4784 Values: the Values expression object -4785 """ -4786 if columns and not alias: -4787 raise ValueError("Alias is required when providing columns") -4788 table_alias = ( -4789 TableAlias(this=to_identifier(alias), columns=[to_identifier(x) for x in columns]) -4790 if columns -4791 else TableAlias(this=to_identifier(alias) if alias else None) -4792 ) -4793 expressions = [convert(tup) for tup in values] -4794 if columns and isinstance(columns, dict): -4795 types = list(columns.values()) -4796 expressions[0].set( -4797 "expressions", -4798 [cast(x, types[i]) for i, x in enumerate(expressions[0].expressions)], -4799 ) -4800 return Values( -4801 expressions=expressions, -4802 alias=table_alias, -4803 ) -4804 -4805 -4806def var(name: t.Optional[ExpOrStr]) -> Var: -4807 """Build a SQL variable. -4808 -4809 Example: -4810 >>> repr(var('x')) -4811 '(VAR this: x)' -4812 -4813 >>> repr(var(column('x', table='y'))) -4814 '(VAR this: x)' +4776 expression (str | Expression): the SQL code strings to parse. +4777 If an Expression instance is passed, this is used as-is. +4778 alias (str | Expression): the alias name to use. +4779 dialect (str): the dialect used to parse the input expression. +4780 **opts: other options to use to parse the input expressions. +4781 +4782 Returns: +4783 Select: a new select with the subquery expression included +4784 """ +4785 +4786 expression = maybe_parse(expression, dialect=dialect, **opts).subquery(alias) +4787 return Select().from_(expression, dialect=dialect, **opts) +4788 +4789 +4790def column( +4791 col: str | Identifier, +4792 table: t.Optional[str | Identifier] = None, +4793 db: t.Optional[str | Identifier] = None, +4794 catalog: t.Optional[str | Identifier] = None, +4795 quoted: t.Optional[bool] = None, +4796) -> Column: +4797 """ +4798 Build a Column. +4799 +4800 Args: +4801 col: column name +4802 table: table name +4803 db: db name +4804 catalog: catalog name +4805 quoted: whether or not to force quote each part +4806 Returns: +4807 Column: column instance +4808 """ +4809 return Column( +4810 this=to_identifier(col, quoted=quoted), +4811 table=to_identifier(table, quoted=quoted), +4812 db=to_identifier(db, quoted=quoted), +4813 catalog=to_identifier(catalog, quoted=quoted), +4814 ) 4815 -4816 Args: -4817 name: The name of the var or an expression who's name will become the var. -4818 -4819 Returns: -4820 The new variable node. -4821 """ -4822 if not name: -4823 raise ValueError("Cannot convert empty name into var.") -4824 -4825 if isinstance(name, Expression): -4826 name = name.name -4827 return Var(this=name) -4828 -4829 -4830def rename_table(old_name: str | Table, new_name: str | Table) -> AlterTable: -4831 """Build ALTER TABLE... RENAME... expression -4832 -4833 Args: -4834 old_name: The old name of the table -4835 new_name: The new name of the table -4836 -4837 Returns: -4838 Alter table expression -4839 """ -4840 old_table = to_table(old_name) -4841 new_table = to_table(new_name) -4842 return AlterTable( -4843 this=old_table, -4844 actions=[ -4845 RenameTable(this=new_table), -4846 ], -4847 ) -4848 -4849 -4850def convert(value) -> Expression: -4851 """Convert a python value into an expression object. +4816 +4817def cast(expression: ExpOrStr, to: str | DataType | DataType.Type, **opts) -> Cast: +4818 """Cast an expression to a data type. +4819 +4820 Example: +4821 >>> cast('x + 1', 'int').sql() +4822 'CAST(x + 1 AS INT)' +4823 +4824 Args: +4825 expression: The expression to cast. +4826 to: The datatype to cast to. +4827 +4828 Returns: +4829 A cast node. +4830 """ +4831 expression = maybe_parse(expression, **opts) +4832 return Cast(this=expression, to=DataType.build(to, **opts)) +4833 +4834 +4835def table_(table, db=None, catalog=None, quoted=None, alias=None) -> Table: +4836 """Build a Table. +4837 +4838 Args: +4839 table (str | Expression): column name +4840 db (str | Expression): db name +4841 catalog (str | Expression): catalog name +4842 +4843 Returns: +4844 Table: table instance +4845 """ +4846 return Table( +4847 this=to_identifier(table, quoted=quoted), +4848 db=to_identifier(db, quoted=quoted), +4849 catalog=to_identifier(catalog, quoted=quoted), +4850 alias=TableAlias(this=to_identifier(alias)) if alias else None, +4851 ) 4852 -4853 Raises an error if a conversion is not possible. -4854 -4855 Args: -4856 value (Any): a python object -4857 -4858 Returns: -4859 Expression: the equivalent expression object -4860 """ -4861 if isinstance(value, Expression): -4862 return value -4863 if value is None: -4864 return NULL -4865 if isinstance(value, bool): -4866 return Boolean(this=value) -4867 if isinstance(value, str): -4868 return Literal.string(value) -4869 if isinstance(value, float) and math.isnan(value): -4870 return NULL -4871 if isinstance(value, numbers.Number): -4872 return Literal.number(value) -4873 if isinstance(value, tuple): -4874 return Tuple(expressions=[convert(v) for v in value]) -4875 if isinstance(value, list): -4876 return Array(expressions=[convert(v) for v in value]) -4877 if isinstance(value, dict): -4878 return Map( -4879 keys=[convert(k) for k in value], -4880 values=[convert(v) for v in value.values()], -4881 ) -4882 if isinstance(value, datetime.datetime): -4883 datetime_literal = Literal.string( -4884 (value if value.tzinfo else value.replace(tzinfo=datetime.timezone.utc)).isoformat() -4885 ) -4886 return TimeStrToTime(this=datetime_literal) -4887 if isinstance(value, datetime.date): -4888 date_literal = Literal.string(value.strftime("%Y-%m-%d")) -4889 return DateStrToDate(this=date_literal) -4890 raise ValueError(f"Cannot convert {value}") -4891 -4892 -4893def replace_children(expression, fun, *args, **kwargs): -4894 """ -4895 Replace children of an expression with the result of a lambda fun(child) -> exp. -4896 """ -4897 for k, v in expression.args.items(): -4898 is_list_arg = type(v) is list -4899 -4900 child_nodes = v if is_list_arg else [v] -4901 new_child_nodes = [] +4853 +4854def values( +4855 values: t.Iterable[t.Tuple[t.Any, ...]], +4856 alias: t.Optional[str] = None, +4857 columns: t.Optional[t.Iterable[str] | t.Dict[str, DataType]] = None, +4858) -> Values: +4859 """Build VALUES statement. +4860 +4861 Example: +4862 >>> values([(1, '2')]).sql() +4863 "VALUES (1, '2')" +4864 +4865 Args: +4866 values: values statements that will be converted to SQL +4867 alias: optional alias +4868 columns: Optional list of ordered column names or ordered dictionary of column names to types. +4869 If either are provided then an alias is also required. +4870 If a dictionary is provided then the first column of the values will be casted to the expected type +4871 in order to help with type inference. +4872 +4873 Returns: +4874 Values: the Values expression object +4875 """ +4876 if columns and not alias: +4877 raise ValueError("Alias is required when providing columns") +4878 table_alias = ( +4879 TableAlias(this=to_identifier(alias), columns=[to_identifier(x) for x in columns]) +4880 if columns +4881 else TableAlias(this=to_identifier(alias) if alias else None) +4882 ) +4883 expressions = [convert(tup) for tup in values] +4884 if columns and isinstance(columns, dict): +4885 types = list(columns.values()) +4886 expressions[0].set( +4887 "expressions", +4888 [cast(x, types[i]) for i, x in enumerate(expressions[0].expressions)], +4889 ) +4890 return Values( +4891 expressions=expressions, +4892 alias=table_alias, +4893 ) +4894 +4895 +4896def var(name: t.Optional[ExpOrStr]) -> Var: +4897 """Build a SQL variable. +4898 +4899 Example: +4900 >>> repr(var('x')) +4901 '(VAR this: x)' 4902 -4903 for cn in child_nodes: -4904 if isinstance(cn, Expression): -4905 for child_node in ensure_collection(fun(cn, *args, **kwargs)): -4906 new_child_nodes.append(child_node) -4907 child_node.parent = expression -4908 child_node.arg_key = k -4909 else: -4910 new_child_nodes.append(cn) -4911 -4912 expression.args[k] = new_child_nodes if is_list_arg else seq_get(new_child_nodes, 0) -4913 +4903 >>> repr(var(column('x', table='y'))) +4904 '(VAR this: x)' +4905 +4906 Args: +4907 name: The name of the var or an expression who's name will become the var. +4908 +4909 Returns: +4910 The new variable node. +4911 """ +4912 if not name: +4913 raise ValueError("Cannot convert empty name into var.") 4914 -4915def column_table_names(expression): -4916 """ -4917 Return all table names referenced through columns in an expression. +4915 if isinstance(name, Expression): +4916 name = name.name +4917 return Var(this=name) 4918 -4919 Example: -4920 >>> import sqlglot -4921 >>> column_table_names(sqlglot.parse_one("a.b AND c.d AND c.e")) -4922 ['c', 'a'] -4923 -4924 Args: -4925 expression (sqlglot.Expression): expression to find table names +4919 +4920def rename_table(old_name: str | Table, new_name: str | Table) -> AlterTable: +4921 """Build ALTER TABLE... RENAME... expression +4922 +4923 Args: +4924 old_name: The old name of the table +4925 new_name: The new name of the table 4926 4927 Returns: -4928 list: A list of unique names +4928 Alter table expression 4929 """ -4930 return list(dict.fromkeys(column.table for column in expression.find_all(Column))) -4931 -4932 -4933def table_name(table) -> str: -4934 """Get the full name of a table as a string. -4935 -4936 Args: -4937 table (exp.Table | str): table expression node or string. +4930 old_table = to_table(old_name) +4931 new_table = to_table(new_name) +4932 return AlterTable( +4933 this=old_table, +4934 actions=[ +4935 RenameTable(this=new_table), +4936 ], +4937 ) 4938 -4939 Examples: -4940 >>> from sqlglot import exp, parse_one -4941 >>> table_name(parse_one("select * from a.b.c").find(exp.Table)) -4942 'a.b.c' -4943 -4944 Returns: -4945 The table name. -4946 """ +4939 +4940def convert(value) -> Expression: +4941 """Convert a python value into an expression object. +4942 +4943 Raises an error if a conversion is not possible. +4944 +4945 Args: +4946 value (Any): a python object 4947 -4948 table = maybe_parse(table, into=Table) -4949 -4950 if not table: -4951 raise ValueError(f"Cannot parse {table}") -4952 -4953 return ".".join( -4954 part -4955 for part in ( -4956 table.text("catalog"), -4957 table.text("db"), -4958 table.name, -4959 ) -4960 if part -4961 ) -4962 -4963 -4964def replace_tables(expression, mapping): -4965 """Replace all tables in expression according to the mapping. -4966 -4967 Args: -4968 expression (sqlglot.Expression): expression node to be transformed and replaced. -4969 mapping (Dict[str, str]): mapping of table names. -4970 -4971 Examples: -4972 >>> from sqlglot import exp, parse_one -4973 >>> replace_tables(parse_one("select * from a.b"), {"a.b": "c"}).sql() -4974 'SELECT * FROM c' -4975 -4976 Returns: -4977 The mapped expression. -4978 """ -4979 -4980 def _replace_tables(node): -4981 if isinstance(node, Table): -4982 new_name = mapping.get(table_name(node)) -4983 if new_name: -4984 return to_table( -4985 new_name, -4986 **{k: v for k, v in node.args.items() if k not in ("this", "db", "catalog")}, -4987 ) -4988 return node +4948 Returns: +4949 Expression: the equivalent expression object +4950 """ +4951 if isinstance(value, Expression): +4952 return value +4953 if value is None: +4954 return NULL +4955 if isinstance(value, bool): +4956 return Boolean(this=value) +4957 if isinstance(value, str): +4958 return Literal.string(value) +4959 if isinstance(value, float) and math.isnan(value): +4960 return NULL +4961 if isinstance(value, numbers.Number): +4962 return Literal.number(value) +4963 if isinstance(value, tuple): +4964 return Tuple(expressions=[convert(v) for v in value]) +4965 if isinstance(value, list): +4966 return Array(expressions=[convert(v) for v in value]) +4967 if isinstance(value, dict): +4968 return Map( +4969 keys=[convert(k) for k in value], +4970 values=[convert(v) for v in value.values()], +4971 ) +4972 if isinstance(value, datetime.datetime): +4973 datetime_literal = Literal.string( +4974 (value if value.tzinfo else value.replace(tzinfo=datetime.timezone.utc)).isoformat() +4975 ) +4976 return TimeStrToTime(this=datetime_literal) +4977 if isinstance(value, datetime.date): +4978 date_literal = Literal.string(value.strftime("%Y-%m-%d")) +4979 return DateStrToDate(this=date_literal) +4980 raise ValueError(f"Cannot convert {value}") +4981 +4982 +4983def replace_children(expression, fun, *args, **kwargs): +4984 """ +4985 Replace children of an expression with the result of a lambda fun(child) -> exp. +4986 """ +4987 for k, v in expression.args.items(): +4988 is_list_arg = type(v) is list 4989 -4990 return expression.transform(_replace_tables) -4991 +4990 child_nodes = v if is_list_arg else [v] +4991 new_child_nodes = [] 4992 -4993def replace_placeholders(expression, *args, **kwargs): -4994 """Replace placeholders in an expression. -4995 -4996 Args: -4997 expression (sqlglot.Expression): expression node to be transformed and replaced. -4998 args: positional names that will substitute unnamed placeholders in the given order. -4999 kwargs: keyword arguments that will substitute named placeholders. -5000 -5001 Examples: -5002 >>> from sqlglot import exp, parse_one -5003 >>> replace_placeholders( -5004 ... parse_one("select * from :tbl where ? = ?"), -5005 ... exp.to_identifier("str_col"), "b", tbl=exp.to_identifier("foo") -5006 ... ).sql() -5007 "SELECT * FROM foo WHERE str_col = 'b'" +4993 for cn in child_nodes: +4994 if isinstance(cn, Expression): +4995 for child_node in ensure_collection(fun(cn, *args, **kwargs)): +4996 new_child_nodes.append(child_node) +4997 child_node.parent = expression +4998 child_node.arg_key = k +4999 else: +5000 new_child_nodes.append(cn) +5001 +5002 expression.args[k] = new_child_nodes if is_list_arg else seq_get(new_child_nodes, 0) +5003 +5004 +5005def column_table_names(expression): +5006 """ +5007 Return all table names referenced through columns in an expression. 5008 -5009 Returns: -5010 The mapped expression. -5011 """ -5012 -5013 def _replace_placeholders(node, args, **kwargs): -5014 if isinstance(node, Placeholder): -5015 if node.name: -5016 new_name = kwargs.get(node.name) -5017 if new_name: -5018 return convert(new_name) -5019 else: -5020 try: -5021 return convert(next(args)) -5022 except StopIteration: -5023 pass -5024 return node +5009 Example: +5010 >>> import sqlglot +5011 >>> column_table_names(sqlglot.parse_one("a.b AND c.d AND c.e")) +5012 ['c', 'a'] +5013 +5014 Args: +5015 expression (sqlglot.Expression): expression to find table names +5016 +5017 Returns: +5018 list: A list of unique names +5019 """ +5020 return list(dict.fromkeys(column.table for column in expression.find_all(Column))) +5021 +5022 +5023def table_name(table) -> str: +5024 """Get the full name of a table as a string. 5025 -5026 return expression.transform(_replace_placeholders, iter(args), **kwargs) -5027 +5026 Args: +5027 table (exp.Table | str): table expression node or string. 5028 -5029def expand(expression: Expression, sources: t.Dict[str, Subqueryable], copy=True) -> Expression: -5030 """Transforms an expression by expanding all referenced sources into subqueries. -5031 -5032 Examples: -5033 >>> from sqlglot import parse_one -5034 >>> expand(parse_one("select * from x AS z"), {"x": parse_one("select * from y")}).sql() -5035 'SELECT * FROM (SELECT * FROM y) AS z /* source: x */' -5036 -5037 Args: -5038 expression: The expression to expand. -5039 sources: A dictionary of name to Subqueryables. -5040 copy: Whether or not to copy the expression during transformation. Defaults to True. -5041 -5042 Returns: -5043 The transformed expression. -5044 """ -5045 -5046 def _expand(node: Expression): -5047 if isinstance(node, Table): -5048 name = table_name(node) -5049 source = sources.get(name) -5050 if source: -5051 subquery = source.subquery(node.alias or name) -5052 subquery.comments = [f"source: {name}"] -5053 return subquery -5054 return node -5055 -5056 return expression.transform(_expand, copy=copy) -5057 -5058 -5059def func(name: str, *args, dialect: DialectType = None, **kwargs) -> Func: -5060 """ -5061 Returns a Func expression. -5062 -5063 Examples: -5064 >>> func("abs", 5).sql() -5065 'ABS(5)' -5066 -5067 >>> func("cast", this=5, to=DataType.build("DOUBLE")).sql() -5068 'CAST(5 AS DOUBLE)' +5029 Examples: +5030 >>> from sqlglot import exp, parse_one +5031 >>> table_name(parse_one("select * from a.b.c").find(exp.Table)) +5032 'a.b.c' +5033 +5034 Returns: +5035 The table name. +5036 """ +5037 +5038 table = maybe_parse(table, into=Table) +5039 +5040 if not table: +5041 raise ValueError(f"Cannot parse {table}") +5042 +5043 return ".".join( +5044 part +5045 for part in ( +5046 table.text("catalog"), +5047 table.text("db"), +5048 table.name, +5049 ) +5050 if part +5051 ) +5052 +5053 +5054def replace_tables(expression, mapping): +5055 """Replace all tables in expression according to the mapping. +5056 +5057 Args: +5058 expression (sqlglot.Expression): expression node to be transformed and replaced. +5059 mapping (Dict[str, str]): mapping of table names. +5060 +5061 Examples: +5062 >>> from sqlglot import exp, parse_one +5063 >>> replace_tables(parse_one("select * from a.b"), {"a.b": "c"}).sql() +5064 'SELECT * FROM c' +5065 +5066 Returns: +5067 The mapped expression. +5068 """ 5069 -5070 Args: -5071 name: the name of the function to build. -5072 args: the args used to instantiate the function of interest. -5073 dialect: the source dialect. -5074 kwargs: the kwargs used to instantiate the function of interest. -5075 -5076 Note: -5077 The arguments `args` and `kwargs` are mutually exclusive. -5078 -5079 Returns: -5080 An instance of the function of interest, or an anonymous function, if `name` doesn't -5081 correspond to an existing `sqlglot.expressions.Func` class. -5082 """ -5083 if args and kwargs: -5084 raise ValueError("Can't use both args and kwargs to instantiate a function.") +5070 def _replace_tables(node): +5071 if isinstance(node, Table): +5072 new_name = mapping.get(table_name(node)) +5073 if new_name: +5074 return to_table( +5075 new_name, +5076 **{k: v for k, v in node.args.items() if k not in ("this", "db", "catalog")}, +5077 ) +5078 return node +5079 +5080 return expression.transform(_replace_tables) +5081 +5082 +5083def replace_placeholders(expression, *args, **kwargs): +5084 """Replace placeholders in an expression. 5085 -5086 from sqlglot.dialects.dialect import Dialect -5087 -5088 converted = [convert(arg) for arg in args] -5089 kwargs = {key: convert(value) for key, value in kwargs.items()} +5086 Args: +5087 expression (sqlglot.Expression): expression node to be transformed and replaced. +5088 args: positional names that will substitute unnamed placeholders in the given order. +5089 kwargs: keyword arguments that will substitute named placeholders. 5090 -5091 parser = Dialect.get_or_raise(dialect)().parser() -5092 from_args_list = parser.FUNCTIONS.get(name.upper()) -5093 -5094 if from_args_list: -5095 function = from_args_list(converted) if converted else from_args_list.__self__(**kwargs) # type: ignore -5096 else: -5097 kwargs = kwargs or {"expressions": converted} -5098 function = Anonymous(this=name, **kwargs) -5099 -5100 for error_message in function.error_messages(converted): -5101 raise ValueError(error_message) +5091 Examples: +5092 >>> from sqlglot import exp, parse_one +5093 >>> replace_placeholders( +5094 ... parse_one("select * from :tbl where ? = ?"), +5095 ... exp.to_identifier("str_col"), "b", tbl=exp.to_identifier("foo") +5096 ... ).sql() +5097 "SELECT * FROM foo WHERE str_col = 'b'" +5098 +5099 Returns: +5100 The mapped expression. +5101 """ 5102 -5103 return function -5104 -5105 -5106def true(): -5107 """ -5108 Returns a true Boolean expression. -5109 """ -5110 return Boolean(this=True) -5111 -5112 -5113def false(): -5114 """ -5115 Returns a false Boolean expression. -5116 """ -5117 return Boolean(this=False) +5103 def _replace_placeholders(node, args, **kwargs): +5104 if isinstance(node, Placeholder): +5105 if node.name: +5106 new_name = kwargs.get(node.name) +5107 if new_name: +5108 return convert(new_name) +5109 else: +5110 try: +5111 return convert(next(args)) +5112 except StopIteration: +5113 pass +5114 return node +5115 +5116 return expression.transform(_replace_placeholders, iter(args), **kwargs) +5117 5118 -5119 -5120def null(): -5121 """ -5122 Returns a Null expression. -5123 """ -5124 return Null() -5125 -5126 -5127# TODO: deprecate this -5128TRUE = Boolean(this=True) -5129FALSE = Boolean(this=False) -5130NULL = Null() +5119def expand( +5120 expression: Expression, sources: t.Dict[str, Subqueryable], copy: bool = True +5121) -> Expression: +5122 """Transforms an expression by expanding all referenced sources into subqueries. +5123 +5124 Examples: +5125 >>> from sqlglot import parse_one +5126 >>> expand(parse_one("select * from x AS z"), {"x": parse_one("select * from y")}).sql() +5127 'SELECT * FROM (SELECT * FROM y) AS z /* source: x */' +5128 +5129 >>> expand(parse_one("select * from x AS z"), {"x": parse_one("select * from y"), "y": parse_one("select * from z")}).sql() +5130 'SELECT * FROM (SELECT * FROM (SELECT * FROM z) AS y /* source: y */) AS z /* source: x */' +5131 +5132 Args: +5133 expression: The expression to expand. +5134 sources: A dictionary of name to Subqueryables. +5135 copy: Whether or not to copy the expression during transformation. Defaults to True. +5136 +5137 Returns: +5138 The transformed expression. +5139 """ +5140 +5141 def _expand(node: Expression): +5142 if isinstance(node, Table): +5143 name = table_name(node) +5144 source = sources.get(name) +5145 if source: +5146 subquery = source.subquery(node.alias or name) +5147 subquery.comments = [f"source: {name}"] +5148 return subquery.transform(_expand, copy=False) +5149 return node +5150 +5151 return expression.transform(_expand, copy=copy) +5152 +5153 +5154def func(name: str, *args, dialect: DialectType = None, **kwargs) -> Func: +5155 """ +5156 Returns a Func expression. +5157 +5158 Examples: +5159 >>> func("abs", 5).sql() +5160 'ABS(5)' +5161 +5162 >>> func("cast", this=5, to=DataType.build("DOUBLE")).sql() +5163 'CAST(5 AS DOUBLE)' +5164 +5165 Args: +5166 name: the name of the function to build. +5167 args: the args used to instantiate the function of interest. +5168 dialect: the source dialect. +5169 kwargs: the kwargs used to instantiate the function of interest. +5170 +5171 Note: +5172 The arguments `args` and `kwargs` are mutually exclusive. +5173 +5174 Returns: +5175 An instance of the function of interest, or an anonymous function, if `name` doesn't +5176 correspond to an existing `sqlglot.expressions.Func` class. +5177 """ +5178 if args and kwargs: +5179 raise ValueError("Can't use both args and kwargs to instantiate a function.") +5180 +5181 from sqlglot.dialects.dialect import Dialect +5182 +5183 converted = [convert(arg) for arg in args] +5184 kwargs = {key: convert(value) for key, value in kwargs.items()} +5185 +5186 parser = Dialect.get_or_raise(dialect)().parser() +5187 from_args_list = parser.FUNCTIONS.get(name.upper()) +5188 +5189 if from_args_list: +5190 function = from_args_list(converted) if converted else from_args_list.__self__(**kwargs) # type: ignore +5191 else: +5192 kwargs = kwargs or {"expressions": converted} +5193 function = Anonymous(this=name, **kwargs) +5194 +5195 for error_message in function.error_messages(converted): +5196 raise ValueError(error_message) +5197 +5198 return function +5199 +5200 +5201def true(): +5202 """ +5203 Returns a true Boolean expression. +5204 """ +5205 return Boolean(this=True) +5206 +5207 +5208def false(): +5209 """ +5210 Returns a false Boolean expression. +5211 """ +5212 return Boolean(this=False) +5213 +5214 +5215def null(): +5216 """ +5217 Returns a Null expression. +5218 """ +5219 return Null() +5220 +5221 +5222# TODO: deprecate this +5223TRUE = Boolean(this=True) +5224FALSE = Boolean(this=False) +5225NULL = Null() @@ -10926,11 +11084,10 @@ If an Expression instance is passed, it w 819 "properties": False, 820 "replace": False, 821 "unique": False, -822 "volatile": False, -823 "indexes": False, -824 "no_schema_binding": False, -825 "begin": False, -826 } +822 "indexes": False, +823 "no_schema_binding": False, +824 "begin": False, +825 } @@ -10993,8 +11150,8 @@ If an Expression instance is passed, it w -
    829class Describe(Expression):
    -830    arg_types = {"this": True, "kind": False}
    +            
    828class Describe(Expression):
    +829    arg_types = {"this": True, "kind": False}
     
    @@ -11057,8 +11214,8 @@ If an Expression instance is passed, it w
    -
    833class Pragma(Expression):
    -834    pass
    +            
    832class Pragma(Expression):
    +833    pass
     
    @@ -11121,8 +11278,8 @@ If an Expression instance is passed, it w
    -
    837class Set(Expression):
    -838    arg_types = {"expressions": False}
    +            
    836class Set(Expression):
    +837    arg_types = {"expressions": False}
     
    @@ -11185,14 +11342,14 @@ If an Expression instance is passed, it w
    -
    841class SetItem(Expression):
    -842    arg_types = {
    -843        "this": False,
    -844        "expressions": False,
    -845        "kind": False,
    -846        "collate": False,  # MySQL SET NAMES statement
    -847        "global": False,
    -848    }
    +            
    840class SetItem(Expression):
    +841    arg_types = {
    +842        "this": False,
    +843        "expressions": False,
    +844        "kind": False,
    +845        "collate": False,  # MySQL SET NAMES statement
    +846        "global": False,
    +847    }
     
    @@ -11255,24 +11412,24 @@ If an Expression instance is passed, it w
    -
    851class Show(Expression):
    -852    arg_types = {
    -853        "this": True,
    -854        "target": False,
    -855        "offset": False,
    -856        "limit": False,
    -857        "like": False,
    -858        "where": False,
    -859        "db": False,
    -860        "full": False,
    -861        "mutex": False,
    -862        "query": False,
    -863        "channel": False,
    -864        "global": False,
    -865        "log": False,
    -866        "position": False,
    -867        "types": False,
    -868    }
    +            
    850class Show(Expression):
    +851    arg_types = {
    +852        "this": True,
    +853        "target": False,
    +854        "offset": False,
    +855        "limit": False,
    +856        "like": False,
    +857        "where": False,
    +858        "db": False,
    +859        "full": False,
    +860        "mutex": False,
    +861        "query": False,
    +862        "channel": False,
    +863        "global": False,
    +864        "log": False,
    +865        "position": False,
    +866        "types": False,
    +867    }
     
    @@ -11335,8 +11492,8 @@ If an Expression instance is passed, it w
    -
    871class UserDefinedFunction(Expression):
    -872    arg_types = {"this": True, "expressions": False, "wrapped": False}
    +            
    870class UserDefinedFunction(Expression):
    +871    arg_types = {"this": True, "expressions": False, "wrapped": False}
     
    @@ -11399,8 +11556,8 @@ If an Expression instance is passed, it w
    -
    875class CharacterSet(Expression):
    -876    arg_types = {"this": True, "default": False}
    +            
    874class CharacterSet(Expression):
    +875    arg_types = {"this": True, "default": False}
     
    @@ -11463,12 +11620,12 @@ If an Expression instance is passed, it w
    -
    879class With(Expression):
    -880    arg_types = {"expressions": True, "recursive": False}
    -881
    -882    @property
    -883    def recursive(self) -> bool:
    -884        return bool(self.args.get("recursive"))
    +            
    878class With(Expression):
    +879    arg_types = {"expressions": True, "recursive": False}
    +880
    +881    @property
    +882    def recursive(self) -> bool:
    +883        return bool(self.args.get("recursive"))
     
    @@ -11531,8 +11688,8 @@ If an Expression instance is passed, it w
    -
    887class WithinGroup(Expression):
    -888    arg_types = {"this": True, "expression": False}
    +            
    886class WithinGroup(Expression):
    +887    arg_types = {"this": True, "expression": False}
     
    @@ -11595,8 +11752,8 @@ If an Expression instance is passed, it w
    -
    891class CTE(DerivedTable):
    -892    arg_types = {"this": True, "alias": True}
    +            
    890class CTE(DerivedTable):
    +891    arg_types = {"this": True, "alias": True}
     
    @@ -11659,12 +11816,12 @@ If an Expression instance is passed, it w
    -
    895class TableAlias(Expression):
    -896    arg_types = {"this": False, "columns": False}
    -897
    -898    @property
    -899    def columns(self):
    -900        return self.args.get("columns") or []
    +            
    894class TableAlias(Expression):
    +895    arg_types = {"this": False, "columns": False}
    +896
    +897    @property
    +898    def columns(self):
    +899        return self.args.get("columns") or []
     
    @@ -11727,8 +11884,8 @@ If an Expression instance is passed, it w
    -
    903class BitString(Condition):
    -904    pass
    +            
    902class BitString(Condition):
    +903    pass
     
    @@ -11797,8 +11954,8 @@ If an Expression instance is passed, it w
    -
    907class HexString(Condition):
    -908    pass
    +            
    906class HexString(Condition):
    +907    pass
     
    @@ -11867,8 +12024,8 @@ If an Expression instance is passed, it w
    -
    911class ByteString(Condition):
    -912    pass
    +            
    910class ByteString(Condition):
    +911    pass
     
    @@ -11937,41 +12094,41 @@ If an Expression instance is passed, it w
    -
    915class Column(Condition):
    -916    arg_types = {"this": True, "table": False, "db": False, "catalog": False, "join_mark": False}
    -917
    -918    @property
    -919    def table(self) -> str:
    -920        return self.text("table")
    -921
    -922    @property
    -923    def db(self) -> str:
    -924        return self.text("db")
    -925
    -926    @property
    -927    def catalog(self) -> str:
    -928        return self.text("catalog")
    -929
    -930    @property
    -931    def output_name(self) -> str:
    -932        return self.name
    -933
    -934    @property
    -935    def parts(self) -> t.List[Identifier]:
    -936        """Return the parts of a column in order catalog, db, table, name."""
    -937        return [part for part in reversed(list(self.args.values())) if part]
    -938
    -939    def to_dot(self) -> Dot:
    -940        """Converts the column into a dot expression."""
    -941        parts = self.parts
    -942        parent = self.parent
    -943
    -944        while parent:
    -945            if isinstance(parent, Dot):
    -946                parts.append(parent.expression)
    -947            parent = parent.parent
    -948
    -949        return Dot.build(parts)
    +            
    914class Column(Condition):
    +915    arg_types = {"this": True, "table": False, "db": False, "catalog": False, "join_mark": False}
    +916
    +917    @property
    +918    def table(self) -> str:
    +919        return self.text("table")
    +920
    +921    @property
    +922    def db(self) -> str:
    +923        return self.text("db")
    +924
    +925    @property
    +926    def catalog(self) -> str:
    +927        return self.text("catalog")
    +928
    +929    @property
    +930    def output_name(self) -> str:
    +931        return self.name
    +932
    +933    @property
    +934    def parts(self) -> t.List[Identifier]:
    +935        """Return the parts of a column in order catalog, db, table, name."""
    +936        return [part for part in reversed(list(self.args.values())) if part]
    +937
    +938    def to_dot(self) -> Dot:
    +939        """Converts the column into a dot expression."""
    +940        parts = self.parts
    +941        parent = self.parent
    +942
    +943        while parent:
    +944            if isinstance(parent, Dot):
    +945                parts.append(parent.expression)
    +946            parent = parent.parent
    +947
    +948        return Dot.build(parts)
     
    @@ -12031,17 +12188,17 @@ If an Expression instance is passed, it w
    -
    939    def to_dot(self) -> Dot:
    -940        """Converts the column into a dot expression."""
    -941        parts = self.parts
    -942        parent = self.parent
    -943
    -944        while parent:
    -945            if isinstance(parent, Dot):
    -946                parts.append(parent.expression)
    -947            parent = parent.parent
    -948
    -949        return Dot.build(parts)
    +            
    938    def to_dot(self) -> Dot:
    +939        """Converts the column into a dot expression."""
    +940        parts = self.parts
    +941        parent = self.parent
    +942
    +943        while parent:
    +944            if isinstance(parent, Dot):
    +945                parts.append(parent.expression)
    +946            parent = parent.parent
    +947
    +948        return Dot.build(parts)
     
    @@ -12112,8 +12269,8 @@ If an Expression instance is passed, it w
    -
    952class ColumnPosition(Expression):
    -953    arg_types = {"this": False, "position": True}
    +            
    951class ColumnPosition(Expression):
    +952    arg_types = {"this": False, "position": True}
     
    @@ -12176,14 +12333,14 @@ If an Expression instance is passed, it w
    -
    956class ColumnDef(Expression):
    -957    arg_types = {
    -958        "this": True,
    -959        "kind": False,
    -960        "constraints": False,
    -961        "exists": False,
    -962        "position": False,
    -963    }
    +            
    955class ColumnDef(Expression):
    +956    arg_types = {
    +957        "this": True,
    +958        "kind": False,
    +959        "constraints": False,
    +960        "exists": False,
    +961        "position": False,
    +962    }
     
    @@ -12246,15 +12403,15 @@ If an Expression instance is passed, it w
    -
    966class AlterColumn(Expression):
    -967    arg_types = {
    -968        "this": True,
    -969        "dtype": False,
    -970        "collate": False,
    -971        "using": False,
    -972        "default": False,
    -973        "drop": False,
    -974    }
    +            
    965class AlterColumn(Expression):
    +966    arg_types = {
    +967        "this": True,
    +968        "dtype": False,
    +969        "collate": False,
    +970        "using": False,
    +971        "default": False,
    +972        "drop": False,
    +973    }
     
    @@ -12317,8 +12474,8 @@ If an Expression instance is passed, it w
    -
    977class RenameTable(Expression):
    -978    pass
    +            
    976class RenameTable(Expression):
    +977    pass
     
    @@ -12381,8 +12538,8 @@ If an Expression instance is passed, it w
    -
    981class SetTag(Expression):
    -982    arg_types = {"expressions": True, "unset": False}
    +            
    980class SetTag(Expression):
    +981    arg_types = {"expressions": True, "unset": False}
     
    @@ -12445,8 +12602,8 @@ If an Expression instance is passed, it w
    -
    985class Comment(Expression):
    -986    arg_types = {"this": True, "kind": True, "expression": True, "exists": False}
    +            
    984class Comment(Expression):
    +985    arg_types = {"this": True, "kind": True, "expression": True, "exists": False}
     
    @@ -12509,8 +12666,8 @@ If an Expression instance is passed, it w
    -
    989class ColumnConstraint(Expression):
    -990    arg_types = {"this": False, "kind": True}
    +            
    988class ColumnConstraint(Expression):
    +989    arg_types = {"this": False, "kind": True}
     
    @@ -12573,8 +12730,8 @@ If an Expression instance is passed, it w
    -
    993class ColumnConstraintKind(Expression):
    -994    pass
    +            
    992class ColumnConstraintKind(Expression):
    +993    pass
     
    @@ -12637,8 +12794,8 @@ If an Expression instance is passed, it w
    -
    997class AutoIncrementColumnConstraint(ColumnConstraintKind):
    -998    pass
    +            
    996class AutoIncrementColumnConstraint(ColumnConstraintKind):
    +997    pass
     
    @@ -12701,8 +12858,8 @@ If an Expression instance is passed, it w
    -
    1001class CaseSpecificColumnConstraint(ColumnConstraintKind):
    -1002    arg_types = {"not_": True}
    +            
    1000class CaseSpecificColumnConstraint(ColumnConstraintKind):
    +1001    arg_types = {"not_": True}
     
    @@ -12765,8 +12922,8 @@ If an Expression instance is passed, it w
    -
    1005class CharacterSetColumnConstraint(ColumnConstraintKind):
    -1006    arg_types = {"this": True}
    +            
    1004class CharacterSetColumnConstraint(ColumnConstraintKind):
    +1005    arg_types = {"this": True}
     
    @@ -12829,8 +12986,8 @@ If an Expression instance is passed, it w
    -
    1009class CheckColumnConstraint(ColumnConstraintKind):
    -1010    pass
    +            
    1008class CheckColumnConstraint(ColumnConstraintKind):
    +1009    pass
     
    @@ -12893,8 +13050,8 @@ If an Expression instance is passed, it w
    -
    1013class CollateColumnConstraint(ColumnConstraintKind):
    -1014    pass
    +            
    1012class CollateColumnConstraint(ColumnConstraintKind):
    +1013    pass
     
    @@ -12957,8 +13114,8 @@ If an Expression instance is passed, it w
    -
    1017class CommentColumnConstraint(ColumnConstraintKind):
    -1018    pass
    +            
    1016class CommentColumnConstraint(ColumnConstraintKind):
    +1017    pass
     
    @@ -13021,8 +13178,8 @@ If an Expression instance is passed, it w
    -
    1021class CompressColumnConstraint(ColumnConstraintKind):
    -1022    pass
    +            
    1020class CompressColumnConstraint(ColumnConstraintKind):
    +1021    pass
     
    @@ -13085,8 +13242,8 @@ If an Expression instance is passed, it w
    -
    1025class DateFormatColumnConstraint(ColumnConstraintKind):
    -1026    arg_types = {"this": True}
    +            
    1024class DateFormatColumnConstraint(ColumnConstraintKind):
    +1025    arg_types = {"this": True}
     
    @@ -13149,8 +13306,8 @@ If an Expression instance is passed, it w
    -
    1029class DefaultColumnConstraint(ColumnConstraintKind):
    -1030    pass
    +            
    1028class DefaultColumnConstraint(ColumnConstraintKind):
    +1029    pass
     
    @@ -13213,8 +13370,8 @@ If an Expression instance is passed, it w
    -
    1033class EncodeColumnConstraint(ColumnConstraintKind):
    -1034    pass
    +            
    1032class EncodeColumnConstraint(ColumnConstraintKind):
    +1033    pass
     
    @@ -13277,16 +13434,16 @@ If an Expression instance is passed, it w
    -
    1037class GeneratedAsIdentityColumnConstraint(ColumnConstraintKind):
    -1038    # this: True -> ALWAYS, this: False -> BY DEFAULT
    -1039    arg_types = {
    -1040        "this": False,
    -1041        "start": False,
    -1042        "increment": False,
    -1043        "minvalue": False,
    -1044        "maxvalue": False,
    -1045        "cycle": False,
    -1046    }
    +            
    1036class GeneratedAsIdentityColumnConstraint(ColumnConstraintKind):
    +1037    # this: True -> ALWAYS, this: False -> BY DEFAULT
    +1038    arg_types = {
    +1039        "this": False,
    +1040        "start": False,
    +1041        "increment": False,
    +1042        "minvalue": False,
    +1043        "maxvalue": False,
    +1044        "cycle": False,
    +1045    }
     
    @@ -13349,8 +13506,8 @@ If an Expression instance is passed, it w
    -
    1049class InlineLengthColumnConstraint(ColumnConstraintKind):
    -1050    pass
    +            
    1048class InlineLengthColumnConstraint(ColumnConstraintKind):
    +1049    pass
     
    @@ -13413,8 +13570,8 @@ If an Expression instance is passed, it w
    -
    1053class NotNullColumnConstraint(ColumnConstraintKind):
    -1054    arg_types = {"allow_null": False}
    +            
    1052class NotNullColumnConstraint(ColumnConstraintKind):
    +1053    arg_types = {"allow_null": False}
     
    @@ -13462,6 +13619,70 @@ If an Expression instance is passed, it w
    dump
    load
    +
    + + +
  • +
    + +
    + + class + OnUpdateColumnConstraint(ColumnConstraintKind): + + + +
    + +
    1057class OnUpdateColumnConstraint(ColumnConstraintKind):
    +1058    pass
    +
    + + + + + @@ -13477,8 +13698,8 @@ If an Expression instance is passed, it w -
    1057class PrimaryKeyColumnConstraint(ColumnConstraintKind):
    -1058    arg_types = {"desc": False}
    +            
    1061class PrimaryKeyColumnConstraint(ColumnConstraintKind):
    +1062    arg_types = {"desc": False}
     
    @@ -13541,8 +13762,8 @@ If an Expression instance is passed, it w
    -
    1061class TitleColumnConstraint(ColumnConstraintKind):
    -1062    pass
    +            
    1065class TitleColumnConstraint(ColumnConstraintKind):
    +1066    pass
     
    @@ -13605,8 +13826,8 @@ If an Expression instance is passed, it w
    -
    1065class UniqueColumnConstraint(ColumnConstraintKind):
    -1066    arg_types: t.Dict[str, t.Any] = {}
    +            
    1069class UniqueColumnConstraint(ColumnConstraintKind):
    +1070    arg_types: t.Dict[str, t.Any] = {}
     
    @@ -13669,8 +13890,8 @@ If an Expression instance is passed, it w
    -
    1069class UppercaseColumnConstraint(ColumnConstraintKind):
    -1070    arg_types: t.Dict[str, t.Any] = {}
    +            
    1073class UppercaseColumnConstraint(ColumnConstraintKind):
    +1074    arg_types: t.Dict[str, t.Any] = {}
     
    @@ -13733,8 +13954,8 @@ If an Expression instance is passed, it w
    -
    1073class PathColumnConstraint(ColumnConstraintKind):
    -1074    pass
    +            
    1077class PathColumnConstraint(ColumnConstraintKind):
    +1078    pass
     
    @@ -13797,8 +14018,8 @@ If an Expression instance is passed, it w
    -
    1077class Constraint(Expression):
    -1078    arg_types = {"this": True, "expressions": True}
    +            
    1081class Constraint(Expression):
    +1082    arg_types = {"this": True, "expressions": True}
     
    @@ -13861,115 +14082,115 @@ If an Expression instance is passed, it w
    -
    1081class Delete(Expression):
    -1082    arg_types = {"with": False, "this": False, "using": False, "where": False, "returning": False}
    -1083
    -1084    def delete(
    -1085        self,
    -1086        table: ExpOrStr,
    -1087        dialect: DialectType = None,
    -1088        copy: bool = True,
    -1089        **opts,
    -1090    ) -> Delete:
    -1091        """
    -1092        Create a DELETE expression or replace the table on an existing DELETE expression.
    -1093
    -1094        Example:
    -1095            >>> delete("tbl").sql()
    -1096            'DELETE FROM tbl'
    +            
    1085class Delete(Expression):
    +1086    arg_types = {"with": False, "this": False, "using": False, "where": False, "returning": False}
    +1087
    +1088    def delete(
    +1089        self,
    +1090        table: ExpOrStr,
    +1091        dialect: DialectType = None,
    +1092        copy: bool = True,
    +1093        **opts,
    +1094    ) -> Delete:
    +1095        """
    +1096        Create a DELETE expression or replace the table on an existing DELETE expression.
     1097
    -1098        Args:
    -1099            table: the table from which to delete.
    -1100            dialect: the dialect used to parse the input expression.
    -1101            copy: if `False`, modify this expression instance in-place.
    -1102            opts: other options to use to parse the input expressions.
    -1103
    -1104        Returns:
    -1105            Delete: the modified expression.
    -1106        """
    -1107        return _apply_builder(
    -1108            expression=table,
    -1109            instance=self,
    -1110            arg="this",
    -1111            dialect=dialect,
    -1112            into=Table,
    -1113            copy=copy,
    -1114            **opts,
    -1115        )
    -1116
    -1117    def where(
    -1118        self,
    -1119        *expressions: ExpOrStr,
    -1120        append: bool = True,
    -1121        dialect: DialectType = None,
    -1122        copy: bool = True,
    -1123        **opts,
    -1124    ) -> Delete:
    -1125        """
    -1126        Append to or set the WHERE expressions.
    -1127
    -1128        Example:
    -1129            >>> delete("tbl").where("x = 'a' OR x < 'b'").sql()
    -1130            "DELETE FROM tbl WHERE x = 'a' OR x < 'b'"
    +1098        Example:
    +1099            >>> delete("tbl").sql()
    +1100            'DELETE FROM tbl'
    +1101
    +1102        Args:
    +1103            table: the table from which to delete.
    +1104            dialect: the dialect used to parse the input expression.
    +1105            copy: if `False`, modify this expression instance in-place.
    +1106            opts: other options to use to parse the input expressions.
    +1107
    +1108        Returns:
    +1109            Delete: the modified expression.
    +1110        """
    +1111        return _apply_builder(
    +1112            expression=table,
    +1113            instance=self,
    +1114            arg="this",
    +1115            dialect=dialect,
    +1116            into=Table,
    +1117            copy=copy,
    +1118            **opts,
    +1119        )
    +1120
    +1121    def where(
    +1122        self,
    +1123        *expressions: ExpOrStr,
    +1124        append: bool = True,
    +1125        dialect: DialectType = None,
    +1126        copy: bool = True,
    +1127        **opts,
    +1128    ) -> Delete:
    +1129        """
    +1130        Append to or set the WHERE expressions.
     1131
    -1132        Args:
    -1133            *expressions: the SQL code strings to parse.
    -1134                If an `Expression` instance is passed, it will be used as-is.
    -1135                Multiple expressions are combined with an AND operator.
    -1136            append: if `True`, AND the new expressions to any existing expression.
    -1137                Otherwise, this resets the expression.
    -1138            dialect: the dialect used to parse the input expressions.
    -1139            copy: if `False`, modify this expression instance in-place.
    -1140            opts: other options to use to parse the input expressions.
    -1141
    -1142        Returns:
    -1143            Delete: the modified expression.
    -1144        """
    -1145        return _apply_conjunction_builder(
    -1146            *expressions,
    -1147            instance=self,
    -1148            arg="where",
    -1149            append=append,
    -1150            into=Where,
    -1151            dialect=dialect,
    -1152            copy=copy,
    -1153            **opts,
    -1154        )
    -1155
    -1156    def returning(
    -1157        self,
    -1158        expression: ExpOrStr,
    -1159        dialect: DialectType = None,
    -1160        copy: bool = True,
    -1161        **opts,
    -1162    ) -> Delete:
    -1163        """
    -1164        Set the RETURNING expression. Not supported by all dialects.
    -1165
    -1166        Example:
    -1167            >>> delete("tbl").returning("*", dialect="postgres").sql()
    -1168            'DELETE FROM tbl RETURNING *'
    +1132        Example:
    +1133            >>> delete("tbl").where("x = 'a' OR x < 'b'").sql()
    +1134            "DELETE FROM tbl WHERE x = 'a' OR x < 'b'"
    +1135
    +1136        Args:
    +1137            *expressions: the SQL code strings to parse.
    +1138                If an `Expression` instance is passed, it will be used as-is.
    +1139                Multiple expressions are combined with an AND operator.
    +1140            append: if `True`, AND the new expressions to any existing expression.
    +1141                Otherwise, this resets the expression.
    +1142            dialect: the dialect used to parse the input expressions.
    +1143            copy: if `False`, modify this expression instance in-place.
    +1144            opts: other options to use to parse the input expressions.
    +1145
    +1146        Returns:
    +1147            Delete: the modified expression.
    +1148        """
    +1149        return _apply_conjunction_builder(
    +1150            *expressions,
    +1151            instance=self,
    +1152            arg="where",
    +1153            append=append,
    +1154            into=Where,
    +1155            dialect=dialect,
    +1156            copy=copy,
    +1157            **opts,
    +1158        )
    +1159
    +1160    def returning(
    +1161        self,
    +1162        expression: ExpOrStr,
    +1163        dialect: DialectType = None,
    +1164        copy: bool = True,
    +1165        **opts,
    +1166    ) -> Delete:
    +1167        """
    +1168        Set the RETURNING expression. Not supported by all dialects.
     1169
    -1170        Args:
    -1171            expression: the SQL code strings to parse.
    -1172                If an `Expression` instance is passed, it will be used as-is.
    -1173            dialect: the dialect used to parse the input expressions.
    -1174            copy: if `False`, modify this expression instance in-place.
    -1175            opts: other options to use to parse the input expressions.
    -1176
    -1177        Returns:
    -1178            Delete: the modified expression.
    -1179        """
    -1180        return _apply_builder(
    -1181            expression=expression,
    -1182            instance=self,
    -1183            arg="returning",
    -1184            prefix="RETURNING",
    -1185            dialect=dialect,
    -1186            copy=copy,
    -1187            into=Returning,
    -1188            **opts,
    -1189        )
    +1170        Example:
    +1171            >>> delete("tbl").returning("*", dialect="postgres").sql()
    +1172            'DELETE FROM tbl RETURNING *'
    +1173
    +1174        Args:
    +1175            expression: the SQL code strings to parse.
    +1176                If an `Expression` instance is passed, it will be used as-is.
    +1177            dialect: the dialect used to parse the input expressions.
    +1178            copy: if `False`, modify this expression instance in-place.
    +1179            opts: other options to use to parse the input expressions.
    +1180
    +1181        Returns:
    +1182            Delete: the modified expression.
    +1183        """
    +1184        return _apply_builder(
    +1185            expression=expression,
    +1186            instance=self,
    +1187            arg="returning",
    +1188            prefix="RETURNING",
    +1189            dialect=dialect,
    +1190            copy=copy,
    +1191            into=Returning,
    +1192            **opts,
    +1193        )
     
    @@ -13986,38 +14207,38 @@ If an Expression instance is passed, it w
    -
    1084    def delete(
    -1085        self,
    -1086        table: ExpOrStr,
    -1087        dialect: DialectType = None,
    -1088        copy: bool = True,
    -1089        **opts,
    -1090    ) -> Delete:
    -1091        """
    -1092        Create a DELETE expression or replace the table on an existing DELETE expression.
    -1093
    -1094        Example:
    -1095            >>> delete("tbl").sql()
    -1096            'DELETE FROM tbl'
    +            
    1088    def delete(
    +1089        self,
    +1090        table: ExpOrStr,
    +1091        dialect: DialectType = None,
    +1092        copy: bool = True,
    +1093        **opts,
    +1094    ) -> Delete:
    +1095        """
    +1096        Create a DELETE expression or replace the table on an existing DELETE expression.
     1097
    -1098        Args:
    -1099            table: the table from which to delete.
    -1100            dialect: the dialect used to parse the input expression.
    -1101            copy: if `False`, modify this expression instance in-place.
    -1102            opts: other options to use to parse the input expressions.
    -1103
    -1104        Returns:
    -1105            Delete: the modified expression.
    -1106        """
    -1107        return _apply_builder(
    -1108            expression=table,
    -1109            instance=self,
    -1110            arg="this",
    -1111            dialect=dialect,
    -1112            into=Table,
    -1113            copy=copy,
    -1114            **opts,
    -1115        )
    +1098        Example:
    +1099            >>> delete("tbl").sql()
    +1100            'DELETE FROM tbl'
    +1101
    +1102        Args:
    +1103            table: the table from which to delete.
    +1104            dialect: the dialect used to parse the input expression.
    +1105            copy: if `False`, modify this expression instance in-place.
    +1106            opts: other options to use to parse the input expressions.
    +1107
    +1108        Returns:
    +1109            Delete: the modified expression.
    +1110        """
    +1111        return _apply_builder(
    +1112            expression=table,
    +1113            instance=self,
    +1114            arg="this",
    +1115            dialect=dialect,
    +1116            into=Table,
    +1117            copy=copy,
    +1118            **opts,
    +1119        )
     
    @@ -14062,44 +14283,44 @@ If an Expression instance is passed, it w
    -
    1117    def where(
    -1118        self,
    -1119        *expressions: ExpOrStr,
    -1120        append: bool = True,
    -1121        dialect: DialectType = None,
    -1122        copy: bool = True,
    -1123        **opts,
    -1124    ) -> Delete:
    -1125        """
    -1126        Append to or set the WHERE expressions.
    -1127
    -1128        Example:
    -1129            >>> delete("tbl").where("x = 'a' OR x < 'b'").sql()
    -1130            "DELETE FROM tbl WHERE x = 'a' OR x < 'b'"
    +            
    1121    def where(
    +1122        self,
    +1123        *expressions: ExpOrStr,
    +1124        append: bool = True,
    +1125        dialect: DialectType = None,
    +1126        copy: bool = True,
    +1127        **opts,
    +1128    ) -> Delete:
    +1129        """
    +1130        Append to or set the WHERE expressions.
     1131
    -1132        Args:
    -1133            *expressions: the SQL code strings to parse.
    -1134                If an `Expression` instance is passed, it will be used as-is.
    -1135                Multiple expressions are combined with an AND operator.
    -1136            append: if `True`, AND the new expressions to any existing expression.
    -1137                Otherwise, this resets the expression.
    -1138            dialect: the dialect used to parse the input expressions.
    -1139            copy: if `False`, modify this expression instance in-place.
    -1140            opts: other options to use to parse the input expressions.
    -1141
    -1142        Returns:
    -1143            Delete: the modified expression.
    -1144        """
    -1145        return _apply_conjunction_builder(
    -1146            *expressions,
    -1147            instance=self,
    -1148            arg="where",
    -1149            append=append,
    -1150            into=Where,
    -1151            dialect=dialect,
    -1152            copy=copy,
    -1153            **opts,
    -1154        )
    +1132        Example:
    +1133            >>> delete("tbl").where("x = 'a' OR x < 'b'").sql()
    +1134            "DELETE FROM tbl WHERE x = 'a' OR x < 'b'"
    +1135
    +1136        Args:
    +1137            *expressions: the SQL code strings to parse.
    +1138                If an `Expression` instance is passed, it will be used as-is.
    +1139                Multiple expressions are combined with an AND operator.
    +1140            append: if `True`, AND the new expressions to any existing expression.
    +1141                Otherwise, this resets the expression.
    +1142            dialect: the dialect used to parse the input expressions.
    +1143            copy: if `False`, modify this expression instance in-place.
    +1144            opts: other options to use to parse the input expressions.
    +1145
    +1146        Returns:
    +1147            Delete: the modified expression.
    +1148        """
    +1149        return _apply_conjunction_builder(
    +1150            *expressions,
    +1151            instance=self,
    +1152            arg="where",
    +1153            append=append,
    +1154            into=Where,
    +1155            dialect=dialect,
    +1156            copy=copy,
    +1157            **opts,
    +1158        )
     
    @@ -14148,40 +14369,40 @@ Otherwise, this resets the expression.
    -
    1156    def returning(
    -1157        self,
    -1158        expression: ExpOrStr,
    -1159        dialect: DialectType = None,
    -1160        copy: bool = True,
    -1161        **opts,
    -1162    ) -> Delete:
    -1163        """
    -1164        Set the RETURNING expression. Not supported by all dialects.
    -1165
    -1166        Example:
    -1167            >>> delete("tbl").returning("*", dialect="postgres").sql()
    -1168            'DELETE FROM tbl RETURNING *'
    +            
    1160    def returning(
    +1161        self,
    +1162        expression: ExpOrStr,
    +1163        dialect: DialectType = None,
    +1164        copy: bool = True,
    +1165        **opts,
    +1166    ) -> Delete:
    +1167        """
    +1168        Set the RETURNING expression. Not supported by all dialects.
     1169
    -1170        Args:
    -1171            expression: the SQL code strings to parse.
    -1172                If an `Expression` instance is passed, it will be used as-is.
    -1173            dialect: the dialect used to parse the input expressions.
    -1174            copy: if `False`, modify this expression instance in-place.
    -1175            opts: other options to use to parse the input expressions.
    -1176
    -1177        Returns:
    -1178            Delete: the modified expression.
    -1179        """
    -1180        return _apply_builder(
    -1181            expression=expression,
    -1182            instance=self,
    -1183            arg="returning",
    -1184            prefix="RETURNING",
    -1185            dialect=dialect,
    -1186            copy=copy,
    -1187            into=Returning,
    -1188            **opts,
    -1189        )
    +1170        Example:
    +1171            >>> delete("tbl").returning("*", dialect="postgres").sql()
    +1172            'DELETE FROM tbl RETURNING *'
    +1173
    +1174        Args:
    +1175            expression: the SQL code strings to parse.
    +1176                If an `Expression` instance is passed, it will be used as-is.
    +1177            dialect: the dialect used to parse the input expressions.
    +1178            copy: if `False`, modify this expression instance in-place.
    +1179            opts: other options to use to parse the input expressions.
    +1180
    +1181        Returns:
    +1182            Delete: the modified expression.
    +1183        """
    +1184        return _apply_builder(
    +1185            expression=expression,
    +1186            instance=self,
    +1187            arg="returning",
    +1188            prefix="RETURNING",
    +1189            dialect=dialect,
    +1190            copy=copy,
    +1191            into=Returning,
    +1192            **opts,
    +1193        )
     
    @@ -14273,16 +14494,17 @@ If an Expression instance is passed, it w
    -
    1192class Drop(Expression):
    -1193    arg_types = {
    -1194        "this": False,
    -1195        "kind": False,
    -1196        "exists": False,
    -1197        "temporary": False,
    -1198        "materialized": False,
    -1199        "cascade": False,
    -1200        "constraints": False,
    -1201    }
    +            
    1196class Drop(Expression):
    +1197    arg_types = {
    +1198        "this": False,
    +1199        "kind": False,
    +1200        "exists": False,
    +1201        "temporary": False,
    +1202        "materialized": False,
    +1203        "cascade": False,
    +1204        "constraints": False,
    +1205        "purge": False,
    +1206    }
     
    @@ -14345,8 +14567,8 @@ If an Expression instance is passed, it w
    -
    1204class Filter(Expression):
    -1205    arg_types = {"this": True, "expression": True}
    +            
    1209class Filter(Expression):
    +1210    arg_types = {"this": True, "expression": True}
     
    @@ -14409,8 +14631,8 @@ If an Expression instance is passed, it w
    -
    1208class Check(Expression):
    -1209    pass
    +            
    1213class Check(Expression):
    +1214    pass
     
    @@ -14473,9 +14695,9 @@ If an Expression instance is passed, it w
    -
    1212class Directory(Expression):
    -1213    # https://spark.apache.org/docs/3.0.0-preview/sql-ref-syntax-dml-insert-overwrite-directory-hive.html
    -1214    arg_types = {"this": True, "local": False, "row_format": False}
    +            
    1217class Directory(Expression):
    +1218    # https://spark.apache.org/docs/3.0.0-preview/sql-ref-syntax-dml-insert-overwrite-directory-hive.html
    +1219    arg_types = {"this": True, "local": False, "row_format": False}
     
    @@ -14538,13 +14760,13 @@ If an Expression instance is passed, it w
    -
    1217class ForeignKey(Expression):
    -1218    arg_types = {
    -1219        "expressions": True,
    -1220        "reference": False,
    -1221        "delete": False,
    -1222        "update": False,
    -1223    }
    +            
    1222class ForeignKey(Expression):
    +1223    arg_types = {
    +1224        "expressions": True,
    +1225        "reference": False,
    +1226        "delete": False,
    +1227        "update": False,
    +1228    }
     
    @@ -14607,8 +14829,8 @@ If an Expression instance is passed, it w
    -
    1226class PrimaryKey(Expression):
    -1227    arg_types = {"expressions": True, "options": False}
    +            
    1231class PrimaryKey(Expression):
    +1232    arg_types = {"expressions": True, "options": False}
     
    @@ -14671,8 +14893,8 @@ If an Expression instance is passed, it w
    -
    1230class Unique(Expression):
    -1231    arg_types = {"expressions": True}
    +            
    1235class Unique(Expression):
    +1236    arg_types = {"expressions": True}
     
    @@ -14735,8 +14957,8 @@ If an Expression instance is passed, it w
    -
    1236class Into(Expression):
    -1237    arg_types = {"this": True, "temporary": False, "unlogged": False}
    +            
    1241class Into(Expression):
    +1242    arg_types = {"this": True, "temporary": False, "unlogged": False}
     
    @@ -14799,8 +15021,8 @@ If an Expression instance is passed, it w
    -
    1240class From(Expression):
    -1241    arg_types = {"expressions": True}
    +            
    1245class From(Expression):
    +1246    arg_types = {"expressions": True}
     
    @@ -14863,8 +15085,8 @@ If an Expression instance is passed, it w
    -
    1244class Having(Expression):
    -1245    pass
    +            
    1249class Having(Expression):
    +1250    pass
     
    @@ -14927,8 +15149,8 @@ If an Expression instance is passed, it w
    -
    1248class Hint(Expression):
    -1249    arg_types = {"expressions": True}
    +            
    1253class Hint(Expression):
    +1254    arg_types = {"expressions": True}
     
    @@ -14991,8 +15213,8 @@ If an Expression instance is passed, it w
    -
    1252class JoinHint(Expression):
    -1253    arg_types = {"this": True, "expressions": True}
    +            
    1257class JoinHint(Expression):
    +1258    arg_types = {"this": True, "expressions": True}
     
    @@ -15055,22 +15277,22 @@ If an Expression instance is passed, it w
    -
    1256class Identifier(Expression):
    -1257    arg_types = {"this": True, "quoted": False}
    -1258
    -1259    @property
    -1260    def quoted(self):
    -1261        return bool(self.args.get("quoted"))
    -1262
    -1263    @property
    -1264    def hashable_args(self) -> t.Any:
    -1265        if self.quoted and any(char.isupper() for char in self.this):
    -1266            return (self.this, self.quoted)
    -1267        return self.this.lower()
    -1268
    -1269    @property
    -1270    def output_name(self):
    -1271        return self.name
    +            
    1261class Identifier(Expression):
    +1262    arg_types = {"this": True, "quoted": False}
    +1263
    +1264    @property
    +1265    def quoted(self):
    +1266        return bool(self.args.get("quoted"))
    +1267
    +1268    @property
    +1269    def hashable_args(self) -> t.Any:
    +1270        if self.quoted and any(char.isupper() for char in self.this):
    +1271            return (self.this, self.quoted)
    +1272        return self.this.lower()
    +1273
    +1274    @property
    +1275    def output_name(self):
    +1276        return self.name
     
    @@ -15162,16 +15384,16 @@ If an Expression instance is passed, it w
    -
    1274class Index(Expression):
    -1275    arg_types = {
    -1276        "this": False,
    -1277        "table": False,
    -1278        "where": False,
    -1279        "columns": False,
    -1280        "unique": False,
    -1281        "primary": False,
    -1282        "amp": False,  # teradata
    -1283    }
    +            
    1279class Index(Expression):
    +1280    arg_types = {
    +1281        "this": False,
    +1282        "table": False,
    +1283        "where": False,
    +1284        "columns": False,
    +1285        "unique": False,
    +1286        "primary": False,
    +1287        "amp": False,  # teradata
    +1288    }
     
    @@ -15234,17 +15456,18 @@ If an Expression instance is passed, it w
    -
    1286class Insert(Expression):
    -1287    arg_types = {
    -1288        "with": False,
    -1289        "this": True,
    -1290        "expression": False,
    -1291        "returning": False,
    -1292        "overwrite": False,
    -1293        "exists": False,
    -1294        "partition": False,
    -1295        "alternative": False,
    -1296    }
    +            
    1291class Insert(Expression):
    +1292    arg_types = {
    +1293        "with": False,
    +1294        "this": True,
    +1295        "expression": False,
    +1296        "conflict": False,
    +1297        "returning": False,
    +1298        "overwrite": False,
    +1299        "exists": False,
    +1300        "partition": False,
    +1301        "alternative": False,
    +1302    }
     
    @@ -15292,6 +15515,76 @@ If an Expression instance is passed, it w
    dump
    load
    +
    + + +
    +
    + +
    + + class + OnConflict(Expression): + + + +
    + +
    1305class OnConflict(Expression):
    +1306    arg_types = {
    +1307        "duplicate": False,
    +1308        "expressions": False,
    +1309        "nothing": False,
    +1310        "key": False,
    +1311        "constraint": False,
    +1312    }
    +
    + + + + + @@ -15307,8 +15600,8 @@ If an Expression instance is passed, it w -
    1299class Returning(Expression):
    -1300    arg_types = {"expressions": True}
    +            
    1315class Returning(Expression):
    +1316    arg_types = {"expressions": True}
     
    @@ -15371,8 +15664,8 @@ If an Expression instance is passed, it w
    -
    1304class Introducer(Expression):
    -1305    arg_types = {"this": True, "expression": True}
    +            
    1320class Introducer(Expression):
    +1321    arg_types = {"this": True, "expression": True}
     
    @@ -15435,8 +15728,8 @@ If an Expression instance is passed, it w
    -
    1309class National(Expression):
    -1310    pass
    +            
    1325class National(Expression):
    +1326    pass
     
    @@ -15499,16 +15792,16 @@ If an Expression instance is passed, it w
    -
    1313class LoadData(Expression):
    -1314    arg_types = {
    -1315        "this": True,
    -1316        "local": False,
    -1317        "overwrite": False,
    -1318        "inpath": True,
    -1319        "partition": False,
    -1320        "input_format": False,
    -1321        "serde": False,
    -1322    }
    +            
    1329class LoadData(Expression):
    +1330    arg_types = {
    +1331        "this": True,
    +1332        "local": False,
    +1333        "overwrite": False,
    +1334        "inpath": True,
    +1335        "partition": False,
    +1336        "input_format": False,
    +1337        "serde": False,
    +1338    }
     
    @@ -15571,8 +15864,8 @@ If an Expression instance is passed, it w
    -
    1325class Partition(Expression):
    -1326    arg_types = {"expressions": True}
    +            
    1341class Partition(Expression):
    +1342    arg_types = {"expressions": True}
     
    @@ -15635,8 +15928,13 @@ If an Expression instance is passed, it w
    -
    1329class Fetch(Expression):
    -1330    arg_types = {"direction": False, "count": False}
    +            
    1345class Fetch(Expression):
    +1346    arg_types = {
    +1347        "direction": False,
    +1348        "count": False,
    +1349        "percent": False,
    +1350        "with_ties": False,
    +1351    }
     
    @@ -15699,13 +15997,13 @@ If an Expression instance is passed, it w
    -
    1333class Group(Expression):
    -1334    arg_types = {
    -1335        "expressions": False,
    -1336        "grouping_sets": False,
    -1337        "cube": False,
    -1338        "rollup": False,
    -1339    }
    +            
    1354class Group(Expression):
    +1355    arg_types = {
    +1356        "expressions": False,
    +1357        "grouping_sets": False,
    +1358        "cube": False,
    +1359        "rollup": False,
    +1360    }
     
    @@ -15768,8 +16066,8 @@ If an Expression instance is passed, it w
    -
    1342class Lambda(Expression):
    -1343    arg_types = {"this": True, "expressions": True}
    +            
    1363class Lambda(Expression):
    +1364    arg_types = {"this": True, "expressions": True}
     
    @@ -15832,8 +16130,8 @@ If an Expression instance is passed, it w
    -
    1346class Limit(Expression):
    -1347    arg_types = {"this": False, "expression": True}
    +            
    1367class Limit(Expression):
    +1368    arg_types = {"this": False, "expression": True}
     
    @@ -15896,24 +16194,24 @@ If an Expression instance is passed, it w
    -
    1350class Literal(Condition):
    -1351    arg_types = {"this": True, "is_string": True}
    -1352
    -1353    @property
    -1354    def hashable_args(self) -> t.Any:
    -1355        return (self.this, self.args.get("is_string"))
    -1356
    -1357    @classmethod
    -1358    def number(cls, number) -> Literal:
    -1359        return cls(this=str(number), is_string=False)
    -1360
    -1361    @classmethod
    -1362    def string(cls, string) -> Literal:
    -1363        return cls(this=str(string), is_string=True)
    -1364
    -1365    @property
    -1366    def output_name(self):
    -1367        return self.name
    +            
    1371class Literal(Condition):
    +1372    arg_types = {"this": True, "is_string": True}
    +1373
    +1374    @property
    +1375    def hashable_args(self) -> t.Any:
    +1376        return (self.this, self.args.get("is_string"))
    +1377
    +1378    @classmethod
    +1379    def number(cls, number) -> Literal:
    +1380        return cls(this=str(number), is_string=False)
    +1381
    +1382    @classmethod
    +1383    def string(cls, string) -> Literal:
    +1384        return cls(this=str(string), is_string=True)
    +1385
    +1386    @property
    +1387    def output_name(self):
    +1388        return self.name
     
    @@ -15931,9 +16229,9 @@ If an Expression instance is passed, it w
    -
    1357    @classmethod
    -1358    def number(cls, number) -> Literal:
    -1359        return cls(this=str(number), is_string=False)
    +            
    1378    @classmethod
    +1379    def number(cls, number) -> Literal:
    +1380        return cls(this=str(number), is_string=False)
     
    @@ -15952,9 +16250,9 @@ If an Expression instance is passed, it w
    -
    1361    @classmethod
    -1362    def string(cls, string) -> Literal:
    -1363        return cls(this=str(string), is_string=True)
    +            
    1382    @classmethod
    +1383    def string(cls, string) -> Literal:
    +1384        return cls(this=str(string), is_string=True)
     
    @@ -16053,100 +16351,105 @@ If an Expression instance is passed, it w
    -
    1370class Join(Expression):
    -1371    arg_types = {
    -1372        "this": True,
    -1373        "on": False,
    -1374        "side": False,
    -1375        "kind": False,
    -1376        "using": False,
    -1377        "natural": False,
    -1378    }
    -1379
    -1380    @property
    -1381    def kind(self):
    -1382        return self.text("kind").upper()
    -1383
    -1384    @property
    -1385    def side(self):
    -1386        return self.text("side").upper()
    -1387
    -1388    @property
    -1389    def alias_or_name(self):
    -1390        return self.this.alias_or_name
    -1391
    -1392    def on(self, *expressions, append=True, dialect=None, copy=True, **opts):
    -1393        """
    -1394        Append to or set the ON expressions.
    -1395
    -1396        Example:
    -1397            >>> import sqlglot
    -1398            >>> sqlglot.parse_one("JOIN x", into=Join).on("y = 1").sql()
    -1399            'JOIN x ON y = 1'
    -1400
    -1401        Args:
    -1402            *expressions (str | Expression): the SQL code strings to parse.
    -1403                If an `Expression` instance is passed, it will be used as-is.
    -1404                Multiple expressions are combined with an AND operator.
    -1405            append (bool): if `True`, AND the new expressions to any existing expression.
    -1406                Otherwise, this resets the expression.
    -1407            dialect (str): the dialect used to parse the input expressions.
    -1408            copy (bool): if `False`, modify this expression instance in-place.
    -1409            opts (kwargs): other options to use to parse the input expressions.
    -1410
    -1411        Returns:
    -1412            Join: the modified join expression.
    -1413        """
    -1414        join = _apply_conjunction_builder(
    -1415            *expressions,
    -1416            instance=self,
    -1417            arg="on",
    -1418            append=append,
    -1419            dialect=dialect,
    -1420            copy=copy,
    -1421            **opts,
    -1422        )
    -1423
    -1424        if join.kind == "CROSS":
    -1425            join.set("kind", None)
    +            
    1391class Join(Expression):
    +1392    arg_types = {
    +1393        "this": True,
    +1394        "on": False,
    +1395        "side": False,
    +1396        "kind": False,
    +1397        "using": False,
    +1398        "natural": False,
    +1399        "hint": False,
    +1400    }
    +1401
    +1402    @property
    +1403    def kind(self):
    +1404        return self.text("kind").upper()
    +1405
    +1406    @property
    +1407    def side(self):
    +1408        return self.text("side").upper()
    +1409
    +1410    @property
    +1411    def hint(self):
    +1412        return self.text("hint").upper()
    +1413
    +1414    @property
    +1415    def alias_or_name(self):
    +1416        return self.this.alias_or_name
    +1417
    +1418    def on(self, *expressions, append=True, dialect=None, copy=True, **opts):
    +1419        """
    +1420        Append to or set the ON expressions.
    +1421
    +1422        Example:
    +1423            >>> import sqlglot
    +1424            >>> sqlglot.parse_one("JOIN x", into=Join).on("y = 1").sql()
    +1425            'JOIN x ON y = 1'
     1426
    -1427        return join
    -1428
    -1429    def using(self, *expressions, append=True, dialect=None, copy=True, **opts):
    -1430        """
    -1431        Append to or set the USING expressions.
    -1432
    -1433        Example:
    -1434            >>> import sqlglot
    -1435            >>> sqlglot.parse_one("JOIN x", into=Join).using("foo", "bla").sql()
    -1436            'JOIN x USING (foo, bla)'
    -1437
    -1438        Args:
    -1439            *expressions (str | Expression): the SQL code strings to parse.
    -1440                If an `Expression` instance is passed, it will be used as-is.
    -1441            append (bool): if `True`, concatenate the new expressions to the existing "using" list.
    -1442                Otherwise, this resets the expression.
    -1443            dialect (str): the dialect used to parse the input expressions.
    -1444            copy (bool): if `False`, modify this expression instance in-place.
    -1445            opts (kwargs): other options to use to parse the input expressions.
    -1446
    -1447        Returns:
    -1448            Join: the modified join expression.
    -1449        """
    -1450        join = _apply_list_builder(
    -1451            *expressions,
    -1452            instance=self,
    -1453            arg="using",
    -1454            append=append,
    -1455            dialect=dialect,
    -1456            copy=copy,
    -1457            **opts,
    -1458        )
    -1459
    -1460        if join.kind == "CROSS":
    -1461            join.set("kind", None)
    -1462
    -1463        return join
    +1427        Args:
    +1428            *expressions (str | Expression): the SQL code strings to parse.
    +1429                If an `Expression` instance is passed, it will be used as-is.
    +1430                Multiple expressions are combined with an AND operator.
    +1431            append (bool): if `True`, AND the new expressions to any existing expression.
    +1432                Otherwise, this resets the expression.
    +1433            dialect (str): the dialect used to parse the input expressions.
    +1434            copy (bool): if `False`, modify this expression instance in-place.
    +1435            opts (kwargs): other options to use to parse the input expressions.
    +1436
    +1437        Returns:
    +1438            Join: the modified join expression.
    +1439        """
    +1440        join = _apply_conjunction_builder(
    +1441            *expressions,
    +1442            instance=self,
    +1443            arg="on",
    +1444            append=append,
    +1445            dialect=dialect,
    +1446            copy=copy,
    +1447            **opts,
    +1448        )
    +1449
    +1450        if join.kind == "CROSS":
    +1451            join.set("kind", None)
    +1452
    +1453        return join
    +1454
    +1455    def using(self, *expressions, append=True, dialect=None, copy=True, **opts):
    +1456        """
    +1457        Append to or set the USING expressions.
    +1458
    +1459        Example:
    +1460            >>> import sqlglot
    +1461            >>> sqlglot.parse_one("JOIN x", into=Join).using("foo", "bla").sql()
    +1462            'JOIN x USING (foo, bla)'
    +1463
    +1464        Args:
    +1465            *expressions (str | Expression): the SQL code strings to parse.
    +1466                If an `Expression` instance is passed, it will be used as-is.
    +1467            append (bool): if `True`, concatenate the new expressions to the existing "using" list.
    +1468                Otherwise, this resets the expression.
    +1469            dialect (str): the dialect used to parse the input expressions.
    +1470            copy (bool): if `False`, modify this expression instance in-place.
    +1471            opts (kwargs): other options to use to parse the input expressions.
    +1472
    +1473        Returns:
    +1474            Join: the modified join expression.
    +1475        """
    +1476        join = _apply_list_builder(
    +1477            *expressions,
    +1478            instance=self,
    +1479            arg="using",
    +1480            append=append,
    +1481            dialect=dialect,
    +1482            copy=copy,
    +1483            **opts,
    +1484        )
    +1485
    +1486        if join.kind == "CROSS":
    +1487            join.set("kind", None)
    +1488
    +1489        return join
     
    @@ -16163,42 +16466,42 @@ If an Expression instance is passed, it w
    -
    1392    def on(self, *expressions, append=True, dialect=None, copy=True, **opts):
    -1393        """
    -1394        Append to or set the ON expressions.
    -1395
    -1396        Example:
    -1397            >>> import sqlglot
    -1398            >>> sqlglot.parse_one("JOIN x", into=Join).on("y = 1").sql()
    -1399            'JOIN x ON y = 1'
    -1400
    -1401        Args:
    -1402            *expressions (str | Expression): the SQL code strings to parse.
    -1403                If an `Expression` instance is passed, it will be used as-is.
    -1404                Multiple expressions are combined with an AND operator.
    -1405            append (bool): if `True`, AND the new expressions to any existing expression.
    -1406                Otherwise, this resets the expression.
    -1407            dialect (str): the dialect used to parse the input expressions.
    -1408            copy (bool): if `False`, modify this expression instance in-place.
    -1409            opts (kwargs): other options to use to parse the input expressions.
    -1410
    -1411        Returns:
    -1412            Join: the modified join expression.
    -1413        """
    -1414        join = _apply_conjunction_builder(
    -1415            *expressions,
    -1416            instance=self,
    -1417            arg="on",
    -1418            append=append,
    -1419            dialect=dialect,
    -1420            copy=copy,
    -1421            **opts,
    -1422        )
    -1423
    -1424        if join.kind == "CROSS":
    -1425            join.set("kind", None)
    +            
    1418    def on(self, *expressions, append=True, dialect=None, copy=True, **opts):
    +1419        """
    +1420        Append to or set the ON expressions.
    +1421
    +1422        Example:
    +1423            >>> import sqlglot
    +1424            >>> sqlglot.parse_one("JOIN x", into=Join).on("y = 1").sql()
    +1425            'JOIN x ON y = 1'
     1426
    -1427        return join
    +1427        Args:
    +1428            *expressions (str | Expression): the SQL code strings to parse.
    +1429                If an `Expression` instance is passed, it will be used as-is.
    +1430                Multiple expressions are combined with an AND operator.
    +1431            append (bool): if `True`, AND the new expressions to any existing expression.
    +1432                Otherwise, this resets the expression.
    +1433            dialect (str): the dialect used to parse the input expressions.
    +1434            copy (bool): if `False`, modify this expression instance in-place.
    +1435            opts (kwargs): other options to use to parse the input expressions.
    +1436
    +1437        Returns:
    +1438            Join: the modified join expression.
    +1439        """
    +1440        join = _apply_conjunction_builder(
    +1441            *expressions,
    +1442            instance=self,
    +1443            arg="on",
    +1444            append=append,
    +1445            dialect=dialect,
    +1446            copy=copy,
    +1447            **opts,
    +1448        )
    +1449
    +1450        if join.kind == "CROSS":
    +1451            join.set("kind", None)
    +1452
    +1453        return join
     
    @@ -16248,41 +16551,41 @@ Otherwise, this resets the expression.
    -
    1429    def using(self, *expressions, append=True, dialect=None, copy=True, **opts):
    -1430        """
    -1431        Append to or set the USING expressions.
    -1432
    -1433        Example:
    -1434            >>> import sqlglot
    -1435            >>> sqlglot.parse_one("JOIN x", into=Join).using("foo", "bla").sql()
    -1436            'JOIN x USING (foo, bla)'
    -1437
    -1438        Args:
    -1439            *expressions (str | Expression): the SQL code strings to parse.
    -1440                If an `Expression` instance is passed, it will be used as-is.
    -1441            append (bool): if `True`, concatenate the new expressions to the existing "using" list.
    -1442                Otherwise, this resets the expression.
    -1443            dialect (str): the dialect used to parse the input expressions.
    -1444            copy (bool): if `False`, modify this expression instance in-place.
    -1445            opts (kwargs): other options to use to parse the input expressions.
    -1446
    -1447        Returns:
    -1448            Join: the modified join expression.
    -1449        """
    -1450        join = _apply_list_builder(
    -1451            *expressions,
    -1452            instance=self,
    -1453            arg="using",
    -1454            append=append,
    -1455            dialect=dialect,
    -1456            copy=copy,
    -1457            **opts,
    -1458        )
    -1459
    -1460        if join.kind == "CROSS":
    -1461            join.set("kind", None)
    -1462
    -1463        return join
    +            
    1455    def using(self, *expressions, append=True, dialect=None, copy=True, **opts):
    +1456        """
    +1457        Append to or set the USING expressions.
    +1458
    +1459        Example:
    +1460            >>> import sqlglot
    +1461            >>> sqlglot.parse_one("JOIN x", into=Join).using("foo", "bla").sql()
    +1462            'JOIN x USING (foo, bla)'
    +1463
    +1464        Args:
    +1465            *expressions (str | Expression): the SQL code strings to parse.
    +1466                If an `Expression` instance is passed, it will be used as-is.
    +1467            append (bool): if `True`, concatenate the new expressions to the existing "using" list.
    +1468                Otherwise, this resets the expression.
    +1469            dialect (str): the dialect used to parse the input expressions.
    +1470            copy (bool): if `False`, modify this expression instance in-place.
    +1471            opts (kwargs): other options to use to parse the input expressions.
    +1472
    +1473        Returns:
    +1474            Join: the modified join expression.
    +1475        """
    +1476        join = _apply_list_builder(
    +1477            *expressions,
    +1478            instance=self,
    +1479            arg="using",
    +1480            append=append,
    +1481            dialect=dialect,
    +1482            copy=copy,
    +1483            **opts,
    +1484        )
    +1485
    +1486        if join.kind == "CROSS":
    +1487            join.set("kind", None)
    +1488
    +1489        return join
     
    @@ -16377,8 +16680,8 @@ Otherwise, this resets the expression.
    -
    1466class Lateral(UDTF):
    -1467    arg_types = {"this": True, "view": False, "outer": False, "alias": False}
    +            
    1492class Lateral(UDTF):
    +1493    arg_types = {"this": True, "view": False, "outer": False, "alias": False}
     
    @@ -16447,16 +16750,17 @@ Otherwise, this resets the expression.
    -
    1470class MatchRecognize(Expression):
    -1471    arg_types = {
    -1472        "partition_by": False,
    -1473        "order": False,
    -1474        "measures": False,
    -1475        "rows": False,
    -1476        "after": False,
    -1477        "pattern": False,
    -1478        "define": False,
    -1479    }
    +            
    1496class MatchRecognize(Expression):
    +1497    arg_types = {
    +1498        "partition_by": False,
    +1499        "order": False,
    +1500        "measures": False,
    +1501        "rows": False,
    +1502        "after": False,
    +1503        "pattern": False,
    +1504        "define": False,
    +1505        "alias": False,
    +1506    }
     
    @@ -16519,8 +16823,8 @@ Otherwise, this resets the expression.
    -
    1484class Final(Expression):
    -1485    pass
    +            
    1511class Final(Expression):
    +1512    pass
     
    @@ -16583,8 +16887,8 @@ Otherwise, this resets the expression.
    -
    1488class Offset(Expression):
    -1489    arg_types = {"this": False, "expression": True}
    +            
    1515class Offset(Expression):
    +1516    arg_types = {"this": False, "expression": True}
     
    @@ -16647,8 +16951,8 @@ Otherwise, this resets the expression.
    -
    1492class Order(Expression):
    -1493    arg_types = {"this": False, "expressions": True}
    +            
    1519class Order(Expression):
    +1520    arg_types = {"this": False, "expressions": True}
     
    @@ -16711,8 +17015,8 @@ Otherwise, this resets the expression.
    -
    1498class Cluster(Order):
    -1499    pass
    +            
    1525class Cluster(Order):
    +1526    pass
     
    @@ -16775,8 +17079,8 @@ Otherwise, this resets the expression.
    -
    1502class Distribute(Order):
    -1503    pass
    +            
    1529class Distribute(Order):
    +1530    pass
     
    @@ -16839,8 +17143,8 @@ Otherwise, this resets the expression.
    -
    1506class Sort(Order):
    -1507    pass
    +            
    1533class Sort(Order):
    +1534    pass
     
    @@ -16903,8 +17207,8 @@ Otherwise, this resets the expression.
    -
    1510class Ordered(Expression):
    -1511    arg_types = {"this": True, "desc": True, "nulls_first": True}
    +            
    1537class Ordered(Expression):
    +1538    arg_types = {"this": True, "desc": True, "nulls_first": True}
     
    @@ -16967,8 +17271,8 @@ Otherwise, this resets the expression.
    -
    1514class Property(Expression):
    -1515    arg_types = {"this": True, "value": True}
    +            
    1541class Property(Expression):
    +1542    arg_types = {"this": True, "value": True}
     
    @@ -17031,8 +17335,8 @@ Otherwise, this resets the expression.
    -
    1518class AfterJournalProperty(Property):
    -1519    arg_types = {"no": True, "dual": False, "local": False}
    +            
    1545class AfterJournalProperty(Property):
    +1546    arg_types = {"no": True, "dual": False, "local": False}
     
    @@ -17095,8 +17399,8 @@ Otherwise, this resets the expression.
    -
    1522class AlgorithmProperty(Property):
    -1523    arg_types = {"this": True}
    +            
    1549class AlgorithmProperty(Property):
    +1550    arg_types = {"this": True}
     
    @@ -17159,8 +17463,8 @@ Otherwise, this resets the expression.
    -
    1526class AutoIncrementProperty(Property):
    -1527    arg_types = {"this": True}
    +            
    1553class AutoIncrementProperty(Property):
    +1554    arg_types = {"this": True}
     
    @@ -17223,8 +17527,8 @@ Otherwise, this resets the expression.
    -
    1530class BlockCompressionProperty(Property):
    -1531    arg_types = {"autotemp": False, "always": False, "default": True, "manual": True, "never": True}
    +            
    1557class BlockCompressionProperty(Property):
    +1558    arg_types = {"autotemp": False, "always": False, "default": True, "manual": True, "never": True}
     
    @@ -17287,8 +17591,8 @@ Otherwise, this resets the expression.
    -
    1534class CharacterSetProperty(Property):
    -1535    arg_types = {"this": True, "default": True}
    +            
    1561class CharacterSetProperty(Property):
    +1562    arg_types = {"this": True, "default": True}
     
    @@ -17351,8 +17655,8 @@ Otherwise, this resets the expression.
    -
    1538class ChecksumProperty(Property):
    -1539    arg_types = {"on": False, "default": False}
    +            
    1565class ChecksumProperty(Property):
    +1566    arg_types = {"on": False, "default": False}
     
    @@ -17415,8 +17719,8 @@ Otherwise, this resets the expression.
    -
    1542class CollateProperty(Property):
    -1543    arg_types = {"this": True}
    +            
    1569class CollateProperty(Property):
    +1570    arg_types = {"this": True}
     
    @@ -17479,8 +17783,8 @@ Otherwise, this resets the expression.
    -
    1546class DataBlocksizeProperty(Property):
    -1547    arg_types = {"size": False, "units": False, "min": False, "default": False}
    +            
    1573class DataBlocksizeProperty(Property):
    +1574    arg_types = {"size": False, "units": False, "min": False, "default": False}
     
    @@ -17543,8 +17847,8 @@ Otherwise, this resets the expression.
    -
    1550class DefinerProperty(Property):
    -1551    arg_types = {"this": True}
    +            
    1577class DefinerProperty(Property):
    +1578    arg_types = {"this": True}
     
    @@ -17607,8 +17911,8 @@ Otherwise, this resets the expression.
    -
    1554class DistKeyProperty(Property):
    -1555    arg_types = {"this": True}
    +            
    1581class DistKeyProperty(Property):
    +1582    arg_types = {"this": True}
     
    @@ -17671,8 +17975,8 @@ Otherwise, this resets the expression.
    -
    1558class DistStyleProperty(Property):
    -1559    arg_types = {"this": True}
    +            
    1585class DistStyleProperty(Property):
    +1586    arg_types = {"this": True}
     
    @@ -17735,8 +18039,8 @@ Otherwise, this resets the expression.
    -
    1562class EngineProperty(Property):
    -1563    arg_types = {"this": True}
    +            
    1589class EngineProperty(Property):
    +1590    arg_types = {"this": True}
     
    @@ -17799,8 +18103,8 @@ Otherwise, this resets the expression.
    -
    1566class ExecuteAsProperty(Property):
    -1567    arg_types = {"this": True}
    +            
    1593class ExecuteAsProperty(Property):
    +1594    arg_types = {"this": True}
     
    @@ -17863,8 +18167,8 @@ Otherwise, this resets the expression.
    -
    1570class ExternalProperty(Property):
    -1571    arg_types = {"this": False}
    +            
    1597class ExternalProperty(Property):
    +1598    arg_types = {"this": False}
     
    @@ -17927,8 +18231,8 @@ Otherwise, this resets the expression.
    -
    1574class FallbackProperty(Property):
    -1575    arg_types = {"no": True, "protection": False}
    +            
    1601class FallbackProperty(Property):
    +1602    arg_types = {"no": True, "protection": False}
     
    @@ -17991,8 +18295,8 @@ Otherwise, this resets the expression.
    -
    1578class FileFormatProperty(Property):
    -1579    arg_types = {"this": True}
    +            
    1605class FileFormatProperty(Property):
    +1606    arg_types = {"this": True}
     
    @@ -18055,8 +18359,8 @@ Otherwise, this resets the expression.
    -
    1582class FreespaceProperty(Property):
    -1583    arg_types = {"this": True, "percent": False}
    +            
    1609class FreespaceProperty(Property):
    +1610    arg_types = {"this": True, "percent": False}
     
    @@ -18104,6 +18408,70 @@ Otherwise, this resets the expression.
    dump
    load
    +
    + + +
    +
    + +
    + + class + InputOutputFormat(Expression): + + + +
    + +
    1613class InputOutputFormat(Expression):
    +1614    arg_types = {"input_format": False, "output_format": False}
    +
    + + + + + @@ -18119,14 +18487,14 @@ Otherwise, this resets the expression. -
    1586class IsolatedLoadingProperty(Property):
    -1587    arg_types = {
    -1588        "no": True,
    -1589        "concurrent": True,
    -1590        "for_all": True,
    -1591        "for_insert": True,
    -1592        "for_none": True,
    -1593    }
    +            
    1617class IsolatedLoadingProperty(Property):
    +1618    arg_types = {
    +1619        "no": True,
    +1620        "concurrent": True,
    +1621        "for_all": True,
    +1622        "for_insert": True,
    +1623        "for_none": True,
    +1624    }
     
    @@ -18189,8 +18557,8 @@ Otherwise, this resets the expression.
    -
    1596class JournalProperty(Property):
    -1597    arg_types = {"no": True, "dual": False, "before": False}
    +            
    1627class JournalProperty(Property):
    +1628    arg_types = {"no": True, "dual": False, "before": False}
     
    @@ -18253,8 +18621,8 @@ Otherwise, this resets the expression.
    -
    1600class LanguageProperty(Property):
    -1601    arg_types = {"this": True}
    +            
    1631class LanguageProperty(Property):
    +1632    arg_types = {"this": True}
     
    @@ -18317,8 +18685,8 @@ Otherwise, this resets the expression.
    -
    1604class LikeProperty(Property):
    -1605    arg_types = {"this": True, "expressions": False}
    +            
    1635class LikeProperty(Property):
    +1636    arg_types = {"this": True, "expressions": False}
     
    @@ -18381,8 +18749,8 @@ Otherwise, this resets the expression.
    -
    1608class LocationProperty(Property):
    -1609    arg_types = {"this": True}
    +            
    1639class LocationProperty(Property):
    +1640    arg_types = {"this": True}
     
    @@ -18445,14 +18813,14 @@ Otherwise, this resets the expression.
    -
    1612class LockingProperty(Property):
    -1613    arg_types = {
    -1614        "this": False,
    -1615        "kind": True,
    -1616        "for_or_in": True,
    -1617        "lock_type": True,
    -1618        "override": False,
    -1619    }
    +            
    1643class LockingProperty(Property):
    +1644    arg_types = {
    +1645        "this": False,
    +1646        "kind": True,
    +1647        "for_or_in": True,
    +1648        "lock_type": True,
    +1649        "override": False,
    +1650    }
     
    @@ -18515,8 +18883,8 @@ Otherwise, this resets the expression.
    -
    1622class LogProperty(Property):
    -1623    arg_types = {"no": True}
    +            
    1653class LogProperty(Property):
    +1654    arg_types = {"no": True}
     
    @@ -18579,8 +18947,8 @@ Otherwise, this resets the expression.
    -
    1626class MaterializedProperty(Property):
    -1627    arg_types = {"this": False}
    +            
    1657class MaterializedProperty(Property):
    +1658    arg_types = {"this": False}
     
    @@ -18643,8 +19011,8 @@ Otherwise, this resets the expression.
    -
    1630class MergeBlockRatioProperty(Property):
    -1631    arg_types = {"this": False, "no": False, "default": False, "percent": False}
    +            
    1661class MergeBlockRatioProperty(Property):
    +1662    arg_types = {"this": False, "no": False, "default": False, "percent": False}
     
    @@ -18707,8 +19075,8 @@ Otherwise, this resets the expression.
    -
    1634class NoPrimaryIndexProperty(Property):
    -1635    arg_types = {"this": False}
    +            
    1665class NoPrimaryIndexProperty(Property):
    +1666    arg_types = {"this": False}
     
    @@ -18771,8 +19139,8 @@ Otherwise, this resets the expression.
    -
    1638class OnCommitProperty(Property):
    -1639    arg_type = {"this": False}
    +            
    1669class OnCommitProperty(Property):
    +1670    arg_type = {"this": False}
     
    @@ -18835,8 +19203,8 @@ Otherwise, this resets the expression.
    -
    1642class PartitionedByProperty(Property):
    -1643    arg_types = {"this": True}
    +            
    1673class PartitionedByProperty(Property):
    +1674    arg_types = {"this": True}
     
    @@ -18899,8 +19267,8 @@ Otherwise, this resets the expression.
    -
    1646class ReturnsProperty(Property):
    -1647    arg_types = {"this": True, "is_table": False, "table": False}
    +            
    1677class ReturnsProperty(Property):
    +1678    arg_types = {"this": True, "is_table": False, "table": False}
     
    @@ -18948,6 +19316,70 @@ Otherwise, this resets the expression.
    dump
    load
    +
    + + +
    +
    + +
    + + class + RowFormatProperty(Property): + + + +
    + +
    1681class RowFormatProperty(Property):
    +1682    arg_types = {"this": True}
    +
    + + + + + @@ -18963,17 +19395,17 @@ Otherwise, this resets the expression. -
    1650class RowFormatDelimitedProperty(Property):
    -1651    # https://cwiki.apache.org/confluence/display/hive/languagemanual+dml
    -1652    arg_types = {
    -1653        "fields": False,
    -1654        "escaped": False,
    -1655        "collection_items": False,
    -1656        "map_keys": False,
    -1657        "lines": False,
    -1658        "null": False,
    -1659        "serde": False,
    -1660    }
    +            
    1685class RowFormatDelimitedProperty(Property):
    +1686    # https://cwiki.apache.org/confluence/display/hive/languagemanual+dml
    +1687    arg_types = {
    +1688        "fields": False,
    +1689        "escaped": False,
    +1690        "collection_items": False,
    +1691        "map_keys": False,
    +1692        "lines": False,
    +1693        "null": False,
    +1694        "serde": False,
    +1695    }
     
    @@ -19036,8 +19468,8 @@ Otherwise, this resets the expression.
    -
    1663class RowFormatSerdeProperty(Property):
    -1664    arg_types = {"this": True}
    +            
    1698class RowFormatSerdeProperty(Property):
    +1699    arg_types = {"this": True}
     
    @@ -19100,8 +19532,8 @@ Otherwise, this resets the expression.
    -
    1667class SchemaCommentProperty(Property):
    -1668    arg_types = {"this": True}
    +            
    1702class SchemaCommentProperty(Property):
    +1703    arg_types = {"this": True}
     
    @@ -19164,8 +19596,8 @@ Otherwise, this resets the expression.
    -
    1671class SerdeProperties(Property):
    -1672    arg_types = {"expressions": True}
    +            
    1706class SerdeProperties(Property):
    +1707    arg_types = {"expressions": True}
     
    @@ -19228,8 +19660,8 @@ Otherwise, this resets the expression.
    -
    1675class SetProperty(Property):
    -1676    arg_types = {"multi": True}
    +            
    1710class SetProperty(Property):
    +1711    arg_types = {"multi": True}
     
    @@ -19292,8 +19724,8 @@ Otherwise, this resets the expression.
    -
    1679class SortKeyProperty(Property):
    -1680    arg_types = {"this": True, "compound": False}
    +            
    1714class SortKeyProperty(Property):
    +1715    arg_types = {"this": True, "compound": False}
     
    @@ -19356,8 +19788,8 @@ Otherwise, this resets the expression.
    -
    1683class SqlSecurityProperty(Property):
    -1684    arg_types = {"definer": True}
    +            
    1718class SqlSecurityProperty(Property):
    +1719    arg_types = {"definer": True}
     
    @@ -19405,6 +19837,70 @@ Otherwise, this resets the expression.
    dump
    load
    +
    + + +
    +
    + +
    + + class + StabilityProperty(Property): + + + +
    + +
    1722class StabilityProperty(Property):
    +1723    arg_types = {"this": True}
    +
    + + + + + @@ -19420,8 +19916,8 @@ Otherwise, this resets the expression. -
    1687class TableFormatProperty(Property):
    -1688    arg_types = {"this": True}
    +            
    1726class TableFormatProperty(Property):
    +1727    arg_types = {"this": True}
     
    @@ -19484,8 +19980,8 @@ Otherwise, this resets the expression.
    -
    1691class TemporaryProperty(Property):
    -1692    arg_types = {"global_": True}
    +            
    1730class TemporaryProperty(Property):
    +1731    arg_types = {"global_": True}
     
    @@ -19548,8 +20044,8 @@ Otherwise, this resets the expression.
    -
    1695class TransientProperty(Property):
    -1696    arg_types = {"this": False}
    +            
    1734class TransientProperty(Property):
    +1735    arg_types = {"this": False}
     
    @@ -19601,19 +20097,19 @@ Otherwise, this resets the expression.
    -
    - +
    +
    class - VolatilityProperty(Property): + VolatileProperty(Property): - +
    - -
    1699class VolatilityProperty(Property):
    -1700    arg_types = {"this": True}
    +    
    +            
    1738class VolatileProperty(Property):
    +1739    arg_types = {"this": False}
     
    @@ -19623,43 +20119,43 @@ Otherwise, this resets the expression.
    Inherited Members
    @@ -19676,8 +20172,8 @@ Otherwise, this resets the expression.
    -
    1703class WithDataProperty(Property):
    -1704    arg_types = {"no": True, "statistics": False}
    +            
    1742class WithDataProperty(Property):
    +1743    arg_types = {"no": True, "statistics": False}
     
    @@ -19740,8 +20236,8 @@ Otherwise, this resets the expression.
    -
    1707class WithJournalTableProperty(Property):
    -1708    arg_types = {"this": True}
    +            
    1746class WithJournalTableProperty(Property):
    +1747    arg_types = {"this": True}
     
    @@ -19804,65 +20300,66 @@ Otherwise, this resets the expression.
    -
    1711class Properties(Expression):
    -1712    arg_types = {"expressions": True}
    -1713
    -1714    NAME_TO_PROPERTY = {
    -1715        "ALGORITHM": AlgorithmProperty,
    -1716        "AUTO_INCREMENT": AutoIncrementProperty,
    -1717        "CHARACTER SET": CharacterSetProperty,
    -1718        "COLLATE": CollateProperty,
    -1719        "COMMENT": SchemaCommentProperty,
    -1720        "DEFINER": DefinerProperty,
    -1721        "DISTKEY": DistKeyProperty,
    -1722        "DISTSTYLE": DistStyleProperty,
    -1723        "ENGINE": EngineProperty,
    -1724        "EXECUTE AS": ExecuteAsProperty,
    -1725        "FORMAT": FileFormatProperty,
    -1726        "LANGUAGE": LanguageProperty,
    -1727        "LOCATION": LocationProperty,
    -1728        "PARTITIONED_BY": PartitionedByProperty,
    -1729        "RETURNS": ReturnsProperty,
    -1730        "SORTKEY": SortKeyProperty,
    -1731        "TABLE_FORMAT": TableFormatProperty,
    -1732    }
    -1733
    -1734    PROPERTY_TO_NAME = {v: k for k, v in NAME_TO_PROPERTY.items()}
    -1735
    -1736    # CREATE property locations
    -1737    # Form: schema specified
    -1738    #   create [POST_CREATE]
    -1739    #     table a [POST_NAME]
    -1740    #     (b int) [POST_SCHEMA]
    -1741    #     with ([POST_WITH])
    -1742    #     index (b) [POST_INDEX]
    -1743    #
    -1744    # Form: alias selection
    -1745    #   create [POST_CREATE]
    -1746    #     table a [POST_NAME]
    -1747    #     as [POST_ALIAS] (select * from b) [POST_EXPRESSION]
    -1748    #     index (c) [POST_INDEX]
    -1749    class Location(AutoName):
    -1750        POST_CREATE = auto()
    -1751        POST_NAME = auto()
    -1752        POST_SCHEMA = auto()
    -1753        POST_WITH = auto()
    -1754        POST_ALIAS = auto()
    -1755        POST_EXPRESSION = auto()
    -1756        POST_INDEX = auto()
    -1757        UNSUPPORTED = auto()
    -1758
    -1759    @classmethod
    -1760    def from_dict(cls, properties_dict) -> Properties:
    -1761        expressions = []
    -1762        for key, value in properties_dict.items():
    -1763            property_cls = cls.NAME_TO_PROPERTY.get(key.upper())
    -1764            if property_cls:
    -1765                expressions.append(property_cls(this=convert(value)))
    -1766            else:
    -1767                expressions.append(Property(this=Literal.string(key), value=convert(value)))
    -1768
    -1769        return cls(expressions=expressions)
    +            
    1750class Properties(Expression):
    +1751    arg_types = {"expressions": True}
    +1752
    +1753    NAME_TO_PROPERTY = {
    +1754        "ALGORITHM": AlgorithmProperty,
    +1755        "AUTO_INCREMENT": AutoIncrementProperty,
    +1756        "CHARACTER SET": CharacterSetProperty,
    +1757        "COLLATE": CollateProperty,
    +1758        "COMMENT": SchemaCommentProperty,
    +1759        "DEFINER": DefinerProperty,
    +1760        "DISTKEY": DistKeyProperty,
    +1761        "DISTSTYLE": DistStyleProperty,
    +1762        "ENGINE": EngineProperty,
    +1763        "EXECUTE AS": ExecuteAsProperty,
    +1764        "FORMAT": FileFormatProperty,
    +1765        "LANGUAGE": LanguageProperty,
    +1766        "LOCATION": LocationProperty,
    +1767        "PARTITIONED_BY": PartitionedByProperty,
    +1768        "RETURNS": ReturnsProperty,
    +1769        "ROW_FORMAT": RowFormatProperty,
    +1770        "SORTKEY": SortKeyProperty,
    +1771        "TABLE_FORMAT": TableFormatProperty,
    +1772    }
    +1773
    +1774    PROPERTY_TO_NAME = {v: k for k, v in NAME_TO_PROPERTY.items()}
    +1775
    +1776    # CREATE property locations
    +1777    # Form: schema specified
    +1778    #   create [POST_CREATE]
    +1779    #     table a [POST_NAME]
    +1780    #     (b int) [POST_SCHEMA]
    +1781    #     with ([POST_WITH])
    +1782    #     index (b) [POST_INDEX]
    +1783    #
    +1784    # Form: alias selection
    +1785    #   create [POST_CREATE]
    +1786    #     table a [POST_NAME]
    +1787    #     as [POST_ALIAS] (select * from b) [POST_EXPRESSION]
    +1788    #     index (c) [POST_INDEX]
    +1789    class Location(AutoName):
    +1790        POST_CREATE = auto()
    +1791        POST_NAME = auto()
    +1792        POST_SCHEMA = auto()
    +1793        POST_WITH = auto()
    +1794        POST_ALIAS = auto()
    +1795        POST_EXPRESSION = auto()
    +1796        POST_INDEX = auto()
    +1797        UNSUPPORTED = auto()
    +1798
    +1799    @classmethod
    +1800    def from_dict(cls, properties_dict) -> Properties:
    +1801        expressions = []
    +1802        for key, value in properties_dict.items():
    +1803            property_cls = cls.NAME_TO_PROPERTY.get(key.upper())
    +1804            if property_cls:
    +1805                expressions.append(property_cls(this=convert(value)))
    +1806            else:
    +1807                expressions.append(Property(this=Literal.string(key), value=convert(value)))
    +1808
    +1809        return cls(expressions=expressions)
     
    @@ -19880,17 +20377,17 @@ Otherwise, this resets the expression.
    -
    1759    @classmethod
    -1760    def from_dict(cls, properties_dict) -> Properties:
    -1761        expressions = []
    -1762        for key, value in properties_dict.items():
    -1763            property_cls = cls.NAME_TO_PROPERTY.get(key.upper())
    -1764            if property_cls:
    -1765                expressions.append(property_cls(this=convert(value)))
    -1766            else:
    -1767                expressions.append(Property(this=Literal.string(key), value=convert(value)))
    -1768
    -1769        return cls(expressions=expressions)
    +            
    1799    @classmethod
    +1800    def from_dict(cls, properties_dict) -> Properties:
    +1801        expressions = []
    +1802        for key, value in properties_dict.items():
    +1803            property_cls = cls.NAME_TO_PROPERTY.get(key.upper())
    +1804            if property_cls:
    +1805                expressions.append(property_cls(this=convert(value)))
    +1806            else:
    +1807                expressions.append(Property(this=Literal.string(key), value=convert(value)))
    +1808
    +1809        return cls(expressions=expressions)
     
    @@ -19954,15 +20451,15 @@ Otherwise, this resets the expression.
    -
    1749    class Location(AutoName):
    -1750        POST_CREATE = auto()
    -1751        POST_NAME = auto()
    -1752        POST_SCHEMA = auto()
    -1753        POST_WITH = auto()
    -1754        POST_ALIAS = auto()
    -1755        POST_EXPRESSION = auto()
    -1756        POST_INDEX = auto()
    -1757        UNSUPPORTED = auto()
    +            
    1789    class Location(AutoName):
    +1790        POST_CREATE = auto()
    +1791        POST_NAME = auto()
    +1792        POST_SCHEMA = auto()
    +1793        POST_WITH = auto()
    +1794        POST_ALIAS = auto()
    +1795        POST_EXPRESSION = auto()
    +1796        POST_INDEX = auto()
    +1797        UNSUPPORTED = auto()
     
    @@ -20088,8 +20585,8 @@ Otherwise, this resets the expression.
    -
    1772class Qualify(Expression):
    -1773    pass
    +            
    1812class Qualify(Expression):
    +1813    pass
     
    @@ -20152,8 +20649,8 @@ Otherwise, this resets the expression.
    -
    1777class Return(Expression):
    -1778    pass
    +            
    1817class Return(Expression):
    +1818    pass
     
    @@ -20216,8 +20713,8 @@ Otherwise, this resets the expression.
    -
    1781class Reference(Expression):
    -1782    arg_types = {"this": True, "expressions": False, "options": False}
    +            
    1821class Reference(Expression):
    +1822    arg_types = {"this": True, "expressions": False, "options": False}
     
    @@ -20280,8 +20777,8 @@ Otherwise, this resets the expression.
    -
    1785class Tuple(Expression):
    -1786    arg_types = {"expressions": False}
    +            
    1825class Tuple(Expression):
    +1826    arg_types = {"expressions": False}
     
    @@ -20344,103 +20841,103 @@ Otherwise, this resets the expression.
    -
    1789class Subqueryable(Unionable):
    -1790    def subquery(self, alias=None, copy=True) -> Subquery:
    -1791        """
    -1792        Convert this expression to an aliased expression that can be used as a Subquery.
    -1793
    -1794        Example:
    -1795            >>> subquery = Select().select("x").from_("tbl").subquery()
    -1796            >>> Select().select("x").from_(subquery).sql()
    -1797            'SELECT x FROM (SELECT x FROM tbl)'
    -1798
    -1799        Args:
    -1800            alias (str | Identifier): an optional alias for the subquery
    -1801            copy (bool): if `False`, modify this expression instance in-place.
    -1802
    -1803        Returns:
    -1804            Alias: the subquery
    -1805        """
    -1806        instance = _maybe_copy(self, copy)
    -1807        return Subquery(
    -1808            this=instance,
    -1809            alias=TableAlias(this=to_identifier(alias)) if alias else None,
    -1810        )
    -1811
    -1812    def limit(self, expression, dialect=None, copy=True, **opts) -> Select:
    -1813        raise NotImplementedError
    -1814
    -1815    @property
    -1816    def ctes(self):
    -1817        with_ = self.args.get("with")
    -1818        if not with_:
    -1819            return []
    -1820        return with_.expressions
    -1821
    -1822    @property
    -1823    def selects(self):
    -1824        raise NotImplementedError("Subqueryable objects must implement `selects`")
    -1825
    -1826    @property
    -1827    def named_selects(self):
    -1828        raise NotImplementedError("Subqueryable objects must implement `named_selects`")
    -1829
    -1830    def with_(
    -1831        self,
    -1832        alias,
    -1833        as_,
    -1834        recursive=None,
    -1835        append=True,
    -1836        dialect=None,
    -1837        copy=True,
    -1838        **opts,
    -1839    ):
    -1840        """
    -1841        Append to or set the common table expressions.
    +            
    1829class Subqueryable(Unionable):
    +1830    def subquery(self, alias=None, copy=True) -> Subquery:
    +1831        """
    +1832        Convert this expression to an aliased expression that can be used as a Subquery.
    +1833
    +1834        Example:
    +1835            >>> subquery = Select().select("x").from_("tbl").subquery()
    +1836            >>> Select().select("x").from_(subquery).sql()
    +1837            'SELECT x FROM (SELECT x FROM tbl)'
    +1838
    +1839        Args:
    +1840            alias (str | Identifier): an optional alias for the subquery
    +1841            copy (bool): if `False`, modify this expression instance in-place.
     1842
    -1843        Example:
    -1844            >>> Select().with_("tbl2", as_="SELECT * FROM tbl").select("x").from_("tbl2").sql()
    -1845            'WITH tbl2 AS (SELECT * FROM tbl) SELECT x FROM tbl2'
    -1846
    -1847        Args:
    -1848            alias (str | Expression): the SQL code string to parse as the table name.
    -1849                If an `Expression` instance is passed, this is used as-is.
    -1850            as_ (str | Expression): the SQL code string to parse as the table expression.
    -1851                If an `Expression` instance is passed, it will be used as-is.
    -1852            recursive (bool): set the RECURSIVE part of the expression. Defaults to `False`.
    -1853            append (bool): if `True`, add to any existing expressions.
    -1854                Otherwise, this resets the expressions.
    -1855            dialect (str): the dialect used to parse the input expression.
    -1856            copy (bool): if `False`, modify this expression instance in-place.
    -1857            opts (kwargs): other options to use to parse the input expressions.
    -1858
    -1859        Returns:
    -1860            Select: the modified expression.
    -1861        """
    -1862        alias_expression = maybe_parse(
    -1863            alias,
    -1864            dialect=dialect,
    -1865            into=TableAlias,
    -1866            **opts,
    -1867        )
    -1868        as_expression = maybe_parse(
    -1869            as_,
    -1870            dialect=dialect,
    -1871            **opts,
    -1872        )
    -1873        cte = CTE(
    -1874            this=as_expression,
    -1875            alias=alias_expression,
    -1876        )
    -1877        return _apply_child_list_builder(
    -1878            cte,
    -1879            instance=self,
    -1880            arg="with",
    -1881            append=append,
    -1882            copy=copy,
    -1883            into=With,
    -1884            properties={"recursive": recursive or False},
    -1885        )
    +1843        Returns:
    +1844            Alias: the subquery
    +1845        """
    +1846        instance = _maybe_copy(self, copy)
    +1847        return Subquery(
    +1848            this=instance,
    +1849            alias=TableAlias(this=to_identifier(alias)) if alias else None,
    +1850        )
    +1851
    +1852    def limit(self, expression, dialect=None, copy=True, **opts) -> Select:
    +1853        raise NotImplementedError
    +1854
    +1855    @property
    +1856    def ctes(self):
    +1857        with_ = self.args.get("with")
    +1858        if not with_:
    +1859            return []
    +1860        return with_.expressions
    +1861
    +1862    @property
    +1863    def selects(self):
    +1864        raise NotImplementedError("Subqueryable objects must implement `selects`")
    +1865
    +1866    @property
    +1867    def named_selects(self):
    +1868        raise NotImplementedError("Subqueryable objects must implement `named_selects`")
    +1869
    +1870    def with_(
    +1871        self,
    +1872        alias,
    +1873        as_,
    +1874        recursive=None,
    +1875        append=True,
    +1876        dialect=None,
    +1877        copy=True,
    +1878        **opts,
    +1879    ):
    +1880        """
    +1881        Append to or set the common table expressions.
    +1882
    +1883        Example:
    +1884            >>> Select().with_("tbl2", as_="SELECT * FROM tbl").select("x").from_("tbl2").sql()
    +1885            'WITH tbl2 AS (SELECT * FROM tbl) SELECT x FROM tbl2'
    +1886
    +1887        Args:
    +1888            alias (str | Expression): the SQL code string to parse as the table name.
    +1889                If an `Expression` instance is passed, this is used as-is.
    +1890            as_ (str | Expression): the SQL code string to parse as the table expression.
    +1891                If an `Expression` instance is passed, it will be used as-is.
    +1892            recursive (bool): set the RECURSIVE part of the expression. Defaults to `False`.
    +1893            append (bool): if `True`, add to any existing expressions.
    +1894                Otherwise, this resets the expressions.
    +1895            dialect (str): the dialect used to parse the input expression.
    +1896            copy (bool): if `False`, modify this expression instance in-place.
    +1897            opts (kwargs): other options to use to parse the input expressions.
    +1898
    +1899        Returns:
    +1900            Select: the modified expression.
    +1901        """
    +1902        alias_expression = maybe_parse(
    +1903            alias,
    +1904            dialect=dialect,
    +1905            into=TableAlias,
    +1906            **opts,
    +1907        )
    +1908        as_expression = maybe_parse(
    +1909            as_,
    +1910            dialect=dialect,
    +1911            **opts,
    +1912        )
    +1913        cte = CTE(
    +1914            this=as_expression,
    +1915            alias=alias_expression,
    +1916        )
    +1917        return _apply_child_list_builder(
    +1918            cte,
    +1919            instance=self,
    +1920            arg="with",
    +1921            append=append,
    +1922            copy=copy,
    +1923            into=With,
    +1924            properties={"recursive": recursive or False},
    +1925        )
     
    @@ -20457,27 +20954,27 @@ Otherwise, this resets the expression.
    -
    1790    def subquery(self, alias=None, copy=True) -> Subquery:
    -1791        """
    -1792        Convert this expression to an aliased expression that can be used as a Subquery.
    -1793
    -1794        Example:
    -1795            >>> subquery = Select().select("x").from_("tbl").subquery()
    -1796            >>> Select().select("x").from_(subquery).sql()
    -1797            'SELECT x FROM (SELECT x FROM tbl)'
    -1798
    -1799        Args:
    -1800            alias (str | Identifier): an optional alias for the subquery
    -1801            copy (bool): if `False`, modify this expression instance in-place.
    -1802
    -1803        Returns:
    -1804            Alias: the subquery
    -1805        """
    -1806        instance = _maybe_copy(self, copy)
    -1807        return Subquery(
    -1808            this=instance,
    -1809            alias=TableAlias(this=to_identifier(alias)) if alias else None,
    -1810        )
    +            
    1830    def subquery(self, alias=None, copy=True) -> Subquery:
    +1831        """
    +1832        Convert this expression to an aliased expression that can be used as a Subquery.
    +1833
    +1834        Example:
    +1835            >>> subquery = Select().select("x").from_("tbl").subquery()
    +1836            >>> Select().select("x").from_(subquery).sql()
    +1837            'SELECT x FROM (SELECT x FROM tbl)'
    +1838
    +1839        Args:
    +1840            alias (str | Identifier): an optional alias for the subquery
    +1841            copy (bool): if `False`, modify this expression instance in-place.
    +1842
    +1843        Returns:
    +1844            Alias: the subquery
    +1845        """
    +1846        instance = _maybe_copy(self, copy)
    +1847        return Subquery(
    +1848            this=instance,
    +1849            alias=TableAlias(this=to_identifier(alias)) if alias else None,
    +1850        )
     
    @@ -20521,8 +21018,8 @@ Otherwise, this resets the expression.
    -
    1812    def limit(self, expression, dialect=None, copy=True, **opts) -> Select:
    -1813        raise NotImplementedError
    +            
    1852    def limit(self, expression, dialect=None, copy=True, **opts) -> Select:
    +1853        raise NotImplementedError
     
    @@ -20540,62 +21037,62 @@ Otherwise, this resets the expression.
    -
    1830    def with_(
    -1831        self,
    -1832        alias,
    -1833        as_,
    -1834        recursive=None,
    -1835        append=True,
    -1836        dialect=None,
    -1837        copy=True,
    -1838        **opts,
    -1839    ):
    -1840        """
    -1841        Append to or set the common table expressions.
    -1842
    -1843        Example:
    -1844            >>> Select().with_("tbl2", as_="SELECT * FROM tbl").select("x").from_("tbl2").sql()
    -1845            'WITH tbl2 AS (SELECT * FROM tbl) SELECT x FROM tbl2'
    -1846
    -1847        Args:
    -1848            alias (str | Expression): the SQL code string to parse as the table name.
    -1849                If an `Expression` instance is passed, this is used as-is.
    -1850            as_ (str | Expression): the SQL code string to parse as the table expression.
    -1851                If an `Expression` instance is passed, it will be used as-is.
    -1852            recursive (bool): set the RECURSIVE part of the expression. Defaults to `False`.
    -1853            append (bool): if `True`, add to any existing expressions.
    -1854                Otherwise, this resets the expressions.
    -1855            dialect (str): the dialect used to parse the input expression.
    -1856            copy (bool): if `False`, modify this expression instance in-place.
    -1857            opts (kwargs): other options to use to parse the input expressions.
    -1858
    -1859        Returns:
    -1860            Select: the modified expression.
    -1861        """
    -1862        alias_expression = maybe_parse(
    -1863            alias,
    -1864            dialect=dialect,
    -1865            into=TableAlias,
    -1866            **opts,
    -1867        )
    -1868        as_expression = maybe_parse(
    -1869            as_,
    -1870            dialect=dialect,
    -1871            **opts,
    -1872        )
    -1873        cte = CTE(
    -1874            this=as_expression,
    -1875            alias=alias_expression,
    -1876        )
    -1877        return _apply_child_list_builder(
    -1878            cte,
    -1879            instance=self,
    -1880            arg="with",
    -1881            append=append,
    -1882            copy=copy,
    -1883            into=With,
    -1884            properties={"recursive": recursive or False},
    -1885        )
    +            
    1870    def with_(
    +1871        self,
    +1872        alias,
    +1873        as_,
    +1874        recursive=None,
    +1875        append=True,
    +1876        dialect=None,
    +1877        copy=True,
    +1878        **opts,
    +1879    ):
    +1880        """
    +1881        Append to or set the common table expressions.
    +1882
    +1883        Example:
    +1884            >>> Select().with_("tbl2", as_="SELECT * FROM tbl").select("x").from_("tbl2").sql()
    +1885            'WITH tbl2 AS (SELECT * FROM tbl) SELECT x FROM tbl2'
    +1886
    +1887        Args:
    +1888            alias (str | Expression): the SQL code string to parse as the table name.
    +1889                If an `Expression` instance is passed, this is used as-is.
    +1890            as_ (str | Expression): the SQL code string to parse as the table expression.
    +1891                If an `Expression` instance is passed, it will be used as-is.
    +1892            recursive (bool): set the RECURSIVE part of the expression. Defaults to `False`.
    +1893            append (bool): if `True`, add to any existing expressions.
    +1894                Otherwise, this resets the expressions.
    +1895            dialect (str): the dialect used to parse the input expression.
    +1896            copy (bool): if `False`, modify this expression instance in-place.
    +1897            opts (kwargs): other options to use to parse the input expressions.
    +1898
    +1899        Returns:
    +1900            Select: the modified expression.
    +1901        """
    +1902        alias_expression = maybe_parse(
    +1903            alias,
    +1904            dialect=dialect,
    +1905            into=TableAlias,
    +1906            **opts,
    +1907        )
    +1908        as_expression = maybe_parse(
    +1909            as_,
    +1910            dialect=dialect,
    +1911            **opts,
    +1912        )
    +1913        cte = CTE(
    +1914            this=as_expression,
    +1915            alias=alias_expression,
    +1916        )
    +1917        return _apply_child_list_builder(
    +1918            cte,
    +1919            instance=self,
    +1920            arg="with",
    +1921            append=append,
    +1922            copy=copy,
    +1923            into=With,
    +1924            properties={"recursive": recursive or False},
    +1925        )
     
    @@ -20698,26 +21195,26 @@ Otherwise, this resets the expressions.
    -
    1909class Table(Expression):
    -1910    arg_types = {
    -1911        "this": True,
    -1912        "alias": False,
    -1913        "db": False,
    -1914        "catalog": False,
    -1915        "laterals": False,
    -1916        "joins": False,
    -1917        "pivots": False,
    -1918        "hints": False,
    -1919        "system_time": False,
    -1920    }
    -1921
    -1922    @property
    -1923    def db(self) -> str:
    -1924        return self.text("db")
    -1925
    -1926    @property
    -1927    def catalog(self) -> str:
    -1928        return self.text("catalog")
    +            
    1949class Table(Expression):
    +1950    arg_types = {
    +1951        "this": True,
    +1952        "alias": False,
    +1953        "db": False,
    +1954        "catalog": False,
    +1955        "laterals": False,
    +1956        "joins": False,
    +1957        "pivots": False,
    +1958        "hints": False,
    +1959        "system_time": False,
    +1960    }
    +1961
    +1962    @property
    +1963    def db(self) -> str:
    +1964        return self.text("db")
    +1965
    +1966    @property
    +1967    def catalog(self) -> str:
    +1968        return self.text("catalog")
     
    @@ -20780,12 +21277,12 @@ Otherwise, this resets the expressions.
    -
    1932class SystemTime(Expression):
    -1933    arg_types = {
    -1934        "this": False,
    -1935        "expression": False,
    -1936        "kind": True,
    -1937    }
    +            
    1972class SystemTime(Expression):
    +1973    arg_types = {
    +1974        "this": False,
    +1975        "expression": False,
    +1976        "kind": True,
    +1977    }
     
    @@ -20848,94 +21345,94 @@ Otherwise, this resets the expressions.
    -
    1940class Union(Subqueryable):
    -1941    arg_types = {
    -1942        "with": False,
    -1943        "this": True,
    -1944        "expression": True,
    -1945        "distinct": False,
    -1946        **QUERY_MODIFIERS,
    -1947    }
    -1948
    -1949    def limit(self, expression, dialect=None, copy=True, **opts) -> Select:
    -1950        """
    -1951        Set the LIMIT expression.
    -1952
    -1953        Example:
    -1954            >>> select("1").union(select("1")).limit(1).sql()
    -1955            'SELECT * FROM (SELECT 1 UNION SELECT 1) AS _l_0 LIMIT 1'
    -1956
    -1957        Args:
    -1958            expression (str | int | Expression): the SQL code string to parse.
    -1959                This can also be an integer.
    -1960                If a `Limit` instance is passed, this is used as-is.
    -1961                If another `Expression` instance is passed, it will be wrapped in a `Limit`.
    -1962            dialect (str): the dialect used to parse the input expression.
    -1963            copy (bool): if `False`, modify this expression instance in-place.
    -1964            opts (kwargs): other options to use to parse the input expressions.
    -1965
    -1966        Returns:
    -1967            Select: The limited subqueryable.
    -1968        """
    -1969        return (
    -1970            select("*")
    -1971            .from_(self.subquery(alias="_l_0", copy=copy))
    -1972            .limit(expression, dialect=dialect, copy=False, **opts)
    -1973        )
    -1974
    -1975    def select(
    -1976        self,
    -1977        *expressions: ExpOrStr,
    -1978        append: bool = True,
    -1979        dialect: DialectType = None,
    -1980        copy: bool = True,
    -1981        **opts,
    -1982    ) -> Union:
    -1983        """Append to or set the SELECT of the union recursively.
    -1984
    -1985        Example:
    -1986            >>> from sqlglot import parse_one
    -1987            >>> parse_one("select a from x union select a from y union select a from z").select("b").sql()
    -1988            'SELECT a, b FROM x UNION SELECT a, b FROM y UNION SELECT a, b FROM z'
    -1989
    -1990        Args:
    -1991            *expressions: the SQL code strings to parse.
    -1992                If an `Expression` instance is passed, it will be used as-is.
    -1993            append: if `True`, add to any existing expressions.
    -1994                Otherwise, this resets the expressions.
    -1995            dialect: the dialect used to parse the input expressions.
    -1996            copy: if `False`, modify this expression instance in-place.
    -1997            opts: other options to use to parse the input expressions.
    -1998
    -1999        Returns:
    -2000            Union: the modified expression.
    -2001        """
    -2002        this = self.copy() if copy else self
    -2003        this.this.unnest().select(*expressions, append=append, dialect=dialect, copy=False, **opts)
    -2004        this.expression.unnest().select(
    -2005            *expressions, append=append, dialect=dialect, copy=False, **opts
    -2006        )
    -2007        return this
    -2008
    -2009    @property
    -2010    def named_selects(self):
    -2011        return self.this.unnest().named_selects
    -2012
    -2013    @property
    -2014    def is_star(self) -> bool:
    -2015        return self.this.is_star or self.expression.is_star
    -2016
    -2017    @property
    -2018    def selects(self):
    -2019        return self.this.unnest().selects
    -2020
    -2021    @property
    -2022    def left(self):
    -2023        return self.this
    +            
    1980class Union(Subqueryable):
    +1981    arg_types = {
    +1982        "with": False,
    +1983        "this": True,
    +1984        "expression": True,
    +1985        "distinct": False,
    +1986        **QUERY_MODIFIERS,
    +1987    }
    +1988
    +1989    def limit(self, expression, dialect=None, copy=True, **opts) -> Select:
    +1990        """
    +1991        Set the LIMIT expression.
    +1992
    +1993        Example:
    +1994            >>> select("1").union(select("1")).limit(1).sql()
    +1995            'SELECT * FROM (SELECT 1 UNION SELECT 1) AS _l_0 LIMIT 1'
    +1996
    +1997        Args:
    +1998            expression (str | int | Expression): the SQL code string to parse.
    +1999                This can also be an integer.
    +2000                If a `Limit` instance is passed, this is used as-is.
    +2001                If another `Expression` instance is passed, it will be wrapped in a `Limit`.
    +2002            dialect (str): the dialect used to parse the input expression.
    +2003            copy (bool): if `False`, modify this expression instance in-place.
    +2004            opts (kwargs): other options to use to parse the input expressions.
    +2005
    +2006        Returns:
    +2007            Select: The limited subqueryable.
    +2008        """
    +2009        return (
    +2010            select("*")
    +2011            .from_(self.subquery(alias="_l_0", copy=copy))
    +2012            .limit(expression, dialect=dialect, copy=False, **opts)
    +2013        )
    +2014
    +2015    def select(
    +2016        self,
    +2017        *expressions: ExpOrStr,
    +2018        append: bool = True,
    +2019        dialect: DialectType = None,
    +2020        copy: bool = True,
    +2021        **opts,
    +2022    ) -> Union:
    +2023        """Append to or set the SELECT of the union recursively.
     2024
    -2025    @property
    -2026    def right(self):
    -2027        return self.expression
    +2025        Example:
    +2026            >>> from sqlglot import parse_one
    +2027            >>> parse_one("select a from x union select a from y union select a from z").select("b").sql()
    +2028            'SELECT a, b FROM x UNION SELECT a, b FROM y UNION SELECT a, b FROM z'
    +2029
    +2030        Args:
    +2031            *expressions: the SQL code strings to parse.
    +2032                If an `Expression` instance is passed, it will be used as-is.
    +2033            append: if `True`, add to any existing expressions.
    +2034                Otherwise, this resets the expressions.
    +2035            dialect: the dialect used to parse the input expressions.
    +2036            copy: if `False`, modify this expression instance in-place.
    +2037            opts: other options to use to parse the input expressions.
    +2038
    +2039        Returns:
    +2040            Union: the modified expression.
    +2041        """
    +2042        this = self.copy() if copy else self
    +2043        this.this.unnest().select(*expressions, append=append, dialect=dialect, copy=False, **opts)
    +2044        this.expression.unnest().select(
    +2045            *expressions, append=append, dialect=dialect, copy=False, **opts
    +2046        )
    +2047        return this
    +2048
    +2049    @property
    +2050    def named_selects(self):
    +2051        return self.this.unnest().named_selects
    +2052
    +2053    @property
    +2054    def is_star(self) -> bool:
    +2055        return self.this.is_star or self.expression.is_star
    +2056
    +2057    @property
    +2058    def selects(self):
    +2059        return self.this.unnest().selects
    +2060
    +2061    @property
    +2062    def left(self):
    +2063        return self.this
    +2064
    +2065    @property
    +2066    def right(self):
    +2067        return self.expression
     
    @@ -20952,31 +21449,31 @@ Otherwise, this resets the expressions.
    -
    1949    def limit(self, expression, dialect=None, copy=True, **opts) -> Select:
    -1950        """
    -1951        Set the LIMIT expression.
    -1952
    -1953        Example:
    -1954            >>> select("1").union(select("1")).limit(1).sql()
    -1955            'SELECT * FROM (SELECT 1 UNION SELECT 1) AS _l_0 LIMIT 1'
    -1956
    -1957        Args:
    -1958            expression (str | int | Expression): the SQL code string to parse.
    -1959                This can also be an integer.
    -1960                If a `Limit` instance is passed, this is used as-is.
    -1961                If another `Expression` instance is passed, it will be wrapped in a `Limit`.
    -1962            dialect (str): the dialect used to parse the input expression.
    -1963            copy (bool): if `False`, modify this expression instance in-place.
    -1964            opts (kwargs): other options to use to parse the input expressions.
    -1965
    -1966        Returns:
    -1967            Select: The limited subqueryable.
    -1968        """
    -1969        return (
    -1970            select("*")
    -1971            .from_(self.subquery(alias="_l_0", copy=copy))
    -1972            .limit(expression, dialect=dialect, copy=False, **opts)
    -1973        )
    +            
    1989    def limit(self, expression, dialect=None, copy=True, **opts) -> Select:
    +1990        """
    +1991        Set the LIMIT expression.
    +1992
    +1993        Example:
    +1994            >>> select("1").union(select("1")).limit(1).sql()
    +1995            'SELECT * FROM (SELECT 1 UNION SELECT 1) AS _l_0 LIMIT 1'
    +1996
    +1997        Args:
    +1998            expression (str | int | Expression): the SQL code string to parse.
    +1999                This can also be an integer.
    +2000                If a `Limit` instance is passed, this is used as-is.
    +2001                If another `Expression` instance is passed, it will be wrapped in a `Limit`.
    +2002            dialect (str): the dialect used to parse the input expression.
    +2003            copy (bool): if `False`, modify this expression instance in-place.
    +2004            opts (kwargs): other options to use to parse the input expressions.
    +2005
    +2006        Returns:
    +2007            Select: The limited subqueryable.
    +2008        """
    +2009        return (
    +2010            select("*")
    +2011            .from_(self.subquery(alias="_l_0", copy=copy))
    +2012            .limit(expression, dialect=dialect, copy=False, **opts)
    +2013        )
     
    @@ -21024,39 +21521,39 @@ If another Expression instance is passed,
    -
    1975    def select(
    -1976        self,
    -1977        *expressions: ExpOrStr,
    -1978        append: bool = True,
    -1979        dialect: DialectType = None,
    -1980        copy: bool = True,
    -1981        **opts,
    -1982    ) -> Union:
    -1983        """Append to or set the SELECT of the union recursively.
    -1984
    -1985        Example:
    -1986            >>> from sqlglot import parse_one
    -1987            >>> parse_one("select a from x union select a from y union select a from z").select("b").sql()
    -1988            'SELECT a, b FROM x UNION SELECT a, b FROM y UNION SELECT a, b FROM z'
    -1989
    -1990        Args:
    -1991            *expressions: the SQL code strings to parse.
    -1992                If an `Expression` instance is passed, it will be used as-is.
    -1993            append: if `True`, add to any existing expressions.
    -1994                Otherwise, this resets the expressions.
    -1995            dialect: the dialect used to parse the input expressions.
    -1996            copy: if `False`, modify this expression instance in-place.
    -1997            opts: other options to use to parse the input expressions.
    -1998
    -1999        Returns:
    -2000            Union: the modified expression.
    -2001        """
    -2002        this = self.copy() if copy else self
    -2003        this.this.unnest().select(*expressions, append=append, dialect=dialect, copy=False, **opts)
    -2004        this.expression.unnest().select(
    -2005            *expressions, append=append, dialect=dialect, copy=False, **opts
    -2006        )
    -2007        return this
    +            
    2015    def select(
    +2016        self,
    +2017        *expressions: ExpOrStr,
    +2018        append: bool = True,
    +2019        dialect: DialectType = None,
    +2020        copy: bool = True,
    +2021        **opts,
    +2022    ) -> Union:
    +2023        """Append to or set the SELECT of the union recursively.
    +2024
    +2025        Example:
    +2026            >>> from sqlglot import parse_one
    +2027            >>> parse_one("select a from x union select a from y union select a from z").select("b").sql()
    +2028            'SELECT a, b FROM x UNION SELECT a, b FROM y UNION SELECT a, b FROM z'
    +2029
    +2030        Args:
    +2031            *expressions: the SQL code strings to parse.
    +2032                If an `Expression` instance is passed, it will be used as-is.
    +2033            append: if `True`, add to any existing expressions.
    +2034                Otherwise, this resets the expressions.
    +2035            dialect: the dialect used to parse the input expressions.
    +2036            copy: if `False`, modify this expression instance in-place.
    +2037            opts: other options to use to parse the input expressions.
    +2038
    +2039        Returns:
    +2040            Union: the modified expression.
    +2041        """
    +2042        this = self.copy() if copy else self
    +2043        this.this.unnest().select(*expressions, append=append, dialect=dialect, copy=False, **opts)
    +2044        this.expression.unnest().select(
    +2045            *expressions, append=append, dialect=dialect, copy=False, **opts
    +2046        )
    +2047        return this
     
    @@ -21174,8 +21671,8 @@ Otherwise, this resets the expressions.
    -
    2030class Except(Union):
    -2031    pass
    +            
    2070class Except(Union):
    +2071    pass
     
    @@ -21254,8 +21751,8 @@ Otherwise, this resets the expressions.
    -
    2034class Intersect(Union):
    -2035    pass
    +            
    2074class Intersect(Union):
    +2075    pass
     
    @@ -21334,13 +21831,13 @@ Otherwise, this resets the expressions.
    -
    2038class Unnest(UDTF):
    -2039    arg_types = {
    -2040        "expressions": True,
    -2041        "ordinality": False,
    -2042        "alias": False,
    -2043        "offset": False,
    -2044    }
    +            
    2078class Unnest(UDTF):
    +2079    arg_types = {
    +2080        "expressions": True,
    +2081        "ordinality": False,
    +2082        "alias": False,
    +2083        "offset": False,
    +2084    }
     
    @@ -21409,15 +21906,15 @@ Otherwise, this resets the expressions.
    -
    2047class Update(Expression):
    -2048    arg_types = {
    -2049        "with": False,
    -2050        "this": False,
    -2051        "expressions": True,
    -2052        "from": False,
    -2053        "where": False,
    -2054        "returning": False,
    -2055    }
    +            
    2087class Update(Expression):
    +2088    arg_types = {
    +2089        "with": False,
    +2090        "this": False,
    +2091        "expressions": True,
    +2092        "from": False,
    +2093        "where": False,
    +2094        "returning": False,
    +2095    }
     
    @@ -21480,12 +21977,12 @@ Otherwise, this resets the expressions.
    -
    2058class Values(UDTF):
    -2059    arg_types = {
    -2060        "expressions": True,
    -2061        "ordinality": False,
    -2062        "alias": False,
    -2063    }
    +            
    2098class Values(UDTF):
    +2099    arg_types = {
    +2100        "expressions": True,
    +2101        "ordinality": False,
    +2102        "alias": False,
    +2103    }
     
    @@ -21554,8 +22051,8 @@ Otherwise, this resets the expressions.
    -
    2066class Var(Expression):
    -2067    pass
    +            
    2106class Var(Expression):
    +2107    pass
     
    @@ -21618,8 +22115,8 @@ Otherwise, this resets the expressions.
    -
    2070class Schema(Expression):
    -2071    arg_types = {"this": False, "expressions": False}
    +            
    2110class Schema(Expression):
    +2111    arg_types = {"this": False, "expressions": False}
     
    @@ -21682,8 +22179,8 @@ Otherwise, this resets the expressions.
    -
    2076class Lock(Expression):
    -2077    arg_types = {"update": True}
    +            
    2116class Lock(Expression):
    +2117    arg_types = {"update": True}
     
    @@ -21746,591 +22243,591 @@ Otherwise, this resets the expressions.
    -
    2080class Select(Subqueryable):
    -2081    arg_types = {
    -2082        "with": False,
    -2083        "kind": False,
    -2084        "expressions": False,
    -2085        "hint": False,
    -2086        "distinct": False,
    -2087        "into": False,
    -2088        "from": False,
    -2089        **QUERY_MODIFIERS,
    -2090    }
    -2091
    -2092    def from_(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select:
    -2093        """
    -2094        Set the FROM expression.
    -2095
    -2096        Example:
    -2097            >>> Select().from_("tbl").select("x").sql()
    -2098            'SELECT x FROM tbl'
    -2099
    -2100        Args:
    -2101            *expressions (str | Expression): the SQL code strings to parse.
    -2102                If a `From` instance is passed, this is used as-is.
    -2103                If another `Expression` instance is passed, it will be wrapped in a `From`.
    -2104            append (bool): if `True`, add to any existing expressions.
    -2105                Otherwise, this flattens all the `From` expression into a single expression.
    -2106            dialect (str): the dialect used to parse the input expression.
    -2107            copy (bool): if `False`, modify this expression instance in-place.
    -2108            opts (kwargs): other options to use to parse the input expressions.
    -2109
    -2110        Returns:
    -2111            Select: the modified expression.
    -2112        """
    -2113        return _apply_child_list_builder(
    -2114            *expressions,
    -2115            instance=self,
    -2116            arg="from",
    -2117            append=append,
    -2118            copy=copy,
    -2119            prefix="FROM",
    -2120            into=From,
    -2121            dialect=dialect,
    -2122            **opts,
    -2123        )
    -2124
    -2125    def group_by(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select:
    -2126        """
    -2127        Set the GROUP BY expression.
    -2128
    -2129        Example:
    -2130            >>> Select().from_("tbl").select("x", "COUNT(1)").group_by("x").sql()
    -2131            'SELECT x, COUNT(1) FROM tbl GROUP BY x'
    -2132
    -2133        Args:
    -2134            *expressions (str | Expression): the SQL code strings to parse.
    -2135                If a `Group` instance is passed, this is used as-is.
    -2136                If another `Expression` instance is passed, it will be wrapped in a `Group`.
    -2137                If nothing is passed in then a group by is not applied to the expression
    -2138            append (bool): if `True`, add to any existing expressions.
    -2139                Otherwise, this flattens all the `Group` expression into a single expression.
    -2140            dialect (str): the dialect used to parse the input expression.
    -2141            copy (bool): if `False`, modify this expression instance in-place.
    -2142            opts (kwargs): other options to use to parse the input expressions.
    -2143
    -2144        Returns:
    -2145            Select: the modified expression.
    -2146        """
    -2147        if not expressions:
    -2148            return self if not copy else self.copy()
    -2149        return _apply_child_list_builder(
    -2150            *expressions,
    -2151            instance=self,
    -2152            arg="group",
    -2153            append=append,
    -2154            copy=copy,
    -2155            prefix="GROUP BY",
    -2156            into=Group,
    -2157            dialect=dialect,
    -2158            **opts,
    -2159        )
    -2160
    -2161    def order_by(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select:
    -2162        """
    -2163        Set the ORDER BY expression.
    +            
    2120class Select(Subqueryable):
    +2121    arg_types = {
    +2122        "with": False,
    +2123        "kind": False,
    +2124        "expressions": False,
    +2125        "hint": False,
    +2126        "distinct": False,
    +2127        "into": False,
    +2128        "from": False,
    +2129        **QUERY_MODIFIERS,
    +2130    }
    +2131
    +2132    def from_(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select:
    +2133        """
    +2134        Set the FROM expression.
    +2135
    +2136        Example:
    +2137            >>> Select().from_("tbl").select("x").sql()
    +2138            'SELECT x FROM tbl'
    +2139
    +2140        Args:
    +2141            *expressions (str | Expression): the SQL code strings to parse.
    +2142                If a `From` instance is passed, this is used as-is.
    +2143                If another `Expression` instance is passed, it will be wrapped in a `From`.
    +2144            append (bool): if `True`, add to any existing expressions.
    +2145                Otherwise, this flattens all the `From` expression into a single expression.
    +2146            dialect (str): the dialect used to parse the input expression.
    +2147            copy (bool): if `False`, modify this expression instance in-place.
    +2148            opts (kwargs): other options to use to parse the input expressions.
    +2149
    +2150        Returns:
    +2151            Select: the modified expression.
    +2152        """
    +2153        return _apply_child_list_builder(
    +2154            *expressions,
    +2155            instance=self,
    +2156            arg="from",
    +2157            append=append,
    +2158            copy=copy,
    +2159            prefix="FROM",
    +2160            into=From,
    +2161            dialect=dialect,
    +2162            **opts,
    +2163        )
     2164
    -2165        Example:
    -2166            >>> Select().from_("tbl").select("x").order_by("x DESC").sql()
    -2167            'SELECT x FROM tbl ORDER BY x DESC'
    +2165    def group_by(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select:
    +2166        """
    +2167        Set the GROUP BY expression.
     2168
    -2169        Args:
    -2170            *expressions (str | Expression): the SQL code strings to parse.
    -2171                If a `Group` instance is passed, this is used as-is.
    -2172                If another `Expression` instance is passed, it will be wrapped in a `Order`.
    -2173            append (bool): if `True`, add to any existing expressions.
    -2174                Otherwise, this flattens all the `Order` expression into a single expression.
    -2175            dialect (str): the dialect used to parse the input expression.
    -2176            copy (bool): if `False`, modify this expression instance in-place.
    -2177            opts (kwargs): other options to use to parse the input expressions.
    -2178
    -2179        Returns:
    -2180            Select: the modified expression.
    -2181        """
    -2182        return _apply_child_list_builder(
    -2183            *expressions,
    -2184            instance=self,
    -2185            arg="order",
    -2186            append=append,
    -2187            copy=copy,
    -2188            prefix="ORDER BY",
    -2189            into=Order,
    -2190            dialect=dialect,
    -2191            **opts,
    -2192        )
    -2193
    -2194    def sort_by(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select:
    -2195        """
    -2196        Set the SORT BY expression.
    -2197
    -2198        Example:
    -2199            >>> Select().from_("tbl").select("x").sort_by("x DESC").sql()
    -2200            'SELECT x FROM tbl SORT BY x DESC'
    -2201
    -2202        Args:
    -2203            *expressions (str | Expression): the SQL code strings to parse.
    -2204                If a `Group` instance is passed, this is used as-is.
    -2205                If another `Expression` instance is passed, it will be wrapped in a `SORT`.
    -2206            append (bool): if `True`, add to any existing expressions.
    -2207                Otherwise, this flattens all the `Order` expression into a single expression.
    -2208            dialect (str): the dialect used to parse the input expression.
    -2209            copy (bool): if `False`, modify this expression instance in-place.
    -2210            opts (kwargs): other options to use to parse the input expressions.
    -2211
    -2212        Returns:
    -2213            Select: the modified expression.
    -2214        """
    -2215        return _apply_child_list_builder(
    -2216            *expressions,
    -2217            instance=self,
    -2218            arg="sort",
    -2219            append=append,
    -2220            copy=copy,
    -2221            prefix="SORT BY",
    -2222            into=Sort,
    -2223            dialect=dialect,
    -2224            **opts,
    -2225        )
    -2226
    -2227    def cluster_by(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select:
    -2228        """
    -2229        Set the CLUSTER BY expression.
    -2230
    -2231        Example:
    -2232            >>> Select().from_("tbl").select("x").cluster_by("x DESC").sql()
    -2233            'SELECT x FROM tbl CLUSTER BY x DESC'
    -2234
    -2235        Args:
    -2236            *expressions (str | Expression): the SQL code strings to parse.
    -2237                If a `Group` instance is passed, this is used as-is.
    -2238                If another `Expression` instance is passed, it will be wrapped in a `Cluster`.
    -2239            append (bool): if `True`, add to any existing expressions.
    -2240                Otherwise, this flattens all the `Order` expression into a single expression.
    -2241            dialect (str): the dialect used to parse the input expression.
    -2242            copy (bool): if `False`, modify this expression instance in-place.
    -2243            opts (kwargs): other options to use to parse the input expressions.
    -2244
    -2245        Returns:
    -2246            Select: the modified expression.
    -2247        """
    -2248        return _apply_child_list_builder(
    -2249            *expressions,
    -2250            instance=self,
    -2251            arg="cluster",
    -2252            append=append,
    -2253            copy=copy,
    -2254            prefix="CLUSTER BY",
    -2255            into=Cluster,
    -2256            dialect=dialect,
    -2257            **opts,
    -2258        )
    -2259
    -2260    def limit(self, expression, dialect=None, copy=True, **opts) -> Select:
    -2261        """
    -2262        Set the LIMIT expression.
    -2263
    -2264        Example:
    -2265            >>> Select().from_("tbl").select("x").limit(10).sql()
    -2266            'SELECT x FROM tbl LIMIT 10'
    -2267
    -2268        Args:
    -2269            expression (str | int | Expression): the SQL code string to parse.
    -2270                This can also be an integer.
    -2271                If a `Limit` instance is passed, this is used as-is.
    -2272                If another `Expression` instance is passed, it will be wrapped in a `Limit`.
    -2273            dialect (str): the dialect used to parse the input expression.
    -2274            copy (bool): if `False`, modify this expression instance in-place.
    -2275            opts (kwargs): other options to use to parse the input expressions.
    -2276
    -2277        Returns:
    -2278            Select: the modified expression.
    -2279        """
    -2280        return _apply_builder(
    -2281            expression=expression,
    -2282            instance=self,
    -2283            arg="limit",
    -2284            into=Limit,
    -2285            prefix="LIMIT",
    -2286            dialect=dialect,
    -2287            copy=copy,
    -2288            **opts,
    -2289        )
    -2290
    -2291    def offset(self, expression, dialect=None, copy=True, **opts) -> Select:
    -2292        """
    -2293        Set the OFFSET expression.
    -2294
    -2295        Example:
    -2296            >>> Select().from_("tbl").select("x").offset(10).sql()
    -2297            'SELECT x FROM tbl OFFSET 10'
    -2298
    -2299        Args:
    -2300            expression (str | int | Expression): the SQL code string to parse.
    -2301                This can also be an integer.
    -2302                If a `Offset` instance is passed, this is used as-is.
    -2303                If another `Expression` instance is passed, it will be wrapped in a `Offset`.
    -2304            dialect (str): the dialect used to parse the input expression.
    -2305            copy (bool): if `False`, modify this expression instance in-place.
    -2306            opts (kwargs): other options to use to parse the input expressions.
    +2169        Example:
    +2170            >>> Select().from_("tbl").select("x", "COUNT(1)").group_by("x").sql()
    +2171            'SELECT x, COUNT(1) FROM tbl GROUP BY x'
    +2172
    +2173        Args:
    +2174            *expressions (str | Expression): the SQL code strings to parse.
    +2175                If a `Group` instance is passed, this is used as-is.
    +2176                If another `Expression` instance is passed, it will be wrapped in a `Group`.
    +2177                If nothing is passed in then a group by is not applied to the expression
    +2178            append (bool): if `True`, add to any existing expressions.
    +2179                Otherwise, this flattens all the `Group` expression into a single expression.
    +2180            dialect (str): the dialect used to parse the input expression.
    +2181            copy (bool): if `False`, modify this expression instance in-place.
    +2182            opts (kwargs): other options to use to parse the input expressions.
    +2183
    +2184        Returns:
    +2185            Select: the modified expression.
    +2186        """
    +2187        if not expressions:
    +2188            return self if not copy else self.copy()
    +2189        return _apply_child_list_builder(
    +2190            *expressions,
    +2191            instance=self,
    +2192            arg="group",
    +2193            append=append,
    +2194            copy=copy,
    +2195            prefix="GROUP BY",
    +2196            into=Group,
    +2197            dialect=dialect,
    +2198            **opts,
    +2199        )
    +2200
    +2201    def order_by(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select:
    +2202        """
    +2203        Set the ORDER BY expression.
    +2204
    +2205        Example:
    +2206            >>> Select().from_("tbl").select("x").order_by("x DESC").sql()
    +2207            'SELECT x FROM tbl ORDER BY x DESC'
    +2208
    +2209        Args:
    +2210            *expressions (str | Expression): the SQL code strings to parse.
    +2211                If a `Group` instance is passed, this is used as-is.
    +2212                If another `Expression` instance is passed, it will be wrapped in a `Order`.
    +2213            append (bool): if `True`, add to any existing expressions.
    +2214                Otherwise, this flattens all the `Order` expression into a single expression.
    +2215            dialect (str): the dialect used to parse the input expression.
    +2216            copy (bool): if `False`, modify this expression instance in-place.
    +2217            opts (kwargs): other options to use to parse the input expressions.
    +2218
    +2219        Returns:
    +2220            Select: the modified expression.
    +2221        """
    +2222        return _apply_child_list_builder(
    +2223            *expressions,
    +2224            instance=self,
    +2225            arg="order",
    +2226            append=append,
    +2227            copy=copy,
    +2228            prefix="ORDER BY",
    +2229            into=Order,
    +2230            dialect=dialect,
    +2231            **opts,
    +2232        )
    +2233
    +2234    def sort_by(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select:
    +2235        """
    +2236        Set the SORT BY expression.
    +2237
    +2238        Example:
    +2239            >>> Select().from_("tbl").select("x").sort_by("x DESC").sql()
    +2240            'SELECT x FROM tbl SORT BY x DESC'
    +2241
    +2242        Args:
    +2243            *expressions (str | Expression): the SQL code strings to parse.
    +2244                If a `Group` instance is passed, this is used as-is.
    +2245                If another `Expression` instance is passed, it will be wrapped in a `SORT`.
    +2246            append (bool): if `True`, add to any existing expressions.
    +2247                Otherwise, this flattens all the `Order` expression into a single expression.
    +2248            dialect (str): the dialect used to parse the input expression.
    +2249            copy (bool): if `False`, modify this expression instance in-place.
    +2250            opts (kwargs): other options to use to parse the input expressions.
    +2251
    +2252        Returns:
    +2253            Select: the modified expression.
    +2254        """
    +2255        return _apply_child_list_builder(
    +2256            *expressions,
    +2257            instance=self,
    +2258            arg="sort",
    +2259            append=append,
    +2260            copy=copy,
    +2261            prefix="SORT BY",
    +2262            into=Sort,
    +2263            dialect=dialect,
    +2264            **opts,
    +2265        )
    +2266
    +2267    def cluster_by(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select:
    +2268        """
    +2269        Set the CLUSTER BY expression.
    +2270
    +2271        Example:
    +2272            >>> Select().from_("tbl").select("x").cluster_by("x DESC").sql()
    +2273            'SELECT x FROM tbl CLUSTER BY x DESC'
    +2274
    +2275        Args:
    +2276            *expressions (str | Expression): the SQL code strings to parse.
    +2277                If a `Group` instance is passed, this is used as-is.
    +2278                If another `Expression` instance is passed, it will be wrapped in a `Cluster`.
    +2279            append (bool): if `True`, add to any existing expressions.
    +2280                Otherwise, this flattens all the `Order` expression into a single expression.
    +2281            dialect (str): the dialect used to parse the input expression.
    +2282            copy (bool): if `False`, modify this expression instance in-place.
    +2283            opts (kwargs): other options to use to parse the input expressions.
    +2284
    +2285        Returns:
    +2286            Select: the modified expression.
    +2287        """
    +2288        return _apply_child_list_builder(
    +2289            *expressions,
    +2290            instance=self,
    +2291            arg="cluster",
    +2292            append=append,
    +2293            copy=copy,
    +2294            prefix="CLUSTER BY",
    +2295            into=Cluster,
    +2296            dialect=dialect,
    +2297            **opts,
    +2298        )
    +2299
    +2300    def limit(self, expression, dialect=None, copy=True, **opts) -> Select:
    +2301        """
    +2302        Set the LIMIT expression.
    +2303
    +2304        Example:
    +2305            >>> Select().from_("tbl").select("x").limit(10).sql()
    +2306            'SELECT x FROM tbl LIMIT 10'
     2307
    -2308        Returns:
    -2309            Select: the modified expression.
    -2310        """
    -2311        return _apply_builder(
    -2312            expression=expression,
    -2313            instance=self,
    -2314            arg="offset",
    -2315            into=Offset,
    -2316            prefix="OFFSET",
    -2317            dialect=dialect,
    -2318            copy=copy,
    -2319            **opts,
    -2320        )
    -2321
    -2322    def select(
    -2323        self,
    -2324        *expressions: ExpOrStr,
    -2325        append: bool = True,
    -2326        dialect: DialectType = None,
    -2327        copy: bool = True,
    -2328        **opts,
    -2329    ) -> Select:
    -2330        """
    -2331        Append to or set the SELECT expressions.
    -2332
    -2333        Example:
    -2334            >>> Select().select("x", "y").sql()
    -2335            'SELECT x, y'
    -2336
    -2337        Args:
    -2338            *expressions: the SQL code strings to parse.
    -2339                If an `Expression` instance is passed, it will be used as-is.
    -2340            append: if `True`, add to any existing expressions.
    -2341                Otherwise, this resets the expressions.
    -2342            dialect: the dialect used to parse the input expressions.
    -2343            copy: if `False`, modify this expression instance in-place.
    -2344            opts: other options to use to parse the input expressions.
    -2345
    -2346        Returns:
    -2347            Select: the modified expression.
    -2348        """
    -2349        return _apply_list_builder(
    -2350            *expressions,
    -2351            instance=self,
    -2352            arg="expressions",
    -2353            append=append,
    -2354            dialect=dialect,
    -2355            copy=copy,
    -2356            **opts,
    -2357        )
    -2358
    -2359    def lateral(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select:
    -2360        """
    -2361        Append to or set the LATERAL expressions.
    -2362
    -2363        Example:
    -2364            >>> Select().select("x").lateral("OUTER explode(y) tbl2 AS z").from_("tbl").sql()
    -2365            'SELECT x FROM tbl LATERAL VIEW OUTER EXPLODE(y) tbl2 AS z'
    -2366
    -2367        Args:
    -2368            *expressions (str | Expression): the SQL code strings to parse.
    -2369                If an `Expression` instance is passed, it will be used as-is.
    -2370            append (bool): if `True`, add to any existing expressions.
    -2371                Otherwise, this resets the expressions.
    -2372            dialect (str): the dialect used to parse the input expressions.
    -2373            copy (bool): if `False`, modify this expression instance in-place.
    -2374            opts (kwargs): other options to use to parse the input expressions.
    -2375
    -2376        Returns:
    -2377            Select: the modified expression.
    -2378        """
    -2379        return _apply_list_builder(
    -2380            *expressions,
    -2381            instance=self,
    -2382            arg="laterals",
    -2383            append=append,
    -2384            into=Lateral,
    -2385            prefix="LATERAL VIEW",
    -2386            dialect=dialect,
    -2387            copy=copy,
    -2388            **opts,
    -2389        )
    -2390
    -2391    def join(
    -2392        self,
    -2393        expression,
    -2394        on=None,
    -2395        using=None,
    -2396        append=True,
    -2397        join_type=None,
    -2398        join_alias=None,
    -2399        dialect=None,
    -2400        copy=True,
    -2401        **opts,
    -2402    ) -> Select:
    -2403        """
    -2404        Append to or set the JOIN expressions.
    -2405
    -2406        Example:
    -2407            >>> Select().select("*").from_("tbl").join("tbl2", on="tbl1.y = tbl2.y").sql()
    -2408            'SELECT * FROM tbl JOIN tbl2 ON tbl1.y = tbl2.y'
    -2409
    -2410            >>> Select().select("1").from_("a").join("b", using=["x", "y", "z"]).sql()
    -2411            'SELECT 1 FROM a JOIN b USING (x, y, z)'
    -2412
    -2413            Use `join_type` to change the type of join:
    -2414
    -2415            >>> Select().select("*").from_("tbl").join("tbl2", on="tbl1.y = tbl2.y", join_type="left outer").sql()
    -2416            'SELECT * FROM tbl LEFT OUTER JOIN tbl2 ON tbl1.y = tbl2.y'
    -2417
    -2418        Args:
    -2419            expression (str | Expression): the SQL code string to parse.
    -2420                If an `Expression` instance is passed, it will be used as-is.
    -2421            on (str | Expression): optionally specify the join "on" criteria as a SQL string.
    -2422                If an `Expression` instance is passed, it will be used as-is.
    -2423            using (str | Expression): optionally specify the join "using" criteria as a SQL string.
    -2424                If an `Expression` instance is passed, it will be used as-is.
    -2425            append (bool): if `True`, add to any existing expressions.
    -2426                Otherwise, this resets the expressions.
    -2427            join_type (str): If set, alter the parsed join type
    -2428            dialect (str): the dialect used to parse the input expressions.
    -2429            copy (bool): if `False`, modify this expression instance in-place.
    -2430            opts (kwargs): other options to use to parse the input expressions.
    -2431
    -2432        Returns:
    -2433            Select: the modified expression.
    -2434        """
    -2435        parse_args = {"dialect": dialect, **opts}
    -2436
    -2437        try:
    -2438            expression = maybe_parse(expression, into=Join, prefix="JOIN", **parse_args)
    -2439        except ParseError:
    -2440            expression = maybe_parse(expression, into=(Join, Expression), **parse_args)
    -2441
    -2442        join = expression if isinstance(expression, Join) else Join(this=expression)
    -2443
    -2444        if isinstance(join.this, Select):
    -2445            join.this.replace(join.this.subquery())
    -2446
    -2447        if join_type:
    -2448            natural: t.Optional[Token]
    -2449            side: t.Optional[Token]
    -2450            kind: t.Optional[Token]
    -2451
    -2452            natural, side, kind = maybe_parse(join_type, into="JOIN_TYPE", **parse_args)  # type: ignore
    -2453
    -2454            if natural:
    -2455                join.set("natural", True)
    -2456            if side:
    -2457                join.set("side", side.text)
    -2458            if kind:
    -2459                join.set("kind", kind.text)
    -2460
    -2461        if on:
    -2462            on = and_(*ensure_collection(on), dialect=dialect, **opts)
    -2463            join.set("on", on)
    -2464
    -2465        if using:
    -2466            join = _apply_list_builder(
    -2467                *ensure_collection(using),
    -2468                instance=join,
    -2469                arg="using",
    -2470                append=append,
    -2471                copy=copy,
    -2472                **opts,
    -2473            )
    -2474
    -2475        if join_alias:
    -2476            join.set("this", alias_(join.this, join_alias, table=True))
    -2477        return _apply_list_builder(
    -2478            join,
    -2479            instance=self,
    -2480            arg="joins",
    -2481            append=append,
    -2482            copy=copy,
    -2483            **opts,
    -2484        )
    -2485
    -2486    def where(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select:
    -2487        """
    -2488        Append to or set the WHERE expressions.
    -2489
    -2490        Example:
    -2491            >>> Select().select("x").from_("tbl").where("x = 'a' OR x < 'b'").sql()
    -2492            "SELECT x FROM tbl WHERE x = 'a' OR x < 'b'"
    +2308        Args:
    +2309            expression (str | int | Expression): the SQL code string to parse.
    +2310                This can also be an integer.
    +2311                If a `Limit` instance is passed, this is used as-is.
    +2312                If another `Expression` instance is passed, it will be wrapped in a `Limit`.
    +2313            dialect (str): the dialect used to parse the input expression.
    +2314            copy (bool): if `False`, modify this expression instance in-place.
    +2315            opts (kwargs): other options to use to parse the input expressions.
    +2316
    +2317        Returns:
    +2318            Select: the modified expression.
    +2319        """
    +2320        return _apply_builder(
    +2321            expression=expression,
    +2322            instance=self,
    +2323            arg="limit",
    +2324            into=Limit,
    +2325            prefix="LIMIT",
    +2326            dialect=dialect,
    +2327            copy=copy,
    +2328            **opts,
    +2329        )
    +2330
    +2331    def offset(self, expression, dialect=None, copy=True, **opts) -> Select:
    +2332        """
    +2333        Set the OFFSET expression.
    +2334
    +2335        Example:
    +2336            >>> Select().from_("tbl").select("x").offset(10).sql()
    +2337            'SELECT x FROM tbl OFFSET 10'
    +2338
    +2339        Args:
    +2340            expression (str | int | Expression): the SQL code string to parse.
    +2341                This can also be an integer.
    +2342                If a `Offset` instance is passed, this is used as-is.
    +2343                If another `Expression` instance is passed, it will be wrapped in a `Offset`.
    +2344            dialect (str): the dialect used to parse the input expression.
    +2345            copy (bool): if `False`, modify this expression instance in-place.
    +2346            opts (kwargs): other options to use to parse the input expressions.
    +2347
    +2348        Returns:
    +2349            Select: the modified expression.
    +2350        """
    +2351        return _apply_builder(
    +2352            expression=expression,
    +2353            instance=self,
    +2354            arg="offset",
    +2355            into=Offset,
    +2356            prefix="OFFSET",
    +2357            dialect=dialect,
    +2358            copy=copy,
    +2359            **opts,
    +2360        )
    +2361
    +2362    def select(
    +2363        self,
    +2364        *expressions: ExpOrStr,
    +2365        append: bool = True,
    +2366        dialect: DialectType = None,
    +2367        copy: bool = True,
    +2368        **opts,
    +2369    ) -> Select:
    +2370        """
    +2371        Append to or set the SELECT expressions.
    +2372
    +2373        Example:
    +2374            >>> Select().select("x", "y").sql()
    +2375            'SELECT x, y'
    +2376
    +2377        Args:
    +2378            *expressions: the SQL code strings to parse.
    +2379                If an `Expression` instance is passed, it will be used as-is.
    +2380            append: if `True`, add to any existing expressions.
    +2381                Otherwise, this resets the expressions.
    +2382            dialect: the dialect used to parse the input expressions.
    +2383            copy: if `False`, modify this expression instance in-place.
    +2384            opts: other options to use to parse the input expressions.
    +2385
    +2386        Returns:
    +2387            Select: the modified expression.
    +2388        """
    +2389        return _apply_list_builder(
    +2390            *expressions,
    +2391            instance=self,
    +2392            arg="expressions",
    +2393            append=append,
    +2394            dialect=dialect,
    +2395            copy=copy,
    +2396            **opts,
    +2397        )
    +2398
    +2399    def lateral(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select:
    +2400        """
    +2401        Append to or set the LATERAL expressions.
    +2402
    +2403        Example:
    +2404            >>> Select().select("x").lateral("OUTER explode(y) tbl2 AS z").from_("tbl").sql()
    +2405            'SELECT x FROM tbl LATERAL VIEW OUTER EXPLODE(y) tbl2 AS z'
    +2406
    +2407        Args:
    +2408            *expressions (str | Expression): the SQL code strings to parse.
    +2409                If an `Expression` instance is passed, it will be used as-is.
    +2410            append (bool): if `True`, add to any existing expressions.
    +2411                Otherwise, this resets the expressions.
    +2412            dialect (str): the dialect used to parse the input expressions.
    +2413            copy (bool): if `False`, modify this expression instance in-place.
    +2414            opts (kwargs): other options to use to parse the input expressions.
    +2415
    +2416        Returns:
    +2417            Select: the modified expression.
    +2418        """
    +2419        return _apply_list_builder(
    +2420            *expressions,
    +2421            instance=self,
    +2422            arg="laterals",
    +2423            append=append,
    +2424            into=Lateral,
    +2425            prefix="LATERAL VIEW",
    +2426            dialect=dialect,
    +2427            copy=copy,
    +2428            **opts,
    +2429        )
    +2430
    +2431    def join(
    +2432        self,
    +2433        expression,
    +2434        on=None,
    +2435        using=None,
    +2436        append=True,
    +2437        join_type=None,
    +2438        join_alias=None,
    +2439        dialect=None,
    +2440        copy=True,
    +2441        **opts,
    +2442    ) -> Select:
    +2443        """
    +2444        Append to or set the JOIN expressions.
    +2445
    +2446        Example:
    +2447            >>> Select().select("*").from_("tbl").join("tbl2", on="tbl1.y = tbl2.y").sql()
    +2448            'SELECT * FROM tbl JOIN tbl2 ON tbl1.y = tbl2.y'
    +2449
    +2450            >>> Select().select("1").from_("a").join("b", using=["x", "y", "z"]).sql()
    +2451            'SELECT 1 FROM a JOIN b USING (x, y, z)'
    +2452
    +2453            Use `join_type` to change the type of join:
    +2454
    +2455            >>> Select().select("*").from_("tbl").join("tbl2", on="tbl1.y = tbl2.y", join_type="left outer").sql()
    +2456            'SELECT * FROM tbl LEFT OUTER JOIN tbl2 ON tbl1.y = tbl2.y'
    +2457
    +2458        Args:
    +2459            expression (str | Expression): the SQL code string to parse.
    +2460                If an `Expression` instance is passed, it will be used as-is.
    +2461            on (str | Expression): optionally specify the join "on" criteria as a SQL string.
    +2462                If an `Expression` instance is passed, it will be used as-is.
    +2463            using (str | Expression): optionally specify the join "using" criteria as a SQL string.
    +2464                If an `Expression` instance is passed, it will be used as-is.
    +2465            append (bool): if `True`, add to any existing expressions.
    +2466                Otherwise, this resets the expressions.
    +2467            join_type (str): If set, alter the parsed join type
    +2468            dialect (str): the dialect used to parse the input expressions.
    +2469            copy (bool): if `False`, modify this expression instance in-place.
    +2470            opts (kwargs): other options to use to parse the input expressions.
    +2471
    +2472        Returns:
    +2473            Select: the modified expression.
    +2474        """
    +2475        parse_args = {"dialect": dialect, **opts}
    +2476
    +2477        try:
    +2478            expression = maybe_parse(expression, into=Join, prefix="JOIN", **parse_args)
    +2479        except ParseError:
    +2480            expression = maybe_parse(expression, into=(Join, Expression), **parse_args)
    +2481
    +2482        join = expression if isinstance(expression, Join) else Join(this=expression)
    +2483
    +2484        if isinstance(join.this, Select):
    +2485            join.this.replace(join.this.subquery())
    +2486
    +2487        if join_type:
    +2488            natural: t.Optional[Token]
    +2489            side: t.Optional[Token]
    +2490            kind: t.Optional[Token]
    +2491
    +2492            natural, side, kind = maybe_parse(join_type, into="JOIN_TYPE", **parse_args)  # type: ignore
     2493
    -2494        Args:
    -2495            *expressions (str | Expression): the SQL code strings to parse.
    -2496                If an `Expression` instance is passed, it will be used as-is.
    -2497                Multiple expressions are combined with an AND operator.
    -2498            append (bool): if `True`, AND the new expressions to any existing expression.
    -2499                Otherwise, this resets the expression.
    -2500            dialect (str): the dialect used to parse the input expressions.
    -2501            copy (bool): if `False`, modify this expression instance in-place.
    -2502            opts (kwargs): other options to use to parse the input expressions.
    -2503
    -2504        Returns:
    -2505            Select: the modified expression.
    -2506        """
    -2507        return _apply_conjunction_builder(
    -2508            *expressions,
    -2509            instance=self,
    -2510            arg="where",
    -2511            append=append,
    -2512            into=Where,
    -2513            dialect=dialect,
    -2514            copy=copy,
    -2515            **opts,
    -2516        )
    -2517
    -2518    def having(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select:
    -2519        """
    -2520        Append to or set the HAVING expressions.
    -2521
    -2522        Example:
    -2523            >>> Select().select("x", "COUNT(y)").from_("tbl").group_by("x").having("COUNT(y) > 3").sql()
    -2524            'SELECT x, COUNT(y) FROM tbl GROUP BY x HAVING COUNT(y) > 3'
    +2494            if natural:
    +2495                join.set("natural", True)
    +2496            if side:
    +2497                join.set("side", side.text)
    +2498            if kind:
    +2499                join.set("kind", kind.text)
    +2500
    +2501        if on:
    +2502            on = and_(*ensure_collection(on), dialect=dialect, **opts)
    +2503            join.set("on", on)
    +2504
    +2505        if using:
    +2506            join = _apply_list_builder(
    +2507                *ensure_collection(using),
    +2508                instance=join,
    +2509                arg="using",
    +2510                append=append,
    +2511                copy=copy,
    +2512                **opts,
    +2513            )
    +2514
    +2515        if join_alias:
    +2516            join.set("this", alias_(join.this, join_alias, table=True))
    +2517        return _apply_list_builder(
    +2518            join,
    +2519            instance=self,
    +2520            arg="joins",
    +2521            append=append,
    +2522            copy=copy,
    +2523            **opts,
    +2524        )
     2525
    -2526        Args:
    -2527            *expressions (str | Expression): the SQL code strings to parse.
    -2528                If an `Expression` instance is passed, it will be used as-is.
    -2529                Multiple expressions are combined with an AND operator.
    -2530            append (bool): if `True`, AND the new expressions to any existing expression.
    -2531                Otherwise, this resets the expression.
    -2532            dialect (str): the dialect used to parse the input expressions.
    -2533            copy (bool): if `False`, modify this expression instance in-place.
    -2534            opts (kwargs): other options to use to parse the input expressions.
    -2535
    -2536        Returns:
    -2537            Select: the modified expression.
    -2538        """
    -2539        return _apply_conjunction_builder(
    -2540            *expressions,
    -2541            instance=self,
    -2542            arg="having",
    -2543            append=append,
    -2544            into=Having,
    -2545            dialect=dialect,
    -2546            copy=copy,
    -2547            **opts,
    -2548        )
    -2549
    -2550    def window(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select:
    -2551        return _apply_list_builder(
    -2552            *expressions,
    -2553            instance=self,
    -2554            arg="windows",
    -2555            append=append,
    -2556            into=Window,
    -2557            dialect=dialect,
    -2558            copy=copy,
    -2559            **opts,
    -2560        )
    +2526    def where(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select:
    +2527        """
    +2528        Append to or set the WHERE expressions.
    +2529
    +2530        Example:
    +2531            >>> Select().select("x").from_("tbl").where("x = 'a' OR x < 'b'").sql()
    +2532            "SELECT x FROM tbl WHERE x = 'a' OR x < 'b'"
    +2533
    +2534        Args:
    +2535            *expressions (str | Expression): the SQL code strings to parse.
    +2536                If an `Expression` instance is passed, it will be used as-is.
    +2537                Multiple expressions are combined with an AND operator.
    +2538            append (bool): if `True`, AND the new expressions to any existing expression.
    +2539                Otherwise, this resets the expression.
    +2540            dialect (str): the dialect used to parse the input expressions.
    +2541            copy (bool): if `False`, modify this expression instance in-place.
    +2542            opts (kwargs): other options to use to parse the input expressions.
    +2543
    +2544        Returns:
    +2545            Select: the modified expression.
    +2546        """
    +2547        return _apply_conjunction_builder(
    +2548            *expressions,
    +2549            instance=self,
    +2550            arg="where",
    +2551            append=append,
    +2552            into=Where,
    +2553            dialect=dialect,
    +2554            copy=copy,
    +2555            **opts,
    +2556        )
    +2557
    +2558    def having(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select:
    +2559        """
    +2560        Append to or set the HAVING expressions.
     2561
    -2562    def qualify(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select:
    -2563        return _apply_conjunction_builder(
    -2564            *expressions,
    -2565            instance=self,
    -2566            arg="qualify",
    -2567            append=append,
    -2568            into=Qualify,
    -2569            dialect=dialect,
    -2570            copy=copy,
    -2571            **opts,
    -2572        )
    -2573
    -2574    def distinct(self, distinct=True, copy=True) -> Select:
    -2575        """
    -2576        Set the OFFSET expression.
    -2577
    -2578        Example:
    -2579            >>> Select().from_("tbl").select("x").distinct().sql()
    -2580            'SELECT DISTINCT x FROM tbl'
    -2581
    -2582        Args:
    -2583            distinct (bool): whether the Select should be distinct
    -2584            copy (bool): if `False`, modify this expression instance in-place.
    -2585
    -2586        Returns:
    -2587            Select: the modified expression.
    -2588        """
    -2589        instance = _maybe_copy(self, copy)
    -2590        instance.set("distinct", Distinct() if distinct else None)
    -2591        return instance
    -2592
    -2593    def ctas(self, table, properties=None, dialect=None, copy=True, **opts) -> Create:
    -2594        """
    -2595        Convert this expression to a CREATE TABLE AS statement.
    -2596
    -2597        Example:
    -2598            >>> Select().select("*").from_("tbl").ctas("x").sql()
    -2599            'CREATE TABLE x AS SELECT * FROM tbl'
    -2600
    -2601        Args:
    -2602            table (str | Expression): the SQL code string to parse as the table name.
    -2603                If another `Expression` instance is passed, it will be used as-is.
    -2604            properties (dict): an optional mapping of table properties
    -2605            dialect (str): the dialect used to parse the input table.
    -2606            copy (bool): if `False`, modify this expression instance in-place.
    -2607            opts (kwargs): other options to use to parse the input table.
    -2608
    -2609        Returns:
    -2610            Create: the CREATE TABLE AS expression
    -2611        """
    -2612        instance = _maybe_copy(self, copy)
    -2613        table_expression = maybe_parse(
    -2614            table,
    -2615            into=Table,
    -2616            dialect=dialect,
    -2617            **opts,
    -2618        )
    -2619        properties_expression = None
    -2620        if properties:
    -2621            properties_expression = Properties.from_dict(properties)
    -2622
    -2623        return Create(
    -2624            this=table_expression,
    -2625            kind="table",
    -2626            expression=instance,
    -2627            properties=properties_expression,
    -2628        )
    -2629
    -2630    def lock(self, update: bool = True, copy: bool = True) -> Select:
    -2631        """
    -2632        Set the locking read mode for this expression.
    -2633
    -2634        Examples:
    -2635            >>> Select().select("x").from_("tbl").where("x = 'a'").lock().sql("mysql")
    -2636            "SELECT x FROM tbl WHERE x = 'a' FOR UPDATE"
    -2637
    -2638            >>> Select().select("x").from_("tbl").where("x = 'a'").lock(update=False).sql("mysql")
    -2639            "SELECT x FROM tbl WHERE x = 'a' FOR SHARE"
    +2562        Example:
    +2563            >>> Select().select("x", "COUNT(y)").from_("tbl").group_by("x").having("COUNT(y) > 3").sql()
    +2564            'SELECT x, COUNT(y) FROM tbl GROUP BY x HAVING COUNT(y) > 3'
    +2565
    +2566        Args:
    +2567            *expressions (str | Expression): the SQL code strings to parse.
    +2568                If an `Expression` instance is passed, it will be used as-is.
    +2569                Multiple expressions are combined with an AND operator.
    +2570            append (bool): if `True`, AND the new expressions to any existing expression.
    +2571                Otherwise, this resets the expression.
    +2572            dialect (str): the dialect used to parse the input expressions.
    +2573            copy (bool): if `False`, modify this expression instance in-place.
    +2574            opts (kwargs): other options to use to parse the input expressions.
    +2575
    +2576        Returns:
    +2577            Select: the modified expression.
    +2578        """
    +2579        return _apply_conjunction_builder(
    +2580            *expressions,
    +2581            instance=self,
    +2582            arg="having",
    +2583            append=append,
    +2584            into=Having,
    +2585            dialect=dialect,
    +2586            copy=copy,
    +2587            **opts,
    +2588        )
    +2589
    +2590    def window(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select:
    +2591        return _apply_list_builder(
    +2592            *expressions,
    +2593            instance=self,
    +2594            arg="windows",
    +2595            append=append,
    +2596            into=Window,
    +2597            dialect=dialect,
    +2598            copy=copy,
    +2599            **opts,
    +2600        )
    +2601
    +2602    def qualify(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select:
    +2603        return _apply_conjunction_builder(
    +2604            *expressions,
    +2605            instance=self,
    +2606            arg="qualify",
    +2607            append=append,
    +2608            into=Qualify,
    +2609            dialect=dialect,
    +2610            copy=copy,
    +2611            **opts,
    +2612        )
    +2613
    +2614    def distinct(self, distinct=True, copy=True) -> Select:
    +2615        """
    +2616        Set the OFFSET expression.
    +2617
    +2618        Example:
    +2619            >>> Select().from_("tbl").select("x").distinct().sql()
    +2620            'SELECT DISTINCT x FROM tbl'
    +2621
    +2622        Args:
    +2623            distinct (bool): whether the Select should be distinct
    +2624            copy (bool): if `False`, modify this expression instance in-place.
    +2625
    +2626        Returns:
    +2627            Select: the modified expression.
    +2628        """
    +2629        instance = _maybe_copy(self, copy)
    +2630        instance.set("distinct", Distinct() if distinct else None)
    +2631        return instance
    +2632
    +2633    def ctas(self, table, properties=None, dialect=None, copy=True, **opts) -> Create:
    +2634        """
    +2635        Convert this expression to a CREATE TABLE AS statement.
    +2636
    +2637        Example:
    +2638            >>> Select().select("*").from_("tbl").ctas("x").sql()
    +2639            'CREATE TABLE x AS SELECT * FROM tbl'
     2640
     2641        Args:
    -2642            update: if `True`, the locking type will be `FOR UPDATE`, else it will be `FOR SHARE`.
    -2643            copy: if `False`, modify this expression instance in-place.
    -2644
    -2645        Returns:
    -2646            The modified expression.
    -2647        """
    +2642            table (str | Expression): the SQL code string to parse as the table name.
    +2643                If another `Expression` instance is passed, it will be used as-is.
    +2644            properties (dict): an optional mapping of table properties
    +2645            dialect (str): the dialect used to parse the input table.
    +2646            copy (bool): if `False`, modify this expression instance in-place.
    +2647            opts (kwargs): other options to use to parse the input table.
     2648
    -2649        inst = _maybe_copy(self, copy)
    -2650        inst.set("lock", Lock(update=update))
    -2651
    -2652        return inst
    -2653
    -2654    @property
    -2655    def named_selects(self) -> t.List[str]:
    -2656        return [e.output_name for e in self.expressions if e.alias_or_name]
    -2657
    -2658    @property
    -2659    def is_star(self) -> bool:
    -2660        return any(expression.is_star for expression in self.expressions)
    -2661
    -2662    @property
    -2663    def selects(self) -> t.List[Expression]:
    -2664        return self.expressions
    +2649        Returns:
    +2650            Create: the CREATE TABLE AS expression
    +2651        """
    +2652        instance = _maybe_copy(self, copy)
    +2653        table_expression = maybe_parse(
    +2654            table,
    +2655            into=Table,
    +2656            dialect=dialect,
    +2657            **opts,
    +2658        )
    +2659        properties_expression = None
    +2660        if properties:
    +2661            properties_expression = Properties.from_dict(properties)
    +2662
    +2663        return Create(
    +2664            this=table_expression,
    +2665            kind="table",
    +2666            expression=instance,
    +2667            properties=properties_expression,
    +2668        )
    +2669
    +2670    def lock(self, update: bool = True, copy: bool = True) -> Select:
    +2671        """
    +2672        Set the locking read mode for this expression.
    +2673
    +2674        Examples:
    +2675            >>> Select().select("x").from_("tbl").where("x = 'a'").lock().sql("mysql")
    +2676            "SELECT x FROM tbl WHERE x = 'a' FOR UPDATE"
    +2677
    +2678            >>> Select().select("x").from_("tbl").where("x = 'a'").lock(update=False).sql("mysql")
    +2679            "SELECT x FROM tbl WHERE x = 'a' FOR SHARE"
    +2680
    +2681        Args:
    +2682            update: if `True`, the locking type will be `FOR UPDATE`, else it will be `FOR SHARE`.
    +2683            copy: if `False`, modify this expression instance in-place.
    +2684
    +2685        Returns:
    +2686            The modified expression.
    +2687        """
    +2688
    +2689        inst = _maybe_copy(self, copy)
    +2690        inst.set("lock", Lock(update=update))
    +2691
    +2692        return inst
    +2693
    +2694    @property
    +2695    def named_selects(self) -> t.List[str]:
    +2696        return [e.output_name for e in self.expressions if e.alias_or_name]
    +2697
    +2698    @property
    +2699    def is_star(self) -> bool:
    +2700        return any(expression.is_star for expression in self.expressions)
    +2701
    +2702    @property
    +2703    def selects(self) -> t.List[Expression]:
    +2704        return self.expressions
     
    @@ -22347,38 +22844,38 @@ Otherwise, this resets the expressions.
    -
    2092    def from_(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select:
    -2093        """
    -2094        Set the FROM expression.
    -2095
    -2096        Example:
    -2097            >>> Select().from_("tbl").select("x").sql()
    -2098            'SELECT x FROM tbl'
    -2099
    -2100        Args:
    -2101            *expressions (str | Expression): the SQL code strings to parse.
    -2102                If a `From` instance is passed, this is used as-is.
    -2103                If another `Expression` instance is passed, it will be wrapped in a `From`.
    -2104            append (bool): if `True`, add to any existing expressions.
    -2105                Otherwise, this flattens all the `From` expression into a single expression.
    -2106            dialect (str): the dialect used to parse the input expression.
    -2107            copy (bool): if `False`, modify this expression instance in-place.
    -2108            opts (kwargs): other options to use to parse the input expressions.
    -2109
    -2110        Returns:
    -2111            Select: the modified expression.
    -2112        """
    -2113        return _apply_child_list_builder(
    -2114            *expressions,
    -2115            instance=self,
    -2116            arg="from",
    -2117            append=append,
    -2118            copy=copy,
    -2119            prefix="FROM",
    -2120            into=From,
    -2121            dialect=dialect,
    -2122            **opts,
    -2123        )
    +            
    2132    def from_(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select:
    +2133        """
    +2134        Set the FROM expression.
    +2135
    +2136        Example:
    +2137            >>> Select().from_("tbl").select("x").sql()
    +2138            'SELECT x FROM tbl'
    +2139
    +2140        Args:
    +2141            *expressions (str | Expression): the SQL code strings to parse.
    +2142                If a `From` instance is passed, this is used as-is.
    +2143                If another `Expression` instance is passed, it will be wrapped in a `From`.
    +2144            append (bool): if `True`, add to any existing expressions.
    +2145                Otherwise, this flattens all the `From` expression into a single expression.
    +2146            dialect (str): the dialect used to parse the input expression.
    +2147            copy (bool): if `False`, modify this expression instance in-place.
    +2148            opts (kwargs): other options to use to parse the input expressions.
    +2149
    +2150        Returns:
    +2151            Select: the modified expression.
    +2152        """
    +2153        return _apply_child_list_builder(
    +2154            *expressions,
    +2155            instance=self,
    +2156            arg="from",
    +2157            append=append,
    +2158            copy=copy,
    +2159            prefix="FROM",
    +2160            into=From,
    +2161            dialect=dialect,
    +2162            **opts,
    +2163        )
     
    @@ -22427,41 +22924,41 @@ Otherwise, this flattens all the From expressio
    -
    2125    def group_by(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select:
    -2126        """
    -2127        Set the GROUP BY expression.
    -2128
    -2129        Example:
    -2130            >>> Select().from_("tbl").select("x", "COUNT(1)").group_by("x").sql()
    -2131            'SELECT x, COUNT(1) FROM tbl GROUP BY x'
    -2132
    -2133        Args:
    -2134            *expressions (str | Expression): the SQL code strings to parse.
    -2135                If a `Group` instance is passed, this is used as-is.
    -2136                If another `Expression` instance is passed, it will be wrapped in a `Group`.
    -2137                If nothing is passed in then a group by is not applied to the expression
    -2138            append (bool): if `True`, add to any existing expressions.
    -2139                Otherwise, this flattens all the `Group` expression into a single expression.
    -2140            dialect (str): the dialect used to parse the input expression.
    -2141            copy (bool): if `False`, modify this expression instance in-place.
    -2142            opts (kwargs): other options to use to parse the input expressions.
    -2143
    -2144        Returns:
    -2145            Select: the modified expression.
    -2146        """
    -2147        if not expressions:
    -2148            return self if not copy else self.copy()
    -2149        return _apply_child_list_builder(
    -2150            *expressions,
    -2151            instance=self,
    -2152            arg="group",
    -2153            append=append,
    -2154            copy=copy,
    -2155            prefix="GROUP BY",
    -2156            into=Group,
    -2157            dialect=dialect,
    -2158            **opts,
    -2159        )
    +            
    2165    def group_by(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select:
    +2166        """
    +2167        Set the GROUP BY expression.
    +2168
    +2169        Example:
    +2170            >>> Select().from_("tbl").select("x", "COUNT(1)").group_by("x").sql()
    +2171            'SELECT x, COUNT(1) FROM tbl GROUP BY x'
    +2172
    +2173        Args:
    +2174            *expressions (str | Expression): the SQL code strings to parse.
    +2175                If a `Group` instance is passed, this is used as-is.
    +2176                If another `Expression` instance is passed, it will be wrapped in a `Group`.
    +2177                If nothing is passed in then a group by is not applied to the expression
    +2178            append (bool): if `True`, add to any existing expressions.
    +2179                Otherwise, this flattens all the `Group` expression into a single expression.
    +2180            dialect (str): the dialect used to parse the input expression.
    +2181            copy (bool): if `False`, modify this expression instance in-place.
    +2182            opts (kwargs): other options to use to parse the input expressions.
    +2183
    +2184        Returns:
    +2185            Select: the modified expression.
    +2186        """
    +2187        if not expressions:
    +2188            return self if not copy else self.copy()
    +2189        return _apply_child_list_builder(
    +2190            *expressions,
    +2191            instance=self,
    +2192            arg="group",
    +2193            append=append,
    +2194            copy=copy,
    +2195            prefix="GROUP BY",
    +2196            into=Group,
    +2197            dialect=dialect,
    +2198            **opts,
    +2199        )
     
    @@ -22511,38 +23008,38 @@ Otherwise, this flattens all the Group express
    -
    2161    def order_by(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select:
    -2162        """
    -2163        Set the ORDER BY expression.
    -2164
    -2165        Example:
    -2166            >>> Select().from_("tbl").select("x").order_by("x DESC").sql()
    -2167            'SELECT x FROM tbl ORDER BY x DESC'
    -2168
    -2169        Args:
    -2170            *expressions (str | Expression): the SQL code strings to parse.
    -2171                If a `Group` instance is passed, this is used as-is.
    -2172                If another `Expression` instance is passed, it will be wrapped in a `Order`.
    -2173            append (bool): if `True`, add to any existing expressions.
    -2174                Otherwise, this flattens all the `Order` expression into a single expression.
    -2175            dialect (str): the dialect used to parse the input expression.
    -2176            copy (bool): if `False`, modify this expression instance in-place.
    -2177            opts (kwargs): other options to use to parse the input expressions.
    -2178
    -2179        Returns:
    -2180            Select: the modified expression.
    -2181        """
    -2182        return _apply_child_list_builder(
    -2183            *expressions,
    -2184            instance=self,
    -2185            arg="order",
    -2186            append=append,
    -2187            copy=copy,
    -2188            prefix="ORDER BY",
    -2189            into=Order,
    -2190            dialect=dialect,
    -2191            **opts,
    -2192        )
    +            
    2201    def order_by(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select:
    +2202        """
    +2203        Set the ORDER BY expression.
    +2204
    +2205        Example:
    +2206            >>> Select().from_("tbl").select("x").order_by("x DESC").sql()
    +2207            'SELECT x FROM tbl ORDER BY x DESC'
    +2208
    +2209        Args:
    +2210            *expressions (str | Expression): the SQL code strings to parse.
    +2211                If a `Group` instance is passed, this is used as-is.
    +2212                If another `Expression` instance is passed, it will be wrapped in a `Order`.
    +2213            append (bool): if `True`, add to any existing expressions.
    +2214                Otherwise, this flattens all the `Order` expression into a single expression.
    +2215            dialect (str): the dialect used to parse the input expression.
    +2216            copy (bool): if `False`, modify this expression instance in-place.
    +2217            opts (kwargs): other options to use to parse the input expressions.
    +2218
    +2219        Returns:
    +2220            Select: the modified expression.
    +2221        """
    +2222        return _apply_child_list_builder(
    +2223            *expressions,
    +2224            instance=self,
    +2225            arg="order",
    +2226            append=append,
    +2227            copy=copy,
    +2228            prefix="ORDER BY",
    +2229            into=Order,
    +2230            dialect=dialect,
    +2231            **opts,
    +2232        )
     
    @@ -22591,38 +23088,38 @@ Otherwise, this flattens all the Order express
    -
    2194    def sort_by(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select:
    -2195        """
    -2196        Set the SORT BY expression.
    -2197
    -2198        Example:
    -2199            >>> Select().from_("tbl").select("x").sort_by("x DESC").sql()
    -2200            'SELECT x FROM tbl SORT BY x DESC'
    -2201
    -2202        Args:
    -2203            *expressions (str | Expression): the SQL code strings to parse.
    -2204                If a `Group` instance is passed, this is used as-is.
    -2205                If another `Expression` instance is passed, it will be wrapped in a `SORT`.
    -2206            append (bool): if `True`, add to any existing expressions.
    -2207                Otherwise, this flattens all the `Order` expression into a single expression.
    -2208            dialect (str): the dialect used to parse the input expression.
    -2209            copy (bool): if `False`, modify this expression instance in-place.
    -2210            opts (kwargs): other options to use to parse the input expressions.
    -2211
    -2212        Returns:
    -2213            Select: the modified expression.
    -2214        """
    -2215        return _apply_child_list_builder(
    -2216            *expressions,
    -2217            instance=self,
    -2218            arg="sort",
    -2219            append=append,
    -2220            copy=copy,
    -2221            prefix="SORT BY",
    -2222            into=Sort,
    -2223            dialect=dialect,
    -2224            **opts,
    -2225        )
    +            
    2234    def sort_by(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select:
    +2235        """
    +2236        Set the SORT BY expression.
    +2237
    +2238        Example:
    +2239            >>> Select().from_("tbl").select("x").sort_by("x DESC").sql()
    +2240            'SELECT x FROM tbl SORT BY x DESC'
    +2241
    +2242        Args:
    +2243            *expressions (str | Expression): the SQL code strings to parse.
    +2244                If a `Group` instance is passed, this is used as-is.
    +2245                If another `Expression` instance is passed, it will be wrapped in a `SORT`.
    +2246            append (bool): if `True`, add to any existing expressions.
    +2247                Otherwise, this flattens all the `Order` expression into a single expression.
    +2248            dialect (str): the dialect used to parse the input expression.
    +2249            copy (bool): if `False`, modify this expression instance in-place.
    +2250            opts (kwargs): other options to use to parse the input expressions.
    +2251
    +2252        Returns:
    +2253            Select: the modified expression.
    +2254        """
    +2255        return _apply_child_list_builder(
    +2256            *expressions,
    +2257            instance=self,
    +2258            arg="sort",
    +2259            append=append,
    +2260            copy=copy,
    +2261            prefix="SORT BY",
    +2262            into=Sort,
    +2263            dialect=dialect,
    +2264            **opts,
    +2265        )
     
    @@ -22671,38 +23168,38 @@ Otherwise, this flattens all the Order express
    -
    2227    def cluster_by(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select:
    -2228        """
    -2229        Set the CLUSTER BY expression.
    -2230
    -2231        Example:
    -2232            >>> Select().from_("tbl").select("x").cluster_by("x DESC").sql()
    -2233            'SELECT x FROM tbl CLUSTER BY x DESC'
    -2234
    -2235        Args:
    -2236            *expressions (str | Expression): the SQL code strings to parse.
    -2237                If a `Group` instance is passed, this is used as-is.
    -2238                If another `Expression` instance is passed, it will be wrapped in a `Cluster`.
    -2239            append (bool): if `True`, add to any existing expressions.
    -2240                Otherwise, this flattens all the `Order` expression into a single expression.
    -2241            dialect (str): the dialect used to parse the input expression.
    -2242            copy (bool): if `False`, modify this expression instance in-place.
    -2243            opts (kwargs): other options to use to parse the input expressions.
    -2244
    -2245        Returns:
    -2246            Select: the modified expression.
    -2247        """
    -2248        return _apply_child_list_builder(
    -2249            *expressions,
    -2250            instance=self,
    -2251            arg="cluster",
    -2252            append=append,
    -2253            copy=copy,
    -2254            prefix="CLUSTER BY",
    -2255            into=Cluster,
    -2256            dialect=dialect,
    -2257            **opts,
    -2258        )
    +            
    2267    def cluster_by(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select:
    +2268        """
    +2269        Set the CLUSTER BY expression.
    +2270
    +2271        Example:
    +2272            >>> Select().from_("tbl").select("x").cluster_by("x DESC").sql()
    +2273            'SELECT x FROM tbl CLUSTER BY x DESC'
    +2274
    +2275        Args:
    +2276            *expressions (str | Expression): the SQL code strings to parse.
    +2277                If a `Group` instance is passed, this is used as-is.
    +2278                If another `Expression` instance is passed, it will be wrapped in a `Cluster`.
    +2279            append (bool): if `True`, add to any existing expressions.
    +2280                Otherwise, this flattens all the `Order` expression into a single expression.
    +2281            dialect (str): the dialect used to parse the input expression.
    +2282            copy (bool): if `False`, modify this expression instance in-place.
    +2283            opts (kwargs): other options to use to parse the input expressions.
    +2284
    +2285        Returns:
    +2286            Select: the modified expression.
    +2287        """
    +2288        return _apply_child_list_builder(
    +2289            *expressions,
    +2290            instance=self,
    +2291            arg="cluster",
    +2292            append=append,
    +2293            copy=copy,
    +2294            prefix="CLUSTER BY",
    +2295            into=Cluster,
    +2296            dialect=dialect,
    +2297            **opts,
    +2298        )
     
    @@ -22751,36 +23248,36 @@ Otherwise, this flattens all the Order express
    -
    2260    def limit(self, expression, dialect=None, copy=True, **opts) -> Select:
    -2261        """
    -2262        Set the LIMIT expression.
    -2263
    -2264        Example:
    -2265            >>> Select().from_("tbl").select("x").limit(10).sql()
    -2266            'SELECT x FROM tbl LIMIT 10'
    -2267
    -2268        Args:
    -2269            expression (str | int | Expression): the SQL code string to parse.
    -2270                This can also be an integer.
    -2271                If a `Limit` instance is passed, this is used as-is.
    -2272                If another `Expression` instance is passed, it will be wrapped in a `Limit`.
    -2273            dialect (str): the dialect used to parse the input expression.
    -2274            copy (bool): if `False`, modify this expression instance in-place.
    -2275            opts (kwargs): other options to use to parse the input expressions.
    -2276
    -2277        Returns:
    -2278            Select: the modified expression.
    -2279        """
    -2280        return _apply_builder(
    -2281            expression=expression,
    -2282            instance=self,
    -2283            arg="limit",
    -2284            into=Limit,
    -2285            prefix="LIMIT",
    -2286            dialect=dialect,
    -2287            copy=copy,
    -2288            **opts,
    -2289        )
    +            
    2300    def limit(self, expression, dialect=None, copy=True, **opts) -> Select:
    +2301        """
    +2302        Set the LIMIT expression.
    +2303
    +2304        Example:
    +2305            >>> Select().from_("tbl").select("x").limit(10).sql()
    +2306            'SELECT x FROM tbl LIMIT 10'
    +2307
    +2308        Args:
    +2309            expression (str | int | Expression): the SQL code string to parse.
    +2310                This can also be an integer.
    +2311                If a `Limit` instance is passed, this is used as-is.
    +2312                If another `Expression` instance is passed, it will be wrapped in a `Limit`.
    +2313            dialect (str): the dialect used to parse the input expression.
    +2314            copy (bool): if `False`, modify this expression instance in-place.
    +2315            opts (kwargs): other options to use to parse the input expressions.
    +2316
    +2317        Returns:
    +2318            Select: the modified expression.
    +2319        """
    +2320        return _apply_builder(
    +2321            expression=expression,
    +2322            instance=self,
    +2323            arg="limit",
    +2324            into=Limit,
    +2325            prefix="LIMIT",
    +2326            dialect=dialect,
    +2327            copy=copy,
    +2328            **opts,
    +2329        )
     
    @@ -22828,36 +23325,36 @@ If another Expression instance is passed,
    -
    2291    def offset(self, expression, dialect=None, copy=True, **opts) -> Select:
    -2292        """
    -2293        Set the OFFSET expression.
    -2294
    -2295        Example:
    -2296            >>> Select().from_("tbl").select("x").offset(10).sql()
    -2297            'SELECT x FROM tbl OFFSET 10'
    -2298
    -2299        Args:
    -2300            expression (str | int | Expression): the SQL code string to parse.
    -2301                This can also be an integer.
    -2302                If a `Offset` instance is passed, this is used as-is.
    -2303                If another `Expression` instance is passed, it will be wrapped in a `Offset`.
    -2304            dialect (str): the dialect used to parse the input expression.
    -2305            copy (bool): if `False`, modify this expression instance in-place.
    -2306            opts (kwargs): other options to use to parse the input expressions.
    -2307
    -2308        Returns:
    -2309            Select: the modified expression.
    -2310        """
    -2311        return _apply_builder(
    -2312            expression=expression,
    -2313            instance=self,
    -2314            arg="offset",
    -2315            into=Offset,
    -2316            prefix="OFFSET",
    -2317            dialect=dialect,
    -2318            copy=copy,
    -2319            **opts,
    -2320        )
    +            
    2331    def offset(self, expression, dialect=None, copy=True, **opts) -> Select:
    +2332        """
    +2333        Set the OFFSET expression.
    +2334
    +2335        Example:
    +2336            >>> Select().from_("tbl").select("x").offset(10).sql()
    +2337            'SELECT x FROM tbl OFFSET 10'
    +2338
    +2339        Args:
    +2340            expression (str | int | Expression): the SQL code string to parse.
    +2341                This can also be an integer.
    +2342                If a `Offset` instance is passed, this is used as-is.
    +2343                If another `Expression` instance is passed, it will be wrapped in a `Offset`.
    +2344            dialect (str): the dialect used to parse the input expression.
    +2345            copy (bool): if `False`, modify this expression instance in-place.
    +2346            opts (kwargs): other options to use to parse the input expressions.
    +2347
    +2348        Returns:
    +2349            Select: the modified expression.
    +2350        """
    +2351        return _apply_builder(
    +2352            expression=expression,
    +2353            instance=self,
    +2354            arg="offset",
    +2355            into=Offset,
    +2356            prefix="OFFSET",
    +2357            dialect=dialect,
    +2358            copy=copy,
    +2359            **opts,
    +2360        )
     
    @@ -22905,42 +23402,42 @@ If another Expression instance is passed,
    -
    2322    def select(
    -2323        self,
    -2324        *expressions: ExpOrStr,
    -2325        append: bool = True,
    -2326        dialect: DialectType = None,
    -2327        copy: bool = True,
    -2328        **opts,
    -2329    ) -> Select:
    -2330        """
    -2331        Append to or set the SELECT expressions.
    -2332
    -2333        Example:
    -2334            >>> Select().select("x", "y").sql()
    -2335            'SELECT x, y'
    -2336
    -2337        Args:
    -2338            *expressions: the SQL code strings to parse.
    -2339                If an `Expression` instance is passed, it will be used as-is.
    -2340            append: if `True`, add to any existing expressions.
    -2341                Otherwise, this resets the expressions.
    -2342            dialect: the dialect used to parse the input expressions.
    -2343            copy: if `False`, modify this expression instance in-place.
    -2344            opts: other options to use to parse the input expressions.
    -2345
    -2346        Returns:
    -2347            Select: the modified expression.
    -2348        """
    -2349        return _apply_list_builder(
    -2350            *expressions,
    -2351            instance=self,
    -2352            arg="expressions",
    -2353            append=append,
    -2354            dialect=dialect,
    -2355            copy=copy,
    -2356            **opts,
    -2357        )
    +            
    2362    def select(
    +2363        self,
    +2364        *expressions: ExpOrStr,
    +2365        append: bool = True,
    +2366        dialect: DialectType = None,
    +2367        copy: bool = True,
    +2368        **opts,
    +2369    ) -> Select:
    +2370        """
    +2371        Append to or set the SELECT expressions.
    +2372
    +2373        Example:
    +2374            >>> Select().select("x", "y").sql()
    +2375            'SELECT x, y'
    +2376
    +2377        Args:
    +2378            *expressions: the SQL code strings to parse.
    +2379                If an `Expression` instance is passed, it will be used as-is.
    +2380            append: if `True`, add to any existing expressions.
    +2381                Otherwise, this resets the expressions.
    +2382            dialect: the dialect used to parse the input expressions.
    +2383            copy: if `False`, modify this expression instance in-place.
    +2384            opts: other options to use to parse the input expressions.
    +2385
    +2386        Returns:
    +2387            Select: the modified expression.
    +2388        """
    +2389        return _apply_list_builder(
    +2390            *expressions,
    +2391            instance=self,
    +2392            arg="expressions",
    +2393            append=append,
    +2394            dialect=dialect,
    +2395            copy=copy,
    +2396            **opts,
    +2397        )
     
    @@ -22988,37 +23485,37 @@ Otherwise, this resets the expressions.
    -
    2359    def lateral(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select:
    -2360        """
    -2361        Append to or set the LATERAL expressions.
    -2362
    -2363        Example:
    -2364            >>> Select().select("x").lateral("OUTER explode(y) tbl2 AS z").from_("tbl").sql()
    -2365            'SELECT x FROM tbl LATERAL VIEW OUTER EXPLODE(y) tbl2 AS z'
    -2366
    -2367        Args:
    -2368            *expressions (str | Expression): the SQL code strings to parse.
    -2369                If an `Expression` instance is passed, it will be used as-is.
    -2370            append (bool): if `True`, add to any existing expressions.
    -2371                Otherwise, this resets the expressions.
    -2372            dialect (str): the dialect used to parse the input expressions.
    -2373            copy (bool): if `False`, modify this expression instance in-place.
    -2374            opts (kwargs): other options to use to parse the input expressions.
    -2375
    -2376        Returns:
    -2377            Select: the modified expression.
    -2378        """
    -2379        return _apply_list_builder(
    -2380            *expressions,
    -2381            instance=self,
    -2382            arg="laterals",
    -2383            append=append,
    -2384            into=Lateral,
    -2385            prefix="LATERAL VIEW",
    -2386            dialect=dialect,
    -2387            copy=copy,
    -2388            **opts,
    -2389        )
    +            
    2399    def lateral(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select:
    +2400        """
    +2401        Append to or set the LATERAL expressions.
    +2402
    +2403        Example:
    +2404            >>> Select().select("x").lateral("OUTER explode(y) tbl2 AS z").from_("tbl").sql()
    +2405            'SELECT x FROM tbl LATERAL VIEW OUTER EXPLODE(y) tbl2 AS z'
    +2406
    +2407        Args:
    +2408            *expressions (str | Expression): the SQL code strings to parse.
    +2409                If an `Expression` instance is passed, it will be used as-is.
    +2410            append (bool): if `True`, add to any existing expressions.
    +2411                Otherwise, this resets the expressions.
    +2412            dialect (str): the dialect used to parse the input expressions.
    +2413            copy (bool): if `False`, modify this expression instance in-place.
    +2414            opts (kwargs): other options to use to parse the input expressions.
    +2415
    +2416        Returns:
    +2417            Select: the modified expression.
    +2418        """
    +2419        return _apply_list_builder(
    +2420            *expressions,
    +2421            instance=self,
    +2422            arg="laterals",
    +2423            append=append,
    +2424            into=Lateral,
    +2425            prefix="LATERAL VIEW",
    +2426            dialect=dialect,
    +2427            copy=copy,
    +2428            **opts,
    +2429        )
     
    @@ -23066,100 +23563,100 @@ Otherwise, this resets the expressions.
    -
    2391    def join(
    -2392        self,
    -2393        expression,
    -2394        on=None,
    -2395        using=None,
    -2396        append=True,
    -2397        join_type=None,
    -2398        join_alias=None,
    -2399        dialect=None,
    -2400        copy=True,
    -2401        **opts,
    -2402    ) -> Select:
    -2403        """
    -2404        Append to or set the JOIN expressions.
    -2405
    -2406        Example:
    -2407            >>> Select().select("*").from_("tbl").join("tbl2", on="tbl1.y = tbl2.y").sql()
    -2408            'SELECT * FROM tbl JOIN tbl2 ON tbl1.y = tbl2.y'
    -2409
    -2410            >>> Select().select("1").from_("a").join("b", using=["x", "y", "z"]).sql()
    -2411            'SELECT 1 FROM a JOIN b USING (x, y, z)'
    -2412
    -2413            Use `join_type` to change the type of join:
    -2414
    -2415            >>> Select().select("*").from_("tbl").join("tbl2", on="tbl1.y = tbl2.y", join_type="left outer").sql()
    -2416            'SELECT * FROM tbl LEFT OUTER JOIN tbl2 ON tbl1.y = tbl2.y'
    -2417
    -2418        Args:
    -2419            expression (str | Expression): the SQL code string to parse.
    -2420                If an `Expression` instance is passed, it will be used as-is.
    -2421            on (str | Expression): optionally specify the join "on" criteria as a SQL string.
    -2422                If an `Expression` instance is passed, it will be used as-is.
    -2423            using (str | Expression): optionally specify the join "using" criteria as a SQL string.
    -2424                If an `Expression` instance is passed, it will be used as-is.
    -2425            append (bool): if `True`, add to any existing expressions.
    -2426                Otherwise, this resets the expressions.
    -2427            join_type (str): If set, alter the parsed join type
    -2428            dialect (str): the dialect used to parse the input expressions.
    -2429            copy (bool): if `False`, modify this expression instance in-place.
    -2430            opts (kwargs): other options to use to parse the input expressions.
    -2431
    -2432        Returns:
    -2433            Select: the modified expression.
    -2434        """
    -2435        parse_args = {"dialect": dialect, **opts}
    -2436
    -2437        try:
    -2438            expression = maybe_parse(expression, into=Join, prefix="JOIN", **parse_args)
    -2439        except ParseError:
    -2440            expression = maybe_parse(expression, into=(Join, Expression), **parse_args)
    -2441
    -2442        join = expression if isinstance(expression, Join) else Join(this=expression)
    -2443
    -2444        if isinstance(join.this, Select):
    -2445            join.this.replace(join.this.subquery())
    -2446
    -2447        if join_type:
    -2448            natural: t.Optional[Token]
    -2449            side: t.Optional[Token]
    -2450            kind: t.Optional[Token]
    -2451
    -2452            natural, side, kind = maybe_parse(join_type, into="JOIN_TYPE", **parse_args)  # type: ignore
    -2453
    -2454            if natural:
    -2455                join.set("natural", True)
    -2456            if side:
    -2457                join.set("side", side.text)
    -2458            if kind:
    -2459                join.set("kind", kind.text)
    -2460
    -2461        if on:
    -2462            on = and_(*ensure_collection(on), dialect=dialect, **opts)
    -2463            join.set("on", on)
    -2464
    -2465        if using:
    -2466            join = _apply_list_builder(
    -2467                *ensure_collection(using),
    -2468                instance=join,
    -2469                arg="using",
    -2470                append=append,
    -2471                copy=copy,
    -2472                **opts,
    -2473            )
    -2474
    -2475        if join_alias:
    -2476            join.set("this", alias_(join.this, join_alias, table=True))
    -2477        return _apply_list_builder(
    -2478            join,
    -2479            instance=self,
    -2480            arg="joins",
    -2481            append=append,
    -2482            copy=copy,
    -2483            **opts,
    -2484        )
    +            
    2431    def join(
    +2432        self,
    +2433        expression,
    +2434        on=None,
    +2435        using=None,
    +2436        append=True,
    +2437        join_type=None,
    +2438        join_alias=None,
    +2439        dialect=None,
    +2440        copy=True,
    +2441        **opts,
    +2442    ) -> Select:
    +2443        """
    +2444        Append to or set the JOIN expressions.
    +2445
    +2446        Example:
    +2447            >>> Select().select("*").from_("tbl").join("tbl2", on="tbl1.y = tbl2.y").sql()
    +2448            'SELECT * FROM tbl JOIN tbl2 ON tbl1.y = tbl2.y'
    +2449
    +2450            >>> Select().select("1").from_("a").join("b", using=["x", "y", "z"]).sql()
    +2451            'SELECT 1 FROM a JOIN b USING (x, y, z)'
    +2452
    +2453            Use `join_type` to change the type of join:
    +2454
    +2455            >>> Select().select("*").from_("tbl").join("tbl2", on="tbl1.y = tbl2.y", join_type="left outer").sql()
    +2456            'SELECT * FROM tbl LEFT OUTER JOIN tbl2 ON tbl1.y = tbl2.y'
    +2457
    +2458        Args:
    +2459            expression (str | Expression): the SQL code string to parse.
    +2460                If an `Expression` instance is passed, it will be used as-is.
    +2461            on (str | Expression): optionally specify the join "on" criteria as a SQL string.
    +2462                If an `Expression` instance is passed, it will be used as-is.
    +2463            using (str | Expression): optionally specify the join "using" criteria as a SQL string.
    +2464                If an `Expression` instance is passed, it will be used as-is.
    +2465            append (bool): if `True`, add to any existing expressions.
    +2466                Otherwise, this resets the expressions.
    +2467            join_type (str): If set, alter the parsed join type
    +2468            dialect (str): the dialect used to parse the input expressions.
    +2469            copy (bool): if `False`, modify this expression instance in-place.
    +2470            opts (kwargs): other options to use to parse the input expressions.
    +2471
    +2472        Returns:
    +2473            Select: the modified expression.
    +2474        """
    +2475        parse_args = {"dialect": dialect, **opts}
    +2476
    +2477        try:
    +2478            expression = maybe_parse(expression, into=Join, prefix="JOIN", **parse_args)
    +2479        except ParseError:
    +2480            expression = maybe_parse(expression, into=(Join, Expression), **parse_args)
    +2481
    +2482        join = expression if isinstance(expression, Join) else Join(this=expression)
    +2483
    +2484        if isinstance(join.this, Select):
    +2485            join.this.replace(join.this.subquery())
    +2486
    +2487        if join_type:
    +2488            natural: t.Optional[Token]
    +2489            side: t.Optional[Token]
    +2490            kind: t.Optional[Token]
    +2491
    +2492            natural, side, kind = maybe_parse(join_type, into="JOIN_TYPE", **parse_args)  # type: ignore
    +2493
    +2494            if natural:
    +2495                join.set("natural", True)
    +2496            if side:
    +2497                join.set("side", side.text)
    +2498            if kind:
    +2499                join.set("kind", kind.text)
    +2500
    +2501        if on:
    +2502            on = and_(*ensure_collection(on), dialect=dialect, **opts)
    +2503            join.set("on", on)
    +2504
    +2505        if using:
    +2506            join = _apply_list_builder(
    +2507                *ensure_collection(using),
    +2508                instance=join,
    +2509                arg="using",
    +2510                append=append,
    +2511                copy=copy,
    +2512                **opts,
    +2513            )
    +2514
    +2515        if join_alias:
    +2516            join.set("this", alias_(join.this, join_alias, table=True))
    +2517        return _apply_list_builder(
    +2518            join,
    +2519            instance=self,
    +2520            arg="joins",
    +2521            append=append,
    +2522            copy=copy,
    +2523            **opts,
    +2524        )
     
    @@ -23226,37 +23723,37 @@ Otherwise, this resets the expressions.
    -
    2486    def where(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select:
    -2487        """
    -2488        Append to or set the WHERE expressions.
    -2489
    -2490        Example:
    -2491            >>> Select().select("x").from_("tbl").where("x = 'a' OR x < 'b'").sql()
    -2492            "SELECT x FROM tbl WHERE x = 'a' OR x < 'b'"
    -2493
    -2494        Args:
    -2495            *expressions (str | Expression): the SQL code strings to parse.
    -2496                If an `Expression` instance is passed, it will be used as-is.
    -2497                Multiple expressions are combined with an AND operator.
    -2498            append (bool): if `True`, AND the new expressions to any existing expression.
    -2499                Otherwise, this resets the expression.
    -2500            dialect (str): the dialect used to parse the input expressions.
    -2501            copy (bool): if `False`, modify this expression instance in-place.
    -2502            opts (kwargs): other options to use to parse the input expressions.
    -2503
    -2504        Returns:
    -2505            Select: the modified expression.
    -2506        """
    -2507        return _apply_conjunction_builder(
    -2508            *expressions,
    -2509            instance=self,
    -2510            arg="where",
    -2511            append=append,
    -2512            into=Where,
    -2513            dialect=dialect,
    -2514            copy=copy,
    -2515            **opts,
    -2516        )
    +            
    2526    def where(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select:
    +2527        """
    +2528        Append to or set the WHERE expressions.
    +2529
    +2530        Example:
    +2531            >>> Select().select("x").from_("tbl").where("x = 'a' OR x < 'b'").sql()
    +2532            "SELECT x FROM tbl WHERE x = 'a' OR x < 'b'"
    +2533
    +2534        Args:
    +2535            *expressions (str | Expression): the SQL code strings to parse.
    +2536                If an `Expression` instance is passed, it will be used as-is.
    +2537                Multiple expressions are combined with an AND operator.
    +2538            append (bool): if `True`, AND the new expressions to any existing expression.
    +2539                Otherwise, this resets the expression.
    +2540            dialect (str): the dialect used to parse the input expressions.
    +2541            copy (bool): if `False`, modify this expression instance in-place.
    +2542            opts (kwargs): other options to use to parse the input expressions.
    +2543
    +2544        Returns:
    +2545            Select: the modified expression.
    +2546        """
    +2547        return _apply_conjunction_builder(
    +2548            *expressions,
    +2549            instance=self,
    +2550            arg="where",
    +2551            append=append,
    +2552            into=Where,
    +2553            dialect=dialect,
    +2554            copy=copy,
    +2555            **opts,
    +2556        )
     
    @@ -23305,37 +23802,37 @@ Otherwise, this resets the expression.
    -
    2518    def having(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select:
    -2519        """
    -2520        Append to or set the HAVING expressions.
    -2521
    -2522        Example:
    -2523            >>> Select().select("x", "COUNT(y)").from_("tbl").group_by("x").having("COUNT(y) > 3").sql()
    -2524            'SELECT x, COUNT(y) FROM tbl GROUP BY x HAVING COUNT(y) > 3'
    -2525
    -2526        Args:
    -2527            *expressions (str | Expression): the SQL code strings to parse.
    -2528                If an `Expression` instance is passed, it will be used as-is.
    -2529                Multiple expressions are combined with an AND operator.
    -2530            append (bool): if `True`, AND the new expressions to any existing expression.
    -2531                Otherwise, this resets the expression.
    -2532            dialect (str): the dialect used to parse the input expressions.
    -2533            copy (bool): if `False`, modify this expression instance in-place.
    -2534            opts (kwargs): other options to use to parse the input expressions.
    -2535
    -2536        Returns:
    -2537            Select: the modified expression.
    -2538        """
    -2539        return _apply_conjunction_builder(
    -2540            *expressions,
    -2541            instance=self,
    -2542            arg="having",
    -2543            append=append,
    -2544            into=Having,
    -2545            dialect=dialect,
    -2546            copy=copy,
    -2547            **opts,
    -2548        )
    +            
    2558    def having(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select:
    +2559        """
    +2560        Append to or set the HAVING expressions.
    +2561
    +2562        Example:
    +2563            >>> Select().select("x", "COUNT(y)").from_("tbl").group_by("x").having("COUNT(y) > 3").sql()
    +2564            'SELECT x, COUNT(y) FROM tbl GROUP BY x HAVING COUNT(y) > 3'
    +2565
    +2566        Args:
    +2567            *expressions (str | Expression): the SQL code strings to parse.
    +2568                If an `Expression` instance is passed, it will be used as-is.
    +2569                Multiple expressions are combined with an AND operator.
    +2570            append (bool): if `True`, AND the new expressions to any existing expression.
    +2571                Otherwise, this resets the expression.
    +2572            dialect (str): the dialect used to parse the input expressions.
    +2573            copy (bool): if `False`, modify this expression instance in-place.
    +2574            opts (kwargs): other options to use to parse the input expressions.
    +2575
    +2576        Returns:
    +2577            Select: the modified expression.
    +2578        """
    +2579        return _apply_conjunction_builder(
    +2580            *expressions,
    +2581            instance=self,
    +2582            arg="having",
    +2583            append=append,
    +2584            into=Having,
    +2585            dialect=dialect,
    +2586            copy=copy,
    +2587            **opts,
    +2588        )
     
    @@ -23384,17 +23881,17 @@ Otherwise, this resets the expression.
    -
    2550    def window(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select:
    -2551        return _apply_list_builder(
    -2552            *expressions,
    -2553            instance=self,
    -2554            arg="windows",
    -2555            append=append,
    -2556            into=Window,
    -2557            dialect=dialect,
    -2558            copy=copy,
    -2559            **opts,
    -2560        )
    +            
    2590    def window(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select:
    +2591        return _apply_list_builder(
    +2592            *expressions,
    +2593            instance=self,
    +2594            arg="windows",
    +2595            append=append,
    +2596            into=Window,
    +2597            dialect=dialect,
    +2598            copy=copy,
    +2599            **opts,
    +2600        )
     
    @@ -23412,17 +23909,17 @@ Otherwise, this resets the expression.
    -
    2562    def qualify(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select:
    -2563        return _apply_conjunction_builder(
    -2564            *expressions,
    -2565            instance=self,
    -2566            arg="qualify",
    -2567            append=append,
    -2568            into=Qualify,
    -2569            dialect=dialect,
    -2570            copy=copy,
    -2571            **opts,
    -2572        )
    +            
    2602    def qualify(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select:
    +2603        return _apply_conjunction_builder(
    +2604            *expressions,
    +2605            instance=self,
    +2606            arg="qualify",
    +2607            append=append,
    +2608            into=Qualify,
    +2609            dialect=dialect,
    +2610            copy=copy,
    +2611            **opts,
    +2612        )
     
    @@ -23440,24 +23937,24 @@ Otherwise, this resets the expression.
    -
    2574    def distinct(self, distinct=True, copy=True) -> Select:
    -2575        """
    -2576        Set the OFFSET expression.
    -2577
    -2578        Example:
    -2579            >>> Select().from_("tbl").select("x").distinct().sql()
    -2580            'SELECT DISTINCT x FROM tbl'
    -2581
    -2582        Args:
    -2583            distinct (bool): whether the Select should be distinct
    -2584            copy (bool): if `False`, modify this expression instance in-place.
    -2585
    -2586        Returns:
    -2587            Select: the modified expression.
    -2588        """
    -2589        instance = _maybe_copy(self, copy)
    -2590        instance.set("distinct", Distinct() if distinct else None)
    -2591        return instance
    +            
    2614    def distinct(self, distinct=True, copy=True) -> Select:
    +2615        """
    +2616        Set the OFFSET expression.
    +2617
    +2618        Example:
    +2619            >>> Select().from_("tbl").select("x").distinct().sql()
    +2620            'SELECT DISTINCT x FROM tbl'
    +2621
    +2622        Args:
    +2623            distinct (bool): whether the Select should be distinct
    +2624            copy (bool): if `False`, modify this expression instance in-place.
    +2625
    +2626        Returns:
    +2627            Select: the modified expression.
    +2628        """
    +2629        instance = _maybe_copy(self, copy)
    +2630        instance.set("distinct", Distinct() if distinct else None)
    +2631        return instance
     
    @@ -23500,42 +23997,42 @@ Otherwise, this resets the expression.
    -
    2593    def ctas(self, table, properties=None, dialect=None, copy=True, **opts) -> Create:
    -2594        """
    -2595        Convert this expression to a CREATE TABLE AS statement.
    -2596
    -2597        Example:
    -2598            >>> Select().select("*").from_("tbl").ctas("x").sql()
    -2599            'CREATE TABLE x AS SELECT * FROM tbl'
    -2600
    -2601        Args:
    -2602            table (str | Expression): the SQL code string to parse as the table name.
    -2603                If another `Expression` instance is passed, it will be used as-is.
    -2604            properties (dict): an optional mapping of table properties
    -2605            dialect (str): the dialect used to parse the input table.
    -2606            copy (bool): if `False`, modify this expression instance in-place.
    -2607            opts (kwargs): other options to use to parse the input table.
    -2608
    -2609        Returns:
    -2610            Create: the CREATE TABLE AS expression
    -2611        """
    -2612        instance = _maybe_copy(self, copy)
    -2613        table_expression = maybe_parse(
    -2614            table,
    -2615            into=Table,
    -2616            dialect=dialect,
    -2617            **opts,
    -2618        )
    -2619        properties_expression = None
    -2620        if properties:
    -2621            properties_expression = Properties.from_dict(properties)
    -2622
    -2623        return Create(
    -2624            this=table_expression,
    -2625            kind="table",
    -2626            expression=instance,
    -2627            properties=properties_expression,
    -2628        )
    +            
    2633    def ctas(self, table, properties=None, dialect=None, copy=True, **opts) -> Create:
    +2634        """
    +2635        Convert this expression to a CREATE TABLE AS statement.
    +2636
    +2637        Example:
    +2638            >>> Select().select("*").from_("tbl").ctas("x").sql()
    +2639            'CREATE TABLE x AS SELECT * FROM tbl'
    +2640
    +2641        Args:
    +2642            table (str | Expression): the SQL code string to parse as the table name.
    +2643                If another `Expression` instance is passed, it will be used as-is.
    +2644            properties (dict): an optional mapping of table properties
    +2645            dialect (str): the dialect used to parse the input table.
    +2646            copy (bool): if `False`, modify this expression instance in-place.
    +2647            opts (kwargs): other options to use to parse the input table.
    +2648
    +2649        Returns:
    +2650            Create: the CREATE TABLE AS expression
    +2651        """
    +2652        instance = _maybe_copy(self, copy)
    +2653        table_expression = maybe_parse(
    +2654            table,
    +2655            into=Table,
    +2656            dialect=dialect,
    +2657            **opts,
    +2658        )
    +2659        properties_expression = None
    +2660        if properties:
    +2661            properties_expression = Properties.from_dict(properties)
    +2662
    +2663        return Create(
    +2664            this=table_expression,
    +2665            kind="table",
    +2666            expression=instance,
    +2667            properties=properties_expression,
    +2668        )
     
    @@ -23582,29 +24079,29 @@ If another Expression instance is passed,
    -
    2630    def lock(self, update: bool = True, copy: bool = True) -> Select:
    -2631        """
    -2632        Set the locking read mode for this expression.
    -2633
    -2634        Examples:
    -2635            >>> Select().select("x").from_("tbl").where("x = 'a'").lock().sql("mysql")
    -2636            "SELECT x FROM tbl WHERE x = 'a' FOR UPDATE"
    -2637
    -2638            >>> Select().select("x").from_("tbl").where("x = 'a'").lock(update=False).sql("mysql")
    -2639            "SELECT x FROM tbl WHERE x = 'a' FOR SHARE"
    -2640
    -2641        Args:
    -2642            update: if `True`, the locking type will be `FOR UPDATE`, else it will be `FOR SHARE`.
    -2643            copy: if `False`, modify this expression instance in-place.
    -2644
    -2645        Returns:
    -2646            The modified expression.
    -2647        """
    -2648
    -2649        inst = _maybe_copy(self, copy)
    -2650        inst.set("lock", Lock(update=update))
    -2651
    -2652        return inst
    +            
    2670    def lock(self, update: bool = True, copy: bool = True) -> Select:
    +2671        """
    +2672        Set the locking read mode for this expression.
    +2673
    +2674        Examples:
    +2675            >>> Select().select("x").from_("tbl").where("x = 'a'").lock().sql("mysql")
    +2676            "SELECT x FROM tbl WHERE x = 'a' FOR UPDATE"
    +2677
    +2678            >>> Select().select("x").from_("tbl").where("x = 'a'").lock(update=False).sql("mysql")
    +2679            "SELECT x FROM tbl WHERE x = 'a' FOR SHARE"
    +2680
    +2681        Args:
    +2682            update: if `True`, the locking type will be `FOR UPDATE`, else it will be `FOR SHARE`.
    +2683            copy: if `False`, modify this expression instance in-place.
    +2684
    +2685        Returns:
    +2686            The modified expression.
    +2687        """
    +2688
    +2689        inst = _maybe_copy(self, copy)
    +2690        inst.set("lock", Lock(update=update))
    +2691
    +2692        return inst
     
    @@ -23722,30 +24219,30 @@ If another Expression instance is passed,
    -
    2667class Subquery(DerivedTable, Unionable):
    -2668    arg_types = {
    -2669        "this": True,
    -2670        "alias": False,
    -2671        "with": False,
    -2672        **QUERY_MODIFIERS,
    -2673    }
    -2674
    -2675    def unnest(self):
    -2676        """
    -2677        Returns the first non subquery.
    -2678        """
    -2679        expression = self
    -2680        while isinstance(expression, Subquery):
    -2681            expression = expression.this
    -2682        return expression
    -2683
    -2684    @property
    -2685    def is_star(self) -> bool:
    -2686        return self.this.is_star
    -2687
    -2688    @property
    -2689    def output_name(self):
    -2690        return self.alias
    +            
    2707class Subquery(DerivedTable, Unionable):
    +2708    arg_types = {
    +2709        "this": True,
    +2710        "alias": False,
    +2711        "with": False,
    +2712        **QUERY_MODIFIERS,
    +2713    }
    +2714
    +2715    def unnest(self):
    +2716        """
    +2717        Returns the first non subquery.
    +2718        """
    +2719        expression = self
    +2720        while isinstance(expression, Subquery):
    +2721            expression = expression.this
    +2722        return expression
    +2723
    +2724    @property
    +2725    def is_star(self) -> bool:
    +2726        return self.this.is_star
    +2727
    +2728    @property
    +2729    def output_name(self):
    +2730        return self.alias
     
    @@ -23762,14 +24259,14 @@ If another Expression instance is passed,
    -
    2675    def unnest(self):
    -2676        """
    -2677        Returns the first non subquery.
    -2678        """
    -2679        expression = self
    -2680        while isinstance(expression, Subquery):
    -2681            expression = expression.this
    -2682        return expression
    +            
    2715    def unnest(self):
    +2716        """
    +2717        Returns the first non subquery.
    +2718        """
    +2719        expression = self
    +2720        while isinstance(expression, Subquery):
    +2721            expression = expression.this
    +2722        return expression
     
    @@ -23881,19 +24378,19 @@ If another Expression instance is passed,
    -
    2693class TableSample(Expression):
    -2694    arg_types = {
    -2695        "this": False,
    -2696        "method": False,
    -2697        "bucket_numerator": False,
    -2698        "bucket_denominator": False,
    -2699        "bucket_field": False,
    -2700        "percent": False,
    -2701        "rows": False,
    -2702        "size": False,
    -2703        "seed": False,
    -2704        "kind": False,
    -2705    }
    +            
    2733class TableSample(Expression):
    +2734    arg_types = {
    +2735        "this": False,
    +2736        "method": False,
    +2737        "bucket_numerator": False,
    +2738        "bucket_denominator": False,
    +2739        "bucket_field": False,
    +2740        "percent": False,
    +2741        "rows": False,
    +2742        "size": False,
    +2743        "seed": False,
    +2744        "kind": False,
    +2745    }
     
    @@ -23956,14 +24453,14 @@ If another Expression instance is passed,
    -
    2708class Tag(Expression):
    -2709    """Tags are used for generating arbitrary sql like SELECT <span>x</span>."""
    -2710
    -2711    arg_types = {
    -2712        "this": False,
    -2713        "prefix": False,
    -2714        "postfix": False,
    -2715    }
    +            
    2748class Tag(Expression):
    +2749    """Tags are used for generating arbitrary sql like SELECT <span>x</span>."""
    +2750
    +2751    arg_types = {
    +2752        "this": False,
    +2753        "prefix": False,
    +2754        "postfix": False,
    +2755    }
     
    @@ -24028,14 +24525,15 @@ If another Expression instance is passed,
    -
    2718class Pivot(Expression):
    -2719    arg_types = {
    -2720        "this": False,
    -2721        "alias": False,
    -2722        "expressions": True,
    -2723        "field": True,
    -2724        "unpivot": True,
    -2725    }
    +            
    2758class Pivot(Expression):
    +2759    arg_types = {
    +2760        "this": False,
    +2761        "alias": False,
    +2762        "expressions": True,
    +2763        "field": True,
    +2764        "unpivot": True,
    +2765        "columns": False,
    +2766    }
     
    @@ -24098,14 +24596,14 @@ If another Expression instance is passed,
    -
    2728class Window(Expression):
    -2729    arg_types = {
    -2730        "this": True,
    -2731        "partition_by": False,
    -2732        "order": False,
    -2733        "spec": False,
    -2734        "alias": False,
    -2735    }
    +            
    2769class Window(Expression):
    +2770    arg_types = {
    +2771        "this": True,
    +2772        "partition_by": False,
    +2773        "order": False,
    +2774        "spec": False,
    +2775        "alias": False,
    +2776    }
     
    @@ -24168,14 +24666,14 @@ If another Expression instance is passed,
    -
    2738class WindowSpec(Expression):
    -2739    arg_types = {
    -2740        "kind": False,
    -2741        "start": False,
    -2742        "start_side": False,
    -2743        "end": False,
    -2744        "end_side": False,
    -2745    }
    +            
    2779class WindowSpec(Expression):
    +2780    arg_types = {
    +2781        "kind": False,
    +2782        "start": False,
    +2783        "start_side": False,
    +2784        "end": False,
    +2785        "end_side": False,
    +2786    }
     
    @@ -24238,8 +24736,8 @@ If another Expression instance is passed,
    -
    2748class Where(Expression):
    -2749    pass
    +            
    2789class Where(Expression):
    +2790    pass
     
    @@ -24302,16 +24800,16 @@ If another Expression instance is passed,
    -
    2752class Star(Expression):
    -2753    arg_types = {"except": False, "replace": False}
    -2754
    -2755    @property
    -2756    def name(self) -> str:
    -2757        return "*"
    -2758
    -2759    @property
    -2760    def output_name(self):
    -2761        return self.name
    +            
    2793class Star(Expression):
    +2794    arg_types = {"except": False, "replace": False}
    +2795
    +2796    @property
    +2797    def name(self) -> str:
    +2798        return "*"
    +2799
    +2800    @property
    +2801    def output_name(self):
    +2802        return self.name
     
    @@ -24403,8 +24901,8 @@ If another Expression instance is passed,
    -
    2764class Parameter(Expression):
    -2765    arg_types = {"this": True, "wrapped": False}
    +            
    2805class Parameter(Expression):
    +2806    arg_types = {"this": True, "wrapped": False}
     
    @@ -24467,8 +24965,8 @@ If another Expression instance is passed,
    -
    2768class SessionParameter(Expression):
    -2769    arg_types = {"this": True, "kind": False}
    +            
    2809class SessionParameter(Expression):
    +2810    arg_types = {"this": True, "kind": False}
     
    @@ -24531,8 +25029,8 @@ If another Expression instance is passed,
    -
    2772class Placeholder(Expression):
    -2773    arg_types = {"this": False}
    +            
    2813class Placeholder(Expression):
    +2814    arg_types = {"this": False}
     
    @@ -24595,12 +25093,12 @@ If another Expression instance is passed,
    -
    2776class Null(Condition):
    -2777    arg_types: t.Dict[str, t.Any] = {}
    -2778
    -2779    @property
    -2780    def name(self) -> str:
    -2781        return "NULL"
    +            
    2817class Null(Condition):
    +2818    arg_types: t.Dict[str, t.Any] = {}
    +2819
    +2820    @property
    +2821    def name(self) -> str:
    +2822        return "NULL"
     
    @@ -24669,8 +25167,8 @@ If another Expression instance is passed,
    -
    2784class Boolean(Condition):
    -2785    pass
    +            
    2825class Boolean(Condition):
    +2826    pass
     
    @@ -24739,127 +25237,128 @@ If another Expression instance is passed,
    -
    2788class DataType(Expression):
    -2789    arg_types = {
    -2790        "this": True,
    -2791        "expressions": False,
    -2792        "nested": False,
    -2793        "values": False,
    -2794        "prefix": False,
    -2795    }
    -2796
    -2797    class Type(AutoName):
    -2798        CHAR = auto()
    -2799        NCHAR = auto()
    -2800        VARCHAR = auto()
    -2801        NVARCHAR = auto()
    -2802        TEXT = auto()
    -2803        MEDIUMTEXT = auto()
    -2804        LONGTEXT = auto()
    -2805        MEDIUMBLOB = auto()
    -2806        LONGBLOB = auto()
    -2807        BINARY = auto()
    -2808        VARBINARY = auto()
    -2809        INT = auto()
    -2810        UINT = auto()
    -2811        TINYINT = auto()
    -2812        UTINYINT = auto()
    -2813        SMALLINT = auto()
    -2814        USMALLINT = auto()
    -2815        BIGINT = auto()
    -2816        UBIGINT = auto()
    -2817        FLOAT = auto()
    -2818        DOUBLE = auto()
    -2819        DECIMAL = auto()
    -2820        BIT = auto()
    -2821        BOOLEAN = auto()
    -2822        JSON = auto()
    -2823        JSONB = auto()
    -2824        INTERVAL = auto()
    -2825        TIME = auto()
    -2826        TIMESTAMP = auto()
    -2827        TIMESTAMPTZ = auto()
    -2828        TIMESTAMPLTZ = auto()
    -2829        DATE = auto()
    -2830        DATETIME = auto()
    -2831        ARRAY = auto()
    -2832        MAP = auto()
    -2833        UUID = auto()
    -2834        GEOGRAPHY = auto()
    -2835        GEOMETRY = auto()
    -2836        STRUCT = auto()
    -2837        NULLABLE = auto()
    -2838        HLLSKETCH = auto()
    -2839        HSTORE = auto()
    -2840        SUPER = auto()
    -2841        SERIAL = auto()
    -2842        SMALLSERIAL = auto()
    -2843        BIGSERIAL = auto()
    -2844        XML = auto()
    -2845        UNIQUEIDENTIFIER = auto()
    -2846        MONEY = auto()
    -2847        SMALLMONEY = auto()
    -2848        ROWVERSION = auto()
    -2849        IMAGE = auto()
    -2850        VARIANT = auto()
    -2851        OBJECT = auto()
    -2852        INET = auto()
    -2853        NULL = auto()
    -2854        UNKNOWN = auto()  # Sentinel value, useful for type annotation
    -2855
    -2856    TEXT_TYPES = {
    -2857        Type.CHAR,
    -2858        Type.NCHAR,
    -2859        Type.VARCHAR,
    -2860        Type.NVARCHAR,
    -2861        Type.TEXT,
    -2862    }
    -2863
    -2864    INTEGER_TYPES = {
    -2865        Type.INT,
    -2866        Type.TINYINT,
    -2867        Type.SMALLINT,
    -2868        Type.BIGINT,
    -2869    }
    -2870
    -2871    FLOAT_TYPES = {
    -2872        Type.FLOAT,
    -2873        Type.DOUBLE,
    -2874    }
    -2875
    -2876    NUMERIC_TYPES = {*INTEGER_TYPES, *FLOAT_TYPES}
    -2877
    -2878    TEMPORAL_TYPES = {
    -2879        Type.TIMESTAMP,
    -2880        Type.TIMESTAMPTZ,
    -2881        Type.TIMESTAMPLTZ,
    -2882        Type.DATE,
    -2883        Type.DATETIME,
    -2884    }
    -2885
    -2886    @classmethod
    -2887    def build(
    -2888        cls, dtype: str | DataType | DataType.Type, dialect: DialectType = None, **kwargs
    -2889    ) -> DataType:
    -2890        from sqlglot import parse_one
    -2891
    -2892        if isinstance(dtype, str):
    -2893            if dtype.upper() in cls.Type.__members__:
    -2894                data_type_exp: t.Optional[Expression] = DataType(this=DataType.Type[dtype.upper()])
    -2895            else:
    -2896                data_type_exp = parse_one(dtype, read=dialect, into=DataType)
    -2897            if data_type_exp is None:
    -2898                raise ValueError(f"Unparsable data type value: {dtype}")
    -2899        elif isinstance(dtype, DataType.Type):
    -2900            data_type_exp = DataType(this=dtype)
    -2901        elif isinstance(dtype, DataType):
    -2902            return dtype
    -2903        else:
    -2904            raise ValueError(f"Invalid data type: {type(dtype)}. Expected str or DataType.Type")
    -2905        return DataType(**{**data_type_exp.args, **kwargs})
    -2906
    -2907    def is_type(self, dtype: DataType.Type) -> bool:
    -2908        return self.this == dtype
    +            
    2829class DataType(Expression):
    +2830    arg_types = {
    +2831        "this": True,
    +2832        "expressions": False,
    +2833        "nested": False,
    +2834        "values": False,
    +2835        "prefix": False,
    +2836    }
    +2837
    +2838    class Type(AutoName):
    +2839        CHAR = auto()
    +2840        NCHAR = auto()
    +2841        VARCHAR = auto()
    +2842        NVARCHAR = auto()
    +2843        TEXT = auto()
    +2844        MEDIUMTEXT = auto()
    +2845        LONGTEXT = auto()
    +2846        MEDIUMBLOB = auto()
    +2847        LONGBLOB = auto()
    +2848        BINARY = auto()
    +2849        VARBINARY = auto()
    +2850        INT = auto()
    +2851        UINT = auto()
    +2852        TINYINT = auto()
    +2853        UTINYINT = auto()
    +2854        SMALLINT = auto()
    +2855        USMALLINT = auto()
    +2856        BIGINT = auto()
    +2857        UBIGINT = auto()
    +2858        FLOAT = auto()
    +2859        DOUBLE = auto()
    +2860        DECIMAL = auto()
    +2861        BIGDECIMAL = auto()
    +2862        BIT = auto()
    +2863        BOOLEAN = auto()
    +2864        JSON = auto()
    +2865        JSONB = auto()
    +2866        INTERVAL = auto()
    +2867        TIME = auto()
    +2868        TIMESTAMP = auto()
    +2869        TIMESTAMPTZ = auto()
    +2870        TIMESTAMPLTZ = auto()
    +2871        DATE = auto()
    +2872        DATETIME = auto()
    +2873        ARRAY = auto()
    +2874        MAP = auto()
    +2875        UUID = auto()
    +2876        GEOGRAPHY = auto()
    +2877        GEOMETRY = auto()
    +2878        STRUCT = auto()
    +2879        NULLABLE = auto()
    +2880        HLLSKETCH = auto()
    +2881        HSTORE = auto()
    +2882        SUPER = auto()
    +2883        SERIAL = auto()
    +2884        SMALLSERIAL = auto()
    +2885        BIGSERIAL = auto()
    +2886        XML = auto()
    +2887        UNIQUEIDENTIFIER = auto()
    +2888        MONEY = auto()
    +2889        SMALLMONEY = auto()
    +2890        ROWVERSION = auto()
    +2891        IMAGE = auto()
    +2892        VARIANT = auto()
    +2893        OBJECT = auto()
    +2894        INET = auto()
    +2895        NULL = auto()
    +2896        UNKNOWN = auto()  # Sentinel value, useful for type annotation
    +2897
    +2898    TEXT_TYPES = {
    +2899        Type.CHAR,
    +2900        Type.NCHAR,
    +2901        Type.VARCHAR,
    +2902        Type.NVARCHAR,
    +2903        Type.TEXT,
    +2904    }
    +2905
    +2906    INTEGER_TYPES = {
    +2907        Type.INT,
    +2908        Type.TINYINT,
    +2909        Type.SMALLINT,
    +2910        Type.BIGINT,
    +2911    }
    +2912
    +2913    FLOAT_TYPES = {
    +2914        Type.FLOAT,
    +2915        Type.DOUBLE,
    +2916    }
    +2917
    +2918    NUMERIC_TYPES = {*INTEGER_TYPES, *FLOAT_TYPES}
    +2919
    +2920    TEMPORAL_TYPES = {
    +2921        Type.TIMESTAMP,
    +2922        Type.TIMESTAMPTZ,
    +2923        Type.TIMESTAMPLTZ,
    +2924        Type.DATE,
    +2925        Type.DATETIME,
    +2926    }
    +2927
    +2928    @classmethod
    +2929    def build(
    +2930        cls, dtype: str | DataType | DataType.Type, dialect: DialectType = None, **kwargs
    +2931    ) -> DataType:
    +2932        from sqlglot import parse_one
    +2933
    +2934        if isinstance(dtype, str):
    +2935            if dtype.upper() in cls.Type.__members__:
    +2936                data_type_exp: t.Optional[Expression] = DataType(this=DataType.Type[dtype.upper()])
    +2937            else:
    +2938                data_type_exp = parse_one(dtype, read=dialect, into=DataType)
    +2939            if data_type_exp is None:
    +2940                raise ValueError(f"Unparsable data type value: {dtype}")
    +2941        elif isinstance(dtype, DataType.Type):
    +2942            data_type_exp = DataType(this=dtype)
    +2943        elif isinstance(dtype, DataType):
    +2944            return dtype
    +2945        else:
    +2946            raise ValueError(f"Invalid data type: {type(dtype)}. Expected str or DataType.Type")
    +2947        return DataType(**{**data_type_exp.args, **kwargs})
    +2948
    +2949    def is_type(self, dtype: DataType.Type) -> bool:
    +2950        return self.this == dtype
     
    @@ -24877,26 +25376,26 @@ If another Expression instance is passed,
    -
    2886    @classmethod
    -2887    def build(
    -2888        cls, dtype: str | DataType | DataType.Type, dialect: DialectType = None, **kwargs
    -2889    ) -> DataType:
    -2890        from sqlglot import parse_one
    -2891
    -2892        if isinstance(dtype, str):
    -2893            if dtype.upper() in cls.Type.__members__:
    -2894                data_type_exp: t.Optional[Expression] = DataType(this=DataType.Type[dtype.upper()])
    -2895            else:
    -2896                data_type_exp = parse_one(dtype, read=dialect, into=DataType)
    -2897            if data_type_exp is None:
    -2898                raise ValueError(f"Unparsable data type value: {dtype}")
    -2899        elif isinstance(dtype, DataType.Type):
    -2900            data_type_exp = DataType(this=dtype)
    -2901        elif isinstance(dtype, DataType):
    -2902            return dtype
    -2903        else:
    -2904            raise ValueError(f"Invalid data type: {type(dtype)}. Expected str or DataType.Type")
    -2905        return DataType(**{**data_type_exp.args, **kwargs})
    +            
    2928    @classmethod
    +2929    def build(
    +2930        cls, dtype: str | DataType | DataType.Type, dialect: DialectType = None, **kwargs
    +2931    ) -> DataType:
    +2932        from sqlglot import parse_one
    +2933
    +2934        if isinstance(dtype, str):
    +2935            if dtype.upper() in cls.Type.__members__:
    +2936                data_type_exp: t.Optional[Expression] = DataType(this=DataType.Type[dtype.upper()])
    +2937            else:
    +2938                data_type_exp = parse_one(dtype, read=dialect, into=DataType)
    +2939            if data_type_exp is None:
    +2940                raise ValueError(f"Unparsable data type value: {dtype}")
    +2941        elif isinstance(dtype, DataType.Type):
    +2942            data_type_exp = DataType(this=dtype)
    +2943        elif isinstance(dtype, DataType):
    +2944            return dtype
    +2945        else:
    +2946            raise ValueError(f"Invalid data type: {type(dtype)}. Expected str or DataType.Type")
    +2947        return DataType(**{**data_type_exp.args, **kwargs})
     
    @@ -24914,8 +25413,8 @@ If another Expression instance is passed,
    -
    2907    def is_type(self, dtype: DataType.Type) -> bool:
    -2908        return self.this == dtype
    +            
    2949    def is_type(self, dtype: DataType.Type) -> bool:
    +2950        return self.this == dtype
     
    @@ -24979,64 +25478,65 @@ If another Expression instance is passed,
    -
    2797    class Type(AutoName):
    -2798        CHAR = auto()
    -2799        NCHAR = auto()
    -2800        VARCHAR = auto()
    -2801        NVARCHAR = auto()
    -2802        TEXT = auto()
    -2803        MEDIUMTEXT = auto()
    -2804        LONGTEXT = auto()
    -2805        MEDIUMBLOB = auto()
    -2806        LONGBLOB = auto()
    -2807        BINARY = auto()
    -2808        VARBINARY = auto()
    -2809        INT = auto()
    -2810        UINT = auto()
    -2811        TINYINT = auto()
    -2812        UTINYINT = auto()
    -2813        SMALLINT = auto()
    -2814        USMALLINT = auto()
    -2815        BIGINT = auto()
    -2816        UBIGINT = auto()
    -2817        FLOAT = auto()
    -2818        DOUBLE = auto()
    -2819        DECIMAL = auto()
    -2820        BIT = auto()
    -2821        BOOLEAN = auto()
    -2822        JSON = auto()
    -2823        JSONB = auto()
    -2824        INTERVAL = auto()
    -2825        TIME = auto()
    -2826        TIMESTAMP = auto()
    -2827        TIMESTAMPTZ = auto()
    -2828        TIMESTAMPLTZ = auto()
    -2829        DATE = auto()
    -2830        DATETIME = auto()
    -2831        ARRAY = auto()
    -2832        MAP = auto()
    -2833        UUID = auto()
    -2834        GEOGRAPHY = auto()
    -2835        GEOMETRY = auto()
    -2836        STRUCT = auto()
    -2837        NULLABLE = auto()
    -2838        HLLSKETCH = auto()
    -2839        HSTORE = auto()
    -2840        SUPER = auto()
    -2841        SERIAL = auto()
    -2842        SMALLSERIAL = auto()
    -2843        BIGSERIAL = auto()
    -2844        XML = auto()
    -2845        UNIQUEIDENTIFIER = auto()
    -2846        MONEY = auto()
    -2847        SMALLMONEY = auto()
    -2848        ROWVERSION = auto()
    -2849        IMAGE = auto()
    -2850        VARIANT = auto()
    -2851        OBJECT = auto()
    -2852        INET = auto()
    -2853        NULL = auto()
    -2854        UNKNOWN = auto()  # Sentinel value, useful for type annotation
    +            
    2838    class Type(AutoName):
    +2839        CHAR = auto()
    +2840        NCHAR = auto()
    +2841        VARCHAR = auto()
    +2842        NVARCHAR = auto()
    +2843        TEXT = auto()
    +2844        MEDIUMTEXT = auto()
    +2845        LONGTEXT = auto()
    +2846        MEDIUMBLOB = auto()
    +2847        LONGBLOB = auto()
    +2848        BINARY = auto()
    +2849        VARBINARY = auto()
    +2850        INT = auto()
    +2851        UINT = auto()
    +2852        TINYINT = auto()
    +2853        UTINYINT = auto()
    +2854        SMALLINT = auto()
    +2855        USMALLINT = auto()
    +2856        BIGINT = auto()
    +2857        UBIGINT = auto()
    +2858        FLOAT = auto()
    +2859        DOUBLE = auto()
    +2860        DECIMAL = auto()
    +2861        BIGDECIMAL = auto()
    +2862        BIT = auto()
    +2863        BOOLEAN = auto()
    +2864        JSON = auto()
    +2865        JSONB = auto()
    +2866        INTERVAL = auto()
    +2867        TIME = auto()
    +2868        TIMESTAMP = auto()
    +2869        TIMESTAMPTZ = auto()
    +2870        TIMESTAMPLTZ = auto()
    +2871        DATE = auto()
    +2872        DATETIME = auto()
    +2873        ARRAY = auto()
    +2874        MAP = auto()
    +2875        UUID = auto()
    +2876        GEOGRAPHY = auto()
    +2877        GEOMETRY = auto()
    +2878        STRUCT = auto()
    +2879        NULLABLE = auto()
    +2880        HLLSKETCH = auto()
    +2881        HSTORE = auto()
    +2882        SUPER = auto()
    +2883        SERIAL = auto()
    +2884        SMALLSERIAL = auto()
    +2885        BIGSERIAL = auto()
    +2886        XML = auto()
    +2887        UNIQUEIDENTIFIER = auto()
    +2888        MONEY = auto()
    +2889        SMALLMONEY = auto()
    +2890        ROWVERSION = auto()
    +2891        IMAGE = auto()
    +2892        VARIANT = auto()
    +2893        OBJECT = auto()
    +2894        INET = auto()
    +2895        NULL = auto()
    +2896        UNKNOWN = auto()  # Sentinel value, useful for type annotation
     
    @@ -25307,6 +25807,18 @@ If another Expression instance is passed, +
    +
    +
    + BIGDECIMAL = +<Type.BIGDECIMAL: 'BIGDECIMAL'> + + +
    + + + +
    @@ -25750,8 +26262,8 @@ If another Expression instance is passed,
    -
    2912class PseudoType(Expression):
    -2913    pass
    +            
    2954class PseudoType(Expression):
    +2955    pass
     
    @@ -25814,8 +26326,8 @@ If another Expression instance is passed,
    -
    2916class StructKwarg(Expression):
    -2917    arg_types = {"this": True, "expression": True}
    +            
    2958class StructKwarg(Expression):
    +2959    arg_types = {"this": True, "expression": True}
     
    @@ -25878,8 +26390,8 @@ If another Expression instance is passed,
    -
    2921class SubqueryPredicate(Predicate):
    -2922    pass
    +            
    2963class SubqueryPredicate(Predicate):
    +2964    pass
     
    @@ -25948,8 +26460,8 @@ If another Expression instance is passed,
    -
    2925class All(SubqueryPredicate):
    -2926    pass
    +            
    2967class All(SubqueryPredicate):
    +2968    pass
     
    @@ -26018,8 +26530,8 @@ If another Expression instance is passed,
    -
    2929class Any(SubqueryPredicate):
    -2930    pass
    +            
    2971class Any(SubqueryPredicate):
    +2972    pass
     
    @@ -26088,8 +26600,8 @@ If another Expression instance is passed,
    -
    2933class Exists(SubqueryPredicate):
    -2934    pass
    +            
    2975class Exists(SubqueryPredicate):
    +2976    pass
     
    @@ -26158,8 +26670,8 @@ If another Expression instance is passed,
    -
    2939class Command(Expression):
    -2940    arg_types = {"this": True, "expression": False}
    +            
    2981class Command(Expression):
    +2982    arg_types = {"this": True, "expression": False}
     
    @@ -26222,8 +26734,8 @@ If another Expression instance is passed,
    -
    2943class Transaction(Expression):
    -2944    arg_types = {"this": False, "modes": False}
    +            
    2985class Transaction(Expression):
    +2986    arg_types = {"this": False, "modes": False}
     
    @@ -26286,8 +26798,8 @@ If another Expression instance is passed,
    -
    2947class Commit(Expression):
    -2948    arg_types = {"chain": False}
    +            
    2989class Commit(Expression):
    +2990    arg_types = {"chain": False}
     
    @@ -26350,8 +26862,8 @@ If another Expression instance is passed,
    -
    2951class Rollback(Expression):
    -2952    arg_types = {"savepoint": False}
    +            
    2993class Rollback(Expression):
    +2994    arg_types = {"savepoint": False}
     
    @@ -26414,8 +26926,8 @@ If another Expression instance is passed,
    -
    2955class AlterTable(Expression):
    -2956    arg_types = {"this": True, "actions": True, "exists": False}
    +            
    2997class AlterTable(Expression):
    +2998    arg_types = {"this": True, "actions": True, "exists": False}
     
    @@ -26478,8 +26990,8 @@ If another Expression instance is passed,
    -
    2959class AddConstraint(Expression):
    -2960    arg_types = {"this": False, "expression": False, "enforced": False}
    +            
    3001class AddConstraint(Expression):
    +3002    arg_types = {"this": False, "expression": False, "enforced": False}
     
    @@ -26542,8 +27054,8 @@ If another Expression instance is passed,
    -
    2963class DropPartition(Expression):
    -2964    arg_types = {"expressions": True, "exists": False}
    +            
    3005class DropPartition(Expression):
    +3006    arg_types = {"expressions": True, "exists": False}
     
    @@ -26606,16 +27118,16 @@ If another Expression instance is passed,
    -
    2968class Binary(Expression):
    -2969    arg_types = {"this": True, "expression": True}
    -2970
    -2971    @property
    -2972    def left(self):
    -2973        return self.this
    -2974
    -2975    @property
    -2976    def right(self):
    -2977        return self.expression
    +            
    3010class Binary(Expression):
    +3011    arg_types = {"this": True, "expression": True}
    +3012
    +3013    @property
    +3014    def left(self):
    +3015        return self.this
    +3016
    +3017    @property
    +3018    def right(self):
    +3019        return self.expression
     
    @@ -26678,8 +27190,8 @@ If another Expression instance is passed,
    -
    2980class Add(Binary):
    -2981    pass
    +            
    3022class Add(Binary):
    +3023    pass
     
    @@ -26742,8 +27254,8 @@ If another Expression instance is passed,
    -
    2984class Connector(Binary, Condition):
    -2985    pass
    +            
    3026class Connector(Binary, Condition):
    +3027    pass
     
    @@ -26812,8 +27324,8 @@ If another Expression instance is passed,
    -
    2988class And(Connector):
    -2989    pass
    +            
    3030class And(Connector):
    +3031    pass
     
    @@ -26882,8 +27394,8 @@ If another Expression instance is passed,
    -
    2992class Or(Connector):
    -2993    pass
    +            
    3034class Or(Connector):
    +3035    pass
     
    @@ -26952,8 +27464,8 @@ If another Expression instance is passed,
    -
    2996class BitwiseAnd(Binary):
    -2997    pass
    +            
    3038class BitwiseAnd(Binary):
    +3039    pass
     
    @@ -27016,8 +27528,8 @@ If another Expression instance is passed,
    -
    3000class BitwiseLeftShift(Binary):
    -3001    pass
    +            
    3042class BitwiseLeftShift(Binary):
    +3043    pass
     
    @@ -27080,8 +27592,8 @@ If another Expression instance is passed,
    -
    3004class BitwiseOr(Binary):
    -3005    pass
    +            
    3046class BitwiseOr(Binary):
    +3047    pass
     
    @@ -27144,8 +27656,8 @@ If another Expression instance is passed,
    -
    3008class BitwiseRightShift(Binary):
    -3009    pass
    +            
    3050class BitwiseRightShift(Binary):
    +3051    pass
     
    @@ -27208,8 +27720,8 @@ If another Expression instance is passed,
    -
    3012class BitwiseXor(Binary):
    -3013    pass
    +            
    3054class BitwiseXor(Binary):
    +3055    pass
     
    @@ -27272,8 +27784,8 @@ If another Expression instance is passed,
    -
    3016class Div(Binary):
    -3017    pass
    +            
    3058class Div(Binary):
    +3059    pass
     
    @@ -27336,8 +27848,8 @@ If another Expression instance is passed,
    -
    3020class Overlaps(Binary):
    -3021    pass
    +            
    3062class Overlaps(Binary):
    +3063    pass
     
    @@ -27400,24 +27912,24 @@ If another Expression instance is passed,
    -
    3024class Dot(Binary):
    -3025    @property
    -3026    def name(self) -> str:
    -3027        return self.expression.name
    -3028
    -3029    @classmethod
    -3030    def build(self, expressions: t.Sequence[Expression]) -> Dot:
    -3031        """Build a Dot object with a sequence of expressions."""
    -3032        if len(expressions) < 2:
    -3033            raise ValueError(f"Dot requires >= 2 expressions.")
    -3034
    -3035        a, b, *expressions = expressions
    -3036        dot = Dot(this=a, expression=b)
    -3037
    -3038        for expression in expressions:
    -3039            dot = Dot(this=dot, expression=expression)
    -3040
    -3041        return dot
    +            
    3066class Dot(Binary):
    +3067    @property
    +3068    def name(self) -> str:
    +3069        return self.expression.name
    +3070
    +3071    @classmethod
    +3072    def build(self, expressions: t.Sequence[Expression]) -> Dot:
    +3073        """Build a Dot object with a sequence of expressions."""
    +3074        if len(expressions) < 2:
    +3075            raise ValueError(f"Dot requires >= 2 expressions.")
    +3076
    +3077        a, b, *expressions = expressions
    +3078        dot = Dot(this=a, expression=b)
    +3079
    +3080        for expression in expressions:
    +3081            dot = Dot(this=dot, expression=expression)
    +3082
    +3083        return dot
     
    @@ -27435,19 +27947,19 @@ If another Expression instance is passed,
    -
    3029    @classmethod
    -3030    def build(self, expressions: t.Sequence[Expression]) -> Dot:
    -3031        """Build a Dot object with a sequence of expressions."""
    -3032        if len(expressions) < 2:
    -3033            raise ValueError(f"Dot requires >= 2 expressions.")
    -3034
    -3035        a, b, *expressions = expressions
    -3036        dot = Dot(this=a, expression=b)
    -3037
    -3038        for expression in expressions:
    -3039            dot = Dot(this=dot, expression=expression)
    -3040
    -3041        return dot
    +            
    3071    @classmethod
    +3072    def build(self, expressions: t.Sequence[Expression]) -> Dot:
    +3073        """Build a Dot object with a sequence of expressions."""
    +3074        if len(expressions) < 2:
    +3075            raise ValueError(f"Dot requires >= 2 expressions.")
    +3076
    +3077        a, b, *expressions = expressions
    +3078        dot = Dot(this=a, expression=b)
    +3079
    +3080        for expression in expressions:
    +3081            dot = Dot(this=dot, expression=expression)
    +3082
    +3083        return dot
     
    @@ -27513,8 +28025,8 @@ If another Expression instance is passed,
    -
    3044class DPipe(Binary):
    -3045    pass
    +            
    3086class DPipe(Binary):
    +3087    pass
     
    @@ -27577,8 +28089,8 @@ If another Expression instance is passed,
    -
    3048class EQ(Binary, Predicate):
    -3049    pass
    +            
    3090class EQ(Binary, Predicate):
    +3091    pass
     
    @@ -27647,8 +28159,8 @@ If another Expression instance is passed,
    -
    3052class NullSafeEQ(Binary, Predicate):
    -3053    pass
    +            
    3094class NullSafeEQ(Binary, Predicate):
    +3095    pass
     
    @@ -27717,8 +28229,8 @@ If another Expression instance is passed,
    -
    3056class NullSafeNEQ(Binary, Predicate):
    -3057    pass
    +            
    3098class NullSafeNEQ(Binary, Predicate):
    +3099    pass
     
    @@ -27787,8 +28299,8 @@ If another Expression instance is passed,
    -
    3060class Distance(Binary):
    -3061    pass
    +            
    3102class Distance(Binary):
    +3103    pass
     
    @@ -27851,8 +28363,8 @@ If another Expression instance is passed,
    -
    3064class Escape(Binary):
    -3065    pass
    +            
    3106class Escape(Binary):
    +3107    pass
     
    @@ -27915,8 +28427,8 @@ If another Expression instance is passed,
    -
    3068class Glob(Binary, Predicate):
    -3069    pass
    +            
    3110class Glob(Binary, Predicate):
    +3111    pass
     
    @@ -27985,8 +28497,8 @@ If another Expression instance is passed,
    -
    3072class GT(Binary, Predicate):
    -3073    pass
    +            
    3114class GT(Binary, Predicate):
    +3115    pass
     
    @@ -28055,8 +28567,8 @@ If another Expression instance is passed,
    -
    3076class GTE(Binary, Predicate):
    -3077    pass
    +            
    3118class GTE(Binary, Predicate):
    +3119    pass
     
    @@ -28125,8 +28637,8 @@ If another Expression instance is passed,
    -
    3080class ILike(Binary, Predicate):
    -3081    pass
    +            
    3122class ILike(Binary, Predicate):
    +3123    pass
     
    @@ -28195,8 +28707,8 @@ If another Expression instance is passed,
    -
    3084class ILikeAny(Binary, Predicate):
    -3085    pass
    +            
    3126class ILikeAny(Binary, Predicate):
    +3127    pass
     
    @@ -28265,8 +28777,8 @@ If another Expression instance is passed,
    -
    3088class IntDiv(Binary):
    -3089    pass
    +            
    3130class IntDiv(Binary):
    +3131    pass
     
    @@ -28329,8 +28841,8 @@ If another Expression instance is passed,
    -
    3092class Is(Binary, Predicate):
    -3093    pass
    +            
    3134class Is(Binary, Predicate):
    +3135    pass
     
    @@ -28399,8 +28911,8 @@ If another Expression instance is passed,
    -
    3096class Kwarg(Binary):
    -3097    """Kwarg in special functions like func(kwarg => y)."""
    +            
    3138class Kwarg(Binary):
    +3139    """Kwarg in special functions like func(kwarg => y)."""
     
    @@ -28465,8 +28977,8 @@ If another Expression instance is passed,
    -
    3100class Like(Binary, Predicate):
    -3101    pass
    +            
    3142class Like(Binary, Predicate):
    +3143    pass
     
    @@ -28535,8 +29047,8 @@ If another Expression instance is passed,
    -
    3104class LikeAny(Binary, Predicate):
    -3105    pass
    +            
    3146class LikeAny(Binary, Predicate):
    +3147    pass
     
    @@ -28605,8 +29117,8 @@ If another Expression instance is passed,
    -
    3108class LT(Binary, Predicate):
    -3109    pass
    +            
    3150class LT(Binary, Predicate):
    +3151    pass
     
    @@ -28675,8 +29187,8 @@ If another Expression instance is passed,
    -
    3112class LTE(Binary, Predicate):
    -3113    pass
    +            
    3154class LTE(Binary, Predicate):
    +3155    pass
     
    @@ -28745,8 +29257,8 @@ If another Expression instance is passed,
    -
    3116class Mod(Binary):
    -3117    pass
    +            
    3158class Mod(Binary):
    +3159    pass
     
    @@ -28809,8 +29321,8 @@ If another Expression instance is passed,
    -
    3120class Mul(Binary):
    -3121    pass
    +            
    3162class Mul(Binary):
    +3163    pass
     
    @@ -28873,8 +29385,8 @@ If another Expression instance is passed,
    -
    3124class NEQ(Binary, Predicate):
    -3125    pass
    +            
    3166class NEQ(Binary, Predicate):
    +3167    pass
     
    @@ -28943,8 +29455,8 @@ If another Expression instance is passed,
    -
    3128class SimilarTo(Binary, Predicate):
    -3129    pass
    +            
    3170class SimilarTo(Binary, Predicate):
    +3171    pass
     
    @@ -29013,8 +29525,8 @@ If another Expression instance is passed,
    -
    3132class Slice(Binary):
    -3133    arg_types = {"this": False, "expression": False}
    +            
    3174class Slice(Binary):
    +3175    arg_types = {"this": False, "expression": False}
     
    @@ -29077,8 +29589,8 @@ If another Expression instance is passed,
    -
    3136class Sub(Binary):
    -3137    pass
    +            
    3178class Sub(Binary):
    +3179    pass
     
    @@ -29141,8 +29653,8 @@ If another Expression instance is passed,
    -
    3140class ArrayOverlaps(Binary):
    -3141    pass
    +            
    3182class ArrayOverlaps(Binary):
    +3183    pass
     
    @@ -29205,8 +29717,8 @@ If another Expression instance is passed,
    -
    3146class Unary(Expression):
    -3147    pass
    +            
    3188class Unary(Expression):
    +3189    pass
     
    @@ -29269,8 +29781,8 @@ If another Expression instance is passed,
    -
    3150class BitwiseNot(Unary):
    -3151    pass
    +            
    3192class BitwiseNot(Unary):
    +3193    pass
     
    @@ -29333,8 +29845,8 @@ If another Expression instance is passed,
    -
    3154class Not(Unary, Condition):
    -3155    pass
    +            
    3196class Not(Unary, Condition):
    +3197    pass
     
    @@ -29403,8 +29915,8 @@ If another Expression instance is passed,
    -
    3158class Paren(Unary, Condition):
    -3159    arg_types = {"this": True, "with": False}
    +            
    3200class Paren(Unary, Condition):
    +3201    arg_types = {"this": True, "with": False}
     
    @@ -29473,8 +29985,8 @@ If another Expression instance is passed,
    -
    3162class Neg(Unary):
    -3163    pass
    +            
    3204class Neg(Unary):
    +3205    pass
     
    @@ -29537,12 +30049,12 @@ If another Expression instance is passed,
    -
    3167class Alias(Expression):
    -3168    arg_types = {"this": True, "alias": False}
    -3169
    -3170    @property
    -3171    def output_name(self):
    -3172        return self.alias
    +            
    3208class Alias(Expression):
    +3209    arg_types = {"this": True, "alias": False}
    +3210
    +3211    @property
    +3212    def output_name(self):
    +3213        return self.alias
     
    @@ -29634,12 +30146,12 @@ If another Expression instance is passed,
    -
    3175class Aliases(Expression):
    -3176    arg_types = {"this": True, "expressions": True}
    -3177
    -3178    @property
    -3179    def aliases(self):
    -3180        return self.expressions
    +            
    3216class Aliases(Expression):
    +3217    arg_types = {"this": True, "expressions": True}
    +3218
    +3219    @property
    +3220    def aliases(self):
    +3221        return self.expressions
     
    @@ -29702,8 +30214,8 @@ If another Expression instance is passed,
    -
    3183class AtTimeZone(Expression):
    -3184    arg_types = {"this": True, "zone": True}
    +            
    3224class AtTimeZone(Expression):
    +3225    arg_types = {"this": True, "zone": True}
     
    @@ -29766,8 +30278,8 @@ If another Expression instance is passed,
    -
    3187class Between(Predicate):
    -3188    arg_types = {"this": True, "low": True, "high": True}
    +            
    3228class Between(Predicate):
    +3229    arg_types = {"this": True, "low": True, "high": True}
     
    @@ -29836,8 +30348,8 @@ If another Expression instance is passed,
    -
    3191class Bracket(Condition):
    -3192    arg_types = {"this": True, "expressions": True}
    +            
    3232class Bracket(Condition):
    +3233    arg_types = {"this": True, "expressions": True}
     
    @@ -29906,8 +30418,8 @@ If another Expression instance is passed,
    -
    3195class Distinct(Expression):
    -3196    arg_types = {"expressions": False, "on": False}
    +            
    3236class Distinct(Expression):
    +3237    arg_types = {"expressions": False, "on": False}
     
    @@ -29970,15 +30482,15 @@ If another Expression instance is passed,
    -
    3199class In(Predicate):
    -3200    arg_types = {
    -3201        "this": True,
    -3202        "expressions": False,
    -3203        "query": False,
    -3204        "unnest": False,
    -3205        "field": False,
    -3206        "is_global": False,
    -3207    }
    +            
    3240class In(Predicate):
    +3241    arg_types = {
    +3242        "this": True,
    +3243        "expressions": False,
    +3244        "query": False,
    +3245        "unnest": False,
    +3246        "field": False,
    +3247        "is_global": False,
    +3248    }
     
    @@ -30047,18 +30559,18 @@ If another Expression instance is passed,
    -
    3210class TimeUnit(Expression):
    -3211    """Automatically converts unit arg into a var."""
    -3212
    -3213    arg_types = {"unit": False}
    -3214
    -3215    def __init__(self, **args):
    -3216        unit = args.get("unit")
    -3217        if isinstance(unit, (Column, Literal)):
    -3218            args["unit"] = Var(this=unit.name)
    -3219        elif isinstance(unit, Week):
    -3220            unit.set("this", Var(this=unit.this.name))
    -3221        super().__init__(**args)
    +            
    3251class TimeUnit(Expression):
    +3252    """Automatically converts unit arg into a var."""
    +3253
    +3254    arg_types = {"unit": False}
    +3255
    +3256    def __init__(self, **args):
    +3257        unit = args.get("unit")
    +3258        if isinstance(unit, (Column, Literal)):
    +3259            args["unit"] = Var(this=unit.name)
    +3260        elif isinstance(unit, Week):
    +3261            unit.set("this", Var(this=unit.this.name))
    +3262        super().__init__(**args)
     
    @@ -30076,13 +30588,13 @@ If another Expression instance is passed,
    -
    3215    def __init__(self, **args):
    -3216        unit = args.get("unit")
    -3217        if isinstance(unit, (Column, Literal)):
    -3218            args["unit"] = Var(this=unit.name)
    -3219        elif isinstance(unit, Week):
    -3220            unit.set("this", Var(this=unit.this.name))
    -3221        super().__init__(**args)
    +            
    3256    def __init__(self, **args):
    +3257        unit = args.get("unit")
    +3258        if isinstance(unit, (Column, Literal)):
    +3259            args["unit"] = Var(this=unit.name)
    +3260        elif isinstance(unit, Week):
    +3261            unit.set("this", Var(this=unit.this.name))
    +3262        super().__init__(**args)
     
    @@ -30145,8 +30657,8 @@ If another Expression instance is passed,
    -
    3224class Interval(TimeUnit):
    -3225    arg_types = {"this": False, "unit": False}
    +            
    3265class Interval(TimeUnit):
    +3266    arg_types = {"this": False, "unit": False}
     
    @@ -30212,8 +30724,8 @@ If another Expression instance is passed,
    -
    3228class IgnoreNulls(Expression):
    -3229    pass
    +            
    3269class IgnoreNulls(Expression):
    +3270    pass
     
    @@ -30276,8 +30788,8 @@ If another Expression instance is passed,
    -
    3232class RespectNulls(Expression):
    -3233    pass
    +            
    3273class RespectNulls(Expression):
    +3274    pass
     
    @@ -30340,53 +30852,53 @@ If another Expression instance is passed,
    -
    3237class Func(Condition):
    -3238    """
    -3239    The base class for all function expressions.
    -3240
    -3241    Attributes:
    -3242        is_var_len_args (bool): if set to True the last argument defined in arg_types will be
    -3243            treated as a variable length argument and the argument's value will be stored as a list.
    -3244        _sql_names (list): determines the SQL name (1st item in the list) and aliases (subsequent items)
    -3245            for this function expression. These values are used to map this node to a name during parsing
    -3246            as well as to provide the function's name during SQL string generation. By default the SQL
    -3247            name is set to the expression's class name transformed to snake case.
    -3248    """
    -3249
    -3250    is_var_len_args = False
    -3251
    -3252    @classmethod
    -3253    def from_arg_list(cls, args):
    -3254        if cls.is_var_len_args:
    -3255            all_arg_keys = list(cls.arg_types)
    -3256            # If this function supports variable length argument treat the last argument as such.
    -3257            non_var_len_arg_keys = all_arg_keys[:-1] if cls.is_var_len_args else all_arg_keys
    -3258            num_non_var = len(non_var_len_arg_keys)
    -3259
    -3260            args_dict = {arg_key: arg for arg, arg_key in zip(args, non_var_len_arg_keys)}
    -3261            args_dict[all_arg_keys[-1]] = args[num_non_var:]
    -3262        else:
    -3263            args_dict = {arg_key: arg for arg, arg_key in zip(args, cls.arg_types)}
    -3264
    -3265        return cls(**args_dict)
    -3266
    -3267    @classmethod
    -3268    def sql_names(cls):
    -3269        if cls is Func:
    -3270            raise NotImplementedError(
    -3271                "SQL name is only supported by concrete function implementations"
    -3272            )
    -3273        if "_sql_names" not in cls.__dict__:
    -3274            cls._sql_names = [camel_to_snake_case(cls.__name__)]
    -3275        return cls._sql_names
    -3276
    -3277    @classmethod
    -3278    def sql_name(cls):
    -3279        return cls.sql_names()[0]
    -3280
    -3281    @classmethod
    -3282    def default_parser_mappings(cls):
    -3283        return {name: cls.from_arg_list for name in cls.sql_names()}
    +            
    3278class Func(Condition):
    +3279    """
    +3280    The base class for all function expressions.
    +3281
    +3282    Attributes:
    +3283        is_var_len_args (bool): if set to True the last argument defined in arg_types will be
    +3284            treated as a variable length argument and the argument's value will be stored as a list.
    +3285        _sql_names (list): determines the SQL name (1st item in the list) and aliases (subsequent items)
    +3286            for this function expression. These values are used to map this node to a name during parsing
    +3287            as well as to provide the function's name during SQL string generation. By default the SQL
    +3288            name is set to the expression's class name transformed to snake case.
    +3289    """
    +3290
    +3291    is_var_len_args = False
    +3292
    +3293    @classmethod
    +3294    def from_arg_list(cls, args):
    +3295        if cls.is_var_len_args:
    +3296            all_arg_keys = list(cls.arg_types)
    +3297            # If this function supports variable length argument treat the last argument as such.
    +3298            non_var_len_arg_keys = all_arg_keys[:-1] if cls.is_var_len_args else all_arg_keys
    +3299            num_non_var = len(non_var_len_arg_keys)
    +3300
    +3301            args_dict = {arg_key: arg for arg, arg_key in zip(args, non_var_len_arg_keys)}
    +3302            args_dict[all_arg_keys[-1]] = args[num_non_var:]
    +3303        else:
    +3304            args_dict = {arg_key: arg for arg, arg_key in zip(args, cls.arg_types)}
    +3305
    +3306        return cls(**args_dict)
    +3307
    +3308    @classmethod
    +3309    def sql_names(cls):
    +3310        if cls is Func:
    +3311            raise NotImplementedError(
    +3312                "SQL name is only supported by concrete function implementations"
    +3313            )
    +3314        if "_sql_names" not in cls.__dict__:
    +3315            cls._sql_names = [camel_to_snake_case(cls.__name__)]
    +3316        return cls._sql_names
    +3317
    +3318    @classmethod
    +3319    def sql_name(cls):
    +3320        return cls.sql_names()[0]
    +3321
    +3322    @classmethod
    +3323    def default_parser_mappings(cls):
    +3324        return {name: cls.from_arg_list for name in cls.sql_names()}
     
    @@ -30417,20 +30929,20 @@ name is set to the expression's class name transformed to snake case.
    -
    3252    @classmethod
    -3253    def from_arg_list(cls, args):
    -3254        if cls.is_var_len_args:
    -3255            all_arg_keys = list(cls.arg_types)
    -3256            # If this function supports variable length argument treat the last argument as such.
    -3257            non_var_len_arg_keys = all_arg_keys[:-1] if cls.is_var_len_args else all_arg_keys
    -3258            num_non_var = len(non_var_len_arg_keys)
    -3259
    -3260            args_dict = {arg_key: arg for arg, arg_key in zip(args, non_var_len_arg_keys)}
    -3261            args_dict[all_arg_keys[-1]] = args[num_non_var:]
    -3262        else:
    -3263            args_dict = {arg_key: arg for arg, arg_key in zip(args, cls.arg_types)}
    -3264
    -3265        return cls(**args_dict)
    +            
    3293    @classmethod
    +3294    def from_arg_list(cls, args):
    +3295        if cls.is_var_len_args:
    +3296            all_arg_keys = list(cls.arg_types)
    +3297            # If this function supports variable length argument treat the last argument as such.
    +3298            non_var_len_arg_keys = all_arg_keys[:-1] if cls.is_var_len_args else all_arg_keys
    +3299            num_non_var = len(non_var_len_arg_keys)
    +3300
    +3301            args_dict = {arg_key: arg for arg, arg_key in zip(args, non_var_len_arg_keys)}
    +3302            args_dict[all_arg_keys[-1]] = args[num_non_var:]
    +3303        else:
    +3304            args_dict = {arg_key: arg for arg, arg_key in zip(args, cls.arg_types)}
    +3305
    +3306        return cls(**args_dict)
     
    @@ -30449,15 +30961,15 @@ name is set to the expression's class name transformed to snake case.
    -
    3267    @classmethod
    -3268    def sql_names(cls):
    -3269        if cls is Func:
    -3270            raise NotImplementedError(
    -3271                "SQL name is only supported by concrete function implementations"
    -3272            )
    -3273        if "_sql_names" not in cls.__dict__:
    -3274            cls._sql_names = [camel_to_snake_case(cls.__name__)]
    -3275        return cls._sql_names
    +            
    3308    @classmethod
    +3309    def sql_names(cls):
    +3310        if cls is Func:
    +3311            raise NotImplementedError(
    +3312                "SQL name is only supported by concrete function implementations"
    +3313            )
    +3314        if "_sql_names" not in cls.__dict__:
    +3315            cls._sql_names = [camel_to_snake_case(cls.__name__)]
    +3316        return cls._sql_names
     
    @@ -30476,9 +30988,9 @@ name is set to the expression's class name transformed to snake case.
    -
    3277    @classmethod
    -3278    def sql_name(cls):
    -3279        return cls.sql_names()[0]
    +            
    3318    @classmethod
    +3319    def sql_name(cls):
    +3320        return cls.sql_names()[0]
     
    @@ -30497,9 +31009,9 @@ name is set to the expression's class name transformed to snake case.
    -
    3281    @classmethod
    -3282    def default_parser_mappings(cls):
    -3283        return {name: cls.from_arg_list for name in cls.sql_names()}
    +            
    3322    @classmethod
    +3323    def default_parser_mappings(cls):
    +3324        return {name: cls.from_arg_list for name in cls.sql_names()}
     
    @@ -30569,8 +31081,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3286class AggFunc(Func):
    -3287    pass
    +            
    3327class AggFunc(Func):
    +3328    pass
     
    @@ -30646,8 +31158,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3290class Abs(Func):
    -3291    pass
    +            
    3331class Abs(Func):
    +3332    pass
     
    @@ -30723,9 +31235,9 @@ name is set to the expression's class name transformed to snake case.
    -
    3294class Anonymous(Func):
    -3295    arg_types = {"this": True, "expressions": False}
    -3296    is_var_len_args = True
    +            
    3335class Anonymous(Func):
    +3336    arg_types = {"this": True, "expressions": False}
    +3337    is_var_len_args = True
     
    @@ -30801,9 +31313,9 @@ name is set to the expression's class name transformed to snake case.
    -
    3301class Hll(AggFunc):
    -3302    arg_types = {"this": True, "expressions": False}
    -3303    is_var_len_args = True
    +            
    3342class Hll(AggFunc):
    +3343    arg_types = {"this": True, "expressions": False}
    +3344    is_var_len_args = True
     
    @@ -30879,8 +31391,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3306class ApproxDistinct(AggFunc):
    -3307    arg_types = {"this": True, "accuracy": False}
    +            
    3347class ApproxDistinct(AggFunc):
    +3348    arg_types = {"this": True, "accuracy": False}
     
    @@ -30956,9 +31468,9 @@ name is set to the expression's class name transformed to snake case.
    -
    3310class Array(Func):
    -3311    arg_types = {"expressions": False}
    -3312    is_var_len_args = True
    +            
    3351class Array(Func):
    +3352    arg_types = {"expressions": False}
    +3353    is_var_len_args = True
     
    @@ -31034,8 +31546,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3316class ToChar(Func):
    -3317    arg_types = {"this": True, "format": False}
    +            
    3357class ToChar(Func):
    +3358    arg_types = {"this": True, "format": False}
     
    @@ -31111,8 +31623,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3320class GenerateSeries(Func):
    -3321    arg_types = {"start": True, "end": True, "step": False}
    +            
    3361class GenerateSeries(Func):
    +3362    arg_types = {"start": True, "end": True, "step": False}
     
    @@ -31188,8 +31700,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3324class ArrayAgg(AggFunc):
    -3325    pass
    +            
    3365class ArrayAgg(AggFunc):
    +3366    pass
     
    @@ -31265,8 +31777,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3328class ArrayAll(Func):
    -3329    arg_types = {"this": True, "expression": True}
    +            
    3369class ArrayAll(Func):
    +3370    arg_types = {"this": True, "expression": True}
     
    @@ -31342,8 +31854,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3332class ArrayAny(Func):
    -3333    arg_types = {"this": True, "expression": True}
    +            
    3373class ArrayAny(Func):
    +3374    arg_types = {"this": True, "expression": True}
     
    @@ -31419,9 +31931,9 @@ name is set to the expression's class name transformed to snake case.
    -
    3336class ArrayConcat(Func):
    -3337    arg_types = {"this": True, "expressions": False}
    -3338    is_var_len_args = True
    +            
    3377class ArrayConcat(Func):
    +3378    arg_types = {"this": True, "expressions": False}
    +3379    is_var_len_args = True
     
    @@ -31497,8 +32009,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3341class ArrayContains(Binary, Func):
    -3342    pass
    +            
    3382class ArrayContains(Binary, Func):
    +3383    pass
     
    @@ -31574,8 +32086,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3345class ArrayContained(Binary):
    -3346    pass
    +            
    3386class ArrayContained(Binary):
    +3387    pass
     
    @@ -31638,9 +32150,9 @@ name is set to the expression's class name transformed to snake case.
    -
    3349class ArrayFilter(Func):
    -3350    arg_types = {"this": True, "expression": True}
    -3351    _sql_names = ["FILTER", "ARRAY_FILTER"]
    +            
    3390class ArrayFilter(Func):
    +3391    arg_types = {"this": True, "expression": True}
    +3392    _sql_names = ["FILTER", "ARRAY_FILTER"]
     
    @@ -31716,8 +32228,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3354class ArrayJoin(Func):
    -3355    arg_types = {"this": True, "expression": True, "null": False}
    +            
    3395class ArrayJoin(Func):
    +3396    arg_types = {"this": True, "expression": True, "null": False}
     
    @@ -31793,8 +32305,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3358class ArraySize(Func):
    -3359    arg_types = {"this": True, "expression": False}
    +            
    3399class ArraySize(Func):
    +3400    arg_types = {"this": True, "expression": False}
     
    @@ -31870,8 +32382,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3362class ArraySort(Func):
    -3363    arg_types = {"this": True, "expression": False}
    +            
    3403class ArraySort(Func):
    +3404    arg_types = {"this": True, "expression": False}
     
    @@ -31947,8 +32459,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3366class ArraySum(Func):
    -3367    pass
    +            
    3407class ArraySum(Func):
    +3408    pass
     
    @@ -32024,8 +32536,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3370class ArrayUnionAgg(AggFunc):
    -3371    pass
    +            
    3411class ArrayUnionAgg(AggFunc):
    +3412    pass
     
    @@ -32101,8 +32613,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3374class Avg(AggFunc):
    -3375    pass
    +            
    3415class Avg(AggFunc):
    +3416    pass
     
    @@ -32178,8 +32690,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3378class AnyValue(AggFunc):
    -3379    pass
    +            
    3419class AnyValue(AggFunc):
    +3420    pass
     
    @@ -32255,8 +32767,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3382class Case(Func):
    -3383    arg_types = {"this": False, "ifs": True, "default": False}
    +            
    3423class Case(Func):
    +3424    arg_types = {"this": False, "ifs": True, "default": False}
     
    @@ -32332,23 +32844,23 @@ name is set to the expression's class name transformed to snake case.
    -
    3386class Cast(Func):
    -3387    arg_types = {"this": True, "to": True}
    -3388
    -3389    @property
    -3390    def name(self) -> str:
    -3391        return self.this.name
    -3392
    -3393    @property
    -3394    def to(self):
    -3395        return self.args["to"]
    -3396
    -3397    @property
    -3398    def output_name(self):
    -3399        return self.name
    -3400
    -3401    def is_type(self, dtype: DataType.Type) -> bool:
    -3402        return self.to.is_type(dtype)
    +            
    3427class Cast(Func):
    +3428    arg_types = {"this": True, "to": True}
    +3429
    +3430    @property
    +3431    def name(self) -> str:
    +3432        return self.this.name
    +3433
    +3434    @property
    +3435    def to(self):
    +3436        return self.args["to"]
    +3437
    +3438    @property
    +3439    def output_name(self):
    +3440        return self.name
    +3441
    +3442    def is_type(self, dtype: DataType.Type) -> bool:
    +3443        return self.to.is_type(dtype)
     
    @@ -32395,8 +32907,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3401    def is_type(self, dtype: DataType.Type) -> bool:
    -3402        return self.to.is_type(dtype)
    +            
    3442    def is_type(self, dtype: DataType.Type) -> bool:
    +3443        return self.to.is_type(dtype)
     
    @@ -32472,8 +32984,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3405class Collate(Binary):
    -3406    pass
    +            
    3446class Collate(Binary):
    +3447    pass
     
    @@ -32536,8 +33048,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3409class TryCast(Cast):
    -3410    pass
    +            
    3450class TryCast(Cast):
    +3451    pass
     
    @@ -32617,9 +33129,9 @@ name is set to the expression's class name transformed to snake case.
    -
    3413class Ceil(Func):
    -3414    arg_types = {"this": True, "decimals": False}
    -3415    _sql_names = ["CEIL", "CEILING"]
    +            
    3454class Ceil(Func):
    +3455    arg_types = {"this": True, "decimals": False}
    +3456    _sql_names = ["CEIL", "CEILING"]
     
    @@ -32695,9 +33207,9 @@ name is set to the expression's class name transformed to snake case.
    -
    3418class Coalesce(Func):
    -3419    arg_types = {"this": True, "expressions": False}
    -3420    is_var_len_args = True
    +            
    3459class Coalesce(Func):
    +3460    arg_types = {"this": True, "expressions": False}
    +3461    is_var_len_args = True
     
    @@ -32773,9 +33285,9 @@ name is set to the expression's class name transformed to snake case.
    -
    3423class Concat(Func):
    -3424    arg_types = {"expressions": True}
    -3425    is_var_len_args = True
    +            
    3464class Concat(Func):
    +3465    arg_types = {"expressions": True}
    +3466    is_var_len_args = True
     
    @@ -32851,8 +33363,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3428class ConcatWs(Concat):
    -3429    _sql_names = ["CONCAT_WS"]
    +            
    3469class ConcatWs(Concat):
    +3470    _sql_names = ["CONCAT_WS"]
     
    @@ -32928,8 +33440,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3432class Count(AggFunc):
    -3433    arg_types = {"this": False}
    +            
    3473class Count(AggFunc):
    +3474    arg_types = {"this": False}
     
    @@ -33005,8 +33517,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3436class CountIf(AggFunc):
    -3437    pass
    +            
    3477class CountIf(AggFunc):
    +3478    pass
     
    @@ -33082,8 +33594,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3440class CurrentDate(Func):
    -3441    arg_types = {"this": False}
    +            
    3481class CurrentDate(Func):
    +3482    arg_types = {"this": False}
     
    @@ -33159,8 +33671,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3444class CurrentDatetime(Func):
    -3445    arg_types = {"this": False}
    +            
    3485class CurrentDatetime(Func):
    +3486    arg_types = {"this": False}
     
    @@ -33236,8 +33748,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3448class CurrentTime(Func):
    -3449    arg_types = {"this": False}
    +            
    3489class CurrentTime(Func):
    +3490    arg_types = {"this": False}
     
    @@ -33313,8 +33825,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3452class CurrentTimestamp(Func):
    -3453    arg_types = {"this": False}
    +            
    3493class CurrentTimestamp(Func):
    +3494    arg_types = {"this": False}
     
    @@ -33375,6 +33887,83 @@ name is set to the expression's class name transformed to snake case.
    or_
    not_
    +
    + +
    +
    +
    + +
    + + class + CurrentUser(Func): + + + +
    + +
    3497class CurrentUser(Func):
    +3498    arg_types = {"this": False}
    +
    + + + + + @@ -33390,8 +33979,8 @@ name is set to the expression's class name transformed to snake case. -
    3456class DateAdd(Func, TimeUnit):
    -3457    arg_types = {"this": True, "expression": True, "unit": False}
    +            
    3501class DateAdd(Func, TimeUnit):
    +3502    arg_types = {"this": True, "expression": True, "unit": False}
     
    @@ -33470,8 +34059,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3460class DateSub(Func, TimeUnit):
    -3461    arg_types = {"this": True, "expression": True, "unit": False}
    +            
    3505class DateSub(Func, TimeUnit):
    +3506    arg_types = {"this": True, "expression": True, "unit": False}
     
    @@ -33550,9 +34139,9 @@ name is set to the expression's class name transformed to snake case.
    -
    3464class DateDiff(Func, TimeUnit):
    -3465    _sql_names = ["DATEDIFF", "DATE_DIFF"]
    -3466    arg_types = {"this": True, "expression": True, "unit": False}
    +            
    3509class DateDiff(Func, TimeUnit):
    +3510    _sql_names = ["DATEDIFF", "DATE_DIFF"]
    +3511    arg_types = {"this": True, "expression": True, "unit": False}
     
    @@ -33631,8 +34220,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3469class DateTrunc(Func):
    -3470    arg_types = {"unit": True, "this": True, "zone": False}
    +            
    3514class DateTrunc(Func):
    +3515    arg_types = {"unit": True, "this": True, "zone": False}
     
    @@ -33708,8 +34297,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3473class DatetimeAdd(Func, TimeUnit):
    -3474    arg_types = {"this": True, "expression": True, "unit": False}
    +            
    3518class DatetimeAdd(Func, TimeUnit):
    +3519    arg_types = {"this": True, "expression": True, "unit": False}
     
    @@ -33788,8 +34377,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3477class DatetimeSub(Func, TimeUnit):
    -3478    arg_types = {"this": True, "expression": True, "unit": False}
    +            
    3522class DatetimeSub(Func, TimeUnit):
    +3523    arg_types = {"this": True, "expression": True, "unit": False}
     
    @@ -33868,8 +34457,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3481class DatetimeDiff(Func, TimeUnit):
    -3482    arg_types = {"this": True, "expression": True, "unit": False}
    +            
    3526class DatetimeDiff(Func, TimeUnit):
    +3527    arg_types = {"this": True, "expression": True, "unit": False}
     
    @@ -33948,8 +34537,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3485class DatetimeTrunc(Func, TimeUnit):
    -3486    arg_types = {"this": True, "unit": True, "zone": False}
    +            
    3530class DatetimeTrunc(Func, TimeUnit):
    +3531    arg_types = {"this": True, "unit": True, "zone": False}
     
    @@ -34028,8 +34617,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3489class DayOfWeek(Func):
    -3490    _sql_names = ["DAY_OF_WEEK", "DAYOFWEEK"]
    +            
    3534class DayOfWeek(Func):
    +3535    _sql_names = ["DAY_OF_WEEK", "DAYOFWEEK"]
     
    @@ -34105,8 +34694,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3493class DayOfMonth(Func):
    -3494    _sql_names = ["DAY_OF_MONTH", "DAYOFMONTH"]
    +            
    3538class DayOfMonth(Func):
    +3539    _sql_names = ["DAY_OF_MONTH", "DAYOFMONTH"]
     
    @@ -34182,8 +34771,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3497class DayOfYear(Func):
    -3498    _sql_names = ["DAY_OF_YEAR", "DAYOFYEAR"]
    +            
    3542class DayOfYear(Func):
    +3543    _sql_names = ["DAY_OF_YEAR", "DAYOFYEAR"]
     
    @@ -34259,8 +34848,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3501class WeekOfYear(Func):
    -3502    _sql_names = ["WEEK_OF_YEAR", "WEEKOFYEAR"]
    +            
    3546class WeekOfYear(Func):
    +3547    _sql_names = ["WEEK_OF_YEAR", "WEEKOFYEAR"]
     
    @@ -34336,8 +34925,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3505class LastDateOfMonth(Func):
    -3506    pass
    +            
    3550class LastDateOfMonth(Func):
    +3551    pass
     
    @@ -34413,8 +35002,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3509class Extract(Func):
    -3510    arg_types = {"this": True, "expression": True}
    +            
    3554class Extract(Func):
    +3555    arg_types = {"this": True, "expression": True}
     
    @@ -34490,8 +35079,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3513class TimestampAdd(Func, TimeUnit):
    -3514    arg_types = {"this": True, "expression": True, "unit": False}
    +            
    3558class TimestampAdd(Func, TimeUnit):
    +3559    arg_types = {"this": True, "expression": True, "unit": False}
     
    @@ -34570,8 +35159,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3517class TimestampSub(Func, TimeUnit):
    -3518    arg_types = {"this": True, "expression": True, "unit": False}
    +            
    3562class TimestampSub(Func, TimeUnit):
    +3563    arg_types = {"this": True, "expression": True, "unit": False}
     
    @@ -34650,8 +35239,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3521class TimestampDiff(Func, TimeUnit):
    -3522    arg_types = {"this": True, "expression": True, "unit": False}
    +            
    3566class TimestampDiff(Func, TimeUnit):
    +3567    arg_types = {"this": True, "expression": True, "unit": False}
     
    @@ -34730,8 +35319,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3525class TimestampTrunc(Func, TimeUnit):
    -3526    arg_types = {"this": True, "unit": True, "zone": False}
    +            
    3570class TimestampTrunc(Func, TimeUnit):
    +3571    arg_types = {"this": True, "unit": True, "zone": False}
     
    @@ -34810,8 +35399,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3529class TimeAdd(Func, TimeUnit):
    -3530    arg_types = {"this": True, "expression": True, "unit": False}
    +            
    3574class TimeAdd(Func, TimeUnit):
    +3575    arg_types = {"this": True, "expression": True, "unit": False}
     
    @@ -34890,8 +35479,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3533class TimeSub(Func, TimeUnit):
    -3534    arg_types = {"this": True, "expression": True, "unit": False}
    +            
    3578class TimeSub(Func, TimeUnit):
    +3579    arg_types = {"this": True, "expression": True, "unit": False}
     
    @@ -34970,8 +35559,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3537class TimeDiff(Func, TimeUnit):
    -3538    arg_types = {"this": True, "expression": True, "unit": False}
    +            
    3582class TimeDiff(Func, TimeUnit):
    +3583    arg_types = {"this": True, "expression": True, "unit": False}
     
    @@ -35050,8 +35639,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3541class TimeTrunc(Func, TimeUnit):
    -3542    arg_types = {"this": True, "unit": True, "zone": False}
    +            
    3586class TimeTrunc(Func, TimeUnit):
    +3587    arg_types = {"this": True, "unit": True, "zone": False}
     
    @@ -35130,9 +35719,9 @@ name is set to the expression's class name transformed to snake case.
    -
    3545class DateFromParts(Func):
    -3546    _sql_names = ["DATEFROMPARTS"]
    -3547    arg_types = {"year": True, "month": True, "day": True}
    +            
    3590class DateFromParts(Func):
    +3591    _sql_names = ["DATEFROMPARTS"]
    +3592    arg_types = {"year": True, "month": True, "day": True}
     
    @@ -35208,8 +35797,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3550class DateStrToDate(Func):
    -3551    pass
    +            
    3595class DateStrToDate(Func):
    +3596    pass
     
    @@ -35285,8 +35874,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3554class DateToDateStr(Func):
    -3555    pass
    +            
    3599class DateToDateStr(Func):
    +3600    pass
     
    @@ -35362,8 +35951,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3558class DateToDi(Func):
    -3559    pass
    +            
    3603class DateToDi(Func):
    +3604    pass
     
    @@ -35439,8 +36028,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3562class Day(Func):
    -3563    pass
    +            
    3607class Day(Func):
    +3608    pass
     
    @@ -35516,8 +36105,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3566class Decode(Func):
    -3567    arg_types = {"this": True, "charset": True, "replace": False}
    +            
    3611class Decode(Func):
    +3612    arg_types = {"this": True, "charset": True, "replace": False}
     
    @@ -35593,8 +36182,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3570class DiToDate(Func):
    -3571    pass
    +            
    3615class DiToDate(Func):
    +3616    pass
     
    @@ -35670,8 +36259,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3574class Encode(Func):
    -3575    arg_types = {"this": True, "charset": True}
    +            
    3619class Encode(Func):
    +3620    arg_types = {"this": True, "charset": True}
     
    @@ -35747,8 +36336,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3578class Exp(Func):
    -3579    pass
    +            
    3623class Exp(Func):
    +3624    pass
     
    @@ -35824,8 +36413,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3582class Explode(Func):
    -3583    pass
    +            
    3627class Explode(Func):
    +3628    pass
     
    @@ -35901,8 +36490,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3586class ExponentialTimeDecayedAvg(AggFunc):
    -3587    arg_types = {"this": True, "time": False, "decay": False}
    +            
    3631class ExponentialTimeDecayedAvg(AggFunc):
    +3632    arg_types = {"this": True, "time": False, "decay": False}
     
    @@ -35978,8 +36567,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3590class Floor(Func):
    -3591    arg_types = {"this": True, "decimals": False}
    +            
    3635class Floor(Func):
    +3636    arg_types = {"this": True, "decimals": False}
     
    @@ -36055,9 +36644,9 @@ name is set to the expression's class name transformed to snake case.
    -
    3594class Greatest(Func):
    -3595    arg_types = {"this": True, "expressions": False}
    -3596    is_var_len_args = True
    +            
    3639class Greatest(Func):
    +3640    arg_types = {"this": True, "expressions": False}
    +3641    is_var_len_args = True
     
    @@ -36133,8 +36722,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3599class GroupConcat(Func):
    -3600    arg_types = {"this": True, "separator": False}
    +            
    3644class GroupConcat(Func):
    +3645    arg_types = {"this": True, "separator": False}
     
    @@ -36210,8 +36799,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3603class GroupUniqArray(AggFunc):
    -3604    arg_types = {"this": True, "size": False}
    +            
    3648class GroupUniqArray(AggFunc):
    +3649    arg_types = {"this": True, "size": False}
     
    @@ -36287,8 +36876,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3607class Hex(Func):
    -3608    pass
    +            
    3652class Hex(Func):
    +3653    pass
     
    @@ -36364,8 +36953,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3611class Histogram(AggFunc):
    -3612    arg_types = {"this": True, "bins": False}
    +            
    3656class Histogram(AggFunc):
    +3657    arg_types = {"this": True, "bins": False}
     
    @@ -36441,8 +37030,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3615class If(Func):
    -3616    arg_types = {"this": True, "true": True, "false": False}
    +            
    3660class If(Func):
    +3661    arg_types = {"this": True, "true": True, "false": False}
     
    @@ -36518,9 +37107,9 @@ name is set to the expression's class name transformed to snake case.
    -
    3619class IfNull(Func):
    -3620    arg_types = {"this": True, "expression": False}
    -3621    _sql_names = ["IFNULL", "NVL"]
    +            
    3664class IfNull(Func):
    +3665    arg_types = {"this": True, "expression": False}
    +3666    _sql_names = ["IFNULL", "NVL"]
     
    @@ -36596,8 +37185,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3624class Initcap(Func):
    -3625    pass
    +            
    3669class Initcap(Func):
    +3670    pass
     
    @@ -36673,8 +37262,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3628class JSONKeyValue(Expression):
    -3629    arg_types = {"this": True, "expression": True}
    +            
    3673class JSONKeyValue(Expression):
    +3674    arg_types = {"this": True, "expression": True}
     
    @@ -36737,15 +37326,15 @@ name is set to the expression's class name transformed to snake case.
    -
    3632class JSONObject(Func):
    -3633    arg_types = {
    -3634        "expressions": False,
    -3635        "null_handling": False,
    -3636        "unique_keys": False,
    -3637        "return_type": False,
    -3638        "format_json": False,
    -3639        "encoding": False,
    -3640    }
    +            
    3677class JSONObject(Func):
    +3678    arg_types = {
    +3679        "expressions": False,
    +3680        "null_handling": False,
    +3681        "unique_keys": False,
    +3682        "return_type": False,
    +3683        "format_json": False,
    +3684        "encoding": False,
    +3685    }
     
    @@ -36821,8 +37410,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3643class JSONBContains(Binary):
    -3644    _sql_names = ["JSONB_CONTAINS"]
    +            
    3688class JSONBContains(Binary):
    +3689    _sql_names = ["JSONB_CONTAINS"]
     
    @@ -36885,8 +37474,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3647class JSONExtract(Binary, Func):
    -3648    _sql_names = ["JSON_EXTRACT"]
    +            
    3692class JSONExtract(Binary, Func):
    +3693    _sql_names = ["JSON_EXTRACT"]
     
    @@ -36962,8 +37551,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3651class JSONExtractScalar(JSONExtract):
    -3652    _sql_names = ["JSON_EXTRACT_SCALAR"]
    +            
    3696class JSONExtractScalar(JSONExtract):
    +3697    _sql_names = ["JSON_EXTRACT_SCALAR"]
     
    @@ -37039,8 +37628,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3655class JSONBExtract(JSONExtract):
    -3656    _sql_names = ["JSONB_EXTRACT"]
    +            
    3700class JSONBExtract(JSONExtract):
    +3701    _sql_names = ["JSONB_EXTRACT"]
     
    @@ -37116,8 +37705,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3659class JSONBExtractScalar(JSONExtract):
    -3660    _sql_names = ["JSONB_EXTRACT_SCALAR"]
    +            
    3704class JSONBExtractScalar(JSONExtract):
    +3705    _sql_names = ["JSONB_EXTRACT_SCALAR"]
     
    @@ -37193,9 +37782,9 @@ name is set to the expression's class name transformed to snake case.
    -
    3663class JSONFormat(Func):
    -3664    arg_types = {"this": False, "options": False}
    -3665    _sql_names = ["JSON_FORMAT"]
    +            
    3708class JSONFormat(Func):
    +3709    arg_types = {"this": False, "options": False}
    +3710    _sql_names = ["JSON_FORMAT"]
     
    @@ -37271,9 +37860,9 @@ name is set to the expression's class name transformed to snake case.
    -
    3668class Least(Func):
    -3669    arg_types = {"expressions": False}
    -3670    is_var_len_args = True
    +            
    3713class Least(Func):
    +3714    arg_types = {"expressions": False}
    +3715    is_var_len_args = True
     
    @@ -37349,8 +37938,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3673class Length(Func):
    -3674    pass
    +            
    3718class Length(Func):
    +3719    pass
     
    @@ -37426,14 +38015,14 @@ name is set to the expression's class name transformed to snake case.
    -
    3677class Levenshtein(Func):
    -3678    arg_types = {
    -3679        "this": True,
    -3680        "expression": False,
    -3681        "ins_cost": False,
    -3682        "del_cost": False,
    -3683        "sub_cost": False,
    -3684    }
    +            
    3722class Levenshtein(Func):
    +3723    arg_types = {
    +3724        "this": True,
    +3725        "expression": False,
    +3726        "ins_cost": False,
    +3727        "del_cost": False,
    +3728        "sub_cost": False,
    +3729    }
     
    @@ -37509,8 +38098,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3687class Ln(Func):
    -3688    pass
    +            
    3732class Ln(Func):
    +3733    pass
     
    @@ -37586,8 +38175,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3691class Log(Func):
    -3692    arg_types = {"this": True, "expression": False}
    +            
    3736class Log(Func):
    +3737    arg_types = {"this": True, "expression": False}
     
    @@ -37663,8 +38252,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3695class Log2(Func):
    -3696    pass
    +            
    3740class Log2(Func):
    +3741    pass
     
    @@ -37740,8 +38329,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3699class Log10(Func):
    -3700    pass
    +            
    3744class Log10(Func):
    +3745    pass
     
    @@ -37817,8 +38406,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3703class LogicalOr(AggFunc):
    -3704    _sql_names = ["LOGICAL_OR", "BOOL_OR", "BOOLOR_AGG"]
    +            
    3748class LogicalOr(AggFunc):
    +3749    _sql_names = ["LOGICAL_OR", "BOOL_OR", "BOOLOR_AGG"]
     
    @@ -37894,8 +38483,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3707class LogicalAnd(AggFunc):
    -3708    _sql_names = ["LOGICAL_AND", "BOOL_AND", "BOOLAND_AGG"]
    +            
    3752class LogicalAnd(AggFunc):
    +3753    _sql_names = ["LOGICAL_AND", "BOOL_AND", "BOOLAND_AGG"]
     
    @@ -37971,8 +38560,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3711class Lower(Func):
    -3712    _sql_names = ["LOWER", "LCASE"]
    +            
    3756class Lower(Func):
    +3757    _sql_names = ["LOWER", "LCASE"]
     
    @@ -38048,8 +38637,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3715class Map(Func):
    -3716    arg_types = {"keys": False, "values": False}
    +            
    3760class Map(Func):
    +3761    arg_types = {"keys": False, "values": False}
     
    @@ -38110,6 +38699,83 @@ name is set to the expression's class name transformed to snake case.
    or_
    not_
    +
    + + +
    +
    + +
    + + class + StarMap(Func): + + + +
    + +
    3764class StarMap(Func):
    +3765    pass
    +
    + + + + + @@ -38125,9 +38791,9 @@ name is set to the expression's class name transformed to snake case. -
    3719class VarMap(Func):
    -3720    arg_types = {"keys": True, "values": True}
    -3721    is_var_len_args = True
    +            
    3768class VarMap(Func):
    +3769    arg_types = {"keys": True, "values": True}
    +3770    is_var_len_args = True
     
    @@ -38203,8 +38869,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3725class MatchAgainst(Func):
    -3726    arg_types = {"this": True, "expressions": True, "modifier": False}
    +            
    3774class MatchAgainst(Func):
    +3775    arg_types = {"this": True, "expressions": True, "modifier": False}
     
    @@ -38280,9 +38946,9 @@ name is set to the expression's class name transformed to snake case.
    -
    3729class Max(AggFunc):
    -3730    arg_types = {"this": True, "expressions": False}
    -3731    is_var_len_args = True
    +            
    3778class Max(AggFunc):
    +3779    arg_types = {"this": True, "expressions": False}
    +3780    is_var_len_args = True
     
    @@ -38343,6 +39009,83 @@ name is set to the expression's class name transformed to snake case.
    or_
    not_
    +
    + + +
    +
    + +
    + + class + MD5(Func): + + + +
    + +
    3783class MD5(Func):
    +3784    _sql_names = ["MD5"]
    +
    + + + + + @@ -38358,9 +39101,9 @@ name is set to the expression's class name transformed to snake case. -
    3734class Min(AggFunc):
    -3735    arg_types = {"this": True, "expressions": False}
    -3736    is_var_len_args = True
    +            
    3787class Min(AggFunc):
    +3788    arg_types = {"this": True, "expressions": False}
    +3789    is_var_len_args = True
     
    @@ -38436,8 +39179,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3739class Month(Func):
    -3740    pass
    +            
    3792class Month(Func):
    +3793    pass
     
    @@ -38513,8 +39256,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3743class Nvl2(Func):
    -3744    arg_types = {"this": True, "true": True, "false": False}
    +            
    3796class Nvl2(Func):
    +3797    arg_types = {"this": True, "true": True, "false": False}
     
    @@ -38590,8 +39333,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3747class Posexplode(Func):
    -3748    pass
    +            
    3800class Posexplode(Func):
    +3801    pass
     
    @@ -38667,8 +39410,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3751class Pow(Binary, Func):
    -3752    _sql_names = ["POWER", "POW"]
    +            
    3804class Pow(Binary, Func):
    +3805    _sql_names = ["POWER", "POW"]
     
    @@ -38744,8 +39487,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3755class PercentileCont(AggFunc):
    -3756    pass
    +            
    3808class PercentileCont(AggFunc):
    +3809    pass
     
    @@ -38821,8 +39564,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3759class PercentileDisc(AggFunc):
    -3760    pass
    +            
    3812class PercentileDisc(AggFunc):
    +3813    pass
     
    @@ -38898,8 +39641,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3763class Quantile(AggFunc):
    -3764    arg_types = {"this": True, "quantile": True}
    +            
    3816class Quantile(AggFunc):
    +3817    arg_types = {"this": True, "quantile": True}
     
    @@ -38975,9 +39718,9 @@ name is set to the expression's class name transformed to snake case.
    -
    3769class Quantiles(AggFunc):
    -3770    arg_types = {"parameters": True, "expressions": True}
    -3771    is_var_len_args = True
    +            
    3822class Quantiles(AggFunc):
    +3823    arg_types = {"parameters": True, "expressions": True}
    +3824    is_var_len_args = True
     
    @@ -39053,8 +39796,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3774class QuantileIf(AggFunc):
    -3775    arg_types = {"parameters": True, "expressions": True}
    +            
    3827class QuantileIf(AggFunc):
    +3828    arg_types = {"parameters": True, "expressions": True}
     
    @@ -39130,8 +39873,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3778class ApproxQuantile(Quantile):
    -3779    arg_types = {"this": True, "quantile": True, "accuracy": False, "weight": False}
    +            
    3831class ApproxQuantile(Quantile):
    +3832    arg_types = {"this": True, "quantile": True, "accuracy": False, "weight": False}
     
    @@ -39207,8 +39950,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3782class RangeN(Func):
    -3783    arg_types = {"this": True, "expressions": True, "each": False}
    +            
    3835class RangeN(Func):
    +3836    arg_types = {"this": True, "expressions": True, "each": False}
     
    @@ -39284,10 +40027,10 @@ name is set to the expression's class name transformed to snake case.
    -
    3786class ReadCSV(Func):
    -3787    _sql_names = ["READ_CSV"]
    -3788    is_var_len_args = True
    -3789    arg_types = {"this": True, "expressions": False}
    +            
    3839class ReadCSV(Func):
    +3840    _sql_names = ["READ_CSV"]
    +3841    is_var_len_args = True
    +3842    arg_types = {"this": True, "expressions": False}
     
    @@ -39363,8 +40106,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3792class Reduce(Func):
    -3793    arg_types = {"this": True, "initial": True, "merge": True, "finish": False}
    +            
    3845class Reduce(Func):
    +3846    arg_types = {"this": True, "initial": True, "merge": True, "finish": False}
     
    @@ -39440,14 +40183,14 @@ name is set to the expression's class name transformed to snake case.
    -
    3796class RegexpExtract(Func):
    -3797    arg_types = {
    -3798        "this": True,
    -3799        "expression": True,
    -3800        "position": False,
    -3801        "occurrence": False,
    -3802        "group": False,
    -3803    }
    +            
    3849class RegexpExtract(Func):
    +3850    arg_types = {
    +3851        "this": True,
    +3852        "expression": True,
    +3853        "position": False,
    +3854        "occurrence": False,
    +3855        "group": False,
    +3856    }
     
    @@ -39523,8 +40266,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3806class RegexpLike(Func):
    -3807    arg_types = {"this": True, "expression": True, "flag": False}
    +            
    3859class RegexpLike(Func):
    +3860    arg_types = {"this": True, "expression": True, "flag": False}
     
    @@ -39600,8 +40343,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3810class RegexpILike(Func):
    -3811    arg_types = {"this": True, "expression": True, "flag": False}
    +            
    3863class RegexpILike(Func):
    +3864    arg_types = {"this": True, "expression": True, "flag": False}
     
    @@ -39677,8 +40420,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3816class RegexpSplit(Func):
    -3817    arg_types = {"this": True, "expression": True, "limit": False}
    +            
    3869class RegexpSplit(Func):
    +3870    arg_types = {"this": True, "expression": True, "limit": False}
     
    @@ -39754,8 +40497,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3820class Repeat(Func):
    -3821    arg_types = {"this": True, "times": True}
    +            
    3873class Repeat(Func):
    +3874    arg_types = {"this": True, "times": True}
     
    @@ -39831,8 +40574,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3824class Round(Func):
    -3825    arg_types = {"this": True, "decimals": False}
    +            
    3877class Round(Func):
    +3878    arg_types = {"this": True, "decimals": False}
     
    @@ -39908,8 +40651,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3828class RowNumber(Func):
    -3829    arg_types: t.Dict[str, t.Any] = {}
    +            
    3881class RowNumber(Func):
    +3882    arg_types: t.Dict[str, t.Any] = {}
     
    @@ -39985,8 +40728,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3832class SafeDivide(Func):
    -3833    arg_types = {"this": True, "expression": True}
    +            
    3885class SafeDivide(Func):
    +3886    arg_types = {"this": True, "expression": True}
     
    @@ -40062,8 +40805,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3836class SetAgg(AggFunc):
    -3837    pass
    +            
    3889class SetAgg(AggFunc):
    +3890    pass
     
    @@ -40124,6 +40867,161 @@ name is set to the expression's class name transformed to snake case.
    or_
    not_
    +
    + + +
    +
    + +
    + + class + SHA(Func): + + + +
    + +
    3893class SHA(Func):
    +3894    _sql_names = ["SHA", "SHA1"]
    +
    + + + + + +
    +
    + +
    + + class + SHA2(Func): + + + +
    + +
    3897class SHA2(Func):
    +3898    _sql_names = ["SHA2"]
    +3899    arg_types = {"this": True, "length": False}
    +
    + + + + + @@ -40139,8 +41037,8 @@ name is set to the expression's class name transformed to snake case. -
    3840class SortArray(Func):
    -3841    arg_types = {"this": True, "asc": False}
    +            
    3902class SortArray(Func):
    +3903    arg_types = {"this": True, "asc": False}
     
    @@ -40216,8 +41114,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3844class Split(Func):
    -3845    arg_types = {"this": True, "expression": True, "limit": False}
    +            
    3906class Split(Func):
    +3907    arg_types = {"this": True, "expression": True, "limit": False}
     
    @@ -40293,8 +41191,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3850class Substring(Func):
    -3851    arg_types = {"this": True, "start": False, "length": False}
    +            
    3912class Substring(Func):
    +3913    arg_types = {"this": True, "start": False, "length": False}
     
    @@ -40370,13 +41268,13 @@ name is set to the expression's class name transformed to snake case.
    -
    3854class StrPosition(Func):
    -3855    arg_types = {
    -3856        "this": True,
    -3857        "substr": True,
    -3858        "position": False,
    -3859        "instance": False,
    -3860    }
    +            
    3916class StrPosition(Func):
    +3917    arg_types = {
    +3918        "this": True,
    +3919        "substr": True,
    +3920        "position": False,
    +3921        "instance": False,
    +3922    }
     
    @@ -40452,8 +41350,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3863class StrToDate(Func):
    -3864    arg_types = {"this": True, "format": True}
    +            
    3925class StrToDate(Func):
    +3926    arg_types = {"this": True, "format": True}
     
    @@ -40529,8 +41427,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3867class StrToTime(Func):
    -3868    arg_types = {"this": True, "format": True}
    +            
    3929class StrToTime(Func):
    +3930    arg_types = {"this": True, "format": True}
     
    @@ -40606,8 +41504,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3873class StrToUnix(Func):
    -3874    arg_types = {"this": False, "format": False}
    +            
    3935class StrToUnix(Func):
    +3936    arg_types = {"this": False, "format": False}
     
    @@ -40683,8 +41581,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3877class NumberToStr(Func):
    -3878    arg_types = {"this": True, "format": True}
    +            
    3939class NumberToStr(Func):
    +3940    arg_types = {"this": True, "format": True}
     
    @@ -40760,9 +41658,9 @@ name is set to the expression's class name transformed to snake case.
    -
    3881class Struct(Func):
    -3882    arg_types = {"expressions": True}
    -3883    is_var_len_args = True
    +            
    3943class Struct(Func):
    +3944    arg_types = {"expressions": True}
    +3945    is_var_len_args = True
     
    @@ -40838,8 +41736,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3886class StructExtract(Func):
    -3887    arg_types = {"this": True, "expression": True}
    +            
    3948class StructExtract(Func):
    +3949    arg_types = {"this": True, "expression": True}
     
    @@ -40915,8 +41813,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3890class Sum(AggFunc):
    -3891    pass
    +            
    3952class Sum(AggFunc):
    +3953    pass
     
    @@ -40992,8 +41890,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3894class Sqrt(Func):
    -3895    pass
    +            
    3956class Sqrt(Func):
    +3957    pass
     
    @@ -41069,8 +41967,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3898class Stddev(AggFunc):
    -3899    pass
    +            
    3960class Stddev(AggFunc):
    +3961    pass
     
    @@ -41146,8 +42044,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3902class StddevPop(AggFunc):
    -3903    pass
    +            
    3964class StddevPop(AggFunc):
    +3965    pass
     
    @@ -41223,8 +42121,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3906class StddevSamp(AggFunc):
    -3907    pass
    +            
    3968class StddevSamp(AggFunc):
    +3969    pass
     
    @@ -41300,8 +42198,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3910class TimeToStr(Func):
    -3911    arg_types = {"this": True, "format": True}
    +            
    3972class TimeToStr(Func):
    +3973    arg_types = {"this": True, "format": True}
     
    @@ -41377,8 +42275,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3914class TimeToTimeStr(Func):
    -3915    pass
    +            
    3976class TimeToTimeStr(Func):
    +3977    pass
     
    @@ -41454,8 +42352,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3918class TimeToUnix(Func):
    -3919    pass
    +            
    3980class TimeToUnix(Func):
    +3981    pass
     
    @@ -41531,8 +42429,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3922class TimeStrToDate(Func):
    -3923    pass
    +            
    3984class TimeStrToDate(Func):
    +3985    pass
     
    @@ -41608,8 +42506,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3926class TimeStrToTime(Func):
    -3927    pass
    +            
    3988class TimeStrToTime(Func):
    +3989    pass
     
    @@ -41685,8 +42583,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3930class TimeStrToUnix(Func):
    -3931    pass
    +            
    3992class TimeStrToUnix(Func):
    +3993    pass
     
    @@ -41762,13 +42660,13 @@ name is set to the expression's class name transformed to snake case.
    -
    3934class Trim(Func):
    -3935    arg_types = {
    -3936        "this": True,
    -3937        "expression": False,
    -3938        "position": False,
    -3939        "collation": False,
    -3940    }
    +            
    3996class Trim(Func):
    +3997    arg_types = {
    +3998        "this": True,
    +3999        "expression": False,
    +4000        "position": False,
    +4001        "collation": False,
    +4002    }
     
    @@ -41844,8 +42742,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3943class TsOrDsAdd(Func, TimeUnit):
    -3944    arg_types = {"this": True, "expression": True, "unit": False}
    +            
    4005class TsOrDsAdd(Func, TimeUnit):
    +4006    arg_types = {"this": True, "expression": True, "unit": False}
     
    @@ -41924,8 +42822,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3947class TsOrDsToDateStr(Func):
    -3948    pass
    +            
    4009class TsOrDsToDateStr(Func):
    +4010    pass
     
    @@ -42001,8 +42899,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3951class TsOrDsToDate(Func):
    -3952    arg_types = {"this": True, "format": False}
    +            
    4013class TsOrDsToDate(Func):
    +4014    arg_types = {"this": True, "format": False}
     
    @@ -42078,8 +42976,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3955class TsOrDiToDi(Func):
    -3956    pass
    +            
    4017class TsOrDiToDi(Func):
    +4018    pass
     
    @@ -42155,8 +43053,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3959class Unhex(Func):
    -3960    pass
    +            
    4021class Unhex(Func):
    +4022    pass
     
    @@ -42232,8 +43130,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3963class UnixToStr(Func):
    -3964    arg_types = {"this": True, "format": False}
    +            
    4025class UnixToStr(Func):
    +4026    arg_types = {"this": True, "format": False}
     
    @@ -42309,12 +43207,12 @@ name is set to the expression's class name transformed to snake case.
    -
    3969class UnixToTime(Func):
    -3970    arg_types = {"this": True, "scale": False, "zone": False, "hours": False, "minutes": False}
    -3971
    -3972    SECONDS = Literal.string("seconds")
    -3973    MILLIS = Literal.string("millis")
    -3974    MICROS = Literal.string("micros")
    +            
    4031class UnixToTime(Func):
    +4032    arg_types = {"this": True, "scale": False, "zone": False, "hours": False, "minutes": False}
    +4033
    +4034    SECONDS = Literal.string("seconds")
    +4035    MILLIS = Literal.string("millis")
    +4036    MICROS = Literal.string("micros")
     
    @@ -42390,8 +43288,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3977class UnixToTimeStr(Func):
    -3978    pass
    +            
    4039class UnixToTimeStr(Func):
    +4040    pass
     
    @@ -42467,8 +43365,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3981class Upper(Func):
    -3982    _sql_names = ["UPPER", "UCASE"]
    +            
    4043class Upper(Func):
    +4044    _sql_names = ["UPPER", "UCASE"]
     
    @@ -42544,8 +43442,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3985class Variance(AggFunc):
    -3986    _sql_names = ["VARIANCE", "VARIANCE_SAMP", "VAR_SAMP"]
    +            
    4047class Variance(AggFunc):
    +4048    _sql_names = ["VARIANCE", "VARIANCE_SAMP", "VAR_SAMP"]
     
    @@ -42621,8 +43519,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3989class VariancePop(AggFunc):
    -3990    _sql_names = ["VARIANCE_POP", "VAR_POP"]
    +            
    4051class VariancePop(AggFunc):
    +4052    _sql_names = ["VARIANCE_POP", "VAR_POP"]
     
    @@ -42698,8 +43596,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3993class Week(Func):
    -3994    arg_types = {"this": True, "mode": False}
    +            
    4055class Week(Func):
    +4056    arg_types = {"this": True, "mode": False}
     
    @@ -42775,8 +43673,8 @@ name is set to the expression's class name transformed to snake case.
    -
    3997class XMLTable(Func):
    -3998    arg_types = {"this": True, "passing": False, "columns": False, "by_ref": False}
    +            
    4059class XMLTable(Func):
    +4060    arg_types = {"this": True, "passing": False, "columns": False, "by_ref": False}
     
    @@ -42852,8 +43750,8 @@ name is set to the expression's class name transformed to snake case.
    -
    4001class Year(Func):
    -4002    pass
    +            
    4063class Year(Func):
    +4064    pass
     
    @@ -42929,8 +43827,8 @@ name is set to the expression's class name transformed to snake case.
    -
    4005class Use(Expression):
    -4006    arg_types = {"this": True, "kind": False}
    +            
    4067class Use(Expression):
    +4068    arg_types = {"this": True, "kind": False}
     
    @@ -42993,8 +43891,8 @@ name is set to the expression's class name transformed to snake case.
    -
    4009class Merge(Expression):
    -4010    arg_types = {"this": True, "using": True, "on": True, "expressions": True}
    +            
    4071class Merge(Expression):
    +4072    arg_types = {"this": True, "using": True, "on": True, "expressions": True}
     
    @@ -43057,8 +43955,8 @@ name is set to the expression's class name transformed to snake case.
    -
    4013class When(Func):
    -4014    arg_types = {"matched": True, "source": False, "condition": False, "then": True}
    +            
    4075class When(Func):
    +4076    arg_types = {"matched": True, "source": False, "condition": False, "then": True}
     
    @@ -43134,48 +44032,48 @@ name is set to the expression's class name transformed to snake case.
    -
    4025def maybe_parse(
    -4026    sql_or_expression: ExpOrStr,
    -4027    *,
    -4028    into: t.Optional[IntoType] = None,
    -4029    dialect: DialectType = None,
    -4030    prefix: t.Optional[str] = None,
    -4031    copy: bool = False,
    -4032    **opts,
    -4033) -> Expression:
    -4034    """Gracefully handle a possible string or expression.
    -4035
    -4036    Example:
    -4037        >>> maybe_parse("1")
    -4038        (LITERAL this: 1, is_string: False)
    -4039        >>> maybe_parse(to_identifier("x"))
    -4040        (IDENTIFIER this: x, quoted: False)
    -4041
    -4042    Args:
    -4043        sql_or_expression: the SQL code string or an expression
    -4044        into: the SQLGlot Expression to parse into
    -4045        dialect: the dialect used to parse the input expressions (in the case that an
    -4046            input expression is a SQL string).
    -4047        prefix: a string to prefix the sql with before it gets parsed
    -4048            (automatically includes a space)
    -4049        copy: whether or not to copy the expression.
    -4050        **opts: other options to use to parse the input expressions (again, in the case
    -4051            that an input expression is a SQL string).
    -4052
    -4053    Returns:
    -4054        Expression: the parsed or given expression.
    -4055    """
    -4056    if isinstance(sql_or_expression, Expression):
    -4057        if copy:
    -4058            return sql_or_expression.copy()
    -4059        return sql_or_expression
    -4060
    -4061    import sqlglot
    -4062
    -4063    sql = str(sql_or_expression)
    -4064    if prefix:
    -4065        sql = f"{prefix} {sql}"
    -4066    return sqlglot.parse_one(sql, read=dialect, into=into, **opts)
    +            
    4113def maybe_parse(
    +4114    sql_or_expression: ExpOrStr,
    +4115    *,
    +4116    into: t.Optional[IntoType] = None,
    +4117    dialect: DialectType = None,
    +4118    prefix: t.Optional[str] = None,
    +4119    copy: bool = False,
    +4120    **opts,
    +4121) -> Expression:
    +4122    """Gracefully handle a possible string or expression.
    +4123
    +4124    Example:
    +4125        >>> maybe_parse("1")
    +4126        (LITERAL this: 1, is_string: False)
    +4127        >>> maybe_parse(to_identifier("x"))
    +4128        (IDENTIFIER this: x, quoted: False)
    +4129
    +4130    Args:
    +4131        sql_or_expression: the SQL code string or an expression
    +4132        into: the SQLGlot Expression to parse into
    +4133        dialect: the dialect used to parse the input expressions (in the case that an
    +4134            input expression is a SQL string).
    +4135        prefix: a string to prefix the sql with before it gets parsed
    +4136            (automatically includes a space)
    +4137        copy: whether or not to copy the expression.
    +4138        **opts: other options to use to parse the input expressions (again, in the case
    +4139            that an input expression is a SQL string).
    +4140
    +4141    Returns:
    +4142        Expression: the parsed or given expression.
    +4143    """
    +4144    if isinstance(sql_or_expression, Expression):
    +4145        if copy:
    +4146            return sql_or_expression.copy()
    +4147        return sql_or_expression
    +4148
    +4149    import sqlglot
    +4150
    +4151    sql = str(sql_or_expression)
    +4152    if prefix:
    +4153        sql = f"{prefix} {sql}"
    +4154    return sqlglot.parse_one(sql, read=dialect, into=into, **opts)
     
    @@ -43227,29 +44125,29 @@ that an input expression is a SQL string).
    -
    4212def union(left, right, distinct=True, dialect=None, **opts):
    -4213    """
    -4214    Initializes a syntax tree from one UNION expression.
    -4215
    -4216    Example:
    -4217        >>> union("SELECT * FROM foo", "SELECT * FROM bla").sql()
    -4218        'SELECT * FROM foo UNION SELECT * FROM bla'
    -4219
    -4220    Args:
    -4221        left (str | Expression): the SQL code string corresponding to the left-hand side.
    -4222            If an `Expression` instance is passed, it will be used as-is.
    -4223        right (str | Expression): the SQL code string corresponding to the right-hand side.
    -4224            If an `Expression` instance is passed, it will be used as-is.
    -4225        distinct (bool): set the DISTINCT flag if and only if this is true.
    -4226        dialect (str): the dialect used to parse the input expression.
    -4227        opts (kwargs): other options to use to parse the input expressions.
    -4228    Returns:
    -4229        Union: the syntax tree for the UNION expression.
    -4230    """
    -4231    left = maybe_parse(sql_or_expression=left, dialect=dialect, **opts)
    -4232    right = maybe_parse(sql_or_expression=right, dialect=dialect, **opts)
    -4233
    -4234    return Union(this=left, expression=right, distinct=distinct)
    +            
    4300def union(left, right, distinct=True, dialect=None, **opts):
    +4301    """
    +4302    Initializes a syntax tree from one UNION expression.
    +4303
    +4304    Example:
    +4305        >>> union("SELECT * FROM foo", "SELECT * FROM bla").sql()
    +4306        'SELECT * FROM foo UNION SELECT * FROM bla'
    +4307
    +4308    Args:
    +4309        left (str | Expression): the SQL code string corresponding to the left-hand side.
    +4310            If an `Expression` instance is passed, it will be used as-is.
    +4311        right (str | Expression): the SQL code string corresponding to the right-hand side.
    +4312            If an `Expression` instance is passed, it will be used as-is.
    +4313        distinct (bool): set the DISTINCT flag if and only if this is true.
    +4314        dialect (str): the dialect used to parse the input expression.
    +4315        opts (kwargs): other options to use to parse the input expressions.
    +4316    Returns:
    +4317        Union: the syntax tree for the UNION expression.
    +4318    """
    +4319    left = maybe_parse(sql_or_expression=left, dialect=dialect, **opts)
    +4320    right = maybe_parse(sql_or_expression=right, dialect=dialect, **opts)
    +4321
    +4322    return Union(this=left, expression=right, distinct=distinct)
     
    @@ -43297,29 +44195,29 @@ If an Expression instance is passed, it w
    -
    4237def intersect(left, right, distinct=True, dialect=None, **opts):
    -4238    """
    -4239    Initializes a syntax tree from one INTERSECT expression.
    -4240
    -4241    Example:
    -4242        >>> intersect("SELECT * FROM foo", "SELECT * FROM bla").sql()
    -4243        'SELECT * FROM foo INTERSECT SELECT * FROM bla'
    -4244
    -4245    Args:
    -4246        left (str | Expression): the SQL code string corresponding to the left-hand side.
    -4247            If an `Expression` instance is passed, it will be used as-is.
    -4248        right (str | Expression): the SQL code string corresponding to the right-hand side.
    -4249            If an `Expression` instance is passed, it will be used as-is.
    -4250        distinct (bool): set the DISTINCT flag if and only if this is true.
    -4251        dialect (str): the dialect used to parse the input expression.
    -4252        opts (kwargs): other options to use to parse the input expressions.
    -4253    Returns:
    -4254        Intersect: the syntax tree for the INTERSECT expression.
    -4255    """
    -4256    left = maybe_parse(sql_or_expression=left, dialect=dialect, **opts)
    -4257    right = maybe_parse(sql_or_expression=right, dialect=dialect, **opts)
    -4258
    -4259    return Intersect(this=left, expression=right, distinct=distinct)
    +            
    4325def intersect(left, right, distinct=True, dialect=None, **opts):
    +4326    """
    +4327    Initializes a syntax tree from one INTERSECT expression.
    +4328
    +4329    Example:
    +4330        >>> intersect("SELECT * FROM foo", "SELECT * FROM bla").sql()
    +4331        'SELECT * FROM foo INTERSECT SELECT * FROM bla'
    +4332
    +4333    Args:
    +4334        left (str | Expression): the SQL code string corresponding to the left-hand side.
    +4335            If an `Expression` instance is passed, it will be used as-is.
    +4336        right (str | Expression): the SQL code string corresponding to the right-hand side.
    +4337            If an `Expression` instance is passed, it will be used as-is.
    +4338        distinct (bool): set the DISTINCT flag if and only if this is true.
    +4339        dialect (str): the dialect used to parse the input expression.
    +4340        opts (kwargs): other options to use to parse the input expressions.
    +4341    Returns:
    +4342        Intersect: the syntax tree for the INTERSECT expression.
    +4343    """
    +4344    left = maybe_parse(sql_or_expression=left, dialect=dialect, **opts)
    +4345    right = maybe_parse(sql_or_expression=right, dialect=dialect, **opts)
    +4346
    +4347    return Intersect(this=left, expression=right, distinct=distinct)
     
    @@ -43367,29 +44265,29 @@ If an Expression instance is passed, it w
    -
    4262def except_(left, right, distinct=True, dialect=None, **opts):
    -4263    """
    -4264    Initializes a syntax tree from one EXCEPT expression.
    -4265
    -4266    Example:
    -4267        >>> except_("SELECT * FROM foo", "SELECT * FROM bla").sql()
    -4268        'SELECT * FROM foo EXCEPT SELECT * FROM bla'
    -4269
    -4270    Args:
    -4271        left (str | Expression): the SQL code string corresponding to the left-hand side.
    -4272            If an `Expression` instance is passed, it will be used as-is.
    -4273        right (str | Expression): the SQL code string corresponding to the right-hand side.
    -4274            If an `Expression` instance is passed, it will be used as-is.
    -4275        distinct (bool): set the DISTINCT flag if and only if this is true.
    -4276        dialect (str): the dialect used to parse the input expression.
    -4277        opts (kwargs): other options to use to parse the input expressions.
    -4278    Returns:
    -4279        Except: the syntax tree for the EXCEPT statement.
    -4280    """
    -4281    left = maybe_parse(sql_or_expression=left, dialect=dialect, **opts)
    -4282    right = maybe_parse(sql_or_expression=right, dialect=dialect, **opts)
    -4283
    -4284    return Except(this=left, expression=right, distinct=distinct)
    +            
    4350def except_(left, right, distinct=True, dialect=None, **opts):
    +4351    """
    +4352    Initializes a syntax tree from one EXCEPT expression.
    +4353
    +4354    Example:
    +4355        >>> except_("SELECT * FROM foo", "SELECT * FROM bla").sql()
    +4356        'SELECT * FROM foo EXCEPT SELECT * FROM bla'
    +4357
    +4358    Args:
    +4359        left (str | Expression): the SQL code string corresponding to the left-hand side.
    +4360            If an `Expression` instance is passed, it will be used as-is.
    +4361        right (str | Expression): the SQL code string corresponding to the right-hand side.
    +4362            If an `Expression` instance is passed, it will be used as-is.
    +4363        distinct (bool): set the DISTINCT flag if and only if this is true.
    +4364        dialect (str): the dialect used to parse the input expression.
    +4365        opts (kwargs): other options to use to parse the input expressions.
    +4366    Returns:
    +4367        Except: the syntax tree for the EXCEPT statement.
    +4368    """
    +4369    left = maybe_parse(sql_or_expression=left, dialect=dialect, **opts)
    +4370    right = maybe_parse(sql_or_expression=right, dialect=dialect, **opts)
    +4371
    +4372    return Except(this=left, expression=right, distinct=distinct)
     
    @@ -43437,26 +44335,26 @@ If an Expression instance is passed, it w
    -
    4287def select(*expressions: ExpOrStr, dialect: DialectType = None, **opts) -> Select:
    -4288    """
    -4289    Initializes a syntax tree from one or multiple SELECT expressions.
    -4290
    -4291    Example:
    -4292        >>> select("col1", "col2").from_("tbl").sql()
    -4293        'SELECT col1, col2 FROM tbl'
    -4294
    -4295    Args:
    -4296        *expressions: the SQL code string to parse as the expressions of a
    -4297            SELECT statement. If an Expression instance is passed, this is used as-is.
    -4298        dialect: the dialect used to parse the input expressions (in the case that an
    -4299            input expression is a SQL string).
    -4300        **opts: other options to use to parse the input expressions (again, in the case
    -4301            that an input expression is a SQL string).
    -4302
    -4303    Returns:
    -4304        Select: the syntax tree for the SELECT statement.
    -4305    """
    -4306    return Select().select(*expressions, dialect=dialect, **opts)
    +            
    4375def select(*expressions: ExpOrStr, dialect: DialectType = None, **opts) -> Select:
    +4376    """
    +4377    Initializes a syntax tree from one or multiple SELECT expressions.
    +4378
    +4379    Example:
    +4380        >>> select("col1", "col2").from_("tbl").sql()
    +4381        'SELECT col1, col2 FROM tbl'
    +4382
    +4383    Args:
    +4384        *expressions: the SQL code string to parse as the expressions of a
    +4385            SELECT statement. If an Expression instance is passed, this is used as-is.
    +4386        dialect: the dialect used to parse the input expressions (in the case that an
    +4387            input expression is a SQL string).
    +4388        **opts: other options to use to parse the input expressions (again, in the case
    +4389            that an input expression is a SQL string).
    +4390
    +4391    Returns:
    +4392        Select: the syntax tree for the SELECT statement.
    +4393    """
    +4394    return Select().select(*expressions, dialect=dialect, **opts)
     
    @@ -43503,26 +44401,26 @@ that an input expression is a SQL string).
    -
    4309def from_(*expressions, dialect=None, **opts) -> Select:
    -4310    """
    -4311    Initializes a syntax tree from a FROM expression.
    -4312
    -4313    Example:
    -4314        >>> from_("tbl").select("col1", "col2").sql()
    -4315        'SELECT col1, col2 FROM tbl'
    -4316
    -4317    Args:
    -4318        *expressions (str | Expression): the SQL code string to parse as the FROM expressions of a
    -4319            SELECT statement. If an Expression instance is passed, this is used as-is.
    -4320        dialect (str): the dialect used to parse the input expression (in the case that the
    -4321            input expression is a SQL string).
    -4322        **opts: other options to use to parse the input expressions (again, in the case
    -4323            that the input expression is a SQL string).
    -4324
    -4325    Returns:
    -4326        Select: the syntax tree for the SELECT statement.
    -4327    """
    -4328    return Select().from_(*expressions, dialect=dialect, **opts)
    +            
    4397def from_(*expressions, dialect=None, **opts) -> Select:
    +4398    """
    +4399    Initializes a syntax tree from a FROM expression.
    +4400
    +4401    Example:
    +4402        >>> from_("tbl").select("col1", "col2").sql()
    +4403        'SELECT col1, col2 FROM tbl'
    +4404
    +4405    Args:
    +4406        *expressions (str | Expression): the SQL code string to parse as the FROM expressions of a
    +4407            SELECT statement. If an Expression instance is passed, this is used as-is.
    +4408        dialect (str): the dialect used to parse the input expression (in the case that the
    +4409            input expression is a SQL string).
    +4410        **opts: other options to use to parse the input expressions (again, in the case
    +4411            that the input expression is a SQL string).
    +4412
    +4413    Returns:
    +4414        Select: the syntax tree for the SELECT statement.
    +4415    """
    +4416    return Select().from_(*expressions, dialect=dialect, **opts)
     
    @@ -43569,53 +44467,53 @@ that the input expression is a SQL string).
    -
    4331def update(
    -4332    table: str | Table,
    -4333    properties: dict,
    -4334    where: t.Optional[ExpOrStr] = None,
    -4335    from_: t.Optional[ExpOrStr] = None,
    -4336    dialect: DialectType = None,
    -4337    **opts,
    -4338) -> Update:
    -4339    """
    -4340    Creates an update statement.
    -4341
    -4342    Example:
    -4343        >>> update("my_table", {"x": 1, "y": "2", "z": None}, from_="baz", where="id > 1").sql()
    -4344        "UPDATE my_table SET x = 1, y = '2', z = NULL FROM baz WHERE id > 1"
    -4345
    -4346    Args:
    -4347        *properties: dictionary of properties to set which are
    -4348            auto converted to sql objects eg None -> NULL
    -4349        where: sql conditional parsed into a WHERE statement
    -4350        from_: sql statement parsed into a FROM statement
    -4351        dialect: the dialect used to parse the input expressions.
    -4352        **opts: other options to use to parse the input expressions.
    -4353
    -4354    Returns:
    -4355        Update: the syntax tree for the UPDATE statement.
    -4356    """
    -4357    update_expr = Update(this=maybe_parse(table, into=Table, dialect=dialect))
    -4358    update_expr.set(
    -4359        "expressions",
    -4360        [
    -4361            EQ(this=maybe_parse(k, dialect=dialect, **opts), expression=convert(v))
    -4362            for k, v in properties.items()
    -4363        ],
    -4364    )
    -4365    if from_:
    -4366        update_expr.set(
    -4367            "from",
    -4368            maybe_parse(from_, into=From, dialect=dialect, prefix="FROM", **opts),
    -4369        )
    -4370    if isinstance(where, Condition):
    -4371        where = Where(this=where)
    -4372    if where:
    -4373        update_expr.set(
    -4374            "where",
    -4375            maybe_parse(where, into=Where, dialect=dialect, prefix="WHERE", **opts),
    -4376        )
    -4377    return update_expr
    +            
    4419def update(
    +4420    table: str | Table,
    +4421    properties: dict,
    +4422    where: t.Optional[ExpOrStr] = None,
    +4423    from_: t.Optional[ExpOrStr] = None,
    +4424    dialect: DialectType = None,
    +4425    **opts,
    +4426) -> Update:
    +4427    """
    +4428    Creates an update statement.
    +4429
    +4430    Example:
    +4431        >>> update("my_table", {"x": 1, "y": "2", "z": None}, from_="baz", where="id > 1").sql()
    +4432        "UPDATE my_table SET x = 1, y = '2', z = NULL FROM baz WHERE id > 1"
    +4433
    +4434    Args:
    +4435        *properties: dictionary of properties to set which are
    +4436            auto converted to sql objects eg None -> NULL
    +4437        where: sql conditional parsed into a WHERE statement
    +4438        from_: sql statement parsed into a FROM statement
    +4439        dialect: the dialect used to parse the input expressions.
    +4440        **opts: other options to use to parse the input expressions.
    +4441
    +4442    Returns:
    +4443        Update: the syntax tree for the UPDATE statement.
    +4444    """
    +4445    update_expr = Update(this=maybe_parse(table, into=Table, dialect=dialect))
    +4446    update_expr.set(
    +4447        "expressions",
    +4448        [
    +4449            EQ(this=maybe_parse(k, dialect=dialect, **opts), expression=convert(v))
    +4450            for k, v in properties.items()
    +4451        ],
    +4452    )
    +4453    if from_:
    +4454        update_expr.set(
    +4455            "from",
    +4456            maybe_parse(from_, into=From, dialect=dialect, prefix="FROM", **opts),
    +4457        )
    +4458    if isinstance(where, Condition):
    +4459        where = Where(this=where)
    +4460    if where:
    +4461        update_expr.set(
    +4462            "where",
    +4463            maybe_parse(where, into=Where, dialect=dialect, prefix="WHERE", **opts),
    +4464        )
    +4465    return update_expr
     
    @@ -43662,35 +44560,35 @@ auto converted to sql objects eg None -> NULL
    -
    4380def delete(
    -4381    table: ExpOrStr,
    -4382    where: t.Optional[ExpOrStr] = None,
    -4383    returning: t.Optional[ExpOrStr] = None,
    -4384    dialect: DialectType = None,
    -4385    **opts,
    -4386) -> Delete:
    -4387    """
    -4388    Builds a delete statement.
    -4389
    -4390    Example:
    -4391        >>> delete("my_table", where="id > 1").sql()
    -4392        'DELETE FROM my_table WHERE id > 1'
    -4393
    -4394    Args:
    -4395        where: sql conditional parsed into a WHERE statement
    -4396        returning: sql conditional parsed into a RETURNING statement
    -4397        dialect: the dialect used to parse the input expressions.
    -4398        **opts: other options to use to parse the input expressions.
    -4399
    -4400    Returns:
    -4401        Delete: the syntax tree for the DELETE statement.
    -4402    """
    -4403    delete_expr = Delete().delete(table, dialect=dialect, copy=False, **opts)
    -4404    if where:
    -4405        delete_expr = delete_expr.where(where, dialect=dialect, copy=False, **opts)
    -4406    if returning:
    -4407        delete_expr = delete_expr.returning(returning, dialect=dialect, copy=False, **opts)
    -4408    return delete_expr
    +            
    4468def delete(
    +4469    table: ExpOrStr,
    +4470    where: t.Optional[ExpOrStr] = None,
    +4471    returning: t.Optional[ExpOrStr] = None,
    +4472    dialect: DialectType = None,
    +4473    **opts,
    +4474) -> Delete:
    +4475    """
    +4476    Builds a delete statement.
    +4477
    +4478    Example:
    +4479        >>> delete("my_table", where="id > 1").sql()
    +4480        'DELETE FROM my_table WHERE id > 1'
    +4481
    +4482    Args:
    +4483        where: sql conditional parsed into a WHERE statement
    +4484        returning: sql conditional parsed into a RETURNING statement
    +4485        dialect: the dialect used to parse the input expressions.
    +4486        **opts: other options to use to parse the input expressions.
    +4487
    +4488    Returns:
    +4489        Delete: the syntax tree for the DELETE statement.
    +4490    """
    +4491    delete_expr = Delete().delete(table, dialect=dialect, copy=False, **opts)
    +4492    if where:
    +4493        delete_expr = delete_expr.where(where, dialect=dialect, copy=False, **opts)
    +4494    if returning:
    +4495        delete_expr = delete_expr.returning(returning, dialect=dialect, copy=False, **opts)
    +4496    return delete_expr
     
    @@ -43735,37 +44633,37 @@ auto converted to sql objects eg None -> NULL
    -
    4411def condition(expression, dialect=None, **opts) -> Condition:
    -4412    """
    -4413    Initialize a logical condition expression.
    -4414
    -4415    Example:
    -4416        >>> condition("x=1").sql()
    -4417        'x = 1'
    -4418
    -4419        This is helpful for composing larger logical syntax trees:
    -4420        >>> where = condition("x=1")
    -4421        >>> where = where.and_("y=1")
    -4422        >>> Select().from_("tbl").select("*").where(where).sql()
    -4423        'SELECT * FROM tbl WHERE x = 1 AND y = 1'
    -4424
    -4425    Args:
    -4426        *expression (str | Expression): the SQL code string to parse.
    -4427            If an Expression instance is passed, this is used as-is.
    -4428        dialect (str): the dialect used to parse the input expression (in the case that the
    -4429            input expression is a SQL string).
    -4430        **opts: other options to use to parse the input expressions (again, in the case
    -4431            that the input expression is a SQL string).
    -4432
    -4433    Returns:
    -4434        Condition: the expression
    -4435    """
    -4436    return maybe_parse(  # type: ignore
    -4437        expression,
    -4438        into=Condition,
    -4439        dialect=dialect,
    -4440        **opts,
    -4441    )
    +            
    4499def condition(expression, dialect=None, **opts) -> Condition:
    +4500    """
    +4501    Initialize a logical condition expression.
    +4502
    +4503    Example:
    +4504        >>> condition("x=1").sql()
    +4505        'x = 1'
    +4506
    +4507        This is helpful for composing larger logical syntax trees:
    +4508        >>> where = condition("x=1")
    +4509        >>> where = where.and_("y=1")
    +4510        >>> Select().from_("tbl").select("*").where(where).sql()
    +4511        'SELECT * FROM tbl WHERE x = 1 AND y = 1'
    +4512
    +4513    Args:
    +4514        *expression (str | Expression): the SQL code string to parse.
    +4515            If an Expression instance is passed, this is used as-is.
    +4516        dialect (str): the dialect used to parse the input expression (in the case that the
    +4517            input expression is a SQL string).
    +4518        **opts: other options to use to parse the input expressions (again, in the case
    +4519            that the input expression is a SQL string).
    +4520
    +4521    Returns:
    +4522        Condition: the expression
    +4523    """
    +4524    return maybe_parse(  # type: ignore
    +4525        expression,
    +4526        into=Condition,
    +4527        dialect=dialect,
    +4528        **opts,
    +4529    )
     
    @@ -43822,24 +44720,24 @@ that the input expression is a SQL string).
    -
    4444def and_(*expressions, dialect=None, **opts) -> And:
    -4445    """
    -4446    Combine multiple conditions with an AND logical operator.
    -4447
    -4448    Example:
    -4449        >>> and_("x=1", and_("y=1", "z=1")).sql()
    -4450        'x = 1 AND (y = 1 AND z = 1)'
    -4451
    -4452    Args:
    -4453        *expressions (str | Expression): the SQL code strings to parse.
    -4454            If an Expression instance is passed, this is used as-is.
    -4455        dialect (str): the dialect used to parse the input expression.
    -4456        **opts: other options to use to parse the input expressions.
    -4457
    -4458    Returns:
    -4459        And: the new condition
    -4460    """
    -4461    return _combine(expressions, And, dialect, **opts)
    +            
    4532def and_(*expressions, dialect=None, **opts) -> And:
    +4533    """
    +4534    Combine multiple conditions with an AND logical operator.
    +4535
    +4536    Example:
    +4537        >>> and_("x=1", and_("y=1", "z=1")).sql()
    +4538        'x = 1 AND (y = 1 AND z = 1)'
    +4539
    +4540    Args:
    +4541        *expressions (str | Expression): the SQL code strings to parse.
    +4542            If an Expression instance is passed, this is used as-is.
    +4543        dialect (str): the dialect used to parse the input expression.
    +4544        **opts: other options to use to parse the input expressions.
    +4545
    +4546    Returns:
    +4547        And: the new condition
    +4548    """
    +4549    return _combine(expressions, And, dialect, **opts)
     
    @@ -43884,24 +44782,24 @@ If an Expression instance is passed, this is used as-is.
    -
    4464def or_(*expressions, dialect=None, **opts) -> Or:
    -4465    """
    -4466    Combine multiple conditions with an OR logical operator.
    -4467
    -4468    Example:
    -4469        >>> or_("x=1", or_("y=1", "z=1")).sql()
    -4470        'x = 1 OR (y = 1 OR z = 1)'
    -4471
    -4472    Args:
    -4473        *expressions (str | Expression): the SQL code strings to parse.
    -4474            If an Expression instance is passed, this is used as-is.
    -4475        dialect (str): the dialect used to parse the input expression.
    -4476        **opts: other options to use to parse the input expressions.
    -4477
    -4478    Returns:
    -4479        Or: the new condition
    -4480    """
    -4481    return _combine(expressions, Or, dialect, **opts)
    +            
    4552def or_(*expressions, dialect=None, **opts) -> Or:
    +4553    """
    +4554    Combine multiple conditions with an OR logical operator.
    +4555
    +4556    Example:
    +4557        >>> or_("x=1", or_("y=1", "z=1")).sql()
    +4558        'x = 1 OR (y = 1 OR z = 1)'
    +4559
    +4560    Args:
    +4561        *expressions (str | Expression): the SQL code strings to parse.
    +4562            If an Expression instance is passed, this is used as-is.
    +4563        dialect (str): the dialect used to parse the input expression.
    +4564        **opts: other options to use to parse the input expressions.
    +4565
    +4566    Returns:
    +4567        Or: the new condition
    +4568    """
    +4569    return _combine(expressions, Or, dialect, **opts)
     
    @@ -43946,29 +44844,29 @@ If an Expression instance is passed, this is used as-is.
    -
    4484def not_(expression, dialect=None, **opts) -> Not:
    -4485    """
    -4486    Wrap a condition with a NOT operator.
    -4487
    -4488    Example:
    -4489        >>> not_("this_suit='black'").sql()
    -4490        "NOT this_suit = 'black'"
    -4491
    -4492    Args:
    -4493        expression (str | Expression): the SQL code strings to parse.
    -4494            If an Expression instance is passed, this is used as-is.
    -4495        dialect (str): the dialect used to parse the input expression.
    -4496        **opts: other options to use to parse the input expressions.
    -4497
    -4498    Returns:
    -4499        Not: the new condition
    -4500    """
    -4501    this = condition(
    -4502        expression,
    -4503        dialect=dialect,
    -4504        **opts,
    -4505    )
    -4506    return Not(this=_wrap_operator(this))
    +            
    4572def not_(expression, dialect=None, **opts) -> Not:
    +4573    """
    +4574    Wrap a condition with a NOT operator.
    +4575
    +4576    Example:
    +4577        >>> not_("this_suit='black'").sql()
    +4578        "NOT this_suit = 'black'"
    +4579
    +4580    Args:
    +4581        expression (str | Expression): the SQL code strings to parse.
    +4582            If an Expression instance is passed, this is used as-is.
    +4583        dialect (str): the dialect used to parse the input expression.
    +4584        **opts: other options to use to parse the input expressions.
    +4585
    +4586    Returns:
    +4587        Not: the new condition
    +4588    """
    +4589    this = condition(
    +4590        expression,
    +4591        dialect=dialect,
    +4592        **opts,
    +4593    )
    +4594    return Not(this=_wrap_operator(this))
     
    @@ -44013,8 +44911,8 @@ If an Expression instance is passed, this is used as-is.
    -
    4509def paren(expression) -> Paren:
    -4510    return Paren(this=expression)
    +            
    4597def paren(expression) -> Paren:
    +4598    return Paren(this=expression)
     
    @@ -44032,30 +44930,30 @@ If an Expression instance is passed, this is used as-is.
    -
    4526def to_identifier(name, quoted=None):
    -4527    """Builds an identifier.
    -4528
    -4529    Args:
    -4530        name: The name to turn into an identifier.
    -4531        quoted: Whether or not force quote the identifier.
    -4532
    -4533    Returns:
    -4534        The identifier ast node.
    -4535    """
    -4536
    -4537    if name is None:
    -4538        return None
    -4539
    -4540    if isinstance(name, Identifier):
    -4541        identifier = name
    -4542    elif isinstance(name, str):
    -4543        identifier = Identifier(
    -4544            this=name,
    -4545            quoted=not SAFE_IDENTIFIER_RE.match(name) if quoted is None else quoted,
    -4546        )
    -4547    else:
    -4548        raise ValueError(f"Name needs to be a string or an Identifier, got: {name.__class__}")
    -4549    return identifier
    +            
    4614def to_identifier(name, quoted=None):
    +4615    """Builds an identifier.
    +4616
    +4617    Args:
    +4618        name: The name to turn into an identifier.
    +4619        quoted: Whether or not force quote the identifier.
    +4620
    +4621    Returns:
    +4622        The identifier ast node.
    +4623    """
    +4624
    +4625    if name is None:
    +4626        return None
    +4627
    +4628    if isinstance(name, Identifier):
    +4629        identifier = name
    +4630    elif isinstance(name, str):
    +4631        identifier = Identifier(
    +4632            this=name,
    +4633            quoted=not SAFE_IDENTIFIER_RE.match(name) if quoted is None else quoted,
    +4634        )
    +4635    else:
    +4636        raise ValueError(f"Name needs to be a string or an Identifier, got: {name.__class__}")
    +4637    return identifier
     
    @@ -44088,23 +44986,23 @@ If an Expression instance is passed, this is used as-is.
    -
    4555def to_interval(interval: str | Literal) -> Interval:
    -4556    """Builds an interval expression from a string like '1 day' or '5 months'."""
    -4557    if isinstance(interval, Literal):
    -4558        if not interval.is_string:
    -4559            raise ValueError("Invalid interval string.")
    -4560
    -4561        interval = interval.this
    -4562
    -4563    interval_parts = INTERVAL_STRING_RE.match(interval)  # type: ignore
    -4564
    -4565    if not interval_parts:
    -4566        raise ValueError("Invalid interval string.")
    -4567
    -4568    return Interval(
    -4569        this=Literal.string(interval_parts.group(1)),
    -4570        unit=Var(this=interval_parts.group(2)),
    -4571    )
    +            
    4643def to_interval(interval: str | Literal) -> Interval:
    +4644    """Builds an interval expression from a string like '1 day' or '5 months'."""
    +4645    if isinstance(interval, Literal):
    +4646        if not interval.is_string:
    +4647            raise ValueError("Invalid interval string.")
    +4648
    +4649        interval = interval.this
    +4650
    +4651    interval_parts = INTERVAL_STRING_RE.match(interval)  # type: ignore
    +4652
    +4653    if not interval_parts:
    +4654        raise ValueError("Invalid interval string.")
    +4655
    +4656    return Interval(
    +4657        this=Literal.string(interval_parts.group(1)),
    +4658        unit=Var(this=interval_parts.group(2)),
    +4659    )
     
    @@ -44124,24 +45022,24 @@ If an Expression instance is passed, this is used as-is.
    -
    4584def to_table(sql_path: t.Optional[str | Table], **kwargs) -> t.Optional[Table]:
    -4585    """
    -4586    Create a table expression from a `[catalog].[schema].[table]` sql path. Catalog and schema are optional.
    -4587    If a table is passed in then that table is returned.
    -4588
    -4589    Args:
    -4590        sql_path: a `[catalog].[schema].[table]` string.
    -4591
    -4592    Returns:
    -4593        A table expression.
    -4594    """
    -4595    if sql_path is None or isinstance(sql_path, Table):
    -4596        return sql_path
    -4597    if not isinstance(sql_path, str):
    -4598        raise ValueError(f"Invalid type provided for a table: {type(sql_path)}")
    -4599
    -4600    catalog, db, table_name = (to_identifier(x) for x in split_num_words(sql_path, ".", 3))
    -4601    return Table(this=table_name, db=db, catalog=catalog, **kwargs)
    +            
    4672def to_table(sql_path: t.Optional[str | Table], **kwargs) -> t.Optional[Table]:
    +4673    """
    +4674    Create a table expression from a `[catalog].[schema].[table]` sql path. Catalog and schema are optional.
    +4675    If a table is passed in then that table is returned.
    +4676
    +4677    Args:
    +4678        sql_path: a `[catalog].[schema].[table]` string.
    +4679
    +4680    Returns:
    +4681        A table expression.
    +4682    """
    +4683    if sql_path is None or isinstance(sql_path, Table):
    +4684        return sql_path
    +4685    if not isinstance(sql_path, str):
    +4686        raise ValueError(f"Invalid type provided for a table: {type(sql_path)}")
    +4687
    +4688    catalog, db, table_name = (to_identifier(x) for x in split_num_words(sql_path, ".", 3))
    +4689    return Table(this=table_name, db=db, catalog=catalog, **kwargs)
     
    @@ -44174,22 +45072,22 @@ If a table is passed in then that table is returned.

    -
    4604def to_column(sql_path: str | Column, **kwargs) -> Column:
    -4605    """
    -4606    Create a column from a `[table].[column]` sql path. Schema is optional.
    -4607
    -4608    If a column is passed in then that column is returned.
    -4609
    -4610    Args:
    -4611        sql_path: `[table].[column]` string
    -4612    Returns:
    -4613        Table: A column expression
    -4614    """
    -4615    if sql_path is None or isinstance(sql_path, Column):
    -4616        return sql_path
    -4617    if not isinstance(sql_path, str):
    -4618        raise ValueError(f"Invalid type provided for column: {type(sql_path)}")
    -4619    return column(*reversed(sql_path.split(".")), **kwargs)  # type: ignore
    +            
    4692def to_column(sql_path: str | Column, **kwargs) -> Column:
    +4693    """
    +4694    Create a column from a `[table].[column]` sql path. Schema is optional.
    +4695
    +4696    If a column is passed in then that column is returned.
    +4697
    +4698    Args:
    +4699        sql_path: `[table].[column]` string
    +4700    Returns:
    +4701        Table: A column expression
    +4702    """
    +4703    if sql_path is None or isinstance(sql_path, Column):
    +4704        return sql_path
    +4705    if not isinstance(sql_path, str):
    +4706        raise ValueError(f"Invalid type provided for column: {type(sql_path)}")
    +4707    return column(*reversed(sql_path.split(".")), **kwargs)  # type: ignore
     
    @@ -44223,60 +45121,62 @@ If a table is passed in then that table is returned.

    -
    4622def alias_(
    -4623    expression: ExpOrStr,
    -4624    alias: str | Identifier,
    -4625    table: bool | t.Sequence[str | Identifier] = False,
    -4626    quoted: t.Optional[bool] = None,
    -4627    dialect: DialectType = None,
    -4628    **opts,
    -4629):
    -4630    """Create an Alias expression.
    -4631
    -4632    Example:
    -4633        >>> alias_('foo', 'bar').sql()
    -4634        'foo AS bar'
    -4635
    -4636        >>> alias_('(select 1, 2)', 'bar', table=['a', 'b']).sql()
    -4637        '(SELECT 1, 2) AS bar(a, b)'
    -4638
    -4639    Args:
    -4640        expression: the SQL code strings to parse.
    -4641            If an Expression instance is passed, this is used as-is.
    -4642        alias: the alias name to use. If the name has
    -4643            special characters it is quoted.
    -4644        table: Whether or not to create a table alias, can also be a list of columns.
    -4645        quoted: whether or not to quote the alias
    -4646        dialect: the dialect used to parse the input expression.
    -4647        **opts: other options to use to parse the input expressions.
    -4648
    -4649    Returns:
    -4650        Alias: the aliased expression
    -4651    """
    -4652    exp = maybe_parse(expression, dialect=dialect, **opts)
    -4653    alias = to_identifier(alias, quoted=quoted)
    -4654
    -4655    if table:
    -4656        table_alias = TableAlias(this=alias)
    -4657        exp.set("alias", table_alias)
    -4658
    -4659        if not isinstance(table, bool):
    -4660            for column in table:
    -4661                table_alias.append("columns", to_identifier(column, quoted=quoted))
    -4662
    -4663        return exp
    -4664
    -4665    # We don't set the "alias" arg for Window expressions, because that would add an IDENTIFIER node in
    -4666    # the AST, representing a "named_window" [1] construct (eg. bigquery). What we want is an ALIAS node
    -4667    # for the complete Window expression.
    -4668    #
    -4669    # [1]: https://cloud.google.com/bigquery/docs/reference/standard-sql/window-function-calls
    -4670
    -4671    if "alias" in exp.arg_types and not isinstance(exp, Window):
    -4672        exp = exp.copy()
    -4673        exp.set("alias", alias)
    -4674        return exp
    -4675    return Alias(this=exp, alias=alias)
    +            
    4710def alias_(
    +4711    expression: ExpOrStr,
    +4712    alias: str | Identifier,
    +4713    table: bool | t.Sequence[str | Identifier] = False,
    +4714    quoted: t.Optional[bool] = None,
    +4715    dialect: DialectType = None,
    +4716    **opts,
    +4717):
    +4718    """Create an Alias expression.
    +4719
    +4720    Example:
    +4721        >>> alias_('foo', 'bar').sql()
    +4722        'foo AS bar'
    +4723
    +4724        >>> alias_('(select 1, 2)', 'bar', table=['a', 'b']).sql()
    +4725        '(SELECT 1, 2) AS bar(a, b)'
    +4726
    +4727    Args:
    +4728        expression: the SQL code strings to parse.
    +4729            If an Expression instance is passed, this is used as-is.
    +4730        alias: the alias name to use. If the name has
    +4731            special characters it is quoted.
    +4732        table: Whether or not to create a table alias, can also be a list of columns.
    +4733        quoted: whether or not to quote the alias
    +4734        dialect: the dialect used to parse the input expression.
    +4735        **opts: other options to use to parse the input expressions.
    +4736
    +4737    Returns:
    +4738        Alias: the aliased expression
    +4739    """
    +4740    exp = maybe_parse(expression, dialect=dialect, **opts)
    +4741    alias = to_identifier(alias, quoted=quoted)
    +4742
    +4743    if table:
    +4744        table_alias = TableAlias(this=alias)
    +4745
    +4746        exp = exp.copy() if isinstance(expression, Expression) else exp
    +4747        exp.set("alias", table_alias)
    +4748
    +4749        if not isinstance(table, bool):
    +4750            for column in table:
    +4751                table_alias.append("columns", to_identifier(column, quoted=quoted))
    +4752
    +4753        return exp
    +4754
    +4755    # We don't set the "alias" arg for Window expressions, because that would add an IDENTIFIER node in
    +4756    # the AST, representing a "named_window" [1] construct (eg. bigquery). What we want is an ALIAS node
    +4757    # for the complete Window expression.
    +4758    #
    +4759    # [1]: https://cloud.google.com/bigquery/docs/reference/standard-sql/window-function-calls
    +4760
    +4761    if "alias" in exp.arg_types and not isinstance(exp, Window):
    +4762        exp = exp.copy()
    +4763        exp.set("alias", alias)
    +4764        return exp
    +4765    return Alias(this=exp, alias=alias)
     
    @@ -44331,27 +45231,27 @@ special characters it is quoted.
    -
    4678def subquery(expression, alias=None, dialect=None, **opts):
    -4679    """
    -4680    Build a subquery expression.
    -4681
    -4682    Example:
    -4683        >>> subquery('select x from tbl', 'bar').select('x').sql()
    -4684        'SELECT x FROM (SELECT x FROM tbl) AS bar'
    -4685
    -4686    Args:
    -4687        expression (str | Expression): the SQL code strings to parse.
    -4688            If an Expression instance is passed, this is used as-is.
    -4689        alias (str | Expression): the alias name to use.
    -4690        dialect (str): the dialect used to parse the input expression.
    -4691        **opts: other options to use to parse the input expressions.
    -4692
    -4693    Returns:
    -4694        Select: a new select with the subquery expression included
    -4695    """
    -4696
    -4697    expression = maybe_parse(expression, dialect=dialect, **opts).subquery(alias)
    -4698    return Select().from_(expression, dialect=dialect, **opts)
    +            
    4768def subquery(expression, alias=None, dialect=None, **opts):
    +4769    """
    +4770    Build a subquery expression.
    +4771
    +4772    Example:
    +4773        >>> subquery('select x from tbl', 'bar').select('x').sql()
    +4774        'SELECT x FROM (SELECT x FROM tbl) AS bar'
    +4775
    +4776    Args:
    +4777        expression (str | Expression): the SQL code strings to parse.
    +4778            If an Expression instance is passed, this is used as-is.
    +4779        alias (str | Expression): the alias name to use.
    +4780        dialect (str): the dialect used to parse the input expression.
    +4781        **opts: other options to use to parse the input expressions.
    +4782
    +4783    Returns:
    +4784        Select: a new select with the subquery expression included
    +4785    """
    +4786
    +4787    expression = maybe_parse(expression, dialect=dialect, **opts).subquery(alias)
    +4788    return Select().from_(expression, dialect=dialect, **opts)
     
    @@ -44397,31 +45297,31 @@ If an Expression instance is passed, this is used as-is.
    -
    4701def column(
    -4702    col: str | Identifier,
    -4703    table: t.Optional[str | Identifier] = None,
    -4704    db: t.Optional[str | Identifier] = None,
    -4705    catalog: t.Optional[str | Identifier] = None,
    -4706    quoted: t.Optional[bool] = None,
    -4707) -> Column:
    -4708    """
    -4709    Build a Column.
    -4710
    -4711    Args:
    -4712        col: column name
    -4713        table: table name
    -4714        db: db name
    -4715        catalog: catalog name
    -4716        quoted: whether or not to force quote each part
    -4717    Returns:
    -4718        Column: column instance
    -4719    """
    -4720    return Column(
    -4721        this=to_identifier(col, quoted=quoted),
    -4722        table=to_identifier(table, quoted=quoted),
    -4723        db=to_identifier(db, quoted=quoted),
    -4724        catalog=to_identifier(catalog, quoted=quoted),
    -4725    )
    +            
    4791def column(
    +4792    col: str | Identifier,
    +4793    table: t.Optional[str | Identifier] = None,
    +4794    db: t.Optional[str | Identifier] = None,
    +4795    catalog: t.Optional[str | Identifier] = None,
    +4796    quoted: t.Optional[bool] = None,
    +4797) -> Column:
    +4798    """
    +4799    Build a Column.
    +4800
    +4801    Args:
    +4802        col: column name
    +4803        table: table name
    +4804        db: db name
    +4805        catalog: catalog name
    +4806        quoted: whether or not to force quote each part
    +4807    Returns:
    +4808        Column: column instance
    +4809    """
    +4810    return Column(
    +4811        this=to_identifier(col, quoted=quoted),
    +4812        table=to_identifier(table, quoted=quoted),
    +4813        db=to_identifier(db, quoted=quoted),
    +4814        catalog=to_identifier(catalog, quoted=quoted),
    +4815    )
     
    @@ -44457,22 +45357,22 @@ If an Expression instance is passed, this is used as-is.
    -
    4728def cast(expression: ExpOrStr, to: str | DataType | DataType.Type, **opts) -> Cast:
    -4729    """Cast an expression to a data type.
    -4730
    -4731    Example:
    -4732        >>> cast('x + 1', 'int').sql()
    -4733        'CAST(x + 1 AS INT)'
    -4734
    -4735    Args:
    -4736        expression: The expression to cast.
    -4737        to: The datatype to cast to.
    -4738
    -4739    Returns:
    -4740        A cast node.
    -4741    """
    -4742    expression = maybe_parse(expression, **opts)
    -4743    return Cast(this=expression, to=DataType.build(to, **opts))
    +            
    4818def cast(expression: ExpOrStr, to: str | DataType | DataType.Type, **opts) -> Cast:
    +4819    """Cast an expression to a data type.
    +4820
    +4821    Example:
    +4822        >>> cast('x + 1', 'int').sql()
    +4823        'CAST(x + 1 AS INT)'
    +4824
    +4825    Args:
    +4826        expression: The expression to cast.
    +4827        to: The datatype to cast to.
    +4828
    +4829    Returns:
    +4830        A cast node.
    +4831    """
    +4832    expression = maybe_parse(expression, **opts)
    +4833    return Cast(this=expression, to=DataType.build(to, **opts))
     
    @@ -44515,23 +45415,23 @@ If an Expression instance is passed, this is used as-is.
    -
    4746def table_(table, db=None, catalog=None, quoted=None, alias=None) -> Table:
    -4747    """Build a Table.
    -4748
    -4749    Args:
    -4750        table (str | Expression): column name
    -4751        db (str | Expression): db name
    -4752        catalog (str | Expression): catalog name
    -4753
    -4754    Returns:
    -4755        Table: table instance
    -4756    """
    -4757    return Table(
    -4758        this=to_identifier(table, quoted=quoted),
    -4759        db=to_identifier(db, quoted=quoted),
    -4760        catalog=to_identifier(catalog, quoted=quoted),
    -4761        alias=TableAlias(this=to_identifier(alias)) if alias else None,
    -4762    )
    +            
    4836def table_(table, db=None, catalog=None, quoted=None, alias=None) -> Table:
    +4837    """Build a Table.
    +4838
    +4839    Args:
    +4840        table (str | Expression): column name
    +4841        db (str | Expression): db name
    +4842        catalog (str | Expression): catalog name
    +4843
    +4844    Returns:
    +4845        Table: table instance
    +4846    """
    +4847    return Table(
    +4848        this=to_identifier(table, quoted=quoted),
    +4849        db=to_identifier(db, quoted=quoted),
    +4850        catalog=to_identifier(catalog, quoted=quoted),
    +4851        alias=TableAlias(this=to_identifier(alias)) if alias else None,
    +4852    )
     
    @@ -44565,46 +45465,46 @@ If an Expression instance is passed, this is used as-is.
    -
    4765def values(
    -4766    values: t.Iterable[t.Tuple[t.Any, ...]],
    -4767    alias: t.Optional[str] = None,
    -4768    columns: t.Optional[t.Iterable[str] | t.Dict[str, DataType]] = None,
    -4769) -> Values:
    -4770    """Build VALUES statement.
    -4771
    -4772    Example:
    -4773        >>> values([(1, '2')]).sql()
    -4774        "VALUES (1, '2')"
    -4775
    -4776    Args:
    -4777        values: values statements that will be converted to SQL
    -4778        alias: optional alias
    -4779        columns: Optional list of ordered column names or ordered dictionary of column names to types.
    -4780         If either are provided then an alias is also required.
    -4781         If a dictionary is provided then the first column of the values will be casted to the expected type
    -4782         in order to help with type inference.
    -4783
    -4784    Returns:
    -4785        Values: the Values expression object
    -4786    """
    -4787    if columns and not alias:
    -4788        raise ValueError("Alias is required when providing columns")
    -4789    table_alias = (
    -4790        TableAlias(this=to_identifier(alias), columns=[to_identifier(x) for x in columns])
    -4791        if columns
    -4792        else TableAlias(this=to_identifier(alias) if alias else None)
    -4793    )
    -4794    expressions = [convert(tup) for tup in values]
    -4795    if columns and isinstance(columns, dict):
    -4796        types = list(columns.values())
    -4797        expressions[0].set(
    -4798            "expressions",
    -4799            [cast(x, types[i]) for i, x in enumerate(expressions[0].expressions)],
    -4800        )
    -4801    return Values(
    -4802        expressions=expressions,
    -4803        alias=table_alias,
    -4804    )
    +            
    4855def values(
    +4856    values: t.Iterable[t.Tuple[t.Any, ...]],
    +4857    alias: t.Optional[str] = None,
    +4858    columns: t.Optional[t.Iterable[str] | t.Dict[str, DataType]] = None,
    +4859) -> Values:
    +4860    """Build VALUES statement.
    +4861
    +4862    Example:
    +4863        >>> values([(1, '2')]).sql()
    +4864        "VALUES (1, '2')"
    +4865
    +4866    Args:
    +4867        values: values statements that will be converted to SQL
    +4868        alias: optional alias
    +4869        columns: Optional list of ordered column names or ordered dictionary of column names to types.
    +4870         If either are provided then an alias is also required.
    +4871         If a dictionary is provided then the first column of the values will be casted to the expected type
    +4872         in order to help with type inference.
    +4873
    +4874    Returns:
    +4875        Values: the Values expression object
    +4876    """
    +4877    if columns and not alias:
    +4878        raise ValueError("Alias is required when providing columns")
    +4879    table_alias = (
    +4880        TableAlias(this=to_identifier(alias), columns=[to_identifier(x) for x in columns])
    +4881        if columns
    +4882        else TableAlias(this=to_identifier(alias) if alias else None)
    +4883    )
    +4884    expressions = [convert(tup) for tup in values]
    +4885    if columns and isinstance(columns, dict):
    +4886        types = list(columns.values())
    +4887        expressions[0].set(
    +4888            "expressions",
    +4889            [cast(x, types[i]) for i, x in enumerate(expressions[0].expressions)],
    +4890        )
    +4891    return Values(
    +4892        expressions=expressions,
    +4893        alias=table_alias,
    +4894    )
     
    @@ -44651,28 +45551,28 @@ in order to help with type inference.
    -
    4807def var(name: t.Optional[ExpOrStr]) -> Var:
    -4808    """Build a SQL variable.
    -4809
    -4810    Example:
    -4811        >>> repr(var('x'))
    -4812        '(VAR this: x)'
    -4813
    -4814        >>> repr(var(column('x', table='y')))
    -4815        '(VAR this: x)'
    -4816
    -4817    Args:
    -4818        name: The name of the var or an expression who's name will become the var.
    -4819
    -4820    Returns:
    -4821        The new variable node.
    -4822    """
    -4823    if not name:
    -4824        raise ValueError("Cannot convert empty name into var.")
    -4825
    -4826    if isinstance(name, Expression):
    -4827        name = name.name
    -4828    return Var(this=name)
    +            
    4897def var(name: t.Optional[ExpOrStr]) -> Var:
    +4898    """Build a SQL variable.
    +4899
    +4900    Example:
    +4901        >>> repr(var('x'))
    +4902        '(VAR this: x)'
    +4903
    +4904        >>> repr(var(column('x', table='y')))
    +4905        '(VAR this: x)'
    +4906
    +4907    Args:
    +4908        name: The name of the var or an expression who's name will become the var.
    +4909
    +4910    Returns:
    +4911        The new variable node.
    +4912    """
    +4913    if not name:
    +4914        raise ValueError("Cannot convert empty name into var.")
    +4915
    +4916    if isinstance(name, Expression):
    +4917        name = name.name
    +4918    return Var(this=name)
     
    @@ -44720,24 +45620,24 @@ in order to help with type inference.
    -
    4831def rename_table(old_name: str | Table, new_name: str | Table) -> AlterTable:
    -4832    """Build ALTER TABLE... RENAME... expression
    -4833
    -4834    Args:
    -4835        old_name: The old name of the table
    -4836        new_name: The new name of the table
    -4837
    -4838    Returns:
    -4839        Alter table expression
    -4840    """
    -4841    old_table = to_table(old_name)
    -4842    new_table = to_table(new_name)
    -4843    return AlterTable(
    -4844        this=old_table,
    -4845        actions=[
    -4846            RenameTable(this=new_table),
    -4847        ],
    -4848    )
    +            
    4921def rename_table(old_name: str | Table, new_name: str | Table) -> AlterTable:
    +4922    """Build ALTER TABLE... RENAME... expression
    +4923
    +4924    Args:
    +4925        old_name: The old name of the table
    +4926        new_name: The new name of the table
    +4927
    +4928    Returns:
    +4929        Alter table expression
    +4930    """
    +4931    old_table = to_table(old_name)
    +4932    new_table = to_table(new_name)
    +4933    return AlterTable(
    +4934        this=old_table,
    +4935        actions=[
    +4936            RenameTable(this=new_table),
    +4937        ],
    +4938    )
     
    @@ -44770,47 +45670,47 @@ in order to help with type inference.
    -
    4851def convert(value) -> Expression:
    -4852    """Convert a python value into an expression object.
    -4853
    -4854    Raises an error if a conversion is not possible.
    -4855
    -4856    Args:
    -4857        value (Any): a python object
    -4858
    -4859    Returns:
    -4860        Expression: the equivalent expression object
    -4861    """
    -4862    if isinstance(value, Expression):
    -4863        return value
    -4864    if value is None:
    -4865        return NULL
    -4866    if isinstance(value, bool):
    -4867        return Boolean(this=value)
    -4868    if isinstance(value, str):
    -4869        return Literal.string(value)
    -4870    if isinstance(value, float) and math.isnan(value):
    -4871        return NULL
    -4872    if isinstance(value, numbers.Number):
    -4873        return Literal.number(value)
    -4874    if isinstance(value, tuple):
    -4875        return Tuple(expressions=[convert(v) for v in value])
    -4876    if isinstance(value, list):
    -4877        return Array(expressions=[convert(v) for v in value])
    -4878    if isinstance(value, dict):
    -4879        return Map(
    -4880            keys=[convert(k) for k in value],
    -4881            values=[convert(v) for v in value.values()],
    -4882        )
    -4883    if isinstance(value, datetime.datetime):
    -4884        datetime_literal = Literal.string(
    -4885            (value if value.tzinfo else value.replace(tzinfo=datetime.timezone.utc)).isoformat()
    -4886        )
    -4887        return TimeStrToTime(this=datetime_literal)
    -4888    if isinstance(value, datetime.date):
    -4889        date_literal = Literal.string(value.strftime("%Y-%m-%d"))
    -4890        return DateStrToDate(this=date_literal)
    -4891    raise ValueError(f"Cannot convert {value}")
    +            
    4941def convert(value) -> Expression:
    +4942    """Convert a python value into an expression object.
    +4943
    +4944    Raises an error if a conversion is not possible.
    +4945
    +4946    Args:
    +4947        value (Any): a python object
    +4948
    +4949    Returns:
    +4950        Expression: the equivalent expression object
    +4951    """
    +4952    if isinstance(value, Expression):
    +4953        return value
    +4954    if value is None:
    +4955        return NULL
    +4956    if isinstance(value, bool):
    +4957        return Boolean(this=value)
    +4958    if isinstance(value, str):
    +4959        return Literal.string(value)
    +4960    if isinstance(value, float) and math.isnan(value):
    +4961        return NULL
    +4962    if isinstance(value, numbers.Number):
    +4963        return Literal.number(value)
    +4964    if isinstance(value, tuple):
    +4965        return Tuple(expressions=[convert(v) for v in value])
    +4966    if isinstance(value, list):
    +4967        return Array(expressions=[convert(v) for v in value])
    +4968    if isinstance(value, dict):
    +4969        return Map(
    +4970            keys=[convert(k) for k in value],
    +4971            values=[convert(v) for v in value.values()],
    +4972        )
    +4973    if isinstance(value, datetime.datetime):
    +4974        datetime_literal = Literal.string(
    +4975            (value if value.tzinfo else value.replace(tzinfo=datetime.timezone.utc)).isoformat()
    +4976        )
    +4977        return TimeStrToTime(this=datetime_literal)
    +4978    if isinstance(value, datetime.date):
    +4979        date_literal = Literal.string(value.strftime("%Y-%m-%d"))
    +4980        return DateStrToDate(this=date_literal)
    +4981    raise ValueError(f"Cannot convert {value}")
     
    @@ -44844,26 +45744,26 @@ in order to help with type inference.
    -
    4894def replace_children(expression, fun, *args, **kwargs):
    -4895    """
    -4896    Replace children of an expression with the result of a lambda fun(child) -> exp.
    -4897    """
    -4898    for k, v in expression.args.items():
    -4899        is_list_arg = type(v) is list
    -4900
    -4901        child_nodes = v if is_list_arg else [v]
    -4902        new_child_nodes = []
    -4903
    -4904        for cn in child_nodes:
    -4905            if isinstance(cn, Expression):
    -4906                for child_node in ensure_collection(fun(cn, *args, **kwargs)):
    -4907                    new_child_nodes.append(child_node)
    -4908                    child_node.parent = expression
    -4909                    child_node.arg_key = k
    -4910            else:
    -4911                new_child_nodes.append(cn)
    -4912
    -4913        expression.args[k] = new_child_nodes if is_list_arg else seq_get(new_child_nodes, 0)
    +            
    4984def replace_children(expression, fun, *args, **kwargs):
    +4985    """
    +4986    Replace children of an expression with the result of a lambda fun(child) -> exp.
    +4987    """
    +4988    for k, v in expression.args.items():
    +4989        is_list_arg = type(v) is list
    +4990
    +4991        child_nodes = v if is_list_arg else [v]
    +4992        new_child_nodes = []
    +4993
    +4994        for cn in child_nodes:
    +4995            if isinstance(cn, Expression):
    +4996                for child_node in ensure_collection(fun(cn, *args, **kwargs)):
    +4997                    new_child_nodes.append(child_node)
    +4998                    child_node.parent = expression
    +4999                    child_node.arg_key = k
    +5000            else:
    +5001                new_child_nodes.append(cn)
    +5002
    +5003        expression.args[k] = new_child_nodes if is_list_arg else seq_get(new_child_nodes, 0)
     
    @@ -44883,22 +45783,22 @@ in order to help with type inference.
    -
    4916def column_table_names(expression):
    -4917    """
    -4918    Return all table names referenced through columns in an expression.
    -4919
    -4920    Example:
    -4921        >>> import sqlglot
    -4922        >>> column_table_names(sqlglot.parse_one("a.b AND c.d AND c.e"))
    -4923        ['c', 'a']
    -4924
    -4925    Args:
    -4926        expression (sqlglot.Expression): expression to find table names
    -4927
    -4928    Returns:
    -4929        list: A list of unique names
    -4930    """
    -4931    return list(dict.fromkeys(column.table for column in expression.find_all(Column)))
    +            
    5006def column_table_names(expression):
    +5007    """
    +5008    Return all table names referenced through columns in an expression.
    +5009
    +5010    Example:
    +5011        >>> import sqlglot
    +5012        >>> column_table_names(sqlglot.parse_one("a.b AND c.d AND c.e"))
    +5013        ['c', 'a']
    +5014
    +5015    Args:
    +5016        expression (sqlglot.Expression): expression to find table names
    +5017
    +5018    Returns:
    +5019        list: A list of unique names
    +5020    """
    +5021    return list(dict.fromkeys(column.table for column in expression.find_all(Column)))
     
    @@ -44941,35 +45841,35 @@ in order to help with type inference.
    -
    4934def table_name(table) -> str:
    -4935    """Get the full name of a table as a string.
    -4936
    -4937    Args:
    -4938        table (exp.Table | str): table expression node or string.
    -4939
    -4940    Examples:
    -4941        >>> from sqlglot import exp, parse_one
    -4942        >>> table_name(parse_one("select * from a.b.c").find(exp.Table))
    -4943        'a.b.c'
    -4944
    -4945    Returns:
    -4946        The table name.
    -4947    """
    -4948
    -4949    table = maybe_parse(table, into=Table)
    -4950
    -4951    if not table:
    -4952        raise ValueError(f"Cannot parse {table}")
    -4953
    -4954    return ".".join(
    -4955        part
    -4956        for part in (
    -4957            table.text("catalog"),
    -4958            table.text("db"),
    -4959            table.name,
    -4960        )
    -4961        if part
    -4962    )
    +            
    5024def table_name(table) -> str:
    +5025    """Get the full name of a table as a string.
    +5026
    +5027    Args:
    +5028        table (exp.Table | str): table expression node or string.
    +5029
    +5030    Examples:
    +5031        >>> from sqlglot import exp, parse_one
    +5032        >>> table_name(parse_one("select * from a.b.c").find(exp.Table))
    +5033        'a.b.c'
    +5034
    +5035    Returns:
    +5036        The table name.
    +5037    """
    +5038
    +5039    table = maybe_parse(table, into=Table)
    +5040
    +5041    if not table:
    +5042        raise ValueError(f"Cannot parse {table}")
    +5043
    +5044    return ".".join(
    +5045        part
    +5046        for part in (
    +5047            table.text("catalog"),
    +5048            table.text("db"),
    +5049            table.name,
    +5050        )
    +5051        if part
    +5052    )
     
    @@ -45012,33 +45912,33 @@ in order to help with type inference.
    -
    4965def replace_tables(expression, mapping):
    -4966    """Replace all tables in expression according to the mapping.
    -4967
    -4968    Args:
    -4969        expression (sqlglot.Expression): expression node to be transformed and replaced.
    -4970        mapping (Dict[str, str]): mapping of table names.
    -4971
    -4972    Examples:
    -4973        >>> from sqlglot import exp, parse_one
    -4974        >>> replace_tables(parse_one("select * from a.b"), {"a.b": "c"}).sql()
    -4975        'SELECT * FROM c'
    -4976
    -4977    Returns:
    -4978        The mapped expression.
    -4979    """
    -4980
    -4981    def _replace_tables(node):
    -4982        if isinstance(node, Table):
    -4983            new_name = mapping.get(table_name(node))
    -4984            if new_name:
    -4985                return to_table(
    -4986                    new_name,
    -4987                    **{k: v for k, v in node.args.items() if k not in ("this", "db", "catalog")},
    -4988                )
    -4989        return node
    -4990
    -4991    return expression.transform(_replace_tables)
    +            
    5055def replace_tables(expression, mapping):
    +5056    """Replace all tables in expression according to the mapping.
    +5057
    +5058    Args:
    +5059        expression (sqlglot.Expression): expression node to be transformed and replaced.
    +5060        mapping (Dict[str, str]): mapping of table names.
    +5061
    +5062    Examples:
    +5063        >>> from sqlglot import exp, parse_one
    +5064        >>> replace_tables(parse_one("select * from a.b"), {"a.b": "c"}).sql()
    +5065        'SELECT * FROM c'
    +5066
    +5067    Returns:
    +5068        The mapped expression.
    +5069    """
    +5070
    +5071    def _replace_tables(node):
    +5072        if isinstance(node, Table):
    +5073            new_name = mapping.get(table_name(node))
    +5074            if new_name:
    +5075                return to_table(
    +5076                    new_name,
    +5077                    **{k: v for k, v in node.args.items() if k not in ("this", "db", "catalog")},
    +5078                )
    +5079        return node
    +5080
    +5081    return expression.transform(_replace_tables)
     
    @@ -45082,40 +45982,40 @@ in order to help with type inference.
    -
    4994def replace_placeholders(expression, *args, **kwargs):
    -4995    """Replace placeholders in an expression.
    -4996
    -4997    Args:
    -4998        expression (sqlglot.Expression): expression node to be transformed and replaced.
    -4999        args: positional names that will substitute unnamed placeholders in the given order.
    -5000        kwargs: keyword arguments that will substitute named placeholders.
    -5001
    -5002    Examples:
    -5003        >>> from sqlglot import exp, parse_one
    -5004        >>> replace_placeholders(
    -5005        ...     parse_one("select * from :tbl where ? = ?"),
    -5006        ...     exp.to_identifier("str_col"), "b", tbl=exp.to_identifier("foo")
    -5007        ... ).sql()
    -5008        "SELECT * FROM foo WHERE str_col = 'b'"
    -5009
    -5010    Returns:
    -5011        The mapped expression.
    -5012    """
    -5013
    -5014    def _replace_placeholders(node, args, **kwargs):
    -5015        if isinstance(node, Placeholder):
    -5016            if node.name:
    -5017                new_name = kwargs.get(node.name)
    -5018                if new_name:
    -5019                    return convert(new_name)
    -5020            else:
    -5021                try:
    -5022                    return convert(next(args))
    -5023                except StopIteration:
    -5024                    pass
    -5025        return node
    -5026
    -5027    return expression.transform(_replace_placeholders, iter(args), **kwargs)
    +            
    5084def replace_placeholders(expression, *args, **kwargs):
    +5085    """Replace placeholders in an expression.
    +5086
    +5087    Args:
    +5088        expression (sqlglot.Expression): expression node to be transformed and replaced.
    +5089        args: positional names that will substitute unnamed placeholders in the given order.
    +5090        kwargs: keyword arguments that will substitute named placeholders.
    +5091
    +5092    Examples:
    +5093        >>> from sqlglot import exp, parse_one
    +5094        >>> replace_placeholders(
    +5095        ...     parse_one("select * from :tbl where ? = ?"),
    +5096        ...     exp.to_identifier("str_col"), "b", tbl=exp.to_identifier("foo")
    +5097        ... ).sql()
    +5098        "SELECT * FROM foo WHERE str_col = 'b'"
    +5099
    +5100    Returns:
    +5101        The mapped expression.
    +5102    """
    +5103
    +5104    def _replace_placeholders(node, args, **kwargs):
    +5105        if isinstance(node, Placeholder):
    +5106            if node.name:
    +5107                new_name = kwargs.get(node.name)
    +5108                if new_name:
    +5109                    return convert(new_name)
    +5110            else:
    +5111                try:
    +5112                    return convert(next(args))
    +5113                except StopIteration:
    +5114                    pass
    +5115        return node
    +5116
    +5117    return expression.transform(_replace_placeholders, iter(args), **kwargs)
     
    @@ -45157,40 +46057,45 @@ in order to help with type inference.
    def - expand( expression: sqlglot.expressions.Expression, sources: Dict[str, sqlglot.expressions.Subqueryable], copy=True) -> sqlglot.expressions.Expression: + expand( expression: sqlglot.expressions.Expression, sources: Dict[str, sqlglot.expressions.Subqueryable], copy: bool = True) -> sqlglot.expressions.Expression:
    -
    5030def expand(expression: Expression, sources: t.Dict[str, Subqueryable], copy=True) -> Expression:
    -5031    """Transforms an expression by expanding all referenced sources into subqueries.
    -5032
    -5033    Examples:
    -5034        >>> from sqlglot import parse_one
    -5035        >>> expand(parse_one("select * from x AS z"), {"x": parse_one("select * from y")}).sql()
    -5036        'SELECT * FROM (SELECT * FROM y) AS z /* source: x */'
    -5037
    -5038    Args:
    -5039        expression: The expression to expand.
    -5040        sources: A dictionary of name to Subqueryables.
    -5041        copy: Whether or not to copy the expression during transformation. Defaults to True.
    -5042
    -5043    Returns:
    -5044        The transformed expression.
    -5045    """
    -5046
    -5047    def _expand(node: Expression):
    -5048        if isinstance(node, Table):
    -5049            name = table_name(node)
    -5050            source = sources.get(name)
    -5051            if source:
    -5052                subquery = source.subquery(node.alias or name)
    -5053                subquery.comments = [f"source: {name}"]
    -5054                return subquery
    -5055        return node
    -5056
    -5057    return expression.transform(_expand, copy=copy)
    +            
    5120def expand(
    +5121    expression: Expression, sources: t.Dict[str, Subqueryable], copy: bool = True
    +5122) -> Expression:
    +5123    """Transforms an expression by expanding all referenced sources into subqueries.
    +5124
    +5125    Examples:
    +5126        >>> from sqlglot import parse_one
    +5127        >>> expand(parse_one("select * from x AS z"), {"x": parse_one("select * from y")}).sql()
    +5128        'SELECT * FROM (SELECT * FROM y) AS z /* source: x */'
    +5129
    +5130        >>> expand(parse_one("select * from x AS z"), {"x": parse_one("select * from y"), "y": parse_one("select * from z")}).sql()
    +5131        'SELECT * FROM (SELECT * FROM (SELECT * FROM z) AS y /* source: y */) AS z /* source: x */'
    +5132
    +5133    Args:
    +5134        expression: The expression to expand.
    +5135        sources: A dictionary of name to Subqueryables.
    +5136        copy: Whether or not to copy the expression during transformation. Defaults to True.
    +5137
    +5138    Returns:
    +5139        The transformed expression.
    +5140    """
    +5141
    +5142    def _expand(node: Expression):
    +5143        if isinstance(node, Table):
    +5144            name = table_name(node)
    +5145            source = sources.get(name)
    +5146            if source:
    +5147                subquery = source.subquery(node.alias or name)
    +5148                subquery.comments = [f"source: {name}"]
    +5149                return subquery.transform(_expand, copy=False)
    +5150        return node
    +5151
    +5152    return expression.transform(_expand, copy=copy)
     
    @@ -45203,6 +46108,12 @@ in order to help with type inference.
    >>> from sqlglot import parse_one
     >>> expand(parse_one("select * from x AS z"), {"x": parse_one("select * from y")}).sql()
     'SELECT * FROM (SELECT * FROM y) AS z /* source: x */'
    +
    +
    + +
    +
    >>> expand(parse_one("select * from x AS z"), {"x": parse_one("select * from y"), "y": parse_one("select * from z")}).sql()
    +'SELECT * FROM (SELECT * FROM (SELECT * FROM z) AS y /* source: y */) AS z /* source: x */'
     
    @@ -45235,51 +46146,51 @@ in order to help with type inference.
    -
    5060def func(name: str, *args, dialect: DialectType = None, **kwargs) -> Func:
    -5061    """
    -5062    Returns a Func expression.
    -5063
    -5064    Examples:
    -5065        >>> func("abs", 5).sql()
    -5066        'ABS(5)'
    -5067
    -5068        >>> func("cast", this=5, to=DataType.build("DOUBLE")).sql()
    -5069        'CAST(5 AS DOUBLE)'
    -5070
    -5071    Args:
    -5072        name: the name of the function to build.
    -5073        args: the args used to instantiate the function of interest.
    -5074        dialect: the source dialect.
    -5075        kwargs: the kwargs used to instantiate the function of interest.
    -5076
    -5077    Note:
    -5078        The arguments `args` and `kwargs` are mutually exclusive.
    -5079
    -5080    Returns:
    -5081        An instance of the function of interest, or an anonymous function, if `name` doesn't
    -5082        correspond to an existing `sqlglot.expressions.Func` class.
    -5083    """
    -5084    if args and kwargs:
    -5085        raise ValueError("Can't use both args and kwargs to instantiate a function.")
    -5086
    -5087    from sqlglot.dialects.dialect import Dialect
    -5088
    -5089    converted = [convert(arg) for arg in args]
    -5090    kwargs = {key: convert(value) for key, value in kwargs.items()}
    -5091
    -5092    parser = Dialect.get_or_raise(dialect)().parser()
    -5093    from_args_list = parser.FUNCTIONS.get(name.upper())
    -5094
    -5095    if from_args_list:
    -5096        function = from_args_list(converted) if converted else from_args_list.__self__(**kwargs)  # type: ignore
    -5097    else:
    -5098        kwargs = kwargs or {"expressions": converted}
    -5099        function = Anonymous(this=name, **kwargs)
    -5100
    -5101    for error_message in function.error_messages(converted):
    -5102        raise ValueError(error_message)
    -5103
    -5104    return function
    +            
    5155def func(name: str, *args, dialect: DialectType = None, **kwargs) -> Func:
    +5156    """
    +5157    Returns a Func expression.
    +5158
    +5159    Examples:
    +5160        >>> func("abs", 5).sql()
    +5161        'ABS(5)'
    +5162
    +5163        >>> func("cast", this=5, to=DataType.build("DOUBLE")).sql()
    +5164        'CAST(5 AS DOUBLE)'
    +5165
    +5166    Args:
    +5167        name: the name of the function to build.
    +5168        args: the args used to instantiate the function of interest.
    +5169        dialect: the source dialect.
    +5170        kwargs: the kwargs used to instantiate the function of interest.
    +5171
    +5172    Note:
    +5173        The arguments `args` and `kwargs` are mutually exclusive.
    +5174
    +5175    Returns:
    +5176        An instance of the function of interest, or an anonymous function, if `name` doesn't
    +5177        correspond to an existing `sqlglot.expressions.Func` class.
    +5178    """
    +5179    if args and kwargs:
    +5180        raise ValueError("Can't use both args and kwargs to instantiate a function.")
    +5181
    +5182    from sqlglot.dialects.dialect import Dialect
    +5183
    +5184    converted = [convert(arg) for arg in args]
    +5185    kwargs = {key: convert(value) for key, value in kwargs.items()}
    +5186
    +5187    parser = Dialect.get_or_raise(dialect)().parser()
    +5188    from_args_list = parser.FUNCTIONS.get(name.upper())
    +5189
    +5190    if from_args_list:
    +5191        function = from_args_list(converted) if converted else from_args_list.__self__(**kwargs)  # type: ignore
    +5192    else:
    +5193        kwargs = kwargs or {"expressions": converted}
    +5194        function = Anonymous(this=name, **kwargs)
    +5195
    +5196    for error_message in function.error_messages(converted):
    +5197        raise ValueError(error_message)
    +5198
    +5199    return function
     
    @@ -45337,11 +46248,11 @@ in order to help with type inference.
    -
    5107def true():
    -5108    """
    -5109    Returns a true Boolean expression.
    -5110    """
    -5111    return Boolean(this=True)
    +            
    5202def true():
    +5203    """
    +5204    Returns a true Boolean expression.
    +5205    """
    +5206    return Boolean(this=True)
     
    @@ -45361,11 +46272,11 @@ in order to help with type inference.
    -
    5114def false():
    -5115    """
    -5116    Returns a false Boolean expression.
    -5117    """
    -5118    return Boolean(this=False)
    +            
    5209def false():
    +5210    """
    +5211    Returns a false Boolean expression.
    +5212    """
    +5213    return Boolean(this=False)
     
    @@ -45385,11 +46296,11 @@ in order to help with type inference.
    -
    5121def null():
    -5122    """
    -5123    Returns a Null expression.
    -5124    """
    -5125    return Null()
    +            
    5216def null():
    +5217    """
    +5218    Returns a Null expression.
    +5219    """
    +5220    return Null()
     
    diff --git a/docs/sqlglot/generator.html b/docs/sqlglot/generator.html index 2e3d5ba..8287b3f 100644 --- a/docs/sqlglot/generator.html +++ b/docs/sqlglot/generator.html @@ -3,7 +3,7 @@ - + sqlglot.generator API documentation @@ -132,6 +132,9 @@
  • hexstring_sql
  • +
  • + bytestring_sql +
  • datatype_sql
  • @@ -165,6 +168,9 @@
  • identifier_sql
  • +
  • + inputoutputformat_sql +
  • national_sql
  • @@ -240,6 +246,9 @@
  • pseudotype_sql
  • +
  • + onconflict_sql +
  • returning_sql
  • @@ -800,2007 +809,2095 @@
    76 exp.SqlSecurityProperty: lambda self, e: f"SQL SECURITY {'DEFINER' if e.args.get('definer') else 'INVOKER'}", 77 exp.TemporaryProperty: lambda self, e: f"{'GLOBAL ' if e.args.get('global_') else ''}TEMPORARY", 78 exp.TransientProperty: lambda self, e: "TRANSIENT", - 79 exp.VolatilityProperty: lambda self, e: e.name, - 80 exp.WithJournalTableProperty: lambda self, e: f"WITH JOURNAL TABLE={self.sql(e, 'this')}", - 81 exp.CaseSpecificColumnConstraint: lambda self, e: f"{'NOT ' if e.args.get('not_') else ''}CASESPECIFIC", - 82 exp.CharacterSetColumnConstraint: lambda self, e: f"CHARACTER SET {self.sql(e, 'this')}", - 83 exp.DateFormatColumnConstraint: lambda self, e: f"FORMAT {self.sql(e, 'this')}", - 84 exp.UppercaseColumnConstraint: lambda self, e: f"UPPERCASE", - 85 exp.TitleColumnConstraint: lambda self, e: f"TITLE {self.sql(e, 'this')}", - 86 exp.PathColumnConstraint: lambda self, e: f"PATH {self.sql(e, 'this')}", - 87 exp.CheckColumnConstraint: lambda self, e: f"CHECK ({self.sql(e, 'this')})", - 88 exp.CommentColumnConstraint: lambda self, e: f"COMMENT {self.sql(e, 'this')}", - 89 exp.CollateColumnConstraint: lambda self, e: f"COLLATE {self.sql(e, 'this')}", - 90 exp.EncodeColumnConstraint: lambda self, e: f"ENCODE {self.sql(e, 'this')}", - 91 exp.DefaultColumnConstraint: lambda self, e: f"DEFAULT {self.sql(e, 'this')}", - 92 exp.InlineLengthColumnConstraint: lambda self, e: f"INLINE LENGTH {self.sql(e, 'this')}", - 93 } - 94 - 95 # Whether or not null ordering is supported in order by - 96 NULL_ORDERING_SUPPORTED = True - 97 - 98 # Whether or not locking reads (i.e. SELECT ... FOR UPDATE/SHARE) are supported - 99 LOCKING_READS_SUPPORTED = False - 100 - 101 # Always do union distinct or union all - 102 EXPLICIT_UNION = False - 103 - 104 # Wrap derived values in parens, usually standard but spark doesn't support it - 105 WRAP_DERIVED_VALUES = True - 106 - 107 # Whether or not create function uses an AS before the RETURN - 108 CREATE_FUNCTION_RETURN_AS = True - 109 - 110 # Whether or not MERGE ... WHEN MATCHED BY SOURCE is allowed - 111 MATCHED_BY_SOURCE = True - 112 - 113 # Whether or not limit and fetch are supported - 114 # "ALL", "LIMIT", "FETCH" - 115 LIMIT_FETCH = "ALL" - 116 - 117 TYPE_MAPPING = { - 118 exp.DataType.Type.NCHAR: "CHAR", - 119 exp.DataType.Type.NVARCHAR: "VARCHAR", - 120 exp.DataType.Type.MEDIUMTEXT: "TEXT", - 121 exp.DataType.Type.LONGTEXT: "TEXT", - 122 exp.DataType.Type.MEDIUMBLOB: "BLOB", - 123 exp.DataType.Type.LONGBLOB: "BLOB", - 124 exp.DataType.Type.INET: "INET", - 125 } + 79 exp.StabilityProperty: lambda self, e: e.name, + 80 exp.VolatileProperty: lambda self, e: "VOLATILE", + 81 exp.WithJournalTableProperty: lambda self, e: f"WITH JOURNAL TABLE={self.sql(e, 'this')}", + 82 exp.CaseSpecificColumnConstraint: lambda self, e: f"{'NOT ' if e.args.get('not_') else ''}CASESPECIFIC", + 83 exp.CharacterSetColumnConstraint: lambda self, e: f"CHARACTER SET {self.sql(e, 'this')}", + 84 exp.DateFormatColumnConstraint: lambda self, e: f"FORMAT {self.sql(e, 'this')}", + 85 exp.OnUpdateColumnConstraint: lambda self, e: f"ON UPDATE {self.sql(e, 'this')}", + 86 exp.UppercaseColumnConstraint: lambda self, e: f"UPPERCASE", + 87 exp.TitleColumnConstraint: lambda self, e: f"TITLE {self.sql(e, 'this')}", + 88 exp.PathColumnConstraint: lambda self, e: f"PATH {self.sql(e, 'this')}", + 89 exp.CheckColumnConstraint: lambda self, e: f"CHECK ({self.sql(e, 'this')})", + 90 exp.CommentColumnConstraint: lambda self, e: f"COMMENT {self.sql(e, 'this')}", + 91 exp.CollateColumnConstraint: lambda self, e: f"COLLATE {self.sql(e, 'this')}", + 92 exp.EncodeColumnConstraint: lambda self, e: f"ENCODE {self.sql(e, 'this')}", + 93 exp.DefaultColumnConstraint: lambda self, e: f"DEFAULT {self.sql(e, 'this')}", + 94 exp.InlineLengthColumnConstraint: lambda self, e: f"INLINE LENGTH {self.sql(e, 'this')}", + 95 } + 96 + 97 # Whether or not null ordering is supported in order by + 98 NULL_ORDERING_SUPPORTED = True + 99 + 100 # Whether or not locking reads (i.e. SELECT ... FOR UPDATE/SHARE) are supported + 101 LOCKING_READS_SUPPORTED = False + 102 + 103 # Always do union distinct or union all + 104 EXPLICIT_UNION = False + 105 + 106 # Wrap derived values in parens, usually standard but spark doesn't support it + 107 WRAP_DERIVED_VALUES = True + 108 + 109 # Whether or not create function uses an AS before the RETURN + 110 CREATE_FUNCTION_RETURN_AS = True + 111 + 112 # Whether or not MERGE ... WHEN MATCHED BY SOURCE is allowed + 113 MATCHED_BY_SOURCE = True + 114 + 115 # Whether or not the INTERVAL expression works only with values like '1 day' + 116 SINGLE_STRING_INTERVAL = False + 117 + 118 # Whether or not the plural form of date parts like day (i.e. "days") is supported in INTERVALs + 119 INTERVAL_ALLOWS_PLURAL_FORM = True + 120 + 121 # Whether or not the TABLESAMPLE clause supports a method name, like BERNOULLI + 122 TABLESAMPLE_WITH_METHOD = True + 123 + 124 # Whether or not to treat the number in TABLESAMPLE (50) as a percentage + 125 TABLESAMPLE_SIZE_IS_PERCENT = False 126 - 127 STAR_MAPPING = { - 128 "except": "EXCEPT", - 129 "replace": "REPLACE", - 130 } - 131 - 132 TOKEN_MAPPING: t.Dict[TokenType, str] = {} - 133 - 134 STRUCT_DELIMITER = ("<", ">") - 135 - 136 PARAMETER_TOKEN = "@" - 137 - 138 PROPERTIES_LOCATION = { - 139 exp.AfterJournalProperty: exp.Properties.Location.POST_NAME, - 140 exp.AlgorithmProperty: exp.Properties.Location.POST_CREATE, - 141 exp.AutoIncrementProperty: exp.Properties.Location.POST_SCHEMA, - 142 exp.BlockCompressionProperty: exp.Properties.Location.POST_NAME, - 143 exp.CharacterSetProperty: exp.Properties.Location.POST_SCHEMA, - 144 exp.ChecksumProperty: exp.Properties.Location.POST_NAME, - 145 exp.CollateProperty: exp.Properties.Location.POST_SCHEMA, - 146 exp.Cluster: exp.Properties.Location.POST_SCHEMA, - 147 exp.DataBlocksizeProperty: exp.Properties.Location.POST_NAME, - 148 exp.DefinerProperty: exp.Properties.Location.POST_CREATE, - 149 exp.DistKeyProperty: exp.Properties.Location.POST_SCHEMA, - 150 exp.DistStyleProperty: exp.Properties.Location.POST_SCHEMA, - 151 exp.EngineProperty: exp.Properties.Location.POST_SCHEMA, - 152 exp.ExecuteAsProperty: exp.Properties.Location.POST_SCHEMA, - 153 exp.ExternalProperty: exp.Properties.Location.POST_CREATE, - 154 exp.FallbackProperty: exp.Properties.Location.POST_NAME, - 155 exp.FileFormatProperty: exp.Properties.Location.POST_WITH, - 156 exp.FreespaceProperty: exp.Properties.Location.POST_NAME, - 157 exp.IsolatedLoadingProperty: exp.Properties.Location.POST_NAME, - 158 exp.JournalProperty: exp.Properties.Location.POST_NAME, - 159 exp.LanguageProperty: exp.Properties.Location.POST_SCHEMA, - 160 exp.LikeProperty: exp.Properties.Location.POST_SCHEMA, - 161 exp.LocationProperty: exp.Properties.Location.POST_SCHEMA, - 162 exp.LockingProperty: exp.Properties.Location.POST_ALIAS, - 163 exp.LogProperty: exp.Properties.Location.POST_NAME, - 164 exp.MaterializedProperty: exp.Properties.Location.POST_CREATE, - 165 exp.MergeBlockRatioProperty: exp.Properties.Location.POST_NAME, - 166 exp.NoPrimaryIndexProperty: exp.Properties.Location.POST_EXPRESSION, - 167 exp.OnCommitProperty: exp.Properties.Location.POST_EXPRESSION, - 168 exp.PartitionedByProperty: exp.Properties.Location.POST_WITH, - 169 exp.Property: exp.Properties.Location.POST_WITH, - 170 exp.ReturnsProperty: exp.Properties.Location.POST_SCHEMA, - 171 exp.RowFormatDelimitedProperty: exp.Properties.Location.POST_SCHEMA, - 172 exp.RowFormatSerdeProperty: exp.Properties.Location.POST_SCHEMA, - 173 exp.SchemaCommentProperty: exp.Properties.Location.POST_SCHEMA, - 174 exp.SerdeProperties: exp.Properties.Location.POST_SCHEMA, - 175 exp.SetProperty: exp.Properties.Location.POST_CREATE, - 176 exp.SortKeyProperty: exp.Properties.Location.POST_SCHEMA, - 177 exp.SqlSecurityProperty: exp.Properties.Location.POST_CREATE, - 178 exp.TableFormatProperty: exp.Properties.Location.POST_WITH, - 179 exp.TemporaryProperty: exp.Properties.Location.POST_CREATE, - 180 exp.TransientProperty: exp.Properties.Location.POST_CREATE, - 181 exp.VolatilityProperty: exp.Properties.Location.POST_SCHEMA, - 182 exp.WithDataProperty: exp.Properties.Location.POST_EXPRESSION, - 183 exp.WithJournalTableProperty: exp.Properties.Location.POST_NAME, - 184 } - 185 - 186 WITH_SEPARATED_COMMENTS = (exp.Select, exp.From, exp.Where, exp.Binary) - 187 SENTINEL_LINE_BREAK = "__SQLGLOT__LB__" - 188 - 189 __slots__ = ( - 190 "time_mapping", - 191 "time_trie", - 192 "pretty", - 193 "quote_start", - 194 "quote_end", - 195 "identifier_start", - 196 "identifier_end", - 197 "identify", - 198 "normalize", - 199 "string_escape", - 200 "identifier_escape", - 201 "pad", - 202 "index_offset", - 203 "unnest_column_only", - 204 "alias_post_tablesample", - 205 "normalize_functions", - 206 "unsupported_level", - 207 "unsupported_messages", - 208 "null_ordering", - 209 "max_unsupported", - 210 "_indent", - 211 "_escaped_quote_end", - 212 "_escaped_identifier_end", - 213 "_leading_comma", - 214 "_max_text_width", - 215 "_comments", - 216 "_cache", - 217 ) - 218 - 219 def __init__( - 220 self, - 221 time_mapping=None, - 222 time_trie=None, - 223 pretty=None, - 224 quote_start=None, - 225 quote_end=None, - 226 identifier_start=None, - 227 identifier_end=None, - 228 identify=False, - 229 normalize=False, - 230 string_escape=None, - 231 identifier_escape=None, - 232 pad=2, - 233 indent=2, - 234 index_offset=0, - 235 unnest_column_only=False, - 236 alias_post_tablesample=False, - 237 normalize_functions="upper", - 238 unsupported_level=ErrorLevel.WARN, - 239 null_ordering=None, - 240 max_unsupported=3, - 241 leading_comma=False, - 242 max_text_width=80, - 243 comments=True, - 244 ): - 245 import sqlglot - 246 - 247 self.time_mapping = time_mapping or {} - 248 self.time_trie = time_trie - 249 self.pretty = pretty if pretty is not None else sqlglot.pretty - 250 self.quote_start = quote_start or "'" - 251 self.quote_end = quote_end or "'" - 252 self.identifier_start = identifier_start or '"' - 253 self.identifier_end = identifier_end or '"' - 254 self.identify = identify - 255 self.normalize = normalize - 256 self.string_escape = string_escape or "'" - 257 self.identifier_escape = identifier_escape or '"' - 258 self.pad = pad - 259 self.index_offset = index_offset - 260 self.unnest_column_only = unnest_column_only - 261 self.alias_post_tablesample = alias_post_tablesample - 262 self.normalize_functions = normalize_functions - 263 self.unsupported_level = unsupported_level - 264 self.unsupported_messages = [] - 265 self.max_unsupported = max_unsupported - 266 self.null_ordering = null_ordering - 267 self._indent = indent - 268 self._escaped_quote_end = self.string_escape + self.quote_end - 269 self._escaped_identifier_end = self.identifier_escape + self.identifier_end - 270 self._leading_comma = leading_comma - 271 self._max_text_width = max_text_width - 272 self._comments = comments - 273 self._cache = None - 274 - 275 def generate( - 276 self, - 277 expression: t.Optional[exp.Expression], - 278 cache: t.Optional[t.Dict[int, str]] = None, - 279 ) -> str: - 280 """ - 281 Generates a SQL string by interpreting the given syntax tree. - 282 - 283 Args - 284 expression: the syntax tree. - 285 cache: an optional sql string cache. this leverages the hash of an expression which is slow, so only use this if you set _hash on each node. - 286 - 287 Returns - 288 the SQL string. - 289 """ - 290 if cache is not None: - 291 self._cache = cache - 292 self.unsupported_messages = [] - 293 sql = self.sql(expression).strip() - 294 self._cache = None - 295 - 296 if self.unsupported_level == ErrorLevel.IGNORE: - 297 return sql - 298 - 299 if self.unsupported_level == ErrorLevel.WARN: - 300 for msg in self.unsupported_messages: - 301 logger.warning(msg) - 302 elif self.unsupported_level == ErrorLevel.RAISE and self.unsupported_messages: - 303 raise UnsupportedError(concat_messages(self.unsupported_messages, self.max_unsupported)) - 304 - 305 if self.pretty: - 306 sql = sql.replace(self.SENTINEL_LINE_BREAK, "\n") - 307 return sql - 308 - 309 def unsupported(self, message: str) -> None: - 310 if self.unsupported_level == ErrorLevel.IMMEDIATE: - 311 raise UnsupportedError(message) - 312 self.unsupported_messages.append(message) - 313 - 314 def sep(self, sep: str = " ") -> str: - 315 return f"{sep.strip()}\n" if self.pretty else sep - 316 - 317 def seg(self, sql: str, sep: str = " ") -> str: - 318 return f"{self.sep(sep)}{sql}" + 127 # Whether or not limit and fetch are supported (possible values: "ALL", "LIMIT", "FETCH") + 128 LIMIT_FETCH = "ALL" + 129 + 130 TYPE_MAPPING = { + 131 exp.DataType.Type.NCHAR: "CHAR", + 132 exp.DataType.Type.NVARCHAR: "VARCHAR", + 133 exp.DataType.Type.MEDIUMTEXT: "TEXT", + 134 exp.DataType.Type.LONGTEXT: "TEXT", + 135 exp.DataType.Type.MEDIUMBLOB: "BLOB", + 136 exp.DataType.Type.LONGBLOB: "BLOB", + 137 exp.DataType.Type.INET: "INET", + 138 } + 139 + 140 STAR_MAPPING = { + 141 "except": "EXCEPT", + 142 "replace": "REPLACE", + 143 } + 144 + 145 TIME_PART_SINGULARS = { + 146 "microseconds": "microsecond", + 147 "seconds": "second", + 148 "minutes": "minute", + 149 "hours": "hour", + 150 "days": "day", + 151 "weeks": "week", + 152 "months": "month", + 153 "quarters": "quarter", + 154 "years": "year", + 155 } + 156 + 157 TOKEN_MAPPING: t.Dict[TokenType, str] = {} + 158 + 159 STRUCT_DELIMITER = ("<", ">") + 160 + 161 PARAMETER_TOKEN = "@" + 162 + 163 PROPERTIES_LOCATION = { + 164 exp.AfterJournalProperty: exp.Properties.Location.POST_NAME, + 165 exp.AlgorithmProperty: exp.Properties.Location.POST_CREATE, + 166 exp.AutoIncrementProperty: exp.Properties.Location.POST_SCHEMA, + 167 exp.BlockCompressionProperty: exp.Properties.Location.POST_NAME, + 168 exp.CharacterSetProperty: exp.Properties.Location.POST_SCHEMA, + 169 exp.ChecksumProperty: exp.Properties.Location.POST_NAME, + 170 exp.CollateProperty: exp.Properties.Location.POST_SCHEMA, + 171 exp.Cluster: exp.Properties.Location.POST_SCHEMA, + 172 exp.DataBlocksizeProperty: exp.Properties.Location.POST_NAME, + 173 exp.DefinerProperty: exp.Properties.Location.POST_CREATE, + 174 exp.DistKeyProperty: exp.Properties.Location.POST_SCHEMA, + 175 exp.DistStyleProperty: exp.Properties.Location.POST_SCHEMA, + 176 exp.EngineProperty: exp.Properties.Location.POST_SCHEMA, + 177 exp.ExecuteAsProperty: exp.Properties.Location.POST_SCHEMA, + 178 exp.ExternalProperty: exp.Properties.Location.POST_CREATE, + 179 exp.FallbackProperty: exp.Properties.Location.POST_NAME, + 180 exp.FileFormatProperty: exp.Properties.Location.POST_WITH, + 181 exp.FreespaceProperty: exp.Properties.Location.POST_NAME, + 182 exp.IsolatedLoadingProperty: exp.Properties.Location.POST_NAME, + 183 exp.JournalProperty: exp.Properties.Location.POST_NAME, + 184 exp.LanguageProperty: exp.Properties.Location.POST_SCHEMA, + 185 exp.LikeProperty: exp.Properties.Location.POST_SCHEMA, + 186 exp.LocationProperty: exp.Properties.Location.POST_SCHEMA, + 187 exp.LockingProperty: exp.Properties.Location.POST_ALIAS, + 188 exp.LogProperty: exp.Properties.Location.POST_NAME, + 189 exp.MaterializedProperty: exp.Properties.Location.POST_CREATE, + 190 exp.MergeBlockRatioProperty: exp.Properties.Location.POST_NAME, + 191 exp.NoPrimaryIndexProperty: exp.Properties.Location.POST_EXPRESSION, + 192 exp.OnCommitProperty: exp.Properties.Location.POST_EXPRESSION, + 193 exp.PartitionedByProperty: exp.Properties.Location.POST_WITH, + 194 exp.Property: exp.Properties.Location.POST_WITH, + 195 exp.ReturnsProperty: exp.Properties.Location.POST_SCHEMA, + 196 exp.RowFormatProperty: exp.Properties.Location.POST_SCHEMA, + 197 exp.RowFormatDelimitedProperty: exp.Properties.Location.POST_SCHEMA, + 198 exp.RowFormatSerdeProperty: exp.Properties.Location.POST_SCHEMA, + 199 exp.SchemaCommentProperty: exp.Properties.Location.POST_SCHEMA, + 200 exp.SerdeProperties: exp.Properties.Location.POST_SCHEMA, + 201 exp.SetProperty: exp.Properties.Location.POST_CREATE, + 202 exp.SortKeyProperty: exp.Properties.Location.POST_SCHEMA, + 203 exp.SqlSecurityProperty: exp.Properties.Location.POST_CREATE, + 204 exp.StabilityProperty: exp.Properties.Location.POST_SCHEMA, + 205 exp.TableFormatProperty: exp.Properties.Location.POST_WITH, + 206 exp.TemporaryProperty: exp.Properties.Location.POST_CREATE, + 207 exp.TransientProperty: exp.Properties.Location.POST_CREATE, + 208 exp.VolatileProperty: exp.Properties.Location.POST_CREATE, + 209 exp.WithDataProperty: exp.Properties.Location.POST_EXPRESSION, + 210 exp.WithJournalTableProperty: exp.Properties.Location.POST_NAME, + 211 } + 212 + 213 JOIN_HINTS = True + 214 TABLE_HINTS = True + 215 + 216 RESERVED_KEYWORDS: t.Set[str] = set() + 217 WITH_SEPARATED_COMMENTS = (exp.Select, exp.From, exp.Where, exp.With) + 218 UNWRAPPED_INTERVAL_VALUES = (exp.Literal, exp.Paren, exp.Column) + 219 + 220 SENTINEL_LINE_BREAK = "__SQLGLOT__LB__" + 221 + 222 __slots__ = ( + 223 "time_mapping", + 224 "time_trie", + 225 "pretty", + 226 "quote_start", + 227 "quote_end", + 228 "identifier_start", + 229 "identifier_end", + 230 "identify", + 231 "normalize", + 232 "string_escape", + 233 "identifier_escape", + 234 "pad", + 235 "index_offset", + 236 "unnest_column_only", + 237 "alias_post_tablesample", + 238 "normalize_functions", + 239 "unsupported_level", + 240 "unsupported_messages", + 241 "null_ordering", + 242 "max_unsupported", + 243 "_indent", + 244 "_escaped_quote_end", + 245 "_escaped_identifier_end", + 246 "_leading_comma", + 247 "_max_text_width", + 248 "_comments", + 249 "_cache", + 250 ) + 251 + 252 def __init__( + 253 self, + 254 time_mapping=None, + 255 time_trie=None, + 256 pretty=None, + 257 quote_start=None, + 258 quote_end=None, + 259 identifier_start=None, + 260 identifier_end=None, + 261 identify=False, + 262 normalize=False, + 263 string_escape=None, + 264 identifier_escape=None, + 265 pad=2, + 266 indent=2, + 267 index_offset=0, + 268 unnest_column_only=False, + 269 alias_post_tablesample=False, + 270 normalize_functions="upper", + 271 unsupported_level=ErrorLevel.WARN, + 272 null_ordering=None, + 273 max_unsupported=3, + 274 leading_comma=False, + 275 max_text_width=80, + 276 comments=True, + 277 ): + 278 import sqlglot + 279 + 280 self.time_mapping = time_mapping or {} + 281 self.time_trie = time_trie + 282 self.pretty = pretty if pretty is not None else sqlglot.pretty + 283 self.quote_start = quote_start or "'" + 284 self.quote_end = quote_end or "'" + 285 self.identifier_start = identifier_start or '"' + 286 self.identifier_end = identifier_end or '"' + 287 self.identify = identify + 288 self.normalize = normalize + 289 self.string_escape = string_escape or "'" + 290 self.identifier_escape = identifier_escape or '"' + 291 self.pad = pad + 292 self.index_offset = index_offset + 293 self.unnest_column_only = unnest_column_only + 294 self.alias_post_tablesample = alias_post_tablesample + 295 self.normalize_functions = normalize_functions + 296 self.unsupported_level = unsupported_level + 297 self.unsupported_messages = [] + 298 self.max_unsupported = max_unsupported + 299 self.null_ordering = null_ordering + 300 self._indent = indent + 301 self._escaped_quote_end = self.string_escape + self.quote_end + 302 self._escaped_identifier_end = self.identifier_escape + self.identifier_end + 303 self._leading_comma = leading_comma + 304 self._max_text_width = max_text_width + 305 self._comments = comments + 306 self._cache = None + 307 + 308 def generate( + 309 self, + 310 expression: t.Optional[exp.Expression], + 311 cache: t.Optional[t.Dict[int, str]] = None, + 312 ) -> str: + 313 """ + 314 Generates a SQL string by interpreting the given syntax tree. + 315 + 316 Args + 317 expression: the syntax tree. + 318 cache: an optional sql string cache. this leverages the hash of an expression which is slow, so only use this if you set _hash on each node. 319 - 320 def pad_comment(self, comment: str) -> str: - 321 comment = " " + comment if comment[0].strip() else comment - 322 comment = comment + " " if comment[-1].strip() else comment - 323 return comment - 324 - 325 def maybe_comment(self, sql: str, expression: exp.Expression) -> str: - 326 comments = expression.comments if self._comments else None - 327 - 328 if not comments: - 329 return sql - 330 - 331 sep = "\n" if self.pretty else " " - 332 comments_sql = sep.join( - 333 f"/*{self.pad_comment(comment)}*/" for comment in comments if comment - 334 ) - 335 - 336 if not comments_sql: - 337 return sql - 338 - 339 if isinstance(expression, self.WITH_SEPARATED_COMMENTS): - 340 return f"{comments_sql}{self.sep()}{sql}" + 320 Returns + 321 the SQL string. + 322 """ + 323 if cache is not None: + 324 self._cache = cache + 325 self.unsupported_messages = [] + 326 sql = self.sql(expression).strip() + 327 self._cache = None + 328 + 329 if self.unsupported_level == ErrorLevel.IGNORE: + 330 return sql + 331 + 332 if self.unsupported_level == ErrorLevel.WARN: + 333 for msg in self.unsupported_messages: + 334 logger.warning(msg) + 335 elif self.unsupported_level == ErrorLevel.RAISE and self.unsupported_messages: + 336 raise UnsupportedError(concat_messages(self.unsupported_messages, self.max_unsupported)) + 337 + 338 if self.pretty: + 339 sql = sql.replace(self.SENTINEL_LINE_BREAK, "\n") + 340 return sql 341 - 342 return f"{sql} {comments_sql}" - 343 - 344 def wrap(self, expression: exp.Expression | str) -> str: - 345 this_sql = self.indent( - 346 self.sql(expression) - 347 if isinstance(expression, (exp.Select, exp.Union)) - 348 else self.sql(expression, "this"), - 349 level=1, - 350 pad=0, - 351 ) - 352 return f"({self.sep('')}{this_sql}{self.seg(')', sep='')}" - 353 - 354 def no_identify(self, func: t.Callable[..., str], *args, **kwargs) -> str: - 355 original = self.identify - 356 self.identify = False - 357 result = func(*args, **kwargs) - 358 self.identify = original - 359 return result - 360 - 361 def normalize_func(self, name: str) -> str: - 362 if self.normalize_functions == "upper": - 363 return name.upper() - 364 if self.normalize_functions == "lower": - 365 return name.lower() - 366 return name - 367 - 368 def indent( - 369 self, - 370 sql: str, - 371 level: int = 0, - 372 pad: t.Optional[int] = None, - 373 skip_first: bool = False, - 374 skip_last: bool = False, - 375 ) -> str: - 376 if not self.pretty: - 377 return sql - 378 - 379 pad = self.pad if pad is None else pad - 380 lines = sql.split("\n") + 342 def unsupported(self, message: str) -> None: + 343 if self.unsupported_level == ErrorLevel.IMMEDIATE: + 344 raise UnsupportedError(message) + 345 self.unsupported_messages.append(message) + 346 + 347 def sep(self, sep: str = " ") -> str: + 348 return f"{sep.strip()}\n" if self.pretty else sep + 349 + 350 def seg(self, sql: str, sep: str = " ") -> str: + 351 return f"{self.sep(sep)}{sql}" + 352 + 353 def pad_comment(self, comment: str) -> str: + 354 comment = " " + comment if comment[0].strip() else comment + 355 comment = comment + " " if comment[-1].strip() else comment + 356 return comment + 357 + 358 def maybe_comment( + 359 self, + 360 sql: str, + 361 expression: t.Optional[exp.Expression] = None, + 362 comments: t.Optional[t.List[str]] = None, + 363 ) -> str: + 364 comments = (comments or (expression and expression.comments)) if self._comments else None # type: ignore + 365 + 366 if not comments or isinstance(expression, exp.Binary): + 367 return sql + 368 + 369 sep = "\n" if self.pretty else " " + 370 comments_sql = sep.join( + 371 f"/*{self.pad_comment(comment)}*/" for comment in comments if comment + 372 ) + 373 + 374 if not comments_sql: + 375 return sql + 376 + 377 if isinstance(expression, self.WITH_SEPARATED_COMMENTS): + 378 return f"{comments_sql}{self.sep()}{sql}" + 379 + 380 return f"{sql} {comments_sql}" 381 - 382 return "\n".join( - 383 line - 384 if (skip_first and i == 0) or (skip_last and i == len(lines) - 1) - 385 else f"{' ' * (level * self._indent + pad)}{line}" - 386 for i, line in enumerate(lines) - 387 ) - 388 - 389 def sql( - 390 self, - 391 expression: t.Optional[str | exp.Expression], - 392 key: t.Optional[str] = None, - 393 comment: bool = True, - 394 ) -> str: - 395 if not expression: - 396 return "" - 397 - 398 if isinstance(expression, str): - 399 return expression - 400 - 401 if key: - 402 return self.sql(expression.args.get(key)) - 403 - 404 if self._cache is not None: - 405 expression_id = hash(expression) - 406 - 407 if expression_id in self._cache: - 408 return self._cache[expression_id] - 409 - 410 transform = self.TRANSFORMS.get(expression.__class__) - 411 - 412 if callable(transform): - 413 sql = transform(self, expression) - 414 elif transform: - 415 sql = transform - 416 elif isinstance(expression, exp.Expression): - 417 exp_handler_name = f"{expression.key}_sql" - 418 - 419 if hasattr(self, exp_handler_name): - 420 sql = getattr(self, exp_handler_name)(expression) - 421 elif isinstance(expression, exp.Func): - 422 sql = self.function_fallback_sql(expression) - 423 elif isinstance(expression, exp.Property): - 424 sql = self.property_sql(expression) - 425 else: - 426 raise ValueError(f"Unsupported expression type {expression.__class__.__name__}") - 427 else: - 428 raise ValueError(f"Expected an Expression. Received {type(expression)}: {expression}") - 429 - 430 sql = self.maybe_comment(sql, expression) if self._comments and comment else sql - 431 - 432 if self._cache is not None: - 433 self._cache[expression_id] = sql - 434 return sql + 382 def wrap(self, expression: exp.Expression | str) -> str: + 383 this_sql = self.indent( + 384 self.sql(expression) + 385 if isinstance(expression, (exp.Select, exp.Union)) + 386 else self.sql(expression, "this"), + 387 level=1, + 388 pad=0, + 389 ) + 390 return f"({self.sep('')}{this_sql}{self.seg(')', sep='')}" + 391 + 392 def no_identify(self, func: t.Callable[..., str], *args, **kwargs) -> str: + 393 original = self.identify + 394 self.identify = False + 395 result = func(*args, **kwargs) + 396 self.identify = original + 397 return result + 398 + 399 def normalize_func(self, name: str) -> str: + 400 if self.normalize_functions == "upper": + 401 return name.upper() + 402 if self.normalize_functions == "lower": + 403 return name.lower() + 404 return name + 405 + 406 def indent( + 407 self, + 408 sql: str, + 409 level: int = 0, + 410 pad: t.Optional[int] = None, + 411 skip_first: bool = False, + 412 skip_last: bool = False, + 413 ) -> str: + 414 if not self.pretty: + 415 return sql + 416 + 417 pad = self.pad if pad is None else pad + 418 lines = sql.split("\n") + 419 + 420 return "\n".join( + 421 line + 422 if (skip_first and i == 0) or (skip_last and i == len(lines) - 1) + 423 else f"{' ' * (level * self._indent + pad)}{line}" + 424 for i, line in enumerate(lines) + 425 ) + 426 + 427 def sql( + 428 self, + 429 expression: t.Optional[str | exp.Expression], + 430 key: t.Optional[str] = None, + 431 comment: bool = True, + 432 ) -> str: + 433 if not expression: + 434 return "" 435 - 436 def uncache_sql(self, expression: exp.Uncache) -> str: - 437 table = self.sql(expression, "this") - 438 exists_sql = " IF EXISTS" if expression.args.get("exists") else "" - 439 return f"UNCACHE TABLE{exists_sql} {table}" - 440 - 441 def cache_sql(self, expression: exp.Cache) -> str: - 442 lazy = " LAZY" if expression.args.get("lazy") else "" - 443 table = self.sql(expression, "this") - 444 options = expression.args.get("options") - 445 options = f" OPTIONS({self.sql(options[0])} = {self.sql(options[1])})" if options else "" - 446 sql = self.sql(expression, "expression") - 447 sql = f" AS{self.sep()}{sql}" if sql else "" - 448 sql = f"CACHE{lazy} TABLE {table}{options}{sql}" - 449 return self.prepend_ctes(expression, sql) - 450 - 451 def characterset_sql(self, expression: exp.CharacterSet) -> str: - 452 if isinstance(expression.parent, exp.Cast): - 453 return f"CHAR CHARACTER SET {self.sql(expression, 'this')}" - 454 default = "DEFAULT " if expression.args.get("default") else "" - 455 return f"{default}CHARACTER SET={self.sql(expression, 'this')}" + 436 if isinstance(expression, str): + 437 return expression + 438 + 439 if key: + 440 return self.sql(expression.args.get(key)) + 441 + 442 if self._cache is not None: + 443 expression_id = hash(expression) + 444 + 445 if expression_id in self._cache: + 446 return self._cache[expression_id] + 447 + 448 transform = self.TRANSFORMS.get(expression.__class__) + 449 + 450 if callable(transform): + 451 sql = transform(self, expression) + 452 elif transform: + 453 sql = transform + 454 elif isinstance(expression, exp.Expression): + 455 exp_handler_name = f"{expression.key}_sql" 456 - 457 def column_sql(self, expression: exp.Column) -> str: - 458 return ".".join( - 459 self.sql(part) - 460 for part in ( - 461 expression.args.get("catalog"), - 462 expression.args.get("db"), - 463 expression.args.get("table"), - 464 expression.args.get("this"), - 465 ) - 466 if part - 467 ) - 468 - 469 def columnposition_sql(self, expression: exp.ColumnPosition) -> str: - 470 this = self.sql(expression, "this") - 471 this = f" {this}" if this else "" - 472 position = self.sql(expression, "position") - 473 return f"{position}{this}" - 474 - 475 def columndef_sql(self, expression: exp.ColumnDef) -> str: - 476 column = self.sql(expression, "this") - 477 kind = self.sql(expression, "kind") - 478 constraints = self.expressions(expression, key="constraints", sep=" ", flat=True) - 479 exists = "IF NOT EXISTS " if expression.args.get("exists") else "" - 480 kind = f" {kind}" if kind else "" - 481 constraints = f" {constraints}" if constraints else "" - 482 position = self.sql(expression, "position") - 483 position = f" {position}" if position else "" - 484 - 485 return f"{exists}{column}{kind}{constraints}{position}" - 486 - 487 def columnconstraint_sql(self, expression: exp.ColumnConstraint) -> str: - 488 this = self.sql(expression, "this") - 489 kind_sql = self.sql(expression, "kind") - 490 return f"CONSTRAINT {this} {kind_sql}" if this else kind_sql - 491 - 492 def autoincrementcolumnconstraint_sql(self, _) -> str: - 493 return self.token_sql(TokenType.AUTO_INCREMENT) + 457 if hasattr(self, exp_handler_name): + 458 sql = getattr(self, exp_handler_name)(expression) + 459 elif isinstance(expression, exp.Func): + 460 sql = self.function_fallback_sql(expression) + 461 elif isinstance(expression, exp.Property): + 462 sql = self.property_sql(expression) + 463 else: + 464 raise ValueError(f"Unsupported expression type {expression.__class__.__name__}") + 465 else: + 466 raise ValueError(f"Expected an Expression. Received {type(expression)}: {expression}") + 467 + 468 sql = self.maybe_comment(sql, expression) if self._comments and comment else sql + 469 + 470 if self._cache is not None: + 471 self._cache[expression_id] = sql + 472 return sql + 473 + 474 def uncache_sql(self, expression: exp.Uncache) -> str: + 475 table = self.sql(expression, "this") + 476 exists_sql = " IF EXISTS" if expression.args.get("exists") else "" + 477 return f"UNCACHE TABLE{exists_sql} {table}" + 478 + 479 def cache_sql(self, expression: exp.Cache) -> str: + 480 lazy = " LAZY" if expression.args.get("lazy") else "" + 481 table = self.sql(expression, "this") + 482 options = expression.args.get("options") + 483 options = f" OPTIONS({self.sql(options[0])} = {self.sql(options[1])})" if options else "" + 484 sql = self.sql(expression, "expression") + 485 sql = f" AS{self.sep()}{sql}" if sql else "" + 486 sql = f"CACHE{lazy} TABLE {table}{options}{sql}" + 487 return self.prepend_ctes(expression, sql) + 488 + 489 def characterset_sql(self, expression: exp.CharacterSet) -> str: + 490 if isinstance(expression.parent, exp.Cast): + 491 return f"CHAR CHARACTER SET {self.sql(expression, 'this')}" + 492 default = "DEFAULT " if expression.args.get("default") else "" + 493 return f"{default}CHARACTER SET={self.sql(expression, 'this')}" 494 - 495 def compresscolumnconstraint_sql(self, expression: exp.CompressColumnConstraint) -> str: - 496 if isinstance(expression.this, list): - 497 this = self.wrap(self.expressions(expression, key="this", flat=True)) - 498 else: - 499 this = self.sql(expression, "this") - 500 - 501 return f"COMPRESS {this}" - 502 - 503 def generatedasidentitycolumnconstraint_sql( - 504 self, expression: exp.GeneratedAsIdentityColumnConstraint - 505 ) -> str: - 506 this = "" - 507 if expression.this is not None: - 508 this = " ALWAYS " if expression.this else " BY DEFAULT " - 509 start = expression.args.get("start") - 510 start = f"START WITH {start}" if start else "" - 511 increment = expression.args.get("increment") - 512 increment = f" INCREMENT BY {increment}" if increment else "" - 513 minvalue = expression.args.get("minvalue") - 514 minvalue = f" MINVALUE {minvalue}" if minvalue else "" - 515 maxvalue = expression.args.get("maxvalue") - 516 maxvalue = f" MAXVALUE {maxvalue}" if maxvalue else "" - 517 cycle = expression.args.get("cycle") - 518 cycle_sql = "" - 519 if cycle is not None: - 520 cycle_sql = f"{' NO' if not cycle else ''} CYCLE" - 521 cycle_sql = cycle_sql.strip() if not start and not increment else cycle_sql - 522 sequence_opts = "" - 523 if start or increment or cycle_sql: - 524 sequence_opts = f"{start}{increment}{minvalue}{maxvalue}{cycle_sql}" - 525 sequence_opts = f" ({sequence_opts.strip()})" - 526 return f"GENERATED{this}AS IDENTITY{sequence_opts}" - 527 - 528 def notnullcolumnconstraint_sql(self, expression: exp.NotNullColumnConstraint) -> str: - 529 return f"{'' if expression.args.get('allow_null') else 'NOT '}NULL" - 530 - 531 def primarykeycolumnconstraint_sql(self, expression: exp.PrimaryKeyColumnConstraint) -> str: - 532 desc = expression.args.get("desc") - 533 if desc is not None: - 534 return f"PRIMARY KEY{' DESC' if desc else ' ASC'}" - 535 return f"PRIMARY KEY" - 536 - 537 def uniquecolumnconstraint_sql(self, _) -> str: - 538 return "UNIQUE" - 539 - 540 def create_sql(self, expression: exp.Create) -> str: - 541 kind = self.sql(expression, "kind").upper() - 542 properties = expression.args.get("properties") - 543 properties_exp = expression.copy() - 544 properties_locs = self.locate_properties(properties) if properties else {} - 545 if properties_locs.get(exp.Properties.Location.POST_SCHEMA) or properties_locs.get( - 546 exp.Properties.Location.POST_WITH - 547 ): - 548 properties_exp.set( - 549 "properties", - 550 exp.Properties( - 551 expressions=[ - 552 *properties_locs[exp.Properties.Location.POST_SCHEMA], - 553 *properties_locs[exp.Properties.Location.POST_WITH], - 554 ] - 555 ), - 556 ) - 557 if kind == "TABLE" and properties_locs.get(exp.Properties.Location.POST_NAME): - 558 this_name = self.sql(expression.this, "this") - 559 this_properties = self.properties( - 560 exp.Properties(expressions=properties_locs[exp.Properties.Location.POST_NAME]), - 561 wrapped=False, - 562 ) - 563 this_schema = f"({self.expressions(expression.this)})" - 564 this = f"{this_name}, {this_properties} {this_schema}" - 565 properties_sql = "" - 566 else: - 567 this = self.sql(expression, "this") - 568 properties_sql = self.sql(properties_exp, "properties") - 569 begin = " BEGIN" if expression.args.get("begin") else "" - 570 expression_sql = self.sql(expression, "expression") - 571 if expression_sql: - 572 expression_sql = f"{begin}{self.sep()}{expression_sql}" - 573 - 574 if self.CREATE_FUNCTION_RETURN_AS or not isinstance(expression.expression, exp.Return): - 575 if properties_locs.get(exp.Properties.Location.POST_ALIAS): - 576 postalias_props_sql = self.properties( - 577 exp.Properties( - 578 expressions=properties_locs[exp.Properties.Location.POST_ALIAS] - 579 ), - 580 wrapped=False, - 581 ) - 582 expression_sql = f" AS {postalias_props_sql}{expression_sql}" - 583 else: - 584 expression_sql = f" AS{expression_sql}" - 585 - 586 postindex_props_sql = "" - 587 if properties_locs.get(exp.Properties.Location.POST_INDEX): - 588 postindex_props_sql = self.properties( - 589 exp.Properties(expressions=properties_locs[exp.Properties.Location.POST_INDEX]), - 590 wrapped=False, - 591 prefix=" ", - 592 ) - 593 - 594 indexes = expression.args.get("indexes") - 595 if indexes: - 596 indexes_sql: t.List[str] = [] - 597 for index in indexes: - 598 ind_unique = " UNIQUE" if index.args.get("unique") else "" - 599 ind_primary = " PRIMARY" if index.args.get("primary") else "" - 600 ind_amp = " AMP" if index.args.get("amp") else "" - 601 ind_name = f" {index.name}" if index.name else "" - 602 ind_columns = ( - 603 f' ({self.expressions(index, key="columns", flat=True)})' - 604 if index.args.get("columns") - 605 else "" - 606 ) - 607 ind_sql = f"{ind_unique}{ind_primary}{ind_amp} INDEX{ind_name}{ind_columns}" - 608 - 609 if indexes_sql: - 610 indexes_sql.append(ind_sql) - 611 else: - 612 indexes_sql.append( - 613 f"{ind_sql}{postindex_props_sql}" - 614 if index.args.get("primary") - 615 else f"{postindex_props_sql}{ind_sql}" - 616 ) - 617 - 618 index_sql = "".join(indexes_sql) - 619 else: - 620 index_sql = postindex_props_sql - 621 - 622 replace = " OR REPLACE" if expression.args.get("replace") else "" - 623 unique = " UNIQUE" if expression.args.get("unique") else "" - 624 volatile = " VOLATILE" if expression.args.get("volatile") else "" - 625 - 626 postcreate_props_sql = "" - 627 if properties_locs.get(exp.Properties.Location.POST_CREATE): - 628 postcreate_props_sql = self.properties( - 629 exp.Properties(expressions=properties_locs[exp.Properties.Location.POST_CREATE]), - 630 sep=" ", - 631 prefix=" ", - 632 wrapped=False, - 633 ) - 634 - 635 modifiers = "".join((replace, unique, volatile, postcreate_props_sql)) - 636 - 637 postexpression_props_sql = "" - 638 if properties_locs.get(exp.Properties.Location.POST_EXPRESSION): - 639 postexpression_props_sql = self.properties( - 640 exp.Properties( - 641 expressions=properties_locs[exp.Properties.Location.POST_EXPRESSION] - 642 ), - 643 sep=" ", - 644 prefix=" ", - 645 wrapped=False, - 646 ) - 647 - 648 exists_sql = " IF NOT EXISTS" if expression.args.get("exists") else "" - 649 no_schema_binding = ( - 650 " WITH NO SCHEMA BINDING" if expression.args.get("no_schema_binding") else "" - 651 ) - 652 - 653 expression_sql = f"CREATE{modifiers} {kind}{exists_sql} {this}{properties_sql}{expression_sql}{postexpression_props_sql}{index_sql}{no_schema_binding}" - 654 return self.prepend_ctes(expression, expression_sql) + 495 def column_sql(self, expression: exp.Column) -> str: + 496 return ".".join( + 497 self.sql(part) + 498 for part in ( + 499 expression.args.get("catalog"), + 500 expression.args.get("db"), + 501 expression.args.get("table"), + 502 expression.args.get("this"), + 503 ) + 504 if part + 505 ) + 506 + 507 def columnposition_sql(self, expression: exp.ColumnPosition) -> str: + 508 this = self.sql(expression, "this") + 509 this = f" {this}" if this else "" + 510 position = self.sql(expression, "position") + 511 return f"{position}{this}" + 512 + 513 def columndef_sql(self, expression: exp.ColumnDef) -> str: + 514 column = self.sql(expression, "this") + 515 kind = self.sql(expression, "kind") + 516 constraints = self.expressions(expression, key="constraints", sep=" ", flat=True) + 517 exists = "IF NOT EXISTS " if expression.args.get("exists") else "" + 518 kind = f" {kind}" if kind else "" + 519 constraints = f" {constraints}" if constraints else "" + 520 position = self.sql(expression, "position") + 521 position = f" {position}" if position else "" + 522 + 523 return f"{exists}{column}{kind}{constraints}{position}" + 524 + 525 def columnconstraint_sql(self, expression: exp.ColumnConstraint) -> str: + 526 this = self.sql(expression, "this") + 527 kind_sql = self.sql(expression, "kind") + 528 return f"CONSTRAINT {this} {kind_sql}" if this else kind_sql + 529 + 530 def autoincrementcolumnconstraint_sql(self, _) -> str: + 531 return self.token_sql(TokenType.AUTO_INCREMENT) + 532 + 533 def compresscolumnconstraint_sql(self, expression: exp.CompressColumnConstraint) -> str: + 534 if isinstance(expression.this, list): + 535 this = self.wrap(self.expressions(expression, key="this", flat=True)) + 536 else: + 537 this = self.sql(expression, "this") + 538 + 539 return f"COMPRESS {this}" + 540 + 541 def generatedasidentitycolumnconstraint_sql( + 542 self, expression: exp.GeneratedAsIdentityColumnConstraint + 543 ) -> str: + 544 this = "" + 545 if expression.this is not None: + 546 this = " ALWAYS " if expression.this else " BY DEFAULT " + 547 start = expression.args.get("start") + 548 start = f"START WITH {start}" if start else "" + 549 increment = expression.args.get("increment") + 550 increment = f" INCREMENT BY {increment}" if increment else "" + 551 minvalue = expression.args.get("minvalue") + 552 minvalue = f" MINVALUE {minvalue}" if minvalue else "" + 553 maxvalue = expression.args.get("maxvalue") + 554 maxvalue = f" MAXVALUE {maxvalue}" if maxvalue else "" + 555 cycle = expression.args.get("cycle") + 556 cycle_sql = "" + 557 if cycle is not None: + 558 cycle_sql = f"{' NO' if not cycle else ''} CYCLE" + 559 cycle_sql = cycle_sql.strip() if not start and not increment else cycle_sql + 560 sequence_opts = "" + 561 if start or increment or cycle_sql: + 562 sequence_opts = f"{start}{increment}{minvalue}{maxvalue}{cycle_sql}" + 563 sequence_opts = f" ({sequence_opts.strip()})" + 564 return f"GENERATED{this}AS IDENTITY{sequence_opts}" + 565 + 566 def notnullcolumnconstraint_sql(self, expression: exp.NotNullColumnConstraint) -> str: + 567 return f"{'' if expression.args.get('allow_null') else 'NOT '}NULL" + 568 + 569 def primarykeycolumnconstraint_sql(self, expression: exp.PrimaryKeyColumnConstraint) -> str: + 570 desc = expression.args.get("desc") + 571 if desc is not None: + 572 return f"PRIMARY KEY{' DESC' if desc else ' ASC'}" + 573 return f"PRIMARY KEY" + 574 + 575 def uniquecolumnconstraint_sql(self, _) -> str: + 576 return "UNIQUE" + 577 + 578 def create_sql(self, expression: exp.Create) -> str: + 579 kind = self.sql(expression, "kind").upper() + 580 properties = expression.args.get("properties") + 581 properties_exp = expression.copy() + 582 properties_locs = self.locate_properties(properties) if properties else {} + 583 if properties_locs.get(exp.Properties.Location.POST_SCHEMA) or properties_locs.get( + 584 exp.Properties.Location.POST_WITH + 585 ): + 586 properties_exp.set( + 587 "properties", + 588 exp.Properties( + 589 expressions=[ + 590 *properties_locs[exp.Properties.Location.POST_SCHEMA], + 591 *properties_locs[exp.Properties.Location.POST_WITH], + 592 ] + 593 ), + 594 ) + 595 if kind == "TABLE" and properties_locs.get(exp.Properties.Location.POST_NAME): + 596 this_name = self.sql(expression.this, "this") + 597 this_properties = self.properties( + 598 exp.Properties(expressions=properties_locs[exp.Properties.Location.POST_NAME]), + 599 wrapped=False, + 600 ) + 601 this_schema = f"({self.expressions(expression.this)})" + 602 this = f"{this_name}, {this_properties} {this_schema}" + 603 properties_sql = "" + 604 else: + 605 this = self.sql(expression, "this") + 606 properties_sql = self.sql(properties_exp, "properties") + 607 begin = " BEGIN" if expression.args.get("begin") else "" + 608 expression_sql = self.sql(expression, "expression") + 609 if expression_sql: + 610 expression_sql = f"{begin}{self.sep()}{expression_sql}" + 611 + 612 if self.CREATE_FUNCTION_RETURN_AS or not isinstance(expression.expression, exp.Return): + 613 if properties_locs.get(exp.Properties.Location.POST_ALIAS): + 614 postalias_props_sql = self.properties( + 615 exp.Properties( + 616 expressions=properties_locs[exp.Properties.Location.POST_ALIAS] + 617 ), + 618 wrapped=False, + 619 ) + 620 expression_sql = f" AS {postalias_props_sql}{expression_sql}" + 621 else: + 622 expression_sql = f" AS{expression_sql}" + 623 + 624 postindex_props_sql = "" + 625 if properties_locs.get(exp.Properties.Location.POST_INDEX): + 626 postindex_props_sql = self.properties( + 627 exp.Properties(expressions=properties_locs[exp.Properties.Location.POST_INDEX]), + 628 wrapped=False, + 629 prefix=" ", + 630 ) + 631 + 632 indexes = expression.args.get("indexes") + 633 if indexes: + 634 indexes_sql: t.List[str] = [] + 635 for index in indexes: + 636 ind_unique = " UNIQUE" if index.args.get("unique") else "" + 637 ind_primary = " PRIMARY" if index.args.get("primary") else "" + 638 ind_amp = " AMP" if index.args.get("amp") else "" + 639 ind_name = f" {index.name}" if index.name else "" + 640 ind_columns = ( + 641 f' ({self.expressions(index, key="columns", flat=True)})' + 642 if index.args.get("columns") + 643 else "" + 644 ) + 645 ind_sql = f"{ind_unique}{ind_primary}{ind_amp} INDEX{ind_name}{ind_columns}" + 646 + 647 if indexes_sql: + 648 indexes_sql.append(ind_sql) + 649 else: + 650 indexes_sql.append( + 651 f"{ind_sql}{postindex_props_sql}" + 652 if index.args.get("primary") + 653 else f"{postindex_props_sql}{ind_sql}" + 654 ) 655 - 656 def describe_sql(self, expression: exp.Describe) -> str: - 657 return f"DESCRIBE {self.sql(expression, 'this')}" - 658 - 659 def prepend_ctes(self, expression: exp.Expression, sql: str) -> str: - 660 with_ = self.sql(expression, "with") - 661 if with_: - 662 sql = f"{with_}{self.sep()}{sql}" - 663 return sql - 664 - 665 def with_sql(self, expression: exp.With) -> str: - 666 sql = self.expressions(expression, flat=True) - 667 recursive = "RECURSIVE " if expression.args.get("recursive") else "" - 668 - 669 return f"WITH {recursive}{sql}" - 670 - 671 def cte_sql(self, expression: exp.CTE) -> str: - 672 alias = self.sql(expression, "alias") - 673 return f"{alias} AS {self.wrap(expression)}" - 674 - 675 def tablealias_sql(self, expression: exp.TableAlias) -> str: - 676 alias = self.sql(expression, "this") - 677 columns = self.expressions(expression, key="columns", flat=True) - 678 columns = f"({columns})" if columns else "" - 679 return f"{alias}{columns}" - 680 - 681 def bitstring_sql(self, expression: exp.BitString) -> str: - 682 return self.sql(expression, "this") - 683 - 684 def hexstring_sql(self, expression: exp.HexString) -> str: - 685 return self.sql(expression, "this") - 686 - 687 def datatype_sql(self, expression: exp.DataType) -> str: - 688 type_value = expression.this - 689 type_sql = self.TYPE_MAPPING.get(type_value, type_value.value) - 690 nested = "" - 691 interior = self.expressions(expression, flat=True) - 692 values = "" - 693 if interior: - 694 if expression.args.get("nested"): - 695 nested = f"{self.STRUCT_DELIMITER[0]}{interior}{self.STRUCT_DELIMITER[1]}" - 696 if expression.args.get("values") is not None: - 697 delimiters = ("[", "]") if type_value == exp.DataType.Type.ARRAY else ("(", ")") - 698 values = ( - 699 f"{delimiters[0]}{self.expressions(expression, 'values')}{delimiters[1]}" - 700 ) - 701 else: - 702 nested = f"({interior})" - 703 - 704 return f"{type_sql}{nested}{values}" + 656 index_sql = "".join(indexes_sql) + 657 else: + 658 index_sql = postindex_props_sql + 659 + 660 replace = " OR REPLACE" if expression.args.get("replace") else "" + 661 unique = " UNIQUE" if expression.args.get("unique") else "" + 662 + 663 postcreate_props_sql = "" + 664 if properties_locs.get(exp.Properties.Location.POST_CREATE): + 665 postcreate_props_sql = self.properties( + 666 exp.Properties(expressions=properties_locs[exp.Properties.Location.POST_CREATE]), + 667 sep=" ", + 668 prefix=" ", + 669 wrapped=False, + 670 ) + 671 + 672 modifiers = "".join((replace, unique, postcreate_props_sql)) + 673 + 674 postexpression_props_sql = "" + 675 if properties_locs.get(exp.Properties.Location.POST_EXPRESSION): + 676 postexpression_props_sql = self.properties( + 677 exp.Properties( + 678 expressions=properties_locs[exp.Properties.Location.POST_EXPRESSION] + 679 ), + 680 sep=" ", + 681 prefix=" ", + 682 wrapped=False, + 683 ) + 684 + 685 exists_sql = " IF NOT EXISTS" if expression.args.get("exists") else "" + 686 no_schema_binding = ( + 687 " WITH NO SCHEMA BINDING" if expression.args.get("no_schema_binding") else "" + 688 ) + 689 + 690 expression_sql = f"CREATE{modifiers} {kind}{exists_sql} {this}{properties_sql}{expression_sql}{postexpression_props_sql}{index_sql}{no_schema_binding}" + 691 return self.prepend_ctes(expression, expression_sql) + 692 + 693 def describe_sql(self, expression: exp.Describe) -> str: + 694 return f"DESCRIBE {self.sql(expression, 'this')}" + 695 + 696 def prepend_ctes(self, expression: exp.Expression, sql: str) -> str: + 697 with_ = self.sql(expression, "with") + 698 if with_: + 699 sql = f"{with_}{self.sep()}{sql}" + 700 return sql + 701 + 702 def with_sql(self, expression: exp.With) -> str: + 703 sql = self.expressions(expression, flat=True) + 704 recursive = "RECURSIVE " if expression.args.get("recursive") else "" 705 - 706 def directory_sql(self, expression: exp.Directory) -> str: - 707 local = "LOCAL " if expression.args.get("local") else "" - 708 row_format = self.sql(expression, "row_format") - 709 row_format = f" {row_format}" if row_format else "" - 710 return f"{local}DIRECTORY {self.sql(expression, 'this')}{row_format}" + 706 return f"WITH {recursive}{sql}" + 707 + 708 def cte_sql(self, expression: exp.CTE) -> str: + 709 alias = self.sql(expression, "alias") + 710 return f"{alias} AS {self.wrap(expression)}" 711 - 712 def delete_sql(self, expression: exp.Delete) -> str: - 713 this = self.sql(expression, "this") - 714 this = f" FROM {this}" if this else "" - 715 using_sql = ( - 716 f" USING {self.expressions(expression, 'using', sep=', USING ')}" - 717 if expression.args.get("using") - 718 else "" - 719 ) - 720 where_sql = self.sql(expression, "where") - 721 returning = self.sql(expression, "returning") - 722 sql = f"DELETE{this}{using_sql}{where_sql}{returning}" - 723 return self.prepend_ctes(expression, sql) - 724 - 725 def drop_sql(self, expression: exp.Drop) -> str: - 726 this = self.sql(expression, "this") - 727 kind = expression.args["kind"] - 728 exists_sql = " IF EXISTS " if expression.args.get("exists") else " " - 729 temporary = " TEMPORARY" if expression.args.get("temporary") else "" - 730 materialized = " MATERIALIZED" if expression.args.get("materialized") else "" - 731 cascade = " CASCADE" if expression.args.get("cascade") else "" - 732 constraints = " CONSTRAINTS" if expression.args.get("constraints") else "" - 733 return f"DROP{temporary}{materialized} {kind}{exists_sql}{this}{cascade}{constraints}" - 734 - 735 def except_sql(self, expression: exp.Except) -> str: - 736 return self.prepend_ctes( - 737 expression, - 738 self.set_operation(expression, self.except_op(expression)), - 739 ) - 740 - 741 def except_op(self, expression: exp.Except) -> str: - 742 return f"EXCEPT{'' if expression.args.get('distinct') else ' ALL'}" + 712 def tablealias_sql(self, expression: exp.TableAlias) -> str: + 713 alias = self.sql(expression, "this") + 714 columns = self.expressions(expression, key="columns", flat=True) + 715 columns = f"({columns})" if columns else "" + 716 return f"{alias}{columns}" + 717 + 718 def bitstring_sql(self, expression: exp.BitString) -> str: + 719 return self.sql(expression, "this") + 720 + 721 def hexstring_sql(self, expression: exp.HexString) -> str: + 722 return self.sql(expression, "this") + 723 + 724 def bytestring_sql(self, expression: exp.ByteString) -> str: + 725 return self.sql(expression, "this") + 726 + 727 def datatype_sql(self, expression: exp.DataType) -> str: + 728 type_value = expression.this + 729 type_sql = self.TYPE_MAPPING.get(type_value, type_value.value) + 730 nested = "" + 731 interior = self.expressions(expression, flat=True) + 732 values = "" + 733 if interior: + 734 if expression.args.get("nested"): + 735 nested = f"{self.STRUCT_DELIMITER[0]}{interior}{self.STRUCT_DELIMITER[1]}" + 736 if expression.args.get("values") is not None: + 737 delimiters = ("[", "]") if type_value == exp.DataType.Type.ARRAY else ("(", ")") + 738 values = f"{delimiters[0]}{self.expressions(expression, key='values')}{delimiters[1]}" + 739 else: + 740 nested = f"({interior})" + 741 + 742 return f"{type_sql}{nested}{values}" 743 - 744 def fetch_sql(self, expression: exp.Fetch) -> str: - 745 direction = expression.args.get("direction") - 746 direction = f" {direction.upper()}" if direction else "" - 747 count = expression.args.get("count") - 748 count = f" {count}" if count else "" - 749 return f"{self.seg('FETCH')}{direction}{count} ROWS ONLY" - 750 - 751 def filter_sql(self, expression: exp.Filter) -> str: - 752 this = self.sql(expression, "this") - 753 where = self.sql(expression, "expression")[1:] # where has a leading space - 754 return f"{this} FILTER({where})" - 755 - 756 def hint_sql(self, expression: exp.Hint) -> str: - 757 if self.sql(expression, "this"): - 758 self.unsupported("Hints are not supported") - 759 return "" - 760 - 761 def index_sql(self, expression: exp.Index) -> str: - 762 this = self.sql(expression, "this") - 763 table = self.sql(expression, "table") - 764 columns = self.sql(expression, "columns") - 765 return f"{this} ON {table} {columns}" - 766 - 767 def identifier_sql(self, expression: exp.Identifier) -> str: - 768 text = expression.name - 769 text = text.lower() if self.normalize and not expression.quoted else text - 770 text = text.replace(self.identifier_end, self._escaped_identifier_end) - 771 if expression.quoted or should_identify(text, self.identify): - 772 text = f"{self.identifier_start}{text}{self.identifier_end}" - 773 return text - 774 - 775 def national_sql(self, expression: exp.National) -> str: - 776 return f"N{self.sql(expression, 'this')}" - 777 - 778 def partition_sql(self, expression: exp.Partition) -> str: - 779 return f"PARTITION({self.expressions(expression)})" - 780 - 781 def properties_sql(self, expression: exp.Properties) -> str: - 782 root_properties = [] - 783 with_properties = [] + 744 def directory_sql(self, expression: exp.Directory) -> str: + 745 local = "LOCAL " if expression.args.get("local") else "" + 746 row_format = self.sql(expression, "row_format") + 747 row_format = f" {row_format}" if row_format else "" + 748 return f"{local}DIRECTORY {self.sql(expression, 'this')}{row_format}" + 749 + 750 def delete_sql(self, expression: exp.Delete) -> str: + 751 this = self.sql(expression, "this") + 752 this = f" FROM {this}" if this else "" + 753 using_sql = ( + 754 f" USING {self.expressions(expression, key='using', sep=', USING ')}" + 755 if expression.args.get("using") + 756 else "" + 757 ) + 758 where_sql = self.sql(expression, "where") + 759 returning = self.sql(expression, "returning") + 760 sql = f"DELETE{this}{using_sql}{where_sql}{returning}" + 761 return self.prepend_ctes(expression, sql) + 762 + 763 def drop_sql(self, expression: exp.Drop) -> str: + 764 this = self.sql(expression, "this") + 765 kind = expression.args["kind"] + 766 exists_sql = " IF EXISTS " if expression.args.get("exists") else " " + 767 temporary = " TEMPORARY" if expression.args.get("temporary") else "" + 768 materialized = " MATERIALIZED" if expression.args.get("materialized") else "" + 769 cascade = " CASCADE" if expression.args.get("cascade") else "" + 770 constraints = " CONSTRAINTS" if expression.args.get("constraints") else "" + 771 purge = " PURGE" if expression.args.get("purge") else "" + 772 return ( + 773 f"DROP{temporary}{materialized} {kind}{exists_sql}{this}{cascade}{constraints}{purge}" + 774 ) + 775 + 776 def except_sql(self, expression: exp.Except) -> str: + 777 return self.prepend_ctes( + 778 expression, + 779 self.set_operation(expression, self.except_op(expression)), + 780 ) + 781 + 782 def except_op(self, expression: exp.Except) -> str: + 783 return f"EXCEPT{'' if expression.args.get('distinct') else ' ALL'}" 784 - 785 for p in expression.expressions: - 786 p_loc = self.PROPERTIES_LOCATION[p.__class__] - 787 if p_loc == exp.Properties.Location.POST_WITH: - 788 with_properties.append(p) - 789 elif p_loc == exp.Properties.Location.POST_SCHEMA: - 790 root_properties.append(p) - 791 - 792 return self.root_properties( - 793 exp.Properties(expressions=root_properties) - 794 ) + self.with_properties(exp.Properties(expressions=with_properties)) - 795 - 796 def root_properties(self, properties: exp.Properties) -> str: - 797 if properties.expressions: - 798 return self.sep() + self.expressions(properties, indent=False, sep=" ") - 799 return "" - 800 - 801 def properties( - 802 self, - 803 properties: exp.Properties, - 804 prefix: str = "", - 805 sep: str = ", ", - 806 suffix: str = "", - 807 wrapped: bool = True, - 808 ) -> str: - 809 if properties.expressions: - 810 expressions = self.expressions(properties, sep=sep, indent=False) - 811 expressions = self.wrap(expressions) if wrapped else expressions - 812 return f"{prefix}{' ' if prefix and prefix != ' ' else ''}{expressions}{suffix}" - 813 return "" - 814 - 815 def with_properties(self, properties: exp.Properties) -> str: - 816 return self.properties(properties, prefix=self.seg("WITH")) - 817 - 818 def locate_properties( - 819 self, properties: exp.Properties - 820 ) -> t.Dict[exp.Properties.Location, list[exp.Property]]: - 821 properties_locs: t.Dict[exp.Properties.Location, list[exp.Property]] = { - 822 key: [] for key in exp.Properties.Location - 823 } - 824 - 825 for p in properties.expressions: - 826 p_loc = self.PROPERTIES_LOCATION[p.__class__] - 827 if p_loc == exp.Properties.Location.POST_NAME: - 828 properties_locs[exp.Properties.Location.POST_NAME].append(p) - 829 elif p_loc == exp.Properties.Location.POST_INDEX: - 830 properties_locs[exp.Properties.Location.POST_INDEX].append(p) - 831 elif p_loc == exp.Properties.Location.POST_SCHEMA: - 832 properties_locs[exp.Properties.Location.POST_SCHEMA].append(p) - 833 elif p_loc == exp.Properties.Location.POST_WITH: - 834 properties_locs[exp.Properties.Location.POST_WITH].append(p) - 835 elif p_loc == exp.Properties.Location.POST_CREATE: - 836 properties_locs[exp.Properties.Location.POST_CREATE].append(p) - 837 elif p_loc == exp.Properties.Location.POST_ALIAS: - 838 properties_locs[exp.Properties.Location.POST_ALIAS].append(p) - 839 elif p_loc == exp.Properties.Location.POST_EXPRESSION: - 840 properties_locs[exp.Properties.Location.POST_EXPRESSION].append(p) - 841 elif p_loc == exp.Properties.Location.UNSUPPORTED: - 842 self.unsupported(f"Unsupported property {p.key}") - 843 - 844 return properties_locs - 845 - 846 def property_sql(self, expression: exp.Property) -> str: - 847 property_cls = expression.__class__ - 848 if property_cls == exp.Property: - 849 return f"{expression.name}={self.sql(expression, 'value')}" - 850 - 851 property_name = exp.Properties.PROPERTY_TO_NAME.get(property_cls) - 852 if not property_name: - 853 self.unsupported(f"Unsupported property {expression.key}") - 854 - 855 return f"{property_name}={self.sql(expression, 'this')}" + 785 def fetch_sql(self, expression: exp.Fetch) -> str: + 786 direction = expression.args.get("direction") + 787 direction = f" {direction.upper()}" if direction else "" + 788 count = expression.args.get("count") + 789 count = f" {count}" if count else "" + 790 if expression.args.get("percent"): + 791 count = f"{count} PERCENT" + 792 with_ties_or_only = "WITH TIES" if expression.args.get("with_ties") else "ONLY" + 793 return f"{self.seg('FETCH')}{direction}{count} ROWS {with_ties_or_only}" + 794 + 795 def filter_sql(self, expression: exp.Filter) -> str: + 796 this = self.sql(expression, "this") + 797 where = self.sql(expression, "expression")[1:] # where has a leading space + 798 return f"{this} FILTER({where})" + 799 + 800 def hint_sql(self, expression: exp.Hint) -> str: + 801 if self.sql(expression, "this"): + 802 self.unsupported("Hints are not supported") + 803 return "" + 804 + 805 def index_sql(self, expression: exp.Index) -> str: + 806 this = self.sql(expression, "this") + 807 table = self.sql(expression, "table") + 808 columns = self.sql(expression, "columns") + 809 return f"{this} ON {table} {columns}" + 810 + 811 def identifier_sql(self, expression: exp.Identifier) -> str: + 812 text = expression.name + 813 lower = text.lower() + 814 text = lower if self.normalize and not expression.quoted else text + 815 text = text.replace(self.identifier_end, self._escaped_identifier_end) + 816 if ( + 817 expression.quoted + 818 or should_identify(text, self.identify) + 819 or lower in self.RESERVED_KEYWORDS + 820 ): + 821 text = f"{self.identifier_start}{text}{self.identifier_end}" + 822 return text + 823 + 824 def inputoutputformat_sql(self, expression: exp.InputOutputFormat) -> str: + 825 input_format = self.sql(expression, "input_format") + 826 input_format = f"INPUTFORMAT {input_format}" if input_format else "" + 827 output_format = self.sql(expression, "output_format") + 828 output_format = f"OUTPUTFORMAT {output_format}" if output_format else "" + 829 return self.sep().join((input_format, output_format)) + 830 + 831 def national_sql(self, expression: exp.National) -> str: + 832 return f"N{self.sql(expression, 'this')}" + 833 + 834 def partition_sql(self, expression: exp.Partition) -> str: + 835 return f"PARTITION({self.expressions(expression)})" + 836 + 837 def properties_sql(self, expression: exp.Properties) -> str: + 838 root_properties = [] + 839 with_properties = [] + 840 + 841 for p in expression.expressions: + 842 p_loc = self.PROPERTIES_LOCATION[p.__class__] + 843 if p_loc == exp.Properties.Location.POST_WITH: + 844 with_properties.append(p) + 845 elif p_loc == exp.Properties.Location.POST_SCHEMA: + 846 root_properties.append(p) + 847 + 848 return self.root_properties( + 849 exp.Properties(expressions=root_properties) + 850 ) + self.with_properties(exp.Properties(expressions=with_properties)) + 851 + 852 def root_properties(self, properties: exp.Properties) -> str: + 853 if properties.expressions: + 854 return self.sep() + self.expressions(properties, indent=False, sep=" ") + 855 return "" 856 - 857 def likeproperty_sql(self, expression: exp.LikeProperty) -> str: - 858 options = " ".join(f"{e.name} {self.sql(e, 'value')}" for e in expression.expressions) - 859 options = f" {options}" if options else "" - 860 return f"LIKE {self.sql(expression, 'this')}{options}" - 861 - 862 def fallbackproperty_sql(self, expression: exp.FallbackProperty) -> str: - 863 no = "NO " if expression.args.get("no") else "" - 864 protection = " PROTECTION" if expression.args.get("protection") else "" - 865 return f"{no}FALLBACK{protection}" - 866 - 867 def journalproperty_sql(self, expression: exp.JournalProperty) -> str: - 868 no = "NO " if expression.args.get("no") else "" - 869 dual = "DUAL " if expression.args.get("dual") else "" - 870 before = "BEFORE " if expression.args.get("before") else "" - 871 return f"{no}{dual}{before}JOURNAL" - 872 - 873 def freespaceproperty_sql(self, expression: exp.FreespaceProperty) -> str: - 874 freespace = self.sql(expression, "this") - 875 percent = " PERCENT" if expression.args.get("percent") else "" - 876 return f"FREESPACE={freespace}{percent}" - 877 - 878 def afterjournalproperty_sql(self, expression: exp.AfterJournalProperty) -> str: - 879 no = "NO " if expression.args.get("no") else "" - 880 dual = "DUAL " if expression.args.get("dual") else "" - 881 local = "" - 882 if expression.args.get("local") is not None: - 883 local = "LOCAL " if expression.args.get("local") else "NOT LOCAL " - 884 return f"{no}{dual}{local}AFTER JOURNAL" - 885 - 886 def checksumproperty_sql(self, expression: exp.ChecksumProperty) -> str: - 887 if expression.args.get("default"): - 888 property = "DEFAULT" - 889 elif expression.args.get("on"): - 890 property = "ON" - 891 else: - 892 property = "OFF" - 893 return f"CHECKSUM={property}" - 894 - 895 def mergeblockratioproperty_sql(self, expression: exp.MergeBlockRatioProperty) -> str: - 896 if expression.args.get("no"): - 897 return "NO MERGEBLOCKRATIO" - 898 if expression.args.get("default"): - 899 return "DEFAULT MERGEBLOCKRATIO" - 900 - 901 percent = " PERCENT" if expression.args.get("percent") else "" - 902 return f"MERGEBLOCKRATIO={self.sql(expression, 'this')}{percent}" - 903 - 904 def datablocksizeproperty_sql(self, expression: exp.DataBlocksizeProperty) -> str: - 905 default = expression.args.get("default") - 906 min = expression.args.get("min") - 907 if default is not None or min is not None: - 908 if default: - 909 property = "DEFAULT" - 910 elif min: - 911 property = "MINIMUM" - 912 else: - 913 property = "MAXIMUM" - 914 return f"{property} DATABLOCKSIZE" - 915 else: - 916 units = expression.args.get("units") - 917 units = f" {units}" if units else "" - 918 return f"DATABLOCKSIZE={self.sql(expression, 'size')}{units}" - 919 - 920 def blockcompressionproperty_sql(self, expression: exp.BlockCompressionProperty) -> str: - 921 autotemp = expression.args.get("autotemp") - 922 always = expression.args.get("always") - 923 default = expression.args.get("default") - 924 manual = expression.args.get("manual") - 925 never = expression.args.get("never") - 926 - 927 if autotemp is not None: - 928 property = f"AUTOTEMP({self.expressions(autotemp)})" - 929 elif always: - 930 property = "ALWAYS" - 931 elif default: - 932 property = "DEFAULT" - 933 elif manual: - 934 property = "MANUAL" - 935 elif never: - 936 property = "NEVER" - 937 return f"BLOCKCOMPRESSION={property}" - 938 - 939 def isolatedloadingproperty_sql(self, expression: exp.IsolatedLoadingProperty) -> str: - 940 no = expression.args.get("no") - 941 no = " NO" if no else "" - 942 concurrent = expression.args.get("concurrent") - 943 concurrent = " CONCURRENT" if concurrent else "" - 944 - 945 for_ = "" - 946 if expression.args.get("for_all"): - 947 for_ = " FOR ALL" - 948 elif expression.args.get("for_insert"): - 949 for_ = " FOR INSERT" - 950 elif expression.args.get("for_none"): - 951 for_ = " FOR NONE" - 952 return f"WITH{no}{concurrent} ISOLATED LOADING{for_}" - 953 - 954 def lockingproperty_sql(self, expression: exp.LockingProperty) -> str: - 955 kind = expression.args.get("kind") - 956 this: str = f" {this}" if expression.this else "" - 957 for_or_in = expression.args.get("for_or_in") - 958 lock_type = expression.args.get("lock_type") - 959 override = " OVERRIDE" if expression.args.get("override") else "" - 960 return f"LOCKING {kind}{this} {for_or_in} {lock_type}{override}" - 961 - 962 def withdataproperty_sql(self, expression: exp.WithDataProperty) -> str: - 963 data_sql = f"WITH {'NO ' if expression.args.get('no') else ''}DATA" - 964 statistics = expression.args.get("statistics") - 965 statistics_sql = "" - 966 if statistics is not None: - 967 statistics_sql = f" AND {'NO ' if not statistics else ''}STATISTICS" - 968 return f"{data_sql}{statistics_sql}" - 969 - 970 def insert_sql(self, expression: exp.Insert) -> str: - 971 overwrite = expression.args.get("overwrite") - 972 - 973 if isinstance(expression.this, exp.Directory): - 974 this = "OVERWRITE " if overwrite else "INTO " - 975 else: - 976 this = "OVERWRITE TABLE " if overwrite else "INTO " - 977 - 978 alternative = expression.args.get("alternative") - 979 alternative = f" OR {alternative} " if alternative else " " - 980 this = f"{this}{self.sql(expression, 'this')}" - 981 - 982 exists = " IF EXISTS " if expression.args.get("exists") else " " - 983 partition_sql = ( - 984 self.sql(expression, "partition") if expression.args.get("partition") else "" - 985 ) - 986 expression_sql = self.sql(expression, "expression") - 987 returning = self.sql(expression, "returning") - 988 sep = self.sep() if partition_sql else "" - 989 sql = f"INSERT{alternative}{this}{exists}{partition_sql}{sep}{expression_sql}{returning}" - 990 return self.prepend_ctes(expression, sql) - 991 - 992 def intersect_sql(self, expression: exp.Intersect) -> str: - 993 return self.prepend_ctes( - 994 expression, - 995 self.set_operation(expression, self.intersect_op(expression)), - 996 ) - 997 - 998 def intersect_op(self, expression: exp.Intersect) -> str: - 999 return f"INTERSECT{'' if expression.args.get('distinct') else ' ALL'}" + 857 def properties( + 858 self, + 859 properties: exp.Properties, + 860 prefix: str = "", + 861 sep: str = ", ", + 862 suffix: str = "", + 863 wrapped: bool = True, + 864 ) -> str: + 865 if properties.expressions: + 866 expressions = self.expressions(properties, sep=sep, indent=False) + 867 expressions = self.wrap(expressions) if wrapped else expressions + 868 return f"{prefix}{' ' if prefix and prefix != ' ' else ''}{expressions}{suffix}" + 869 return "" + 870 + 871 def with_properties(self, properties: exp.Properties) -> str: + 872 return self.properties(properties, prefix=self.seg("WITH")) + 873 + 874 def locate_properties( + 875 self, properties: exp.Properties + 876 ) -> t.Dict[exp.Properties.Location, list[exp.Property]]: + 877 properties_locs: t.Dict[exp.Properties.Location, list[exp.Property]] = { + 878 key: [] for key in exp.Properties.Location + 879 } + 880 + 881 for p in properties.expressions: + 882 p_loc = self.PROPERTIES_LOCATION[p.__class__] + 883 if p_loc == exp.Properties.Location.POST_NAME: + 884 properties_locs[exp.Properties.Location.POST_NAME].append(p) + 885 elif p_loc == exp.Properties.Location.POST_INDEX: + 886 properties_locs[exp.Properties.Location.POST_INDEX].append(p) + 887 elif p_loc == exp.Properties.Location.POST_SCHEMA: + 888 properties_locs[exp.Properties.Location.POST_SCHEMA].append(p) + 889 elif p_loc == exp.Properties.Location.POST_WITH: + 890 properties_locs[exp.Properties.Location.POST_WITH].append(p) + 891 elif p_loc == exp.Properties.Location.POST_CREATE: + 892 properties_locs[exp.Properties.Location.POST_CREATE].append(p) + 893 elif p_loc == exp.Properties.Location.POST_ALIAS: + 894 properties_locs[exp.Properties.Location.POST_ALIAS].append(p) + 895 elif p_loc == exp.Properties.Location.POST_EXPRESSION: + 896 properties_locs[exp.Properties.Location.POST_EXPRESSION].append(p) + 897 elif p_loc == exp.Properties.Location.UNSUPPORTED: + 898 self.unsupported(f"Unsupported property {p.key}") + 899 + 900 return properties_locs + 901 + 902 def property_sql(self, expression: exp.Property) -> str: + 903 property_cls = expression.__class__ + 904 if property_cls == exp.Property: + 905 return f"{expression.name}={self.sql(expression, 'value')}" + 906 + 907 property_name = exp.Properties.PROPERTY_TO_NAME.get(property_cls) + 908 if not property_name: + 909 self.unsupported(f"Unsupported property {expression.key}") + 910 + 911 return f"{property_name}={self.sql(expression, 'this')}" + 912 + 913 def likeproperty_sql(self, expression: exp.LikeProperty) -> str: + 914 options = " ".join(f"{e.name} {self.sql(e, 'value')}" for e in expression.expressions) + 915 options = f" {options}" if options else "" + 916 return f"LIKE {self.sql(expression, 'this')}{options}" + 917 + 918 def fallbackproperty_sql(self, expression: exp.FallbackProperty) -> str: + 919 no = "NO " if expression.args.get("no") else "" + 920 protection = " PROTECTION" if expression.args.get("protection") else "" + 921 return f"{no}FALLBACK{protection}" + 922 + 923 def journalproperty_sql(self, expression: exp.JournalProperty) -> str: + 924 no = "NO " if expression.args.get("no") else "" + 925 dual = "DUAL " if expression.args.get("dual") else "" + 926 before = "BEFORE " if expression.args.get("before") else "" + 927 return f"{no}{dual}{before}JOURNAL" + 928 + 929 def freespaceproperty_sql(self, expression: exp.FreespaceProperty) -> str: + 930 freespace = self.sql(expression, "this") + 931 percent = " PERCENT" if expression.args.get("percent") else "" + 932 return f"FREESPACE={freespace}{percent}" + 933 + 934 def afterjournalproperty_sql(self, expression: exp.AfterJournalProperty) -> str: + 935 no = "NO " if expression.args.get("no") else "" + 936 dual = "DUAL " if expression.args.get("dual") else "" + 937 local = "" + 938 if expression.args.get("local") is not None: + 939 local = "LOCAL " if expression.args.get("local") else "NOT LOCAL " + 940 return f"{no}{dual}{local}AFTER JOURNAL" + 941 + 942 def checksumproperty_sql(self, expression: exp.ChecksumProperty) -> str: + 943 if expression.args.get("default"): + 944 property = "DEFAULT" + 945 elif expression.args.get("on"): + 946 property = "ON" + 947 else: + 948 property = "OFF" + 949 return f"CHECKSUM={property}" + 950 + 951 def mergeblockratioproperty_sql(self, expression: exp.MergeBlockRatioProperty) -> str: + 952 if expression.args.get("no"): + 953 return "NO MERGEBLOCKRATIO" + 954 if expression.args.get("default"): + 955 return "DEFAULT MERGEBLOCKRATIO" + 956 + 957 percent = " PERCENT" if expression.args.get("percent") else "" + 958 return f"MERGEBLOCKRATIO={self.sql(expression, 'this')}{percent}" + 959 + 960 def datablocksizeproperty_sql(self, expression: exp.DataBlocksizeProperty) -> str: + 961 default = expression.args.get("default") + 962 min = expression.args.get("min") + 963 if default is not None or min is not None: + 964 if default: + 965 property = "DEFAULT" + 966 elif min: + 967 property = "MINIMUM" + 968 else: + 969 property = "MAXIMUM" + 970 return f"{property} DATABLOCKSIZE" + 971 else: + 972 units = expression.args.get("units") + 973 units = f" {units}" if units else "" + 974 return f"DATABLOCKSIZE={self.sql(expression, 'size')}{units}" + 975 + 976 def blockcompressionproperty_sql(self, expression: exp.BlockCompressionProperty) -> str: + 977 autotemp = expression.args.get("autotemp") + 978 always = expression.args.get("always") + 979 default = expression.args.get("default") + 980 manual = expression.args.get("manual") + 981 never = expression.args.get("never") + 982 + 983 if autotemp is not None: + 984 property = f"AUTOTEMP({self.expressions(autotemp)})" + 985 elif always: + 986 property = "ALWAYS" + 987 elif default: + 988 property = "DEFAULT" + 989 elif manual: + 990 property = "MANUAL" + 991 elif never: + 992 property = "NEVER" + 993 return f"BLOCKCOMPRESSION={property}" + 994 + 995 def isolatedloadingproperty_sql(self, expression: exp.IsolatedLoadingProperty) -> str: + 996 no = expression.args.get("no") + 997 no = " NO" if no else "" + 998 concurrent = expression.args.get("concurrent") + 999 concurrent = " CONCURRENT" if concurrent else "" 1000 -1001 def introducer_sql(self, expression: exp.Introducer) -> str: -1002 return f"{self.sql(expression, 'this')} {self.sql(expression, 'expression')}" -1003 -1004 def pseudotype_sql(self, expression: exp.PseudoType) -> str: -1005 return expression.name.upper() -1006 -1007 def returning_sql(self, expression: exp.Returning) -> str: -1008 return f"{self.seg('RETURNING')} {self.expressions(expression, flat=True)}" +1001 for_ = "" +1002 if expression.args.get("for_all"): +1003 for_ = " FOR ALL" +1004 elif expression.args.get("for_insert"): +1005 for_ = " FOR INSERT" +1006 elif expression.args.get("for_none"): +1007 for_ = " FOR NONE" +1008 return f"WITH{no}{concurrent} ISOLATED LOADING{for_}" 1009 -1010 def rowformatdelimitedproperty_sql(self, expression: exp.RowFormatDelimitedProperty) -> str: -1011 fields = expression.args.get("fields") -1012 fields = f" FIELDS TERMINATED BY {fields}" if fields else "" -1013 escaped = expression.args.get("escaped") -1014 escaped = f" ESCAPED BY {escaped}" if escaped else "" -1015 items = expression.args.get("collection_items") -1016 items = f" COLLECTION ITEMS TERMINATED BY {items}" if items else "" -1017 keys = expression.args.get("map_keys") -1018 keys = f" MAP KEYS TERMINATED BY {keys}" if keys else "" -1019 lines = expression.args.get("lines") -1020 lines = f" LINES TERMINATED BY {lines}" if lines else "" -1021 null = expression.args.get("null") -1022 null = f" NULL DEFINED AS {null}" if null else "" -1023 return f"ROW FORMAT DELIMITED{fields}{escaped}{items}{keys}{lines}{null}" -1024 -1025 def table_sql(self, expression: exp.Table, sep: str = " AS ") -> str: -1026 table = ".".join( -1027 part -1028 for part in [ -1029 self.sql(expression, "catalog"), -1030 self.sql(expression, "db"), -1031 self.sql(expression, "this"), -1032 ] -1033 if part -1034 ) -1035 -1036 alias = self.sql(expression, "alias") -1037 alias = f"{sep}{alias}" if alias else "" -1038 hints = self.expressions(expression, key="hints", sep=", ", flat=True) -1039 hints = f" WITH ({hints})" if hints else "" -1040 laterals = self.expressions(expression, key="laterals", sep="") -1041 joins = self.expressions(expression, key="joins", sep="") -1042 pivots = self.expressions(expression, key="pivots", sep="") -1043 system_time = expression.args.get("system_time") -1044 system_time = f" {self.sql(expression, 'system_time')}" if system_time else "" -1045 -1046 return f"{table}{system_time}{alias}{hints}{laterals}{joins}{pivots}" -1047 -1048 def tablesample_sql(self, expression: exp.TableSample, seed_prefix: str = "SEED") -> str: -1049 if self.alias_post_tablesample and expression.this.alias: -1050 this = self.sql(expression.this, "this") -1051 alias = f" AS {self.sql(expression.this, 'alias')}" -1052 else: -1053 this = self.sql(expression, "this") -1054 alias = "" -1055 method = self.sql(expression, "method") -1056 method = f"{method.upper()} " if method else "" -1057 numerator = self.sql(expression, "bucket_numerator") -1058 denominator = self.sql(expression, "bucket_denominator") -1059 field = self.sql(expression, "bucket_field") -1060 field = f" ON {field}" if field else "" -1061 bucket = f"BUCKET {numerator} OUT OF {denominator}{field}" if numerator else "" -1062 percent = self.sql(expression, "percent") -1063 percent = f"{percent} PERCENT" if percent else "" -1064 rows = self.sql(expression, "rows") -1065 rows = f"{rows} ROWS" if rows else "" -1066 size = self.sql(expression, "size") -1067 seed = self.sql(expression, "seed") -1068 seed = f" {seed_prefix} ({seed})" if seed else "" -1069 kind = expression.args.get("kind", "TABLESAMPLE") -1070 return f"{this} {kind} {method}({bucket}{percent}{rows}{size}){seed}{alias}" -1071 -1072 def pivot_sql(self, expression: exp.Pivot) -> str: -1073 this = self.sql(expression, "this") -1074 alias = self.sql(expression, "alias") -1075 alias = f" AS {alias}" if alias else "" -1076 unpivot = expression.args.get("unpivot") -1077 direction = "UNPIVOT" if unpivot else "PIVOT" -1078 expressions = self.expressions(expression, key="expressions") -1079 field = self.sql(expression, "field") -1080 return f"{this} {direction}({expressions} FOR {field}){alias}" -1081 -1082 def tuple_sql(self, expression: exp.Tuple) -> str: -1083 return f"({self.expressions(expression, flat=True)})" -1084 -1085 def update_sql(self, expression: exp.Update) -> str: -1086 this = self.sql(expression, "this") -1087 set_sql = self.expressions(expression, flat=True) -1088 from_sql = self.sql(expression, "from") -1089 where_sql = self.sql(expression, "where") -1090 returning = self.sql(expression, "returning") -1091 sql = f"UPDATE {this} SET {set_sql}{from_sql}{where_sql}{returning}" -1092 return self.prepend_ctes(expression, sql) -1093 -1094 def values_sql(self, expression: exp.Values) -> str: -1095 args = self.expressions(expression) -1096 alias = self.sql(expression, "alias") -1097 values = f"VALUES{self.seg('')}{args}" -1098 values = ( -1099 f"({values})" -1100 if self.WRAP_DERIVED_VALUES and (alias or isinstance(expression.parent, exp.From)) -1101 else values -1102 ) -1103 return f"{values} AS {alias}" if alias else values -1104 -1105 def var_sql(self, expression: exp.Var) -> str: -1106 return self.sql(expression, "this") -1107 -1108 def into_sql(self, expression: exp.Into) -> str: -1109 temporary = " TEMPORARY" if expression.args.get("temporary") else "" -1110 unlogged = " UNLOGGED" if expression.args.get("unlogged") else "" -1111 return f"{self.seg('INTO')}{temporary or unlogged} {self.sql(expression, 'this')}" -1112 -1113 def from_sql(self, expression: exp.From) -> str: -1114 expressions = self.expressions(expression, flat=True) -1115 return f"{self.seg('FROM')} {expressions}" -1116 -1117 def group_sql(self, expression: exp.Group) -> str: -1118 group_by = self.op_expressions("GROUP BY", expression) -1119 grouping_sets = self.expressions(expression, key="grouping_sets", indent=False) -1120 grouping_sets = ( -1121 f"{self.seg('GROUPING SETS')} {self.wrap(grouping_sets)}" if grouping_sets else "" -1122 ) -1123 -1124 cube = expression.args.get("cube", []) -1125 if seq_get(cube, 0) is True: -1126 return f"{group_by}{self.seg('WITH CUBE')}" -1127 else: -1128 cube_sql = self.expressions(expression, key="cube", indent=False) -1129 cube_sql = f"{self.seg('CUBE')} {self.wrap(cube_sql)}" if cube_sql else "" -1130 -1131 rollup = expression.args.get("rollup", []) -1132 if seq_get(rollup, 0) is True: -1133 return f"{group_by}{self.seg('WITH ROLLUP')}" -1134 else: -1135 rollup_sql = self.expressions(expression, key="rollup", indent=False) -1136 rollup_sql = f"{self.seg('ROLLUP')} {self.wrap(rollup_sql)}" if rollup_sql else "" -1137 -1138 groupings = csv(grouping_sets, cube_sql, rollup_sql, sep=",") -1139 -1140 if expression.args.get("expressions") and groupings: -1141 group_by = f"{group_by}," -1142 -1143 return f"{group_by}{groupings}" -1144 -1145 def having_sql(self, expression: exp.Having) -> str: -1146 this = self.indent(self.sql(expression, "this")) -1147 return f"{self.seg('HAVING')}{self.sep()}{this}" -1148 -1149 def join_sql(self, expression: exp.Join) -> str: -1150 op_sql = self.seg( -1151 " ".join( -1152 op -1153 for op in ( -1154 "NATURAL" if expression.args.get("natural") else None, -1155 expression.side, -1156 expression.kind, -1157 "JOIN", -1158 ) -1159 if op -1160 ) -1161 ) -1162 on_sql = self.sql(expression, "on") -1163 using = expression.args.get("using") -1164 -1165 if not on_sql and using: -1166 on_sql = csv(*(self.sql(column) for column in using)) -1167 -1168 if on_sql: -1169 on_sql = self.indent(on_sql, skip_first=True) -1170 space = self.seg(" " * self.pad) if self.pretty else " " -1171 if using: -1172 on_sql = f"{space}USING ({on_sql})" -1173 else: -1174 on_sql = f"{space}ON {on_sql}" -1175 -1176 expression_sql = self.sql(expression, "expression") -1177 this_sql = self.sql(expression, "this") -1178 return f"{expression_sql}{op_sql} {this_sql}{on_sql}" +1010 def lockingproperty_sql(self, expression: exp.LockingProperty) -> str: +1011 kind = expression.args.get("kind") +1012 this: str = f" {this}" if expression.this else "" +1013 for_or_in = expression.args.get("for_or_in") +1014 lock_type = expression.args.get("lock_type") +1015 override = " OVERRIDE" if expression.args.get("override") else "" +1016 return f"LOCKING {kind}{this} {for_or_in} {lock_type}{override}" +1017 +1018 def withdataproperty_sql(self, expression: exp.WithDataProperty) -> str: +1019 data_sql = f"WITH {'NO ' if expression.args.get('no') else ''}DATA" +1020 statistics = expression.args.get("statistics") +1021 statistics_sql = "" +1022 if statistics is not None: +1023 statistics_sql = f" AND {'NO ' if not statistics else ''}STATISTICS" +1024 return f"{data_sql}{statistics_sql}" +1025 +1026 def insert_sql(self, expression: exp.Insert) -> str: +1027 overwrite = expression.args.get("overwrite") +1028 +1029 if isinstance(expression.this, exp.Directory): +1030 this = "OVERWRITE " if overwrite else "INTO " +1031 else: +1032 this = "OVERWRITE TABLE " if overwrite else "INTO " +1033 +1034 alternative = expression.args.get("alternative") +1035 alternative = f" OR {alternative} " if alternative else " " +1036 this = f"{this}{self.sql(expression, 'this')}" +1037 +1038 exists = " IF EXISTS " if expression.args.get("exists") else " " +1039 partition_sql = ( +1040 self.sql(expression, "partition") if expression.args.get("partition") else "" +1041 ) +1042 expression_sql = self.sql(expression, "expression") +1043 conflict = self.sql(expression, "conflict") +1044 returning = self.sql(expression, "returning") +1045 sep = self.sep() if partition_sql else "" +1046 sql = f"INSERT{alternative}{this}{exists}{partition_sql}{sep}{expression_sql}{conflict}{returning}" +1047 return self.prepend_ctes(expression, sql) +1048 +1049 def intersect_sql(self, expression: exp.Intersect) -> str: +1050 return self.prepend_ctes( +1051 expression, +1052 self.set_operation(expression, self.intersect_op(expression)), +1053 ) +1054 +1055 def intersect_op(self, expression: exp.Intersect) -> str: +1056 return f"INTERSECT{'' if expression.args.get('distinct') else ' ALL'}" +1057 +1058 def introducer_sql(self, expression: exp.Introducer) -> str: +1059 return f"{self.sql(expression, 'this')} {self.sql(expression, 'expression')}" +1060 +1061 def pseudotype_sql(self, expression: exp.PseudoType) -> str: +1062 return expression.name.upper() +1063 +1064 def onconflict_sql(self, expression: exp.OnConflict) -> str: +1065 conflict = "ON DUPLICATE KEY" if expression.args.get("duplicate") else "ON CONFLICT" +1066 constraint = self.sql(expression, "constraint") +1067 if constraint: +1068 constraint = f"ON CONSTRAINT {constraint}" +1069 key = self.expressions(expression, key="key", flat=True) +1070 do = "" if expression.args.get("duplicate") else " DO " +1071 nothing = "NOTHING" if expression.args.get("nothing") else "" +1072 expressions = self.expressions(expression, flat=True) +1073 if expressions: +1074 expressions = f"UPDATE SET {expressions}" +1075 return f"{self.seg(conflict)} {constraint}{key}{do}{nothing}{expressions}" +1076 +1077 def returning_sql(self, expression: exp.Returning) -> str: +1078 return f"{self.seg('RETURNING')} {self.expressions(expression, flat=True)}" +1079 +1080 def rowformatdelimitedproperty_sql(self, expression: exp.RowFormatDelimitedProperty) -> str: +1081 fields = expression.args.get("fields") +1082 fields = f" FIELDS TERMINATED BY {fields}" if fields else "" +1083 escaped = expression.args.get("escaped") +1084 escaped = f" ESCAPED BY {escaped}" if escaped else "" +1085 items = expression.args.get("collection_items") +1086 items = f" COLLECTION ITEMS TERMINATED BY {items}" if items else "" +1087 keys = expression.args.get("map_keys") +1088 keys = f" MAP KEYS TERMINATED BY {keys}" if keys else "" +1089 lines = expression.args.get("lines") +1090 lines = f" LINES TERMINATED BY {lines}" if lines else "" +1091 null = expression.args.get("null") +1092 null = f" NULL DEFINED AS {null}" if null else "" +1093 return f"ROW FORMAT DELIMITED{fields}{escaped}{items}{keys}{lines}{null}" +1094 +1095 def table_sql(self, expression: exp.Table, sep: str = " AS ") -> str: +1096 table = ".".join( +1097 part +1098 for part in [ +1099 self.sql(expression, "catalog"), +1100 self.sql(expression, "db"), +1101 self.sql(expression, "this"), +1102 ] +1103 if part +1104 ) +1105 +1106 alias = self.sql(expression, "alias") +1107 alias = f"{sep}{alias}" if alias else "" +1108 hints = self.expressions(expression, key="hints", sep=", ", flat=True) +1109 hints = f" WITH ({hints})" if hints and self.TABLE_HINTS else "" +1110 laterals = self.expressions(expression, key="laterals", sep="") +1111 joins = self.expressions(expression, key="joins", sep="") +1112 pivots = self.expressions(expression, key="pivots", sep="") +1113 system_time = expression.args.get("system_time") +1114 system_time = f" {self.sql(expression, 'system_time')}" if system_time else "" +1115 +1116 return f"{table}{system_time}{alias}{hints}{laterals}{joins}{pivots}" +1117 +1118 def tablesample_sql(self, expression: exp.TableSample, seed_prefix: str = "SEED") -> str: +1119 if self.alias_post_tablesample and expression.this.alias: +1120 this = self.sql(expression.this, "this") +1121 alias = f" AS {self.sql(expression.this, 'alias')}" +1122 else: +1123 this = self.sql(expression, "this") +1124 alias = "" +1125 method = self.sql(expression, "method") +1126 method = f"{method.upper()} " if method and self.TABLESAMPLE_WITH_METHOD else "" +1127 numerator = self.sql(expression, "bucket_numerator") +1128 denominator = self.sql(expression, "bucket_denominator") +1129 field = self.sql(expression, "bucket_field") +1130 field = f" ON {field}" if field else "" +1131 bucket = f"BUCKET {numerator} OUT OF {denominator}{field}" if numerator else "" +1132 percent = self.sql(expression, "percent") +1133 percent = f"{percent} PERCENT" if percent else "" +1134 rows = self.sql(expression, "rows") +1135 rows = f"{rows} ROWS" if rows else "" +1136 size = self.sql(expression, "size") +1137 if size and self.TABLESAMPLE_SIZE_IS_PERCENT: +1138 size = f"{size} PERCENT" +1139 seed = self.sql(expression, "seed") +1140 seed = f" {seed_prefix} ({seed})" if seed else "" +1141 kind = expression.args.get("kind", "TABLESAMPLE") +1142 return f"{this} {kind} {method}({bucket}{percent}{rows}{size}){seed}{alias}" +1143 +1144 def pivot_sql(self, expression: exp.Pivot) -> str: +1145 this = self.sql(expression, "this") +1146 alias = self.sql(expression, "alias") +1147 alias = f" AS {alias}" if alias else "" +1148 unpivot = expression.args.get("unpivot") +1149 direction = "UNPIVOT" if unpivot else "PIVOT" +1150 expressions = self.expressions(expression, key="expressions") +1151 field = self.sql(expression, "field") +1152 return f"{this} {direction}({expressions} FOR {field}){alias}" +1153 +1154 def tuple_sql(self, expression: exp.Tuple) -> str: +1155 return f"({self.expressions(expression, flat=True)})" +1156 +1157 def update_sql(self, expression: exp.Update) -> str: +1158 this = self.sql(expression, "this") +1159 set_sql = self.expressions(expression, flat=True) +1160 from_sql = self.sql(expression, "from") +1161 where_sql = self.sql(expression, "where") +1162 returning = self.sql(expression, "returning") +1163 sql = f"UPDATE {this} SET {set_sql}{from_sql}{where_sql}{returning}" +1164 return self.prepend_ctes(expression, sql) +1165 +1166 def values_sql(self, expression: exp.Values) -> str: +1167 args = self.expressions(expression) +1168 alias = self.sql(expression, "alias") +1169 values = f"VALUES{self.seg('')}{args}" +1170 values = ( +1171 f"({values})" +1172 if self.WRAP_DERIVED_VALUES and (alias or isinstance(expression.parent, exp.From)) +1173 else values +1174 ) +1175 return f"{values} AS {alias}" if alias else values +1176 +1177 def var_sql(self, expression: exp.Var) -> str: +1178 return self.sql(expression, "this") 1179 -1180 def lambda_sql(self, expression: exp.Lambda, arrow_sep: str = "->") -> str: -1181 args = self.expressions(expression, flat=True) -1182 args = f"({args})" if len(args.split(",")) > 1 else args -1183 return f"{args} {arrow_sep} {self.sql(expression, 'this')}" +1180 def into_sql(self, expression: exp.Into) -> str: +1181 temporary = " TEMPORARY" if expression.args.get("temporary") else "" +1182 unlogged = " UNLOGGED" if expression.args.get("unlogged") else "" +1183 return f"{self.seg('INTO')}{temporary or unlogged} {self.sql(expression, 'this')}" 1184 -1185 def lateral_sql(self, expression: exp.Lateral) -> str: -1186 this = self.sql(expression, "this") -1187 -1188 if isinstance(expression.this, exp.Subquery): -1189 return f"LATERAL {this}" -1190 -1191 if expression.args.get("view"): -1192 alias = expression.args["alias"] -1193 columns = self.expressions(alias, key="columns", flat=True) -1194 table = f" {alias.name}" if alias.name else "" -1195 columns = f" AS {columns}" if columns else "" -1196 op_sql = self.seg(f"LATERAL VIEW{' OUTER' if expression.args.get('outer') else ''}") -1197 return f"{op_sql}{self.sep()}{this}{table}{columns}" -1198 -1199 alias = self.sql(expression, "alias") -1200 alias = f" AS {alias}" if alias else "" -1201 return f"LATERAL {this}{alias}" +1185 def from_sql(self, expression: exp.From) -> str: +1186 expressions = self.expressions(expression, flat=True) +1187 return f"{self.seg('FROM')} {expressions}" +1188 +1189 def group_sql(self, expression: exp.Group) -> str: +1190 group_by = self.op_expressions("GROUP BY", expression) +1191 grouping_sets = self.expressions(expression, key="grouping_sets", indent=False) +1192 grouping_sets = ( +1193 f"{self.seg('GROUPING SETS')} {self.wrap(grouping_sets)}" if grouping_sets else "" +1194 ) +1195 +1196 cube = expression.args.get("cube", []) +1197 if seq_get(cube, 0) is True: +1198 return f"{group_by}{self.seg('WITH CUBE')}" +1199 else: +1200 cube_sql = self.expressions(expression, key="cube", indent=False) +1201 cube_sql = f"{self.seg('CUBE')} {self.wrap(cube_sql)}" if cube_sql else "" 1202 -1203 def limit_sql(self, expression: exp.Limit) -> str: -1204 this = self.sql(expression, "this") -1205 return f"{this}{self.seg('LIMIT')} {self.sql(expression, 'expression')}" -1206 -1207 def offset_sql(self, expression: exp.Offset) -> str: -1208 this = self.sql(expression, "this") -1209 return f"{this}{self.seg('OFFSET')} {self.sql(expression, 'expression')}" -1210 -1211 def setitem_sql(self, expression: exp.SetItem) -> str: -1212 kind = self.sql(expression, "kind") -1213 kind = f"{kind} " if kind else "" -1214 this = self.sql(expression, "this") -1215 expressions = self.expressions(expression) -1216 collate = self.sql(expression, "collate") -1217 collate = f" COLLATE {collate}" if collate else "" -1218 global_ = "GLOBAL " if expression.args.get("global") else "" -1219 return f"{global_}{kind}{this}{expressions}{collate}" +1203 rollup = expression.args.get("rollup", []) +1204 if seq_get(rollup, 0) is True: +1205 return f"{group_by}{self.seg('WITH ROLLUP')}" +1206 else: +1207 rollup_sql = self.expressions(expression, key="rollup", indent=False) +1208 rollup_sql = f"{self.seg('ROLLUP')} {self.wrap(rollup_sql)}" if rollup_sql else "" +1209 +1210 groupings = csv(grouping_sets, cube_sql, rollup_sql, sep=",") +1211 +1212 if expression.args.get("expressions") and groupings: +1213 group_by = f"{group_by}," +1214 +1215 return f"{group_by}{groupings}" +1216 +1217 def having_sql(self, expression: exp.Having) -> str: +1218 this = self.indent(self.sql(expression, "this")) +1219 return f"{self.seg('HAVING')}{self.sep()}{this}" 1220 -1221 def set_sql(self, expression: exp.Set) -> str: -1222 expressions = ( -1223 f" {self.expressions(expression, flat=True)}" if expression.expressions else "" -1224 ) -1225 return f"SET{expressions}" -1226 -1227 def pragma_sql(self, expression: exp.Pragma) -> str: -1228 return f"PRAGMA {self.sql(expression, 'this')}" -1229 -1230 def lock_sql(self, expression: exp.Lock) -> str: -1231 if self.LOCKING_READS_SUPPORTED: -1232 lock_type = "UPDATE" if expression.args["update"] else "SHARE" -1233 return self.seg(f"FOR {lock_type}") -1234 -1235 self.unsupported("Locking reads using 'FOR UPDATE/SHARE' are not supported") -1236 return "" +1221 def join_sql(self, expression: exp.Join) -> str: +1222 op_sql = self.seg( +1223 " ".join( +1224 op +1225 for op in ( +1226 "NATURAL" if expression.args.get("natural") else None, +1227 expression.side, +1228 expression.kind, +1229 expression.hint if self.JOIN_HINTS else None, +1230 "JOIN", +1231 ) +1232 if op +1233 ) +1234 ) +1235 on_sql = self.sql(expression, "on") +1236 using = expression.args.get("using") 1237 -1238 def literal_sql(self, expression: exp.Literal) -> str: -1239 text = expression.this or "" -1240 if expression.is_string: -1241 text = text.replace(self.quote_end, self._escaped_quote_end) -1242 if self.pretty: -1243 text = text.replace("\n", self.SENTINEL_LINE_BREAK) -1244 text = f"{self.quote_start}{text}{self.quote_end}" -1245 return text -1246 -1247 def loaddata_sql(self, expression: exp.LoadData) -> str: -1248 local = " LOCAL" if expression.args.get("local") else "" -1249 inpath = f" INPATH {self.sql(expression, 'inpath')}" -1250 overwrite = " OVERWRITE" if expression.args.get("overwrite") else "" -1251 this = f" INTO TABLE {self.sql(expression, 'this')}" -1252 partition = self.sql(expression, "partition") -1253 partition = f" {partition}" if partition else "" -1254 input_format = self.sql(expression, "input_format") -1255 input_format = f" INPUTFORMAT {input_format}" if input_format else "" -1256 serde = self.sql(expression, "serde") -1257 serde = f" SERDE {serde}" if serde else "" -1258 return f"LOAD DATA{local}{inpath}{overwrite}{this}{partition}{input_format}{serde}" -1259 -1260 def null_sql(self, *_) -> str: -1261 return "NULL" -1262 -1263 def boolean_sql(self, expression: exp.Boolean) -> str: -1264 return "TRUE" if expression.this else "FALSE" -1265 -1266 def order_sql(self, expression: exp.Order, flat: bool = False) -> str: -1267 this = self.sql(expression, "this") -1268 this = f"{this} " if this else this -1269 return self.op_expressions(f"{this}ORDER BY", expression, flat=this or flat) # type: ignore -1270 -1271 def cluster_sql(self, expression: exp.Cluster) -> str: -1272 return self.op_expressions("CLUSTER BY", expression) -1273 -1274 def distribute_sql(self, expression: exp.Distribute) -> str: -1275 return self.op_expressions("DISTRIBUTE BY", expression) -1276 -1277 def sort_sql(self, expression: exp.Sort) -> str: -1278 return self.op_expressions("SORT BY", expression) +1238 if not on_sql and using: +1239 on_sql = csv(*(self.sql(column) for column in using)) +1240 +1241 if on_sql: +1242 on_sql = self.indent(on_sql, skip_first=True) +1243 space = self.seg(" " * self.pad) if self.pretty else " " +1244 if using: +1245 on_sql = f"{space}USING ({on_sql})" +1246 else: +1247 on_sql = f"{space}ON {on_sql}" +1248 +1249 expression_sql = self.sql(expression, "expression") +1250 this_sql = self.sql(expression, "this") +1251 return f"{expression_sql}{op_sql} {this_sql}{on_sql}" +1252 +1253 def lambda_sql(self, expression: exp.Lambda, arrow_sep: str = "->") -> str: +1254 args = self.expressions(expression, flat=True) +1255 args = f"({args})" if len(args.split(",")) > 1 else args +1256 return f"{args} {arrow_sep} {self.sql(expression, 'this')}" +1257 +1258 def lateral_sql(self, expression: exp.Lateral) -> str: +1259 this = self.sql(expression, "this") +1260 +1261 if isinstance(expression.this, exp.Subquery): +1262 return f"LATERAL {this}" +1263 +1264 if expression.args.get("view"): +1265 alias = expression.args["alias"] +1266 columns = self.expressions(alias, key="columns", flat=True) +1267 table = f" {alias.name}" if alias.name else "" +1268 columns = f" AS {columns}" if columns else "" +1269 op_sql = self.seg(f"LATERAL VIEW{' OUTER' if expression.args.get('outer') else ''}") +1270 return f"{op_sql}{self.sep()}{this}{table}{columns}" +1271 +1272 alias = self.sql(expression, "alias") +1273 alias = f" AS {alias}" if alias else "" +1274 return f"LATERAL {this}{alias}" +1275 +1276 def limit_sql(self, expression: exp.Limit) -> str: +1277 this = self.sql(expression, "this") +1278 return f"{this}{self.seg('LIMIT')} {self.sql(expression, 'expression')}" 1279 -1280 def ordered_sql(self, expression: exp.Ordered) -> str: -1281 desc = expression.args.get("desc") -1282 asc = not desc +1280 def offset_sql(self, expression: exp.Offset) -> str: +1281 this = self.sql(expression, "this") +1282 return f"{this}{self.seg('OFFSET')} {self.sql(expression, 'expression')}" 1283 -1284 nulls_first = expression.args.get("nulls_first") -1285 nulls_last = not nulls_first -1286 nulls_are_large = self.null_ordering == "nulls_are_large" -1287 nulls_are_small = self.null_ordering == "nulls_are_small" -1288 nulls_are_last = self.null_ordering == "nulls_are_last" -1289 -1290 sort_order = " DESC" if desc else "" -1291 nulls_sort_change = "" -1292 if nulls_first and ( -1293 (asc and nulls_are_large) or (desc and nulls_are_small) or nulls_are_last -1294 ): -1295 nulls_sort_change = " NULLS FIRST" -1296 elif ( -1297 nulls_last -1298 and ((asc and nulls_are_small) or (desc and nulls_are_large)) -1299 and not nulls_are_last -1300 ): -1301 nulls_sort_change = " NULLS LAST" +1284 def setitem_sql(self, expression: exp.SetItem) -> str: +1285 kind = self.sql(expression, "kind") +1286 kind = f"{kind} " if kind else "" +1287 this = self.sql(expression, "this") +1288 expressions = self.expressions(expression) +1289 collate = self.sql(expression, "collate") +1290 collate = f" COLLATE {collate}" if collate else "" +1291 global_ = "GLOBAL " if expression.args.get("global") else "" +1292 return f"{global_}{kind}{this}{expressions}{collate}" +1293 +1294 def set_sql(self, expression: exp.Set) -> str: +1295 expressions = ( +1296 f" {self.expressions(expression, flat=True)}" if expression.expressions else "" +1297 ) +1298 return f"SET{expressions}" +1299 +1300 def pragma_sql(self, expression: exp.Pragma) -> str: +1301 return f"PRAGMA {self.sql(expression, 'this')}" 1302 -1303 if nulls_sort_change and not self.NULL_ORDERING_SUPPORTED: -1304 self.unsupported( -1305 "Sorting in an ORDER BY on NULLS FIRST/NULLS LAST is not supported by this dialect" -1306 ) -1307 nulls_sort_change = "" -1308 -1309 return f"{self.sql(expression, 'this')}{sort_order}{nulls_sort_change}" +1303 def lock_sql(self, expression: exp.Lock) -> str: +1304 if self.LOCKING_READS_SUPPORTED: +1305 lock_type = "UPDATE" if expression.args["update"] else "SHARE" +1306 return self.seg(f"FOR {lock_type}") +1307 +1308 self.unsupported("Locking reads using 'FOR UPDATE/SHARE' are not supported") +1309 return "" 1310 -1311 def matchrecognize_sql(self, expression: exp.MatchRecognize) -> str: -1312 partition = self.partition_by_sql(expression) -1313 order = self.sql(expression, "order") -1314 measures = self.sql(expression, "measures") -1315 measures = self.seg(f"MEASURES {measures}") if measures else "" -1316 rows = self.sql(expression, "rows") -1317 rows = self.seg(rows) if rows else "" -1318 after = self.sql(expression, "after") -1319 after = self.seg(after) if after else "" -1320 pattern = self.sql(expression, "pattern") -1321 pattern = self.seg(f"PATTERN ({pattern})") if pattern else "" -1322 define = self.sql(expression, "define") -1323 define = self.seg(f"DEFINE {define}") if define else "" -1324 body = "".join( -1325 ( -1326 partition, -1327 order, -1328 measures, -1329 rows, -1330 after, -1331 pattern, -1332 define, -1333 ) -1334 ) -1335 return f"{self.seg('MATCH_RECOGNIZE')} {self.wrap(body)}" -1336 -1337 def query_modifiers(self, expression: exp.Expression, *sqls: str) -> str: -1338 limit = expression.args.get("limit") -1339 -1340 if self.LIMIT_FETCH == "LIMIT" and isinstance(limit, exp.Fetch): -1341 limit = exp.Limit(expression=limit.args.get("count")) -1342 elif self.LIMIT_FETCH == "FETCH" and isinstance(limit, exp.Limit): -1343 limit = exp.Fetch(direction="FIRST", count=limit.expression) -1344 -1345 fetch = isinstance(limit, exp.Fetch) +1311 def literal_sql(self, expression: exp.Literal) -> str: +1312 text = expression.this or "" +1313 if expression.is_string: +1314 text = text.replace(self.quote_end, self._escaped_quote_end) +1315 if self.pretty: +1316 text = text.replace("\n", self.SENTINEL_LINE_BREAK) +1317 text = f"{self.quote_start}{text}{self.quote_end}" +1318 return text +1319 +1320 def loaddata_sql(self, expression: exp.LoadData) -> str: +1321 local = " LOCAL" if expression.args.get("local") else "" +1322 inpath = f" INPATH {self.sql(expression, 'inpath')}" +1323 overwrite = " OVERWRITE" if expression.args.get("overwrite") else "" +1324 this = f" INTO TABLE {self.sql(expression, 'this')}" +1325 partition = self.sql(expression, "partition") +1326 partition = f" {partition}" if partition else "" +1327 input_format = self.sql(expression, "input_format") +1328 input_format = f" INPUTFORMAT {input_format}" if input_format else "" +1329 serde = self.sql(expression, "serde") +1330 serde = f" SERDE {serde}" if serde else "" +1331 return f"LOAD DATA{local}{inpath}{overwrite}{this}{partition}{input_format}{serde}" +1332 +1333 def null_sql(self, *_) -> str: +1334 return "NULL" +1335 +1336 def boolean_sql(self, expression: exp.Boolean) -> str: +1337 return "TRUE" if expression.this else "FALSE" +1338 +1339 def order_sql(self, expression: exp.Order, flat: bool = False) -> str: +1340 this = self.sql(expression, "this") +1341 this = f"{this} " if this else this +1342 return self.op_expressions(f"{this}ORDER BY", expression, flat=this or flat) # type: ignore +1343 +1344 def cluster_sql(self, expression: exp.Cluster) -> str: +1345 return self.op_expressions("CLUSTER BY", expression) 1346 -1347 return csv( -1348 *sqls, -1349 *[self.sql(sql) for sql in expression.args.get("joins") or []], -1350 self.sql(expression, "match"), -1351 *[self.sql(sql) for sql in expression.args.get("laterals") or []], -1352 self.sql(expression, "where"), -1353 self.sql(expression, "group"), -1354 self.sql(expression, "having"), -1355 self.sql(expression, "qualify"), -1356 self.seg("WINDOW ") + self.expressions(expression, "windows", flat=True) -1357 if expression.args.get("windows") -1358 else "", -1359 self.sql(expression, "distribute"), -1360 self.sql(expression, "sort"), -1361 self.sql(expression, "cluster"), -1362 self.sql(expression, "order"), -1363 self.sql(expression, "offset") if fetch else self.sql(limit), -1364 self.sql(limit) if fetch else self.sql(expression, "offset"), -1365 self.sql(expression, "lock"), -1366 self.sql(expression, "sample"), -1367 sep="", -1368 ) -1369 -1370 def select_sql(self, expression: exp.Select) -> str: -1371 kind = expression.args.get("kind") -1372 kind = f" AS {kind}" if kind else "" -1373 hint = self.sql(expression, "hint") -1374 distinct = self.sql(expression, "distinct") -1375 distinct = f" {distinct}" if distinct else "" -1376 expressions = self.expressions(expression) -1377 expressions = f"{self.sep()}{expressions}" if expressions else expressions -1378 sql = self.query_modifiers( -1379 expression, -1380 f"SELECT{kind}{hint}{distinct}{expressions}", -1381 self.sql(expression, "into", comment=False), -1382 self.sql(expression, "from", comment=False), -1383 ) -1384 return self.prepend_ctes(expression, sql) -1385 -1386 def schema_sql(self, expression: exp.Schema) -> str: -1387 this = self.sql(expression, "this") -1388 this = f"{this} " if this else "" -1389 sql = f"({self.sep('')}{self.expressions(expression)}{self.seg(')', sep='')}" -1390 return f"{this}{sql}" -1391 -1392 def star_sql(self, expression: exp.Star) -> str: -1393 except_ = self.expressions(expression, key="except", flat=True) -1394 except_ = f"{self.seg(self.STAR_MAPPING['except'])} ({except_})" if except_ else "" -1395 replace = self.expressions(expression, key="replace", flat=True) -1396 replace = f"{self.seg(self.STAR_MAPPING['replace'])} ({replace})" if replace else "" -1397 return f"*{except_}{replace}" -1398 -1399 def structkwarg_sql(self, expression: exp.StructKwarg) -> str: -1400 return f"{self.sql(expression, 'this')} {self.sql(expression, 'expression')}" -1401 -1402 def parameter_sql(self, expression: exp.Parameter) -> str: -1403 this = self.sql(expression, "this") -1404 this = f"{{{this}}}" if expression.args.get("wrapped") else f"{this}" -1405 return f"{self.PARAMETER_TOKEN}{this}" -1406 -1407 def sessionparameter_sql(self, expression: exp.SessionParameter) -> str: -1408 this = self.sql(expression, "this") -1409 kind = expression.text("kind") -1410 if kind: -1411 kind = f"{kind}." -1412 return f"@@{kind}{this}" -1413 -1414 def placeholder_sql(self, expression: exp.Placeholder) -> str: -1415 return f":{expression.name}" if expression.name else "?" -1416 -1417 def subquery_sql(self, expression: exp.Subquery, sep: str = " AS ") -> str: -1418 alias = self.sql(expression, "alias") -1419 alias = f"{sep}{alias}" if alias else "" -1420 -1421 sql = self.query_modifiers( -1422 expression, -1423 self.wrap(expression), -1424 alias, -1425 self.expressions(expression, key="pivots", sep=" "), -1426 ) -1427 -1428 return self.prepend_ctes(expression, sql) -1429 -1430 def qualify_sql(self, expression: exp.Qualify) -> str: -1431 this = self.indent(self.sql(expression, "this")) -1432 return f"{self.seg('QUALIFY')}{self.sep()}{this}" -1433 -1434 def union_sql(self, expression: exp.Union) -> str: -1435 return self.prepend_ctes( -1436 expression, -1437 self.set_operation(expression, self.union_op(expression)), -1438 ) -1439 -1440 def union_op(self, expression: exp.Union) -> str: -1441 kind = " DISTINCT" if self.EXPLICIT_UNION else "" -1442 kind = kind if expression.args.get("distinct") else " ALL" -1443 return f"UNION{kind}" -1444 -1445 def unnest_sql(self, expression: exp.Unnest) -> str: -1446 args = self.expressions(expression, flat=True) -1447 alias = expression.args.get("alias") -1448 if alias and self.unnest_column_only: -1449 columns = alias.columns -1450 alias = self.sql(columns[0]) if columns else "" -1451 else: -1452 alias = self.sql(expression, "alias") -1453 alias = f" AS {alias}" if alias else alias -1454 ordinality = " WITH ORDINALITY" if expression.args.get("ordinality") else "" -1455 offset = expression.args.get("offset") -1456 offset = f" WITH OFFSET AS {self.sql(offset)}" if offset else "" -1457 return f"UNNEST({args}){ordinality}{alias}{offset}" -1458 -1459 def where_sql(self, expression: exp.Where) -> str: -1460 this = self.indent(self.sql(expression, "this")) -1461 return f"{self.seg('WHERE')}{self.sep()}{this}" -1462 -1463 def window_sql(self, expression: exp.Window) -> str: -1464 this = self.sql(expression, "this") -1465 -1466 partition = self.partition_by_sql(expression) -1467 -1468 order = expression.args.get("order") -1469 order_sql = self.order_sql(order, flat=True) if order else "" +1347 def distribute_sql(self, expression: exp.Distribute) -> str: +1348 return self.op_expressions("DISTRIBUTE BY", expression) +1349 +1350 def sort_sql(self, expression: exp.Sort) -> str: +1351 return self.op_expressions("SORT BY", expression) +1352 +1353 def ordered_sql(self, expression: exp.Ordered) -> str: +1354 desc = expression.args.get("desc") +1355 asc = not desc +1356 +1357 nulls_first = expression.args.get("nulls_first") +1358 nulls_last = not nulls_first +1359 nulls_are_large = self.null_ordering == "nulls_are_large" +1360 nulls_are_small = self.null_ordering == "nulls_are_small" +1361 nulls_are_last = self.null_ordering == "nulls_are_last" +1362 +1363 sort_order = " DESC" if desc else "" +1364 nulls_sort_change = "" +1365 if nulls_first and ( +1366 (asc and nulls_are_large) or (desc and nulls_are_small) or nulls_are_last +1367 ): +1368 nulls_sort_change = " NULLS FIRST" +1369 elif ( +1370 nulls_last +1371 and ((asc and nulls_are_small) or (desc and nulls_are_large)) +1372 and not nulls_are_last +1373 ): +1374 nulls_sort_change = " NULLS LAST" +1375 +1376 if nulls_sort_change and not self.NULL_ORDERING_SUPPORTED: +1377 self.unsupported( +1378 "Sorting in an ORDER BY on NULLS FIRST/NULLS LAST is not supported by this dialect" +1379 ) +1380 nulls_sort_change = "" +1381 +1382 return f"{self.sql(expression, 'this')}{sort_order}{nulls_sort_change}" +1383 +1384 def matchrecognize_sql(self, expression: exp.MatchRecognize) -> str: +1385 partition = self.partition_by_sql(expression) +1386 order = self.sql(expression, "order") +1387 measures = self.expressions(expression, key="measures") +1388 measures = self.seg(f"MEASURES{self.seg(measures)}") if measures else "" +1389 rows = self.sql(expression, "rows") +1390 rows = self.seg(rows) if rows else "" +1391 after = self.sql(expression, "after") +1392 after = self.seg(after) if after else "" +1393 pattern = self.sql(expression, "pattern") +1394 pattern = self.seg(f"PATTERN ({pattern})") if pattern else "" +1395 definition_sqls = [ +1396 f"{self.sql(definition, 'alias')} AS {self.sql(definition, 'this')}" +1397 for definition in expression.args.get("define", []) +1398 ] +1399 definitions = self.expressions(sqls=definition_sqls) +1400 define = self.seg(f"DEFINE{self.seg(definitions)}") if definitions else "" +1401 body = "".join( +1402 ( +1403 partition, +1404 order, +1405 measures, +1406 rows, +1407 after, +1408 pattern, +1409 define, +1410 ) +1411 ) +1412 alias = self.sql(expression, "alias") +1413 alias = f" {alias}" if alias else "" +1414 return f"{self.seg('MATCH_RECOGNIZE')} {self.wrap(body)}{alias}" +1415 +1416 def query_modifiers(self, expression: exp.Expression, *sqls: str) -> str: +1417 limit = expression.args.get("limit") +1418 +1419 if self.LIMIT_FETCH == "LIMIT" and isinstance(limit, exp.Fetch): +1420 limit = exp.Limit(expression=limit.args.get("count")) +1421 elif self.LIMIT_FETCH == "FETCH" and isinstance(limit, exp.Limit): +1422 limit = exp.Fetch(direction="FIRST", count=limit.expression) +1423 +1424 fetch = isinstance(limit, exp.Fetch) +1425 +1426 return csv( +1427 *sqls, +1428 *[self.sql(sql) for sql in expression.args.get("joins") or []], +1429 self.sql(expression, "match"), +1430 *[self.sql(sql) for sql in expression.args.get("laterals") or []], +1431 self.sql(expression, "where"), +1432 self.sql(expression, "group"), +1433 self.sql(expression, "having"), +1434 self.sql(expression, "qualify"), +1435 self.seg("WINDOW ") + self.expressions(expression, key="windows", flat=True) +1436 if expression.args.get("windows") +1437 else "", +1438 self.sql(expression, "distribute"), +1439 self.sql(expression, "sort"), +1440 self.sql(expression, "cluster"), +1441 self.sql(expression, "order"), +1442 self.sql(expression, "offset") if fetch else self.sql(limit), +1443 self.sql(limit) if fetch else self.sql(expression, "offset"), +1444 self.sql(expression, "lock"), +1445 self.sql(expression, "sample"), +1446 sep="", +1447 ) +1448 +1449 def select_sql(self, expression: exp.Select) -> str: +1450 kind = expression.args.get("kind") +1451 kind = f" AS {kind}" if kind else "" +1452 hint = self.sql(expression, "hint") +1453 distinct = self.sql(expression, "distinct") +1454 distinct = f" {distinct}" if distinct else "" +1455 expressions = self.expressions(expression) +1456 expressions = f"{self.sep()}{expressions}" if expressions else expressions +1457 sql = self.query_modifiers( +1458 expression, +1459 f"SELECT{kind}{hint}{distinct}{expressions}", +1460 self.sql(expression, "into", comment=False), +1461 self.sql(expression, "from", comment=False), +1462 ) +1463 return self.prepend_ctes(expression, sql) +1464 +1465 def schema_sql(self, expression: exp.Schema) -> str: +1466 this = self.sql(expression, "this") +1467 this = f"{this} " if this else "" +1468 sql = f"({self.sep('')}{self.expressions(expression)}{self.seg(')', sep='')}" +1469 return f"{this}{sql}" 1470 -1471 partition_sql = partition + " " if partition and order else partition -1472 -1473 spec = expression.args.get("spec") -1474 spec_sql = " " + self.window_spec_sql(spec) if spec else "" -1475 -1476 alias = self.sql(expression, "alias") -1477 this = f"{this} {'AS' if expression.arg_key == 'windows' else 'OVER'}" -1478 -1479 if not partition and not order and not spec and alias: -1480 return f"{this} {alias}" -1481 -1482 window_args = alias + partition_sql + order_sql + spec_sql -1483 -1484 return f"{this} ({window_args.strip()})" +1471 def star_sql(self, expression: exp.Star) -> str: +1472 except_ = self.expressions(expression, key="except", flat=True) +1473 except_ = f"{self.seg(self.STAR_MAPPING['except'])} ({except_})" if except_ else "" +1474 replace = self.expressions(expression, key="replace", flat=True) +1475 replace = f"{self.seg(self.STAR_MAPPING['replace'])} ({replace})" if replace else "" +1476 return f"*{except_}{replace}" +1477 +1478 def structkwarg_sql(self, expression: exp.StructKwarg) -> str: +1479 return f"{self.sql(expression, 'this')} {self.sql(expression, 'expression')}" +1480 +1481 def parameter_sql(self, expression: exp.Parameter) -> str: +1482 this = self.sql(expression, "this") +1483 this = f"{{{this}}}" if expression.args.get("wrapped") else f"{this}" +1484 return f"{self.PARAMETER_TOKEN}{this}" 1485 -1486 def partition_by_sql(self, expression: exp.Window | exp.MatchRecognize) -> str: -1487 partition = self.expressions(expression, key="partition_by", flat=True) -1488 return f"PARTITION BY {partition}" if partition else "" -1489 -1490 def window_spec_sql(self, expression: exp.WindowSpec) -> str: -1491 kind = self.sql(expression, "kind") -1492 start = csv(self.sql(expression, "start"), self.sql(expression, "start_side"), sep=" ") -1493 end = ( -1494 csv(self.sql(expression, "end"), self.sql(expression, "end_side"), sep=" ") -1495 or "CURRENT ROW" -1496 ) -1497 return f"{kind} BETWEEN {start} AND {end}" -1498 -1499 def withingroup_sql(self, expression: exp.WithinGroup) -> str: -1500 this = self.sql(expression, "this") -1501 expression_sql = self.sql(expression, "expression")[1:] # order has a leading space -1502 return f"{this} WITHIN GROUP ({expression_sql})" -1503 -1504 def between_sql(self, expression: exp.Between) -> str: -1505 this = self.sql(expression, "this") -1506 low = self.sql(expression, "low") -1507 high = self.sql(expression, "high") -1508 return f"{this} BETWEEN {low} AND {high}" -1509 -1510 def bracket_sql(self, expression: exp.Bracket) -> str: -1511 expressions = apply_index_offset(expression.expressions, self.index_offset) -1512 expressions_sql = ", ".join(self.sql(e) for e in expressions) -1513 -1514 return f"{self.sql(expression, 'this')}[{expressions_sql}]" -1515 -1516 def all_sql(self, expression: exp.All) -> str: -1517 return f"ALL {self.wrap(expression)}" +1486 def sessionparameter_sql(self, expression: exp.SessionParameter) -> str: +1487 this = self.sql(expression, "this") +1488 kind = expression.text("kind") +1489 if kind: +1490 kind = f"{kind}." +1491 return f"@@{kind}{this}" +1492 +1493 def placeholder_sql(self, expression: exp.Placeholder) -> str: +1494 return f":{expression.name}" if expression.name else "?" +1495 +1496 def subquery_sql(self, expression: exp.Subquery, sep: str = " AS ") -> str: +1497 alias = self.sql(expression, "alias") +1498 alias = f"{sep}{alias}" if alias else "" +1499 +1500 sql = self.query_modifiers( +1501 expression, +1502 self.wrap(expression), +1503 alias, +1504 self.expressions(expression, key="pivots", sep=" "), +1505 ) +1506 +1507 return self.prepend_ctes(expression, sql) +1508 +1509 def qualify_sql(self, expression: exp.Qualify) -> str: +1510 this = self.indent(self.sql(expression, "this")) +1511 return f"{self.seg('QUALIFY')}{self.sep()}{this}" +1512 +1513 def union_sql(self, expression: exp.Union) -> str: +1514 return self.prepend_ctes( +1515 expression, +1516 self.set_operation(expression, self.union_op(expression)), +1517 ) 1518 -1519 def any_sql(self, expression: exp.Any) -> str: -1520 this = self.sql(expression, "this") -1521 if isinstance(expression.this, exp.Subqueryable): -1522 this = self.wrap(this) -1523 return f"ANY {this}" -1524 -1525 def exists_sql(self, expression: exp.Exists) -> str: -1526 return f"EXISTS{self.wrap(expression)}" -1527 -1528 def case_sql(self, expression: exp.Case) -> str: -1529 this = self.sql(expression, "this") -1530 statements = [f"CASE {this}" if this else "CASE"] -1531 -1532 for e in expression.args["ifs"]: -1533 statements.append(f"WHEN {self.sql(e, 'this')}") -1534 statements.append(f"THEN {self.sql(e, 'true')}") -1535 -1536 default = self.sql(expression, "default") +1519 def union_op(self, expression: exp.Union) -> str: +1520 kind = " DISTINCT" if self.EXPLICIT_UNION else "" +1521 kind = kind if expression.args.get("distinct") else " ALL" +1522 return f"UNION{kind}" +1523 +1524 def unnest_sql(self, expression: exp.Unnest) -> str: +1525 args = self.expressions(expression, flat=True) +1526 alias = expression.args.get("alias") +1527 if alias and self.unnest_column_only: +1528 columns = alias.columns +1529 alias = self.sql(columns[0]) if columns else "" +1530 else: +1531 alias = self.sql(expression, "alias") +1532 alias = f" AS {alias}" if alias else alias +1533 ordinality = " WITH ORDINALITY" if expression.args.get("ordinality") else "" +1534 offset = expression.args.get("offset") +1535 offset = f" WITH OFFSET AS {self.sql(offset)}" if offset else "" +1536 return f"UNNEST({args}){ordinality}{alias}{offset}" 1537 -1538 if default: -1539 statements.append(f"ELSE {default}") -1540 -1541 statements.append("END") -1542 -1543 if self.pretty and self.text_width(statements) > self._max_text_width: -1544 return self.indent("\n".join(statements), skip_first=True, skip_last=True) -1545 -1546 return " ".join(statements) -1547 -1548 def constraint_sql(self, expression: exp.Constraint) -> str: -1549 this = self.sql(expression, "this") -1550 expressions = self.expressions(expression, flat=True) -1551 return f"CONSTRAINT {this} {expressions}" -1552 -1553 def extract_sql(self, expression: exp.Extract) -> str: -1554 this = self.sql(expression, "this") -1555 expression_sql = self.sql(expression, "expression") -1556 return f"EXTRACT({this} FROM {expression_sql})" +1538 def where_sql(self, expression: exp.Where) -> str: +1539 this = self.indent(self.sql(expression, "this")) +1540 return f"{self.seg('WHERE')}{self.sep()}{this}" +1541 +1542 def window_sql(self, expression: exp.Window) -> str: +1543 this = self.sql(expression, "this") +1544 +1545 partition = self.partition_by_sql(expression) +1546 +1547 order = expression.args.get("order") +1548 order_sql = self.order_sql(order, flat=True) if order else "" +1549 +1550 partition_sql = partition + " " if partition and order else partition +1551 +1552 spec = expression.args.get("spec") +1553 spec_sql = " " + self.window_spec_sql(spec) if spec else "" +1554 +1555 alias = self.sql(expression, "alias") +1556 this = f"{this} {'AS' if expression.arg_key == 'windows' else 'OVER'}" 1557 -1558 def trim_sql(self, expression: exp.Trim) -> str: -1559 trim_type = self.sql(expression, "position") +1558 if not partition and not order and not spec and alias: +1559 return f"{this} {alias}" 1560 -1561 if trim_type == "LEADING": -1562 return self.func("LTRIM", expression.this) -1563 elif trim_type == "TRAILING": -1564 return self.func("RTRIM", expression.this) -1565 else: -1566 return self.func("TRIM", expression.this, expression.expression) -1567 -1568 def concat_sql(self, expression: exp.Concat) -> str: -1569 if len(expression.expressions) == 1: -1570 return self.sql(expression.expressions[0]) -1571 return self.function_fallback_sql(expression) -1572 -1573 def check_sql(self, expression: exp.Check) -> str: -1574 this = self.sql(expression, key="this") -1575 return f"CHECK ({this})" -1576 -1577 def foreignkey_sql(self, expression: exp.ForeignKey) -> str: -1578 expressions = self.expressions(expression, flat=True) -1579 reference = self.sql(expression, "reference") -1580 reference = f" {reference}" if reference else "" -1581 delete = self.sql(expression, "delete") -1582 delete = f" ON DELETE {delete}" if delete else "" -1583 update = self.sql(expression, "update") -1584 update = f" ON UPDATE {update}" if update else "" -1585 return f"FOREIGN KEY ({expressions}){reference}{delete}{update}" -1586 -1587 def primarykey_sql(self, expression: exp.ForeignKey) -> str: -1588 expressions = self.expressions(expression, flat=True) -1589 options = self.expressions(expression, "options", flat=True, sep=" ") -1590 options = f" {options}" if options else "" -1591 return f"PRIMARY KEY ({expressions}){options}" +1561 window_args = alias + partition_sql + order_sql + spec_sql +1562 +1563 return f"{this} ({window_args.strip()})" +1564 +1565 def partition_by_sql(self, expression: exp.Window | exp.MatchRecognize) -> str: +1566 partition = self.expressions(expression, key="partition_by", flat=True) +1567 return f"PARTITION BY {partition}" if partition else "" +1568 +1569 def window_spec_sql(self, expression: exp.WindowSpec) -> str: +1570 kind = self.sql(expression, "kind") +1571 start = csv(self.sql(expression, "start"), self.sql(expression, "start_side"), sep=" ") +1572 end = ( +1573 csv(self.sql(expression, "end"), self.sql(expression, "end_side"), sep=" ") +1574 or "CURRENT ROW" +1575 ) +1576 return f"{kind} BETWEEN {start} AND {end}" +1577 +1578 def withingroup_sql(self, expression: exp.WithinGroup) -> str: +1579 this = self.sql(expression, "this") +1580 expression_sql = self.sql(expression, "expression")[1:] # order has a leading space +1581 return f"{this} WITHIN GROUP ({expression_sql})" +1582 +1583 def between_sql(self, expression: exp.Between) -> str: +1584 this = self.sql(expression, "this") +1585 low = self.sql(expression, "low") +1586 high = self.sql(expression, "high") +1587 return f"{this} BETWEEN {low} AND {high}" +1588 +1589 def bracket_sql(self, expression: exp.Bracket) -> str: +1590 expressions = apply_index_offset(expression.this, expression.expressions, self.index_offset) +1591 expressions_sql = ", ".join(self.sql(e) for e in expressions) 1592 -1593 def unique_sql(self, expression: exp.Unique) -> str: -1594 columns = self.expressions(expression, key="expressions") -1595 return f"UNIQUE ({columns})" -1596 -1597 def if_sql(self, expression: exp.If) -> str: -1598 return self.case_sql( -1599 exp.Case(ifs=[expression.copy()], default=expression.args.get("false")) -1600 ) -1601 -1602 def matchagainst_sql(self, expression: exp.MatchAgainst) -> str: -1603 modifier = expression.args.get("modifier") -1604 modifier = f" {modifier}" if modifier else "" -1605 return f"{self.func('MATCH', *expression.expressions)} AGAINST({self.sql(expression, 'this')}{modifier})" +1593 return f"{self.sql(expression, 'this')}[{expressions_sql}]" +1594 +1595 def all_sql(self, expression: exp.All) -> str: +1596 return f"ALL {self.wrap(expression)}" +1597 +1598 def any_sql(self, expression: exp.Any) -> str: +1599 this = self.sql(expression, "this") +1600 if isinstance(expression.this, exp.Subqueryable): +1601 this = self.wrap(this) +1602 return f"ANY {this}" +1603 +1604 def exists_sql(self, expression: exp.Exists) -> str: +1605 return f"EXISTS{self.wrap(expression)}" 1606 -1607 def jsonkeyvalue_sql(self, expression: exp.JSONKeyValue) -> str: -1608 return f"{self.sql(expression, 'this')}: {self.sql(expression, 'expression')}" -1609 -1610 def jsonobject_sql(self, expression: exp.JSONObject) -> str: -1611 expressions = self.expressions(expression) -1612 null_handling = expression.args.get("null_handling") -1613 null_handling = f" {null_handling}" if null_handling else "" -1614 unique_keys = expression.args.get("unique_keys") -1615 if unique_keys is not None: -1616 unique_keys = f" {'WITH' if unique_keys else 'WITHOUT'} UNIQUE KEYS" -1617 else: -1618 unique_keys = "" -1619 return_type = self.sql(expression, "return_type") -1620 return_type = f" RETURNING {return_type}" if return_type else "" -1621 format_json = " FORMAT JSON" if expression.args.get("format_json") else "" -1622 encoding = self.sql(expression, "encoding") -1623 encoding = f" ENCODING {encoding}" if encoding else "" -1624 return f"JSON_OBJECT({expressions}{null_handling}{unique_keys}{return_type}{format_json}{encoding})" -1625 -1626 def in_sql(self, expression: exp.In) -> str: -1627 query = expression.args.get("query") -1628 unnest = expression.args.get("unnest") -1629 field = expression.args.get("field") -1630 is_global = " GLOBAL" if expression.args.get("is_global") else "" +1607 def case_sql(self, expression: exp.Case) -> str: +1608 this = self.sql(expression, "this") +1609 statements = [f"CASE {this}" if this else "CASE"] +1610 +1611 for e in expression.args["ifs"]: +1612 statements.append(f"WHEN {self.sql(e, 'this')}") +1613 statements.append(f"THEN {self.sql(e, 'true')}") +1614 +1615 default = self.sql(expression, "default") +1616 +1617 if default: +1618 statements.append(f"ELSE {default}") +1619 +1620 statements.append("END") +1621 +1622 if self.pretty and self.text_width(statements) > self._max_text_width: +1623 return self.indent("\n".join(statements), skip_first=True, skip_last=True) +1624 +1625 return " ".join(statements) +1626 +1627 def constraint_sql(self, expression: exp.Constraint) -> str: +1628 this = self.sql(expression, "this") +1629 expressions = self.expressions(expression, flat=True) +1630 return f"CONSTRAINT {this} {expressions}" 1631 -1632 if query: -1633 in_sql = self.wrap(query) -1634 elif unnest: -1635 in_sql = self.in_unnest_op(unnest) -1636 elif field: -1637 in_sql = self.sql(field) -1638 else: -1639 in_sql = f"({self.expressions(expression, flat=True)})" -1640 -1641 return f"{self.sql(expression, 'this')}{is_global} IN {in_sql}" -1642 -1643 def in_unnest_op(self, unnest: exp.Unnest) -> str: -1644 return f"(SELECT {self.sql(unnest)})" -1645 -1646 def interval_sql(self, expression: exp.Interval) -> str: -1647 this = expression.args.get("this") -1648 if this: -1649 this = ( -1650 f" {this}" -1651 if isinstance(this, exp.Literal) or isinstance(this, exp.Paren) -1652 else f" ({this})" -1653 ) -1654 else: -1655 this = "" -1656 unit = self.sql(expression, "unit") -1657 unit = f" {unit}" if unit else "" -1658 return f"INTERVAL{this}{unit}" -1659 -1660 def return_sql(self, expression: exp.Return) -> str: -1661 return f"RETURN {self.sql(expression, 'this')}" -1662 -1663 def reference_sql(self, expression: exp.Reference) -> str: -1664 this = self.sql(expression, "this") -1665 expressions = self.expressions(expression, flat=True) -1666 expressions = f"({expressions})" if expressions else "" -1667 options = self.expressions(expression, "options", flat=True, sep=" ") -1668 options = f" {options}" if options else "" -1669 return f"REFERENCES {this}{expressions}{options}" -1670 -1671 def anonymous_sql(self, expression: exp.Anonymous) -> str: -1672 return self.func(expression.name, *expression.expressions) -1673 -1674 def paren_sql(self, expression: exp.Paren) -> str: -1675 if isinstance(expression.unnest(), exp.Select): -1676 sql = self.wrap(expression) -1677 else: -1678 sql = self.seg(self.indent(self.sql(expression, "this")), sep="") -1679 sql = f"({sql}{self.seg(')', sep='')}" +1632 def extract_sql(self, expression: exp.Extract) -> str: +1633 this = self.sql(expression, "this") +1634 expression_sql = self.sql(expression, "expression") +1635 return f"EXTRACT({this} FROM {expression_sql})" +1636 +1637 def trim_sql(self, expression: exp.Trim) -> str: +1638 trim_type = self.sql(expression, "position") +1639 +1640 if trim_type == "LEADING": +1641 return self.func("LTRIM", expression.this) +1642 elif trim_type == "TRAILING": +1643 return self.func("RTRIM", expression.this) +1644 else: +1645 return self.func("TRIM", expression.this, expression.expression) +1646 +1647 def concat_sql(self, expression: exp.Concat) -> str: +1648 if len(expression.expressions) == 1: +1649 return self.sql(expression.expressions[0]) +1650 return self.function_fallback_sql(expression) +1651 +1652 def check_sql(self, expression: exp.Check) -> str: +1653 this = self.sql(expression, key="this") +1654 return f"CHECK ({this})" +1655 +1656 def foreignkey_sql(self, expression: exp.ForeignKey) -> str: +1657 expressions = self.expressions(expression, flat=True) +1658 reference = self.sql(expression, "reference") +1659 reference = f" {reference}" if reference else "" +1660 delete = self.sql(expression, "delete") +1661 delete = f" ON DELETE {delete}" if delete else "" +1662 update = self.sql(expression, "update") +1663 update = f" ON UPDATE {update}" if update else "" +1664 return f"FOREIGN KEY ({expressions}){reference}{delete}{update}" +1665 +1666 def primarykey_sql(self, expression: exp.ForeignKey) -> str: +1667 expressions = self.expressions(expression, flat=True) +1668 options = self.expressions(expression, key="options", flat=True, sep=" ") +1669 options = f" {options}" if options else "" +1670 return f"PRIMARY KEY ({expressions}){options}" +1671 +1672 def unique_sql(self, expression: exp.Unique) -> str: +1673 columns = self.expressions(expression, key="expressions") +1674 return f"UNIQUE ({columns})" +1675 +1676 def if_sql(self, expression: exp.If) -> str: +1677 return self.case_sql( +1678 exp.Case(ifs=[expression.copy()], default=expression.args.get("false")) +1679 ) 1680 -1681 return self.prepend_ctes(expression, sql) -1682 -1683 def neg_sql(self, expression: exp.Neg) -> str: -1684 # This makes sure we don't convert "- - 5" to "--5", which is a comment -1685 this_sql = self.sql(expression, "this") -1686 sep = " " if this_sql[0] == "-" else "" -1687 return f"-{sep}{this_sql}" +1681 def matchagainst_sql(self, expression: exp.MatchAgainst) -> str: +1682 modifier = expression.args.get("modifier") +1683 modifier = f" {modifier}" if modifier else "" +1684 return f"{self.func('MATCH', *expression.expressions)} AGAINST({self.sql(expression, 'this')}{modifier})" +1685 +1686 def jsonkeyvalue_sql(self, expression: exp.JSONKeyValue) -> str: +1687 return f"{self.sql(expression, 'this')}: {self.sql(expression, 'expression')}" 1688 -1689 def not_sql(self, expression: exp.Not) -> str: -1690 return f"NOT {self.sql(expression, 'this')}" -1691 -1692 def alias_sql(self, expression: exp.Alias) -> str: -1693 to_sql = self.sql(expression, "alias") -1694 to_sql = f" AS {to_sql}" if to_sql else "" -1695 return f"{self.sql(expression, 'this')}{to_sql}" -1696 -1697 def aliases_sql(self, expression: exp.Aliases) -> str: -1698 return f"{self.sql(expression, 'this')} AS ({self.expressions(expression, flat=True)})" -1699 -1700 def attimezone_sql(self, expression: exp.AtTimeZone) -> str: -1701 this = self.sql(expression, "this") -1702 zone = self.sql(expression, "zone") -1703 return f"{this} AT TIME ZONE {zone}" +1689 def jsonobject_sql(self, expression: exp.JSONObject) -> str: +1690 expressions = self.expressions(expression) +1691 null_handling = expression.args.get("null_handling") +1692 null_handling = f" {null_handling}" if null_handling else "" +1693 unique_keys = expression.args.get("unique_keys") +1694 if unique_keys is not None: +1695 unique_keys = f" {'WITH' if unique_keys else 'WITHOUT'} UNIQUE KEYS" +1696 else: +1697 unique_keys = "" +1698 return_type = self.sql(expression, "return_type") +1699 return_type = f" RETURNING {return_type}" if return_type else "" +1700 format_json = " FORMAT JSON" if expression.args.get("format_json") else "" +1701 encoding = self.sql(expression, "encoding") +1702 encoding = f" ENCODING {encoding}" if encoding else "" +1703 return f"JSON_OBJECT({expressions}{null_handling}{unique_keys}{return_type}{format_json}{encoding})" 1704 -1705 def add_sql(self, expression: exp.Add) -> str: -1706 return self.binary(expression, "+") -1707 -1708 def and_sql(self, expression: exp.And) -> str: -1709 return self.connector_sql(expression, "AND") +1705 def in_sql(self, expression: exp.In) -> str: +1706 query = expression.args.get("query") +1707 unnest = expression.args.get("unnest") +1708 field = expression.args.get("field") +1709 is_global = " GLOBAL" if expression.args.get("is_global") else "" 1710 -1711 def connector_sql(self, expression: exp.Connector, op: str) -> str: -1712 if not self.pretty: -1713 return self.binary(expression, op) -1714 -1715 sqls = tuple(self.sql(e) for e in expression.flatten(unnest=False)) -1716 sep = "\n" if self.text_width(sqls) > self._max_text_width else " " -1717 return f"{sep}{op} ".join(sqls) -1718 -1719 def bitwiseand_sql(self, expression: exp.BitwiseAnd) -> str: -1720 return self.binary(expression, "&") +1711 if query: +1712 in_sql = self.wrap(query) +1713 elif unnest: +1714 in_sql = self.in_unnest_op(unnest) +1715 elif field: +1716 in_sql = self.sql(field) +1717 else: +1718 in_sql = f"({self.expressions(expression, flat=True)})" +1719 +1720 return f"{self.sql(expression, 'this')}{is_global} IN {in_sql}" 1721 -1722 def bitwiseleftshift_sql(self, expression: exp.BitwiseLeftShift) -> str: -1723 return self.binary(expression, "<<") +1722 def in_unnest_op(self, unnest: exp.Unnest) -> str: +1723 return f"(SELECT {self.sql(unnest)})" 1724 -1725 def bitwisenot_sql(self, expression: exp.BitwiseNot) -> str: -1726 return f"~{self.sql(expression, 'this')}" -1727 -1728 def bitwiseor_sql(self, expression: exp.BitwiseOr) -> str: -1729 return self.binary(expression, "|") +1725 def interval_sql(self, expression: exp.Interval) -> str: +1726 unit = self.sql(expression, "unit") +1727 if not self.INTERVAL_ALLOWS_PLURAL_FORM: +1728 unit = self.TIME_PART_SINGULARS.get(unit.lower(), unit) +1729 unit = f" {unit}" if unit else "" 1730 -1731 def bitwiserightshift_sql(self, expression: exp.BitwiseRightShift) -> str: -1732 return self.binary(expression, ">>") -1733 -1734 def bitwisexor_sql(self, expression: exp.BitwiseXor) -> str: -1735 return self.binary(expression, "^") -1736 -1737 def cast_sql(self, expression: exp.Cast) -> str: -1738 return f"CAST({self.sql(expression, 'this')} AS {self.sql(expression, 'to')})" +1731 if self.SINGLE_STRING_INTERVAL: +1732 this = expression.this.name if expression.this else "" +1733 return f"INTERVAL '{this}{unit}'" +1734 +1735 this = self.sql(expression, "this") +1736 if this: +1737 unwrapped = isinstance(expression.this, self.UNWRAPPED_INTERVAL_VALUES) +1738 this = f" {this}" if unwrapped else f" ({this})" 1739 -1740 def currentdate_sql(self, expression: exp.CurrentDate) -> str: -1741 zone = self.sql(expression, "this") -1742 return f"CURRENT_DATE({zone})" if zone else "CURRENT_DATE" -1743 -1744 def collate_sql(self, expression: exp.Collate) -> str: -1745 return self.binary(expression, "COLLATE") -1746 -1747 def command_sql(self, expression: exp.Command) -> str: -1748 return f"{self.sql(expression, 'this').upper()} {expression.text('expression').strip()}" -1749 -1750 def comment_sql(self, expression: exp.Comment) -> str: -1751 this = self.sql(expression, "this") -1752 kind = expression.args["kind"] -1753 exists_sql = " IF EXISTS " if expression.args.get("exists") else " " -1754 expression_sql = self.sql(expression, "expression") -1755 return f"COMMENT{exists_sql}ON {kind} {this} IS {expression_sql}" -1756 -1757 def transaction_sql(self, expression: exp.Transaction) -> str: -1758 return "BEGIN" -1759 -1760 def commit_sql(self, expression: exp.Commit) -> str: -1761 chain = expression.args.get("chain") -1762 if chain is not None: -1763 chain = " AND CHAIN" if chain else " AND NO CHAIN" +1740 return f"INTERVAL{this}{unit}" +1741 +1742 def return_sql(self, expression: exp.Return) -> str: +1743 return f"RETURN {self.sql(expression, 'this')}" +1744 +1745 def reference_sql(self, expression: exp.Reference) -> str: +1746 this = self.sql(expression, "this") +1747 expressions = self.expressions(expression, flat=True) +1748 expressions = f"({expressions})" if expressions else "" +1749 options = self.expressions(expression, key="options", flat=True, sep=" ") +1750 options = f" {options}" if options else "" +1751 return f"REFERENCES {this}{expressions}{options}" +1752 +1753 def anonymous_sql(self, expression: exp.Anonymous) -> str: +1754 return self.func(expression.name, *expression.expressions) +1755 +1756 def paren_sql(self, expression: exp.Paren) -> str: +1757 if isinstance(expression.unnest(), exp.Select): +1758 sql = self.wrap(expression) +1759 else: +1760 sql = self.seg(self.indent(self.sql(expression, "this")), sep="") +1761 sql = f"({sql}{self.seg(')', sep='')}" +1762 +1763 return self.prepend_ctes(expression, sql) 1764 -1765 return f"COMMIT{chain or ''}" -1766 -1767 def rollback_sql(self, expression: exp.Rollback) -> str: -1768 savepoint = expression.args.get("savepoint") -1769 savepoint = f" TO {savepoint}" if savepoint else "" -1770 return f"ROLLBACK{savepoint}" -1771 -1772 def altercolumn_sql(self, expression: exp.AlterColumn) -> str: -1773 this = self.sql(expression, "this") -1774 -1775 dtype = self.sql(expression, "dtype") -1776 if dtype: -1777 collate = self.sql(expression, "collate") -1778 collate = f" COLLATE {collate}" if collate else "" -1779 using = self.sql(expression, "using") -1780 using = f" USING {using}" if using else "" -1781 return f"ALTER COLUMN {this} TYPE {dtype}{collate}{using}" -1782 -1783 default = self.sql(expression, "default") -1784 if default: -1785 return f"ALTER COLUMN {this} SET DEFAULT {default}" +1765 def neg_sql(self, expression: exp.Neg) -> str: +1766 # This makes sure we don't convert "- - 5" to "--5", which is a comment +1767 this_sql = self.sql(expression, "this") +1768 sep = " " if this_sql[0] == "-" else "" +1769 return f"-{sep}{this_sql}" +1770 +1771 def not_sql(self, expression: exp.Not) -> str: +1772 return f"NOT {self.sql(expression, 'this')}" +1773 +1774 def alias_sql(self, expression: exp.Alias) -> str: +1775 alias = self.sql(expression, "alias") +1776 alias = f" AS {alias}" if alias else "" +1777 return f"{self.sql(expression, 'this')}{alias}" +1778 +1779 def aliases_sql(self, expression: exp.Aliases) -> str: +1780 return f"{self.sql(expression, 'this')} AS ({self.expressions(expression, flat=True)})" +1781 +1782 def attimezone_sql(self, expression: exp.AtTimeZone) -> str: +1783 this = self.sql(expression, "this") +1784 zone = self.sql(expression, "zone") +1785 return f"{this} AT TIME ZONE {zone}" 1786 -1787 if not expression.args.get("drop"): -1788 self.unsupported("Unsupported ALTER COLUMN syntax") +1787 def add_sql(self, expression: exp.Add) -> str: +1788 return self.binary(expression, "+") 1789 -1790 return f"ALTER COLUMN {this} DROP DEFAULT" -1791 -1792 def renametable_sql(self, expression: exp.RenameTable) -> str: -1793 this = self.sql(expression, "this") -1794 return f"RENAME TO {this}" -1795 -1796 def altertable_sql(self, expression: exp.AlterTable) -> str: -1797 actions = expression.args["actions"] -1798 -1799 if isinstance(actions[0], exp.ColumnDef): -1800 actions = self.expressions(expression, "actions", prefix="ADD COLUMN ") -1801 elif isinstance(actions[0], exp.Schema): -1802 actions = self.expressions(expression, "actions", prefix="ADD COLUMNS ") -1803 elif isinstance(actions[0], exp.Delete): -1804 actions = self.expressions(expression, "actions", flat=True) -1805 else: -1806 actions = self.expressions(expression, "actions") +1790 def and_sql(self, expression: exp.And) -> str: +1791 return self.connector_sql(expression, "AND") +1792 +1793 def connector_sql(self, expression: exp.Connector, op: str) -> str: +1794 if not self.pretty: +1795 return self.binary(expression, op) +1796 +1797 sqls = tuple( +1798 self.maybe_comment(self.sql(e), e, e.parent.comments) if i != 1 else self.sql(e) +1799 for i, e in enumerate(expression.flatten(unnest=False)) +1800 ) +1801 +1802 sep = "\n" if self.text_width(sqls) > self._max_text_width else " " +1803 return f"{sep}{op} ".join(sqls) +1804 +1805 def bitwiseand_sql(self, expression: exp.BitwiseAnd) -> str: +1806 return self.binary(expression, "&") 1807 -1808 exists = " IF EXISTS" if expression.args.get("exists") else "" -1809 return f"ALTER TABLE{exists} {self.sql(expression, 'this')} {actions}" +1808 def bitwiseleftshift_sql(self, expression: exp.BitwiseLeftShift) -> str: +1809 return self.binary(expression, "<<") 1810 -1811 def droppartition_sql(self, expression: exp.DropPartition) -> str: -1812 expressions = self.expressions(expression) -1813 exists = " IF EXISTS " if expression.args.get("exists") else " " -1814 return f"DROP{exists}{expressions}" -1815 -1816 def addconstraint_sql(self, expression: exp.AddConstraint) -> str: -1817 this = self.sql(expression, "this") -1818 expression_ = self.sql(expression, "expression") -1819 add_constraint = f"ADD CONSTRAINT {this}" if this else "ADD" -1820 -1821 enforced = expression.args.get("enforced") -1822 if enforced is not None: -1823 return f"{add_constraint} CHECK ({expression_}){' ENFORCED' if enforced else ''}" -1824 -1825 return f"{add_constraint} {expression_}" -1826 -1827 def distinct_sql(self, expression: exp.Distinct) -> str: -1828 this = self.expressions(expression, flat=True) -1829 this = f" {this}" if this else "" -1830 -1831 on = self.sql(expression, "on") -1832 on = f" ON {on}" if on else "" -1833 return f"DISTINCT{this}{on}" -1834 -1835 def ignorenulls_sql(self, expression: exp.IgnoreNulls) -> str: -1836 return f"{self.sql(expression, 'this')} IGNORE NULLS" -1837 -1838 def respectnulls_sql(self, expression: exp.RespectNulls) -> str: -1839 return f"{self.sql(expression, 'this')} RESPECT NULLS" -1840 -1841 def intdiv_sql(self, expression: exp.IntDiv) -> str: -1842 return self.sql( -1843 exp.Cast( -1844 this=exp.Div(this=expression.this, expression=expression.expression), -1845 to=exp.DataType(this=exp.DataType.Type.INT), -1846 ) -1847 ) -1848 -1849 def dpipe_sql(self, expression: exp.DPipe) -> str: -1850 return self.binary(expression, "||") -1851 -1852 def div_sql(self, expression: exp.Div) -> str: -1853 return self.binary(expression, "/") -1854 -1855 def overlaps_sql(self, expression: exp.Overlaps) -> str: -1856 return self.binary(expression, "OVERLAPS") +1811 def bitwisenot_sql(self, expression: exp.BitwiseNot) -> str: +1812 return f"~{self.sql(expression, 'this')}" +1813 +1814 def bitwiseor_sql(self, expression: exp.BitwiseOr) -> str: +1815 return self.binary(expression, "|") +1816 +1817 def bitwiserightshift_sql(self, expression: exp.BitwiseRightShift) -> str: +1818 return self.binary(expression, ">>") +1819 +1820 def bitwisexor_sql(self, expression: exp.BitwiseXor) -> str: +1821 return self.binary(expression, "^") +1822 +1823 def cast_sql(self, expression: exp.Cast) -> str: +1824 return f"CAST({self.sql(expression, 'this')} AS {self.sql(expression, 'to')})" +1825 +1826 def currentdate_sql(self, expression: exp.CurrentDate) -> str: +1827 zone = self.sql(expression, "this") +1828 return f"CURRENT_DATE({zone})" if zone else "CURRENT_DATE" +1829 +1830 def collate_sql(self, expression: exp.Collate) -> str: +1831 return self.binary(expression, "COLLATE") +1832 +1833 def command_sql(self, expression: exp.Command) -> str: +1834 return f"{self.sql(expression, 'this').upper()} {expression.text('expression').strip()}" +1835 +1836 def comment_sql(self, expression: exp.Comment) -> str: +1837 this = self.sql(expression, "this") +1838 kind = expression.args["kind"] +1839 exists_sql = " IF EXISTS " if expression.args.get("exists") else " " +1840 expression_sql = self.sql(expression, "expression") +1841 return f"COMMENT{exists_sql}ON {kind} {this} IS {expression_sql}" +1842 +1843 def transaction_sql(self, expression: exp.Transaction) -> str: +1844 return "BEGIN" +1845 +1846 def commit_sql(self, expression: exp.Commit) -> str: +1847 chain = expression.args.get("chain") +1848 if chain is not None: +1849 chain = " AND CHAIN" if chain else " AND NO CHAIN" +1850 +1851 return f"COMMIT{chain or ''}" +1852 +1853 def rollback_sql(self, expression: exp.Rollback) -> str: +1854 savepoint = expression.args.get("savepoint") +1855 savepoint = f" TO {savepoint}" if savepoint else "" +1856 return f"ROLLBACK{savepoint}" 1857 -1858 def distance_sql(self, expression: exp.Distance) -> str: -1859 return self.binary(expression, "<->") +1858 def altercolumn_sql(self, expression: exp.AlterColumn) -> str: +1859 this = self.sql(expression, "this") 1860 -1861 def dot_sql(self, expression: exp.Dot) -> str: -1862 return f"{self.sql(expression, 'this')}.{self.sql(expression, 'expression')}" -1863 -1864 def eq_sql(self, expression: exp.EQ) -> str: -1865 return self.binary(expression, "=") -1866 -1867 def escape_sql(self, expression: exp.Escape) -> str: -1868 return self.binary(expression, "ESCAPE") -1869 -1870 def glob_sql(self, expression: exp.Glob) -> str: -1871 return self.binary(expression, "GLOB") +1861 dtype = self.sql(expression, "dtype") +1862 if dtype: +1863 collate = self.sql(expression, "collate") +1864 collate = f" COLLATE {collate}" if collate else "" +1865 using = self.sql(expression, "using") +1866 using = f" USING {using}" if using else "" +1867 return f"ALTER COLUMN {this} TYPE {dtype}{collate}{using}" +1868 +1869 default = self.sql(expression, "default") +1870 if default: +1871 return f"ALTER COLUMN {this} SET DEFAULT {default}" 1872 -1873 def gt_sql(self, expression: exp.GT) -> str: -1874 return self.binary(expression, ">") +1873 if not expression.args.get("drop"): +1874 self.unsupported("Unsupported ALTER COLUMN syntax") 1875 -1876 def gte_sql(self, expression: exp.GTE) -> str: -1877 return self.binary(expression, ">=") -1878 -1879 def ilike_sql(self, expression: exp.ILike) -> str: -1880 return self.binary(expression, "ILIKE") +1876 return f"ALTER COLUMN {this} DROP DEFAULT" +1877 +1878 def renametable_sql(self, expression: exp.RenameTable) -> str: +1879 this = self.sql(expression, "this") +1880 return f"RENAME TO {this}" 1881 -1882 def ilikeany_sql(self, expression: exp.ILikeAny) -> str: -1883 return self.binary(expression, "ILIKE ANY") +1882 def altertable_sql(self, expression: exp.AlterTable) -> str: +1883 actions = expression.args["actions"] 1884 -1885 def is_sql(self, expression: exp.Is) -> str: -1886 return self.binary(expression, "IS") -1887 -1888 def like_sql(self, expression: exp.Like) -> str: -1889 return self.binary(expression, "LIKE") -1890 -1891 def likeany_sql(self, expression: exp.LikeAny) -> str: -1892 return self.binary(expression, "LIKE ANY") +1885 if isinstance(actions[0], exp.ColumnDef): +1886 actions = self.expressions(expression, key="actions", prefix="ADD COLUMN ") +1887 elif isinstance(actions[0], exp.Schema): +1888 actions = self.expressions(expression, key="actions", prefix="ADD COLUMNS ") +1889 elif isinstance(actions[0], exp.Delete): +1890 actions = self.expressions(expression, key="actions", flat=True) +1891 else: +1892 actions = self.expressions(expression, key="actions") 1893 -1894 def similarto_sql(self, expression: exp.SimilarTo) -> str: -1895 return self.binary(expression, "SIMILAR TO") +1894 exists = " IF EXISTS" if expression.args.get("exists") else "" +1895 return f"ALTER TABLE{exists} {self.sql(expression, 'this')} {actions}" 1896 -1897 def lt_sql(self, expression: exp.LT) -> str: -1898 return self.binary(expression, "<") -1899 -1900 def lte_sql(self, expression: exp.LTE) -> str: -1901 return self.binary(expression, "<=") -1902 -1903 def mod_sql(self, expression: exp.Mod) -> str: -1904 return self.binary(expression, "%") -1905 -1906 def mul_sql(self, expression: exp.Mul) -> str: -1907 return self.binary(expression, "*") -1908 -1909 def neq_sql(self, expression: exp.NEQ) -> str: -1910 return self.binary(expression, "<>") -1911 -1912 def nullsafeeq_sql(self, expression: exp.NullSafeEQ) -> str: -1913 return self.binary(expression, "IS NOT DISTINCT FROM") -1914 -1915 def nullsafeneq_sql(self, expression: exp.NullSafeNEQ) -> str: -1916 return self.binary(expression, "IS DISTINCT FROM") -1917 -1918 def or_sql(self, expression: exp.Or) -> str: -1919 return self.connector_sql(expression, "OR") +1897 def droppartition_sql(self, expression: exp.DropPartition) -> str: +1898 expressions = self.expressions(expression) +1899 exists = " IF EXISTS " if expression.args.get("exists") else " " +1900 return f"DROP{exists}{expressions}" +1901 +1902 def addconstraint_sql(self, expression: exp.AddConstraint) -> str: +1903 this = self.sql(expression, "this") +1904 expression_ = self.sql(expression, "expression") +1905 add_constraint = f"ADD CONSTRAINT {this}" if this else "ADD" +1906 +1907 enforced = expression.args.get("enforced") +1908 if enforced is not None: +1909 return f"{add_constraint} CHECK ({expression_}){' ENFORCED' if enforced else ''}" +1910 +1911 return f"{add_constraint} {expression_}" +1912 +1913 def distinct_sql(self, expression: exp.Distinct) -> str: +1914 this = self.expressions(expression, flat=True) +1915 this = f" {this}" if this else "" +1916 +1917 on = self.sql(expression, "on") +1918 on = f" ON {on}" if on else "" +1919 return f"DISTINCT{this}{on}" 1920 -1921 def slice_sql(self, expression: exp.Slice) -> str: -1922 return self.binary(expression, ":") +1921 def ignorenulls_sql(self, expression: exp.IgnoreNulls) -> str: +1922 return f"{self.sql(expression, 'this')} IGNORE NULLS" 1923 -1924 def sub_sql(self, expression: exp.Sub) -> str: -1925 return self.binary(expression, "-") +1924 def respectnulls_sql(self, expression: exp.RespectNulls) -> str: +1925 return f"{self.sql(expression, 'this')} RESPECT NULLS" 1926 -1927 def trycast_sql(self, expression: exp.TryCast) -> str: -1928 return f"TRY_CAST({self.sql(expression, 'this')} AS {self.sql(expression, 'to')})" -1929 -1930 def use_sql(self, expression: exp.Use) -> str: -1931 kind = self.sql(expression, "kind") -1932 kind = f" {kind}" if kind else "" -1933 this = self.sql(expression, "this") -1934 this = f" {this}" if this else "" -1935 return f"USE{kind}{this}" -1936 -1937 def binary(self, expression: exp.Binary, op: str) -> str: -1938 return f"{self.sql(expression, 'this')} {op} {self.sql(expression, 'expression')}" -1939 -1940 def function_fallback_sql(self, expression: exp.Func) -> str: -1941 args = [] -1942 for arg_value in expression.args.values(): -1943 if isinstance(arg_value, list): -1944 for value in arg_value: -1945 args.append(value) -1946 else: -1947 args.append(arg_value) -1948 -1949 return self.func(expression.sql_name(), *args) -1950 -1951 def func(self, name: str, *args: t.Optional[exp.Expression | str]) -> str: -1952 return f"{self.normalize_func(name)}({self.format_args(*args)})" -1953 -1954 def format_args(self, *args: t.Optional[str | exp.Expression]) -> str: -1955 arg_sqls = tuple(self.sql(arg) for arg in args if arg is not None) -1956 if self.pretty and self.text_width(arg_sqls) > self._max_text_width: -1957 return self.indent("\n" + f",\n".join(arg_sqls) + "\n", skip_first=True, skip_last=True) -1958 return ", ".join(arg_sqls) -1959 -1960 def text_width(self, args: t.Iterable) -> int: -1961 return sum(len(arg) for arg in args) -1962 -1963 def format_time(self, expression: exp.Expression) -> t.Optional[str]: -1964 return format_time(self.sql(expression, "format"), self.time_mapping, self.time_trie) -1965 -1966 def expressions( -1967 self, -1968 expression: exp.Expression, -1969 key: t.Optional[str] = None, -1970 flat: bool = False, -1971 indent: bool = True, -1972 sep: str = ", ", -1973 prefix: str = "", -1974 ) -> str: -1975 expressions = expression.args.get(key or "expressions") +1927 def intdiv_sql(self, expression: exp.IntDiv) -> str: +1928 return self.sql( +1929 exp.Cast( +1930 this=exp.Div(this=expression.this, expression=expression.expression), +1931 to=exp.DataType(this=exp.DataType.Type.INT), +1932 ) +1933 ) +1934 +1935 def dpipe_sql(self, expression: exp.DPipe) -> str: +1936 return self.binary(expression, "||") +1937 +1938 def div_sql(self, expression: exp.Div) -> str: +1939 return self.binary(expression, "/") +1940 +1941 def overlaps_sql(self, expression: exp.Overlaps) -> str: +1942 return self.binary(expression, "OVERLAPS") +1943 +1944 def distance_sql(self, expression: exp.Distance) -> str: +1945 return self.binary(expression, "<->") +1946 +1947 def dot_sql(self, expression: exp.Dot) -> str: +1948 return f"{self.sql(expression, 'this')}.{self.sql(expression, 'expression')}" +1949 +1950 def eq_sql(self, expression: exp.EQ) -> str: +1951 return self.binary(expression, "=") +1952 +1953 def escape_sql(self, expression: exp.Escape) -> str: +1954 return self.binary(expression, "ESCAPE") +1955 +1956 def glob_sql(self, expression: exp.Glob) -> str: +1957 return self.binary(expression, "GLOB") +1958 +1959 def gt_sql(self, expression: exp.GT) -> str: +1960 return self.binary(expression, ">") +1961 +1962 def gte_sql(self, expression: exp.GTE) -> str: +1963 return self.binary(expression, ">=") +1964 +1965 def ilike_sql(self, expression: exp.ILike) -> str: +1966 return self.binary(expression, "ILIKE") +1967 +1968 def ilikeany_sql(self, expression: exp.ILikeAny) -> str: +1969 return self.binary(expression, "ILIKE ANY") +1970 +1971 def is_sql(self, expression: exp.Is) -> str: +1972 return self.binary(expression, "IS") +1973 +1974 def like_sql(self, expression: exp.Like) -> str: +1975 return self.binary(expression, "LIKE") 1976 -1977 if not expressions: -1978 return "" +1977 def likeany_sql(self, expression: exp.LikeAny) -> str: +1978 return self.binary(expression, "LIKE ANY") 1979 -1980 if flat: -1981 return sep.join(self.sql(e) for e in expressions) +1980 def similarto_sql(self, expression: exp.SimilarTo) -> str: +1981 return self.binary(expression, "SIMILAR TO") 1982 -1983 num_sqls = len(expressions) -1984 -1985 # These are calculated once in case we have the leading_comma / pretty option set, correspondingly -1986 pad = " " * self.pad -1987 stripped_sep = sep.strip() +1983 def lt_sql(self, expression: exp.LT) -> str: +1984 return self.binary(expression, "<") +1985 +1986 def lte_sql(self, expression: exp.LTE) -> str: +1987 return self.binary(expression, "<=") 1988 -1989 result_sqls = [] -1990 for i, e in enumerate(expressions): -1991 sql = self.sql(e, comment=False) -1992 comments = self.maybe_comment("", e) if isinstance(e, exp.Expression) else "" -1993 -1994 if self.pretty: -1995 if self._leading_comma: -1996 result_sqls.append(f"{sep if i > 0 else pad}{prefix}{sql}{comments}") -1997 else: -1998 result_sqls.append( -1999 f"{prefix}{sql}{stripped_sep if i + 1 < num_sqls else ''}{comments}" -2000 ) -2001 else: -2002 result_sqls.append(f"{prefix}{sql}{comments}{sep if i + 1 < num_sqls else ''}") +1989 def mod_sql(self, expression: exp.Mod) -> str: +1990 return self.binary(expression, "%") +1991 +1992 def mul_sql(self, expression: exp.Mul) -> str: +1993 return self.binary(expression, "*") +1994 +1995 def neq_sql(self, expression: exp.NEQ) -> str: +1996 return self.binary(expression, "<>") +1997 +1998 def nullsafeeq_sql(self, expression: exp.NullSafeEQ) -> str: +1999 return self.binary(expression, "IS NOT DISTINCT FROM") +2000 +2001 def nullsafeneq_sql(self, expression: exp.NullSafeNEQ) -> str: +2002 return self.binary(expression, "IS DISTINCT FROM") 2003 -2004 result_sql = "\n".join(result_sqls) if self.pretty else "".join(result_sqls) -2005 return self.indent(result_sql, skip_first=False) if indent else result_sql +2004 def or_sql(self, expression: exp.Or) -> str: +2005 return self.connector_sql(expression, "OR") 2006 -2007 def op_expressions(self, op: str, expression: exp.Expression, flat: bool = False) -> str: -2008 flat = flat or isinstance(expression.parent, exp.Properties) -2009 expressions_sql = self.expressions(expression, flat=flat) -2010 if flat: -2011 return f"{op} {expressions_sql}" -2012 return f"{self.seg(op)}{self.sep() if expressions_sql else ''}{expressions_sql}" -2013 -2014 def naked_property(self, expression: exp.Property) -> str: -2015 property_name = exp.Properties.PROPERTY_TO_NAME.get(expression.__class__) -2016 if not property_name: -2017 self.unsupported(f"Unsupported property {expression.__class__.__name__}") -2018 return f"{property_name} {self.sql(expression, 'this')}" -2019 -2020 def set_operation(self, expression: exp.Expression, op: str) -> str: -2021 this = self.sql(expression, "this") -2022 op = self.seg(op) -2023 return self.query_modifiers( -2024 expression, f"{this}{op}{self.sep()}{self.sql(expression, 'expression')}" -2025 ) +2007 def slice_sql(self, expression: exp.Slice) -> str: +2008 return self.binary(expression, ":") +2009 +2010 def sub_sql(self, expression: exp.Sub) -> str: +2011 return self.binary(expression, "-") +2012 +2013 def trycast_sql(self, expression: exp.TryCast) -> str: +2014 return f"TRY_CAST({self.sql(expression, 'this')} AS {self.sql(expression, 'to')})" +2015 +2016 def use_sql(self, expression: exp.Use) -> str: +2017 kind = self.sql(expression, "kind") +2018 kind = f" {kind}" if kind else "" +2019 this = self.sql(expression, "this") +2020 this = f" {this}" if this else "" +2021 return f"USE{kind}{this}" +2022 +2023 def binary(self, expression: exp.Binary, op: str) -> str: +2024 op = self.maybe_comment(op, comments=expression.comments) +2025 return f"{self.sql(expression, 'this')} {op} {self.sql(expression, 'expression')}" 2026 -2027 def tag_sql(self, expression: exp.Tag) -> str: -2028 return f"{expression.args.get('prefix')}{self.sql(expression.this)}{expression.args.get('postfix')}" -2029 -2030 def token_sql(self, token_type: TokenType) -> str: -2031 return self.TOKEN_MAPPING.get(token_type, token_type.name) -2032 -2033 def userdefinedfunction_sql(self, expression: exp.UserDefinedFunction) -> str: -2034 this = self.sql(expression, "this") -2035 expressions = self.no_identify(self.expressions, expression) -2036 expressions = ( -2037 self.wrap(expressions) if expression.args.get("wrapped") else f" {expressions}" -2038 ) -2039 return f"{this}{expressions}" +2027 def function_fallback_sql(self, expression: exp.Func) -> str: +2028 args = [] +2029 for arg_value in expression.args.values(): +2030 if isinstance(arg_value, list): +2031 for value in arg_value: +2032 args.append(value) +2033 else: +2034 args.append(arg_value) +2035 +2036 return self.func(expression.sql_name(), *args) +2037 +2038 def func(self, name: str, *args: t.Optional[exp.Expression | str]) -> str: +2039 return f"{self.normalize_func(name)}({self.format_args(*args)})" 2040 -2041 def joinhint_sql(self, expression: exp.JoinHint) -> str: -2042 this = self.sql(expression, "this") -2043 expressions = self.expressions(expression, flat=True) -2044 return f"{this}({expressions})" -2045 -2046 def kwarg_sql(self, expression: exp.Kwarg) -> str: -2047 return self.binary(expression, "=>") -2048 -2049 def when_sql(self, expression: exp.When) -> str: -2050 matched = "MATCHED" if expression.args["matched"] else "NOT MATCHED" -2051 source = " BY SOURCE" if self.MATCHED_BY_SOURCE and expression.args.get("source") else "" -2052 condition = self.sql(expression, "condition") -2053 condition = f" AND {condition}" if condition else "" -2054 -2055 then_expression = expression.args.get("then") -2056 if isinstance(then_expression, exp.Insert): -2057 then = f"INSERT {self.sql(then_expression, 'this')}" -2058 if "expression" in then_expression.args: -2059 then += f" VALUES {self.sql(then_expression, 'expression')}" -2060 elif isinstance(then_expression, exp.Update): -2061 if isinstance(then_expression.args.get("expressions"), exp.Star): -2062 then = f"UPDATE {self.sql(then_expression, 'expressions')}" -2063 else: -2064 then = f"UPDATE SET {self.expressions(then_expression, flat=True)}" -2065 else: -2066 then = self.sql(then_expression) -2067 return f"WHEN {matched}{source}{condition} THEN {then}" -2068 -2069 def merge_sql(self, expression: exp.Merge) -> str: -2070 this = self.sql(expression, "this") -2071 using = f"USING {self.sql(expression, 'using')}" -2072 on = f"ON {self.sql(expression, 'on')}" -2073 return f"MERGE INTO {this} {using} {on} {self.expressions(expression, sep=' ')}" -2074 -2075 def tochar_sql(self, expression: exp.ToChar) -> str: -2076 if expression.args.get("format"): -2077 self.unsupported("Format argument unsupported for TO_CHAR/TO_VARCHAR function") -2078 -2079 return self.sql(exp.cast(expression.this, "text")) +2041 def format_args(self, *args: t.Optional[str | exp.Expression]) -> str: +2042 arg_sqls = tuple(self.sql(arg) for arg in args if arg is not None) +2043 if self.pretty and self.text_width(arg_sqls) > self._max_text_width: +2044 return self.indent("\n" + f",\n".join(arg_sqls) + "\n", skip_first=True, skip_last=True) +2045 return ", ".join(arg_sqls) +2046 +2047 def text_width(self, args: t.Iterable) -> int: +2048 return sum(len(arg) for arg in args) +2049 +2050 def format_time(self, expression: exp.Expression) -> t.Optional[str]: +2051 return format_time(self.sql(expression, "format"), self.time_mapping, self.time_trie) +2052 +2053 def expressions( +2054 self, +2055 expression: t.Optional[exp.Expression] = None, +2056 key: t.Optional[str] = None, +2057 sqls: t.Optional[t.List[str]] = None, +2058 flat: bool = False, +2059 indent: bool = True, +2060 sep: str = ", ", +2061 prefix: str = "", +2062 ) -> str: +2063 expressions = expression.args.get(key or "expressions") if expression else sqls +2064 +2065 if not expressions: +2066 return "" +2067 +2068 if flat: +2069 return sep.join(self.sql(e) for e in expressions) +2070 +2071 num_sqls = len(expressions) +2072 +2073 # These are calculated once in case we have the leading_comma / pretty option set, correspondingly +2074 pad = " " * self.pad +2075 stripped_sep = sep.strip() +2076 +2077 result_sqls = [] +2078 for i, e in enumerate(expressions): +2079 sql = self.sql(e, comment=False) +2080 comments = self.maybe_comment("", e) if isinstance(e, exp.Expression) else "" +2081 +2082 if self.pretty: +2083 if self._leading_comma: +2084 result_sqls.append(f"{sep if i > 0 else pad}{prefix}{sql}{comments}") +2085 else: +2086 result_sqls.append( +2087 f"{prefix}{sql}{stripped_sep if i + 1 < num_sqls else ''}{comments}" +2088 ) +2089 else: +2090 result_sqls.append(f"{prefix}{sql}{comments}{sep if i + 1 < num_sqls else ''}") +2091 +2092 result_sql = "\n".join(result_sqls) if self.pretty else "".join(result_sqls) +2093 return self.indent(result_sql, skip_first=False) if indent else result_sql +2094 +2095 def op_expressions(self, op: str, expression: exp.Expression, flat: bool = False) -> str: +2096 flat = flat or isinstance(expression.parent, exp.Properties) +2097 expressions_sql = self.expressions(expression, flat=flat) +2098 if flat: +2099 return f"{op} {expressions_sql}" +2100 return f"{self.seg(op)}{self.sep() if expressions_sql else ''}{expressions_sql}" +2101 +2102 def naked_property(self, expression: exp.Property) -> str: +2103 property_name = exp.Properties.PROPERTY_TO_NAME.get(expression.__class__) +2104 if not property_name: +2105 self.unsupported(f"Unsupported property {expression.__class__.__name__}") +2106 return f"{property_name} {self.sql(expression, 'this')}" +2107 +2108 def set_operation(self, expression: exp.Expression, op: str) -> str: +2109 this = self.sql(expression, "this") +2110 op = self.seg(op) +2111 return self.query_modifiers( +2112 expression, f"{this}{op}{self.sep()}{self.sql(expression, 'expression')}" +2113 ) +2114 +2115 def tag_sql(self, expression: exp.Tag) -> str: +2116 return f"{expression.args.get('prefix')}{self.sql(expression.this)}{expression.args.get('postfix')}" +2117 +2118 def token_sql(self, token_type: TokenType) -> str: +2119 return self.TOKEN_MAPPING.get(token_type, token_type.name) +2120 +2121 def userdefinedfunction_sql(self, expression: exp.UserDefinedFunction) -> str: +2122 this = self.sql(expression, "this") +2123 expressions = self.no_identify(self.expressions, expression) +2124 expressions = ( +2125 self.wrap(expressions) if expression.args.get("wrapped") else f" {expressions}" +2126 ) +2127 return f"{this}{expressions}" +2128 +2129 def joinhint_sql(self, expression: exp.JoinHint) -> str: +2130 this = self.sql(expression, "this") +2131 expressions = self.expressions(expression, flat=True) +2132 return f"{this}({expressions})" +2133 +2134 def kwarg_sql(self, expression: exp.Kwarg) -> str: +2135 return self.binary(expression, "=>") +2136 +2137 def when_sql(self, expression: exp.When) -> str: +2138 matched = "MATCHED" if expression.args["matched"] else "NOT MATCHED" +2139 source = " BY SOURCE" if self.MATCHED_BY_SOURCE and expression.args.get("source") else "" +2140 condition = self.sql(expression, "condition") +2141 condition = f" AND {condition}" if condition else "" +2142 +2143 then_expression = expression.args.get("then") +2144 if isinstance(then_expression, exp.Insert): +2145 then = f"INSERT {self.sql(then_expression, 'this')}" +2146 if "expression" in then_expression.args: +2147 then += f" VALUES {self.sql(then_expression, 'expression')}" +2148 elif isinstance(then_expression, exp.Update): +2149 if isinstance(then_expression.args.get("expressions"), exp.Star): +2150 then = f"UPDATE {self.sql(then_expression, 'expressions')}" +2151 else: +2152 then = f"UPDATE SET {self.expressions(then_expression, flat=True)}" +2153 else: +2154 then = self.sql(then_expression) +2155 return f"WHEN {matched}{source}{condition} THEN {then}" +2156 +2157 def merge_sql(self, expression: exp.Merge) -> str: +2158 this = self.sql(expression, "this") +2159 using = f"USING {self.sql(expression, 'using')}" +2160 on = f"ON {self.sql(expression, 'on')}" +2161 return f"MERGE INTO {this} {using} {on} {self.expressions(expression, sep=' ')}" +2162 +2163 def tochar_sql(self, expression: exp.ToChar) -> str: +2164 if expression.args.get("format"): +2165 self.unsupported("Format argument unsupported for TO_CHAR/TO_VARCHAR function") +2166 +2167 return self.sql(exp.cast(expression.this, "text"))
    @@ -2880,2007 +2977,2095 @@ 77 exp.SqlSecurityProperty: lambda self, e: f"SQL SECURITY {'DEFINER' if e.args.get('definer') else 'INVOKER'}", 78 exp.TemporaryProperty: lambda self, e: f"{'GLOBAL ' if e.args.get('global_') else ''}TEMPORARY", 79 exp.TransientProperty: lambda self, e: "TRANSIENT", - 80 exp.VolatilityProperty: lambda self, e: e.name, - 81 exp.WithJournalTableProperty: lambda self, e: f"WITH JOURNAL TABLE={self.sql(e, 'this')}", - 82 exp.CaseSpecificColumnConstraint: lambda self, e: f"{'NOT ' if e.args.get('not_') else ''}CASESPECIFIC", - 83 exp.CharacterSetColumnConstraint: lambda self, e: f"CHARACTER SET {self.sql(e, 'this')}", - 84 exp.DateFormatColumnConstraint: lambda self, e: f"FORMAT {self.sql(e, 'this')}", - 85 exp.UppercaseColumnConstraint: lambda self, e: f"UPPERCASE", - 86 exp.TitleColumnConstraint: lambda self, e: f"TITLE {self.sql(e, 'this')}", - 87 exp.PathColumnConstraint: lambda self, e: f"PATH {self.sql(e, 'this')}", - 88 exp.CheckColumnConstraint: lambda self, e: f"CHECK ({self.sql(e, 'this')})", - 89 exp.CommentColumnConstraint: lambda self, e: f"COMMENT {self.sql(e, 'this')}", - 90 exp.CollateColumnConstraint: lambda self, e: f"COLLATE {self.sql(e, 'this')}", - 91 exp.EncodeColumnConstraint: lambda self, e: f"ENCODE {self.sql(e, 'this')}", - 92 exp.DefaultColumnConstraint: lambda self, e: f"DEFAULT {self.sql(e, 'this')}", - 93 exp.InlineLengthColumnConstraint: lambda self, e: f"INLINE LENGTH {self.sql(e, 'this')}", - 94 } - 95 - 96 # Whether or not null ordering is supported in order by - 97 NULL_ORDERING_SUPPORTED = True - 98 - 99 # Whether or not locking reads (i.e. SELECT ... FOR UPDATE/SHARE) are supported - 100 LOCKING_READS_SUPPORTED = False - 101 - 102 # Always do union distinct or union all - 103 EXPLICIT_UNION = False - 104 - 105 # Wrap derived values in parens, usually standard but spark doesn't support it - 106 WRAP_DERIVED_VALUES = True - 107 - 108 # Whether or not create function uses an AS before the RETURN - 109 CREATE_FUNCTION_RETURN_AS = True - 110 - 111 # Whether or not MERGE ... WHEN MATCHED BY SOURCE is allowed - 112 MATCHED_BY_SOURCE = True - 113 - 114 # Whether or not limit and fetch are supported - 115 # "ALL", "LIMIT", "FETCH" - 116 LIMIT_FETCH = "ALL" - 117 - 118 TYPE_MAPPING = { - 119 exp.DataType.Type.NCHAR: "CHAR", - 120 exp.DataType.Type.NVARCHAR: "VARCHAR", - 121 exp.DataType.Type.MEDIUMTEXT: "TEXT", - 122 exp.DataType.Type.LONGTEXT: "TEXT", - 123 exp.DataType.Type.MEDIUMBLOB: "BLOB", - 124 exp.DataType.Type.LONGBLOB: "BLOB", - 125 exp.DataType.Type.INET: "INET", - 126 } + 80 exp.StabilityProperty: lambda self, e: e.name, + 81 exp.VolatileProperty: lambda self, e: "VOLATILE", + 82 exp.WithJournalTableProperty: lambda self, e: f"WITH JOURNAL TABLE={self.sql(e, 'this')}", + 83 exp.CaseSpecificColumnConstraint: lambda self, e: f"{'NOT ' if e.args.get('not_') else ''}CASESPECIFIC", + 84 exp.CharacterSetColumnConstraint: lambda self, e: f"CHARACTER SET {self.sql(e, 'this')}", + 85 exp.DateFormatColumnConstraint: lambda self, e: f"FORMAT {self.sql(e, 'this')}", + 86 exp.OnUpdateColumnConstraint: lambda self, e: f"ON UPDATE {self.sql(e, 'this')}", + 87 exp.UppercaseColumnConstraint: lambda self, e: f"UPPERCASE", + 88 exp.TitleColumnConstraint: lambda self, e: f"TITLE {self.sql(e, 'this')}", + 89 exp.PathColumnConstraint: lambda self, e: f"PATH {self.sql(e, 'this')}", + 90 exp.CheckColumnConstraint: lambda self, e: f"CHECK ({self.sql(e, 'this')})", + 91 exp.CommentColumnConstraint: lambda self, e: f"COMMENT {self.sql(e, 'this')}", + 92 exp.CollateColumnConstraint: lambda self, e: f"COLLATE {self.sql(e, 'this')}", + 93 exp.EncodeColumnConstraint: lambda self, e: f"ENCODE {self.sql(e, 'this')}", + 94 exp.DefaultColumnConstraint: lambda self, e: f"DEFAULT {self.sql(e, 'this')}", + 95 exp.InlineLengthColumnConstraint: lambda self, e: f"INLINE LENGTH {self.sql(e, 'this')}", + 96 } + 97 + 98 # Whether or not null ordering is supported in order by + 99 NULL_ORDERING_SUPPORTED = True + 100 + 101 # Whether or not locking reads (i.e. SELECT ... FOR UPDATE/SHARE) are supported + 102 LOCKING_READS_SUPPORTED = False + 103 + 104 # Always do union distinct or union all + 105 EXPLICIT_UNION = False + 106 + 107 # Wrap derived values in parens, usually standard but spark doesn't support it + 108 WRAP_DERIVED_VALUES = True + 109 + 110 # Whether or not create function uses an AS before the RETURN + 111 CREATE_FUNCTION_RETURN_AS = True + 112 + 113 # Whether or not MERGE ... WHEN MATCHED BY SOURCE is allowed + 114 MATCHED_BY_SOURCE = True + 115 + 116 # Whether or not the INTERVAL expression works only with values like '1 day' + 117 SINGLE_STRING_INTERVAL = False + 118 + 119 # Whether or not the plural form of date parts like day (i.e. "days") is supported in INTERVALs + 120 INTERVAL_ALLOWS_PLURAL_FORM = True + 121 + 122 # Whether or not the TABLESAMPLE clause supports a method name, like BERNOULLI + 123 TABLESAMPLE_WITH_METHOD = True + 124 + 125 # Whether or not to treat the number in TABLESAMPLE (50) as a percentage + 126 TABLESAMPLE_SIZE_IS_PERCENT = False 127 - 128 STAR_MAPPING = { - 129 "except": "EXCEPT", - 130 "replace": "REPLACE", - 131 } - 132 - 133 TOKEN_MAPPING: t.Dict[TokenType, str] = {} - 134 - 135 STRUCT_DELIMITER = ("<", ">") - 136 - 137 PARAMETER_TOKEN = "@" - 138 - 139 PROPERTIES_LOCATION = { - 140 exp.AfterJournalProperty: exp.Properties.Location.POST_NAME, - 141 exp.AlgorithmProperty: exp.Properties.Location.POST_CREATE, - 142 exp.AutoIncrementProperty: exp.Properties.Location.POST_SCHEMA, - 143 exp.BlockCompressionProperty: exp.Properties.Location.POST_NAME, - 144 exp.CharacterSetProperty: exp.Properties.Location.POST_SCHEMA, - 145 exp.ChecksumProperty: exp.Properties.Location.POST_NAME, - 146 exp.CollateProperty: exp.Properties.Location.POST_SCHEMA, - 147 exp.Cluster: exp.Properties.Location.POST_SCHEMA, - 148 exp.DataBlocksizeProperty: exp.Properties.Location.POST_NAME, - 149 exp.DefinerProperty: exp.Properties.Location.POST_CREATE, - 150 exp.DistKeyProperty: exp.Properties.Location.POST_SCHEMA, - 151 exp.DistStyleProperty: exp.Properties.Location.POST_SCHEMA, - 152 exp.EngineProperty: exp.Properties.Location.POST_SCHEMA, - 153 exp.ExecuteAsProperty: exp.Properties.Location.POST_SCHEMA, - 154 exp.ExternalProperty: exp.Properties.Location.POST_CREATE, - 155 exp.FallbackProperty: exp.Properties.Location.POST_NAME, - 156 exp.FileFormatProperty: exp.Properties.Location.POST_WITH, - 157 exp.FreespaceProperty: exp.Properties.Location.POST_NAME, - 158 exp.IsolatedLoadingProperty: exp.Properties.Location.POST_NAME, - 159 exp.JournalProperty: exp.Properties.Location.POST_NAME, - 160 exp.LanguageProperty: exp.Properties.Location.POST_SCHEMA, - 161 exp.LikeProperty: exp.Properties.Location.POST_SCHEMA, - 162 exp.LocationProperty: exp.Properties.Location.POST_SCHEMA, - 163 exp.LockingProperty: exp.Properties.Location.POST_ALIAS, - 164 exp.LogProperty: exp.Properties.Location.POST_NAME, - 165 exp.MaterializedProperty: exp.Properties.Location.POST_CREATE, - 166 exp.MergeBlockRatioProperty: exp.Properties.Location.POST_NAME, - 167 exp.NoPrimaryIndexProperty: exp.Properties.Location.POST_EXPRESSION, - 168 exp.OnCommitProperty: exp.Properties.Location.POST_EXPRESSION, - 169 exp.PartitionedByProperty: exp.Properties.Location.POST_WITH, - 170 exp.Property: exp.Properties.Location.POST_WITH, - 171 exp.ReturnsProperty: exp.Properties.Location.POST_SCHEMA, - 172 exp.RowFormatDelimitedProperty: exp.Properties.Location.POST_SCHEMA, - 173 exp.RowFormatSerdeProperty: exp.Properties.Location.POST_SCHEMA, - 174 exp.SchemaCommentProperty: exp.Properties.Location.POST_SCHEMA, - 175 exp.SerdeProperties: exp.Properties.Location.POST_SCHEMA, - 176 exp.SetProperty: exp.Properties.Location.POST_CREATE, - 177 exp.SortKeyProperty: exp.Properties.Location.POST_SCHEMA, - 178 exp.SqlSecurityProperty: exp.Properties.Location.POST_CREATE, - 179 exp.TableFormatProperty: exp.Properties.Location.POST_WITH, - 180 exp.TemporaryProperty: exp.Properties.Location.POST_CREATE, - 181 exp.TransientProperty: exp.Properties.Location.POST_CREATE, - 182 exp.VolatilityProperty: exp.Properties.Location.POST_SCHEMA, - 183 exp.WithDataProperty: exp.Properties.Location.POST_EXPRESSION, - 184 exp.WithJournalTableProperty: exp.Properties.Location.POST_NAME, - 185 } - 186 - 187 WITH_SEPARATED_COMMENTS = (exp.Select, exp.From, exp.Where, exp.Binary) - 188 SENTINEL_LINE_BREAK = "__SQLGLOT__LB__" - 189 - 190 __slots__ = ( - 191 "time_mapping", - 192 "time_trie", - 193 "pretty", - 194 "quote_start", - 195 "quote_end", - 196 "identifier_start", - 197 "identifier_end", - 198 "identify", - 199 "normalize", - 200 "string_escape", - 201 "identifier_escape", - 202 "pad", - 203 "index_offset", - 204 "unnest_column_only", - 205 "alias_post_tablesample", - 206 "normalize_functions", - 207 "unsupported_level", - 208 "unsupported_messages", - 209 "null_ordering", - 210 "max_unsupported", - 211 "_indent", - 212 "_escaped_quote_end", - 213 "_escaped_identifier_end", - 214 "_leading_comma", - 215 "_max_text_width", - 216 "_comments", - 217 "_cache", - 218 ) - 219 - 220 def __init__( - 221 self, - 222 time_mapping=None, - 223 time_trie=None, - 224 pretty=None, - 225 quote_start=None, - 226 quote_end=None, - 227 identifier_start=None, - 228 identifier_end=None, - 229 identify=False, - 230 normalize=False, - 231 string_escape=None, - 232 identifier_escape=None, - 233 pad=2, - 234 indent=2, - 235 index_offset=0, - 236 unnest_column_only=False, - 237 alias_post_tablesample=False, - 238 normalize_functions="upper", - 239 unsupported_level=ErrorLevel.WARN, - 240 null_ordering=None, - 241 max_unsupported=3, - 242 leading_comma=False, - 243 max_text_width=80, - 244 comments=True, - 245 ): - 246 import sqlglot - 247 - 248 self.time_mapping = time_mapping or {} - 249 self.time_trie = time_trie - 250 self.pretty = pretty if pretty is not None else sqlglot.pretty - 251 self.quote_start = quote_start or "'" - 252 self.quote_end = quote_end or "'" - 253 self.identifier_start = identifier_start or '"' - 254 self.identifier_end = identifier_end or '"' - 255 self.identify = identify - 256 self.normalize = normalize - 257 self.string_escape = string_escape or "'" - 258 self.identifier_escape = identifier_escape or '"' - 259 self.pad = pad - 260 self.index_offset = index_offset - 261 self.unnest_column_only = unnest_column_only - 262 self.alias_post_tablesample = alias_post_tablesample - 263 self.normalize_functions = normalize_functions - 264 self.unsupported_level = unsupported_level - 265 self.unsupported_messages = [] - 266 self.max_unsupported = max_unsupported - 267 self.null_ordering = null_ordering - 268 self._indent = indent - 269 self._escaped_quote_end = self.string_escape + self.quote_end - 270 self._escaped_identifier_end = self.identifier_escape + self.identifier_end - 271 self._leading_comma = leading_comma - 272 self._max_text_width = max_text_width - 273 self._comments = comments - 274 self._cache = None - 275 - 276 def generate( - 277 self, - 278 expression: t.Optional[exp.Expression], - 279 cache: t.Optional[t.Dict[int, str]] = None, - 280 ) -> str: - 281 """ - 282 Generates a SQL string by interpreting the given syntax tree. - 283 - 284 Args - 285 expression: the syntax tree. - 286 cache: an optional sql string cache. this leverages the hash of an expression which is slow, so only use this if you set _hash on each node. - 287 - 288 Returns - 289 the SQL string. - 290 """ - 291 if cache is not None: - 292 self._cache = cache - 293 self.unsupported_messages = [] - 294 sql = self.sql(expression).strip() - 295 self._cache = None - 296 - 297 if self.unsupported_level == ErrorLevel.IGNORE: - 298 return sql - 299 - 300 if self.unsupported_level == ErrorLevel.WARN: - 301 for msg in self.unsupported_messages: - 302 logger.warning(msg) - 303 elif self.unsupported_level == ErrorLevel.RAISE and self.unsupported_messages: - 304 raise UnsupportedError(concat_messages(self.unsupported_messages, self.max_unsupported)) - 305 - 306 if self.pretty: - 307 sql = sql.replace(self.SENTINEL_LINE_BREAK, "\n") - 308 return sql - 309 - 310 def unsupported(self, message: str) -> None: - 311 if self.unsupported_level == ErrorLevel.IMMEDIATE: - 312 raise UnsupportedError(message) - 313 self.unsupported_messages.append(message) - 314 - 315 def sep(self, sep: str = " ") -> str: - 316 return f"{sep.strip()}\n" if self.pretty else sep - 317 - 318 def seg(self, sql: str, sep: str = " ") -> str: - 319 return f"{self.sep(sep)}{sql}" + 128 # Whether or not limit and fetch are supported (possible values: "ALL", "LIMIT", "FETCH") + 129 LIMIT_FETCH = "ALL" + 130 + 131 TYPE_MAPPING = { + 132 exp.DataType.Type.NCHAR: "CHAR", + 133 exp.DataType.Type.NVARCHAR: "VARCHAR", + 134 exp.DataType.Type.MEDIUMTEXT: "TEXT", + 135 exp.DataType.Type.LONGTEXT: "TEXT", + 136 exp.DataType.Type.MEDIUMBLOB: "BLOB", + 137 exp.DataType.Type.LONGBLOB: "BLOB", + 138 exp.DataType.Type.INET: "INET", + 139 } + 140 + 141 STAR_MAPPING = { + 142 "except": "EXCEPT", + 143 "replace": "REPLACE", + 144 } + 145 + 146 TIME_PART_SINGULARS = { + 147 "microseconds": "microsecond", + 148 "seconds": "second", + 149 "minutes": "minute", + 150 "hours": "hour", + 151 "days": "day", + 152 "weeks": "week", + 153 "months": "month", + 154 "quarters": "quarter", + 155 "years": "year", + 156 } + 157 + 158 TOKEN_MAPPING: t.Dict[TokenType, str] = {} + 159 + 160 STRUCT_DELIMITER = ("<", ">") + 161 + 162 PARAMETER_TOKEN = "@" + 163 + 164 PROPERTIES_LOCATION = { + 165 exp.AfterJournalProperty: exp.Properties.Location.POST_NAME, + 166 exp.AlgorithmProperty: exp.Properties.Location.POST_CREATE, + 167 exp.AutoIncrementProperty: exp.Properties.Location.POST_SCHEMA, + 168 exp.BlockCompressionProperty: exp.Properties.Location.POST_NAME, + 169 exp.CharacterSetProperty: exp.Properties.Location.POST_SCHEMA, + 170 exp.ChecksumProperty: exp.Properties.Location.POST_NAME, + 171 exp.CollateProperty: exp.Properties.Location.POST_SCHEMA, + 172 exp.Cluster: exp.Properties.Location.POST_SCHEMA, + 173 exp.DataBlocksizeProperty: exp.Properties.Location.POST_NAME, + 174 exp.DefinerProperty: exp.Properties.Location.POST_CREATE, + 175 exp.DistKeyProperty: exp.Properties.Location.POST_SCHEMA, + 176 exp.DistStyleProperty: exp.Properties.Location.POST_SCHEMA, + 177 exp.EngineProperty: exp.Properties.Location.POST_SCHEMA, + 178 exp.ExecuteAsProperty: exp.Properties.Location.POST_SCHEMA, + 179 exp.ExternalProperty: exp.Properties.Location.POST_CREATE, + 180 exp.FallbackProperty: exp.Properties.Location.POST_NAME, + 181 exp.FileFormatProperty: exp.Properties.Location.POST_WITH, + 182 exp.FreespaceProperty: exp.Properties.Location.POST_NAME, + 183 exp.IsolatedLoadingProperty: exp.Properties.Location.POST_NAME, + 184 exp.JournalProperty: exp.Properties.Location.POST_NAME, + 185 exp.LanguageProperty: exp.Properties.Location.POST_SCHEMA, + 186 exp.LikeProperty: exp.Properties.Location.POST_SCHEMA, + 187 exp.LocationProperty: exp.Properties.Location.POST_SCHEMA, + 188 exp.LockingProperty: exp.Properties.Location.POST_ALIAS, + 189 exp.LogProperty: exp.Properties.Location.POST_NAME, + 190 exp.MaterializedProperty: exp.Properties.Location.POST_CREATE, + 191 exp.MergeBlockRatioProperty: exp.Properties.Location.POST_NAME, + 192 exp.NoPrimaryIndexProperty: exp.Properties.Location.POST_EXPRESSION, + 193 exp.OnCommitProperty: exp.Properties.Location.POST_EXPRESSION, + 194 exp.PartitionedByProperty: exp.Properties.Location.POST_WITH, + 195 exp.Property: exp.Properties.Location.POST_WITH, + 196 exp.ReturnsProperty: exp.Properties.Location.POST_SCHEMA, + 197 exp.RowFormatProperty: exp.Properties.Location.POST_SCHEMA, + 198 exp.RowFormatDelimitedProperty: exp.Properties.Location.POST_SCHEMA, + 199 exp.RowFormatSerdeProperty: exp.Properties.Location.POST_SCHEMA, + 200 exp.SchemaCommentProperty: exp.Properties.Location.POST_SCHEMA, + 201 exp.SerdeProperties: exp.Properties.Location.POST_SCHEMA, + 202 exp.SetProperty: exp.Properties.Location.POST_CREATE, + 203 exp.SortKeyProperty: exp.Properties.Location.POST_SCHEMA, + 204 exp.SqlSecurityProperty: exp.Properties.Location.POST_CREATE, + 205 exp.StabilityProperty: exp.Properties.Location.POST_SCHEMA, + 206 exp.TableFormatProperty: exp.Properties.Location.POST_WITH, + 207 exp.TemporaryProperty: exp.Properties.Location.POST_CREATE, + 208 exp.TransientProperty: exp.Properties.Location.POST_CREATE, + 209 exp.VolatileProperty: exp.Properties.Location.POST_CREATE, + 210 exp.WithDataProperty: exp.Properties.Location.POST_EXPRESSION, + 211 exp.WithJournalTableProperty: exp.Properties.Location.POST_NAME, + 212 } + 213 + 214 JOIN_HINTS = True + 215 TABLE_HINTS = True + 216 + 217 RESERVED_KEYWORDS: t.Set[str] = set() + 218 WITH_SEPARATED_COMMENTS = (exp.Select, exp.From, exp.Where, exp.With) + 219 UNWRAPPED_INTERVAL_VALUES = (exp.Literal, exp.Paren, exp.Column) + 220 + 221 SENTINEL_LINE_BREAK = "__SQLGLOT__LB__" + 222 + 223 __slots__ = ( + 224 "time_mapping", + 225 "time_trie", + 226 "pretty", + 227 "quote_start", + 228 "quote_end", + 229 "identifier_start", + 230 "identifier_end", + 231 "identify", + 232 "normalize", + 233 "string_escape", + 234 "identifier_escape", + 235 "pad", + 236 "index_offset", + 237 "unnest_column_only", + 238 "alias_post_tablesample", + 239 "normalize_functions", + 240 "unsupported_level", + 241 "unsupported_messages", + 242 "null_ordering", + 243 "max_unsupported", + 244 "_indent", + 245 "_escaped_quote_end", + 246 "_escaped_identifier_end", + 247 "_leading_comma", + 248 "_max_text_width", + 249 "_comments", + 250 "_cache", + 251 ) + 252 + 253 def __init__( + 254 self, + 255 time_mapping=None, + 256 time_trie=None, + 257 pretty=None, + 258 quote_start=None, + 259 quote_end=None, + 260 identifier_start=None, + 261 identifier_end=None, + 262 identify=False, + 263 normalize=False, + 264 string_escape=None, + 265 identifier_escape=None, + 266 pad=2, + 267 indent=2, + 268 index_offset=0, + 269 unnest_column_only=False, + 270 alias_post_tablesample=False, + 271 normalize_functions="upper", + 272 unsupported_level=ErrorLevel.WARN, + 273 null_ordering=None, + 274 max_unsupported=3, + 275 leading_comma=False, + 276 max_text_width=80, + 277 comments=True, + 278 ): + 279 import sqlglot + 280 + 281 self.time_mapping = time_mapping or {} + 282 self.time_trie = time_trie + 283 self.pretty = pretty if pretty is not None else sqlglot.pretty + 284 self.quote_start = quote_start or "'" + 285 self.quote_end = quote_end or "'" + 286 self.identifier_start = identifier_start or '"' + 287 self.identifier_end = identifier_end or '"' + 288 self.identify = identify + 289 self.normalize = normalize + 290 self.string_escape = string_escape or "'" + 291 self.identifier_escape = identifier_escape or '"' + 292 self.pad = pad + 293 self.index_offset = index_offset + 294 self.unnest_column_only = unnest_column_only + 295 self.alias_post_tablesample = alias_post_tablesample + 296 self.normalize_functions = normalize_functions + 297 self.unsupported_level = unsupported_level + 298 self.unsupported_messages = [] + 299 self.max_unsupported = max_unsupported + 300 self.null_ordering = null_ordering + 301 self._indent = indent + 302 self._escaped_quote_end = self.string_escape + self.quote_end + 303 self._escaped_identifier_end = self.identifier_escape + self.identifier_end + 304 self._leading_comma = leading_comma + 305 self._max_text_width = max_text_width + 306 self._comments = comments + 307 self._cache = None + 308 + 309 def generate( + 310 self, + 311 expression: t.Optional[exp.Expression], + 312 cache: t.Optional[t.Dict[int, str]] = None, + 313 ) -> str: + 314 """ + 315 Generates a SQL string by interpreting the given syntax tree. + 316 + 317 Args + 318 expression: the syntax tree. + 319 cache: an optional sql string cache. this leverages the hash of an expression which is slow, so only use this if you set _hash on each node. 320 - 321 def pad_comment(self, comment: str) -> str: - 322 comment = " " + comment if comment[0].strip() else comment - 323 comment = comment + " " if comment[-1].strip() else comment - 324 return comment - 325 - 326 def maybe_comment(self, sql: str, expression: exp.Expression) -> str: - 327 comments = expression.comments if self._comments else None - 328 - 329 if not comments: - 330 return sql - 331 - 332 sep = "\n" if self.pretty else " " - 333 comments_sql = sep.join( - 334 f"/*{self.pad_comment(comment)}*/" for comment in comments if comment - 335 ) - 336 - 337 if not comments_sql: - 338 return sql - 339 - 340 if isinstance(expression, self.WITH_SEPARATED_COMMENTS): - 341 return f"{comments_sql}{self.sep()}{sql}" + 321 Returns + 322 the SQL string. + 323 """ + 324 if cache is not None: + 325 self._cache = cache + 326 self.unsupported_messages = [] + 327 sql = self.sql(expression).strip() + 328 self._cache = None + 329 + 330 if self.unsupported_level == ErrorLevel.IGNORE: + 331 return sql + 332 + 333 if self.unsupported_level == ErrorLevel.WARN: + 334 for msg in self.unsupported_messages: + 335 logger.warning(msg) + 336 elif self.unsupported_level == ErrorLevel.RAISE and self.unsupported_messages: + 337 raise UnsupportedError(concat_messages(self.unsupported_messages, self.max_unsupported)) + 338 + 339 if self.pretty: + 340 sql = sql.replace(self.SENTINEL_LINE_BREAK, "\n") + 341 return sql 342 - 343 return f"{sql} {comments_sql}" - 344 - 345 def wrap(self, expression: exp.Expression | str) -> str: - 346 this_sql = self.indent( - 347 self.sql(expression) - 348 if isinstance(expression, (exp.Select, exp.Union)) - 349 else self.sql(expression, "this"), - 350 level=1, - 351 pad=0, - 352 ) - 353 return f"({self.sep('')}{this_sql}{self.seg(')', sep='')}" - 354 - 355 def no_identify(self, func: t.Callable[..., str], *args, **kwargs) -> str: - 356 original = self.identify - 357 self.identify = False - 358 result = func(*args, **kwargs) - 359 self.identify = original - 360 return result - 361 - 362 def normalize_func(self, name: str) -> str: - 363 if self.normalize_functions == "upper": - 364 return name.upper() - 365 if self.normalize_functions == "lower": - 366 return name.lower() - 367 return name - 368 - 369 def indent( - 370 self, - 371 sql: str, - 372 level: int = 0, - 373 pad: t.Optional[int] = None, - 374 skip_first: bool = False, - 375 skip_last: bool = False, - 376 ) -> str: - 377 if not self.pretty: - 378 return sql - 379 - 380 pad = self.pad if pad is None else pad - 381 lines = sql.split("\n") + 343 def unsupported(self, message: str) -> None: + 344 if self.unsupported_level == ErrorLevel.IMMEDIATE: + 345 raise UnsupportedError(message) + 346 self.unsupported_messages.append(message) + 347 + 348 def sep(self, sep: str = " ") -> str: + 349 return f"{sep.strip()}\n" if self.pretty else sep + 350 + 351 def seg(self, sql: str, sep: str = " ") -> str: + 352 return f"{self.sep(sep)}{sql}" + 353 + 354 def pad_comment(self, comment: str) -> str: + 355 comment = " " + comment if comment[0].strip() else comment + 356 comment = comment + " " if comment[-1].strip() else comment + 357 return comment + 358 + 359 def maybe_comment( + 360 self, + 361 sql: str, + 362 expression: t.Optional[exp.Expression] = None, + 363 comments: t.Optional[t.List[str]] = None, + 364 ) -> str: + 365 comments = (comments or (expression and expression.comments)) if self._comments else None # type: ignore + 366 + 367 if not comments or isinstance(expression, exp.Binary): + 368 return sql + 369 + 370 sep = "\n" if self.pretty else " " + 371 comments_sql = sep.join( + 372 f"/*{self.pad_comment(comment)}*/" for comment in comments if comment + 373 ) + 374 + 375 if not comments_sql: + 376 return sql + 377 + 378 if isinstance(expression, self.WITH_SEPARATED_COMMENTS): + 379 return f"{comments_sql}{self.sep()}{sql}" + 380 + 381 return f"{sql} {comments_sql}" 382 - 383 return "\n".join( - 384 line - 385 if (skip_first and i == 0) or (skip_last and i == len(lines) - 1) - 386 else f"{' ' * (level * self._indent + pad)}{line}" - 387 for i, line in enumerate(lines) - 388 ) - 389 - 390 def sql( - 391 self, - 392 expression: t.Optional[str | exp.Expression], - 393 key: t.Optional[str] = None, - 394 comment: bool = True, - 395 ) -> str: - 396 if not expression: - 397 return "" - 398 - 399 if isinstance(expression, str): - 400 return expression - 401 - 402 if key: - 403 return self.sql(expression.args.get(key)) - 404 - 405 if self._cache is not None: - 406 expression_id = hash(expression) - 407 - 408 if expression_id in self._cache: - 409 return self._cache[expression_id] - 410 - 411 transform = self.TRANSFORMS.get(expression.__class__) - 412 - 413 if callable(transform): - 414 sql = transform(self, expression) - 415 elif transform: - 416 sql = transform - 417 elif isinstance(expression, exp.Expression): - 418 exp_handler_name = f"{expression.key}_sql" - 419 - 420 if hasattr(self, exp_handler_name): - 421 sql = getattr(self, exp_handler_name)(expression) - 422 elif isinstance(expression, exp.Func): - 423 sql = self.function_fallback_sql(expression) - 424 elif isinstance(expression, exp.Property): - 425 sql = self.property_sql(expression) - 426 else: - 427 raise ValueError(f"Unsupported expression type {expression.__class__.__name__}") - 428 else: - 429 raise ValueError(f"Expected an Expression. Received {type(expression)}: {expression}") - 430 - 431 sql = self.maybe_comment(sql, expression) if self._comments and comment else sql - 432 - 433 if self._cache is not None: - 434 self._cache[expression_id] = sql - 435 return sql + 383 def wrap(self, expression: exp.Expression | str) -> str: + 384 this_sql = self.indent( + 385 self.sql(expression) + 386 if isinstance(expression, (exp.Select, exp.Union)) + 387 else self.sql(expression, "this"), + 388 level=1, + 389 pad=0, + 390 ) + 391 return f"({self.sep('')}{this_sql}{self.seg(')', sep='')}" + 392 + 393 def no_identify(self, func: t.Callable[..., str], *args, **kwargs) -> str: + 394 original = self.identify + 395 self.identify = False + 396 result = func(*args, **kwargs) + 397 self.identify = original + 398 return result + 399 + 400 def normalize_func(self, name: str) -> str: + 401 if self.normalize_functions == "upper": + 402 return name.upper() + 403 if self.normalize_functions == "lower": + 404 return name.lower() + 405 return name + 406 + 407 def indent( + 408 self, + 409 sql: str, + 410 level: int = 0, + 411 pad: t.Optional[int] = None, + 412 skip_first: bool = False, + 413 skip_last: bool = False, + 414 ) -> str: + 415 if not self.pretty: + 416 return sql + 417 + 418 pad = self.pad if pad is None else pad + 419 lines = sql.split("\n") + 420 + 421 return "\n".join( + 422 line + 423 if (skip_first and i == 0) or (skip_last and i == len(lines) - 1) + 424 else f"{' ' * (level * self._indent + pad)}{line}" + 425 for i, line in enumerate(lines) + 426 ) + 427 + 428 def sql( + 429 self, + 430 expression: t.Optional[str | exp.Expression], + 431 key: t.Optional[str] = None, + 432 comment: bool = True, + 433 ) -> str: + 434 if not expression: + 435 return "" 436 - 437 def uncache_sql(self, expression: exp.Uncache) -> str: - 438 table = self.sql(expression, "this") - 439 exists_sql = " IF EXISTS" if expression.args.get("exists") else "" - 440 return f"UNCACHE TABLE{exists_sql} {table}" - 441 - 442 def cache_sql(self, expression: exp.Cache) -> str: - 443 lazy = " LAZY" if expression.args.get("lazy") else "" - 444 table = self.sql(expression, "this") - 445 options = expression.args.get("options") - 446 options = f" OPTIONS({self.sql(options[0])} = {self.sql(options[1])})" if options else "" - 447 sql = self.sql(expression, "expression") - 448 sql = f" AS{self.sep()}{sql}" if sql else "" - 449 sql = f"CACHE{lazy} TABLE {table}{options}{sql}" - 450 return self.prepend_ctes(expression, sql) - 451 - 452 def characterset_sql(self, expression: exp.CharacterSet) -> str: - 453 if isinstance(expression.parent, exp.Cast): - 454 return f"CHAR CHARACTER SET {self.sql(expression, 'this')}" - 455 default = "DEFAULT " if expression.args.get("default") else "" - 456 return f"{default}CHARACTER SET={self.sql(expression, 'this')}" + 437 if isinstance(expression, str): + 438 return expression + 439 + 440 if key: + 441 return self.sql(expression.args.get(key)) + 442 + 443 if self._cache is not None: + 444 expression_id = hash(expression) + 445 + 446 if expression_id in self._cache: + 447 return self._cache[expression_id] + 448 + 449 transform = self.TRANSFORMS.get(expression.__class__) + 450 + 451 if callable(transform): + 452 sql = transform(self, expression) + 453 elif transform: + 454 sql = transform + 455 elif isinstance(expression, exp.Expression): + 456 exp_handler_name = f"{expression.key}_sql" 457 - 458 def column_sql(self, expression: exp.Column) -> str: - 459 return ".".join( - 460 self.sql(part) - 461 for part in ( - 462 expression.args.get("catalog"), - 463 expression.args.get("db"), - 464 expression.args.get("table"), - 465 expression.args.get("this"), - 466 ) - 467 if part - 468 ) - 469 - 470 def columnposition_sql(self, expression: exp.ColumnPosition) -> str: - 471 this = self.sql(expression, "this") - 472 this = f" {this}" if this else "" - 473 position = self.sql(expression, "position") - 474 return f"{position}{this}" - 475 - 476 def columndef_sql(self, expression: exp.ColumnDef) -> str: - 477 column = self.sql(expression, "this") - 478 kind = self.sql(expression, "kind") - 479 constraints = self.expressions(expression, key="constraints", sep=" ", flat=True) - 480 exists = "IF NOT EXISTS " if expression.args.get("exists") else "" - 481 kind = f" {kind}" if kind else "" - 482 constraints = f" {constraints}" if constraints else "" - 483 position = self.sql(expression, "position") - 484 position = f" {position}" if position else "" - 485 - 486 return f"{exists}{column}{kind}{constraints}{position}" - 487 - 488 def columnconstraint_sql(self, expression: exp.ColumnConstraint) -> str: - 489 this = self.sql(expression, "this") - 490 kind_sql = self.sql(expression, "kind") - 491 return f"CONSTRAINT {this} {kind_sql}" if this else kind_sql - 492 - 493 def autoincrementcolumnconstraint_sql(self, _) -> str: - 494 return self.token_sql(TokenType.AUTO_INCREMENT) + 458 if hasattr(self, exp_handler_name): + 459 sql = getattr(self, exp_handler_name)(expression) + 460 elif isinstance(expression, exp.Func): + 461 sql = self.function_fallback_sql(expression) + 462 elif isinstance(expression, exp.Property): + 463 sql = self.property_sql(expression) + 464 else: + 465 raise ValueError(f"Unsupported expression type {expression.__class__.__name__}") + 466 else: + 467 raise ValueError(f"Expected an Expression. Received {type(expression)}: {expression}") + 468 + 469 sql = self.maybe_comment(sql, expression) if self._comments and comment else sql + 470 + 471 if self._cache is not None: + 472 self._cache[expression_id] = sql + 473 return sql + 474 + 475 def uncache_sql(self, expression: exp.Uncache) -> str: + 476 table = self.sql(expression, "this") + 477 exists_sql = " IF EXISTS" if expression.args.get("exists") else "" + 478 return f"UNCACHE TABLE{exists_sql} {table}" + 479 + 480 def cache_sql(self, expression: exp.Cache) -> str: + 481 lazy = " LAZY" if expression.args.get("lazy") else "" + 482 table = self.sql(expression, "this") + 483 options = expression.args.get("options") + 484 options = f" OPTIONS({self.sql(options[0])} = {self.sql(options[1])})" if options else "" + 485 sql = self.sql(expression, "expression") + 486 sql = f" AS{self.sep()}{sql}" if sql else "" + 487 sql = f"CACHE{lazy} TABLE {table}{options}{sql}" + 488 return self.prepend_ctes(expression, sql) + 489 + 490 def characterset_sql(self, expression: exp.CharacterSet) -> str: + 491 if isinstance(expression.parent, exp.Cast): + 492 return f"CHAR CHARACTER SET {self.sql(expression, 'this')}" + 493 default = "DEFAULT " if expression.args.get("default") else "" + 494 return f"{default}CHARACTER SET={self.sql(expression, 'this')}" 495 - 496 def compresscolumnconstraint_sql(self, expression: exp.CompressColumnConstraint) -> str: - 497 if isinstance(expression.this, list): - 498 this = self.wrap(self.expressions(expression, key="this", flat=True)) - 499 else: - 500 this = self.sql(expression, "this") - 501 - 502 return f"COMPRESS {this}" - 503 - 504 def generatedasidentitycolumnconstraint_sql( - 505 self, expression: exp.GeneratedAsIdentityColumnConstraint - 506 ) -> str: - 507 this = "" - 508 if expression.this is not None: - 509 this = " ALWAYS " if expression.this else " BY DEFAULT " - 510 start = expression.args.get("start") - 511 start = f"START WITH {start}" if start else "" - 512 increment = expression.args.get("increment") - 513 increment = f" INCREMENT BY {increment}" if increment else "" - 514 minvalue = expression.args.get("minvalue") - 515 minvalue = f" MINVALUE {minvalue}" if minvalue else "" - 516 maxvalue = expression.args.get("maxvalue") - 517 maxvalue = f" MAXVALUE {maxvalue}" if maxvalue else "" - 518 cycle = expression.args.get("cycle") - 519 cycle_sql = "" - 520 if cycle is not None: - 521 cycle_sql = f"{' NO' if not cycle else ''} CYCLE" - 522 cycle_sql = cycle_sql.strip() if not start and not increment else cycle_sql - 523 sequence_opts = "" - 524 if start or increment or cycle_sql: - 525 sequence_opts = f"{start}{increment}{minvalue}{maxvalue}{cycle_sql}" - 526 sequence_opts = f" ({sequence_opts.strip()})" - 527 return f"GENERATED{this}AS IDENTITY{sequence_opts}" - 528 - 529 def notnullcolumnconstraint_sql(self, expression: exp.NotNullColumnConstraint) -> str: - 530 return f"{'' if expression.args.get('allow_null') else 'NOT '}NULL" - 531 - 532 def primarykeycolumnconstraint_sql(self, expression: exp.PrimaryKeyColumnConstraint) -> str: - 533 desc = expression.args.get("desc") - 534 if desc is not None: - 535 return f"PRIMARY KEY{' DESC' if desc else ' ASC'}" - 536 return f"PRIMARY KEY" - 537 - 538 def uniquecolumnconstraint_sql(self, _) -> str: - 539 return "UNIQUE" - 540 - 541 def create_sql(self, expression: exp.Create) -> str: - 542 kind = self.sql(expression, "kind").upper() - 543 properties = expression.args.get("properties") - 544 properties_exp = expression.copy() - 545 properties_locs = self.locate_properties(properties) if properties else {} - 546 if properties_locs.get(exp.Properties.Location.POST_SCHEMA) or properties_locs.get( - 547 exp.Properties.Location.POST_WITH - 548 ): - 549 properties_exp.set( - 550 "properties", - 551 exp.Properties( - 552 expressions=[ - 553 *properties_locs[exp.Properties.Location.POST_SCHEMA], - 554 *properties_locs[exp.Properties.Location.POST_WITH], - 555 ] - 556 ), - 557 ) - 558 if kind == "TABLE" and properties_locs.get(exp.Properties.Location.POST_NAME): - 559 this_name = self.sql(expression.this, "this") - 560 this_properties = self.properties( - 561 exp.Properties(expressions=properties_locs[exp.Properties.Location.POST_NAME]), - 562 wrapped=False, - 563 ) - 564 this_schema = f"({self.expressions(expression.this)})" - 565 this = f"{this_name}, {this_properties} {this_schema}" - 566 properties_sql = "" - 567 else: - 568 this = self.sql(expression, "this") - 569 properties_sql = self.sql(properties_exp, "properties") - 570 begin = " BEGIN" if expression.args.get("begin") else "" - 571 expression_sql = self.sql(expression, "expression") - 572 if expression_sql: - 573 expression_sql = f"{begin}{self.sep()}{expression_sql}" - 574 - 575 if self.CREATE_FUNCTION_RETURN_AS or not isinstance(expression.expression, exp.Return): - 576 if properties_locs.get(exp.Properties.Location.POST_ALIAS): - 577 postalias_props_sql = self.properties( - 578 exp.Properties( - 579 expressions=properties_locs[exp.Properties.Location.POST_ALIAS] - 580 ), - 581 wrapped=False, - 582 ) - 583 expression_sql = f" AS {postalias_props_sql}{expression_sql}" - 584 else: - 585 expression_sql = f" AS{expression_sql}" - 586 - 587 postindex_props_sql = "" - 588 if properties_locs.get(exp.Properties.Location.POST_INDEX): - 589 postindex_props_sql = self.properties( - 590 exp.Properties(expressions=properties_locs[exp.Properties.Location.POST_INDEX]), - 591 wrapped=False, - 592 prefix=" ", - 593 ) - 594 - 595 indexes = expression.args.get("indexes") - 596 if indexes: - 597 indexes_sql: t.List[str] = [] - 598 for index in indexes: - 599 ind_unique = " UNIQUE" if index.args.get("unique") else "" - 600 ind_primary = " PRIMARY" if index.args.get("primary") else "" - 601 ind_amp = " AMP" if index.args.get("amp") else "" - 602 ind_name = f" {index.name}" if index.name else "" - 603 ind_columns = ( - 604 f' ({self.expressions(index, key="columns", flat=True)})' - 605 if index.args.get("columns") - 606 else "" - 607 ) - 608 ind_sql = f"{ind_unique}{ind_primary}{ind_amp} INDEX{ind_name}{ind_columns}" - 609 - 610 if indexes_sql: - 611 indexes_sql.append(ind_sql) - 612 else: - 613 indexes_sql.append( - 614 f"{ind_sql}{postindex_props_sql}" - 615 if index.args.get("primary") - 616 else f"{postindex_props_sql}{ind_sql}" - 617 ) - 618 - 619 index_sql = "".join(indexes_sql) - 620 else: - 621 index_sql = postindex_props_sql - 622 - 623 replace = " OR REPLACE" if expression.args.get("replace") else "" - 624 unique = " UNIQUE" if expression.args.get("unique") else "" - 625 volatile = " VOLATILE" if expression.args.get("volatile") else "" - 626 - 627 postcreate_props_sql = "" - 628 if properties_locs.get(exp.Properties.Location.POST_CREATE): - 629 postcreate_props_sql = self.properties( - 630 exp.Properties(expressions=properties_locs[exp.Properties.Location.POST_CREATE]), - 631 sep=" ", - 632 prefix=" ", - 633 wrapped=False, - 634 ) - 635 - 636 modifiers = "".join((replace, unique, volatile, postcreate_props_sql)) - 637 - 638 postexpression_props_sql = "" - 639 if properties_locs.get(exp.Properties.Location.POST_EXPRESSION): - 640 postexpression_props_sql = self.properties( - 641 exp.Properties( - 642 expressions=properties_locs[exp.Properties.Location.POST_EXPRESSION] - 643 ), - 644 sep=" ", - 645 prefix=" ", - 646 wrapped=False, - 647 ) - 648 - 649 exists_sql = " IF NOT EXISTS" if expression.args.get("exists") else "" - 650 no_schema_binding = ( - 651 " WITH NO SCHEMA BINDING" if expression.args.get("no_schema_binding") else "" - 652 ) - 653 - 654 expression_sql = f"CREATE{modifiers} {kind}{exists_sql} {this}{properties_sql}{expression_sql}{postexpression_props_sql}{index_sql}{no_schema_binding}" - 655 return self.prepend_ctes(expression, expression_sql) + 496 def column_sql(self, expression: exp.Column) -> str: + 497 return ".".join( + 498 self.sql(part) + 499 for part in ( + 500 expression.args.get("catalog"), + 501 expression.args.get("db"), + 502 expression.args.get("table"), + 503 expression.args.get("this"), + 504 ) + 505 if part + 506 ) + 507 + 508 def columnposition_sql(self, expression: exp.ColumnPosition) -> str: + 509 this = self.sql(expression, "this") + 510 this = f" {this}" if this else "" + 511 position = self.sql(expression, "position") + 512 return f"{position}{this}" + 513 + 514 def columndef_sql(self, expression: exp.ColumnDef) -> str: + 515 column = self.sql(expression, "this") + 516 kind = self.sql(expression, "kind") + 517 constraints = self.expressions(expression, key="constraints", sep=" ", flat=True) + 518 exists = "IF NOT EXISTS " if expression.args.get("exists") else "" + 519 kind = f" {kind}" if kind else "" + 520 constraints = f" {constraints}" if constraints else "" + 521 position = self.sql(expression, "position") + 522 position = f" {position}" if position else "" + 523 + 524 return f"{exists}{column}{kind}{constraints}{position}" + 525 + 526 def columnconstraint_sql(self, expression: exp.ColumnConstraint) -> str: + 527 this = self.sql(expression, "this") + 528 kind_sql = self.sql(expression, "kind") + 529 return f"CONSTRAINT {this} {kind_sql}" if this else kind_sql + 530 + 531 def autoincrementcolumnconstraint_sql(self, _) -> str: + 532 return self.token_sql(TokenType.AUTO_INCREMENT) + 533 + 534 def compresscolumnconstraint_sql(self, expression: exp.CompressColumnConstraint) -> str: + 535 if isinstance(expression.this, list): + 536 this = self.wrap(self.expressions(expression, key="this", flat=True)) + 537 else: + 538 this = self.sql(expression, "this") + 539 + 540 return f"COMPRESS {this}" + 541 + 542 def generatedasidentitycolumnconstraint_sql( + 543 self, expression: exp.GeneratedAsIdentityColumnConstraint + 544 ) -> str: + 545 this = "" + 546 if expression.this is not None: + 547 this = " ALWAYS " if expression.this else " BY DEFAULT " + 548 start = expression.args.get("start") + 549 start = f"START WITH {start}" if start else "" + 550 increment = expression.args.get("increment") + 551 increment = f" INCREMENT BY {increment}" if increment else "" + 552 minvalue = expression.args.get("minvalue") + 553 minvalue = f" MINVALUE {minvalue}" if minvalue else "" + 554 maxvalue = expression.args.get("maxvalue") + 555 maxvalue = f" MAXVALUE {maxvalue}" if maxvalue else "" + 556 cycle = expression.args.get("cycle") + 557 cycle_sql = "" + 558 if cycle is not None: + 559 cycle_sql = f"{' NO' if not cycle else ''} CYCLE" + 560 cycle_sql = cycle_sql.strip() if not start and not increment else cycle_sql + 561 sequence_opts = "" + 562 if start or increment or cycle_sql: + 563 sequence_opts = f"{start}{increment}{minvalue}{maxvalue}{cycle_sql}" + 564 sequence_opts = f" ({sequence_opts.strip()})" + 565 return f"GENERATED{this}AS IDENTITY{sequence_opts}" + 566 + 567 def notnullcolumnconstraint_sql(self, expression: exp.NotNullColumnConstraint) -> str: + 568 return f"{'' if expression.args.get('allow_null') else 'NOT '}NULL" + 569 + 570 def primarykeycolumnconstraint_sql(self, expression: exp.PrimaryKeyColumnConstraint) -> str: + 571 desc = expression.args.get("desc") + 572 if desc is not None: + 573 return f"PRIMARY KEY{' DESC' if desc else ' ASC'}" + 574 return f"PRIMARY KEY" + 575 + 576 def uniquecolumnconstraint_sql(self, _) -> str: + 577 return "UNIQUE" + 578 + 579 def create_sql(self, expression: exp.Create) -> str: + 580 kind = self.sql(expression, "kind").upper() + 581 properties = expression.args.get("properties") + 582 properties_exp = expression.copy() + 583 properties_locs = self.locate_properties(properties) if properties else {} + 584 if properties_locs.get(exp.Properties.Location.POST_SCHEMA) or properties_locs.get( + 585 exp.Properties.Location.POST_WITH + 586 ): + 587 properties_exp.set( + 588 "properties", + 589 exp.Properties( + 590 expressions=[ + 591 *properties_locs[exp.Properties.Location.POST_SCHEMA], + 592 *properties_locs[exp.Properties.Location.POST_WITH], + 593 ] + 594 ), + 595 ) + 596 if kind == "TABLE" and properties_locs.get(exp.Properties.Location.POST_NAME): + 597 this_name = self.sql(expression.this, "this") + 598 this_properties = self.properties( + 599 exp.Properties(expressions=properties_locs[exp.Properties.Location.POST_NAME]), + 600 wrapped=False, + 601 ) + 602 this_schema = f"({self.expressions(expression.this)})" + 603 this = f"{this_name}, {this_properties} {this_schema}" + 604 properties_sql = "" + 605 else: + 606 this = self.sql(expression, "this") + 607 properties_sql = self.sql(properties_exp, "properties") + 608 begin = " BEGIN" if expression.args.get("begin") else "" + 609 expression_sql = self.sql(expression, "expression") + 610 if expression_sql: + 611 expression_sql = f"{begin}{self.sep()}{expression_sql}" + 612 + 613 if self.CREATE_FUNCTION_RETURN_AS or not isinstance(expression.expression, exp.Return): + 614 if properties_locs.get(exp.Properties.Location.POST_ALIAS): + 615 postalias_props_sql = self.properties( + 616 exp.Properties( + 617 expressions=properties_locs[exp.Properties.Location.POST_ALIAS] + 618 ), + 619 wrapped=False, + 620 ) + 621 expression_sql = f" AS {postalias_props_sql}{expression_sql}" + 622 else: + 623 expression_sql = f" AS{expression_sql}" + 624 + 625 postindex_props_sql = "" + 626 if properties_locs.get(exp.Properties.Location.POST_INDEX): + 627 postindex_props_sql = self.properties( + 628 exp.Properties(expressions=properties_locs[exp.Properties.Location.POST_INDEX]), + 629 wrapped=False, + 630 prefix=" ", + 631 ) + 632 + 633 indexes = expression.args.get("indexes") + 634 if indexes: + 635 indexes_sql: t.List[str] = [] + 636 for index in indexes: + 637 ind_unique = " UNIQUE" if index.args.get("unique") else "" + 638 ind_primary = " PRIMARY" if index.args.get("primary") else "" + 639 ind_amp = " AMP" if index.args.get("amp") else "" + 640 ind_name = f" {index.name}" if index.name else "" + 641 ind_columns = ( + 642 f' ({self.expressions(index, key="columns", flat=True)})' + 643 if index.args.get("columns") + 644 else "" + 645 ) + 646 ind_sql = f"{ind_unique}{ind_primary}{ind_amp} INDEX{ind_name}{ind_columns}" + 647 + 648 if indexes_sql: + 649 indexes_sql.append(ind_sql) + 650 else: + 651 indexes_sql.append( + 652 f"{ind_sql}{postindex_props_sql}" + 653 if index.args.get("primary") + 654 else f"{postindex_props_sql}{ind_sql}" + 655 ) 656 - 657 def describe_sql(self, expression: exp.Describe) -> str: - 658 return f"DESCRIBE {self.sql(expression, 'this')}" - 659 - 660 def prepend_ctes(self, expression: exp.Expression, sql: str) -> str: - 661 with_ = self.sql(expression, "with") - 662 if with_: - 663 sql = f"{with_}{self.sep()}{sql}" - 664 return sql - 665 - 666 def with_sql(self, expression: exp.With) -> str: - 667 sql = self.expressions(expression, flat=True) - 668 recursive = "RECURSIVE " if expression.args.get("recursive") else "" - 669 - 670 return f"WITH {recursive}{sql}" - 671 - 672 def cte_sql(self, expression: exp.CTE) -> str: - 673 alias = self.sql(expression, "alias") - 674 return f"{alias} AS {self.wrap(expression)}" - 675 - 676 def tablealias_sql(self, expression: exp.TableAlias) -> str: - 677 alias = self.sql(expression, "this") - 678 columns = self.expressions(expression, key="columns", flat=True) - 679 columns = f"({columns})" if columns else "" - 680 return f"{alias}{columns}" - 681 - 682 def bitstring_sql(self, expression: exp.BitString) -> str: - 683 return self.sql(expression, "this") - 684 - 685 def hexstring_sql(self, expression: exp.HexString) -> str: - 686 return self.sql(expression, "this") - 687 - 688 def datatype_sql(self, expression: exp.DataType) -> str: - 689 type_value = expression.this - 690 type_sql = self.TYPE_MAPPING.get(type_value, type_value.value) - 691 nested = "" - 692 interior = self.expressions(expression, flat=True) - 693 values = "" - 694 if interior: - 695 if expression.args.get("nested"): - 696 nested = f"{self.STRUCT_DELIMITER[0]}{interior}{self.STRUCT_DELIMITER[1]}" - 697 if expression.args.get("values") is not None: - 698 delimiters = ("[", "]") if type_value == exp.DataType.Type.ARRAY else ("(", ")") - 699 values = ( - 700 f"{delimiters[0]}{self.expressions(expression, 'values')}{delimiters[1]}" - 701 ) - 702 else: - 703 nested = f"({interior})" - 704 - 705 return f"{type_sql}{nested}{values}" + 657 index_sql = "".join(indexes_sql) + 658 else: + 659 index_sql = postindex_props_sql + 660 + 661 replace = " OR REPLACE" if expression.args.get("replace") else "" + 662 unique = " UNIQUE" if expression.args.get("unique") else "" + 663 + 664 postcreate_props_sql = "" + 665 if properties_locs.get(exp.Properties.Location.POST_CREATE): + 666 postcreate_props_sql = self.properties( + 667 exp.Properties(expressions=properties_locs[exp.Properties.Location.POST_CREATE]), + 668 sep=" ", + 669 prefix=" ", + 670 wrapped=False, + 671 ) + 672 + 673 modifiers = "".join((replace, unique, postcreate_props_sql)) + 674 + 675 postexpression_props_sql = "" + 676 if properties_locs.get(exp.Properties.Location.POST_EXPRESSION): + 677 postexpression_props_sql = self.properties( + 678 exp.Properties( + 679 expressions=properties_locs[exp.Properties.Location.POST_EXPRESSION] + 680 ), + 681 sep=" ", + 682 prefix=" ", + 683 wrapped=False, + 684 ) + 685 + 686 exists_sql = " IF NOT EXISTS" if expression.args.get("exists") else "" + 687 no_schema_binding = ( + 688 " WITH NO SCHEMA BINDING" if expression.args.get("no_schema_binding") else "" + 689 ) + 690 + 691 expression_sql = f"CREATE{modifiers} {kind}{exists_sql} {this}{properties_sql}{expression_sql}{postexpression_props_sql}{index_sql}{no_schema_binding}" + 692 return self.prepend_ctes(expression, expression_sql) + 693 + 694 def describe_sql(self, expression: exp.Describe) -> str: + 695 return f"DESCRIBE {self.sql(expression, 'this')}" + 696 + 697 def prepend_ctes(self, expression: exp.Expression, sql: str) -> str: + 698 with_ = self.sql(expression, "with") + 699 if with_: + 700 sql = f"{with_}{self.sep()}{sql}" + 701 return sql + 702 + 703 def with_sql(self, expression: exp.With) -> str: + 704 sql = self.expressions(expression, flat=True) + 705 recursive = "RECURSIVE " if expression.args.get("recursive") else "" 706 - 707 def directory_sql(self, expression: exp.Directory) -> str: - 708 local = "LOCAL " if expression.args.get("local") else "" - 709 row_format = self.sql(expression, "row_format") - 710 row_format = f" {row_format}" if row_format else "" - 711 return f"{local}DIRECTORY {self.sql(expression, 'this')}{row_format}" + 707 return f"WITH {recursive}{sql}" + 708 + 709 def cte_sql(self, expression: exp.CTE) -> str: + 710 alias = self.sql(expression, "alias") + 711 return f"{alias} AS {self.wrap(expression)}" 712 - 713 def delete_sql(self, expression: exp.Delete) -> str: - 714 this = self.sql(expression, "this") - 715 this = f" FROM {this}" if this else "" - 716 using_sql = ( - 717 f" USING {self.expressions(expression, 'using', sep=', USING ')}" - 718 if expression.args.get("using") - 719 else "" - 720 ) - 721 where_sql = self.sql(expression, "where") - 722 returning = self.sql(expression, "returning") - 723 sql = f"DELETE{this}{using_sql}{where_sql}{returning}" - 724 return self.prepend_ctes(expression, sql) - 725 - 726 def drop_sql(self, expression: exp.Drop) -> str: - 727 this = self.sql(expression, "this") - 728 kind = expression.args["kind"] - 729 exists_sql = " IF EXISTS " if expression.args.get("exists") else " " - 730 temporary = " TEMPORARY" if expression.args.get("temporary") else "" - 731 materialized = " MATERIALIZED" if expression.args.get("materialized") else "" - 732 cascade = " CASCADE" if expression.args.get("cascade") else "" - 733 constraints = " CONSTRAINTS" if expression.args.get("constraints") else "" - 734 return f"DROP{temporary}{materialized} {kind}{exists_sql}{this}{cascade}{constraints}" - 735 - 736 def except_sql(self, expression: exp.Except) -> str: - 737 return self.prepend_ctes( - 738 expression, - 739 self.set_operation(expression, self.except_op(expression)), - 740 ) - 741 - 742 def except_op(self, expression: exp.Except) -> str: - 743 return f"EXCEPT{'' if expression.args.get('distinct') else ' ALL'}" + 713 def tablealias_sql(self, expression: exp.TableAlias) -> str: + 714 alias = self.sql(expression, "this") + 715 columns = self.expressions(expression, key="columns", flat=True) + 716 columns = f"({columns})" if columns else "" + 717 return f"{alias}{columns}" + 718 + 719 def bitstring_sql(self, expression: exp.BitString) -> str: + 720 return self.sql(expression, "this") + 721 + 722 def hexstring_sql(self, expression: exp.HexString) -> str: + 723 return self.sql(expression, "this") + 724 + 725 def bytestring_sql(self, expression: exp.ByteString) -> str: + 726 return self.sql(expression, "this") + 727 + 728 def datatype_sql(self, expression: exp.DataType) -> str: + 729 type_value = expression.this + 730 type_sql = self.TYPE_MAPPING.get(type_value, type_value.value) + 731 nested = "" + 732 interior = self.expressions(expression, flat=True) + 733 values = "" + 734 if interior: + 735 if expression.args.get("nested"): + 736 nested = f"{self.STRUCT_DELIMITER[0]}{interior}{self.STRUCT_DELIMITER[1]}" + 737 if expression.args.get("values") is not None: + 738 delimiters = ("[", "]") if type_value == exp.DataType.Type.ARRAY else ("(", ")") + 739 values = f"{delimiters[0]}{self.expressions(expression, key='values')}{delimiters[1]}" + 740 else: + 741 nested = f"({interior})" + 742 + 743 return f"{type_sql}{nested}{values}" 744 - 745 def fetch_sql(self, expression: exp.Fetch) -> str: - 746 direction = expression.args.get("direction") - 747 direction = f" {direction.upper()}" if direction else "" - 748 count = expression.args.get("count") - 749 count = f" {count}" if count else "" - 750 return f"{self.seg('FETCH')}{direction}{count} ROWS ONLY" - 751 - 752 def filter_sql(self, expression: exp.Filter) -> str: - 753 this = self.sql(expression, "this") - 754 where = self.sql(expression, "expression")[1:] # where has a leading space - 755 return f"{this} FILTER({where})" - 756 - 757 def hint_sql(self, expression: exp.Hint) -> str: - 758 if self.sql(expression, "this"): - 759 self.unsupported("Hints are not supported") - 760 return "" - 761 - 762 def index_sql(self, expression: exp.Index) -> str: - 763 this = self.sql(expression, "this") - 764 table = self.sql(expression, "table") - 765 columns = self.sql(expression, "columns") - 766 return f"{this} ON {table} {columns}" - 767 - 768 def identifier_sql(self, expression: exp.Identifier) -> str: - 769 text = expression.name - 770 text = text.lower() if self.normalize and not expression.quoted else text - 771 text = text.replace(self.identifier_end, self._escaped_identifier_end) - 772 if expression.quoted or should_identify(text, self.identify): - 773 text = f"{self.identifier_start}{text}{self.identifier_end}" - 774 return text - 775 - 776 def national_sql(self, expression: exp.National) -> str: - 777 return f"N{self.sql(expression, 'this')}" - 778 - 779 def partition_sql(self, expression: exp.Partition) -> str: - 780 return f"PARTITION({self.expressions(expression)})" - 781 - 782 def properties_sql(self, expression: exp.Properties) -> str: - 783 root_properties = [] - 784 with_properties = [] + 745 def directory_sql(self, expression: exp.Directory) -> str: + 746 local = "LOCAL " if expression.args.get("local") else "" + 747 row_format = self.sql(expression, "row_format") + 748 row_format = f" {row_format}" if row_format else "" + 749 return f"{local}DIRECTORY {self.sql(expression, 'this')}{row_format}" + 750 + 751 def delete_sql(self, expression: exp.Delete) -> str: + 752 this = self.sql(expression, "this") + 753 this = f" FROM {this}" if this else "" + 754 using_sql = ( + 755 f" USING {self.expressions(expression, key='using', sep=', USING ')}" + 756 if expression.args.get("using") + 757 else "" + 758 ) + 759 where_sql = self.sql(expression, "where") + 760 returning = self.sql(expression, "returning") + 761 sql = f"DELETE{this}{using_sql}{where_sql}{returning}" + 762 return self.prepend_ctes(expression, sql) + 763 + 764 def drop_sql(self, expression: exp.Drop) -> str: + 765 this = self.sql(expression, "this") + 766 kind = expression.args["kind"] + 767 exists_sql = " IF EXISTS " if expression.args.get("exists") else " " + 768 temporary = " TEMPORARY" if expression.args.get("temporary") else "" + 769 materialized = " MATERIALIZED" if expression.args.get("materialized") else "" + 770 cascade = " CASCADE" if expression.args.get("cascade") else "" + 771 constraints = " CONSTRAINTS" if expression.args.get("constraints") else "" + 772 purge = " PURGE" if expression.args.get("purge") else "" + 773 return ( + 774 f"DROP{temporary}{materialized} {kind}{exists_sql}{this}{cascade}{constraints}{purge}" + 775 ) + 776 + 777 def except_sql(self, expression: exp.Except) -> str: + 778 return self.prepend_ctes( + 779 expression, + 780 self.set_operation(expression, self.except_op(expression)), + 781 ) + 782 + 783 def except_op(self, expression: exp.Except) -> str: + 784 return f"EXCEPT{'' if expression.args.get('distinct') else ' ALL'}" 785 - 786 for p in expression.expressions: - 787 p_loc = self.PROPERTIES_LOCATION[p.__class__] - 788 if p_loc == exp.Properties.Location.POST_WITH: - 789 with_properties.append(p) - 790 elif p_loc == exp.Properties.Location.POST_SCHEMA: - 791 root_properties.append(p) - 792 - 793 return self.root_properties( - 794 exp.Properties(expressions=root_properties) - 795 ) + self.with_properties(exp.Properties(expressions=with_properties)) - 796 - 797 def root_properties(self, properties: exp.Properties) -> str: - 798 if properties.expressions: - 799 return self.sep() + self.expressions(properties, indent=False, sep=" ") - 800 return "" - 801 - 802 def properties( - 803 self, - 804 properties: exp.Properties, - 805 prefix: str = "", - 806 sep: str = ", ", - 807 suffix: str = "", - 808 wrapped: bool = True, - 809 ) -> str: - 810 if properties.expressions: - 811 expressions = self.expressions(properties, sep=sep, indent=False) - 812 expressions = self.wrap(expressions) if wrapped else expressions - 813 return f"{prefix}{' ' if prefix and prefix != ' ' else ''}{expressions}{suffix}" - 814 return "" - 815 - 816 def with_properties(self, properties: exp.Properties) -> str: - 817 return self.properties(properties, prefix=self.seg("WITH")) - 818 - 819 def locate_properties( - 820 self, properties: exp.Properties - 821 ) -> t.Dict[exp.Properties.Location, list[exp.Property]]: - 822 properties_locs: t.Dict[exp.Properties.Location, list[exp.Property]] = { - 823 key: [] for key in exp.Properties.Location - 824 } - 825 - 826 for p in properties.expressions: - 827 p_loc = self.PROPERTIES_LOCATION[p.__class__] - 828 if p_loc == exp.Properties.Location.POST_NAME: - 829 properties_locs[exp.Properties.Location.POST_NAME].append(p) - 830 elif p_loc == exp.Properties.Location.POST_INDEX: - 831 properties_locs[exp.Properties.Location.POST_INDEX].append(p) - 832 elif p_loc == exp.Properties.Location.POST_SCHEMA: - 833 properties_locs[exp.Properties.Location.POST_SCHEMA].append(p) - 834 elif p_loc == exp.Properties.Location.POST_WITH: - 835 properties_locs[exp.Properties.Location.POST_WITH].append(p) - 836 elif p_loc == exp.Properties.Location.POST_CREATE: - 837 properties_locs[exp.Properties.Location.POST_CREATE].append(p) - 838 elif p_loc == exp.Properties.Location.POST_ALIAS: - 839 properties_locs[exp.Properties.Location.POST_ALIAS].append(p) - 840 elif p_loc == exp.Properties.Location.POST_EXPRESSION: - 841 properties_locs[exp.Properties.Location.POST_EXPRESSION].append(p) - 842 elif p_loc == exp.Properties.Location.UNSUPPORTED: - 843 self.unsupported(f"Unsupported property {p.key}") - 844 - 845 return properties_locs - 846 - 847 def property_sql(self, expression: exp.Property) -> str: - 848 property_cls = expression.__class__ - 849 if property_cls == exp.Property: - 850 return f"{expression.name}={self.sql(expression, 'value')}" - 851 - 852 property_name = exp.Properties.PROPERTY_TO_NAME.get(property_cls) - 853 if not property_name: - 854 self.unsupported(f"Unsupported property {expression.key}") - 855 - 856 return f"{property_name}={self.sql(expression, 'this')}" + 786 def fetch_sql(self, expression: exp.Fetch) -> str: + 787 direction = expression.args.get("direction") + 788 direction = f" {direction.upper()}" if direction else "" + 789 count = expression.args.get("count") + 790 count = f" {count}" if count else "" + 791 if expression.args.get("percent"): + 792 count = f"{count} PERCENT" + 793 with_ties_or_only = "WITH TIES" if expression.args.get("with_ties") else "ONLY" + 794 return f"{self.seg('FETCH')}{direction}{count} ROWS {with_ties_or_only}" + 795 + 796 def filter_sql(self, expression: exp.Filter) -> str: + 797 this = self.sql(expression, "this") + 798 where = self.sql(expression, "expression")[1:] # where has a leading space + 799 return f"{this} FILTER({where})" + 800 + 801 def hint_sql(self, expression: exp.Hint) -> str: + 802 if self.sql(expression, "this"): + 803 self.unsupported("Hints are not supported") + 804 return "" + 805 + 806 def index_sql(self, expression: exp.Index) -> str: + 807 this = self.sql(expression, "this") + 808 table = self.sql(expression, "table") + 809 columns = self.sql(expression, "columns") + 810 return f"{this} ON {table} {columns}" + 811 + 812 def identifier_sql(self, expression: exp.Identifier) -> str: + 813 text = expression.name + 814 lower = text.lower() + 815 text = lower if self.normalize and not expression.quoted else text + 816 text = text.replace(self.identifier_end, self._escaped_identifier_end) + 817 if ( + 818 expression.quoted + 819 or should_identify(text, self.identify) + 820 or lower in self.RESERVED_KEYWORDS + 821 ): + 822 text = f"{self.identifier_start}{text}{self.identifier_end}" + 823 return text + 824 + 825 def inputoutputformat_sql(self, expression: exp.InputOutputFormat) -> str: + 826 input_format = self.sql(expression, "input_format") + 827 input_format = f"INPUTFORMAT {input_format}" if input_format else "" + 828 output_format = self.sql(expression, "output_format") + 829 output_format = f"OUTPUTFORMAT {output_format}" if output_format else "" + 830 return self.sep().join((input_format, output_format)) + 831 + 832 def national_sql(self, expression: exp.National) -> str: + 833 return f"N{self.sql(expression, 'this')}" + 834 + 835 def partition_sql(self, expression: exp.Partition) -> str: + 836 return f"PARTITION({self.expressions(expression)})" + 837 + 838 def properties_sql(self, expression: exp.Properties) -> str: + 839 root_properties = [] + 840 with_properties = [] + 841 + 842 for p in expression.expressions: + 843 p_loc = self.PROPERTIES_LOCATION[p.__class__] + 844 if p_loc == exp.Properties.Location.POST_WITH: + 845 with_properties.append(p) + 846 elif p_loc == exp.Properties.Location.POST_SCHEMA: + 847 root_properties.append(p) + 848 + 849 return self.root_properties( + 850 exp.Properties(expressions=root_properties) + 851 ) + self.with_properties(exp.Properties(expressions=with_properties)) + 852 + 853 def root_properties(self, properties: exp.Properties) -> str: + 854 if properties.expressions: + 855 return self.sep() + self.expressions(properties, indent=False, sep=" ") + 856 return "" 857 - 858 def likeproperty_sql(self, expression: exp.LikeProperty) -> str: - 859 options = " ".join(f"{e.name} {self.sql(e, 'value')}" for e in expression.expressions) - 860 options = f" {options}" if options else "" - 861 return f"LIKE {self.sql(expression, 'this')}{options}" - 862 - 863 def fallbackproperty_sql(self, expression: exp.FallbackProperty) -> str: - 864 no = "NO " if expression.args.get("no") else "" - 865 protection = " PROTECTION" if expression.args.get("protection") else "" - 866 return f"{no}FALLBACK{protection}" - 867 - 868 def journalproperty_sql(self, expression: exp.JournalProperty) -> str: - 869 no = "NO " if expression.args.get("no") else "" - 870 dual = "DUAL " if expression.args.get("dual") else "" - 871 before = "BEFORE " if expression.args.get("before") else "" - 872 return f"{no}{dual}{before}JOURNAL" - 873 - 874 def freespaceproperty_sql(self, expression: exp.FreespaceProperty) -> str: - 875 freespace = self.sql(expression, "this") - 876 percent = " PERCENT" if expression.args.get("percent") else "" - 877 return f"FREESPACE={freespace}{percent}" - 878 - 879 def afterjournalproperty_sql(self, expression: exp.AfterJournalProperty) -> str: - 880 no = "NO " if expression.args.get("no") else "" - 881 dual = "DUAL " if expression.args.get("dual") else "" - 882 local = "" - 883 if expression.args.get("local") is not None: - 884 local = "LOCAL " if expression.args.get("local") else "NOT LOCAL " - 885 return f"{no}{dual}{local}AFTER JOURNAL" - 886 - 887 def checksumproperty_sql(self, expression: exp.ChecksumProperty) -> str: - 888 if expression.args.get("default"): - 889 property = "DEFAULT" - 890 elif expression.args.get("on"): - 891 property = "ON" - 892 else: - 893 property = "OFF" - 894 return f"CHECKSUM={property}" - 895 - 896 def mergeblockratioproperty_sql(self, expression: exp.MergeBlockRatioProperty) -> str: - 897 if expression.args.get("no"): - 898 return "NO MERGEBLOCKRATIO" - 899 if expression.args.get("default"): - 900 return "DEFAULT MERGEBLOCKRATIO" - 901 - 902 percent = " PERCENT" if expression.args.get("percent") else "" - 903 return f"MERGEBLOCKRATIO={self.sql(expression, 'this')}{percent}" - 904 - 905 def datablocksizeproperty_sql(self, expression: exp.DataBlocksizeProperty) -> str: - 906 default = expression.args.get("default") - 907 min = expression.args.get("min") - 908 if default is not None or min is not None: - 909 if default: - 910 property = "DEFAULT" - 911 elif min: - 912 property = "MINIMUM" - 913 else: - 914 property = "MAXIMUM" - 915 return f"{property} DATABLOCKSIZE" - 916 else: - 917 units = expression.args.get("units") - 918 units = f" {units}" if units else "" - 919 return f"DATABLOCKSIZE={self.sql(expression, 'size')}{units}" - 920 - 921 def blockcompressionproperty_sql(self, expression: exp.BlockCompressionProperty) -> str: - 922 autotemp = expression.args.get("autotemp") - 923 always = expression.args.get("always") - 924 default = expression.args.get("default") - 925 manual = expression.args.get("manual") - 926 never = expression.args.get("never") - 927 - 928 if autotemp is not None: - 929 property = f"AUTOTEMP({self.expressions(autotemp)})" - 930 elif always: - 931 property = "ALWAYS" - 932 elif default: - 933 property = "DEFAULT" - 934 elif manual: - 935 property = "MANUAL" - 936 elif never: - 937 property = "NEVER" - 938 return f"BLOCKCOMPRESSION={property}" - 939 - 940 def isolatedloadingproperty_sql(self, expression: exp.IsolatedLoadingProperty) -> str: - 941 no = expression.args.get("no") - 942 no = " NO" if no else "" - 943 concurrent = expression.args.get("concurrent") - 944 concurrent = " CONCURRENT" if concurrent else "" - 945 - 946 for_ = "" - 947 if expression.args.get("for_all"): - 948 for_ = " FOR ALL" - 949 elif expression.args.get("for_insert"): - 950 for_ = " FOR INSERT" - 951 elif expression.args.get("for_none"): - 952 for_ = " FOR NONE" - 953 return f"WITH{no}{concurrent} ISOLATED LOADING{for_}" - 954 - 955 def lockingproperty_sql(self, expression: exp.LockingProperty) -> str: - 956 kind = expression.args.get("kind") - 957 this: str = f" {this}" if expression.this else "" - 958 for_or_in = expression.args.get("for_or_in") - 959 lock_type = expression.args.get("lock_type") - 960 override = " OVERRIDE" if expression.args.get("override") else "" - 961 return f"LOCKING {kind}{this} {for_or_in} {lock_type}{override}" - 962 - 963 def withdataproperty_sql(self, expression: exp.WithDataProperty) -> str: - 964 data_sql = f"WITH {'NO ' if expression.args.get('no') else ''}DATA" - 965 statistics = expression.args.get("statistics") - 966 statistics_sql = "" - 967 if statistics is not None: - 968 statistics_sql = f" AND {'NO ' if not statistics else ''}STATISTICS" - 969 return f"{data_sql}{statistics_sql}" - 970 - 971 def insert_sql(self, expression: exp.Insert) -> str: - 972 overwrite = expression.args.get("overwrite") - 973 - 974 if isinstance(expression.this, exp.Directory): - 975 this = "OVERWRITE " if overwrite else "INTO " - 976 else: - 977 this = "OVERWRITE TABLE " if overwrite else "INTO " - 978 - 979 alternative = expression.args.get("alternative") - 980 alternative = f" OR {alternative} " if alternative else " " - 981 this = f"{this}{self.sql(expression, 'this')}" - 982 - 983 exists = " IF EXISTS " if expression.args.get("exists") else " " - 984 partition_sql = ( - 985 self.sql(expression, "partition") if expression.args.get("partition") else "" - 986 ) - 987 expression_sql = self.sql(expression, "expression") - 988 returning = self.sql(expression, "returning") - 989 sep = self.sep() if partition_sql else "" - 990 sql = f"INSERT{alternative}{this}{exists}{partition_sql}{sep}{expression_sql}{returning}" - 991 return self.prepend_ctes(expression, sql) - 992 - 993 def intersect_sql(self, expression: exp.Intersect) -> str: - 994 return self.prepend_ctes( - 995 expression, - 996 self.set_operation(expression, self.intersect_op(expression)), - 997 ) - 998 - 999 def intersect_op(self, expression: exp.Intersect) -> str: -1000 return f"INTERSECT{'' if expression.args.get('distinct') else ' ALL'}" + 858 def properties( + 859 self, + 860 properties: exp.Properties, + 861 prefix: str = "", + 862 sep: str = ", ", + 863 suffix: str = "", + 864 wrapped: bool = True, + 865 ) -> str: + 866 if properties.expressions: + 867 expressions = self.expressions(properties, sep=sep, indent=False) + 868 expressions = self.wrap(expressions) if wrapped else expressions + 869 return f"{prefix}{' ' if prefix and prefix != ' ' else ''}{expressions}{suffix}" + 870 return "" + 871 + 872 def with_properties(self, properties: exp.Properties) -> str: + 873 return self.properties(properties, prefix=self.seg("WITH")) + 874 + 875 def locate_properties( + 876 self, properties: exp.Properties + 877 ) -> t.Dict[exp.Properties.Location, list[exp.Property]]: + 878 properties_locs: t.Dict[exp.Properties.Location, list[exp.Property]] = { + 879 key: [] for key in exp.Properties.Location + 880 } + 881 + 882 for p in properties.expressions: + 883 p_loc = self.PROPERTIES_LOCATION[p.__class__] + 884 if p_loc == exp.Properties.Location.POST_NAME: + 885 properties_locs[exp.Properties.Location.POST_NAME].append(p) + 886 elif p_loc == exp.Properties.Location.POST_INDEX: + 887 properties_locs[exp.Properties.Location.POST_INDEX].append(p) + 888 elif p_loc == exp.Properties.Location.POST_SCHEMA: + 889 properties_locs[exp.Properties.Location.POST_SCHEMA].append(p) + 890 elif p_loc == exp.Properties.Location.POST_WITH: + 891 properties_locs[exp.Properties.Location.POST_WITH].append(p) + 892 elif p_loc == exp.Properties.Location.POST_CREATE: + 893 properties_locs[exp.Properties.Location.POST_CREATE].append(p) + 894 elif p_loc == exp.Properties.Location.POST_ALIAS: + 895 properties_locs[exp.Properties.Location.POST_ALIAS].append(p) + 896 elif p_loc == exp.Properties.Location.POST_EXPRESSION: + 897 properties_locs[exp.Properties.Location.POST_EXPRESSION].append(p) + 898 elif p_loc == exp.Properties.Location.UNSUPPORTED: + 899 self.unsupported(f"Unsupported property {p.key}") + 900 + 901 return properties_locs + 902 + 903 def property_sql(self, expression: exp.Property) -> str: + 904 property_cls = expression.__class__ + 905 if property_cls == exp.Property: + 906 return f"{expression.name}={self.sql(expression, 'value')}" + 907 + 908 property_name = exp.Properties.PROPERTY_TO_NAME.get(property_cls) + 909 if not property_name: + 910 self.unsupported(f"Unsupported property {expression.key}") + 911 + 912 return f"{property_name}={self.sql(expression, 'this')}" + 913 + 914 def likeproperty_sql(self, expression: exp.LikeProperty) -> str: + 915 options = " ".join(f"{e.name} {self.sql(e, 'value')}" for e in expression.expressions) + 916 options = f" {options}" if options else "" + 917 return f"LIKE {self.sql(expression, 'this')}{options}" + 918 + 919 def fallbackproperty_sql(self, expression: exp.FallbackProperty) -> str: + 920 no = "NO " if expression.args.get("no") else "" + 921 protection = " PROTECTION" if expression.args.get("protection") else "" + 922 return f"{no}FALLBACK{protection}" + 923 + 924 def journalproperty_sql(self, expression: exp.JournalProperty) -> str: + 925 no = "NO " if expression.args.get("no") else "" + 926 dual = "DUAL " if expression.args.get("dual") else "" + 927 before = "BEFORE " if expression.args.get("before") else "" + 928 return f"{no}{dual}{before}JOURNAL" + 929 + 930 def freespaceproperty_sql(self, expression: exp.FreespaceProperty) -> str: + 931 freespace = self.sql(expression, "this") + 932 percent = " PERCENT" if expression.args.get("percent") else "" + 933 return f"FREESPACE={freespace}{percent}" + 934 + 935 def afterjournalproperty_sql(self, expression: exp.AfterJournalProperty) -> str: + 936 no = "NO " if expression.args.get("no") else "" + 937 dual = "DUAL " if expression.args.get("dual") else "" + 938 local = "" + 939 if expression.args.get("local") is not None: + 940 local = "LOCAL " if expression.args.get("local") else "NOT LOCAL " + 941 return f"{no}{dual}{local}AFTER JOURNAL" + 942 + 943 def checksumproperty_sql(self, expression: exp.ChecksumProperty) -> str: + 944 if expression.args.get("default"): + 945 property = "DEFAULT" + 946 elif expression.args.get("on"): + 947 property = "ON" + 948 else: + 949 property = "OFF" + 950 return f"CHECKSUM={property}" + 951 + 952 def mergeblockratioproperty_sql(self, expression: exp.MergeBlockRatioProperty) -> str: + 953 if expression.args.get("no"): + 954 return "NO MERGEBLOCKRATIO" + 955 if expression.args.get("default"): + 956 return "DEFAULT MERGEBLOCKRATIO" + 957 + 958 percent = " PERCENT" if expression.args.get("percent") else "" + 959 return f"MERGEBLOCKRATIO={self.sql(expression, 'this')}{percent}" + 960 + 961 def datablocksizeproperty_sql(self, expression: exp.DataBlocksizeProperty) -> str: + 962 default = expression.args.get("default") + 963 min = expression.args.get("min") + 964 if default is not None or min is not None: + 965 if default: + 966 property = "DEFAULT" + 967 elif min: + 968 property = "MINIMUM" + 969 else: + 970 property = "MAXIMUM" + 971 return f"{property} DATABLOCKSIZE" + 972 else: + 973 units = expression.args.get("units") + 974 units = f" {units}" if units else "" + 975 return f"DATABLOCKSIZE={self.sql(expression, 'size')}{units}" + 976 + 977 def blockcompressionproperty_sql(self, expression: exp.BlockCompressionProperty) -> str: + 978 autotemp = expression.args.get("autotemp") + 979 always = expression.args.get("always") + 980 default = expression.args.get("default") + 981 manual = expression.args.get("manual") + 982 never = expression.args.get("never") + 983 + 984 if autotemp is not None: + 985 property = f"AUTOTEMP({self.expressions(autotemp)})" + 986 elif always: + 987 property = "ALWAYS" + 988 elif default: + 989 property = "DEFAULT" + 990 elif manual: + 991 property = "MANUAL" + 992 elif never: + 993 property = "NEVER" + 994 return f"BLOCKCOMPRESSION={property}" + 995 + 996 def isolatedloadingproperty_sql(self, expression: exp.IsolatedLoadingProperty) -> str: + 997 no = expression.args.get("no") + 998 no = " NO" if no else "" + 999 concurrent = expression.args.get("concurrent") +1000 concurrent = " CONCURRENT" if concurrent else "" 1001 -1002 def introducer_sql(self, expression: exp.Introducer) -> str: -1003 return f"{self.sql(expression, 'this')} {self.sql(expression, 'expression')}" -1004 -1005 def pseudotype_sql(self, expression: exp.PseudoType) -> str: -1006 return expression.name.upper() -1007 -1008 def returning_sql(self, expression: exp.Returning) -> str: -1009 return f"{self.seg('RETURNING')} {self.expressions(expression, flat=True)}" +1002 for_ = "" +1003 if expression.args.get("for_all"): +1004 for_ = " FOR ALL" +1005 elif expression.args.get("for_insert"): +1006 for_ = " FOR INSERT" +1007 elif expression.args.get("for_none"): +1008 for_ = " FOR NONE" +1009 return f"WITH{no}{concurrent} ISOLATED LOADING{for_}" 1010 -1011 def rowformatdelimitedproperty_sql(self, expression: exp.RowFormatDelimitedProperty) -> str: -1012 fields = expression.args.get("fields") -1013 fields = f" FIELDS TERMINATED BY {fields}" if fields else "" -1014 escaped = expression.args.get("escaped") -1015 escaped = f" ESCAPED BY {escaped}" if escaped else "" -1016 items = expression.args.get("collection_items") -1017 items = f" COLLECTION ITEMS TERMINATED BY {items}" if items else "" -1018 keys = expression.args.get("map_keys") -1019 keys = f" MAP KEYS TERMINATED BY {keys}" if keys else "" -1020 lines = expression.args.get("lines") -1021 lines = f" LINES TERMINATED BY {lines}" if lines else "" -1022 null = expression.args.get("null") -1023 null = f" NULL DEFINED AS {null}" if null else "" -1024 return f"ROW FORMAT DELIMITED{fields}{escaped}{items}{keys}{lines}{null}" -1025 -1026 def table_sql(self, expression: exp.Table, sep: str = " AS ") -> str: -1027 table = ".".join( -1028 part -1029 for part in [ -1030 self.sql(expression, "catalog"), -1031 self.sql(expression, "db"), -1032 self.sql(expression, "this"), -1033 ] -1034 if part -1035 ) -1036 -1037 alias = self.sql(expression, "alias") -1038 alias = f"{sep}{alias}" if alias else "" -1039 hints = self.expressions(expression, key="hints", sep=", ", flat=True) -1040 hints = f" WITH ({hints})" if hints else "" -1041 laterals = self.expressions(expression, key="laterals", sep="") -1042 joins = self.expressions(expression, key="joins", sep="") -1043 pivots = self.expressions(expression, key="pivots", sep="") -1044 system_time = expression.args.get("system_time") -1045 system_time = f" {self.sql(expression, 'system_time')}" if system_time else "" -1046 -1047 return f"{table}{system_time}{alias}{hints}{laterals}{joins}{pivots}" -1048 -1049 def tablesample_sql(self, expression: exp.TableSample, seed_prefix: str = "SEED") -> str: -1050 if self.alias_post_tablesample and expression.this.alias: -1051 this = self.sql(expression.this, "this") -1052 alias = f" AS {self.sql(expression.this, 'alias')}" -1053 else: -1054 this = self.sql(expression, "this") -1055 alias = "" -1056 method = self.sql(expression, "method") -1057 method = f"{method.upper()} " if method else "" -1058 numerator = self.sql(expression, "bucket_numerator") -1059 denominator = self.sql(expression, "bucket_denominator") -1060 field = self.sql(expression, "bucket_field") -1061 field = f" ON {field}" if field else "" -1062 bucket = f"BUCKET {numerator} OUT OF {denominator}{field}" if numerator else "" -1063 percent = self.sql(expression, "percent") -1064 percent = f"{percent} PERCENT" if percent else "" -1065 rows = self.sql(expression, "rows") -1066 rows = f"{rows} ROWS" if rows else "" -1067 size = self.sql(expression, "size") -1068 seed = self.sql(expression, "seed") -1069 seed = f" {seed_prefix} ({seed})" if seed else "" -1070 kind = expression.args.get("kind", "TABLESAMPLE") -1071 return f"{this} {kind} {method}({bucket}{percent}{rows}{size}){seed}{alias}" -1072 -1073 def pivot_sql(self, expression: exp.Pivot) -> str: -1074 this = self.sql(expression, "this") -1075 alias = self.sql(expression, "alias") -1076 alias = f" AS {alias}" if alias else "" -1077 unpivot = expression.args.get("unpivot") -1078 direction = "UNPIVOT" if unpivot else "PIVOT" -1079 expressions = self.expressions(expression, key="expressions") -1080 field = self.sql(expression, "field") -1081 return f"{this} {direction}({expressions} FOR {field}){alias}" -1082 -1083 def tuple_sql(self, expression: exp.Tuple) -> str: -1084 return f"({self.expressions(expression, flat=True)})" -1085 -1086 def update_sql(self, expression: exp.Update) -> str: -1087 this = self.sql(expression, "this") -1088 set_sql = self.expressions(expression, flat=True) -1089 from_sql = self.sql(expression, "from") -1090 where_sql = self.sql(expression, "where") -1091 returning = self.sql(expression, "returning") -1092 sql = f"UPDATE {this} SET {set_sql}{from_sql}{where_sql}{returning}" -1093 return self.prepend_ctes(expression, sql) -1094 -1095 def values_sql(self, expression: exp.Values) -> str: -1096 args = self.expressions(expression) -1097 alias = self.sql(expression, "alias") -1098 values = f"VALUES{self.seg('')}{args}" -1099 values = ( -1100 f"({values})" -1101 if self.WRAP_DERIVED_VALUES and (alias or isinstance(expression.parent, exp.From)) -1102 else values -1103 ) -1104 return f"{values} AS {alias}" if alias else values -1105 -1106 def var_sql(self, expression: exp.Var) -> str: -1107 return self.sql(expression, "this") -1108 -1109 def into_sql(self, expression: exp.Into) -> str: -1110 temporary = " TEMPORARY" if expression.args.get("temporary") else "" -1111 unlogged = " UNLOGGED" if expression.args.get("unlogged") else "" -1112 return f"{self.seg('INTO')}{temporary or unlogged} {self.sql(expression, 'this')}" -1113 -1114 def from_sql(self, expression: exp.From) -> str: -1115 expressions = self.expressions(expression, flat=True) -1116 return f"{self.seg('FROM')} {expressions}" -1117 -1118 def group_sql(self, expression: exp.Group) -> str: -1119 group_by = self.op_expressions("GROUP BY", expression) -1120 grouping_sets = self.expressions(expression, key="grouping_sets", indent=False) -1121 grouping_sets = ( -1122 f"{self.seg('GROUPING SETS')} {self.wrap(grouping_sets)}" if grouping_sets else "" -1123 ) -1124 -1125 cube = expression.args.get("cube", []) -1126 if seq_get(cube, 0) is True: -1127 return f"{group_by}{self.seg('WITH CUBE')}" -1128 else: -1129 cube_sql = self.expressions(expression, key="cube", indent=False) -1130 cube_sql = f"{self.seg('CUBE')} {self.wrap(cube_sql)}" if cube_sql else "" -1131 -1132 rollup = expression.args.get("rollup", []) -1133 if seq_get(rollup, 0) is True: -1134 return f"{group_by}{self.seg('WITH ROLLUP')}" -1135 else: -1136 rollup_sql = self.expressions(expression, key="rollup", indent=False) -1137 rollup_sql = f"{self.seg('ROLLUP')} {self.wrap(rollup_sql)}" if rollup_sql else "" -1138 -1139 groupings = csv(grouping_sets, cube_sql, rollup_sql, sep=",") -1140 -1141 if expression.args.get("expressions") and groupings: -1142 group_by = f"{group_by}," -1143 -1144 return f"{group_by}{groupings}" -1145 -1146 def having_sql(self, expression: exp.Having) -> str: -1147 this = self.indent(self.sql(expression, "this")) -1148 return f"{self.seg('HAVING')}{self.sep()}{this}" -1149 -1150 def join_sql(self, expression: exp.Join) -> str: -1151 op_sql = self.seg( -1152 " ".join( -1153 op -1154 for op in ( -1155 "NATURAL" if expression.args.get("natural") else None, -1156 expression.side, -1157 expression.kind, -1158 "JOIN", -1159 ) -1160 if op -1161 ) -1162 ) -1163 on_sql = self.sql(expression, "on") -1164 using = expression.args.get("using") -1165 -1166 if not on_sql and using: -1167 on_sql = csv(*(self.sql(column) for column in using)) -1168 -1169 if on_sql: -1170 on_sql = self.indent(on_sql, skip_first=True) -1171 space = self.seg(" " * self.pad) if self.pretty else " " -1172 if using: -1173 on_sql = f"{space}USING ({on_sql})" -1174 else: -1175 on_sql = f"{space}ON {on_sql}" -1176 -1177 expression_sql = self.sql(expression, "expression") -1178 this_sql = self.sql(expression, "this") -1179 return f"{expression_sql}{op_sql} {this_sql}{on_sql}" +1011 def lockingproperty_sql(self, expression: exp.LockingProperty) -> str: +1012 kind = expression.args.get("kind") +1013 this: str = f" {this}" if expression.this else "" +1014 for_or_in = expression.args.get("for_or_in") +1015 lock_type = expression.args.get("lock_type") +1016 override = " OVERRIDE" if expression.args.get("override") else "" +1017 return f"LOCKING {kind}{this} {for_or_in} {lock_type}{override}" +1018 +1019 def withdataproperty_sql(self, expression: exp.WithDataProperty) -> str: +1020 data_sql = f"WITH {'NO ' if expression.args.get('no') else ''}DATA" +1021 statistics = expression.args.get("statistics") +1022 statistics_sql = "" +1023 if statistics is not None: +1024 statistics_sql = f" AND {'NO ' if not statistics else ''}STATISTICS" +1025 return f"{data_sql}{statistics_sql}" +1026 +1027 def insert_sql(self, expression: exp.Insert) -> str: +1028 overwrite = expression.args.get("overwrite") +1029 +1030 if isinstance(expression.this, exp.Directory): +1031 this = "OVERWRITE " if overwrite else "INTO " +1032 else: +1033 this = "OVERWRITE TABLE " if overwrite else "INTO " +1034 +1035 alternative = expression.args.get("alternative") +1036 alternative = f" OR {alternative} " if alternative else " " +1037 this = f"{this}{self.sql(expression, 'this')}" +1038 +1039 exists = " IF EXISTS " if expression.args.get("exists") else " " +1040 partition_sql = ( +1041 self.sql(expression, "partition") if expression.args.get("partition") else "" +1042 ) +1043 expression_sql = self.sql(expression, "expression") +1044 conflict = self.sql(expression, "conflict") +1045 returning = self.sql(expression, "returning") +1046 sep = self.sep() if partition_sql else "" +1047 sql = f"INSERT{alternative}{this}{exists}{partition_sql}{sep}{expression_sql}{conflict}{returning}" +1048 return self.prepend_ctes(expression, sql) +1049 +1050 def intersect_sql(self, expression: exp.Intersect) -> str: +1051 return self.prepend_ctes( +1052 expression, +1053 self.set_operation(expression, self.intersect_op(expression)), +1054 ) +1055 +1056 def intersect_op(self, expression: exp.Intersect) -> str: +1057 return f"INTERSECT{'' if expression.args.get('distinct') else ' ALL'}" +1058 +1059 def introducer_sql(self, expression: exp.Introducer) -> str: +1060 return f"{self.sql(expression, 'this')} {self.sql(expression, 'expression')}" +1061 +1062 def pseudotype_sql(self, expression: exp.PseudoType) -> str: +1063 return expression.name.upper() +1064 +1065 def onconflict_sql(self, expression: exp.OnConflict) -> str: +1066 conflict = "ON DUPLICATE KEY" if expression.args.get("duplicate") else "ON CONFLICT" +1067 constraint = self.sql(expression, "constraint") +1068 if constraint: +1069 constraint = f"ON CONSTRAINT {constraint}" +1070 key = self.expressions(expression, key="key", flat=True) +1071 do = "" if expression.args.get("duplicate") else " DO " +1072 nothing = "NOTHING" if expression.args.get("nothing") else "" +1073 expressions = self.expressions(expression, flat=True) +1074 if expressions: +1075 expressions = f"UPDATE SET {expressions}" +1076 return f"{self.seg(conflict)} {constraint}{key}{do}{nothing}{expressions}" +1077 +1078 def returning_sql(self, expression: exp.Returning) -> str: +1079 return f"{self.seg('RETURNING')} {self.expressions(expression, flat=True)}" +1080 +1081 def rowformatdelimitedproperty_sql(self, expression: exp.RowFormatDelimitedProperty) -> str: +1082 fields = expression.args.get("fields") +1083 fields = f" FIELDS TERMINATED BY {fields}" if fields else "" +1084 escaped = expression.args.get("escaped") +1085 escaped = f" ESCAPED BY {escaped}" if escaped else "" +1086 items = expression.args.get("collection_items") +1087 items = f" COLLECTION ITEMS TERMINATED BY {items}" if items else "" +1088 keys = expression.args.get("map_keys") +1089 keys = f" MAP KEYS TERMINATED BY {keys}" if keys else "" +1090 lines = expression.args.get("lines") +1091 lines = f" LINES TERMINATED BY {lines}" if lines else "" +1092 null = expression.args.get("null") +1093 null = f" NULL DEFINED AS {null}" if null else "" +1094 return f"ROW FORMAT DELIMITED{fields}{escaped}{items}{keys}{lines}{null}" +1095 +1096 def table_sql(self, expression: exp.Table, sep: str = " AS ") -> str: +1097 table = ".".join( +1098 part +1099 for part in [ +1100 self.sql(expression, "catalog"), +1101 self.sql(expression, "db"), +1102 self.sql(expression, "this"), +1103 ] +1104 if part +1105 ) +1106 +1107 alias = self.sql(expression, "alias") +1108 alias = f"{sep}{alias}" if alias else "" +1109 hints = self.expressions(expression, key="hints", sep=", ", flat=True) +1110 hints = f" WITH ({hints})" if hints and self.TABLE_HINTS else "" +1111 laterals = self.expressions(expression, key="laterals", sep="") +1112 joins = self.expressions(expression, key="joins", sep="") +1113 pivots = self.expressions(expression, key="pivots", sep="") +1114 system_time = expression.args.get("system_time") +1115 system_time = f" {self.sql(expression, 'system_time')}" if system_time else "" +1116 +1117 return f"{table}{system_time}{alias}{hints}{laterals}{joins}{pivots}" +1118 +1119 def tablesample_sql(self, expression: exp.TableSample, seed_prefix: str = "SEED") -> str: +1120 if self.alias_post_tablesample and expression.this.alias: +1121 this = self.sql(expression.this, "this") +1122 alias = f" AS {self.sql(expression.this, 'alias')}" +1123 else: +1124 this = self.sql(expression, "this") +1125 alias = "" +1126 method = self.sql(expression, "method") +1127 method = f"{method.upper()} " if method and self.TABLESAMPLE_WITH_METHOD else "" +1128 numerator = self.sql(expression, "bucket_numerator") +1129 denominator = self.sql(expression, "bucket_denominator") +1130 field = self.sql(expression, "bucket_field") +1131 field = f" ON {field}" if field else "" +1132 bucket = f"BUCKET {numerator} OUT OF {denominator}{field}" if numerator else "" +1133 percent = self.sql(expression, "percent") +1134 percent = f"{percent} PERCENT" if percent else "" +1135 rows = self.sql(expression, "rows") +1136 rows = f"{rows} ROWS" if rows else "" +1137 size = self.sql(expression, "size") +1138 if size and self.TABLESAMPLE_SIZE_IS_PERCENT: +1139 size = f"{size} PERCENT" +1140 seed = self.sql(expression, "seed") +1141 seed = f" {seed_prefix} ({seed})" if seed else "" +1142 kind = expression.args.get("kind", "TABLESAMPLE") +1143 return f"{this} {kind} {method}({bucket}{percent}{rows}{size}){seed}{alias}" +1144 +1145 def pivot_sql(self, expression: exp.Pivot) -> str: +1146 this = self.sql(expression, "this") +1147 alias = self.sql(expression, "alias") +1148 alias = f" AS {alias}" if alias else "" +1149 unpivot = expression.args.get("unpivot") +1150 direction = "UNPIVOT" if unpivot else "PIVOT" +1151 expressions = self.expressions(expression, key="expressions") +1152 field = self.sql(expression, "field") +1153 return f"{this} {direction}({expressions} FOR {field}){alias}" +1154 +1155 def tuple_sql(self, expression: exp.Tuple) -> str: +1156 return f"({self.expressions(expression, flat=True)})" +1157 +1158 def update_sql(self, expression: exp.Update) -> str: +1159 this = self.sql(expression, "this") +1160 set_sql = self.expressions(expression, flat=True) +1161 from_sql = self.sql(expression, "from") +1162 where_sql = self.sql(expression, "where") +1163 returning = self.sql(expression, "returning") +1164 sql = f"UPDATE {this} SET {set_sql}{from_sql}{where_sql}{returning}" +1165 return self.prepend_ctes(expression, sql) +1166 +1167 def values_sql(self, expression: exp.Values) -> str: +1168 args = self.expressions(expression) +1169 alias = self.sql(expression, "alias") +1170 values = f"VALUES{self.seg('')}{args}" +1171 values = ( +1172 f"({values})" +1173 if self.WRAP_DERIVED_VALUES and (alias or isinstance(expression.parent, exp.From)) +1174 else values +1175 ) +1176 return f"{values} AS {alias}" if alias else values +1177 +1178 def var_sql(self, expression: exp.Var) -> str: +1179 return self.sql(expression, "this") 1180 -1181 def lambda_sql(self, expression: exp.Lambda, arrow_sep: str = "->") -> str: -1182 args = self.expressions(expression, flat=True) -1183 args = f"({args})" if len(args.split(",")) > 1 else args -1184 return f"{args} {arrow_sep} {self.sql(expression, 'this')}" +1181 def into_sql(self, expression: exp.Into) -> str: +1182 temporary = " TEMPORARY" if expression.args.get("temporary") else "" +1183 unlogged = " UNLOGGED" if expression.args.get("unlogged") else "" +1184 return f"{self.seg('INTO')}{temporary or unlogged} {self.sql(expression, 'this')}" 1185 -1186 def lateral_sql(self, expression: exp.Lateral) -> str: -1187 this = self.sql(expression, "this") -1188 -1189 if isinstance(expression.this, exp.Subquery): -1190 return f"LATERAL {this}" -1191 -1192 if expression.args.get("view"): -1193 alias = expression.args["alias"] -1194 columns = self.expressions(alias, key="columns", flat=True) -1195 table = f" {alias.name}" if alias.name else "" -1196 columns = f" AS {columns}" if columns else "" -1197 op_sql = self.seg(f"LATERAL VIEW{' OUTER' if expression.args.get('outer') else ''}") -1198 return f"{op_sql}{self.sep()}{this}{table}{columns}" -1199 -1200 alias = self.sql(expression, "alias") -1201 alias = f" AS {alias}" if alias else "" -1202 return f"LATERAL {this}{alias}" +1186 def from_sql(self, expression: exp.From) -> str: +1187 expressions = self.expressions(expression, flat=True) +1188 return f"{self.seg('FROM')} {expressions}" +1189 +1190 def group_sql(self, expression: exp.Group) -> str: +1191 group_by = self.op_expressions("GROUP BY", expression) +1192 grouping_sets = self.expressions(expression, key="grouping_sets", indent=False) +1193 grouping_sets = ( +1194 f"{self.seg('GROUPING SETS')} {self.wrap(grouping_sets)}" if grouping_sets else "" +1195 ) +1196 +1197 cube = expression.args.get("cube", []) +1198 if seq_get(cube, 0) is True: +1199 return f"{group_by}{self.seg('WITH CUBE')}" +1200 else: +1201 cube_sql = self.expressions(expression, key="cube", indent=False) +1202 cube_sql = f"{self.seg('CUBE')} {self.wrap(cube_sql)}" if cube_sql else "" 1203 -1204 def limit_sql(self, expression: exp.Limit) -> str: -1205 this = self.sql(expression, "this") -1206 return f"{this}{self.seg('LIMIT')} {self.sql(expression, 'expression')}" -1207 -1208 def offset_sql(self, expression: exp.Offset) -> str: -1209 this = self.sql(expression, "this") -1210 return f"{this}{self.seg('OFFSET')} {self.sql(expression, 'expression')}" -1211 -1212 def setitem_sql(self, expression: exp.SetItem) -> str: -1213 kind = self.sql(expression, "kind") -1214 kind = f"{kind} " if kind else "" -1215 this = self.sql(expression, "this") -1216 expressions = self.expressions(expression) -1217 collate = self.sql(expression, "collate") -1218 collate = f" COLLATE {collate}" if collate else "" -1219 global_ = "GLOBAL " if expression.args.get("global") else "" -1220 return f"{global_}{kind}{this}{expressions}{collate}" +1204 rollup = expression.args.get("rollup", []) +1205 if seq_get(rollup, 0) is True: +1206 return f"{group_by}{self.seg('WITH ROLLUP')}" +1207 else: +1208 rollup_sql = self.expressions(expression, key="rollup", indent=False) +1209 rollup_sql = f"{self.seg('ROLLUP')} {self.wrap(rollup_sql)}" if rollup_sql else "" +1210 +1211 groupings = csv(grouping_sets, cube_sql, rollup_sql, sep=",") +1212 +1213 if expression.args.get("expressions") and groupings: +1214 group_by = f"{group_by}," +1215 +1216 return f"{group_by}{groupings}" +1217 +1218 def having_sql(self, expression: exp.Having) -> str: +1219 this = self.indent(self.sql(expression, "this")) +1220 return f"{self.seg('HAVING')}{self.sep()}{this}" 1221 -1222 def set_sql(self, expression: exp.Set) -> str: -1223 expressions = ( -1224 f" {self.expressions(expression, flat=True)}" if expression.expressions else "" -1225 ) -1226 return f"SET{expressions}" -1227 -1228 def pragma_sql(self, expression: exp.Pragma) -> str: -1229 return f"PRAGMA {self.sql(expression, 'this')}" -1230 -1231 def lock_sql(self, expression: exp.Lock) -> str: -1232 if self.LOCKING_READS_SUPPORTED: -1233 lock_type = "UPDATE" if expression.args["update"] else "SHARE" -1234 return self.seg(f"FOR {lock_type}") -1235 -1236 self.unsupported("Locking reads using 'FOR UPDATE/SHARE' are not supported") -1237 return "" +1222 def join_sql(self, expression: exp.Join) -> str: +1223 op_sql = self.seg( +1224 " ".join( +1225 op +1226 for op in ( +1227 "NATURAL" if expression.args.get("natural") else None, +1228 expression.side, +1229 expression.kind, +1230 expression.hint if self.JOIN_HINTS else None, +1231 "JOIN", +1232 ) +1233 if op +1234 ) +1235 ) +1236 on_sql = self.sql(expression, "on") +1237 using = expression.args.get("using") 1238 -1239 def literal_sql(self, expression: exp.Literal) -> str: -1240 text = expression.this or "" -1241 if expression.is_string: -1242 text = text.replace(self.quote_end, self._escaped_quote_end) -1243 if self.pretty: -1244 text = text.replace("\n", self.SENTINEL_LINE_BREAK) -1245 text = f"{self.quote_start}{text}{self.quote_end}" -1246 return text -1247 -1248 def loaddata_sql(self, expression: exp.LoadData) -> str: -1249 local = " LOCAL" if expression.args.get("local") else "" -1250 inpath = f" INPATH {self.sql(expression, 'inpath')}" -1251 overwrite = " OVERWRITE" if expression.args.get("overwrite") else "" -1252 this = f" INTO TABLE {self.sql(expression, 'this')}" -1253 partition = self.sql(expression, "partition") -1254 partition = f" {partition}" if partition else "" -1255 input_format = self.sql(expression, "input_format") -1256 input_format = f" INPUTFORMAT {input_format}" if input_format else "" -1257 serde = self.sql(expression, "serde") -1258 serde = f" SERDE {serde}" if serde else "" -1259 return f"LOAD DATA{local}{inpath}{overwrite}{this}{partition}{input_format}{serde}" -1260 -1261 def null_sql(self, *_) -> str: -1262 return "NULL" -1263 -1264 def boolean_sql(self, expression: exp.Boolean) -> str: -1265 return "TRUE" if expression.this else "FALSE" -1266 -1267 def order_sql(self, expression: exp.Order, flat: bool = False) -> str: -1268 this = self.sql(expression, "this") -1269 this = f"{this} " if this else this -1270 return self.op_expressions(f"{this}ORDER BY", expression, flat=this or flat) # type: ignore -1271 -1272 def cluster_sql(self, expression: exp.Cluster) -> str: -1273 return self.op_expressions("CLUSTER BY", expression) -1274 -1275 def distribute_sql(self, expression: exp.Distribute) -> str: -1276 return self.op_expressions("DISTRIBUTE BY", expression) -1277 -1278 def sort_sql(self, expression: exp.Sort) -> str: -1279 return self.op_expressions("SORT BY", expression) +1239 if not on_sql and using: +1240 on_sql = csv(*(self.sql(column) for column in using)) +1241 +1242 if on_sql: +1243 on_sql = self.indent(on_sql, skip_first=True) +1244 space = self.seg(" " * self.pad) if self.pretty else " " +1245 if using: +1246 on_sql = f"{space}USING ({on_sql})" +1247 else: +1248 on_sql = f"{space}ON {on_sql}" +1249 +1250 expression_sql = self.sql(expression, "expression") +1251 this_sql = self.sql(expression, "this") +1252 return f"{expression_sql}{op_sql} {this_sql}{on_sql}" +1253 +1254 def lambda_sql(self, expression: exp.Lambda, arrow_sep: str = "->") -> str: +1255 args = self.expressions(expression, flat=True) +1256 args = f"({args})" if len(args.split(",")) > 1 else args +1257 return f"{args} {arrow_sep} {self.sql(expression, 'this')}" +1258 +1259 def lateral_sql(self, expression: exp.Lateral) -> str: +1260 this = self.sql(expression, "this") +1261 +1262 if isinstance(expression.this, exp.Subquery): +1263 return f"LATERAL {this}" +1264 +1265 if expression.args.get("view"): +1266 alias = expression.args["alias"] +1267 columns = self.expressions(alias, key="columns", flat=True) +1268 table = f" {alias.name}" if alias.name else "" +1269 columns = f" AS {columns}" if columns else "" +1270 op_sql = self.seg(f"LATERAL VIEW{' OUTER' if expression.args.get('outer') else ''}") +1271 return f"{op_sql}{self.sep()}{this}{table}{columns}" +1272 +1273 alias = self.sql(expression, "alias") +1274 alias = f" AS {alias}" if alias else "" +1275 return f"LATERAL {this}{alias}" +1276 +1277 def limit_sql(self, expression: exp.Limit) -> str: +1278 this = self.sql(expression, "this") +1279 return f"{this}{self.seg('LIMIT')} {self.sql(expression, 'expression')}" 1280 -1281 def ordered_sql(self, expression: exp.Ordered) -> str: -1282 desc = expression.args.get("desc") -1283 asc = not desc +1281 def offset_sql(self, expression: exp.Offset) -> str: +1282 this = self.sql(expression, "this") +1283 return f"{this}{self.seg('OFFSET')} {self.sql(expression, 'expression')}" 1284 -1285 nulls_first = expression.args.get("nulls_first") -1286 nulls_last = not nulls_first -1287 nulls_are_large = self.null_ordering == "nulls_are_large" -1288 nulls_are_small = self.null_ordering == "nulls_are_small" -1289 nulls_are_last = self.null_ordering == "nulls_are_last" -1290 -1291 sort_order = " DESC" if desc else "" -1292 nulls_sort_change = "" -1293 if nulls_first and ( -1294 (asc and nulls_are_large) or (desc and nulls_are_small) or nulls_are_last -1295 ): -1296 nulls_sort_change = " NULLS FIRST" -1297 elif ( -1298 nulls_last -1299 and ((asc and nulls_are_small) or (desc and nulls_are_large)) -1300 and not nulls_are_last -1301 ): -1302 nulls_sort_change = " NULLS LAST" +1285 def setitem_sql(self, expression: exp.SetItem) -> str: +1286 kind = self.sql(expression, "kind") +1287 kind = f"{kind} " if kind else "" +1288 this = self.sql(expression, "this") +1289 expressions = self.expressions(expression) +1290 collate = self.sql(expression, "collate") +1291 collate = f" COLLATE {collate}" if collate else "" +1292 global_ = "GLOBAL " if expression.args.get("global") else "" +1293 return f"{global_}{kind}{this}{expressions}{collate}" +1294 +1295 def set_sql(self, expression: exp.Set) -> str: +1296 expressions = ( +1297 f" {self.expressions(expression, flat=True)}" if expression.expressions else "" +1298 ) +1299 return f"SET{expressions}" +1300 +1301 def pragma_sql(self, expression: exp.Pragma) -> str: +1302 return f"PRAGMA {self.sql(expression, 'this')}" 1303 -1304 if nulls_sort_change and not self.NULL_ORDERING_SUPPORTED: -1305 self.unsupported( -1306 "Sorting in an ORDER BY on NULLS FIRST/NULLS LAST is not supported by this dialect" -1307 ) -1308 nulls_sort_change = "" -1309 -1310 return f"{self.sql(expression, 'this')}{sort_order}{nulls_sort_change}" +1304 def lock_sql(self, expression: exp.Lock) -> str: +1305 if self.LOCKING_READS_SUPPORTED: +1306 lock_type = "UPDATE" if expression.args["update"] else "SHARE" +1307 return self.seg(f"FOR {lock_type}") +1308 +1309 self.unsupported("Locking reads using 'FOR UPDATE/SHARE' are not supported") +1310 return "" 1311 -1312 def matchrecognize_sql(self, expression: exp.MatchRecognize) -> str: -1313 partition = self.partition_by_sql(expression) -1314 order = self.sql(expression, "order") -1315 measures = self.sql(expression, "measures") -1316 measures = self.seg(f"MEASURES {measures}") if measures else "" -1317 rows = self.sql(expression, "rows") -1318 rows = self.seg(rows) if rows else "" -1319 after = self.sql(expression, "after") -1320 after = self.seg(after) if after else "" -1321 pattern = self.sql(expression, "pattern") -1322 pattern = self.seg(f"PATTERN ({pattern})") if pattern else "" -1323 define = self.sql(expression, "define") -1324 define = self.seg(f"DEFINE {define}") if define else "" -1325 body = "".join( -1326 ( -1327 partition, -1328 order, -1329 measures, -1330 rows, -1331 after, -1332 pattern, -1333 define, -1334 ) -1335 ) -1336 return f"{self.seg('MATCH_RECOGNIZE')} {self.wrap(body)}" -1337 -1338 def query_modifiers(self, expression: exp.Expression, *sqls: str) -> str: -1339 limit = expression.args.get("limit") -1340 -1341 if self.LIMIT_FETCH == "LIMIT" and isinstance(limit, exp.Fetch): -1342 limit = exp.Limit(expression=limit.args.get("count")) -1343 elif self.LIMIT_FETCH == "FETCH" and isinstance(limit, exp.Limit): -1344 limit = exp.Fetch(direction="FIRST", count=limit.expression) -1345 -1346 fetch = isinstance(limit, exp.Fetch) +1312 def literal_sql(self, expression: exp.Literal) -> str: +1313 text = expression.this or "" +1314 if expression.is_string: +1315 text = text.replace(self.quote_end, self._escaped_quote_end) +1316 if self.pretty: +1317 text = text.replace("\n", self.SENTINEL_LINE_BREAK) +1318 text = f"{self.quote_start}{text}{self.quote_end}" +1319 return text +1320 +1321 def loaddata_sql(self, expression: exp.LoadData) -> str: +1322 local = " LOCAL" if expression.args.get("local") else "" +1323 inpath = f" INPATH {self.sql(expression, 'inpath')}" +1324 overwrite = " OVERWRITE" if expression.args.get("overwrite") else "" +1325 this = f" INTO TABLE {self.sql(expression, 'this')}" +1326 partition = self.sql(expression, "partition") +1327 partition = f" {partition}" if partition else "" +1328 input_format = self.sql(expression, "input_format") +1329 input_format = f" INPUTFORMAT {input_format}" if input_format else "" +1330 serde = self.sql(expression, "serde") +1331 serde = f" SERDE {serde}" if serde else "" +1332 return f"LOAD DATA{local}{inpath}{overwrite}{this}{partition}{input_format}{serde}" +1333 +1334 def null_sql(self, *_) -> str: +1335 return "NULL" +1336 +1337 def boolean_sql(self, expression: exp.Boolean) -> str: +1338 return "TRUE" if expression.this else "FALSE" +1339 +1340 def order_sql(self, expression: exp.Order, flat: bool = False) -> str: +1341 this = self.sql(expression, "this") +1342 this = f"{this} " if this else this +1343 return self.op_expressions(f"{this}ORDER BY", expression, flat=this or flat) # type: ignore +1344 +1345 def cluster_sql(self, expression: exp.Cluster) -> str: +1346 return self.op_expressions("CLUSTER BY", expression) 1347 -1348 return csv( -1349 *sqls, -1350 *[self.sql(sql) for sql in expression.args.get("joins") or []], -1351 self.sql(expression, "match"), -1352 *[self.sql(sql) for sql in expression.args.get("laterals") or []], -1353 self.sql(expression, "where"), -1354 self.sql(expression, "group"), -1355 self.sql(expression, "having"), -1356 self.sql(expression, "qualify"), -1357 self.seg("WINDOW ") + self.expressions(expression, "windows", flat=True) -1358 if expression.args.get("windows") -1359 else "", -1360 self.sql(expression, "distribute"), -1361 self.sql(expression, "sort"), -1362 self.sql(expression, "cluster"), -1363 self.sql(expression, "order"), -1364 self.sql(expression, "offset") if fetch else self.sql(limit), -1365 self.sql(limit) if fetch else self.sql(expression, "offset"), -1366 self.sql(expression, "lock"), -1367 self.sql(expression, "sample"), -1368 sep="", -1369 ) -1370 -1371 def select_sql(self, expression: exp.Select) -> str: -1372 kind = expression.args.get("kind") -1373 kind = f" AS {kind}" if kind else "" -1374 hint = self.sql(expression, "hint") -1375 distinct = self.sql(expression, "distinct") -1376 distinct = f" {distinct}" if distinct else "" -1377 expressions = self.expressions(expression) -1378 expressions = f"{self.sep()}{expressions}" if expressions else expressions -1379 sql = self.query_modifiers( -1380 expression, -1381 f"SELECT{kind}{hint}{distinct}{expressions}", -1382 self.sql(expression, "into", comment=False), -1383 self.sql(expression, "from", comment=False), -1384 ) -1385 return self.prepend_ctes(expression, sql) -1386 -1387 def schema_sql(self, expression: exp.Schema) -> str: -1388 this = self.sql(expression, "this") -1389 this = f"{this} " if this else "" -1390 sql = f"({self.sep('')}{self.expressions(expression)}{self.seg(')', sep='')}" -1391 return f"{this}{sql}" -1392 -1393 def star_sql(self, expression: exp.Star) -> str: -1394 except_ = self.expressions(expression, key="except", flat=True) -1395 except_ = f"{self.seg(self.STAR_MAPPING['except'])} ({except_})" if except_ else "" -1396 replace = self.expressions(expression, key="replace", flat=True) -1397 replace = f"{self.seg(self.STAR_MAPPING['replace'])} ({replace})" if replace else "" -1398 return f"*{except_}{replace}" -1399 -1400 def structkwarg_sql(self, expression: exp.StructKwarg) -> str: -1401 return f"{self.sql(expression, 'this')} {self.sql(expression, 'expression')}" -1402 -1403 def parameter_sql(self, expression: exp.Parameter) -> str: -1404 this = self.sql(expression, "this") -1405 this = f"{{{this}}}" if expression.args.get("wrapped") else f"{this}" -1406 return f"{self.PARAMETER_TOKEN}{this}" -1407 -1408 def sessionparameter_sql(self, expression: exp.SessionParameter) -> str: -1409 this = self.sql(expression, "this") -1410 kind = expression.text("kind") -1411 if kind: -1412 kind = f"{kind}." -1413 return f"@@{kind}{this}" -1414 -1415 def placeholder_sql(self, expression: exp.Placeholder) -> str: -1416 return f":{expression.name}" if expression.name else "?" -1417 -1418 def subquery_sql(self, expression: exp.Subquery, sep: str = " AS ") -> str: -1419 alias = self.sql(expression, "alias") -1420 alias = f"{sep}{alias}" if alias else "" -1421 -1422 sql = self.query_modifiers( -1423 expression, -1424 self.wrap(expression), -1425 alias, -1426 self.expressions(expression, key="pivots", sep=" "), -1427 ) -1428 -1429 return self.prepend_ctes(expression, sql) -1430 -1431 def qualify_sql(self, expression: exp.Qualify) -> str: -1432 this = self.indent(self.sql(expression, "this")) -1433 return f"{self.seg('QUALIFY')}{self.sep()}{this}" -1434 -1435 def union_sql(self, expression: exp.Union) -> str: -1436 return self.prepend_ctes( -1437 expression, -1438 self.set_operation(expression, self.union_op(expression)), -1439 ) -1440 -1441 def union_op(self, expression: exp.Union) -> str: -1442 kind = " DISTINCT" if self.EXPLICIT_UNION else "" -1443 kind = kind if expression.args.get("distinct") else " ALL" -1444 return f"UNION{kind}" -1445 -1446 def unnest_sql(self, expression: exp.Unnest) -> str: -1447 args = self.expressions(expression, flat=True) -1448 alias = expression.args.get("alias") -1449 if alias and self.unnest_column_only: -1450 columns = alias.columns -1451 alias = self.sql(columns[0]) if columns else "" -1452 else: -1453 alias = self.sql(expression, "alias") -1454 alias = f" AS {alias}" if alias else alias -1455 ordinality = " WITH ORDINALITY" if expression.args.get("ordinality") else "" -1456 offset = expression.args.get("offset") -1457 offset = f" WITH OFFSET AS {self.sql(offset)}" if offset else "" -1458 return f"UNNEST({args}){ordinality}{alias}{offset}" -1459 -1460 def where_sql(self, expression: exp.Where) -> str: -1461 this = self.indent(self.sql(expression, "this")) -1462 return f"{self.seg('WHERE')}{self.sep()}{this}" -1463 -1464 def window_sql(self, expression: exp.Window) -> str: -1465 this = self.sql(expression, "this") -1466 -1467 partition = self.partition_by_sql(expression) -1468 -1469 order = expression.args.get("order") -1470 order_sql = self.order_sql(order, flat=True) if order else "" +1348 def distribute_sql(self, expression: exp.Distribute) -> str: +1349 return self.op_expressions("DISTRIBUTE BY", expression) +1350 +1351 def sort_sql(self, expression: exp.Sort) -> str: +1352 return self.op_expressions("SORT BY", expression) +1353 +1354 def ordered_sql(self, expression: exp.Ordered) -> str: +1355 desc = expression.args.get("desc") +1356 asc = not desc +1357 +1358 nulls_first = expression.args.get("nulls_first") +1359 nulls_last = not nulls_first +1360 nulls_are_large = self.null_ordering == "nulls_are_large" +1361 nulls_are_small = self.null_ordering == "nulls_are_small" +1362 nulls_are_last = self.null_ordering == "nulls_are_last" +1363 +1364 sort_order = " DESC" if desc else "" +1365 nulls_sort_change = "" +1366 if nulls_first and ( +1367 (asc and nulls_are_large) or (desc and nulls_are_small) or nulls_are_last +1368 ): +1369 nulls_sort_change = " NULLS FIRST" +1370 elif ( +1371 nulls_last +1372 and ((asc and nulls_are_small) or (desc and nulls_are_large)) +1373 and not nulls_are_last +1374 ): +1375 nulls_sort_change = " NULLS LAST" +1376 +1377 if nulls_sort_change and not self.NULL_ORDERING_SUPPORTED: +1378 self.unsupported( +1379 "Sorting in an ORDER BY on NULLS FIRST/NULLS LAST is not supported by this dialect" +1380 ) +1381 nulls_sort_change = "" +1382 +1383 return f"{self.sql(expression, 'this')}{sort_order}{nulls_sort_change}" +1384 +1385 def matchrecognize_sql(self, expression: exp.MatchRecognize) -> str: +1386 partition = self.partition_by_sql(expression) +1387 order = self.sql(expression, "order") +1388 measures = self.expressions(expression, key="measures") +1389 measures = self.seg(f"MEASURES{self.seg(measures)}") if measures else "" +1390 rows = self.sql(expression, "rows") +1391 rows = self.seg(rows) if rows else "" +1392 after = self.sql(expression, "after") +1393 after = self.seg(after) if after else "" +1394 pattern = self.sql(expression, "pattern") +1395 pattern = self.seg(f"PATTERN ({pattern})") if pattern else "" +1396 definition_sqls = [ +1397 f"{self.sql(definition, 'alias')} AS {self.sql(definition, 'this')}" +1398 for definition in expression.args.get("define", []) +1399 ] +1400 definitions = self.expressions(sqls=definition_sqls) +1401 define = self.seg(f"DEFINE{self.seg(definitions)}") if definitions else "" +1402 body = "".join( +1403 ( +1404 partition, +1405 order, +1406 measures, +1407 rows, +1408 after, +1409 pattern, +1410 define, +1411 ) +1412 ) +1413 alias = self.sql(expression, "alias") +1414 alias = f" {alias}" if alias else "" +1415 return f"{self.seg('MATCH_RECOGNIZE')} {self.wrap(body)}{alias}" +1416 +1417 def query_modifiers(self, expression: exp.Expression, *sqls: str) -> str: +1418 limit = expression.args.get("limit") +1419 +1420 if self.LIMIT_FETCH == "LIMIT" and isinstance(limit, exp.Fetch): +1421 limit = exp.Limit(expression=limit.args.get("count")) +1422 elif self.LIMIT_FETCH == "FETCH" and isinstance(limit, exp.Limit): +1423 limit = exp.Fetch(direction="FIRST", count=limit.expression) +1424 +1425 fetch = isinstance(limit, exp.Fetch) +1426 +1427 return csv( +1428 *sqls, +1429 *[self.sql(sql) for sql in expression.args.get("joins") or []], +1430 self.sql(expression, "match"), +1431 *[self.sql(sql) for sql in expression.args.get("laterals") or []], +1432 self.sql(expression, "where"), +1433 self.sql(expression, "group"), +1434 self.sql(expression, "having"), +1435 self.sql(expression, "qualify"), +1436 self.seg("WINDOW ") + self.expressions(expression, key="windows", flat=True) +1437 if expression.args.get("windows") +1438 else "", +1439 self.sql(expression, "distribute"), +1440 self.sql(expression, "sort"), +1441 self.sql(expression, "cluster"), +1442 self.sql(expression, "order"), +1443 self.sql(expression, "offset") if fetch else self.sql(limit), +1444 self.sql(limit) if fetch else self.sql(expression, "offset"), +1445 self.sql(expression, "lock"), +1446 self.sql(expression, "sample"), +1447 sep="", +1448 ) +1449 +1450 def select_sql(self, expression: exp.Select) -> str: +1451 kind = expression.args.get("kind") +1452 kind = f" AS {kind}" if kind else "" +1453 hint = self.sql(expression, "hint") +1454 distinct = self.sql(expression, "distinct") +1455 distinct = f" {distinct}" if distinct else "" +1456 expressions = self.expressions(expression) +1457 expressions = f"{self.sep()}{expressions}" if expressions else expressions +1458 sql = self.query_modifiers( +1459 expression, +1460 f"SELECT{kind}{hint}{distinct}{expressions}", +1461 self.sql(expression, "into", comment=False), +1462 self.sql(expression, "from", comment=False), +1463 ) +1464 return self.prepend_ctes(expression, sql) +1465 +1466 def schema_sql(self, expression: exp.Schema) -> str: +1467 this = self.sql(expression, "this") +1468 this = f"{this} " if this else "" +1469 sql = f"({self.sep('')}{self.expressions(expression)}{self.seg(')', sep='')}" +1470 return f"{this}{sql}" 1471 -1472 partition_sql = partition + " " if partition and order else partition -1473 -1474 spec = expression.args.get("spec") -1475 spec_sql = " " + self.window_spec_sql(spec) if spec else "" -1476 -1477 alias = self.sql(expression, "alias") -1478 this = f"{this} {'AS' if expression.arg_key == 'windows' else 'OVER'}" -1479 -1480 if not partition and not order and not spec and alias: -1481 return f"{this} {alias}" -1482 -1483 window_args = alias + partition_sql + order_sql + spec_sql -1484 -1485 return f"{this} ({window_args.strip()})" +1472 def star_sql(self, expression: exp.Star) -> str: +1473 except_ = self.expressions(expression, key="except", flat=True) +1474 except_ = f"{self.seg(self.STAR_MAPPING['except'])} ({except_})" if except_ else "" +1475 replace = self.expressions(expression, key="replace", flat=True) +1476 replace = f"{self.seg(self.STAR_MAPPING['replace'])} ({replace})" if replace else "" +1477 return f"*{except_}{replace}" +1478 +1479 def structkwarg_sql(self, expression: exp.StructKwarg) -> str: +1480 return f"{self.sql(expression, 'this')} {self.sql(expression, 'expression')}" +1481 +1482 def parameter_sql(self, expression: exp.Parameter) -> str: +1483 this = self.sql(expression, "this") +1484 this = f"{{{this}}}" if expression.args.get("wrapped") else f"{this}" +1485 return f"{self.PARAMETER_TOKEN}{this}" 1486 -1487 def partition_by_sql(self, expression: exp.Window | exp.MatchRecognize) -> str: -1488 partition = self.expressions(expression, key="partition_by", flat=True) -1489 return f"PARTITION BY {partition}" if partition else "" -1490 -1491 def window_spec_sql(self, expression: exp.WindowSpec) -> str: -1492 kind = self.sql(expression, "kind") -1493 start = csv(self.sql(expression, "start"), self.sql(expression, "start_side"), sep=" ") -1494 end = ( -1495 csv(self.sql(expression, "end"), self.sql(expression, "end_side"), sep=" ") -1496 or "CURRENT ROW" -1497 ) -1498 return f"{kind} BETWEEN {start} AND {end}" -1499 -1500 def withingroup_sql(self, expression: exp.WithinGroup) -> str: -1501 this = self.sql(expression, "this") -1502 expression_sql = self.sql(expression, "expression")[1:] # order has a leading space -1503 return f"{this} WITHIN GROUP ({expression_sql})" -1504 -1505 def between_sql(self, expression: exp.Between) -> str: -1506 this = self.sql(expression, "this") -1507 low = self.sql(expression, "low") -1508 high = self.sql(expression, "high") -1509 return f"{this} BETWEEN {low} AND {high}" -1510 -1511 def bracket_sql(self, expression: exp.Bracket) -> str: -1512 expressions = apply_index_offset(expression.expressions, self.index_offset) -1513 expressions_sql = ", ".join(self.sql(e) for e in expressions) -1514 -1515 return f"{self.sql(expression, 'this')}[{expressions_sql}]" -1516 -1517 def all_sql(self, expression: exp.All) -> str: -1518 return f"ALL {self.wrap(expression)}" +1487 def sessionparameter_sql(self, expression: exp.SessionParameter) -> str: +1488 this = self.sql(expression, "this") +1489 kind = expression.text("kind") +1490 if kind: +1491 kind = f"{kind}." +1492 return f"@@{kind}{this}" +1493 +1494 def placeholder_sql(self, expression: exp.Placeholder) -> str: +1495 return f":{expression.name}" if expression.name else "?" +1496 +1497 def subquery_sql(self, expression: exp.Subquery, sep: str = " AS ") -> str: +1498 alias = self.sql(expression, "alias") +1499 alias = f"{sep}{alias}" if alias else "" +1500 +1501 sql = self.query_modifiers( +1502 expression, +1503 self.wrap(expression), +1504 alias, +1505 self.expressions(expression, key="pivots", sep=" "), +1506 ) +1507 +1508 return self.prepend_ctes(expression, sql) +1509 +1510 def qualify_sql(self, expression: exp.Qualify) -> str: +1511 this = self.indent(self.sql(expression, "this")) +1512 return f"{self.seg('QUALIFY')}{self.sep()}{this}" +1513 +1514 def union_sql(self, expression: exp.Union) -> str: +1515 return self.prepend_ctes( +1516 expression, +1517 self.set_operation(expression, self.union_op(expression)), +1518 ) 1519 -1520 def any_sql(self, expression: exp.Any) -> str: -1521 this = self.sql(expression, "this") -1522 if isinstance(expression.this, exp.Subqueryable): -1523 this = self.wrap(this) -1524 return f"ANY {this}" -1525 -1526 def exists_sql(self, expression: exp.Exists) -> str: -1527 return f"EXISTS{self.wrap(expression)}" -1528 -1529 def case_sql(self, expression: exp.Case) -> str: -1530 this = self.sql(expression, "this") -1531 statements = [f"CASE {this}" if this else "CASE"] -1532 -1533 for e in expression.args["ifs"]: -1534 statements.append(f"WHEN {self.sql(e, 'this')}") -1535 statements.append(f"THEN {self.sql(e, 'true')}") -1536 -1537 default = self.sql(expression, "default") +1520 def union_op(self, expression: exp.Union) -> str: +1521 kind = " DISTINCT" if self.EXPLICIT_UNION else "" +1522 kind = kind if expression.args.get("distinct") else " ALL" +1523 return f"UNION{kind}" +1524 +1525 def unnest_sql(self, expression: exp.Unnest) -> str: +1526 args = self.expressions(expression, flat=True) +1527 alias = expression.args.get("alias") +1528 if alias and self.unnest_column_only: +1529 columns = alias.columns +1530 alias = self.sql(columns[0]) if columns else "" +1531 else: +1532 alias = self.sql(expression, "alias") +1533 alias = f" AS {alias}" if alias else alias +1534 ordinality = " WITH ORDINALITY" if expression.args.get("ordinality") else "" +1535 offset = expression.args.get("offset") +1536 offset = f" WITH OFFSET AS {self.sql(offset)}" if offset else "" +1537 return f"UNNEST({args}){ordinality}{alias}{offset}" 1538 -1539 if default: -1540 statements.append(f"ELSE {default}") -1541 -1542 statements.append("END") -1543 -1544 if self.pretty and self.text_width(statements) > self._max_text_width: -1545 return self.indent("\n".join(statements), skip_first=True, skip_last=True) -1546 -1547 return " ".join(statements) -1548 -1549 def constraint_sql(self, expression: exp.Constraint) -> str: -1550 this = self.sql(expression, "this") -1551 expressions = self.expressions(expression, flat=True) -1552 return f"CONSTRAINT {this} {expressions}" -1553 -1554 def extract_sql(self, expression: exp.Extract) -> str: -1555 this = self.sql(expression, "this") -1556 expression_sql = self.sql(expression, "expression") -1557 return f"EXTRACT({this} FROM {expression_sql})" +1539 def where_sql(self, expression: exp.Where) -> str: +1540 this = self.indent(self.sql(expression, "this")) +1541 return f"{self.seg('WHERE')}{self.sep()}{this}" +1542 +1543 def window_sql(self, expression: exp.Window) -> str: +1544 this = self.sql(expression, "this") +1545 +1546 partition = self.partition_by_sql(expression) +1547 +1548 order = expression.args.get("order") +1549 order_sql = self.order_sql(order, flat=True) if order else "" +1550 +1551 partition_sql = partition + " " if partition and order else partition +1552 +1553 spec = expression.args.get("spec") +1554 spec_sql = " " + self.window_spec_sql(spec) if spec else "" +1555 +1556 alias = self.sql(expression, "alias") +1557 this = f"{this} {'AS' if expression.arg_key == 'windows' else 'OVER'}" 1558 -1559 def trim_sql(self, expression: exp.Trim) -> str: -1560 trim_type = self.sql(expression, "position") +1559 if not partition and not order and not spec and alias: +1560 return f"{this} {alias}" 1561 -1562 if trim_type == "LEADING": -1563 return self.func("LTRIM", expression.this) -1564 elif trim_type == "TRAILING": -1565 return self.func("RTRIM", expression.this) -1566 else: -1567 return self.func("TRIM", expression.this, expression.expression) -1568 -1569 def concat_sql(self, expression: exp.Concat) -> str: -1570 if len(expression.expressions) == 1: -1571 return self.sql(expression.expressions[0]) -1572 return self.function_fallback_sql(expression) -1573 -1574 def check_sql(self, expression: exp.Check) -> str: -1575 this = self.sql(expression, key="this") -1576 return f"CHECK ({this})" -1577 -1578 def foreignkey_sql(self, expression: exp.ForeignKey) -> str: -1579 expressions = self.expressions(expression, flat=True) -1580 reference = self.sql(expression, "reference") -1581 reference = f" {reference}" if reference else "" -1582 delete = self.sql(expression, "delete") -1583 delete = f" ON DELETE {delete}" if delete else "" -1584 update = self.sql(expression, "update") -1585 update = f" ON UPDATE {update}" if update else "" -1586 return f"FOREIGN KEY ({expressions}){reference}{delete}{update}" -1587 -1588 def primarykey_sql(self, expression: exp.ForeignKey) -> str: -1589 expressions = self.expressions(expression, flat=True) -1590 options = self.expressions(expression, "options", flat=True, sep=" ") -1591 options = f" {options}" if options else "" -1592 return f"PRIMARY KEY ({expressions}){options}" +1562 window_args = alias + partition_sql + order_sql + spec_sql +1563 +1564 return f"{this} ({window_args.strip()})" +1565 +1566 def partition_by_sql(self, expression: exp.Window | exp.MatchRecognize) -> str: +1567 partition = self.expressions(expression, key="partition_by", flat=True) +1568 return f"PARTITION BY {partition}" if partition else "" +1569 +1570 def window_spec_sql(self, expression: exp.WindowSpec) -> str: +1571 kind = self.sql(expression, "kind") +1572 start = csv(self.sql(expression, "start"), self.sql(expression, "start_side"), sep=" ") +1573 end = ( +1574 csv(self.sql(expression, "end"), self.sql(expression, "end_side"), sep=" ") +1575 or "CURRENT ROW" +1576 ) +1577 return f"{kind} BETWEEN {start} AND {end}" +1578 +1579 def withingroup_sql(self, expression: exp.WithinGroup) -> str: +1580 this = self.sql(expression, "this") +1581 expression_sql = self.sql(expression, "expression")[1:] # order has a leading space +1582 return f"{this} WITHIN GROUP ({expression_sql})" +1583 +1584 def between_sql(self, expression: exp.Between) -> str: +1585 this = self.sql(expression, "this") +1586 low = self.sql(expression, "low") +1587 high = self.sql(expression, "high") +1588 return f"{this} BETWEEN {low} AND {high}" +1589 +1590 def bracket_sql(self, expression: exp.Bracket) -> str: +1591 expressions = apply_index_offset(expression.this, expression.expressions, self.index_offset) +1592 expressions_sql = ", ".join(self.sql(e) for e in expressions) 1593 -1594 def unique_sql(self, expression: exp.Unique) -> str: -1595 columns = self.expressions(expression, key="expressions") -1596 return f"UNIQUE ({columns})" -1597 -1598 def if_sql(self, expression: exp.If) -> str: -1599 return self.case_sql( -1600 exp.Case(ifs=[expression.copy()], default=expression.args.get("false")) -1601 ) -1602 -1603 def matchagainst_sql(self, expression: exp.MatchAgainst) -> str: -1604 modifier = expression.args.get("modifier") -1605 modifier = f" {modifier}" if modifier else "" -1606 return f"{self.func('MATCH', *expression.expressions)} AGAINST({self.sql(expression, 'this')}{modifier})" +1594 return f"{self.sql(expression, 'this')}[{expressions_sql}]" +1595 +1596 def all_sql(self, expression: exp.All) -> str: +1597 return f"ALL {self.wrap(expression)}" +1598 +1599 def any_sql(self, expression: exp.Any) -> str: +1600 this = self.sql(expression, "this") +1601 if isinstance(expression.this, exp.Subqueryable): +1602 this = self.wrap(this) +1603 return f"ANY {this}" +1604 +1605 def exists_sql(self, expression: exp.Exists) -> str: +1606 return f"EXISTS{self.wrap(expression)}" 1607 -1608 def jsonkeyvalue_sql(self, expression: exp.JSONKeyValue) -> str: -1609 return f"{self.sql(expression, 'this')}: {self.sql(expression, 'expression')}" -1610 -1611 def jsonobject_sql(self, expression: exp.JSONObject) -> str: -1612 expressions = self.expressions(expression) -1613 null_handling = expression.args.get("null_handling") -1614 null_handling = f" {null_handling}" if null_handling else "" -1615 unique_keys = expression.args.get("unique_keys") -1616 if unique_keys is not None: -1617 unique_keys = f" {'WITH' if unique_keys else 'WITHOUT'} UNIQUE KEYS" -1618 else: -1619 unique_keys = "" -1620 return_type = self.sql(expression, "return_type") -1621 return_type = f" RETURNING {return_type}" if return_type else "" -1622 format_json = " FORMAT JSON" if expression.args.get("format_json") else "" -1623 encoding = self.sql(expression, "encoding") -1624 encoding = f" ENCODING {encoding}" if encoding else "" -1625 return f"JSON_OBJECT({expressions}{null_handling}{unique_keys}{return_type}{format_json}{encoding})" -1626 -1627 def in_sql(self, expression: exp.In) -> str: -1628 query = expression.args.get("query") -1629 unnest = expression.args.get("unnest") -1630 field = expression.args.get("field") -1631 is_global = " GLOBAL" if expression.args.get("is_global") else "" +1608 def case_sql(self, expression: exp.Case) -> str: +1609 this = self.sql(expression, "this") +1610 statements = [f"CASE {this}" if this else "CASE"] +1611 +1612 for e in expression.args["ifs"]: +1613 statements.append(f"WHEN {self.sql(e, 'this')}") +1614 statements.append(f"THEN {self.sql(e, 'true')}") +1615 +1616 default = self.sql(expression, "default") +1617 +1618 if default: +1619 statements.append(f"ELSE {default}") +1620 +1621 statements.append("END") +1622 +1623 if self.pretty and self.text_width(statements) > self._max_text_width: +1624 return self.indent("\n".join(statements), skip_first=True, skip_last=True) +1625 +1626 return " ".join(statements) +1627 +1628 def constraint_sql(self, expression: exp.Constraint) -> str: +1629 this = self.sql(expression, "this") +1630 expressions = self.expressions(expression, flat=True) +1631 return f"CONSTRAINT {this} {expressions}" 1632 -1633 if query: -1634 in_sql = self.wrap(query) -1635 elif unnest: -1636 in_sql = self.in_unnest_op(unnest) -1637 elif field: -1638 in_sql = self.sql(field) -1639 else: -1640 in_sql = f"({self.expressions(expression, flat=True)})" -1641 -1642 return f"{self.sql(expression, 'this')}{is_global} IN {in_sql}" -1643 -1644 def in_unnest_op(self, unnest: exp.Unnest) -> str: -1645 return f"(SELECT {self.sql(unnest)})" -1646 -1647 def interval_sql(self, expression: exp.Interval) -> str: -1648 this = expression.args.get("this") -1649 if this: -1650 this = ( -1651 f" {this}" -1652 if isinstance(this, exp.Literal) or isinstance(this, exp.Paren) -1653 else f" ({this})" -1654 ) -1655 else: -1656 this = "" -1657 unit = self.sql(expression, "unit") -1658 unit = f" {unit}" if unit else "" -1659 return f"INTERVAL{this}{unit}" -1660 -1661 def return_sql(self, expression: exp.Return) -> str: -1662 return f"RETURN {self.sql(expression, 'this')}" -1663 -1664 def reference_sql(self, expression: exp.Reference) -> str: -1665 this = self.sql(expression, "this") -1666 expressions = self.expressions(expression, flat=True) -1667 expressions = f"({expressions})" if expressions else "" -1668 options = self.expressions(expression, "options", flat=True, sep=" ") -1669 options = f" {options}" if options else "" -1670 return f"REFERENCES {this}{expressions}{options}" -1671 -1672 def anonymous_sql(self, expression: exp.Anonymous) -> str: -1673 return self.func(expression.name, *expression.expressions) -1674 -1675 def paren_sql(self, expression: exp.Paren) -> str: -1676 if isinstance(expression.unnest(), exp.Select): -1677 sql = self.wrap(expression) -1678 else: -1679 sql = self.seg(self.indent(self.sql(expression, "this")), sep="") -1680 sql = f"({sql}{self.seg(')', sep='')}" +1633 def extract_sql(self, expression: exp.Extract) -> str: +1634 this = self.sql(expression, "this") +1635 expression_sql = self.sql(expression, "expression") +1636 return f"EXTRACT({this} FROM {expression_sql})" +1637 +1638 def trim_sql(self, expression: exp.Trim) -> str: +1639 trim_type = self.sql(expression, "position") +1640 +1641 if trim_type == "LEADING": +1642 return self.func("LTRIM", expression.this) +1643 elif trim_type == "TRAILING": +1644 return self.func("RTRIM", expression.this) +1645 else: +1646 return self.func("TRIM", expression.this, expression.expression) +1647 +1648 def concat_sql(self, expression: exp.Concat) -> str: +1649 if len(expression.expressions) == 1: +1650 return self.sql(expression.expressions[0]) +1651 return self.function_fallback_sql(expression) +1652 +1653 def check_sql(self, expression: exp.Check) -> str: +1654 this = self.sql(expression, key="this") +1655 return f"CHECK ({this})" +1656 +1657 def foreignkey_sql(self, expression: exp.ForeignKey) -> str: +1658 expressions = self.expressions(expression, flat=True) +1659 reference = self.sql(expression, "reference") +1660 reference = f" {reference}" if reference else "" +1661 delete = self.sql(expression, "delete") +1662 delete = f" ON DELETE {delete}" if delete else "" +1663 update = self.sql(expression, "update") +1664 update = f" ON UPDATE {update}" if update else "" +1665 return f"FOREIGN KEY ({expressions}){reference}{delete}{update}" +1666 +1667 def primarykey_sql(self, expression: exp.ForeignKey) -> str: +1668 expressions = self.expressions(expression, flat=True) +1669 options = self.expressions(expression, key="options", flat=True, sep=" ") +1670 options = f" {options}" if options else "" +1671 return f"PRIMARY KEY ({expressions}){options}" +1672 +1673 def unique_sql(self, expression: exp.Unique) -> str: +1674 columns = self.expressions(expression, key="expressions") +1675 return f"UNIQUE ({columns})" +1676 +1677 def if_sql(self, expression: exp.If) -> str: +1678 return self.case_sql( +1679 exp.Case(ifs=[expression.copy()], default=expression.args.get("false")) +1680 ) 1681 -1682 return self.prepend_ctes(expression, sql) -1683 -1684 def neg_sql(self, expression: exp.Neg) -> str: -1685 # This makes sure we don't convert "- - 5" to "--5", which is a comment -1686 this_sql = self.sql(expression, "this") -1687 sep = " " if this_sql[0] == "-" else "" -1688 return f"-{sep}{this_sql}" +1682 def matchagainst_sql(self, expression: exp.MatchAgainst) -> str: +1683 modifier = expression.args.get("modifier") +1684 modifier = f" {modifier}" if modifier else "" +1685 return f"{self.func('MATCH', *expression.expressions)} AGAINST({self.sql(expression, 'this')}{modifier})" +1686 +1687 def jsonkeyvalue_sql(self, expression: exp.JSONKeyValue) -> str: +1688 return f"{self.sql(expression, 'this')}: {self.sql(expression, 'expression')}" 1689 -1690 def not_sql(self, expression: exp.Not) -> str: -1691 return f"NOT {self.sql(expression, 'this')}" -1692 -1693 def alias_sql(self, expression: exp.Alias) -> str: -1694 to_sql = self.sql(expression, "alias") -1695 to_sql = f" AS {to_sql}" if to_sql else "" -1696 return f"{self.sql(expression, 'this')}{to_sql}" -1697 -1698 def aliases_sql(self, expression: exp.Aliases) -> str: -1699 return f"{self.sql(expression, 'this')} AS ({self.expressions(expression, flat=True)})" -1700 -1701 def attimezone_sql(self, expression: exp.AtTimeZone) -> str: -1702 this = self.sql(expression, "this") -1703 zone = self.sql(expression, "zone") -1704 return f"{this} AT TIME ZONE {zone}" +1690 def jsonobject_sql(self, expression: exp.JSONObject) -> str: +1691 expressions = self.expressions(expression) +1692 null_handling = expression.args.get("null_handling") +1693 null_handling = f" {null_handling}" if null_handling else "" +1694 unique_keys = expression.args.get("unique_keys") +1695 if unique_keys is not None: +1696 unique_keys = f" {'WITH' if unique_keys else 'WITHOUT'} UNIQUE KEYS" +1697 else: +1698 unique_keys = "" +1699 return_type = self.sql(expression, "return_type") +1700 return_type = f" RETURNING {return_type}" if return_type else "" +1701 format_json = " FORMAT JSON" if expression.args.get("format_json") else "" +1702 encoding = self.sql(expression, "encoding") +1703 encoding = f" ENCODING {encoding}" if encoding else "" +1704 return f"JSON_OBJECT({expressions}{null_handling}{unique_keys}{return_type}{format_json}{encoding})" 1705 -1706 def add_sql(self, expression: exp.Add) -> str: -1707 return self.binary(expression, "+") -1708 -1709 def and_sql(self, expression: exp.And) -> str: -1710 return self.connector_sql(expression, "AND") +1706 def in_sql(self, expression: exp.In) -> str: +1707 query = expression.args.get("query") +1708 unnest = expression.args.get("unnest") +1709 field = expression.args.get("field") +1710 is_global = " GLOBAL" if expression.args.get("is_global") else "" 1711 -1712 def connector_sql(self, expression: exp.Connector, op: str) -> str: -1713 if not self.pretty: -1714 return self.binary(expression, op) -1715 -1716 sqls = tuple(self.sql(e) for e in expression.flatten(unnest=False)) -1717 sep = "\n" if self.text_width(sqls) > self._max_text_width else " " -1718 return f"{sep}{op} ".join(sqls) -1719 -1720 def bitwiseand_sql(self, expression: exp.BitwiseAnd) -> str: -1721 return self.binary(expression, "&") +1712 if query: +1713 in_sql = self.wrap(query) +1714 elif unnest: +1715 in_sql = self.in_unnest_op(unnest) +1716 elif field: +1717 in_sql = self.sql(field) +1718 else: +1719 in_sql = f"({self.expressions(expression, flat=True)})" +1720 +1721 return f"{self.sql(expression, 'this')}{is_global} IN {in_sql}" 1722 -1723 def bitwiseleftshift_sql(self, expression: exp.BitwiseLeftShift) -> str: -1724 return self.binary(expression, "<<") +1723 def in_unnest_op(self, unnest: exp.Unnest) -> str: +1724 return f"(SELECT {self.sql(unnest)})" 1725 -1726 def bitwisenot_sql(self, expression: exp.BitwiseNot) -> str: -1727 return f"~{self.sql(expression, 'this')}" -1728 -1729 def bitwiseor_sql(self, expression: exp.BitwiseOr) -> str: -1730 return self.binary(expression, "|") +1726 def interval_sql(self, expression: exp.Interval) -> str: +1727 unit = self.sql(expression, "unit") +1728 if not self.INTERVAL_ALLOWS_PLURAL_FORM: +1729 unit = self.TIME_PART_SINGULARS.get(unit.lower(), unit) +1730 unit = f" {unit}" if unit else "" 1731 -1732 def bitwiserightshift_sql(self, expression: exp.BitwiseRightShift) -> str: -1733 return self.binary(expression, ">>") -1734 -1735 def bitwisexor_sql(self, expression: exp.BitwiseXor) -> str: -1736 return self.binary(expression, "^") -1737 -1738 def cast_sql(self, expression: exp.Cast) -> str: -1739 return f"CAST({self.sql(expression, 'this')} AS {self.sql(expression, 'to')})" +1732 if self.SINGLE_STRING_INTERVAL: +1733 this = expression.this.name if expression.this else "" +1734 return f"INTERVAL '{this}{unit}'" +1735 +1736 this = self.sql(expression, "this") +1737 if this: +1738 unwrapped = isinstance(expression.this, self.UNWRAPPED_INTERVAL_VALUES) +1739 this = f" {this}" if unwrapped else f" ({this})" 1740 -1741 def currentdate_sql(self, expression: exp.CurrentDate) -> str: -1742 zone = self.sql(expression, "this") -1743 return f"CURRENT_DATE({zone})" if zone else "CURRENT_DATE" -1744 -1745 def collate_sql(self, expression: exp.Collate) -> str: -1746 return self.binary(expression, "COLLATE") -1747 -1748 def command_sql(self, expression: exp.Command) -> str: -1749 return f"{self.sql(expression, 'this').upper()} {expression.text('expression').strip()}" -1750 -1751 def comment_sql(self, expression: exp.Comment) -> str: -1752 this = self.sql(expression, "this") -1753 kind = expression.args["kind"] -1754 exists_sql = " IF EXISTS " if expression.args.get("exists") else " " -1755 expression_sql = self.sql(expression, "expression") -1756 return f"COMMENT{exists_sql}ON {kind} {this} IS {expression_sql}" -1757 -1758 def transaction_sql(self, expression: exp.Transaction) -> str: -1759 return "BEGIN" -1760 -1761 def commit_sql(self, expression: exp.Commit) -> str: -1762 chain = expression.args.get("chain") -1763 if chain is not None: -1764 chain = " AND CHAIN" if chain else " AND NO CHAIN" +1741 return f"INTERVAL{this}{unit}" +1742 +1743 def return_sql(self, expression: exp.Return) -> str: +1744 return f"RETURN {self.sql(expression, 'this')}" +1745 +1746 def reference_sql(self, expression: exp.Reference) -> str: +1747 this = self.sql(expression, "this") +1748 expressions = self.expressions(expression, flat=True) +1749 expressions = f"({expressions})" if expressions else "" +1750 options = self.expressions(expression, key="options", flat=True, sep=" ") +1751 options = f" {options}" if options else "" +1752 return f"REFERENCES {this}{expressions}{options}" +1753 +1754 def anonymous_sql(self, expression: exp.Anonymous) -> str: +1755 return self.func(expression.name, *expression.expressions) +1756 +1757 def paren_sql(self, expression: exp.Paren) -> str: +1758 if isinstance(expression.unnest(), exp.Select): +1759 sql = self.wrap(expression) +1760 else: +1761 sql = self.seg(self.indent(self.sql(expression, "this")), sep="") +1762 sql = f"({sql}{self.seg(')', sep='')}" +1763 +1764 return self.prepend_ctes(expression, sql) 1765 -1766 return f"COMMIT{chain or ''}" -1767 -1768 def rollback_sql(self, expression: exp.Rollback) -> str: -1769 savepoint = expression.args.get("savepoint") -1770 savepoint = f" TO {savepoint}" if savepoint else "" -1771 return f"ROLLBACK{savepoint}" -1772 -1773 def altercolumn_sql(self, expression: exp.AlterColumn) -> str: -1774 this = self.sql(expression, "this") -1775 -1776 dtype = self.sql(expression, "dtype") -1777 if dtype: -1778 collate = self.sql(expression, "collate") -1779 collate = f" COLLATE {collate}" if collate else "" -1780 using = self.sql(expression, "using") -1781 using = f" USING {using}" if using else "" -1782 return f"ALTER COLUMN {this} TYPE {dtype}{collate}{using}" -1783 -1784 default = self.sql(expression, "default") -1785 if default: -1786 return f"ALTER COLUMN {this} SET DEFAULT {default}" +1766 def neg_sql(self, expression: exp.Neg) -> str: +1767 # This makes sure we don't convert "- - 5" to "--5", which is a comment +1768 this_sql = self.sql(expression, "this") +1769 sep = " " if this_sql[0] == "-" else "" +1770 return f"-{sep}{this_sql}" +1771 +1772 def not_sql(self, expression: exp.Not) -> str: +1773 return f"NOT {self.sql(expression, 'this')}" +1774 +1775 def alias_sql(self, expression: exp.Alias) -> str: +1776 alias = self.sql(expression, "alias") +1777 alias = f" AS {alias}" if alias else "" +1778 return f"{self.sql(expression, 'this')}{alias}" +1779 +1780 def aliases_sql(self, expression: exp.Aliases) -> str: +1781 return f"{self.sql(expression, 'this')} AS ({self.expressions(expression, flat=True)})" +1782 +1783 def attimezone_sql(self, expression: exp.AtTimeZone) -> str: +1784 this = self.sql(expression, "this") +1785 zone = self.sql(expression, "zone") +1786 return f"{this} AT TIME ZONE {zone}" 1787 -1788 if not expression.args.get("drop"): -1789 self.unsupported("Unsupported ALTER COLUMN syntax") +1788 def add_sql(self, expression: exp.Add) -> str: +1789 return self.binary(expression, "+") 1790 -1791 return f"ALTER COLUMN {this} DROP DEFAULT" -1792 -1793 def renametable_sql(self, expression: exp.RenameTable) -> str: -1794 this = self.sql(expression, "this") -1795 return f"RENAME TO {this}" -1796 -1797 def altertable_sql(self, expression: exp.AlterTable) -> str: -1798 actions = expression.args["actions"] -1799 -1800 if isinstance(actions[0], exp.ColumnDef): -1801 actions = self.expressions(expression, "actions", prefix="ADD COLUMN ") -1802 elif isinstance(actions[0], exp.Schema): -1803 actions = self.expressions(expression, "actions", prefix="ADD COLUMNS ") -1804 elif isinstance(actions[0], exp.Delete): -1805 actions = self.expressions(expression, "actions", flat=True) -1806 else: -1807 actions = self.expressions(expression, "actions") +1791 def and_sql(self, expression: exp.And) -> str: +1792 return self.connector_sql(expression, "AND") +1793 +1794 def connector_sql(self, expression: exp.Connector, op: str) -> str: +1795 if not self.pretty: +1796 return self.binary(expression, op) +1797 +1798 sqls = tuple( +1799 self.maybe_comment(self.sql(e), e, e.parent.comments) if i != 1 else self.sql(e) +1800 for i, e in enumerate(expression.flatten(unnest=False)) +1801 ) +1802 +1803 sep = "\n" if self.text_width(sqls) > self._max_text_width else " " +1804 return f"{sep}{op} ".join(sqls) +1805 +1806 def bitwiseand_sql(self, expression: exp.BitwiseAnd) -> str: +1807 return self.binary(expression, "&") 1808 -1809 exists = " IF EXISTS" if expression.args.get("exists") else "" -1810 return f"ALTER TABLE{exists} {self.sql(expression, 'this')} {actions}" +1809 def bitwiseleftshift_sql(self, expression: exp.BitwiseLeftShift) -> str: +1810 return self.binary(expression, "<<") 1811 -1812 def droppartition_sql(self, expression: exp.DropPartition) -> str: -1813 expressions = self.expressions(expression) -1814 exists = " IF EXISTS " if expression.args.get("exists") else " " -1815 return f"DROP{exists}{expressions}" -1816 -1817 def addconstraint_sql(self, expression: exp.AddConstraint) -> str: -1818 this = self.sql(expression, "this") -1819 expression_ = self.sql(expression, "expression") -1820 add_constraint = f"ADD CONSTRAINT {this}" if this else "ADD" -1821 -1822 enforced = expression.args.get("enforced") -1823 if enforced is not None: -1824 return f"{add_constraint} CHECK ({expression_}){' ENFORCED' if enforced else ''}" -1825 -1826 return f"{add_constraint} {expression_}" -1827 -1828 def distinct_sql(self, expression: exp.Distinct) -> str: -1829 this = self.expressions(expression, flat=True) -1830 this = f" {this}" if this else "" -1831 -1832 on = self.sql(expression, "on") -1833 on = f" ON {on}" if on else "" -1834 return f"DISTINCT{this}{on}" -1835 -1836 def ignorenulls_sql(self, expression: exp.IgnoreNulls) -> str: -1837 return f"{self.sql(expression, 'this')} IGNORE NULLS" -1838 -1839 def respectnulls_sql(self, expression: exp.RespectNulls) -> str: -1840 return f"{self.sql(expression, 'this')} RESPECT NULLS" -1841 -1842 def intdiv_sql(self, expression: exp.IntDiv) -> str: -1843 return self.sql( -1844 exp.Cast( -1845 this=exp.Div(this=expression.this, expression=expression.expression), -1846 to=exp.DataType(this=exp.DataType.Type.INT), -1847 ) -1848 ) -1849 -1850 def dpipe_sql(self, expression: exp.DPipe) -> str: -1851 return self.binary(expression, "||") -1852 -1853 def div_sql(self, expression: exp.Div) -> str: -1854 return self.binary(expression, "/") -1855 -1856 def overlaps_sql(self, expression: exp.Overlaps) -> str: -1857 return self.binary(expression, "OVERLAPS") +1812 def bitwisenot_sql(self, expression: exp.BitwiseNot) -> str: +1813 return f"~{self.sql(expression, 'this')}" +1814 +1815 def bitwiseor_sql(self, expression: exp.BitwiseOr) -> str: +1816 return self.binary(expression, "|") +1817 +1818 def bitwiserightshift_sql(self, expression: exp.BitwiseRightShift) -> str: +1819 return self.binary(expression, ">>") +1820 +1821 def bitwisexor_sql(self, expression: exp.BitwiseXor) -> str: +1822 return self.binary(expression, "^") +1823 +1824 def cast_sql(self, expression: exp.Cast) -> str: +1825 return f"CAST({self.sql(expression, 'this')} AS {self.sql(expression, 'to')})" +1826 +1827 def currentdate_sql(self, expression: exp.CurrentDate) -> str: +1828 zone = self.sql(expression, "this") +1829 return f"CURRENT_DATE({zone})" if zone else "CURRENT_DATE" +1830 +1831 def collate_sql(self, expression: exp.Collate) -> str: +1832 return self.binary(expression, "COLLATE") +1833 +1834 def command_sql(self, expression: exp.Command) -> str: +1835 return f"{self.sql(expression, 'this').upper()} {expression.text('expression').strip()}" +1836 +1837 def comment_sql(self, expression: exp.Comment) -> str: +1838 this = self.sql(expression, "this") +1839 kind = expression.args["kind"] +1840 exists_sql = " IF EXISTS " if expression.args.get("exists") else " " +1841 expression_sql = self.sql(expression, "expression") +1842 return f"COMMENT{exists_sql}ON {kind} {this} IS {expression_sql}" +1843 +1844 def transaction_sql(self, expression: exp.Transaction) -> str: +1845 return "BEGIN" +1846 +1847 def commit_sql(self, expression: exp.Commit) -> str: +1848 chain = expression.args.get("chain") +1849 if chain is not None: +1850 chain = " AND CHAIN" if chain else " AND NO CHAIN" +1851 +1852 return f"COMMIT{chain or ''}" +1853 +1854 def rollback_sql(self, expression: exp.Rollback) -> str: +1855 savepoint = expression.args.get("savepoint") +1856 savepoint = f" TO {savepoint}" if savepoint else "" +1857 return f"ROLLBACK{savepoint}" 1858 -1859 def distance_sql(self, expression: exp.Distance) -> str: -1860 return self.binary(expression, "<->") +1859 def altercolumn_sql(self, expression: exp.AlterColumn) -> str: +1860 this = self.sql(expression, "this") 1861 -1862 def dot_sql(self, expression: exp.Dot) -> str: -1863 return f"{self.sql(expression, 'this')}.{self.sql(expression, 'expression')}" -1864 -1865 def eq_sql(self, expression: exp.EQ) -> str: -1866 return self.binary(expression, "=") -1867 -1868 def escape_sql(self, expression: exp.Escape) -> str: -1869 return self.binary(expression, "ESCAPE") -1870 -1871 def glob_sql(self, expression: exp.Glob) -> str: -1872 return self.binary(expression, "GLOB") +1862 dtype = self.sql(expression, "dtype") +1863 if dtype: +1864 collate = self.sql(expression, "collate") +1865 collate = f" COLLATE {collate}" if collate else "" +1866 using = self.sql(expression, "using") +1867 using = f" USING {using}" if using else "" +1868 return f"ALTER COLUMN {this} TYPE {dtype}{collate}{using}" +1869 +1870 default = self.sql(expression, "default") +1871 if default: +1872 return f"ALTER COLUMN {this} SET DEFAULT {default}" 1873 -1874 def gt_sql(self, expression: exp.GT) -> str: -1875 return self.binary(expression, ">") +1874 if not expression.args.get("drop"): +1875 self.unsupported("Unsupported ALTER COLUMN syntax") 1876 -1877 def gte_sql(self, expression: exp.GTE) -> str: -1878 return self.binary(expression, ">=") -1879 -1880 def ilike_sql(self, expression: exp.ILike) -> str: -1881 return self.binary(expression, "ILIKE") +1877 return f"ALTER COLUMN {this} DROP DEFAULT" +1878 +1879 def renametable_sql(self, expression: exp.RenameTable) -> str: +1880 this = self.sql(expression, "this") +1881 return f"RENAME TO {this}" 1882 -1883 def ilikeany_sql(self, expression: exp.ILikeAny) -> str: -1884 return self.binary(expression, "ILIKE ANY") +1883 def altertable_sql(self, expression: exp.AlterTable) -> str: +1884 actions = expression.args["actions"] 1885 -1886 def is_sql(self, expression: exp.Is) -> str: -1887 return self.binary(expression, "IS") -1888 -1889 def like_sql(self, expression: exp.Like) -> str: -1890 return self.binary(expression, "LIKE") -1891 -1892 def likeany_sql(self, expression: exp.LikeAny) -> str: -1893 return self.binary(expression, "LIKE ANY") +1886 if isinstance(actions[0], exp.ColumnDef): +1887 actions = self.expressions(expression, key="actions", prefix="ADD COLUMN ") +1888 elif isinstance(actions[0], exp.Schema): +1889 actions = self.expressions(expression, key="actions", prefix="ADD COLUMNS ") +1890 elif isinstance(actions[0], exp.Delete): +1891 actions = self.expressions(expression, key="actions", flat=True) +1892 else: +1893 actions = self.expressions(expression, key="actions") 1894 -1895 def similarto_sql(self, expression: exp.SimilarTo) -> str: -1896 return self.binary(expression, "SIMILAR TO") +1895 exists = " IF EXISTS" if expression.args.get("exists") else "" +1896 return f"ALTER TABLE{exists} {self.sql(expression, 'this')} {actions}" 1897 -1898 def lt_sql(self, expression: exp.LT) -> str: -1899 return self.binary(expression, "<") -1900 -1901 def lte_sql(self, expression: exp.LTE) -> str: -1902 return self.binary(expression, "<=") -1903 -1904 def mod_sql(self, expression: exp.Mod) -> str: -1905 return self.binary(expression, "%") -1906 -1907 def mul_sql(self, expression: exp.Mul) -> str: -1908 return self.binary(expression, "*") -1909 -1910 def neq_sql(self, expression: exp.NEQ) -> str: -1911 return self.binary(expression, "<>") -1912 -1913 def nullsafeeq_sql(self, expression: exp.NullSafeEQ) -> str: -1914 return self.binary(expression, "IS NOT DISTINCT FROM") -1915 -1916 def nullsafeneq_sql(self, expression: exp.NullSafeNEQ) -> str: -1917 return self.binary(expression, "IS DISTINCT FROM") -1918 -1919 def or_sql(self, expression: exp.Or) -> str: -1920 return self.connector_sql(expression, "OR") +1898 def droppartition_sql(self, expression: exp.DropPartition) -> str: +1899 expressions = self.expressions(expression) +1900 exists = " IF EXISTS " if expression.args.get("exists") else " " +1901 return f"DROP{exists}{expressions}" +1902 +1903 def addconstraint_sql(self, expression: exp.AddConstraint) -> str: +1904 this = self.sql(expression, "this") +1905 expression_ = self.sql(expression, "expression") +1906 add_constraint = f"ADD CONSTRAINT {this}" if this else "ADD" +1907 +1908 enforced = expression.args.get("enforced") +1909 if enforced is not None: +1910 return f"{add_constraint} CHECK ({expression_}){' ENFORCED' if enforced else ''}" +1911 +1912 return f"{add_constraint} {expression_}" +1913 +1914 def distinct_sql(self, expression: exp.Distinct) -> str: +1915 this = self.expressions(expression, flat=True) +1916 this = f" {this}" if this else "" +1917 +1918 on = self.sql(expression, "on") +1919 on = f" ON {on}" if on else "" +1920 return f"DISTINCT{this}{on}" 1921 -1922 def slice_sql(self, expression: exp.Slice) -> str: -1923 return self.binary(expression, ":") +1922 def ignorenulls_sql(self, expression: exp.IgnoreNulls) -> str: +1923 return f"{self.sql(expression, 'this')} IGNORE NULLS" 1924 -1925 def sub_sql(self, expression: exp.Sub) -> str: -1926 return self.binary(expression, "-") +1925 def respectnulls_sql(self, expression: exp.RespectNulls) -> str: +1926 return f"{self.sql(expression, 'this')} RESPECT NULLS" 1927 -1928 def trycast_sql(self, expression: exp.TryCast) -> str: -1929 return f"TRY_CAST({self.sql(expression, 'this')} AS {self.sql(expression, 'to')})" -1930 -1931 def use_sql(self, expression: exp.Use) -> str: -1932 kind = self.sql(expression, "kind") -1933 kind = f" {kind}" if kind else "" -1934 this = self.sql(expression, "this") -1935 this = f" {this}" if this else "" -1936 return f"USE{kind}{this}" -1937 -1938 def binary(self, expression: exp.Binary, op: str) -> str: -1939 return f"{self.sql(expression, 'this')} {op} {self.sql(expression, 'expression')}" -1940 -1941 def function_fallback_sql(self, expression: exp.Func) -> str: -1942 args = [] -1943 for arg_value in expression.args.values(): -1944 if isinstance(arg_value, list): -1945 for value in arg_value: -1946 args.append(value) -1947 else: -1948 args.append(arg_value) -1949 -1950 return self.func(expression.sql_name(), *args) -1951 -1952 def func(self, name: str, *args: t.Optional[exp.Expression | str]) -> str: -1953 return f"{self.normalize_func(name)}({self.format_args(*args)})" -1954 -1955 def format_args(self, *args: t.Optional[str | exp.Expression]) -> str: -1956 arg_sqls = tuple(self.sql(arg) for arg in args if arg is not None) -1957 if self.pretty and self.text_width(arg_sqls) > self._max_text_width: -1958 return self.indent("\n" + f",\n".join(arg_sqls) + "\n", skip_first=True, skip_last=True) -1959 return ", ".join(arg_sqls) -1960 -1961 def text_width(self, args: t.Iterable) -> int: -1962 return sum(len(arg) for arg in args) -1963 -1964 def format_time(self, expression: exp.Expression) -> t.Optional[str]: -1965 return format_time(self.sql(expression, "format"), self.time_mapping, self.time_trie) -1966 -1967 def expressions( -1968 self, -1969 expression: exp.Expression, -1970 key: t.Optional[str] = None, -1971 flat: bool = False, -1972 indent: bool = True, -1973 sep: str = ", ", -1974 prefix: str = "", -1975 ) -> str: -1976 expressions = expression.args.get(key or "expressions") +1928 def intdiv_sql(self, expression: exp.IntDiv) -> str: +1929 return self.sql( +1930 exp.Cast( +1931 this=exp.Div(this=expression.this, expression=expression.expression), +1932 to=exp.DataType(this=exp.DataType.Type.INT), +1933 ) +1934 ) +1935 +1936 def dpipe_sql(self, expression: exp.DPipe) -> str: +1937 return self.binary(expression, "||") +1938 +1939 def div_sql(self, expression: exp.Div) -> str: +1940 return self.binary(expression, "/") +1941 +1942 def overlaps_sql(self, expression: exp.Overlaps) -> str: +1943 return self.binary(expression, "OVERLAPS") +1944 +1945 def distance_sql(self, expression: exp.Distance) -> str: +1946 return self.binary(expression, "<->") +1947 +1948 def dot_sql(self, expression: exp.Dot) -> str: +1949 return f"{self.sql(expression, 'this')}.{self.sql(expression, 'expression')}" +1950 +1951 def eq_sql(self, expression: exp.EQ) -> str: +1952 return self.binary(expression, "=") +1953 +1954 def escape_sql(self, expression: exp.Escape) -> str: +1955 return self.binary(expression, "ESCAPE") +1956 +1957 def glob_sql(self, expression: exp.Glob) -> str: +1958 return self.binary(expression, "GLOB") +1959 +1960 def gt_sql(self, expression: exp.GT) -> str: +1961 return self.binary(expression, ">") +1962 +1963 def gte_sql(self, expression: exp.GTE) -> str: +1964 return self.binary(expression, ">=") +1965 +1966 def ilike_sql(self, expression: exp.ILike) -> str: +1967 return self.binary(expression, "ILIKE") +1968 +1969 def ilikeany_sql(self, expression: exp.ILikeAny) -> str: +1970 return self.binary(expression, "ILIKE ANY") +1971 +1972 def is_sql(self, expression: exp.Is) -> str: +1973 return self.binary(expression, "IS") +1974 +1975 def like_sql(self, expression: exp.Like) -> str: +1976 return self.binary(expression, "LIKE") 1977 -1978 if not expressions: -1979 return "" +1978 def likeany_sql(self, expression: exp.LikeAny) -> str: +1979 return self.binary(expression, "LIKE ANY") 1980 -1981 if flat: -1982 return sep.join(self.sql(e) for e in expressions) +1981 def similarto_sql(self, expression: exp.SimilarTo) -> str: +1982 return self.binary(expression, "SIMILAR TO") 1983 -1984 num_sqls = len(expressions) -1985 -1986 # These are calculated once in case we have the leading_comma / pretty option set, correspondingly -1987 pad = " " * self.pad -1988 stripped_sep = sep.strip() +1984 def lt_sql(self, expression: exp.LT) -> str: +1985 return self.binary(expression, "<") +1986 +1987 def lte_sql(self, expression: exp.LTE) -> str: +1988 return self.binary(expression, "<=") 1989 -1990 result_sqls = [] -1991 for i, e in enumerate(expressions): -1992 sql = self.sql(e, comment=False) -1993 comments = self.maybe_comment("", e) if isinstance(e, exp.Expression) else "" -1994 -1995 if self.pretty: -1996 if self._leading_comma: -1997 result_sqls.append(f"{sep if i > 0 else pad}{prefix}{sql}{comments}") -1998 else: -1999 result_sqls.append( -2000 f"{prefix}{sql}{stripped_sep if i + 1 < num_sqls else ''}{comments}" -2001 ) -2002 else: -2003 result_sqls.append(f"{prefix}{sql}{comments}{sep if i + 1 < num_sqls else ''}") +1990 def mod_sql(self, expression: exp.Mod) -> str: +1991 return self.binary(expression, "%") +1992 +1993 def mul_sql(self, expression: exp.Mul) -> str: +1994 return self.binary(expression, "*") +1995 +1996 def neq_sql(self, expression: exp.NEQ) -> str: +1997 return self.binary(expression, "<>") +1998 +1999 def nullsafeeq_sql(self, expression: exp.NullSafeEQ) -> str: +2000 return self.binary(expression, "IS NOT DISTINCT FROM") +2001 +2002 def nullsafeneq_sql(self, expression: exp.NullSafeNEQ) -> str: +2003 return self.binary(expression, "IS DISTINCT FROM") 2004 -2005 result_sql = "\n".join(result_sqls) if self.pretty else "".join(result_sqls) -2006 return self.indent(result_sql, skip_first=False) if indent else result_sql +2005 def or_sql(self, expression: exp.Or) -> str: +2006 return self.connector_sql(expression, "OR") 2007 -2008 def op_expressions(self, op: str, expression: exp.Expression, flat: bool = False) -> str: -2009 flat = flat or isinstance(expression.parent, exp.Properties) -2010 expressions_sql = self.expressions(expression, flat=flat) -2011 if flat: -2012 return f"{op} {expressions_sql}" -2013 return f"{self.seg(op)}{self.sep() if expressions_sql else ''}{expressions_sql}" -2014 -2015 def naked_property(self, expression: exp.Property) -> str: -2016 property_name = exp.Properties.PROPERTY_TO_NAME.get(expression.__class__) -2017 if not property_name: -2018 self.unsupported(f"Unsupported property {expression.__class__.__name__}") -2019 return f"{property_name} {self.sql(expression, 'this')}" -2020 -2021 def set_operation(self, expression: exp.Expression, op: str) -> str: -2022 this = self.sql(expression, "this") -2023 op = self.seg(op) -2024 return self.query_modifiers( -2025 expression, f"{this}{op}{self.sep()}{self.sql(expression, 'expression')}" -2026 ) +2008 def slice_sql(self, expression: exp.Slice) -> str: +2009 return self.binary(expression, ":") +2010 +2011 def sub_sql(self, expression: exp.Sub) -> str: +2012 return self.binary(expression, "-") +2013 +2014 def trycast_sql(self, expression: exp.TryCast) -> str: +2015 return f"TRY_CAST({self.sql(expression, 'this')} AS {self.sql(expression, 'to')})" +2016 +2017 def use_sql(self, expression: exp.Use) -> str: +2018 kind = self.sql(expression, "kind") +2019 kind = f" {kind}" if kind else "" +2020 this = self.sql(expression, "this") +2021 this = f" {this}" if this else "" +2022 return f"USE{kind}{this}" +2023 +2024 def binary(self, expression: exp.Binary, op: str) -> str: +2025 op = self.maybe_comment(op, comments=expression.comments) +2026 return f"{self.sql(expression, 'this')} {op} {self.sql(expression, 'expression')}" 2027 -2028 def tag_sql(self, expression: exp.Tag) -> str: -2029 return f"{expression.args.get('prefix')}{self.sql(expression.this)}{expression.args.get('postfix')}" -2030 -2031 def token_sql(self, token_type: TokenType) -> str: -2032 return self.TOKEN_MAPPING.get(token_type, token_type.name) -2033 -2034 def userdefinedfunction_sql(self, expression: exp.UserDefinedFunction) -> str: -2035 this = self.sql(expression, "this") -2036 expressions = self.no_identify(self.expressions, expression) -2037 expressions = ( -2038 self.wrap(expressions) if expression.args.get("wrapped") else f" {expressions}" -2039 ) -2040 return f"{this}{expressions}" +2028 def function_fallback_sql(self, expression: exp.Func) -> str: +2029 args = [] +2030 for arg_value in expression.args.values(): +2031 if isinstance(arg_value, list): +2032 for value in arg_value: +2033 args.append(value) +2034 else: +2035 args.append(arg_value) +2036 +2037 return self.func(expression.sql_name(), *args) +2038 +2039 def func(self, name: str, *args: t.Optional[exp.Expression | str]) -> str: +2040 return f"{self.normalize_func(name)}({self.format_args(*args)})" 2041 -2042 def joinhint_sql(self, expression: exp.JoinHint) -> str: -2043 this = self.sql(expression, "this") -2044 expressions = self.expressions(expression, flat=True) -2045 return f"{this}({expressions})" -2046 -2047 def kwarg_sql(self, expression: exp.Kwarg) -> str: -2048 return self.binary(expression, "=>") -2049 -2050 def when_sql(self, expression: exp.When) -> str: -2051 matched = "MATCHED" if expression.args["matched"] else "NOT MATCHED" -2052 source = " BY SOURCE" if self.MATCHED_BY_SOURCE and expression.args.get("source") else "" -2053 condition = self.sql(expression, "condition") -2054 condition = f" AND {condition}" if condition else "" -2055 -2056 then_expression = expression.args.get("then") -2057 if isinstance(then_expression, exp.Insert): -2058 then = f"INSERT {self.sql(then_expression, 'this')}" -2059 if "expression" in then_expression.args: -2060 then += f" VALUES {self.sql(then_expression, 'expression')}" -2061 elif isinstance(then_expression, exp.Update): -2062 if isinstance(then_expression.args.get("expressions"), exp.Star): -2063 then = f"UPDATE {self.sql(then_expression, 'expressions')}" -2064 else: -2065 then = f"UPDATE SET {self.expressions(then_expression, flat=True)}" -2066 else: -2067 then = self.sql(then_expression) -2068 return f"WHEN {matched}{source}{condition} THEN {then}" -2069 -2070 def merge_sql(self, expression: exp.Merge) -> str: -2071 this = self.sql(expression, "this") -2072 using = f"USING {self.sql(expression, 'using')}" -2073 on = f"ON {self.sql(expression, 'on')}" -2074 return f"MERGE INTO {this} {using} {on} {self.expressions(expression, sep=' ')}" -2075 -2076 def tochar_sql(self, expression: exp.ToChar) -> str: -2077 if expression.args.get("format"): -2078 self.unsupported("Format argument unsupported for TO_CHAR/TO_VARCHAR function") -2079 -2080 return self.sql(exp.cast(expression.this, "text")) +2042 def format_args(self, *args: t.Optional[str | exp.Expression]) -> str: +2043 arg_sqls = tuple(self.sql(arg) for arg in args if arg is not None) +2044 if self.pretty and self.text_width(arg_sqls) > self._max_text_width: +2045 return self.indent("\n" + f",\n".join(arg_sqls) + "\n", skip_first=True, skip_last=True) +2046 return ", ".join(arg_sqls) +2047 +2048 def text_width(self, args: t.Iterable) -> int: +2049 return sum(len(arg) for arg in args) +2050 +2051 def format_time(self, expression: exp.Expression) -> t.Optional[str]: +2052 return format_time(self.sql(expression, "format"), self.time_mapping, self.time_trie) +2053 +2054 def expressions( +2055 self, +2056 expression: t.Optional[exp.Expression] = None, +2057 key: t.Optional[str] = None, +2058 sqls: t.Optional[t.List[str]] = None, +2059 flat: bool = False, +2060 indent: bool = True, +2061 sep: str = ", ", +2062 prefix: str = "", +2063 ) -> str: +2064 expressions = expression.args.get(key or "expressions") if expression else sqls +2065 +2066 if not expressions: +2067 return "" +2068 +2069 if flat: +2070 return sep.join(self.sql(e) for e in expressions) +2071 +2072 num_sqls = len(expressions) +2073 +2074 # These are calculated once in case we have the leading_comma / pretty option set, correspondingly +2075 pad = " " * self.pad +2076 stripped_sep = sep.strip() +2077 +2078 result_sqls = [] +2079 for i, e in enumerate(expressions): +2080 sql = self.sql(e, comment=False) +2081 comments = self.maybe_comment("", e) if isinstance(e, exp.Expression) else "" +2082 +2083 if self.pretty: +2084 if self._leading_comma: +2085 result_sqls.append(f"{sep if i > 0 else pad}{prefix}{sql}{comments}") +2086 else: +2087 result_sqls.append( +2088 f"{prefix}{sql}{stripped_sep if i + 1 < num_sqls else ''}{comments}" +2089 ) +2090 else: +2091 result_sqls.append(f"{prefix}{sql}{comments}{sep if i + 1 < num_sqls else ''}") +2092 +2093 result_sql = "\n".join(result_sqls) if self.pretty else "".join(result_sqls) +2094 return self.indent(result_sql, skip_first=False) if indent else result_sql +2095 +2096 def op_expressions(self, op: str, expression: exp.Expression, flat: bool = False) -> str: +2097 flat = flat or isinstance(expression.parent, exp.Properties) +2098 expressions_sql = self.expressions(expression, flat=flat) +2099 if flat: +2100 return f"{op} {expressions_sql}" +2101 return f"{self.seg(op)}{self.sep() if expressions_sql else ''}{expressions_sql}" +2102 +2103 def naked_property(self, expression: exp.Property) -> str: +2104 property_name = exp.Properties.PROPERTY_TO_NAME.get(expression.__class__) +2105 if not property_name: +2106 self.unsupported(f"Unsupported property {expression.__class__.__name__}") +2107 return f"{property_name} {self.sql(expression, 'this')}" +2108 +2109 def set_operation(self, expression: exp.Expression, op: str) -> str: +2110 this = self.sql(expression, "this") +2111 op = self.seg(op) +2112 return self.query_modifiers( +2113 expression, f"{this}{op}{self.sep()}{self.sql(expression, 'expression')}" +2114 ) +2115 +2116 def tag_sql(self, expression: exp.Tag) -> str: +2117 return f"{expression.args.get('prefix')}{self.sql(expression.this)}{expression.args.get('postfix')}" +2118 +2119 def token_sql(self, token_type: TokenType) -> str: +2120 return self.TOKEN_MAPPING.get(token_type, token_type.name) +2121 +2122 def userdefinedfunction_sql(self, expression: exp.UserDefinedFunction) -> str: +2123 this = self.sql(expression, "this") +2124 expressions = self.no_identify(self.expressions, expression) +2125 expressions = ( +2126 self.wrap(expressions) if expression.args.get("wrapped") else f" {expressions}" +2127 ) +2128 return f"{this}{expressions}" +2129 +2130 def joinhint_sql(self, expression: exp.JoinHint) -> str: +2131 this = self.sql(expression, "this") +2132 expressions = self.expressions(expression, flat=True) +2133 return f"{this}({expressions})" +2134 +2135 def kwarg_sql(self, expression: exp.Kwarg) -> str: +2136 return self.binary(expression, "=>") +2137 +2138 def when_sql(self, expression: exp.When) -> str: +2139 matched = "MATCHED" if expression.args["matched"] else "NOT MATCHED" +2140 source = " BY SOURCE" if self.MATCHED_BY_SOURCE and expression.args.get("source") else "" +2141 condition = self.sql(expression, "condition") +2142 condition = f" AND {condition}" if condition else "" +2143 +2144 then_expression = expression.args.get("then") +2145 if isinstance(then_expression, exp.Insert): +2146 then = f"INSERT {self.sql(then_expression, 'this')}" +2147 if "expression" in then_expression.args: +2148 then += f" VALUES {self.sql(then_expression, 'expression')}" +2149 elif isinstance(then_expression, exp.Update): +2150 if isinstance(then_expression.args.get("expressions"), exp.Star): +2151 then = f"UPDATE {self.sql(then_expression, 'expressions')}" +2152 else: +2153 then = f"UPDATE SET {self.expressions(then_expression, flat=True)}" +2154 else: +2155 then = self.sql(then_expression) +2156 return f"WHEN {matched}{source}{condition} THEN {then}" +2157 +2158 def merge_sql(self, expression: exp.Merge) -> str: +2159 this = self.sql(expression, "this") +2160 using = f"USING {self.sql(expression, 'using')}" +2161 on = f"ON {self.sql(expression, 'on')}" +2162 return f"MERGE INTO {this} {using} {on} {self.expressions(expression, sep=' ')}" +2163 +2164 def tochar_sql(self, expression: exp.ToChar) -> str: +2165 if expression.args.get("format"): +2166 self.unsupported("Format argument unsupported for TO_CHAR/TO_VARCHAR function") +2167 +2168 return self.sql(exp.cast(expression.this, "text")) @@ -4938,61 +5123,61 @@ Default: True -
    220    def __init__(
    -221        self,
    -222        time_mapping=None,
    -223        time_trie=None,
    -224        pretty=None,
    -225        quote_start=None,
    -226        quote_end=None,
    -227        identifier_start=None,
    -228        identifier_end=None,
    -229        identify=False,
    -230        normalize=False,
    -231        string_escape=None,
    -232        identifier_escape=None,
    -233        pad=2,
    -234        indent=2,
    -235        index_offset=0,
    -236        unnest_column_only=False,
    -237        alias_post_tablesample=False,
    -238        normalize_functions="upper",
    -239        unsupported_level=ErrorLevel.WARN,
    -240        null_ordering=None,
    -241        max_unsupported=3,
    -242        leading_comma=False,
    -243        max_text_width=80,
    -244        comments=True,
    -245    ):
    -246        import sqlglot
    -247
    -248        self.time_mapping = time_mapping or {}
    -249        self.time_trie = time_trie
    -250        self.pretty = pretty if pretty is not None else sqlglot.pretty
    -251        self.quote_start = quote_start or "'"
    -252        self.quote_end = quote_end or "'"
    -253        self.identifier_start = identifier_start or '"'
    -254        self.identifier_end = identifier_end or '"'
    -255        self.identify = identify
    -256        self.normalize = normalize
    -257        self.string_escape = string_escape or "'"
    -258        self.identifier_escape = identifier_escape or '"'
    -259        self.pad = pad
    -260        self.index_offset = index_offset
    -261        self.unnest_column_only = unnest_column_only
    -262        self.alias_post_tablesample = alias_post_tablesample
    -263        self.normalize_functions = normalize_functions
    -264        self.unsupported_level = unsupported_level
    -265        self.unsupported_messages = []
    -266        self.max_unsupported = max_unsupported
    -267        self.null_ordering = null_ordering
    -268        self._indent = indent
    -269        self._escaped_quote_end = self.string_escape + self.quote_end
    -270        self._escaped_identifier_end = self.identifier_escape + self.identifier_end
    -271        self._leading_comma = leading_comma
    -272        self._max_text_width = max_text_width
    -273        self._comments = comments
    -274        self._cache = None
    +            
    253    def __init__(
    +254        self,
    +255        time_mapping=None,
    +256        time_trie=None,
    +257        pretty=None,
    +258        quote_start=None,
    +259        quote_end=None,
    +260        identifier_start=None,
    +261        identifier_end=None,
    +262        identify=False,
    +263        normalize=False,
    +264        string_escape=None,
    +265        identifier_escape=None,
    +266        pad=2,
    +267        indent=2,
    +268        index_offset=0,
    +269        unnest_column_only=False,
    +270        alias_post_tablesample=False,
    +271        normalize_functions="upper",
    +272        unsupported_level=ErrorLevel.WARN,
    +273        null_ordering=None,
    +274        max_unsupported=3,
    +275        leading_comma=False,
    +276        max_text_width=80,
    +277        comments=True,
    +278    ):
    +279        import sqlglot
    +280
    +281        self.time_mapping = time_mapping or {}
    +282        self.time_trie = time_trie
    +283        self.pretty = pretty if pretty is not None else sqlglot.pretty
    +284        self.quote_start = quote_start or "'"
    +285        self.quote_end = quote_end or "'"
    +286        self.identifier_start = identifier_start or '"'
    +287        self.identifier_end = identifier_end or '"'
    +288        self.identify = identify
    +289        self.normalize = normalize
    +290        self.string_escape = string_escape or "'"
    +291        self.identifier_escape = identifier_escape or '"'
    +292        self.pad = pad
    +293        self.index_offset = index_offset
    +294        self.unnest_column_only = unnest_column_only
    +295        self.alias_post_tablesample = alias_post_tablesample
    +296        self.normalize_functions = normalize_functions
    +297        self.unsupported_level = unsupported_level
    +298        self.unsupported_messages = []
    +299        self.max_unsupported = max_unsupported
    +300        self.null_ordering = null_ordering
    +301        self._indent = indent
    +302        self._escaped_quote_end = self.string_escape + self.quote_end
    +303        self._escaped_identifier_end = self.identifier_escape + self.identifier_end
    +304        self._leading_comma = leading_comma
    +305        self._max_text_width = max_text_width
    +306        self._comments = comments
    +307        self._cache = None
     
    @@ -5010,39 +5195,39 @@ Default: True
    -
    276    def generate(
    -277        self,
    -278        expression: t.Optional[exp.Expression],
    -279        cache: t.Optional[t.Dict[int, str]] = None,
    -280    ) -> str:
    -281        """
    -282        Generates a SQL string by interpreting the given syntax tree.
    -283
    -284        Args
    -285            expression: the syntax tree.
    -286            cache: an optional sql string cache. this leverages the hash of an expression which is slow, so only use this if you set _hash on each node.
    -287
    -288        Returns
    -289            the SQL string.
    -290        """
    -291        if cache is not None:
    -292            self._cache = cache
    -293        self.unsupported_messages = []
    -294        sql = self.sql(expression).strip()
    -295        self._cache = None
    -296
    -297        if self.unsupported_level == ErrorLevel.IGNORE:
    -298            return sql
    -299
    -300        if self.unsupported_level == ErrorLevel.WARN:
    -301            for msg in self.unsupported_messages:
    -302                logger.warning(msg)
    -303        elif self.unsupported_level == ErrorLevel.RAISE and self.unsupported_messages:
    -304            raise UnsupportedError(concat_messages(self.unsupported_messages, self.max_unsupported))
    -305
    -306        if self.pretty:
    -307            sql = sql.replace(self.SENTINEL_LINE_BREAK, "\n")
    -308        return sql
    +            
    309    def generate(
    +310        self,
    +311        expression: t.Optional[exp.Expression],
    +312        cache: t.Optional[t.Dict[int, str]] = None,
    +313    ) -> str:
    +314        """
    +315        Generates a SQL string by interpreting the given syntax tree.
    +316
    +317        Args
    +318            expression: the syntax tree.
    +319            cache: an optional sql string cache. this leverages the hash of an expression which is slow, so only use this if you set _hash on each node.
    +320
    +321        Returns
    +322            the SQL string.
    +323        """
    +324        if cache is not None:
    +325            self._cache = cache
    +326        self.unsupported_messages = []
    +327        sql = self.sql(expression).strip()
    +328        self._cache = None
    +329
    +330        if self.unsupported_level == ErrorLevel.IGNORE:
    +331            return sql
    +332
    +333        if self.unsupported_level == ErrorLevel.WARN:
    +334            for msg in self.unsupported_messages:
    +335                logger.warning(msg)
    +336        elif self.unsupported_level == ErrorLevel.RAISE and self.unsupported_messages:
    +337            raise UnsupportedError(concat_messages(self.unsupported_messages, self.max_unsupported))
    +338
    +339        if self.pretty:
    +340            sql = sql.replace(self.SENTINEL_LINE_BREAK, "\n")
    +341        return sql
     
    @@ -5069,10 +5254,10 @@ Default: True
    -
    310    def unsupported(self, message: str) -> None:
    -311        if self.unsupported_level == ErrorLevel.IMMEDIATE:
    -312            raise UnsupportedError(message)
    -313        self.unsupported_messages.append(message)
    +            
    343    def unsupported(self, message: str) -> None:
    +344        if self.unsupported_level == ErrorLevel.IMMEDIATE:
    +345            raise UnsupportedError(message)
    +346        self.unsupported_messages.append(message)
     
    @@ -5090,8 +5275,8 @@ Default: True
    -
    315    def sep(self, sep: str = " ") -> str:
    -316        return f"{sep.strip()}\n" if self.pretty else sep
    +            
    348    def sep(self, sep: str = " ") -> str:
    +349        return f"{sep.strip()}\n" if self.pretty else sep
     
    @@ -5109,8 +5294,8 @@ Default: True
    -
    318    def seg(self, sql: str, sep: str = " ") -> str:
    -319        return f"{self.sep(sep)}{sql}"
    +            
    351    def seg(self, sql: str, sep: str = " ") -> str:
    +352        return f"{self.sep(sep)}{sql}"
     
    @@ -5128,10 +5313,10 @@ Default: True
    -
    321    def pad_comment(self, comment: str) -> str:
    -322        comment = " " + comment if comment[0].strip() else comment
    -323        comment = comment + " " if comment[-1].strip() else comment
    -324        return comment
    +            
    354    def pad_comment(self, comment: str) -> str:
    +355        comment = " " + comment if comment[0].strip() else comment
    +356        comment = comment + " " if comment[-1].strip() else comment
    +357        return comment
     
    @@ -5143,30 +5328,35 @@ Default: True
    def - maybe_comment(self, sql: str, expression: sqlglot.expressions.Expression) -> str: + maybe_comment( self, sql: str, expression: Optional[sqlglot.expressions.Expression] = None, comments: Optional[List[str]] = None) -> str:
    -
    326    def maybe_comment(self, sql: str, expression: exp.Expression) -> str:
    -327        comments = expression.comments if self._comments else None
    -328
    -329        if not comments:
    -330            return sql
    -331
    -332        sep = "\n" if self.pretty else " "
    -333        comments_sql = sep.join(
    -334            f"/*{self.pad_comment(comment)}*/" for comment in comments if comment
    -335        )
    -336
    -337        if not comments_sql:
    -338            return sql
    -339
    -340        if isinstance(expression, self.WITH_SEPARATED_COMMENTS):
    -341            return f"{comments_sql}{self.sep()}{sql}"
    -342
    -343        return f"{sql} {comments_sql}"
    +            
    359    def maybe_comment(
    +360        self,
    +361        sql: str,
    +362        expression: t.Optional[exp.Expression] = None,
    +363        comments: t.Optional[t.List[str]] = None,
    +364    ) -> str:
    +365        comments = (comments or (expression and expression.comments)) if self._comments else None  # type: ignore
    +366
    +367        if not comments or isinstance(expression, exp.Binary):
    +368            return sql
    +369
    +370        sep = "\n" if self.pretty else " "
    +371        comments_sql = sep.join(
    +372            f"/*{self.pad_comment(comment)}*/" for comment in comments if comment
    +373        )
    +374
    +375        if not comments_sql:
    +376            return sql
    +377
    +378        if isinstance(expression, self.WITH_SEPARATED_COMMENTS):
    +379            return f"{comments_sql}{self.sep()}{sql}"
    +380
    +381        return f"{sql} {comments_sql}"
     
    @@ -5184,15 +5374,15 @@ Default: True
    -
    345    def wrap(self, expression: exp.Expression | str) -> str:
    -346        this_sql = self.indent(
    -347            self.sql(expression)
    -348            if isinstance(expression, (exp.Select, exp.Union))
    -349            else self.sql(expression, "this"),
    -350            level=1,
    -351            pad=0,
    -352        )
    -353        return f"({self.sep('')}{this_sql}{self.seg(')', sep='')}"
    +            
    383    def wrap(self, expression: exp.Expression | str) -> str:
    +384        this_sql = self.indent(
    +385            self.sql(expression)
    +386            if isinstance(expression, (exp.Select, exp.Union))
    +387            else self.sql(expression, "this"),
    +388            level=1,
    +389            pad=0,
    +390        )
    +391        return f"({self.sep('')}{this_sql}{self.seg(')', sep='')}"
     
    @@ -5210,12 +5400,12 @@ Default: True
    -
    355    def no_identify(self, func: t.Callable[..., str], *args, **kwargs) -> str:
    -356        original = self.identify
    -357        self.identify = False
    -358        result = func(*args, **kwargs)
    -359        self.identify = original
    -360        return result
    +            
    393    def no_identify(self, func: t.Callable[..., str], *args, **kwargs) -> str:
    +394        original = self.identify
    +395        self.identify = False
    +396        result = func(*args, **kwargs)
    +397        self.identify = original
    +398        return result
     
    @@ -5233,12 +5423,12 @@ Default: True
    -
    362    def normalize_func(self, name: str) -> str:
    -363        if self.normalize_functions == "upper":
    -364            return name.upper()
    -365        if self.normalize_functions == "lower":
    -366            return name.lower()
    -367        return name
    +            
    400    def normalize_func(self, name: str) -> str:
    +401        if self.normalize_functions == "upper":
    +402            return name.upper()
    +403        if self.normalize_functions == "lower":
    +404            return name.lower()
    +405        return name
     
    @@ -5256,26 +5446,26 @@ Default: True
    -
    369    def indent(
    -370        self,
    -371        sql: str,
    -372        level: int = 0,
    -373        pad: t.Optional[int] = None,
    -374        skip_first: bool = False,
    -375        skip_last: bool = False,
    -376    ) -> str:
    -377        if not self.pretty:
    -378            return sql
    -379
    -380        pad = self.pad if pad is None else pad
    -381        lines = sql.split("\n")
    -382
    -383        return "\n".join(
    -384            line
    -385            if (skip_first and i == 0) or (skip_last and i == len(lines) - 1)
    -386            else f"{' ' * (level * self._indent + pad)}{line}"
    -387            for i, line in enumerate(lines)
    -388        )
    +            
    407    def indent(
    +408        self,
    +409        sql: str,
    +410        level: int = 0,
    +411        pad: t.Optional[int] = None,
    +412        skip_first: bool = False,
    +413        skip_last: bool = False,
    +414    ) -> str:
    +415        if not self.pretty:
    +416            return sql
    +417
    +418        pad = self.pad if pad is None else pad
    +419        lines = sql.split("\n")
    +420
    +421        return "\n".join(
    +422            line
    +423            if (skip_first and i == 0) or (skip_last and i == len(lines) - 1)
    +424            else f"{' ' * (level * self._indent + pad)}{line}"
    +425            for i, line in enumerate(lines)
    +426        )
     
    @@ -5293,52 +5483,52 @@ Default: True
    -
    390    def sql(
    -391        self,
    -392        expression: t.Optional[str | exp.Expression],
    -393        key: t.Optional[str] = None,
    -394        comment: bool = True,
    -395    ) -> str:
    -396        if not expression:
    -397            return ""
    -398
    -399        if isinstance(expression, str):
    -400            return expression
    -401
    -402        if key:
    -403            return self.sql(expression.args.get(key))
    -404
    -405        if self._cache is not None:
    -406            expression_id = hash(expression)
    -407
    -408            if expression_id in self._cache:
    -409                return self._cache[expression_id]
    -410
    -411        transform = self.TRANSFORMS.get(expression.__class__)
    -412
    -413        if callable(transform):
    -414            sql = transform(self, expression)
    -415        elif transform:
    -416            sql = transform
    -417        elif isinstance(expression, exp.Expression):
    -418            exp_handler_name = f"{expression.key}_sql"
    -419
    -420            if hasattr(self, exp_handler_name):
    -421                sql = getattr(self, exp_handler_name)(expression)
    -422            elif isinstance(expression, exp.Func):
    -423                sql = self.function_fallback_sql(expression)
    -424            elif isinstance(expression, exp.Property):
    -425                sql = self.property_sql(expression)
    -426            else:
    -427                raise ValueError(f"Unsupported expression type {expression.__class__.__name__}")
    -428        else:
    -429            raise ValueError(f"Expected an Expression. Received {type(expression)}: {expression}")
    -430
    -431        sql = self.maybe_comment(sql, expression) if self._comments and comment else sql
    -432
    -433        if self._cache is not None:
    -434            self._cache[expression_id] = sql
    -435        return sql
    +            
    428    def sql(
    +429        self,
    +430        expression: t.Optional[str | exp.Expression],
    +431        key: t.Optional[str] = None,
    +432        comment: bool = True,
    +433    ) -> str:
    +434        if not expression:
    +435            return ""
    +436
    +437        if isinstance(expression, str):
    +438            return expression
    +439
    +440        if key:
    +441            return self.sql(expression.args.get(key))
    +442
    +443        if self._cache is not None:
    +444            expression_id = hash(expression)
    +445
    +446            if expression_id in self._cache:
    +447                return self._cache[expression_id]
    +448
    +449        transform = self.TRANSFORMS.get(expression.__class__)
    +450
    +451        if callable(transform):
    +452            sql = transform(self, expression)
    +453        elif transform:
    +454            sql = transform
    +455        elif isinstance(expression, exp.Expression):
    +456            exp_handler_name = f"{expression.key}_sql"
    +457
    +458            if hasattr(self, exp_handler_name):
    +459                sql = getattr(self, exp_handler_name)(expression)
    +460            elif isinstance(expression, exp.Func):
    +461                sql = self.function_fallback_sql(expression)
    +462            elif isinstance(expression, exp.Property):
    +463                sql = self.property_sql(expression)
    +464            else:
    +465                raise ValueError(f"Unsupported expression type {expression.__class__.__name__}")
    +466        else:
    +467            raise ValueError(f"Expected an Expression. Received {type(expression)}: {expression}")
    +468
    +469        sql = self.maybe_comment(sql, expression) if self._comments and comment else sql
    +470
    +471        if self._cache is not None:
    +472            self._cache[expression_id] = sql
    +473        return sql
     
    @@ -5356,10 +5546,10 @@ Default: True
    -
    437    def uncache_sql(self, expression: exp.Uncache) -> str:
    -438        table = self.sql(expression, "this")
    -439        exists_sql = " IF EXISTS" if expression.args.get("exists") else ""
    -440        return f"UNCACHE TABLE{exists_sql} {table}"
    +            
    475    def uncache_sql(self, expression: exp.Uncache) -> str:
    +476        table = self.sql(expression, "this")
    +477        exists_sql = " IF EXISTS" if expression.args.get("exists") else ""
    +478        return f"UNCACHE TABLE{exists_sql} {table}"
     
    @@ -5377,15 +5567,15 @@ Default: True
    -
    442    def cache_sql(self, expression: exp.Cache) -> str:
    -443        lazy = " LAZY" if expression.args.get("lazy") else ""
    -444        table = self.sql(expression, "this")
    -445        options = expression.args.get("options")
    -446        options = f" OPTIONS({self.sql(options[0])} = {self.sql(options[1])})" if options else ""
    -447        sql = self.sql(expression, "expression")
    -448        sql = f" AS{self.sep()}{sql}" if sql else ""
    -449        sql = f"CACHE{lazy} TABLE {table}{options}{sql}"
    -450        return self.prepend_ctes(expression, sql)
    +            
    480    def cache_sql(self, expression: exp.Cache) -> str:
    +481        lazy = " LAZY" if expression.args.get("lazy") else ""
    +482        table = self.sql(expression, "this")
    +483        options = expression.args.get("options")
    +484        options = f" OPTIONS({self.sql(options[0])} = {self.sql(options[1])})" if options else ""
    +485        sql = self.sql(expression, "expression")
    +486        sql = f" AS{self.sep()}{sql}" if sql else ""
    +487        sql = f"CACHE{lazy} TABLE {table}{options}{sql}"
    +488        return self.prepend_ctes(expression, sql)
     
    @@ -5403,11 +5593,11 @@ Default: True
    -
    452    def characterset_sql(self, expression: exp.CharacterSet) -> str:
    -453        if isinstance(expression.parent, exp.Cast):
    -454            return f"CHAR CHARACTER SET {self.sql(expression, 'this')}"
    -455        default = "DEFAULT " if expression.args.get("default") else ""
    -456        return f"{default}CHARACTER SET={self.sql(expression, 'this')}"
    +            
    490    def characterset_sql(self, expression: exp.CharacterSet) -> str:
    +491        if isinstance(expression.parent, exp.Cast):
    +492            return f"CHAR CHARACTER SET {self.sql(expression, 'this')}"
    +493        default = "DEFAULT " if expression.args.get("default") else ""
    +494        return f"{default}CHARACTER SET={self.sql(expression, 'this')}"
     
    @@ -5425,17 +5615,17 @@ Default: True
    -
    458    def column_sql(self, expression: exp.Column) -> str:
    -459        return ".".join(
    -460            self.sql(part)
    -461            for part in (
    -462                expression.args.get("catalog"),
    -463                expression.args.get("db"),
    -464                expression.args.get("table"),
    -465                expression.args.get("this"),
    -466            )
    -467            if part
    -468        )
    +            
    496    def column_sql(self, expression: exp.Column) -> str:
    +497        return ".".join(
    +498            self.sql(part)
    +499            for part in (
    +500                expression.args.get("catalog"),
    +501                expression.args.get("db"),
    +502                expression.args.get("table"),
    +503                expression.args.get("this"),
    +504            )
    +505            if part
    +506        )
     
    @@ -5453,11 +5643,11 @@ Default: True
    -
    470    def columnposition_sql(self, expression: exp.ColumnPosition) -> str:
    -471        this = self.sql(expression, "this")
    -472        this = f" {this}" if this else ""
    -473        position = self.sql(expression, "position")
    -474        return f"{position}{this}"
    +            
    508    def columnposition_sql(self, expression: exp.ColumnPosition) -> str:
    +509        this = self.sql(expression, "this")
    +510        this = f" {this}" if this else ""
    +511        position = self.sql(expression, "position")
    +512        return f"{position}{this}"
     
    @@ -5475,17 +5665,17 @@ Default: True
    -
    476    def columndef_sql(self, expression: exp.ColumnDef) -> str:
    -477        column = self.sql(expression, "this")
    -478        kind = self.sql(expression, "kind")
    -479        constraints = self.expressions(expression, key="constraints", sep=" ", flat=True)
    -480        exists = "IF NOT EXISTS " if expression.args.get("exists") else ""
    -481        kind = f" {kind}" if kind else ""
    -482        constraints = f" {constraints}" if constraints else ""
    -483        position = self.sql(expression, "position")
    -484        position = f" {position}" if position else ""
    -485
    -486        return f"{exists}{column}{kind}{constraints}{position}"
    +            
    514    def columndef_sql(self, expression: exp.ColumnDef) -> str:
    +515        column = self.sql(expression, "this")
    +516        kind = self.sql(expression, "kind")
    +517        constraints = self.expressions(expression, key="constraints", sep=" ", flat=True)
    +518        exists = "IF NOT EXISTS " if expression.args.get("exists") else ""
    +519        kind = f" {kind}" if kind else ""
    +520        constraints = f" {constraints}" if constraints else ""
    +521        position = self.sql(expression, "position")
    +522        position = f" {position}" if position else ""
    +523
    +524        return f"{exists}{column}{kind}{constraints}{position}"
     
    @@ -5503,10 +5693,10 @@ Default: True
    -
    488    def columnconstraint_sql(self, expression: exp.ColumnConstraint) -> str:
    -489        this = self.sql(expression, "this")
    -490        kind_sql = self.sql(expression, "kind")
    -491        return f"CONSTRAINT {this} {kind_sql}" if this else kind_sql
    +            
    526    def columnconstraint_sql(self, expression: exp.ColumnConstraint) -> str:
    +527        this = self.sql(expression, "this")
    +528        kind_sql = self.sql(expression, "kind")
    +529        return f"CONSTRAINT {this} {kind_sql}" if this else kind_sql
     
    @@ -5524,8 +5714,8 @@ Default: True
    -
    493    def autoincrementcolumnconstraint_sql(self, _) -> str:
    -494        return self.token_sql(TokenType.AUTO_INCREMENT)
    +            
    531    def autoincrementcolumnconstraint_sql(self, _) -> str:
    +532        return self.token_sql(TokenType.AUTO_INCREMENT)
     
    @@ -5543,13 +5733,13 @@ Default: True
    -
    496    def compresscolumnconstraint_sql(self, expression: exp.CompressColumnConstraint) -> str:
    -497        if isinstance(expression.this, list):
    -498            this = self.wrap(self.expressions(expression, key="this", flat=True))
    -499        else:
    -500            this = self.sql(expression, "this")
    -501
    -502        return f"COMPRESS {this}"
    +            
    534    def compresscolumnconstraint_sql(self, expression: exp.CompressColumnConstraint) -> str:
    +535        if isinstance(expression.this, list):
    +536            this = self.wrap(self.expressions(expression, key="this", flat=True))
    +537        else:
    +538            this = self.sql(expression, "this")
    +539
    +540        return f"COMPRESS {this}"
     
    @@ -5567,30 +5757,30 @@ Default: True
    -
    504    def generatedasidentitycolumnconstraint_sql(
    -505        self, expression: exp.GeneratedAsIdentityColumnConstraint
    -506    ) -> str:
    -507        this = ""
    -508        if expression.this is not None:
    -509            this = " ALWAYS " if expression.this else " BY DEFAULT "
    -510        start = expression.args.get("start")
    -511        start = f"START WITH {start}" if start else ""
    -512        increment = expression.args.get("increment")
    -513        increment = f" INCREMENT BY {increment}" if increment else ""
    -514        minvalue = expression.args.get("minvalue")
    -515        minvalue = f" MINVALUE {minvalue}" if minvalue else ""
    -516        maxvalue = expression.args.get("maxvalue")
    -517        maxvalue = f" MAXVALUE {maxvalue}" if maxvalue else ""
    -518        cycle = expression.args.get("cycle")
    -519        cycle_sql = ""
    -520        if cycle is not None:
    -521            cycle_sql = f"{' NO' if not cycle else ''} CYCLE"
    -522            cycle_sql = cycle_sql.strip() if not start and not increment else cycle_sql
    -523        sequence_opts = ""
    -524        if start or increment or cycle_sql:
    -525            sequence_opts = f"{start}{increment}{minvalue}{maxvalue}{cycle_sql}"
    -526            sequence_opts = f" ({sequence_opts.strip()})"
    -527        return f"GENERATED{this}AS IDENTITY{sequence_opts}"
    +            
    542    def generatedasidentitycolumnconstraint_sql(
    +543        self, expression: exp.GeneratedAsIdentityColumnConstraint
    +544    ) -> str:
    +545        this = ""
    +546        if expression.this is not None:
    +547            this = " ALWAYS " if expression.this else " BY DEFAULT "
    +548        start = expression.args.get("start")
    +549        start = f"START WITH {start}" if start else ""
    +550        increment = expression.args.get("increment")
    +551        increment = f" INCREMENT BY {increment}" if increment else ""
    +552        minvalue = expression.args.get("minvalue")
    +553        minvalue = f" MINVALUE {minvalue}" if minvalue else ""
    +554        maxvalue = expression.args.get("maxvalue")
    +555        maxvalue = f" MAXVALUE {maxvalue}" if maxvalue else ""
    +556        cycle = expression.args.get("cycle")
    +557        cycle_sql = ""
    +558        if cycle is not None:
    +559            cycle_sql = f"{' NO' if not cycle else ''} CYCLE"
    +560            cycle_sql = cycle_sql.strip() if not start and not increment else cycle_sql
    +561        sequence_opts = ""
    +562        if start or increment or cycle_sql:
    +563            sequence_opts = f"{start}{increment}{minvalue}{maxvalue}{cycle_sql}"
    +564            sequence_opts = f" ({sequence_opts.strip()})"
    +565        return f"GENERATED{this}AS IDENTITY{sequence_opts}"
     
    @@ -5608,8 +5798,8 @@ Default: True
    -
    529    def notnullcolumnconstraint_sql(self, expression: exp.NotNullColumnConstraint) -> str:
    -530        return f"{'' if expression.args.get('allow_null') else 'NOT '}NULL"
    +            
    567    def notnullcolumnconstraint_sql(self, expression: exp.NotNullColumnConstraint) -> str:
    +568        return f"{'' if expression.args.get('allow_null') else 'NOT '}NULL"
     
    @@ -5627,11 +5817,11 @@ Default: True
    -
    532    def primarykeycolumnconstraint_sql(self, expression: exp.PrimaryKeyColumnConstraint) -> str:
    -533        desc = expression.args.get("desc")
    -534        if desc is not None:
    -535            return f"PRIMARY KEY{' DESC' if desc else ' ASC'}"
    -536        return f"PRIMARY KEY"
    +            
    570    def primarykeycolumnconstraint_sql(self, expression: exp.PrimaryKeyColumnConstraint) -> str:
    +571        desc = expression.args.get("desc")
    +572        if desc is not None:
    +573            return f"PRIMARY KEY{' DESC' if desc else ' ASC'}"
    +574        return f"PRIMARY KEY"
     
    @@ -5649,8 +5839,8 @@ Default: True
    -
    538    def uniquecolumnconstraint_sql(self, _) -> str:
    -539        return "UNIQUE"
    +            
    576    def uniquecolumnconstraint_sql(self, _) -> str:
    +577        return "UNIQUE"
     
    @@ -5668,121 +5858,120 @@ Default: True
    -
    541    def create_sql(self, expression: exp.Create) -> str:
    -542        kind = self.sql(expression, "kind").upper()
    -543        properties = expression.args.get("properties")
    -544        properties_exp = expression.copy()
    -545        properties_locs = self.locate_properties(properties) if properties else {}
    -546        if properties_locs.get(exp.Properties.Location.POST_SCHEMA) or properties_locs.get(
    -547            exp.Properties.Location.POST_WITH
    -548        ):
    -549            properties_exp.set(
    -550                "properties",
    -551                exp.Properties(
    -552                    expressions=[
    -553                        *properties_locs[exp.Properties.Location.POST_SCHEMA],
    -554                        *properties_locs[exp.Properties.Location.POST_WITH],
    -555                    ]
    -556                ),
    -557            )
    -558        if kind == "TABLE" and properties_locs.get(exp.Properties.Location.POST_NAME):
    -559            this_name = self.sql(expression.this, "this")
    -560            this_properties = self.properties(
    -561                exp.Properties(expressions=properties_locs[exp.Properties.Location.POST_NAME]),
    -562                wrapped=False,
    -563            )
    -564            this_schema = f"({self.expressions(expression.this)})"
    -565            this = f"{this_name}, {this_properties} {this_schema}"
    -566            properties_sql = ""
    -567        else:
    -568            this = self.sql(expression, "this")
    -569            properties_sql = self.sql(properties_exp, "properties")
    -570        begin = " BEGIN" if expression.args.get("begin") else ""
    -571        expression_sql = self.sql(expression, "expression")
    -572        if expression_sql:
    -573            expression_sql = f"{begin}{self.sep()}{expression_sql}"
    -574
    -575            if self.CREATE_FUNCTION_RETURN_AS or not isinstance(expression.expression, exp.Return):
    -576                if properties_locs.get(exp.Properties.Location.POST_ALIAS):
    -577                    postalias_props_sql = self.properties(
    -578                        exp.Properties(
    -579                            expressions=properties_locs[exp.Properties.Location.POST_ALIAS]
    -580                        ),
    -581                        wrapped=False,
    -582                    )
    -583                    expression_sql = f" AS {postalias_props_sql}{expression_sql}"
    -584                else:
    -585                    expression_sql = f" AS{expression_sql}"
    -586
    -587        postindex_props_sql = ""
    -588        if properties_locs.get(exp.Properties.Location.POST_INDEX):
    -589            postindex_props_sql = self.properties(
    -590                exp.Properties(expressions=properties_locs[exp.Properties.Location.POST_INDEX]),
    -591                wrapped=False,
    -592                prefix=" ",
    -593            )
    -594
    -595        indexes = expression.args.get("indexes")
    -596        if indexes:
    -597            indexes_sql: t.List[str] = []
    -598            for index in indexes:
    -599                ind_unique = " UNIQUE" if index.args.get("unique") else ""
    -600                ind_primary = " PRIMARY" if index.args.get("primary") else ""
    -601                ind_amp = " AMP" if index.args.get("amp") else ""
    -602                ind_name = f" {index.name}" if index.name else ""
    -603                ind_columns = (
    -604                    f' ({self.expressions(index, key="columns", flat=True)})'
    -605                    if index.args.get("columns")
    -606                    else ""
    -607                )
    -608                ind_sql = f"{ind_unique}{ind_primary}{ind_amp} INDEX{ind_name}{ind_columns}"
    -609
    -610                if indexes_sql:
    -611                    indexes_sql.append(ind_sql)
    -612                else:
    -613                    indexes_sql.append(
    -614                        f"{ind_sql}{postindex_props_sql}"
    -615                        if index.args.get("primary")
    -616                        else f"{postindex_props_sql}{ind_sql}"
    -617                    )
    -618
    -619            index_sql = "".join(indexes_sql)
    -620        else:
    -621            index_sql = postindex_props_sql
    -622
    -623        replace = " OR REPLACE" if expression.args.get("replace") else ""
    -624        unique = " UNIQUE" if expression.args.get("unique") else ""
    -625        volatile = " VOLATILE" if expression.args.get("volatile") else ""
    -626
    -627        postcreate_props_sql = ""
    -628        if properties_locs.get(exp.Properties.Location.POST_CREATE):
    -629            postcreate_props_sql = self.properties(
    -630                exp.Properties(expressions=properties_locs[exp.Properties.Location.POST_CREATE]),
    -631                sep=" ",
    -632                prefix=" ",
    -633                wrapped=False,
    -634            )
    -635
    -636        modifiers = "".join((replace, unique, volatile, postcreate_props_sql))
    -637
    -638        postexpression_props_sql = ""
    -639        if properties_locs.get(exp.Properties.Location.POST_EXPRESSION):
    -640            postexpression_props_sql = self.properties(
    -641                exp.Properties(
    -642                    expressions=properties_locs[exp.Properties.Location.POST_EXPRESSION]
    -643                ),
    -644                sep=" ",
    -645                prefix=" ",
    -646                wrapped=False,
    -647            )
    -648
    -649        exists_sql = " IF NOT EXISTS" if expression.args.get("exists") else ""
    -650        no_schema_binding = (
    -651            " WITH NO SCHEMA BINDING" if expression.args.get("no_schema_binding") else ""
    -652        )
    -653
    -654        expression_sql = f"CREATE{modifiers} {kind}{exists_sql} {this}{properties_sql}{expression_sql}{postexpression_props_sql}{index_sql}{no_schema_binding}"
    -655        return self.prepend_ctes(expression, expression_sql)
    +            
    579    def create_sql(self, expression: exp.Create) -> str:
    +580        kind = self.sql(expression, "kind").upper()
    +581        properties = expression.args.get("properties")
    +582        properties_exp = expression.copy()
    +583        properties_locs = self.locate_properties(properties) if properties else {}
    +584        if properties_locs.get(exp.Properties.Location.POST_SCHEMA) or properties_locs.get(
    +585            exp.Properties.Location.POST_WITH
    +586        ):
    +587            properties_exp.set(
    +588                "properties",
    +589                exp.Properties(
    +590                    expressions=[
    +591                        *properties_locs[exp.Properties.Location.POST_SCHEMA],
    +592                        *properties_locs[exp.Properties.Location.POST_WITH],
    +593                    ]
    +594                ),
    +595            )
    +596        if kind == "TABLE" and properties_locs.get(exp.Properties.Location.POST_NAME):
    +597            this_name = self.sql(expression.this, "this")
    +598            this_properties = self.properties(
    +599                exp.Properties(expressions=properties_locs[exp.Properties.Location.POST_NAME]),
    +600                wrapped=False,
    +601            )
    +602            this_schema = f"({self.expressions(expression.this)})"
    +603            this = f"{this_name}, {this_properties} {this_schema}"
    +604            properties_sql = ""
    +605        else:
    +606            this = self.sql(expression, "this")
    +607            properties_sql = self.sql(properties_exp, "properties")
    +608        begin = " BEGIN" if expression.args.get("begin") else ""
    +609        expression_sql = self.sql(expression, "expression")
    +610        if expression_sql:
    +611            expression_sql = f"{begin}{self.sep()}{expression_sql}"
    +612
    +613            if self.CREATE_FUNCTION_RETURN_AS or not isinstance(expression.expression, exp.Return):
    +614                if properties_locs.get(exp.Properties.Location.POST_ALIAS):
    +615                    postalias_props_sql = self.properties(
    +616                        exp.Properties(
    +617                            expressions=properties_locs[exp.Properties.Location.POST_ALIAS]
    +618                        ),
    +619                        wrapped=False,
    +620                    )
    +621                    expression_sql = f" AS {postalias_props_sql}{expression_sql}"
    +622                else:
    +623                    expression_sql = f" AS{expression_sql}"
    +624
    +625        postindex_props_sql = ""
    +626        if properties_locs.get(exp.Properties.Location.POST_INDEX):
    +627            postindex_props_sql = self.properties(
    +628                exp.Properties(expressions=properties_locs[exp.Properties.Location.POST_INDEX]),
    +629                wrapped=False,
    +630                prefix=" ",
    +631            )
    +632
    +633        indexes = expression.args.get("indexes")
    +634        if indexes:
    +635            indexes_sql: t.List[str] = []
    +636            for index in indexes:
    +637                ind_unique = " UNIQUE" if index.args.get("unique") else ""
    +638                ind_primary = " PRIMARY" if index.args.get("primary") else ""
    +639                ind_amp = " AMP" if index.args.get("amp") else ""
    +640                ind_name = f" {index.name}" if index.name else ""
    +641                ind_columns = (
    +642                    f' ({self.expressions(index, key="columns", flat=True)})'
    +643                    if index.args.get("columns")
    +644                    else ""
    +645                )
    +646                ind_sql = f"{ind_unique}{ind_primary}{ind_amp} INDEX{ind_name}{ind_columns}"
    +647
    +648                if indexes_sql:
    +649                    indexes_sql.append(ind_sql)
    +650                else:
    +651                    indexes_sql.append(
    +652                        f"{ind_sql}{postindex_props_sql}"
    +653                        if index.args.get("primary")
    +654                        else f"{postindex_props_sql}{ind_sql}"
    +655                    )
    +656
    +657            index_sql = "".join(indexes_sql)
    +658        else:
    +659            index_sql = postindex_props_sql
    +660
    +661        replace = " OR REPLACE" if expression.args.get("replace") else ""
    +662        unique = " UNIQUE" if expression.args.get("unique") else ""
    +663
    +664        postcreate_props_sql = ""
    +665        if properties_locs.get(exp.Properties.Location.POST_CREATE):
    +666            postcreate_props_sql = self.properties(
    +667                exp.Properties(expressions=properties_locs[exp.Properties.Location.POST_CREATE]),
    +668                sep=" ",
    +669                prefix=" ",
    +670                wrapped=False,
    +671            )
    +672
    +673        modifiers = "".join((replace, unique, postcreate_props_sql))
    +674
    +675        postexpression_props_sql = ""
    +676        if properties_locs.get(exp.Properties.Location.POST_EXPRESSION):
    +677            postexpression_props_sql = self.properties(
    +678                exp.Properties(
    +679                    expressions=properties_locs[exp.Properties.Location.POST_EXPRESSION]
    +680                ),
    +681                sep=" ",
    +682                prefix=" ",
    +683                wrapped=False,
    +684            )
    +685
    +686        exists_sql = " IF NOT EXISTS" if expression.args.get("exists") else ""
    +687        no_schema_binding = (
    +688            " WITH NO SCHEMA BINDING" if expression.args.get("no_schema_binding") else ""
    +689        )
    +690
    +691        expression_sql = f"CREATE{modifiers} {kind}{exists_sql} {this}{properties_sql}{expression_sql}{postexpression_props_sql}{index_sql}{no_schema_binding}"
    +692        return self.prepend_ctes(expression, expression_sql)
     
    @@ -5800,8 +5989,8 @@ Default: True
    -
    657    def describe_sql(self, expression: exp.Describe) -> str:
    -658        return f"DESCRIBE {self.sql(expression, 'this')}"
    +            
    694    def describe_sql(self, expression: exp.Describe) -> str:
    +695        return f"DESCRIBE {self.sql(expression, 'this')}"
     
    @@ -5819,11 +6008,11 @@ Default: True
    -
    660    def prepend_ctes(self, expression: exp.Expression, sql: str) -> str:
    -661        with_ = self.sql(expression, "with")
    -662        if with_:
    -663            sql = f"{with_}{self.sep()}{sql}"
    -664        return sql
    +            
    697    def prepend_ctes(self, expression: exp.Expression, sql: str) -> str:
    +698        with_ = self.sql(expression, "with")
    +699        if with_:
    +700            sql = f"{with_}{self.sep()}{sql}"
    +701        return sql
     
    @@ -5841,11 +6030,11 @@ Default: True
    -
    666    def with_sql(self, expression: exp.With) -> str:
    -667        sql = self.expressions(expression, flat=True)
    -668        recursive = "RECURSIVE " if expression.args.get("recursive") else ""
    -669
    -670        return f"WITH {recursive}{sql}"
    +            
    703    def with_sql(self, expression: exp.With) -> str:
    +704        sql = self.expressions(expression, flat=True)
    +705        recursive = "RECURSIVE " if expression.args.get("recursive") else ""
    +706
    +707        return f"WITH {recursive}{sql}"
     
    @@ -5863,9 +6052,9 @@ Default: True
    -
    672    def cte_sql(self, expression: exp.CTE) -> str:
    -673        alias = self.sql(expression, "alias")
    -674        return f"{alias} AS {self.wrap(expression)}"
    +            
    709    def cte_sql(self, expression: exp.CTE) -> str:
    +710        alias = self.sql(expression, "alias")
    +711        return f"{alias} AS {self.wrap(expression)}"
     
    @@ -5883,11 +6072,11 @@ Default: True
    -
    676    def tablealias_sql(self, expression: exp.TableAlias) -> str:
    -677        alias = self.sql(expression, "this")
    -678        columns = self.expressions(expression, key="columns", flat=True)
    -679        columns = f"({columns})" if columns else ""
    -680        return f"{alias}{columns}"
    +            
    713    def tablealias_sql(self, expression: exp.TableAlias) -> str:
    +714        alias = self.sql(expression, "this")
    +715        columns = self.expressions(expression, key="columns", flat=True)
    +716        columns = f"({columns})" if columns else ""
    +717        return f"{alias}{columns}"
     
    @@ -5905,8 +6094,8 @@ Default: True
    -
    682    def bitstring_sql(self, expression: exp.BitString) -> str:
    -683        return self.sql(expression, "this")
    +            
    719    def bitstring_sql(self, expression: exp.BitString) -> str:
    +720        return self.sql(expression, "this")
     
    @@ -5924,8 +6113,27 @@ Default: True
    -
    685    def hexstring_sql(self, expression: exp.HexString) -> str:
    -686        return self.sql(expression, "this")
    +            
    722    def hexstring_sql(self, expression: exp.HexString) -> str:
    +723        return self.sql(expression, "this")
    +
    + + + + +
    +
    + +
    + + def + bytestring_sql(self, expression: sqlglot.expressions.ByteString) -> str: + + + +
    + +
    725    def bytestring_sql(self, expression: exp.ByteString) -> str:
    +726        return self.sql(expression, "this")
     
    @@ -5943,24 +6151,22 @@ Default: True
    -
    688    def datatype_sql(self, expression: exp.DataType) -> str:
    -689        type_value = expression.this
    -690        type_sql = self.TYPE_MAPPING.get(type_value, type_value.value)
    -691        nested = ""
    -692        interior = self.expressions(expression, flat=True)
    -693        values = ""
    -694        if interior:
    -695            if expression.args.get("nested"):
    -696                nested = f"{self.STRUCT_DELIMITER[0]}{interior}{self.STRUCT_DELIMITER[1]}"
    -697                if expression.args.get("values") is not None:
    -698                    delimiters = ("[", "]") if type_value == exp.DataType.Type.ARRAY else ("(", ")")
    -699                    values = (
    -700                        f"{delimiters[0]}{self.expressions(expression, 'values')}{delimiters[1]}"
    -701                    )
    -702            else:
    -703                nested = f"({interior})"
    -704
    -705        return f"{type_sql}{nested}{values}"
    +            
    728    def datatype_sql(self, expression: exp.DataType) -> str:
    +729        type_value = expression.this
    +730        type_sql = self.TYPE_MAPPING.get(type_value, type_value.value)
    +731        nested = ""
    +732        interior = self.expressions(expression, flat=True)
    +733        values = ""
    +734        if interior:
    +735            if expression.args.get("nested"):
    +736                nested = f"{self.STRUCT_DELIMITER[0]}{interior}{self.STRUCT_DELIMITER[1]}"
    +737                if expression.args.get("values") is not None:
    +738                    delimiters = ("[", "]") if type_value == exp.DataType.Type.ARRAY else ("(", ")")
    +739                    values = f"{delimiters[0]}{self.expressions(expression, key='values')}{delimiters[1]}"
    +740            else:
    +741                nested = f"({interior})"
    +742
    +743        return f"{type_sql}{nested}{values}"
     
    @@ -5978,11 +6184,11 @@ Default: True
    -
    707    def directory_sql(self, expression: exp.Directory) -> str:
    -708        local = "LOCAL " if expression.args.get("local") else ""
    -709        row_format = self.sql(expression, "row_format")
    -710        row_format = f" {row_format}" if row_format else ""
    -711        return f"{local}DIRECTORY {self.sql(expression, 'this')}{row_format}"
    +            
    745    def directory_sql(self, expression: exp.Directory) -> str:
    +746        local = "LOCAL " if expression.args.get("local") else ""
    +747        row_format = self.sql(expression, "row_format")
    +748        row_format = f" {row_format}" if row_format else ""
    +749        return f"{local}DIRECTORY {self.sql(expression, 'this')}{row_format}"
     
    @@ -6000,18 +6206,18 @@ Default: True
    -
    713    def delete_sql(self, expression: exp.Delete) -> str:
    -714        this = self.sql(expression, "this")
    -715        this = f" FROM {this}" if this else ""
    -716        using_sql = (
    -717            f" USING {self.expressions(expression, 'using', sep=', USING ')}"
    -718            if expression.args.get("using")
    -719            else ""
    -720        )
    -721        where_sql = self.sql(expression, "where")
    -722        returning = self.sql(expression, "returning")
    -723        sql = f"DELETE{this}{using_sql}{where_sql}{returning}"
    -724        return self.prepend_ctes(expression, sql)
    +            
    751    def delete_sql(self, expression: exp.Delete) -> str:
    +752        this = self.sql(expression, "this")
    +753        this = f" FROM {this}" if this else ""
    +754        using_sql = (
    +755            f" USING {self.expressions(expression, key='using', sep=', USING ')}"
    +756            if expression.args.get("using")
    +757            else ""
    +758        )
    +759        where_sql = self.sql(expression, "where")
    +760        returning = self.sql(expression, "returning")
    +761        sql = f"DELETE{this}{using_sql}{where_sql}{returning}"
    +762        return self.prepend_ctes(expression, sql)
     
    @@ -6029,15 +6235,18 @@ Default: True
    -
    726    def drop_sql(self, expression: exp.Drop) -> str:
    -727        this = self.sql(expression, "this")
    -728        kind = expression.args["kind"]
    -729        exists_sql = " IF EXISTS " if expression.args.get("exists") else " "
    -730        temporary = " TEMPORARY" if expression.args.get("temporary") else ""
    -731        materialized = " MATERIALIZED" if expression.args.get("materialized") else ""
    -732        cascade = " CASCADE" if expression.args.get("cascade") else ""
    -733        constraints = " CONSTRAINTS" if expression.args.get("constraints") else ""
    -734        return f"DROP{temporary}{materialized} {kind}{exists_sql}{this}{cascade}{constraints}"
    +            
    764    def drop_sql(self, expression: exp.Drop) -> str:
    +765        this = self.sql(expression, "this")
    +766        kind = expression.args["kind"]
    +767        exists_sql = " IF EXISTS " if expression.args.get("exists") else " "
    +768        temporary = " TEMPORARY" if expression.args.get("temporary") else ""
    +769        materialized = " MATERIALIZED" if expression.args.get("materialized") else ""
    +770        cascade = " CASCADE" if expression.args.get("cascade") else ""
    +771        constraints = " CONSTRAINTS" if expression.args.get("constraints") else ""
    +772        purge = " PURGE" if expression.args.get("purge") else ""
    +773        return (
    +774            f"DROP{temporary}{materialized} {kind}{exists_sql}{this}{cascade}{constraints}{purge}"
    +775        )
     
    @@ -6055,11 +6264,11 @@ Default: True
    -
    736    def except_sql(self, expression: exp.Except) -> str:
    -737        return self.prepend_ctes(
    -738            expression,
    -739            self.set_operation(expression, self.except_op(expression)),
    -740        )
    +            
    777    def except_sql(self, expression: exp.Except) -> str:
    +778        return self.prepend_ctes(
    +779            expression,
    +780            self.set_operation(expression, self.except_op(expression)),
    +781        )
     
    @@ -6077,8 +6286,8 @@ Default: True
    -
    742    def except_op(self, expression: exp.Except) -> str:
    -743        return f"EXCEPT{'' if expression.args.get('distinct') else ' ALL'}"
    +            
    783    def except_op(self, expression: exp.Except) -> str:
    +784        return f"EXCEPT{'' if expression.args.get('distinct') else ' ALL'}"
     
    @@ -6096,12 +6305,15 @@ Default: True
    -
    745    def fetch_sql(self, expression: exp.Fetch) -> str:
    -746        direction = expression.args.get("direction")
    -747        direction = f" {direction.upper()}" if direction else ""
    -748        count = expression.args.get("count")
    -749        count = f" {count}" if count else ""
    -750        return f"{self.seg('FETCH')}{direction}{count} ROWS ONLY"
    +            
    786    def fetch_sql(self, expression: exp.Fetch) -> str:
    +787        direction = expression.args.get("direction")
    +788        direction = f" {direction.upper()}" if direction else ""
    +789        count = expression.args.get("count")
    +790        count = f" {count}" if count else ""
    +791        if expression.args.get("percent"):
    +792            count = f"{count} PERCENT"
    +793        with_ties_or_only = "WITH TIES" if expression.args.get("with_ties") else "ONLY"
    +794        return f"{self.seg('FETCH')}{direction}{count} ROWS {with_ties_or_only}"
     
    @@ -6119,10 +6331,10 @@ Default: True
    -
    752    def filter_sql(self, expression: exp.Filter) -> str:
    -753        this = self.sql(expression, "this")
    -754        where = self.sql(expression, "expression")[1:]  # where has a leading space
    -755        return f"{this} FILTER({where})"
    +            
    796    def filter_sql(self, expression: exp.Filter) -> str:
    +797        this = self.sql(expression, "this")
    +798        where = self.sql(expression, "expression")[1:]  # where has a leading space
    +799        return f"{this} FILTER({where})"
     
    @@ -6140,10 +6352,10 @@ Default: True
    -
    757    def hint_sql(self, expression: exp.Hint) -> str:
    -758        if self.sql(expression, "this"):
    -759            self.unsupported("Hints are not supported")
    -760        return ""
    +            
    801    def hint_sql(self, expression: exp.Hint) -> str:
    +802        if self.sql(expression, "this"):
    +803            self.unsupported("Hints are not supported")
    +804        return ""
     
    @@ -6161,11 +6373,11 @@ Default: True
    -
    762    def index_sql(self, expression: exp.Index) -> str:
    -763        this = self.sql(expression, "this")
    -764        table = self.sql(expression, "table")
    -765        columns = self.sql(expression, "columns")
    -766        return f"{this} ON {table} {columns}"
    +            
    806    def index_sql(self, expression: exp.Index) -> str:
    +807        this = self.sql(expression, "this")
    +808        table = self.sql(expression, "table")
    +809        columns = self.sql(expression, "columns")
    +810        return f"{this} ON {table} {columns}"
     
    @@ -6183,13 +6395,41 @@ Default: True
    -
    768    def identifier_sql(self, expression: exp.Identifier) -> str:
    -769        text = expression.name
    -770        text = text.lower() if self.normalize and not expression.quoted else text
    -771        text = text.replace(self.identifier_end, self._escaped_identifier_end)
    -772        if expression.quoted or should_identify(text, self.identify):
    -773            text = f"{self.identifier_start}{text}{self.identifier_end}"
    -774        return text
    +            
    812    def identifier_sql(self, expression: exp.Identifier) -> str:
    +813        text = expression.name
    +814        lower = text.lower()
    +815        text = lower if self.normalize and not expression.quoted else text
    +816        text = text.replace(self.identifier_end, self._escaped_identifier_end)
    +817        if (
    +818            expression.quoted
    +819            or should_identify(text, self.identify)
    +820            or lower in self.RESERVED_KEYWORDS
    +821        ):
    +822            text = f"{self.identifier_start}{text}{self.identifier_end}"
    +823        return text
    +
    + + + + +
    +
    + +
    + + def + inputoutputformat_sql(self, expression: sqlglot.expressions.InputOutputFormat) -> str: + + + +
    + +
    825    def inputoutputformat_sql(self, expression: exp.InputOutputFormat) -> str:
    +826        input_format = self.sql(expression, "input_format")
    +827        input_format = f"INPUTFORMAT {input_format}" if input_format else ""
    +828        output_format = self.sql(expression, "output_format")
    +829        output_format = f"OUTPUTFORMAT {output_format}" if output_format else ""
    +830        return self.sep().join((input_format, output_format))
     
    @@ -6207,8 +6447,8 @@ Default: True
    -
    776    def national_sql(self, expression: exp.National) -> str:
    -777        return f"N{self.sql(expression, 'this')}"
    +            
    832    def national_sql(self, expression: exp.National) -> str:
    +833        return f"N{self.sql(expression, 'this')}"
     
    @@ -6226,8 +6466,8 @@ Default: True
    -
    779    def partition_sql(self, expression: exp.Partition) -> str:
    -780        return f"PARTITION({self.expressions(expression)})"
    +            
    835    def partition_sql(self, expression: exp.Partition) -> str:
    +836        return f"PARTITION({self.expressions(expression)})"
     
    @@ -6245,20 +6485,20 @@ Default: True
    -
    782    def properties_sql(self, expression: exp.Properties) -> str:
    -783        root_properties = []
    -784        with_properties = []
    -785
    -786        for p in expression.expressions:
    -787            p_loc = self.PROPERTIES_LOCATION[p.__class__]
    -788            if p_loc == exp.Properties.Location.POST_WITH:
    -789                with_properties.append(p)
    -790            elif p_loc == exp.Properties.Location.POST_SCHEMA:
    -791                root_properties.append(p)
    -792
    -793        return self.root_properties(
    -794            exp.Properties(expressions=root_properties)
    -795        ) + self.with_properties(exp.Properties(expressions=with_properties))
    +            
    838    def properties_sql(self, expression: exp.Properties) -> str:
    +839        root_properties = []
    +840        with_properties = []
    +841
    +842        for p in expression.expressions:
    +843            p_loc = self.PROPERTIES_LOCATION[p.__class__]
    +844            if p_loc == exp.Properties.Location.POST_WITH:
    +845                with_properties.append(p)
    +846            elif p_loc == exp.Properties.Location.POST_SCHEMA:
    +847                root_properties.append(p)
    +848
    +849        return self.root_properties(
    +850            exp.Properties(expressions=root_properties)
    +851        ) + self.with_properties(exp.Properties(expressions=with_properties))
     
    @@ -6276,10 +6516,10 @@ Default: True
    -
    797    def root_properties(self, properties: exp.Properties) -> str:
    -798        if properties.expressions:
    -799            return self.sep() + self.expressions(properties, indent=False, sep=" ")
    -800        return ""
    +            
    853    def root_properties(self, properties: exp.Properties) -> str:
    +854        if properties.expressions:
    +855            return self.sep() + self.expressions(properties, indent=False, sep=" ")
    +856        return ""
     
    @@ -6297,19 +6537,19 @@ Default: True
    -
    802    def properties(
    -803        self,
    -804        properties: exp.Properties,
    -805        prefix: str = "",
    -806        sep: str = ", ",
    -807        suffix: str = "",
    -808        wrapped: bool = True,
    -809    ) -> str:
    -810        if properties.expressions:
    -811            expressions = self.expressions(properties, sep=sep, indent=False)
    -812            expressions = self.wrap(expressions) if wrapped else expressions
    -813            return f"{prefix}{' ' if prefix and prefix != ' ' else ''}{expressions}{suffix}"
    -814        return ""
    +            
    858    def properties(
    +859        self,
    +860        properties: exp.Properties,
    +861        prefix: str = "",
    +862        sep: str = ", ",
    +863        suffix: str = "",
    +864        wrapped: bool = True,
    +865    ) -> str:
    +866        if properties.expressions:
    +867            expressions = self.expressions(properties, sep=sep, indent=False)
    +868            expressions = self.wrap(expressions) if wrapped else expressions
    +869            return f"{prefix}{' ' if prefix and prefix != ' ' else ''}{expressions}{suffix}"
    +870        return ""
     
    @@ -6327,8 +6567,8 @@ Default: True
    -
    816    def with_properties(self, properties: exp.Properties) -> str:
    -817        return self.properties(properties, prefix=self.seg("WITH"))
    +            
    872    def with_properties(self, properties: exp.Properties) -> str:
    +873        return self.properties(properties, prefix=self.seg("WITH"))
     
    @@ -6346,33 +6586,33 @@ Default: True
    -
    819    def locate_properties(
    -820        self, properties: exp.Properties
    -821    ) -> t.Dict[exp.Properties.Location, list[exp.Property]]:
    -822        properties_locs: t.Dict[exp.Properties.Location, list[exp.Property]] = {
    -823            key: [] for key in exp.Properties.Location
    -824        }
    -825
    -826        for p in properties.expressions:
    -827            p_loc = self.PROPERTIES_LOCATION[p.__class__]
    -828            if p_loc == exp.Properties.Location.POST_NAME:
    -829                properties_locs[exp.Properties.Location.POST_NAME].append(p)
    -830            elif p_loc == exp.Properties.Location.POST_INDEX:
    -831                properties_locs[exp.Properties.Location.POST_INDEX].append(p)
    -832            elif p_loc == exp.Properties.Location.POST_SCHEMA:
    -833                properties_locs[exp.Properties.Location.POST_SCHEMA].append(p)
    -834            elif p_loc == exp.Properties.Location.POST_WITH:
    -835                properties_locs[exp.Properties.Location.POST_WITH].append(p)
    -836            elif p_loc == exp.Properties.Location.POST_CREATE:
    -837                properties_locs[exp.Properties.Location.POST_CREATE].append(p)
    -838            elif p_loc == exp.Properties.Location.POST_ALIAS:
    -839                properties_locs[exp.Properties.Location.POST_ALIAS].append(p)
    -840            elif p_loc == exp.Properties.Location.POST_EXPRESSION:
    -841                properties_locs[exp.Properties.Location.POST_EXPRESSION].append(p)
    -842            elif p_loc == exp.Properties.Location.UNSUPPORTED:
    -843                self.unsupported(f"Unsupported property {p.key}")
    -844
    -845        return properties_locs
    +            
    875    def locate_properties(
    +876        self, properties: exp.Properties
    +877    ) -> t.Dict[exp.Properties.Location, list[exp.Property]]:
    +878        properties_locs: t.Dict[exp.Properties.Location, list[exp.Property]] = {
    +879            key: [] for key in exp.Properties.Location
    +880        }
    +881
    +882        for p in properties.expressions:
    +883            p_loc = self.PROPERTIES_LOCATION[p.__class__]
    +884            if p_loc == exp.Properties.Location.POST_NAME:
    +885                properties_locs[exp.Properties.Location.POST_NAME].append(p)
    +886            elif p_loc == exp.Properties.Location.POST_INDEX:
    +887                properties_locs[exp.Properties.Location.POST_INDEX].append(p)
    +888            elif p_loc == exp.Properties.Location.POST_SCHEMA:
    +889                properties_locs[exp.Properties.Location.POST_SCHEMA].append(p)
    +890            elif p_loc == exp.Properties.Location.POST_WITH:
    +891                properties_locs[exp.Properties.Location.POST_WITH].append(p)
    +892            elif p_loc == exp.Properties.Location.POST_CREATE:
    +893                properties_locs[exp.Properties.Location.POST_CREATE].append(p)
    +894            elif p_loc == exp.Properties.Location.POST_ALIAS:
    +895                properties_locs[exp.Properties.Location.POST_ALIAS].append(p)
    +896            elif p_loc == exp.Properties.Location.POST_EXPRESSION:
    +897                properties_locs[exp.Properties.Location.POST_EXPRESSION].append(p)
    +898            elif p_loc == exp.Properties.Location.UNSUPPORTED:
    +899                self.unsupported(f"Unsupported property {p.key}")
    +900
    +901        return properties_locs
     
    @@ -6390,16 +6630,16 @@ Default: True
    -
    847    def property_sql(self, expression: exp.Property) -> str:
    -848        property_cls = expression.__class__
    -849        if property_cls == exp.Property:
    -850            return f"{expression.name}={self.sql(expression, 'value')}"
    -851
    -852        property_name = exp.Properties.PROPERTY_TO_NAME.get(property_cls)
    -853        if not property_name:
    -854            self.unsupported(f"Unsupported property {expression.key}")
    -855
    -856        return f"{property_name}={self.sql(expression, 'this')}"
    +            
    903    def property_sql(self, expression: exp.Property) -> str:
    +904        property_cls = expression.__class__
    +905        if property_cls == exp.Property:
    +906            return f"{expression.name}={self.sql(expression, 'value')}"
    +907
    +908        property_name = exp.Properties.PROPERTY_TO_NAME.get(property_cls)
    +909        if not property_name:
    +910            self.unsupported(f"Unsupported property {expression.key}")
    +911
    +912        return f"{property_name}={self.sql(expression, 'this')}"
     
    @@ -6417,10 +6657,10 @@ Default: True
    -
    858    def likeproperty_sql(self, expression: exp.LikeProperty) -> str:
    -859        options = " ".join(f"{e.name} {self.sql(e, 'value')}" for e in expression.expressions)
    -860        options = f" {options}" if options else ""
    -861        return f"LIKE {self.sql(expression, 'this')}{options}"
    +            
    914    def likeproperty_sql(self, expression: exp.LikeProperty) -> str:
    +915        options = " ".join(f"{e.name} {self.sql(e, 'value')}" for e in expression.expressions)
    +916        options = f" {options}" if options else ""
    +917        return f"LIKE {self.sql(expression, 'this')}{options}"
     
    @@ -6438,10 +6678,10 @@ Default: True
    -
    863    def fallbackproperty_sql(self, expression: exp.FallbackProperty) -> str:
    -864        no = "NO " if expression.args.get("no") else ""
    -865        protection = " PROTECTION" if expression.args.get("protection") else ""
    -866        return f"{no}FALLBACK{protection}"
    +            
    919    def fallbackproperty_sql(self, expression: exp.FallbackProperty) -> str:
    +920        no = "NO " if expression.args.get("no") else ""
    +921        protection = " PROTECTION" if expression.args.get("protection") else ""
    +922        return f"{no}FALLBACK{protection}"
     
    @@ -6459,11 +6699,11 @@ Default: True
    -
    868    def journalproperty_sql(self, expression: exp.JournalProperty) -> str:
    -869        no = "NO " if expression.args.get("no") else ""
    -870        dual = "DUAL " if expression.args.get("dual") else ""
    -871        before = "BEFORE " if expression.args.get("before") else ""
    -872        return f"{no}{dual}{before}JOURNAL"
    +            
    924    def journalproperty_sql(self, expression: exp.JournalProperty) -> str:
    +925        no = "NO " if expression.args.get("no") else ""
    +926        dual = "DUAL " if expression.args.get("dual") else ""
    +927        before = "BEFORE " if expression.args.get("before") else ""
    +928        return f"{no}{dual}{before}JOURNAL"
     
    @@ -6481,10 +6721,10 @@ Default: True
    -
    874    def freespaceproperty_sql(self, expression: exp.FreespaceProperty) -> str:
    -875        freespace = self.sql(expression, "this")
    -876        percent = " PERCENT" if expression.args.get("percent") else ""
    -877        return f"FREESPACE={freespace}{percent}"
    +            
    930    def freespaceproperty_sql(self, expression: exp.FreespaceProperty) -> str:
    +931        freespace = self.sql(expression, "this")
    +932        percent = " PERCENT" if expression.args.get("percent") else ""
    +933        return f"FREESPACE={freespace}{percent}"
     
    @@ -6502,13 +6742,13 @@ Default: True
    -
    879    def afterjournalproperty_sql(self, expression: exp.AfterJournalProperty) -> str:
    -880        no = "NO " if expression.args.get("no") else ""
    -881        dual = "DUAL " if expression.args.get("dual") else ""
    -882        local = ""
    -883        if expression.args.get("local") is not None:
    -884            local = "LOCAL " if expression.args.get("local") else "NOT LOCAL "
    -885        return f"{no}{dual}{local}AFTER JOURNAL"
    +            
    935    def afterjournalproperty_sql(self, expression: exp.AfterJournalProperty) -> str:
    +936        no = "NO " if expression.args.get("no") else ""
    +937        dual = "DUAL " if expression.args.get("dual") else ""
    +938        local = ""
    +939        if expression.args.get("local") is not None:
    +940            local = "LOCAL " if expression.args.get("local") else "NOT LOCAL "
    +941        return f"{no}{dual}{local}AFTER JOURNAL"
     
    @@ -6526,14 +6766,14 @@ Default: True
    -
    887    def checksumproperty_sql(self, expression: exp.ChecksumProperty) -> str:
    -888        if expression.args.get("default"):
    -889            property = "DEFAULT"
    -890        elif expression.args.get("on"):
    -891            property = "ON"
    -892        else:
    -893            property = "OFF"
    -894        return f"CHECKSUM={property}"
    +            
    943    def checksumproperty_sql(self, expression: exp.ChecksumProperty) -> str:
    +944        if expression.args.get("default"):
    +945            property = "DEFAULT"
    +946        elif expression.args.get("on"):
    +947            property = "ON"
    +948        else:
    +949            property = "OFF"
    +950        return f"CHECKSUM={property}"
     
    @@ -6551,14 +6791,14 @@ Default: True
    -
    896    def mergeblockratioproperty_sql(self, expression: exp.MergeBlockRatioProperty) -> str:
    -897        if expression.args.get("no"):
    -898            return "NO MERGEBLOCKRATIO"
    -899        if expression.args.get("default"):
    -900            return "DEFAULT MERGEBLOCKRATIO"
    -901
    -902        percent = " PERCENT" if expression.args.get("percent") else ""
    -903        return f"MERGEBLOCKRATIO={self.sql(expression, 'this')}{percent}"
    +            
    952    def mergeblockratioproperty_sql(self, expression: exp.MergeBlockRatioProperty) -> str:
    +953        if expression.args.get("no"):
    +954            return "NO MERGEBLOCKRATIO"
    +955        if expression.args.get("default"):
    +956            return "DEFAULT MERGEBLOCKRATIO"
    +957
    +958        percent = " PERCENT" if expression.args.get("percent") else ""
    +959        return f"MERGEBLOCKRATIO={self.sql(expression, 'this')}{percent}"
     
    @@ -6576,21 +6816,21 @@ Default: True
    -
    905    def datablocksizeproperty_sql(self, expression: exp.DataBlocksizeProperty) -> str:
    -906        default = expression.args.get("default")
    -907        min = expression.args.get("min")
    -908        if default is not None or min is not None:
    -909            if default:
    -910                property = "DEFAULT"
    -911            elif min:
    -912                property = "MINIMUM"
    -913            else:
    -914                property = "MAXIMUM"
    -915            return f"{property} DATABLOCKSIZE"
    -916        else:
    -917            units = expression.args.get("units")
    -918            units = f" {units}" if units else ""
    -919            return f"DATABLOCKSIZE={self.sql(expression, 'size')}{units}"
    +            
    961    def datablocksizeproperty_sql(self, expression: exp.DataBlocksizeProperty) -> str:
    +962        default = expression.args.get("default")
    +963        min = expression.args.get("min")
    +964        if default is not None or min is not None:
    +965            if default:
    +966                property = "DEFAULT"
    +967            elif min:
    +968                property = "MINIMUM"
    +969            else:
    +970                property = "MAXIMUM"
    +971            return f"{property} DATABLOCKSIZE"
    +972        else:
    +973            units = expression.args.get("units")
    +974            units = f" {units}" if units else ""
    +975            return f"DATABLOCKSIZE={self.sql(expression, 'size')}{units}"
     
    @@ -6608,24 +6848,24 @@ Default: True
    -
    921    def blockcompressionproperty_sql(self, expression: exp.BlockCompressionProperty) -> str:
    -922        autotemp = expression.args.get("autotemp")
    -923        always = expression.args.get("always")
    -924        default = expression.args.get("default")
    -925        manual = expression.args.get("manual")
    -926        never = expression.args.get("never")
    -927
    -928        if autotemp is not None:
    -929            property = f"AUTOTEMP({self.expressions(autotemp)})"
    -930        elif always:
    -931            property = "ALWAYS"
    -932        elif default:
    -933            property = "DEFAULT"
    -934        elif manual:
    -935            property = "MANUAL"
    -936        elif never:
    -937            property = "NEVER"
    -938        return f"BLOCKCOMPRESSION={property}"
    +            
    977    def blockcompressionproperty_sql(self, expression: exp.BlockCompressionProperty) -> str:
    +978        autotemp = expression.args.get("autotemp")
    +979        always = expression.args.get("always")
    +980        default = expression.args.get("default")
    +981        manual = expression.args.get("manual")
    +982        never = expression.args.get("never")
    +983
    +984        if autotemp is not None:
    +985            property = f"AUTOTEMP({self.expressions(autotemp)})"
    +986        elif always:
    +987            property = "ALWAYS"
    +988        elif default:
    +989            property = "DEFAULT"
    +990        elif manual:
    +991            property = "MANUAL"
    +992        elif never:
    +993            property = "NEVER"
    +994        return f"BLOCKCOMPRESSION={property}"
     
    @@ -6643,20 +6883,20 @@ Default: True
    -
    940    def isolatedloadingproperty_sql(self, expression: exp.IsolatedLoadingProperty) -> str:
    -941        no = expression.args.get("no")
    -942        no = " NO" if no else ""
    -943        concurrent = expression.args.get("concurrent")
    -944        concurrent = " CONCURRENT" if concurrent else ""
    -945
    -946        for_ = ""
    -947        if expression.args.get("for_all"):
    -948            for_ = " FOR ALL"
    -949        elif expression.args.get("for_insert"):
    -950            for_ = " FOR INSERT"
    -951        elif expression.args.get("for_none"):
    -952            for_ = " FOR NONE"
    -953        return f"WITH{no}{concurrent} ISOLATED LOADING{for_}"
    +            
     996    def isolatedloadingproperty_sql(self, expression: exp.IsolatedLoadingProperty) -> str:
    + 997        no = expression.args.get("no")
    + 998        no = " NO" if no else ""
    + 999        concurrent = expression.args.get("concurrent")
    +1000        concurrent = " CONCURRENT" if concurrent else ""
    +1001
    +1002        for_ = ""
    +1003        if expression.args.get("for_all"):
    +1004            for_ = " FOR ALL"
    +1005        elif expression.args.get("for_insert"):
    +1006            for_ = " FOR INSERT"
    +1007        elif expression.args.get("for_none"):
    +1008            for_ = " FOR NONE"
    +1009        return f"WITH{no}{concurrent} ISOLATED LOADING{for_}"
     
    @@ -6674,13 +6914,13 @@ Default: True
    -
    955    def lockingproperty_sql(self, expression: exp.LockingProperty) -> str:
    -956        kind = expression.args.get("kind")
    -957        this: str = f" {this}" if expression.this else ""
    -958        for_or_in = expression.args.get("for_or_in")
    -959        lock_type = expression.args.get("lock_type")
    -960        override = " OVERRIDE" if expression.args.get("override") else ""
    -961        return f"LOCKING {kind}{this} {for_or_in} {lock_type}{override}"
    +            
    1011    def lockingproperty_sql(self, expression: exp.LockingProperty) -> str:
    +1012        kind = expression.args.get("kind")
    +1013        this: str = f" {this}" if expression.this else ""
    +1014        for_or_in = expression.args.get("for_or_in")
    +1015        lock_type = expression.args.get("lock_type")
    +1016        override = " OVERRIDE" if expression.args.get("override") else ""
    +1017        return f"LOCKING {kind}{this} {for_or_in} {lock_type}{override}"
     
    @@ -6698,13 +6938,13 @@ Default: True
    -
    963    def withdataproperty_sql(self, expression: exp.WithDataProperty) -> str:
    -964        data_sql = f"WITH {'NO ' if expression.args.get('no') else ''}DATA"
    -965        statistics = expression.args.get("statistics")
    -966        statistics_sql = ""
    -967        if statistics is not None:
    -968            statistics_sql = f" AND {'NO ' if not statistics else ''}STATISTICS"
    -969        return f"{data_sql}{statistics_sql}"
    +            
    1019    def withdataproperty_sql(self, expression: exp.WithDataProperty) -> str:
    +1020        data_sql = f"WITH {'NO ' if expression.args.get('no') else ''}DATA"
    +1021        statistics = expression.args.get("statistics")
    +1022        statistics_sql = ""
    +1023        if statistics is not None:
    +1024            statistics_sql = f" AND {'NO ' if not statistics else ''}STATISTICS"
    +1025        return f"{data_sql}{statistics_sql}"
     
    @@ -6722,27 +6962,28 @@ Default: True
    -
    971    def insert_sql(self, expression: exp.Insert) -> str:
    -972        overwrite = expression.args.get("overwrite")
    -973
    -974        if isinstance(expression.this, exp.Directory):
    -975            this = "OVERWRITE " if overwrite else "INTO "
    -976        else:
    -977            this = "OVERWRITE TABLE " if overwrite else "INTO "
    -978
    -979        alternative = expression.args.get("alternative")
    -980        alternative = f" OR {alternative} " if alternative else " "
    -981        this = f"{this}{self.sql(expression, 'this')}"
    -982
    -983        exists = " IF EXISTS " if expression.args.get("exists") else " "
    -984        partition_sql = (
    -985            self.sql(expression, "partition") if expression.args.get("partition") else ""
    -986        )
    -987        expression_sql = self.sql(expression, "expression")
    -988        returning = self.sql(expression, "returning")
    -989        sep = self.sep() if partition_sql else ""
    -990        sql = f"INSERT{alternative}{this}{exists}{partition_sql}{sep}{expression_sql}{returning}"
    -991        return self.prepend_ctes(expression, sql)
    +            
    1027    def insert_sql(self, expression: exp.Insert) -> str:
    +1028        overwrite = expression.args.get("overwrite")
    +1029
    +1030        if isinstance(expression.this, exp.Directory):
    +1031            this = "OVERWRITE " if overwrite else "INTO "
    +1032        else:
    +1033            this = "OVERWRITE TABLE " if overwrite else "INTO "
    +1034
    +1035        alternative = expression.args.get("alternative")
    +1036        alternative = f" OR {alternative} " if alternative else " "
    +1037        this = f"{this}{self.sql(expression, 'this')}"
    +1038
    +1039        exists = " IF EXISTS " if expression.args.get("exists") else " "
    +1040        partition_sql = (
    +1041            self.sql(expression, "partition") if expression.args.get("partition") else ""
    +1042        )
    +1043        expression_sql = self.sql(expression, "expression")
    +1044        conflict = self.sql(expression, "conflict")
    +1045        returning = self.sql(expression, "returning")
    +1046        sep = self.sep() if partition_sql else ""
    +1047        sql = f"INSERT{alternative}{this}{exists}{partition_sql}{sep}{expression_sql}{conflict}{returning}"
    +1048        return self.prepend_ctes(expression, sql)
     
    @@ -6760,11 +7001,11 @@ Default: True
    -
    993    def intersect_sql(self, expression: exp.Intersect) -> str:
    -994        return self.prepend_ctes(
    -995            expression,
    -996            self.set_operation(expression, self.intersect_op(expression)),
    -997        )
    +            
    1050    def intersect_sql(self, expression: exp.Intersect) -> str:
    +1051        return self.prepend_ctes(
    +1052            expression,
    +1053            self.set_operation(expression, self.intersect_op(expression)),
    +1054        )
     
    @@ -6782,8 +7023,8 @@ Default: True
    -
     999    def intersect_op(self, expression: exp.Intersect) -> str:
    -1000        return f"INTERSECT{'' if expression.args.get('distinct') else ' ALL'}"
    +            
    1056    def intersect_op(self, expression: exp.Intersect) -> str:
    +1057        return f"INTERSECT{'' if expression.args.get('distinct') else ' ALL'}"
     
    @@ -6801,8 +7042,8 @@ Default: True
    -
    1002    def introducer_sql(self, expression: exp.Introducer) -> str:
    -1003        return f"{self.sql(expression, 'this')} {self.sql(expression, 'expression')}"
    +            
    1059    def introducer_sql(self, expression: exp.Introducer) -> str:
    +1060        return f"{self.sql(expression, 'this')} {self.sql(expression, 'expression')}"
     
    @@ -6820,8 +7061,37 @@ Default: True
    -
    1005    def pseudotype_sql(self, expression: exp.PseudoType) -> str:
    -1006        return expression.name.upper()
    +            
    1062    def pseudotype_sql(self, expression: exp.PseudoType) -> str:
    +1063        return expression.name.upper()
    +
    + + + + +
    +
    + +
    + + def + onconflict_sql(self, expression: sqlglot.expressions.OnConflict) -> str: + + + +
    + +
    1065    def onconflict_sql(self, expression: exp.OnConflict) -> str:
    +1066        conflict = "ON DUPLICATE KEY" if expression.args.get("duplicate") else "ON CONFLICT"
    +1067        constraint = self.sql(expression, "constraint")
    +1068        if constraint:
    +1069            constraint = f"ON CONSTRAINT {constraint}"
    +1070        key = self.expressions(expression, key="key", flat=True)
    +1071        do = "" if expression.args.get("duplicate") else " DO "
    +1072        nothing = "NOTHING" if expression.args.get("nothing") else ""
    +1073        expressions = self.expressions(expression, flat=True)
    +1074        if expressions:
    +1075            expressions = f"UPDATE SET {expressions}"
    +1076        return f"{self.seg(conflict)} {constraint}{key}{do}{nothing}{expressions}"
     
    @@ -6839,8 +7109,8 @@ Default: True
    -
    1008    def returning_sql(self, expression: exp.Returning) -> str:
    -1009        return f"{self.seg('RETURNING')} {self.expressions(expression, flat=True)}"
    +            
    1078    def returning_sql(self, expression: exp.Returning) -> str:
    +1079        return f"{self.seg('RETURNING')} {self.expressions(expression, flat=True)}"
     
    @@ -6858,20 +7128,20 @@ Default: True
    -
    1011    def rowformatdelimitedproperty_sql(self, expression: exp.RowFormatDelimitedProperty) -> str:
    -1012        fields = expression.args.get("fields")
    -1013        fields = f" FIELDS TERMINATED BY {fields}" if fields else ""
    -1014        escaped = expression.args.get("escaped")
    -1015        escaped = f" ESCAPED BY {escaped}" if escaped else ""
    -1016        items = expression.args.get("collection_items")
    -1017        items = f" COLLECTION ITEMS TERMINATED BY {items}" if items else ""
    -1018        keys = expression.args.get("map_keys")
    -1019        keys = f" MAP KEYS TERMINATED BY {keys}" if keys else ""
    -1020        lines = expression.args.get("lines")
    -1021        lines = f" LINES TERMINATED BY {lines}" if lines else ""
    -1022        null = expression.args.get("null")
    -1023        null = f" NULL DEFINED AS {null}" if null else ""
    -1024        return f"ROW FORMAT DELIMITED{fields}{escaped}{items}{keys}{lines}{null}"
    +            
    1081    def rowformatdelimitedproperty_sql(self, expression: exp.RowFormatDelimitedProperty) -> str:
    +1082        fields = expression.args.get("fields")
    +1083        fields = f" FIELDS TERMINATED BY {fields}" if fields else ""
    +1084        escaped = expression.args.get("escaped")
    +1085        escaped = f" ESCAPED BY {escaped}" if escaped else ""
    +1086        items = expression.args.get("collection_items")
    +1087        items = f" COLLECTION ITEMS TERMINATED BY {items}" if items else ""
    +1088        keys = expression.args.get("map_keys")
    +1089        keys = f" MAP KEYS TERMINATED BY {keys}" if keys else ""
    +1090        lines = expression.args.get("lines")
    +1091        lines = f" LINES TERMINATED BY {lines}" if lines else ""
    +1092        null = expression.args.get("null")
    +1093        null = f" NULL DEFINED AS {null}" if null else ""
    +1094        return f"ROW FORMAT DELIMITED{fields}{escaped}{items}{keys}{lines}{null}"
     
    @@ -6889,28 +7159,28 @@ Default: True
    -
    1026    def table_sql(self, expression: exp.Table, sep: str = " AS ") -> str:
    -1027        table = ".".join(
    -1028            part
    -1029            for part in [
    -1030                self.sql(expression, "catalog"),
    -1031                self.sql(expression, "db"),
    -1032                self.sql(expression, "this"),
    -1033            ]
    -1034            if part
    -1035        )
    -1036
    -1037        alias = self.sql(expression, "alias")
    -1038        alias = f"{sep}{alias}" if alias else ""
    -1039        hints = self.expressions(expression, key="hints", sep=", ", flat=True)
    -1040        hints = f" WITH ({hints})" if hints else ""
    -1041        laterals = self.expressions(expression, key="laterals", sep="")
    -1042        joins = self.expressions(expression, key="joins", sep="")
    -1043        pivots = self.expressions(expression, key="pivots", sep="")
    -1044        system_time = expression.args.get("system_time")
    -1045        system_time = f" {self.sql(expression, 'system_time')}" if system_time else ""
    -1046
    -1047        return f"{table}{system_time}{alias}{hints}{laterals}{joins}{pivots}"
    +            
    1096    def table_sql(self, expression: exp.Table, sep: str = " AS ") -> str:
    +1097        table = ".".join(
    +1098            part
    +1099            for part in [
    +1100                self.sql(expression, "catalog"),
    +1101                self.sql(expression, "db"),
    +1102                self.sql(expression, "this"),
    +1103            ]
    +1104            if part
    +1105        )
    +1106
    +1107        alias = self.sql(expression, "alias")
    +1108        alias = f"{sep}{alias}" if alias else ""
    +1109        hints = self.expressions(expression, key="hints", sep=", ", flat=True)
    +1110        hints = f" WITH ({hints})" if hints and self.TABLE_HINTS else ""
    +1111        laterals = self.expressions(expression, key="laterals", sep="")
    +1112        joins = self.expressions(expression, key="joins", sep="")
    +1113        pivots = self.expressions(expression, key="pivots", sep="")
    +1114        system_time = expression.args.get("system_time")
    +1115        system_time = f" {self.sql(expression, 'system_time')}" if system_time else ""
    +1116
    +1117        return f"{table}{system_time}{alias}{hints}{laterals}{joins}{pivots}"
     
    @@ -6928,29 +7198,31 @@ Default: True
    -
    1049    def tablesample_sql(self, expression: exp.TableSample, seed_prefix: str = "SEED") -> str:
    -1050        if self.alias_post_tablesample and expression.this.alias:
    -1051            this = self.sql(expression.this, "this")
    -1052            alias = f" AS {self.sql(expression.this, 'alias')}"
    -1053        else:
    -1054            this = self.sql(expression, "this")
    -1055            alias = ""
    -1056        method = self.sql(expression, "method")
    -1057        method = f"{method.upper()} " if method else ""
    -1058        numerator = self.sql(expression, "bucket_numerator")
    -1059        denominator = self.sql(expression, "bucket_denominator")
    -1060        field = self.sql(expression, "bucket_field")
    -1061        field = f" ON {field}" if field else ""
    -1062        bucket = f"BUCKET {numerator} OUT OF {denominator}{field}" if numerator else ""
    -1063        percent = self.sql(expression, "percent")
    -1064        percent = f"{percent} PERCENT" if percent else ""
    -1065        rows = self.sql(expression, "rows")
    -1066        rows = f"{rows} ROWS" if rows else ""
    -1067        size = self.sql(expression, "size")
    -1068        seed = self.sql(expression, "seed")
    -1069        seed = f" {seed_prefix} ({seed})" if seed else ""
    -1070        kind = expression.args.get("kind", "TABLESAMPLE")
    -1071        return f"{this} {kind} {method}({bucket}{percent}{rows}{size}){seed}{alias}"
    +            
    1119    def tablesample_sql(self, expression: exp.TableSample, seed_prefix: str = "SEED") -> str:
    +1120        if self.alias_post_tablesample and expression.this.alias:
    +1121            this = self.sql(expression.this, "this")
    +1122            alias = f" AS {self.sql(expression.this, 'alias')}"
    +1123        else:
    +1124            this = self.sql(expression, "this")
    +1125            alias = ""
    +1126        method = self.sql(expression, "method")
    +1127        method = f"{method.upper()} " if method and self.TABLESAMPLE_WITH_METHOD else ""
    +1128        numerator = self.sql(expression, "bucket_numerator")
    +1129        denominator = self.sql(expression, "bucket_denominator")
    +1130        field = self.sql(expression, "bucket_field")
    +1131        field = f" ON {field}" if field else ""
    +1132        bucket = f"BUCKET {numerator} OUT OF {denominator}{field}" if numerator else ""
    +1133        percent = self.sql(expression, "percent")
    +1134        percent = f"{percent} PERCENT" if percent else ""
    +1135        rows = self.sql(expression, "rows")
    +1136        rows = f"{rows} ROWS" if rows else ""
    +1137        size = self.sql(expression, "size")
    +1138        if size and self.TABLESAMPLE_SIZE_IS_PERCENT:
    +1139            size = f"{size} PERCENT"
    +1140        seed = self.sql(expression, "seed")
    +1141        seed = f" {seed_prefix} ({seed})" if seed else ""
    +1142        kind = expression.args.get("kind", "TABLESAMPLE")
    +1143        return f"{this} {kind} {method}({bucket}{percent}{rows}{size}){seed}{alias}"
     
    @@ -6968,15 +7240,15 @@ Default: True
    -
    1073    def pivot_sql(self, expression: exp.Pivot) -> str:
    -1074        this = self.sql(expression, "this")
    -1075        alias = self.sql(expression, "alias")
    -1076        alias = f" AS {alias}" if alias else ""
    -1077        unpivot = expression.args.get("unpivot")
    -1078        direction = "UNPIVOT" if unpivot else "PIVOT"
    -1079        expressions = self.expressions(expression, key="expressions")
    -1080        field = self.sql(expression, "field")
    -1081        return f"{this} {direction}({expressions} FOR {field}){alias}"
    +            
    1145    def pivot_sql(self, expression: exp.Pivot) -> str:
    +1146        this = self.sql(expression, "this")
    +1147        alias = self.sql(expression, "alias")
    +1148        alias = f" AS {alias}" if alias else ""
    +1149        unpivot = expression.args.get("unpivot")
    +1150        direction = "UNPIVOT" if unpivot else "PIVOT"
    +1151        expressions = self.expressions(expression, key="expressions")
    +1152        field = self.sql(expression, "field")
    +1153        return f"{this} {direction}({expressions} FOR {field}){alias}"
     
    @@ -6994,8 +7266,8 @@ Default: True
    -
    1083    def tuple_sql(self, expression: exp.Tuple) -> str:
    -1084        return f"({self.expressions(expression, flat=True)})"
    +            
    1155    def tuple_sql(self, expression: exp.Tuple) -> str:
    +1156        return f"({self.expressions(expression, flat=True)})"
     
    @@ -7013,14 +7285,14 @@ Default: True
    -
    1086    def update_sql(self, expression: exp.Update) -> str:
    -1087        this = self.sql(expression, "this")
    -1088        set_sql = self.expressions(expression, flat=True)
    -1089        from_sql = self.sql(expression, "from")
    -1090        where_sql = self.sql(expression, "where")
    -1091        returning = self.sql(expression, "returning")
    -1092        sql = f"UPDATE {this} SET {set_sql}{from_sql}{where_sql}{returning}"
    -1093        return self.prepend_ctes(expression, sql)
    +            
    1158    def update_sql(self, expression: exp.Update) -> str:
    +1159        this = self.sql(expression, "this")
    +1160        set_sql = self.expressions(expression, flat=True)
    +1161        from_sql = self.sql(expression, "from")
    +1162        where_sql = self.sql(expression, "where")
    +1163        returning = self.sql(expression, "returning")
    +1164        sql = f"UPDATE {this} SET {set_sql}{from_sql}{where_sql}{returning}"
    +1165        return self.prepend_ctes(expression, sql)
     
    @@ -7038,16 +7310,16 @@ Default: True
    -
    1095    def values_sql(self, expression: exp.Values) -> str:
    -1096        args = self.expressions(expression)
    -1097        alias = self.sql(expression, "alias")
    -1098        values = f"VALUES{self.seg('')}{args}"
    -1099        values = (
    -1100            f"({values})"
    -1101            if self.WRAP_DERIVED_VALUES and (alias or isinstance(expression.parent, exp.From))
    -1102            else values
    -1103        )
    -1104        return f"{values} AS {alias}" if alias else values
    +            
    1167    def values_sql(self, expression: exp.Values) -> str:
    +1168        args = self.expressions(expression)
    +1169        alias = self.sql(expression, "alias")
    +1170        values = f"VALUES{self.seg('')}{args}"
    +1171        values = (
    +1172            f"({values})"
    +1173            if self.WRAP_DERIVED_VALUES and (alias or isinstance(expression.parent, exp.From))
    +1174            else values
    +1175        )
    +1176        return f"{values} AS {alias}" if alias else values
     
    @@ -7065,8 +7337,8 @@ Default: True
    -
    1106    def var_sql(self, expression: exp.Var) -> str:
    -1107        return self.sql(expression, "this")
    +            
    1178    def var_sql(self, expression: exp.Var) -> str:
    +1179        return self.sql(expression, "this")
     
    @@ -7084,10 +7356,10 @@ Default: True
    -
    1109    def into_sql(self, expression: exp.Into) -> str:
    -1110        temporary = " TEMPORARY" if expression.args.get("temporary") else ""
    -1111        unlogged = " UNLOGGED" if expression.args.get("unlogged") else ""
    -1112        return f"{self.seg('INTO')}{temporary or unlogged} {self.sql(expression, 'this')}"
    +            
    1181    def into_sql(self, expression: exp.Into) -> str:
    +1182        temporary = " TEMPORARY" if expression.args.get("temporary") else ""
    +1183        unlogged = " UNLOGGED" if expression.args.get("unlogged") else ""
    +1184        return f"{self.seg('INTO')}{temporary or unlogged} {self.sql(expression, 'this')}"
     
    @@ -7105,9 +7377,9 @@ Default: True
    -
    1114    def from_sql(self, expression: exp.From) -> str:
    -1115        expressions = self.expressions(expression, flat=True)
    -1116        return f"{self.seg('FROM')} {expressions}"
    +            
    1186    def from_sql(self, expression: exp.From) -> str:
    +1187        expressions = self.expressions(expression, flat=True)
    +1188        return f"{self.seg('FROM')} {expressions}"
     
    @@ -7125,33 +7397,33 @@ Default: True
    -
    1118    def group_sql(self, expression: exp.Group) -> str:
    -1119        group_by = self.op_expressions("GROUP BY", expression)
    -1120        grouping_sets = self.expressions(expression, key="grouping_sets", indent=False)
    -1121        grouping_sets = (
    -1122            f"{self.seg('GROUPING SETS')} {self.wrap(grouping_sets)}" if grouping_sets else ""
    -1123        )
    -1124
    -1125        cube = expression.args.get("cube", [])
    -1126        if seq_get(cube, 0) is True:
    -1127            return f"{group_by}{self.seg('WITH CUBE')}"
    -1128        else:
    -1129            cube_sql = self.expressions(expression, key="cube", indent=False)
    -1130            cube_sql = f"{self.seg('CUBE')} {self.wrap(cube_sql)}" if cube_sql else ""
    -1131
    -1132        rollup = expression.args.get("rollup", [])
    -1133        if seq_get(rollup, 0) is True:
    -1134            return f"{group_by}{self.seg('WITH ROLLUP')}"
    -1135        else:
    -1136            rollup_sql = self.expressions(expression, key="rollup", indent=False)
    -1137            rollup_sql = f"{self.seg('ROLLUP')} {self.wrap(rollup_sql)}" if rollup_sql else ""
    -1138
    -1139        groupings = csv(grouping_sets, cube_sql, rollup_sql, sep=",")
    -1140
    -1141        if expression.args.get("expressions") and groupings:
    -1142            group_by = f"{group_by},"
    -1143
    -1144        return f"{group_by}{groupings}"
    +            
    1190    def group_sql(self, expression: exp.Group) -> str:
    +1191        group_by = self.op_expressions("GROUP BY", expression)
    +1192        grouping_sets = self.expressions(expression, key="grouping_sets", indent=False)
    +1193        grouping_sets = (
    +1194            f"{self.seg('GROUPING SETS')} {self.wrap(grouping_sets)}" if grouping_sets else ""
    +1195        )
    +1196
    +1197        cube = expression.args.get("cube", [])
    +1198        if seq_get(cube, 0) is True:
    +1199            return f"{group_by}{self.seg('WITH CUBE')}"
    +1200        else:
    +1201            cube_sql = self.expressions(expression, key="cube", indent=False)
    +1202            cube_sql = f"{self.seg('CUBE')} {self.wrap(cube_sql)}" if cube_sql else ""
    +1203
    +1204        rollup = expression.args.get("rollup", [])
    +1205        if seq_get(rollup, 0) is True:
    +1206            return f"{group_by}{self.seg('WITH ROLLUP')}"
    +1207        else:
    +1208            rollup_sql = self.expressions(expression, key="rollup", indent=False)
    +1209            rollup_sql = f"{self.seg('ROLLUP')} {self.wrap(rollup_sql)}" if rollup_sql else ""
    +1210
    +1211        groupings = csv(grouping_sets, cube_sql, rollup_sql, sep=",")
    +1212
    +1213        if expression.args.get("expressions") and groupings:
    +1214            group_by = f"{group_by},"
    +1215
    +1216        return f"{group_by}{groupings}"
     
    @@ -7169,9 +7441,9 @@ Default: True
    -
    1146    def having_sql(self, expression: exp.Having) -> str:
    -1147        this = self.indent(self.sql(expression, "this"))
    -1148        return f"{self.seg('HAVING')}{self.sep()}{this}"
    +            
    1218    def having_sql(self, expression: exp.Having) -> str:
    +1219        this = self.indent(self.sql(expression, "this"))
    +1220        return f"{self.seg('HAVING')}{self.sep()}{this}"
     
    @@ -7189,36 +7461,37 @@ Default: True
    -
    1150    def join_sql(self, expression: exp.Join) -> str:
    -1151        op_sql = self.seg(
    -1152            " ".join(
    -1153                op
    -1154                for op in (
    -1155                    "NATURAL" if expression.args.get("natural") else None,
    -1156                    expression.side,
    -1157                    expression.kind,
    -1158                    "JOIN",
    -1159                )
    -1160                if op
    -1161            )
    -1162        )
    -1163        on_sql = self.sql(expression, "on")
    -1164        using = expression.args.get("using")
    -1165
    -1166        if not on_sql and using:
    -1167            on_sql = csv(*(self.sql(column) for column in using))
    -1168
    -1169        if on_sql:
    -1170            on_sql = self.indent(on_sql, skip_first=True)
    -1171            space = self.seg(" " * self.pad) if self.pretty else " "
    -1172            if using:
    -1173                on_sql = f"{space}USING ({on_sql})"
    -1174            else:
    -1175                on_sql = f"{space}ON {on_sql}"
    -1176
    -1177        expression_sql = self.sql(expression, "expression")
    -1178        this_sql = self.sql(expression, "this")
    -1179        return f"{expression_sql}{op_sql} {this_sql}{on_sql}"
    +            
    1222    def join_sql(self, expression: exp.Join) -> str:
    +1223        op_sql = self.seg(
    +1224            " ".join(
    +1225                op
    +1226                for op in (
    +1227                    "NATURAL" if expression.args.get("natural") else None,
    +1228                    expression.side,
    +1229                    expression.kind,
    +1230                    expression.hint if self.JOIN_HINTS else None,
    +1231                    "JOIN",
    +1232                )
    +1233                if op
    +1234            )
    +1235        )
    +1236        on_sql = self.sql(expression, "on")
    +1237        using = expression.args.get("using")
    +1238
    +1239        if not on_sql and using:
    +1240            on_sql = csv(*(self.sql(column) for column in using))
    +1241
    +1242        if on_sql:
    +1243            on_sql = self.indent(on_sql, skip_first=True)
    +1244            space = self.seg(" " * self.pad) if self.pretty else " "
    +1245            if using:
    +1246                on_sql = f"{space}USING ({on_sql})"
    +1247            else:
    +1248                on_sql = f"{space}ON {on_sql}"
    +1249
    +1250        expression_sql = self.sql(expression, "expression")
    +1251        this_sql = self.sql(expression, "this")
    +1252        return f"{expression_sql}{op_sql} {this_sql}{on_sql}"
     
    @@ -7236,10 +7509,10 @@ Default: True
    -
    1181    def lambda_sql(self, expression: exp.Lambda, arrow_sep: str = "->") -> str:
    -1182        args = self.expressions(expression, flat=True)
    -1183        args = f"({args})" if len(args.split(",")) > 1 else args
    -1184        return f"{args} {arrow_sep} {self.sql(expression, 'this')}"
    +            
    1254    def lambda_sql(self, expression: exp.Lambda, arrow_sep: str = "->") -> str:
    +1255        args = self.expressions(expression, flat=True)
    +1256        args = f"({args})" if len(args.split(",")) > 1 else args
    +1257        return f"{args} {arrow_sep} {self.sql(expression, 'this')}"
     
    @@ -7257,23 +7530,23 @@ Default: True
    -
    1186    def lateral_sql(self, expression: exp.Lateral) -> str:
    -1187        this = self.sql(expression, "this")
    -1188
    -1189        if isinstance(expression.this, exp.Subquery):
    -1190            return f"LATERAL {this}"
    -1191
    -1192        if expression.args.get("view"):
    -1193            alias = expression.args["alias"]
    -1194            columns = self.expressions(alias, key="columns", flat=True)
    -1195            table = f" {alias.name}" if alias.name else ""
    -1196            columns = f" AS {columns}" if columns else ""
    -1197            op_sql = self.seg(f"LATERAL VIEW{' OUTER' if expression.args.get('outer') else ''}")
    -1198            return f"{op_sql}{self.sep()}{this}{table}{columns}"
    -1199
    -1200        alias = self.sql(expression, "alias")
    -1201        alias = f" AS {alias}" if alias else ""
    -1202        return f"LATERAL {this}{alias}"
    +            
    1259    def lateral_sql(self, expression: exp.Lateral) -> str:
    +1260        this = self.sql(expression, "this")
    +1261
    +1262        if isinstance(expression.this, exp.Subquery):
    +1263            return f"LATERAL {this}"
    +1264
    +1265        if expression.args.get("view"):
    +1266            alias = expression.args["alias"]
    +1267            columns = self.expressions(alias, key="columns", flat=True)
    +1268            table = f" {alias.name}" if alias.name else ""
    +1269            columns = f" AS {columns}" if columns else ""
    +1270            op_sql = self.seg(f"LATERAL VIEW{' OUTER' if expression.args.get('outer') else ''}")
    +1271            return f"{op_sql}{self.sep()}{this}{table}{columns}"
    +1272
    +1273        alias = self.sql(expression, "alias")
    +1274        alias = f" AS {alias}" if alias else ""
    +1275        return f"LATERAL {this}{alias}"
     
    @@ -7291,9 +7564,9 @@ Default: True
    -
    1204    def limit_sql(self, expression: exp.Limit) -> str:
    -1205        this = self.sql(expression, "this")
    -1206        return f"{this}{self.seg('LIMIT')} {self.sql(expression, 'expression')}"
    +            
    1277    def limit_sql(self, expression: exp.Limit) -> str:
    +1278        this = self.sql(expression, "this")
    +1279        return f"{this}{self.seg('LIMIT')} {self.sql(expression, 'expression')}"
     
    @@ -7311,9 +7584,9 @@ Default: True
    -
    1208    def offset_sql(self, expression: exp.Offset) -> str:
    -1209        this = self.sql(expression, "this")
    -1210        return f"{this}{self.seg('OFFSET')} {self.sql(expression, 'expression')}"
    +            
    1281    def offset_sql(self, expression: exp.Offset) -> str:
    +1282        this = self.sql(expression, "this")
    +1283        return f"{this}{self.seg('OFFSET')} {self.sql(expression, 'expression')}"
     
    @@ -7331,15 +7604,15 @@ Default: True
    -
    1212    def setitem_sql(self, expression: exp.SetItem) -> str:
    -1213        kind = self.sql(expression, "kind")
    -1214        kind = f"{kind} " if kind else ""
    -1215        this = self.sql(expression, "this")
    -1216        expressions = self.expressions(expression)
    -1217        collate = self.sql(expression, "collate")
    -1218        collate = f" COLLATE {collate}" if collate else ""
    -1219        global_ = "GLOBAL " if expression.args.get("global") else ""
    -1220        return f"{global_}{kind}{this}{expressions}{collate}"
    +            
    1285    def setitem_sql(self, expression: exp.SetItem) -> str:
    +1286        kind = self.sql(expression, "kind")
    +1287        kind = f"{kind} " if kind else ""
    +1288        this = self.sql(expression, "this")
    +1289        expressions = self.expressions(expression)
    +1290        collate = self.sql(expression, "collate")
    +1291        collate = f" COLLATE {collate}" if collate else ""
    +1292        global_ = "GLOBAL " if expression.args.get("global") else ""
    +1293        return f"{global_}{kind}{this}{expressions}{collate}"
     
    @@ -7357,11 +7630,11 @@ Default: True
    -
    1222    def set_sql(self, expression: exp.Set) -> str:
    -1223        expressions = (
    -1224            f" {self.expressions(expression, flat=True)}" if expression.expressions else ""
    -1225        )
    -1226        return f"SET{expressions}"
    +            
    1295    def set_sql(self, expression: exp.Set) -> str:
    +1296        expressions = (
    +1297            f" {self.expressions(expression, flat=True)}" if expression.expressions else ""
    +1298        )
    +1299        return f"SET{expressions}"
     
    @@ -7379,8 +7652,8 @@ Default: True
    -
    1228    def pragma_sql(self, expression: exp.Pragma) -> str:
    -1229        return f"PRAGMA {self.sql(expression, 'this')}"
    +            
    1301    def pragma_sql(self, expression: exp.Pragma) -> str:
    +1302        return f"PRAGMA {self.sql(expression, 'this')}"
     
    @@ -7398,13 +7671,13 @@ Default: True
    -
    1231    def lock_sql(self, expression: exp.Lock) -> str:
    -1232        if self.LOCKING_READS_SUPPORTED:
    -1233            lock_type = "UPDATE" if expression.args["update"] else "SHARE"
    -1234            return self.seg(f"FOR {lock_type}")
    -1235
    -1236        self.unsupported("Locking reads using 'FOR UPDATE/SHARE' are not supported")
    -1237        return ""
    +            
    1304    def lock_sql(self, expression: exp.Lock) -> str:
    +1305        if self.LOCKING_READS_SUPPORTED:
    +1306            lock_type = "UPDATE" if expression.args["update"] else "SHARE"
    +1307            return self.seg(f"FOR {lock_type}")
    +1308
    +1309        self.unsupported("Locking reads using 'FOR UPDATE/SHARE' are not supported")
    +1310        return ""
     
    @@ -7422,14 +7695,14 @@ Default: True
    -
    1239    def literal_sql(self, expression: exp.Literal) -> str:
    -1240        text = expression.this or ""
    -1241        if expression.is_string:
    -1242            text = text.replace(self.quote_end, self._escaped_quote_end)
    -1243            if self.pretty:
    -1244                text = text.replace("\n", self.SENTINEL_LINE_BREAK)
    -1245            text = f"{self.quote_start}{text}{self.quote_end}"
    -1246        return text
    +            
    1312    def literal_sql(self, expression: exp.Literal) -> str:
    +1313        text = expression.this or ""
    +1314        if expression.is_string:
    +1315            text = text.replace(self.quote_end, self._escaped_quote_end)
    +1316            if self.pretty:
    +1317                text = text.replace("\n", self.SENTINEL_LINE_BREAK)
    +1318            text = f"{self.quote_start}{text}{self.quote_end}"
    +1319        return text
     
    @@ -7447,18 +7720,18 @@ Default: True
    -
    1248    def loaddata_sql(self, expression: exp.LoadData) -> str:
    -1249        local = " LOCAL" if expression.args.get("local") else ""
    -1250        inpath = f" INPATH {self.sql(expression, 'inpath')}"
    -1251        overwrite = " OVERWRITE" if expression.args.get("overwrite") else ""
    -1252        this = f" INTO TABLE {self.sql(expression, 'this')}"
    -1253        partition = self.sql(expression, "partition")
    -1254        partition = f" {partition}" if partition else ""
    -1255        input_format = self.sql(expression, "input_format")
    -1256        input_format = f" INPUTFORMAT {input_format}" if input_format else ""
    -1257        serde = self.sql(expression, "serde")
    -1258        serde = f" SERDE {serde}" if serde else ""
    -1259        return f"LOAD DATA{local}{inpath}{overwrite}{this}{partition}{input_format}{serde}"
    +            
    1321    def loaddata_sql(self, expression: exp.LoadData) -> str:
    +1322        local = " LOCAL" if expression.args.get("local") else ""
    +1323        inpath = f" INPATH {self.sql(expression, 'inpath')}"
    +1324        overwrite = " OVERWRITE" if expression.args.get("overwrite") else ""
    +1325        this = f" INTO TABLE {self.sql(expression, 'this')}"
    +1326        partition = self.sql(expression, "partition")
    +1327        partition = f" {partition}" if partition else ""
    +1328        input_format = self.sql(expression, "input_format")
    +1329        input_format = f" INPUTFORMAT {input_format}" if input_format else ""
    +1330        serde = self.sql(expression, "serde")
    +1331        serde = f" SERDE {serde}" if serde else ""
    +1332        return f"LOAD DATA{local}{inpath}{overwrite}{this}{partition}{input_format}{serde}"
     
    @@ -7476,8 +7749,8 @@ Default: True
    -
    1261    def null_sql(self, *_) -> str:
    -1262        return "NULL"
    +            
    1334    def null_sql(self, *_) -> str:
    +1335        return "NULL"
     
    @@ -7495,8 +7768,8 @@ Default: True
    -
    1264    def boolean_sql(self, expression: exp.Boolean) -> str:
    -1265        return "TRUE" if expression.this else "FALSE"
    +            
    1337    def boolean_sql(self, expression: exp.Boolean) -> str:
    +1338        return "TRUE" if expression.this else "FALSE"
     
    @@ -7514,10 +7787,10 @@ Default: True
    -
    1267    def order_sql(self, expression: exp.Order, flat: bool = False) -> str:
    -1268        this = self.sql(expression, "this")
    -1269        this = f"{this} " if this else this
    -1270        return self.op_expressions(f"{this}ORDER BY", expression, flat=this or flat)  # type: ignore
    +            
    1340    def order_sql(self, expression: exp.Order, flat: bool = False) -> str:
    +1341        this = self.sql(expression, "this")
    +1342        this = f"{this} " if this else this
    +1343        return self.op_expressions(f"{this}ORDER BY", expression, flat=this or flat)  # type: ignore
     
    @@ -7535,8 +7808,8 @@ Default: True
    -
    1272    def cluster_sql(self, expression: exp.Cluster) -> str:
    -1273        return self.op_expressions("CLUSTER BY", expression)
    +            
    1345    def cluster_sql(self, expression: exp.Cluster) -> str:
    +1346        return self.op_expressions("CLUSTER BY", expression)
     
    @@ -7554,8 +7827,8 @@ Default: True
    -
    1275    def distribute_sql(self, expression: exp.Distribute) -> str:
    -1276        return self.op_expressions("DISTRIBUTE BY", expression)
    +            
    1348    def distribute_sql(self, expression: exp.Distribute) -> str:
    +1349        return self.op_expressions("DISTRIBUTE BY", expression)
     
    @@ -7573,8 +7846,8 @@ Default: True
    -
    1278    def sort_sql(self, expression: exp.Sort) -> str:
    -1279        return self.op_expressions("SORT BY", expression)
    +            
    1351    def sort_sql(self, expression: exp.Sort) -> str:
    +1352        return self.op_expressions("SORT BY", expression)
     
    @@ -7592,36 +7865,36 @@ Default: True
    -
    1281    def ordered_sql(self, expression: exp.Ordered) -> str:
    -1282        desc = expression.args.get("desc")
    -1283        asc = not desc
    -1284
    -1285        nulls_first = expression.args.get("nulls_first")
    -1286        nulls_last = not nulls_first
    -1287        nulls_are_large = self.null_ordering == "nulls_are_large"
    -1288        nulls_are_small = self.null_ordering == "nulls_are_small"
    -1289        nulls_are_last = self.null_ordering == "nulls_are_last"
    -1290
    -1291        sort_order = " DESC" if desc else ""
    -1292        nulls_sort_change = ""
    -1293        if nulls_first and (
    -1294            (asc and nulls_are_large) or (desc and nulls_are_small) or nulls_are_last
    -1295        ):
    -1296            nulls_sort_change = " NULLS FIRST"
    -1297        elif (
    -1298            nulls_last
    -1299            and ((asc and nulls_are_small) or (desc and nulls_are_large))
    -1300            and not nulls_are_last
    -1301        ):
    -1302            nulls_sort_change = " NULLS LAST"
    -1303
    -1304        if nulls_sort_change and not self.NULL_ORDERING_SUPPORTED:
    -1305            self.unsupported(
    -1306                "Sorting in an ORDER BY on NULLS FIRST/NULLS LAST is not supported by this dialect"
    -1307            )
    -1308            nulls_sort_change = ""
    -1309
    -1310        return f"{self.sql(expression, 'this')}{sort_order}{nulls_sort_change}"
    +            
    1354    def ordered_sql(self, expression: exp.Ordered) -> str:
    +1355        desc = expression.args.get("desc")
    +1356        asc = not desc
    +1357
    +1358        nulls_first = expression.args.get("nulls_first")
    +1359        nulls_last = not nulls_first
    +1360        nulls_are_large = self.null_ordering == "nulls_are_large"
    +1361        nulls_are_small = self.null_ordering == "nulls_are_small"
    +1362        nulls_are_last = self.null_ordering == "nulls_are_last"
    +1363
    +1364        sort_order = " DESC" if desc else ""
    +1365        nulls_sort_change = ""
    +1366        if nulls_first and (
    +1367            (asc and nulls_are_large) or (desc and nulls_are_small) or nulls_are_last
    +1368        ):
    +1369            nulls_sort_change = " NULLS FIRST"
    +1370        elif (
    +1371            nulls_last
    +1372            and ((asc and nulls_are_small) or (desc and nulls_are_large))
    +1373            and not nulls_are_last
    +1374        ):
    +1375            nulls_sort_change = " NULLS LAST"
    +1376
    +1377        if nulls_sort_change and not self.NULL_ORDERING_SUPPORTED:
    +1378            self.unsupported(
    +1379                "Sorting in an ORDER BY on NULLS FIRST/NULLS LAST is not supported by this dialect"
    +1380            )
    +1381            nulls_sort_change = ""
    +1382
    +1383        return f"{self.sql(expression, 'this')}{sort_order}{nulls_sort_change}"
     
    @@ -7639,31 +7912,37 @@ Default: True
    -
    1312    def matchrecognize_sql(self, expression: exp.MatchRecognize) -> str:
    -1313        partition = self.partition_by_sql(expression)
    -1314        order = self.sql(expression, "order")
    -1315        measures = self.sql(expression, "measures")
    -1316        measures = self.seg(f"MEASURES {measures}") if measures else ""
    -1317        rows = self.sql(expression, "rows")
    -1318        rows = self.seg(rows) if rows else ""
    -1319        after = self.sql(expression, "after")
    -1320        after = self.seg(after) if after else ""
    -1321        pattern = self.sql(expression, "pattern")
    -1322        pattern = self.seg(f"PATTERN ({pattern})") if pattern else ""
    -1323        define = self.sql(expression, "define")
    -1324        define = self.seg(f"DEFINE {define}") if define else ""
    -1325        body = "".join(
    -1326            (
    -1327                partition,
    -1328                order,
    -1329                measures,
    -1330                rows,
    -1331                after,
    -1332                pattern,
    -1333                define,
    -1334            )
    -1335        )
    -1336        return f"{self.seg('MATCH_RECOGNIZE')} {self.wrap(body)}"
    +            
    1385    def matchrecognize_sql(self, expression: exp.MatchRecognize) -> str:
    +1386        partition = self.partition_by_sql(expression)
    +1387        order = self.sql(expression, "order")
    +1388        measures = self.expressions(expression, key="measures")
    +1389        measures = self.seg(f"MEASURES{self.seg(measures)}") if measures else ""
    +1390        rows = self.sql(expression, "rows")
    +1391        rows = self.seg(rows) if rows else ""
    +1392        after = self.sql(expression, "after")
    +1393        after = self.seg(after) if after else ""
    +1394        pattern = self.sql(expression, "pattern")
    +1395        pattern = self.seg(f"PATTERN ({pattern})") if pattern else ""
    +1396        definition_sqls = [
    +1397            f"{self.sql(definition, 'alias')} AS {self.sql(definition, 'this')}"
    +1398            for definition in expression.args.get("define", [])
    +1399        ]
    +1400        definitions = self.expressions(sqls=definition_sqls)
    +1401        define = self.seg(f"DEFINE{self.seg(definitions)}") if definitions else ""
    +1402        body = "".join(
    +1403            (
    +1404                partition,
    +1405                order,
    +1406                measures,
    +1407                rows,
    +1408                after,
    +1409                pattern,
    +1410                define,
    +1411            )
    +1412        )
    +1413        alias = self.sql(expression, "alias")
    +1414        alias = f" {alias}" if alias else ""
    +1415        return f"{self.seg('MATCH_RECOGNIZE')} {self.wrap(body)}{alias}"
     
    @@ -7681,38 +7960,38 @@ Default: True
    -
    1338    def query_modifiers(self, expression: exp.Expression, *sqls: str) -> str:
    -1339        limit = expression.args.get("limit")
    -1340
    -1341        if self.LIMIT_FETCH == "LIMIT" and isinstance(limit, exp.Fetch):
    -1342            limit = exp.Limit(expression=limit.args.get("count"))
    -1343        elif self.LIMIT_FETCH == "FETCH" and isinstance(limit, exp.Limit):
    -1344            limit = exp.Fetch(direction="FIRST", count=limit.expression)
    -1345
    -1346        fetch = isinstance(limit, exp.Fetch)
    -1347
    -1348        return csv(
    -1349            *sqls,
    -1350            *[self.sql(sql) for sql in expression.args.get("joins") or []],
    -1351            self.sql(expression, "match"),
    -1352            *[self.sql(sql) for sql in expression.args.get("laterals") or []],
    -1353            self.sql(expression, "where"),
    -1354            self.sql(expression, "group"),
    -1355            self.sql(expression, "having"),
    -1356            self.sql(expression, "qualify"),
    -1357            self.seg("WINDOW ") + self.expressions(expression, "windows", flat=True)
    -1358            if expression.args.get("windows")
    -1359            else "",
    -1360            self.sql(expression, "distribute"),
    -1361            self.sql(expression, "sort"),
    -1362            self.sql(expression, "cluster"),
    -1363            self.sql(expression, "order"),
    -1364            self.sql(expression, "offset") if fetch else self.sql(limit),
    -1365            self.sql(limit) if fetch else self.sql(expression, "offset"),
    -1366            self.sql(expression, "lock"),
    -1367            self.sql(expression, "sample"),
    -1368            sep="",
    -1369        )
    +            
    1417    def query_modifiers(self, expression: exp.Expression, *sqls: str) -> str:
    +1418        limit = expression.args.get("limit")
    +1419
    +1420        if self.LIMIT_FETCH == "LIMIT" and isinstance(limit, exp.Fetch):
    +1421            limit = exp.Limit(expression=limit.args.get("count"))
    +1422        elif self.LIMIT_FETCH == "FETCH" and isinstance(limit, exp.Limit):
    +1423            limit = exp.Fetch(direction="FIRST", count=limit.expression)
    +1424
    +1425        fetch = isinstance(limit, exp.Fetch)
    +1426
    +1427        return csv(
    +1428            *sqls,
    +1429            *[self.sql(sql) for sql in expression.args.get("joins") or []],
    +1430            self.sql(expression, "match"),
    +1431            *[self.sql(sql) for sql in expression.args.get("laterals") or []],
    +1432            self.sql(expression, "where"),
    +1433            self.sql(expression, "group"),
    +1434            self.sql(expression, "having"),
    +1435            self.sql(expression, "qualify"),
    +1436            self.seg("WINDOW ") + self.expressions(expression, key="windows", flat=True)
    +1437            if expression.args.get("windows")
    +1438            else "",
    +1439            self.sql(expression, "distribute"),
    +1440            self.sql(expression, "sort"),
    +1441            self.sql(expression, "cluster"),
    +1442            self.sql(expression, "order"),
    +1443            self.sql(expression, "offset") if fetch else self.sql(limit),
    +1444            self.sql(limit) if fetch else self.sql(expression, "offset"),
    +1445            self.sql(expression, "lock"),
    +1446            self.sql(expression, "sample"),
    +1447            sep="",
    +1448        )
     
    @@ -7730,21 +8009,21 @@ Default: True
    -
    1371    def select_sql(self, expression: exp.Select) -> str:
    -1372        kind = expression.args.get("kind")
    -1373        kind = f" AS {kind}" if kind else ""
    -1374        hint = self.sql(expression, "hint")
    -1375        distinct = self.sql(expression, "distinct")
    -1376        distinct = f" {distinct}" if distinct else ""
    -1377        expressions = self.expressions(expression)
    -1378        expressions = f"{self.sep()}{expressions}" if expressions else expressions
    -1379        sql = self.query_modifiers(
    -1380            expression,
    -1381            f"SELECT{kind}{hint}{distinct}{expressions}",
    -1382            self.sql(expression, "into", comment=False),
    -1383            self.sql(expression, "from", comment=False),
    -1384        )
    -1385        return self.prepend_ctes(expression, sql)
    +            
    1450    def select_sql(self, expression: exp.Select) -> str:
    +1451        kind = expression.args.get("kind")
    +1452        kind = f" AS {kind}" if kind else ""
    +1453        hint = self.sql(expression, "hint")
    +1454        distinct = self.sql(expression, "distinct")
    +1455        distinct = f" {distinct}" if distinct else ""
    +1456        expressions = self.expressions(expression)
    +1457        expressions = f"{self.sep()}{expressions}" if expressions else expressions
    +1458        sql = self.query_modifiers(
    +1459            expression,
    +1460            f"SELECT{kind}{hint}{distinct}{expressions}",
    +1461            self.sql(expression, "into", comment=False),
    +1462            self.sql(expression, "from", comment=False),
    +1463        )
    +1464        return self.prepend_ctes(expression, sql)
     
    @@ -7762,11 +8041,11 @@ Default: True
    -
    1387    def schema_sql(self, expression: exp.Schema) -> str:
    -1388        this = self.sql(expression, "this")
    -1389        this = f"{this} " if this else ""
    -1390        sql = f"({self.sep('')}{self.expressions(expression)}{self.seg(')', sep='')}"
    -1391        return f"{this}{sql}"
    +            
    1466    def schema_sql(self, expression: exp.Schema) -> str:
    +1467        this = self.sql(expression, "this")
    +1468        this = f"{this} " if this else ""
    +1469        sql = f"({self.sep('')}{self.expressions(expression)}{self.seg(')', sep='')}"
    +1470        return f"{this}{sql}"
     
    @@ -7784,12 +8063,12 @@ Default: True
    -
    1393    def star_sql(self, expression: exp.Star) -> str:
    -1394        except_ = self.expressions(expression, key="except", flat=True)
    -1395        except_ = f"{self.seg(self.STAR_MAPPING['except'])} ({except_})" if except_ else ""
    -1396        replace = self.expressions(expression, key="replace", flat=True)
    -1397        replace = f"{self.seg(self.STAR_MAPPING['replace'])} ({replace})" if replace else ""
    -1398        return f"*{except_}{replace}"
    +            
    1472    def star_sql(self, expression: exp.Star) -> str:
    +1473        except_ = self.expressions(expression, key="except", flat=True)
    +1474        except_ = f"{self.seg(self.STAR_MAPPING['except'])} ({except_})" if except_ else ""
    +1475        replace = self.expressions(expression, key="replace", flat=True)
    +1476        replace = f"{self.seg(self.STAR_MAPPING['replace'])} ({replace})" if replace else ""
    +1477        return f"*{except_}{replace}"
     
    @@ -7807,8 +8086,8 @@ Default: True
    -
    1400    def structkwarg_sql(self, expression: exp.StructKwarg) -> str:
    -1401        return f"{self.sql(expression, 'this')} {self.sql(expression, 'expression')}"
    +            
    1479    def structkwarg_sql(self, expression: exp.StructKwarg) -> str:
    +1480        return f"{self.sql(expression, 'this')} {self.sql(expression, 'expression')}"
     
    @@ -7826,10 +8105,10 @@ Default: True
    -
    1403    def parameter_sql(self, expression: exp.Parameter) -> str:
    -1404        this = self.sql(expression, "this")
    -1405        this = f"{{{this}}}" if expression.args.get("wrapped") else f"{this}"
    -1406        return f"{self.PARAMETER_TOKEN}{this}"
    +            
    1482    def parameter_sql(self, expression: exp.Parameter) -> str:
    +1483        this = self.sql(expression, "this")
    +1484        this = f"{{{this}}}" if expression.args.get("wrapped") else f"{this}"
    +1485        return f"{self.PARAMETER_TOKEN}{this}"
     
    @@ -7847,12 +8126,12 @@ Default: True
    -
    1408    def sessionparameter_sql(self, expression: exp.SessionParameter) -> str:
    -1409        this = self.sql(expression, "this")
    -1410        kind = expression.text("kind")
    -1411        if kind:
    -1412            kind = f"{kind}."
    -1413        return f"@@{kind}{this}"
    +            
    1487    def sessionparameter_sql(self, expression: exp.SessionParameter) -> str:
    +1488        this = self.sql(expression, "this")
    +1489        kind = expression.text("kind")
    +1490        if kind:
    +1491            kind = f"{kind}."
    +1492        return f"@@{kind}{this}"
     
    @@ -7870,8 +8149,8 @@ Default: True
    -
    1415    def placeholder_sql(self, expression: exp.Placeholder) -> str:
    -1416        return f":{expression.name}" if expression.name else "?"
    +            
    1494    def placeholder_sql(self, expression: exp.Placeholder) -> str:
    +1495        return f":{expression.name}" if expression.name else "?"
     
    @@ -7889,18 +8168,18 @@ Default: True
    -
    1418    def subquery_sql(self, expression: exp.Subquery, sep: str = " AS ") -> str:
    -1419        alias = self.sql(expression, "alias")
    -1420        alias = f"{sep}{alias}" if alias else ""
    -1421
    -1422        sql = self.query_modifiers(
    -1423            expression,
    -1424            self.wrap(expression),
    -1425            alias,
    -1426            self.expressions(expression, key="pivots", sep=" "),
    -1427        )
    -1428
    -1429        return self.prepend_ctes(expression, sql)
    +            
    1497    def subquery_sql(self, expression: exp.Subquery, sep: str = " AS ") -> str:
    +1498        alias = self.sql(expression, "alias")
    +1499        alias = f"{sep}{alias}" if alias else ""
    +1500
    +1501        sql = self.query_modifiers(
    +1502            expression,
    +1503            self.wrap(expression),
    +1504            alias,
    +1505            self.expressions(expression, key="pivots", sep=" "),
    +1506        )
    +1507
    +1508        return self.prepend_ctes(expression, sql)
     
    @@ -7918,9 +8197,9 @@ Default: True
    -
    1431    def qualify_sql(self, expression: exp.Qualify) -> str:
    -1432        this = self.indent(self.sql(expression, "this"))
    -1433        return f"{self.seg('QUALIFY')}{self.sep()}{this}"
    +            
    1510    def qualify_sql(self, expression: exp.Qualify) -> str:
    +1511        this = self.indent(self.sql(expression, "this"))
    +1512        return f"{self.seg('QUALIFY')}{self.sep()}{this}"
     
    @@ -7938,11 +8217,11 @@ Default: True
    -
    1435    def union_sql(self, expression: exp.Union) -> str:
    -1436        return self.prepend_ctes(
    -1437            expression,
    -1438            self.set_operation(expression, self.union_op(expression)),
    -1439        )
    +            
    1514    def union_sql(self, expression: exp.Union) -> str:
    +1515        return self.prepend_ctes(
    +1516            expression,
    +1517            self.set_operation(expression, self.union_op(expression)),
    +1518        )
     
    @@ -7960,10 +8239,10 @@ Default: True
    -
    1441    def union_op(self, expression: exp.Union) -> str:
    -1442        kind = " DISTINCT" if self.EXPLICIT_UNION else ""
    -1443        kind = kind if expression.args.get("distinct") else " ALL"
    -1444        return f"UNION{kind}"
    +            
    1520    def union_op(self, expression: exp.Union) -> str:
    +1521        kind = " DISTINCT" if self.EXPLICIT_UNION else ""
    +1522        kind = kind if expression.args.get("distinct") else " ALL"
    +1523        return f"UNION{kind}"
     
    @@ -7981,19 +8260,19 @@ Default: True
    -
    1446    def unnest_sql(self, expression: exp.Unnest) -> str:
    -1447        args = self.expressions(expression, flat=True)
    -1448        alias = expression.args.get("alias")
    -1449        if alias and self.unnest_column_only:
    -1450            columns = alias.columns
    -1451            alias = self.sql(columns[0]) if columns else ""
    -1452        else:
    -1453            alias = self.sql(expression, "alias")
    -1454        alias = f" AS {alias}" if alias else alias
    -1455        ordinality = " WITH ORDINALITY" if expression.args.get("ordinality") else ""
    -1456        offset = expression.args.get("offset")
    -1457        offset = f" WITH OFFSET AS {self.sql(offset)}" if offset else ""
    -1458        return f"UNNEST({args}){ordinality}{alias}{offset}"
    +            
    1525    def unnest_sql(self, expression: exp.Unnest) -> str:
    +1526        args = self.expressions(expression, flat=True)
    +1527        alias = expression.args.get("alias")
    +1528        if alias and self.unnest_column_only:
    +1529            columns = alias.columns
    +1530            alias = self.sql(columns[0]) if columns else ""
    +1531        else:
    +1532            alias = self.sql(expression, "alias")
    +1533        alias = f" AS {alias}" if alias else alias
    +1534        ordinality = " WITH ORDINALITY" if expression.args.get("ordinality") else ""
    +1535        offset = expression.args.get("offset")
    +1536        offset = f" WITH OFFSET AS {self.sql(offset)}" if offset else ""
    +1537        return f"UNNEST({args}){ordinality}{alias}{offset}"
     
    @@ -8011,9 +8290,9 @@ Default: True
    -
    1460    def where_sql(self, expression: exp.Where) -> str:
    -1461        this = self.indent(self.sql(expression, "this"))
    -1462        return f"{self.seg('WHERE')}{self.sep()}{this}"
    +            
    1539    def where_sql(self, expression: exp.Where) -> str:
    +1540        this = self.indent(self.sql(expression, "this"))
    +1541        return f"{self.seg('WHERE')}{self.sep()}{this}"
     
    @@ -8031,28 +8310,28 @@ Default: True
    -
    1464    def window_sql(self, expression: exp.Window) -> str:
    -1465        this = self.sql(expression, "this")
    -1466
    -1467        partition = self.partition_by_sql(expression)
    -1468
    -1469        order = expression.args.get("order")
    -1470        order_sql = self.order_sql(order, flat=True) if order else ""
    -1471
    -1472        partition_sql = partition + " " if partition and order else partition
    -1473
    -1474        spec = expression.args.get("spec")
    -1475        spec_sql = " " + self.window_spec_sql(spec) if spec else ""
    -1476
    -1477        alias = self.sql(expression, "alias")
    -1478        this = f"{this} {'AS' if expression.arg_key == 'windows' else 'OVER'}"
    -1479
    -1480        if not partition and not order and not spec and alias:
    -1481            return f"{this} {alias}"
    -1482
    -1483        window_args = alias + partition_sql + order_sql + spec_sql
    -1484
    -1485        return f"{this} ({window_args.strip()})"
    +            
    1543    def window_sql(self, expression: exp.Window) -> str:
    +1544        this = self.sql(expression, "this")
    +1545
    +1546        partition = self.partition_by_sql(expression)
    +1547
    +1548        order = expression.args.get("order")
    +1549        order_sql = self.order_sql(order, flat=True) if order else ""
    +1550
    +1551        partition_sql = partition + " " if partition and order else partition
    +1552
    +1553        spec = expression.args.get("spec")
    +1554        spec_sql = " " + self.window_spec_sql(spec) if spec else ""
    +1555
    +1556        alias = self.sql(expression, "alias")
    +1557        this = f"{this} {'AS' if expression.arg_key == 'windows' else 'OVER'}"
    +1558
    +1559        if not partition and not order and not spec and alias:
    +1560            return f"{this} {alias}"
    +1561
    +1562        window_args = alias + partition_sql + order_sql + spec_sql
    +1563
    +1564        return f"{this} ({window_args.strip()})"
     
    @@ -8070,9 +8349,9 @@ Default: True
    -
    1487    def partition_by_sql(self, expression: exp.Window | exp.MatchRecognize) -> str:
    -1488        partition = self.expressions(expression, key="partition_by", flat=True)
    -1489        return f"PARTITION BY {partition}" if partition else ""
    +            
    1566    def partition_by_sql(self, expression: exp.Window | exp.MatchRecognize) -> str:
    +1567        partition = self.expressions(expression, key="partition_by", flat=True)
    +1568        return f"PARTITION BY {partition}" if partition else ""
     
    @@ -8090,14 +8369,14 @@ Default: True
    -
    1491    def window_spec_sql(self, expression: exp.WindowSpec) -> str:
    -1492        kind = self.sql(expression, "kind")
    -1493        start = csv(self.sql(expression, "start"), self.sql(expression, "start_side"), sep=" ")
    -1494        end = (
    -1495            csv(self.sql(expression, "end"), self.sql(expression, "end_side"), sep=" ")
    -1496            or "CURRENT ROW"
    -1497        )
    -1498        return f"{kind} BETWEEN {start} AND {end}"
    +            
    1570    def window_spec_sql(self, expression: exp.WindowSpec) -> str:
    +1571        kind = self.sql(expression, "kind")
    +1572        start = csv(self.sql(expression, "start"), self.sql(expression, "start_side"), sep=" ")
    +1573        end = (
    +1574            csv(self.sql(expression, "end"), self.sql(expression, "end_side"), sep=" ")
    +1575            or "CURRENT ROW"
    +1576        )
    +1577        return f"{kind} BETWEEN {start} AND {end}"
     
    @@ -8115,10 +8394,10 @@ Default: True
    -
    1500    def withingroup_sql(self, expression: exp.WithinGroup) -> str:
    -1501        this = self.sql(expression, "this")
    -1502        expression_sql = self.sql(expression, "expression")[1:]  # order has a leading space
    -1503        return f"{this} WITHIN GROUP ({expression_sql})"
    +            
    1579    def withingroup_sql(self, expression: exp.WithinGroup) -> str:
    +1580        this = self.sql(expression, "this")
    +1581        expression_sql = self.sql(expression, "expression")[1:]  # order has a leading space
    +1582        return f"{this} WITHIN GROUP ({expression_sql})"
     
    @@ -8136,11 +8415,11 @@ Default: True
    -
    1505    def between_sql(self, expression: exp.Between) -> str:
    -1506        this = self.sql(expression, "this")
    -1507        low = self.sql(expression, "low")
    -1508        high = self.sql(expression, "high")
    -1509        return f"{this} BETWEEN {low} AND {high}"
    +            
    1584    def between_sql(self, expression: exp.Between) -> str:
    +1585        this = self.sql(expression, "this")
    +1586        low = self.sql(expression, "low")
    +1587        high = self.sql(expression, "high")
    +1588        return f"{this} BETWEEN {low} AND {high}"
     
    @@ -8158,11 +8437,11 @@ Default: True
    -
    1511    def bracket_sql(self, expression: exp.Bracket) -> str:
    -1512        expressions = apply_index_offset(expression.expressions, self.index_offset)
    -1513        expressions_sql = ", ".join(self.sql(e) for e in expressions)
    -1514
    -1515        return f"{self.sql(expression, 'this')}[{expressions_sql}]"
    +            
    1590    def bracket_sql(self, expression: exp.Bracket) -> str:
    +1591        expressions = apply_index_offset(expression.this, expression.expressions, self.index_offset)
    +1592        expressions_sql = ", ".join(self.sql(e) for e in expressions)
    +1593
    +1594        return f"{self.sql(expression, 'this')}[{expressions_sql}]"
     
    @@ -8180,8 +8459,8 @@ Default: True
    -
    1517    def all_sql(self, expression: exp.All) -> str:
    -1518        return f"ALL {self.wrap(expression)}"
    +            
    1596    def all_sql(self, expression: exp.All) -> str:
    +1597        return f"ALL {self.wrap(expression)}"
     
    @@ -8199,11 +8478,11 @@ Default: True
    -
    1520    def any_sql(self, expression: exp.Any) -> str:
    -1521        this = self.sql(expression, "this")
    -1522        if isinstance(expression.this, exp.Subqueryable):
    -1523            this = self.wrap(this)
    -1524        return f"ANY {this}"
    +            
    1599    def any_sql(self, expression: exp.Any) -> str:
    +1600        this = self.sql(expression, "this")
    +1601        if isinstance(expression.this, exp.Subqueryable):
    +1602            this = self.wrap(this)
    +1603        return f"ANY {this}"
     
    @@ -8221,8 +8500,8 @@ Default: True
    -
    1526    def exists_sql(self, expression: exp.Exists) -> str:
    -1527        return f"EXISTS{self.wrap(expression)}"
    +            
    1605    def exists_sql(self, expression: exp.Exists) -> str:
    +1606        return f"EXISTS{self.wrap(expression)}"
     
    @@ -8240,25 +8519,25 @@ Default: True
    -
    1529    def case_sql(self, expression: exp.Case) -> str:
    -1530        this = self.sql(expression, "this")
    -1531        statements = [f"CASE {this}" if this else "CASE"]
    -1532
    -1533        for e in expression.args["ifs"]:
    -1534            statements.append(f"WHEN {self.sql(e, 'this')}")
    -1535            statements.append(f"THEN {self.sql(e, 'true')}")
    -1536
    -1537        default = self.sql(expression, "default")
    -1538
    -1539        if default:
    -1540            statements.append(f"ELSE {default}")
    -1541
    -1542        statements.append("END")
    -1543
    -1544        if self.pretty and self.text_width(statements) > self._max_text_width:
    -1545            return self.indent("\n".join(statements), skip_first=True, skip_last=True)
    -1546
    -1547        return " ".join(statements)
    +            
    1608    def case_sql(self, expression: exp.Case) -> str:
    +1609        this = self.sql(expression, "this")
    +1610        statements = [f"CASE {this}" if this else "CASE"]
    +1611
    +1612        for e in expression.args["ifs"]:
    +1613            statements.append(f"WHEN {self.sql(e, 'this')}")
    +1614            statements.append(f"THEN {self.sql(e, 'true')}")
    +1615
    +1616        default = self.sql(expression, "default")
    +1617
    +1618        if default:
    +1619            statements.append(f"ELSE {default}")
    +1620
    +1621        statements.append("END")
    +1622
    +1623        if self.pretty and self.text_width(statements) > self._max_text_width:
    +1624            return self.indent("\n".join(statements), skip_first=True, skip_last=True)
    +1625
    +1626        return " ".join(statements)
     
    @@ -8276,10 +8555,10 @@ Default: True
    -
    1549    def constraint_sql(self, expression: exp.Constraint) -> str:
    -1550        this = self.sql(expression, "this")
    -1551        expressions = self.expressions(expression, flat=True)
    -1552        return f"CONSTRAINT {this} {expressions}"
    +            
    1628    def constraint_sql(self, expression: exp.Constraint) -> str:
    +1629        this = self.sql(expression, "this")
    +1630        expressions = self.expressions(expression, flat=True)
    +1631        return f"CONSTRAINT {this} {expressions}"
     
    @@ -8297,10 +8576,10 @@ Default: True
    -
    1554    def extract_sql(self, expression: exp.Extract) -> str:
    -1555        this = self.sql(expression, "this")
    -1556        expression_sql = self.sql(expression, "expression")
    -1557        return f"EXTRACT({this} FROM {expression_sql})"
    +            
    1633    def extract_sql(self, expression: exp.Extract) -> str:
    +1634        this = self.sql(expression, "this")
    +1635        expression_sql = self.sql(expression, "expression")
    +1636        return f"EXTRACT({this} FROM {expression_sql})"
     
    @@ -8318,15 +8597,15 @@ Default: True
    -
    1559    def trim_sql(self, expression: exp.Trim) -> str:
    -1560        trim_type = self.sql(expression, "position")
    -1561
    -1562        if trim_type == "LEADING":
    -1563            return self.func("LTRIM", expression.this)
    -1564        elif trim_type == "TRAILING":
    -1565            return self.func("RTRIM", expression.this)
    -1566        else:
    -1567            return self.func("TRIM", expression.this, expression.expression)
    +            
    1638    def trim_sql(self, expression: exp.Trim) -> str:
    +1639        trim_type = self.sql(expression, "position")
    +1640
    +1641        if trim_type == "LEADING":
    +1642            return self.func("LTRIM", expression.this)
    +1643        elif trim_type == "TRAILING":
    +1644            return self.func("RTRIM", expression.this)
    +1645        else:
    +1646            return self.func("TRIM", expression.this, expression.expression)
     
    @@ -8344,10 +8623,10 @@ Default: True
    -
    1569    def concat_sql(self, expression: exp.Concat) -> str:
    -1570        if len(expression.expressions) == 1:
    -1571            return self.sql(expression.expressions[0])
    -1572        return self.function_fallback_sql(expression)
    +            
    1648    def concat_sql(self, expression: exp.Concat) -> str:
    +1649        if len(expression.expressions) == 1:
    +1650            return self.sql(expression.expressions[0])
    +1651        return self.function_fallback_sql(expression)
     
    @@ -8365,9 +8644,9 @@ Default: True
    -
    1574    def check_sql(self, expression: exp.Check) -> str:
    -1575        this = self.sql(expression, key="this")
    -1576        return f"CHECK ({this})"
    +            
    1653    def check_sql(self, expression: exp.Check) -> str:
    +1654        this = self.sql(expression, key="this")
    +1655        return f"CHECK ({this})"
     
    @@ -8385,15 +8664,15 @@ Default: True
    -
    1578    def foreignkey_sql(self, expression: exp.ForeignKey) -> str:
    -1579        expressions = self.expressions(expression, flat=True)
    -1580        reference = self.sql(expression, "reference")
    -1581        reference = f" {reference}" if reference else ""
    -1582        delete = self.sql(expression, "delete")
    -1583        delete = f" ON DELETE {delete}" if delete else ""
    -1584        update = self.sql(expression, "update")
    -1585        update = f" ON UPDATE {update}" if update else ""
    -1586        return f"FOREIGN KEY ({expressions}){reference}{delete}{update}"
    +            
    1657    def foreignkey_sql(self, expression: exp.ForeignKey) -> str:
    +1658        expressions = self.expressions(expression, flat=True)
    +1659        reference = self.sql(expression, "reference")
    +1660        reference = f" {reference}" if reference else ""
    +1661        delete = self.sql(expression, "delete")
    +1662        delete = f" ON DELETE {delete}" if delete else ""
    +1663        update = self.sql(expression, "update")
    +1664        update = f" ON UPDATE {update}" if update else ""
    +1665        return f"FOREIGN KEY ({expressions}){reference}{delete}{update}"
     
    @@ -8411,11 +8690,11 @@ Default: True
    -
    1588    def primarykey_sql(self, expression: exp.ForeignKey) -> str:
    -1589        expressions = self.expressions(expression, flat=True)
    -1590        options = self.expressions(expression, "options", flat=True, sep=" ")
    -1591        options = f" {options}" if options else ""
    -1592        return f"PRIMARY KEY ({expressions}){options}"
    +            
    1667    def primarykey_sql(self, expression: exp.ForeignKey) -> str:
    +1668        expressions = self.expressions(expression, flat=True)
    +1669        options = self.expressions(expression, key="options", flat=True, sep=" ")
    +1670        options = f" {options}" if options else ""
    +1671        return f"PRIMARY KEY ({expressions}){options}"
     
    @@ -8433,9 +8712,9 @@ Default: True
    -
    1594    def unique_sql(self, expression: exp.Unique) -> str:
    -1595        columns = self.expressions(expression, key="expressions")
    -1596        return f"UNIQUE ({columns})"
    +            
    1673    def unique_sql(self, expression: exp.Unique) -> str:
    +1674        columns = self.expressions(expression, key="expressions")
    +1675        return f"UNIQUE ({columns})"
     
    @@ -8453,10 +8732,10 @@ Default: True
    -
    1598    def if_sql(self, expression: exp.If) -> str:
    -1599        return self.case_sql(
    -1600            exp.Case(ifs=[expression.copy()], default=expression.args.get("false"))
    -1601        )
    +            
    1677    def if_sql(self, expression: exp.If) -> str:
    +1678        return self.case_sql(
    +1679            exp.Case(ifs=[expression.copy()], default=expression.args.get("false"))
    +1680        )
     
    @@ -8474,10 +8753,10 @@ Default: True
    -
    1603    def matchagainst_sql(self, expression: exp.MatchAgainst) -> str:
    -1604        modifier = expression.args.get("modifier")
    -1605        modifier = f" {modifier}" if modifier else ""
    -1606        return f"{self.func('MATCH', *expression.expressions)} AGAINST({self.sql(expression, 'this')}{modifier})"
    +            
    1682    def matchagainst_sql(self, expression: exp.MatchAgainst) -> str:
    +1683        modifier = expression.args.get("modifier")
    +1684        modifier = f" {modifier}" if modifier else ""
    +1685        return f"{self.func('MATCH', *expression.expressions)} AGAINST({self.sql(expression, 'this')}{modifier})"
     
    @@ -8495,8 +8774,8 @@ Default: True
    -
    1608    def jsonkeyvalue_sql(self, expression: exp.JSONKeyValue) -> str:
    -1609        return f"{self.sql(expression, 'this')}: {self.sql(expression, 'expression')}"
    +            
    1687    def jsonkeyvalue_sql(self, expression: exp.JSONKeyValue) -> str:
    +1688        return f"{self.sql(expression, 'this')}: {self.sql(expression, 'expression')}"
     
    @@ -8514,21 +8793,21 @@ Default: True
    -
    1611    def jsonobject_sql(self, expression: exp.JSONObject) -> str:
    -1612        expressions = self.expressions(expression)
    -1613        null_handling = expression.args.get("null_handling")
    -1614        null_handling = f" {null_handling}" if null_handling else ""
    -1615        unique_keys = expression.args.get("unique_keys")
    -1616        if unique_keys is not None:
    -1617            unique_keys = f" {'WITH' if unique_keys else 'WITHOUT'} UNIQUE KEYS"
    -1618        else:
    -1619            unique_keys = ""
    -1620        return_type = self.sql(expression, "return_type")
    -1621        return_type = f" RETURNING {return_type}" if return_type else ""
    -1622        format_json = " FORMAT JSON" if expression.args.get("format_json") else ""
    -1623        encoding = self.sql(expression, "encoding")
    -1624        encoding = f" ENCODING {encoding}" if encoding else ""
    -1625        return f"JSON_OBJECT({expressions}{null_handling}{unique_keys}{return_type}{format_json}{encoding})"
    +            
    1690    def jsonobject_sql(self, expression: exp.JSONObject) -> str:
    +1691        expressions = self.expressions(expression)
    +1692        null_handling = expression.args.get("null_handling")
    +1693        null_handling = f" {null_handling}" if null_handling else ""
    +1694        unique_keys = expression.args.get("unique_keys")
    +1695        if unique_keys is not None:
    +1696            unique_keys = f" {'WITH' if unique_keys else 'WITHOUT'} UNIQUE KEYS"
    +1697        else:
    +1698            unique_keys = ""
    +1699        return_type = self.sql(expression, "return_type")
    +1700        return_type = f" RETURNING {return_type}" if return_type else ""
    +1701        format_json = " FORMAT JSON" if expression.args.get("format_json") else ""
    +1702        encoding = self.sql(expression, "encoding")
    +1703        encoding = f" ENCODING {encoding}" if encoding else ""
    +1704        return f"JSON_OBJECT({expressions}{null_handling}{unique_keys}{return_type}{format_json}{encoding})"
     
    @@ -8546,22 +8825,22 @@ Default: True
    -
    1627    def in_sql(self, expression: exp.In) -> str:
    -1628        query = expression.args.get("query")
    -1629        unnest = expression.args.get("unnest")
    -1630        field = expression.args.get("field")
    -1631        is_global = " GLOBAL" if expression.args.get("is_global") else ""
    -1632
    -1633        if query:
    -1634            in_sql = self.wrap(query)
    -1635        elif unnest:
    -1636            in_sql = self.in_unnest_op(unnest)
    -1637        elif field:
    -1638            in_sql = self.sql(field)
    -1639        else:
    -1640            in_sql = f"({self.expressions(expression, flat=True)})"
    -1641
    -1642        return f"{self.sql(expression, 'this')}{is_global} IN {in_sql}"
    +            
    1706    def in_sql(self, expression: exp.In) -> str:
    +1707        query = expression.args.get("query")
    +1708        unnest = expression.args.get("unnest")
    +1709        field = expression.args.get("field")
    +1710        is_global = " GLOBAL" if expression.args.get("is_global") else ""
    +1711
    +1712        if query:
    +1713            in_sql = self.wrap(query)
    +1714        elif unnest:
    +1715            in_sql = self.in_unnest_op(unnest)
    +1716        elif field:
    +1717            in_sql = self.sql(field)
    +1718        else:
    +1719            in_sql = f"({self.expressions(expression, flat=True)})"
    +1720
    +1721        return f"{self.sql(expression, 'this')}{is_global} IN {in_sql}"
     
    @@ -8579,8 +8858,8 @@ Default: True
    -
    1644    def in_unnest_op(self, unnest: exp.Unnest) -> str:
    -1645        return f"(SELECT {self.sql(unnest)})"
    +            
    1723    def in_unnest_op(self, unnest: exp.Unnest) -> str:
    +1724        return f"(SELECT {self.sql(unnest)})"
     
    @@ -8598,19 +8877,22 @@ Default: True
    -
    1647    def interval_sql(self, expression: exp.Interval) -> str:
    -1648        this = expression.args.get("this")
    -1649        if this:
    -1650            this = (
    -1651                f" {this}"
    -1652                if isinstance(this, exp.Literal) or isinstance(this, exp.Paren)
    -1653                else f" ({this})"
    -1654            )
    -1655        else:
    -1656            this = ""
    -1657        unit = self.sql(expression, "unit")
    -1658        unit = f" {unit}" if unit else ""
    -1659        return f"INTERVAL{this}{unit}"
    +            
    1726    def interval_sql(self, expression: exp.Interval) -> str:
    +1727        unit = self.sql(expression, "unit")
    +1728        if not self.INTERVAL_ALLOWS_PLURAL_FORM:
    +1729            unit = self.TIME_PART_SINGULARS.get(unit.lower(), unit)
    +1730        unit = f" {unit}" if unit else ""
    +1731
    +1732        if self.SINGLE_STRING_INTERVAL:
    +1733            this = expression.this.name if expression.this else ""
    +1734            return f"INTERVAL '{this}{unit}'"
    +1735
    +1736        this = self.sql(expression, "this")
    +1737        if this:
    +1738            unwrapped = isinstance(expression.this, self.UNWRAPPED_INTERVAL_VALUES)
    +1739            this = f" {this}" if unwrapped else f" ({this})"
    +1740
    +1741        return f"INTERVAL{this}{unit}"
     
    @@ -8628,8 +8910,8 @@ Default: True
    -
    1661    def return_sql(self, expression: exp.Return) -> str:
    -1662        return f"RETURN {self.sql(expression, 'this')}"
    +            
    1743    def return_sql(self, expression: exp.Return) -> str:
    +1744        return f"RETURN {self.sql(expression, 'this')}"
     
    @@ -8647,13 +8929,13 @@ Default: True
    -
    1664    def reference_sql(self, expression: exp.Reference) -> str:
    -1665        this = self.sql(expression, "this")
    -1666        expressions = self.expressions(expression, flat=True)
    -1667        expressions = f"({expressions})" if expressions else ""
    -1668        options = self.expressions(expression, "options", flat=True, sep=" ")
    -1669        options = f" {options}" if options else ""
    -1670        return f"REFERENCES {this}{expressions}{options}"
    +            
    1746    def reference_sql(self, expression: exp.Reference) -> str:
    +1747        this = self.sql(expression, "this")
    +1748        expressions = self.expressions(expression, flat=True)
    +1749        expressions = f"({expressions})" if expressions else ""
    +1750        options = self.expressions(expression, key="options", flat=True, sep=" ")
    +1751        options = f" {options}" if options else ""
    +1752        return f"REFERENCES {this}{expressions}{options}"
     
    @@ -8671,8 +8953,8 @@ Default: True
    -
    1672    def anonymous_sql(self, expression: exp.Anonymous) -> str:
    -1673        return self.func(expression.name, *expression.expressions)
    +            
    1754    def anonymous_sql(self, expression: exp.Anonymous) -> str:
    +1755        return self.func(expression.name, *expression.expressions)
     
    @@ -8690,14 +8972,14 @@ Default: True
    -
    1675    def paren_sql(self, expression: exp.Paren) -> str:
    -1676        if isinstance(expression.unnest(), exp.Select):
    -1677            sql = self.wrap(expression)
    -1678        else:
    -1679            sql = self.seg(self.indent(self.sql(expression, "this")), sep="")
    -1680            sql = f"({sql}{self.seg(')', sep='')}"
    -1681
    -1682        return self.prepend_ctes(expression, sql)
    +            
    1757    def paren_sql(self, expression: exp.Paren) -> str:
    +1758        if isinstance(expression.unnest(), exp.Select):
    +1759            sql = self.wrap(expression)
    +1760        else:
    +1761            sql = self.seg(self.indent(self.sql(expression, "this")), sep="")
    +1762            sql = f"({sql}{self.seg(')', sep='')}"
    +1763
    +1764        return self.prepend_ctes(expression, sql)
     
    @@ -8715,11 +8997,11 @@ Default: True
    -
    1684    def neg_sql(self, expression: exp.Neg) -> str:
    -1685        # This makes sure we don't convert "- - 5" to "--5", which is a comment
    -1686        this_sql = self.sql(expression, "this")
    -1687        sep = " " if this_sql[0] == "-" else ""
    -1688        return f"-{sep}{this_sql}"
    +            
    1766    def neg_sql(self, expression: exp.Neg) -> str:
    +1767        # This makes sure we don't convert "- - 5" to "--5", which is a comment
    +1768        this_sql = self.sql(expression, "this")
    +1769        sep = " " if this_sql[0] == "-" else ""
    +1770        return f"-{sep}{this_sql}"
     
    @@ -8737,8 +9019,8 @@ Default: True
    -
    1690    def not_sql(self, expression: exp.Not) -> str:
    -1691        return f"NOT {self.sql(expression, 'this')}"
    +            
    1772    def not_sql(self, expression: exp.Not) -> str:
    +1773        return f"NOT {self.sql(expression, 'this')}"
     
    @@ -8756,10 +9038,10 @@ Default: True
    -
    1693    def alias_sql(self, expression: exp.Alias) -> str:
    -1694        to_sql = self.sql(expression, "alias")
    -1695        to_sql = f" AS {to_sql}" if to_sql else ""
    -1696        return f"{self.sql(expression, 'this')}{to_sql}"
    +            
    1775    def alias_sql(self, expression: exp.Alias) -> str:
    +1776        alias = self.sql(expression, "alias")
    +1777        alias = f" AS {alias}" if alias else ""
    +1778        return f"{self.sql(expression, 'this')}{alias}"
     
    @@ -8777,8 +9059,8 @@ Default: True
    -
    1698    def aliases_sql(self, expression: exp.Aliases) -> str:
    -1699        return f"{self.sql(expression, 'this')} AS ({self.expressions(expression, flat=True)})"
    +            
    1780    def aliases_sql(self, expression: exp.Aliases) -> str:
    +1781        return f"{self.sql(expression, 'this')} AS ({self.expressions(expression, flat=True)})"
     
    @@ -8796,10 +9078,10 @@ Default: True
    -
    1701    def attimezone_sql(self, expression: exp.AtTimeZone) -> str:
    -1702        this = self.sql(expression, "this")
    -1703        zone = self.sql(expression, "zone")
    -1704        return f"{this} AT TIME ZONE {zone}"
    +            
    1783    def attimezone_sql(self, expression: exp.AtTimeZone) -> str:
    +1784        this = self.sql(expression, "this")
    +1785        zone = self.sql(expression, "zone")
    +1786        return f"{this} AT TIME ZONE {zone}"
     
    @@ -8817,8 +9099,8 @@ Default: True
    -
    1706    def add_sql(self, expression: exp.Add) -> str:
    -1707        return self.binary(expression, "+")
    +            
    1788    def add_sql(self, expression: exp.Add) -> str:
    +1789        return self.binary(expression, "+")
     
    @@ -8836,8 +9118,8 @@ Default: True
    -
    1709    def and_sql(self, expression: exp.And) -> str:
    -1710        return self.connector_sql(expression, "AND")
    +            
    1791    def and_sql(self, expression: exp.And) -> str:
    +1792        return self.connector_sql(expression, "AND")
     
    @@ -8855,13 +9137,17 @@ Default: True
    -
    1712    def connector_sql(self, expression: exp.Connector, op: str) -> str:
    -1713        if not self.pretty:
    -1714            return self.binary(expression, op)
    -1715
    -1716        sqls = tuple(self.sql(e) for e in expression.flatten(unnest=False))
    -1717        sep = "\n" if self.text_width(sqls) > self._max_text_width else " "
    -1718        return f"{sep}{op} ".join(sqls)
    +            
    1794    def connector_sql(self, expression: exp.Connector, op: str) -> str:
    +1795        if not self.pretty:
    +1796            return self.binary(expression, op)
    +1797
    +1798        sqls = tuple(
    +1799            self.maybe_comment(self.sql(e), e, e.parent.comments) if i != 1 else self.sql(e)
    +1800            for i, e in enumerate(expression.flatten(unnest=False))
    +1801        )
    +1802
    +1803        sep = "\n" if self.text_width(sqls) > self._max_text_width else " "
    +1804        return f"{sep}{op} ".join(sqls)
     
    @@ -8879,8 +9165,8 @@ Default: True
    -
    1720    def bitwiseand_sql(self, expression: exp.BitwiseAnd) -> str:
    -1721        return self.binary(expression, "&")
    +            
    1806    def bitwiseand_sql(self, expression: exp.BitwiseAnd) -> str:
    +1807        return self.binary(expression, "&")
     
    @@ -8898,8 +9184,8 @@ Default: True
    -
    1723    def bitwiseleftshift_sql(self, expression: exp.BitwiseLeftShift) -> str:
    -1724        return self.binary(expression, "<<")
    +            
    1809    def bitwiseleftshift_sql(self, expression: exp.BitwiseLeftShift) -> str:
    +1810        return self.binary(expression, "<<")
     
    @@ -8917,8 +9203,8 @@ Default: True
    -
    1726    def bitwisenot_sql(self, expression: exp.BitwiseNot) -> str:
    -1727        return f"~{self.sql(expression, 'this')}"
    +            
    1812    def bitwisenot_sql(self, expression: exp.BitwiseNot) -> str:
    +1813        return f"~{self.sql(expression, 'this')}"
     
    @@ -8936,8 +9222,8 @@ Default: True
    -
    1729    def bitwiseor_sql(self, expression: exp.BitwiseOr) -> str:
    -1730        return self.binary(expression, "|")
    +            
    1815    def bitwiseor_sql(self, expression: exp.BitwiseOr) -> str:
    +1816        return self.binary(expression, "|")
     
    @@ -8955,8 +9241,8 @@ Default: True
    -
    1732    def bitwiserightshift_sql(self, expression: exp.BitwiseRightShift) -> str:
    -1733        return self.binary(expression, ">>")
    +            
    1818    def bitwiserightshift_sql(self, expression: exp.BitwiseRightShift) -> str:
    +1819        return self.binary(expression, ">>")
     
    @@ -8974,8 +9260,8 @@ Default: True
    -
    1735    def bitwisexor_sql(self, expression: exp.BitwiseXor) -> str:
    -1736        return self.binary(expression, "^")
    +            
    1821    def bitwisexor_sql(self, expression: exp.BitwiseXor) -> str:
    +1822        return self.binary(expression, "^")
     
    @@ -8993,8 +9279,8 @@ Default: True
    -
    1738    def cast_sql(self, expression: exp.Cast) -> str:
    -1739        return f"CAST({self.sql(expression, 'this')} AS {self.sql(expression, 'to')})"
    +            
    1824    def cast_sql(self, expression: exp.Cast) -> str:
    +1825        return f"CAST({self.sql(expression, 'this')} AS {self.sql(expression, 'to')})"
     
    @@ -9012,9 +9298,9 @@ Default: True
    -
    1741    def currentdate_sql(self, expression: exp.CurrentDate) -> str:
    -1742        zone = self.sql(expression, "this")
    -1743        return f"CURRENT_DATE({zone})" if zone else "CURRENT_DATE"
    +            
    1827    def currentdate_sql(self, expression: exp.CurrentDate) -> str:
    +1828        zone = self.sql(expression, "this")
    +1829        return f"CURRENT_DATE({zone})" if zone else "CURRENT_DATE"
     
    @@ -9032,8 +9318,8 @@ Default: True
    -
    1745    def collate_sql(self, expression: exp.Collate) -> str:
    -1746        return self.binary(expression, "COLLATE")
    +            
    1831    def collate_sql(self, expression: exp.Collate) -> str:
    +1832        return self.binary(expression, "COLLATE")
     
    @@ -9051,8 +9337,8 @@ Default: True
    -
    1748    def command_sql(self, expression: exp.Command) -> str:
    -1749        return f"{self.sql(expression, 'this').upper()} {expression.text('expression').strip()}"
    +            
    1834    def command_sql(self, expression: exp.Command) -> str:
    +1835        return f"{self.sql(expression, 'this').upper()} {expression.text('expression').strip()}"
     
    @@ -9070,12 +9356,12 @@ Default: True
    -
    1751    def comment_sql(self, expression: exp.Comment) -> str:
    -1752        this = self.sql(expression, "this")
    -1753        kind = expression.args["kind"]
    -1754        exists_sql = " IF EXISTS " if expression.args.get("exists") else " "
    -1755        expression_sql = self.sql(expression, "expression")
    -1756        return f"COMMENT{exists_sql}ON {kind} {this} IS {expression_sql}"
    +            
    1837    def comment_sql(self, expression: exp.Comment) -> str:
    +1838        this = self.sql(expression, "this")
    +1839        kind = expression.args["kind"]
    +1840        exists_sql = " IF EXISTS " if expression.args.get("exists") else " "
    +1841        expression_sql = self.sql(expression, "expression")
    +1842        return f"COMMENT{exists_sql}ON {kind} {this} IS {expression_sql}"
     
    @@ -9093,8 +9379,8 @@ Default: True
    -
    1758    def transaction_sql(self, expression: exp.Transaction) -> str:
    -1759        return "BEGIN"
    +            
    1844    def transaction_sql(self, expression: exp.Transaction) -> str:
    +1845        return "BEGIN"
     
    @@ -9112,12 +9398,12 @@ Default: True
    -
    1761    def commit_sql(self, expression: exp.Commit) -> str:
    -1762        chain = expression.args.get("chain")
    -1763        if chain is not None:
    -1764            chain = " AND CHAIN" if chain else " AND NO CHAIN"
    -1765
    -1766        return f"COMMIT{chain or ''}"
    +            
    1847    def commit_sql(self, expression: exp.Commit) -> str:
    +1848        chain = expression.args.get("chain")
    +1849        if chain is not None:
    +1850            chain = " AND CHAIN" if chain else " AND NO CHAIN"
    +1851
    +1852        return f"COMMIT{chain or ''}"
     
    @@ -9135,10 +9421,10 @@ Default: True
    -
    1768    def rollback_sql(self, expression: exp.Rollback) -> str:
    -1769        savepoint = expression.args.get("savepoint")
    -1770        savepoint = f" TO {savepoint}" if savepoint else ""
    -1771        return f"ROLLBACK{savepoint}"
    +            
    1854    def rollback_sql(self, expression: exp.Rollback) -> str:
    +1855        savepoint = expression.args.get("savepoint")
    +1856        savepoint = f" TO {savepoint}" if savepoint else ""
    +1857        return f"ROLLBACK{savepoint}"
     
    @@ -9156,25 +9442,25 @@ Default: True
    -
    1773    def altercolumn_sql(self, expression: exp.AlterColumn) -> str:
    -1774        this = self.sql(expression, "this")
    -1775
    -1776        dtype = self.sql(expression, "dtype")
    -1777        if dtype:
    -1778            collate = self.sql(expression, "collate")
    -1779            collate = f" COLLATE {collate}" if collate else ""
    -1780            using = self.sql(expression, "using")
    -1781            using = f" USING {using}" if using else ""
    -1782            return f"ALTER COLUMN {this} TYPE {dtype}{collate}{using}"
    -1783
    -1784        default = self.sql(expression, "default")
    -1785        if default:
    -1786            return f"ALTER COLUMN {this} SET DEFAULT {default}"
    -1787
    -1788        if not expression.args.get("drop"):
    -1789            self.unsupported("Unsupported ALTER COLUMN syntax")
    -1790
    -1791        return f"ALTER COLUMN {this} DROP DEFAULT"
    +            
    1859    def altercolumn_sql(self, expression: exp.AlterColumn) -> str:
    +1860        this = self.sql(expression, "this")
    +1861
    +1862        dtype = self.sql(expression, "dtype")
    +1863        if dtype:
    +1864            collate = self.sql(expression, "collate")
    +1865            collate = f" COLLATE {collate}" if collate else ""
    +1866            using = self.sql(expression, "using")
    +1867            using = f" USING {using}" if using else ""
    +1868            return f"ALTER COLUMN {this} TYPE {dtype}{collate}{using}"
    +1869
    +1870        default = self.sql(expression, "default")
    +1871        if default:
    +1872            return f"ALTER COLUMN {this} SET DEFAULT {default}"
    +1873
    +1874        if not expression.args.get("drop"):
    +1875            self.unsupported("Unsupported ALTER COLUMN syntax")
    +1876
    +1877        return f"ALTER COLUMN {this} DROP DEFAULT"
     
    @@ -9192,9 +9478,9 @@ Default: True
    -
    1793    def renametable_sql(self, expression: exp.RenameTable) -> str:
    -1794        this = self.sql(expression, "this")
    -1795        return f"RENAME TO {this}"
    +            
    1879    def renametable_sql(self, expression: exp.RenameTable) -> str:
    +1880        this = self.sql(expression, "this")
    +1881        return f"RENAME TO {this}"
     
    @@ -9212,20 +9498,20 @@ Default: True
    -
    1797    def altertable_sql(self, expression: exp.AlterTable) -> str:
    -1798        actions = expression.args["actions"]
    -1799
    -1800        if isinstance(actions[0], exp.ColumnDef):
    -1801            actions = self.expressions(expression, "actions", prefix="ADD COLUMN ")
    -1802        elif isinstance(actions[0], exp.Schema):
    -1803            actions = self.expressions(expression, "actions", prefix="ADD COLUMNS ")
    -1804        elif isinstance(actions[0], exp.Delete):
    -1805            actions = self.expressions(expression, "actions", flat=True)
    -1806        else:
    -1807            actions = self.expressions(expression, "actions")
    -1808
    -1809        exists = " IF EXISTS" if expression.args.get("exists") else ""
    -1810        return f"ALTER TABLE{exists} {self.sql(expression, 'this')} {actions}"
    +            
    1883    def altertable_sql(self, expression: exp.AlterTable) -> str:
    +1884        actions = expression.args["actions"]
    +1885
    +1886        if isinstance(actions[0], exp.ColumnDef):
    +1887            actions = self.expressions(expression, key="actions", prefix="ADD COLUMN ")
    +1888        elif isinstance(actions[0], exp.Schema):
    +1889            actions = self.expressions(expression, key="actions", prefix="ADD COLUMNS ")
    +1890        elif isinstance(actions[0], exp.Delete):
    +1891            actions = self.expressions(expression, key="actions", flat=True)
    +1892        else:
    +1893            actions = self.expressions(expression, key="actions")
    +1894
    +1895        exists = " IF EXISTS" if expression.args.get("exists") else ""
    +1896        return f"ALTER TABLE{exists} {self.sql(expression, 'this')} {actions}"
     
    @@ -9243,10 +9529,10 @@ Default: True
    -
    1812    def droppartition_sql(self, expression: exp.DropPartition) -> str:
    -1813        expressions = self.expressions(expression)
    -1814        exists = " IF EXISTS " if expression.args.get("exists") else " "
    -1815        return f"DROP{exists}{expressions}"
    +            
    1898    def droppartition_sql(self, expression: exp.DropPartition) -> str:
    +1899        expressions = self.expressions(expression)
    +1900        exists = " IF EXISTS " if expression.args.get("exists") else " "
    +1901        return f"DROP{exists}{expressions}"
     
    @@ -9264,16 +9550,16 @@ Default: True
    -
    1817    def addconstraint_sql(self, expression: exp.AddConstraint) -> str:
    -1818        this = self.sql(expression, "this")
    -1819        expression_ = self.sql(expression, "expression")
    -1820        add_constraint = f"ADD CONSTRAINT {this}" if this else "ADD"
    -1821
    -1822        enforced = expression.args.get("enforced")
    -1823        if enforced is not None:
    -1824            return f"{add_constraint} CHECK ({expression_}){' ENFORCED' if enforced else ''}"
    -1825
    -1826        return f"{add_constraint} {expression_}"
    +            
    1903    def addconstraint_sql(self, expression: exp.AddConstraint) -> str:
    +1904        this = self.sql(expression, "this")
    +1905        expression_ = self.sql(expression, "expression")
    +1906        add_constraint = f"ADD CONSTRAINT {this}" if this else "ADD"
    +1907
    +1908        enforced = expression.args.get("enforced")
    +1909        if enforced is not None:
    +1910            return f"{add_constraint} CHECK ({expression_}){' ENFORCED' if enforced else ''}"
    +1911
    +1912        return f"{add_constraint} {expression_}"
     
    @@ -9291,13 +9577,13 @@ Default: True
    -
    1828    def distinct_sql(self, expression: exp.Distinct) -> str:
    -1829        this = self.expressions(expression, flat=True)
    -1830        this = f" {this}" if this else ""
    -1831
    -1832        on = self.sql(expression, "on")
    -1833        on = f" ON {on}" if on else ""
    -1834        return f"DISTINCT{this}{on}"
    +            
    1914    def distinct_sql(self, expression: exp.Distinct) -> str:
    +1915        this = self.expressions(expression, flat=True)
    +1916        this = f" {this}" if this else ""
    +1917
    +1918        on = self.sql(expression, "on")
    +1919        on = f" ON {on}" if on else ""
    +1920        return f"DISTINCT{this}{on}"
     
    @@ -9315,8 +9601,8 @@ Default: True
    -
    1836    def ignorenulls_sql(self, expression: exp.IgnoreNulls) -> str:
    -1837        return f"{self.sql(expression, 'this')} IGNORE NULLS"
    +            
    1922    def ignorenulls_sql(self, expression: exp.IgnoreNulls) -> str:
    +1923        return f"{self.sql(expression, 'this')} IGNORE NULLS"
     
    @@ -9334,8 +9620,8 @@ Default: True
    -
    1839    def respectnulls_sql(self, expression: exp.RespectNulls) -> str:
    -1840        return f"{self.sql(expression, 'this')} RESPECT NULLS"
    +            
    1925    def respectnulls_sql(self, expression: exp.RespectNulls) -> str:
    +1926        return f"{self.sql(expression, 'this')} RESPECT NULLS"
     
    @@ -9353,13 +9639,13 @@ Default: True
    -
    1842    def intdiv_sql(self, expression: exp.IntDiv) -> str:
    -1843        return self.sql(
    -1844            exp.Cast(
    -1845                this=exp.Div(this=expression.this, expression=expression.expression),
    -1846                to=exp.DataType(this=exp.DataType.Type.INT),
    -1847            )
    -1848        )
    +            
    1928    def intdiv_sql(self, expression: exp.IntDiv) -> str:
    +1929        return self.sql(
    +1930            exp.Cast(
    +1931                this=exp.Div(this=expression.this, expression=expression.expression),
    +1932                to=exp.DataType(this=exp.DataType.Type.INT),
    +1933            )
    +1934        )
     
    @@ -9377,8 +9663,8 @@ Default: True
    -
    1850    def dpipe_sql(self, expression: exp.DPipe) -> str:
    -1851        return self.binary(expression, "||")
    +            
    1936    def dpipe_sql(self, expression: exp.DPipe) -> str:
    +1937        return self.binary(expression, "||")
     
    @@ -9396,8 +9682,8 @@ Default: True
    -
    1853    def div_sql(self, expression: exp.Div) -> str:
    -1854        return self.binary(expression, "/")
    +            
    1939    def div_sql(self, expression: exp.Div) -> str:
    +1940        return self.binary(expression, "/")
     
    @@ -9415,8 +9701,8 @@ Default: True
    -
    1856    def overlaps_sql(self, expression: exp.Overlaps) -> str:
    -1857        return self.binary(expression, "OVERLAPS")
    +            
    1942    def overlaps_sql(self, expression: exp.Overlaps) -> str:
    +1943        return self.binary(expression, "OVERLAPS")
     
    @@ -9434,8 +9720,8 @@ Default: True
    -
    1859    def distance_sql(self, expression: exp.Distance) -> str:
    -1860        return self.binary(expression, "<->")
    +            
    1945    def distance_sql(self, expression: exp.Distance) -> str:
    +1946        return self.binary(expression, "<->")
     
    @@ -9453,8 +9739,8 @@ Default: True
    -
    1862    def dot_sql(self, expression: exp.Dot) -> str:
    -1863        return f"{self.sql(expression, 'this')}.{self.sql(expression, 'expression')}"
    +            
    1948    def dot_sql(self, expression: exp.Dot) -> str:
    +1949        return f"{self.sql(expression, 'this')}.{self.sql(expression, 'expression')}"
     
    @@ -9472,8 +9758,8 @@ Default: True
    -
    1865    def eq_sql(self, expression: exp.EQ) -> str:
    -1866        return self.binary(expression, "=")
    +            
    1951    def eq_sql(self, expression: exp.EQ) -> str:
    +1952        return self.binary(expression, "=")
     
    @@ -9491,8 +9777,8 @@ Default: True
    -
    1868    def escape_sql(self, expression: exp.Escape) -> str:
    -1869        return self.binary(expression, "ESCAPE")
    +            
    1954    def escape_sql(self, expression: exp.Escape) -> str:
    +1955        return self.binary(expression, "ESCAPE")
     
    @@ -9510,8 +9796,8 @@ Default: True
    -
    1871    def glob_sql(self, expression: exp.Glob) -> str:
    -1872        return self.binary(expression, "GLOB")
    +            
    1957    def glob_sql(self, expression: exp.Glob) -> str:
    +1958        return self.binary(expression, "GLOB")
     
    @@ -9529,8 +9815,8 @@ Default: True
    -
    1874    def gt_sql(self, expression: exp.GT) -> str:
    -1875        return self.binary(expression, ">")
    +            
    1960    def gt_sql(self, expression: exp.GT) -> str:
    +1961        return self.binary(expression, ">")
     
    @@ -9548,8 +9834,8 @@ Default: True
    -
    1877    def gte_sql(self, expression: exp.GTE) -> str:
    -1878        return self.binary(expression, ">=")
    +            
    1963    def gte_sql(self, expression: exp.GTE) -> str:
    +1964        return self.binary(expression, ">=")
     
    @@ -9567,8 +9853,8 @@ Default: True
    -
    1880    def ilike_sql(self, expression: exp.ILike) -> str:
    -1881        return self.binary(expression, "ILIKE")
    +            
    1966    def ilike_sql(self, expression: exp.ILike) -> str:
    +1967        return self.binary(expression, "ILIKE")
     
    @@ -9586,8 +9872,8 @@ Default: True
    -
    1883    def ilikeany_sql(self, expression: exp.ILikeAny) -> str:
    -1884        return self.binary(expression, "ILIKE ANY")
    +            
    1969    def ilikeany_sql(self, expression: exp.ILikeAny) -> str:
    +1970        return self.binary(expression, "ILIKE ANY")
     
    @@ -9605,8 +9891,8 @@ Default: True
    -
    1886    def is_sql(self, expression: exp.Is) -> str:
    -1887        return self.binary(expression, "IS")
    +            
    1972    def is_sql(self, expression: exp.Is) -> str:
    +1973        return self.binary(expression, "IS")
     
    @@ -9624,8 +9910,8 @@ Default: True
    -
    1889    def like_sql(self, expression: exp.Like) -> str:
    -1890        return self.binary(expression, "LIKE")
    +            
    1975    def like_sql(self, expression: exp.Like) -> str:
    +1976        return self.binary(expression, "LIKE")
     
    @@ -9643,8 +9929,8 @@ Default: True
    -
    1892    def likeany_sql(self, expression: exp.LikeAny) -> str:
    -1893        return self.binary(expression, "LIKE ANY")
    +            
    1978    def likeany_sql(self, expression: exp.LikeAny) -> str:
    +1979        return self.binary(expression, "LIKE ANY")
     
    @@ -9662,8 +9948,8 @@ Default: True
    -
    1895    def similarto_sql(self, expression: exp.SimilarTo) -> str:
    -1896        return self.binary(expression, "SIMILAR TO")
    +            
    1981    def similarto_sql(self, expression: exp.SimilarTo) -> str:
    +1982        return self.binary(expression, "SIMILAR TO")
     
    @@ -9681,8 +9967,8 @@ Default: True
    -
    1898    def lt_sql(self, expression: exp.LT) -> str:
    -1899        return self.binary(expression, "<")
    +            
    1984    def lt_sql(self, expression: exp.LT) -> str:
    +1985        return self.binary(expression, "<")
     
    @@ -9700,8 +9986,8 @@ Default: True
    -
    1901    def lte_sql(self, expression: exp.LTE) -> str:
    -1902        return self.binary(expression, "<=")
    +            
    1987    def lte_sql(self, expression: exp.LTE) -> str:
    +1988        return self.binary(expression, "<=")
     
    @@ -9719,8 +10005,8 @@ Default: True
    -
    1904    def mod_sql(self, expression: exp.Mod) -> str:
    -1905        return self.binary(expression, "%")
    +            
    1990    def mod_sql(self, expression: exp.Mod) -> str:
    +1991        return self.binary(expression, "%")
     
    @@ -9738,8 +10024,8 @@ Default: True
    -
    1907    def mul_sql(self, expression: exp.Mul) -> str:
    -1908        return self.binary(expression, "*")
    +            
    1993    def mul_sql(self, expression: exp.Mul) -> str:
    +1994        return self.binary(expression, "*")
     
    @@ -9757,8 +10043,8 @@ Default: True
    -
    1910    def neq_sql(self, expression: exp.NEQ) -> str:
    -1911        return self.binary(expression, "<>")
    +            
    1996    def neq_sql(self, expression: exp.NEQ) -> str:
    +1997        return self.binary(expression, "<>")
     
    @@ -9776,8 +10062,8 @@ Default: True
    -
    1913    def nullsafeeq_sql(self, expression: exp.NullSafeEQ) -> str:
    -1914        return self.binary(expression, "IS NOT DISTINCT FROM")
    +            
    1999    def nullsafeeq_sql(self, expression: exp.NullSafeEQ) -> str:
    +2000        return self.binary(expression, "IS NOT DISTINCT FROM")
     
    @@ -9795,8 +10081,8 @@ Default: True
    -
    1916    def nullsafeneq_sql(self, expression: exp.NullSafeNEQ) -> str:
    -1917        return self.binary(expression, "IS DISTINCT FROM")
    +            
    2002    def nullsafeneq_sql(self, expression: exp.NullSafeNEQ) -> str:
    +2003        return self.binary(expression, "IS DISTINCT FROM")
     
    @@ -9814,8 +10100,8 @@ Default: True
    -
    1919    def or_sql(self, expression: exp.Or) -> str:
    -1920        return self.connector_sql(expression, "OR")
    +            
    2005    def or_sql(self, expression: exp.Or) -> str:
    +2006        return self.connector_sql(expression, "OR")
     
    @@ -9833,8 +10119,8 @@ Default: True
    -
    1922    def slice_sql(self, expression: exp.Slice) -> str:
    -1923        return self.binary(expression, ":")
    +            
    2008    def slice_sql(self, expression: exp.Slice) -> str:
    +2009        return self.binary(expression, ":")
     
    @@ -9852,8 +10138,8 @@ Default: True
    -
    1925    def sub_sql(self, expression: exp.Sub) -> str:
    -1926        return self.binary(expression, "-")
    +            
    2011    def sub_sql(self, expression: exp.Sub) -> str:
    +2012        return self.binary(expression, "-")
     
    @@ -9871,8 +10157,8 @@ Default: True
    -
    1928    def trycast_sql(self, expression: exp.TryCast) -> str:
    -1929        return f"TRY_CAST({self.sql(expression, 'this')} AS {self.sql(expression, 'to')})"
    +            
    2014    def trycast_sql(self, expression: exp.TryCast) -> str:
    +2015        return f"TRY_CAST({self.sql(expression, 'this')} AS {self.sql(expression, 'to')})"
     
    @@ -9890,12 +10176,12 @@ Default: True
    -
    1931    def use_sql(self, expression: exp.Use) -> str:
    -1932        kind = self.sql(expression, "kind")
    -1933        kind = f" {kind}" if kind else ""
    -1934        this = self.sql(expression, "this")
    -1935        this = f" {this}" if this else ""
    -1936        return f"USE{kind}{this}"
    +            
    2017    def use_sql(self, expression: exp.Use) -> str:
    +2018        kind = self.sql(expression, "kind")
    +2019        kind = f" {kind}" if kind else ""
    +2020        this = self.sql(expression, "this")
    +2021        this = f" {this}" if this else ""
    +2022        return f"USE{kind}{this}"
     
    @@ -9913,8 +10199,9 @@ Default: True
    -
    1938    def binary(self, expression: exp.Binary, op: str) -> str:
    -1939        return f"{self.sql(expression, 'this')} {op} {self.sql(expression, 'expression')}"
    +            
    2024    def binary(self, expression: exp.Binary, op: str) -> str:
    +2025        op = self.maybe_comment(op, comments=expression.comments)
    +2026        return f"{self.sql(expression, 'this')} {op} {self.sql(expression, 'expression')}"
     
    @@ -9932,16 +10219,16 @@ Default: True
    -
    1941    def function_fallback_sql(self, expression: exp.Func) -> str:
    -1942        args = []
    -1943        for arg_value in expression.args.values():
    -1944            if isinstance(arg_value, list):
    -1945                for value in arg_value:
    -1946                    args.append(value)
    -1947            else:
    -1948                args.append(arg_value)
    -1949
    -1950        return self.func(expression.sql_name(), *args)
    +            
    2028    def function_fallback_sql(self, expression: exp.Func) -> str:
    +2029        args = []
    +2030        for arg_value in expression.args.values():
    +2031            if isinstance(arg_value, list):
    +2032                for value in arg_value:
    +2033                    args.append(value)
    +2034            else:
    +2035                args.append(arg_value)
    +2036
    +2037        return self.func(expression.sql_name(), *args)
     
    @@ -9959,8 +10246,8 @@ Default: True
    -
    1952    def func(self, name: str, *args: t.Optional[exp.Expression | str]) -> str:
    -1953        return f"{self.normalize_func(name)}({self.format_args(*args)})"
    +            
    2039    def func(self, name: str, *args: t.Optional[exp.Expression | str]) -> str:
    +2040        return f"{self.normalize_func(name)}({self.format_args(*args)})"
     
    @@ -9978,11 +10265,11 @@ Default: True
    -
    1955    def format_args(self, *args: t.Optional[str | exp.Expression]) -> str:
    -1956        arg_sqls = tuple(self.sql(arg) for arg in args if arg is not None)
    -1957        if self.pretty and self.text_width(arg_sqls) > self._max_text_width:
    -1958            return self.indent("\n" + f",\n".join(arg_sqls) + "\n", skip_first=True, skip_last=True)
    -1959        return ", ".join(arg_sqls)
    +            
    2042    def format_args(self, *args: t.Optional[str | exp.Expression]) -> str:
    +2043        arg_sqls = tuple(self.sql(arg) for arg in args if arg is not None)
    +2044        if self.pretty and self.text_width(arg_sqls) > self._max_text_width:
    +2045            return self.indent("\n" + f",\n".join(arg_sqls) + "\n", skip_first=True, skip_last=True)
    +2046        return ", ".join(arg_sqls)
     
    @@ -10000,8 +10287,8 @@ Default: True
    -
    1961    def text_width(self, args: t.Iterable) -> int:
    -1962        return sum(len(arg) for arg in args)
    +            
    2048    def text_width(self, args: t.Iterable) -> int:
    +2049        return sum(len(arg) for arg in args)
     
    @@ -10019,8 +10306,8 @@ Default: True
    -
    1964    def format_time(self, expression: exp.Expression) -> t.Optional[str]:
    -1965        return format_time(self.sql(expression, "format"), self.time_mapping, self.time_trie)
    +            
    2051    def format_time(self, expression: exp.Expression) -> t.Optional[str]:
    +2052        return format_time(self.sql(expression, "format"), self.time_mapping, self.time_trie)
     
    @@ -10032,52 +10319,53 @@ Default: True
    def - expressions( self, expression: sqlglot.expressions.Expression, key: Optional[str] = None, flat: bool = False, indent: bool = True, sep: str = ', ', prefix: str = '') -> str: + expressions( self, expression: Optional[sqlglot.expressions.Expression] = None, key: Optional[str] = None, sqls: Optional[List[str]] = None, flat: bool = False, indent: bool = True, sep: str = ', ', prefix: str = '') -> str:
    -
    1967    def expressions(
    -1968        self,
    -1969        expression: exp.Expression,
    -1970        key: t.Optional[str] = None,
    -1971        flat: bool = False,
    -1972        indent: bool = True,
    -1973        sep: str = ", ",
    -1974        prefix: str = "",
    -1975    ) -> str:
    -1976        expressions = expression.args.get(key or "expressions")
    -1977
    -1978        if not expressions:
    -1979            return ""
    -1980
    -1981        if flat:
    -1982            return sep.join(self.sql(e) for e in expressions)
    -1983
    -1984        num_sqls = len(expressions)
    -1985
    -1986        # These are calculated once in case we have the leading_comma / pretty option set, correspondingly
    -1987        pad = " " * self.pad
    -1988        stripped_sep = sep.strip()
    -1989
    -1990        result_sqls = []
    -1991        for i, e in enumerate(expressions):
    -1992            sql = self.sql(e, comment=False)
    -1993            comments = self.maybe_comment("", e) if isinstance(e, exp.Expression) else ""
    -1994
    -1995            if self.pretty:
    -1996                if self._leading_comma:
    -1997                    result_sqls.append(f"{sep if i > 0 else pad}{prefix}{sql}{comments}")
    -1998                else:
    -1999                    result_sqls.append(
    -2000                        f"{prefix}{sql}{stripped_sep if i + 1 < num_sqls else ''}{comments}"
    -2001                    )
    -2002            else:
    -2003                result_sqls.append(f"{prefix}{sql}{comments}{sep if i + 1 < num_sqls else ''}")
    -2004
    -2005        result_sql = "\n".join(result_sqls) if self.pretty else "".join(result_sqls)
    -2006        return self.indent(result_sql, skip_first=False) if indent else result_sql
    +            
    2054    def expressions(
    +2055        self,
    +2056        expression: t.Optional[exp.Expression] = None,
    +2057        key: t.Optional[str] = None,
    +2058        sqls: t.Optional[t.List[str]] = None,
    +2059        flat: bool = False,
    +2060        indent: bool = True,
    +2061        sep: str = ", ",
    +2062        prefix: str = "",
    +2063    ) -> str:
    +2064        expressions = expression.args.get(key or "expressions") if expression else sqls
    +2065
    +2066        if not expressions:
    +2067            return ""
    +2068
    +2069        if flat:
    +2070            return sep.join(self.sql(e) for e in expressions)
    +2071
    +2072        num_sqls = len(expressions)
    +2073
    +2074        # These are calculated once in case we have the leading_comma / pretty option set, correspondingly
    +2075        pad = " " * self.pad
    +2076        stripped_sep = sep.strip()
    +2077
    +2078        result_sqls = []
    +2079        for i, e in enumerate(expressions):
    +2080            sql = self.sql(e, comment=False)
    +2081            comments = self.maybe_comment("", e) if isinstance(e, exp.Expression) else ""
    +2082
    +2083            if self.pretty:
    +2084                if self._leading_comma:
    +2085                    result_sqls.append(f"{sep if i > 0 else pad}{prefix}{sql}{comments}")
    +2086                else:
    +2087                    result_sqls.append(
    +2088                        f"{prefix}{sql}{stripped_sep if i + 1 < num_sqls else ''}{comments}"
    +2089                    )
    +2090            else:
    +2091                result_sqls.append(f"{prefix}{sql}{comments}{sep if i + 1 < num_sqls else ''}")
    +2092
    +2093        result_sql = "\n".join(result_sqls) if self.pretty else "".join(result_sqls)
    +2094        return self.indent(result_sql, skip_first=False) if indent else result_sql
     
    @@ -10095,12 +10383,12 @@ Default: True
    -
    2008    def op_expressions(self, op: str, expression: exp.Expression, flat: bool = False) -> str:
    -2009        flat = flat or isinstance(expression.parent, exp.Properties)
    -2010        expressions_sql = self.expressions(expression, flat=flat)
    -2011        if flat:
    -2012            return f"{op} {expressions_sql}"
    -2013        return f"{self.seg(op)}{self.sep() if expressions_sql else ''}{expressions_sql}"
    +            
    2096    def op_expressions(self, op: str, expression: exp.Expression, flat: bool = False) -> str:
    +2097        flat = flat or isinstance(expression.parent, exp.Properties)
    +2098        expressions_sql = self.expressions(expression, flat=flat)
    +2099        if flat:
    +2100            return f"{op} {expressions_sql}"
    +2101        return f"{self.seg(op)}{self.sep() if expressions_sql else ''}{expressions_sql}"
     
    @@ -10118,11 +10406,11 @@ Default: True
    -
    2015    def naked_property(self, expression: exp.Property) -> str:
    -2016        property_name = exp.Properties.PROPERTY_TO_NAME.get(expression.__class__)
    -2017        if not property_name:
    -2018            self.unsupported(f"Unsupported property {expression.__class__.__name__}")
    -2019        return f"{property_name} {self.sql(expression, 'this')}"
    +            
    2103    def naked_property(self, expression: exp.Property) -> str:
    +2104        property_name = exp.Properties.PROPERTY_TO_NAME.get(expression.__class__)
    +2105        if not property_name:
    +2106            self.unsupported(f"Unsupported property {expression.__class__.__name__}")
    +2107        return f"{property_name} {self.sql(expression, 'this')}"
     
    @@ -10140,12 +10428,12 @@ Default: True
    -
    2021    def set_operation(self, expression: exp.Expression, op: str) -> str:
    -2022        this = self.sql(expression, "this")
    -2023        op = self.seg(op)
    -2024        return self.query_modifiers(
    -2025            expression, f"{this}{op}{self.sep()}{self.sql(expression, 'expression')}"
    -2026        )
    +            
    2109    def set_operation(self, expression: exp.Expression, op: str) -> str:
    +2110        this = self.sql(expression, "this")
    +2111        op = self.seg(op)
    +2112        return self.query_modifiers(
    +2113            expression, f"{this}{op}{self.sep()}{self.sql(expression, 'expression')}"
    +2114        )
     
    @@ -10163,8 +10451,8 @@ Default: True
    -
    2028    def tag_sql(self, expression: exp.Tag) -> str:
    -2029        return f"{expression.args.get('prefix')}{self.sql(expression.this)}{expression.args.get('postfix')}"
    +            
    2116    def tag_sql(self, expression: exp.Tag) -> str:
    +2117        return f"{expression.args.get('prefix')}{self.sql(expression.this)}{expression.args.get('postfix')}"
     
    @@ -10182,8 +10470,8 @@ Default: True
    -
    2031    def token_sql(self, token_type: TokenType) -> str:
    -2032        return self.TOKEN_MAPPING.get(token_type, token_type.name)
    +            
    2119    def token_sql(self, token_type: TokenType) -> str:
    +2120        return self.TOKEN_MAPPING.get(token_type, token_type.name)
     
    @@ -10201,13 +10489,13 @@ Default: True
    -
    2034    def userdefinedfunction_sql(self, expression: exp.UserDefinedFunction) -> str:
    -2035        this = self.sql(expression, "this")
    -2036        expressions = self.no_identify(self.expressions, expression)
    -2037        expressions = (
    -2038            self.wrap(expressions) if expression.args.get("wrapped") else f" {expressions}"
    -2039        )
    -2040        return f"{this}{expressions}"
    +            
    2122    def userdefinedfunction_sql(self, expression: exp.UserDefinedFunction) -> str:
    +2123        this = self.sql(expression, "this")
    +2124        expressions = self.no_identify(self.expressions, expression)
    +2125        expressions = (
    +2126            self.wrap(expressions) if expression.args.get("wrapped") else f" {expressions}"
    +2127        )
    +2128        return f"{this}{expressions}"
     
    @@ -10225,10 +10513,10 @@ Default: True
    -
    2042    def joinhint_sql(self, expression: exp.JoinHint) -> str:
    -2043        this = self.sql(expression, "this")
    -2044        expressions = self.expressions(expression, flat=True)
    -2045        return f"{this}({expressions})"
    +            
    2130    def joinhint_sql(self, expression: exp.JoinHint) -> str:
    +2131        this = self.sql(expression, "this")
    +2132        expressions = self.expressions(expression, flat=True)
    +2133        return f"{this}({expressions})"
     
    @@ -10246,8 +10534,8 @@ Default: True
    -
    2047    def kwarg_sql(self, expression: exp.Kwarg) -> str:
    -2048        return self.binary(expression, "=>")
    +            
    2135    def kwarg_sql(self, expression: exp.Kwarg) -> str:
    +2136        return self.binary(expression, "=>")
     
    @@ -10265,25 +10553,25 @@ Default: True
    -
    2050    def when_sql(self, expression: exp.When) -> str:
    -2051        matched = "MATCHED" if expression.args["matched"] else "NOT MATCHED"
    -2052        source = " BY SOURCE" if self.MATCHED_BY_SOURCE and expression.args.get("source") else ""
    -2053        condition = self.sql(expression, "condition")
    -2054        condition = f" AND {condition}" if condition else ""
    -2055
    -2056        then_expression = expression.args.get("then")
    -2057        if isinstance(then_expression, exp.Insert):
    -2058            then = f"INSERT {self.sql(then_expression, 'this')}"
    -2059            if "expression" in then_expression.args:
    -2060                then += f" VALUES {self.sql(then_expression, 'expression')}"
    -2061        elif isinstance(then_expression, exp.Update):
    -2062            if isinstance(then_expression.args.get("expressions"), exp.Star):
    -2063                then = f"UPDATE {self.sql(then_expression, 'expressions')}"
    -2064            else:
    -2065                then = f"UPDATE SET {self.expressions(then_expression, flat=True)}"
    -2066        else:
    -2067            then = self.sql(then_expression)
    -2068        return f"WHEN {matched}{source}{condition} THEN {then}"
    +            
    2138    def when_sql(self, expression: exp.When) -> str:
    +2139        matched = "MATCHED" if expression.args["matched"] else "NOT MATCHED"
    +2140        source = " BY SOURCE" if self.MATCHED_BY_SOURCE and expression.args.get("source") else ""
    +2141        condition = self.sql(expression, "condition")
    +2142        condition = f" AND {condition}" if condition else ""
    +2143
    +2144        then_expression = expression.args.get("then")
    +2145        if isinstance(then_expression, exp.Insert):
    +2146            then = f"INSERT {self.sql(then_expression, 'this')}"
    +2147            if "expression" in then_expression.args:
    +2148                then += f" VALUES {self.sql(then_expression, 'expression')}"
    +2149        elif isinstance(then_expression, exp.Update):
    +2150            if isinstance(then_expression.args.get("expressions"), exp.Star):
    +2151                then = f"UPDATE {self.sql(then_expression, 'expressions')}"
    +2152            else:
    +2153                then = f"UPDATE SET {self.expressions(then_expression, flat=True)}"
    +2154        else:
    +2155            then = self.sql(then_expression)
    +2156        return f"WHEN {matched}{source}{condition} THEN {then}"
     
    @@ -10301,11 +10589,11 @@ Default: True
    -
    2070    def merge_sql(self, expression: exp.Merge) -> str:
    -2071        this = self.sql(expression, "this")
    -2072        using = f"USING {self.sql(expression, 'using')}"
    -2073        on = f"ON {self.sql(expression, 'on')}"
    -2074        return f"MERGE INTO {this} {using} {on} {self.expressions(expression, sep=' ')}"
    +            
    2158    def merge_sql(self, expression: exp.Merge) -> str:
    +2159        this = self.sql(expression, "this")
    +2160        using = f"USING {self.sql(expression, 'using')}"
    +2161        on = f"ON {self.sql(expression, 'on')}"
    +2162        return f"MERGE INTO {this} {using} {on} {self.expressions(expression, sep=' ')}"
     
    @@ -10323,11 +10611,11 @@ Default: True
    -
    2076    def tochar_sql(self, expression: exp.ToChar) -> str:
    -2077        if expression.args.get("format"):
    -2078            self.unsupported("Format argument unsupported for TO_CHAR/TO_VARCHAR function")
    -2079
    -2080        return self.sql(exp.cast(expression.this, "text"))
    +            
    2164    def tochar_sql(self, expression: exp.ToChar) -> str:
    +2165        if expression.args.get("format"):
    +2166            self.unsupported("Format argument unsupported for TO_CHAR/TO_VARCHAR function")
    +2167
    +2168        return self.sql(exp.cast(expression.this, "text"))
     
    diff --git a/docs/sqlglot/helper.html b/docs/sqlglot/helper.html index 42b0455..57c0dc1 100644 --- a/docs/sqlglot/helper.html +++ b/docs/sqlglot/helper.html @@ -3,7 +3,7 @@ - + sqlglot.helper API documentation @@ -252,298 +252,320 @@
    131 ] 132 133 -134def apply_index_offset(expressions: t.List[t.Optional[E]], offset: int) -> t.List[t.Optional[E]]: -135 """ -136 Applies an offset to a given integer literal expression. -137 -138 Args: -139 expressions: the expression the offset will be applied to, wrapped in a list. -140 offset: the offset that will be applied. +134def apply_index_offset( +135 this: exp.Expression, +136 expressions: t.List[t.Optional[E]], +137 offset: int, +138) -> t.List[t.Optional[E]]: +139 """ +140 Applies an offset to a given integer literal expression. 141 -142 Returns: -143 The original expression with the offset applied to it, wrapped in a list. If the provided -144 `expressions` argument contains more than one expressions, it's returned unaffected. -145 """ -146 if not offset or len(expressions) != 1: -147 return expressions -148 -149 expression = expressions[0] -150 -151 if expression and expression.is_int: -152 expression = expression.copy() -153 logger.warning("Applying array index offset (%s)", offset) -154 expression.args["this"] = str(int(expression.this) + offset) # type: ignore -155 return [expression] -156 -157 return expressions -158 +142 Args: +143 this: the target of the index +144 expressions: the expression the offset will be applied to, wrapped in a list. +145 offset: the offset that will be applied. +146 +147 Returns: +148 The original expression with the offset applied to it, wrapped in a list. If the provided +149 `expressions` argument contains more than one expressions, it's returned unaffected. +150 """ +151 if not offset or len(expressions) != 1: +152 return expressions +153 +154 expression = expressions[0] +155 +156 from sqlglot import exp +157 from sqlglot.optimizer.annotate_types import annotate_types +158 from sqlglot.optimizer.simplify import simplify 159 -160def camel_to_snake_case(name: str) -> str: -161 """Converts `name` from camelCase to snake_case and returns the result.""" -162 return CAMEL_CASE_PATTERN.sub("_", name).upper() -163 -164 -165def while_changing(expression: Expression, func: t.Callable[[Expression], E]) -> E: -166 """ -167 Applies a transformation to a given expression until a fix point is reached. +160 if not this.type: +161 annotate_types(this) +162 +163 if t.cast(exp.DataType, this.type).this not in ( +164 exp.DataType.Type.UNKNOWN, +165 exp.DataType.Type.ARRAY, +166 ): +167 return expressions 168 -169 Args: -170 expression: the expression to be transformed. -171 func: the transformation to be applied. -172 -173 Returns: -174 The transformed expression. -175 """ -176 while True: -177 for n, *_ in reversed(tuple(expression.walk())): -178 n._hash = hash(n) -179 start = hash(expression) -180 expression = func(expression) +169 if expression: +170 if not expression.type: +171 annotate_types(expression) +172 if t.cast(exp.DataType, expression.type).this in exp.DataType.INTEGER_TYPES: +173 logger.warning("Applying array index offset (%s)", offset) +174 expression = simplify( +175 exp.Add(this=expression.copy(), expression=exp.Literal.number(offset)) +176 ) +177 return [expression] +178 +179 return expressions +180 181 -182 for n, *_ in expression.walk(): -183 n._hash = None -184 if start == hash(expression): -185 break -186 return expression -187 -188 -189def tsort(dag: t.Dict[T, t.List[T]]) -> t.List[T]: -190 """ -191 Sorts a given directed acyclic graph in topological order. -192 -193 Args: -194 dag: the graph to be sorted. -195 -196 Returns: -197 A list that contains all of the graph's nodes in topological order. -198 """ -199 result = [] -200 -201 def visit(node: T, visited: t.Set[T]) -> None: -202 if node in result: -203 return -204 if node in visited: -205 raise ValueError("Cycle error") -206 -207 visited.add(node) -208 -209 for dep in dag.get(node, []): -210 visit(dep, visited) -211 -212 visited.remove(node) -213 result.append(node) +182def camel_to_snake_case(name: str) -> str: +183 """Converts `name` from camelCase to snake_case and returns the result.""" +184 return CAMEL_CASE_PATTERN.sub("_", name).upper() +185 +186 +187def while_changing(expression: Expression, func: t.Callable[[Expression], E]) -> E: +188 """ +189 Applies a transformation to a given expression until a fix point is reached. +190 +191 Args: +192 expression: the expression to be transformed. +193 func: the transformation to be applied. +194 +195 Returns: +196 The transformed expression. +197 """ +198 while True: +199 for n, *_ in reversed(tuple(expression.walk())): +200 n._hash = hash(n) +201 start = hash(expression) +202 expression = func(expression) +203 +204 for n, *_ in expression.walk(): +205 n._hash = None +206 if start == hash(expression): +207 break +208 return expression +209 +210 +211def tsort(dag: t.Dict[T, t.List[T]]) -> t.List[T]: +212 """ +213 Sorts a given directed acyclic graph in topological order. 214 -215 for node in dag: -216 visit(node, set()) +215 Args: +216 dag: the graph to be sorted. 217 -218 return result -219 -220 -221def open_file(file_name: str) -> t.TextIO: -222 """Open a file that may be compressed as gzip and return it in universal newline mode.""" -223 with open(file_name, "rb") as f: -224 gzipped = f.read(2) == b"\x1f\x8b" -225 -226 if gzipped: -227 import gzip +218 Returns: +219 A list that contains all of the graph's nodes in topological order. +220 """ +221 result = [] +222 +223 def visit(node: T, visited: t.Set[T]) -> None: +224 if node in result: +225 return +226 if node in visited: +227 raise ValueError("Cycle error") 228 -229 return gzip.open(file_name, "rt", newline="") +229 visited.add(node) 230 -231 return open(file_name, encoding="utf-8", newline="") -232 +231 for dep in dag.get(node, []): +232 visit(dep, visited) 233 -234@contextmanager -235def csv_reader(read_csv: exp.ReadCSV) -> t.Any: -236 """ -237 Returns a csv reader given the expression `READ_CSV(name, ['delimiter', '|', ...])`. -238 -239 Args: -240 read_csv: a `ReadCSV` function call +234 visited.remove(node) +235 result.append(node) +236 +237 for node in dag: +238 visit(node, set()) +239 +240 return result 241 -242 Yields: -243 A python csv reader. -244 """ -245 args = read_csv.expressions -246 file = open_file(read_csv.name) +242 +243def open_file(file_name: str) -> t.TextIO: +244 """Open a file that may be compressed as gzip and return it in universal newline mode.""" +245 with open(file_name, "rb") as f: +246 gzipped = f.read(2) == b"\x1f\x8b" 247 -248 delimiter = "," -249 args = iter(arg.name for arg in args) -250 for k, v in zip(args, args): -251 if k == "delimiter": -252 delimiter = v -253 -254 try: -255 import csv as csv_ -256 -257 yield csv_.reader(file, delimiter=delimiter) -258 finally: -259 file.close() +248 if gzipped: +249 import gzip +250 +251 return gzip.open(file_name, "rt", newline="") +252 +253 return open(file_name, encoding="utf-8", newline="") +254 +255 +256@contextmanager +257def csv_reader(read_csv: exp.ReadCSV) -> t.Any: +258 """ +259 Returns a csv reader given the expression `READ_CSV(name, ['delimiter', '|', ...])`. 260 -261 -262def find_new_name(taken: t.Collection[str], base: str) -> str: -263 """ -264 Searches for a new name. -265 -266 Args: -267 taken: a collection of taken names. -268 base: base name to alter. +261 Args: +262 read_csv: a `ReadCSV` function call +263 +264 Yields: +265 A python csv reader. +266 """ +267 args = read_csv.expressions +268 file = open_file(read_csv.name) 269 -270 Returns: -271 The new, available name. -272 """ -273 if base not in taken: -274 return base +270 delimiter = "," +271 args = iter(arg.name for arg in args) +272 for k, v in zip(args, args): +273 if k == "delimiter": +274 delimiter = v 275 -276 i = 2 -277 new = f"{base}_{i}" -278 while new in taken: -279 i += 1 -280 new = f"{base}_{i}" -281 -282 return new +276 try: +277 import csv as csv_ +278 +279 yield csv_.reader(file, delimiter=delimiter) +280 finally: +281 file.close() +282 283 -284 -285def object_to_dict(obj: t.Any, **kwargs) -> t.Dict: -286 """Returns a dictionary created from an object's attributes.""" -287 return {**{k: copy(v) for k, v in vars(obj).copy().items()}, **kwargs} -288 -289 -290def split_num_words( -291 value: str, sep: str, min_num_words: int, fill_from_start: bool = True -292) -> t.List[t.Optional[str]]: -293 """ -294 Perform a split on a value and return N words as a result with `None` used for words that don't exist. -295 -296 Args: -297 value: the value to be split. -298 sep: the value to use to split on. -299 min_num_words: the minimum number of words that are going to be in the result. -300 fill_from_start: indicates that if `None` values should be inserted at the start or end of the list. -301 -302 Examples: -303 >>> split_num_words("db.table", ".", 3) -304 [None, 'db', 'table'] -305 >>> split_num_words("db.table", ".", 3, fill_from_start=False) -306 ['db', 'table', None] -307 >>> split_num_words("db.table", ".", 1) -308 ['db', 'table'] -309 -310 Returns: -311 The list of words returned by `split`, possibly augmented by a number of `None` values. -312 """ -313 words = value.split(sep) -314 if fill_from_start: -315 return [None] * (min_num_words - len(words)) + words -316 return words + [None] * (min_num_words - len(words)) +284def find_new_name(taken: t.Collection[str], base: str) -> str: +285 """ +286 Searches for a new name. +287 +288 Args: +289 taken: a collection of taken names. +290 base: base name to alter. +291 +292 Returns: +293 The new, available name. +294 """ +295 if base not in taken: +296 return base +297 +298 i = 2 +299 new = f"{base}_{i}" +300 while new in taken: +301 i += 1 +302 new = f"{base}_{i}" +303 +304 return new +305 +306 +307def object_to_dict(obj: t.Any, **kwargs) -> t.Dict: +308 """Returns a dictionary created from an object's attributes.""" +309 return {**{k: copy(v) for k, v in vars(obj).copy().items()}, **kwargs} +310 +311 +312def split_num_words( +313 value: str, sep: str, min_num_words: int, fill_from_start: bool = True +314) -> t.List[t.Optional[str]]: +315 """ +316 Perform a split on a value and return N words as a result with `None` used for words that don't exist. 317 -318 -319def is_iterable(value: t.Any) -> bool: -320 """ -321 Checks if the value is an iterable, excluding the types `str` and `bytes`. -322 -323 Examples: -324 >>> is_iterable([1,2]) -325 True -326 >>> is_iterable("test") -327 False -328 -329 Args: -330 value: the value to check if it is an iterable. +318 Args: +319 value: the value to be split. +320 sep: the value to use to split on. +321 min_num_words: the minimum number of words that are going to be in the result. +322 fill_from_start: indicates that if `None` values should be inserted at the start or end of the list. +323 +324 Examples: +325 >>> split_num_words("db.table", ".", 3) +326 [None, 'db', 'table'] +327 >>> split_num_words("db.table", ".", 3, fill_from_start=False) +328 ['db', 'table', None] +329 >>> split_num_words("db.table", ".", 1) +330 ['db', 'table'] 331 332 Returns: -333 A `bool` value indicating if it is an iterable. +333 The list of words returned by `split`, possibly augmented by a number of `None` values. 334 """ -335 return hasattr(value, "__iter__") and not isinstance(value, (str, bytes)) -336 -337 -338def flatten(values: t.Iterable[t.Iterable[t.Any] | t.Any]) -> t.Iterator[t.Any]: -339 """ -340 Flattens an iterable that can contain both iterable and non-iterable elements. Objects of -341 type `str` and `bytes` are not regarded as iterables. -342 -343 Examples: -344 >>> list(flatten([[1, 2], 3, {4}, (5, "bla")])) -345 [1, 2, 3, 4, 5, 'bla'] -346 >>> list(flatten([1, 2, 3])) -347 [1, 2, 3] -348 -349 Args: -350 values: the value to be flattened. -351 -352 Yields: -353 Non-iterable elements in `values`. -354 """ -355 for value in values: -356 if is_iterable(value): -357 yield from flatten(value) -358 else: -359 yield value -360 -361 -362def count_params(function: t.Callable) -> int: -363 """ -364 Returns the number of formal parameters expected by a function, without counting "self" -365 and "cls", in case of instance and class methods, respectively. -366 """ -367 count = function.__code__.co_argcount -368 return count - 1 if inspect.ismethod(function) else count -369 +335 words = value.split(sep) +336 if fill_from_start: +337 return [None] * (min_num_words - len(words)) + words +338 return words + [None] * (min_num_words - len(words)) +339 +340 +341def is_iterable(value: t.Any) -> bool: +342 """ +343 Checks if the value is an iterable, excluding the types `str` and `bytes`. +344 +345 Examples: +346 >>> is_iterable([1,2]) +347 True +348 >>> is_iterable("test") +349 False +350 +351 Args: +352 value: the value to check if it is an iterable. +353 +354 Returns: +355 A `bool` value indicating if it is an iterable. +356 """ +357 return hasattr(value, "__iter__") and not isinstance(value, (str, bytes)) +358 +359 +360def flatten(values: t.Iterable[t.Iterable[t.Any] | t.Any]) -> t.Iterator[t.Any]: +361 """ +362 Flattens an iterable that can contain both iterable and non-iterable elements. Objects of +363 type `str` and `bytes` are not regarded as iterables. +364 +365 Examples: +366 >>> list(flatten([[1, 2], 3, {4}, (5, "bla")])) +367 [1, 2, 3, 4, 5, 'bla'] +368 >>> list(flatten([1, 2, 3])) +369 [1, 2, 3] 370 -371def dict_depth(d: t.Dict) -> int: -372 """ -373 Get the nesting depth of a dictionary. -374 -375 For example: -376 >>> dict_depth(None) -377 0 -378 >>> dict_depth({}) -379 1 -380 >>> dict_depth({"a": "b"}) -381 1 -382 >>> dict_depth({"a": {}}) -383 2 -384 >>> dict_depth({"a": {"b": {}}}) -385 3 -386 -387 Args: -388 d (dict): dictionary -389 -390 Returns: -391 int: depth -392 """ -393 try: -394 return 1 + dict_depth(next(iter(d.values()))) -395 except AttributeError: -396 # d doesn't have attribute "values" -397 return 0 -398 except StopIteration: -399 # d.values() returns an empty sequence -400 return 1 -401 -402 -403def first(it: t.Iterable[T]) -> T: -404 """Returns the first element from an iterable. -405 -406 Useful for sets. -407 """ -408 return next(i for i in it) -409 -410 -411def should_identify(text: str, identify: str | bool) -> bool: -412 """Checks if text should be identified given an identify option. -413 -414 Args: -415 text: the text to check. -416 identify: "always" | True - always returns true, "safe" - true if no upper case -417 -418 Returns: -419 Whether or not a string should be identified. -420 """ -421 if identify is True or identify == "always": -422 return True -423 if identify == "safe": -424 return not any(char.isupper() for char in text) -425 return False +371 Args: +372 values: the value to be flattened. +373 +374 Yields: +375 Non-iterable elements in `values`. +376 """ +377 for value in values: +378 if is_iterable(value): +379 yield from flatten(value) +380 else: +381 yield value +382 +383 +384def count_params(function: t.Callable) -> int: +385 """ +386 Returns the number of formal parameters expected by a function, without counting "self" +387 and "cls", in case of instance and class methods, respectively. +388 """ +389 count = function.__code__.co_argcount +390 return count - 1 if inspect.ismethod(function) else count +391 +392 +393def dict_depth(d: t.Dict) -> int: +394 """ +395 Get the nesting depth of a dictionary. +396 +397 For example: +398 >>> dict_depth(None) +399 0 +400 >>> dict_depth({}) +401 1 +402 >>> dict_depth({"a": "b"}) +403 1 +404 >>> dict_depth({"a": {}}) +405 2 +406 >>> dict_depth({"a": {"b": {}}}) +407 3 +408 +409 Args: +410 d (dict): dictionary +411 +412 Returns: +413 int: depth +414 """ +415 try: +416 return 1 + dict_depth(next(iter(d.values()))) +417 except AttributeError: +418 # d doesn't have attribute "values" +419 return 0 +420 except StopIteration: +421 # d.values() returns an empty sequence +422 return 1 +423 +424 +425def first(it: t.Iterable[T]) -> T: +426 """Returns the first element from an iterable. +427 +428 Useful for sets. +429 """ +430 return next(i for i in it) +431 +432 +433def should_identify(text: str, identify: str | bool) -> bool: +434 """Checks if text should be identified given an identify option. +435 +436 Args: +437 text: the text to check. +438 identify: "always" | True - always returns true, "safe" - true if no upper case +439 +440 Returns: +441 Whether or not a string should be identified. +442 """ +443 if identify is True or identify == "always": +444 return True +445 if identify == "safe": +446 return not any(char.isupper() for char in text) +447 return False
    @@ -805,36 +827,58 @@
    def - apply_index_offset(expressions: List[Optional[~E]], offset: int) -> List[Optional[~E]]: + apply_index_offset( this: sqlglot.expressions.Expression, expressions: List[Optional[~E]], offset: int) -> List[Optional[~E]]:
    -
    135def apply_index_offset(expressions: t.List[t.Optional[E]], offset: int) -> t.List[t.Optional[E]]:
    -136    """
    -137    Applies an offset to a given integer literal expression.
    -138
    -139    Args:
    -140        expressions: the expression the offset will be applied to, wrapped in a list.
    -141        offset: the offset that will be applied.
    +            
    135def apply_index_offset(
    +136    this: exp.Expression,
    +137    expressions: t.List[t.Optional[E]],
    +138    offset: int,
    +139) -> t.List[t.Optional[E]]:
    +140    """
    +141    Applies an offset to a given integer literal expression.
     142
    -143    Returns:
    -144        The original expression with the offset applied to it, wrapped in a list. If the provided
    -145        `expressions` argument contains more than one expressions, it's returned unaffected.
    -146    """
    -147    if not offset or len(expressions) != 1:
    -148        return expressions
    -149
    -150    expression = expressions[0]
    -151
    -152    if expression and expression.is_int:
    -153        expression = expression.copy()
    -154        logger.warning("Applying array index offset (%s)", offset)
    -155        expression.args["this"] = str(int(expression.this) + offset)  # type: ignore
    -156        return [expression]
    -157
    -158    return expressions
    +143    Args:
    +144        this: the target of the index
    +145        expressions: the expression the offset will be applied to, wrapped in a list.
    +146        offset: the offset that will be applied.
    +147
    +148    Returns:
    +149        The original expression with the offset applied to it, wrapped in a list. If the provided
    +150        `expressions` argument contains more than one expressions, it's returned unaffected.
    +151    """
    +152    if not offset or len(expressions) != 1:
    +153        return expressions
    +154
    +155    expression = expressions[0]
    +156
    +157    from sqlglot import exp
    +158    from sqlglot.optimizer.annotate_types import annotate_types
    +159    from sqlglot.optimizer.simplify import simplify
    +160
    +161    if not this.type:
    +162        annotate_types(this)
    +163
    +164    if t.cast(exp.DataType, this.type).this not in (
    +165        exp.DataType.Type.UNKNOWN,
    +166        exp.DataType.Type.ARRAY,
    +167    ):
    +168        return expressions
    +169
    +170    if expression:
    +171        if not expression.type:
    +172            annotate_types(expression)
    +173        if t.cast(exp.DataType, expression.type).this in exp.DataType.INTEGER_TYPES:
    +174            logger.warning("Applying array index offset (%s)", offset)
    +175            expression = simplify(
    +176                exp.Add(this=expression.copy(), expression=exp.Literal.number(offset))
    +177            )
    +178            return [expression]
    +179
    +180    return expressions
     
    @@ -843,6 +887,7 @@
    Arguments:
      +
    • this: the target of the index
    • expressions: the expression the offset will be applied to, wrapped in a list.
    • offset: the offset that will be applied.
    @@ -868,9 +913,9 @@
    -
    161def camel_to_snake_case(name: str) -> str:
    -162    """Converts `name` from camelCase to snake_case and returns the result."""
    -163    return CAMEL_CASE_PATTERN.sub("_", name).upper()
    +            
    183def camel_to_snake_case(name: str) -> str:
    +184    """Converts `name` from camelCase to snake_case and returns the result."""
    +185    return CAMEL_CASE_PATTERN.sub("_", name).upper()
     
    @@ -890,28 +935,28 @@
    -
    166def while_changing(expression: Expression, func: t.Callable[[Expression], E]) -> E:
    -167    """
    -168    Applies a transformation to a given expression until a fix point is reached.
    -169
    -170    Args:
    -171        expression: the expression to be transformed.
    -172        func: the transformation to be applied.
    -173
    -174    Returns:
    -175        The transformed expression.
    -176    """
    -177    while True:
    -178        for n, *_ in reversed(tuple(expression.walk())):
    -179            n._hash = hash(n)
    -180        start = hash(expression)
    -181        expression = func(expression)
    -182
    -183        for n, *_ in expression.walk():
    -184            n._hash = None
    -185        if start == hash(expression):
    -186            break
    -187    return expression
    +            
    188def while_changing(expression: Expression, func: t.Callable[[Expression], E]) -> E:
    +189    """
    +190    Applies a transformation to a given expression until a fix point is reached.
    +191
    +192    Args:
    +193        expression: the expression to be transformed.
    +194        func: the transformation to be applied.
    +195
    +196    Returns:
    +197        The transformed expression.
    +198    """
    +199    while True:
    +200        for n, *_ in reversed(tuple(expression.walk())):
    +201            n._hash = hash(n)
    +202        start = hash(expression)
    +203        expression = func(expression)
    +204
    +205        for n, *_ in expression.walk():
    +206            n._hash = None
    +207        if start == hash(expression):
    +208            break
    +209    return expression
     
    @@ -944,36 +989,36 @@
    -
    190def tsort(dag: t.Dict[T, t.List[T]]) -> t.List[T]:
    -191    """
    -192    Sorts a given directed acyclic graph in topological order.
    -193
    -194    Args:
    -195        dag: the graph to be sorted.
    -196
    -197    Returns:
    -198        A list that contains all of the graph's nodes in topological order.
    -199    """
    -200    result = []
    -201
    -202    def visit(node: T, visited: t.Set[T]) -> None:
    -203        if node in result:
    -204            return
    -205        if node in visited:
    -206            raise ValueError("Cycle error")
    -207
    -208        visited.add(node)
    -209
    -210        for dep in dag.get(node, []):
    -211            visit(dep, visited)
    -212
    -213        visited.remove(node)
    -214        result.append(node)
    +            
    212def tsort(dag: t.Dict[T, t.List[T]]) -> t.List[T]:
    +213    """
    +214    Sorts a given directed acyclic graph in topological order.
     215
    -216    for node in dag:
    -217        visit(node, set())
    +216    Args:
    +217        dag: the graph to be sorted.
     218
    -219    return result
    +219    Returns:
    +220        A list that contains all of the graph's nodes in topological order.
    +221    """
    +222    result = []
    +223
    +224    def visit(node: T, visited: t.Set[T]) -> None:
    +225        if node in result:
    +226            return
    +227        if node in visited:
    +228            raise ValueError("Cycle error")
    +229
    +230        visited.add(node)
    +231
    +232        for dep in dag.get(node, []):
    +233            visit(dep, visited)
    +234
    +235        visited.remove(node)
    +236        result.append(node)
    +237
    +238    for node in dag:
    +239        visit(node, set())
    +240
    +241    return result
     
    @@ -1005,17 +1050,17 @@
    -
    222def open_file(file_name: str) -> t.TextIO:
    -223    """Open a file that may be compressed as gzip and return it in universal newline mode."""
    -224    with open(file_name, "rb") as f:
    -225        gzipped = f.read(2) == b"\x1f\x8b"
    -226
    -227    if gzipped:
    -228        import gzip
    -229
    -230        return gzip.open(file_name, "rt", newline="")
    -231
    -232    return open(file_name, encoding="utf-8", newline="")
    +            
    244def open_file(file_name: str) -> t.TextIO:
    +245    """Open a file that may be compressed as gzip and return it in universal newline mode."""
    +246    with open(file_name, "rb") as f:
    +247        gzipped = f.read(2) == b"\x1f\x8b"
    +248
    +249    if gzipped:
    +250        import gzip
    +251
    +252        return gzip.open(file_name, "rt", newline="")
    +253
    +254    return open(file_name, encoding="utf-8", newline="")
     
    @@ -1036,32 +1081,32 @@
    -
    235@contextmanager
    -236def csv_reader(read_csv: exp.ReadCSV) -> t.Any:
    -237    """
    -238    Returns a csv reader given the expression `READ_CSV(name, ['delimiter', '|', ...])`.
    -239
    -240    Args:
    -241        read_csv: a `ReadCSV` function call
    -242
    -243    Yields:
    -244        A python csv reader.
    -245    """
    -246    args = read_csv.expressions
    -247    file = open_file(read_csv.name)
    -248
    -249    delimiter = ","
    -250    args = iter(arg.name for arg in args)
    -251    for k, v in zip(args, args):
    -252        if k == "delimiter":
    -253            delimiter = v
    -254
    -255    try:
    -256        import csv as csv_
    -257
    -258        yield csv_.reader(file, delimiter=delimiter)
    -259    finally:
    -260        file.close()
    +            
    257@contextmanager
    +258def csv_reader(read_csv: exp.ReadCSV) -> t.Any:
    +259    """
    +260    Returns a csv reader given the expression `READ_CSV(name, ['delimiter', '|', ...])`.
    +261
    +262    Args:
    +263        read_csv: a `ReadCSV` function call
    +264
    +265    Yields:
    +266        A python csv reader.
    +267    """
    +268    args = read_csv.expressions
    +269    file = open_file(read_csv.name)
    +270
    +271    delimiter = ","
    +272    args = iter(arg.name for arg in args)
    +273    for k, v in zip(args, args):
    +274        if k == "delimiter":
    +275            delimiter = v
    +276
    +277    try:
    +278        import csv as csv_
    +279
    +280        yield csv_.reader(file, delimiter=delimiter)
    +281    finally:
    +282        file.close()
     
    @@ -1093,27 +1138,27 @@
    -
    263def find_new_name(taken: t.Collection[str], base: str) -> str:
    -264    """
    -265    Searches for a new name.
    -266
    -267    Args:
    -268        taken: a collection of taken names.
    -269        base: base name to alter.
    -270
    -271    Returns:
    -272        The new, available name.
    -273    """
    -274    if base not in taken:
    -275        return base
    -276
    -277    i = 2
    -278    new = f"{base}_{i}"
    -279    while new in taken:
    -280        i += 1
    -281        new = f"{base}_{i}"
    -282
    -283    return new
    +            
    285def find_new_name(taken: t.Collection[str], base: str) -> str:
    +286    """
    +287    Searches for a new name.
    +288
    +289    Args:
    +290        taken: a collection of taken names.
    +291        base: base name to alter.
    +292
    +293    Returns:
    +294        The new, available name.
    +295    """
    +296    if base not in taken:
    +297        return base
    +298
    +299    i = 2
    +300    new = f"{base}_{i}"
    +301    while new in taken:
    +302        i += 1
    +303        new = f"{base}_{i}"
    +304
    +305    return new
     
    @@ -1146,9 +1191,9 @@
    -
    286def object_to_dict(obj: t.Any, **kwargs) -> t.Dict:
    -287    """Returns a dictionary created from an object's attributes."""
    -288    return {**{k: copy(v) for k, v in vars(obj).copy().items()}, **kwargs}
    +            
    308def object_to_dict(obj: t.Any, **kwargs) -> t.Dict:
    +309    """Returns a dictionary created from an object's attributes."""
    +310    return {**{k: copy(v) for k, v in vars(obj).copy().items()}, **kwargs}
     
    @@ -1168,33 +1213,33 @@
    -
    291def split_num_words(
    -292    value: str, sep: str, min_num_words: int, fill_from_start: bool = True
    -293) -> t.List[t.Optional[str]]:
    -294    """
    -295    Perform a split on a value and return N words as a result with `None` used for words that don't exist.
    -296
    -297    Args:
    -298        value: the value to be split.
    -299        sep: the value to use to split on.
    -300        min_num_words: the minimum number of words that are going to be in the result.
    -301        fill_from_start: indicates that if `None` values should be inserted at the start or end of the list.
    -302
    -303    Examples:
    -304        >>> split_num_words("db.table", ".", 3)
    -305        [None, 'db', 'table']
    -306        >>> split_num_words("db.table", ".", 3, fill_from_start=False)
    -307        ['db', 'table', None]
    -308        >>> split_num_words("db.table", ".", 1)
    -309        ['db', 'table']
    -310
    -311    Returns:
    -312        The list of words returned by `split`, possibly augmented by a number of `None` values.
    -313    """
    -314    words = value.split(sep)
    -315    if fill_from_start:
    -316        return [None] * (min_num_words - len(words)) + words
    -317    return words + [None] * (min_num_words - len(words))
    +            
    313def split_num_words(
    +314    value: str, sep: str, min_num_words: int, fill_from_start: bool = True
    +315) -> t.List[t.Optional[str]]:
    +316    """
    +317    Perform a split on a value and return N words as a result with `None` used for words that don't exist.
    +318
    +319    Args:
    +320        value: the value to be split.
    +321        sep: the value to use to split on.
    +322        min_num_words: the minimum number of words that are going to be in the result.
    +323        fill_from_start: indicates that if `None` values should be inserted at the start or end of the list.
    +324
    +325    Examples:
    +326        >>> split_num_words("db.table", ".", 3)
    +327        [None, 'db', 'table']
    +328        >>> split_num_words("db.table", ".", 3, fill_from_start=False)
    +329        ['db', 'table', None]
    +330        >>> split_num_words("db.table", ".", 1)
    +331        ['db', 'table']
    +332
    +333    Returns:
    +334        The list of words returned by `split`, possibly augmented by a number of `None` values.
    +335    """
    +336    words = value.split(sep)
    +337    if fill_from_start:
    +338        return [None] * (min_num_words - len(words)) + words
    +339    return words + [None] * (min_num_words - len(words))
     
    @@ -1243,23 +1288,23 @@
    -
    320def is_iterable(value: t.Any) -> bool:
    -321    """
    -322    Checks if the value is an iterable, excluding the types `str` and `bytes`.
    -323
    -324    Examples:
    -325        >>> is_iterable([1,2])
    -326        True
    -327        >>> is_iterable("test")
    -328        False
    -329
    -330    Args:
    -331        value: the value to check if it is an iterable.
    -332
    -333    Returns:
    -334        A `bool` value indicating if it is an iterable.
    -335    """
    -336    return hasattr(value, "__iter__") and not isinstance(value, (str, bytes))
    +            
    342def is_iterable(value: t.Any) -> bool:
    +343    """
    +344    Checks if the value is an iterable, excluding the types `str` and `bytes`.
    +345
    +346    Examples:
    +347        >>> is_iterable([1,2])
    +348        True
    +349        >>> is_iterable("test")
    +350        False
    +351
    +352    Args:
    +353        value: the value to check if it is an iterable.
    +354
    +355    Returns:
    +356        A `bool` value indicating if it is an iterable.
    +357    """
    +358    return hasattr(value, "__iter__") and not isinstance(value, (str, bytes))
     
    @@ -1303,28 +1348,28 @@
    -
    339def flatten(values: t.Iterable[t.Iterable[t.Any] | t.Any]) -> t.Iterator[t.Any]:
    -340    """
    -341    Flattens an iterable that can contain both iterable and non-iterable elements. Objects of
    -342    type `str` and `bytes` are not regarded as iterables.
    -343
    -344    Examples:
    -345        >>> list(flatten([[1, 2], 3, {4}, (5, "bla")]))
    -346        [1, 2, 3, 4, 5, 'bla']
    -347        >>> list(flatten([1, 2, 3]))
    -348        [1, 2, 3]
    -349
    -350    Args:
    -351        values: the value to be flattened.
    -352
    -353    Yields:
    -354        Non-iterable elements in `values`.
    -355    """
    -356    for value in values:
    -357        if is_iterable(value):
    -358            yield from flatten(value)
    -359        else:
    -360            yield value
    +            
    361def flatten(values: t.Iterable[t.Iterable[t.Any] | t.Any]) -> t.Iterator[t.Any]:
    +362    """
    +363    Flattens an iterable that can contain both iterable and non-iterable elements. Objects of
    +364    type `str` and `bytes` are not regarded as iterables.
    +365
    +366    Examples:
    +367        >>> list(flatten([[1, 2], 3, {4}, (5, "bla")]))
    +368        [1, 2, 3, 4, 5, 'bla']
    +369        >>> list(flatten([1, 2, 3]))
    +370        [1, 2, 3]
    +371
    +372    Args:
    +373        values: the value to be flattened.
    +374
    +375    Yields:
    +376        Non-iterable elements in `values`.
    +377    """
    +378    for value in values:
    +379        if is_iterable(value):
    +380            yield from flatten(value)
    +381        else:
    +382            yield value
     
    @@ -1369,13 +1414,13 @@ type str and bytes are not regarded as iterables.

    -
    363def count_params(function: t.Callable) -> int:
    -364    """
    -365    Returns the number of formal parameters expected by a function, without counting "self"
    -366    and "cls", in case of instance and class methods, respectively.
    -367    """
    -368    count = function.__code__.co_argcount
    -369    return count - 1 if inspect.ismethod(function) else count
    +            
    385def count_params(function: t.Callable) -> int:
    +386    """
    +387    Returns the number of formal parameters expected by a function, without counting "self"
    +388    and "cls", in case of instance and class methods, respectively.
    +389    """
    +390    count = function.__code__.co_argcount
    +391    return count - 1 if inspect.ismethod(function) else count
     
    @@ -1396,36 +1441,36 @@ and "cls", in case of instance and class methods, respectively.

    -
    372def dict_depth(d: t.Dict) -> int:
    -373    """
    -374    Get the nesting depth of a dictionary.
    -375
    -376    For example:
    -377        >>> dict_depth(None)
    -378        0
    -379        >>> dict_depth({})
    -380        1
    -381        >>> dict_depth({"a": "b"})
    -382        1
    -383        >>> dict_depth({"a": {}})
    -384        2
    -385        >>> dict_depth({"a": {"b": {}}})
    -386        3
    -387
    -388    Args:
    -389        d (dict): dictionary
    -390
    -391    Returns:
    -392        int: depth
    -393    """
    -394    try:
    -395        return 1 + dict_depth(next(iter(d.values())))
    -396    except AttributeError:
    -397        # d doesn't have attribute "values"
    -398        return 0
    -399    except StopIteration:
    -400        # d.values() returns an empty sequence
    -401        return 1
    +            
    394def dict_depth(d: t.Dict) -> int:
    +395    """
    +396    Get the nesting depth of a dictionary.
    +397
    +398    For example:
    +399        >>> dict_depth(None)
    +400        0
    +401        >>> dict_depth({})
    +402        1
    +403        >>> dict_depth({"a": "b"})
    +404        1
    +405        >>> dict_depth({"a": {}})
    +406        2
    +407        >>> dict_depth({"a": {"b": {}}})
    +408        3
    +409
    +410    Args:
    +411        d (dict): dictionary
    +412
    +413    Returns:
    +414        int: depth
    +415    """
    +416    try:
    +417        return 1 + dict_depth(next(iter(d.values())))
    +418    except AttributeError:
    +419        # d doesn't have attribute "values"
    +420        return 0
    +421    except StopIteration:
    +422        # d.values() returns an empty sequence
    +423        return 1
     
    @@ -1475,12 +1520,12 @@ and "cls", in case of instance and class methods, respectively.

    -
    404def first(it: t.Iterable[T]) -> T:
    -405    """Returns the first element from an iterable.
    -406
    -407    Useful for sets.
    -408    """
    -409    return next(i for i in it)
    +            
    426def first(it: t.Iterable[T]) -> T:
    +427    """Returns the first element from an iterable.
    +428
    +429    Useful for sets.
    +430    """
    +431    return next(i for i in it)
     
    @@ -1502,21 +1547,21 @@ and "cls", in case of instance and class methods, respectively.

    -
    412def should_identify(text: str, identify: str | bool) -> bool:
    -413    """Checks if text should be identified given an identify option.
    -414
    -415    Args:
    -416        text: the text to check.
    -417        identify: "always" | True - always returns true, "safe" - true if no upper case
    -418
    -419    Returns:
    -420        Whether or not a string should be identified.
    -421    """
    -422    if identify is True or identify == "always":
    -423        return True
    -424    if identify == "safe":
    -425        return not any(char.isupper() for char in text)
    -426    return False
    +            
    434def should_identify(text: str, identify: str | bool) -> bool:
    +435    """Checks if text should be identified given an identify option.
    +436
    +437    Args:
    +438        text: the text to check.
    +439        identify: "always" | True - always returns true, "safe" - true if no upper case
    +440
    +441    Returns:
    +442        Whether or not a string should be identified.
    +443    """
    +444    if identify is True or identify == "always":
    +445        return True
    +446    if identify == "safe":
    +447        return not any(char.isupper() for char in text)
    +448    return False
     
    diff --git a/docs/sqlglot/lineage.html b/docs/sqlglot/lineage.html index a9038d5..1c375ad 100644 --- a/docs/sqlglot/lineage.html +++ b/docs/sqlglot/lineage.html @@ -3,7 +3,7 @@ - + sqlglot.lineage API documentation @@ -102,216 +102,243 @@
    20 expression: exp.Expression 21 source: exp.Expression 22 downstream: t.List[Node] = field(default_factory=list) - 23 - 24 def walk(self) -> t.Iterator[Node]: - 25 yield self - 26 - 27 for d in self.downstream: - 28 if isinstance(d, Node): - 29 yield from d.walk() - 30 else: - 31 yield d - 32 - 33 def to_html(self, **opts) -> LineageHTML: - 34 return LineageHTML(self, **opts) - 35 + 23 alias: str = "" + 24 + 25 def walk(self) -> t.Iterator[Node]: + 26 yield self + 27 + 28 for d in self.downstream: + 29 if isinstance(d, Node): + 30 yield from d.walk() + 31 else: + 32 yield d + 33 + 34 def to_html(self, **opts) -> LineageHTML: + 35 return LineageHTML(self, **opts) 36 - 37def lineage( - 38 column: str | exp.Column, - 39 sql: str | exp.Expression, - 40 schema: t.Optional[t.Dict | Schema] = None, - 41 sources: t.Optional[t.Dict[str, str | exp.Subqueryable]] = None, - 42 rules: t.Sequence[t.Callable] = (qualify_tables, qualify_columns, expand_laterals), - 43 dialect: DialectType = None, - 44) -> Node: - 45 """Build the lineage graph for a column of a SQL query. - 46 - 47 Args: - 48 column: The column to build the lineage for. - 49 sql: The SQL string or expression. - 50 schema: The schema of tables. - 51 sources: A mapping of queries which will be used to continue building lineage. - 52 rules: Optimizer rules to apply, by default only qualifying tables and columns. - 53 dialect: The dialect of input SQL. - 54 - 55 Returns: - 56 A lineage node. - 57 """ - 58 - 59 expression = maybe_parse(sql, dialect=dialect) - 60 - 61 if sources: - 62 expression = exp.expand( - 63 expression, - 64 { - 65 k: t.cast(exp.Subqueryable, maybe_parse(v, dialect=dialect)) - 66 for k, v in sources.items() - 67 }, - 68 ) - 69 - 70 optimized = optimize(expression, schema=schema, rules=rules) - 71 scope = build_scope(optimized) - 72 tables: t.Dict[str, Node] = {} + 37 + 38def lineage( + 39 column: str | exp.Column, + 40 sql: str | exp.Expression, + 41 schema: t.Optional[t.Dict | Schema] = None, + 42 sources: t.Optional[t.Dict[str, str | exp.Subqueryable]] = None, + 43 rules: t.Sequence[t.Callable] = (qualify_tables, qualify_columns, expand_laterals), + 44 dialect: DialectType = None, + 45) -> Node: + 46 """Build the lineage graph for a column of a SQL query. + 47 + 48 Args: + 49 column: The column to build the lineage for. + 50 sql: The SQL string or expression. + 51 schema: The schema of tables. + 52 sources: A mapping of queries which will be used to continue building lineage. + 53 rules: Optimizer rules to apply, by default only qualifying tables and columns. + 54 dialect: The dialect of input SQL. + 55 + 56 Returns: + 57 A lineage node. + 58 """ + 59 + 60 expression = maybe_parse(sql, dialect=dialect) + 61 + 62 if sources: + 63 expression = exp.expand( + 64 expression, + 65 { + 66 k: t.cast(exp.Subqueryable, maybe_parse(v, dialect=dialect)) + 67 for k, v in sources.items() + 68 }, + 69 ) + 70 + 71 optimized = optimize(expression, schema=schema, rules=rules) + 72 scope = build_scope(optimized) 73 74 def to_node( 75 column_name: str, 76 scope: Scope, 77 scope_name: t.Optional[str] = None, 78 upstream: t.Optional[Node] = None, - 79 ) -> Node: - 80 if isinstance(scope.expression, exp.Union): - 81 for scope in scope.union_scopes: - 82 node = to_node( - 83 column_name, - 84 scope=scope, - 85 scope_name=scope_name, - 86 upstream=upstream, - 87 ) - 88 return node - 89 - 90 select = next(select for select in scope.selects if select.alias_or_name == column_name) - 91 source = optimize(scope.expression.select(select, append=False), schema=schema, rules=rules) - 92 select = source.selects[0] - 93 - 94 node = Node( - 95 name=f"{scope_name}.{column_name}" if scope_name else column_name, - 96 source=source, - 97 expression=select, - 98 ) - 99 -100 if upstream: -101 upstream.downstream.append(node) -102 -103 for c in set(select.find_all(exp.Column)): -104 table = c.table -105 source = scope.sources[table] + 79 alias: t.Optional[str] = None, + 80 ) -> Node: + 81 aliases = { + 82 dt.alias: dt.comments[0].split()[1] + 83 for dt in scope.derived_tables + 84 if dt.comments and dt.comments[0].startswith("source: ") + 85 } + 86 if isinstance(scope.expression, exp.Union): + 87 for scope in scope.union_scopes: + 88 node = to_node( + 89 column_name, + 90 scope=scope, + 91 scope_name=scope_name, + 92 upstream=upstream, + 93 alias=aliases.get(scope_name), + 94 ) + 95 return node + 96 + 97 # Find the specific select clause that is the source of the column we want. + 98 # This can either be a specific, named select or a generic `*` clause. + 99 select = next( +100 (select for select in scope.selects if select.alias_or_name == column_name), +101 exp.Star() if scope.expression.is_star else None, +102 ) +103 +104 if not select: +105 raise ValueError(f"Could not find {column_name} in {scope.expression}") 106 -107 if isinstance(source, Scope): -108 to_node( -109 c.name, -110 scope=source, -111 scope_name=table, -112 upstream=node, -113 ) -114 else: -115 if table not in tables: -116 tables[table] = Node(name=c.sql(), source=source, expression=source) -117 node.downstream.append(tables[table]) +107 if isinstance(scope.expression, exp.Select): +108 # For better ergonomics in our node labels, replace the full select with +109 # a version that has only the column we care about. +110 # "x", SELECT x, y FROM foo +111 # => "x", SELECT x FROM foo +112 source = optimize( +113 scope.expression.select(select, append=False), schema=schema, rules=rules +114 ) +115 select = source.selects[0] +116 else: +117 source = scope.expression 118 -119 return node -120 -121 return to_node(column if isinstance(column, str) else column.name, scope) -122 -123 -124class LineageHTML: -125 """Node to HTML generator using vis.js. -126 -127 https://visjs.github.io/vis-network/docs/network/ -128 """ -129 -130 def __init__( -131 self, -132 node: Node, -133 dialect: DialectType = None, -134 imports: bool = True, -135 **opts: t.Any, -136 ): -137 self.node = node -138 self.imports = imports -139 -140 self.options = { -141 "height": "500px", -142 "width": "100%", -143 "layout": { -144 "hierarchical": { -145 "enabled": True, -146 "nodeSpacing": 200, -147 "sortMethod": "directed", -148 }, -149 }, -150 "interaction": { -151 "dragNodes": False, -152 "selectable": False, -153 }, -154 "physics": { -155 "enabled": False, -156 }, -157 "edges": { -158 "arrows": "to", -159 }, -160 "nodes": { -161 "font": "20px monaco", -162 "shape": "box", -163 "widthConstraint": { -164 "maximum": 300, -165 }, -166 }, -167 **opts, -168 } -169 -170 self.nodes = {} -171 self.edges = [] -172 -173 for node in node.walk(): -174 if isinstance(node.expression, exp.Table): -175 label = f"FROM {node.expression.this}" -176 title = f"<pre>SELECT {node.name} FROM {node.expression.this}</pre>" -177 group = 1 -178 else: -179 label = node.expression.sql(pretty=True, dialect=dialect) -180 source = node.source.transform( -181 lambda n: exp.Tag(this=n, prefix="<b>", postfix="</b>") -182 if n is node.expression -183 else n, -184 copy=False, -185 ).sql(pretty=True, dialect=dialect) -186 title = f"<pre>{source}</pre>" -187 group = 0 -188 -189 node_id = id(node) -190 -191 self.nodes[node_id] = { -192 "id": node_id, -193 "label": label, -194 "title": title, -195 "group": group, -196 } -197 -198 for d in node.downstream: -199 self.edges.append({"from": node_id, "to": id(d)}) -200 -201 def __str__(self): -202 nodes = json.dumps(list(self.nodes.values())) -203 edges = json.dumps(self.edges) -204 options = json.dumps(self.options) -205 imports = ( -206 """<script type="text/javascript" src="https://unpkg.com/vis-data@latest/peer/umd/vis-data.min.js"></script> -207 <script type="text/javascript" src="https://unpkg.com/vis-network@latest/peer/umd/vis-network.min.js"></script> -208 <link rel="stylesheet" type="text/css" href="https://unpkg.com/vis-network/styles/vis-network.min.css" />""" -209 if self.imports -210 else "" -211 ) -212 -213 return f"""<div> -214 <div id="sqlglot-lineage"></div> -215 {imports} -216 <script type="text/javascript"> -217 var nodes = new vis.DataSet({nodes}) -218 nodes.forEach(row => row["title"] = new DOMParser().parseFromString(row["title"], "text/html").body.childNodes[0]) -219 -220 new vis.Network( -221 document.getElementById("sqlglot-lineage"), -222 {{ -223 nodes: nodes, -224 edges: new vis.DataSet({edges}) -225 }}, -226 {options}, -227 ) -228 </script> -229</div>""" -230 -231 def _repr_html_(self) -> str: -232 return self.__str__() +119 # Create the node for this step in the lineage chain, and attach it to the previous one. +120 node = Node( +121 name=f"{scope_name}.{column_name}" if scope_name else column_name, +122 source=source, +123 expression=select, +124 alias=alias or "", +125 ) +126 if upstream: +127 upstream.downstream.append(node) +128 +129 # Find all columns that went into creating this one to list their lineage nodes. +130 for c in set(select.find_all(exp.Column)): +131 table = c.table +132 source = scope.sources.get(table) +133 +134 if isinstance(source, Scope): +135 # The table itself came from a more specific scope. Recurse into that one using the unaliased column name. +136 to_node( +137 c.name, scope=source, scope_name=table, upstream=node, alias=aliases.get(table) +138 ) +139 else: +140 # The source is not a scope - we've reached the end of the line. At this point, if a source is not found +141 # it means this column's lineage is unknown. This can happen if the definition of a source used in a query +142 # is not passed into the `sources` map. +143 source = source or exp.Placeholder() +144 node.downstream.append(Node(name=c.sql(), source=source, expression=source)) +145 +146 return node +147 +148 return to_node(column if isinstance(column, str) else column.name, scope) +149 +150 +151class LineageHTML: +152 """Node to HTML generator using vis.js. +153 +154 https://visjs.github.io/vis-network/docs/network/ +155 """ +156 +157 def __init__( +158 self, +159 node: Node, +160 dialect: DialectType = None, +161 imports: bool = True, +162 **opts: t.Any, +163 ): +164 self.node = node +165 self.imports = imports +166 +167 self.options = { +168 "height": "500px", +169 "width": "100%", +170 "layout": { +171 "hierarchical": { +172 "enabled": True, +173 "nodeSpacing": 200, +174 "sortMethod": "directed", +175 }, +176 }, +177 "interaction": { +178 "dragNodes": False, +179 "selectable": False, +180 }, +181 "physics": { +182 "enabled": False, +183 }, +184 "edges": { +185 "arrows": "to", +186 }, +187 "nodes": { +188 "font": "20px monaco", +189 "shape": "box", +190 "widthConstraint": { +191 "maximum": 300, +192 }, +193 }, +194 **opts, +195 } +196 +197 self.nodes = {} +198 self.edges = [] +199 +200 for node in node.walk(): +201 if isinstance(node.expression, exp.Table): +202 label = f"FROM {node.expression.this}" +203 title = f"<pre>SELECT {node.name} FROM {node.expression.this}</pre>" +204 group = 1 +205 else: +206 label = node.expression.sql(pretty=True, dialect=dialect) +207 source = node.source.transform( +208 lambda n: exp.Tag(this=n, prefix="<b>", postfix="</b>") +209 if n is node.expression +210 else n, +211 copy=False, +212 ).sql(pretty=True, dialect=dialect) +213 title = f"<pre>{source}</pre>" +214 group = 0 +215 +216 node_id = id(node) +217 +218 self.nodes[node_id] = { +219 "id": node_id, +220 "label": label, +221 "title": title, +222 "group": group, +223 } +224 +225 for d in node.downstream: +226 self.edges.append({"from": node_id, "to": id(d)}) +227 +228 def __str__(self): +229 nodes = json.dumps(list(self.nodes.values())) +230 edges = json.dumps(self.edges) +231 options = json.dumps(self.options) +232 imports = ( +233 """<script type="text/javascript" src="https://unpkg.com/vis-data@latest/peer/umd/vis-data.min.js"></script> +234 <script type="text/javascript" src="https://unpkg.com/vis-network@latest/peer/umd/vis-network.min.js"></script> +235 <link rel="stylesheet" type="text/css" href="https://unpkg.com/vis-network/styles/vis-network.min.css" />""" +236 if self.imports +237 else "" +238 ) +239 +240 return f"""<div> +241 <div id="sqlglot-lineage"></div> +242 {imports} +243 <script type="text/javascript"> +244 var nodes = new vis.DataSet({nodes}) +245 nodes.forEach(row => row["title"] = new DOMParser().parseFromString(row["title"], "text/html").body.childNodes[0]) +246 +247 new vis.Network( +248 document.getElementById("sqlglot-lineage"), +249 {{ +250 nodes: nodes, +251 edges: new vis.DataSet({edges}) +252 }}, +253 {options}, +254 ) +255 </script> +256</div>""" +257 +258 def _repr_html_(self) -> str: +259 return self.__str__()
    @@ -334,18 +361,19 @@
    21 expression: exp.Expression 22 source: exp.Expression 23 downstream: t.List[Node] = field(default_factory=list) -24 -25 def walk(self) -> t.Iterator[Node]: -26 yield self -27 -28 for d in self.downstream: -29 if isinstance(d, Node): -30 yield from d.walk() -31 else: -32 yield d -33 -34 def to_html(self, **opts) -> LineageHTML: -35 return LineageHTML(self, **opts) +24 alias: str = "" +25 +26 def walk(self) -> t.Iterator[Node]: +27 yield self +28 +29 for d in self.downstream: +30 if isinstance(d, Node): +31 yield from d.walk() +32 else: +33 yield d +34 +35 def to_html(self, **opts) -> LineageHTML: +36 return LineageHTML(self, **opts)
    @@ -354,7 +382,7 @@
    - Node( name: str, expression: sqlglot.expressions.Expression, source: sqlglot.expressions.Expression, downstream: List[sqlglot.lineage.Node] = <factory>) + Node( name: str, expression: sqlglot.expressions.Expression, source: sqlglot.expressions.Expression, downstream: List[sqlglot.lineage.Node] = <factory>, alias: str = '')
    @@ -374,14 +402,14 @@
    -
    25    def walk(self) -> t.Iterator[Node]:
    -26        yield self
    -27
    -28        for d in self.downstream:
    -29            if isinstance(d, Node):
    -30                yield from d.walk()
    -31            else:
    -32                yield d
    +            
    26    def walk(self) -> t.Iterator[Node]:
    +27        yield self
    +28
    +29        for d in self.downstream:
    +30            if isinstance(d, Node):
    +31                yield from d.walk()
    +32            else:
    +33                yield d
     
    @@ -399,8 +427,8 @@
    -
    34    def to_html(self, **opts) -> LineageHTML:
    -35        return LineageHTML(self, **opts)
    +            
    35    def to_html(self, **opts) -> LineageHTML:
    +36        return LineageHTML(self, **opts)
     
    @@ -413,97 +441,123 @@
    def - lineage( column: str | sqlglot.expressions.Column, sql: str | sqlglot.expressions.Expression, schema: Union[Dict, sqlglot.schema.Schema, NoneType] = None, sources: Optional[Dict[str, str | sqlglot.expressions.Subqueryable]] = None, rules: Sequence[Callable] = (<function qualify_tables at 0x7f1311384310>, <function qualify_columns at 0x7f13113b71c0>, <function expand_laterals at 0x7f13113b5870>), dialect: Union[str, sqlglot.dialects.dialect.Dialect, Type[sqlglot.dialects.dialect.Dialect], NoneType] = None) -> sqlglot.lineage.Node: + lineage( column: str | sqlglot.expressions.Column, sql: str | sqlglot.expressions.Expression, schema: Union[Dict, sqlglot.schema.Schema, NoneType] = None, sources: Optional[Dict[str, str | sqlglot.expressions.Subqueryable]] = None, rules: Sequence[Callable] = (<function qualify_tables at 0x7fac3cdc5630>, <function qualify_columns at 0x7fac3cdc4550>, <function expand_laterals at 0x7fac3cd8eb90>), dialect: Union[str, sqlglot.dialects.dialect.Dialect, Type[sqlglot.dialects.dialect.Dialect], NoneType] = None) -> sqlglot.lineage.Node:
    -
     38def lineage(
    - 39    column: str | exp.Column,
    - 40    sql: str | exp.Expression,
    - 41    schema: t.Optional[t.Dict | Schema] = None,
    - 42    sources: t.Optional[t.Dict[str, str | exp.Subqueryable]] = None,
    - 43    rules: t.Sequence[t.Callable] = (qualify_tables, qualify_columns, expand_laterals),
    - 44    dialect: DialectType = None,
    - 45) -> Node:
    - 46    """Build the lineage graph for a column of a SQL query.
    - 47
    - 48    Args:
    - 49        column: The column to build the lineage for.
    - 50        sql: The SQL string or expression.
    - 51        schema: The schema of tables.
    - 52        sources: A mapping of queries which will be used to continue building lineage.
    - 53        rules: Optimizer rules to apply, by default only qualifying tables and columns.
    - 54        dialect: The dialect of input SQL.
    - 55
    - 56    Returns:
    - 57        A lineage node.
    - 58    """
    - 59
    - 60    expression = maybe_parse(sql, dialect=dialect)
    - 61
    - 62    if sources:
    - 63        expression = exp.expand(
    - 64            expression,
    - 65            {
    - 66                k: t.cast(exp.Subqueryable, maybe_parse(v, dialect=dialect))
    - 67                for k, v in sources.items()
    - 68            },
    - 69        )
    - 70
    - 71    optimized = optimize(expression, schema=schema, rules=rules)
    - 72    scope = build_scope(optimized)
    - 73    tables: t.Dict[str, Node] = {}
    +            
     39def lineage(
    + 40    column: str | exp.Column,
    + 41    sql: str | exp.Expression,
    + 42    schema: t.Optional[t.Dict | Schema] = None,
    + 43    sources: t.Optional[t.Dict[str, str | exp.Subqueryable]] = None,
    + 44    rules: t.Sequence[t.Callable] = (qualify_tables, qualify_columns, expand_laterals),
    + 45    dialect: DialectType = None,
    + 46) -> Node:
    + 47    """Build the lineage graph for a column of a SQL query.
    + 48
    + 49    Args:
    + 50        column: The column to build the lineage for.
    + 51        sql: The SQL string or expression.
    + 52        schema: The schema of tables.
    + 53        sources: A mapping of queries which will be used to continue building lineage.
    + 54        rules: Optimizer rules to apply, by default only qualifying tables and columns.
    + 55        dialect: The dialect of input SQL.
    + 56
    + 57    Returns:
    + 58        A lineage node.
    + 59    """
    + 60
    + 61    expression = maybe_parse(sql, dialect=dialect)
    + 62
    + 63    if sources:
    + 64        expression = exp.expand(
    + 65            expression,
    + 66            {
    + 67                k: t.cast(exp.Subqueryable, maybe_parse(v, dialect=dialect))
    + 68                for k, v in sources.items()
    + 69            },
    + 70        )
    + 71
    + 72    optimized = optimize(expression, schema=schema, rules=rules)
    + 73    scope = build_scope(optimized)
      74
      75    def to_node(
      76        column_name: str,
      77        scope: Scope,
      78        scope_name: t.Optional[str] = None,
      79        upstream: t.Optional[Node] = None,
    - 80    ) -> Node:
    - 81        if isinstance(scope.expression, exp.Union):
    - 82            for scope in scope.union_scopes:
    - 83                node = to_node(
    - 84                    column_name,
    - 85                    scope=scope,
    - 86                    scope_name=scope_name,
    - 87                    upstream=upstream,
    - 88                )
    - 89            return node
    - 90
    - 91        select = next(select for select in scope.selects if select.alias_or_name == column_name)
    - 92        source = optimize(scope.expression.select(select, append=False), schema=schema, rules=rules)
    - 93        select = source.selects[0]
    - 94
    - 95        node = Node(
    - 96            name=f"{scope_name}.{column_name}" if scope_name else column_name,
    - 97            source=source,
    - 98            expression=select,
    - 99        )
    -100
    -101        if upstream:
    -102            upstream.downstream.append(node)
    -103
    -104        for c in set(select.find_all(exp.Column)):
    -105            table = c.table
    -106            source = scope.sources[table]
    + 80        alias: t.Optional[str] = None,
    + 81    ) -> Node:
    + 82        aliases = {
    + 83            dt.alias: dt.comments[0].split()[1]
    + 84            for dt in scope.derived_tables
    + 85            if dt.comments and dt.comments[0].startswith("source: ")
    + 86        }
    + 87        if isinstance(scope.expression, exp.Union):
    + 88            for scope in scope.union_scopes:
    + 89                node = to_node(
    + 90                    column_name,
    + 91                    scope=scope,
    + 92                    scope_name=scope_name,
    + 93                    upstream=upstream,
    + 94                    alias=aliases.get(scope_name),
    + 95                )
    + 96            return node
    + 97
    + 98        # Find the specific select clause that is the source of the column we want.
    + 99        # This can either be a specific, named select or a generic `*` clause.
    +100        select = next(
    +101            (select for select in scope.selects if select.alias_or_name == column_name),
    +102            exp.Star() if scope.expression.is_star else None,
    +103        )
    +104
    +105        if not select:
    +106            raise ValueError(f"Could not find {column_name} in {scope.expression}")
     107
    -108            if isinstance(source, Scope):
    -109                to_node(
    -110                    c.name,
    -111                    scope=source,
    -112                    scope_name=table,
    -113                    upstream=node,
    -114                )
    -115            else:
    -116                if table not in tables:
    -117                    tables[table] = Node(name=c.sql(), source=source, expression=source)
    -118                node.downstream.append(tables[table])
    +108        if isinstance(scope.expression, exp.Select):
    +109            # For better ergonomics in our node labels, replace the full select with
    +110            # a version that has only the column we care about.
    +111            #   "x", SELECT x, y FROM foo
    +112            #     => "x", SELECT x FROM foo
    +113            source = optimize(
    +114                scope.expression.select(select, append=False), schema=schema, rules=rules
    +115            )
    +116            select = source.selects[0]
    +117        else:
    +118            source = scope.expression
     119
    -120        return node
    -121
    -122    return to_node(column if isinstance(column, str) else column.name, scope)
    +120        # Create the node for this step in the lineage chain, and attach it to the previous one.
    +121        node = Node(
    +122            name=f"{scope_name}.{column_name}" if scope_name else column_name,
    +123            source=source,
    +124            expression=select,
    +125            alias=alias or "",
    +126        )
    +127        if upstream:
    +128            upstream.downstream.append(node)
    +129
    +130        # Find all columns that went into creating this one to list their lineage nodes.
    +131        for c in set(select.find_all(exp.Column)):
    +132            table = c.table
    +133            source = scope.sources.get(table)
    +134
    +135            if isinstance(source, Scope):
    +136                # The table itself came from a more specific scope. Recurse into that one using the unaliased column name.
    +137                to_node(
    +138                    c.name, scope=source, scope_name=table, upstream=node, alias=aliases.get(table)
    +139                )
    +140            else:
    +141                # The source is not a scope - we've reached the end of the line. At this point, if a source is not found
    +142                # it means this column's lineage is unknown. This can happen if the definition of a source used in a query
    +143                # is not passed into the `sources` map.
    +144                source = source or exp.Placeholder()
    +145                node.downstream.append(Node(name=c.sql(), source=source, expression=source))
    +146
    +147        return node
    +148
    +149    return to_node(column if isinstance(column, str) else column.name, scope)
     
    @@ -540,115 +594,115 @@
    -
    125class LineageHTML:
    -126    """Node to HTML generator using vis.js.
    -127
    -128    https://visjs.github.io/vis-network/docs/network/
    -129    """
    -130
    -131    def __init__(
    -132        self,
    -133        node: Node,
    -134        dialect: DialectType = None,
    -135        imports: bool = True,
    -136        **opts: t.Any,
    -137    ):
    -138        self.node = node
    -139        self.imports = imports
    -140
    -141        self.options = {
    -142            "height": "500px",
    -143            "width": "100%",
    -144            "layout": {
    -145                "hierarchical": {
    -146                    "enabled": True,
    -147                    "nodeSpacing": 200,
    -148                    "sortMethod": "directed",
    -149                },
    -150            },
    -151            "interaction": {
    -152                "dragNodes": False,
    -153                "selectable": False,
    -154            },
    -155            "physics": {
    -156                "enabled": False,
    -157            },
    -158            "edges": {
    -159                "arrows": "to",
    -160            },
    -161            "nodes": {
    -162                "font": "20px monaco",
    -163                "shape": "box",
    -164                "widthConstraint": {
    -165                    "maximum": 300,
    -166                },
    -167            },
    -168            **opts,
    -169        }
    -170
    -171        self.nodes = {}
    -172        self.edges = []
    -173
    -174        for node in node.walk():
    -175            if isinstance(node.expression, exp.Table):
    -176                label = f"FROM {node.expression.this}"
    -177                title = f"<pre>SELECT {node.name} FROM {node.expression.this}</pre>"
    -178                group = 1
    -179            else:
    -180                label = node.expression.sql(pretty=True, dialect=dialect)
    -181                source = node.source.transform(
    -182                    lambda n: exp.Tag(this=n, prefix="<b>", postfix="</b>")
    -183                    if n is node.expression
    -184                    else n,
    -185                    copy=False,
    -186                ).sql(pretty=True, dialect=dialect)
    -187                title = f"<pre>{source}</pre>"
    -188                group = 0
    -189
    -190            node_id = id(node)
    -191
    -192            self.nodes[node_id] = {
    -193                "id": node_id,
    -194                "label": label,
    -195                "title": title,
    -196                "group": group,
    -197            }
    -198
    -199            for d in node.downstream:
    -200                self.edges.append({"from": node_id, "to": id(d)})
    -201
    -202    def __str__(self):
    -203        nodes = json.dumps(list(self.nodes.values()))
    -204        edges = json.dumps(self.edges)
    -205        options = json.dumps(self.options)
    -206        imports = (
    -207            """<script type="text/javascript" src="https://unpkg.com/vis-data@latest/peer/umd/vis-data.min.js"></script>
    -208  <script type="text/javascript" src="https://unpkg.com/vis-network@latest/peer/umd/vis-network.min.js"></script>
    -209  <link rel="stylesheet" type="text/css" href="https://unpkg.com/vis-network/styles/vis-network.min.css" />"""
    -210            if self.imports
    -211            else ""
    -212        )
    -213
    -214        return f"""<div>
    -215  <div id="sqlglot-lineage"></div>
    -216  {imports}
    -217  <script type="text/javascript">
    -218    var nodes = new vis.DataSet({nodes})
    -219    nodes.forEach(row => row["title"] = new DOMParser().parseFromString(row["title"], "text/html").body.childNodes[0])
    -220
    -221    new vis.Network(
    -222        document.getElementById("sqlglot-lineage"),
    -223        {{
    -224            nodes: nodes,
    -225            edges: new vis.DataSet({edges})
    -226        }},
    -227        {options},
    -228    )
    -229  </script>
    -230</div>"""
    -231
    -232    def _repr_html_(self) -> str:
    -233        return self.__str__()
    +            
    152class LineageHTML:
    +153    """Node to HTML generator using vis.js.
    +154
    +155    https://visjs.github.io/vis-network/docs/network/
    +156    """
    +157
    +158    def __init__(
    +159        self,
    +160        node: Node,
    +161        dialect: DialectType = None,
    +162        imports: bool = True,
    +163        **opts: t.Any,
    +164    ):
    +165        self.node = node
    +166        self.imports = imports
    +167
    +168        self.options = {
    +169            "height": "500px",
    +170            "width": "100%",
    +171            "layout": {
    +172                "hierarchical": {
    +173                    "enabled": True,
    +174                    "nodeSpacing": 200,
    +175                    "sortMethod": "directed",
    +176                },
    +177            },
    +178            "interaction": {
    +179                "dragNodes": False,
    +180                "selectable": False,
    +181            },
    +182            "physics": {
    +183                "enabled": False,
    +184            },
    +185            "edges": {
    +186                "arrows": "to",
    +187            },
    +188            "nodes": {
    +189                "font": "20px monaco",
    +190                "shape": "box",
    +191                "widthConstraint": {
    +192                    "maximum": 300,
    +193                },
    +194            },
    +195            **opts,
    +196        }
    +197
    +198        self.nodes = {}
    +199        self.edges = []
    +200
    +201        for node in node.walk():
    +202            if isinstance(node.expression, exp.Table):
    +203                label = f"FROM {node.expression.this}"
    +204                title = f"<pre>SELECT {node.name} FROM {node.expression.this}</pre>"
    +205                group = 1
    +206            else:
    +207                label = node.expression.sql(pretty=True, dialect=dialect)
    +208                source = node.source.transform(
    +209                    lambda n: exp.Tag(this=n, prefix="<b>", postfix="</b>")
    +210                    if n is node.expression
    +211                    else n,
    +212                    copy=False,
    +213                ).sql(pretty=True, dialect=dialect)
    +214                title = f"<pre>{source}</pre>"
    +215                group = 0
    +216
    +217            node_id = id(node)
    +218
    +219            self.nodes[node_id] = {
    +220                "id": node_id,
    +221                "label": label,
    +222                "title": title,
    +223                "group": group,
    +224            }
    +225
    +226            for d in node.downstream:
    +227                self.edges.append({"from": node_id, "to": id(d)})
    +228
    +229    def __str__(self):
    +230        nodes = json.dumps(list(self.nodes.values()))
    +231        edges = json.dumps(self.edges)
    +232        options = json.dumps(self.options)
    +233        imports = (
    +234            """<script type="text/javascript" src="https://unpkg.com/vis-data@latest/peer/umd/vis-data.min.js"></script>
    +235  <script type="text/javascript" src="https://unpkg.com/vis-network@latest/peer/umd/vis-network.min.js"></script>
    +236  <link rel="stylesheet" type="text/css" href="https://unpkg.com/vis-network/styles/vis-network.min.css" />"""
    +237            if self.imports
    +238            else ""
    +239        )
    +240
    +241        return f"""<div>
    +242  <div id="sqlglot-lineage"></div>
    +243  {imports}
    +244  <script type="text/javascript">
    +245    var nodes = new vis.DataSet({nodes})
    +246    nodes.forEach(row => row["title"] = new DOMParser().parseFromString(row["title"], "text/html").body.childNodes[0])
    +247
    +248    new vis.Network(
    +249        document.getElementById("sqlglot-lineage"),
    +250        {{
    +251            nodes: nodes,
    +252            edges: new vis.DataSet({edges})
    +253        }},
    +254        {options},
    +255    )
    +256  </script>
    +257</div>"""
    +258
    +259    def _repr_html_(self) -> str:
    +260        return self.__str__()
     
    @@ -668,76 +722,76 @@
    -
    131    def __init__(
    -132        self,
    -133        node: Node,
    -134        dialect: DialectType = None,
    -135        imports: bool = True,
    -136        **opts: t.Any,
    -137    ):
    -138        self.node = node
    -139        self.imports = imports
    -140
    -141        self.options = {
    -142            "height": "500px",
    -143            "width": "100%",
    -144            "layout": {
    -145                "hierarchical": {
    -146                    "enabled": True,
    -147                    "nodeSpacing": 200,
    -148                    "sortMethod": "directed",
    -149                },
    -150            },
    -151            "interaction": {
    -152                "dragNodes": False,
    -153                "selectable": False,
    -154            },
    -155            "physics": {
    -156                "enabled": False,
    -157            },
    -158            "edges": {
    -159                "arrows": "to",
    -160            },
    -161            "nodes": {
    -162                "font": "20px monaco",
    -163                "shape": "box",
    -164                "widthConstraint": {
    -165                    "maximum": 300,
    -166                },
    -167            },
    -168            **opts,
    -169        }
    -170
    -171        self.nodes = {}
    -172        self.edges = []
    -173
    -174        for node in node.walk():
    -175            if isinstance(node.expression, exp.Table):
    -176                label = f"FROM {node.expression.this}"
    -177                title = f"<pre>SELECT {node.name} FROM {node.expression.this}</pre>"
    -178                group = 1
    -179            else:
    -180                label = node.expression.sql(pretty=True, dialect=dialect)
    -181                source = node.source.transform(
    -182                    lambda n: exp.Tag(this=n, prefix="<b>", postfix="</b>")
    -183                    if n is node.expression
    -184                    else n,
    -185                    copy=False,
    -186                ).sql(pretty=True, dialect=dialect)
    -187                title = f"<pre>{source}</pre>"
    -188                group = 0
    -189
    -190            node_id = id(node)
    -191
    -192            self.nodes[node_id] = {
    -193                "id": node_id,
    -194                "label": label,
    -195                "title": title,
    -196                "group": group,
    -197            }
    -198
    -199            for d in node.downstream:
    -200                self.edges.append({"from": node_id, "to": id(d)})
    +            
    158    def __init__(
    +159        self,
    +160        node: Node,
    +161        dialect: DialectType = None,
    +162        imports: bool = True,
    +163        **opts: t.Any,
    +164    ):
    +165        self.node = node
    +166        self.imports = imports
    +167
    +168        self.options = {
    +169            "height": "500px",
    +170            "width": "100%",
    +171            "layout": {
    +172                "hierarchical": {
    +173                    "enabled": True,
    +174                    "nodeSpacing": 200,
    +175                    "sortMethod": "directed",
    +176                },
    +177            },
    +178            "interaction": {
    +179                "dragNodes": False,
    +180                "selectable": False,
    +181            },
    +182            "physics": {
    +183                "enabled": False,
    +184            },
    +185            "edges": {
    +186                "arrows": "to",
    +187            },
    +188            "nodes": {
    +189                "font": "20px monaco",
    +190                "shape": "box",
    +191                "widthConstraint": {
    +192                    "maximum": 300,
    +193                },
    +194            },
    +195            **opts,
    +196        }
    +197
    +198        self.nodes = {}
    +199        self.edges = []
    +200
    +201        for node in node.walk():
    +202            if isinstance(node.expression, exp.Table):
    +203                label = f"FROM {node.expression.this}"
    +204                title = f"<pre>SELECT {node.name} FROM {node.expression.this}</pre>"
    +205                group = 1
    +206            else:
    +207                label = node.expression.sql(pretty=True, dialect=dialect)
    +208                source = node.source.transform(
    +209                    lambda n: exp.Tag(this=n, prefix="<b>", postfix="</b>")
    +210                    if n is node.expression
    +211                    else n,
    +212                    copy=False,
    +213                ).sql(pretty=True, dialect=dialect)
    +214                title = f"<pre>{source}</pre>"
    +215                group = 0
    +216
    +217            node_id = id(node)
    +218
    +219            self.nodes[node_id] = {
    +220                "id": node_id,
    +221                "label": label,
    +222                "title": title,
    +223                "group": group,
    +224            }
    +225
    +226            for d in node.downstream:
    +227                self.edges.append({"from": node_id, "to": id(d)})
     
    diff --git a/docs/sqlglot/optimizer.html b/docs/sqlglot/optimizer.html index 84c1f70..158aab7 100644 --- a/docs/sqlglot/optimizer.html +++ b/docs/sqlglot/optimizer.html @@ -3,7 +3,7 @@ - + sqlglot.optimizer API documentation diff --git a/docs/sqlglot/optimizer/annotate_types.html b/docs/sqlglot/optimizer/annotate_types.html index bbbda35..922e282 100644 --- a/docs/sqlglot/optimizer/annotate_types.html +++ b/docs/sqlglot/optimizer/annotate_types.html @@ -3,7 +3,7 @@ - + sqlglot.optimizer.annotate_types API documentation @@ -186,285 +186,288 @@
    116 exp.ArrayConcat: lambda self, expr: self._annotate_with_type( 117 expr, exp.DataType.Type.VARCHAR 118 ), -119 exp.Initcap: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.VARCHAR), -120 exp.Interval: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.INTERVAL), -121 exp.Least: lambda self, expr: self._annotate_by_args(expr, "expressions"), -122 exp.Length: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.BIGINT), -123 exp.Levenshtein: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.INT), -124 exp.Ln: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.DOUBLE), -125 exp.Log: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.DOUBLE), -126 exp.Log2: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.DOUBLE), -127 exp.Log10: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.DOUBLE), -128 exp.Lower: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.VARCHAR), -129 exp.Month: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.TINYINT), -130 exp.Pow: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.DOUBLE), -131 exp.Quantile: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.DOUBLE), -132 exp.ApproxQuantile: lambda self, expr: self._annotate_with_type( -133 expr, exp.DataType.Type.DOUBLE -134 ), -135 exp.RegexpLike: lambda self, expr: self._annotate_with_type( -136 expr, exp.DataType.Type.BOOLEAN +119 exp.ArraySize: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.BIGINT), +120 exp.Map: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.MAP), +121 exp.VarMap: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.MAP), +122 exp.Initcap: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.VARCHAR), +123 exp.Interval: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.INTERVAL), +124 exp.Least: lambda self, expr: self._annotate_by_args(expr, "expressions"), +125 exp.Length: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.BIGINT), +126 exp.Levenshtein: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.INT), +127 exp.Ln: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.DOUBLE), +128 exp.Log: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.DOUBLE), +129 exp.Log2: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.DOUBLE), +130 exp.Log10: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.DOUBLE), +131 exp.Lower: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.VARCHAR), +132 exp.Month: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.TINYINT), +133 exp.Pow: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.DOUBLE), +134 exp.Quantile: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.DOUBLE), +135 exp.ApproxQuantile: lambda self, expr: self._annotate_with_type( +136 expr, exp.DataType.Type.DOUBLE 137 ), -138 exp.Round: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.DOUBLE), -139 exp.SafeDivide: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.DOUBLE), -140 exp.Substring: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.VARCHAR), -141 exp.StrPosition: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.INT), -142 exp.StrToDate: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.DATE), -143 exp.StrToTime: lambda self, expr: self._annotate_with_type( -144 expr, exp.DataType.Type.TIMESTAMP -145 ), -146 exp.Sqrt: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.DOUBLE), -147 exp.Stddev: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.DOUBLE), -148 exp.StddevPop: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.DOUBLE), -149 exp.StddevSamp: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.DOUBLE), -150 exp.TimeToStr: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.VARCHAR), -151 exp.TimeToTimeStr: lambda self, expr: self._annotate_with_type( -152 expr, exp.DataType.Type.VARCHAR -153 ), -154 exp.TimeStrToDate: lambda self, expr: self._annotate_with_type( -155 expr, exp.DataType.Type.DATE +138 exp.RegexpLike: lambda self, expr: self._annotate_with_type( +139 expr, exp.DataType.Type.BOOLEAN +140 ), +141 exp.Round: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.DOUBLE), +142 exp.SafeDivide: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.DOUBLE), +143 exp.Substring: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.VARCHAR), +144 exp.StrPosition: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.INT), +145 exp.StrToDate: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.DATE), +146 exp.StrToTime: lambda self, expr: self._annotate_with_type( +147 expr, exp.DataType.Type.TIMESTAMP +148 ), +149 exp.Sqrt: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.DOUBLE), +150 exp.Stddev: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.DOUBLE), +151 exp.StddevPop: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.DOUBLE), +152 exp.StddevSamp: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.DOUBLE), +153 exp.TimeToStr: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.VARCHAR), +154 exp.TimeToTimeStr: lambda self, expr: self._annotate_with_type( +155 expr, exp.DataType.Type.VARCHAR 156 ), -157 exp.TimeStrToTime: lambda self, expr: self._annotate_with_type( -158 expr, exp.DataType.Type.TIMESTAMP +157 exp.TimeStrToDate: lambda self, expr: self._annotate_with_type( +158 expr, exp.DataType.Type.DATE 159 ), -160 exp.Trim: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.VARCHAR), -161 exp.TsOrDsToDateStr: lambda self, expr: self._annotate_with_type( -162 expr, exp.DataType.Type.VARCHAR -163 ), -164 exp.TsOrDsToDate: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.DATE), -165 exp.TsOrDiToDi: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.INT), -166 exp.UnixToStr: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.VARCHAR), -167 exp.UnixToTime: lambda self, expr: self._annotate_with_type( -168 expr, exp.DataType.Type.TIMESTAMP -169 ), -170 exp.UnixToTimeStr: lambda self, expr: self._annotate_with_type( -171 expr, exp.DataType.Type.VARCHAR +160 exp.TimeStrToTime: lambda self, expr: self._annotate_with_type( +161 expr, exp.DataType.Type.TIMESTAMP +162 ), +163 exp.Trim: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.VARCHAR), +164 exp.TsOrDsToDateStr: lambda self, expr: self._annotate_with_type( +165 expr, exp.DataType.Type.VARCHAR +166 ), +167 exp.TsOrDsToDate: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.DATE), +168 exp.TsOrDiToDi: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.INT), +169 exp.UnixToStr: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.VARCHAR), +170 exp.UnixToTime: lambda self, expr: self._annotate_with_type( +171 expr, exp.DataType.Type.TIMESTAMP 172 ), -173 exp.Upper: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.VARCHAR), -174 exp.Variance: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.DOUBLE), -175 exp.VariancePop: lambda self, expr: self._annotate_with_type( -176 expr, exp.DataType.Type.DOUBLE -177 ), -178 exp.Week: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.TINYINT), -179 exp.Year: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.TINYINT), -180 } -181 -182 # Reference: https://spark.apache.org/docs/3.2.0/sql-ref-ansi-compliance.html -183 COERCES_TO = { -184 # CHAR < NCHAR < VARCHAR < NVARCHAR < TEXT -185 exp.DataType.Type.TEXT: set(), -186 exp.DataType.Type.NVARCHAR: {exp.DataType.Type.TEXT}, -187 exp.DataType.Type.VARCHAR: {exp.DataType.Type.NVARCHAR, exp.DataType.Type.TEXT}, -188 exp.DataType.Type.NCHAR: { -189 exp.DataType.Type.VARCHAR, -190 exp.DataType.Type.NVARCHAR, -191 exp.DataType.Type.TEXT, -192 }, -193 exp.DataType.Type.CHAR: { -194 exp.DataType.Type.NCHAR, -195 exp.DataType.Type.VARCHAR, -196 exp.DataType.Type.NVARCHAR, -197 exp.DataType.Type.TEXT, -198 }, -199 # TINYINT < SMALLINT < INT < BIGINT < DECIMAL < FLOAT < DOUBLE -200 exp.DataType.Type.DOUBLE: set(), -201 exp.DataType.Type.FLOAT: {exp.DataType.Type.DOUBLE}, -202 exp.DataType.Type.DECIMAL: {exp.DataType.Type.FLOAT, exp.DataType.Type.DOUBLE}, -203 exp.DataType.Type.BIGINT: { -204 exp.DataType.Type.DECIMAL, -205 exp.DataType.Type.FLOAT, -206 exp.DataType.Type.DOUBLE, -207 }, -208 exp.DataType.Type.INT: { -209 exp.DataType.Type.BIGINT, -210 exp.DataType.Type.DECIMAL, -211 exp.DataType.Type.FLOAT, -212 exp.DataType.Type.DOUBLE, -213 }, -214 exp.DataType.Type.SMALLINT: { -215 exp.DataType.Type.INT, -216 exp.DataType.Type.BIGINT, -217 exp.DataType.Type.DECIMAL, -218 exp.DataType.Type.FLOAT, -219 exp.DataType.Type.DOUBLE, -220 }, -221 exp.DataType.Type.TINYINT: { -222 exp.DataType.Type.SMALLINT, -223 exp.DataType.Type.INT, -224 exp.DataType.Type.BIGINT, -225 exp.DataType.Type.DECIMAL, -226 exp.DataType.Type.FLOAT, -227 exp.DataType.Type.DOUBLE, -228 }, -229 # DATE < DATETIME < TIMESTAMP < TIMESTAMPTZ < TIMESTAMPLTZ -230 exp.DataType.Type.TIMESTAMPLTZ: set(), -231 exp.DataType.Type.TIMESTAMPTZ: {exp.DataType.Type.TIMESTAMPLTZ}, -232 exp.DataType.Type.TIMESTAMP: { -233 exp.DataType.Type.TIMESTAMPTZ, -234 exp.DataType.Type.TIMESTAMPLTZ, -235 }, -236 exp.DataType.Type.DATETIME: { -237 exp.DataType.Type.TIMESTAMP, -238 exp.DataType.Type.TIMESTAMPTZ, -239 exp.DataType.Type.TIMESTAMPLTZ, -240 }, -241 exp.DataType.Type.DATE: { -242 exp.DataType.Type.DATETIME, -243 exp.DataType.Type.TIMESTAMP, -244 exp.DataType.Type.TIMESTAMPTZ, -245 exp.DataType.Type.TIMESTAMPLTZ, -246 }, -247 } -248 -249 TRAVERSABLES = (exp.Select, exp.Union, exp.UDTF, exp.Subquery) -250 -251 def __init__(self, schema=None, annotators=None, coerces_to=None): -252 self.schema = schema -253 self.annotators = annotators or self.ANNOTATORS -254 self.coerces_to = coerces_to or self.COERCES_TO -255 -256 def annotate(self, expression): -257 if isinstance(expression, self.TRAVERSABLES): -258 for scope in traverse_scope(expression): -259 selects = {} -260 for name, source in scope.sources.items(): -261 if not isinstance(source, Scope): -262 continue -263 if isinstance(source.expression, exp.UDTF): -264 values = [] -265 -266 if isinstance(source.expression, exp.Lateral): -267 if isinstance(source.expression.this, exp.Explode): -268 values = [source.expression.this.this] -269 else: -270 values = source.expression.expressions[0].expressions -271 -272 if not values: -273 continue +173 exp.UnixToTimeStr: lambda self, expr: self._annotate_with_type( +174 expr, exp.DataType.Type.VARCHAR +175 ), +176 exp.Upper: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.VARCHAR), +177 exp.Variance: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.DOUBLE), +178 exp.VariancePop: lambda self, expr: self._annotate_with_type( +179 expr, exp.DataType.Type.DOUBLE +180 ), +181 exp.Week: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.TINYINT), +182 exp.Year: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.TINYINT), +183 } +184 +185 # Reference: https://spark.apache.org/docs/3.2.0/sql-ref-ansi-compliance.html +186 COERCES_TO = { +187 # CHAR < NCHAR < VARCHAR < NVARCHAR < TEXT +188 exp.DataType.Type.TEXT: set(), +189 exp.DataType.Type.NVARCHAR: {exp.DataType.Type.TEXT}, +190 exp.DataType.Type.VARCHAR: {exp.DataType.Type.NVARCHAR, exp.DataType.Type.TEXT}, +191 exp.DataType.Type.NCHAR: { +192 exp.DataType.Type.VARCHAR, +193 exp.DataType.Type.NVARCHAR, +194 exp.DataType.Type.TEXT, +195 }, +196 exp.DataType.Type.CHAR: { +197 exp.DataType.Type.NCHAR, +198 exp.DataType.Type.VARCHAR, +199 exp.DataType.Type.NVARCHAR, +200 exp.DataType.Type.TEXT, +201 }, +202 # TINYINT < SMALLINT < INT < BIGINT < DECIMAL < FLOAT < DOUBLE +203 exp.DataType.Type.DOUBLE: set(), +204 exp.DataType.Type.FLOAT: {exp.DataType.Type.DOUBLE}, +205 exp.DataType.Type.DECIMAL: {exp.DataType.Type.FLOAT, exp.DataType.Type.DOUBLE}, +206 exp.DataType.Type.BIGINT: { +207 exp.DataType.Type.DECIMAL, +208 exp.DataType.Type.FLOAT, +209 exp.DataType.Type.DOUBLE, +210 }, +211 exp.DataType.Type.INT: { +212 exp.DataType.Type.BIGINT, +213 exp.DataType.Type.DECIMAL, +214 exp.DataType.Type.FLOAT, +215 exp.DataType.Type.DOUBLE, +216 }, +217 exp.DataType.Type.SMALLINT: { +218 exp.DataType.Type.INT, +219 exp.DataType.Type.BIGINT, +220 exp.DataType.Type.DECIMAL, +221 exp.DataType.Type.FLOAT, +222 exp.DataType.Type.DOUBLE, +223 }, +224 exp.DataType.Type.TINYINT: { +225 exp.DataType.Type.SMALLINT, +226 exp.DataType.Type.INT, +227 exp.DataType.Type.BIGINT, +228 exp.DataType.Type.DECIMAL, +229 exp.DataType.Type.FLOAT, +230 exp.DataType.Type.DOUBLE, +231 }, +232 # DATE < DATETIME < TIMESTAMP < TIMESTAMPTZ < TIMESTAMPLTZ +233 exp.DataType.Type.TIMESTAMPLTZ: set(), +234 exp.DataType.Type.TIMESTAMPTZ: {exp.DataType.Type.TIMESTAMPLTZ}, +235 exp.DataType.Type.TIMESTAMP: { +236 exp.DataType.Type.TIMESTAMPTZ, +237 exp.DataType.Type.TIMESTAMPLTZ, +238 }, +239 exp.DataType.Type.DATETIME: { +240 exp.DataType.Type.TIMESTAMP, +241 exp.DataType.Type.TIMESTAMPTZ, +242 exp.DataType.Type.TIMESTAMPLTZ, +243 }, +244 exp.DataType.Type.DATE: { +245 exp.DataType.Type.DATETIME, +246 exp.DataType.Type.TIMESTAMP, +247 exp.DataType.Type.TIMESTAMPTZ, +248 exp.DataType.Type.TIMESTAMPLTZ, +249 }, +250 } +251 +252 TRAVERSABLES = (exp.Select, exp.Union, exp.UDTF, exp.Subquery) +253 +254 def __init__(self, schema=None, annotators=None, coerces_to=None): +255 self.schema = schema +256 self.annotators = annotators or self.ANNOTATORS +257 self.coerces_to = coerces_to or self.COERCES_TO +258 +259 def annotate(self, expression): +260 if isinstance(expression, self.TRAVERSABLES): +261 for scope in traverse_scope(expression): +262 selects = {} +263 for name, source in scope.sources.items(): +264 if not isinstance(source, Scope): +265 continue +266 if isinstance(source.expression, exp.UDTF): +267 values = [] +268 +269 if isinstance(source.expression, exp.Lateral): +270 if isinstance(source.expression.this, exp.Explode): +271 values = [source.expression.this.this] +272 else: +273 values = source.expression.expressions[0].expressions 274 -275 selects[name] = { -276 alias: column -277 for alias, column in zip( -278 source.expression.alias_column_names, -279 values, -280 ) -281 } -282 else: -283 selects[name] = { -284 select.alias_or_name: select for select in source.expression.selects -285 } -286 # First annotate the current scope's column references -287 for col in scope.columns: -288 if not col.table: -289 continue -290 -291 source = scope.sources.get(col.table) -292 if isinstance(source, exp.Table): -293 col.type = self.schema.get_column_type(source, col) -294 elif source and col.table in selects and col.name in selects[col.table]: -295 col.type = selects[col.table][col.name].type -296 # Then (possibly) annotate the remaining expressions in the scope -297 self._maybe_annotate(scope.expression) -298 return self._maybe_annotate(expression) # This takes care of non-traversable expressions -299 -300 def _maybe_annotate(self, expression): -301 if expression.type: -302 return expression # We've already inferred the expression's type -303 -304 annotator = self.annotators.get(expression.__class__) -305 -306 return ( -307 annotator(self, expression) -308 if annotator -309 else self._annotate_with_type(expression, exp.DataType.Type.UNKNOWN) -310 ) -311 -312 def _annotate_args(self, expression): -313 for _, value in expression.iter_expressions(): -314 self._maybe_annotate(value) -315 -316 return expression -317 -318 def _maybe_coerce(self, type1, type2): -319 # We propagate the NULL / UNKNOWN types upwards if found -320 if isinstance(type1, exp.DataType): -321 type1 = type1.this -322 if isinstance(type2, exp.DataType): -323 type2 = type2.this -324 -325 if exp.DataType.Type.NULL in (type1, type2): -326 return exp.DataType.Type.NULL -327 if exp.DataType.Type.UNKNOWN in (type1, type2): -328 return exp.DataType.Type.UNKNOWN -329 -330 return type2 if type2 in self.coerces_to.get(type1, {}) else type1 -331 -332 def _annotate_binary(self, expression): -333 self._annotate_args(expression) +275 if not values: +276 continue +277 +278 selects[name] = { +279 alias: column +280 for alias, column in zip( +281 source.expression.alias_column_names, +282 values, +283 ) +284 } +285 else: +286 selects[name] = { +287 select.alias_or_name: select for select in source.expression.selects +288 } +289 # First annotate the current scope's column references +290 for col in scope.columns: +291 if not col.table: +292 continue +293 +294 source = scope.sources.get(col.table) +295 if isinstance(source, exp.Table): +296 col.type = self.schema.get_column_type(source, col) +297 elif source and col.table in selects and col.name in selects[col.table]: +298 col.type = selects[col.table][col.name].type +299 # Then (possibly) annotate the remaining expressions in the scope +300 self._maybe_annotate(scope.expression) +301 return self._maybe_annotate(expression) # This takes care of non-traversable expressions +302 +303 def _maybe_annotate(self, expression): +304 if expression.type: +305 return expression # We've already inferred the expression's type +306 +307 annotator = self.annotators.get(expression.__class__) +308 +309 return ( +310 annotator(self, expression) +311 if annotator +312 else self._annotate_with_type(expression, exp.DataType.Type.UNKNOWN) +313 ) +314 +315 def _annotate_args(self, expression): +316 for _, value in expression.iter_expressions(): +317 self._maybe_annotate(value) +318 +319 return expression +320 +321 def _maybe_coerce(self, type1, type2): +322 # We propagate the NULL / UNKNOWN types upwards if found +323 if isinstance(type1, exp.DataType): +324 type1 = type1.this +325 if isinstance(type2, exp.DataType): +326 type2 = type2.this +327 +328 if exp.DataType.Type.NULL in (type1, type2): +329 return exp.DataType.Type.NULL +330 if exp.DataType.Type.UNKNOWN in (type1, type2): +331 return exp.DataType.Type.UNKNOWN +332 +333 return type2 if type2 in self.coerces_to.get(type1, {}) else type1 334 -335 left_type = expression.left.type.this -336 right_type = expression.right.type.this +335 def _annotate_binary(self, expression): +336 self._annotate_args(expression) 337 -338 if isinstance(expression, (exp.And, exp.Or)): -339 if left_type == exp.DataType.Type.NULL and right_type == exp.DataType.Type.NULL: -340 expression.type = exp.DataType.Type.NULL -341 elif exp.DataType.Type.NULL in (left_type, right_type): -342 expression.type = exp.DataType.build( -343 "NULLABLE", expressions=exp.DataType.build("BOOLEAN") -344 ) -345 else: -346 expression.type = exp.DataType.Type.BOOLEAN -347 elif isinstance(expression, (exp.Condition, exp.Predicate)): -348 expression.type = exp.DataType.Type.BOOLEAN -349 else: -350 expression.type = self._maybe_coerce(left_type, right_type) -351 -352 return expression -353 -354 def _annotate_unary(self, expression): -355 self._annotate_args(expression) +338 left_type = expression.left.type.this +339 right_type = expression.right.type.this +340 +341 if isinstance(expression, (exp.And, exp.Or)): +342 if left_type == exp.DataType.Type.NULL and right_type == exp.DataType.Type.NULL: +343 expression.type = exp.DataType.Type.NULL +344 elif exp.DataType.Type.NULL in (left_type, right_type): +345 expression.type = exp.DataType.build( +346 "NULLABLE", expressions=exp.DataType.build("BOOLEAN") +347 ) +348 else: +349 expression.type = exp.DataType.Type.BOOLEAN +350 elif isinstance(expression, (exp.Condition, exp.Predicate)): +351 expression.type = exp.DataType.Type.BOOLEAN +352 else: +353 expression.type = self._maybe_coerce(left_type, right_type) +354 +355 return expression 356 -357 if isinstance(expression, exp.Condition) and not isinstance(expression, exp.Paren): -358 expression.type = exp.DataType.Type.BOOLEAN -359 else: -360 expression.type = expression.this.type -361 -362 return expression -363 -364 def _annotate_literal(self, expression): -365 if expression.is_string: -366 expression.type = exp.DataType.Type.VARCHAR -367 elif expression.is_int: -368 expression.type = exp.DataType.Type.INT -369 else: -370 expression.type = exp.DataType.Type.DOUBLE -371 -372 return expression -373 -374 def _annotate_with_type(self, expression, target_type): -375 expression.type = target_type -376 return self._annotate_args(expression) -377 -378 def _annotate_by_args(self, expression, *args, promote=False): -379 self._annotate_args(expression) -380 expressions = [] -381 for arg in args: -382 arg_expr = expression.args.get(arg) -383 expressions.extend(expr for expr in ensure_list(arg_expr) if expr) -384 -385 last_datatype = None -386 for expr in expressions: -387 last_datatype = self._maybe_coerce(last_datatype or expr.type, expr.type) -388 -389 expression.type = last_datatype or exp.DataType.Type.UNKNOWN -390 -391 if promote: -392 if expression.type.this in exp.DataType.INTEGER_TYPES: -393 expression.type = exp.DataType.Type.BIGINT -394 elif expression.type.this in exp.DataType.FLOAT_TYPES: -395 expression.type = exp.DataType.Type.DOUBLE -396 -397 return expression +357 def _annotate_unary(self, expression): +358 self._annotate_args(expression) +359 +360 if isinstance(expression, exp.Condition) and not isinstance(expression, exp.Paren): +361 expression.type = exp.DataType.Type.BOOLEAN +362 else: +363 expression.type = expression.this.type +364 +365 return expression +366 +367 def _annotate_literal(self, expression): +368 if expression.is_string: +369 expression.type = exp.DataType.Type.VARCHAR +370 elif expression.is_int: +371 expression.type = exp.DataType.Type.INT +372 else: +373 expression.type = exp.DataType.Type.DOUBLE +374 +375 return expression +376 +377 def _annotate_with_type(self, expression, target_type): +378 expression.type = target_type +379 return self._annotate_args(expression) +380 +381 def _annotate_by_args(self, expression, *args, promote=False): +382 self._annotate_args(expression) +383 expressions = [] +384 for arg in args: +385 arg_expr = expression.args.get(arg) +386 expressions.extend(expr for expr in ensure_list(arg_expr) if expr) +387 +388 last_datatype = None +389 for expr in expressions: +390 last_datatype = self._maybe_coerce(last_datatype or expr.type, expr.type) +391 +392 expression.type = last_datatype or exp.DataType.Type.UNKNOWN +393 +394 if promote: +395 if expression.type.this in exp.DataType.INTEGER_TYPES: +396 expression.type = exp.DataType.Type.BIGINT +397 elif expression.type.this in exp.DataType.FLOAT_TYPES: +398 expression.type = exp.DataType.Type.DOUBLE +399 +400 return expression
    @@ -639,285 +642,288 @@ Assumes that we've already executed the optimizer's qualify_columns step.

    117 exp.ArrayConcat: lambda self, expr: self._annotate_with_type( 118 expr, exp.DataType.Type.VARCHAR 119 ), -120 exp.Initcap: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.VARCHAR), -121 exp.Interval: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.INTERVAL), -122 exp.Least: lambda self, expr: self._annotate_by_args(expr, "expressions"), -123 exp.Length: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.BIGINT), -124 exp.Levenshtein: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.INT), -125 exp.Ln: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.DOUBLE), -126 exp.Log: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.DOUBLE), -127 exp.Log2: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.DOUBLE), -128 exp.Log10: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.DOUBLE), -129 exp.Lower: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.VARCHAR), -130 exp.Month: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.TINYINT), -131 exp.Pow: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.DOUBLE), -132 exp.Quantile: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.DOUBLE), -133 exp.ApproxQuantile: lambda self, expr: self._annotate_with_type( -134 expr, exp.DataType.Type.DOUBLE -135 ), -136 exp.RegexpLike: lambda self, expr: self._annotate_with_type( -137 expr, exp.DataType.Type.BOOLEAN +120 exp.ArraySize: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.BIGINT), +121 exp.Map: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.MAP), +122 exp.VarMap: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.MAP), +123 exp.Initcap: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.VARCHAR), +124 exp.Interval: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.INTERVAL), +125 exp.Least: lambda self, expr: self._annotate_by_args(expr, "expressions"), +126 exp.Length: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.BIGINT), +127 exp.Levenshtein: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.INT), +128 exp.Ln: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.DOUBLE), +129 exp.Log: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.DOUBLE), +130 exp.Log2: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.DOUBLE), +131 exp.Log10: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.DOUBLE), +132 exp.Lower: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.VARCHAR), +133 exp.Month: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.TINYINT), +134 exp.Pow: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.DOUBLE), +135 exp.Quantile: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.DOUBLE), +136 exp.ApproxQuantile: lambda self, expr: self._annotate_with_type( +137 expr, exp.DataType.Type.DOUBLE 138 ), -139 exp.Round: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.DOUBLE), -140 exp.SafeDivide: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.DOUBLE), -141 exp.Substring: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.VARCHAR), -142 exp.StrPosition: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.INT), -143 exp.StrToDate: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.DATE), -144 exp.StrToTime: lambda self, expr: self._annotate_with_type( -145 expr, exp.DataType.Type.TIMESTAMP -146 ), -147 exp.Sqrt: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.DOUBLE), -148 exp.Stddev: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.DOUBLE), -149 exp.StddevPop: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.DOUBLE), -150 exp.StddevSamp: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.DOUBLE), -151 exp.TimeToStr: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.VARCHAR), -152 exp.TimeToTimeStr: lambda self, expr: self._annotate_with_type( -153 expr, exp.DataType.Type.VARCHAR -154 ), -155 exp.TimeStrToDate: lambda self, expr: self._annotate_with_type( -156 expr, exp.DataType.Type.DATE +139 exp.RegexpLike: lambda self, expr: self._annotate_with_type( +140 expr, exp.DataType.Type.BOOLEAN +141 ), +142 exp.Round: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.DOUBLE), +143 exp.SafeDivide: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.DOUBLE), +144 exp.Substring: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.VARCHAR), +145 exp.StrPosition: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.INT), +146 exp.StrToDate: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.DATE), +147 exp.StrToTime: lambda self, expr: self._annotate_with_type( +148 expr, exp.DataType.Type.TIMESTAMP +149 ), +150 exp.Sqrt: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.DOUBLE), +151 exp.Stddev: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.DOUBLE), +152 exp.StddevPop: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.DOUBLE), +153 exp.StddevSamp: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.DOUBLE), +154 exp.TimeToStr: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.VARCHAR), +155 exp.TimeToTimeStr: lambda self, expr: self._annotate_with_type( +156 expr, exp.DataType.Type.VARCHAR 157 ), -158 exp.TimeStrToTime: lambda self, expr: self._annotate_with_type( -159 expr, exp.DataType.Type.TIMESTAMP +158 exp.TimeStrToDate: lambda self, expr: self._annotate_with_type( +159 expr, exp.DataType.Type.DATE 160 ), -161 exp.Trim: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.VARCHAR), -162 exp.TsOrDsToDateStr: lambda self, expr: self._annotate_with_type( -163 expr, exp.DataType.Type.VARCHAR -164 ), -165 exp.TsOrDsToDate: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.DATE), -166 exp.TsOrDiToDi: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.INT), -167 exp.UnixToStr: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.VARCHAR), -168 exp.UnixToTime: lambda self, expr: self._annotate_with_type( -169 expr, exp.DataType.Type.TIMESTAMP -170 ), -171 exp.UnixToTimeStr: lambda self, expr: self._annotate_with_type( -172 expr, exp.DataType.Type.VARCHAR +161 exp.TimeStrToTime: lambda self, expr: self._annotate_with_type( +162 expr, exp.DataType.Type.TIMESTAMP +163 ), +164 exp.Trim: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.VARCHAR), +165 exp.TsOrDsToDateStr: lambda self, expr: self._annotate_with_type( +166 expr, exp.DataType.Type.VARCHAR +167 ), +168 exp.TsOrDsToDate: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.DATE), +169 exp.TsOrDiToDi: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.INT), +170 exp.UnixToStr: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.VARCHAR), +171 exp.UnixToTime: lambda self, expr: self._annotate_with_type( +172 expr, exp.DataType.Type.TIMESTAMP 173 ), -174 exp.Upper: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.VARCHAR), -175 exp.Variance: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.DOUBLE), -176 exp.VariancePop: lambda self, expr: self._annotate_with_type( -177 expr, exp.DataType.Type.DOUBLE -178 ), -179 exp.Week: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.TINYINT), -180 exp.Year: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.TINYINT), -181 } -182 -183 # Reference: https://spark.apache.org/docs/3.2.0/sql-ref-ansi-compliance.html -184 COERCES_TO = { -185 # CHAR < NCHAR < VARCHAR < NVARCHAR < TEXT -186 exp.DataType.Type.TEXT: set(), -187 exp.DataType.Type.NVARCHAR: {exp.DataType.Type.TEXT}, -188 exp.DataType.Type.VARCHAR: {exp.DataType.Type.NVARCHAR, exp.DataType.Type.TEXT}, -189 exp.DataType.Type.NCHAR: { -190 exp.DataType.Type.VARCHAR, -191 exp.DataType.Type.NVARCHAR, -192 exp.DataType.Type.TEXT, -193 }, -194 exp.DataType.Type.CHAR: { -195 exp.DataType.Type.NCHAR, -196 exp.DataType.Type.VARCHAR, -197 exp.DataType.Type.NVARCHAR, -198 exp.DataType.Type.TEXT, -199 }, -200 # TINYINT < SMALLINT < INT < BIGINT < DECIMAL < FLOAT < DOUBLE -201 exp.DataType.Type.DOUBLE: set(), -202 exp.DataType.Type.FLOAT: {exp.DataType.Type.DOUBLE}, -203 exp.DataType.Type.DECIMAL: {exp.DataType.Type.FLOAT, exp.DataType.Type.DOUBLE}, -204 exp.DataType.Type.BIGINT: { -205 exp.DataType.Type.DECIMAL, -206 exp.DataType.Type.FLOAT, -207 exp.DataType.Type.DOUBLE, -208 }, -209 exp.DataType.Type.INT: { -210 exp.DataType.Type.BIGINT, -211 exp.DataType.Type.DECIMAL, -212 exp.DataType.Type.FLOAT, -213 exp.DataType.Type.DOUBLE, -214 }, -215 exp.DataType.Type.SMALLINT: { -216 exp.DataType.Type.INT, -217 exp.DataType.Type.BIGINT, -218 exp.DataType.Type.DECIMAL, -219 exp.DataType.Type.FLOAT, -220 exp.DataType.Type.DOUBLE, -221 }, -222 exp.DataType.Type.TINYINT: { -223 exp.DataType.Type.SMALLINT, -224 exp.DataType.Type.INT, -225 exp.DataType.Type.BIGINT, -226 exp.DataType.Type.DECIMAL, -227 exp.DataType.Type.FLOAT, -228 exp.DataType.Type.DOUBLE, -229 }, -230 # DATE < DATETIME < TIMESTAMP < TIMESTAMPTZ < TIMESTAMPLTZ -231 exp.DataType.Type.TIMESTAMPLTZ: set(), -232 exp.DataType.Type.TIMESTAMPTZ: {exp.DataType.Type.TIMESTAMPLTZ}, -233 exp.DataType.Type.TIMESTAMP: { -234 exp.DataType.Type.TIMESTAMPTZ, -235 exp.DataType.Type.TIMESTAMPLTZ, -236 }, -237 exp.DataType.Type.DATETIME: { -238 exp.DataType.Type.TIMESTAMP, -239 exp.DataType.Type.TIMESTAMPTZ, -240 exp.DataType.Type.TIMESTAMPLTZ, -241 }, -242 exp.DataType.Type.DATE: { -243 exp.DataType.Type.DATETIME, -244 exp.DataType.Type.TIMESTAMP, -245 exp.DataType.Type.TIMESTAMPTZ, -246 exp.DataType.Type.TIMESTAMPLTZ, -247 }, -248 } -249 -250 TRAVERSABLES = (exp.Select, exp.Union, exp.UDTF, exp.Subquery) -251 -252 def __init__(self, schema=None, annotators=None, coerces_to=None): -253 self.schema = schema -254 self.annotators = annotators or self.ANNOTATORS -255 self.coerces_to = coerces_to or self.COERCES_TO -256 -257 def annotate(self, expression): -258 if isinstance(expression, self.TRAVERSABLES): -259 for scope in traverse_scope(expression): -260 selects = {} -261 for name, source in scope.sources.items(): -262 if not isinstance(source, Scope): -263 continue -264 if isinstance(source.expression, exp.UDTF): -265 values = [] -266 -267 if isinstance(source.expression, exp.Lateral): -268 if isinstance(source.expression.this, exp.Explode): -269 values = [source.expression.this.this] -270 else: -271 values = source.expression.expressions[0].expressions -272 -273 if not values: -274 continue +174 exp.UnixToTimeStr: lambda self, expr: self._annotate_with_type( +175 expr, exp.DataType.Type.VARCHAR +176 ), +177 exp.Upper: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.VARCHAR), +178 exp.Variance: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.DOUBLE), +179 exp.VariancePop: lambda self, expr: self._annotate_with_type( +180 expr, exp.DataType.Type.DOUBLE +181 ), +182 exp.Week: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.TINYINT), +183 exp.Year: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.TINYINT), +184 } +185 +186 # Reference: https://spark.apache.org/docs/3.2.0/sql-ref-ansi-compliance.html +187 COERCES_TO = { +188 # CHAR < NCHAR < VARCHAR < NVARCHAR < TEXT +189 exp.DataType.Type.TEXT: set(), +190 exp.DataType.Type.NVARCHAR: {exp.DataType.Type.TEXT}, +191 exp.DataType.Type.VARCHAR: {exp.DataType.Type.NVARCHAR, exp.DataType.Type.TEXT}, +192 exp.DataType.Type.NCHAR: { +193 exp.DataType.Type.VARCHAR, +194 exp.DataType.Type.NVARCHAR, +195 exp.DataType.Type.TEXT, +196 }, +197 exp.DataType.Type.CHAR: { +198 exp.DataType.Type.NCHAR, +199 exp.DataType.Type.VARCHAR, +200 exp.DataType.Type.NVARCHAR, +201 exp.DataType.Type.TEXT, +202 }, +203 # TINYINT < SMALLINT < INT < BIGINT < DECIMAL < FLOAT < DOUBLE +204 exp.DataType.Type.DOUBLE: set(), +205 exp.DataType.Type.FLOAT: {exp.DataType.Type.DOUBLE}, +206 exp.DataType.Type.DECIMAL: {exp.DataType.Type.FLOAT, exp.DataType.Type.DOUBLE}, +207 exp.DataType.Type.BIGINT: { +208 exp.DataType.Type.DECIMAL, +209 exp.DataType.Type.FLOAT, +210 exp.DataType.Type.DOUBLE, +211 }, +212 exp.DataType.Type.INT: { +213 exp.DataType.Type.BIGINT, +214 exp.DataType.Type.DECIMAL, +215 exp.DataType.Type.FLOAT, +216 exp.DataType.Type.DOUBLE, +217 }, +218 exp.DataType.Type.SMALLINT: { +219 exp.DataType.Type.INT, +220 exp.DataType.Type.BIGINT, +221 exp.DataType.Type.DECIMAL, +222 exp.DataType.Type.FLOAT, +223 exp.DataType.Type.DOUBLE, +224 }, +225 exp.DataType.Type.TINYINT: { +226 exp.DataType.Type.SMALLINT, +227 exp.DataType.Type.INT, +228 exp.DataType.Type.BIGINT, +229 exp.DataType.Type.DECIMAL, +230 exp.DataType.Type.FLOAT, +231 exp.DataType.Type.DOUBLE, +232 }, +233 # DATE < DATETIME < TIMESTAMP < TIMESTAMPTZ < TIMESTAMPLTZ +234 exp.DataType.Type.TIMESTAMPLTZ: set(), +235 exp.DataType.Type.TIMESTAMPTZ: {exp.DataType.Type.TIMESTAMPLTZ}, +236 exp.DataType.Type.TIMESTAMP: { +237 exp.DataType.Type.TIMESTAMPTZ, +238 exp.DataType.Type.TIMESTAMPLTZ, +239 }, +240 exp.DataType.Type.DATETIME: { +241 exp.DataType.Type.TIMESTAMP, +242 exp.DataType.Type.TIMESTAMPTZ, +243 exp.DataType.Type.TIMESTAMPLTZ, +244 }, +245 exp.DataType.Type.DATE: { +246 exp.DataType.Type.DATETIME, +247 exp.DataType.Type.TIMESTAMP, +248 exp.DataType.Type.TIMESTAMPTZ, +249 exp.DataType.Type.TIMESTAMPLTZ, +250 }, +251 } +252 +253 TRAVERSABLES = (exp.Select, exp.Union, exp.UDTF, exp.Subquery) +254 +255 def __init__(self, schema=None, annotators=None, coerces_to=None): +256 self.schema = schema +257 self.annotators = annotators or self.ANNOTATORS +258 self.coerces_to = coerces_to or self.COERCES_TO +259 +260 def annotate(self, expression): +261 if isinstance(expression, self.TRAVERSABLES): +262 for scope in traverse_scope(expression): +263 selects = {} +264 for name, source in scope.sources.items(): +265 if not isinstance(source, Scope): +266 continue +267 if isinstance(source.expression, exp.UDTF): +268 values = [] +269 +270 if isinstance(source.expression, exp.Lateral): +271 if isinstance(source.expression.this, exp.Explode): +272 values = [source.expression.this.this] +273 else: +274 values = source.expression.expressions[0].expressions 275 -276 selects[name] = { -277 alias: column -278 for alias, column in zip( -279 source.expression.alias_column_names, -280 values, -281 ) -282 } -283 else: -284 selects[name] = { -285 select.alias_or_name: select for select in source.expression.selects -286 } -287 # First annotate the current scope's column references -288 for col in scope.columns: -289 if not col.table: -290 continue -291 -292 source = scope.sources.get(col.table) -293 if isinstance(source, exp.Table): -294 col.type = self.schema.get_column_type(source, col) -295 elif source and col.table in selects and col.name in selects[col.table]: -296 col.type = selects[col.table][col.name].type -297 # Then (possibly) annotate the remaining expressions in the scope -298 self._maybe_annotate(scope.expression) -299 return self._maybe_annotate(expression) # This takes care of non-traversable expressions -300 -301 def _maybe_annotate(self, expression): -302 if expression.type: -303 return expression # We've already inferred the expression's type -304 -305 annotator = self.annotators.get(expression.__class__) -306 -307 return ( -308 annotator(self, expression) -309 if annotator -310 else self._annotate_with_type(expression, exp.DataType.Type.UNKNOWN) -311 ) -312 -313 def _annotate_args(self, expression): -314 for _, value in expression.iter_expressions(): -315 self._maybe_annotate(value) -316 -317 return expression -318 -319 def _maybe_coerce(self, type1, type2): -320 # We propagate the NULL / UNKNOWN types upwards if found -321 if isinstance(type1, exp.DataType): -322 type1 = type1.this -323 if isinstance(type2, exp.DataType): -324 type2 = type2.this -325 -326 if exp.DataType.Type.NULL in (type1, type2): -327 return exp.DataType.Type.NULL -328 if exp.DataType.Type.UNKNOWN in (type1, type2): -329 return exp.DataType.Type.UNKNOWN -330 -331 return type2 if type2 in self.coerces_to.get(type1, {}) else type1 -332 -333 def _annotate_binary(self, expression): -334 self._annotate_args(expression) +276 if not values: +277 continue +278 +279 selects[name] = { +280 alias: column +281 for alias, column in zip( +282 source.expression.alias_column_names, +283 values, +284 ) +285 } +286 else: +287 selects[name] = { +288 select.alias_or_name: select for select in source.expression.selects +289 } +290 # First annotate the current scope's column references +291 for col in scope.columns: +292 if not col.table: +293 continue +294 +295 source = scope.sources.get(col.table) +296 if isinstance(source, exp.Table): +297 col.type = self.schema.get_column_type(source, col) +298 elif source and col.table in selects and col.name in selects[col.table]: +299 col.type = selects[col.table][col.name].type +300 # Then (possibly) annotate the remaining expressions in the scope +301 self._maybe_annotate(scope.expression) +302 return self._maybe_annotate(expression) # This takes care of non-traversable expressions +303 +304 def _maybe_annotate(self, expression): +305 if expression.type: +306 return expression # We've already inferred the expression's type +307 +308 annotator = self.annotators.get(expression.__class__) +309 +310 return ( +311 annotator(self, expression) +312 if annotator +313 else self._annotate_with_type(expression, exp.DataType.Type.UNKNOWN) +314 ) +315 +316 def _annotate_args(self, expression): +317 for _, value in expression.iter_expressions(): +318 self._maybe_annotate(value) +319 +320 return expression +321 +322 def _maybe_coerce(self, type1, type2): +323 # We propagate the NULL / UNKNOWN types upwards if found +324 if isinstance(type1, exp.DataType): +325 type1 = type1.this +326 if isinstance(type2, exp.DataType): +327 type2 = type2.this +328 +329 if exp.DataType.Type.NULL in (type1, type2): +330 return exp.DataType.Type.NULL +331 if exp.DataType.Type.UNKNOWN in (type1, type2): +332 return exp.DataType.Type.UNKNOWN +333 +334 return type2 if type2 in self.coerces_to.get(type1, {}) else type1 335 -336 left_type = expression.left.type.this -337 right_type = expression.right.type.this +336 def _annotate_binary(self, expression): +337 self._annotate_args(expression) 338 -339 if isinstance(expression, (exp.And, exp.Or)): -340 if left_type == exp.DataType.Type.NULL and right_type == exp.DataType.Type.NULL: -341 expression.type = exp.DataType.Type.NULL -342 elif exp.DataType.Type.NULL in (left_type, right_type): -343 expression.type = exp.DataType.build( -344 "NULLABLE", expressions=exp.DataType.build("BOOLEAN") -345 ) -346 else: -347 expression.type = exp.DataType.Type.BOOLEAN -348 elif isinstance(expression, (exp.Condition, exp.Predicate)): -349 expression.type = exp.DataType.Type.BOOLEAN -350 else: -351 expression.type = self._maybe_coerce(left_type, right_type) -352 -353 return expression -354 -355 def _annotate_unary(self, expression): -356 self._annotate_args(expression) +339 left_type = expression.left.type.this +340 right_type = expression.right.type.this +341 +342 if isinstance(expression, (exp.And, exp.Or)): +343 if left_type == exp.DataType.Type.NULL and right_type == exp.DataType.Type.NULL: +344 expression.type = exp.DataType.Type.NULL +345 elif exp.DataType.Type.NULL in (left_type, right_type): +346 expression.type = exp.DataType.build( +347 "NULLABLE", expressions=exp.DataType.build("BOOLEAN") +348 ) +349 else: +350 expression.type = exp.DataType.Type.BOOLEAN +351 elif isinstance(expression, (exp.Condition, exp.Predicate)): +352 expression.type = exp.DataType.Type.BOOLEAN +353 else: +354 expression.type = self._maybe_coerce(left_type, right_type) +355 +356 return expression 357 -358 if isinstance(expression, exp.Condition) and not isinstance(expression, exp.Paren): -359 expression.type = exp.DataType.Type.BOOLEAN -360 else: -361 expression.type = expression.this.type -362 -363 return expression -364 -365 def _annotate_literal(self, expression): -366 if expression.is_string: -367 expression.type = exp.DataType.Type.VARCHAR -368 elif expression.is_int: -369 expression.type = exp.DataType.Type.INT -370 else: -371 expression.type = exp.DataType.Type.DOUBLE -372 -373 return expression -374 -375 def _annotate_with_type(self, expression, target_type): -376 expression.type = target_type -377 return self._annotate_args(expression) -378 -379 def _annotate_by_args(self, expression, *args, promote=False): -380 self._annotate_args(expression) -381 expressions = [] -382 for arg in args: -383 arg_expr = expression.args.get(arg) -384 expressions.extend(expr for expr in ensure_list(arg_expr) if expr) -385 -386 last_datatype = None -387 for expr in expressions: -388 last_datatype = self._maybe_coerce(last_datatype or expr.type, expr.type) -389 -390 expression.type = last_datatype or exp.DataType.Type.UNKNOWN -391 -392 if promote: -393 if expression.type.this in exp.DataType.INTEGER_TYPES: -394 expression.type = exp.DataType.Type.BIGINT -395 elif expression.type.this in exp.DataType.FLOAT_TYPES: -396 expression.type = exp.DataType.Type.DOUBLE -397 -398 return expression +358 def _annotate_unary(self, expression): +359 self._annotate_args(expression) +360 +361 if isinstance(expression, exp.Condition) and not isinstance(expression, exp.Paren): +362 expression.type = exp.DataType.Type.BOOLEAN +363 else: +364 expression.type = expression.this.type +365 +366 return expression +367 +368 def _annotate_literal(self, expression): +369 if expression.is_string: +370 expression.type = exp.DataType.Type.VARCHAR +371 elif expression.is_int: +372 expression.type = exp.DataType.Type.INT +373 else: +374 expression.type = exp.DataType.Type.DOUBLE +375 +376 return expression +377 +378 def _annotate_with_type(self, expression, target_type): +379 expression.type = target_type +380 return self._annotate_args(expression) +381 +382 def _annotate_by_args(self, expression, *args, promote=False): +383 self._annotate_args(expression) +384 expressions = [] +385 for arg in args: +386 arg_expr = expression.args.get(arg) +387 expressions.extend(expr for expr in ensure_list(arg_expr) if expr) +388 +389 last_datatype = None +390 for expr in expressions: +391 last_datatype = self._maybe_coerce(last_datatype or expr.type, expr.type) +392 +393 expression.type = last_datatype or exp.DataType.Type.UNKNOWN +394 +395 if promote: +396 if expression.type.this in exp.DataType.INTEGER_TYPES: +397 expression.type = exp.DataType.Type.BIGINT +398 elif expression.type.this in exp.DataType.FLOAT_TYPES: +399 expression.type = exp.DataType.Type.DOUBLE +400 +401 return expression
    @@ -933,10 +939,10 @@ Assumes that we've already executed the optimizer's qualify_columns step.

    -
    252    def __init__(self, schema=None, annotators=None, coerces_to=None):
    -253        self.schema = schema
    -254        self.annotators = annotators or self.ANNOTATORS
    -255        self.coerces_to = coerces_to or self.COERCES_TO
    +            
    255    def __init__(self, schema=None, annotators=None, coerces_to=None):
    +256        self.schema = schema
    +257        self.annotators = annotators or self.ANNOTATORS
    +258        self.coerces_to = coerces_to or self.COERCES_TO
     
    @@ -954,49 +960,49 @@ Assumes that we've already executed the optimizer's qualify_columns step.

    -
    257    def annotate(self, expression):
    -258        if isinstance(expression, self.TRAVERSABLES):
    -259            for scope in traverse_scope(expression):
    -260                selects = {}
    -261                for name, source in scope.sources.items():
    -262                    if not isinstance(source, Scope):
    -263                        continue
    -264                    if isinstance(source.expression, exp.UDTF):
    -265                        values = []
    -266
    -267                        if isinstance(source.expression, exp.Lateral):
    -268                            if isinstance(source.expression.this, exp.Explode):
    -269                                values = [source.expression.this.this]
    -270                        else:
    -271                            values = source.expression.expressions[0].expressions
    -272
    -273                        if not values:
    -274                            continue
    +            
    260    def annotate(self, expression):
    +261        if isinstance(expression, self.TRAVERSABLES):
    +262            for scope in traverse_scope(expression):
    +263                selects = {}
    +264                for name, source in scope.sources.items():
    +265                    if not isinstance(source, Scope):
    +266                        continue
    +267                    if isinstance(source.expression, exp.UDTF):
    +268                        values = []
    +269
    +270                        if isinstance(source.expression, exp.Lateral):
    +271                            if isinstance(source.expression.this, exp.Explode):
    +272                                values = [source.expression.this.this]
    +273                        else:
    +274                            values = source.expression.expressions[0].expressions
     275
    -276                        selects[name] = {
    -277                            alias: column
    -278                            for alias, column in zip(
    -279                                source.expression.alias_column_names,
    -280                                values,
    -281                            )
    -282                        }
    -283                    else:
    -284                        selects[name] = {
    -285                            select.alias_or_name: select for select in source.expression.selects
    -286                        }
    -287                # First annotate the current scope's column references
    -288                for col in scope.columns:
    -289                    if not col.table:
    -290                        continue
    -291
    -292                    source = scope.sources.get(col.table)
    -293                    if isinstance(source, exp.Table):
    -294                        col.type = self.schema.get_column_type(source, col)
    -295                    elif source and col.table in selects and col.name in selects[col.table]:
    -296                        col.type = selects[col.table][col.name].type
    -297                # Then (possibly) annotate the remaining expressions in the scope
    -298                self._maybe_annotate(scope.expression)
    -299        return self._maybe_annotate(expression)  # This takes care of non-traversable expressions
    +276                        if not values:
    +277                            continue
    +278
    +279                        selects[name] = {
    +280                            alias: column
    +281                            for alias, column in zip(
    +282                                source.expression.alias_column_names,
    +283                                values,
    +284                            )
    +285                        }
    +286                    else:
    +287                        selects[name] = {
    +288                            select.alias_or_name: select for select in source.expression.selects
    +289                        }
    +290                # First annotate the current scope's column references
    +291                for col in scope.columns:
    +292                    if not col.table:
    +293                        continue
    +294
    +295                    source = scope.sources.get(col.table)
    +296                    if isinstance(source, exp.Table):
    +297                        col.type = self.schema.get_column_type(source, col)
    +298                    elif source and col.table in selects and col.name in selects[col.table]:
    +299                        col.type = selects[col.table][col.name].type
    +300                # Then (possibly) annotate the remaining expressions in the scope
    +301                self._maybe_annotate(scope.expression)
    +302        return self._maybe_annotate(expression)  # This takes care of non-traversable expressions
     
    diff --git a/docs/sqlglot/optimizer/canonicalize.html b/docs/sqlglot/optimizer/canonicalize.html index 41cafe5..e075a93 100644 --- a/docs/sqlglot/optimizer/canonicalize.html +++ b/docs/sqlglot/optimizer/canonicalize.html @@ -3,7 +3,7 @@ - + sqlglot.optimizer.canonicalize API documentation diff --git a/docs/sqlglot/optimizer/eliminate_ctes.html b/docs/sqlglot/optimizer/eliminate_ctes.html index af94fae..3b66f78 100644 --- a/docs/sqlglot/optimizer/eliminate_ctes.html +++ b/docs/sqlglot/optimizer/eliminate_ctes.html @@ -3,7 +3,7 @@ - + sqlglot.optimizer.eliminate_ctes API documentation diff --git a/docs/sqlglot/optimizer/eliminate_joins.html b/docs/sqlglot/optimizer/eliminate_joins.html index be1c58f..009b5b5 100644 --- a/docs/sqlglot/optimizer/eliminate_joins.html +++ b/docs/sqlglot/optimizer/eliminate_joins.html @@ -3,7 +3,7 @@ - + sqlglot.optimizer.eliminate_joins API documentation diff --git a/docs/sqlglot/optimizer/eliminate_subqueries.html b/docs/sqlglot/optimizer/eliminate_subqueries.html index be4447c..9bae349 100644 --- a/docs/sqlglot/optimizer/eliminate_subqueries.html +++ b/docs/sqlglot/optimizer/eliminate_subqueries.html @@ -3,7 +3,7 @@ - + sqlglot.optimizer.eliminate_subqueries API documentation diff --git a/docs/sqlglot/optimizer/expand_laterals.html b/docs/sqlglot/optimizer/expand_laterals.html index 6535fb3..c03ce41 100644 --- a/docs/sqlglot/optimizer/expand_laterals.html +++ b/docs/sqlglot/optimizer/expand_laterals.html @@ -3,7 +3,7 @@ - + sqlglot.optimizer.expand_laterals API documentation diff --git a/docs/sqlglot/optimizer/expand_multi_table_selects.html b/docs/sqlglot/optimizer/expand_multi_table_selects.html index e76bbbc..ae09d2e 100644 --- a/docs/sqlglot/optimizer/expand_multi_table_selects.html +++ b/docs/sqlglot/optimizer/expand_multi_table_selects.html @@ -3,7 +3,7 @@ - + sqlglot.optimizer.expand_multi_table_selects API documentation diff --git a/docs/sqlglot/optimizer/isolate_table_selects.html b/docs/sqlglot/optimizer/isolate_table_selects.html index 3233395..ebf7895 100644 --- a/docs/sqlglot/optimizer/isolate_table_selects.html +++ b/docs/sqlglot/optimizer/isolate_table_selects.html @@ -3,7 +3,7 @@ - + sqlglot.optimizer.isolate_table_selects API documentation diff --git a/docs/sqlglot/optimizer/lower_identities.html b/docs/sqlglot/optimizer/lower_identities.html index 0279459..bee886e 100644 --- a/docs/sqlglot/optimizer/lower_identities.html +++ b/docs/sqlglot/optimizer/lower_identities.html @@ -3,7 +3,7 @@ - + sqlglot.optimizer.lower_identities API documentation diff --git a/docs/sqlglot/optimizer/merge_subqueries.html b/docs/sqlglot/optimizer/merge_subqueries.html index 4943588..9a7058d 100644 --- a/docs/sqlglot/optimizer/merge_subqueries.html +++ b/docs/sqlglot/optimizer/merge_subqueries.html @@ -3,7 +3,7 @@ - + sqlglot.optimizer.merge_subqueries API documentation diff --git a/docs/sqlglot/optimizer/normalize.html b/docs/sqlglot/optimizer/normalize.html index 3771520..2bbdd82 100644 --- a/docs/sqlglot/optimizer/normalize.html +++ b/docs/sqlglot/optimizer/normalize.html @@ -3,7 +3,7 @@ - + sqlglot.optimizer.normalize API documentation @@ -113,119 +113,121 @@
    46 root = node is expression 47 original = node.copy() 48 try: - 49 node = while_changing(node, lambda e: distributive_law(e, dnf, max_distance, cache)) - 50 except OptimizeError as e: - 51 logger.info(e) - 52 node.replace(original) - 53 if root: - 54 return original - 55 return expression - 56 - 57 if root: - 58 expression = node - 59 - 60 return expression + 49 node = node.replace( + 50 while_changing(node, lambda e: distributive_law(e, dnf, max_distance, cache)) + 51 ) + 52 except OptimizeError as e: + 53 logger.info(e) + 54 node.replace(original) + 55 if root: + 56 return original + 57 return expression + 58 + 59 if root: + 60 expression = node 61 - 62 - 63def normalized(expression, dnf=False): - 64 ancestor, root = (exp.And, exp.Or) if dnf else (exp.Or, exp.And) - 65 - 66 return not any(connector.find_ancestor(ancestor) for connector in expression.find_all(root)) + 62 return expression + 63 + 64 + 65def normalized(expression, dnf=False): + 66 ancestor, root = (exp.And, exp.Or) if dnf else (exp.Or, exp.And) 67 - 68 - 69def normalization_distance(expression, dnf=False): - 70 """ - 71 The difference in the number of predicates between the current expression and the normalized form. - 72 - 73 This is used as an estimate of the cost of the conversion which is exponential in complexity. + 68 return not any(connector.find_ancestor(ancestor) for connector in expression.find_all(root)) + 69 + 70 + 71def normalization_distance(expression, dnf=False): + 72 """ + 73 The difference in the number of predicates between the current expression and the normalized form. 74 - 75 Example: - 76 >>> import sqlglot - 77 >>> expression = sqlglot.parse_one("(a AND b) OR (c AND d)") - 78 >>> normalization_distance(expression) - 79 4 - 80 - 81 Args: - 82 expression (sqlglot.Expression): expression to compute distance - 83 dnf (bool): compute to dnf distance instead - 84 Returns: - 85 int: difference - 86 """ - 87 return sum(_predicate_lengths(expression, dnf)) - ( - 88 sum(1 for _ in expression.find_all(exp.Connector)) + 1 - 89 ) - 90 - 91 - 92def _predicate_lengths(expression, dnf): - 93 """ - 94 Returns a list of predicate lengths when expanded to normalized form. - 95 - 96 (A AND B) OR C -> [2, 2] because len(A OR C), len(B OR C). - 97 """ - 98 expression = expression.unnest() - 99 -100 if not isinstance(expression, exp.Connector): -101 return (1,) -102 -103 left, right = expression.args.values() + 75 This is used as an estimate of the cost of the conversion which is exponential in complexity. + 76 + 77 Example: + 78 >>> import sqlglot + 79 >>> expression = sqlglot.parse_one("(a AND b) OR (c AND d)") + 80 >>> normalization_distance(expression) + 81 4 + 82 + 83 Args: + 84 expression (sqlglot.Expression): expression to compute distance + 85 dnf (bool): compute to dnf distance instead + 86 Returns: + 87 int: difference + 88 """ + 89 return sum(_predicate_lengths(expression, dnf)) - ( + 90 sum(1 for _ in expression.find_all(exp.Connector)) + 1 + 91 ) + 92 + 93 + 94def _predicate_lengths(expression, dnf): + 95 """ + 96 Returns a list of predicate lengths when expanded to normalized form. + 97 + 98 (A AND B) OR C -> [2, 2] because len(A OR C), len(B OR C). + 99 """ +100 expression = expression.unnest() +101 +102 if not isinstance(expression, exp.Connector): +103 return (1,) 104 -105 if isinstance(expression, exp.And if dnf else exp.Or): -106 return tuple( -107 a + b for a in _predicate_lengths(left, dnf) for b in _predicate_lengths(right, dnf) -108 ) -109 return _predicate_lengths(left, dnf) + _predicate_lengths(right, dnf) -110 -111 -112def distributive_law(expression, dnf, max_distance, cache=None): -113 """ -114 x OR (y AND z) -> (x OR y) AND (x OR z) -115 (x AND y) OR (y AND z) -> (x OR y) AND (x OR z) AND (y OR y) AND (y OR z) -116 """ -117 if normalized(expression, dnf=dnf): -118 return expression -119 -120 distance = normalization_distance(expression, dnf=dnf) +105 left, right = expression.args.values() +106 +107 if isinstance(expression, exp.And if dnf else exp.Or): +108 return tuple( +109 a + b for a in _predicate_lengths(left, dnf) for b in _predicate_lengths(right, dnf) +110 ) +111 return _predicate_lengths(left, dnf) + _predicate_lengths(right, dnf) +112 +113 +114def distributive_law(expression, dnf, max_distance, cache=None): +115 """ +116 x OR (y AND z) -> (x OR y) AND (x OR z) +117 (x AND y) OR (y AND z) -> (x OR y) AND (x OR z) AND (y OR y) AND (y OR z) +118 """ +119 if normalized(expression, dnf=dnf): +120 return expression 121 -122 if distance > max_distance: -123 raise OptimizeError(f"Normalization distance {distance} exceeds max {max_distance}") -124 -125 exp.replace_children(expression, lambda e: distributive_law(e, dnf, max_distance, cache)) -126 to_exp, from_exp = (exp.Or, exp.And) if dnf else (exp.And, exp.Or) -127 -128 if isinstance(expression, from_exp): -129 a, b = expression.unnest_operands() -130 -131 from_func = exp.and_ if from_exp == exp.And else exp.or_ -132 to_func = exp.and_ if to_exp == exp.And else exp.or_ -133 -134 if isinstance(a, to_exp) and isinstance(b, to_exp): -135 if len(tuple(a.find_all(exp.Connector))) > len(tuple(b.find_all(exp.Connector))): -136 return _distribute(a, b, from_func, to_func, cache) -137 return _distribute(b, a, from_func, to_func, cache) -138 if isinstance(a, to_exp): +122 distance = normalization_distance(expression, dnf=dnf) +123 +124 if distance > max_distance: +125 raise OptimizeError(f"Normalization distance {distance} exceeds max {max_distance}") +126 +127 exp.replace_children(expression, lambda e: distributive_law(e, dnf, max_distance, cache)) +128 to_exp, from_exp = (exp.Or, exp.And) if dnf else (exp.And, exp.Or) +129 +130 if isinstance(expression, from_exp): +131 a, b = expression.unnest_operands() +132 +133 from_func = exp.and_ if from_exp == exp.And else exp.or_ +134 to_func = exp.and_ if to_exp == exp.And else exp.or_ +135 +136 if isinstance(a, to_exp) and isinstance(b, to_exp): +137 if len(tuple(a.find_all(exp.Connector))) > len(tuple(b.find_all(exp.Connector))): +138 return _distribute(a, b, from_func, to_func, cache) 139 return _distribute(b, a, from_func, to_func, cache) -140 if isinstance(b, to_exp): -141 return _distribute(a, b, from_func, to_func, cache) -142 -143 return expression +140 if isinstance(a, to_exp): +141 return _distribute(b, a, from_func, to_func, cache) +142 if isinstance(b, to_exp): +143 return _distribute(a, b, from_func, to_func, cache) 144 -145 -146def _distribute(a, b, from_func, to_func, cache): -147 if isinstance(a, exp.Connector): -148 exp.replace_children( -149 a, -150 lambda c: to_func( -151 uniq_sort(flatten(from_func(c, b.left)), cache), -152 uniq_sort(flatten(from_func(c, b.right)), cache), -153 ), -154 ) -155 else: -156 a = to_func( -157 uniq_sort(flatten(from_func(a, b.left)), cache), -158 uniq_sort(flatten(from_func(a, b.right)), cache), -159 ) -160 -161 return a +145 return expression +146 +147 +148def _distribute(a, b, from_func, to_func, cache): +149 if isinstance(a, exp.Connector): +150 exp.replace_children( +151 a, +152 lambda c: to_func( +153 uniq_sort(flatten(from_func(c, b.left)), cache), +154 uniq_sort(flatten(from_func(c, b.right)), cache), +155 ), +156 ) +157 else: +158 a = to_func( +159 uniq_sort(flatten(from_func(a, b.left)), cache), +160 uniq_sort(flatten(from_func(a, b.right)), cache), +161 ) +162 +163 return a
    @@ -276,18 +278,20 @@ 47 root = node is expression 48 original = node.copy() 49 try: -50 node = while_changing(node, lambda e: distributive_law(e, dnf, max_distance, cache)) -51 except OptimizeError as e: -52 logger.info(e) -53 node.replace(original) -54 if root: -55 return original -56 return expression -57 -58 if root: -59 expression = node -60 -61 return expression +50 node = node.replace( +51 while_changing(node, lambda e: distributive_law(e, dnf, max_distance, cache)) +52 ) +53 except OptimizeError as e: +54 logger.info(e) +55 node.replace(original) +56 if root: +57 return original +58 return expression +59 +60 if root: +61 expression = node +62 +63 return expression @@ -333,10 +337,10 @@ -
    64def normalized(expression, dnf=False):
    -65    ancestor, root = (exp.And, exp.Or) if dnf else (exp.Or, exp.And)
    -66
    -67    return not any(connector.find_ancestor(ancestor) for connector in expression.find_all(root))
    +            
    66def normalized(expression, dnf=False):
    +67    ancestor, root = (exp.And, exp.Or) if dnf else (exp.Or, exp.And)
    +68
    +69    return not any(connector.find_ancestor(ancestor) for connector in expression.find_all(root))
     
    @@ -354,27 +358,27 @@
    -
    70def normalization_distance(expression, dnf=False):
    -71    """
    -72    The difference in the number of predicates between the current expression and the normalized form.
    -73
    -74    This is used as an estimate of the cost of the conversion which is exponential in complexity.
    +            
    72def normalization_distance(expression, dnf=False):
    +73    """
    +74    The difference in the number of predicates between the current expression and the normalized form.
     75
    -76    Example:
    -77        >>> import sqlglot
    -78        >>> expression = sqlglot.parse_one("(a AND b) OR (c AND d)")
    -79        >>> normalization_distance(expression)
    -80        4
    -81
    -82    Args:
    -83        expression (sqlglot.Expression): expression to compute distance
    -84        dnf (bool): compute to dnf distance instead
    -85    Returns:
    -86        int: difference
    -87    """
    -88    return sum(_predicate_lengths(expression, dnf)) - (
    -89        sum(1 for _ in expression.find_all(exp.Connector)) + 1
    -90    )
    +76    This is used as an estimate of the cost of the conversion which is exponential in complexity.
    +77
    +78    Example:
    +79        >>> import sqlglot
    +80        >>> expression = sqlglot.parse_one("(a AND b) OR (c AND d)")
    +81        >>> normalization_distance(expression)
    +82        4
    +83
    +84    Args:
    +85        expression (sqlglot.Expression): expression to compute distance
    +86        dnf (bool): compute to dnf distance instead
    +87    Returns:
    +88        int: difference
    +89    """
    +90    return sum(_predicate_lengths(expression, dnf)) - (
    +91        sum(1 for _ in expression.find_all(exp.Connector)) + 1
    +92    )
     
    @@ -421,38 +425,38 @@
    -
    113def distributive_law(expression, dnf, max_distance, cache=None):
    -114    """
    -115    x OR (y AND z) -> (x OR y) AND (x OR z)
    -116    (x AND y) OR (y AND z) -> (x OR y) AND (x OR z) AND (y OR y) AND (y OR z)
    -117    """
    -118    if normalized(expression, dnf=dnf):
    -119        return expression
    -120
    -121    distance = normalization_distance(expression, dnf=dnf)
    +            
    115def distributive_law(expression, dnf, max_distance, cache=None):
    +116    """
    +117    x OR (y AND z) -> (x OR y) AND (x OR z)
    +118    (x AND y) OR (y AND z) -> (x OR y) AND (x OR z) AND (y OR y) AND (y OR z)
    +119    """
    +120    if normalized(expression, dnf=dnf):
    +121        return expression
     122
    -123    if distance > max_distance:
    -124        raise OptimizeError(f"Normalization distance {distance} exceeds max {max_distance}")
    -125
    -126    exp.replace_children(expression, lambda e: distributive_law(e, dnf, max_distance, cache))
    -127    to_exp, from_exp = (exp.Or, exp.And) if dnf else (exp.And, exp.Or)
    -128
    -129    if isinstance(expression, from_exp):
    -130        a, b = expression.unnest_operands()
    -131
    -132        from_func = exp.and_ if from_exp == exp.And else exp.or_
    -133        to_func = exp.and_ if to_exp == exp.And else exp.or_
    -134
    -135        if isinstance(a, to_exp) and isinstance(b, to_exp):
    -136            if len(tuple(a.find_all(exp.Connector))) > len(tuple(b.find_all(exp.Connector))):
    -137                return _distribute(a, b, from_func, to_func, cache)
    -138            return _distribute(b, a, from_func, to_func, cache)
    -139        if isinstance(a, to_exp):
    +123    distance = normalization_distance(expression, dnf=dnf)
    +124
    +125    if distance > max_distance:
    +126        raise OptimizeError(f"Normalization distance {distance} exceeds max {max_distance}")
    +127
    +128    exp.replace_children(expression, lambda e: distributive_law(e, dnf, max_distance, cache))
    +129    to_exp, from_exp = (exp.Or, exp.And) if dnf else (exp.And, exp.Or)
    +130
    +131    if isinstance(expression, from_exp):
    +132        a, b = expression.unnest_operands()
    +133
    +134        from_func = exp.and_ if from_exp == exp.And else exp.or_
    +135        to_func = exp.and_ if to_exp == exp.And else exp.or_
    +136
    +137        if isinstance(a, to_exp) and isinstance(b, to_exp):
    +138            if len(tuple(a.find_all(exp.Connector))) > len(tuple(b.find_all(exp.Connector))):
    +139                return _distribute(a, b, from_func, to_func, cache)
     140            return _distribute(b, a, from_func, to_func, cache)
    -141        if isinstance(b, to_exp):
    -142            return _distribute(a, b, from_func, to_func, cache)
    -143
    -144    return expression
    +141        if isinstance(a, to_exp):
    +142            return _distribute(b, a, from_func, to_func, cache)
    +143        if isinstance(b, to_exp):
    +144            return _distribute(a, b, from_func, to_func, cache)
    +145
    +146    return expression
     
    diff --git a/docs/sqlglot/optimizer/optimize_joins.html b/docs/sqlglot/optimizer/optimize_joins.html index 5df8059..7e0cab7 100644 --- a/docs/sqlglot/optimizer/optimize_joins.html +++ b/docs/sqlglot/optimizer/optimize_joins.html @@ -3,7 +3,7 @@ - + sqlglot.optimizer.optimize_joins API documentation diff --git a/docs/sqlglot/optimizer/optimizer.html b/docs/sqlglot/optimizer/optimizer.html index 4364ab6..030b85b 100644 --- a/docs/sqlglot/optimizer/optimizer.html +++ b/docs/sqlglot/optimizer/optimizer.html @@ -3,7 +3,7 @@ - + sqlglot.optimizer.optimizer API documentation @@ -158,7 +158,7 @@
    def - optimize( expression: str | sqlglot.expressions.Expression, schema: Union[dict, sqlglot.schema.Schema, NoneType] = None, db: Optional[str] = None, catalog: Optional[str] = None, dialect: Union[str, sqlglot.dialects.dialect.Dialect, Type[sqlglot.dialects.dialect.Dialect], NoneType] = None, rules: Sequence[Callable] = (<function lower_identities at 0x7f13113b5bd0>, <function qualify_tables at 0x7f1311384310>, <function isolate_table_selects at 0x7f13113b5ab0>, <function qualify_columns at 0x7f13113b71c0>, <function expand_laterals at 0x7f13113b5870>, <function pushdown_projections at 0x7f13113b7c70>, <function validate_qualify_columns at 0x7f13113b7250>, <function normalize at 0x7f13113976d0>, <function unnest_subqueries at 0x7f1311384430>, <function expand_multi_table_selects at 0x7f13113b5a20>, <function pushdown_predicates at 0x7f13113b6d40>, <function optimize_joins at 0x7f13113b6950>, <function eliminate_subqueries at 0x7f13113b5480>, <function merge_subqueries at 0x7f13113b5ea0>, <function eliminate_joins at 0x7f13113975b0>, <function eliminate_ctes at 0x7f1311397490>, <function annotate_types at 0x7f1311343d00>, <function canonicalize at 0x7f1311396ef0>, <function simplify at 0x7f13113977f0>), **kwargs): + optimize( expression: str | sqlglot.expressions.Expression, schema: Union[dict, sqlglot.schema.Schema, NoneType] = None, db: Optional[str] = None, catalog: Optional[str] = None, dialect: Union[str, sqlglot.dialects.dialect.Dialect, Type[sqlglot.dialects.dialect.Dialect], NoneType] = None, rules: Sequence[Callable] = (<function lower_identities at 0x7fac3cd8eef0>, <function qualify_tables at 0x7fac3cdc5630>, <function isolate_table_selects at 0x7fac3cd8edd0>, <function qualify_columns at 0x7fac3cdc4550>, <function expand_laterals at 0x7fac3cd8eb90>, <function pushdown_projections at 0x7fac3cdc5000>, <function validate_qualify_columns at 0x7fac3cdc45e0>, <function normalize at 0x7fac3cd8c9d0>, <function unnest_subqueries at 0x7fac3cdc5750>, <function expand_multi_table_selects at 0x7fac3cd8ed40>, <function pushdown_predicates at 0x7fac3cdc40d0>, <function optimize_joins at 0x7fac3cd8fc70>, <function eliminate_subqueries at 0x7fac3cd8e7a0>, <function merge_subqueries at 0x7fac3cd8f1c0>, <function eliminate_joins at 0x7fac3cd8c8b0>, <function eliminate_ctes at 0x7fac3cd8c790>, <function annotate_types at 0x7fac3cd5cdc0>, <function canonicalize at 0x7fac3cd8c1f0>, <function simplify at 0x7fac3cd8caf0>), **kwargs): diff --git a/docs/sqlglot/optimizer/pushdown_predicates.html b/docs/sqlglot/optimizer/pushdown_predicates.html index 93893bf..4870176 100644 --- a/docs/sqlglot/optimizer/pushdown_predicates.html +++ b/docs/sqlglot/optimizer/pushdown_predicates.html @@ -3,7 +3,7 @@ - + sqlglot.optimizer.pushdown_predicates API documentation diff --git a/docs/sqlglot/optimizer/pushdown_projections.html b/docs/sqlglot/optimizer/pushdown_projections.html index 99bf7f0..922b581 100644 --- a/docs/sqlglot/optimizer/pushdown_projections.html +++ b/docs/sqlglot/optimizer/pushdown_projections.html @@ -3,7 +3,7 @@ - + sqlglot.optimizer.pushdown_projections API documentation diff --git a/docs/sqlglot/optimizer/qualify_columns.html b/docs/sqlglot/optimizer/qualify_columns.html index 328bf86..7b30b8d 100644 --- a/docs/sqlglot/optimizer/qualify_columns.html +++ b/docs/sqlglot/optimizer/qualify_columns.html @@ -3,7 +3,7 @@ - + sqlglot.optimizer.qualify_columns API documentation @@ -172,432 +172,435 @@ 93 if column not in columns: 94 columns[column] = k 95 - 96 ordered.append(join_table) - 97 join_columns = resolver.get_source_columns(join_table) - 98 conditions = [] - 99 -100 for identifier in using: -101 identifier = identifier.name -102 table = columns.get(identifier) -103 -104 if not table or identifier not in join_columns: -105 raise OptimizeError(f"Cannot automatically join: {identifier}") -106 -107 conditions.append( -108 exp.condition( -109 exp.EQ( -110 this=exp.column(identifier, table=table), -111 expression=exp.column(identifier, table=join_table), -112 ) -113 ) -114 ) -115 -116 # Set all values in the dict to None, because we only care about the key ordering -117 tables = column_tables.setdefault(identifier, {}) -118 if table not in tables: -119 tables[table] = None -120 if join_table not in tables: -121 tables[join_table] = None -122 -123 join.args.pop("using") -124 join.set("on", exp.and_(*conditions)) + 96 source_table = ordered[-1] + 97 ordered.append(join_table) + 98 join_columns = resolver.get_source_columns(join_table) + 99 conditions = [] +100 +101 for identifier in using: +102 identifier = identifier.name +103 table = columns.get(identifier) +104 +105 if not table or identifier not in join_columns: +106 if columns and join_columns: +107 raise OptimizeError(f"Cannot automatically join: {identifier}") +108 +109 table = table or source_table +110 conditions.append( +111 exp.condition( +112 exp.EQ( +113 this=exp.column(identifier, table=table), +114 expression=exp.column(identifier, table=join_table), +115 ) +116 ) +117 ) +118 +119 # Set all values in the dict to None, because we only care about the key ordering +120 tables = column_tables.setdefault(identifier, {}) +121 if table not in tables: +122 tables[table] = None +123 if join_table not in tables: +124 tables[join_table] = None 125 -126 if column_tables: -127 for column in scope.columns: -128 if not column.table and column.name in column_tables: -129 tables = column_tables[column.name] -130 coalesce = [exp.column(column.name, table=table) for table in tables] -131 replacement = exp.Coalesce(this=coalesce[0], expressions=coalesce[1:]) -132 -133 # Ensure selects keep their output name -134 if isinstance(column.parent, exp.Select): -135 replacement = exp.alias_(replacement, alias=column.name) -136 -137 scope.replace(column, replacement) -138 -139 return column_tables -140 +126 join.args.pop("using") +127 join.set("on", exp.and_(*conditions)) +128 +129 if column_tables: +130 for column in scope.columns: +131 if not column.table and column.name in column_tables: +132 tables = column_tables[column.name] +133 coalesce = [exp.column(column.name, table=table) for table in tables] +134 replacement = exp.Coalesce(this=coalesce[0], expressions=coalesce[1:]) +135 +136 # Ensure selects keep their output name +137 if isinstance(column.parent, exp.Select): +138 replacement = exp.alias_(replacement, alias=column.name) +139 +140 scope.replace(column, replacement) 141 -142def _expand_alias_refs(scope, resolver): -143 selects = {} +142 return column_tables +143 144 -145 # Replace references to select aliases -146 def transform(node, source_first=True): -147 if isinstance(node, exp.Column) and not node.table: -148 table = resolver.get_table(node.name) -149 -150 # Source columns get priority over select aliases -151 if source_first and table: -152 node.set("table", table) -153 return node -154 -155 if not selects: -156 for s in scope.selects: -157 selects[s.alias_or_name] = s -158 select = selects.get(node.name) -159 -160 if select: -161 scope.clear_cache() -162 if isinstance(select, exp.Alias): -163 select = select.this -164 return select.copy() -165 -166 node.set("table", table) -167 elif isinstance(node, exp.Expression) and not isinstance(node, exp.Subqueryable): -168 exp.replace_children(node, transform, source_first) -169 -170 return node -171 -172 for select in scope.expression.selects: -173 transform(select) +145def _expand_alias_refs(scope, resolver): +146 selects = {} +147 +148 # Replace references to select aliases +149 def transform(node, source_first=True): +150 if isinstance(node, exp.Column) and not node.table: +151 table = resolver.get_table(node.name) +152 +153 # Source columns get priority over select aliases +154 if source_first and table: +155 node.set("table", table) +156 return node +157 +158 if not selects: +159 for s in scope.selects: +160 selects[s.alias_or_name] = s +161 select = selects.get(node.name) +162 +163 if select: +164 scope.clear_cache() +165 if isinstance(select, exp.Alias): +166 select = select.this +167 return select.copy() +168 +169 node.set("table", table) +170 elif isinstance(node, exp.Expression) and not isinstance(node, exp.Subqueryable): +171 exp.replace_children(node, transform, source_first) +172 +173 return node 174 -175 for modifier, source_first in ( -176 ("where", True), -177 ("group", True), -178 ("having", False), -179 ): -180 transform(scope.expression.args.get(modifier), source_first=source_first) -181 -182 -183def _expand_group_by(scope, resolver): -184 group = scope.expression.args.get("group") -185 if not group: -186 return -187 -188 group.set("expressions", _expand_positional_references(scope, group.expressions)) -189 scope.expression.set("group", group) +175 for select in scope.expression.selects: +176 transform(select) +177 +178 for modifier, source_first in ( +179 ("where", True), +180 ("group", True), +181 ("having", False), +182 ): +183 transform(scope.expression.args.get(modifier), source_first=source_first) +184 +185 +186def _expand_group_by(scope, resolver): +187 group = scope.expression.args.get("group") +188 if not group: +189 return 190 -191 -192def _expand_order_by(scope): -193 order = scope.expression.args.get("order") -194 if not order: -195 return -196 -197 ordereds = order.expressions -198 for ordered, new_expression in zip( -199 ordereds, -200 _expand_positional_references(scope, (o.this for o in ordereds)), -201 ): -202 ordered.set("this", new_expression) -203 -204 -205def _expand_positional_references(scope, expressions): -206 new_nodes = [] -207 for node in expressions: -208 if node.is_int: -209 try: -210 select = scope.selects[int(node.name) - 1] -211 except IndexError: -212 raise OptimizeError(f"Unknown output column: {node.name}") -213 if isinstance(select, exp.Alias): -214 select = select.this -215 new_nodes.append(select.copy()) -216 scope.clear_cache() -217 else: -218 new_nodes.append(node) -219 -220 return new_nodes -221 +191 group.set("expressions", _expand_positional_references(scope, group.expressions)) +192 scope.expression.set("group", group) +193 +194 +195def _expand_order_by(scope): +196 order = scope.expression.args.get("order") +197 if not order: +198 return +199 +200 ordereds = order.expressions +201 for ordered, new_expression in zip( +202 ordereds, +203 _expand_positional_references(scope, (o.this for o in ordereds)), +204 ): +205 ordered.set("this", new_expression) +206 +207 +208def _expand_positional_references(scope, expressions): +209 new_nodes = [] +210 for node in expressions: +211 if node.is_int: +212 try: +213 select = scope.selects[int(node.name) - 1] +214 except IndexError: +215 raise OptimizeError(f"Unknown output column: {node.name}") +216 if isinstance(select, exp.Alias): +217 select = select.this +218 new_nodes.append(select.copy()) +219 scope.clear_cache() +220 else: +221 new_nodes.append(node) 222 -223def _qualify_columns(scope, resolver): -224 """Disambiguate columns, ensuring each column specifies a source""" -225 for column in scope.columns: -226 column_table = column.table -227 column_name = column.name -228 -229 if column_table and column_table in scope.sources: -230 source_columns = resolver.get_source_columns(column_table) -231 if source_columns and column_name not in source_columns and "*" not in source_columns: -232 raise OptimizeError(f"Unknown column: {column_name}") -233 -234 if not column_table: -235 column_table = resolver.get_table(column_name) +223 return new_nodes +224 +225 +226def _qualify_columns(scope, resolver): +227 """Disambiguate columns, ensuring each column specifies a source""" +228 for column in scope.columns: +229 column_table = column.table +230 column_name = column.name +231 +232 if column_table and column_table in scope.sources: +233 source_columns = resolver.get_source_columns(column_table) +234 if source_columns and column_name not in source_columns and "*" not in source_columns: +235 raise OptimizeError(f"Unknown column: {column_name}") 236 -237 # column_table can be a '' because bigquery unnest has no table alias -238 if column_table: -239 column.set("table", column_table) -240 elif column_table not in scope.sources: -241 # structs are used like tables (e.g. "struct"."field"), so they need to be qualified -242 # separately and represented as dot(dot(...(<table>.<column>, field1), field2, ...)) -243 -244 root, *parts = column.parts -245 -246 if root.name in scope.sources: -247 # struct is already qualified, but we still need to change the AST representation -248 column_table = root -249 root, *parts = parts -250 else: -251 column_table = resolver.get_table(root.name) -252 -253 if column_table: -254 column.replace(exp.Dot.build([exp.column(root, table=column_table), *parts])) +237 if not column_table: +238 column_table = resolver.get_table(column_name) +239 +240 # column_table can be a '' because bigquery unnest has no table alias +241 if column_table: +242 column.set("table", column_table) +243 elif column_table not in scope.sources: +244 # structs are used like tables (e.g. "struct"."field"), so they need to be qualified +245 # separately and represented as dot(dot(...(<table>.<column>, field1), field2, ...)) +246 +247 root, *parts = column.parts +248 +249 if root.name in scope.sources: +250 # struct is already qualified, but we still need to change the AST representation +251 column_table = root +252 root, *parts = parts +253 else: +254 column_table = resolver.get_table(root.name) 255 -256 columns_missing_from_scope = [] -257 -258 # Determine whether each reference in the order by clause is to a column or an alias. -259 order = scope.expression.args.get("order") +256 if column_table: +257 column.replace(exp.Dot.build([exp.column(root, table=column_table), *parts])) +258 +259 columns_missing_from_scope = [] 260 -261 if order: -262 for ordered in order.expressions: -263 for column in ordered.find_all(exp.Column): -264 if ( -265 not column.table -266 and column.parent is not ordered -267 and column.name in resolver.all_columns -268 ): -269 columns_missing_from_scope.append(column) -270 -271 # Determine whether each reference in the having clause is to a column or an alias. -272 having = scope.expression.args.get("having") +261 # Determine whether each reference in the order by clause is to a column or an alias. +262 order = scope.expression.args.get("order") +263 +264 if order: +265 for ordered in order.expressions: +266 for column in ordered.find_all(exp.Column): +267 if ( +268 not column.table +269 and column.parent is not ordered +270 and column.name in resolver.all_columns +271 ): +272 columns_missing_from_scope.append(column) 273 -274 if having: -275 for column in having.find_all(exp.Column): -276 if ( -277 not column.table -278 and column.find_ancestor(exp.AggFunc) -279 and column.name in resolver.all_columns -280 ): -281 columns_missing_from_scope.append(column) -282 -283 for column in columns_missing_from_scope: -284 column_table = resolver.get_table(column.name) +274 # Determine whether each reference in the having clause is to a column or an alias. +275 having = scope.expression.args.get("having") +276 +277 if having: +278 for column in having.find_all(exp.Column): +279 if ( +280 not column.table +281 and column.find_ancestor(exp.AggFunc) +282 and column.name in resolver.all_columns +283 ): +284 columns_missing_from_scope.append(column) 285 -286 if column_table: -287 column.set("table", column_table) +286 for column in columns_missing_from_scope: +287 column_table = resolver.get_table(column.name) 288 -289 -290def _expand_stars(scope, resolver, using_column_tables): -291 """Expand stars to lists of column selections""" +289 if column_table: +290 column.set("table", column_table) +291 292 -293 new_selections = [] -294 except_columns = {} -295 replace_columns = {} -296 coalesced_columns = set() -297 -298 for expression in scope.selects: -299 if isinstance(expression, exp.Star): -300 tables = list(scope.selected_sources) -301 _add_except_columns(expression, tables, except_columns) -302 _add_replace_columns(expression, tables, replace_columns) -303 elif expression.is_star: -304 tables = [expression.table] -305 _add_except_columns(expression.this, tables, except_columns) -306 _add_replace_columns(expression.this, tables, replace_columns) -307 else: -308 new_selections.append(expression) -309 continue -310 -311 for table in tables: -312 if table not in scope.sources: -313 raise OptimizeError(f"Unknown table: {table}") -314 columns = resolver.get_source_columns(table, only_visible=True) -315 -316 if columns and "*" not in columns: -317 table_id = id(table) -318 for name in columns: -319 if name in using_column_tables and table in using_column_tables[name]: -320 if name in coalesced_columns: -321 continue -322 -323 coalesced_columns.add(name) -324 tables = using_column_tables[name] -325 coalesce = [exp.column(name, table=table) for table in tables] -326 -327 new_selections.append( -328 exp.alias_( -329 exp.Coalesce(this=coalesce[0], expressions=coalesce[1:]), alias=name -330 ) -331 ) -332 elif name not in except_columns.get(table_id, set()): -333 alias_ = replace_columns.get(table_id, {}).get(name, name) -334 column = exp.column(name, table) -335 new_selections.append(alias(column, alias_) if alias_ != name else column) -336 else: -337 return -338 scope.expression.set("expressions", new_selections) -339 -340 -341def _add_except_columns(expression, tables, except_columns): -342 except_ = expression.args.get("except") +293def _expand_stars(scope, resolver, using_column_tables): +294 """Expand stars to lists of column selections""" +295 +296 new_selections = [] +297 except_columns = {} +298 replace_columns = {} +299 coalesced_columns = set() +300 +301 for expression in scope.selects: +302 if isinstance(expression, exp.Star): +303 tables = list(scope.selected_sources) +304 _add_except_columns(expression, tables, except_columns) +305 _add_replace_columns(expression, tables, replace_columns) +306 elif expression.is_star: +307 tables = [expression.table] +308 _add_except_columns(expression.this, tables, except_columns) +309 _add_replace_columns(expression.this, tables, replace_columns) +310 else: +311 new_selections.append(expression) +312 continue +313 +314 for table in tables: +315 if table not in scope.sources: +316 raise OptimizeError(f"Unknown table: {table}") +317 columns = resolver.get_source_columns(table, only_visible=True) +318 +319 if columns and "*" not in columns: +320 table_id = id(table) +321 for name in columns: +322 if name in using_column_tables and table in using_column_tables[name]: +323 if name in coalesced_columns: +324 continue +325 +326 coalesced_columns.add(name) +327 tables = using_column_tables[name] +328 coalesce = [exp.column(name, table=table) for table in tables] +329 +330 new_selections.append( +331 exp.alias_( +332 exp.Coalesce(this=coalesce[0], expressions=coalesce[1:]), alias=name +333 ) +334 ) +335 elif name not in except_columns.get(table_id, set()): +336 alias_ = replace_columns.get(table_id, {}).get(name, name) +337 column = exp.column(name, table) +338 new_selections.append(alias(column, alias_) if alias_ != name else column) +339 else: +340 return +341 scope.expression.set("expressions", new_selections) +342 343 -344 if not except_: -345 return +344def _add_except_columns(expression, tables, except_columns): +345 except_ = expression.args.get("except") 346 -347 columns = {e.name for e in except_} -348 -349 for table in tables: -350 except_columns[id(table)] = columns +347 if not except_: +348 return +349 +350 columns = {e.name for e in except_} 351 -352 -353def _add_replace_columns(expression, tables, replace_columns): -354 replace = expression.args.get("replace") +352 for table in tables: +353 except_columns[id(table)] = columns +354 355 -356 if not replace: -357 return +356def _add_replace_columns(expression, tables, replace_columns): +357 replace = expression.args.get("replace") 358 -359 columns = {e.this.name: e.alias for e in replace} -360 -361 for table in tables: -362 replace_columns[id(table)] = columns +359 if not replace: +360 return +361 +362 columns = {e.this.name: e.alias for e in replace} 363 -364 -365def _qualify_outputs(scope): -366 """Ensure all output columns are aliased""" -367 new_selections = [] -368 -369 for i, (selection, aliased_column) in enumerate( -370 itertools.zip_longest(scope.selects, scope.outer_column_list) -371 ): -372 if isinstance(selection, exp.Subquery): -373 if not selection.output_name: -374 selection.set("alias", exp.TableAlias(this=exp.to_identifier(f"_col_{i}"))) -375 elif not isinstance(selection, exp.Alias) and not selection.is_star: -376 alias_ = alias(exp.column(""), alias=selection.output_name or f"_col_{i}") -377 alias_.set("this", selection) -378 selection = alias_ -379 -380 if aliased_column: -381 selection.set("alias", exp.to_identifier(aliased_column)) +364 for table in tables: +365 replace_columns[id(table)] = columns +366 +367 +368def _qualify_outputs(scope): +369 """Ensure all output columns are aliased""" +370 new_selections = [] +371 +372 for i, (selection, aliased_column) in enumerate( +373 itertools.zip_longest(scope.selects, scope.outer_column_list) +374 ): +375 if isinstance(selection, exp.Subquery): +376 if not selection.output_name: +377 selection.set("alias", exp.TableAlias(this=exp.to_identifier(f"_col_{i}"))) +378 elif not isinstance(selection, exp.Alias) and not selection.is_star: +379 alias_ = alias(exp.column(""), alias=selection.output_name or f"_col_{i}") +380 alias_.set("this", selection) +381 selection = alias_ 382 -383 new_selections.append(selection) -384 -385 scope.expression.set("expressions", new_selections) -386 +383 if aliased_column: +384 selection.set("alias", exp.to_identifier(aliased_column)) +385 +386 new_selections.append(selection) 387 -388class Resolver: -389 """ -390 Helper for resolving columns. -391 -392 This is a class so we can lazily load some things and easily share them across functions. -393 """ +388 scope.expression.set("expressions", new_selections) +389 +390 +391class Resolver: +392 """ +393 Helper for resolving columns. 394 -395 def __init__(self, scope, schema): -396 self.scope = scope -397 self.schema = schema -398 self._source_columns = None -399 self._unambiguous_columns = None -400 self._all_columns = None -401 -402 def get_table(self, column_name: str) -> t.Optional[exp.Identifier]: -403 """ -404 Get the table for a column name. -405 -406 Args: -407 column_name: The column name to find the table for. -408 Returns: -409 The table name if it can be found/inferred. -410 """ -411 if self._unambiguous_columns is None: -412 self._unambiguous_columns = self._get_unambiguous_columns( -413 self._get_all_source_columns() -414 ) -415 -416 table_name = self._unambiguous_columns.get(column_name) -417 -418 if not table_name: -419 sources_without_schema = tuple( -420 source -421 for source, columns in self._get_all_source_columns().items() -422 if not columns or "*" in columns -423 ) -424 if len(sources_without_schema) == 1: -425 table_name = sources_without_schema[0] -426 -427 if table_name not in self.scope.selected_sources: -428 return exp.to_identifier(table_name) +395 This is a class so we can lazily load some things and easily share them across functions. +396 """ +397 +398 def __init__(self, scope, schema): +399 self.scope = scope +400 self.schema = schema +401 self._source_columns = None +402 self._unambiguous_columns = None +403 self._all_columns = None +404 +405 def get_table(self, column_name: str) -> t.Optional[exp.Identifier]: +406 """ +407 Get the table for a column name. +408 +409 Args: +410 column_name: The column name to find the table for. +411 Returns: +412 The table name if it can be found/inferred. +413 """ +414 if self._unambiguous_columns is None: +415 self._unambiguous_columns = self._get_unambiguous_columns( +416 self._get_all_source_columns() +417 ) +418 +419 table_name = self._unambiguous_columns.get(column_name) +420 +421 if not table_name: +422 sources_without_schema = tuple( +423 source +424 for source, columns in self._get_all_source_columns().items() +425 if not columns or "*" in columns +426 ) +427 if len(sources_without_schema) == 1: +428 table_name = sources_without_schema[0] 429 -430 node, _ = self.scope.selected_sources.get(table_name) -431 -432 if isinstance(node, exp.Subqueryable): -433 while node and node.alias != table_name: -434 node = node.parent -435 -436 node_alias = node.args.get("alias") -437 if node_alias: -438 return node_alias.this -439 -440 return exp.to_identifier( -441 table_name, quoted=node.this.quoted if isinstance(node, exp.Table) else None -442 ) -443 -444 @property -445 def all_columns(self): -446 """All available columns of all sources in this scope""" -447 if self._all_columns is None: -448 self._all_columns = { -449 column for columns in self._get_all_source_columns().values() for column in columns -450 } -451 return self._all_columns -452 -453 def get_source_columns(self, name, only_visible=False): -454 """Resolve the source columns for a given source `name`""" -455 if name not in self.scope.sources: -456 raise OptimizeError(f"Unknown table: {name}") -457 -458 source = self.scope.sources[name] -459 -460 # If referencing a table, return the columns from the schema -461 if isinstance(source, exp.Table): -462 return self.schema.column_names(source, only_visible) -463 -464 if isinstance(source, Scope) and isinstance(source.expression, exp.Values): -465 return source.expression.alias_column_names +430 if table_name not in self.scope.selected_sources: +431 return exp.to_identifier(table_name) +432 +433 node, _ = self.scope.selected_sources.get(table_name) +434 +435 if isinstance(node, exp.Subqueryable): +436 while node and node.alias != table_name: +437 node = node.parent +438 +439 node_alias = node.args.get("alias") +440 if node_alias: +441 return node_alias.this +442 +443 return exp.to_identifier( +444 table_name, quoted=node.this.quoted if isinstance(node, exp.Table) else None +445 ) +446 +447 @property +448 def all_columns(self): +449 """All available columns of all sources in this scope""" +450 if self._all_columns is None: +451 self._all_columns = { +452 column for columns in self._get_all_source_columns().values() for column in columns +453 } +454 return self._all_columns +455 +456 def get_source_columns(self, name, only_visible=False): +457 """Resolve the source columns for a given source `name`""" +458 if name not in self.scope.sources: +459 raise OptimizeError(f"Unknown table: {name}") +460 +461 source = self.scope.sources[name] +462 +463 # If referencing a table, return the columns from the schema +464 if isinstance(source, exp.Table): +465 return self.schema.column_names(source, only_visible) 466 -467 # Otherwise, if referencing another scope, return that scope's named selects -468 return source.expression.named_selects +467 if isinstance(source, Scope) and isinstance(source.expression, exp.Values): +468 return source.expression.alias_column_names 469 -470 def _get_all_source_columns(self): -471 if self._source_columns is None: -472 self._source_columns = { -473 k: self.get_source_columns(k) -474 for k in itertools.chain(self.scope.selected_sources, self.scope.lateral_sources) -475 } -476 return self._source_columns -477 -478 def _get_unambiguous_columns(self, source_columns): -479 """ -480 Find all the unambiguous columns in sources. -481 -482 Args: -483 source_columns (dict): Mapping of names to source columns -484 Returns: -485 dict: Mapping of column name to source name -486 """ -487 if not source_columns: -488 return {} -489 -490 source_columns = list(source_columns.items()) -491 -492 first_table, first_columns = source_columns[0] -493 unambiguous_columns = {col: first_table for col in self._find_unique_columns(first_columns)} -494 all_columns = set(unambiguous_columns) -495 -496 for table, columns in source_columns[1:]: -497 unique = self._find_unique_columns(columns) -498 ambiguous = set(all_columns).intersection(unique) -499 all_columns.update(columns) -500 for column in ambiguous: -501 unambiguous_columns.pop(column, None) -502 for column in unique.difference(ambiguous): -503 unambiguous_columns[column] = table -504 -505 return unambiguous_columns -506 -507 @staticmethod -508 def _find_unique_columns(columns): -509 """ -510 Find the unique columns in a list of columns. -511 -512 Example: -513 >>> sorted(Resolver._find_unique_columns(["a", "b", "b", "c"])) -514 ['a', 'c'] -515 -516 This is necessary because duplicate column names are ambiguous. -517 """ -518 counts = {} -519 for column in columns: -520 counts[column] = counts.get(column, 0) + 1 -521 return {column for column, count in counts.items() if count == 1} +470 # Otherwise, if referencing another scope, return that scope's named selects +471 return source.expression.named_selects +472 +473 def _get_all_source_columns(self): +474 if self._source_columns is None: +475 self._source_columns = { +476 k: self.get_source_columns(k) +477 for k in itertools.chain(self.scope.selected_sources, self.scope.lateral_sources) +478 } +479 return self._source_columns +480 +481 def _get_unambiguous_columns(self, source_columns): +482 """ +483 Find all the unambiguous columns in sources. +484 +485 Args: +486 source_columns (dict): Mapping of names to source columns +487 Returns: +488 dict: Mapping of column name to source name +489 """ +490 if not source_columns: +491 return {} +492 +493 source_columns = list(source_columns.items()) +494 +495 first_table, first_columns = source_columns[0] +496 unambiguous_columns = {col: first_table for col in self._find_unique_columns(first_columns)} +497 all_columns = set(unambiguous_columns) +498 +499 for table, columns in source_columns[1:]: +500 unique = self._find_unique_columns(columns) +501 ambiguous = set(all_columns).intersection(unique) +502 all_columns.update(columns) +503 for column in ambiguous: +504 unambiguous_columns.pop(column, None) +505 for column in unique.difference(ambiguous): +506 unambiguous_columns[column] = table +507 +508 return unambiguous_columns +509 +510 @staticmethod +511 def _find_unique_columns(columns): +512 """ +513 Find the unique columns in a list of columns. +514 +515 Example: +516 >>> sorted(Resolver._find_unique_columns(["a", "b", "b", "c"])) +517 ['a', 'c'] +518 +519 This is necessary because duplicate column names are ambiguous. +520 """ +521 counts = {} +522 for column in columns: +523 counts[column] = counts.get(column, 0) + 1 +524 return {column for column, count in counts.items() if count == 1}
    @@ -723,140 +726,140 @@ -
    389class Resolver:
    -390    """
    -391    Helper for resolving columns.
    -392
    -393    This is a class so we can lazily load some things and easily share them across functions.
    -394    """
    +            
    392class Resolver:
    +393    """
    +394    Helper for resolving columns.
     395
    -396    def __init__(self, scope, schema):
    -397        self.scope = scope
    -398        self.schema = schema
    -399        self._source_columns = None
    -400        self._unambiguous_columns = None
    -401        self._all_columns = None
    -402
    -403    def get_table(self, column_name: str) -> t.Optional[exp.Identifier]:
    -404        """
    -405        Get the table for a column name.
    -406
    -407        Args:
    -408            column_name: The column name to find the table for.
    -409        Returns:
    -410            The table name if it can be found/inferred.
    -411        """
    -412        if self._unambiguous_columns is None:
    -413            self._unambiguous_columns = self._get_unambiguous_columns(
    -414                self._get_all_source_columns()
    -415            )
    -416
    -417        table_name = self._unambiguous_columns.get(column_name)
    -418
    -419        if not table_name:
    -420            sources_without_schema = tuple(
    -421                source
    -422                for source, columns in self._get_all_source_columns().items()
    -423                if not columns or "*" in columns
    -424            )
    -425            if len(sources_without_schema) == 1:
    -426                table_name = sources_without_schema[0]
    -427
    -428        if table_name not in self.scope.selected_sources:
    -429            return exp.to_identifier(table_name)
    +396    This is a class so we can lazily load some things and easily share them across functions.
    +397    """
    +398
    +399    def __init__(self, scope, schema):
    +400        self.scope = scope
    +401        self.schema = schema
    +402        self._source_columns = None
    +403        self._unambiguous_columns = None
    +404        self._all_columns = None
    +405
    +406    def get_table(self, column_name: str) -> t.Optional[exp.Identifier]:
    +407        """
    +408        Get the table for a column name.
    +409
    +410        Args:
    +411            column_name: The column name to find the table for.
    +412        Returns:
    +413            The table name if it can be found/inferred.
    +414        """
    +415        if self._unambiguous_columns is None:
    +416            self._unambiguous_columns = self._get_unambiguous_columns(
    +417                self._get_all_source_columns()
    +418            )
    +419
    +420        table_name = self._unambiguous_columns.get(column_name)
    +421
    +422        if not table_name:
    +423            sources_without_schema = tuple(
    +424                source
    +425                for source, columns in self._get_all_source_columns().items()
    +426                if not columns or "*" in columns
    +427            )
    +428            if len(sources_without_schema) == 1:
    +429                table_name = sources_without_schema[0]
     430
    -431        node, _ = self.scope.selected_sources.get(table_name)
    -432
    -433        if isinstance(node, exp.Subqueryable):
    -434            while node and node.alias != table_name:
    -435                node = node.parent
    -436
    -437        node_alias = node.args.get("alias")
    -438        if node_alias:
    -439            return node_alias.this
    -440
    -441        return exp.to_identifier(
    -442            table_name, quoted=node.this.quoted if isinstance(node, exp.Table) else None
    -443        )
    -444
    -445    @property
    -446    def all_columns(self):
    -447        """All available columns of all sources in this scope"""
    -448        if self._all_columns is None:
    -449            self._all_columns = {
    -450                column for columns in self._get_all_source_columns().values() for column in columns
    -451            }
    -452        return self._all_columns
    -453
    -454    def get_source_columns(self, name, only_visible=False):
    -455        """Resolve the source columns for a given source `name`"""
    -456        if name not in self.scope.sources:
    -457            raise OptimizeError(f"Unknown table: {name}")
    -458
    -459        source = self.scope.sources[name]
    -460
    -461        # If referencing a table, return the columns from the schema
    -462        if isinstance(source, exp.Table):
    -463            return self.schema.column_names(source, only_visible)
    -464
    -465        if isinstance(source, Scope) and isinstance(source.expression, exp.Values):
    -466            return source.expression.alias_column_names
    +431        if table_name not in self.scope.selected_sources:
    +432            return exp.to_identifier(table_name)
    +433
    +434        node, _ = self.scope.selected_sources.get(table_name)
    +435
    +436        if isinstance(node, exp.Subqueryable):
    +437            while node and node.alias != table_name:
    +438                node = node.parent
    +439
    +440        node_alias = node.args.get("alias")
    +441        if node_alias:
    +442            return node_alias.this
    +443
    +444        return exp.to_identifier(
    +445            table_name, quoted=node.this.quoted if isinstance(node, exp.Table) else None
    +446        )
    +447
    +448    @property
    +449    def all_columns(self):
    +450        """All available columns of all sources in this scope"""
    +451        if self._all_columns is None:
    +452            self._all_columns = {
    +453                column for columns in self._get_all_source_columns().values() for column in columns
    +454            }
    +455        return self._all_columns
    +456
    +457    def get_source_columns(self, name, only_visible=False):
    +458        """Resolve the source columns for a given source `name`"""
    +459        if name not in self.scope.sources:
    +460            raise OptimizeError(f"Unknown table: {name}")
    +461
    +462        source = self.scope.sources[name]
    +463
    +464        # If referencing a table, return the columns from the schema
    +465        if isinstance(source, exp.Table):
    +466            return self.schema.column_names(source, only_visible)
     467
    -468        # Otherwise, if referencing another scope, return that scope's named selects
    -469        return source.expression.named_selects
    +468        if isinstance(source, Scope) and isinstance(source.expression, exp.Values):
    +469            return source.expression.alias_column_names
     470
    -471    def _get_all_source_columns(self):
    -472        if self._source_columns is None:
    -473            self._source_columns = {
    -474                k: self.get_source_columns(k)
    -475                for k in itertools.chain(self.scope.selected_sources, self.scope.lateral_sources)
    -476            }
    -477        return self._source_columns
    -478
    -479    def _get_unambiguous_columns(self, source_columns):
    -480        """
    -481        Find all the unambiguous columns in sources.
    -482
    -483        Args:
    -484            source_columns (dict): Mapping of names to source columns
    -485        Returns:
    -486            dict: Mapping of column name to source name
    -487        """
    -488        if not source_columns:
    -489            return {}
    -490
    -491        source_columns = list(source_columns.items())
    -492
    -493        first_table, first_columns = source_columns[0]
    -494        unambiguous_columns = {col: first_table for col in self._find_unique_columns(first_columns)}
    -495        all_columns = set(unambiguous_columns)
    -496
    -497        for table, columns in source_columns[1:]:
    -498            unique = self._find_unique_columns(columns)
    -499            ambiguous = set(all_columns).intersection(unique)
    -500            all_columns.update(columns)
    -501            for column in ambiguous:
    -502                unambiguous_columns.pop(column, None)
    -503            for column in unique.difference(ambiguous):
    -504                unambiguous_columns[column] = table
    -505
    -506        return unambiguous_columns
    -507
    -508    @staticmethod
    -509    def _find_unique_columns(columns):
    -510        """
    -511        Find the unique columns in a list of columns.
    -512
    -513        Example:
    -514            >>> sorted(Resolver._find_unique_columns(["a", "b", "b", "c"]))
    -515            ['a', 'c']
    -516
    -517        This is necessary because duplicate column names are ambiguous.
    -518        """
    -519        counts = {}
    -520        for column in columns:
    -521            counts[column] = counts.get(column, 0) + 1
    -522        return {column for column, count in counts.items() if count == 1}
    +471        # Otherwise, if referencing another scope, return that scope's named selects
    +472        return source.expression.named_selects
    +473
    +474    def _get_all_source_columns(self):
    +475        if self._source_columns is None:
    +476            self._source_columns = {
    +477                k: self.get_source_columns(k)
    +478                for k in itertools.chain(self.scope.selected_sources, self.scope.lateral_sources)
    +479            }
    +480        return self._source_columns
    +481
    +482    def _get_unambiguous_columns(self, source_columns):
    +483        """
    +484        Find all the unambiguous columns in sources.
    +485
    +486        Args:
    +487            source_columns (dict): Mapping of names to source columns
    +488        Returns:
    +489            dict: Mapping of column name to source name
    +490        """
    +491        if not source_columns:
    +492            return {}
    +493
    +494        source_columns = list(source_columns.items())
    +495
    +496        first_table, first_columns = source_columns[0]
    +497        unambiguous_columns = {col: first_table for col in self._find_unique_columns(first_columns)}
    +498        all_columns = set(unambiguous_columns)
    +499
    +500        for table, columns in source_columns[1:]:
    +501            unique = self._find_unique_columns(columns)
    +502            ambiguous = set(all_columns).intersection(unique)
    +503            all_columns.update(columns)
    +504            for column in ambiguous:
    +505                unambiguous_columns.pop(column, None)
    +506            for column in unique.difference(ambiguous):
    +507                unambiguous_columns[column] = table
    +508
    +509        return unambiguous_columns
    +510
    +511    @staticmethod
    +512    def _find_unique_columns(columns):
    +513        """
    +514        Find the unique columns in a list of columns.
    +515
    +516        Example:
    +517            >>> sorted(Resolver._find_unique_columns(["a", "b", "b", "c"]))
    +518            ['a', 'c']
    +519
    +520        This is necessary because duplicate column names are ambiguous.
    +521        """
    +522        counts = {}
    +523        for column in columns:
    +524            counts[column] = counts.get(column, 0) + 1
    +525        return {column for column, count in counts.items() if count == 1}
     
    @@ -876,12 +879,12 @@
    -
    396    def __init__(self, scope, schema):
    -397        self.scope = scope
    -398        self.schema = schema
    -399        self._source_columns = None
    -400        self._unambiguous_columns = None
    -401        self._all_columns = None
    +            
    399    def __init__(self, scope, schema):
    +400        self.scope = scope
    +401        self.schema = schema
    +402        self._source_columns = None
    +403        self._unambiguous_columns = None
    +404        self._all_columns = None
     
    @@ -899,47 +902,47 @@
    -
    403    def get_table(self, column_name: str) -> t.Optional[exp.Identifier]:
    -404        """
    -405        Get the table for a column name.
    -406
    -407        Args:
    -408            column_name: The column name to find the table for.
    -409        Returns:
    -410            The table name if it can be found/inferred.
    -411        """
    -412        if self._unambiguous_columns is None:
    -413            self._unambiguous_columns = self._get_unambiguous_columns(
    -414                self._get_all_source_columns()
    -415            )
    -416
    -417        table_name = self._unambiguous_columns.get(column_name)
    -418
    -419        if not table_name:
    -420            sources_without_schema = tuple(
    -421                source
    -422                for source, columns in self._get_all_source_columns().items()
    -423                if not columns or "*" in columns
    -424            )
    -425            if len(sources_without_schema) == 1:
    -426                table_name = sources_without_schema[0]
    -427
    -428        if table_name not in self.scope.selected_sources:
    -429            return exp.to_identifier(table_name)
    +            
    406    def get_table(self, column_name: str) -> t.Optional[exp.Identifier]:
    +407        """
    +408        Get the table for a column name.
    +409
    +410        Args:
    +411            column_name: The column name to find the table for.
    +412        Returns:
    +413            The table name if it can be found/inferred.
    +414        """
    +415        if self._unambiguous_columns is None:
    +416            self._unambiguous_columns = self._get_unambiguous_columns(
    +417                self._get_all_source_columns()
    +418            )
    +419
    +420        table_name = self._unambiguous_columns.get(column_name)
    +421
    +422        if not table_name:
    +423            sources_without_schema = tuple(
    +424                source
    +425                for source, columns in self._get_all_source_columns().items()
    +426                if not columns or "*" in columns
    +427            )
    +428            if len(sources_without_schema) == 1:
    +429                table_name = sources_without_schema[0]
     430
    -431        node, _ = self.scope.selected_sources.get(table_name)
    -432
    -433        if isinstance(node, exp.Subqueryable):
    -434            while node and node.alias != table_name:
    -435                node = node.parent
    -436
    -437        node_alias = node.args.get("alias")
    -438        if node_alias:
    -439            return node_alias.this
    -440
    -441        return exp.to_identifier(
    -442            table_name, quoted=node.this.quoted if isinstance(node, exp.Table) else None
    -443        )
    +431        if table_name not in self.scope.selected_sources:
    +432            return exp.to_identifier(table_name)
    +433
    +434        node, _ = self.scope.selected_sources.get(table_name)
    +435
    +436        if isinstance(node, exp.Subqueryable):
    +437            while node and node.alias != table_name:
    +438                node = node.parent
    +439
    +440        node_alias = node.args.get("alias")
    +441        if node_alias:
    +442            return node_alias.this
    +443
    +444        return exp.to_identifier(
    +445            table_name, quoted=node.this.quoted if isinstance(node, exp.Table) else None
    +446        )
     
    @@ -984,22 +987,22 @@
    -
    454    def get_source_columns(self, name, only_visible=False):
    -455        """Resolve the source columns for a given source `name`"""
    -456        if name not in self.scope.sources:
    -457            raise OptimizeError(f"Unknown table: {name}")
    -458
    -459        source = self.scope.sources[name]
    -460
    -461        # If referencing a table, return the columns from the schema
    -462        if isinstance(source, exp.Table):
    -463            return self.schema.column_names(source, only_visible)
    -464
    -465        if isinstance(source, Scope) and isinstance(source.expression, exp.Values):
    -466            return source.expression.alias_column_names
    +            
    457    def get_source_columns(self, name, only_visible=False):
    +458        """Resolve the source columns for a given source `name`"""
    +459        if name not in self.scope.sources:
    +460            raise OptimizeError(f"Unknown table: {name}")
    +461
    +462        source = self.scope.sources[name]
    +463
    +464        # If referencing a table, return the columns from the schema
    +465        if isinstance(source, exp.Table):
    +466            return self.schema.column_names(source, only_visible)
     467
    -468        # Otherwise, if referencing another scope, return that scope's named selects
    -469        return source.expression.named_selects
    +468        if isinstance(source, Scope) and isinstance(source.expression, exp.Values):
    +469            return source.expression.alias_column_names
    +470
    +471        # Otherwise, if referencing another scope, return that scope's named selects
    +472        return source.expression.named_selects
     
    diff --git a/docs/sqlglot/optimizer/qualify_tables.html b/docs/sqlglot/optimizer/qualify_tables.html index 5813fdf..2dab7ed 100644 --- a/docs/sqlglot/optimizer/qualify_tables.html +++ b/docs/sqlglot/optimizer/qualify_tables.html @@ -3,7 +3,7 @@ - + sqlglot.optimizer.qualify_tables API documentation @@ -123,8 +123,11 @@
    65 66 if not table_alias.name: 67 table_alias.set("this", next_name()) -68 -69 return expression +68 if isinstance(udtf, exp.Values) and not table_alias.columns: +69 for i, e in enumerate(udtf.expressions[0].expressions): +70 table_alias.append("columns", exp.to_identifier(f"_col_{i}")) +71 +72 return expression
    @@ -200,8 +203,11 @@ 66 67 if not table_alias.name: 68 table_alias.set("this", next_name()) -69 -70 return expression +69 if isinstance(udtf, exp.Values) and not table_alias.columns: +70 for i, e in enumerate(udtf.expressions[0].expressions): +71 table_alias.append("columns", exp.to_identifier(f"_col_{i}")) +72 +73 return expression diff --git a/docs/sqlglot/optimizer/scope.html b/docs/sqlglot/optimizer/scope.html index 43c2d62..fad49fc 100644 --- a/docs/sqlglot/optimizer/scope.html +++ b/docs/sqlglot/optimizer/scope.html @@ -3,7 +3,7 @@ - + sqlglot.optimizer.scope API documentation diff --git a/docs/sqlglot/optimizer/simplify.html b/docs/sqlglot/optimizer/simplify.html index 745e320..5ba4a5e 100644 --- a/docs/sqlglot/optimizer/simplify.html +++ b/docs/sqlglot/optimizer/simplify.html @@ -3,7 +3,7 @@ - + sqlglot.optimizer.simplify API documentation @@ -316,306 +316,308 @@ 201 return left if (av < bv if or_ else av >= bv) else right 202 203 # we can't ever shortcut to true because the column could be null -204 if isinstance(a, exp.LT) and isinstance(b, GT_GTE): -205 if not or_ and av <= bv: -206 return exp.false() -207 elif isinstance(a, exp.GT) and isinstance(b, LT_LTE): -208 if not or_ and av >= bv: -209 return exp.false() -210 elif isinstance(a, exp.EQ): -211 if isinstance(b, exp.LT): -212 return exp.false() if av >= bv else a -213 if isinstance(b, exp.LTE): -214 return exp.false() if av > bv else a -215 if isinstance(b, exp.GT): -216 return exp.false() if av <= bv else a -217 if isinstance(b, exp.GTE): -218 return exp.false() if av < bv else a -219 if isinstance(b, exp.NEQ): -220 return exp.false() if av == bv else a -221 return None -222 +204 if not or_: +205 if isinstance(a, exp.LT) and isinstance(b, GT_GTE): +206 if av <= bv: +207 return exp.false() +208 elif isinstance(a, exp.GT) and isinstance(b, LT_LTE): +209 if av >= bv: +210 return exp.false() +211 elif isinstance(a, exp.EQ): +212 if isinstance(b, exp.LT): +213 return exp.false() if av >= bv else a +214 if isinstance(b, exp.LTE): +215 return exp.false() if av > bv else a +216 if isinstance(b, exp.GT): +217 return exp.false() if av <= bv else a +218 if isinstance(b, exp.GTE): +219 return exp.false() if av < bv else a +220 if isinstance(b, exp.NEQ): +221 return exp.false() if av == bv else a +222 return None 223 -224def remove_compliments(expression, root=True): -225 """ -226 Removing compliments. -227 -228 A AND NOT A -> FALSE -229 A OR NOT A -> TRUE -230 """ -231 if isinstance(expression, exp.Connector) and (root or not expression.same_parent): -232 compliment = exp.false() if isinstance(expression, exp.And) else exp.true() -233 -234 for a, b in itertools.permutations(expression.flatten(), 2): -235 if is_complement(a, b): -236 return compliment -237 return expression -238 +224 +225def remove_compliments(expression, root=True): +226 """ +227 Removing compliments. +228 +229 A AND NOT A -> FALSE +230 A OR NOT A -> TRUE +231 """ +232 if isinstance(expression, exp.Connector) and (root or not expression.same_parent): +233 compliment = exp.false() if isinstance(expression, exp.And) else exp.true() +234 +235 for a, b in itertools.permutations(expression.flatten(), 2): +236 if is_complement(a, b): +237 return compliment +238 return expression 239 -240def uniq_sort(expression, cache=None, root=True): -241 """ -242 Uniq and sort a connector. -243 -244 C AND A AND B AND B -> A AND B AND C -245 """ -246 if isinstance(expression, exp.Connector) and (root or not expression.same_parent): -247 result_func = exp.and_ if isinstance(expression, exp.And) else exp.or_ -248 flattened = tuple(expression.flatten()) -249 deduped = {GENERATOR.generate(e, cache): e for e in flattened} -250 arr = tuple(deduped.items()) -251 -252 # check if the operands are already sorted, if not sort them -253 # A AND C AND B -> A AND B AND C -254 for i, (sql, e) in enumerate(arr[1:]): -255 if sql < arr[i][0]: -256 expression = result_func(*(e for _, e in sorted(arr))) -257 break -258 else: -259 # we didn't have to sort but maybe we need to dedup -260 if len(deduped) < len(flattened): -261 expression = result_func(*deduped.values()) -262 -263 return expression -264 +240 +241def uniq_sort(expression, cache=None, root=True): +242 """ +243 Uniq and sort a connector. +244 +245 C AND A AND B AND B -> A AND B AND C +246 """ +247 if isinstance(expression, exp.Connector) and (root or not expression.same_parent): +248 result_func = exp.and_ if isinstance(expression, exp.And) else exp.or_ +249 flattened = tuple(expression.flatten()) +250 deduped = {GENERATOR.generate(e, cache): e for e in flattened} +251 arr = tuple(deduped.items()) +252 +253 # check if the operands are already sorted, if not sort them +254 # A AND C AND B -> A AND B AND C +255 for i, (sql, e) in enumerate(arr[1:]): +256 if sql < arr[i][0]: +257 expression = result_func(*(e for _, e in sorted(arr))) +258 break +259 else: +260 # we didn't have to sort but maybe we need to dedup +261 if len(deduped) < len(flattened): +262 expression = result_func(*deduped.values()) +263 +264 return expression 265 -266def absorb_and_eliminate(expression, root=True): -267 """ -268 absorption: -269 A AND (A OR B) -> A -270 A OR (A AND B) -> A -271 A AND (NOT A OR B) -> A AND B -272 A OR (NOT A AND B) -> A OR B -273 elimination: -274 (A AND B) OR (A AND NOT B) -> A -275 (A OR B) AND (A OR NOT B) -> A -276 """ -277 if isinstance(expression, exp.Connector) and (root or not expression.same_parent): -278 kind = exp.Or if isinstance(expression, exp.And) else exp.And -279 -280 for a, b in itertools.permutations(expression.flatten(), 2): -281 if isinstance(a, kind): -282 aa, ab = a.unnest_operands() -283 -284 # absorb -285 if is_complement(b, aa): -286 aa.replace(exp.true() if kind == exp.And else exp.false()) -287 elif is_complement(b, ab): -288 ab.replace(exp.true() if kind == exp.And else exp.false()) -289 elif (set(b.flatten()) if isinstance(b, kind) else {b}) < set(a.flatten()): -290 a.replace(exp.false() if kind == exp.And else exp.true()) -291 elif isinstance(b, kind): -292 # eliminate -293 rhs = b.unnest_operands() -294 ba, bb = rhs -295 -296 if aa in rhs and (is_complement(ab, ba) or is_complement(ab, bb)): -297 a.replace(aa) -298 b.replace(aa) -299 elif ab in rhs and (is_complement(aa, ba) or is_complement(aa, bb)): -300 a.replace(ab) -301 b.replace(ab) -302 -303 return expression -304 +266 +267def absorb_and_eliminate(expression, root=True): +268 """ +269 absorption: +270 A AND (A OR B) -> A +271 A OR (A AND B) -> A +272 A AND (NOT A OR B) -> A AND B +273 A OR (NOT A AND B) -> A OR B +274 elimination: +275 (A AND B) OR (A AND NOT B) -> A +276 (A OR B) AND (A OR NOT B) -> A +277 """ +278 if isinstance(expression, exp.Connector) and (root or not expression.same_parent): +279 kind = exp.Or if isinstance(expression, exp.And) else exp.And +280 +281 for a, b in itertools.permutations(expression.flatten(), 2): +282 if isinstance(a, kind): +283 aa, ab = a.unnest_operands() +284 +285 # absorb +286 if is_complement(b, aa): +287 aa.replace(exp.true() if kind == exp.And else exp.false()) +288 elif is_complement(b, ab): +289 ab.replace(exp.true() if kind == exp.And else exp.false()) +290 elif (set(b.flatten()) if isinstance(b, kind) else {b}) < set(a.flatten()): +291 a.replace(exp.false() if kind == exp.And else exp.true()) +292 elif isinstance(b, kind): +293 # eliminate +294 rhs = b.unnest_operands() +295 ba, bb = rhs +296 +297 if aa in rhs and (is_complement(ab, ba) or is_complement(ab, bb)): +298 a.replace(aa) +299 b.replace(aa) +300 elif ab in rhs and (is_complement(aa, ba) or is_complement(aa, bb)): +301 a.replace(ab) +302 b.replace(ab) +303 +304 return expression 305 -306def simplify_literals(expression, root=True): -307 if isinstance(expression, exp.Binary) and not isinstance(expression, exp.Connector): -308 return _flat_simplify(expression, _simplify_binary, root) -309 elif isinstance(expression, exp.Neg): -310 this = expression.this -311 if this.is_number: -312 value = this.name -313 if value[0] == "-": -314 return exp.Literal.number(value[1:]) -315 return exp.Literal.number(f"-{value}") -316 -317 return expression -318 +306 +307def simplify_literals(expression, root=True): +308 if isinstance(expression, exp.Binary) and not isinstance(expression, exp.Connector): +309 return _flat_simplify(expression, _simplify_binary, root) +310 elif isinstance(expression, exp.Neg): +311 this = expression.this +312 if this.is_number: +313 value = this.name +314 if value[0] == "-": +315 return exp.Literal.number(value[1:]) +316 return exp.Literal.number(f"-{value}") +317 +318 return expression 319 -320def _simplify_binary(expression, a, b): -321 if isinstance(expression, exp.Is): -322 if isinstance(b, exp.Not): -323 c = b.this -324 not_ = True -325 else: -326 c = b -327 not_ = False -328 -329 if is_null(c): -330 if isinstance(a, exp.Literal): -331 return exp.true() if not_ else exp.false() -332 if is_null(a): -333 return exp.false() if not_ else exp.true() -334 elif isinstance(expression, (exp.NullSafeEQ, exp.NullSafeNEQ)): -335 return None -336 elif is_null(a) or is_null(b): -337 return exp.null() -338 -339 if a.is_number and b.is_number: -340 a = int(a.name) if a.is_int else Decimal(a.name) -341 b = int(b.name) if b.is_int else Decimal(b.name) -342 -343 if isinstance(expression, exp.Add): -344 return exp.Literal.number(a + b) -345 if isinstance(expression, exp.Sub): -346 return exp.Literal.number(a - b) -347 if isinstance(expression, exp.Mul): -348 return exp.Literal.number(a * b) -349 if isinstance(expression, exp.Div): -350 if isinstance(a, int) and isinstance(b, int): -351 return exp.Literal.number(a // b) -352 return exp.Literal.number(a / b) -353 -354 boolean = eval_boolean(expression, a, b) +320 +321def _simplify_binary(expression, a, b): +322 if isinstance(expression, exp.Is): +323 if isinstance(b, exp.Not): +324 c = b.this +325 not_ = True +326 else: +327 c = b +328 not_ = False +329 +330 if is_null(c): +331 if isinstance(a, exp.Literal): +332 return exp.true() if not_ else exp.false() +333 if is_null(a): +334 return exp.false() if not_ else exp.true() +335 elif isinstance(expression, (exp.NullSafeEQ, exp.NullSafeNEQ)): +336 return None +337 elif is_null(a) or is_null(b): +338 return exp.null() +339 +340 if a.is_number and b.is_number: +341 a = int(a.name) if a.is_int else Decimal(a.name) +342 b = int(b.name) if b.is_int else Decimal(b.name) +343 +344 if isinstance(expression, exp.Add): +345 return exp.Literal.number(a + b) +346 if isinstance(expression, exp.Sub): +347 return exp.Literal.number(a - b) +348 if isinstance(expression, exp.Mul): +349 return exp.Literal.number(a * b) +350 if isinstance(expression, exp.Div): +351 # engines have differing int div behavior so intdiv is not safe +352 if isinstance(a, int) and isinstance(b, int): +353 return None +354 return exp.Literal.number(a / b) 355 -356 if boolean: -357 return boolean -358 elif a.is_string and b.is_string: -359 boolean = eval_boolean(expression, a.this, b.this) -360 -361 if boolean: -362 return boolean -363 elif isinstance(a, exp.Cast) and isinstance(b, exp.Interval): -364 a, b = extract_date(a), extract_interval(b) -365 if a and b: -366 if isinstance(expression, exp.Add): -367 return date_literal(a + b) -368 if isinstance(expression, exp.Sub): -369 return date_literal(a - b) -370 elif isinstance(a, exp.Interval) and isinstance(b, exp.Cast): -371 a, b = extract_interval(a), extract_date(b) -372 # you cannot subtract a date from an interval -373 if a and b and isinstance(expression, exp.Add): -374 return date_literal(a + b) -375 -376 return None +356 boolean = eval_boolean(expression, a, b) +357 +358 if boolean: +359 return boolean +360 elif a.is_string and b.is_string: +361 boolean = eval_boolean(expression, a.this, b.this) +362 +363 if boolean: +364 return boolean +365 elif isinstance(a, exp.Cast) and isinstance(b, exp.Interval): +366 a, b = extract_date(a), extract_interval(b) +367 if a and b: +368 if isinstance(expression, exp.Add): +369 return date_literal(a + b) +370 if isinstance(expression, exp.Sub): +371 return date_literal(a - b) +372 elif isinstance(a, exp.Interval) and isinstance(b, exp.Cast): +373 a, b = extract_interval(a), extract_date(b) +374 # you cannot subtract a date from an interval +375 if a and b and isinstance(expression, exp.Add): +376 return date_literal(a + b) 377 -378 -379def simplify_parens(expression): -380 if ( -381 isinstance(expression, exp.Paren) -382 and not isinstance(expression.this, exp.Select) -383 and ( -384 not isinstance(expression.parent, (exp.Condition, exp.Binary)) -385 or isinstance(expression.this, exp.Predicate) -386 or not isinstance(expression.this, exp.Binary) -387 ) -388 ): -389 return expression.this -390 return expression -391 -392 -393def remove_where_true(expression): -394 for where in expression.find_all(exp.Where): -395 if always_true(where.this): -396 where.parent.set("where", None) -397 for join in expression.find_all(exp.Join): -398 if always_true(join.args.get("on")): -399 join.set("kind", "CROSS") -400 join.set("on", None) -401 -402 -403def always_true(expression): -404 return (isinstance(expression, exp.Boolean) and expression.this) or isinstance( -405 expression, exp.Literal -406 ) -407 -408 -409def is_complement(a, b): -410 return isinstance(b, exp.Not) and b.this == a -411 -412 -413def is_false(a: exp.Expression) -> bool: -414 return type(a) is exp.Boolean and not a.this -415 -416 -417def is_null(a: exp.Expression) -> bool: -418 return type(a) is exp.Null -419 -420 -421def eval_boolean(expression, a, b): -422 if isinstance(expression, (exp.EQ, exp.Is)): -423 return boolean_literal(a == b) -424 if isinstance(expression, exp.NEQ): -425 return boolean_literal(a != b) -426 if isinstance(expression, exp.GT): -427 return boolean_literal(a > b) -428 if isinstance(expression, exp.GTE): -429 return boolean_literal(a >= b) -430 if isinstance(expression, exp.LT): -431 return boolean_literal(a < b) -432 if isinstance(expression, exp.LTE): -433 return boolean_literal(a <= b) -434 return None -435 -436 -437def extract_date(cast): -438 # The "fromisoformat" conversion could fail if the cast is used on an identifier, -439 # so in that case we can't extract the date. -440 try: -441 if cast.args["to"].this == exp.DataType.Type.DATE: -442 return datetime.date.fromisoformat(cast.name) -443 if cast.args["to"].this == exp.DataType.Type.DATETIME: -444 return datetime.datetime.fromisoformat(cast.name) -445 except ValueError: -446 return None -447 -448 -449def extract_interval(interval): -450 try: -451 from dateutil.relativedelta import relativedelta # type: ignore -452 except ModuleNotFoundError: -453 return None -454 -455 n = int(interval.name) -456 unit = interval.text("unit").lower() -457 -458 if unit == "year": -459 return relativedelta(years=n) -460 if unit == "month": -461 return relativedelta(months=n) -462 if unit == "week": -463 return relativedelta(weeks=n) -464 if unit == "day": -465 return relativedelta(days=n) -466 return None -467 -468 -469def date_literal(date): -470 return exp.cast( -471 exp.Literal.string(date), -472 "DATETIME" if isinstance(date, datetime.datetime) else "DATE", -473 ) -474 -475 -476def boolean_literal(condition): -477 return exp.true() if condition else exp.false() -478 -479 -480def _flat_simplify(expression, simplifier, root=True): -481 if root or not expression.same_parent: -482 operands = [] -483 queue = deque(expression.flatten(unnest=False)) -484 size = len(queue) -485 -486 while queue: -487 a = queue.popleft() -488 -489 for b in queue: -490 result = simplifier(expression, a, b) -491 -492 if result: -493 queue.remove(b) -494 queue.append(result) -495 break -496 else: -497 operands.append(a) -498 -499 if len(operands) < size: -500 return functools.reduce( -501 lambda a, b: expression.__class__(this=a, expression=b), operands -502 ) -503 return expression +378 return None +379 +380 +381def simplify_parens(expression): +382 if ( +383 isinstance(expression, exp.Paren) +384 and not isinstance(expression.this, exp.Select) +385 and ( +386 not isinstance(expression.parent, (exp.Condition, exp.Binary)) +387 or isinstance(expression.this, exp.Predicate) +388 or not isinstance(expression.this, exp.Binary) +389 ) +390 ): +391 return expression.this +392 return expression +393 +394 +395def remove_where_true(expression): +396 for where in expression.find_all(exp.Where): +397 if always_true(where.this): +398 where.parent.set("where", None) +399 for join in expression.find_all(exp.Join): +400 if always_true(join.args.get("on")): +401 join.set("kind", "CROSS") +402 join.set("on", None) +403 +404 +405def always_true(expression): +406 return (isinstance(expression, exp.Boolean) and expression.this) or isinstance( +407 expression, exp.Literal +408 ) +409 +410 +411def is_complement(a, b): +412 return isinstance(b, exp.Not) and b.this == a +413 +414 +415def is_false(a: exp.Expression) -> bool: +416 return type(a) is exp.Boolean and not a.this +417 +418 +419def is_null(a: exp.Expression) -> bool: +420 return type(a) is exp.Null +421 +422 +423def eval_boolean(expression, a, b): +424 if isinstance(expression, (exp.EQ, exp.Is)): +425 return boolean_literal(a == b) +426 if isinstance(expression, exp.NEQ): +427 return boolean_literal(a != b) +428 if isinstance(expression, exp.GT): +429 return boolean_literal(a > b) +430 if isinstance(expression, exp.GTE): +431 return boolean_literal(a >= b) +432 if isinstance(expression, exp.LT): +433 return boolean_literal(a < b) +434 if isinstance(expression, exp.LTE): +435 return boolean_literal(a <= b) +436 return None +437 +438 +439def extract_date(cast): +440 # The "fromisoformat" conversion could fail if the cast is used on an identifier, +441 # so in that case we can't extract the date. +442 try: +443 if cast.args["to"].this == exp.DataType.Type.DATE: +444 return datetime.date.fromisoformat(cast.name) +445 if cast.args["to"].this == exp.DataType.Type.DATETIME: +446 return datetime.datetime.fromisoformat(cast.name) +447 except ValueError: +448 return None +449 +450 +451def extract_interval(interval): +452 try: +453 from dateutil.relativedelta import relativedelta # type: ignore +454 except ModuleNotFoundError: +455 return None +456 +457 n = int(interval.name) +458 unit = interval.text("unit").lower() +459 +460 if unit == "year": +461 return relativedelta(years=n) +462 if unit == "month": +463 return relativedelta(months=n) +464 if unit == "week": +465 return relativedelta(weeks=n) +466 if unit == "day": +467 return relativedelta(days=n) +468 return None +469 +470 +471def date_literal(date): +472 return exp.cast( +473 exp.Literal.string(date), +474 "DATETIME" if isinstance(date, datetime.datetime) else "DATE", +475 ) +476 +477 +478def boolean_literal(condition): +479 return exp.true() if condition else exp.false() +480 +481 +482def _flat_simplify(expression, simplifier, root=True): +483 if root or not expression.same_parent: +484 operands = [] +485 queue = deque(expression.flatten(unnest=False)) +486 size = len(queue) +487 +488 while queue: +489 a = queue.popleft() +490 +491 for b in queue: +492 result = simplifier(expression, a, b) +493 +494 if result: +495 queue.remove(b) +496 queue.appendleft(result) +497 break +498 else: +499 operands.append(a) +500 +501 if len(operands) < size: +502 return functools.reduce( +503 lambda a, b: expression.__class__(this=a, expression=b), operands +504 ) +505 return expression @@ -875,20 +877,20 @@ A OR (B OR C) -> A OR B OR C

    -
    225def remove_compliments(expression, root=True):
    -226    """
    -227    Removing compliments.
    -228
    -229    A AND NOT A -> FALSE
    -230    A OR NOT A -> TRUE
    -231    """
    -232    if isinstance(expression, exp.Connector) and (root or not expression.same_parent):
    -233        compliment = exp.false() if isinstance(expression, exp.And) else exp.true()
    -234
    -235        for a, b in itertools.permutations(expression.flatten(), 2):
    -236            if is_complement(a, b):
    -237                return compliment
    -238    return expression
    +            
    226def remove_compliments(expression, root=True):
    +227    """
    +228    Removing compliments.
    +229
    +230    A AND NOT A -> FALSE
    +231    A OR NOT A -> TRUE
    +232    """
    +233    if isinstance(expression, exp.Connector) and (root or not expression.same_parent):
    +234        compliment = exp.false() if isinstance(expression, exp.And) else exp.true()
    +235
    +236        for a, b in itertools.permutations(expression.flatten(), 2):
    +237            if is_complement(a, b):
    +238                return compliment
    +239    return expression
     
    @@ -911,30 +913,30 @@ A OR NOT A -> TRUE

    -
    241def uniq_sort(expression, cache=None, root=True):
    -242    """
    -243    Uniq and sort a connector.
    -244
    -245    C AND A AND B AND B -> A AND B AND C
    -246    """
    -247    if isinstance(expression, exp.Connector) and (root or not expression.same_parent):
    -248        result_func = exp.and_ if isinstance(expression, exp.And) else exp.or_
    -249        flattened = tuple(expression.flatten())
    -250        deduped = {GENERATOR.generate(e, cache): e for e in flattened}
    -251        arr = tuple(deduped.items())
    -252
    -253        # check if the operands are already sorted, if not sort them
    -254        # A AND C AND B -> A AND B AND C
    -255        for i, (sql, e) in enumerate(arr[1:]):
    -256            if sql < arr[i][0]:
    -257                expression = result_func(*(e for _, e in sorted(arr)))
    -258                break
    -259        else:
    -260            # we didn't have to sort but maybe we need to dedup
    -261            if len(deduped) < len(flattened):
    -262                expression = result_func(*deduped.values())
    -263
    -264    return expression
    +            
    242def uniq_sort(expression, cache=None, root=True):
    +243    """
    +244    Uniq and sort a connector.
    +245
    +246    C AND A AND B AND B -> A AND B AND C
    +247    """
    +248    if isinstance(expression, exp.Connector) and (root or not expression.same_parent):
    +249        result_func = exp.and_ if isinstance(expression, exp.And) else exp.or_
    +250        flattened = tuple(expression.flatten())
    +251        deduped = {GENERATOR.generate(e, cache): e for e in flattened}
    +252        arr = tuple(deduped.items())
    +253
    +254        # check if the operands are already sorted, if not sort them
    +255        # A AND C AND B -> A AND B AND C
    +256        for i, (sql, e) in enumerate(arr[1:]):
    +257            if sql < arr[i][0]:
    +258                expression = result_func(*(e for _, e in sorted(arr)))
    +259                break
    +260        else:
    +261            # we didn't have to sort but maybe we need to dedup
    +262            if len(deduped) < len(flattened):
    +263                expression = result_func(*deduped.values())
    +264
    +265    return expression
     
    @@ -956,44 +958,44 @@ A OR NOT A -> TRUE

    -
    267def absorb_and_eliminate(expression, root=True):
    -268    """
    -269    absorption:
    -270        A AND (A OR B) -> A
    -271        A OR (A AND B) -> A
    -272        A AND (NOT A OR B) -> A AND B
    -273        A OR (NOT A AND B) -> A OR B
    -274    elimination:
    -275        (A AND B) OR (A AND NOT B) -> A
    -276        (A OR B) AND (A OR NOT B) -> A
    -277    """
    -278    if isinstance(expression, exp.Connector) and (root or not expression.same_parent):
    -279        kind = exp.Or if isinstance(expression, exp.And) else exp.And
    -280
    -281        for a, b in itertools.permutations(expression.flatten(), 2):
    -282            if isinstance(a, kind):
    -283                aa, ab = a.unnest_operands()
    -284
    -285                # absorb
    -286                if is_complement(b, aa):
    -287                    aa.replace(exp.true() if kind == exp.And else exp.false())
    -288                elif is_complement(b, ab):
    -289                    ab.replace(exp.true() if kind == exp.And else exp.false())
    -290                elif (set(b.flatten()) if isinstance(b, kind) else {b}) < set(a.flatten()):
    -291                    a.replace(exp.false() if kind == exp.And else exp.true())
    -292                elif isinstance(b, kind):
    -293                    # eliminate
    -294                    rhs = b.unnest_operands()
    -295                    ba, bb = rhs
    -296
    -297                    if aa in rhs and (is_complement(ab, ba) or is_complement(ab, bb)):
    -298                        a.replace(aa)
    -299                        b.replace(aa)
    -300                    elif ab in rhs and (is_complement(aa, ba) or is_complement(aa, bb)):
    -301                        a.replace(ab)
    -302                        b.replace(ab)
    -303
    -304    return expression
    +            
    268def absorb_and_eliminate(expression, root=True):
    +269    """
    +270    absorption:
    +271        A AND (A OR B) -> A
    +272        A OR (A AND B) -> A
    +273        A AND (NOT A OR B) -> A AND B
    +274        A OR (NOT A AND B) -> A OR B
    +275    elimination:
    +276        (A AND B) OR (A AND NOT B) -> A
    +277        (A OR B) AND (A OR NOT B) -> A
    +278    """
    +279    if isinstance(expression, exp.Connector) and (root or not expression.same_parent):
    +280        kind = exp.Or if isinstance(expression, exp.And) else exp.And
    +281
    +282        for a, b in itertools.permutations(expression.flatten(), 2):
    +283            if isinstance(a, kind):
    +284                aa, ab = a.unnest_operands()
    +285
    +286                # absorb
    +287                if is_complement(b, aa):
    +288                    aa.replace(exp.true() if kind == exp.And else exp.false())
    +289                elif is_complement(b, ab):
    +290                    ab.replace(exp.true() if kind == exp.And else exp.false())
    +291                elif (set(b.flatten()) if isinstance(b, kind) else {b}) < set(a.flatten()):
    +292                    a.replace(exp.false() if kind == exp.And else exp.true())
    +293                elif isinstance(b, kind):
    +294                    # eliminate
    +295                    rhs = b.unnest_operands()
    +296                    ba, bb = rhs
    +297
    +298                    if aa in rhs and (is_complement(ab, ba) or is_complement(ab, bb)):
    +299                        a.replace(aa)
    +300                        b.replace(aa)
    +301                    elif ab in rhs and (is_complement(aa, ba) or is_complement(aa, bb)):
    +302                        a.replace(ab)
    +303                        b.replace(ab)
    +304
    +305    return expression
     
    @@ -1020,18 +1022,18 @@ elimination:
    -
    307def simplify_literals(expression, root=True):
    -308    if isinstance(expression, exp.Binary) and not isinstance(expression, exp.Connector):
    -309        return _flat_simplify(expression, _simplify_binary, root)
    -310    elif isinstance(expression, exp.Neg):
    -311        this = expression.this
    -312        if this.is_number:
    -313            value = this.name
    -314            if value[0] == "-":
    -315                return exp.Literal.number(value[1:])
    -316            return exp.Literal.number(f"-{value}")
    -317
    -318    return expression
    +            
    308def simplify_literals(expression, root=True):
    +309    if isinstance(expression, exp.Binary) and not isinstance(expression, exp.Connector):
    +310        return _flat_simplify(expression, _simplify_binary, root)
    +311    elif isinstance(expression, exp.Neg):
    +312        this = expression.this
    +313        if this.is_number:
    +314            value = this.name
    +315            if value[0] == "-":
    +316                return exp.Literal.number(value[1:])
    +317            return exp.Literal.number(f"-{value}")
    +318
    +319    return expression
     
    @@ -1049,18 +1051,18 @@ elimination:
    -
    380def simplify_parens(expression):
    -381    if (
    -382        isinstance(expression, exp.Paren)
    -383        and not isinstance(expression.this, exp.Select)
    -384        and (
    -385            not isinstance(expression.parent, (exp.Condition, exp.Binary))
    -386            or isinstance(expression.this, exp.Predicate)
    -387            or not isinstance(expression.this, exp.Binary)
    -388        )
    -389    ):
    -390        return expression.this
    -391    return expression
    +            
    382def simplify_parens(expression):
    +383    if (
    +384        isinstance(expression, exp.Paren)
    +385        and not isinstance(expression.this, exp.Select)
    +386        and (
    +387            not isinstance(expression.parent, (exp.Condition, exp.Binary))
    +388            or isinstance(expression.this, exp.Predicate)
    +389            or not isinstance(expression.this, exp.Binary)
    +390        )
    +391    ):
    +392        return expression.this
    +393    return expression
     
    @@ -1078,14 +1080,14 @@ elimination:
    -
    394def remove_where_true(expression):
    -395    for where in expression.find_all(exp.Where):
    -396        if always_true(where.this):
    -397            where.parent.set("where", None)
    -398    for join in expression.find_all(exp.Join):
    -399        if always_true(join.args.get("on")):
    -400            join.set("kind", "CROSS")
    -401            join.set("on", None)
    +            
    396def remove_where_true(expression):
    +397    for where in expression.find_all(exp.Where):
    +398        if always_true(where.this):
    +399            where.parent.set("where", None)
    +400    for join in expression.find_all(exp.Join):
    +401        if always_true(join.args.get("on")):
    +402            join.set("kind", "CROSS")
    +403            join.set("on", None)
     
    @@ -1103,10 +1105,10 @@ elimination:
    -
    404def always_true(expression):
    -405    return (isinstance(expression, exp.Boolean) and expression.this) or isinstance(
    -406        expression, exp.Literal
    -407    )
    +            
    406def always_true(expression):
    +407    return (isinstance(expression, exp.Boolean) and expression.this) or isinstance(
    +408        expression, exp.Literal
    +409    )
     
    @@ -1124,8 +1126,8 @@ elimination:
    -
    410def is_complement(a, b):
    -411    return isinstance(b, exp.Not) and b.this == a
    +            
    412def is_complement(a, b):
    +413    return isinstance(b, exp.Not) and b.this == a
     
    @@ -1143,8 +1145,8 @@ elimination:
    -
    414def is_false(a: exp.Expression) -> bool:
    -415    return type(a) is exp.Boolean and not a.this
    +            
    416def is_false(a: exp.Expression) -> bool:
    +417    return type(a) is exp.Boolean and not a.this
     
    @@ -1162,8 +1164,8 @@ elimination:
    -
    418def is_null(a: exp.Expression) -> bool:
    -419    return type(a) is exp.Null
    +            
    420def is_null(a: exp.Expression) -> bool:
    +421    return type(a) is exp.Null
     
    @@ -1181,20 +1183,20 @@ elimination:
    -
    422def eval_boolean(expression, a, b):
    -423    if isinstance(expression, (exp.EQ, exp.Is)):
    -424        return boolean_literal(a == b)
    -425    if isinstance(expression, exp.NEQ):
    -426        return boolean_literal(a != b)
    -427    if isinstance(expression, exp.GT):
    -428        return boolean_literal(a > b)
    -429    if isinstance(expression, exp.GTE):
    -430        return boolean_literal(a >= b)
    -431    if isinstance(expression, exp.LT):
    -432        return boolean_literal(a < b)
    -433    if isinstance(expression, exp.LTE):
    -434        return boolean_literal(a <= b)
    -435    return None
    +            
    424def eval_boolean(expression, a, b):
    +425    if isinstance(expression, (exp.EQ, exp.Is)):
    +426        return boolean_literal(a == b)
    +427    if isinstance(expression, exp.NEQ):
    +428        return boolean_literal(a != b)
    +429    if isinstance(expression, exp.GT):
    +430        return boolean_literal(a > b)
    +431    if isinstance(expression, exp.GTE):
    +432        return boolean_literal(a >= b)
    +433    if isinstance(expression, exp.LT):
    +434        return boolean_literal(a < b)
    +435    if isinstance(expression, exp.LTE):
    +436        return boolean_literal(a <= b)
    +437    return None
     
    @@ -1212,16 +1214,16 @@ elimination:
    -
    438def extract_date(cast):
    -439    # The "fromisoformat" conversion could fail if the cast is used on an identifier,
    -440    # so in that case we can't extract the date.
    -441    try:
    -442        if cast.args["to"].this == exp.DataType.Type.DATE:
    -443            return datetime.date.fromisoformat(cast.name)
    -444        if cast.args["to"].this == exp.DataType.Type.DATETIME:
    -445            return datetime.datetime.fromisoformat(cast.name)
    -446    except ValueError:
    -447        return None
    +            
    440def extract_date(cast):
    +441    # The "fromisoformat" conversion could fail if the cast is used on an identifier,
    +442    # so in that case we can't extract the date.
    +443    try:
    +444        if cast.args["to"].this == exp.DataType.Type.DATE:
    +445            return datetime.date.fromisoformat(cast.name)
    +446        if cast.args["to"].this == exp.DataType.Type.DATETIME:
    +447            return datetime.datetime.fromisoformat(cast.name)
    +448    except ValueError:
    +449        return None
     
    @@ -1239,24 +1241,24 @@ elimination:
    -
    450def extract_interval(interval):
    -451    try:
    -452        from dateutil.relativedelta import relativedelta  # type: ignore
    -453    except ModuleNotFoundError:
    -454        return None
    -455
    -456    n = int(interval.name)
    -457    unit = interval.text("unit").lower()
    -458
    -459    if unit == "year":
    -460        return relativedelta(years=n)
    -461    if unit == "month":
    -462        return relativedelta(months=n)
    -463    if unit == "week":
    -464        return relativedelta(weeks=n)
    -465    if unit == "day":
    -466        return relativedelta(days=n)
    -467    return None
    +            
    452def extract_interval(interval):
    +453    try:
    +454        from dateutil.relativedelta import relativedelta  # type: ignore
    +455    except ModuleNotFoundError:
    +456        return None
    +457
    +458    n = int(interval.name)
    +459    unit = interval.text("unit").lower()
    +460
    +461    if unit == "year":
    +462        return relativedelta(years=n)
    +463    if unit == "month":
    +464        return relativedelta(months=n)
    +465    if unit == "week":
    +466        return relativedelta(weeks=n)
    +467    if unit == "day":
    +468        return relativedelta(days=n)
    +469    return None
     
    @@ -1274,11 +1276,11 @@ elimination:
    -
    470def date_literal(date):
    -471    return exp.cast(
    -472        exp.Literal.string(date),
    -473        "DATETIME" if isinstance(date, datetime.datetime) else "DATE",
    -474    )
    +            
    472def date_literal(date):
    +473    return exp.cast(
    +474        exp.Literal.string(date),
    +475        "DATETIME" if isinstance(date, datetime.datetime) else "DATE",
    +476    )
     
    @@ -1296,8 +1298,8 @@ elimination:
    -
    477def boolean_literal(condition):
    -478    return exp.true() if condition else exp.false()
    +            
    479def boolean_literal(condition):
    +480    return exp.true() if condition else exp.false()
     
    diff --git a/docs/sqlglot/optimizer/unnest_subqueries.html b/docs/sqlglot/optimizer/unnest_subqueries.html index 4469e5b..ed5ae03 100644 --- a/docs/sqlglot/optimizer/unnest_subqueries.html +++ b/docs/sqlglot/optimizer/unnest_subqueries.html @@ -3,7 +3,7 @@ - + sqlglot.optimizer.unnest_subqueries API documentation diff --git a/docs/sqlglot/parser.html b/docs/sqlglot/parser.html index 879063e..6c3a0d2 100644 --- a/docs/sqlglot/parser.html +++ b/docs/sqlglot/parser.html @@ -3,7 +3,7 @@ - + sqlglot.parser API documentation @@ -112,4219 +112,4407 @@
    18 19logger = logging.getLogger("sqlglot") 20 - 21 - 22def parse_var_map(args: t.Sequence) -> exp.Expression: - 23 keys = [] - 24 values = [] - 25 for i in range(0, len(args), 2): - 26 keys.append(args[i]) - 27 values.append(args[i + 1]) - 28 return exp.VarMap( - 29 keys=exp.Array(expressions=keys), - 30 values=exp.Array(expressions=values), - 31 ) - 32 - 33 - 34def parse_like(args): - 35 like = exp.Like(this=seq_get(args, 1), expression=seq_get(args, 0)) - 36 return exp.Escape(this=like, expression=seq_get(args, 2)) if len(args) > 2 else like + 21E = t.TypeVar("E", bound=exp.Expression) + 22 + 23 + 24def parse_var_map(args: t.Sequence) -> exp.Expression: + 25 if len(args) == 1 and args[0].is_star: + 26 return exp.StarMap(this=args[0]) + 27 + 28 keys = [] + 29 values = [] + 30 for i in range(0, len(args), 2): + 31 keys.append(args[i]) + 32 values.append(args[i + 1]) + 33 return exp.VarMap( + 34 keys=exp.Array(expressions=keys), + 35 values=exp.Array(expressions=values), + 36 ) 37 38 - 39def binary_range_parser( - 40 expr_type: t.Type[exp.Expression], - 41) -> t.Callable[[Parser, t.Optional[exp.Expression]], t.Optional[exp.Expression]]: - 42 return lambda self, this: self._parse_escape( - 43 self.expression(expr_type, this=this, expression=self._parse_bitwise()) - 44 ) - 45 - 46 - 47class _Parser(type): - 48 def __new__(cls, clsname, bases, attrs): - 49 klass = super().__new__(cls, clsname, bases, attrs) - 50 klass._show_trie = new_trie(key.split(" ") for key in klass.SHOW_PARSERS) - 51 klass._set_trie = new_trie(key.split(" ") for key in klass.SET_PARSERS) - 52 - 53 return klass - 54 - 55 - 56class Parser(metaclass=_Parser): - 57 """ - 58 Parser consumes a list of tokens produced by the `sqlglot.tokens.Tokenizer` and produces - 59 a parsed syntax tree. + 39def parse_like(args): + 40 like = exp.Like(this=seq_get(args, 1), expression=seq_get(args, 0)) + 41 return exp.Escape(this=like, expression=seq_get(args, 2)) if len(args) > 2 else like + 42 + 43 + 44def binary_range_parser( + 45 expr_type: t.Type[exp.Expression], + 46) -> t.Callable[[Parser, t.Optional[exp.Expression]], t.Optional[exp.Expression]]: + 47 return lambda self, this: self._parse_escape( + 48 self.expression(expr_type, this=this, expression=self._parse_bitwise()) + 49 ) + 50 + 51 + 52class _Parser(type): + 53 def __new__(cls, clsname, bases, attrs): + 54 klass = super().__new__(cls, clsname, bases, attrs) + 55 klass._show_trie = new_trie(key.split(" ") for key in klass.SHOW_PARSERS) + 56 klass._set_trie = new_trie(key.split(" ") for key in klass.SET_PARSERS) + 57 + 58 return klass + 59 60 - 61 Args: - 62 error_level: the desired error level. - 63 Default: ErrorLevel.RAISE - 64 error_message_context: determines the amount of context to capture from a - 65 query string when displaying the error message (in number of characters). - 66 Default: 50. - 67 index_offset: Index offset for arrays eg ARRAY[0] vs ARRAY[1] as the head of a list. - 68 Default: 0 - 69 alias_post_tablesample: If the table alias comes after tablesample. - 70 Default: False - 71 max_errors: Maximum number of error messages to include in a raised ParseError. - 72 This is only relevant if error_level is ErrorLevel.RAISE. - 73 Default: 3 - 74 null_ordering: Indicates the default null ordering method to use if not explicitly set. - 75 Options are "nulls_are_small", "nulls_are_large", "nulls_are_last". - 76 Default: "nulls_are_small" - 77 """ - 78 - 79 FUNCTIONS: t.Dict[str, t.Callable] = { - 80 **{name: f.from_arg_list for f in exp.ALL_FUNCTIONS for name in f.sql_names()}, - 81 "DATE_TO_DATE_STR": lambda args: exp.Cast( - 82 this=seq_get(args, 0), - 83 to=exp.DataType(this=exp.DataType.Type.TEXT), - 84 ), - 85 "GLOB": lambda args: exp.Glob(this=seq_get(args, 1), expression=seq_get(args, 0)), - 86 "IFNULL": exp.Coalesce.from_arg_list, - 87 "LIKE": parse_like, - 88 "TIME_TO_TIME_STR": lambda args: exp.Cast( - 89 this=seq_get(args, 0), - 90 to=exp.DataType(this=exp.DataType.Type.TEXT), - 91 ), - 92 "TS_OR_DS_TO_DATE_STR": lambda args: exp.Substring( - 93 this=exp.Cast( - 94 this=seq_get(args, 0), - 95 to=exp.DataType(this=exp.DataType.Type.TEXT), - 96 ), - 97 start=exp.Literal.number(1), - 98 length=exp.Literal.number(10), - 99 ), - 100 "VAR_MAP": parse_var_map, - 101 } - 102 - 103 NO_PAREN_FUNCTIONS = { - 104 TokenType.CURRENT_DATE: exp.CurrentDate, - 105 TokenType.CURRENT_DATETIME: exp.CurrentDate, - 106 TokenType.CURRENT_TIME: exp.CurrentTime, - 107 TokenType.CURRENT_TIMESTAMP: exp.CurrentTimestamp, - 108 } - 109 - 110 NESTED_TYPE_TOKENS = { - 111 TokenType.ARRAY, - 112 TokenType.MAP, - 113 TokenType.STRUCT, - 114 TokenType.NULLABLE, - 115 } - 116 - 117 TYPE_TOKENS = { - 118 TokenType.BIT, - 119 TokenType.BOOLEAN, - 120 TokenType.TINYINT, - 121 TokenType.SMALLINT, - 122 TokenType.INT, - 123 TokenType.BIGINT, - 124 TokenType.FLOAT, - 125 TokenType.DOUBLE, - 126 TokenType.CHAR, - 127 TokenType.NCHAR, - 128 TokenType.VARCHAR, - 129 TokenType.NVARCHAR, - 130 TokenType.TEXT, - 131 TokenType.MEDIUMTEXT, - 132 TokenType.LONGTEXT, - 133 TokenType.MEDIUMBLOB, - 134 TokenType.LONGBLOB, - 135 TokenType.BINARY, - 136 TokenType.VARBINARY, - 137 TokenType.JSON, - 138 TokenType.JSONB, - 139 TokenType.INTERVAL, - 140 TokenType.TIME, - 141 TokenType.TIMESTAMP, - 142 TokenType.TIMESTAMPTZ, - 143 TokenType.TIMESTAMPLTZ, - 144 TokenType.DATETIME, - 145 TokenType.DATE, - 146 TokenType.DECIMAL, - 147 TokenType.UUID, - 148 TokenType.GEOGRAPHY, - 149 TokenType.GEOMETRY, - 150 TokenType.HLLSKETCH, - 151 TokenType.HSTORE, - 152 TokenType.PSEUDO_TYPE, - 153 TokenType.SUPER, - 154 TokenType.SERIAL, - 155 TokenType.SMALLSERIAL, - 156 TokenType.BIGSERIAL, - 157 TokenType.XML, - 158 TokenType.UNIQUEIDENTIFIER, - 159 TokenType.MONEY, - 160 TokenType.SMALLMONEY, - 161 TokenType.ROWVERSION, - 162 TokenType.IMAGE, - 163 TokenType.VARIANT, - 164 TokenType.OBJECT, - 165 TokenType.INET, - 166 *NESTED_TYPE_TOKENS, - 167 } - 168 - 169 SUBQUERY_PREDICATES = { - 170 TokenType.ANY: exp.Any, - 171 TokenType.ALL: exp.All, - 172 TokenType.EXISTS: exp.Exists, - 173 TokenType.SOME: exp.Any, - 174 } - 175 - 176 RESERVED_KEYWORDS = {*Tokenizer.SINGLE_TOKENS.values(), TokenType.SELECT} + 61class Parser(metaclass=_Parser): + 62 """ + 63 Parser consumes a list of tokens produced by the `sqlglot.tokens.Tokenizer` and produces + 64 a parsed syntax tree. + 65 + 66 Args: + 67 error_level: the desired error level. + 68 Default: ErrorLevel.RAISE + 69 error_message_context: determines the amount of context to capture from a + 70 query string when displaying the error message (in number of characters). + 71 Default: 50. + 72 index_offset: Index offset for arrays eg ARRAY[0] vs ARRAY[1] as the head of a list. + 73 Default: 0 + 74 alias_post_tablesample: If the table alias comes after tablesample. + 75 Default: False + 76 max_errors: Maximum number of error messages to include in a raised ParseError. + 77 This is only relevant if error_level is ErrorLevel.RAISE. + 78 Default: 3 + 79 null_ordering: Indicates the default null ordering method to use if not explicitly set. + 80 Options are "nulls_are_small", "nulls_are_large", "nulls_are_last". + 81 Default: "nulls_are_small" + 82 """ + 83 + 84 FUNCTIONS: t.Dict[str, t.Callable] = { + 85 **{name: f.from_arg_list for f in exp.ALL_FUNCTIONS for name in f.sql_names()}, + 86 "DATE_TO_DATE_STR": lambda args: exp.Cast( + 87 this=seq_get(args, 0), + 88 to=exp.DataType(this=exp.DataType.Type.TEXT), + 89 ), + 90 "GLOB": lambda args: exp.Glob(this=seq_get(args, 1), expression=seq_get(args, 0)), + 91 "IFNULL": exp.Coalesce.from_arg_list, + 92 "LIKE": parse_like, + 93 "TIME_TO_TIME_STR": lambda args: exp.Cast( + 94 this=seq_get(args, 0), + 95 to=exp.DataType(this=exp.DataType.Type.TEXT), + 96 ), + 97 "TS_OR_DS_TO_DATE_STR": lambda args: exp.Substring( + 98 this=exp.Cast( + 99 this=seq_get(args, 0), + 100 to=exp.DataType(this=exp.DataType.Type.TEXT), + 101 ), + 102 start=exp.Literal.number(1), + 103 length=exp.Literal.number(10), + 104 ), + 105 "VAR_MAP": parse_var_map, + 106 } + 107 + 108 NO_PAREN_FUNCTIONS = { + 109 TokenType.CURRENT_DATE: exp.CurrentDate, + 110 TokenType.CURRENT_DATETIME: exp.CurrentDate, + 111 TokenType.CURRENT_TIME: exp.CurrentTime, + 112 TokenType.CURRENT_TIMESTAMP: exp.CurrentTimestamp, + 113 TokenType.CURRENT_USER: exp.CurrentUser, + 114 } + 115 + 116 JOIN_HINTS: t.Set[str] = set() + 117 + 118 NESTED_TYPE_TOKENS = { + 119 TokenType.ARRAY, + 120 TokenType.MAP, + 121 TokenType.STRUCT, + 122 TokenType.NULLABLE, + 123 } + 124 + 125 TYPE_TOKENS = { + 126 TokenType.BIT, + 127 TokenType.BOOLEAN, + 128 TokenType.TINYINT, + 129 TokenType.SMALLINT, + 130 TokenType.INT, + 131 TokenType.BIGINT, + 132 TokenType.FLOAT, + 133 TokenType.DOUBLE, + 134 TokenType.CHAR, + 135 TokenType.NCHAR, + 136 TokenType.VARCHAR, + 137 TokenType.NVARCHAR, + 138 TokenType.TEXT, + 139 TokenType.MEDIUMTEXT, + 140 TokenType.LONGTEXT, + 141 TokenType.MEDIUMBLOB, + 142 TokenType.LONGBLOB, + 143 TokenType.BINARY, + 144 TokenType.VARBINARY, + 145 TokenType.JSON, + 146 TokenType.JSONB, + 147 TokenType.INTERVAL, + 148 TokenType.TIME, + 149 TokenType.TIMESTAMP, + 150 TokenType.TIMESTAMPTZ, + 151 TokenType.TIMESTAMPLTZ, + 152 TokenType.DATETIME, + 153 TokenType.DATE, + 154 TokenType.DECIMAL, + 155 TokenType.BIGDECIMAL, + 156 TokenType.UUID, + 157 TokenType.GEOGRAPHY, + 158 TokenType.GEOMETRY, + 159 TokenType.HLLSKETCH, + 160 TokenType.HSTORE, + 161 TokenType.PSEUDO_TYPE, + 162 TokenType.SUPER, + 163 TokenType.SERIAL, + 164 TokenType.SMALLSERIAL, + 165 TokenType.BIGSERIAL, + 166 TokenType.XML, + 167 TokenType.UNIQUEIDENTIFIER, + 168 TokenType.MONEY, + 169 TokenType.SMALLMONEY, + 170 TokenType.ROWVERSION, + 171 TokenType.IMAGE, + 172 TokenType.VARIANT, + 173 TokenType.OBJECT, + 174 TokenType.INET, + 175 *NESTED_TYPE_TOKENS, + 176 } 177 - 178 DB_CREATABLES = { - 179 TokenType.DATABASE, - 180 TokenType.SCHEMA, - 181 TokenType.TABLE, - 182 TokenType.VIEW, + 178 SUBQUERY_PREDICATES = { + 179 TokenType.ANY: exp.Any, + 180 TokenType.ALL: exp.All, + 181 TokenType.EXISTS: exp.Exists, + 182 TokenType.SOME: exp.Any, 183 } 184 - 185 CREATABLES = { - 186 TokenType.COLUMN, - 187 TokenType.FUNCTION, - 188 TokenType.INDEX, - 189 TokenType.PROCEDURE, - 190 *DB_CREATABLES, - 191 } - 192 - 193 ID_VAR_TOKENS = { - 194 TokenType.VAR, - 195 TokenType.ANTI, - 196 TokenType.APPLY, - 197 TokenType.AUTO_INCREMENT, - 198 TokenType.BEGIN, - 199 TokenType.BOTH, - 200 TokenType.BUCKET, - 201 TokenType.CACHE, - 202 TokenType.CASCADE, - 203 TokenType.COLLATE, - 204 TokenType.COMMAND, - 205 TokenType.COMMENT, - 206 TokenType.COMMIT, - 207 TokenType.COMPOUND, - 208 TokenType.CONSTRAINT, - 209 TokenType.DEFAULT, - 210 TokenType.DELETE, - 211 TokenType.DESCRIBE, - 212 TokenType.DIV, - 213 TokenType.END, - 214 TokenType.EXECUTE, - 215 TokenType.ESCAPE, - 216 TokenType.FALSE, - 217 TokenType.FIRST, - 218 TokenType.FILTER, - 219 TokenType.FOLLOWING, - 220 TokenType.FORMAT, - 221 TokenType.FULL, - 222 TokenType.IF, - 223 TokenType.ISNULL, - 224 TokenType.INTERVAL, - 225 TokenType.LAZY, - 226 TokenType.LEADING, - 227 TokenType.LEFT, - 228 TokenType.LOCAL, - 229 TokenType.MATERIALIZED, - 230 TokenType.MERGE, - 231 TokenType.NATURAL, - 232 TokenType.NEXT, - 233 TokenType.OFFSET, - 234 TokenType.ONLY, - 235 TokenType.OPTIONS, - 236 TokenType.ORDINALITY, - 237 TokenType.PARTITION, - 238 TokenType.PERCENT, - 239 TokenType.PIVOT, - 240 TokenType.PRAGMA, - 241 TokenType.PRECEDING, - 242 TokenType.RANGE, - 243 TokenType.REFERENCES, - 244 TokenType.RIGHT, - 245 TokenType.ROW, - 246 TokenType.ROWS, - 247 TokenType.SEED, - 248 TokenType.SEMI, - 249 TokenType.SET, - 250 TokenType.SHOW, - 251 TokenType.SORTKEY, - 252 TokenType.TEMPORARY, - 253 TokenType.TOP, - 254 TokenType.TRAILING, - 255 TokenType.TRUE, - 256 TokenType.UNBOUNDED, - 257 TokenType.UNIQUE, - 258 TokenType.UNLOGGED, - 259 TokenType.UNPIVOT, - 260 TokenType.VOLATILE, - 261 TokenType.WINDOW, - 262 *CREATABLES, - 263 *SUBQUERY_PREDICATES, - 264 *TYPE_TOKENS, - 265 *NO_PAREN_FUNCTIONS, - 266 } - 267 - 268 TABLE_ALIAS_TOKENS = ID_VAR_TOKENS - { - 269 TokenType.APPLY, - 270 TokenType.FULL, - 271 TokenType.LEFT, - 272 TokenType.NATURAL, - 273 TokenType.OFFSET, - 274 TokenType.RIGHT, - 275 TokenType.WINDOW, - 276 } - 277 - 278 UPDATE_ALIAS_TOKENS = TABLE_ALIAS_TOKENS - {TokenType.SET} - 279 - 280 TRIM_TYPES = {TokenType.LEADING, TokenType.TRAILING, TokenType.BOTH} - 281 - 282 FUNC_TOKENS = { - 283 TokenType.COMMAND, - 284 TokenType.CURRENT_DATE, - 285 TokenType.CURRENT_DATETIME, - 286 TokenType.CURRENT_TIMESTAMP, - 287 TokenType.CURRENT_TIME, - 288 TokenType.FILTER, - 289 TokenType.FIRST, - 290 TokenType.FORMAT, - 291 TokenType.GLOB, - 292 TokenType.IDENTIFIER, - 293 TokenType.INDEX, - 294 TokenType.ISNULL, - 295 TokenType.ILIKE, - 296 TokenType.LIKE, - 297 TokenType.MERGE, - 298 TokenType.OFFSET, - 299 TokenType.PRIMARY_KEY, - 300 TokenType.REPLACE, - 301 TokenType.ROW, - 302 TokenType.UNNEST, - 303 TokenType.VAR, - 304 TokenType.LEFT, - 305 TokenType.RIGHT, - 306 TokenType.DATE, - 307 TokenType.DATETIME, - 308 TokenType.TABLE, - 309 TokenType.TIMESTAMP, - 310 TokenType.TIMESTAMPTZ, - 311 TokenType.WINDOW, - 312 *TYPE_TOKENS, - 313 *SUBQUERY_PREDICATES, - 314 } - 315 - 316 CONJUNCTION = { - 317 TokenType.AND: exp.And, - 318 TokenType.OR: exp.Or, - 319 } - 320 - 321 EQUALITY = { - 322 TokenType.EQ: exp.EQ, - 323 TokenType.NEQ: exp.NEQ, - 324 TokenType.NULLSAFE_EQ: exp.NullSafeEQ, - 325 } - 326 - 327 COMPARISON = { - 328 TokenType.GT: exp.GT, - 329 TokenType.GTE: exp.GTE, - 330 TokenType.LT: exp.LT, - 331 TokenType.LTE: exp.LTE, - 332 } - 333 - 334 BITWISE = { - 335 TokenType.AMP: exp.BitwiseAnd, - 336 TokenType.CARET: exp.BitwiseXor, - 337 TokenType.PIPE: exp.BitwiseOr, - 338 TokenType.DPIPE: exp.DPipe, - 339 } - 340 - 341 TERM = { - 342 TokenType.DASH: exp.Sub, - 343 TokenType.PLUS: exp.Add, - 344 TokenType.MOD: exp.Mod, - 345 TokenType.COLLATE: exp.Collate, - 346 } - 347 - 348 FACTOR = { - 349 TokenType.DIV: exp.IntDiv, - 350 TokenType.LR_ARROW: exp.Distance, - 351 TokenType.SLASH: exp.Div, - 352 TokenType.STAR: exp.Mul, - 353 } - 354 - 355 TIMESTAMPS = { - 356 TokenType.TIME, - 357 TokenType.TIMESTAMP, - 358 TokenType.TIMESTAMPTZ, - 359 TokenType.TIMESTAMPLTZ, - 360 } - 361 - 362 SET_OPERATIONS = { - 363 TokenType.UNION, - 364 TokenType.INTERSECT, - 365 TokenType.EXCEPT, - 366 } - 367 - 368 JOIN_SIDES = { - 369 TokenType.LEFT, - 370 TokenType.RIGHT, - 371 TokenType.FULL, - 372 } - 373 - 374 JOIN_KINDS = { - 375 TokenType.INNER, - 376 TokenType.OUTER, - 377 TokenType.CROSS, - 378 TokenType.SEMI, - 379 TokenType.ANTI, - 380 } - 381 - 382 LAMBDAS = { - 383 TokenType.ARROW: lambda self, expressions: self.expression( - 384 exp.Lambda, - 385 this=self._replace_lambda( - 386 self._parse_conjunction(), - 387 {node.name for node in expressions}, - 388 ), - 389 expressions=expressions, - 390 ), - 391 TokenType.FARROW: lambda self, expressions: self.expression( - 392 exp.Kwarg, - 393 this=exp.Var(this=expressions[0].name), - 394 expression=self._parse_conjunction(), - 395 ), + 185 RESERVED_KEYWORDS = {*Tokenizer.SINGLE_TOKENS.values(), TokenType.SELECT} + 186 + 187 DB_CREATABLES = { + 188 TokenType.DATABASE, + 189 TokenType.SCHEMA, + 190 TokenType.TABLE, + 191 TokenType.VIEW, + 192 } + 193 + 194 CREATABLES = { + 195 TokenType.COLUMN, + 196 TokenType.FUNCTION, + 197 TokenType.INDEX, + 198 TokenType.PROCEDURE, + 199 *DB_CREATABLES, + 200 } + 201 + 202 ID_VAR_TOKENS = { + 203 TokenType.VAR, + 204 TokenType.ANTI, + 205 TokenType.APPLY, + 206 TokenType.AUTO_INCREMENT, + 207 TokenType.BEGIN, + 208 TokenType.BOTH, + 209 TokenType.BUCKET, + 210 TokenType.CACHE, + 211 TokenType.CASCADE, + 212 TokenType.COLLATE, + 213 TokenType.COMMAND, + 214 TokenType.COMMENT, + 215 TokenType.COMMIT, + 216 TokenType.COMPOUND, + 217 TokenType.CONSTRAINT, + 218 TokenType.DEFAULT, + 219 TokenType.DELETE, + 220 TokenType.DESCRIBE, + 221 TokenType.DIV, + 222 TokenType.END, + 223 TokenType.EXECUTE, + 224 TokenType.ESCAPE, + 225 TokenType.FALSE, + 226 TokenType.FIRST, + 227 TokenType.FILTER, + 228 TokenType.FOLLOWING, + 229 TokenType.FORMAT, + 230 TokenType.FULL, + 231 TokenType.IF, + 232 TokenType.IS, + 233 TokenType.ISNULL, + 234 TokenType.INTERVAL, + 235 TokenType.LAZY, + 236 TokenType.LEADING, + 237 TokenType.LEFT, + 238 TokenType.LOCAL, + 239 TokenType.MATERIALIZED, + 240 TokenType.MERGE, + 241 TokenType.NATURAL, + 242 TokenType.NEXT, + 243 TokenType.OFFSET, + 244 TokenType.ONLY, + 245 TokenType.OPTIONS, + 246 TokenType.ORDINALITY, + 247 TokenType.OVERWRITE, + 248 TokenType.PARTITION, + 249 TokenType.PERCENT, + 250 TokenType.PIVOT, + 251 TokenType.PRAGMA, + 252 TokenType.PRECEDING, + 253 TokenType.RANGE, + 254 TokenType.REFERENCES, + 255 TokenType.RIGHT, + 256 TokenType.ROW, + 257 TokenType.ROWS, + 258 TokenType.SEED, + 259 TokenType.SEMI, + 260 TokenType.SET, + 261 TokenType.SHOW, + 262 TokenType.SORTKEY, + 263 TokenType.TEMPORARY, + 264 TokenType.TOP, + 265 TokenType.TRAILING, + 266 TokenType.TRUE, + 267 TokenType.UNBOUNDED, + 268 TokenType.UNIQUE, + 269 TokenType.UNLOGGED, + 270 TokenType.UNPIVOT, + 271 TokenType.VOLATILE, + 272 TokenType.WINDOW, + 273 *CREATABLES, + 274 *SUBQUERY_PREDICATES, + 275 *TYPE_TOKENS, + 276 *NO_PAREN_FUNCTIONS, + 277 } + 278 + 279 INTERVAL_VARS = ID_VAR_TOKENS - {TokenType.END} + 280 + 281 TABLE_ALIAS_TOKENS = ID_VAR_TOKENS - { + 282 TokenType.APPLY, + 283 TokenType.FULL, + 284 TokenType.LEFT, + 285 TokenType.NATURAL, + 286 TokenType.OFFSET, + 287 TokenType.RIGHT, + 288 TokenType.WINDOW, + 289 } + 290 + 291 COMMENT_TABLE_ALIAS_TOKENS = TABLE_ALIAS_TOKENS - {TokenType.IS} + 292 + 293 UPDATE_ALIAS_TOKENS = TABLE_ALIAS_TOKENS - {TokenType.SET} + 294 + 295 TRIM_TYPES = {TokenType.LEADING, TokenType.TRAILING, TokenType.BOTH} + 296 + 297 FUNC_TOKENS = { + 298 TokenType.COMMAND, + 299 TokenType.CURRENT_DATE, + 300 TokenType.CURRENT_DATETIME, + 301 TokenType.CURRENT_TIMESTAMP, + 302 TokenType.CURRENT_TIME, + 303 TokenType.CURRENT_USER, + 304 TokenType.FILTER, + 305 TokenType.FIRST, + 306 TokenType.FORMAT, + 307 TokenType.GLOB, + 308 TokenType.IDENTIFIER, + 309 TokenType.INDEX, + 310 TokenType.ISNULL, + 311 TokenType.ILIKE, + 312 TokenType.LIKE, + 313 TokenType.MERGE, + 314 TokenType.OFFSET, + 315 TokenType.PRIMARY_KEY, + 316 TokenType.REPLACE, + 317 TokenType.ROW, + 318 TokenType.UNNEST, + 319 TokenType.VAR, + 320 TokenType.LEFT, + 321 TokenType.RIGHT, + 322 TokenType.DATE, + 323 TokenType.DATETIME, + 324 TokenType.TABLE, + 325 TokenType.TIMESTAMP, + 326 TokenType.TIMESTAMPTZ, + 327 TokenType.WINDOW, + 328 *TYPE_TOKENS, + 329 *SUBQUERY_PREDICATES, + 330 } + 331 + 332 CONJUNCTION = { + 333 TokenType.AND: exp.And, + 334 TokenType.OR: exp.Or, + 335 } + 336 + 337 EQUALITY = { + 338 TokenType.EQ: exp.EQ, + 339 TokenType.NEQ: exp.NEQ, + 340 TokenType.NULLSAFE_EQ: exp.NullSafeEQ, + 341 } + 342 + 343 COMPARISON = { + 344 TokenType.GT: exp.GT, + 345 TokenType.GTE: exp.GTE, + 346 TokenType.LT: exp.LT, + 347 TokenType.LTE: exp.LTE, + 348 } + 349 + 350 BITWISE = { + 351 TokenType.AMP: exp.BitwiseAnd, + 352 TokenType.CARET: exp.BitwiseXor, + 353 TokenType.PIPE: exp.BitwiseOr, + 354 TokenType.DPIPE: exp.DPipe, + 355 } + 356 + 357 TERM = { + 358 TokenType.DASH: exp.Sub, + 359 TokenType.PLUS: exp.Add, + 360 TokenType.MOD: exp.Mod, + 361 TokenType.COLLATE: exp.Collate, + 362 } + 363 + 364 FACTOR = { + 365 TokenType.DIV: exp.IntDiv, + 366 TokenType.LR_ARROW: exp.Distance, + 367 TokenType.SLASH: exp.Div, + 368 TokenType.STAR: exp.Mul, + 369 } + 370 + 371 TIMESTAMPS = { + 372 TokenType.TIME, + 373 TokenType.TIMESTAMP, + 374 TokenType.TIMESTAMPTZ, + 375 TokenType.TIMESTAMPLTZ, + 376 } + 377 + 378 SET_OPERATIONS = { + 379 TokenType.UNION, + 380 TokenType.INTERSECT, + 381 TokenType.EXCEPT, + 382 } + 383 + 384 JOIN_SIDES = { + 385 TokenType.LEFT, + 386 TokenType.RIGHT, + 387 TokenType.FULL, + 388 } + 389 + 390 JOIN_KINDS = { + 391 TokenType.INNER, + 392 TokenType.OUTER, + 393 TokenType.CROSS, + 394 TokenType.SEMI, + 395 TokenType.ANTI, 396 } 397 - 398 COLUMN_OPERATORS = { - 399 TokenType.DOT: None, - 400 TokenType.DCOLON: lambda self, this, to: self.expression( - 401 exp.Cast, - 402 this=this, - 403 to=to, - 404 ), - 405 TokenType.ARROW: lambda self, this, path: self.expression( - 406 exp.JSONExtract, - 407 this=this, - 408 expression=path, - 409 ), - 410 TokenType.DARROW: lambda self, this, path: self.expression( - 411 exp.JSONExtractScalar, - 412 this=this, - 413 expression=path, - 414 ), - 415 TokenType.HASH_ARROW: lambda self, this, path: self.expression( - 416 exp.JSONBExtract, - 417 this=this, - 418 expression=path, - 419 ), - 420 TokenType.DHASH_ARROW: lambda self, this, path: self.expression( - 421 exp.JSONBExtractScalar, - 422 this=this, - 423 expression=path, - 424 ), - 425 TokenType.PLACEHOLDER: lambda self, this, key: self.expression( - 426 exp.JSONBContains, - 427 this=this, - 428 expression=key, - 429 ), - 430 } - 431 - 432 EXPRESSION_PARSERS = { - 433 exp.Column: lambda self: self._parse_column(), - 434 exp.DataType: lambda self: self._parse_types(), - 435 exp.From: lambda self: self._parse_from(), - 436 exp.Group: lambda self: self._parse_group(), - 437 exp.Identifier: lambda self: self._parse_id_var(), - 438 exp.Lateral: lambda self: self._parse_lateral(), - 439 exp.Join: lambda self: self._parse_join(), - 440 exp.Order: lambda self: self._parse_order(), - 441 exp.Cluster: lambda self: self._parse_sort(TokenType.CLUSTER_BY, exp.Cluster), - 442 exp.Sort: lambda self: self._parse_sort(TokenType.SORT_BY, exp.Sort), - 443 exp.Lambda: lambda self: self._parse_lambda(), - 444 exp.Limit: lambda self: self._parse_limit(), - 445 exp.Offset: lambda self: self._parse_offset(), - 446 exp.TableAlias: lambda self: self._parse_table_alias(), - 447 exp.Table: lambda self: self._parse_table(), - 448 exp.Condition: lambda self: self._parse_conjunction(), - 449 exp.Expression: lambda self: self._parse_statement(), - 450 exp.Properties: lambda self: self._parse_properties(), - 451 exp.Where: lambda self: self._parse_where(), - 452 exp.Ordered: lambda self: self._parse_ordered(), - 453 exp.Having: lambda self: self._parse_having(), - 454 exp.With: lambda self: self._parse_with(), - 455 exp.Window: lambda self: self._parse_named_window(), - 456 exp.Qualify: lambda self: self._parse_qualify(), - 457 exp.Returning: lambda self: self._parse_returning(), - 458 "JOIN_TYPE": lambda self: self._parse_join_side_and_kind(), - 459 } - 460 - 461 STATEMENT_PARSERS = { - 462 TokenType.ALTER: lambda self: self._parse_alter(), - 463 TokenType.BEGIN: lambda self: self._parse_transaction(), - 464 TokenType.CACHE: lambda self: self._parse_cache(), - 465 TokenType.COMMIT: lambda self: self._parse_commit_or_rollback(), - 466 TokenType.COMMENT: lambda self: self._parse_comment(), - 467 TokenType.CREATE: lambda self: self._parse_create(), - 468 TokenType.DELETE: lambda self: self._parse_delete(), - 469 TokenType.DESC: lambda self: self._parse_describe(), - 470 TokenType.DESCRIBE: lambda self: self._parse_describe(), - 471 TokenType.DROP: lambda self: self._parse_drop(), - 472 TokenType.END: lambda self: self._parse_commit_or_rollback(), - 473 TokenType.INSERT: lambda self: self._parse_insert(), - 474 TokenType.LOAD_DATA: lambda self: self._parse_load_data(), - 475 TokenType.MERGE: lambda self: self._parse_merge(), - 476 TokenType.PRAGMA: lambda self: self.expression(exp.Pragma, this=self._parse_expression()), - 477 TokenType.ROLLBACK: lambda self: self._parse_commit_or_rollback(), - 478 TokenType.SET: lambda self: self._parse_set(), - 479 TokenType.UNCACHE: lambda self: self._parse_uncache(), - 480 TokenType.UPDATE: lambda self: self._parse_update(), - 481 TokenType.USE: lambda self: self.expression( - 482 exp.Use, - 483 kind=self._match_texts(("ROLE", "WAREHOUSE", "DATABASE", "SCHEMA")) - 484 and exp.Var(this=self._prev.text), - 485 this=self._parse_table(schema=False), - 486 ), - 487 } - 488 - 489 UNARY_PARSERS = { - 490 TokenType.PLUS: lambda self: self._parse_unary(), # Unary + is handled as a no-op - 491 TokenType.NOT: lambda self: self.expression(exp.Not, this=self._parse_equality()), - 492 TokenType.TILDA: lambda self: self.expression(exp.BitwiseNot, this=self._parse_unary()), - 493 TokenType.DASH: lambda self: self.expression(exp.Neg, this=self._parse_unary()), - 494 } - 495 - 496 PRIMARY_PARSERS = { - 497 TokenType.STRING: lambda self, token: self.expression( - 498 exp.Literal, this=token.text, is_string=True - 499 ), - 500 TokenType.NUMBER: lambda self, token: self.expression( - 501 exp.Literal, this=token.text, is_string=False + 398 LAMBDAS = { + 399 TokenType.ARROW: lambda self, expressions: self.expression( + 400 exp.Lambda, + 401 this=self._replace_lambda( + 402 self._parse_conjunction(), + 403 {node.name for node in expressions}, + 404 ), + 405 expressions=expressions, + 406 ), + 407 TokenType.FARROW: lambda self, expressions: self.expression( + 408 exp.Kwarg, + 409 this=exp.Var(this=expressions[0].name), + 410 expression=self._parse_conjunction(), + 411 ), + 412 } + 413 + 414 COLUMN_OPERATORS = { + 415 TokenType.DOT: None, + 416 TokenType.DCOLON: lambda self, this, to: self.expression( + 417 exp.Cast if self.STRICT_CAST else exp.TryCast, + 418 this=this, + 419 to=to, + 420 ), + 421 TokenType.ARROW: lambda self, this, path: self.expression( + 422 exp.JSONExtract, + 423 this=this, + 424 expression=path, + 425 ), + 426 TokenType.DARROW: lambda self, this, path: self.expression( + 427 exp.JSONExtractScalar, + 428 this=this, + 429 expression=path, + 430 ), + 431 TokenType.HASH_ARROW: lambda self, this, path: self.expression( + 432 exp.JSONBExtract, + 433 this=this, + 434 expression=path, + 435 ), + 436 TokenType.DHASH_ARROW: lambda self, this, path: self.expression( + 437 exp.JSONBExtractScalar, + 438 this=this, + 439 expression=path, + 440 ), + 441 TokenType.PLACEHOLDER: lambda self, this, key: self.expression( + 442 exp.JSONBContains, + 443 this=this, + 444 expression=key, + 445 ), + 446 } + 447 + 448 EXPRESSION_PARSERS = { + 449 exp.Column: lambda self: self._parse_column(), + 450 exp.DataType: lambda self: self._parse_types(), + 451 exp.From: lambda self: self._parse_from(), + 452 exp.Group: lambda self: self._parse_group(), + 453 exp.Identifier: lambda self: self._parse_id_var(), + 454 exp.Lateral: lambda self: self._parse_lateral(), + 455 exp.Join: lambda self: self._parse_join(), + 456 exp.Order: lambda self: self._parse_order(), + 457 exp.Cluster: lambda self: self._parse_sort(TokenType.CLUSTER_BY, exp.Cluster), + 458 exp.Sort: lambda self: self._parse_sort(TokenType.SORT_BY, exp.Sort), + 459 exp.Lambda: lambda self: self._parse_lambda(), + 460 exp.Limit: lambda self: self._parse_limit(), + 461 exp.Offset: lambda self: self._parse_offset(), + 462 exp.TableAlias: lambda self: self._parse_table_alias(), + 463 exp.Table: lambda self: self._parse_table(), + 464 exp.Condition: lambda self: self._parse_conjunction(), + 465 exp.Expression: lambda self: self._parse_statement(), + 466 exp.Properties: lambda self: self._parse_properties(), + 467 exp.Where: lambda self: self._parse_where(), + 468 exp.Ordered: lambda self: self._parse_ordered(), + 469 exp.Having: lambda self: self._parse_having(), + 470 exp.With: lambda self: self._parse_with(), + 471 exp.Window: lambda self: self._parse_named_window(), + 472 exp.Qualify: lambda self: self._parse_qualify(), + 473 exp.Returning: lambda self: self._parse_returning(), + 474 "JOIN_TYPE": lambda self: self._parse_join_side_and_kind(), + 475 } + 476 + 477 STATEMENT_PARSERS = { + 478 TokenType.ALTER: lambda self: self._parse_alter(), + 479 TokenType.BEGIN: lambda self: self._parse_transaction(), + 480 TokenType.CACHE: lambda self: self._parse_cache(), + 481 TokenType.COMMIT: lambda self: self._parse_commit_or_rollback(), + 482 TokenType.COMMENT: lambda self: self._parse_comment(), + 483 TokenType.CREATE: lambda self: self._parse_create(), + 484 TokenType.DELETE: lambda self: self._parse_delete(), + 485 TokenType.DESC: lambda self: self._parse_describe(), + 486 TokenType.DESCRIBE: lambda self: self._parse_describe(), + 487 TokenType.DROP: lambda self: self._parse_drop(), + 488 TokenType.END: lambda self: self._parse_commit_or_rollback(), + 489 TokenType.INSERT: lambda self: self._parse_insert(), + 490 TokenType.LOAD_DATA: lambda self: self._parse_load_data(), + 491 TokenType.MERGE: lambda self: self._parse_merge(), + 492 TokenType.PRAGMA: lambda self: self.expression(exp.Pragma, this=self._parse_expression()), + 493 TokenType.ROLLBACK: lambda self: self._parse_commit_or_rollback(), + 494 TokenType.SET: lambda self: self._parse_set(), + 495 TokenType.UNCACHE: lambda self: self._parse_uncache(), + 496 TokenType.UPDATE: lambda self: self._parse_update(), + 497 TokenType.USE: lambda self: self.expression( + 498 exp.Use, + 499 kind=self._match_texts(("ROLE", "WAREHOUSE", "DATABASE", "SCHEMA")) + 500 and exp.Var(this=self._prev.text), + 501 this=self._parse_table(schema=False), 502 ), - 503 TokenType.STAR: lambda self, _: self.expression( - 504 exp.Star, - 505 **{"except": self._parse_except(), "replace": self._parse_replace()}, - 506 ), - 507 TokenType.NULL: lambda self, _: self.expression(exp.Null), - 508 TokenType.TRUE: lambda self, _: self.expression(exp.Boolean, this=True), - 509 TokenType.FALSE: lambda self, _: self.expression(exp.Boolean, this=False), - 510 TokenType.BIT_STRING: lambda self, token: self.expression(exp.BitString, this=token.text), - 511 TokenType.HEX_STRING: lambda self, token: self.expression(exp.HexString, this=token.text), - 512 TokenType.BYTE_STRING: lambda self, token: self.expression(exp.ByteString, this=token.text), - 513 TokenType.INTRODUCER: lambda self, token: self._parse_introducer(token), - 514 TokenType.NATIONAL: lambda self, token: self._parse_national(token), - 515 TokenType.SESSION_PARAMETER: lambda self, _: self._parse_session_parameter(), - 516 } - 517 - 518 PLACEHOLDER_PARSERS = { - 519 TokenType.PLACEHOLDER: lambda self: self.expression(exp.Placeholder), - 520 TokenType.PARAMETER: lambda self: self._parse_parameter(), - 521 TokenType.COLON: lambda self: self.expression(exp.Placeholder, this=self._prev.text) - 522 if self._match_set((TokenType.NUMBER, TokenType.VAR)) - 523 else None, - 524 } - 525 - 526 RANGE_PARSERS = { - 527 TokenType.BETWEEN: lambda self, this: self._parse_between(this), - 528 TokenType.GLOB: binary_range_parser(exp.Glob), - 529 TokenType.OVERLAPS: binary_range_parser(exp.Overlaps), - 530 TokenType.IN: lambda self, this: self._parse_in(this), - 531 TokenType.IS: lambda self, this: self._parse_is(this), - 532 TokenType.LIKE: binary_range_parser(exp.Like), - 533 TokenType.ILIKE: binary_range_parser(exp.ILike), - 534 TokenType.IRLIKE: binary_range_parser(exp.RegexpILike), - 535 TokenType.RLIKE: binary_range_parser(exp.RegexpLike), - 536 TokenType.SIMILAR_TO: binary_range_parser(exp.SimilarTo), - 537 } - 538 - 539 PROPERTY_PARSERS = { - 540 "AFTER": lambda self: self._parse_afterjournal( - 541 no=self._prev.text.upper() == "NO", dual=self._prev.text.upper() == "DUAL" - 542 ), - 543 "ALGORITHM": lambda self: self._parse_property_assignment(exp.AlgorithmProperty), - 544 "AUTO_INCREMENT": lambda self: self._parse_property_assignment(exp.AutoIncrementProperty), - 545 "BEFORE": lambda self: self._parse_journal( - 546 no=self._prev.text.upper() == "NO", dual=self._prev.text.upper() == "DUAL" - 547 ), - 548 "BLOCKCOMPRESSION": lambda self: self._parse_blockcompression(), - 549 "CHARACTER SET": lambda self: self._parse_character_set(), - 550 "CHECKSUM": lambda self: self._parse_checksum(), - 551 "CLUSTER BY": lambda self: self.expression( - 552 exp.Cluster, expressions=self._parse_csv(self._parse_ordered) - 553 ), - 554 "COLLATE": lambda self: self._parse_property_assignment(exp.CollateProperty), - 555 "COMMENT": lambda self: self._parse_property_assignment(exp.SchemaCommentProperty), - 556 "DATABLOCKSIZE": lambda self: self._parse_datablocksize( - 557 default=self._prev.text.upper() == "DEFAULT" + 503 } + 504 + 505 UNARY_PARSERS = { + 506 TokenType.PLUS: lambda self: self._parse_unary(), # Unary + is handled as a no-op + 507 TokenType.NOT: lambda self: self.expression(exp.Not, this=self._parse_equality()), + 508 TokenType.TILDA: lambda self: self.expression(exp.BitwiseNot, this=self._parse_unary()), + 509 TokenType.DASH: lambda self: self.expression(exp.Neg, this=self._parse_unary()), + 510 } + 511 + 512 PRIMARY_PARSERS = { + 513 TokenType.STRING: lambda self, token: self.expression( + 514 exp.Literal, this=token.text, is_string=True + 515 ), + 516 TokenType.NUMBER: lambda self, token: self.expression( + 517 exp.Literal, this=token.text, is_string=False + 518 ), + 519 TokenType.STAR: lambda self, _: self.expression( + 520 exp.Star, + 521 **{"except": self._parse_except(), "replace": self._parse_replace()}, + 522 ), + 523 TokenType.NULL: lambda self, _: self.expression(exp.Null), + 524 TokenType.TRUE: lambda self, _: self.expression(exp.Boolean, this=True), + 525 TokenType.FALSE: lambda self, _: self.expression(exp.Boolean, this=False), + 526 TokenType.BIT_STRING: lambda self, token: self.expression(exp.BitString, this=token.text), + 527 TokenType.HEX_STRING: lambda self, token: self.expression(exp.HexString, this=token.text), + 528 TokenType.BYTE_STRING: lambda self, token: self.expression(exp.ByteString, this=token.text), + 529 TokenType.INTRODUCER: lambda self, token: self._parse_introducer(token), + 530 TokenType.NATIONAL: lambda self, token: self._parse_national(token), + 531 TokenType.SESSION_PARAMETER: lambda self, _: self._parse_session_parameter(), + 532 } + 533 + 534 PLACEHOLDER_PARSERS = { + 535 TokenType.PLACEHOLDER: lambda self: self.expression(exp.Placeholder), + 536 TokenType.PARAMETER: lambda self: self._parse_parameter(), + 537 TokenType.COLON: lambda self: self.expression(exp.Placeholder, this=self._prev.text) + 538 if self._match_set((TokenType.NUMBER, TokenType.VAR)) + 539 else None, + 540 } + 541 + 542 RANGE_PARSERS = { + 543 TokenType.BETWEEN: lambda self, this: self._parse_between(this), + 544 TokenType.GLOB: binary_range_parser(exp.Glob), + 545 TokenType.OVERLAPS: binary_range_parser(exp.Overlaps), + 546 TokenType.IN: lambda self, this: self._parse_in(this), + 547 TokenType.IS: lambda self, this: self._parse_is(this), + 548 TokenType.LIKE: binary_range_parser(exp.Like), + 549 TokenType.ILIKE: binary_range_parser(exp.ILike), + 550 TokenType.IRLIKE: binary_range_parser(exp.RegexpILike), + 551 TokenType.RLIKE: binary_range_parser(exp.RegexpLike), + 552 TokenType.SIMILAR_TO: binary_range_parser(exp.SimilarTo), + 553 } + 554 + 555 PROPERTY_PARSERS = { + 556 "AFTER": lambda self: self._parse_afterjournal( + 557 no=self._prev.text.upper() == "NO", dual=self._prev.text.upper() == "DUAL" 558 ), - 559 "DEFINER": lambda self: self._parse_definer(), - 560 "DETERMINISTIC": lambda self: self.expression( - 561 exp.VolatilityProperty, this=exp.Literal.string("IMMUTABLE") - 562 ), - 563 "DISTKEY": lambda self: self._parse_distkey(), - 564 "DISTSTYLE": lambda self: self._parse_property_assignment(exp.DistStyleProperty), - 565 "EXECUTE": lambda self: self._parse_property_assignment(exp.ExecuteAsProperty), - 566 "EXTERNAL": lambda self: self.expression(exp.ExternalProperty), - 567 "FALLBACK": lambda self: self._parse_fallback(no=self._prev.text.upper() == "NO"), - 568 "FORMAT": lambda self: self._parse_property_assignment(exp.FileFormatProperty), - 569 "FREESPACE": lambda self: self._parse_freespace(), - 570 "GLOBAL": lambda self: self._parse_temporary(global_=True), - 571 "IMMUTABLE": lambda self: self.expression( - 572 exp.VolatilityProperty, this=exp.Literal.string("IMMUTABLE") - 573 ), - 574 "JOURNAL": lambda self: self._parse_journal( - 575 no=self._prev.text.upper() == "NO", dual=self._prev.text.upper() == "DUAL" - 576 ), - 577 "LANGUAGE": lambda self: self._parse_property_assignment(exp.LanguageProperty), - 578 "LIKE": lambda self: self._parse_create_like(), - 579 "LOCAL": lambda self: self._parse_afterjournal(no=False, dual=False, local=True), - 580 "LOCATION": lambda self: self._parse_property_assignment(exp.LocationProperty), - 581 "LOCK": lambda self: self._parse_locking(), - 582 "LOCKING": lambda self: self._parse_locking(), - 583 "LOG": lambda self: self._parse_log(no=self._prev.text.upper() == "NO"), - 584 "MATERIALIZED": lambda self: self.expression(exp.MaterializedProperty), - 585 "MAX": lambda self: self._parse_datablocksize(), - 586 "MAXIMUM": lambda self: self._parse_datablocksize(), - 587 "MERGEBLOCKRATIO": lambda self: self._parse_mergeblockratio( - 588 no=self._prev.text.upper() == "NO", default=self._prev.text.upper() == "DEFAULT" + 559 "ALGORITHM": lambda self: self._parse_property_assignment(exp.AlgorithmProperty), + 560 "AUTO_INCREMENT": lambda self: self._parse_property_assignment(exp.AutoIncrementProperty), + 561 "BEFORE": lambda self: self._parse_journal( + 562 no=self._prev.text.upper() == "NO", dual=self._prev.text.upper() == "DUAL" + 563 ), + 564 "BLOCKCOMPRESSION": lambda self: self._parse_blockcompression(), + 565 "CHARACTER SET": lambda self: self._parse_character_set(), + 566 "CHECKSUM": lambda self: self._parse_checksum(), + 567 "CLUSTER BY": lambda self: self.expression( + 568 exp.Cluster, expressions=self._parse_csv(self._parse_ordered) + 569 ), + 570 "COLLATE": lambda self: self._parse_property_assignment(exp.CollateProperty), + 571 "COMMENT": lambda self: self._parse_property_assignment(exp.SchemaCommentProperty), + 572 "DATABLOCKSIZE": lambda self: self._parse_datablocksize( + 573 default=self._prev.text.upper() == "DEFAULT" + 574 ), + 575 "DEFINER": lambda self: self._parse_definer(), + 576 "DETERMINISTIC": lambda self: self.expression( + 577 exp.StabilityProperty, this=exp.Literal.string("IMMUTABLE") + 578 ), + 579 "DISTKEY": lambda self: self._parse_distkey(), + 580 "DISTSTYLE": lambda self: self._parse_property_assignment(exp.DistStyleProperty), + 581 "EXECUTE": lambda self: self._parse_property_assignment(exp.ExecuteAsProperty), + 582 "EXTERNAL": lambda self: self.expression(exp.ExternalProperty), + 583 "FALLBACK": lambda self: self._parse_fallback(no=self._prev.text.upper() == "NO"), + 584 "FORMAT": lambda self: self._parse_property_assignment(exp.FileFormatProperty), + 585 "FREESPACE": lambda self: self._parse_freespace(), + 586 "GLOBAL": lambda self: self._parse_temporary(global_=True), + 587 "IMMUTABLE": lambda self: self.expression( + 588 exp.StabilityProperty, this=exp.Literal.string("IMMUTABLE") 589 ), - 590 "MIN": lambda self: self._parse_datablocksize(), - 591 "MINIMUM": lambda self: self._parse_datablocksize(), - 592 "MULTISET": lambda self: self.expression(exp.SetProperty, multi=True), - 593 "NO": lambda self: self._parse_noprimaryindex(), - 594 "NOT": lambda self: self._parse_afterjournal(no=False, dual=False, local=False), - 595 "ON": lambda self: self._parse_oncommit(), - 596 "PARTITION BY": lambda self: self._parse_partitioned_by(), - 597 "PARTITIONED BY": lambda self: self._parse_partitioned_by(), - 598 "PARTITIONED_BY": lambda self: self._parse_partitioned_by(), - 599 "RETURNS": lambda self: self._parse_returns(), - 600 "ROW": lambda self: self._parse_row(), - 601 "SET": lambda self: self.expression(exp.SetProperty, multi=False), - 602 "SORTKEY": lambda self: self._parse_sortkey(), - 603 "STABLE": lambda self: self.expression( - 604 exp.VolatilityProperty, this=exp.Literal.string("STABLE") + 590 "JOURNAL": lambda self: self._parse_journal( + 591 no=self._prev.text.upper() == "NO", dual=self._prev.text.upper() == "DUAL" + 592 ), + 593 "LANGUAGE": lambda self: self._parse_property_assignment(exp.LanguageProperty), + 594 "LIKE": lambda self: self._parse_create_like(), + 595 "LOCAL": lambda self: self._parse_afterjournal(no=False, dual=False, local=True), + 596 "LOCATION": lambda self: self._parse_property_assignment(exp.LocationProperty), + 597 "LOCK": lambda self: self._parse_locking(), + 598 "LOCKING": lambda self: self._parse_locking(), + 599 "LOG": lambda self: self._parse_log(no=self._prev.text.upper() == "NO"), + 600 "MATERIALIZED": lambda self: self.expression(exp.MaterializedProperty), + 601 "MAX": lambda self: self._parse_datablocksize(), + 602 "MAXIMUM": lambda self: self._parse_datablocksize(), + 603 "MERGEBLOCKRATIO": lambda self: self._parse_mergeblockratio( + 604 no=self._prev.text.upper() == "NO", default=self._prev.text.upper() == "DEFAULT" 605 ), - 606 "STORED": lambda self: self._parse_property_assignment(exp.FileFormatProperty), - 607 "TABLE_FORMAT": lambda self: self._parse_property_assignment(exp.TableFormatProperty), - 608 "TBLPROPERTIES": lambda self: self._parse_wrapped_csv(self._parse_property), - 609 "TEMPORARY": lambda self: self._parse_temporary(global_=False), - 610 "TRANSIENT": lambda self: self.expression(exp.TransientProperty), - 611 "USING": lambda self: self._parse_property_assignment(exp.TableFormatProperty), - 612 "VOLATILE": lambda self: self.expression( - 613 exp.VolatilityProperty, this=exp.Literal.string("VOLATILE") - 614 ), - 615 "WITH": lambda self: self._parse_with_property(), - 616 } - 617 - 618 CONSTRAINT_PARSERS = { - 619 "AUTOINCREMENT": lambda self: self._parse_auto_increment(), - 620 "AUTO_INCREMENT": lambda self: self._parse_auto_increment(), - 621 "CASESPECIFIC": lambda self: self.expression(exp.CaseSpecificColumnConstraint, not_=False), - 622 "CHARACTER SET": lambda self: self.expression( - 623 exp.CharacterSetColumnConstraint, this=self._parse_var_or_string() - 624 ), - 625 "CHECK": lambda self: self.expression( - 626 exp.CheckColumnConstraint, this=self._parse_wrapped(self._parse_conjunction) - 627 ), - 628 "COLLATE": lambda self: self.expression( - 629 exp.CollateColumnConstraint, this=self._parse_var() - 630 ), - 631 "COMMENT": lambda self: self.expression( - 632 exp.CommentColumnConstraint, this=self._parse_string() - 633 ), - 634 "COMPRESS": lambda self: self._parse_compress(), - 635 "DEFAULT": lambda self: self.expression( - 636 exp.DefaultColumnConstraint, this=self._parse_bitwise() - 637 ), - 638 "ENCODE": lambda self: self.expression(exp.EncodeColumnConstraint, this=self._parse_var()), - 639 "FOREIGN KEY": lambda self: self._parse_foreign_key(), - 640 "FORMAT": lambda self: self.expression( - 641 exp.DateFormatColumnConstraint, this=self._parse_var_or_string() - 642 ), - 643 "GENERATED": lambda self: self._parse_generated_as_identity(), - 644 "IDENTITY": lambda self: self._parse_auto_increment(), - 645 "INLINE": lambda self: self._parse_inline(), - 646 "LIKE": lambda self: self._parse_create_like(), - 647 "NOT": lambda self: self._parse_not_constraint(), - 648 "NULL": lambda self: self.expression(exp.NotNullColumnConstraint, allow_null=True), - 649 "PATH": lambda self: self.expression(exp.PathColumnConstraint, this=self._parse_string()), - 650 "PRIMARY KEY": lambda self: self._parse_primary_key(), - 651 "TITLE": lambda self: self.expression( - 652 exp.TitleColumnConstraint, this=self._parse_var_or_string() + 606 "MIN": lambda self: self._parse_datablocksize(), + 607 "MINIMUM": lambda self: self._parse_datablocksize(), + 608 "MULTISET": lambda self: self.expression(exp.SetProperty, multi=True), + 609 "NO": lambda self: self._parse_noprimaryindex(), + 610 "NOT": lambda self: self._parse_afterjournal(no=False, dual=False, local=False), + 611 "ON": lambda self: self._parse_oncommit(), + 612 "PARTITION BY": lambda self: self._parse_partitioned_by(), + 613 "PARTITIONED BY": lambda self: self._parse_partitioned_by(), + 614 "PARTITIONED_BY": lambda self: self._parse_partitioned_by(), + 615 "RETURNS": lambda self: self._parse_returns(), + 616 "ROW": lambda self: self._parse_row(), + 617 "ROW_FORMAT": lambda self: self._parse_property_assignment(exp.RowFormatProperty), + 618 "SET": lambda self: self.expression(exp.SetProperty, multi=False), + 619 "SORTKEY": lambda self: self._parse_sortkey(), + 620 "STABLE": lambda self: self.expression( + 621 exp.StabilityProperty, this=exp.Literal.string("STABLE") + 622 ), + 623 "STORED": lambda self: self._parse_stored(), + 624 "TABLE_FORMAT": lambda self: self._parse_property_assignment(exp.TableFormatProperty), + 625 "TBLPROPERTIES": lambda self: self._parse_wrapped_csv(self._parse_property), + 626 "TEMP": lambda self: self._parse_temporary(global_=False), + 627 "TEMPORARY": lambda self: self._parse_temporary(global_=False), + 628 "TRANSIENT": lambda self: self.expression(exp.TransientProperty), + 629 "USING": lambda self: self._parse_property_assignment(exp.TableFormatProperty), + 630 "VOLATILE": lambda self: self._parse_volatile_property(), + 631 "WITH": lambda self: self._parse_with_property(), + 632 } + 633 + 634 CONSTRAINT_PARSERS = { + 635 "AUTOINCREMENT": lambda self: self._parse_auto_increment(), + 636 "AUTO_INCREMENT": lambda self: self._parse_auto_increment(), + 637 "CASESPECIFIC": lambda self: self.expression(exp.CaseSpecificColumnConstraint, not_=False), + 638 "CHARACTER SET": lambda self: self.expression( + 639 exp.CharacterSetColumnConstraint, this=self._parse_var_or_string() + 640 ), + 641 "CHECK": lambda self: self.expression( + 642 exp.CheckColumnConstraint, this=self._parse_wrapped(self._parse_conjunction) + 643 ), + 644 "COLLATE": lambda self: self.expression( + 645 exp.CollateColumnConstraint, this=self._parse_var() + 646 ), + 647 "COMMENT": lambda self: self.expression( + 648 exp.CommentColumnConstraint, this=self._parse_string() + 649 ), + 650 "COMPRESS": lambda self: self._parse_compress(), + 651 "DEFAULT": lambda self: self.expression( + 652 exp.DefaultColumnConstraint, this=self._parse_bitwise() 653 ), - 654 "UNIQUE": lambda self: self._parse_unique(), - 655 "UPPERCASE": lambda self: self.expression(exp.UppercaseColumnConstraint), - 656 } - 657 - 658 ALTER_PARSERS = { - 659 "ADD": lambda self: self._parse_alter_table_add(), - 660 "ALTER": lambda self: self._parse_alter_table_alter(), - 661 "DELETE": lambda self: self.expression(exp.Delete, where=self._parse_where()), - 662 "DROP": lambda self: self._parse_alter_table_drop(), - 663 "RENAME": lambda self: self._parse_alter_table_rename(), - 664 } - 665 - 666 SCHEMA_UNNAMED_CONSTRAINTS = {"CHECK", "FOREIGN KEY", "LIKE", "PRIMARY KEY", "UNIQUE"} - 667 - 668 NO_PAREN_FUNCTION_PARSERS = { - 669 TokenType.CASE: lambda self: self._parse_case(), - 670 TokenType.IF: lambda self: self._parse_if(), - 671 TokenType.ANY: lambda self: self.expression(exp.Any, this=self._parse_bitwise()), - 672 } - 673 - 674 FUNCTION_PARSERS: t.Dict[str, t.Callable] = { - 675 "CAST": lambda self: self._parse_cast(self.STRICT_CAST), - 676 "CONVERT": lambda self: self._parse_convert(self.STRICT_CAST), - 677 "DECODE": lambda self: self._parse_decode(), - 678 "EXTRACT": lambda self: self._parse_extract(), - 679 "JSON_OBJECT": lambda self: self._parse_json_object(), - 680 "LOG": lambda self: self._parse_logarithm(), - 681 "MATCH": lambda self: self._parse_match_against(), - 682 "POSITION": lambda self: self._parse_position(), - 683 "STRING_AGG": lambda self: self._parse_string_agg(), - 684 "SUBSTRING": lambda self: self._parse_substring(), - 685 "TRIM": lambda self: self._parse_trim(), - 686 "TRY_CAST": lambda self: self._parse_cast(False), - 687 "TRY_CONVERT": lambda self: self._parse_convert(False), - 688 } - 689 - 690 QUERY_MODIFIER_PARSERS = { - 691 "match": lambda self: self._parse_match_recognize(), - 692 "where": lambda self: self._parse_where(), - 693 "group": lambda self: self._parse_group(), - 694 "having": lambda self: self._parse_having(), - 695 "qualify": lambda self: self._parse_qualify(), - 696 "windows": lambda self: self._parse_window_clause(), - 697 "distribute": lambda self: self._parse_sort(TokenType.DISTRIBUTE_BY, exp.Distribute), - 698 "sort": lambda self: self._parse_sort(TokenType.SORT_BY, exp.Sort), - 699 "cluster": lambda self: self._parse_sort(TokenType.CLUSTER_BY, exp.Cluster), - 700 "order": lambda self: self._parse_order(), - 701 "limit": lambda self: self._parse_limit(), - 702 "offset": lambda self: self._parse_offset(), - 703 "lock": lambda self: self._parse_lock(), - 704 "sample": lambda self: self._parse_table_sample(as_modifier=True), - 705 } - 706 - 707 SET_PARSERS = { - 708 "GLOBAL": lambda self: self._parse_set_item_assignment("GLOBAL"), - 709 "LOCAL": lambda self: self._parse_set_item_assignment("LOCAL"), - 710 "SESSION": lambda self: self._parse_set_item_assignment("SESSION"), - 711 "TRANSACTION": lambda self: self._parse_set_transaction(), - 712 } - 713 - 714 SHOW_PARSERS: t.Dict[str, t.Callable] = {} - 715 - 716 MODIFIABLES = (exp.Subquery, exp.Subqueryable, exp.Table) - 717 - 718 TRANSACTION_KIND = {"DEFERRED", "IMMEDIATE", "EXCLUSIVE"} - 719 - 720 TRANSACTION_CHARACTERISTICS = { - 721 "ISOLATION LEVEL REPEATABLE READ", - 722 "ISOLATION LEVEL READ COMMITTED", - 723 "ISOLATION LEVEL READ UNCOMMITTED", - 724 "ISOLATION LEVEL SERIALIZABLE", - 725 "READ WRITE", - 726 "READ ONLY", - 727 } - 728 - 729 INSERT_ALTERNATIVES = {"ABORT", "FAIL", "IGNORE", "REPLACE", "ROLLBACK"} - 730 - 731 WINDOW_ALIAS_TOKENS = ID_VAR_TOKENS - {TokenType.ROWS} + 654 "ENCODE": lambda self: self.expression(exp.EncodeColumnConstraint, this=self._parse_var()), + 655 "FOREIGN KEY": lambda self: self._parse_foreign_key(), + 656 "FORMAT": lambda self: self.expression( + 657 exp.DateFormatColumnConstraint, this=self._parse_var_or_string() + 658 ), + 659 "GENERATED": lambda self: self._parse_generated_as_identity(), + 660 "IDENTITY": lambda self: self._parse_auto_increment(), + 661 "INLINE": lambda self: self._parse_inline(), + 662 "LIKE": lambda self: self._parse_create_like(), + 663 "NOT": lambda self: self._parse_not_constraint(), + 664 "NULL": lambda self: self.expression(exp.NotNullColumnConstraint, allow_null=True), + 665 "ON": lambda self: self._match(TokenType.UPDATE) + 666 and self.expression(exp.OnUpdateColumnConstraint, this=self._parse_function()), + 667 "PATH": lambda self: self.expression(exp.PathColumnConstraint, this=self._parse_string()), + 668 "PRIMARY KEY": lambda self: self._parse_primary_key(), + 669 "REFERENCES": lambda self: self._parse_references(match=False), + 670 "TITLE": lambda self: self.expression( + 671 exp.TitleColumnConstraint, this=self._parse_var_or_string() + 672 ), + 673 "UNIQUE": lambda self: self._parse_unique(), + 674 "UPPERCASE": lambda self: self.expression(exp.UppercaseColumnConstraint), + 675 } + 676 + 677 ALTER_PARSERS = { + 678 "ADD": lambda self: self._parse_alter_table_add(), + 679 "ALTER": lambda self: self._parse_alter_table_alter(), + 680 "DELETE": lambda self: self.expression(exp.Delete, where=self._parse_where()), + 681 "DROP": lambda self: self._parse_alter_table_drop(), + 682 "RENAME": lambda self: self._parse_alter_table_rename(), + 683 } + 684 + 685 SCHEMA_UNNAMED_CONSTRAINTS = {"CHECK", "FOREIGN KEY", "LIKE", "PRIMARY KEY", "UNIQUE"} + 686 + 687 NO_PAREN_FUNCTION_PARSERS = { + 688 TokenType.CASE: lambda self: self._parse_case(), + 689 TokenType.IF: lambda self: self._parse_if(), + 690 TokenType.ANY: lambda self: self.expression(exp.Any, this=self._parse_bitwise()), + 691 } + 692 + 693 FUNCTION_PARSERS: t.Dict[str, t.Callable] = { + 694 "CAST": lambda self: self._parse_cast(self.STRICT_CAST), + 695 "CONVERT": lambda self: self._parse_convert(self.STRICT_CAST), + 696 "DECODE": lambda self: self._parse_decode(), + 697 "EXTRACT": lambda self: self._parse_extract(), + 698 "JSON_OBJECT": lambda self: self._parse_json_object(), + 699 "LOG": lambda self: self._parse_logarithm(), + 700 "MATCH": lambda self: self._parse_match_against(), + 701 "POSITION": lambda self: self._parse_position(), + 702 "STRING_AGG": lambda self: self._parse_string_agg(), + 703 "SUBSTRING": lambda self: self._parse_substring(), + 704 "TRIM": lambda self: self._parse_trim(), + 705 "TRY_CAST": lambda self: self._parse_cast(False), + 706 "TRY_CONVERT": lambda self: self._parse_convert(False), + 707 } + 708 + 709 QUERY_MODIFIER_PARSERS = { + 710 "match": lambda self: self._parse_match_recognize(), + 711 "where": lambda self: self._parse_where(), + 712 "group": lambda self: self._parse_group(), + 713 "having": lambda self: self._parse_having(), + 714 "qualify": lambda self: self._parse_qualify(), + 715 "windows": lambda self: self._parse_window_clause(), + 716 "distribute": lambda self: self._parse_sort(TokenType.DISTRIBUTE_BY, exp.Distribute), + 717 "sort": lambda self: self._parse_sort(TokenType.SORT_BY, exp.Sort), + 718 "cluster": lambda self: self._parse_sort(TokenType.CLUSTER_BY, exp.Cluster), + 719 "order": lambda self: self._parse_order(), + 720 "limit": lambda self: self._parse_limit(), + 721 "offset": lambda self: self._parse_offset(), + 722 "lock": lambda self: self._parse_lock(), + 723 "sample": lambda self: self._parse_table_sample(as_modifier=True), + 724 } + 725 + 726 SET_PARSERS = { + 727 "GLOBAL": lambda self: self._parse_set_item_assignment("GLOBAL"), + 728 "LOCAL": lambda self: self._parse_set_item_assignment("LOCAL"), + 729 "SESSION": lambda self: self._parse_set_item_assignment("SESSION"), + 730 "TRANSACTION": lambda self: self._parse_set_transaction(), + 731 } 732 - 733 ADD_CONSTRAINT_TOKENS = {TokenType.CONSTRAINT, TokenType.PRIMARY_KEY, TokenType.FOREIGN_KEY} + 733 SHOW_PARSERS: t.Dict[str, t.Callable] = {} 734 - 735 STRICT_CAST = True + 735 TYPE_LITERAL_PARSERS: t.Dict[exp.DataType.Type, t.Callable] = {} 736 - 737 CONVERT_TYPE_FIRST = False + 737 MODIFIABLES = (exp.Subquery, exp.Subqueryable, exp.Table) 738 - 739 LOG_BASE_FIRST = True - 740 LOG_DEFAULTS_TO_LN = False - 741 - 742 __slots__ = ( - 743 "error_level", - 744 "error_message_context", - 745 "sql", - 746 "errors", - 747 "index_offset", - 748 "unnest_column_only", - 749 "alias_post_tablesample", - 750 "max_errors", - 751 "null_ordering", - 752 "_tokens", - 753 "_index", - 754 "_curr", - 755 "_next", - 756 "_prev", - 757 "_prev_comments", - 758 "_show_trie", - 759 "_set_trie", - 760 ) - 761 - 762 def __init__( - 763 self, - 764 error_level: t.Optional[ErrorLevel] = None, - 765 error_message_context: int = 100, - 766 index_offset: int = 0, - 767 unnest_column_only: bool = False, - 768 alias_post_tablesample: bool = False, - 769 max_errors: int = 3, - 770 null_ordering: t.Optional[str] = None, - 771 ): - 772 self.error_level = error_level or ErrorLevel.IMMEDIATE - 773 self.error_message_context = error_message_context - 774 self.index_offset = index_offset - 775 self.unnest_column_only = unnest_column_only - 776 self.alias_post_tablesample = alias_post_tablesample - 777 self.max_errors = max_errors - 778 self.null_ordering = null_ordering - 779 self.reset() - 780 - 781 def reset(self): - 782 self.sql = "" - 783 self.errors = [] - 784 self._tokens = [] - 785 self._index = 0 - 786 self._curr = None - 787 self._next = None - 788 self._prev = None - 789 self._prev_comments = None - 790 - 791 def parse( - 792 self, raw_tokens: t.List[Token], sql: t.Optional[str] = None - 793 ) -> t.List[t.Optional[exp.Expression]]: - 794 """ - 795 Parses a list of tokens and returns a list of syntax trees, one tree - 796 per parsed SQL statement. - 797 - 798 Args: - 799 raw_tokens: the list of tokens. - 800 sql: the original SQL string, used to produce helpful debug messages. - 801 - 802 Returns: - 803 The list of syntax trees. - 804 """ - 805 return self._parse( - 806 parse_method=self.__class__._parse_statement, raw_tokens=raw_tokens, sql=sql - 807 ) - 808 - 809 def parse_into( - 810 self, - 811 expression_types: exp.IntoType, - 812 raw_tokens: t.List[Token], - 813 sql: t.Optional[str] = None, - 814 ) -> t.List[t.Optional[exp.Expression]]: - 815 """ - 816 Parses a list of tokens into a given Expression type. If a collection of Expression - 817 types is given instead, this method will try to parse the token list into each one - 818 of them, stopping at the first for which the parsing succeeds. - 819 - 820 Args: - 821 expression_types: the expression type(s) to try and parse the token list into. - 822 raw_tokens: the list of tokens. - 823 sql: the original SQL string, used to produce helpful debug messages. - 824 - 825 Returns: - 826 The target Expression. - 827 """ - 828 errors = [] - 829 for expression_type in ensure_collection(expression_types): - 830 parser = self.EXPRESSION_PARSERS.get(expression_type) - 831 if not parser: - 832 raise TypeError(f"No parser registered for {expression_type}") - 833 try: - 834 return self._parse(parser, raw_tokens, sql) - 835 except ParseError as e: - 836 e.errors[0]["into_expression"] = expression_type - 837 errors.append(e) - 838 raise ParseError( - 839 f"Failed to parse into {expression_types}", - 840 errors=merge_errors(errors), - 841 ) from errors[-1] - 842 - 843 def _parse( - 844 self, - 845 parse_method: t.Callable[[Parser], t.Optional[exp.Expression]], - 846 raw_tokens: t.List[Token], - 847 sql: t.Optional[str] = None, - 848 ) -> t.List[t.Optional[exp.Expression]]: - 849 self.reset() - 850 self.sql = sql or "" - 851 total = len(raw_tokens) - 852 chunks: t.List[t.List[Token]] = [[]] - 853 - 854 for i, token in enumerate(raw_tokens): - 855 if token.token_type == TokenType.SEMICOLON: - 856 if i < total - 1: - 857 chunks.append([]) - 858 else: - 859 chunks[-1].append(token) - 860 - 861 expressions = [] - 862 - 863 for tokens in chunks: - 864 self._index = -1 - 865 self._tokens = tokens - 866 self._advance() - 867 - 868 expressions.append(parse_method(self)) - 869 - 870 if self._index < len(self._tokens): - 871 self.raise_error("Invalid expression / Unexpected token") - 872 - 873 self.check_errors() - 874 - 875 return expressions - 876 - 877 def check_errors(self) -> None: - 878 """ - 879 Logs or raises any found errors, depending on the chosen error level setting. - 880 """ - 881 if self.error_level == ErrorLevel.WARN: - 882 for error in self.errors: - 883 logger.error(str(error)) - 884 elif self.error_level == ErrorLevel.RAISE and self.errors: - 885 raise ParseError( - 886 concat_messages(self.errors, self.max_errors), - 887 errors=merge_errors(self.errors), - 888 ) - 889 - 890 def raise_error(self, message: str, token: t.Optional[Token] = None) -> None: - 891 """ - 892 Appends an error in the list of recorded errors or raises it, depending on the chosen - 893 error level setting. - 894 """ - 895 token = token or self._curr or self._prev or Token.string("") - 896 start = self._find_token(token) - 897 end = start + len(token.text) - 898 start_context = self.sql[max(start - self.error_message_context, 0) : start] - 899 highlight = self.sql[start:end] - 900 end_context = self.sql[end : end + self.error_message_context] - 901 - 902 error = ParseError.new( - 903 f"{message}. Line {token.line}, Col: {token.col}.\n" - 904 f" {start_context}\033[4m{highlight}\033[0m{end_context}", - 905 description=message, - 906 line=token.line, - 907 col=token.col, - 908 start_context=start_context, - 909 highlight=highlight, - 910 end_context=end_context, - 911 ) - 912 - 913 if self.error_level == ErrorLevel.IMMEDIATE: - 914 raise error - 915 - 916 self.errors.append(error) - 917 - 918 def expression( - 919 self, exp_class: t.Type[exp.Expression], comments: t.Optional[t.List[str]] = None, **kwargs - 920 ) -> exp.Expression: - 921 """ - 922 Creates a new, validated Expression. - 923 - 924 Args: - 925 exp_class: the expression class to instantiate. - 926 comments: an optional list of comments to attach to the expression. - 927 kwargs: the arguments to set for the expression along with their respective values. - 928 - 929 Returns: - 930 The target expression. - 931 """ - 932 instance = exp_class(**kwargs) - 933 if self._prev_comments: - 934 instance.comments = self._prev_comments - 935 self._prev_comments = None - 936 if comments: - 937 instance.comments = comments - 938 self.validate_expression(instance) - 939 return instance - 940 - 941 def validate_expression( - 942 self, expression: exp.Expression, args: t.Optional[t.List] = None - 943 ) -> None: - 944 """ - 945 Validates an already instantiated expression, making sure that all its mandatory arguments - 946 are set. + 739 TRANSACTION_KIND = {"DEFERRED", "IMMEDIATE", "EXCLUSIVE"} + 740 + 741 TRANSACTION_CHARACTERISTICS = { + 742 "ISOLATION LEVEL REPEATABLE READ", + 743 "ISOLATION LEVEL READ COMMITTED", + 744 "ISOLATION LEVEL READ UNCOMMITTED", + 745 "ISOLATION LEVEL SERIALIZABLE", + 746 "READ WRITE", + 747 "READ ONLY", + 748 } + 749 + 750 INSERT_ALTERNATIVES = {"ABORT", "FAIL", "IGNORE", "REPLACE", "ROLLBACK"} + 751 + 752 WINDOW_ALIAS_TOKENS = ID_VAR_TOKENS - {TokenType.ROWS} + 753 + 754 ADD_CONSTRAINT_TOKENS = {TokenType.CONSTRAINT, TokenType.PRIMARY_KEY, TokenType.FOREIGN_KEY} + 755 + 756 STRICT_CAST = True + 757 + 758 CONVERT_TYPE_FIRST = False + 759 + 760 QUOTED_PIVOT_COLUMNS: t.Optional[bool] = None + 761 PREFIXED_PIVOT_COLUMNS = False + 762 + 763 LOG_BASE_FIRST = True + 764 LOG_DEFAULTS_TO_LN = False + 765 + 766 __slots__ = ( + 767 "error_level", + 768 "error_message_context", + 769 "sql", + 770 "errors", + 771 "index_offset", + 772 "unnest_column_only", + 773 "alias_post_tablesample", + 774 "max_errors", + 775 "null_ordering", + 776 "_tokens", + 777 "_index", + 778 "_curr", + 779 "_next", + 780 "_prev", + 781 "_prev_comments", + 782 "_show_trie", + 783 "_set_trie", + 784 ) + 785 + 786 def __init__( + 787 self, + 788 error_level: t.Optional[ErrorLevel] = None, + 789 error_message_context: int = 100, + 790 index_offset: int = 0, + 791 unnest_column_only: bool = False, + 792 alias_post_tablesample: bool = False, + 793 max_errors: int = 3, + 794 null_ordering: t.Optional[str] = None, + 795 ): + 796 self.error_level = error_level or ErrorLevel.IMMEDIATE + 797 self.error_message_context = error_message_context + 798 self.index_offset = index_offset + 799 self.unnest_column_only = unnest_column_only + 800 self.alias_post_tablesample = alias_post_tablesample + 801 self.max_errors = max_errors + 802 self.null_ordering = null_ordering + 803 self.reset() + 804 + 805 def reset(self): + 806 self.sql = "" + 807 self.errors = [] + 808 self._tokens = [] + 809 self._index = 0 + 810 self._curr = None + 811 self._next = None + 812 self._prev = None + 813 self._prev_comments = None + 814 + 815 def parse( + 816 self, raw_tokens: t.List[Token], sql: t.Optional[str] = None + 817 ) -> t.List[t.Optional[exp.Expression]]: + 818 """ + 819 Parses a list of tokens and returns a list of syntax trees, one tree + 820 per parsed SQL statement. + 821 + 822 Args: + 823 raw_tokens: the list of tokens. + 824 sql: the original SQL string, used to produce helpful debug messages. + 825 + 826 Returns: + 827 The list of syntax trees. + 828 """ + 829 return self._parse( + 830 parse_method=self.__class__._parse_statement, raw_tokens=raw_tokens, sql=sql + 831 ) + 832 + 833 def parse_into( + 834 self, + 835 expression_types: exp.IntoType, + 836 raw_tokens: t.List[Token], + 837 sql: t.Optional[str] = None, + 838 ) -> t.List[t.Optional[exp.Expression]]: + 839 """ + 840 Parses a list of tokens into a given Expression type. If a collection of Expression + 841 types is given instead, this method will try to parse the token list into each one + 842 of them, stopping at the first for which the parsing succeeds. + 843 + 844 Args: + 845 expression_types: the expression type(s) to try and parse the token list into. + 846 raw_tokens: the list of tokens. + 847 sql: the original SQL string, used to produce helpful debug messages. + 848 + 849 Returns: + 850 The target Expression. + 851 """ + 852 errors = [] + 853 for expression_type in ensure_collection(expression_types): + 854 parser = self.EXPRESSION_PARSERS.get(expression_type) + 855 if not parser: + 856 raise TypeError(f"No parser registered for {expression_type}") + 857 try: + 858 return self._parse(parser, raw_tokens, sql) + 859 except ParseError as e: + 860 e.errors[0]["into_expression"] = expression_type + 861 errors.append(e) + 862 raise ParseError( + 863 f"Failed to parse into {expression_types}", + 864 errors=merge_errors(errors), + 865 ) from errors[-1] + 866 + 867 def _parse( + 868 self, + 869 parse_method: t.Callable[[Parser], t.Optional[exp.Expression]], + 870 raw_tokens: t.List[Token], + 871 sql: t.Optional[str] = None, + 872 ) -> t.List[t.Optional[exp.Expression]]: + 873 self.reset() + 874 self.sql = sql or "" + 875 total = len(raw_tokens) + 876 chunks: t.List[t.List[Token]] = [[]] + 877 + 878 for i, token in enumerate(raw_tokens): + 879 if token.token_type == TokenType.SEMICOLON: + 880 if i < total - 1: + 881 chunks.append([]) + 882 else: + 883 chunks[-1].append(token) + 884 + 885 expressions = [] + 886 + 887 for tokens in chunks: + 888 self._index = -1 + 889 self._tokens = tokens + 890 self._advance() + 891 + 892 expressions.append(parse_method(self)) + 893 + 894 if self._index < len(self._tokens): + 895 self.raise_error("Invalid expression / Unexpected token") + 896 + 897 self.check_errors() + 898 + 899 return expressions + 900 + 901 def check_errors(self) -> None: + 902 """ + 903 Logs or raises any found errors, depending on the chosen error level setting. + 904 """ + 905 if self.error_level == ErrorLevel.WARN: + 906 for error in self.errors: + 907 logger.error(str(error)) + 908 elif self.error_level == ErrorLevel.RAISE and self.errors: + 909 raise ParseError( + 910 concat_messages(self.errors, self.max_errors), + 911 errors=merge_errors(self.errors), + 912 ) + 913 + 914 def raise_error(self, message: str, token: t.Optional[Token] = None) -> None: + 915 """ + 916 Appends an error in the list of recorded errors or raises it, depending on the chosen + 917 error level setting. + 918 """ + 919 token = token or self._curr or self._prev or Token.string("") + 920 start = token.start + 921 end = token.end + 922 start_context = self.sql[max(start - self.error_message_context, 0) : start] + 923 highlight = self.sql[start:end] + 924 end_context = self.sql[end : end + self.error_message_context] + 925 + 926 error = ParseError.new( + 927 f"{message}. Line {token.line}, Col: {token.col}.\n" + 928 f" {start_context}\033[4m{highlight}\033[0m{end_context}", + 929 description=message, + 930 line=token.line, + 931 col=token.col, + 932 start_context=start_context, + 933 highlight=highlight, + 934 end_context=end_context, + 935 ) + 936 + 937 if self.error_level == ErrorLevel.IMMEDIATE: + 938 raise error + 939 + 940 self.errors.append(error) + 941 + 942 def expression( + 943 self, exp_class: t.Type[E], comments: t.Optional[t.List[str]] = None, **kwargs + 944 ) -> E: + 945 """ + 946 Creates a new, validated Expression. 947 948 Args: - 949 expression: the expression to validate. - 950 args: an optional list of items that was used to instantiate the expression, if it's a Func. - 951 """ - 952 if self.error_level == ErrorLevel.IGNORE: - 953 return - 954 - 955 for error_message in expression.error_messages(args): - 956 self.raise_error(error_message) - 957 - 958 def _find_sql(self, start: Token, end: Token) -> str: - 959 return self.sql[self._find_token(start) : self._find_token(end) + len(end.text)] - 960 - 961 def _find_token(self, token: Token) -> int: - 962 line = 1 - 963 col = 1 - 964 index = 0 - 965 - 966 while line < token.line or col < token.col: - 967 if Tokenizer.WHITE_SPACE.get(self.sql[index]) == TokenType.BREAK: - 968 line += 1 - 969 col = 1 - 970 else: - 971 col += 1 - 972 index += 1 - 973 - 974 return index - 975 - 976 def _advance(self, times: int = 1) -> None: - 977 self._index += times - 978 self._curr = seq_get(self._tokens, self._index) - 979 self._next = seq_get(self._tokens, self._index + 1) - 980 if self._index > 0: - 981 self._prev = self._tokens[self._index - 1] - 982 self._prev_comments = self._prev.comments - 983 else: - 984 self._prev = None - 985 self._prev_comments = None - 986 - 987 def _retreat(self, index: int) -> None: - 988 if index != self._index: - 989 self._advance(index - self._index) - 990 - 991 def _parse_command(self) -> exp.Expression: - 992 return self.expression(exp.Command, this=self._prev.text, expression=self._parse_string()) - 993 - 994 def _parse_comment(self, allow_exists: bool = True) -> exp.Expression: - 995 start = self._prev - 996 exists = self._parse_exists() if allow_exists else None - 997 - 998 self._match(TokenType.ON) + 949 exp_class: the expression class to instantiate. + 950 comments: an optional list of comments to attach to the expression. + 951 kwargs: the arguments to set for the expression along with their respective values. + 952 + 953 Returns: + 954 The target expression. + 955 """ + 956 instance = exp_class(**kwargs) + 957 if self._prev_comments: + 958 instance.comments = self._prev_comments + 959 self._prev_comments = None + 960 if comments: + 961 instance.comments = comments + 962 self.validate_expression(instance) + 963 return instance + 964 + 965 def validate_expression( + 966 self, expression: exp.Expression, args: t.Optional[t.List] = None + 967 ) -> None: + 968 """ + 969 Validates an already instantiated expression, making sure that all its mandatory arguments + 970 are set. + 971 + 972 Args: + 973 expression: the expression to validate. + 974 args: an optional list of items that was used to instantiate the expression, if it's a Func. + 975 """ + 976 if self.error_level == ErrorLevel.IGNORE: + 977 return + 978 + 979 for error_message in expression.error_messages(args): + 980 self.raise_error(error_message) + 981 + 982 def _find_sql(self, start: Token, end: Token) -> str: + 983 return self.sql[start.start : end.end] + 984 + 985 def _advance(self, times: int = 1) -> None: + 986 self._index += times + 987 self._curr = seq_get(self._tokens, self._index) + 988 self._next = seq_get(self._tokens, self._index + 1) + 989 if self._index > 0: + 990 self._prev = self._tokens[self._index - 1] + 991 self._prev_comments = self._prev.comments + 992 else: + 993 self._prev = None + 994 self._prev_comments = None + 995 + 996 def _retreat(self, index: int) -> None: + 997 if index != self._index: + 998 self._advance(index - self._index) 999 -1000 kind = self._match_set(self.CREATABLES) and self._prev -1001 -1002 if not kind: -1003 return self._parse_as_command(start) -1004 -1005 if kind.token_type in (TokenType.FUNCTION, TokenType.PROCEDURE): -1006 this = self._parse_user_defined_function(kind=kind.token_type) -1007 elif kind.token_type == TokenType.TABLE: -1008 this = self._parse_table() -1009 elif kind.token_type == TokenType.COLUMN: -1010 this = self._parse_column() -1011 else: -1012 this = self._parse_id_var() +1000 def _parse_command(self) -> exp.Command: +1001 return self.expression(exp.Command, this=self._prev.text, expression=self._parse_string()) +1002 +1003 def _parse_comment(self, allow_exists: bool = True) -> exp.Expression: +1004 start = self._prev +1005 exists = self._parse_exists() if allow_exists else None +1006 +1007 self._match(TokenType.ON) +1008 +1009 kind = self._match_set(self.CREATABLES) and self._prev +1010 +1011 if not kind: +1012 return self._parse_as_command(start) 1013 -1014 self._match(TokenType.IS) -1015 -1016 return self.expression( -1017 exp.Comment, this=this, kind=kind.text, expression=self._parse_string(), exists=exists -1018 ) -1019 -1020 def _parse_statement(self) -> t.Optional[exp.Expression]: -1021 if self._curr is None: -1022 return None -1023 -1024 if self._match_set(self.STATEMENT_PARSERS): -1025 return self.STATEMENT_PARSERS[self._prev.token_type](self) -1026 -1027 if self._match_set(Tokenizer.COMMANDS): -1028 return self._parse_command() -1029 -1030 expression = self._parse_expression() -1031 expression = self._parse_set_operations(expression) if expression else self._parse_select() +1014 if kind.token_type in (TokenType.FUNCTION, TokenType.PROCEDURE): +1015 this = self._parse_user_defined_function(kind=kind.token_type) +1016 elif kind.token_type == TokenType.TABLE: +1017 this = self._parse_table(alias_tokens=self.COMMENT_TABLE_ALIAS_TOKENS) +1018 elif kind.token_type == TokenType.COLUMN: +1019 this = self._parse_column() +1020 else: +1021 this = self._parse_id_var() +1022 +1023 self._match(TokenType.IS) +1024 +1025 return self.expression( +1026 exp.Comment, this=this, kind=kind.text, expression=self._parse_string(), exists=exists +1027 ) +1028 +1029 def _parse_statement(self) -> t.Optional[exp.Expression]: +1030 if self._curr is None: +1031 return None 1032 -1033 self._parse_query_modifiers(expression) -1034 return expression +1033 if self._match_set(self.STATEMENT_PARSERS): +1034 return self.STATEMENT_PARSERS[self._prev.token_type](self) 1035 -1036 def _parse_drop(self, default_kind: t.Optional[str] = None) -> t.Optional[exp.Expression]: -1037 start = self._prev -1038 temporary = self._match(TokenType.TEMPORARY) -1039 materialized = self._match(TokenType.MATERIALIZED) -1040 kind = self._match_set(self.CREATABLES) and self._prev.text -1041 if not kind: -1042 if default_kind: -1043 kind = default_kind -1044 else: -1045 return self._parse_as_command(start) -1046 -1047 return self.expression( -1048 exp.Drop, -1049 exists=self._parse_exists(), -1050 this=self._parse_table(schema=True), -1051 kind=kind, -1052 temporary=temporary, -1053 materialized=materialized, -1054 cascade=self._match(TokenType.CASCADE), -1055 constraints=self._match_text_seq("CONSTRAINTS"), -1056 ) -1057 -1058 def _parse_exists(self, not_: bool = False) -> t.Optional[bool]: -1059 return ( -1060 self._match(TokenType.IF) -1061 and (not not_ or self._match(TokenType.NOT)) -1062 and self._match(TokenType.EXISTS) +1036 if self._match_set(Tokenizer.COMMANDS): +1037 return self._parse_command() +1038 +1039 expression = self._parse_expression() +1040 expression = self._parse_set_operations(expression) if expression else self._parse_select() +1041 +1042 self._parse_query_modifiers(expression) +1043 return expression +1044 +1045 def _parse_drop(self) -> t.Optional[exp.Drop | exp.Command]: +1046 start = self._prev +1047 temporary = self._match(TokenType.TEMPORARY) +1048 materialized = self._match(TokenType.MATERIALIZED) +1049 kind = self._match_set(self.CREATABLES) and self._prev.text +1050 if not kind: +1051 return self._parse_as_command(start) +1052 +1053 return self.expression( +1054 exp.Drop, +1055 exists=self._parse_exists(), +1056 this=self._parse_table(schema=True), +1057 kind=kind, +1058 temporary=temporary, +1059 materialized=materialized, +1060 cascade=self._match(TokenType.CASCADE), +1061 constraints=self._match_text_seq("CONSTRAINTS"), +1062 purge=self._match_text_seq("PURGE"), 1063 ) 1064 -1065 def _parse_create(self) -> t.Optional[exp.Expression]: -1066 start = self._prev -1067 replace = self._prev.text.upper() == "REPLACE" or self._match_pair( -1068 TokenType.OR, TokenType.REPLACE -1069 ) -1070 unique = self._match(TokenType.UNIQUE) -1071 volatile = self._match(TokenType.VOLATILE) -1072 -1073 if self._match_pair(TokenType.TABLE, TokenType.FUNCTION, advance=False): -1074 self._match(TokenType.TABLE) -1075 -1076 properties = None -1077 create_token = self._match_set(self.CREATABLES) and self._prev +1065 def _parse_exists(self, not_: bool = False) -> t.Optional[bool]: +1066 return ( +1067 self._match(TokenType.IF) +1068 and (not not_ or self._match(TokenType.NOT)) +1069 and self._match(TokenType.EXISTS) +1070 ) +1071 +1072 def _parse_create(self) -> t.Optional[exp.Expression]: +1073 start = self._prev +1074 replace = self._prev.text.upper() == "REPLACE" or self._match_pair( +1075 TokenType.OR, TokenType.REPLACE +1076 ) +1077 unique = self._match(TokenType.UNIQUE) 1078 -1079 if not create_token: -1080 properties = self._parse_properties() # exp.Properties.Location.POST_CREATE -1081 create_token = self._match_set(self.CREATABLES) and self._prev -1082 -1083 if not properties or not create_token: -1084 return self._parse_as_command(start) -1085 -1086 exists = self._parse_exists(not_=True) -1087 this = None -1088 expression = None -1089 indexes = None -1090 no_schema_binding = None -1091 begin = None -1092 -1093 if create_token.token_type in (TokenType.FUNCTION, TokenType.PROCEDURE): -1094 this = self._parse_user_defined_function(kind=create_token.token_type) -1095 temp_properties = self._parse_properties() -1096 if properties and temp_properties: -1097 properties.expressions.extend(temp_properties.expressions) -1098 elif temp_properties: -1099 properties = temp_properties -1100 -1101 self._match(TokenType.ALIAS) -1102 begin = self._match(TokenType.BEGIN) -1103 return_ = self._match_text_seq("RETURN") -1104 expression = self._parse_statement() -1105 -1106 if return_: -1107 expression = self.expression(exp.Return, this=expression) -1108 elif create_token.token_type == TokenType.INDEX: -1109 this = self._parse_index() -1110 elif create_token.token_type in self.DB_CREATABLES: -1111 table_parts = self._parse_table_parts(schema=True) -1112 -1113 # exp.Properties.Location.POST_NAME -1114 if self._match(TokenType.COMMA): -1115 temp_properties = self._parse_properties(before=True) -1116 if properties and temp_properties: -1117 properties.expressions.extend(temp_properties.expressions) -1118 elif temp_properties: -1119 properties = temp_properties -1120 -1121 this = self._parse_schema(this=table_parts) -1122 -1123 # exp.Properties.Location.POST_SCHEMA and POST_WITH -1124 temp_properties = self._parse_properties() -1125 if properties and temp_properties: -1126 properties.expressions.extend(temp_properties.expressions) -1127 elif temp_properties: -1128 properties = temp_properties -1129 -1130 self._match(TokenType.ALIAS) -1131 -1132 # exp.Properties.Location.POST_ALIAS -1133 if not ( -1134 self._match(TokenType.SELECT, advance=False) -1135 or self._match(TokenType.WITH, advance=False) -1136 or self._match(TokenType.L_PAREN, advance=False) -1137 ): -1138 temp_properties = self._parse_properties() -1139 if properties and temp_properties: -1140 properties.expressions.extend(temp_properties.expressions) -1141 elif temp_properties: -1142 properties = temp_properties -1143 -1144 expression = self._parse_ddl_select() -1145 -1146 if create_token.token_type == TokenType.TABLE: -1147 # exp.Properties.Location.POST_EXPRESSION -1148 temp_properties = self._parse_properties() -1149 if properties and temp_properties: -1150 properties.expressions.extend(temp_properties.expressions) -1151 elif temp_properties: -1152 properties = temp_properties -1153 -1154 indexes = [] -1155 while True: -1156 index = self._parse_create_table_index() -1157 -1158 # exp.Properties.Location.POST_INDEX -1159 if self._match(TokenType.PARTITION_BY, advance=False): -1160 temp_properties = self._parse_properties() -1161 if properties and temp_properties: -1162 properties.expressions.extend(temp_properties.expressions) -1163 elif temp_properties: -1164 properties = temp_properties -1165 -1166 if not index: -1167 break -1168 else: -1169 indexes.append(index) -1170 elif create_token.token_type == TokenType.VIEW: -1171 if self._match_text_seq("WITH", "NO", "SCHEMA", "BINDING"): -1172 no_schema_binding = True -1173 -1174 return self.expression( -1175 exp.Create, -1176 this=this, -1177 kind=create_token.text, -1178 replace=replace, -1179 unique=unique, -1180 volatile=volatile, -1181 expression=expression, -1182 exists=exists, -1183 properties=properties, -1184 indexes=indexes, -1185 no_schema_binding=no_schema_binding, -1186 begin=begin, -1187 ) -1188 -1189 def _parse_property_before(self) -> t.Optional[exp.Expression]: -1190 self._match(TokenType.COMMA) -1191 -1192 # parsers look to _prev for no/dual/default, so need to consume first -1193 self._match_text_seq("NO") -1194 self._match_text_seq("DUAL") -1195 self._match_text_seq("DEFAULT") +1079 if self._match_pair(TokenType.TABLE, TokenType.FUNCTION, advance=False): +1080 self._match(TokenType.TABLE) +1081 +1082 properties = None +1083 create_token = self._match_set(self.CREATABLES) and self._prev +1084 +1085 if not create_token: +1086 properties = self._parse_properties() # exp.Properties.Location.POST_CREATE +1087 create_token = self._match_set(self.CREATABLES) and self._prev +1088 +1089 if not properties or not create_token: +1090 return self._parse_as_command(start) +1091 +1092 exists = self._parse_exists(not_=True) +1093 this = None +1094 expression = None +1095 indexes = None +1096 no_schema_binding = None +1097 begin = None +1098 +1099 if create_token.token_type in (TokenType.FUNCTION, TokenType.PROCEDURE): +1100 this = self._parse_user_defined_function(kind=create_token.token_type) +1101 temp_properties = self._parse_properties() +1102 if properties and temp_properties: +1103 properties.expressions.extend(temp_properties.expressions) +1104 elif temp_properties: +1105 properties = temp_properties +1106 +1107 self._match(TokenType.ALIAS) +1108 begin = self._match(TokenType.BEGIN) +1109 return_ = self._match_text_seq("RETURN") +1110 expression = self._parse_statement() +1111 +1112 if return_: +1113 expression = self.expression(exp.Return, this=expression) +1114 elif create_token.token_type == TokenType.INDEX: +1115 this = self._parse_index() +1116 elif create_token.token_type in self.DB_CREATABLES: +1117 table_parts = self._parse_table_parts(schema=True) +1118 +1119 # exp.Properties.Location.POST_NAME +1120 if self._match(TokenType.COMMA): +1121 temp_properties = self._parse_properties(before=True) +1122 if properties and temp_properties: +1123 properties.expressions.extend(temp_properties.expressions) +1124 elif temp_properties: +1125 properties = temp_properties +1126 +1127 this = self._parse_schema(this=table_parts) +1128 +1129 # exp.Properties.Location.POST_SCHEMA and POST_WITH +1130 temp_properties = self._parse_properties() +1131 if properties and temp_properties: +1132 properties.expressions.extend(temp_properties.expressions) +1133 elif temp_properties: +1134 properties = temp_properties +1135 +1136 self._match(TokenType.ALIAS) +1137 +1138 # exp.Properties.Location.POST_ALIAS +1139 if not ( +1140 self._match(TokenType.SELECT, advance=False) +1141 or self._match(TokenType.WITH, advance=False) +1142 or self._match(TokenType.L_PAREN, advance=False) +1143 ): +1144 temp_properties = self._parse_properties() +1145 if properties and temp_properties: +1146 properties.expressions.extend(temp_properties.expressions) +1147 elif temp_properties: +1148 properties = temp_properties +1149 +1150 expression = self._parse_ddl_select() +1151 +1152 if create_token.token_type == TokenType.TABLE: +1153 # exp.Properties.Location.POST_EXPRESSION +1154 temp_properties = self._parse_properties() +1155 if properties and temp_properties: +1156 properties.expressions.extend(temp_properties.expressions) +1157 elif temp_properties: +1158 properties = temp_properties +1159 +1160 indexes = [] +1161 while True: +1162 index = self._parse_create_table_index() +1163 +1164 # exp.Properties.Location.POST_INDEX +1165 if self._match(TokenType.PARTITION_BY, advance=False): +1166 temp_properties = self._parse_properties() +1167 if properties and temp_properties: +1168 properties.expressions.extend(temp_properties.expressions) +1169 elif temp_properties: +1170 properties = temp_properties +1171 +1172 if not index: +1173 break +1174 else: +1175 indexes.append(index) +1176 elif create_token.token_type == TokenType.VIEW: +1177 if self._match_text_seq("WITH", "NO", "SCHEMA", "BINDING"): +1178 no_schema_binding = True +1179 +1180 return self.expression( +1181 exp.Create, +1182 this=this, +1183 kind=create_token.text, +1184 replace=replace, +1185 unique=unique, +1186 expression=expression, +1187 exists=exists, +1188 properties=properties, +1189 indexes=indexes, +1190 no_schema_binding=no_schema_binding, +1191 begin=begin, +1192 ) +1193 +1194 def _parse_property_before(self) -> t.Optional[exp.Expression]: +1195 self._match(TokenType.COMMA) 1196 -1197 if self.PROPERTY_PARSERS.get(self._curr.text.upper()): -1198 return self.PROPERTY_PARSERS[self._curr.text.upper()](self) -1199 -1200 return None +1197 # parsers look to _prev for no/dual/default, so need to consume first +1198 self._match_text_seq("NO") +1199 self._match_text_seq("DUAL") +1200 self._match_text_seq("DEFAULT") 1201 -1202 def _parse_property(self) -> t.Optional[exp.Expression]: -1203 if self._match_texts(self.PROPERTY_PARSERS): -1204 return self.PROPERTY_PARSERS[self._prev.text.upper()](self) -1205 -1206 if self._match_pair(TokenType.DEFAULT, TokenType.CHARACTER_SET): -1207 return self._parse_character_set(default=True) -1208 -1209 if self._match_pair(TokenType.COMPOUND, TokenType.SORTKEY): -1210 return self._parse_sortkey(compound=True) -1211 -1212 if self._match_text_seq("SQL", "SECURITY"): -1213 return self.expression(exp.SqlSecurityProperty, definer=self._match_text_seq("DEFINER")) -1214 -1215 assignment = self._match_pair( -1216 TokenType.VAR, TokenType.EQ, advance=False -1217 ) or self._match_pair(TokenType.STRING, TokenType.EQ, advance=False) -1218 -1219 if assignment: -1220 key = self._parse_var_or_string() -1221 self._match(TokenType.EQ) -1222 return self.expression(exp.Property, this=key, value=self._parse_column()) +1202 if self.PROPERTY_PARSERS.get(self._curr.text.upper()): +1203 return self.PROPERTY_PARSERS[self._curr.text.upper()](self) +1204 +1205 return None +1206 +1207 def _parse_property(self) -> t.Optional[exp.Expression]: +1208 if self._match_texts(self.PROPERTY_PARSERS): +1209 return self.PROPERTY_PARSERS[self._prev.text.upper()](self) +1210 +1211 if self._match_pair(TokenType.DEFAULT, TokenType.CHARACTER_SET): +1212 return self._parse_character_set(default=True) +1213 +1214 if self._match_pair(TokenType.COMPOUND, TokenType.SORTKEY): +1215 return self._parse_sortkey(compound=True) +1216 +1217 if self._match_text_seq("SQL", "SECURITY"): +1218 return self.expression(exp.SqlSecurityProperty, definer=self._match_text_seq("DEFINER")) +1219 +1220 assignment = self._match_pair( +1221 TokenType.VAR, TokenType.EQ, advance=False +1222 ) or self._match_pair(TokenType.STRING, TokenType.EQ, advance=False) 1223 -1224 return None -1225 -1226 def _parse_property_assignment(self, exp_class: t.Type[exp.Expression]) -> exp.Expression: -1227 self._match(TokenType.EQ) -1228 self._match(TokenType.ALIAS) -1229 return self.expression( -1230 exp_class, -1231 this=self._parse_var_or_string() or self._parse_number() or self._parse_id_var(), -1232 ) +1224 if assignment: +1225 key = self._parse_var_or_string() +1226 self._match(TokenType.EQ) +1227 return self.expression(exp.Property, this=key, value=self._parse_column()) +1228 +1229 return None +1230 +1231 def _parse_stored(self) -> exp.Expression: +1232 self._match(TokenType.ALIAS) 1233 -1234 def _parse_properties(self, before=None) -> t.Optional[exp.Expression]: -1235 properties = [] +1234 input_format = self._parse_string() if self._match_text_seq("INPUTFORMAT") else None +1235 output_format = self._parse_string() if self._match_text_seq("OUTPUTFORMAT") else None 1236 -1237 while True: -1238 if before: -1239 identified_property = self._parse_property_before() -1240 else: -1241 identified_property = self._parse_property() -1242 -1243 if not identified_property: -1244 break -1245 for p in ensure_list(identified_property): -1246 properties.append(p) -1247 -1248 if properties: -1249 return self.expression(exp.Properties, expressions=properties) -1250 -1251 return None -1252 -1253 def _parse_fallback(self, no=False) -> exp.Expression: -1254 self._match_text_seq("FALLBACK") -1255 return self.expression( -1256 exp.FallbackProperty, no=no, protection=self._match_text_seq("PROTECTION") -1257 ) -1258 -1259 def _parse_with_property( -1260 self, -1261 ) -> t.Union[t.Optional[exp.Expression], t.List[t.Optional[exp.Expression]]]: -1262 self._match(TokenType.WITH) -1263 if self._match(TokenType.L_PAREN, advance=False): -1264 return self._parse_wrapped_csv(self._parse_property) -1265 -1266 if self._match_text_seq("JOURNAL"): -1267 return self._parse_withjournaltable() -1268 -1269 if self._match_text_seq("DATA"): -1270 return self._parse_withdata(no=False) -1271 elif self._match_text_seq("NO", "DATA"): -1272 return self._parse_withdata(no=True) -1273 -1274 if not self._next: -1275 return None -1276 -1277 return self._parse_withisolatedloading() +1237 return self.expression( +1238 exp.FileFormatProperty, +1239 this=self.expression( +1240 exp.InputOutputFormat, input_format=input_format, output_format=output_format +1241 ) +1242 if input_format or output_format +1243 else self._parse_var_or_string() or self._parse_number() or self._parse_id_var(), +1244 ) +1245 +1246 def _parse_property_assignment(self, exp_class: t.Type[exp.Expression]) -> exp.Expression: +1247 self._match(TokenType.EQ) +1248 self._match(TokenType.ALIAS) +1249 return self.expression( +1250 exp_class, +1251 this=self._parse_var_or_string() or self._parse_number() or self._parse_id_var(), +1252 ) +1253 +1254 def _parse_properties(self, before=None) -> t.Optional[exp.Expression]: +1255 properties = [] +1256 +1257 while True: +1258 if before: +1259 identified_property = self._parse_property_before() +1260 else: +1261 identified_property = self._parse_property() +1262 +1263 if not identified_property: +1264 break +1265 for p in ensure_list(identified_property): +1266 properties.append(p) +1267 +1268 if properties: +1269 return self.expression(exp.Properties, expressions=properties) +1270 +1271 return None +1272 +1273 def _parse_fallback(self, no=False) -> exp.Expression: +1274 self._match_text_seq("FALLBACK") +1275 return self.expression( +1276 exp.FallbackProperty, no=no, protection=self._match_text_seq("PROTECTION") +1277 ) 1278 -1279 # https://dev.mysql.com/doc/refman/8.0/en/create-view.html -1280 def _parse_definer(self) -> t.Optional[exp.Expression]: -1281 self._match(TokenType.EQ) -1282 -1283 user = self._parse_id_var() -1284 self._match(TokenType.PARAMETER) -1285 host = self._parse_id_var() or (self._match(TokenType.MOD) and self._prev.text) -1286 -1287 if not user or not host: -1288 return None -1289 -1290 return exp.DefinerProperty(this=f"{user}@{host}") +1279 def _parse_volatile_property(self) -> exp.Expression: +1280 if self._index >= 2: +1281 pre_volatile_token = self._tokens[self._index - 2] +1282 else: +1283 pre_volatile_token = None +1284 +1285 if pre_volatile_token and pre_volatile_token.token_type in ( +1286 TokenType.CREATE, +1287 TokenType.REPLACE, +1288 TokenType.UNIQUE, +1289 ): +1290 return exp.VolatileProperty() 1291 -1292 def _parse_withjournaltable(self) -> exp.Expression: -1293 self._match(TokenType.TABLE) -1294 self._match(TokenType.EQ) -1295 return self.expression(exp.WithJournalTableProperty, this=self._parse_table_parts()) -1296 -1297 def _parse_log(self, no=False) -> exp.Expression: -1298 self._match_text_seq("LOG") -1299 return self.expression(exp.LogProperty, no=no) +1292 return self.expression(exp.StabilityProperty, this=exp.Literal.string("VOLATILE")) +1293 +1294 def _parse_with_property( +1295 self, +1296 ) -> t.Union[t.Optional[exp.Expression], t.List[t.Optional[exp.Expression]]]: +1297 self._match(TokenType.WITH) +1298 if self._match(TokenType.L_PAREN, advance=False): +1299 return self._parse_wrapped_csv(self._parse_property) 1300 -1301 def _parse_journal(self, no=False, dual=False) -> exp.Expression: -1302 before = self._match_text_seq("BEFORE") -1303 self._match_text_seq("JOURNAL") -1304 return self.expression(exp.JournalProperty, no=no, dual=dual, before=before) -1305 -1306 def _parse_afterjournal(self, no=False, dual=False, local=None) -> exp.Expression: -1307 self._match_text_seq("NOT") -1308 self._match_text_seq("LOCAL") -1309 self._match_text_seq("AFTER", "JOURNAL") -1310 return self.expression(exp.AfterJournalProperty, no=no, dual=dual, local=local) +1301 if self._match_text_seq("JOURNAL"): +1302 return self._parse_withjournaltable() +1303 +1304 if self._match_text_seq("DATA"): +1305 return self._parse_withdata(no=False) +1306 elif self._match_text_seq("NO", "DATA"): +1307 return self._parse_withdata(no=True) +1308 +1309 if not self._next: +1310 return None 1311 -1312 def _parse_checksum(self) -> exp.Expression: -1313 self._match_text_seq("CHECKSUM") -1314 self._match(TokenType.EQ) -1315 -1316 on = None -1317 if self._match(TokenType.ON): -1318 on = True -1319 elif self._match_text_seq("OFF"): -1320 on = False -1321 default = self._match(TokenType.DEFAULT) -1322 -1323 return self.expression( -1324 exp.ChecksumProperty, -1325 on=on, -1326 default=default, -1327 ) -1328 -1329 def _parse_freespace(self) -> exp.Expression: -1330 self._match_text_seq("FREESPACE") -1331 self._match(TokenType.EQ) -1332 return self.expression( -1333 exp.FreespaceProperty, this=self._parse_number(), percent=self._match(TokenType.PERCENT) -1334 ) +1312 return self._parse_withisolatedloading() +1313 +1314 # https://dev.mysql.com/doc/refman/8.0/en/create-view.html +1315 def _parse_definer(self) -> t.Optional[exp.Expression]: +1316 self._match(TokenType.EQ) +1317 +1318 user = self._parse_id_var() +1319 self._match(TokenType.PARAMETER) +1320 host = self._parse_id_var() or (self._match(TokenType.MOD) and self._prev.text) +1321 +1322 if not user or not host: +1323 return None +1324 +1325 return exp.DefinerProperty(this=f"{user}@{host}") +1326 +1327 def _parse_withjournaltable(self) -> exp.Expression: +1328 self._match(TokenType.TABLE) +1329 self._match(TokenType.EQ) +1330 return self.expression(exp.WithJournalTableProperty, this=self._parse_table_parts()) +1331 +1332 def _parse_log(self, no=False) -> exp.Expression: +1333 self._match_text_seq("LOG") +1334 return self.expression(exp.LogProperty, no=no) 1335 -1336 def _parse_mergeblockratio(self, no=False, default=False) -> exp.Expression: -1337 self._match_text_seq("MERGEBLOCKRATIO") -1338 if self._match(TokenType.EQ): -1339 return self.expression( -1340 exp.MergeBlockRatioProperty, -1341 this=self._parse_number(), -1342 percent=self._match(TokenType.PERCENT), -1343 ) -1344 else: -1345 return self.expression( -1346 exp.MergeBlockRatioProperty, -1347 no=no, -1348 default=default, -1349 ) +1336 def _parse_journal(self, no=False, dual=False) -> exp.Expression: +1337 before = self._match_text_seq("BEFORE") +1338 self._match_text_seq("JOURNAL") +1339 return self.expression(exp.JournalProperty, no=no, dual=dual, before=before) +1340 +1341 def _parse_afterjournal(self, no=False, dual=False, local=None) -> exp.Expression: +1342 self._match_text_seq("NOT") +1343 self._match_text_seq("LOCAL") +1344 self._match_text_seq("AFTER", "JOURNAL") +1345 return self.expression(exp.AfterJournalProperty, no=no, dual=dual, local=local) +1346 +1347 def _parse_checksum(self) -> exp.Expression: +1348 self._match_text_seq("CHECKSUM") +1349 self._match(TokenType.EQ) 1350 -1351 def _parse_datablocksize(self, default=None) -> exp.Expression: -1352 if default: -1353 self._match_text_seq("DATABLOCKSIZE") -1354 return self.expression(exp.DataBlocksizeProperty, default=True) -1355 elif self._match_texts(("MIN", "MINIMUM")): -1356 self._match_text_seq("DATABLOCKSIZE") -1357 return self.expression(exp.DataBlocksizeProperty, min=True) -1358 elif self._match_texts(("MAX", "MAXIMUM")): -1359 self._match_text_seq("DATABLOCKSIZE") -1360 return self.expression(exp.DataBlocksizeProperty, min=False) -1361 -1362 self._match_text_seq("DATABLOCKSIZE") -1363 self._match(TokenType.EQ) -1364 size = self._parse_number() -1365 units = None -1366 if self._match_texts(("BYTES", "KBYTES", "KILOBYTES")): -1367 units = self._prev.text -1368 return self.expression(exp.DataBlocksizeProperty, size=size, units=units) -1369 -1370 def _parse_blockcompression(self) -> exp.Expression: -1371 self._match_text_seq("BLOCKCOMPRESSION") -1372 self._match(TokenType.EQ) -1373 always = self._match_text_seq("ALWAYS") -1374 manual = self._match_text_seq("MANUAL") -1375 never = self._match_text_seq("NEVER") -1376 default = self._match_text_seq("DEFAULT") -1377 autotemp = None -1378 if self._match_text_seq("AUTOTEMP"): -1379 autotemp = self._parse_schema() -1380 -1381 return self.expression( -1382 exp.BlockCompressionProperty, -1383 always=always, -1384 manual=manual, -1385 never=never, -1386 default=default, -1387 autotemp=autotemp, -1388 ) -1389 -1390 def _parse_withisolatedloading(self) -> exp.Expression: -1391 no = self._match_text_seq("NO") -1392 concurrent = self._match_text_seq("CONCURRENT") -1393 self._match_text_seq("ISOLATED", "LOADING") -1394 for_all = self._match_text_seq("FOR", "ALL") -1395 for_insert = self._match_text_seq("FOR", "INSERT") -1396 for_none = self._match_text_seq("FOR", "NONE") -1397 return self.expression( -1398 exp.IsolatedLoadingProperty, -1399 no=no, -1400 concurrent=concurrent, -1401 for_all=for_all, -1402 for_insert=for_insert, -1403 for_none=for_none, -1404 ) -1405 -1406 def _parse_locking(self) -> exp.Expression: -1407 if self._match(TokenType.TABLE): -1408 kind = "TABLE" -1409 elif self._match(TokenType.VIEW): -1410 kind = "VIEW" -1411 elif self._match(TokenType.ROW): -1412 kind = "ROW" -1413 elif self._match_text_seq("DATABASE"): -1414 kind = "DATABASE" -1415 else: -1416 kind = None -1417 -1418 if kind in ("DATABASE", "TABLE", "VIEW"): -1419 this = self._parse_table_parts() -1420 else: -1421 this = None -1422 -1423 if self._match(TokenType.FOR): -1424 for_or_in = "FOR" -1425 elif self._match(TokenType.IN): -1426 for_or_in = "IN" -1427 else: -1428 for_or_in = None -1429 -1430 if self._match_text_seq("ACCESS"): -1431 lock_type = "ACCESS" -1432 elif self._match_texts(("EXCL", "EXCLUSIVE")): -1433 lock_type = "EXCLUSIVE" -1434 elif self._match_text_seq("SHARE"): -1435 lock_type = "SHARE" -1436 elif self._match_text_seq("READ"): -1437 lock_type = "READ" -1438 elif self._match_text_seq("WRITE"): -1439 lock_type = "WRITE" -1440 elif self._match_text_seq("CHECKSUM"): -1441 lock_type = "CHECKSUM" -1442 else: -1443 lock_type = None -1444 -1445 override = self._match_text_seq("OVERRIDE") -1446 -1447 return self.expression( -1448 exp.LockingProperty, -1449 this=this, -1450 kind=kind, -1451 for_or_in=for_or_in, -1452 lock_type=lock_type, -1453 override=override, -1454 ) -1455 -1456 def _parse_partition_by(self) -> t.List[t.Optional[exp.Expression]]: -1457 if self._match(TokenType.PARTITION_BY): -1458 return self._parse_csv(self._parse_conjunction) -1459 return [] -1460 -1461 def _parse_partitioned_by(self) -> exp.Expression: -1462 self._match(TokenType.EQ) -1463 return self.expression( -1464 exp.PartitionedByProperty, -1465 this=self._parse_schema() or self._parse_bracket(self._parse_field()), -1466 ) -1467 -1468 def _parse_withdata(self, no=False) -> exp.Expression: -1469 if self._match_text_seq("AND", "STATISTICS"): -1470 statistics = True -1471 elif self._match_text_seq("AND", "NO", "STATISTICS"): -1472 statistics = False -1473 else: -1474 statistics = None -1475 -1476 return self.expression(exp.WithDataProperty, no=no, statistics=statistics) -1477 -1478 def _parse_noprimaryindex(self) -> exp.Expression: -1479 self._match_text_seq("PRIMARY", "INDEX") -1480 return exp.NoPrimaryIndexProperty() +1351 on = None +1352 if self._match(TokenType.ON): +1353 on = True +1354 elif self._match_text_seq("OFF"): +1355 on = False +1356 default = self._match(TokenType.DEFAULT) +1357 +1358 return self.expression( +1359 exp.ChecksumProperty, +1360 on=on, +1361 default=default, +1362 ) +1363 +1364 def _parse_freespace(self) -> exp.Expression: +1365 self._match_text_seq("FREESPACE") +1366 self._match(TokenType.EQ) +1367 return self.expression( +1368 exp.FreespaceProperty, this=self._parse_number(), percent=self._match(TokenType.PERCENT) +1369 ) +1370 +1371 def _parse_mergeblockratio(self, no=False, default=False) -> exp.Expression: +1372 self._match_text_seq("MERGEBLOCKRATIO") +1373 if self._match(TokenType.EQ): +1374 return self.expression( +1375 exp.MergeBlockRatioProperty, +1376 this=self._parse_number(), +1377 percent=self._match(TokenType.PERCENT), +1378 ) +1379 else: +1380 return self.expression( +1381 exp.MergeBlockRatioProperty, +1382 no=no, +1383 default=default, +1384 ) +1385 +1386 def _parse_datablocksize(self, default=None) -> exp.Expression: +1387 if default: +1388 self._match_text_seq("DATABLOCKSIZE") +1389 return self.expression(exp.DataBlocksizeProperty, default=True) +1390 elif self._match_texts(("MIN", "MINIMUM")): +1391 self._match_text_seq("DATABLOCKSIZE") +1392 return self.expression(exp.DataBlocksizeProperty, min=True) +1393 elif self._match_texts(("MAX", "MAXIMUM")): +1394 self._match_text_seq("DATABLOCKSIZE") +1395 return self.expression(exp.DataBlocksizeProperty, min=False) +1396 +1397 self._match_text_seq("DATABLOCKSIZE") +1398 self._match(TokenType.EQ) +1399 size = self._parse_number() +1400 units = None +1401 if self._match_texts(("BYTES", "KBYTES", "KILOBYTES")): +1402 units = self._prev.text +1403 return self.expression(exp.DataBlocksizeProperty, size=size, units=units) +1404 +1405 def _parse_blockcompression(self) -> exp.Expression: +1406 self._match_text_seq("BLOCKCOMPRESSION") +1407 self._match(TokenType.EQ) +1408 always = self._match_text_seq("ALWAYS") +1409 manual = self._match_text_seq("MANUAL") +1410 never = self._match_text_seq("NEVER") +1411 default = self._match_text_seq("DEFAULT") +1412 autotemp = None +1413 if self._match_text_seq("AUTOTEMP"): +1414 autotemp = self._parse_schema() +1415 +1416 return self.expression( +1417 exp.BlockCompressionProperty, +1418 always=always, +1419 manual=manual, +1420 never=never, +1421 default=default, +1422 autotemp=autotemp, +1423 ) +1424 +1425 def _parse_withisolatedloading(self) -> exp.Expression: +1426 no = self._match_text_seq("NO") +1427 concurrent = self._match_text_seq("CONCURRENT") +1428 self._match_text_seq("ISOLATED", "LOADING") +1429 for_all = self._match_text_seq("FOR", "ALL") +1430 for_insert = self._match_text_seq("FOR", "INSERT") +1431 for_none = self._match_text_seq("FOR", "NONE") +1432 return self.expression( +1433 exp.IsolatedLoadingProperty, +1434 no=no, +1435 concurrent=concurrent, +1436 for_all=for_all, +1437 for_insert=for_insert, +1438 for_none=for_none, +1439 ) +1440 +1441 def _parse_locking(self) -> exp.Expression: +1442 if self._match(TokenType.TABLE): +1443 kind = "TABLE" +1444 elif self._match(TokenType.VIEW): +1445 kind = "VIEW" +1446 elif self._match(TokenType.ROW): +1447 kind = "ROW" +1448 elif self._match_text_seq("DATABASE"): +1449 kind = "DATABASE" +1450 else: +1451 kind = None +1452 +1453 if kind in ("DATABASE", "TABLE", "VIEW"): +1454 this = self._parse_table_parts() +1455 else: +1456 this = None +1457 +1458 if self._match(TokenType.FOR): +1459 for_or_in = "FOR" +1460 elif self._match(TokenType.IN): +1461 for_or_in = "IN" +1462 else: +1463 for_or_in = None +1464 +1465 if self._match_text_seq("ACCESS"): +1466 lock_type = "ACCESS" +1467 elif self._match_texts(("EXCL", "EXCLUSIVE")): +1468 lock_type = "EXCLUSIVE" +1469 elif self._match_text_seq("SHARE"): +1470 lock_type = "SHARE" +1471 elif self._match_text_seq("READ"): +1472 lock_type = "READ" +1473 elif self._match_text_seq("WRITE"): +1474 lock_type = "WRITE" +1475 elif self._match_text_seq("CHECKSUM"): +1476 lock_type = "CHECKSUM" +1477 else: +1478 lock_type = None +1479 +1480 override = self._match_text_seq("OVERRIDE") 1481 -1482 def _parse_oncommit(self) -> exp.Expression: -1483 self._match_text_seq("COMMIT", "PRESERVE", "ROWS") -1484 return exp.OnCommitProperty() -1485 -1486 def _parse_distkey(self) -> exp.Expression: -1487 return self.expression(exp.DistKeyProperty, this=self._parse_wrapped(self._parse_id_var)) -1488 -1489 def _parse_create_like(self) -> t.Optional[exp.Expression]: -1490 table = self._parse_table(schema=True) -1491 options = [] -1492 while self._match_texts(("INCLUDING", "EXCLUDING")): -1493 this = self._prev.text.upper() -1494 id_var = self._parse_id_var() +1482 return self.expression( +1483 exp.LockingProperty, +1484 this=this, +1485 kind=kind, +1486 for_or_in=for_or_in, +1487 lock_type=lock_type, +1488 override=override, +1489 ) +1490 +1491 def _parse_partition_by(self) -> t.List[t.Optional[exp.Expression]]: +1492 if self._match(TokenType.PARTITION_BY): +1493 return self._parse_csv(self._parse_conjunction) +1494 return [] 1495 -1496 if not id_var: -1497 return None -1498 -1499 options.append( -1500 self.expression( -1501 exp.Property, -1502 this=this, -1503 value=exp.Var(this=id_var.this.upper()), -1504 ) -1505 ) -1506 return self.expression(exp.LikeProperty, this=table, expressions=options) -1507 -1508 def _parse_sortkey(self, compound: bool = False) -> exp.Expression: -1509 return self.expression( -1510 exp.SortKeyProperty, this=self._parse_wrapped_csv(self._parse_id_var), compound=compound -1511 ) +1496 def _parse_partitioned_by(self) -> exp.Expression: +1497 self._match(TokenType.EQ) +1498 return self.expression( +1499 exp.PartitionedByProperty, +1500 this=self._parse_schema() or self._parse_bracket(self._parse_field()), +1501 ) +1502 +1503 def _parse_withdata(self, no=False) -> exp.Expression: +1504 if self._match_text_seq("AND", "STATISTICS"): +1505 statistics = True +1506 elif self._match_text_seq("AND", "NO", "STATISTICS"): +1507 statistics = False +1508 else: +1509 statistics = None +1510 +1511 return self.expression(exp.WithDataProperty, no=no, statistics=statistics) 1512 -1513 def _parse_character_set(self, default: bool = False) -> exp.Expression: -1514 self._match(TokenType.EQ) -1515 return self.expression( -1516 exp.CharacterSetProperty, this=self._parse_var_or_string(), default=default -1517 ) -1518 -1519 def _parse_returns(self) -> exp.Expression: -1520 value: t.Optional[exp.Expression] -1521 is_table = self._match(TokenType.TABLE) -1522 -1523 if is_table: -1524 if self._match(TokenType.LT): -1525 value = self.expression( -1526 exp.Schema, -1527 this="TABLE", -1528 expressions=self._parse_csv(self._parse_struct_kwargs), -1529 ) -1530 if not self._match(TokenType.GT): -1531 self.raise_error("Expecting >") -1532 else: -1533 value = self._parse_schema(exp.Var(this="TABLE")) -1534 else: -1535 value = self._parse_types() -1536 -1537 return self.expression(exp.ReturnsProperty, this=value, is_table=is_table) -1538 -1539 def _parse_temporary(self, global_=False) -> exp.Expression: -1540 self._match(TokenType.TEMPORARY) # in case calling from "GLOBAL" -1541 return self.expression(exp.TemporaryProperty, global_=global_) +1513 def _parse_noprimaryindex(self) -> exp.Expression: +1514 self._match_text_seq("PRIMARY", "INDEX") +1515 return exp.NoPrimaryIndexProperty() +1516 +1517 def _parse_oncommit(self) -> exp.Expression: +1518 self._match_text_seq("COMMIT", "PRESERVE", "ROWS") +1519 return exp.OnCommitProperty() +1520 +1521 def _parse_distkey(self) -> exp.Expression: +1522 return self.expression(exp.DistKeyProperty, this=self._parse_wrapped(self._parse_id_var)) +1523 +1524 def _parse_create_like(self) -> t.Optional[exp.Expression]: +1525 table = self._parse_table(schema=True) +1526 options = [] +1527 while self._match_texts(("INCLUDING", "EXCLUDING")): +1528 this = self._prev.text.upper() +1529 id_var = self._parse_id_var() +1530 +1531 if not id_var: +1532 return None +1533 +1534 options.append( +1535 self.expression( +1536 exp.Property, +1537 this=this, +1538 value=exp.Var(this=id_var.this.upper()), +1539 ) +1540 ) +1541 return self.expression(exp.LikeProperty, this=table, expressions=options) 1542 -1543 def _parse_describe(self) -> exp.Expression: -1544 kind = self._match_set(self.CREATABLES) and self._prev.text -1545 this = self._parse_table() -1546 -1547 return self.expression(exp.Describe, this=this, kind=kind) -1548 -1549 def _parse_insert(self) -> exp.Expression: -1550 overwrite = self._match(TokenType.OVERWRITE) -1551 local = self._match(TokenType.LOCAL) -1552 alternative = None +1543 def _parse_sortkey(self, compound: bool = False) -> exp.Expression: +1544 return self.expression( +1545 exp.SortKeyProperty, this=self._parse_wrapped_csv(self._parse_id_var), compound=compound +1546 ) +1547 +1548 def _parse_character_set(self, default: bool = False) -> exp.Expression: +1549 self._match(TokenType.EQ) +1550 return self.expression( +1551 exp.CharacterSetProperty, this=self._parse_var_or_string(), default=default +1552 ) 1553 -1554 if self._match_text_seq("DIRECTORY"): -1555 this: t.Optional[exp.Expression] = self.expression( -1556 exp.Directory, -1557 this=self._parse_var_or_string(), -1558 local=local, -1559 row_format=self._parse_row_format(match_row=True), -1560 ) -1561 else: -1562 if self._match(TokenType.OR): -1563 alternative = self._match_texts(self.INSERT_ALTERNATIVES) and self._prev.text -1564 -1565 self._match(TokenType.INTO) -1566 self._match(TokenType.TABLE) -1567 this = self._parse_table(schema=True) -1568 -1569 return self.expression( -1570 exp.Insert, -1571 this=this, -1572 exists=self._parse_exists(), -1573 partition=self._parse_partition(), -1574 expression=self._parse_ddl_select(), -1575 returning=self._parse_returning(), -1576 overwrite=overwrite, -1577 alternative=alternative, -1578 ) -1579 -1580 def _parse_returning(self) -> t.Optional[exp.Expression]: -1581 if not self._match(TokenType.RETURNING): -1582 return None +1554 def _parse_returns(self) -> exp.Expression: +1555 value: t.Optional[exp.Expression] +1556 is_table = self._match(TokenType.TABLE) +1557 +1558 if is_table: +1559 if self._match(TokenType.LT): +1560 value = self.expression( +1561 exp.Schema, +1562 this="TABLE", +1563 expressions=self._parse_csv(self._parse_struct_kwargs), +1564 ) +1565 if not self._match(TokenType.GT): +1566 self.raise_error("Expecting >") +1567 else: +1568 value = self._parse_schema(exp.Var(this="TABLE")) +1569 else: +1570 value = self._parse_types() +1571 +1572 return self.expression(exp.ReturnsProperty, this=value, is_table=is_table) +1573 +1574 def _parse_temporary(self, global_=False) -> exp.Expression: +1575 self._match(TokenType.TEMPORARY) # in case calling from "GLOBAL" +1576 return self.expression(exp.TemporaryProperty, global_=global_) +1577 +1578 def _parse_describe(self) -> exp.Expression: +1579 kind = self._match_set(self.CREATABLES) and self._prev.text +1580 this = self._parse_table() +1581 +1582 return self.expression(exp.Describe, this=this, kind=kind) 1583 -1584 return self.expression(exp.Returning, expressions=self._parse_csv(self._parse_column)) -1585 -1586 def _parse_row(self) -> t.Optional[exp.Expression]: -1587 if not self._match(TokenType.FORMAT): -1588 return None -1589 return self._parse_row_format() -1590 -1591 def _parse_row_format(self, match_row: bool = False) -> t.Optional[exp.Expression]: -1592 if match_row and not self._match_pair(TokenType.ROW, TokenType.FORMAT): -1593 return None -1594 -1595 if self._match_text_seq("SERDE"): -1596 return self.expression(exp.RowFormatSerdeProperty, this=self._parse_string()) -1597 -1598 self._match_text_seq("DELIMITED") +1584 def _parse_insert(self) -> exp.Expression: +1585 overwrite = self._match(TokenType.OVERWRITE) +1586 local = self._match(TokenType.LOCAL) +1587 alternative = None +1588 +1589 if self._match_text_seq("DIRECTORY"): +1590 this: t.Optional[exp.Expression] = self.expression( +1591 exp.Directory, +1592 this=self._parse_var_or_string(), +1593 local=local, +1594 row_format=self._parse_row_format(match_row=True), +1595 ) +1596 else: +1597 if self._match(TokenType.OR): +1598 alternative = self._match_texts(self.INSERT_ALTERNATIVES) and self._prev.text 1599 -1600 kwargs = {} -1601 -1602 if self._match_text_seq("FIELDS", "TERMINATED", "BY"): -1603 kwargs["fields"] = self._parse_string() -1604 if self._match_text_seq("ESCAPED", "BY"): -1605 kwargs["escaped"] = self._parse_string() -1606 if self._match_text_seq("COLLECTION", "ITEMS", "TERMINATED", "BY"): -1607 kwargs["collection_items"] = self._parse_string() -1608 if self._match_text_seq("MAP", "KEYS", "TERMINATED", "BY"): -1609 kwargs["map_keys"] = self._parse_string() -1610 if self._match_text_seq("LINES", "TERMINATED", "BY"): -1611 kwargs["lines"] = self._parse_string() -1612 if self._match_text_seq("NULL", "DEFINED", "AS"): -1613 kwargs["null"] = self._parse_string() -1614 -1615 return self.expression(exp.RowFormatDelimitedProperty, **kwargs) # type: ignore -1616 -1617 def _parse_load_data(self) -> exp.Expression: -1618 local = self._match(TokenType.LOCAL) -1619 self._match_text_seq("INPATH") -1620 inpath = self._parse_string() -1621 overwrite = self._match(TokenType.OVERWRITE) -1622 self._match_pair(TokenType.INTO, TokenType.TABLE) -1623 -1624 return self.expression( -1625 exp.LoadData, -1626 this=self._parse_table(schema=True), -1627 local=local, -1628 overwrite=overwrite, -1629 inpath=inpath, -1630 partition=self._parse_partition(), -1631 input_format=self._match_text_seq("INPUTFORMAT") and self._parse_string(), -1632 serde=self._match_text_seq("SERDE") and self._parse_string(), -1633 ) -1634 -1635 def _parse_delete(self) -> exp.Expression: -1636 self._match(TokenType.FROM) -1637 -1638 return self.expression( -1639 exp.Delete, -1640 this=self._parse_table(schema=True), -1641 using=self._parse_csv(lambda: self._match(TokenType.USING) and self._parse_table()), -1642 where=self._parse_where(), -1643 returning=self._parse_returning(), -1644 ) -1645 -1646 def _parse_update(self) -> exp.Expression: -1647 return self.expression( -1648 exp.Update, -1649 **{ # type: ignore -1650 "this": self._parse_table(alias_tokens=self.UPDATE_ALIAS_TOKENS), -1651 "expressions": self._match(TokenType.SET) and self._parse_csv(self._parse_equality), -1652 "from": self._parse_from(), -1653 "where": self._parse_where(), -1654 "returning": self._parse_returning(), -1655 }, -1656 ) -1657 -1658 def _parse_uncache(self) -> exp.Expression: -1659 if not self._match(TokenType.TABLE): -1660 self.raise_error("Expecting TABLE after UNCACHE") -1661 -1662 return self.expression( -1663 exp.Uncache, -1664 exists=self._parse_exists(), -1665 this=self._parse_table(schema=True), -1666 ) +1600 self._match(TokenType.INTO) +1601 self._match(TokenType.TABLE) +1602 this = self._parse_table(schema=True) +1603 +1604 return self.expression( +1605 exp.Insert, +1606 this=this, +1607 exists=self._parse_exists(), +1608 partition=self._parse_partition(), +1609 expression=self._parse_ddl_select(), +1610 conflict=self._parse_on_conflict(), +1611 returning=self._parse_returning(), +1612 overwrite=overwrite, +1613 alternative=alternative, +1614 ) +1615 +1616 def _parse_on_conflict(self) -> t.Optional[exp.Expression]: +1617 conflict = self._match_text_seq("ON", "CONFLICT") +1618 duplicate = self._match_text_seq("ON", "DUPLICATE", "KEY") +1619 +1620 if not (conflict or duplicate): +1621 return None +1622 +1623 nothing = None +1624 expressions = None +1625 key = None +1626 constraint = None +1627 +1628 if conflict: +1629 if self._match_text_seq("ON", "CONSTRAINT"): +1630 constraint = self._parse_id_var() +1631 else: +1632 key = self._parse_csv(self._parse_value) +1633 +1634 self._match_text_seq("DO") +1635 if self._match_text_seq("NOTHING"): +1636 nothing = True +1637 else: +1638 self._match(TokenType.UPDATE) +1639 expressions = self._match(TokenType.SET) and self._parse_csv(self._parse_equality) +1640 +1641 return self.expression( +1642 exp.OnConflict, +1643 duplicate=duplicate, +1644 expressions=expressions, +1645 nothing=nothing, +1646 key=key, +1647 constraint=constraint, +1648 ) +1649 +1650 def _parse_returning(self) -> t.Optional[exp.Expression]: +1651 if not self._match(TokenType.RETURNING): +1652 return None +1653 +1654 return self.expression(exp.Returning, expressions=self._parse_csv(self._parse_column)) +1655 +1656 def _parse_row(self) -> t.Optional[exp.Expression]: +1657 if not self._match(TokenType.FORMAT): +1658 return None +1659 return self._parse_row_format() +1660 +1661 def _parse_row_format(self, match_row: bool = False) -> t.Optional[exp.Expression]: +1662 if match_row and not self._match_pair(TokenType.ROW, TokenType.FORMAT): +1663 return None +1664 +1665 if self._match_text_seq("SERDE"): +1666 return self.expression(exp.RowFormatSerdeProperty, this=self._parse_string()) 1667 -1668 def _parse_cache(self) -> exp.Expression: -1669 lazy = self._match(TokenType.LAZY) -1670 self._match(TokenType.TABLE) -1671 table = self._parse_table(schema=True) -1672 options = [] -1673 -1674 if self._match(TokenType.OPTIONS): -1675 self._match_l_paren() -1676 k = self._parse_string() -1677 self._match(TokenType.EQ) -1678 v = self._parse_string() -1679 options = [k, v] -1680 self._match_r_paren() -1681 -1682 self._match(TokenType.ALIAS) -1683 return self.expression( -1684 exp.Cache, -1685 this=table, -1686 lazy=lazy, -1687 options=options, -1688 expression=self._parse_select(nested=True), -1689 ) -1690 -1691 def _parse_partition(self) -> t.Optional[exp.Expression]: -1692 if not self._match(TokenType.PARTITION): -1693 return None -1694 -1695 return self.expression( -1696 exp.Partition, expressions=self._parse_wrapped_csv(self._parse_conjunction) -1697 ) -1698 -1699 def _parse_value(self) -> exp.Expression: -1700 if self._match(TokenType.L_PAREN): -1701 expressions = self._parse_csv(self._parse_conjunction) -1702 self._match_r_paren() -1703 return self.expression(exp.Tuple, expressions=expressions) +1668 self._match_text_seq("DELIMITED") +1669 +1670 kwargs = {} +1671 +1672 if self._match_text_seq("FIELDS", "TERMINATED", "BY"): +1673 kwargs["fields"] = self._parse_string() +1674 if self._match_text_seq("ESCAPED", "BY"): +1675 kwargs["escaped"] = self._parse_string() +1676 if self._match_text_seq("COLLECTION", "ITEMS", "TERMINATED", "BY"): +1677 kwargs["collection_items"] = self._parse_string() +1678 if self._match_text_seq("MAP", "KEYS", "TERMINATED", "BY"): +1679 kwargs["map_keys"] = self._parse_string() +1680 if self._match_text_seq("LINES", "TERMINATED", "BY"): +1681 kwargs["lines"] = self._parse_string() +1682 if self._match_text_seq("NULL", "DEFINED", "AS"): +1683 kwargs["null"] = self._parse_string() +1684 +1685 return self.expression(exp.RowFormatDelimitedProperty, **kwargs) # type: ignore +1686 +1687 def _parse_load_data(self) -> exp.Expression: +1688 local = self._match(TokenType.LOCAL) +1689 self._match_text_seq("INPATH") +1690 inpath = self._parse_string() +1691 overwrite = self._match(TokenType.OVERWRITE) +1692 self._match_pair(TokenType.INTO, TokenType.TABLE) +1693 +1694 return self.expression( +1695 exp.LoadData, +1696 this=self._parse_table(schema=True), +1697 local=local, +1698 overwrite=overwrite, +1699 inpath=inpath, +1700 partition=self._parse_partition(), +1701 input_format=self._match_text_seq("INPUTFORMAT") and self._parse_string(), +1702 serde=self._match_text_seq("SERDE") and self._parse_string(), +1703 ) 1704 -1705 # In presto we can have VALUES 1, 2 which results in 1 column & 2 rows. -1706 # Source: https://prestodb.io/docs/current/sql/values.html -1707 return self.expression(exp.Tuple, expressions=[self._parse_conjunction()]) -1708 -1709 def _parse_select( -1710 self, nested: bool = False, table: bool = False, parse_subquery_alias: bool = True -1711 ) -> t.Optional[exp.Expression]: -1712 cte = self._parse_with() -1713 if cte: -1714 this = self._parse_statement() +1705 def _parse_delete(self) -> exp.Expression: +1706 self._match(TokenType.FROM) +1707 +1708 return self.expression( +1709 exp.Delete, +1710 this=self._parse_table(), +1711 using=self._parse_csv(lambda: self._match(TokenType.USING) and self._parse_table()), +1712 where=self._parse_where(), +1713 returning=self._parse_returning(), +1714 ) 1715 -1716 if not this: -1717 self.raise_error("Failed to parse any statement following CTE") -1718 return cte -1719 -1720 if "with" in this.arg_types: -1721 this.set("with", cte) -1722 else: -1723 self.raise_error(f"{this.key} does not support CTE") -1724 this = cte -1725 elif self._match(TokenType.SELECT): -1726 comments = self._prev_comments +1716 def _parse_update(self) -> exp.Expression: +1717 return self.expression( +1718 exp.Update, +1719 **{ # type: ignore +1720 "this": self._parse_table(alias_tokens=self.UPDATE_ALIAS_TOKENS), +1721 "expressions": self._match(TokenType.SET) and self._parse_csv(self._parse_equality), +1722 "from": self._parse_from(), +1723 "where": self._parse_where(), +1724 "returning": self._parse_returning(), +1725 }, +1726 ) 1727 -1728 kind = ( -1729 self._match(TokenType.ALIAS) -1730 and self._match_texts(("STRUCT", "VALUE")) -1731 and self._prev.text -1732 ) -1733 hint = self._parse_hint() -1734 all_ = self._match(TokenType.ALL) -1735 distinct = self._match(TokenType.DISTINCT) -1736 -1737 if distinct: -1738 distinct = self.expression( -1739 exp.Distinct, -1740 on=self._parse_value() if self._match(TokenType.ON) else None, -1741 ) -1742 -1743 if all_ and distinct: -1744 self.raise_error("Cannot specify both ALL and DISTINCT after SELECT") -1745 -1746 limit = self._parse_limit(top=True) -1747 expressions = self._parse_csv(self._parse_expression) -1748 -1749 this = self.expression( -1750 exp.Select, -1751 kind=kind, -1752 hint=hint, -1753 distinct=distinct, -1754 expressions=expressions, -1755 limit=limit, -1756 ) -1757 this.comments = comments -1758 -1759 into = self._parse_into() -1760 if into: -1761 this.set("into", into) -1762 -1763 from_ = self._parse_from() -1764 if from_: -1765 this.set("from", from_) -1766 -1767 self._parse_query_modifiers(this) -1768 elif (table or nested) and self._match(TokenType.L_PAREN): -1769 this = self._parse_table() if table else self._parse_select(nested=True) -1770 self._parse_query_modifiers(this) -1771 this = self._parse_set_operations(this) +1728 def _parse_uncache(self) -> exp.Expression: +1729 if not self._match(TokenType.TABLE): +1730 self.raise_error("Expecting TABLE after UNCACHE") +1731 +1732 return self.expression( +1733 exp.Uncache, +1734 exists=self._parse_exists(), +1735 this=self._parse_table(schema=True), +1736 ) +1737 +1738 def _parse_cache(self) -> exp.Expression: +1739 lazy = self._match(TokenType.LAZY) +1740 self._match(TokenType.TABLE) +1741 table = self._parse_table(schema=True) +1742 options = [] +1743 +1744 if self._match(TokenType.OPTIONS): +1745 self._match_l_paren() +1746 k = self._parse_string() +1747 self._match(TokenType.EQ) +1748 v = self._parse_string() +1749 options = [k, v] +1750 self._match_r_paren() +1751 +1752 self._match(TokenType.ALIAS) +1753 return self.expression( +1754 exp.Cache, +1755 this=table, +1756 lazy=lazy, +1757 options=options, +1758 expression=self._parse_select(nested=True), +1759 ) +1760 +1761 def _parse_partition(self) -> t.Optional[exp.Expression]: +1762 if not self._match(TokenType.PARTITION): +1763 return None +1764 +1765 return self.expression( +1766 exp.Partition, expressions=self._parse_wrapped_csv(self._parse_conjunction) +1767 ) +1768 +1769 def _parse_value(self) -> exp.Expression: +1770 if self._match(TokenType.L_PAREN): +1771 expressions = self._parse_csv(self._parse_conjunction) 1772 self._match_r_paren() -1773 -1774 # early return so that subquery unions aren't parsed again -1775 # SELECT * FROM (SELECT 1) UNION ALL SELECT 1 -1776 # Union ALL should be a property of the top select node, not the subquery -1777 return self._parse_subquery(this, parse_alias=parse_subquery_alias) -1778 elif self._match(TokenType.VALUES): -1779 this = self.expression( -1780 exp.Values, -1781 expressions=self._parse_csv(self._parse_value), -1782 alias=self._parse_table_alias(), -1783 ) -1784 else: -1785 this = None -1786 -1787 return self._parse_set_operations(this) -1788 -1789 def _parse_with(self, skip_with_token: bool = False) -> t.Optional[exp.Expression]: -1790 if not skip_with_token and not self._match(TokenType.WITH): -1791 return None -1792 -1793 recursive = self._match(TokenType.RECURSIVE) -1794 -1795 expressions = [] -1796 while True: -1797 expressions.append(self._parse_cte()) -1798 -1799 if not self._match(TokenType.COMMA) and not self._match(TokenType.WITH): -1800 break -1801 else: -1802 self._match(TokenType.WITH) -1803 -1804 return self.expression(exp.With, expressions=expressions, recursive=recursive) -1805 -1806 def _parse_cte(self) -> exp.Expression: -1807 alias = self._parse_table_alias() -1808 if not alias or not alias.this: -1809 self.raise_error("Expected CTE to have alias") -1810 -1811 self._match(TokenType.ALIAS) +1773 return self.expression(exp.Tuple, expressions=expressions) +1774 +1775 # In presto we can have VALUES 1, 2 which results in 1 column & 2 rows. +1776 # Source: https://prestodb.io/docs/current/sql/values.html +1777 return self.expression(exp.Tuple, expressions=[self._parse_conjunction()]) +1778 +1779 def _parse_select( +1780 self, nested: bool = False, table: bool = False, parse_subquery_alias: bool = True +1781 ) -> t.Optional[exp.Expression]: +1782 cte = self._parse_with() +1783 if cte: +1784 this = self._parse_statement() +1785 +1786 if not this: +1787 self.raise_error("Failed to parse any statement following CTE") +1788 return cte +1789 +1790 if "with" in this.arg_types: +1791 this.set("with", cte) +1792 else: +1793 self.raise_error(f"{this.key} does not support CTE") +1794 this = cte +1795 elif self._match(TokenType.SELECT): +1796 comments = self._prev_comments +1797 +1798 kind = ( +1799 self._match(TokenType.ALIAS) +1800 and self._match_texts(("STRUCT", "VALUE")) +1801 and self._prev.text +1802 ) +1803 hint = self._parse_hint() +1804 all_ = self._match(TokenType.ALL) +1805 distinct = self._match(TokenType.DISTINCT) +1806 +1807 if distinct: +1808 distinct = self.expression( +1809 exp.Distinct, +1810 on=self._parse_value() if self._match(TokenType.ON) else None, +1811 ) 1812 -1813 return self.expression( -1814 exp.CTE, -1815 this=self._parse_wrapped(self._parse_statement), -1816 alias=alias, -1817 ) +1813 if all_ and distinct: +1814 self.raise_error("Cannot specify both ALL and DISTINCT after SELECT") +1815 +1816 limit = self._parse_limit(top=True) +1817 expressions = self._parse_csv(self._parse_expression) 1818 -1819 def _parse_table_alias( -1820 self, alias_tokens: t.Optional[t.Collection[TokenType]] = None -1821 ) -> t.Optional[exp.Expression]: -1822 any_token = self._match(TokenType.ALIAS) -1823 alias = ( -1824 self._parse_id_var(any_token=any_token, tokens=alias_tokens or self.TABLE_ALIAS_TOKENS) -1825 or self._parse_string_as_identifier() -1826 ) -1827 -1828 index = self._index -1829 if self._match(TokenType.L_PAREN): -1830 columns = self._parse_csv(self._parse_function_parameter) -1831 self._match_r_paren() if columns else self._retreat(index) -1832 else: -1833 columns = None -1834 -1835 if not alias and not columns: -1836 return None -1837 -1838 return self.expression(exp.TableAlias, this=alias, columns=columns) -1839 -1840 def _parse_subquery( -1841 self, this: t.Optional[exp.Expression], parse_alias: bool = True -1842 ) -> exp.Expression: -1843 return self.expression( -1844 exp.Subquery, -1845 this=this, -1846 pivots=self._parse_pivots(), -1847 alias=self._parse_table_alias() if parse_alias else None, -1848 ) -1849 -1850 def _parse_query_modifiers(self, this: t.Optional[exp.Expression]) -> None: -1851 if not isinstance(this, self.MODIFIABLES): -1852 return -1853 -1854 table = isinstance(this, exp.Table) -1855 -1856 while True: -1857 lateral = self._parse_lateral() -1858 join = self._parse_join() -1859 comma = None if table else self._match(TokenType.COMMA) -1860 if lateral: -1861 this.append("laterals", lateral) -1862 if join: -1863 this.append("joins", join) -1864 if comma: -1865 this.args["from"].append("expressions", self._parse_table()) -1866 if not (lateral or join or comma): -1867 break -1868 -1869 for key, parser in self.QUERY_MODIFIER_PARSERS.items(): -1870 expression = parser(self) -1871 -1872 if expression: -1873 this.set(key, expression) +1819 this = self.expression( +1820 exp.Select, +1821 kind=kind, +1822 hint=hint, +1823 distinct=distinct, +1824 expressions=expressions, +1825 limit=limit, +1826 ) +1827 this.comments = comments +1828 +1829 into = self._parse_into() +1830 if into: +1831 this.set("into", into) +1832 +1833 from_ = self._parse_from() +1834 if from_: +1835 this.set("from", from_) +1836 +1837 self._parse_query_modifiers(this) +1838 elif (table or nested) and self._match(TokenType.L_PAREN): +1839 this = self._parse_table() if table else self._parse_select(nested=True) +1840 self._parse_query_modifiers(this) +1841 this = self._parse_set_operations(this) +1842 self._match_r_paren() +1843 +1844 # early return so that subquery unions aren't parsed again +1845 # SELECT * FROM (SELECT 1) UNION ALL SELECT 1 +1846 # Union ALL should be a property of the top select node, not the subquery +1847 return self._parse_subquery(this, parse_alias=parse_subquery_alias) +1848 elif self._match(TokenType.VALUES): +1849 this = self.expression( +1850 exp.Values, +1851 expressions=self._parse_csv(self._parse_value), +1852 alias=self._parse_table_alias(), +1853 ) +1854 else: +1855 this = None +1856 +1857 return self._parse_set_operations(this) +1858 +1859 def _parse_with(self, skip_with_token: bool = False) -> t.Optional[exp.Expression]: +1860 if not skip_with_token and not self._match(TokenType.WITH): +1861 return None +1862 +1863 comments = self._prev_comments +1864 recursive = self._match(TokenType.RECURSIVE) +1865 +1866 expressions = [] +1867 while True: +1868 expressions.append(self._parse_cte()) +1869 +1870 if not self._match(TokenType.COMMA) and not self._match(TokenType.WITH): +1871 break +1872 else: +1873 self._match(TokenType.WITH) 1874 -1875 def _parse_hint(self) -> t.Optional[exp.Expression]: -1876 if self._match(TokenType.HINT): -1877 hints = self._parse_csv(self._parse_function) -1878 if not self._match_pair(TokenType.STAR, TokenType.SLASH): -1879 self.raise_error("Expected */ after HINT") -1880 return self.expression(exp.Hint, expressions=hints) -1881 -1882 return None +1875 return self.expression( +1876 exp.With, comments=comments, expressions=expressions, recursive=recursive +1877 ) +1878 +1879 def _parse_cte(self) -> exp.Expression: +1880 alias = self._parse_table_alias() +1881 if not alias or not alias.this: +1882 self.raise_error("Expected CTE to have alias") 1883 -1884 def _parse_into(self) -> t.Optional[exp.Expression]: -1885 if not self._match(TokenType.INTO): -1886 return None -1887 -1888 temp = self._match(TokenType.TEMPORARY) -1889 unlogged = self._match(TokenType.UNLOGGED) -1890 self._match(TokenType.TABLE) +1884 self._match(TokenType.ALIAS) +1885 +1886 return self.expression( +1887 exp.CTE, +1888 this=self._parse_wrapped(self._parse_statement), +1889 alias=alias, +1890 ) 1891 -1892 return self.expression( -1893 exp.Into, this=self._parse_table(schema=True), temporary=temp, unlogged=unlogged -1894 ) -1895 -1896 def _parse_from(self) -> t.Optional[exp.Expression]: -1897 if not self._match(TokenType.FROM): -1898 return None -1899 -1900 return self.expression( -1901 exp.From, comments=self._prev_comments, expressions=self._parse_csv(self._parse_table) -1902 ) -1903 -1904 def _parse_match_recognize(self) -> t.Optional[exp.Expression]: -1905 if not self._match(TokenType.MATCH_RECOGNIZE): -1906 return None -1907 self._match_l_paren() -1908 -1909 partition = self._parse_partition_by() -1910 order = self._parse_order() -1911 measures = ( -1912 self._parse_alias(self._parse_conjunction()) -1913 if self._match_text_seq("MEASURES") -1914 else None -1915 ) -1916 -1917 if self._match_text_seq("ONE", "ROW", "PER", "MATCH"): -1918 rows = exp.Var(this="ONE ROW PER MATCH") -1919 elif self._match_text_seq("ALL", "ROWS", "PER", "MATCH"): -1920 text = "ALL ROWS PER MATCH" -1921 if self._match_text_seq("SHOW", "EMPTY", "MATCHES"): -1922 text += f" SHOW EMPTY MATCHES" -1923 elif self._match_text_seq("OMIT", "EMPTY", "MATCHES"): -1924 text += f" OMIT EMPTY MATCHES" -1925 elif self._match_text_seq("WITH", "UNMATCHED", "ROWS"): -1926 text += f" WITH UNMATCHED ROWS" -1927 rows = exp.Var(this=text) -1928 else: -1929 rows = None -1930 -1931 if self._match_text_seq("AFTER", "MATCH", "SKIP"): -1932 text = "AFTER MATCH SKIP" -1933 if self._match_text_seq("PAST", "LAST", "ROW"): -1934 text += f" PAST LAST ROW" -1935 elif self._match_text_seq("TO", "NEXT", "ROW"): -1936 text += f" TO NEXT ROW" -1937 elif self._match_text_seq("TO", "FIRST"): -1938 text += f" TO FIRST {self._advance_any().text}" # type: ignore -1939 elif self._match_text_seq("TO", "LAST"): -1940 text += f" TO LAST {self._advance_any().text}" # type: ignore -1941 after = exp.Var(this=text) -1942 else: -1943 after = None -1944 -1945 if self._match_text_seq("PATTERN"): -1946 self._match_l_paren() -1947 -1948 if not self._curr: -1949 self.raise_error("Expecting )", self._curr) -1950 -1951 paren = 1 -1952 start = self._curr -1953 -1954 while self._curr and paren > 0: -1955 if self._curr.token_type == TokenType.L_PAREN: -1956 paren += 1 -1957 if self._curr.token_type == TokenType.R_PAREN: -1958 paren -= 1 -1959 end = self._prev -1960 self._advance() -1961 if paren > 0: -1962 self.raise_error("Expecting )", self._curr) -1963 pattern = exp.Var(this=self._find_sql(start, end)) -1964 else: -1965 pattern = None -1966 -1967 define = ( -1968 self._parse_alias(self._parse_conjunction()) if self._match_text_seq("DEFINE") else None -1969 ) -1970 self._match_r_paren() -1971 -1972 return self.expression( -1973 exp.MatchRecognize, -1974 partition_by=partition, -1975 order=order, -1976 measures=measures, -1977 rows=rows, -1978 after=after, -1979 pattern=pattern, -1980 define=define, -1981 ) -1982 -1983 def _parse_lateral(self) -> t.Optional[exp.Expression]: -1984 outer_apply = self._match_pair(TokenType.OUTER, TokenType.APPLY) -1985 cross_apply = self._match_pair(TokenType.CROSS, TokenType.APPLY) -1986 -1987 if outer_apply or cross_apply: -1988 this = self._parse_select(table=True) -1989 view = None -1990 outer = not cross_apply -1991 elif self._match(TokenType.LATERAL): -1992 this = self._parse_select(table=True) -1993 view = self._match(TokenType.VIEW) -1994 outer = self._match(TokenType.OUTER) -1995 else: -1996 return None -1997 -1998 if not this: -1999 this = self._parse_function() or self._parse_id_var(any_token=False) -2000 while self._match(TokenType.DOT): -2001 this = exp.Dot( -2002 this=this, -2003 expression=self._parse_function() or self._parse_id_var(any_token=False), -2004 ) -2005 -2006 table_alias: t.Optional[exp.Expression] +1892 def _parse_table_alias( +1893 self, alias_tokens: t.Optional[t.Collection[TokenType]] = None +1894 ) -> t.Optional[exp.Expression]: +1895 any_token = self._match(TokenType.ALIAS) +1896 alias = ( +1897 self._parse_id_var(any_token=any_token, tokens=alias_tokens or self.TABLE_ALIAS_TOKENS) +1898 or self._parse_string_as_identifier() +1899 ) +1900 +1901 index = self._index +1902 if self._match(TokenType.L_PAREN): +1903 columns = self._parse_csv(self._parse_function_parameter) +1904 self._match_r_paren() if columns else self._retreat(index) +1905 else: +1906 columns = None +1907 +1908 if not alias and not columns: +1909 return None +1910 +1911 return self.expression(exp.TableAlias, this=alias, columns=columns) +1912 +1913 def _parse_subquery( +1914 self, this: t.Optional[exp.Expression], parse_alias: bool = True +1915 ) -> exp.Expression: +1916 return self.expression( +1917 exp.Subquery, +1918 this=this, +1919 pivots=self._parse_pivots(), +1920 alias=self._parse_table_alias() if parse_alias else None, +1921 ) +1922 +1923 def _parse_query_modifiers(self, this: t.Optional[exp.Expression]) -> None: +1924 if not isinstance(this, self.MODIFIABLES): +1925 return +1926 +1927 table = isinstance(this, exp.Table) +1928 +1929 while True: +1930 join = self._parse_join() +1931 if join: +1932 this.append("joins", join) +1933 +1934 lateral = None +1935 if not join: +1936 lateral = self._parse_lateral() +1937 if lateral: +1938 this.append("laterals", lateral) +1939 +1940 comma = None if table else self._match(TokenType.COMMA) +1941 if comma: +1942 this.args["from"].append("expressions", self._parse_table()) +1943 +1944 if not (lateral or join or comma): +1945 break +1946 +1947 for key, parser in self.QUERY_MODIFIER_PARSERS.items(): +1948 expression = parser(self) +1949 +1950 if expression: +1951 this.set(key, expression) +1952 +1953 def _parse_hint(self) -> t.Optional[exp.Expression]: +1954 if self._match(TokenType.HINT): +1955 hints = self._parse_csv(self._parse_function) +1956 if not self._match_pair(TokenType.STAR, TokenType.SLASH): +1957 self.raise_error("Expected */ after HINT") +1958 return self.expression(exp.Hint, expressions=hints) +1959 +1960 return None +1961 +1962 def _parse_into(self) -> t.Optional[exp.Expression]: +1963 if not self._match(TokenType.INTO): +1964 return None +1965 +1966 temp = self._match(TokenType.TEMPORARY) +1967 unlogged = self._match(TokenType.UNLOGGED) +1968 self._match(TokenType.TABLE) +1969 +1970 return self.expression( +1971 exp.Into, this=self._parse_table(schema=True), temporary=temp, unlogged=unlogged +1972 ) +1973 +1974 def _parse_from(self) -> t.Optional[exp.Expression]: +1975 if not self._match(TokenType.FROM): +1976 return None +1977 +1978 return self.expression( +1979 exp.From, comments=self._prev_comments, expressions=self._parse_csv(self._parse_table) +1980 ) +1981 +1982 def _parse_match_recognize(self) -> t.Optional[exp.Expression]: +1983 if not self._match(TokenType.MATCH_RECOGNIZE): +1984 return None +1985 +1986 self._match_l_paren() +1987 +1988 partition = self._parse_partition_by() +1989 order = self._parse_order() +1990 measures = ( +1991 self._parse_csv(self._parse_expression) if self._match_text_seq("MEASURES") else None +1992 ) +1993 +1994 if self._match_text_seq("ONE", "ROW", "PER", "MATCH"): +1995 rows = exp.Var(this="ONE ROW PER MATCH") +1996 elif self._match_text_seq("ALL", "ROWS", "PER", "MATCH"): +1997 text = "ALL ROWS PER MATCH" +1998 if self._match_text_seq("SHOW", "EMPTY", "MATCHES"): +1999 text += f" SHOW EMPTY MATCHES" +2000 elif self._match_text_seq("OMIT", "EMPTY", "MATCHES"): +2001 text += f" OMIT EMPTY MATCHES" +2002 elif self._match_text_seq("WITH", "UNMATCHED", "ROWS"): +2003 text += f" WITH UNMATCHED ROWS" +2004 rows = exp.Var(this=text) +2005 else: +2006 rows = None 2007 -2008 if view: -2009 table = self._parse_id_var(any_token=False) -2010 columns = self._parse_csv(self._parse_id_var) if self._match(TokenType.ALIAS) else [] -2011 table_alias = self.expression(exp.TableAlias, this=table, columns=columns) -2012 else: -2013 table_alias = self._parse_table_alias() -2014 -2015 expression = self.expression( -2016 exp.Lateral, -2017 this=this, -2018 view=view, -2019 outer=outer, -2020 alias=table_alias, -2021 ) -2022 -2023 if outer_apply or cross_apply: -2024 return self.expression(exp.Join, this=expression, side=None if cross_apply else "LEFT") -2025 -2026 return expression +2008 if self._match_text_seq("AFTER", "MATCH", "SKIP"): +2009 text = "AFTER MATCH SKIP" +2010 if self._match_text_seq("PAST", "LAST", "ROW"): +2011 text += f" PAST LAST ROW" +2012 elif self._match_text_seq("TO", "NEXT", "ROW"): +2013 text += f" TO NEXT ROW" +2014 elif self._match_text_seq("TO", "FIRST"): +2015 text += f" TO FIRST {self._advance_any().text}" # type: ignore +2016 elif self._match_text_seq("TO", "LAST"): +2017 text += f" TO LAST {self._advance_any().text}" # type: ignore +2018 after = exp.Var(this=text) +2019 else: +2020 after = None +2021 +2022 if self._match_text_seq("PATTERN"): +2023 self._match_l_paren() +2024 +2025 if not self._curr: +2026 self.raise_error("Expecting )", self._curr) 2027 -2028 def _parse_join_side_and_kind( -2029 self, -2030 ) -> t.Tuple[t.Optional[Token], t.Optional[Token], t.Optional[Token]]: -2031 return ( -2032 self._match(TokenType.NATURAL) and self._prev, -2033 self._match_set(self.JOIN_SIDES) and self._prev, -2034 self._match_set(self.JOIN_KINDS) and self._prev, -2035 ) -2036 -2037 def _parse_join(self, skip_join_token: bool = False) -> t.Optional[exp.Expression]: -2038 natural, side, kind = self._parse_join_side_and_kind() -2039 -2040 if not skip_join_token and not self._match(TokenType.JOIN): -2041 return None -2042 -2043 kwargs: t.Dict[ -2044 str, t.Optional[exp.Expression] | bool | str | t.List[t.Optional[exp.Expression]] -2045 ] = {"this": self._parse_table()} -2046 -2047 if natural: -2048 kwargs["natural"] = True -2049 if side: -2050 kwargs["side"] = side.text -2051 if kind: -2052 kwargs["kind"] = kind.text -2053 -2054 if self._match(TokenType.ON): -2055 kwargs["on"] = self._parse_conjunction() -2056 elif self._match(TokenType.USING): -2057 kwargs["using"] = self._parse_wrapped_id_vars() -2058 -2059 return self.expression(exp.Join, **kwargs) # type: ignore -2060 -2061 def _parse_index(self) -> exp.Expression: -2062 index = self._parse_id_var() -2063 self._match(TokenType.ON) -2064 self._match(TokenType.TABLE) # hive -2065 -2066 return self.expression( -2067 exp.Index, -2068 this=index, -2069 table=self.expression(exp.Table, this=self._parse_id_var()), -2070 columns=self._parse_expression(), -2071 ) -2072 -2073 def _parse_create_table_index(self) -> t.Optional[exp.Expression]: -2074 unique = self._match(TokenType.UNIQUE) -2075 primary = self._match_text_seq("PRIMARY") -2076 amp = self._match_text_seq("AMP") -2077 if not self._match(TokenType.INDEX): -2078 return None -2079 index = self._parse_id_var() -2080 columns = None -2081 if self._match(TokenType.L_PAREN, advance=False): -2082 columns = self._parse_wrapped_csv(self._parse_column) -2083 return self.expression( -2084 exp.Index, -2085 this=index, -2086 columns=columns, -2087 unique=unique, -2088 primary=primary, -2089 amp=amp, -2090 ) -2091 -2092 def _parse_table_parts(self, schema: bool = False) -> exp.Expression: -2093 catalog = None -2094 db = None -2095 -2096 table = ( -2097 (not schema and self._parse_function()) -2098 or self._parse_id_var(any_token=False) -2099 or self._parse_string_as_identifier() -2100 ) +2028 paren = 1 +2029 start = self._curr +2030 +2031 while self._curr and paren > 0: +2032 if self._curr.token_type == TokenType.L_PAREN: +2033 paren += 1 +2034 if self._curr.token_type == TokenType.R_PAREN: +2035 paren -= 1 +2036 end = self._prev +2037 self._advance() +2038 if paren > 0: +2039 self.raise_error("Expecting )", self._curr) +2040 pattern = exp.Var(this=self._find_sql(start, end)) +2041 else: +2042 pattern = None +2043 +2044 define = ( +2045 self._parse_csv( +2046 lambda: self.expression( +2047 exp.Alias, +2048 alias=self._parse_id_var(any_token=True), +2049 this=self._match(TokenType.ALIAS) and self._parse_conjunction(), +2050 ) +2051 ) +2052 if self._match_text_seq("DEFINE") +2053 else None +2054 ) +2055 +2056 self._match_r_paren() +2057 +2058 return self.expression( +2059 exp.MatchRecognize, +2060 partition_by=partition, +2061 order=order, +2062 measures=measures, +2063 rows=rows, +2064 after=after, +2065 pattern=pattern, +2066 define=define, +2067 alias=self._parse_table_alias(), +2068 ) +2069 +2070 def _parse_lateral(self) -> t.Optional[exp.Expression]: +2071 outer_apply = self._match_pair(TokenType.OUTER, TokenType.APPLY) +2072 cross_apply = self._match_pair(TokenType.CROSS, TokenType.APPLY) +2073 +2074 if outer_apply or cross_apply: +2075 this = self._parse_select(table=True) +2076 view = None +2077 outer = not cross_apply +2078 elif self._match(TokenType.LATERAL): +2079 this = self._parse_select(table=True) +2080 view = self._match(TokenType.VIEW) +2081 outer = self._match(TokenType.OUTER) +2082 else: +2083 return None +2084 +2085 if not this: +2086 this = self._parse_function() or self._parse_id_var(any_token=False) +2087 while self._match(TokenType.DOT): +2088 this = exp.Dot( +2089 this=this, +2090 expression=self._parse_function() or self._parse_id_var(any_token=False), +2091 ) +2092 +2093 table_alias: t.Optional[exp.Expression] +2094 +2095 if view: +2096 table = self._parse_id_var(any_token=False) +2097 columns = self._parse_csv(self._parse_id_var) if self._match(TokenType.ALIAS) else [] +2098 table_alias = self.expression(exp.TableAlias, this=table, columns=columns) +2099 else: +2100 table_alias = self._parse_table_alias() 2101 -2102 while self._match(TokenType.DOT): -2103 if catalog: -2104 # This allows nesting the table in arbitrarily many dot expressions if needed -2105 table = self.expression(exp.Dot, this=table, expression=self._parse_id_var()) -2106 else: -2107 catalog = db -2108 db = table -2109 table = self._parse_id_var() -2110 -2111 if not table: -2112 self.raise_error(f"Expected table name but got {self._curr}") -2113 -2114 return self.expression( -2115 exp.Table, this=table, db=db, catalog=catalog, pivots=self._parse_pivots() -2116 ) -2117 -2118 def _parse_table( -2119 self, schema: bool = False, alias_tokens: t.Optional[t.Collection[TokenType]] = None -2120 ) -> t.Optional[exp.Expression]: -2121 lateral = self._parse_lateral() -2122 -2123 if lateral: -2124 return lateral -2125 -2126 unnest = self._parse_unnest() -2127 -2128 if unnest: -2129 return unnest -2130 -2131 values = self._parse_derived_table_values() +2102 expression = self.expression( +2103 exp.Lateral, +2104 this=this, +2105 view=view, +2106 outer=outer, +2107 alias=table_alias, +2108 ) +2109 +2110 return expression +2111 +2112 def _parse_join_side_and_kind( +2113 self, +2114 ) -> t.Tuple[t.Optional[Token], t.Optional[Token], t.Optional[Token]]: +2115 return ( +2116 self._match(TokenType.NATURAL) and self._prev, +2117 self._match_set(self.JOIN_SIDES) and self._prev, +2118 self._match_set(self.JOIN_KINDS) and self._prev, +2119 ) +2120 +2121 def _parse_join(self, skip_join_token: bool = False) -> t.Optional[exp.Expression]: +2122 index = self._index +2123 natural, side, kind = self._parse_join_side_and_kind() +2124 hint = self._prev.text if self._match_texts(self.JOIN_HINTS) else None +2125 join = self._match(TokenType.JOIN) +2126 +2127 if not skip_join_token and not join: +2128 self._retreat(index) +2129 kind = None +2130 natural = None +2131 side = None 2132 -2133 if values: -2134 return values +2133 outer_apply = self._match_pair(TokenType.OUTER, TokenType.APPLY, False) +2134 cross_apply = self._match_pair(TokenType.CROSS, TokenType.APPLY, False) 2135 -2136 subquery = self._parse_select(table=True) -2137 -2138 if subquery: -2139 if not subquery.args.get("pivots"): -2140 subquery.set("pivots", self._parse_pivots()) -2141 return subquery -2142 -2143 this = self._parse_table_parts(schema=schema) -2144 -2145 if schema: -2146 return self._parse_schema(this=this) -2147 -2148 if self.alias_post_tablesample: -2149 table_sample = self._parse_table_sample() -2150 -2151 alias = self._parse_table_alias(alias_tokens=alias_tokens or self.TABLE_ALIAS_TOKENS) -2152 -2153 if alias: -2154 this.set("alias", alias) -2155 -2156 if not this.args.get("pivots"): -2157 this.set("pivots", self._parse_pivots()) -2158 -2159 if self._match_pair(TokenType.WITH, TokenType.L_PAREN): -2160 this.set( -2161 "hints", -2162 self._parse_csv(lambda: self._parse_function() or self._parse_var(any_token=True)), -2163 ) -2164 self._match_r_paren() -2165 -2166 if not self.alias_post_tablesample: -2167 table_sample = self._parse_table_sample() -2168 -2169 if table_sample: -2170 table_sample.set("this", this) -2171 this = table_sample -2172 -2173 return this -2174 -2175 def _parse_unnest(self) -> t.Optional[exp.Expression]: -2176 if not self._match(TokenType.UNNEST): -2177 return None -2178 -2179 expressions = self._parse_wrapped_csv(self._parse_column) -2180 ordinality = bool(self._match(TokenType.WITH) and self._match(TokenType.ORDINALITY)) -2181 alias = self._parse_table_alias() -2182 -2183 if alias and self.unnest_column_only: -2184 if alias.args.get("columns"): -2185 self.raise_error("Unexpected extra column alias in unnest.") -2186 alias.set("columns", [alias.this]) -2187 alias.set("this", None) -2188 -2189 offset = None -2190 if self._match_pair(TokenType.WITH, TokenType.OFFSET): -2191 self._match(TokenType.ALIAS) -2192 offset = self._parse_conjunction() -2193 -2194 return self.expression( -2195 exp.Unnest, -2196 expressions=expressions, -2197 ordinality=ordinality, -2198 alias=alias, -2199 offset=offset, -2200 ) -2201 -2202 def _parse_derived_table_values(self) -> t.Optional[exp.Expression]: -2203 is_derived = self._match_pair(TokenType.L_PAREN, TokenType.VALUES) -2204 if not is_derived and not self._match(TokenType.VALUES): -2205 return None -2206 -2207 expressions = self._parse_csv(self._parse_value) -2208 -2209 if is_derived: -2210 self._match_r_paren() +2136 if not skip_join_token and not join and not outer_apply and not cross_apply: +2137 return None +2138 +2139 if outer_apply: +2140 side = Token(TokenType.LEFT, "LEFT") +2141 +2142 kwargs: t.Dict[ +2143 str, t.Optional[exp.Expression] | bool | str | t.List[t.Optional[exp.Expression]] +2144 ] = {"this": self._parse_table()} +2145 +2146 if natural: +2147 kwargs["natural"] = True +2148 if side: +2149 kwargs["side"] = side.text +2150 if kind: +2151 kwargs["kind"] = kind.text +2152 if hint: +2153 kwargs["hint"] = hint +2154 +2155 if self._match(TokenType.ON): +2156 kwargs["on"] = self._parse_conjunction() +2157 elif self._match(TokenType.USING): +2158 kwargs["using"] = self._parse_wrapped_id_vars() +2159 +2160 return self.expression(exp.Join, **kwargs) # type: ignore +2161 +2162 def _parse_index(self) -> exp.Expression: +2163 index = self._parse_id_var() +2164 self._match(TokenType.ON) +2165 self._match(TokenType.TABLE) # hive +2166 +2167 return self.expression( +2168 exp.Index, +2169 this=index, +2170 table=self.expression(exp.Table, this=self._parse_id_var()), +2171 columns=self._parse_expression(), +2172 ) +2173 +2174 def _parse_create_table_index(self) -> t.Optional[exp.Expression]: +2175 unique = self._match(TokenType.UNIQUE) +2176 primary = self._match_text_seq("PRIMARY") +2177 amp = self._match_text_seq("AMP") +2178 if not self._match(TokenType.INDEX): +2179 return None +2180 index = self._parse_id_var() +2181 columns = None +2182 if self._match(TokenType.L_PAREN, advance=False): +2183 columns = self._parse_wrapped_csv(self._parse_column) +2184 return self.expression( +2185 exp.Index, +2186 this=index, +2187 columns=columns, +2188 unique=unique, +2189 primary=primary, +2190 amp=amp, +2191 ) +2192 +2193 def _parse_table_parts(self, schema: bool = False) -> exp.Expression: +2194 catalog = None +2195 db = None +2196 +2197 table = ( +2198 (not schema and self._parse_function()) +2199 or self._parse_id_var(any_token=False) +2200 or self._parse_string_as_identifier() +2201 ) +2202 +2203 while self._match(TokenType.DOT): +2204 if catalog: +2205 # This allows nesting the table in arbitrarily many dot expressions if needed +2206 table = self.expression(exp.Dot, this=table, expression=self._parse_id_var()) +2207 else: +2208 catalog = db +2209 db = table +2210 table = self._parse_id_var() 2211 -2212 return self.expression(exp.Values, expressions=expressions, alias=self._parse_table_alias()) -2213 -2214 def _parse_table_sample(self, as_modifier: bool = False) -> t.Optional[exp.Expression]: -2215 if not self._match(TokenType.TABLE_SAMPLE) and not ( -2216 as_modifier and self._match_text_seq("USING", "SAMPLE") -2217 ): -2218 return None -2219 -2220 bucket_numerator = None -2221 bucket_denominator = None -2222 bucket_field = None -2223 percent = None -2224 rows = None -2225 size = None -2226 seed = None -2227 -2228 kind = "TABLESAMPLE" if self._prev.token_type == TokenType.TABLE_SAMPLE else "USING SAMPLE" -2229 method = self._parse_var(tokens=(TokenType.ROW,)) -2230 -2231 self._match(TokenType.L_PAREN) -2232 -2233 num = self._parse_number() -2234 -2235 if self._match(TokenType.BUCKET): -2236 bucket_numerator = self._parse_number() -2237 self._match(TokenType.OUT_OF) -2238 bucket_denominator = bucket_denominator = self._parse_number() -2239 self._match(TokenType.ON) -2240 bucket_field = self._parse_field() -2241 elif self._match_set((TokenType.PERCENT, TokenType.MOD)): -2242 percent = num -2243 elif self._match(TokenType.ROWS): -2244 rows = num -2245 else: -2246 size = num -2247 -2248 self._match(TokenType.R_PAREN) -2249 -2250 if self._match(TokenType.L_PAREN): -2251 method = self._parse_var() -2252 seed = self._match(TokenType.COMMA) and self._parse_number() -2253 self._match_r_paren() -2254 elif self._match_texts(("SEED", "REPEATABLE")): -2255 seed = self._parse_wrapped(self._parse_number) +2212 if not table: +2213 self.raise_error(f"Expected table name but got {self._curr}") +2214 +2215 return self.expression( +2216 exp.Table, this=table, db=db, catalog=catalog, pivots=self._parse_pivots() +2217 ) +2218 +2219 def _parse_table( +2220 self, schema: bool = False, alias_tokens: t.Optional[t.Collection[TokenType]] = None +2221 ) -> t.Optional[exp.Expression]: +2222 lateral = self._parse_lateral() +2223 +2224 if lateral: +2225 return lateral +2226 +2227 unnest = self._parse_unnest() +2228 +2229 if unnest: +2230 return unnest +2231 +2232 values = self._parse_derived_table_values() +2233 +2234 if values: +2235 return values +2236 +2237 subquery = self._parse_select(table=True) +2238 +2239 if subquery: +2240 if not subquery.args.get("pivots"): +2241 subquery.set("pivots", self._parse_pivots()) +2242 return subquery +2243 +2244 this = self._parse_table_parts(schema=schema) +2245 +2246 if schema: +2247 return self._parse_schema(this=this) +2248 +2249 if self.alias_post_tablesample: +2250 table_sample = self._parse_table_sample() +2251 +2252 alias = self._parse_table_alias(alias_tokens=alias_tokens or self.TABLE_ALIAS_TOKENS) +2253 +2254 if alias: +2255 this.set("alias", alias) 2256 -2257 return self.expression( -2258 exp.TableSample, -2259 method=method, -2260 bucket_numerator=bucket_numerator, -2261 bucket_denominator=bucket_denominator, -2262 bucket_field=bucket_field, -2263 percent=percent, -2264 rows=rows, -2265 size=size, -2266 seed=seed, -2267 kind=kind, -2268 ) +2257 if not this.args.get("pivots"): +2258 this.set("pivots", self._parse_pivots()) +2259 +2260 if self._match_pair(TokenType.WITH, TokenType.L_PAREN): +2261 this.set( +2262 "hints", +2263 self._parse_csv(lambda: self._parse_function() or self._parse_var(any_token=True)), +2264 ) +2265 self._match_r_paren() +2266 +2267 if not self.alias_post_tablesample: +2268 table_sample = self._parse_table_sample() 2269 -2270 def _parse_pivots(self) -> t.List[t.Optional[exp.Expression]]: -2271 return list(iter(self._parse_pivot, None)) -2272 -2273 def _parse_pivot(self) -> t.Optional[exp.Expression]: -2274 index = self._index +2270 if table_sample: +2271 table_sample.set("this", this) +2272 this = table_sample +2273 +2274 return this 2275 -2276 if self._match(TokenType.PIVOT): -2277 unpivot = False -2278 elif self._match(TokenType.UNPIVOT): -2279 unpivot = True -2280 else: -2281 return None -2282 -2283 expressions = [] -2284 field = None -2285 -2286 if not self._match(TokenType.L_PAREN): -2287 self._retreat(index) -2288 return None +2276 def _parse_unnest(self) -> t.Optional[exp.Expression]: +2277 if not self._match(TokenType.UNNEST): +2278 return None +2279 +2280 expressions = self._parse_wrapped_csv(self._parse_column) +2281 ordinality = self._match_pair(TokenType.WITH, TokenType.ORDINALITY) +2282 alias = self._parse_table_alias() +2283 +2284 if alias and self.unnest_column_only: +2285 if alias.args.get("columns"): +2286 self.raise_error("Unexpected extra column alias in unnest.") +2287 alias.set("columns", [alias.this]) +2288 alias.set("this", None) 2289 -2290 if unpivot: -2291 expressions = self._parse_csv(self._parse_column) -2292 else: -2293 expressions = self._parse_csv(lambda: self._parse_alias(self._parse_function())) +2290 offset = None +2291 if self._match_pair(TokenType.WITH, TokenType.OFFSET): +2292 self._match(TokenType.ALIAS) +2293 offset = self._parse_id_var() or exp.Identifier(this="offset") 2294 -2295 if not self._match(TokenType.FOR): -2296 self.raise_error("Expecting FOR") -2297 -2298 value = self._parse_column() -2299 -2300 if not self._match(TokenType.IN): -2301 self.raise_error("Expecting IN") +2295 return self.expression( +2296 exp.Unnest, +2297 expressions=expressions, +2298 ordinality=ordinality, +2299 alias=alias, +2300 offset=offset, +2301 ) 2302 -2303 field = self._parse_in(value) -2304 -2305 self._match_r_paren() -2306 -2307 pivot = self.expression(exp.Pivot, expressions=expressions, field=field, unpivot=unpivot) -2308 -2309 if not self._match_set((TokenType.PIVOT, TokenType.UNPIVOT), advance=False): -2310 pivot.set("alias", self._parse_table_alias()) -2311 -2312 return pivot -2313 -2314 def _parse_where(self, skip_where_token: bool = False) -> t.Optional[exp.Expression]: -2315 if not skip_where_token and not self._match(TokenType.WHERE): -2316 return None -2317 -2318 return self.expression( -2319 exp.Where, comments=self._prev_comments, this=self._parse_conjunction() -2320 ) -2321 -2322 def _parse_group(self, skip_group_by_token: bool = False) -> t.Optional[exp.Expression]: -2323 if not skip_group_by_token and not self._match(TokenType.GROUP_BY): -2324 return None -2325 -2326 elements = defaultdict(list) -2327 -2328 while True: -2329 expressions = self._parse_csv(self._parse_conjunction) -2330 if expressions: -2331 elements["expressions"].extend(expressions) -2332 -2333 grouping_sets = self._parse_grouping_sets() -2334 if grouping_sets: -2335 elements["grouping_sets"].extend(grouping_sets) -2336 -2337 rollup = None -2338 cube = None -2339 -2340 with_ = self._match(TokenType.WITH) -2341 if self._match(TokenType.ROLLUP): -2342 rollup = with_ or self._parse_wrapped_csv(self._parse_column) -2343 elements["rollup"].extend(ensure_list(rollup)) -2344 -2345 if self._match(TokenType.CUBE): -2346 cube = with_ or self._parse_wrapped_csv(self._parse_column) -2347 elements["cube"].extend(ensure_list(cube)) +2303 def _parse_derived_table_values(self) -> t.Optional[exp.Expression]: +2304 is_derived = self._match_pair(TokenType.L_PAREN, TokenType.VALUES) +2305 if not is_derived and not self._match(TokenType.VALUES): +2306 return None +2307 +2308 expressions = self._parse_csv(self._parse_value) +2309 +2310 if is_derived: +2311 self._match_r_paren() +2312 +2313 return self.expression(exp.Values, expressions=expressions, alias=self._parse_table_alias()) +2314 +2315 def _parse_table_sample(self, as_modifier: bool = False) -> t.Optional[exp.Expression]: +2316 if not self._match(TokenType.TABLE_SAMPLE) and not ( +2317 as_modifier and self._match_text_seq("USING", "SAMPLE") +2318 ): +2319 return None +2320 +2321 bucket_numerator = None +2322 bucket_denominator = None +2323 bucket_field = None +2324 percent = None +2325 rows = None +2326 size = None +2327 seed = None +2328 +2329 kind = "TABLESAMPLE" if self._prev.token_type == TokenType.TABLE_SAMPLE else "USING SAMPLE" +2330 method = self._parse_var(tokens=(TokenType.ROW,)) +2331 +2332 self._match(TokenType.L_PAREN) +2333 +2334 num = self._parse_number() +2335 +2336 if self._match(TokenType.BUCKET): +2337 bucket_numerator = self._parse_number() +2338 self._match(TokenType.OUT_OF) +2339 bucket_denominator = bucket_denominator = self._parse_number() +2340 self._match(TokenType.ON) +2341 bucket_field = self._parse_field() +2342 elif self._match_set((TokenType.PERCENT, TokenType.MOD)): +2343 percent = num +2344 elif self._match(TokenType.ROWS): +2345 rows = num +2346 else: +2347 size = num 2348 -2349 if not (expressions or grouping_sets or rollup or cube): -2350 break -2351 -2352 return self.expression(exp.Group, **elements) # type: ignore -2353 -2354 def _parse_grouping_sets(self) -> t.Optional[t.List[t.Optional[exp.Expression]]]: -2355 if not self._match(TokenType.GROUPING_SETS): -2356 return None +2349 self._match(TokenType.R_PAREN) +2350 +2351 if self._match(TokenType.L_PAREN): +2352 method = self._parse_var() +2353 seed = self._match(TokenType.COMMA) and self._parse_number() +2354 self._match_r_paren() +2355 elif self._match_texts(("SEED", "REPEATABLE")): +2356 seed = self._parse_wrapped(self._parse_number) 2357 -2358 return self._parse_wrapped_csv(self._parse_grouping_set) -2359 -2360 def _parse_grouping_set(self) -> t.Optional[exp.Expression]: -2361 if self._match(TokenType.L_PAREN): -2362 grouping_set = self._parse_csv(self._parse_column) -2363 self._match_r_paren() -2364 return self.expression(exp.Tuple, expressions=grouping_set) -2365 -2366 return self._parse_column() -2367 -2368 def _parse_having(self, skip_having_token: bool = False) -> t.Optional[exp.Expression]: -2369 if not skip_having_token and not self._match(TokenType.HAVING): -2370 return None -2371 return self.expression(exp.Having, this=self._parse_conjunction()) -2372 -2373 def _parse_qualify(self) -> t.Optional[exp.Expression]: -2374 if not self._match(TokenType.QUALIFY): -2375 return None -2376 return self.expression(exp.Qualify, this=self._parse_conjunction()) -2377 -2378 def _parse_order( -2379 self, this: t.Optional[exp.Expression] = None, skip_order_token: bool = False -2380 ) -> t.Optional[exp.Expression]: -2381 if not skip_order_token and not self._match(TokenType.ORDER_BY): -2382 return this +2358 return self.expression( +2359 exp.TableSample, +2360 method=method, +2361 bucket_numerator=bucket_numerator, +2362 bucket_denominator=bucket_denominator, +2363 bucket_field=bucket_field, +2364 percent=percent, +2365 rows=rows, +2366 size=size, +2367 seed=seed, +2368 kind=kind, +2369 ) +2370 +2371 def _parse_pivots(self) -> t.List[t.Optional[exp.Expression]]: +2372 return list(iter(self._parse_pivot, None)) +2373 +2374 def _parse_pivot(self) -> t.Optional[exp.Expression]: +2375 index = self._index +2376 +2377 if self._match(TokenType.PIVOT): +2378 unpivot = False +2379 elif self._match(TokenType.UNPIVOT): +2380 unpivot = True +2381 else: +2382 return None 2383 -2384 return self.expression( -2385 exp.Order, this=this, expressions=self._parse_csv(self._parse_ordered) -2386 ) -2387 -2388 def _parse_sort( -2389 self, token_type: TokenType, exp_class: t.Type[exp.Expression] -2390 ) -> t.Optional[exp.Expression]: -2391 if not self._match(token_type): -2392 return None -2393 return self.expression(exp_class, expressions=self._parse_csv(self._parse_ordered)) -2394 -2395 def _parse_ordered(self) -> exp.Expression: -2396 this = self._parse_conjunction() -2397 self._match(TokenType.ASC) -2398 is_desc = self._match(TokenType.DESC) -2399 is_nulls_first = self._match(TokenType.NULLS_FIRST) -2400 is_nulls_last = self._match(TokenType.NULLS_LAST) -2401 desc = is_desc or False -2402 asc = not desc -2403 nulls_first = is_nulls_first or False -2404 explicitly_null_ordered = is_nulls_first or is_nulls_last -2405 if ( -2406 not explicitly_null_ordered -2407 and ( -2408 (asc and self.null_ordering == "nulls_are_small") -2409 or (desc and self.null_ordering != "nulls_are_small") -2410 ) -2411 and self.null_ordering != "nulls_are_last" -2412 ): -2413 nulls_first = True -2414 -2415 return self.expression(exp.Ordered, this=this, desc=desc, nulls_first=nulls_first) -2416 -2417 def _parse_limit( -2418 self, this: t.Optional[exp.Expression] = None, top: bool = False -2419 ) -> t.Optional[exp.Expression]: -2420 if self._match(TokenType.TOP if top else TokenType.LIMIT): -2421 limit_paren = self._match(TokenType.L_PAREN) -2422 limit_exp = self.expression( -2423 exp.Limit, this=this, expression=self._parse_number() if top else self._parse_term() -2424 ) -2425 -2426 if limit_paren: -2427 self._match_r_paren() +2384 expressions = [] +2385 field = None +2386 +2387 if not self._match(TokenType.L_PAREN): +2388 self._retreat(index) +2389 return None +2390 +2391 if unpivot: +2392 expressions = self._parse_csv(self._parse_column) +2393 else: +2394 expressions = self._parse_csv(lambda: self._parse_alias(self._parse_function())) +2395 +2396 if not expressions: +2397 self.raise_error("Failed to parse PIVOT's aggregation list") +2398 +2399 if not self._match(TokenType.FOR): +2400 self.raise_error("Expecting FOR") +2401 +2402 value = self._parse_column() +2403 +2404 if not self._match(TokenType.IN): +2405 self.raise_error("Expecting IN") +2406 +2407 field = self._parse_in(value) +2408 +2409 self._match_r_paren() +2410 +2411 pivot = self.expression(exp.Pivot, expressions=expressions, field=field, unpivot=unpivot) +2412 +2413 if not self._match_set((TokenType.PIVOT, TokenType.UNPIVOT), advance=False): +2414 pivot.set("alias", self._parse_table_alias()) +2415 +2416 if not unpivot: +2417 names = self._pivot_column_names(t.cast(t.List[exp.Expression], expressions)) +2418 +2419 columns: t.List[exp.Expression] = [] +2420 for col in pivot.args["field"].expressions: +2421 for name in names: +2422 if self.PREFIXED_PIVOT_COLUMNS: +2423 name = f"{name}_{col.alias_or_name}" if name else col.alias_or_name +2424 else: +2425 name = f"{col.alias_or_name}_{name}" if name else col.alias_or_name +2426 +2427 columns.append(exp.to_identifier(name, quoted=self.QUOTED_PIVOT_COLUMNS)) 2428 -2429 return limit_exp +2429 pivot.set("columns", columns) 2430 -2431 if self._match(TokenType.FETCH): -2432 direction = self._match_set((TokenType.FIRST, TokenType.NEXT)) -2433 direction = self._prev.text if direction else "FIRST" -2434 count = self._parse_number() -2435 self._match_set((TokenType.ROW, TokenType.ROWS)) -2436 self._match(TokenType.ONLY) -2437 return self.expression(exp.Fetch, direction=direction, count=count) -2438 -2439 return this -2440 -2441 def _parse_offset(self, this: t.Optional[exp.Expression] = None) -> t.Optional[exp.Expression]: -2442 if not self._match_set((TokenType.OFFSET, TokenType.COMMA)): -2443 return this -2444 -2445 count = self._parse_number() -2446 self._match_set((TokenType.ROW, TokenType.ROWS)) -2447 return self.expression(exp.Offset, this=this, expression=count) -2448 -2449 def _parse_lock(self) -> t.Optional[exp.Expression]: -2450 if self._match_text_seq("FOR", "UPDATE"): -2451 return self.expression(exp.Lock, update=True) -2452 if self._match_text_seq("FOR", "SHARE"): -2453 return self.expression(exp.Lock, update=False) +2431 return pivot +2432 +2433 def _pivot_column_names(self, pivot_columns: t.List[exp.Expression]) -> t.List[str]: +2434 return [agg.alias for agg in pivot_columns] +2435 +2436 def _parse_where(self, skip_where_token: bool = False) -> t.Optional[exp.Expression]: +2437 if not skip_where_token and not self._match(TokenType.WHERE): +2438 return None +2439 +2440 return self.expression( +2441 exp.Where, comments=self._prev_comments, this=self._parse_conjunction() +2442 ) +2443 +2444 def _parse_group(self, skip_group_by_token: bool = False) -> t.Optional[exp.Expression]: +2445 if not skip_group_by_token and not self._match(TokenType.GROUP_BY): +2446 return None +2447 +2448 elements = defaultdict(list) +2449 +2450 while True: +2451 expressions = self._parse_csv(self._parse_conjunction) +2452 if expressions: +2453 elements["expressions"].extend(expressions) 2454 -2455 return None -2456 -2457 def _parse_set_operations(self, this: t.Optional[exp.Expression]) -> t.Optional[exp.Expression]: -2458 if not self._match_set(self.SET_OPERATIONS): -2459 return this -2460 -2461 token_type = self._prev.token_type -2462 -2463 if token_type == TokenType.UNION: -2464 expression = exp.Union -2465 elif token_type == TokenType.EXCEPT: -2466 expression = exp.Except -2467 else: -2468 expression = exp.Intersect -2469 -2470 return self.expression( -2471 expression, -2472 this=this, -2473 distinct=self._match(TokenType.DISTINCT) or not self._match(TokenType.ALL), -2474 expression=self._parse_set_operations(self._parse_select(nested=True)), -2475 ) -2476 -2477 def _parse_expression(self) -> t.Optional[exp.Expression]: -2478 return self._parse_alias(self._parse_conjunction()) +2455 grouping_sets = self._parse_grouping_sets() +2456 if grouping_sets: +2457 elements["grouping_sets"].extend(grouping_sets) +2458 +2459 rollup = None +2460 cube = None +2461 +2462 with_ = self._match(TokenType.WITH) +2463 if self._match(TokenType.ROLLUP): +2464 rollup = with_ or self._parse_wrapped_csv(self._parse_column) +2465 elements["rollup"].extend(ensure_list(rollup)) +2466 +2467 if self._match(TokenType.CUBE): +2468 cube = with_ or self._parse_wrapped_csv(self._parse_column) +2469 elements["cube"].extend(ensure_list(cube)) +2470 +2471 if not (expressions or grouping_sets or rollup or cube): +2472 break +2473 +2474 return self.expression(exp.Group, **elements) # type: ignore +2475 +2476 def _parse_grouping_sets(self) -> t.Optional[t.List[t.Optional[exp.Expression]]]: +2477 if not self._match(TokenType.GROUPING_SETS): +2478 return None 2479 -2480 def _parse_conjunction(self) -> t.Optional[exp.Expression]: -2481 return self._parse_tokens(self._parse_equality, self.CONJUNCTION) -2482 -2483 def _parse_equality(self) -> t.Optional[exp.Expression]: -2484 return self._parse_tokens(self._parse_comparison, self.EQUALITY) -2485 -2486 def _parse_comparison(self) -> t.Optional[exp.Expression]: -2487 return self._parse_tokens(self._parse_range, self.COMPARISON) -2488 -2489 def _parse_range(self) -> t.Optional[exp.Expression]: -2490 this = self._parse_bitwise() -2491 negate = self._match(TokenType.NOT) -2492 -2493 if self._match_set(self.RANGE_PARSERS): -2494 this = self.RANGE_PARSERS[self._prev.token_type](self, this) -2495 elif self._match(TokenType.ISNULL): -2496 this = self.expression(exp.Is, this=this, expression=exp.Null()) -2497 -2498 # Postgres supports ISNULL and NOTNULL for conditions. -2499 # https://blog.andreiavram.ro/postgresql-null-composite-type/ -2500 if self._match(TokenType.NOTNULL): -2501 this = self.expression(exp.Is, this=this, expression=exp.Null()) -2502 this = self.expression(exp.Not, this=this) -2503 -2504 if negate: -2505 this = self.expression(exp.Not, this=this) -2506 -2507 if self._match(TokenType.IS): -2508 this = self._parse_is(this) +2480 return self._parse_wrapped_csv(self._parse_grouping_set) +2481 +2482 def _parse_grouping_set(self) -> t.Optional[exp.Expression]: +2483 if self._match(TokenType.L_PAREN): +2484 grouping_set = self._parse_csv(self._parse_column) +2485 self._match_r_paren() +2486 return self.expression(exp.Tuple, expressions=grouping_set) +2487 +2488 return self._parse_column() +2489 +2490 def _parse_having(self, skip_having_token: bool = False) -> t.Optional[exp.Expression]: +2491 if not skip_having_token and not self._match(TokenType.HAVING): +2492 return None +2493 return self.expression(exp.Having, this=self._parse_conjunction()) +2494 +2495 def _parse_qualify(self) -> t.Optional[exp.Expression]: +2496 if not self._match(TokenType.QUALIFY): +2497 return None +2498 return self.expression(exp.Qualify, this=self._parse_conjunction()) +2499 +2500 def _parse_order( +2501 self, this: t.Optional[exp.Expression] = None, skip_order_token: bool = False +2502 ) -> t.Optional[exp.Expression]: +2503 if not skip_order_token and not self._match(TokenType.ORDER_BY): +2504 return this +2505 +2506 return self.expression( +2507 exp.Order, this=this, expressions=self._parse_csv(self._parse_ordered) +2508 ) 2509 -2510 return this -2511 -2512 def _parse_is(self, this: t.Optional[exp.Expression]) -> exp.Expression: -2513 negate = self._match(TokenType.NOT) -2514 if self._match(TokenType.DISTINCT_FROM): -2515 klass = exp.NullSafeEQ if negate else exp.NullSafeNEQ -2516 return self.expression(klass, this=this, expression=self._parse_expression()) -2517 -2518 this = self.expression( -2519 exp.Is, -2520 this=this, -2521 expression=self._parse_null() or self._parse_boolean(), -2522 ) -2523 return self.expression(exp.Not, this=this) if negate else this -2524 -2525 def _parse_in(self, this: t.Optional[exp.Expression]) -> exp.Expression: -2526 unnest = self._parse_unnest() -2527 if unnest: -2528 this = self.expression(exp.In, this=this, unnest=unnest) -2529 elif self._match(TokenType.L_PAREN): -2530 expressions = self._parse_csv(self._parse_select_or_expression) -2531 -2532 if len(expressions) == 1 and isinstance(expressions[0], exp.Subqueryable): -2533 this = self.expression(exp.In, this=this, query=expressions[0]) -2534 else: -2535 this = self.expression(exp.In, this=this, expressions=expressions) +2510 def _parse_sort( +2511 self, token_type: TokenType, exp_class: t.Type[exp.Expression] +2512 ) -> t.Optional[exp.Expression]: +2513 if not self._match(token_type): +2514 return None +2515 return self.expression(exp_class, expressions=self._parse_csv(self._parse_ordered)) +2516 +2517 def _parse_ordered(self) -> exp.Expression: +2518 this = self._parse_conjunction() +2519 self._match(TokenType.ASC) +2520 is_desc = self._match(TokenType.DESC) +2521 is_nulls_first = self._match(TokenType.NULLS_FIRST) +2522 is_nulls_last = self._match(TokenType.NULLS_LAST) +2523 desc = is_desc or False +2524 asc = not desc +2525 nulls_first = is_nulls_first or False +2526 explicitly_null_ordered = is_nulls_first or is_nulls_last +2527 if ( +2528 not explicitly_null_ordered +2529 and ( +2530 (asc and self.null_ordering == "nulls_are_small") +2531 or (desc and self.null_ordering != "nulls_are_small") +2532 ) +2533 and self.null_ordering != "nulls_are_last" +2534 ): +2535 nulls_first = True 2536 -2537 self._match_r_paren() -2538 else: -2539 this = self.expression(exp.In, this=this, field=self._parse_field()) -2540 -2541 return this -2542 -2543 def _parse_between(self, this: exp.Expression) -> exp.Expression: -2544 low = self._parse_bitwise() -2545 self._match(TokenType.AND) -2546 high = self._parse_bitwise() -2547 return self.expression(exp.Between, this=this, low=low, high=high) -2548 -2549 def _parse_escape(self, this: t.Optional[exp.Expression]) -> t.Optional[exp.Expression]: -2550 if not self._match(TokenType.ESCAPE): -2551 return this -2552 return self.expression(exp.Escape, this=this, expression=self._parse_string()) -2553 -2554 def _parse_bitwise(self) -> t.Optional[exp.Expression]: -2555 this = self._parse_term() +2537 return self.expression(exp.Ordered, this=this, desc=desc, nulls_first=nulls_first) +2538 +2539 def _parse_limit( +2540 self, this: t.Optional[exp.Expression] = None, top: bool = False +2541 ) -> t.Optional[exp.Expression]: +2542 if self._match(TokenType.TOP if top else TokenType.LIMIT): +2543 limit_paren = self._match(TokenType.L_PAREN) +2544 limit_exp = self.expression( +2545 exp.Limit, this=this, expression=self._parse_number() if top else self._parse_term() +2546 ) +2547 +2548 if limit_paren: +2549 self._match_r_paren() +2550 +2551 return limit_exp +2552 +2553 if self._match(TokenType.FETCH): +2554 direction = self._match_set((TokenType.FIRST, TokenType.NEXT)) +2555 direction = self._prev.text if direction else "FIRST" 2556 -2557 while True: -2558 if self._match_set(self.BITWISE): -2559 this = self.expression( -2560 self.BITWISE[self._prev.token_type], -2561 this=this, -2562 expression=self._parse_term(), -2563 ) -2564 elif self._match_pair(TokenType.LT, TokenType.LT): -2565 this = self.expression( -2566 exp.BitwiseLeftShift, this=this, expression=self._parse_term() -2567 ) -2568 elif self._match_pair(TokenType.GT, TokenType.GT): -2569 this = self.expression( -2570 exp.BitwiseRightShift, this=this, expression=self._parse_term() -2571 ) -2572 else: -2573 break -2574 -2575 return this -2576 -2577 def _parse_term(self) -> t.Optional[exp.Expression]: -2578 return self._parse_tokens(self._parse_factor, self.TERM) -2579 -2580 def _parse_factor(self) -> t.Optional[exp.Expression]: -2581 return self._parse_tokens(self._parse_unary, self.FACTOR) -2582 -2583 def _parse_unary(self) -> t.Optional[exp.Expression]: -2584 if self._match_set(self.UNARY_PARSERS): -2585 return self.UNARY_PARSERS[self._prev.token_type](self) -2586 return self._parse_at_time_zone(self._parse_type()) -2587 -2588 def _parse_type(self) -> t.Optional[exp.Expression]: -2589 if self._match(TokenType.INTERVAL): -2590 return self.expression(exp.Interval, this=self._parse_term(), unit=self._parse_field()) +2557 count = self._parse_number() +2558 percent = self._match(TokenType.PERCENT) +2559 +2560 self._match_set((TokenType.ROW, TokenType.ROWS)) +2561 +2562 only = self._match(TokenType.ONLY) +2563 with_ties = self._match_text_seq("WITH", "TIES") +2564 +2565 if only and with_ties: +2566 self.raise_error("Cannot specify both ONLY and WITH TIES in FETCH clause") +2567 +2568 return self.expression( +2569 exp.Fetch, +2570 direction=direction, +2571 count=count, +2572 percent=percent, +2573 with_ties=with_ties, +2574 ) +2575 +2576 return this +2577 +2578 def _parse_offset(self, this: t.Optional[exp.Expression] = None) -> t.Optional[exp.Expression]: +2579 if not self._match_set((TokenType.OFFSET, TokenType.COMMA)): +2580 return this +2581 +2582 count = self._parse_number() +2583 self._match_set((TokenType.ROW, TokenType.ROWS)) +2584 return self.expression(exp.Offset, this=this, expression=count) +2585 +2586 def _parse_lock(self) -> t.Optional[exp.Expression]: +2587 if self._match_text_seq("FOR", "UPDATE"): +2588 return self.expression(exp.Lock, update=True) +2589 if self._match_text_seq("FOR", "SHARE"): +2590 return self.expression(exp.Lock, update=False) 2591 -2592 index = self._index -2593 type_token = self._parse_types(check_func=True) -2594 this = self._parse_column() -2595 -2596 if type_token: -2597 if isinstance(this, exp.Literal): -2598 return self.expression(exp.Cast, this=this, to=type_token) -2599 if not type_token.args.get("expressions"): -2600 self._retreat(index) -2601 return self._parse_column() -2602 return type_token -2603 -2604 return this -2605 -2606 def _parse_types(self, check_func: bool = False) -> t.Optional[exp.Expression]: -2607 index = self._index -2608 -2609 prefix = self._match_text_seq("SYSUDTLIB", ".") -2610 -2611 if not self._match_set(self.TYPE_TOKENS): -2612 return None +2592 return None +2593 +2594 def _parse_set_operations(self, this: t.Optional[exp.Expression]) -> t.Optional[exp.Expression]: +2595 if not self._match_set(self.SET_OPERATIONS): +2596 return this +2597 +2598 token_type = self._prev.token_type +2599 +2600 if token_type == TokenType.UNION: +2601 expression = exp.Union +2602 elif token_type == TokenType.EXCEPT: +2603 expression = exp.Except +2604 else: +2605 expression = exp.Intersect +2606 +2607 return self.expression( +2608 expression, +2609 this=this, +2610 distinct=self._match(TokenType.DISTINCT) or not self._match(TokenType.ALL), +2611 expression=self._parse_set_operations(self._parse_select(nested=True)), +2612 ) 2613 -2614 type_token = self._prev.token_type -2615 -2616 if type_token == TokenType.PSEUDO_TYPE: -2617 return self.expression(exp.PseudoType, this=self._prev.text) -2618 -2619 nested = type_token in self.NESTED_TYPE_TOKENS -2620 is_struct = type_token == TokenType.STRUCT -2621 expressions = None -2622 maybe_func = False -2623 -2624 if self._match(TokenType.L_PAREN): -2625 if is_struct: -2626 expressions = self._parse_csv(self._parse_struct_kwargs) -2627 elif nested: -2628 expressions = self._parse_csv(self._parse_types) -2629 else: -2630 expressions = self._parse_csv(self._parse_conjunction) -2631 -2632 if not expressions: -2633 self._retreat(index) -2634 return None -2635 -2636 self._match_r_paren() -2637 maybe_func = True +2614 def _parse_expression(self) -> t.Optional[exp.Expression]: +2615 return self._parse_alias(self._parse_conjunction()) +2616 +2617 def _parse_conjunction(self) -> t.Optional[exp.Expression]: +2618 return self._parse_tokens(self._parse_equality, self.CONJUNCTION) +2619 +2620 def _parse_equality(self) -> t.Optional[exp.Expression]: +2621 return self._parse_tokens(self._parse_comparison, self.EQUALITY) +2622 +2623 def _parse_comparison(self) -> t.Optional[exp.Expression]: +2624 return self._parse_tokens(self._parse_range, self.COMPARISON) +2625 +2626 def _parse_range(self) -> t.Optional[exp.Expression]: +2627 this = self._parse_bitwise() +2628 negate = self._match(TokenType.NOT) +2629 +2630 if self._match_set(self.RANGE_PARSERS): +2631 expression = self.RANGE_PARSERS[self._prev.token_type](self, this) +2632 if not expression: +2633 return this +2634 +2635 this = expression +2636 elif self._match(TokenType.ISNULL): +2637 this = self.expression(exp.Is, this=this, expression=exp.Null()) 2638 -2639 if self._match_pair(TokenType.L_BRACKET, TokenType.R_BRACKET): -2640 this = exp.DataType( -2641 this=exp.DataType.Type.ARRAY, -2642 expressions=[exp.DataType.build(type_token.value, expressions=expressions)], -2643 nested=True, -2644 ) -2645 -2646 while self._match_pair(TokenType.L_BRACKET, TokenType.R_BRACKET): -2647 this = exp.DataType( -2648 this=exp.DataType.Type.ARRAY, -2649 expressions=[this], -2650 nested=True, -2651 ) +2639 # Postgres supports ISNULL and NOTNULL for conditions. +2640 # https://blog.andreiavram.ro/postgresql-null-composite-type/ +2641 if self._match(TokenType.NOTNULL): +2642 this = self.expression(exp.Is, this=this, expression=exp.Null()) +2643 this = self.expression(exp.Not, this=this) +2644 +2645 if negate: +2646 this = self.expression(exp.Not, this=this) +2647 +2648 if self._match(TokenType.IS): +2649 this = self._parse_is(this) +2650 +2651 return this 2652 -2653 return this -2654 -2655 if self._match(TokenType.L_BRACKET): -2656 self._retreat(index) -2657 return None -2658 -2659 values: t.Optional[t.List[t.Optional[exp.Expression]]] = None -2660 if nested and self._match(TokenType.LT): -2661 if is_struct: -2662 expressions = self._parse_csv(self._parse_struct_kwargs) -2663 else: -2664 expressions = self._parse_csv(self._parse_types) -2665 -2666 if not self._match(TokenType.GT): -2667 self.raise_error("Expecting >") -2668 -2669 if self._match_set((TokenType.L_BRACKET, TokenType.L_PAREN)): -2670 values = self._parse_csv(self._parse_conjunction) -2671 self._match_set((TokenType.R_BRACKET, TokenType.R_PAREN)) -2672 -2673 value: t.Optional[exp.Expression] = None -2674 if type_token in self.TIMESTAMPS: -2675 if self._match(TokenType.WITH_TIME_ZONE) or type_token == TokenType.TIMESTAMPTZ: -2676 value = exp.DataType(this=exp.DataType.Type.TIMESTAMPTZ, expressions=expressions) -2677 elif ( -2678 self._match(TokenType.WITH_LOCAL_TIME_ZONE) or type_token == TokenType.TIMESTAMPLTZ -2679 ): -2680 value = exp.DataType(this=exp.DataType.Type.TIMESTAMPLTZ, expressions=expressions) -2681 elif self._match(TokenType.WITHOUT_TIME_ZONE): -2682 if type_token == TokenType.TIME: -2683 value = exp.DataType(this=exp.DataType.Type.TIME, expressions=expressions) -2684 else: -2685 value = exp.DataType(this=exp.DataType.Type.TIMESTAMP, expressions=expressions) -2686 -2687 maybe_func = maybe_func and value is None -2688 -2689 if value is None: -2690 value = exp.DataType(this=exp.DataType.Type.TIMESTAMP, expressions=expressions) -2691 elif type_token == TokenType.INTERVAL: -2692 unit = self._parse_var() -2693 -2694 if not unit: -2695 value = self.expression(exp.DataType, this=exp.DataType.Type.INTERVAL) -2696 else: -2697 value = self.expression(exp.Interval, unit=unit) -2698 -2699 if maybe_func and check_func: -2700 index2 = self._index -2701 peek = self._parse_string() -2702 -2703 if not peek: -2704 self._retreat(index) -2705 return None -2706 -2707 self._retreat(index2) -2708 -2709 if value: -2710 return value -2711 -2712 return exp.DataType( -2713 this=exp.DataType.Type[type_token.value.upper()], -2714 expressions=expressions, -2715 nested=nested, -2716 values=values, -2717 prefix=prefix, -2718 ) -2719 -2720 def _parse_struct_kwargs(self) -> t.Optional[exp.Expression]: -2721 if self._curr and self._curr.token_type in self.TYPE_TOKENS: -2722 return self._parse_types() -2723 -2724 this = self._parse_id_var() -2725 self._match(TokenType.COLON) -2726 data_type = self._parse_types() -2727 -2728 if not data_type: -2729 return None -2730 return self.expression(exp.StructKwarg, this=this, expression=data_type) -2731 -2732 def _parse_at_time_zone(self, this: t.Optional[exp.Expression]) -> t.Optional[exp.Expression]: -2733 if not self._match(TokenType.AT_TIME_ZONE): -2734 return this -2735 return self.expression(exp.AtTimeZone, this=this, zone=self._parse_unary()) -2736 -2737 def _parse_column(self) -> t.Optional[exp.Expression]: -2738 this = self._parse_field() -2739 if isinstance(this, exp.Identifier): -2740 this = self.expression(exp.Column, this=this) -2741 elif not this: -2742 return self._parse_bracket(this) -2743 this = self._parse_bracket(this) -2744 -2745 while self._match_set(self.COLUMN_OPERATORS): -2746 op_token = self._prev.token_type -2747 op = self.COLUMN_OPERATORS.get(op_token) -2748 -2749 if op_token == TokenType.DCOLON: -2750 field = self._parse_types() -2751 if not field: -2752 self.raise_error("Expected type") -2753 elif op: -2754 self._advance() -2755 value = self._prev.text -2756 field = ( -2757 exp.Literal.number(value) -2758 if self._prev.token_type == TokenType.NUMBER -2759 else exp.Literal.string(value) -2760 ) -2761 else: -2762 field = self._parse_star() or self._parse_function() or self._parse_id_var() -2763 -2764 if isinstance(field, exp.Func): -2765 # bigquery allows function calls like x.y.count(...) -2766 # SAFE.SUBSTR(...) -2767 # https://cloud.google.com/bigquery/docs/reference/standard-sql/functions-reference#function_call_rules -2768 this = self._replace_columns_with_dots(this) -2769 -2770 if op: -2771 this = op(self, this, field) -2772 elif isinstance(this, exp.Column) and not this.args.get("catalog"): -2773 this = self.expression( -2774 exp.Column, -2775 this=field, -2776 table=this.this, -2777 db=this.args.get("table"), -2778 catalog=this.args.get("db"), -2779 ) -2780 else: -2781 this = self.expression(exp.Dot, this=this, expression=field) -2782 this = self._parse_bracket(this) +2653 def _parse_is(self, this: t.Optional[exp.Expression]) -> t.Optional[exp.Expression]: +2654 index = self._index - 1 +2655 negate = self._match(TokenType.NOT) +2656 if self._match(TokenType.DISTINCT_FROM): +2657 klass = exp.NullSafeEQ if negate else exp.NullSafeNEQ +2658 return self.expression(klass, this=this, expression=self._parse_expression()) +2659 +2660 expression = self._parse_null() or self._parse_boolean() +2661 if not expression: +2662 self._retreat(index) +2663 return None +2664 +2665 this = self.expression(exp.Is, this=this, expression=expression) +2666 return self.expression(exp.Not, this=this) if negate else this +2667 +2668 def _parse_in(self, this: t.Optional[exp.Expression]) -> exp.Expression: +2669 unnest = self._parse_unnest() +2670 if unnest: +2671 this = self.expression(exp.In, this=this, unnest=unnest) +2672 elif self._match(TokenType.L_PAREN): +2673 expressions = self._parse_csv(self._parse_select_or_expression) +2674 +2675 if len(expressions) == 1 and isinstance(expressions[0], exp.Subqueryable): +2676 this = self.expression(exp.In, this=this, query=expressions[0]) +2677 else: +2678 this = self.expression(exp.In, this=this, expressions=expressions) +2679 +2680 self._match_r_paren() +2681 else: +2682 this = self.expression(exp.In, this=this, field=self._parse_field()) +2683 +2684 return this +2685 +2686 def _parse_between(self, this: exp.Expression) -> exp.Expression: +2687 low = self._parse_bitwise() +2688 self._match(TokenType.AND) +2689 high = self._parse_bitwise() +2690 return self.expression(exp.Between, this=this, low=low, high=high) +2691 +2692 def _parse_escape(self, this: t.Optional[exp.Expression]) -> t.Optional[exp.Expression]: +2693 if not self._match(TokenType.ESCAPE): +2694 return this +2695 return self.expression(exp.Escape, this=this, expression=self._parse_string()) +2696 +2697 def _parse_interval(self) -> t.Optional[exp.Expression]: +2698 if not self._match(TokenType.INTERVAL): +2699 return None +2700 +2701 this = self._parse_primary() or self._parse_term() +2702 unit = self._parse_function() or self._parse_var() +2703 +2704 # Most dialects support, e.g., the form INTERVAL '5' day, thus we try to parse +2705 # each INTERVAL expression into this canonical form so it's easy to transpile +2706 if this and isinstance(this, exp.Literal): +2707 if this.is_number: +2708 this = exp.Literal.string(this.name) +2709 +2710 # Try to not clutter Snowflake's multi-part intervals like INTERVAL '1 day, 1 year' +2711 parts = this.name.split() +2712 if not unit and len(parts) <= 2: +2713 this = exp.Literal.string(seq_get(parts, 0)) +2714 unit = self.expression(exp.Var, this=seq_get(parts, 1)) +2715 +2716 return self.expression(exp.Interval, this=this, unit=unit) +2717 +2718 def _parse_bitwise(self) -> t.Optional[exp.Expression]: +2719 this = self._parse_term() +2720 +2721 while True: +2722 if self._match_set(self.BITWISE): +2723 this = self.expression( +2724 self.BITWISE[self._prev.token_type], +2725 this=this, +2726 expression=self._parse_term(), +2727 ) +2728 elif self._match_pair(TokenType.LT, TokenType.LT): +2729 this = self.expression( +2730 exp.BitwiseLeftShift, this=this, expression=self._parse_term() +2731 ) +2732 elif self._match_pair(TokenType.GT, TokenType.GT): +2733 this = self.expression( +2734 exp.BitwiseRightShift, this=this, expression=self._parse_term() +2735 ) +2736 else: +2737 break +2738 +2739 return this +2740 +2741 def _parse_term(self) -> t.Optional[exp.Expression]: +2742 return self._parse_tokens(self._parse_factor, self.TERM) +2743 +2744 def _parse_factor(self) -> t.Optional[exp.Expression]: +2745 return self._parse_tokens(self._parse_unary, self.FACTOR) +2746 +2747 def _parse_unary(self) -> t.Optional[exp.Expression]: +2748 if self._match_set(self.UNARY_PARSERS): +2749 return self.UNARY_PARSERS[self._prev.token_type](self) +2750 return self._parse_at_time_zone(self._parse_type()) +2751 +2752 def _parse_type(self) -> t.Optional[exp.Expression]: +2753 interval = self._parse_interval() +2754 if interval: +2755 return interval +2756 +2757 index = self._index +2758 data_type = self._parse_types(check_func=True) +2759 this = self._parse_column() +2760 +2761 if data_type: +2762 if isinstance(this, exp.Literal): +2763 parser = self.TYPE_LITERAL_PARSERS.get(data_type.this) +2764 if parser: +2765 return parser(self, this, data_type) +2766 return self.expression(exp.Cast, this=this, to=data_type) +2767 if not data_type.args.get("expressions"): +2768 self._retreat(index) +2769 return self._parse_column() +2770 return data_type +2771 +2772 return this +2773 +2774 def _parse_types(self, check_func: bool = False) -> t.Optional[exp.Expression]: +2775 index = self._index +2776 +2777 prefix = self._match_text_seq("SYSUDTLIB", ".") +2778 +2779 if not self._match_set(self.TYPE_TOKENS): +2780 return None +2781 +2782 type_token = self._prev.token_type 2783 -2784 return this -2785 -2786 def _parse_primary(self) -> t.Optional[exp.Expression]: -2787 if self._match_set(self.PRIMARY_PARSERS): -2788 token_type = self._prev.token_type -2789 primary = self.PRIMARY_PARSERS[token_type](self, self._prev) -2790 -2791 if token_type == TokenType.STRING: -2792 expressions = [primary] -2793 while self._match(TokenType.STRING): -2794 expressions.append(exp.Literal.string(self._prev.text)) -2795 if len(expressions) > 1: -2796 return self.expression(exp.Concat, expressions=expressions) -2797 return primary -2798 -2799 if self._match_pair(TokenType.DOT, TokenType.NUMBER): -2800 return exp.Literal.number(f"0.{self._prev.text}") -2801 -2802 if self._match(TokenType.L_PAREN): -2803 comments = self._prev_comments -2804 query = self._parse_select() -2805 -2806 if query: -2807 expressions = [query] -2808 else: -2809 expressions = self._parse_csv( -2810 lambda: self._parse_alias(self._parse_conjunction(), explicit=True) -2811 ) -2812 -2813 this = seq_get(expressions, 0) -2814 self._parse_query_modifiers(this) -2815 -2816 if isinstance(this, exp.Subqueryable): -2817 this = self._parse_set_operations( -2818 self._parse_subquery(this=this, parse_alias=False) +2784 if type_token == TokenType.PSEUDO_TYPE: +2785 return self.expression(exp.PseudoType, this=self._prev.text) +2786 +2787 nested = type_token in self.NESTED_TYPE_TOKENS +2788 is_struct = type_token == TokenType.STRUCT +2789 expressions = None +2790 maybe_func = False +2791 +2792 if self._match(TokenType.L_PAREN): +2793 if is_struct: +2794 expressions = self._parse_csv(self._parse_struct_kwargs) +2795 elif nested: +2796 expressions = self._parse_csv(self._parse_types) +2797 else: +2798 expressions = self._parse_csv(self._parse_conjunction) +2799 +2800 if not expressions: +2801 self._retreat(index) +2802 return None +2803 +2804 self._match_r_paren() +2805 maybe_func = True +2806 +2807 if self._match_pair(TokenType.L_BRACKET, TokenType.R_BRACKET): +2808 this = exp.DataType( +2809 this=exp.DataType.Type.ARRAY, +2810 expressions=[exp.DataType.build(type_token.value, expressions=expressions)], +2811 nested=True, +2812 ) +2813 +2814 while self._match_pair(TokenType.L_BRACKET, TokenType.R_BRACKET): +2815 this = exp.DataType( +2816 this=exp.DataType.Type.ARRAY, +2817 expressions=[this], +2818 nested=True, 2819 ) -2820 elif len(expressions) > 1: -2821 this = self.expression(exp.Tuple, expressions=expressions) -2822 else: -2823 this = self.expression(exp.Paren, this=self._parse_set_operations(this)) -2824 -2825 self._match_r_paren() +2820 +2821 return this +2822 +2823 if self._match(TokenType.L_BRACKET): +2824 self._retreat(index) +2825 return None 2826 -2827 if this and comments: -2828 this.comments = comments -2829 -2830 return this -2831 -2832 return None +2827 values: t.Optional[t.List[t.Optional[exp.Expression]]] = None +2828 if nested and self._match(TokenType.LT): +2829 if is_struct: +2830 expressions = self._parse_csv(self._parse_struct_kwargs) +2831 else: +2832 expressions = self._parse_csv(self._parse_types) 2833 -2834 def _parse_field(self, any_token: bool = False) -> t.Optional[exp.Expression]: -2835 return self._parse_primary() or self._parse_function() or self._parse_id_var(any_token) +2834 if not self._match(TokenType.GT): +2835 self.raise_error("Expecting >") 2836 -2837 def _parse_function( -2838 self, functions: t.Optional[t.Dict[str, t.Callable]] = None -2839 ) -> t.Optional[exp.Expression]: -2840 if not self._curr: -2841 return None -2842 -2843 token_type = self._curr.token_type -2844 -2845 if self._match_set(self.NO_PAREN_FUNCTION_PARSERS): -2846 return self.NO_PAREN_FUNCTION_PARSERS[token_type](self) -2847 -2848 if not self._next or self._next.token_type != TokenType.L_PAREN: -2849 if token_type in self.NO_PAREN_FUNCTIONS: -2850 self._advance() -2851 return self.expression(self.NO_PAREN_FUNCTIONS[token_type]) -2852 -2853 return None +2837 if self._match_set((TokenType.L_BRACKET, TokenType.L_PAREN)): +2838 values = self._parse_csv(self._parse_conjunction) +2839 self._match_set((TokenType.R_BRACKET, TokenType.R_PAREN)) +2840 +2841 value: t.Optional[exp.Expression] = None +2842 if type_token in self.TIMESTAMPS: +2843 if self._match(TokenType.WITH_TIME_ZONE) or type_token == TokenType.TIMESTAMPTZ: +2844 value = exp.DataType(this=exp.DataType.Type.TIMESTAMPTZ, expressions=expressions) +2845 elif ( +2846 self._match(TokenType.WITH_LOCAL_TIME_ZONE) or type_token == TokenType.TIMESTAMPLTZ +2847 ): +2848 value = exp.DataType(this=exp.DataType.Type.TIMESTAMPLTZ, expressions=expressions) +2849 elif self._match(TokenType.WITHOUT_TIME_ZONE): +2850 if type_token == TokenType.TIME: +2851 value = exp.DataType(this=exp.DataType.Type.TIME, expressions=expressions) +2852 else: +2853 value = exp.DataType(this=exp.DataType.Type.TIMESTAMP, expressions=expressions) 2854 -2855 if token_type not in self.FUNC_TOKENS: -2856 return None -2857 -2858 this = self._curr.text -2859 upper = this.upper() -2860 self._advance(2) +2855 maybe_func = maybe_func and value is None +2856 +2857 if value is None: +2858 value = exp.DataType(this=exp.DataType.Type.TIMESTAMP, expressions=expressions) +2859 elif type_token == TokenType.INTERVAL: +2860 unit = self._parse_var() 2861 -2862 parser = self.FUNCTION_PARSERS.get(upper) -2863 -2864 if parser: -2865 this = parser(self) -2866 else: -2867 subquery_predicate = self.SUBQUERY_PREDICATES.get(token_type) -2868 -2869 if subquery_predicate and self._curr.token_type in (TokenType.SELECT, TokenType.WITH): -2870 this = self.expression(subquery_predicate, this=self._parse_select()) -2871 self._match_r_paren() -2872 return this -2873 -2874 if functions is None: -2875 functions = self.FUNCTIONS +2862 if not unit: +2863 value = self.expression(exp.DataType, this=exp.DataType.Type.INTERVAL) +2864 else: +2865 value = self.expression(exp.Interval, unit=unit) +2866 +2867 if maybe_func and check_func: +2868 index2 = self._index +2869 peek = self._parse_string() +2870 +2871 if not peek: +2872 self._retreat(index) +2873 return None +2874 +2875 self._retreat(index2) 2876 -2877 function = functions.get(upper) -2878 args = self._parse_csv(self._parse_lambda) +2877 if value: +2878 return value 2879 -2880 if function: -2881 # Clickhouse supports function calls like foo(x, y)(z), so for these we need to also parse the -2882 # second parameter list (i.e. "(z)") and the corresponding function will receive both arg lists. -2883 if count_params(function) == 2: -2884 params = None -2885 if self._match_pair(TokenType.R_PAREN, TokenType.L_PAREN): -2886 params = self._parse_csv(self._parse_lambda) +2880 return exp.DataType( +2881 this=exp.DataType.Type[type_token.value.upper()], +2882 expressions=expressions, +2883 nested=nested, +2884 values=values, +2885 prefix=prefix, +2886 ) 2887 -2888 this = function(args, params) -2889 else: -2890 this = function(args) -2891 -2892 self.validate_expression(this, args) -2893 else: -2894 this = self.expression(exp.Anonymous, this=this, expressions=args) -2895 -2896 self._match_r_paren(this) -2897 return self._parse_window(this) +2888 def _parse_struct_kwargs(self) -> t.Optional[exp.Expression]: +2889 index = self._index +2890 this = self._parse_id_var() +2891 self._match(TokenType.COLON) +2892 data_type = self._parse_types() +2893 +2894 if not data_type: +2895 self._retreat(index) +2896 return self._parse_types() +2897 return self.expression(exp.StructKwarg, this=this, expression=data_type) 2898 -2899 def _parse_function_parameter(self) -> t.Optional[exp.Expression]: -2900 return self._parse_column_def(self._parse_id_var()) -2901 -2902 def _parse_user_defined_function( -2903 self, kind: t.Optional[TokenType] = None -2904 ) -> t.Optional[exp.Expression]: -2905 this = self._parse_id_var() -2906 -2907 while self._match(TokenType.DOT): -2908 this = self.expression(exp.Dot, this=this, expression=self._parse_id_var()) -2909 -2910 if not self._match(TokenType.L_PAREN): -2911 return this -2912 -2913 expressions = self._parse_csv(self._parse_function_parameter) -2914 self._match_r_paren() -2915 return self.expression( -2916 exp.UserDefinedFunction, this=this, expressions=expressions, wrapped=True -2917 ) -2918 -2919 def _parse_introducer(self, token: Token) -> t.Optional[exp.Expression]: -2920 literal = self._parse_primary() -2921 if literal: -2922 return self.expression(exp.Introducer, this=token.text, expression=literal) -2923 -2924 return self.expression(exp.Identifier, this=token.text) -2925 -2926 def _parse_national(self, token: Token) -> exp.Expression: -2927 return self.expression(exp.National, this=exp.Literal.string(token.text)) -2928 -2929 def _parse_session_parameter(self) -> exp.Expression: -2930 kind = None -2931 this = self._parse_id_var() or self._parse_primary() -2932 -2933 if this and self._match(TokenType.DOT): -2934 kind = this.name -2935 this = self._parse_var() or self._parse_primary() +2899 def _parse_at_time_zone(self, this: t.Optional[exp.Expression]) -> t.Optional[exp.Expression]: +2900 if not self._match(TokenType.AT_TIME_ZONE): +2901 return this +2902 return self.expression(exp.AtTimeZone, this=this, zone=self._parse_unary()) +2903 +2904 def _parse_column(self) -> t.Optional[exp.Expression]: +2905 this = self._parse_field() +2906 if isinstance(this, exp.Identifier): +2907 this = self.expression(exp.Column, this=this) +2908 elif not this: +2909 return self._parse_bracket(this) +2910 this = self._parse_bracket(this) +2911 +2912 while self._match_set(self.COLUMN_OPERATORS): +2913 op_token = self._prev.token_type +2914 op = self.COLUMN_OPERATORS.get(op_token) +2915 +2916 if op_token == TokenType.DCOLON: +2917 field = self._parse_types() +2918 if not field: +2919 self.raise_error("Expected type") +2920 elif op: +2921 self._advance() +2922 value = self._prev.text +2923 field = ( +2924 exp.Literal.number(value) +2925 if self._prev.token_type == TokenType.NUMBER +2926 else exp.Literal.string(value) +2927 ) +2928 else: +2929 field = self._parse_star() or self._parse_function() or self._parse_id_var() +2930 +2931 if isinstance(field, exp.Func): +2932 # bigquery allows function calls like x.y.count(...) +2933 # SAFE.SUBSTR(...) +2934 # https://cloud.google.com/bigquery/docs/reference/standard-sql/functions-reference#function_call_rules +2935 this = self._replace_columns_with_dots(this) 2936 -2937 return self.expression(exp.SessionParameter, this=this, kind=kind) -2938 -2939 def _parse_lambda(self) -> t.Optional[exp.Expression]: -2940 index = self._index -2941 -2942 if self._match(TokenType.L_PAREN): -2943 expressions = self._parse_csv(self._parse_id_var) -2944 -2945 if not self._match(TokenType.R_PAREN): -2946 self._retreat(index) -2947 else: -2948 expressions = [self._parse_id_var()] -2949 -2950 if self._match_set(self.LAMBDAS): -2951 return self.LAMBDAS[self._prev.token_type](self, expressions) +2937 if op: +2938 this = op(self, this, field) +2939 elif isinstance(this, exp.Column) and not this.args.get("catalog"): +2940 this = self.expression( +2941 exp.Column, +2942 this=field, +2943 table=this.this, +2944 db=this.args.get("table"), +2945 catalog=this.args.get("db"), +2946 ) +2947 else: +2948 this = self.expression(exp.Dot, this=this, expression=field) +2949 this = self._parse_bracket(this) +2950 +2951 return this 2952 -2953 self._retreat(index) -2954 -2955 this: t.Optional[exp.Expression] -2956 -2957 if self._match(TokenType.DISTINCT): -2958 this = self.expression( -2959 exp.Distinct, expressions=self._parse_csv(self._parse_conjunction) -2960 ) -2961 else: -2962 this = self._parse_select_or_expression() -2963 -2964 if isinstance(this, exp.EQ): -2965 left = this.this -2966 if isinstance(left, exp.Column): -2967 left.replace(exp.Var(this=left.text("this"))) +2953 def _parse_primary(self) -> t.Optional[exp.Expression]: +2954 if self._match_set(self.PRIMARY_PARSERS): +2955 token_type = self._prev.token_type +2956 primary = self.PRIMARY_PARSERS[token_type](self, self._prev) +2957 +2958 if token_type == TokenType.STRING: +2959 expressions = [primary] +2960 while self._match(TokenType.STRING): +2961 expressions.append(exp.Literal.string(self._prev.text)) +2962 if len(expressions) > 1: +2963 return self.expression(exp.Concat, expressions=expressions) +2964 return primary +2965 +2966 if self._match_pair(TokenType.DOT, TokenType.NUMBER): +2967 return exp.Literal.number(f"0.{self._prev.text}") 2968 -2969 if self._match(TokenType.IGNORE_NULLS): -2970 this = self.expression(exp.IgnoreNulls, this=this) -2971 else: -2972 self._match(TokenType.RESPECT_NULLS) -2973 -2974 return self._parse_limit(self._parse_order(this)) -2975 -2976 def _parse_schema(self, this: t.Optional[exp.Expression] = None) -> t.Optional[exp.Expression]: -2977 index = self._index -2978 if not self._match(TokenType.L_PAREN) or self._match(TokenType.SELECT): -2979 self._retreat(index) -2980 return this -2981 -2982 args = self._parse_csv( -2983 lambda: self._parse_constraint() -2984 or self._parse_column_def(self._parse_field(any_token=True)) -2985 ) -2986 self._match_r_paren() -2987 return self.expression(exp.Schema, this=this, expressions=args) -2988 -2989 def _parse_column_def(self, this: t.Optional[exp.Expression]) -> t.Optional[exp.Expression]: -2990 kind = self._parse_types() +2969 if self._match(TokenType.L_PAREN): +2970 comments = self._prev_comments +2971 query = self._parse_select() +2972 +2973 if query: +2974 expressions = [query] +2975 else: +2976 expressions = self._parse_csv( +2977 lambda: self._parse_alias(self._parse_conjunction(), explicit=True) +2978 ) +2979 +2980 this = seq_get(expressions, 0) +2981 self._parse_query_modifiers(this) +2982 +2983 if isinstance(this, exp.Subqueryable): +2984 this = self._parse_set_operations( +2985 self._parse_subquery(this=this, parse_alias=False) +2986 ) +2987 elif len(expressions) > 1: +2988 this = self.expression(exp.Tuple, expressions=expressions) +2989 else: +2990 this = self.expression(exp.Paren, this=self._parse_set_operations(this)) 2991 -2992 if self._match_text_seq("FOR", "ORDINALITY"): -2993 return self.expression(exp.ColumnDef, this=this, ordinality=True) +2992 self._match_r_paren() +2993 comments.extend(self._prev_comments) 2994 -2995 constraints = [] -2996 while True: -2997 constraint = self._parse_column_constraint() -2998 if not constraint: -2999 break -3000 constraints.append(constraint) +2995 if this and comments: +2996 this.comments = comments +2997 +2998 return this +2999 +3000 return None 3001 -3002 if not kind and not constraints: -3003 return this -3004 -3005 return self.expression(exp.ColumnDef, this=this, kind=kind, constraints=constraints) -3006 -3007 def _parse_auto_increment(self) -> exp.Expression: -3008 start = None -3009 increment = None -3010 -3011 if self._match(TokenType.L_PAREN, advance=False): -3012 args = self._parse_wrapped_csv(self._parse_bitwise) -3013 start = seq_get(args, 0) -3014 increment = seq_get(args, 1) -3015 elif self._match_text_seq("START"): -3016 start = self._parse_bitwise() -3017 self._match_text_seq("INCREMENT") -3018 increment = self._parse_bitwise() -3019 -3020 if start and increment: -3021 return exp.GeneratedAsIdentityColumnConstraint(start=start, increment=increment) -3022 -3023 return exp.AutoIncrementColumnConstraint() -3024 -3025 def _parse_compress(self) -> exp.Expression: -3026 if self._match(TokenType.L_PAREN, advance=False): -3027 return self.expression( -3028 exp.CompressColumnConstraint, this=self._parse_wrapped_csv(self._parse_bitwise) -3029 ) +3002 def _parse_field( +3003 self, +3004 any_token: bool = False, +3005 tokens: t.Optional[t.Collection[TokenType]] = None, +3006 ) -> t.Optional[exp.Expression]: +3007 return ( +3008 self._parse_primary() +3009 or self._parse_function() +3010 or self._parse_id_var(any_token=any_token, tokens=tokens) +3011 ) +3012 +3013 def _parse_function( +3014 self, functions: t.Optional[t.Dict[str, t.Callable]] = None +3015 ) -> t.Optional[exp.Expression]: +3016 if not self._curr: +3017 return None +3018 +3019 token_type = self._curr.token_type +3020 +3021 if self._match_set(self.NO_PAREN_FUNCTION_PARSERS): +3022 return self.NO_PAREN_FUNCTION_PARSERS[token_type](self) +3023 +3024 if not self._next or self._next.token_type != TokenType.L_PAREN: +3025 if token_type in self.NO_PAREN_FUNCTIONS: +3026 self._advance() +3027 return self.expression(self.NO_PAREN_FUNCTIONS[token_type]) +3028 +3029 return None 3030 -3031 return self.expression(exp.CompressColumnConstraint, this=self._parse_bitwise()) -3032 -3033 def _parse_generated_as_identity(self) -> exp.Expression: -3034 if self._match(TokenType.BY_DEFAULT): -3035 this = self.expression(exp.GeneratedAsIdentityColumnConstraint, this=False) -3036 else: -3037 self._match_text_seq("ALWAYS") -3038 this = self.expression(exp.GeneratedAsIdentityColumnConstraint, this=True) +3031 if token_type not in self.FUNC_TOKENS: +3032 return None +3033 +3034 this = self._curr.text +3035 upper = this.upper() +3036 self._advance(2) +3037 +3038 parser = self.FUNCTION_PARSERS.get(upper) 3039 -3040 self._match_text_seq("AS", "IDENTITY") -3041 if self._match(TokenType.L_PAREN): -3042 if self._match_text_seq("START", "WITH"): -3043 this.set("start", self._parse_bitwise()) -3044 if self._match_text_seq("INCREMENT", "BY"): -3045 this.set("increment", self._parse_bitwise()) -3046 if self._match_text_seq("MINVALUE"): -3047 this.set("minvalue", self._parse_bitwise()) -3048 if self._match_text_seq("MAXVALUE"): -3049 this.set("maxvalue", self._parse_bitwise()) -3050 -3051 if self._match_text_seq("CYCLE"): -3052 this.set("cycle", True) -3053 elif self._match_text_seq("NO", "CYCLE"): -3054 this.set("cycle", False) +3040 if parser: +3041 this = parser(self) +3042 else: +3043 subquery_predicate = self.SUBQUERY_PREDICATES.get(token_type) +3044 +3045 if subquery_predicate and self._curr.token_type in (TokenType.SELECT, TokenType.WITH): +3046 this = self.expression(subquery_predicate, this=self._parse_select()) +3047 self._match_r_paren() +3048 return this +3049 +3050 if functions is None: +3051 functions = self.FUNCTIONS +3052 +3053 function = functions.get(upper) +3054 args = self._parse_csv(self._parse_lambda) 3055 -3056 self._match_r_paren() -3057 -3058 return this -3059 -3060 def _parse_inline(self) -> t.Optional[exp.Expression]: -3061 self._match_text_seq("LENGTH") -3062 return self.expression(exp.InlineLengthColumnConstraint, this=self._parse_bitwise()) +3056 if function: +3057 # Clickhouse supports function calls like foo(x, y)(z), so for these we need to also parse the +3058 # second parameter list (i.e. "(z)") and the corresponding function will receive both arg lists. +3059 if count_params(function) == 2: +3060 params = None +3061 if self._match_pair(TokenType.R_PAREN, TokenType.L_PAREN): +3062 params = self._parse_csv(self._parse_lambda) 3063 -3064 def _parse_not_constraint(self) -> t.Optional[exp.Expression]: -3065 if self._match_text_seq("NULL"): -3066 return self.expression(exp.NotNullColumnConstraint) -3067 if self._match_text_seq("CASESPECIFIC"): -3068 return self.expression(exp.CaseSpecificColumnConstraint, not_=True) -3069 return None -3070 -3071 def _parse_column_constraint(self) -> t.Optional[exp.Expression]: -3072 this = self._parse_references() -3073 if this: -3074 return this -3075 -3076 if self._match(TokenType.CONSTRAINT): -3077 this = self._parse_id_var() -3078 -3079 if self._match_texts(self.CONSTRAINT_PARSERS): -3080 return self.expression( -3081 exp.ColumnConstraint, -3082 this=this, -3083 kind=self.CONSTRAINT_PARSERS[self._prev.text.upper()](self), -3084 ) +3064 this = function(args, params) +3065 else: +3066 this = function(args) +3067 +3068 self.validate_expression(this, args) +3069 else: +3070 this = self.expression(exp.Anonymous, this=this, expressions=args) +3071 +3072 self._match_r_paren(this) +3073 return self._parse_window(this) +3074 +3075 def _parse_function_parameter(self) -> t.Optional[exp.Expression]: +3076 return self._parse_column_def(self._parse_id_var()) +3077 +3078 def _parse_user_defined_function( +3079 self, kind: t.Optional[TokenType] = None +3080 ) -> t.Optional[exp.Expression]: +3081 this = self._parse_id_var() +3082 +3083 while self._match(TokenType.DOT): +3084 this = self.expression(exp.Dot, this=this, expression=self._parse_id_var()) 3085 -3086 return this -3087 -3088 def _parse_constraint(self) -> t.Optional[exp.Expression]: -3089 if not self._match(TokenType.CONSTRAINT): -3090 return self._parse_unnamed_constraint(constraints=self.SCHEMA_UNNAMED_CONSTRAINTS) -3091 -3092 this = self._parse_id_var() -3093 expressions = [] +3086 if not self._match(TokenType.L_PAREN): +3087 return this +3088 +3089 expressions = self._parse_csv(self._parse_function_parameter) +3090 self._match_r_paren() +3091 return self.expression( +3092 exp.UserDefinedFunction, this=this, expressions=expressions, wrapped=True +3093 ) 3094 -3095 while True: -3096 constraint = self._parse_unnamed_constraint() or self._parse_function() -3097 if not constraint: -3098 break -3099 expressions.append(constraint) -3100 -3101 return self.expression(exp.Constraint, this=this, expressions=expressions) -3102 -3103 def _parse_unnamed_constraint( -3104 self, constraints: t.Optional[t.Collection[str]] = None -3105 ) -> t.Optional[exp.Expression]: -3106 if not self._match_texts(constraints or self.CONSTRAINT_PARSERS): -3107 return None +3095 def _parse_introducer(self, token: Token) -> t.Optional[exp.Expression]: +3096 literal = self._parse_primary() +3097 if literal: +3098 return self.expression(exp.Introducer, this=token.text, expression=literal) +3099 +3100 return self.expression(exp.Identifier, this=token.text) +3101 +3102 def _parse_national(self, token: Token) -> exp.Expression: +3103 return self.expression(exp.National, this=exp.Literal.string(token.text)) +3104 +3105 def _parse_session_parameter(self) -> exp.Expression: +3106 kind = None +3107 this = self._parse_id_var() or self._parse_primary() 3108 -3109 constraint = self._prev.text.upper() -3110 if constraint not in self.CONSTRAINT_PARSERS: -3111 self.raise_error(f"No parser found for schema constraint {constraint}.") +3109 if this and self._match(TokenType.DOT): +3110 kind = this.name +3111 this = self._parse_var() or self._parse_primary() 3112 -3113 return self.CONSTRAINT_PARSERS[constraint](self) +3113 return self.expression(exp.SessionParameter, this=this, kind=kind) 3114 -3115 def _parse_unique(self) -> exp.Expression: -3116 if not self._match(TokenType.L_PAREN, advance=False): -3117 return self.expression(exp.UniqueColumnConstraint) -3118 return self.expression(exp.Unique, expressions=self._parse_wrapped_id_vars()) -3119 -3120 def _parse_key_constraint_options(self) -> t.List[str]: -3121 options = [] -3122 while True: -3123 if not self._curr: -3124 break +3115 def _parse_lambda(self) -> t.Optional[exp.Expression]: +3116 index = self._index +3117 +3118 if self._match(TokenType.L_PAREN): +3119 expressions = self._parse_csv(self._parse_id_var) +3120 +3121 if not self._match(TokenType.R_PAREN): +3122 self._retreat(index) +3123 else: +3124 expressions = [self._parse_id_var()] 3125 -3126 if self._match(TokenType.ON): -3127 action = None -3128 on = self._advance_any() and self._prev.text -3129 -3130 if self._match(TokenType.NO_ACTION): -3131 action = "NO ACTION" -3132 elif self._match(TokenType.CASCADE): -3133 action = "CASCADE" -3134 elif self._match_pair(TokenType.SET, TokenType.NULL): -3135 action = "SET NULL" -3136 elif self._match_pair(TokenType.SET, TokenType.DEFAULT): -3137 action = "SET DEFAULT" -3138 else: -3139 self.raise_error("Invalid key constraint") -3140 -3141 options.append(f"ON {on} {action}") -3142 elif self._match_text_seq("NOT", "ENFORCED"): -3143 options.append("NOT ENFORCED") -3144 elif self._match_text_seq("DEFERRABLE"): -3145 options.append("DEFERRABLE") -3146 elif self._match_text_seq("INITIALLY", "DEFERRED"): -3147 options.append("INITIALLY DEFERRED") -3148 elif self._match_text_seq("NORELY"): -3149 options.append("NORELY") -3150 elif self._match_text_seq("MATCH", "FULL"): -3151 options.append("MATCH FULL") -3152 else: -3153 break +3126 if self._match_set(self.LAMBDAS): +3127 return self.LAMBDAS[self._prev.token_type](self, expressions) +3128 +3129 self._retreat(index) +3130 +3131 this: t.Optional[exp.Expression] +3132 +3133 if self._match(TokenType.DISTINCT): +3134 this = self.expression( +3135 exp.Distinct, expressions=self._parse_csv(self._parse_conjunction) +3136 ) +3137 else: +3138 this = self._parse_select_or_expression() +3139 +3140 if isinstance(this, exp.EQ): +3141 left = this.this +3142 if isinstance(left, exp.Column): +3143 left.replace(exp.Var(this=left.text("this"))) +3144 +3145 if self._match(TokenType.IGNORE_NULLS): +3146 this = self.expression(exp.IgnoreNulls, this=this) +3147 else: +3148 self._match(TokenType.RESPECT_NULLS) +3149 +3150 return self._parse_limit(self._parse_order(this)) +3151 +3152 def _parse_schema(self, this: t.Optional[exp.Expression] = None) -> t.Optional[exp.Expression]: +3153 index = self._index 3154 -3155 return options -3156 -3157 def _parse_references(self) -> t.Optional[exp.Expression]: -3158 if not self._match(TokenType.REFERENCES): -3159 return None -3160 -3161 expressions = None -3162 this = self._parse_id_var() -3163 -3164 if self._match(TokenType.L_PAREN, advance=False): -3165 expressions = self._parse_wrapped_id_vars() -3166 -3167 options = self._parse_key_constraint_options() -3168 return self.expression(exp.Reference, this=this, expressions=expressions, options=options) -3169 -3170 def _parse_foreign_key(self) -> exp.Expression: -3171 expressions = self._parse_wrapped_id_vars() -3172 reference = self._parse_references() -3173 options = {} -3174 -3175 while self._match(TokenType.ON): -3176 if not self._match_set((TokenType.DELETE, TokenType.UPDATE)): -3177 self.raise_error("Expected DELETE or UPDATE") +3155 try: +3156 if self._parse_select(nested=True): +3157 return this +3158 except Exception: +3159 pass +3160 finally: +3161 self._retreat(index) +3162 +3163 if not self._match(TokenType.L_PAREN): +3164 return this +3165 +3166 args = self._parse_csv( +3167 lambda: self._parse_constraint() +3168 or self._parse_column_def(self._parse_field(any_token=True)) +3169 ) +3170 self._match_r_paren() +3171 return self.expression(exp.Schema, this=this, expressions=args) +3172 +3173 def _parse_column_def(self, this: t.Optional[exp.Expression]) -> t.Optional[exp.Expression]: +3174 kind = self._parse_types() +3175 +3176 if self._match_text_seq("FOR", "ORDINALITY"): +3177 return self.expression(exp.ColumnDef, this=this, ordinality=True) 3178 -3179 kind = self._prev.text.lower() -3180 -3181 if self._match(TokenType.NO_ACTION): -3182 action = "NO ACTION" -3183 elif self._match(TokenType.SET): -3184 self._match_set((TokenType.NULL, TokenType.DEFAULT)) -3185 action = "SET " + self._prev.text.upper() -3186 else: -3187 self._advance() -3188 action = self._prev.text.upper() -3189 -3190 options[kind] = action -3191 -3192 return self.expression( -3193 exp.ForeignKey, expressions=expressions, reference=reference, **options # type: ignore -3194 ) -3195 -3196 def _parse_primary_key(self) -> exp.Expression: -3197 desc = ( -3198 self._match_set((TokenType.ASC, TokenType.DESC)) -3199 and self._prev.token_type == TokenType.DESC -3200 ) -3201 -3202 if not self._match(TokenType.L_PAREN, advance=False): -3203 return self.expression(exp.PrimaryKeyColumnConstraint, desc=desc) -3204 -3205 expressions = self._parse_wrapped_id_vars() -3206 options = self._parse_key_constraint_options() -3207 return self.expression(exp.PrimaryKey, expressions=expressions, options=options) +3179 constraints = [] +3180 while True: +3181 constraint = self._parse_column_constraint() +3182 if not constraint: +3183 break +3184 constraints.append(constraint) +3185 +3186 if not kind and not constraints: +3187 return this +3188 +3189 return self.expression(exp.ColumnDef, this=this, kind=kind, constraints=constraints) +3190 +3191 def _parse_auto_increment(self) -> exp.Expression: +3192 start = None +3193 increment = None +3194 +3195 if self._match(TokenType.L_PAREN, advance=False): +3196 args = self._parse_wrapped_csv(self._parse_bitwise) +3197 start = seq_get(args, 0) +3198 increment = seq_get(args, 1) +3199 elif self._match_text_seq("START"): +3200 start = self._parse_bitwise() +3201 self._match_text_seq("INCREMENT") +3202 increment = self._parse_bitwise() +3203 +3204 if start and increment: +3205 return exp.GeneratedAsIdentityColumnConstraint(start=start, increment=increment) +3206 +3207 return exp.AutoIncrementColumnConstraint() 3208 -3209 def _parse_bracket(self, this: t.Optional[exp.Expression]) -> t.Optional[exp.Expression]: -3210 if not self._match_set((TokenType.L_BRACKET, TokenType.L_BRACE)): -3211 return this -3212 -3213 bracket_kind = self._prev.token_type -3214 expressions: t.List[t.Optional[exp.Expression]] -3215 -3216 if self._match(TokenType.COLON): -3217 expressions = [self.expression(exp.Slice, expression=self._parse_conjunction())] -3218 else: -3219 expressions = self._parse_csv(lambda: self._parse_slice(self._parse_conjunction())) -3220 -3221 # https://duckdb.org/docs/sql/data_types/struct.html#creating-structs -3222 if bracket_kind == TokenType.L_BRACE: -3223 this = self.expression(exp.Struct, expressions=expressions) -3224 elif not this or this.name.upper() == "ARRAY": -3225 this = self.expression(exp.Array, expressions=expressions) -3226 else: -3227 expressions = apply_index_offset(expressions, -self.index_offset) -3228 this = self.expression(exp.Bracket, this=this, expressions=expressions) -3229 -3230 if not self._match(TokenType.R_BRACKET) and bracket_kind == TokenType.L_BRACKET: -3231 self.raise_error("Expected ]") -3232 elif not self._match(TokenType.R_BRACE) and bracket_kind == TokenType.L_BRACE: -3233 self.raise_error("Expected }") +3209 def _parse_compress(self) -> exp.Expression: +3210 if self._match(TokenType.L_PAREN, advance=False): +3211 return self.expression( +3212 exp.CompressColumnConstraint, this=self._parse_wrapped_csv(self._parse_bitwise) +3213 ) +3214 +3215 return self.expression(exp.CompressColumnConstraint, this=self._parse_bitwise()) +3216 +3217 def _parse_generated_as_identity(self) -> exp.Expression: +3218 if self._match(TokenType.BY_DEFAULT): +3219 this = self.expression(exp.GeneratedAsIdentityColumnConstraint, this=False) +3220 else: +3221 self._match_text_seq("ALWAYS") +3222 this = self.expression(exp.GeneratedAsIdentityColumnConstraint, this=True) +3223 +3224 self._match_text_seq("AS", "IDENTITY") +3225 if self._match(TokenType.L_PAREN): +3226 if self._match_text_seq("START", "WITH"): +3227 this.set("start", self._parse_bitwise()) +3228 if self._match_text_seq("INCREMENT", "BY"): +3229 this.set("increment", self._parse_bitwise()) +3230 if self._match_text_seq("MINVALUE"): +3231 this.set("minvalue", self._parse_bitwise()) +3232 if self._match_text_seq("MAXVALUE"): +3233 this.set("maxvalue", self._parse_bitwise()) 3234 -3235 this.comments = self._prev_comments -3236 return self._parse_bracket(this) -3237 -3238 def _parse_slice(self, this: t.Optional[exp.Expression]) -> t.Optional[exp.Expression]: -3239 if self._match(TokenType.COLON): -3240 return self.expression(exp.Slice, this=this, expression=self._parse_conjunction()) -3241 return this -3242 -3243 def _parse_case(self) -> t.Optional[exp.Expression]: -3244 ifs = [] -3245 default = None -3246 -3247 expression = self._parse_conjunction() -3248 -3249 while self._match(TokenType.WHEN): -3250 this = self._parse_conjunction() -3251 self._match(TokenType.THEN) -3252 then = self._parse_conjunction() -3253 ifs.append(self.expression(exp.If, this=this, true=then)) +3235 if self._match_text_seq("CYCLE"): +3236 this.set("cycle", True) +3237 elif self._match_text_seq("NO", "CYCLE"): +3238 this.set("cycle", False) +3239 +3240 self._match_r_paren() +3241 +3242 return this +3243 +3244 def _parse_inline(self) -> t.Optional[exp.Expression]: +3245 self._match_text_seq("LENGTH") +3246 return self.expression(exp.InlineLengthColumnConstraint, this=self._parse_bitwise()) +3247 +3248 def _parse_not_constraint(self) -> t.Optional[exp.Expression]: +3249 if self._match_text_seq("NULL"): +3250 return self.expression(exp.NotNullColumnConstraint) +3251 if self._match_text_seq("CASESPECIFIC"): +3252 return self.expression(exp.CaseSpecificColumnConstraint, not_=True) +3253 return None 3254 -3255 if self._match(TokenType.ELSE): -3256 default = self._parse_conjunction() -3257 -3258 if not self._match(TokenType.END): -3259 self.raise_error("Expected END after CASE", self._prev) +3255 def _parse_column_constraint(self) -> t.Optional[exp.Expression]: +3256 if self._match(TokenType.CONSTRAINT): +3257 this = self._parse_id_var() +3258 else: +3259 this = None 3260 -3261 return self._parse_window( -3262 self.expression(exp.Case, this=expression, ifs=ifs, default=default) -3263 ) -3264 -3265 def _parse_if(self) -> t.Optional[exp.Expression]: -3266 if self._match(TokenType.L_PAREN): -3267 args = self._parse_csv(self._parse_conjunction) -3268 this = exp.If.from_arg_list(args) -3269 self.validate_expression(this, args) -3270 self._match_r_paren() -3271 else: -3272 condition = self._parse_conjunction() -3273 self._match(TokenType.THEN) -3274 true = self._parse_conjunction() -3275 false = self._parse_conjunction() if self._match(TokenType.ELSE) else None -3276 self._match(TokenType.END) -3277 this = self.expression(exp.If, this=condition, true=true, false=false) -3278 -3279 return self._parse_window(this) -3280 -3281 def _parse_extract(self) -> exp.Expression: -3282 this = self._parse_function() or self._parse_var() or self._parse_type() -3283 -3284 if self._match(TokenType.FROM): -3285 return self.expression(exp.Extract, this=this, expression=self._parse_bitwise()) -3286 -3287 if not self._match(TokenType.COMMA): -3288 self.raise_error("Expected FROM or comma after EXTRACT", self._prev) -3289 -3290 return self.expression(exp.Extract, this=this, expression=self._parse_bitwise()) -3291 -3292 def _parse_cast(self, strict: bool) -> exp.Expression: -3293 this = self._parse_conjunction() +3261 if self._match_texts(self.CONSTRAINT_PARSERS): +3262 return self.expression( +3263 exp.ColumnConstraint, +3264 this=this, +3265 kind=self.CONSTRAINT_PARSERS[self._prev.text.upper()](self), +3266 ) +3267 +3268 return this +3269 +3270 def _parse_constraint(self) -> t.Optional[exp.Expression]: +3271 if not self._match(TokenType.CONSTRAINT): +3272 return self._parse_unnamed_constraint(constraints=self.SCHEMA_UNNAMED_CONSTRAINTS) +3273 +3274 this = self._parse_id_var() +3275 expressions = [] +3276 +3277 while True: +3278 constraint = self._parse_unnamed_constraint() or self._parse_function() +3279 if not constraint: +3280 break +3281 expressions.append(constraint) +3282 +3283 return self.expression(exp.Constraint, this=this, expressions=expressions) +3284 +3285 def _parse_unnamed_constraint( +3286 self, constraints: t.Optional[t.Collection[str]] = None +3287 ) -> t.Optional[exp.Expression]: +3288 if not self._match_texts(constraints or self.CONSTRAINT_PARSERS): +3289 return None +3290 +3291 constraint = self._prev.text.upper() +3292 if constraint not in self.CONSTRAINT_PARSERS: +3293 self.raise_error(f"No parser found for schema constraint {constraint}.") 3294 -3295 if not self._match(TokenType.ALIAS): -3296 self.raise_error("Expected AS after CAST") -3297 -3298 to = self._parse_types() -3299 -3300 if not to: -3301 self.raise_error("Expected TYPE after CAST") -3302 elif to.this == exp.DataType.Type.CHAR: -3303 if self._match(TokenType.CHARACTER_SET): -3304 to = self.expression(exp.CharacterSet, this=self._parse_var_or_string()) -3305 -3306 return self.expression(exp.Cast if strict else exp.TryCast, this=this, to=to) +3295 return self.CONSTRAINT_PARSERS[constraint](self) +3296 +3297 def _parse_unique(self) -> exp.Expression: +3298 if not self._match(TokenType.L_PAREN, advance=False): +3299 return self.expression(exp.UniqueColumnConstraint) +3300 return self.expression(exp.Unique, expressions=self._parse_wrapped_id_vars()) +3301 +3302 def _parse_key_constraint_options(self) -> t.List[str]: +3303 options = [] +3304 while True: +3305 if not self._curr: +3306 break 3307 -3308 def _parse_string_agg(self) -> exp.Expression: -3309 expression: t.Optional[exp.Expression] -3310 -3311 if self._match(TokenType.DISTINCT): -3312 args = self._parse_csv(self._parse_conjunction) -3313 expression = self.expression(exp.Distinct, expressions=[seq_get(args, 0)]) -3314 else: -3315 args = self._parse_csv(self._parse_conjunction) -3316 expression = seq_get(args, 0) -3317 -3318 index = self._index -3319 if not self._match(TokenType.R_PAREN): -3320 # postgres: STRING_AGG([DISTINCT] expression, separator [ORDER BY expression1 {ASC | DESC} [, ...]]) -3321 order = self._parse_order(this=expression) -3322 return self.expression(exp.GroupConcat, this=order, separator=seq_get(args, 1)) -3323 -3324 # Checks if we can parse an order clause: WITHIN GROUP (ORDER BY <order_by_expression_list> [ASC | DESC]). -3325 # This is done "manually", instead of letting _parse_window parse it into an exp.WithinGroup node, so that -3326 # the STRING_AGG call is parsed like in MySQL / SQLite and can thus be transpiled more easily to them. -3327 if not self._match(TokenType.WITHIN_GROUP): -3328 self._retreat(index) -3329 this = exp.GroupConcat.from_arg_list(args) -3330 self.validate_expression(this, args) -3331 return this -3332 -3333 self._match_l_paren() # The corresponding match_r_paren will be called in parse_function (caller) -3334 order = self._parse_order(this=expression) -3335 return self.expression(exp.GroupConcat, this=order, separator=seq_get(args, 1)) +3308 if self._match(TokenType.ON): +3309 action = None +3310 on = self._advance_any() and self._prev.text +3311 +3312 if self._match(TokenType.NO_ACTION): +3313 action = "NO ACTION" +3314 elif self._match(TokenType.CASCADE): +3315 action = "CASCADE" +3316 elif self._match_pair(TokenType.SET, TokenType.NULL): +3317 action = "SET NULL" +3318 elif self._match_pair(TokenType.SET, TokenType.DEFAULT): +3319 action = "SET DEFAULT" +3320 else: +3321 self.raise_error("Invalid key constraint") +3322 +3323 options.append(f"ON {on} {action}") +3324 elif self._match_text_seq("NOT", "ENFORCED"): +3325 options.append("NOT ENFORCED") +3326 elif self._match_text_seq("DEFERRABLE"): +3327 options.append("DEFERRABLE") +3328 elif self._match_text_seq("INITIALLY", "DEFERRED"): +3329 options.append("INITIALLY DEFERRED") +3330 elif self._match_text_seq("NORELY"): +3331 options.append("NORELY") +3332 elif self._match_text_seq("MATCH", "FULL"): +3333 options.append("MATCH FULL") +3334 else: +3335 break 3336 -3337 def _parse_convert(self, strict: bool) -> t.Optional[exp.Expression]: -3338 to: t.Optional[exp.Expression] -3339 this = self._parse_bitwise() -3340 -3341 if self._match(TokenType.USING): -3342 to = self.expression(exp.CharacterSet, this=self._parse_var()) -3343 elif self._match(TokenType.COMMA): -3344 to = self._parse_bitwise() -3345 else: -3346 to = None -3347 -3348 # Swap the argument order if needed to produce the correct AST -3349 if self.CONVERT_TYPE_FIRST: -3350 this, to = to, this +3337 return options +3338 +3339 def _parse_references(self, match=True) -> t.Optional[exp.Expression]: +3340 if match and not self._match(TokenType.REFERENCES): +3341 return None +3342 +3343 expressions = None +3344 this = self._parse_id_var() +3345 +3346 if self._match(TokenType.L_PAREN, advance=False): +3347 expressions = self._parse_wrapped_id_vars() +3348 +3349 options = self._parse_key_constraint_options() +3350 return self.expression(exp.Reference, this=this, expressions=expressions, options=options) 3351 -3352 return self.expression(exp.Cast if strict else exp.TryCast, this=this, to=to) -3353 -3354 def _parse_decode(self) -> t.Optional[exp.Expression]: -3355 """ -3356 There are generally two variants of the DECODE function: -3357 -3358 - DECODE(bin, charset) -3359 - DECODE(expression, search, result [, search, result] ... [, default]) +3352 def _parse_foreign_key(self) -> exp.Expression: +3353 expressions = self._parse_wrapped_id_vars() +3354 reference = self._parse_references() +3355 options = {} +3356 +3357 while self._match(TokenType.ON): +3358 if not self._match_set((TokenType.DELETE, TokenType.UPDATE)): +3359 self.raise_error("Expected DELETE or UPDATE") 3360 -3361 The second variant will always be parsed into a CASE expression. Note that NULL -3362 needs special treatment, since we need to explicitly check for it with `IS NULL`, -3363 instead of relying on pattern matching. -3364 """ -3365 args = self._parse_csv(self._parse_conjunction) -3366 -3367 if len(args) < 3: -3368 return self.expression(exp.Decode, this=seq_get(args, 0), charset=seq_get(args, 1)) -3369 -3370 expression, *expressions = args -3371 if not expression: -3372 return None +3361 kind = self._prev.text.lower() +3362 +3363 if self._match(TokenType.NO_ACTION): +3364 action = "NO ACTION" +3365 elif self._match(TokenType.SET): +3366 self._match_set((TokenType.NULL, TokenType.DEFAULT)) +3367 action = "SET " + self._prev.text.upper() +3368 else: +3369 self._advance() +3370 action = self._prev.text.upper() +3371 +3372 options[kind] = action 3373 -3374 ifs = [] -3375 for search, result in zip(expressions[::2], expressions[1::2]): -3376 if not search or not result: -3377 return None -3378 -3379 if isinstance(search, exp.Literal): -3380 ifs.append( -3381 exp.If(this=exp.EQ(this=expression.copy(), expression=search), true=result) -3382 ) -3383 elif isinstance(search, exp.Null): -3384 ifs.append( -3385 exp.If(this=exp.Is(this=expression.copy(), expression=exp.Null()), true=result) -3386 ) -3387 else: -3388 cond = exp.or_( -3389 exp.EQ(this=expression.copy(), expression=search), -3390 exp.and_( -3391 exp.Is(this=expression.copy(), expression=exp.Null()), -3392 exp.Is(this=search.copy(), expression=exp.Null()), -3393 ), -3394 ) -3395 ifs.append(exp.If(this=cond, true=result)) -3396 -3397 return exp.Case(ifs=ifs, default=expressions[-1] if len(expressions) % 2 == 1 else None) -3398 -3399 def _parse_json_key_value(self) -> t.Optional[exp.Expression]: -3400 self._match_text_seq("KEY") -3401 key = self._parse_field() -3402 self._match(TokenType.COLON) -3403 self._match_text_seq("VALUE") -3404 value = self._parse_field() -3405 if not key and not value: -3406 return None -3407 return self.expression(exp.JSONKeyValue, this=key, expression=value) -3408 -3409 def _parse_json_object(self) -> exp.Expression: -3410 expressions = self._parse_csv(self._parse_json_key_value) +3374 return self.expression( +3375 exp.ForeignKey, expressions=expressions, reference=reference, **options # type: ignore +3376 ) +3377 +3378 def _parse_primary_key(self) -> exp.Expression: +3379 desc = ( +3380 self._match_set((TokenType.ASC, TokenType.DESC)) +3381 and self._prev.token_type == TokenType.DESC +3382 ) +3383 +3384 if not self._match(TokenType.L_PAREN, advance=False): +3385 return self.expression(exp.PrimaryKeyColumnConstraint, desc=desc) +3386 +3387 expressions = self._parse_wrapped_id_vars() +3388 options = self._parse_key_constraint_options() +3389 return self.expression(exp.PrimaryKey, expressions=expressions, options=options) +3390 +3391 def _parse_bracket(self, this: t.Optional[exp.Expression]) -> t.Optional[exp.Expression]: +3392 if not self._match_set((TokenType.L_BRACKET, TokenType.L_BRACE)): +3393 return this +3394 +3395 bracket_kind = self._prev.token_type +3396 expressions: t.List[t.Optional[exp.Expression]] +3397 +3398 if self._match(TokenType.COLON): +3399 expressions = [self.expression(exp.Slice, expression=self._parse_conjunction())] +3400 else: +3401 expressions = self._parse_csv(lambda: self._parse_slice(self._parse_conjunction())) +3402 +3403 # https://duckdb.org/docs/sql/data_types/struct.html#creating-structs +3404 if bracket_kind == TokenType.L_BRACE: +3405 this = self.expression(exp.Struct, expressions=expressions) +3406 elif not this or this.name.upper() == "ARRAY": +3407 this = self.expression(exp.Array, expressions=expressions) +3408 else: +3409 expressions = apply_index_offset(this, expressions, -self.index_offset) +3410 this = self.expression(exp.Bracket, this=this, expressions=expressions) 3411 -3412 null_handling = None -3413 if self._match_text_seq("NULL", "ON", "NULL"): -3414 null_handling = "NULL ON NULL" -3415 elif self._match_text_seq("ABSENT", "ON", "NULL"): -3416 null_handling = "ABSENT ON NULL" -3417 -3418 unique_keys = None -3419 if self._match_text_seq("WITH", "UNIQUE"): -3420 unique_keys = True -3421 elif self._match_text_seq("WITHOUT", "UNIQUE"): -3422 unique_keys = False -3423 -3424 self._match_text_seq("KEYS") -3425 -3426 return_type = self._match_text_seq("RETURNING") and self._parse_type() -3427 format_json = self._match_text_seq("FORMAT", "JSON") -3428 encoding = self._match_text_seq("ENCODING") and self._parse_var() -3429 -3430 return self.expression( -3431 exp.JSONObject, -3432 expressions=expressions, -3433 null_handling=null_handling, -3434 unique_keys=unique_keys, -3435 return_type=return_type, -3436 format_json=format_json, -3437 encoding=encoding, -3438 ) +3412 if not self._match(TokenType.R_BRACKET) and bracket_kind == TokenType.L_BRACKET: +3413 self.raise_error("Expected ]") +3414 elif not self._match(TokenType.R_BRACE) and bracket_kind == TokenType.L_BRACE: +3415 self.raise_error("Expected }") +3416 +3417 this.comments = self._prev_comments +3418 return self._parse_bracket(this) +3419 +3420 def _parse_slice(self, this: t.Optional[exp.Expression]) -> t.Optional[exp.Expression]: +3421 if self._match(TokenType.COLON): +3422 return self.expression(exp.Slice, this=this, expression=self._parse_conjunction()) +3423 return this +3424 +3425 def _parse_case(self) -> t.Optional[exp.Expression]: +3426 ifs = [] +3427 default = None +3428 +3429 expression = self._parse_conjunction() +3430 +3431 while self._match(TokenType.WHEN): +3432 this = self._parse_conjunction() +3433 self._match(TokenType.THEN) +3434 then = self._parse_conjunction() +3435 ifs.append(self.expression(exp.If, this=this, true=then)) +3436 +3437 if self._match(TokenType.ELSE): +3438 default = self._parse_conjunction() 3439 -3440 def _parse_logarithm(self) -> exp.Expression: -3441 # Default argument order is base, expression -3442 args = self._parse_csv(self._parse_range) -3443 -3444 if len(args) > 1: -3445 if not self.LOG_BASE_FIRST: -3446 args.reverse() -3447 return exp.Log.from_arg_list(args) -3448 -3449 return self.expression( -3450 exp.Ln if self.LOG_DEFAULTS_TO_LN else exp.Log, this=seq_get(args, 0) -3451 ) -3452 -3453 def _parse_match_against(self) -> exp.Expression: -3454 expressions = self._parse_csv(self._parse_column) -3455 -3456 self._match_text_seq(")", "AGAINST", "(") -3457 -3458 this = self._parse_string() -3459 -3460 if self._match_text_seq("IN", "NATURAL", "LANGUAGE", "MODE"): -3461 modifier = "IN NATURAL LANGUAGE MODE" -3462 if self._match_text_seq("WITH", "QUERY", "EXPANSION"): -3463 modifier = f"{modifier} WITH QUERY EXPANSION" -3464 elif self._match_text_seq("IN", "BOOLEAN", "MODE"): -3465 modifier = "IN BOOLEAN MODE" -3466 elif self._match_text_seq("WITH", "QUERY", "EXPANSION"): -3467 modifier = "WITH QUERY EXPANSION" -3468 else: -3469 modifier = None -3470 -3471 return self.expression( -3472 exp.MatchAgainst, this=this, expressions=expressions, modifier=modifier -3473 ) -3474 -3475 def _parse_position(self, haystack_first: bool = False) -> exp.Expression: -3476 args = self._parse_csv(self._parse_bitwise) -3477 -3478 if self._match(TokenType.IN): -3479 return self.expression( -3480 exp.StrPosition, this=self._parse_bitwise(), substr=seq_get(args, 0) -3481 ) -3482 -3483 if haystack_first: -3484 haystack = seq_get(args, 0) -3485 needle = seq_get(args, 1) -3486 else: -3487 needle = seq_get(args, 0) -3488 haystack = seq_get(args, 1) +3440 if not self._match(TokenType.END): +3441 self.raise_error("Expected END after CASE", self._prev) +3442 +3443 return self._parse_window( +3444 self.expression(exp.Case, this=expression, ifs=ifs, default=default) +3445 ) +3446 +3447 def _parse_if(self) -> t.Optional[exp.Expression]: +3448 if self._match(TokenType.L_PAREN): +3449 args = self._parse_csv(self._parse_conjunction) +3450 this = exp.If.from_arg_list(args) +3451 self.validate_expression(this, args) +3452 self._match_r_paren() +3453 else: +3454 condition = self._parse_conjunction() +3455 self._match(TokenType.THEN) +3456 true = self._parse_conjunction() +3457 false = self._parse_conjunction() if self._match(TokenType.ELSE) else None +3458 self._match(TokenType.END) +3459 this = self.expression(exp.If, this=condition, true=true, false=false) +3460 +3461 return self._parse_window(this) +3462 +3463 def _parse_extract(self) -> exp.Expression: +3464 this = self._parse_function() or self._parse_var() or self._parse_type() +3465 +3466 if self._match(TokenType.FROM): +3467 return self.expression(exp.Extract, this=this, expression=self._parse_bitwise()) +3468 +3469 if not self._match(TokenType.COMMA): +3470 self.raise_error("Expected FROM or comma after EXTRACT", self._prev) +3471 +3472 return self.expression(exp.Extract, this=this, expression=self._parse_bitwise()) +3473 +3474 def _parse_cast(self, strict: bool) -> exp.Expression: +3475 this = self._parse_conjunction() +3476 +3477 if not self._match(TokenType.ALIAS): +3478 self.raise_error("Expected AS after CAST") +3479 +3480 to = self._parse_types() +3481 +3482 if not to: +3483 self.raise_error("Expected TYPE after CAST") +3484 elif to.this == exp.DataType.Type.CHAR: +3485 if self._match(TokenType.CHARACTER_SET): +3486 to = self.expression(exp.CharacterSet, this=self._parse_var_or_string()) +3487 +3488 return self.expression(exp.Cast if strict else exp.TryCast, this=this, to=to) 3489 -3490 this = exp.StrPosition(this=haystack, substr=needle, position=seq_get(args, 2)) -3491 -3492 self.validate_expression(this, args) -3493 -3494 return this -3495 -3496 def _parse_join_hint(self, func_name: str) -> exp.Expression: -3497 args = self._parse_csv(self._parse_table) -3498 return exp.JoinHint(this=func_name.upper(), expressions=args) +3490 def _parse_string_agg(self) -> exp.Expression: +3491 expression: t.Optional[exp.Expression] +3492 +3493 if self._match(TokenType.DISTINCT): +3494 args = self._parse_csv(self._parse_conjunction) +3495 expression = self.expression(exp.Distinct, expressions=[seq_get(args, 0)]) +3496 else: +3497 args = self._parse_csv(self._parse_conjunction) +3498 expression = seq_get(args, 0) 3499 -3500 def _parse_substring(self) -> exp.Expression: -3501 # Postgres supports the form: substring(string [from int] [for int]) -3502 # https://www.postgresql.org/docs/9.1/functions-string.html @ Table 9-6 -3503 -3504 args = self._parse_csv(self._parse_bitwise) +3500 index = self._index +3501 if not self._match(TokenType.R_PAREN): +3502 # postgres: STRING_AGG([DISTINCT] expression, separator [ORDER BY expression1 {ASC | DESC} [, ...]]) +3503 order = self._parse_order(this=expression) +3504 return self.expression(exp.GroupConcat, this=order, separator=seq_get(args, 1)) 3505 -3506 if self._match(TokenType.FROM): -3507 args.append(self._parse_bitwise()) -3508 if self._match(TokenType.FOR): -3509 args.append(self._parse_bitwise()) -3510 -3511 this = exp.Substring.from_arg_list(args) -3512 self.validate_expression(this, args) -3513 -3514 return this -3515 -3516 def _parse_trim(self) -> exp.Expression: -3517 # https://www.w3resource.com/sql/character-functions/trim.php -3518 # https://docs.oracle.com/javadb/10.8.3.0/ref/rreftrimfunc.html -3519 -3520 position = None -3521 collation = None +3506 # Checks if we can parse an order clause: WITHIN GROUP (ORDER BY <order_by_expression_list> [ASC | DESC]). +3507 # This is done "manually", instead of letting _parse_window parse it into an exp.WithinGroup node, so that +3508 # the STRING_AGG call is parsed like in MySQL / SQLite and can thus be transpiled more easily to them. +3509 if not self._match(TokenType.WITHIN_GROUP): +3510 self._retreat(index) +3511 this = exp.GroupConcat.from_arg_list(args) +3512 self.validate_expression(this, args) +3513 return this +3514 +3515 self._match_l_paren() # The corresponding match_r_paren will be called in parse_function (caller) +3516 order = self._parse_order(this=expression) +3517 return self.expression(exp.GroupConcat, this=order, separator=seq_get(args, 1)) +3518 +3519 def _parse_convert(self, strict: bool) -> t.Optional[exp.Expression]: +3520 to: t.Optional[exp.Expression] +3521 this = self._parse_bitwise() 3522 -3523 if self._match_set(self.TRIM_TYPES): -3524 position = self._prev.text.upper() -3525 -3526 expression = self._parse_term() -3527 if self._match_set((TokenType.FROM, TokenType.COMMA)): -3528 this = self._parse_term() -3529 else: -3530 this = expression -3531 expression = None -3532 -3533 if self._match(TokenType.COLLATE): -3534 collation = self._parse_term() +3523 if self._match(TokenType.USING): +3524 to = self.expression(exp.CharacterSet, this=self._parse_var()) +3525 elif self._match(TokenType.COMMA): +3526 to = self._parse_bitwise() +3527 else: +3528 to = None +3529 +3530 # Swap the argument order if needed to produce the correct AST +3531 if self.CONVERT_TYPE_FIRST: +3532 this, to = to, this +3533 +3534 return self.expression(exp.Cast if strict else exp.TryCast, this=this, to=to) 3535 -3536 return self.expression( -3537 exp.Trim, -3538 this=this, -3539 position=position, -3540 expression=expression, -3541 collation=collation, -3542 ) -3543 -3544 def _parse_window_clause(self) -> t.Optional[t.List[t.Optional[exp.Expression]]]: -3545 return self._match(TokenType.WINDOW) and self._parse_csv(self._parse_named_window) -3546 -3547 def _parse_named_window(self) -> t.Optional[exp.Expression]: -3548 return self._parse_window(self._parse_id_var(), alias=True) -3549 -3550 def _parse_window( -3551 self, this: t.Optional[exp.Expression], alias: bool = False -3552 ) -> t.Optional[exp.Expression]: -3553 if self._match_pair(TokenType.FILTER, TokenType.L_PAREN): -3554 this = self.expression(exp.Filter, this=this, expression=self._parse_where()) -3555 self._match_r_paren() -3556 -3557 # T-SQL allows the OVER (...) syntax after WITHIN GROUP. -3558 # https://learn.microsoft.com/en-us/sql/t-sql/functions/percentile-disc-transact-sql?view=sql-server-ver16 -3559 if self._match(TokenType.WITHIN_GROUP): -3560 order = self._parse_wrapped(self._parse_order) -3561 this = self.expression(exp.WithinGroup, this=this, expression=order) -3562 -3563 # SQL spec defines an optional [ { IGNORE | RESPECT } NULLS ] OVER -3564 # Some dialects choose to implement and some do not. -3565 # https://dev.mysql.com/doc/refman/8.0/en/window-function-descriptions.html -3566 -3567 # There is some code above in _parse_lambda that handles -3568 # SELECT FIRST_VALUE(TABLE.COLUMN IGNORE|RESPECT NULLS) OVER ... -3569 -3570 # The below changes handle -3571 # SELECT FIRST_VALUE(TABLE.COLUMN) IGNORE|RESPECT NULLS OVER ... -3572 -3573 # Oracle allows both formats -3574 # (https://docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/img_text/first_value.html) -3575 # and Snowflake chose to do the same for familiarity -3576 # https://docs.snowflake.com/en/sql-reference/functions/first_value.html#usage-notes -3577 if self._match(TokenType.IGNORE_NULLS): -3578 this = self.expression(exp.IgnoreNulls, this=this) -3579 elif self._match(TokenType.RESPECT_NULLS): -3580 this = self.expression(exp.RespectNulls, this=this) -3581 -3582 # bigquery select from window x AS (partition by ...) -3583 if alias: -3584 self._match(TokenType.ALIAS) -3585 elif not self._match(TokenType.OVER): -3586 return this -3587 -3588 if not self._match(TokenType.L_PAREN): -3589 return self.expression(exp.Window, this=this, alias=self._parse_id_var(False)) +3536 def _parse_decode(self) -> t.Optional[exp.Expression]: +3537 """ +3538 There are generally two variants of the DECODE function: +3539 +3540 - DECODE(bin, charset) +3541 - DECODE(expression, search, result [, search, result] ... [, default]) +3542 +3543 The second variant will always be parsed into a CASE expression. Note that NULL +3544 needs special treatment, since we need to explicitly check for it with `IS NULL`, +3545 instead of relying on pattern matching. +3546 """ +3547 args = self._parse_csv(self._parse_conjunction) +3548 +3549 if len(args) < 3: +3550 return self.expression(exp.Decode, this=seq_get(args, 0), charset=seq_get(args, 1)) +3551 +3552 expression, *expressions = args +3553 if not expression: +3554 return None +3555 +3556 ifs = [] +3557 for search, result in zip(expressions[::2], expressions[1::2]): +3558 if not search or not result: +3559 return None +3560 +3561 if isinstance(search, exp.Literal): +3562 ifs.append( +3563 exp.If(this=exp.EQ(this=expression.copy(), expression=search), true=result) +3564 ) +3565 elif isinstance(search, exp.Null): +3566 ifs.append( +3567 exp.If(this=exp.Is(this=expression.copy(), expression=exp.Null()), true=result) +3568 ) +3569 else: +3570 cond = exp.or_( +3571 exp.EQ(this=expression.copy(), expression=search), +3572 exp.and_( +3573 exp.Is(this=expression.copy(), expression=exp.Null()), +3574 exp.Is(this=search.copy(), expression=exp.Null()), +3575 ), +3576 ) +3577 ifs.append(exp.If(this=cond, true=result)) +3578 +3579 return exp.Case(ifs=ifs, default=expressions[-1] if len(expressions) % 2 == 1 else None) +3580 +3581 def _parse_json_key_value(self) -> t.Optional[exp.Expression]: +3582 self._match_text_seq("KEY") +3583 key = self._parse_field() +3584 self._match(TokenType.COLON) +3585 self._match_text_seq("VALUE") +3586 value = self._parse_field() +3587 if not key and not value: +3588 return None +3589 return self.expression(exp.JSONKeyValue, this=key, expression=value) 3590 -3591 window_alias = self._parse_id_var(any_token=False, tokens=self.WINDOW_ALIAS_TOKENS) -3592 partition = self._parse_partition_by() -3593 order = self._parse_order() -3594 kind = self._match_set((TokenType.ROWS, TokenType.RANGE)) and self._prev.text -3595 -3596 if kind: -3597 self._match(TokenType.BETWEEN) -3598 start = self._parse_window_spec() -3599 self._match(TokenType.AND) -3600 end = self._parse_window_spec() -3601 -3602 spec = self.expression( -3603 exp.WindowSpec, -3604 kind=kind, -3605 start=start["value"], -3606 start_side=start["side"], -3607 end=end["value"], -3608 end_side=end["side"], -3609 ) -3610 else: -3611 spec = None -3612 -3613 self._match_r_paren() -3614 -3615 return self.expression( -3616 exp.Window, -3617 this=this, -3618 partition_by=partition, -3619 order=order, -3620 spec=spec, -3621 alias=window_alias, -3622 ) -3623 -3624 def _parse_window_spec(self) -> t.Dict[str, t.Optional[str | exp.Expression]]: -3625 self._match(TokenType.BETWEEN) -3626 -3627 return { -3628 "value": ( -3629 self._match_set((TokenType.UNBOUNDED, TokenType.CURRENT_ROW)) and self._prev.text -3630 ) -3631 or self._parse_bitwise(), -3632 "side": self._match_set((TokenType.PRECEDING, TokenType.FOLLOWING)) and self._prev.text, -3633 } +3591 def _parse_json_object(self) -> exp.Expression: +3592 expressions = self._parse_csv(self._parse_json_key_value) +3593 +3594 null_handling = None +3595 if self._match_text_seq("NULL", "ON", "NULL"): +3596 null_handling = "NULL ON NULL" +3597 elif self._match_text_seq("ABSENT", "ON", "NULL"): +3598 null_handling = "ABSENT ON NULL" +3599 +3600 unique_keys = None +3601 if self._match_text_seq("WITH", "UNIQUE"): +3602 unique_keys = True +3603 elif self._match_text_seq("WITHOUT", "UNIQUE"): +3604 unique_keys = False +3605 +3606 self._match_text_seq("KEYS") +3607 +3608 return_type = self._match_text_seq("RETURNING") and self._parse_type() +3609 format_json = self._match_text_seq("FORMAT", "JSON") +3610 encoding = self._match_text_seq("ENCODING") and self._parse_var() +3611 +3612 return self.expression( +3613 exp.JSONObject, +3614 expressions=expressions, +3615 null_handling=null_handling, +3616 unique_keys=unique_keys, +3617 return_type=return_type, +3618 format_json=format_json, +3619 encoding=encoding, +3620 ) +3621 +3622 def _parse_logarithm(self) -> exp.Expression: +3623 # Default argument order is base, expression +3624 args = self._parse_csv(self._parse_range) +3625 +3626 if len(args) > 1: +3627 if not self.LOG_BASE_FIRST: +3628 args.reverse() +3629 return exp.Log.from_arg_list(args) +3630 +3631 return self.expression( +3632 exp.Ln if self.LOG_DEFAULTS_TO_LN else exp.Log, this=seq_get(args, 0) +3633 ) 3634 -3635 def _parse_alias( -3636 self, this: t.Optional[exp.Expression], explicit: bool = False -3637 ) -> t.Optional[exp.Expression]: -3638 any_token = self._match(TokenType.ALIAS) +3635 def _parse_match_against(self) -> exp.Expression: +3636 expressions = self._parse_csv(self._parse_column) +3637 +3638 self._match_text_seq(")", "AGAINST", "(") 3639 -3640 if explicit and not any_token: -3641 return this -3642 -3643 if self._match(TokenType.L_PAREN): -3644 aliases = self.expression( -3645 exp.Aliases, -3646 this=this, -3647 expressions=self._parse_csv(lambda: self._parse_id_var(any_token)), -3648 ) -3649 self._match_r_paren(aliases) -3650 return aliases -3651 -3652 alias = self._parse_id_var(any_token) -3653 -3654 if alias: -3655 return self.expression(exp.Alias, this=this, alias=alias) +3640 this = self._parse_string() +3641 +3642 if self._match_text_seq("IN", "NATURAL", "LANGUAGE", "MODE"): +3643 modifier = "IN NATURAL LANGUAGE MODE" +3644 if self._match_text_seq("WITH", "QUERY", "EXPANSION"): +3645 modifier = f"{modifier} WITH QUERY EXPANSION" +3646 elif self._match_text_seq("IN", "BOOLEAN", "MODE"): +3647 modifier = "IN BOOLEAN MODE" +3648 elif self._match_text_seq("WITH", "QUERY", "EXPANSION"): +3649 modifier = "WITH QUERY EXPANSION" +3650 else: +3651 modifier = None +3652 +3653 return self.expression( +3654 exp.MatchAgainst, this=this, expressions=expressions, modifier=modifier +3655 ) 3656 -3657 return this -3658 -3659 def _parse_id_var( -3660 self, -3661 any_token: bool = True, -3662 tokens: t.Optional[t.Collection[TokenType]] = None, -3663 prefix_tokens: t.Optional[t.Collection[TokenType]] = None, -3664 ) -> t.Optional[exp.Expression]: -3665 identifier = self._parse_identifier() -3666 -3667 if identifier: -3668 return identifier -3669 -3670 prefix = "" +3657 def _parse_position(self, haystack_first: bool = False) -> exp.Expression: +3658 args = self._parse_csv(self._parse_bitwise) +3659 +3660 if self._match(TokenType.IN): +3661 return self.expression( +3662 exp.StrPosition, this=self._parse_bitwise(), substr=seq_get(args, 0) +3663 ) +3664 +3665 if haystack_first: +3666 haystack = seq_get(args, 0) +3667 needle = seq_get(args, 1) +3668 else: +3669 needle = seq_get(args, 0) +3670 haystack = seq_get(args, 1) 3671 -3672 if prefix_tokens: -3673 while self._match_set(prefix_tokens): -3674 prefix += self._prev.text +3672 this = exp.StrPosition(this=haystack, substr=needle, position=seq_get(args, 2)) +3673 +3674 self.validate_expression(this, args) 3675 -3676 if (any_token and self._advance_any()) or self._match_set(tokens or self.ID_VAR_TOKENS): -3677 quoted = self._prev.token_type == TokenType.STRING -3678 return exp.Identifier(this=prefix + self._prev.text, quoted=quoted) -3679 -3680 return None +3676 return this +3677 +3678 def _parse_join_hint(self, func_name: str) -> exp.Expression: +3679 args = self._parse_csv(self._parse_table) +3680 return exp.JoinHint(this=func_name.upper(), expressions=args) 3681 -3682 def _parse_string(self) -> t.Optional[exp.Expression]: -3683 if self._match(TokenType.STRING): -3684 return self.PRIMARY_PARSERS[TokenType.STRING](self, self._prev) -3685 return self._parse_placeholder() -3686 -3687 def _parse_string_as_identifier(self) -> t.Optional[exp.Expression]: -3688 return exp.to_identifier(self._match(TokenType.STRING) and self._prev.text, quoted=True) -3689 -3690 def _parse_number(self) -> t.Optional[exp.Expression]: -3691 if self._match(TokenType.NUMBER): -3692 return self.PRIMARY_PARSERS[TokenType.NUMBER](self, self._prev) -3693 return self._parse_placeholder() -3694 -3695 def _parse_identifier(self) -> t.Optional[exp.Expression]: -3696 if self._match(TokenType.IDENTIFIER): -3697 return self.expression(exp.Identifier, this=self._prev.text, quoted=True) -3698 return self._parse_placeholder() -3699 -3700 def _parse_var( -3701 self, any_token: bool = False, tokens: t.Optional[t.Collection[TokenType]] = None -3702 ) -> t.Optional[exp.Expression]: -3703 if ( -3704 (any_token and self._advance_any()) -3705 or self._match(TokenType.VAR) -3706 or (self._match_set(tokens) if tokens else False) -3707 ): -3708 return self.expression(exp.Var, this=self._prev.text) -3709 return self._parse_placeholder() -3710 -3711 def _advance_any(self) -> t.Optional[Token]: -3712 if self._curr and self._curr.token_type not in self.RESERVED_KEYWORDS: -3713 self._advance() -3714 return self._prev -3715 return None -3716 -3717 def _parse_var_or_string(self) -> t.Optional[exp.Expression]: -3718 return self._parse_var() or self._parse_string() -3719 -3720 def _parse_null(self) -> t.Optional[exp.Expression]: -3721 if self._match(TokenType.NULL): -3722 return self.PRIMARY_PARSERS[TokenType.NULL](self, self._prev) -3723 return None -3724 -3725 def _parse_boolean(self) -> t.Optional[exp.Expression]: -3726 if self._match(TokenType.TRUE): -3727 return self.PRIMARY_PARSERS[TokenType.TRUE](self, self._prev) -3728 if self._match(TokenType.FALSE): -3729 return self.PRIMARY_PARSERS[TokenType.FALSE](self, self._prev) -3730 return None +3682 def _parse_substring(self) -> exp.Expression: +3683 # Postgres supports the form: substring(string [from int] [for int]) +3684 # https://www.postgresql.org/docs/9.1/functions-string.html @ Table 9-6 +3685 +3686 args = self._parse_csv(self._parse_bitwise) +3687 +3688 if self._match(TokenType.FROM): +3689 args.append(self._parse_bitwise()) +3690 if self._match(TokenType.FOR): +3691 args.append(self._parse_bitwise()) +3692 +3693 this = exp.Substring.from_arg_list(args) +3694 self.validate_expression(this, args) +3695 +3696 return this +3697 +3698 def _parse_trim(self) -> exp.Expression: +3699 # https://www.w3resource.com/sql/character-functions/trim.php +3700 # https://docs.oracle.com/javadb/10.8.3.0/ref/rreftrimfunc.html +3701 +3702 position = None +3703 collation = None +3704 +3705 if self._match_set(self.TRIM_TYPES): +3706 position = self._prev.text.upper() +3707 +3708 expression = self._parse_term() +3709 if self._match_set((TokenType.FROM, TokenType.COMMA)): +3710 this = self._parse_term() +3711 else: +3712 this = expression +3713 expression = None +3714 +3715 if self._match(TokenType.COLLATE): +3716 collation = self._parse_term() +3717 +3718 return self.expression( +3719 exp.Trim, +3720 this=this, +3721 position=position, +3722 expression=expression, +3723 collation=collation, +3724 ) +3725 +3726 def _parse_window_clause(self) -> t.Optional[t.List[t.Optional[exp.Expression]]]: +3727 return self._match(TokenType.WINDOW) and self._parse_csv(self._parse_named_window) +3728 +3729 def _parse_named_window(self) -> t.Optional[exp.Expression]: +3730 return self._parse_window(self._parse_id_var(), alias=True) 3731 -3732 def _parse_star(self) -> t.Optional[exp.Expression]: -3733 if self._match(TokenType.STAR): -3734 return self.PRIMARY_PARSERS[TokenType.STAR](self, self._prev) -3735 return None -3736 -3737 def _parse_parameter(self) -> exp.Expression: -3738 wrapped = self._match(TokenType.L_BRACE) -3739 this = self._parse_var() or self._parse_primary() -3740 self._match(TokenType.R_BRACE) -3741 return self.expression(exp.Parameter, this=this, wrapped=wrapped) -3742 -3743 def _parse_placeholder(self) -> t.Optional[exp.Expression]: -3744 if self._match_set(self.PLACEHOLDER_PARSERS): -3745 placeholder = self.PLACEHOLDER_PARSERS[self._prev.token_type](self) -3746 if placeholder: -3747 return placeholder -3748 self._advance(-1) -3749 return None -3750 -3751 def _parse_except(self) -> t.Optional[t.List[t.Optional[exp.Expression]]]: -3752 if not self._match(TokenType.EXCEPT): -3753 return None -3754 if self._match(TokenType.L_PAREN, advance=False): -3755 return self._parse_wrapped_csv(self._parse_column) -3756 return self._parse_csv(self._parse_column) -3757 -3758 def _parse_replace(self) -> t.Optional[t.List[t.Optional[exp.Expression]]]: -3759 if not self._match(TokenType.REPLACE): -3760 return None -3761 if self._match(TokenType.L_PAREN, advance=False): -3762 return self._parse_wrapped_csv(self._parse_expression) -3763 return self._parse_csv(self._parse_expression) -3764 -3765 def _parse_csv( -3766 self, parse_method: t.Callable, sep: TokenType = TokenType.COMMA -3767 ) -> t.List[t.Optional[exp.Expression]]: -3768 parse_result = parse_method() -3769 items = [parse_result] if parse_result is not None else [] -3770 -3771 while self._match(sep): -3772 if parse_result and self._prev_comments: -3773 parse_result.comments = self._prev_comments -3774 -3775 parse_result = parse_method() -3776 if parse_result is not None: -3777 items.append(parse_result) -3778 -3779 return items -3780 -3781 def _parse_tokens( -3782 self, parse_method: t.Callable, expressions: t.Dict -3783 ) -> t.Optional[exp.Expression]: -3784 this = parse_method() -3785 -3786 while self._match_set(expressions): -3787 this = self.expression( -3788 expressions[self._prev.token_type], -3789 this=this, -3790 comments=self._prev_comments, -3791 expression=parse_method(), -3792 ) -3793 -3794 return this -3795 -3796 def _parse_wrapped_id_vars(self) -> t.List[t.Optional[exp.Expression]]: -3797 return self._parse_wrapped_csv(self._parse_id_var) -3798 -3799 def _parse_wrapped_csv( -3800 self, parse_method: t.Callable, sep: TokenType = TokenType.COMMA -3801 ) -> t.List[t.Optional[exp.Expression]]: -3802 return self._parse_wrapped(lambda: self._parse_csv(parse_method, sep=sep)) -3803 -3804 def _parse_wrapped(self, parse_method: t.Callable) -> t.Any: -3805 self._match_l_paren() -3806 parse_result = parse_method() -3807 self._match_r_paren() -3808 return parse_result -3809 -3810 def _parse_select_or_expression(self) -> t.Optional[exp.Expression]: -3811 return self._parse_select() or self._parse_set_operations(self._parse_expression()) -3812 -3813 def _parse_ddl_select(self) -> t.Optional[exp.Expression]: -3814 return self._parse_set_operations( -3815 self._parse_select(nested=True, parse_subquery_alias=False) -3816 ) -3817 -3818 def _parse_transaction(self) -> exp.Expression: -3819 this = None -3820 if self._match_texts(self.TRANSACTION_KIND): -3821 this = self._prev.text -3822 -3823 self._match_texts({"TRANSACTION", "WORK"}) +3732 def _parse_window( +3733 self, this: t.Optional[exp.Expression], alias: bool = False +3734 ) -> t.Optional[exp.Expression]: +3735 if self._match_pair(TokenType.FILTER, TokenType.L_PAREN): +3736 this = self.expression(exp.Filter, this=this, expression=self._parse_where()) +3737 self._match_r_paren() +3738 +3739 # T-SQL allows the OVER (...) syntax after WITHIN GROUP. +3740 # https://learn.microsoft.com/en-us/sql/t-sql/functions/percentile-disc-transact-sql?view=sql-server-ver16 +3741 if self._match(TokenType.WITHIN_GROUP): +3742 order = self._parse_wrapped(self._parse_order) +3743 this = self.expression(exp.WithinGroup, this=this, expression=order) +3744 +3745 # SQL spec defines an optional [ { IGNORE | RESPECT } NULLS ] OVER +3746 # Some dialects choose to implement and some do not. +3747 # https://dev.mysql.com/doc/refman/8.0/en/window-function-descriptions.html +3748 +3749 # There is some code above in _parse_lambda that handles +3750 # SELECT FIRST_VALUE(TABLE.COLUMN IGNORE|RESPECT NULLS) OVER ... +3751 +3752 # The below changes handle +3753 # SELECT FIRST_VALUE(TABLE.COLUMN) IGNORE|RESPECT NULLS OVER ... +3754 +3755 # Oracle allows both formats +3756 # (https://docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/img_text/first_value.html) +3757 # and Snowflake chose to do the same for familiarity +3758 # https://docs.snowflake.com/en/sql-reference/functions/first_value.html#usage-notes +3759 if self._match(TokenType.IGNORE_NULLS): +3760 this = self.expression(exp.IgnoreNulls, this=this) +3761 elif self._match(TokenType.RESPECT_NULLS): +3762 this = self.expression(exp.RespectNulls, this=this) +3763 +3764 # bigquery select from window x AS (partition by ...) +3765 if alias: +3766 self._match(TokenType.ALIAS) +3767 elif not self._match(TokenType.OVER): +3768 return this +3769 +3770 if not self._match(TokenType.L_PAREN): +3771 return self.expression(exp.Window, this=this, alias=self._parse_id_var(False)) +3772 +3773 window_alias = self._parse_id_var(any_token=False, tokens=self.WINDOW_ALIAS_TOKENS) +3774 partition = self._parse_partition_by() +3775 order = self._parse_order() +3776 kind = self._match_set((TokenType.ROWS, TokenType.RANGE)) and self._prev.text +3777 +3778 if kind: +3779 self._match(TokenType.BETWEEN) +3780 start = self._parse_window_spec() +3781 self._match(TokenType.AND) +3782 end = self._parse_window_spec() +3783 +3784 spec = self.expression( +3785 exp.WindowSpec, +3786 kind=kind, +3787 start=start["value"], +3788 start_side=start["side"], +3789 end=end["value"], +3790 end_side=end["side"], +3791 ) +3792 else: +3793 spec = None +3794 +3795 self._match_r_paren() +3796 +3797 return self.expression( +3798 exp.Window, +3799 this=this, +3800 partition_by=partition, +3801 order=order, +3802 spec=spec, +3803 alias=window_alias, +3804 ) +3805 +3806 def _parse_window_spec(self) -> t.Dict[str, t.Optional[str | exp.Expression]]: +3807 self._match(TokenType.BETWEEN) +3808 +3809 return { +3810 "value": ( +3811 self._match_set((TokenType.UNBOUNDED, TokenType.CURRENT_ROW)) and self._prev.text +3812 ) +3813 or self._parse_bitwise(), +3814 "side": self._match_set((TokenType.PRECEDING, TokenType.FOLLOWING)) and self._prev.text, +3815 } +3816 +3817 def _parse_alias( +3818 self, this: t.Optional[exp.Expression], explicit: bool = False +3819 ) -> t.Optional[exp.Expression]: +3820 any_token = self._match(TokenType.ALIAS) +3821 +3822 if explicit and not any_token: +3823 return this 3824 -3825 modes = [] -3826 while True: -3827 mode = [] -3828 while self._match(TokenType.VAR): -3829 mode.append(self._prev.text) -3830 -3831 if mode: -3832 modes.append(" ".join(mode)) -3833 if not self._match(TokenType.COMMA): -3834 break +3825 if self._match(TokenType.L_PAREN): +3826 aliases = self.expression( +3827 exp.Aliases, +3828 this=this, +3829 expressions=self._parse_csv(lambda: self._parse_id_var(any_token)), +3830 ) +3831 self._match_r_paren(aliases) +3832 return aliases +3833 +3834 alias = self._parse_id_var(any_token) 3835 -3836 return self.expression(exp.Transaction, this=this, modes=modes) -3837 -3838 def _parse_commit_or_rollback(self) -> exp.Expression: -3839 chain = None -3840 savepoint = None -3841 is_rollback = self._prev.token_type == TokenType.ROLLBACK -3842 -3843 self._match_texts({"TRANSACTION", "WORK"}) -3844 -3845 if self._match_text_seq("TO"): -3846 self._match_text_seq("SAVEPOINT") -3847 savepoint = self._parse_id_var() +3836 if alias: +3837 return self.expression(exp.Alias, this=this, alias=alias) +3838 +3839 return this +3840 +3841 def _parse_id_var( +3842 self, +3843 any_token: bool = True, +3844 tokens: t.Optional[t.Collection[TokenType]] = None, +3845 prefix_tokens: t.Optional[t.Collection[TokenType]] = None, +3846 ) -> t.Optional[exp.Expression]: +3847 identifier = self._parse_identifier() 3848 -3849 if self._match(TokenType.AND): -3850 chain = not self._match_text_seq("NO") -3851 self._match_text_seq("CHAIN") -3852 -3853 if is_rollback: -3854 return self.expression(exp.Rollback, savepoint=savepoint) -3855 return self.expression(exp.Commit, chain=chain) -3856 -3857 def _parse_add_column(self) -> t.Optional[exp.Expression]: -3858 if not self._match_text_seq("ADD"): -3859 return None -3860 -3861 self._match(TokenType.COLUMN) -3862 exists_column = self._parse_exists(not_=True) -3863 expression = self._parse_column_def(self._parse_field(any_token=True)) -3864 -3865 if expression: -3866 expression.set("exists", exists_column) -3867 -3868 # https://docs.databricks.com/delta/update-schema.html#explicitly-update-schema-to-add-columns -3869 if self._match_texts(("FIRST", "AFTER")): -3870 position = self._prev.text -3871 column_position = self.expression( -3872 exp.ColumnPosition, this=self._parse_column(), position=position -3873 ) -3874 expression.set("position", column_position) -3875 -3876 return expression -3877 -3878 def _parse_drop_column(self) -> t.Optional[exp.Expression]: -3879 return self._match(TokenType.DROP) and self._parse_drop(default_kind="COLUMN") -3880 -3881 # https://docs.aws.amazon.com/athena/latest/ug/alter-table-drop-partition.html -3882 def _parse_drop_partition(self, exists: t.Optional[bool] = None) -> exp.Expression: -3883 return self.expression( -3884 exp.DropPartition, expressions=self._parse_csv(self._parse_partition), exists=exists -3885 ) -3886 -3887 def _parse_add_constraint(self) -> t.Optional[exp.Expression]: -3888 this = None -3889 kind = self._prev.token_type -3890 -3891 if kind == TokenType.CONSTRAINT: -3892 this = self._parse_id_var() -3893 -3894 if self._match_text_seq("CHECK"): -3895 expression = self._parse_wrapped(self._parse_conjunction) -3896 enforced = self._match_text_seq("ENFORCED") -3897 -3898 return self.expression( -3899 exp.AddConstraint, this=this, expression=expression, enforced=enforced -3900 ) +3849 if identifier: +3850 return identifier +3851 +3852 prefix = "" +3853 +3854 if prefix_tokens: +3855 while self._match_set(prefix_tokens): +3856 prefix += self._prev.text +3857 +3858 if (any_token and self._advance_any()) or self._match_set(tokens or self.ID_VAR_TOKENS): +3859 quoted = self._prev.token_type == TokenType.STRING +3860 return exp.Identifier(this=prefix + self._prev.text, quoted=quoted) +3861 +3862 return None +3863 +3864 def _parse_string(self) -> t.Optional[exp.Expression]: +3865 if self._match(TokenType.STRING): +3866 return self.PRIMARY_PARSERS[TokenType.STRING](self, self._prev) +3867 return self._parse_placeholder() +3868 +3869 def _parse_string_as_identifier(self) -> t.Optional[exp.Expression]: +3870 return exp.to_identifier(self._match(TokenType.STRING) and self._prev.text, quoted=True) +3871 +3872 def _parse_number(self) -> t.Optional[exp.Expression]: +3873 if self._match(TokenType.NUMBER): +3874 return self.PRIMARY_PARSERS[TokenType.NUMBER](self, self._prev) +3875 return self._parse_placeholder() +3876 +3877 def _parse_identifier(self) -> t.Optional[exp.Expression]: +3878 if self._match(TokenType.IDENTIFIER): +3879 return self.expression(exp.Identifier, this=self._prev.text, quoted=True) +3880 return self._parse_placeholder() +3881 +3882 def _parse_var( +3883 self, any_token: bool = False, tokens: t.Optional[t.Collection[TokenType]] = None +3884 ) -> t.Optional[exp.Expression]: +3885 if ( +3886 (any_token and self._advance_any()) +3887 or self._match(TokenType.VAR) +3888 or (self._match_set(tokens) if tokens else False) +3889 ): +3890 return self.expression(exp.Var, this=self._prev.text) +3891 return self._parse_placeholder() +3892 +3893 def _advance_any(self) -> t.Optional[Token]: +3894 if self._curr and self._curr.token_type not in self.RESERVED_KEYWORDS: +3895 self._advance() +3896 return self._prev +3897 return None +3898 +3899 def _parse_var_or_string(self) -> t.Optional[exp.Expression]: +3900 return self._parse_var() or self._parse_string() 3901 -3902 if kind == TokenType.FOREIGN_KEY or self._match(TokenType.FOREIGN_KEY): -3903 expression = self._parse_foreign_key() -3904 elif kind == TokenType.PRIMARY_KEY or self._match(TokenType.PRIMARY_KEY): -3905 expression = self._parse_primary_key() -3906 else: -3907 expression = None -3908 -3909 return self.expression(exp.AddConstraint, this=this, expression=expression) -3910 -3911 def _parse_alter_table_add(self) -> t.List[t.Optional[exp.Expression]]: -3912 index = self._index - 1 +3902 def _parse_null(self) -> t.Optional[exp.Expression]: +3903 if self._match(TokenType.NULL): +3904 return self.PRIMARY_PARSERS[TokenType.NULL](self, self._prev) +3905 return None +3906 +3907 def _parse_boolean(self) -> t.Optional[exp.Expression]: +3908 if self._match(TokenType.TRUE): +3909 return self.PRIMARY_PARSERS[TokenType.TRUE](self, self._prev) +3910 if self._match(TokenType.FALSE): +3911 return self.PRIMARY_PARSERS[TokenType.FALSE](self, self._prev) +3912 return None 3913 -3914 if self._match_set(self.ADD_CONSTRAINT_TOKENS): -3915 return self._parse_csv(self._parse_add_constraint) -3916 -3917 self._retreat(index) -3918 return self._parse_csv(self._parse_add_column) -3919 -3920 def _parse_alter_table_alter(self) -> exp.Expression: -3921 self._match(TokenType.COLUMN) -3922 column = self._parse_field(any_token=True) -3923 -3924 if self._match_pair(TokenType.DROP, TokenType.DEFAULT): -3925 return self.expression(exp.AlterColumn, this=column, drop=True) -3926 if self._match_pair(TokenType.SET, TokenType.DEFAULT): -3927 return self.expression(exp.AlterColumn, this=column, default=self._parse_conjunction()) -3928 -3929 self._match_text_seq("SET", "DATA") -3930 return self.expression( -3931 exp.AlterColumn, -3932 this=column, -3933 dtype=self._match_text_seq("TYPE") and self._parse_types(), -3934 collate=self._match(TokenType.COLLATE) and self._parse_term(), -3935 using=self._match(TokenType.USING) and self._parse_conjunction(), -3936 ) -3937 -3938 def _parse_alter_table_drop(self) -> t.List[t.Optional[exp.Expression]]: -3939 index = self._index - 1 -3940 -3941 partition_exists = self._parse_exists() -3942 if self._match(TokenType.PARTITION, advance=False): -3943 return self._parse_csv(lambda: self._parse_drop_partition(exists=partition_exists)) -3944 -3945 self._retreat(index) -3946 return self._parse_csv(self._parse_drop_column) -3947 -3948 def _parse_alter_table_rename(self) -> exp.Expression: -3949 self._match_text_seq("TO") -3950 return self.expression(exp.RenameTable, this=self._parse_table(schema=True)) -3951 -3952 def _parse_alter(self) -> t.Optional[exp.Expression]: -3953 start = self._prev -3954 -3955 if not self._match(TokenType.TABLE): -3956 return self._parse_as_command(start) -3957 -3958 exists = self._parse_exists() -3959 this = self._parse_table(schema=True) +3914 def _parse_star(self) -> t.Optional[exp.Expression]: +3915 if self._match(TokenType.STAR): +3916 return self.PRIMARY_PARSERS[TokenType.STAR](self, self._prev) +3917 return None +3918 +3919 def _parse_parameter(self) -> exp.Expression: +3920 wrapped = self._match(TokenType.L_BRACE) +3921 this = self._parse_var() or self._parse_primary() +3922 self._match(TokenType.R_BRACE) +3923 return self.expression(exp.Parameter, this=this, wrapped=wrapped) +3924 +3925 def _parse_placeholder(self) -> t.Optional[exp.Expression]: +3926 if self._match_set(self.PLACEHOLDER_PARSERS): +3927 placeholder = self.PLACEHOLDER_PARSERS[self._prev.token_type](self) +3928 if placeholder: +3929 return placeholder +3930 self._advance(-1) +3931 return None +3932 +3933 def _parse_except(self) -> t.Optional[t.List[t.Optional[exp.Expression]]]: +3934 if not self._match(TokenType.EXCEPT): +3935 return None +3936 if self._match(TokenType.L_PAREN, advance=False): +3937 return self._parse_wrapped_csv(self._parse_column) +3938 return self._parse_csv(self._parse_column) +3939 +3940 def _parse_replace(self) -> t.Optional[t.List[t.Optional[exp.Expression]]]: +3941 if not self._match(TokenType.REPLACE): +3942 return None +3943 if self._match(TokenType.L_PAREN, advance=False): +3944 return self._parse_wrapped_csv(self._parse_expression) +3945 return self._parse_csv(self._parse_expression) +3946 +3947 def _parse_csv( +3948 self, parse_method: t.Callable, sep: TokenType = TokenType.COMMA +3949 ) -> t.List[t.Optional[exp.Expression]]: +3950 parse_result = parse_method() +3951 items = [parse_result] if parse_result is not None else [] +3952 +3953 while self._match(sep): +3954 if parse_result and self._prev_comments: +3955 parse_result.comments = self._prev_comments +3956 +3957 parse_result = parse_method() +3958 if parse_result is not None: +3959 items.append(parse_result) 3960 -3961 if self._next: -3962 self._advance() -3963 parser = self.ALTER_PARSERS.get(self._prev.text.upper()) if self._prev else None -3964 -3965 if parser: -3966 actions = ensure_list(parser(self)) +3961 return items +3962 +3963 def _parse_tokens( +3964 self, parse_method: t.Callable, expressions: t.Dict +3965 ) -> t.Optional[exp.Expression]: +3966 this = parse_method() 3967 -3968 if not self._curr: -3969 return self.expression( -3970 exp.AlterTable, -3971 this=this, -3972 exists=exists, -3973 actions=actions, -3974 ) -3975 return self._parse_as_command(start) -3976 -3977 def _parse_merge(self) -> exp.Expression: -3978 self._match(TokenType.INTO) -3979 target = self._parse_table() +3968 while self._match_set(expressions): +3969 this = self.expression( +3970 expressions[self._prev.token_type], +3971 this=this, +3972 comments=self._prev_comments, +3973 expression=parse_method(), +3974 ) +3975 +3976 return this +3977 +3978 def _parse_wrapped_id_vars(self) -> t.List[t.Optional[exp.Expression]]: +3979 return self._parse_wrapped_csv(self._parse_id_var) 3980 -3981 self._match(TokenType.USING) -3982 using = self._parse_table() -3983 -3984 self._match(TokenType.ON) -3985 on = self._parse_conjunction() -3986 -3987 whens = [] -3988 while self._match(TokenType.WHEN): -3989 matched = not self._match(TokenType.NOT) -3990 self._match_text_seq("MATCHED") -3991 source = ( -3992 False -3993 if self._match_text_seq("BY", "TARGET") -3994 else self._match_text_seq("BY", "SOURCE") -3995 ) -3996 condition = self._parse_conjunction() if self._match(TokenType.AND) else None -3997 -3998 self._match(TokenType.THEN) +3981 def _parse_wrapped_csv( +3982 self, parse_method: t.Callable, sep: TokenType = TokenType.COMMA +3983 ) -> t.List[t.Optional[exp.Expression]]: +3984 return self._parse_wrapped(lambda: self._parse_csv(parse_method, sep=sep)) +3985 +3986 def _parse_wrapped(self, parse_method: t.Callable) -> t.Any: +3987 self._match_l_paren() +3988 parse_result = parse_method() +3989 self._match_r_paren() +3990 return parse_result +3991 +3992 def _parse_select_or_expression(self) -> t.Optional[exp.Expression]: +3993 return self._parse_select() or self._parse_set_operations(self._parse_expression()) +3994 +3995 def _parse_ddl_select(self) -> t.Optional[exp.Expression]: +3996 return self._parse_set_operations( +3997 self._parse_select(nested=True, parse_subquery_alias=False) +3998 ) 3999 -4000 if self._match(TokenType.INSERT): -4001 _this = self._parse_star() -4002 if _this: -4003 then = self.expression(exp.Insert, this=_this) -4004 else: -4005 then = self.expression( -4006 exp.Insert, -4007 this=self._parse_value(), -4008 expression=self._match(TokenType.VALUES) and self._parse_value(), -4009 ) -4010 elif self._match(TokenType.UPDATE): -4011 expressions = self._parse_star() -4012 if expressions: -4013 then = self.expression(exp.Update, expressions=expressions) -4014 else: -4015 then = self.expression( -4016 exp.Update, -4017 expressions=self._match(TokenType.SET) -4018 and self._parse_csv(self._parse_equality), -4019 ) -4020 elif self._match(TokenType.DELETE): -4021 then = self.expression(exp.Var, this=self._prev.text) -4022 else: -4023 then = None +4000 def _parse_transaction(self) -> exp.Expression: +4001 this = None +4002 if self._match_texts(self.TRANSACTION_KIND): +4003 this = self._prev.text +4004 +4005 self._match_texts({"TRANSACTION", "WORK"}) +4006 +4007 modes = [] +4008 while True: +4009 mode = [] +4010 while self._match(TokenType.VAR): +4011 mode.append(self._prev.text) +4012 +4013 if mode: +4014 modes.append(" ".join(mode)) +4015 if not self._match(TokenType.COMMA): +4016 break +4017 +4018 return self.expression(exp.Transaction, this=this, modes=modes) +4019 +4020 def _parse_commit_or_rollback(self) -> exp.Expression: +4021 chain = None +4022 savepoint = None +4023 is_rollback = self._prev.token_type == TokenType.ROLLBACK 4024 -4025 whens.append( -4026 self.expression( -4027 exp.When, -4028 matched=matched, -4029 source=source, -4030 condition=condition, -4031 then=then, -4032 ) -4033 ) +4025 self._match_texts({"TRANSACTION", "WORK"}) +4026 +4027 if self._match_text_seq("TO"): +4028 self._match_text_seq("SAVEPOINT") +4029 savepoint = self._parse_id_var() +4030 +4031 if self._match(TokenType.AND): +4032 chain = not self._match_text_seq("NO") +4033 self._match_text_seq("CHAIN") 4034 -4035 return self.expression( -4036 exp.Merge, -4037 this=target, -4038 using=using, -4039 on=on, -4040 expressions=whens, -4041 ) +4035 if is_rollback: +4036 return self.expression(exp.Rollback, savepoint=savepoint) +4037 return self.expression(exp.Commit, chain=chain) +4038 +4039 def _parse_add_column(self) -> t.Optional[exp.Expression]: +4040 if not self._match_text_seq("ADD"): +4041 return None 4042 -4043 def _parse_show(self) -> t.Optional[exp.Expression]: -4044 parser = self._find_parser(self.SHOW_PARSERS, self._show_trie) # type: ignore -4045 if parser: -4046 return parser(self) -4047 self._advance() -4048 return self.expression(exp.Show, this=self._prev.text.upper()) +4043 self._match(TokenType.COLUMN) +4044 exists_column = self._parse_exists(not_=True) +4045 expression = self._parse_column_def(self._parse_field(any_token=True)) +4046 +4047 if expression: +4048 expression.set("exists", exists_column) 4049 -4050 def _parse_set_item_assignment( -4051 self, kind: t.Optional[str] = None -4052 ) -> t.Optional[exp.Expression]: -4053 index = self._index -4054 -4055 if kind in {"GLOBAL", "SESSION"} and self._match_text_seq("TRANSACTION"): -4056 return self._parse_set_transaction(global_=kind == "GLOBAL") +4050 # https://docs.databricks.com/delta/update-schema.html#explicitly-update-schema-to-add-columns +4051 if self._match_texts(("FIRST", "AFTER")): +4052 position = self._prev.text +4053 column_position = self.expression( +4054 exp.ColumnPosition, this=self._parse_column(), position=position +4055 ) +4056 expression.set("position", column_position) 4057 -4058 left = self._parse_primary() or self._parse_id_var() +4058 return expression 4059 -4060 if not self._match_texts(("=", "TO")): -4061 self._retreat(index) -4062 return None -4063 -4064 right = self._parse_statement() or self._parse_id_var() -4065 this = self.expression( -4066 exp.EQ, -4067 this=left, -4068 expression=right, -4069 ) -4070 -4071 return self.expression( -4072 exp.SetItem, -4073 this=this, -4074 kind=kind, -4075 ) -4076 -4077 def _parse_set_transaction(self, global_: bool = False) -> exp.Expression: -4078 self._match_text_seq("TRANSACTION") -4079 characteristics = self._parse_csv( -4080 lambda: self._parse_var_from_options(self.TRANSACTION_CHARACTERISTICS) -4081 ) -4082 return self.expression( -4083 exp.SetItem, -4084 expressions=characteristics, -4085 kind="TRANSACTION", -4086 **{"global": global_}, # type: ignore -4087 ) -4088 -4089 def _parse_set_item(self) -> t.Optional[exp.Expression]: -4090 parser = self._find_parser(self.SET_PARSERS, self._set_trie) # type: ignore -4091 return parser(self) if parser else self._parse_set_item_assignment(kind=None) -4092 -4093 def _parse_set(self) -> exp.Expression: -4094 index = self._index -4095 set_ = self.expression(exp.Set, expressions=self._parse_csv(self._parse_set_item)) -4096 -4097 if self._curr: -4098 self._retreat(index) -4099 return self._parse_as_command(self._prev) -4100 -4101 return set_ -4102 -4103 def _parse_var_from_options(self, options: t.Collection[str]) -> t.Optional[exp.Expression]: -4104 for option in options: -4105 if self._match_text_seq(*option.split(" ")): -4106 return exp.Var(this=option) -4107 return None +4060 def _parse_drop_column(self) -> t.Optional[exp.Expression]: +4061 drop = self._match(TokenType.DROP) and self._parse_drop() +4062 if drop and not isinstance(drop, exp.Command): +4063 drop.set("kind", drop.args.get("kind", "COLUMN")) +4064 return drop +4065 +4066 # https://docs.aws.amazon.com/athena/latest/ug/alter-table-drop-partition.html +4067 def _parse_drop_partition(self, exists: t.Optional[bool] = None) -> exp.Expression: +4068 return self.expression( +4069 exp.DropPartition, expressions=self._parse_csv(self._parse_partition), exists=exists +4070 ) +4071 +4072 def _parse_add_constraint(self) -> t.Optional[exp.Expression]: +4073 this = None +4074 kind = self._prev.token_type +4075 +4076 if kind == TokenType.CONSTRAINT: +4077 this = self._parse_id_var() +4078 +4079 if self._match_text_seq("CHECK"): +4080 expression = self._parse_wrapped(self._parse_conjunction) +4081 enforced = self._match_text_seq("ENFORCED") +4082 +4083 return self.expression( +4084 exp.AddConstraint, this=this, expression=expression, enforced=enforced +4085 ) +4086 +4087 if kind == TokenType.FOREIGN_KEY or self._match(TokenType.FOREIGN_KEY): +4088 expression = self._parse_foreign_key() +4089 elif kind == TokenType.PRIMARY_KEY or self._match(TokenType.PRIMARY_KEY): +4090 expression = self._parse_primary_key() +4091 else: +4092 expression = None +4093 +4094 return self.expression(exp.AddConstraint, this=this, expression=expression) +4095 +4096 def _parse_alter_table_add(self) -> t.List[t.Optional[exp.Expression]]: +4097 index = self._index - 1 +4098 +4099 if self._match_set(self.ADD_CONSTRAINT_TOKENS): +4100 return self._parse_csv(self._parse_add_constraint) +4101 +4102 self._retreat(index) +4103 return self._parse_csv(self._parse_add_column) +4104 +4105 def _parse_alter_table_alter(self) -> exp.Expression: +4106 self._match(TokenType.COLUMN) +4107 column = self._parse_field(any_token=True) 4108 -4109 def _parse_as_command(self, start: Token) -> exp.Command: -4110 while self._curr: -4111 self._advance() -4112 text = self._find_sql(start, self._prev) -4113 size = len(start.text) -4114 return exp.Command(this=text[:size], expression=text[size:]) -4115 -4116 def _find_parser( -4117 self, parsers: t.Dict[str, t.Callable], trie: t.Dict -4118 ) -> t.Optional[t.Callable]: -4119 if not self._curr: -4120 return None -4121 -4122 index = self._index -4123 this = [] -4124 while True: -4125 # The current token might be multiple words -4126 curr = self._curr.text.upper() -4127 key = curr.split(" ") -4128 this.append(curr) -4129 self._advance() -4130 result, trie = in_trie(trie, key) -4131 if result == 0: -4132 break -4133 if result == 2: -4134 subparser = parsers[" ".join(this)] -4135 return subparser -4136 self._retreat(index) -4137 return None -4138 -4139 def _match(self, token_type, advance=True): -4140 if not self._curr: -4141 return None +4109 if self._match_pair(TokenType.DROP, TokenType.DEFAULT): +4110 return self.expression(exp.AlterColumn, this=column, drop=True) +4111 if self._match_pair(TokenType.SET, TokenType.DEFAULT): +4112 return self.expression(exp.AlterColumn, this=column, default=self._parse_conjunction()) +4113 +4114 self._match_text_seq("SET", "DATA") +4115 return self.expression( +4116 exp.AlterColumn, +4117 this=column, +4118 dtype=self._match_text_seq("TYPE") and self._parse_types(), +4119 collate=self._match(TokenType.COLLATE) and self._parse_term(), +4120 using=self._match(TokenType.USING) and self._parse_conjunction(), +4121 ) +4122 +4123 def _parse_alter_table_drop(self) -> t.List[t.Optional[exp.Expression]]: +4124 index = self._index - 1 +4125 +4126 partition_exists = self._parse_exists() +4127 if self._match(TokenType.PARTITION, advance=False): +4128 return self._parse_csv(lambda: self._parse_drop_partition(exists=partition_exists)) +4129 +4130 self._retreat(index) +4131 return self._parse_csv(self._parse_drop_column) +4132 +4133 def _parse_alter_table_rename(self) -> exp.Expression: +4134 self._match_text_seq("TO") +4135 return self.expression(exp.RenameTable, this=self._parse_table(schema=True)) +4136 +4137 def _parse_alter(self) -> t.Optional[exp.Expression]: +4138 start = self._prev +4139 +4140 if not self._match(TokenType.TABLE): +4141 return self._parse_as_command(start) 4142 -4143 if self._curr.token_type == token_type: -4144 if advance: -4145 self._advance() -4146 return True -4147 -4148 return None +4143 exists = self._parse_exists() +4144 this = self._parse_table(schema=True) +4145 +4146 if self._next: +4147 self._advance() +4148 parser = self.ALTER_PARSERS.get(self._prev.text.upper()) if self._prev else None 4149 -4150 def _match_set(self, types, advance=True): -4151 if not self._curr: -4152 return None -4153 -4154 if self._curr.token_type in types: -4155 if advance: -4156 self._advance() -4157 return True -4158 -4159 return None -4160 -4161 def _match_pair(self, token_type_a, token_type_b, advance=True): -4162 if not self._curr or not self._next: -4163 return None -4164 -4165 if self._curr.token_type == token_type_a and self._next.token_type == token_type_b: -4166 if advance: -4167 self._advance(2) -4168 return True -4169 -4170 return None +4150 if parser: +4151 actions = ensure_list(parser(self)) +4152 +4153 if not self._curr: +4154 return self.expression( +4155 exp.AlterTable, +4156 this=this, +4157 exists=exists, +4158 actions=actions, +4159 ) +4160 return self._parse_as_command(start) +4161 +4162 def _parse_merge(self) -> exp.Expression: +4163 self._match(TokenType.INTO) +4164 target = self._parse_table() +4165 +4166 self._match(TokenType.USING) +4167 using = self._parse_table() +4168 +4169 self._match(TokenType.ON) +4170 on = self._parse_conjunction() 4171 -4172 def _match_l_paren(self, expression=None): -4173 if not self._match(TokenType.L_PAREN): -4174 self.raise_error("Expecting (") -4175 if expression and self._prev_comments: -4176 expression.comments = self._prev_comments -4177 -4178 def _match_r_paren(self, expression=None): -4179 if not self._match(TokenType.R_PAREN): -4180 self.raise_error("Expecting )") -4181 if expression and self._prev_comments: -4182 expression.comments = self._prev_comments -4183 -4184 def _match_texts(self, texts, advance=True): -4185 if self._curr and self._curr.text.upper() in texts: -4186 if advance: -4187 self._advance() -4188 return True -4189 return False -4190 -4191 def _match_text_seq(self, *texts, advance=True): -4192 index = self._index -4193 for text in texts: -4194 if self._curr and self._curr.text.upper() == text: -4195 self._advance() -4196 else: -4197 self._retreat(index) -4198 return False -4199 -4200 if not advance: -4201 self._retreat(index) -4202 -4203 return True -4204 -4205 def _replace_columns_with_dots(self, this): -4206 if isinstance(this, exp.Dot): -4207 exp.replace_children(this, self._replace_columns_with_dots) -4208 elif isinstance(this, exp.Column): -4209 exp.replace_children(this, self._replace_columns_with_dots) -4210 table = this.args.get("table") -4211 this = ( -4212 self.expression(exp.Dot, this=table, expression=this.this) -4213 if table -4214 else self.expression(exp.Var, this=this.name) -4215 ) -4216 elif isinstance(this, exp.Identifier): -4217 this = self.expression(exp.Var, this=this.name) -4218 return this +4172 whens = [] +4173 while self._match(TokenType.WHEN): +4174 matched = not self._match(TokenType.NOT) +4175 self._match_text_seq("MATCHED") +4176 source = ( +4177 False +4178 if self._match_text_seq("BY", "TARGET") +4179 else self._match_text_seq("BY", "SOURCE") +4180 ) +4181 condition = self._parse_conjunction() if self._match(TokenType.AND) else None +4182 +4183 self._match(TokenType.THEN) +4184 +4185 if self._match(TokenType.INSERT): +4186 _this = self._parse_star() +4187 if _this: +4188 then: t.Optional[exp.Expression] = self.expression(exp.Insert, this=_this) +4189 else: +4190 then = self.expression( +4191 exp.Insert, +4192 this=self._parse_value(), +4193 expression=self._match(TokenType.VALUES) and self._parse_value(), +4194 ) +4195 elif self._match(TokenType.UPDATE): +4196 expressions = self._parse_star() +4197 if expressions: +4198 then = self.expression(exp.Update, expressions=expressions) +4199 else: +4200 then = self.expression( +4201 exp.Update, +4202 expressions=self._match(TokenType.SET) +4203 and self._parse_csv(self._parse_equality), +4204 ) +4205 elif self._match(TokenType.DELETE): +4206 then = self.expression(exp.Var, this=self._prev.text) +4207 else: +4208 then = None +4209 +4210 whens.append( +4211 self.expression( +4212 exp.When, +4213 matched=matched, +4214 source=source, +4215 condition=condition, +4216 then=then, +4217 ) +4218 ) 4219 -4220 def _replace_lambda(self, node, lambda_variables): -4221 for column in node.find_all(exp.Column): -4222 if column.parts[0].name in lambda_variables: -4223 dot_or_id = column.to_dot() if column.table else column.this -4224 parent = column.parent -4225 -4226 while isinstance(parent, exp.Dot): -4227 if not isinstance(parent.parent, exp.Dot): -4228 parent.replace(dot_or_id) -4229 break -4230 parent = parent.parent -4231 else: -4232 column.replace(dot_or_id) -4233 return node +4220 return self.expression( +4221 exp.Merge, +4222 this=target, +4223 using=using, +4224 on=on, +4225 expressions=whens, +4226 ) +4227 +4228 def _parse_show(self) -> t.Optional[exp.Expression]: +4229 parser = self._find_parser(self.SHOW_PARSERS, self._show_trie) # type: ignore +4230 if parser: +4231 return parser(self) +4232 self._advance() +4233 return self.expression(exp.Show, this=self._prev.text.upper()) +4234 +4235 def _parse_set_item_assignment( +4236 self, kind: t.Optional[str] = None +4237 ) -> t.Optional[exp.Expression]: +4238 index = self._index +4239 +4240 if kind in {"GLOBAL", "SESSION"} and self._match_text_seq("TRANSACTION"): +4241 return self._parse_set_transaction(global_=kind == "GLOBAL") +4242 +4243 left = self._parse_primary() or self._parse_id_var() +4244 +4245 if not self._match_texts(("=", "TO")): +4246 self._retreat(index) +4247 return None +4248 +4249 right = self._parse_statement() or self._parse_id_var() +4250 this = self.expression( +4251 exp.EQ, +4252 this=left, +4253 expression=right, +4254 ) +4255 +4256 return self.expression( +4257 exp.SetItem, +4258 this=this, +4259 kind=kind, +4260 ) +4261 +4262 def _parse_set_transaction(self, global_: bool = False) -> exp.Expression: +4263 self._match_text_seq("TRANSACTION") +4264 characteristics = self._parse_csv( +4265 lambda: self._parse_var_from_options(self.TRANSACTION_CHARACTERISTICS) +4266 ) +4267 return self.expression( +4268 exp.SetItem, +4269 expressions=characteristics, +4270 kind="TRANSACTION", +4271 **{"global": global_}, # type: ignore +4272 ) +4273 +4274 def _parse_set_item(self) -> t.Optional[exp.Expression]: +4275 parser = self._find_parser(self.SET_PARSERS, self._set_trie) # type: ignore +4276 return parser(self) if parser else self._parse_set_item_assignment(kind=None) +4277 +4278 def _parse_set(self) -> exp.Expression: +4279 index = self._index +4280 set_ = self.expression(exp.Set, expressions=self._parse_csv(self._parse_set_item)) +4281 +4282 if self._curr: +4283 self._retreat(index) +4284 return self._parse_as_command(self._prev) +4285 +4286 return set_ +4287 +4288 def _parse_var_from_options(self, options: t.Collection[str]) -> t.Optional[exp.Expression]: +4289 for option in options: +4290 if self._match_text_seq(*option.split(" ")): +4291 return exp.Var(this=option) +4292 return None +4293 +4294 def _parse_as_command(self, start: Token) -> exp.Command: +4295 while self._curr: +4296 self._advance() +4297 text = self._find_sql(start, self._prev) +4298 size = len(start.text) +4299 return exp.Command(this=text[:size], expression=text[size:]) +4300 +4301 def _find_parser( +4302 self, parsers: t.Dict[str, t.Callable], trie: t.Dict +4303 ) -> t.Optional[t.Callable]: +4304 if not self._curr: +4305 return None +4306 +4307 index = self._index +4308 this = [] +4309 while True: +4310 # The current token might be multiple words +4311 curr = self._curr.text.upper() +4312 key = curr.split(" ") +4313 this.append(curr) +4314 self._advance() +4315 result, trie = in_trie(trie, key) +4316 if result == 0: +4317 break +4318 if result == 2: +4319 subparser = parsers[" ".join(this)] +4320 return subparser +4321 self._retreat(index) +4322 return None +4323 +4324 def _match(self, token_type, advance=True): +4325 if not self._curr: +4326 return None +4327 +4328 if self._curr.token_type == token_type: +4329 if advance: +4330 self._advance() +4331 return True +4332 +4333 return None +4334 +4335 def _match_set(self, types, advance=True): +4336 if not self._curr: +4337 return None +4338 +4339 if self._curr.token_type in types: +4340 if advance: +4341 self._advance() +4342 return True +4343 +4344 return None +4345 +4346 def _match_pair(self, token_type_a, token_type_b, advance=True): +4347 if not self._curr or not self._next: +4348 return None +4349 +4350 if self._curr.token_type == token_type_a and self._next.token_type == token_type_b: +4351 if advance: +4352 self._advance(2) +4353 return True +4354 +4355 return None +4356 +4357 def _match_l_paren(self, expression=None): +4358 if not self._match(TokenType.L_PAREN): +4359 self.raise_error("Expecting (") +4360 if expression and self._prev_comments: +4361 expression.comments = self._prev_comments +4362 +4363 def _match_r_paren(self, expression=None): +4364 if not self._match(TokenType.R_PAREN): +4365 self.raise_error("Expecting )") +4366 if expression and self._prev_comments: +4367 expression.comments = self._prev_comments +4368 +4369 def _match_texts(self, texts, advance=True): +4370 if self._curr and self._curr.text.upper() in texts: +4371 if advance: +4372 self._advance() +4373 return True +4374 return False +4375 +4376 def _match_text_seq(self, *texts, advance=True): +4377 index = self._index +4378 for text in texts: +4379 if self._curr and self._curr.text.upper() == text: +4380 self._advance() +4381 else: +4382 self._retreat(index) +4383 return False +4384 +4385 if not advance: +4386 self._retreat(index) +4387 +4388 return True +4389 +4390 def _replace_columns_with_dots(self, this): +4391 if isinstance(this, exp.Dot): +4392 exp.replace_children(this, self._replace_columns_with_dots) +4393 elif isinstance(this, exp.Column): +4394 exp.replace_children(this, self._replace_columns_with_dots) +4395 table = this.args.get("table") +4396 this = ( +4397 self.expression(exp.Dot, this=table, expression=this.this) +4398 if table +4399 else self.expression(exp.Var, this=this.name) +4400 ) +4401 elif isinstance(this, exp.Identifier): +4402 this = self.expression(exp.Var, this=this.name) +4403 return this +4404 +4405 def _replace_lambda(self, node, lambda_variables): +4406 for column in node.find_all(exp.Column): +4407 if column.parts[0].name in lambda_variables: +4408 dot_or_id = column.to_dot() if column.table else column.this +4409 parent = column.parent +4410 +4411 while isinstance(parent, exp.Dot): +4412 if not isinstance(parent.parent, exp.Dot): +4413 parent.replace(dot_or_id) +4414 break +4415 parent = parent.parent +4416 else: +4417 if column is node: +4418 node = dot_or_id +4419 else: +4420 column.replace(dot_or_id) +4421 return node
    @@ -4340,16 +4528,19 @@ -
    23def parse_var_map(args: t.Sequence) -> exp.Expression:
    -24    keys = []
    -25    values = []
    -26    for i in range(0, len(args), 2):
    -27        keys.append(args[i])
    -28        values.append(args[i + 1])
    -29    return exp.VarMap(
    -30        keys=exp.Array(expressions=keys),
    -31        values=exp.Array(expressions=values),
    -32    )
    +            
    25def parse_var_map(args: t.Sequence) -> exp.Expression:
    +26    if len(args) == 1 and args[0].is_star:
    +27        return exp.StarMap(this=args[0])
    +28
    +29    keys = []
    +30    values = []
    +31    for i in range(0, len(args), 2):
    +32        keys.append(args[i])
    +33        values.append(args[i + 1])
    +34    return exp.VarMap(
    +35        keys=exp.Array(expressions=keys),
    +36        values=exp.Array(expressions=values),
    +37    )
     
    @@ -4367,9 +4558,9 @@
    -
    35def parse_like(args):
    -36    like = exp.Like(this=seq_get(args, 1), expression=seq_get(args, 0))
    -37    return exp.Escape(this=like, expression=seq_get(args, 2)) if len(args) > 2 else like
    +            
    40def parse_like(args):
    +41    like = exp.Like(this=seq_get(args, 1), expression=seq_get(args, 0))
    +42    return exp.Escape(this=like, expression=seq_get(args, 2)) if len(args) > 2 else like
     
    @@ -4387,12 +4578,12 @@
    -
    40def binary_range_parser(
    -41    expr_type: t.Type[exp.Expression],
    -42) -> t.Callable[[Parser, t.Optional[exp.Expression]], t.Optional[exp.Expression]]:
    -43    return lambda self, this: self._parse_escape(
    -44        self.expression(expr_type, this=this, expression=self._parse_bitwise())
    -45    )
    +            
    45def binary_range_parser(
    +46    expr_type: t.Type[exp.Expression],
    +47) -> t.Callable[[Parser, t.Optional[exp.Expression]], t.Optional[exp.Expression]]:
    +48    return lambda self, this: self._parse_escape(
    +49        self.expression(expr_type, this=this, expression=self._parse_bitwise())
    +50    )
     
    @@ -4410,4184 +4601,4367 @@
    -
      57class Parser(metaclass=_Parser):
    -  58    """
    -  59    Parser consumes a list of tokens produced by the `sqlglot.tokens.Tokenizer` and produces
    -  60    a parsed syntax tree.
    -  61
    -  62    Args:
    -  63        error_level: the desired error level.
    -  64            Default: ErrorLevel.RAISE
    -  65        error_message_context: determines the amount of context to capture from a
    -  66            query string when displaying the error message (in number of characters).
    -  67            Default: 50.
    -  68        index_offset: Index offset for arrays eg ARRAY[0] vs ARRAY[1] as the head of a list.
    -  69            Default: 0
    -  70        alias_post_tablesample: If the table alias comes after tablesample.
    -  71            Default: False
    -  72        max_errors: Maximum number of error messages to include in a raised ParseError.
    -  73            This is only relevant if error_level is ErrorLevel.RAISE.
    -  74            Default: 3
    -  75        null_ordering: Indicates the default null ordering method to use if not explicitly set.
    -  76            Options are "nulls_are_small", "nulls_are_large", "nulls_are_last".
    -  77            Default: "nulls_are_small"
    -  78    """
    -  79
    -  80    FUNCTIONS: t.Dict[str, t.Callable] = {
    -  81        **{name: f.from_arg_list for f in exp.ALL_FUNCTIONS for name in f.sql_names()},
    -  82        "DATE_TO_DATE_STR": lambda args: exp.Cast(
    -  83            this=seq_get(args, 0),
    -  84            to=exp.DataType(this=exp.DataType.Type.TEXT),
    -  85        ),
    -  86        "GLOB": lambda args: exp.Glob(this=seq_get(args, 1), expression=seq_get(args, 0)),
    -  87        "IFNULL": exp.Coalesce.from_arg_list,
    -  88        "LIKE": parse_like,
    -  89        "TIME_TO_TIME_STR": lambda args: exp.Cast(
    -  90            this=seq_get(args, 0),
    -  91            to=exp.DataType(this=exp.DataType.Type.TEXT),
    -  92        ),
    -  93        "TS_OR_DS_TO_DATE_STR": lambda args: exp.Substring(
    -  94            this=exp.Cast(
    -  95                this=seq_get(args, 0),
    -  96                to=exp.DataType(this=exp.DataType.Type.TEXT),
    -  97            ),
    -  98            start=exp.Literal.number(1),
    -  99            length=exp.Literal.number(10),
    - 100        ),
    - 101        "VAR_MAP": parse_var_map,
    - 102    }
    - 103
    - 104    NO_PAREN_FUNCTIONS = {
    - 105        TokenType.CURRENT_DATE: exp.CurrentDate,
    - 106        TokenType.CURRENT_DATETIME: exp.CurrentDate,
    - 107        TokenType.CURRENT_TIME: exp.CurrentTime,
    - 108        TokenType.CURRENT_TIMESTAMP: exp.CurrentTimestamp,
    - 109    }
    - 110
    - 111    NESTED_TYPE_TOKENS = {
    - 112        TokenType.ARRAY,
    - 113        TokenType.MAP,
    - 114        TokenType.STRUCT,
    - 115        TokenType.NULLABLE,
    - 116    }
    - 117
    - 118    TYPE_TOKENS = {
    - 119        TokenType.BIT,
    - 120        TokenType.BOOLEAN,
    - 121        TokenType.TINYINT,
    - 122        TokenType.SMALLINT,
    - 123        TokenType.INT,
    - 124        TokenType.BIGINT,
    - 125        TokenType.FLOAT,
    - 126        TokenType.DOUBLE,
    - 127        TokenType.CHAR,
    - 128        TokenType.NCHAR,
    - 129        TokenType.VARCHAR,
    - 130        TokenType.NVARCHAR,
    - 131        TokenType.TEXT,
    - 132        TokenType.MEDIUMTEXT,
    - 133        TokenType.LONGTEXT,
    - 134        TokenType.MEDIUMBLOB,
    - 135        TokenType.LONGBLOB,
    - 136        TokenType.BINARY,
    - 137        TokenType.VARBINARY,
    - 138        TokenType.JSON,
    - 139        TokenType.JSONB,
    - 140        TokenType.INTERVAL,
    - 141        TokenType.TIME,
    - 142        TokenType.TIMESTAMP,
    - 143        TokenType.TIMESTAMPTZ,
    - 144        TokenType.TIMESTAMPLTZ,
    - 145        TokenType.DATETIME,
    - 146        TokenType.DATE,
    - 147        TokenType.DECIMAL,
    - 148        TokenType.UUID,
    - 149        TokenType.GEOGRAPHY,
    - 150        TokenType.GEOMETRY,
    - 151        TokenType.HLLSKETCH,
    - 152        TokenType.HSTORE,
    - 153        TokenType.PSEUDO_TYPE,
    - 154        TokenType.SUPER,
    - 155        TokenType.SERIAL,
    - 156        TokenType.SMALLSERIAL,
    - 157        TokenType.BIGSERIAL,
    - 158        TokenType.XML,
    - 159        TokenType.UNIQUEIDENTIFIER,
    - 160        TokenType.MONEY,
    - 161        TokenType.SMALLMONEY,
    - 162        TokenType.ROWVERSION,
    - 163        TokenType.IMAGE,
    - 164        TokenType.VARIANT,
    - 165        TokenType.OBJECT,
    - 166        TokenType.INET,
    - 167        *NESTED_TYPE_TOKENS,
    - 168    }
    - 169
    - 170    SUBQUERY_PREDICATES = {
    - 171        TokenType.ANY: exp.Any,
    - 172        TokenType.ALL: exp.All,
    - 173        TokenType.EXISTS: exp.Exists,
    - 174        TokenType.SOME: exp.Any,
    - 175    }
    - 176
    - 177    RESERVED_KEYWORDS = {*Tokenizer.SINGLE_TOKENS.values(), TokenType.SELECT}
    +            
      62class Parser(metaclass=_Parser):
    +  63    """
    +  64    Parser consumes a list of tokens produced by the `sqlglot.tokens.Tokenizer` and produces
    +  65    a parsed syntax tree.
    +  66
    +  67    Args:
    +  68        error_level: the desired error level.
    +  69            Default: ErrorLevel.RAISE
    +  70        error_message_context: determines the amount of context to capture from a
    +  71            query string when displaying the error message (in number of characters).
    +  72            Default: 50.
    +  73        index_offset: Index offset for arrays eg ARRAY[0] vs ARRAY[1] as the head of a list.
    +  74            Default: 0
    +  75        alias_post_tablesample: If the table alias comes after tablesample.
    +  76            Default: False
    +  77        max_errors: Maximum number of error messages to include in a raised ParseError.
    +  78            This is only relevant if error_level is ErrorLevel.RAISE.
    +  79            Default: 3
    +  80        null_ordering: Indicates the default null ordering method to use if not explicitly set.
    +  81            Options are "nulls_are_small", "nulls_are_large", "nulls_are_last".
    +  82            Default: "nulls_are_small"
    +  83    """
    +  84
    +  85    FUNCTIONS: t.Dict[str, t.Callable] = {
    +  86        **{name: f.from_arg_list for f in exp.ALL_FUNCTIONS for name in f.sql_names()},
    +  87        "DATE_TO_DATE_STR": lambda args: exp.Cast(
    +  88            this=seq_get(args, 0),
    +  89            to=exp.DataType(this=exp.DataType.Type.TEXT),
    +  90        ),
    +  91        "GLOB": lambda args: exp.Glob(this=seq_get(args, 1), expression=seq_get(args, 0)),
    +  92        "IFNULL": exp.Coalesce.from_arg_list,
    +  93        "LIKE": parse_like,
    +  94        "TIME_TO_TIME_STR": lambda args: exp.Cast(
    +  95            this=seq_get(args, 0),
    +  96            to=exp.DataType(this=exp.DataType.Type.TEXT),
    +  97        ),
    +  98        "TS_OR_DS_TO_DATE_STR": lambda args: exp.Substring(
    +  99            this=exp.Cast(
    + 100                this=seq_get(args, 0),
    + 101                to=exp.DataType(this=exp.DataType.Type.TEXT),
    + 102            ),
    + 103            start=exp.Literal.number(1),
    + 104            length=exp.Literal.number(10),
    + 105        ),
    + 106        "VAR_MAP": parse_var_map,
    + 107    }
    + 108
    + 109    NO_PAREN_FUNCTIONS = {
    + 110        TokenType.CURRENT_DATE: exp.CurrentDate,
    + 111        TokenType.CURRENT_DATETIME: exp.CurrentDate,
    + 112        TokenType.CURRENT_TIME: exp.CurrentTime,
    + 113        TokenType.CURRENT_TIMESTAMP: exp.CurrentTimestamp,
    + 114        TokenType.CURRENT_USER: exp.CurrentUser,
    + 115    }
    + 116
    + 117    JOIN_HINTS: t.Set[str] = set()
    + 118
    + 119    NESTED_TYPE_TOKENS = {
    + 120        TokenType.ARRAY,
    + 121        TokenType.MAP,
    + 122        TokenType.STRUCT,
    + 123        TokenType.NULLABLE,
    + 124    }
    + 125
    + 126    TYPE_TOKENS = {
    + 127        TokenType.BIT,
    + 128        TokenType.BOOLEAN,
    + 129        TokenType.TINYINT,
    + 130        TokenType.SMALLINT,
    + 131        TokenType.INT,
    + 132        TokenType.BIGINT,
    + 133        TokenType.FLOAT,
    + 134        TokenType.DOUBLE,
    + 135        TokenType.CHAR,
    + 136        TokenType.NCHAR,
    + 137        TokenType.VARCHAR,
    + 138        TokenType.NVARCHAR,
    + 139        TokenType.TEXT,
    + 140        TokenType.MEDIUMTEXT,
    + 141        TokenType.LONGTEXT,
    + 142        TokenType.MEDIUMBLOB,
    + 143        TokenType.LONGBLOB,
    + 144        TokenType.BINARY,
    + 145        TokenType.VARBINARY,
    + 146        TokenType.JSON,
    + 147        TokenType.JSONB,
    + 148        TokenType.INTERVAL,
    + 149        TokenType.TIME,
    + 150        TokenType.TIMESTAMP,
    + 151        TokenType.TIMESTAMPTZ,
    + 152        TokenType.TIMESTAMPLTZ,
    + 153        TokenType.DATETIME,
    + 154        TokenType.DATE,
    + 155        TokenType.DECIMAL,
    + 156        TokenType.BIGDECIMAL,
    + 157        TokenType.UUID,
    + 158        TokenType.GEOGRAPHY,
    + 159        TokenType.GEOMETRY,
    + 160        TokenType.HLLSKETCH,
    + 161        TokenType.HSTORE,
    + 162        TokenType.PSEUDO_TYPE,
    + 163        TokenType.SUPER,
    + 164        TokenType.SERIAL,
    + 165        TokenType.SMALLSERIAL,
    + 166        TokenType.BIGSERIAL,
    + 167        TokenType.XML,
    + 168        TokenType.UNIQUEIDENTIFIER,
    + 169        TokenType.MONEY,
    + 170        TokenType.SMALLMONEY,
    + 171        TokenType.ROWVERSION,
    + 172        TokenType.IMAGE,
    + 173        TokenType.VARIANT,
    + 174        TokenType.OBJECT,
    + 175        TokenType.INET,
    + 176        *NESTED_TYPE_TOKENS,
    + 177    }
      178
    - 179    DB_CREATABLES = {
    - 180        TokenType.DATABASE,
    - 181        TokenType.SCHEMA,
    - 182        TokenType.TABLE,
    - 183        TokenType.VIEW,
    + 179    SUBQUERY_PREDICATES = {
    + 180        TokenType.ANY: exp.Any,
    + 181        TokenType.ALL: exp.All,
    + 182        TokenType.EXISTS: exp.Exists,
    + 183        TokenType.SOME: exp.Any,
      184    }
      185
    - 186    CREATABLES = {
    - 187        TokenType.COLUMN,
    - 188        TokenType.FUNCTION,
    - 189        TokenType.INDEX,
    - 190        TokenType.PROCEDURE,
    - 191        *DB_CREATABLES,
    - 192    }
    - 193
    - 194    ID_VAR_TOKENS = {
    - 195        TokenType.VAR,
    - 196        TokenType.ANTI,
    - 197        TokenType.APPLY,
    - 198        TokenType.AUTO_INCREMENT,
    - 199        TokenType.BEGIN,
    - 200        TokenType.BOTH,
    - 201        TokenType.BUCKET,
    - 202        TokenType.CACHE,
    - 203        TokenType.CASCADE,
    - 204        TokenType.COLLATE,
    - 205        TokenType.COMMAND,
    - 206        TokenType.COMMENT,
    - 207        TokenType.COMMIT,
    - 208        TokenType.COMPOUND,
    - 209        TokenType.CONSTRAINT,
    - 210        TokenType.DEFAULT,
    - 211        TokenType.DELETE,
    - 212        TokenType.DESCRIBE,
    - 213        TokenType.DIV,
    - 214        TokenType.END,
    - 215        TokenType.EXECUTE,
    - 216        TokenType.ESCAPE,
    - 217        TokenType.FALSE,
    - 218        TokenType.FIRST,
    - 219        TokenType.FILTER,
    - 220        TokenType.FOLLOWING,
    - 221        TokenType.FORMAT,
    - 222        TokenType.FULL,
    - 223        TokenType.IF,
    - 224        TokenType.ISNULL,
    - 225        TokenType.INTERVAL,
    - 226        TokenType.LAZY,
    - 227        TokenType.LEADING,
    - 228        TokenType.LEFT,
    - 229        TokenType.LOCAL,
    - 230        TokenType.MATERIALIZED,
    - 231        TokenType.MERGE,
    - 232        TokenType.NATURAL,
    - 233        TokenType.NEXT,
    - 234        TokenType.OFFSET,
    - 235        TokenType.ONLY,
    - 236        TokenType.OPTIONS,
    - 237        TokenType.ORDINALITY,
    - 238        TokenType.PARTITION,
    - 239        TokenType.PERCENT,
    - 240        TokenType.PIVOT,
    - 241        TokenType.PRAGMA,
    - 242        TokenType.PRECEDING,
    - 243        TokenType.RANGE,
    - 244        TokenType.REFERENCES,
    - 245        TokenType.RIGHT,
    - 246        TokenType.ROW,
    - 247        TokenType.ROWS,
    - 248        TokenType.SEED,
    - 249        TokenType.SEMI,
    - 250        TokenType.SET,
    - 251        TokenType.SHOW,
    - 252        TokenType.SORTKEY,
    - 253        TokenType.TEMPORARY,
    - 254        TokenType.TOP,
    - 255        TokenType.TRAILING,
    - 256        TokenType.TRUE,
    - 257        TokenType.UNBOUNDED,
    - 258        TokenType.UNIQUE,
    - 259        TokenType.UNLOGGED,
    - 260        TokenType.UNPIVOT,
    - 261        TokenType.VOLATILE,
    - 262        TokenType.WINDOW,
    - 263        *CREATABLES,
    - 264        *SUBQUERY_PREDICATES,
    - 265        *TYPE_TOKENS,
    - 266        *NO_PAREN_FUNCTIONS,
    - 267    }
    - 268
    - 269    TABLE_ALIAS_TOKENS = ID_VAR_TOKENS - {
    - 270        TokenType.APPLY,
    - 271        TokenType.FULL,
    - 272        TokenType.LEFT,
    - 273        TokenType.NATURAL,
    - 274        TokenType.OFFSET,
    - 275        TokenType.RIGHT,
    - 276        TokenType.WINDOW,
    - 277    }
    - 278
    - 279    UPDATE_ALIAS_TOKENS = TABLE_ALIAS_TOKENS - {TokenType.SET}
    - 280
    - 281    TRIM_TYPES = {TokenType.LEADING, TokenType.TRAILING, TokenType.BOTH}
    - 282
    - 283    FUNC_TOKENS = {
    - 284        TokenType.COMMAND,
    - 285        TokenType.CURRENT_DATE,
    - 286        TokenType.CURRENT_DATETIME,
    - 287        TokenType.CURRENT_TIMESTAMP,
    - 288        TokenType.CURRENT_TIME,
    - 289        TokenType.FILTER,
    - 290        TokenType.FIRST,
    - 291        TokenType.FORMAT,
    - 292        TokenType.GLOB,
    - 293        TokenType.IDENTIFIER,
    - 294        TokenType.INDEX,
    - 295        TokenType.ISNULL,
    - 296        TokenType.ILIKE,
    - 297        TokenType.LIKE,
    - 298        TokenType.MERGE,
    - 299        TokenType.OFFSET,
    - 300        TokenType.PRIMARY_KEY,
    - 301        TokenType.REPLACE,
    - 302        TokenType.ROW,
    - 303        TokenType.UNNEST,
    - 304        TokenType.VAR,
    - 305        TokenType.LEFT,
    - 306        TokenType.RIGHT,
    - 307        TokenType.DATE,
    - 308        TokenType.DATETIME,
    - 309        TokenType.TABLE,
    - 310        TokenType.TIMESTAMP,
    - 311        TokenType.TIMESTAMPTZ,
    - 312        TokenType.WINDOW,
    - 313        *TYPE_TOKENS,
    - 314        *SUBQUERY_PREDICATES,
    - 315    }
    - 316
    - 317    CONJUNCTION = {
    - 318        TokenType.AND: exp.And,
    - 319        TokenType.OR: exp.Or,
    - 320    }
    - 321
    - 322    EQUALITY = {
    - 323        TokenType.EQ: exp.EQ,
    - 324        TokenType.NEQ: exp.NEQ,
    - 325        TokenType.NULLSAFE_EQ: exp.NullSafeEQ,
    - 326    }
    - 327
    - 328    COMPARISON = {
    - 329        TokenType.GT: exp.GT,
    - 330        TokenType.GTE: exp.GTE,
    - 331        TokenType.LT: exp.LT,
    - 332        TokenType.LTE: exp.LTE,
    - 333    }
    - 334
    - 335    BITWISE = {
    - 336        TokenType.AMP: exp.BitwiseAnd,
    - 337        TokenType.CARET: exp.BitwiseXor,
    - 338        TokenType.PIPE: exp.BitwiseOr,
    - 339        TokenType.DPIPE: exp.DPipe,
    - 340    }
    - 341
    - 342    TERM = {
    - 343        TokenType.DASH: exp.Sub,
    - 344        TokenType.PLUS: exp.Add,
    - 345        TokenType.MOD: exp.Mod,
    - 346        TokenType.COLLATE: exp.Collate,
    - 347    }
    - 348
    - 349    FACTOR = {
    - 350        TokenType.DIV: exp.IntDiv,
    - 351        TokenType.LR_ARROW: exp.Distance,
    - 352        TokenType.SLASH: exp.Div,
    - 353        TokenType.STAR: exp.Mul,
    - 354    }
    - 355
    - 356    TIMESTAMPS = {
    - 357        TokenType.TIME,
    - 358        TokenType.TIMESTAMP,
    - 359        TokenType.TIMESTAMPTZ,
    - 360        TokenType.TIMESTAMPLTZ,
    - 361    }
    - 362
    - 363    SET_OPERATIONS = {
    - 364        TokenType.UNION,
    - 365        TokenType.INTERSECT,
    - 366        TokenType.EXCEPT,
    - 367    }
    - 368
    - 369    JOIN_SIDES = {
    - 370        TokenType.LEFT,
    - 371        TokenType.RIGHT,
    - 372        TokenType.FULL,
    - 373    }
    - 374
    - 375    JOIN_KINDS = {
    - 376        TokenType.INNER,
    - 377        TokenType.OUTER,
    - 378        TokenType.CROSS,
    - 379        TokenType.SEMI,
    - 380        TokenType.ANTI,
    - 381    }
    - 382
    - 383    LAMBDAS = {
    - 384        TokenType.ARROW: lambda self, expressions: self.expression(
    - 385            exp.Lambda,
    - 386            this=self._replace_lambda(
    - 387                self._parse_conjunction(),
    - 388                {node.name for node in expressions},
    - 389            ),
    - 390            expressions=expressions,
    - 391        ),
    - 392        TokenType.FARROW: lambda self, expressions: self.expression(
    - 393            exp.Kwarg,
    - 394            this=exp.Var(this=expressions[0].name),
    - 395            expression=self._parse_conjunction(),
    - 396        ),
    + 186    RESERVED_KEYWORDS = {*Tokenizer.SINGLE_TOKENS.values(), TokenType.SELECT}
    + 187
    + 188    DB_CREATABLES = {
    + 189        TokenType.DATABASE,
    + 190        TokenType.SCHEMA,
    + 191        TokenType.TABLE,
    + 192        TokenType.VIEW,
    + 193    }
    + 194
    + 195    CREATABLES = {
    + 196        TokenType.COLUMN,
    + 197        TokenType.FUNCTION,
    + 198        TokenType.INDEX,
    + 199        TokenType.PROCEDURE,
    + 200        *DB_CREATABLES,
    + 201    }
    + 202
    + 203    ID_VAR_TOKENS = {
    + 204        TokenType.VAR,
    + 205        TokenType.ANTI,
    + 206        TokenType.APPLY,
    + 207        TokenType.AUTO_INCREMENT,
    + 208        TokenType.BEGIN,
    + 209        TokenType.BOTH,
    + 210        TokenType.BUCKET,
    + 211        TokenType.CACHE,
    + 212        TokenType.CASCADE,
    + 213        TokenType.COLLATE,
    + 214        TokenType.COMMAND,
    + 215        TokenType.COMMENT,
    + 216        TokenType.COMMIT,
    + 217        TokenType.COMPOUND,
    + 218        TokenType.CONSTRAINT,
    + 219        TokenType.DEFAULT,
    + 220        TokenType.DELETE,
    + 221        TokenType.DESCRIBE,
    + 222        TokenType.DIV,
    + 223        TokenType.END,
    + 224        TokenType.EXECUTE,
    + 225        TokenType.ESCAPE,
    + 226        TokenType.FALSE,
    + 227        TokenType.FIRST,
    + 228        TokenType.FILTER,
    + 229        TokenType.FOLLOWING,
    + 230        TokenType.FORMAT,
    + 231        TokenType.FULL,
    + 232        TokenType.IF,
    + 233        TokenType.IS,
    + 234        TokenType.ISNULL,
    + 235        TokenType.INTERVAL,
    + 236        TokenType.LAZY,
    + 237        TokenType.LEADING,
    + 238        TokenType.LEFT,
    + 239        TokenType.LOCAL,
    + 240        TokenType.MATERIALIZED,
    + 241        TokenType.MERGE,
    + 242        TokenType.NATURAL,
    + 243        TokenType.NEXT,
    + 244        TokenType.OFFSET,
    + 245        TokenType.ONLY,
    + 246        TokenType.OPTIONS,
    + 247        TokenType.ORDINALITY,
    + 248        TokenType.OVERWRITE,
    + 249        TokenType.PARTITION,
    + 250        TokenType.PERCENT,
    + 251        TokenType.PIVOT,
    + 252        TokenType.PRAGMA,
    + 253        TokenType.PRECEDING,
    + 254        TokenType.RANGE,
    + 255        TokenType.REFERENCES,
    + 256        TokenType.RIGHT,
    + 257        TokenType.ROW,
    + 258        TokenType.ROWS,
    + 259        TokenType.SEED,
    + 260        TokenType.SEMI,
    + 261        TokenType.SET,
    + 262        TokenType.SHOW,
    + 263        TokenType.SORTKEY,
    + 264        TokenType.TEMPORARY,
    + 265        TokenType.TOP,
    + 266        TokenType.TRAILING,
    + 267        TokenType.TRUE,
    + 268        TokenType.UNBOUNDED,
    + 269        TokenType.UNIQUE,
    + 270        TokenType.UNLOGGED,
    + 271        TokenType.UNPIVOT,
    + 272        TokenType.VOLATILE,
    + 273        TokenType.WINDOW,
    + 274        *CREATABLES,
    + 275        *SUBQUERY_PREDICATES,
    + 276        *TYPE_TOKENS,
    + 277        *NO_PAREN_FUNCTIONS,
    + 278    }
    + 279
    + 280    INTERVAL_VARS = ID_VAR_TOKENS - {TokenType.END}
    + 281
    + 282    TABLE_ALIAS_TOKENS = ID_VAR_TOKENS - {
    + 283        TokenType.APPLY,
    + 284        TokenType.FULL,
    + 285        TokenType.LEFT,
    + 286        TokenType.NATURAL,
    + 287        TokenType.OFFSET,
    + 288        TokenType.RIGHT,
    + 289        TokenType.WINDOW,
    + 290    }
    + 291
    + 292    COMMENT_TABLE_ALIAS_TOKENS = TABLE_ALIAS_TOKENS - {TokenType.IS}
    + 293
    + 294    UPDATE_ALIAS_TOKENS = TABLE_ALIAS_TOKENS - {TokenType.SET}
    + 295
    + 296    TRIM_TYPES = {TokenType.LEADING, TokenType.TRAILING, TokenType.BOTH}
    + 297
    + 298    FUNC_TOKENS = {
    + 299        TokenType.COMMAND,
    + 300        TokenType.CURRENT_DATE,
    + 301        TokenType.CURRENT_DATETIME,
    + 302        TokenType.CURRENT_TIMESTAMP,
    + 303        TokenType.CURRENT_TIME,
    + 304        TokenType.CURRENT_USER,
    + 305        TokenType.FILTER,
    + 306        TokenType.FIRST,
    + 307        TokenType.FORMAT,
    + 308        TokenType.GLOB,
    + 309        TokenType.IDENTIFIER,
    + 310        TokenType.INDEX,
    + 311        TokenType.ISNULL,
    + 312        TokenType.ILIKE,
    + 313        TokenType.LIKE,
    + 314        TokenType.MERGE,
    + 315        TokenType.OFFSET,
    + 316        TokenType.PRIMARY_KEY,
    + 317        TokenType.REPLACE,
    + 318        TokenType.ROW,
    + 319        TokenType.UNNEST,
    + 320        TokenType.VAR,
    + 321        TokenType.LEFT,
    + 322        TokenType.RIGHT,
    + 323        TokenType.DATE,
    + 324        TokenType.DATETIME,
    + 325        TokenType.TABLE,
    + 326        TokenType.TIMESTAMP,
    + 327        TokenType.TIMESTAMPTZ,
    + 328        TokenType.WINDOW,
    + 329        *TYPE_TOKENS,
    + 330        *SUBQUERY_PREDICATES,
    + 331    }
    + 332
    + 333    CONJUNCTION = {
    + 334        TokenType.AND: exp.And,
    + 335        TokenType.OR: exp.Or,
    + 336    }
    + 337
    + 338    EQUALITY = {
    + 339        TokenType.EQ: exp.EQ,
    + 340        TokenType.NEQ: exp.NEQ,
    + 341        TokenType.NULLSAFE_EQ: exp.NullSafeEQ,
    + 342    }
    + 343
    + 344    COMPARISON = {
    + 345        TokenType.GT: exp.GT,
    + 346        TokenType.GTE: exp.GTE,
    + 347        TokenType.LT: exp.LT,
    + 348        TokenType.LTE: exp.LTE,
    + 349    }
    + 350
    + 351    BITWISE = {
    + 352        TokenType.AMP: exp.BitwiseAnd,
    + 353        TokenType.CARET: exp.BitwiseXor,
    + 354        TokenType.PIPE: exp.BitwiseOr,
    + 355        TokenType.DPIPE: exp.DPipe,
    + 356    }
    + 357
    + 358    TERM = {
    + 359        TokenType.DASH: exp.Sub,
    + 360        TokenType.PLUS: exp.Add,
    + 361        TokenType.MOD: exp.Mod,
    + 362        TokenType.COLLATE: exp.Collate,
    + 363    }
    + 364
    + 365    FACTOR = {
    + 366        TokenType.DIV: exp.IntDiv,
    + 367        TokenType.LR_ARROW: exp.Distance,
    + 368        TokenType.SLASH: exp.Div,
    + 369        TokenType.STAR: exp.Mul,
    + 370    }
    + 371
    + 372    TIMESTAMPS = {
    + 373        TokenType.TIME,
    + 374        TokenType.TIMESTAMP,
    + 375        TokenType.TIMESTAMPTZ,
    + 376        TokenType.TIMESTAMPLTZ,
    + 377    }
    + 378
    + 379    SET_OPERATIONS = {
    + 380        TokenType.UNION,
    + 381        TokenType.INTERSECT,
    + 382        TokenType.EXCEPT,
    + 383    }
    + 384
    + 385    JOIN_SIDES = {
    + 386        TokenType.LEFT,
    + 387        TokenType.RIGHT,
    + 388        TokenType.FULL,
    + 389    }
    + 390
    + 391    JOIN_KINDS = {
    + 392        TokenType.INNER,
    + 393        TokenType.OUTER,
    + 394        TokenType.CROSS,
    + 395        TokenType.SEMI,
    + 396        TokenType.ANTI,
      397    }
      398
    - 399    COLUMN_OPERATORS = {
    - 400        TokenType.DOT: None,
    - 401        TokenType.DCOLON: lambda self, this, to: self.expression(
    - 402            exp.Cast,
    - 403            this=this,
    - 404            to=to,
    - 405        ),
    - 406        TokenType.ARROW: lambda self, this, path: self.expression(
    - 407            exp.JSONExtract,
    - 408            this=this,
    - 409            expression=path,
    - 410        ),
    - 411        TokenType.DARROW: lambda self, this, path: self.expression(
    - 412            exp.JSONExtractScalar,
    - 413            this=this,
    - 414            expression=path,
    - 415        ),
    - 416        TokenType.HASH_ARROW: lambda self, this, path: self.expression(
    - 417            exp.JSONBExtract,
    - 418            this=this,
    - 419            expression=path,
    - 420        ),
    - 421        TokenType.DHASH_ARROW: lambda self, this, path: self.expression(
    - 422            exp.JSONBExtractScalar,
    - 423            this=this,
    - 424            expression=path,
    - 425        ),
    - 426        TokenType.PLACEHOLDER: lambda self, this, key: self.expression(
    - 427            exp.JSONBContains,
    - 428            this=this,
    - 429            expression=key,
    - 430        ),
    - 431    }
    - 432
    - 433    EXPRESSION_PARSERS = {
    - 434        exp.Column: lambda self: self._parse_column(),
    - 435        exp.DataType: lambda self: self._parse_types(),
    - 436        exp.From: lambda self: self._parse_from(),
    - 437        exp.Group: lambda self: self._parse_group(),
    - 438        exp.Identifier: lambda self: self._parse_id_var(),
    - 439        exp.Lateral: lambda self: self._parse_lateral(),
    - 440        exp.Join: lambda self: self._parse_join(),
    - 441        exp.Order: lambda self: self._parse_order(),
    - 442        exp.Cluster: lambda self: self._parse_sort(TokenType.CLUSTER_BY, exp.Cluster),
    - 443        exp.Sort: lambda self: self._parse_sort(TokenType.SORT_BY, exp.Sort),
    - 444        exp.Lambda: lambda self: self._parse_lambda(),
    - 445        exp.Limit: lambda self: self._parse_limit(),
    - 446        exp.Offset: lambda self: self._parse_offset(),
    - 447        exp.TableAlias: lambda self: self._parse_table_alias(),
    - 448        exp.Table: lambda self: self._parse_table(),
    - 449        exp.Condition: lambda self: self._parse_conjunction(),
    - 450        exp.Expression: lambda self: self._parse_statement(),
    - 451        exp.Properties: lambda self: self._parse_properties(),
    - 452        exp.Where: lambda self: self._parse_where(),
    - 453        exp.Ordered: lambda self: self._parse_ordered(),
    - 454        exp.Having: lambda self: self._parse_having(),
    - 455        exp.With: lambda self: self._parse_with(),
    - 456        exp.Window: lambda self: self._parse_named_window(),
    - 457        exp.Qualify: lambda self: self._parse_qualify(),
    - 458        exp.Returning: lambda self: self._parse_returning(),
    - 459        "JOIN_TYPE": lambda self: self._parse_join_side_and_kind(),
    - 460    }
    - 461
    - 462    STATEMENT_PARSERS = {
    - 463        TokenType.ALTER: lambda self: self._parse_alter(),
    - 464        TokenType.BEGIN: lambda self: self._parse_transaction(),
    - 465        TokenType.CACHE: lambda self: self._parse_cache(),
    - 466        TokenType.COMMIT: lambda self: self._parse_commit_or_rollback(),
    - 467        TokenType.COMMENT: lambda self: self._parse_comment(),
    - 468        TokenType.CREATE: lambda self: self._parse_create(),
    - 469        TokenType.DELETE: lambda self: self._parse_delete(),
    - 470        TokenType.DESC: lambda self: self._parse_describe(),
    - 471        TokenType.DESCRIBE: lambda self: self._parse_describe(),
    - 472        TokenType.DROP: lambda self: self._parse_drop(),
    - 473        TokenType.END: lambda self: self._parse_commit_or_rollback(),
    - 474        TokenType.INSERT: lambda self: self._parse_insert(),
    - 475        TokenType.LOAD_DATA: lambda self: self._parse_load_data(),
    - 476        TokenType.MERGE: lambda self: self._parse_merge(),
    - 477        TokenType.PRAGMA: lambda self: self.expression(exp.Pragma, this=self._parse_expression()),
    - 478        TokenType.ROLLBACK: lambda self: self._parse_commit_or_rollback(),
    - 479        TokenType.SET: lambda self: self._parse_set(),
    - 480        TokenType.UNCACHE: lambda self: self._parse_uncache(),
    - 481        TokenType.UPDATE: lambda self: self._parse_update(),
    - 482        TokenType.USE: lambda self: self.expression(
    - 483            exp.Use,
    - 484            kind=self._match_texts(("ROLE", "WAREHOUSE", "DATABASE", "SCHEMA"))
    - 485            and exp.Var(this=self._prev.text),
    - 486            this=self._parse_table(schema=False),
    - 487        ),
    - 488    }
    - 489
    - 490    UNARY_PARSERS = {
    - 491        TokenType.PLUS: lambda self: self._parse_unary(),  # Unary + is handled as a no-op
    - 492        TokenType.NOT: lambda self: self.expression(exp.Not, this=self._parse_equality()),
    - 493        TokenType.TILDA: lambda self: self.expression(exp.BitwiseNot, this=self._parse_unary()),
    - 494        TokenType.DASH: lambda self: self.expression(exp.Neg, this=self._parse_unary()),
    - 495    }
    - 496
    - 497    PRIMARY_PARSERS = {
    - 498        TokenType.STRING: lambda self, token: self.expression(
    - 499            exp.Literal, this=token.text, is_string=True
    - 500        ),
    - 501        TokenType.NUMBER: lambda self, token: self.expression(
    - 502            exp.Literal, this=token.text, is_string=False
    + 399    LAMBDAS = {
    + 400        TokenType.ARROW: lambda self, expressions: self.expression(
    + 401            exp.Lambda,
    + 402            this=self._replace_lambda(
    + 403                self._parse_conjunction(),
    + 404                {node.name for node in expressions},
    + 405            ),
    + 406            expressions=expressions,
    + 407        ),
    + 408        TokenType.FARROW: lambda self, expressions: self.expression(
    + 409            exp.Kwarg,
    + 410            this=exp.Var(this=expressions[0].name),
    + 411            expression=self._parse_conjunction(),
    + 412        ),
    + 413    }
    + 414
    + 415    COLUMN_OPERATORS = {
    + 416        TokenType.DOT: None,
    + 417        TokenType.DCOLON: lambda self, this, to: self.expression(
    + 418            exp.Cast if self.STRICT_CAST else exp.TryCast,
    + 419            this=this,
    + 420            to=to,
    + 421        ),
    + 422        TokenType.ARROW: lambda self, this, path: self.expression(
    + 423            exp.JSONExtract,
    + 424            this=this,
    + 425            expression=path,
    + 426        ),
    + 427        TokenType.DARROW: lambda self, this, path: self.expression(
    + 428            exp.JSONExtractScalar,
    + 429            this=this,
    + 430            expression=path,
    + 431        ),
    + 432        TokenType.HASH_ARROW: lambda self, this, path: self.expression(
    + 433            exp.JSONBExtract,
    + 434            this=this,
    + 435            expression=path,
    + 436        ),
    + 437        TokenType.DHASH_ARROW: lambda self, this, path: self.expression(
    + 438            exp.JSONBExtractScalar,
    + 439            this=this,
    + 440            expression=path,
    + 441        ),
    + 442        TokenType.PLACEHOLDER: lambda self, this, key: self.expression(
    + 443            exp.JSONBContains,
    + 444            this=this,
    + 445            expression=key,
    + 446        ),
    + 447    }
    + 448
    + 449    EXPRESSION_PARSERS = {
    + 450        exp.Column: lambda self: self._parse_column(),
    + 451        exp.DataType: lambda self: self._parse_types(),
    + 452        exp.From: lambda self: self._parse_from(),
    + 453        exp.Group: lambda self: self._parse_group(),
    + 454        exp.Identifier: lambda self: self._parse_id_var(),
    + 455        exp.Lateral: lambda self: self._parse_lateral(),
    + 456        exp.Join: lambda self: self._parse_join(),
    + 457        exp.Order: lambda self: self._parse_order(),
    + 458        exp.Cluster: lambda self: self._parse_sort(TokenType.CLUSTER_BY, exp.Cluster),
    + 459        exp.Sort: lambda self: self._parse_sort(TokenType.SORT_BY, exp.Sort),
    + 460        exp.Lambda: lambda self: self._parse_lambda(),
    + 461        exp.Limit: lambda self: self._parse_limit(),
    + 462        exp.Offset: lambda self: self._parse_offset(),
    + 463        exp.TableAlias: lambda self: self._parse_table_alias(),
    + 464        exp.Table: lambda self: self._parse_table(),
    + 465        exp.Condition: lambda self: self._parse_conjunction(),
    + 466        exp.Expression: lambda self: self._parse_statement(),
    + 467        exp.Properties: lambda self: self._parse_properties(),
    + 468        exp.Where: lambda self: self._parse_where(),
    + 469        exp.Ordered: lambda self: self._parse_ordered(),
    + 470        exp.Having: lambda self: self._parse_having(),
    + 471        exp.With: lambda self: self._parse_with(),
    + 472        exp.Window: lambda self: self._parse_named_window(),
    + 473        exp.Qualify: lambda self: self._parse_qualify(),
    + 474        exp.Returning: lambda self: self._parse_returning(),
    + 475        "JOIN_TYPE": lambda self: self._parse_join_side_and_kind(),
    + 476    }
    + 477
    + 478    STATEMENT_PARSERS = {
    + 479        TokenType.ALTER: lambda self: self._parse_alter(),
    + 480        TokenType.BEGIN: lambda self: self._parse_transaction(),
    + 481        TokenType.CACHE: lambda self: self._parse_cache(),
    + 482        TokenType.COMMIT: lambda self: self._parse_commit_or_rollback(),
    + 483        TokenType.COMMENT: lambda self: self._parse_comment(),
    + 484        TokenType.CREATE: lambda self: self._parse_create(),
    + 485        TokenType.DELETE: lambda self: self._parse_delete(),
    + 486        TokenType.DESC: lambda self: self._parse_describe(),
    + 487        TokenType.DESCRIBE: lambda self: self._parse_describe(),
    + 488        TokenType.DROP: lambda self: self._parse_drop(),
    + 489        TokenType.END: lambda self: self._parse_commit_or_rollback(),
    + 490        TokenType.INSERT: lambda self: self._parse_insert(),
    + 491        TokenType.LOAD_DATA: lambda self: self._parse_load_data(),
    + 492        TokenType.MERGE: lambda self: self._parse_merge(),
    + 493        TokenType.PRAGMA: lambda self: self.expression(exp.Pragma, this=self._parse_expression()),
    + 494        TokenType.ROLLBACK: lambda self: self._parse_commit_or_rollback(),
    + 495        TokenType.SET: lambda self: self._parse_set(),
    + 496        TokenType.UNCACHE: lambda self: self._parse_uncache(),
    + 497        TokenType.UPDATE: lambda self: self._parse_update(),
    + 498        TokenType.USE: lambda self: self.expression(
    + 499            exp.Use,
    + 500            kind=self._match_texts(("ROLE", "WAREHOUSE", "DATABASE", "SCHEMA"))
    + 501            and exp.Var(this=self._prev.text),
    + 502            this=self._parse_table(schema=False),
      503        ),
    - 504        TokenType.STAR: lambda self, _: self.expression(
    - 505            exp.Star,
    - 506            **{"except": self._parse_except(), "replace": self._parse_replace()},
    - 507        ),
    - 508        TokenType.NULL: lambda self, _: self.expression(exp.Null),
    - 509        TokenType.TRUE: lambda self, _: self.expression(exp.Boolean, this=True),
    - 510        TokenType.FALSE: lambda self, _: self.expression(exp.Boolean, this=False),
    - 511        TokenType.BIT_STRING: lambda self, token: self.expression(exp.BitString, this=token.text),
    - 512        TokenType.HEX_STRING: lambda self, token: self.expression(exp.HexString, this=token.text),
    - 513        TokenType.BYTE_STRING: lambda self, token: self.expression(exp.ByteString, this=token.text),
    - 514        TokenType.INTRODUCER: lambda self, token: self._parse_introducer(token),
    - 515        TokenType.NATIONAL: lambda self, token: self._parse_national(token),
    - 516        TokenType.SESSION_PARAMETER: lambda self, _: self._parse_session_parameter(),
    - 517    }
    - 518
    - 519    PLACEHOLDER_PARSERS = {
    - 520        TokenType.PLACEHOLDER: lambda self: self.expression(exp.Placeholder),
    - 521        TokenType.PARAMETER: lambda self: self._parse_parameter(),
    - 522        TokenType.COLON: lambda self: self.expression(exp.Placeholder, this=self._prev.text)
    - 523        if self._match_set((TokenType.NUMBER, TokenType.VAR))
    - 524        else None,
    - 525    }
    - 526
    - 527    RANGE_PARSERS = {
    - 528        TokenType.BETWEEN: lambda self, this: self._parse_between(this),
    - 529        TokenType.GLOB: binary_range_parser(exp.Glob),
    - 530        TokenType.OVERLAPS: binary_range_parser(exp.Overlaps),
    - 531        TokenType.IN: lambda self, this: self._parse_in(this),
    - 532        TokenType.IS: lambda self, this: self._parse_is(this),
    - 533        TokenType.LIKE: binary_range_parser(exp.Like),
    - 534        TokenType.ILIKE: binary_range_parser(exp.ILike),
    - 535        TokenType.IRLIKE: binary_range_parser(exp.RegexpILike),
    - 536        TokenType.RLIKE: binary_range_parser(exp.RegexpLike),
    - 537        TokenType.SIMILAR_TO: binary_range_parser(exp.SimilarTo),
    - 538    }
    - 539
    - 540    PROPERTY_PARSERS = {
    - 541        "AFTER": lambda self: self._parse_afterjournal(
    - 542            no=self._prev.text.upper() == "NO", dual=self._prev.text.upper() == "DUAL"
    - 543        ),
    - 544        "ALGORITHM": lambda self: self._parse_property_assignment(exp.AlgorithmProperty),
    - 545        "AUTO_INCREMENT": lambda self: self._parse_property_assignment(exp.AutoIncrementProperty),
    - 546        "BEFORE": lambda self: self._parse_journal(
    - 547            no=self._prev.text.upper() == "NO", dual=self._prev.text.upper() == "DUAL"
    - 548        ),
    - 549        "BLOCKCOMPRESSION": lambda self: self._parse_blockcompression(),
    - 550        "CHARACTER SET": lambda self: self._parse_character_set(),
    - 551        "CHECKSUM": lambda self: self._parse_checksum(),
    - 552        "CLUSTER BY": lambda self: self.expression(
    - 553            exp.Cluster, expressions=self._parse_csv(self._parse_ordered)
    - 554        ),
    - 555        "COLLATE": lambda self: self._parse_property_assignment(exp.CollateProperty),
    - 556        "COMMENT": lambda self: self._parse_property_assignment(exp.SchemaCommentProperty),
    - 557        "DATABLOCKSIZE": lambda self: self._parse_datablocksize(
    - 558            default=self._prev.text.upper() == "DEFAULT"
    + 504    }
    + 505
    + 506    UNARY_PARSERS = {
    + 507        TokenType.PLUS: lambda self: self._parse_unary(),  # Unary + is handled as a no-op
    + 508        TokenType.NOT: lambda self: self.expression(exp.Not, this=self._parse_equality()),
    + 509        TokenType.TILDA: lambda self: self.expression(exp.BitwiseNot, this=self._parse_unary()),
    + 510        TokenType.DASH: lambda self: self.expression(exp.Neg, this=self._parse_unary()),
    + 511    }
    + 512
    + 513    PRIMARY_PARSERS = {
    + 514        TokenType.STRING: lambda self, token: self.expression(
    + 515            exp.Literal, this=token.text, is_string=True
    + 516        ),
    + 517        TokenType.NUMBER: lambda self, token: self.expression(
    + 518            exp.Literal, this=token.text, is_string=False
    + 519        ),
    + 520        TokenType.STAR: lambda self, _: self.expression(
    + 521            exp.Star,
    + 522            **{"except": self._parse_except(), "replace": self._parse_replace()},
    + 523        ),
    + 524        TokenType.NULL: lambda self, _: self.expression(exp.Null),
    + 525        TokenType.TRUE: lambda self, _: self.expression(exp.Boolean, this=True),
    + 526        TokenType.FALSE: lambda self, _: self.expression(exp.Boolean, this=False),
    + 527        TokenType.BIT_STRING: lambda self, token: self.expression(exp.BitString, this=token.text),
    + 528        TokenType.HEX_STRING: lambda self, token: self.expression(exp.HexString, this=token.text),
    + 529        TokenType.BYTE_STRING: lambda self, token: self.expression(exp.ByteString, this=token.text),
    + 530        TokenType.INTRODUCER: lambda self, token: self._parse_introducer(token),
    + 531        TokenType.NATIONAL: lambda self, token: self._parse_national(token),
    + 532        TokenType.SESSION_PARAMETER: lambda self, _: self._parse_session_parameter(),
    + 533    }
    + 534
    + 535    PLACEHOLDER_PARSERS = {
    + 536        TokenType.PLACEHOLDER: lambda self: self.expression(exp.Placeholder),
    + 537        TokenType.PARAMETER: lambda self: self._parse_parameter(),
    + 538        TokenType.COLON: lambda self: self.expression(exp.Placeholder, this=self._prev.text)
    + 539        if self._match_set((TokenType.NUMBER, TokenType.VAR))
    + 540        else None,
    + 541    }
    + 542
    + 543    RANGE_PARSERS = {
    + 544        TokenType.BETWEEN: lambda self, this: self._parse_between(this),
    + 545        TokenType.GLOB: binary_range_parser(exp.Glob),
    + 546        TokenType.OVERLAPS: binary_range_parser(exp.Overlaps),
    + 547        TokenType.IN: lambda self, this: self._parse_in(this),
    + 548        TokenType.IS: lambda self, this: self._parse_is(this),
    + 549        TokenType.LIKE: binary_range_parser(exp.Like),
    + 550        TokenType.ILIKE: binary_range_parser(exp.ILike),
    + 551        TokenType.IRLIKE: binary_range_parser(exp.RegexpILike),
    + 552        TokenType.RLIKE: binary_range_parser(exp.RegexpLike),
    + 553        TokenType.SIMILAR_TO: binary_range_parser(exp.SimilarTo),
    + 554    }
    + 555
    + 556    PROPERTY_PARSERS = {
    + 557        "AFTER": lambda self: self._parse_afterjournal(
    + 558            no=self._prev.text.upper() == "NO", dual=self._prev.text.upper() == "DUAL"
      559        ),
    - 560        "DEFINER": lambda self: self._parse_definer(),
    - 561        "DETERMINISTIC": lambda self: self.expression(
    - 562            exp.VolatilityProperty, this=exp.Literal.string("IMMUTABLE")
    - 563        ),
    - 564        "DISTKEY": lambda self: self._parse_distkey(),
    - 565        "DISTSTYLE": lambda self: self._parse_property_assignment(exp.DistStyleProperty),
    - 566        "EXECUTE": lambda self: self._parse_property_assignment(exp.ExecuteAsProperty),
    - 567        "EXTERNAL": lambda self: self.expression(exp.ExternalProperty),
    - 568        "FALLBACK": lambda self: self._parse_fallback(no=self._prev.text.upper() == "NO"),
    - 569        "FORMAT": lambda self: self._parse_property_assignment(exp.FileFormatProperty),
    - 570        "FREESPACE": lambda self: self._parse_freespace(),
    - 571        "GLOBAL": lambda self: self._parse_temporary(global_=True),
    - 572        "IMMUTABLE": lambda self: self.expression(
    - 573            exp.VolatilityProperty, this=exp.Literal.string("IMMUTABLE")
    - 574        ),
    - 575        "JOURNAL": lambda self: self._parse_journal(
    - 576            no=self._prev.text.upper() == "NO", dual=self._prev.text.upper() == "DUAL"
    - 577        ),
    - 578        "LANGUAGE": lambda self: self._parse_property_assignment(exp.LanguageProperty),
    - 579        "LIKE": lambda self: self._parse_create_like(),
    - 580        "LOCAL": lambda self: self._parse_afterjournal(no=False, dual=False, local=True),
    - 581        "LOCATION": lambda self: self._parse_property_assignment(exp.LocationProperty),
    - 582        "LOCK": lambda self: self._parse_locking(),
    - 583        "LOCKING": lambda self: self._parse_locking(),
    - 584        "LOG": lambda self: self._parse_log(no=self._prev.text.upper() == "NO"),
    - 585        "MATERIALIZED": lambda self: self.expression(exp.MaterializedProperty),
    - 586        "MAX": lambda self: self._parse_datablocksize(),
    - 587        "MAXIMUM": lambda self: self._parse_datablocksize(),
    - 588        "MERGEBLOCKRATIO": lambda self: self._parse_mergeblockratio(
    - 589            no=self._prev.text.upper() == "NO", default=self._prev.text.upper() == "DEFAULT"
    + 560        "ALGORITHM": lambda self: self._parse_property_assignment(exp.AlgorithmProperty),
    + 561        "AUTO_INCREMENT": lambda self: self._parse_property_assignment(exp.AutoIncrementProperty),
    + 562        "BEFORE": lambda self: self._parse_journal(
    + 563            no=self._prev.text.upper() == "NO", dual=self._prev.text.upper() == "DUAL"
    + 564        ),
    + 565        "BLOCKCOMPRESSION": lambda self: self._parse_blockcompression(),
    + 566        "CHARACTER SET": lambda self: self._parse_character_set(),
    + 567        "CHECKSUM": lambda self: self._parse_checksum(),
    + 568        "CLUSTER BY": lambda self: self.expression(
    + 569            exp.Cluster, expressions=self._parse_csv(self._parse_ordered)
    + 570        ),
    + 571        "COLLATE": lambda self: self._parse_property_assignment(exp.CollateProperty),
    + 572        "COMMENT": lambda self: self._parse_property_assignment(exp.SchemaCommentProperty),
    + 573        "DATABLOCKSIZE": lambda self: self._parse_datablocksize(
    + 574            default=self._prev.text.upper() == "DEFAULT"
    + 575        ),
    + 576        "DEFINER": lambda self: self._parse_definer(),
    + 577        "DETERMINISTIC": lambda self: self.expression(
    + 578            exp.StabilityProperty, this=exp.Literal.string("IMMUTABLE")
    + 579        ),
    + 580        "DISTKEY": lambda self: self._parse_distkey(),
    + 581        "DISTSTYLE": lambda self: self._parse_property_assignment(exp.DistStyleProperty),
    + 582        "EXECUTE": lambda self: self._parse_property_assignment(exp.ExecuteAsProperty),
    + 583        "EXTERNAL": lambda self: self.expression(exp.ExternalProperty),
    + 584        "FALLBACK": lambda self: self._parse_fallback(no=self._prev.text.upper() == "NO"),
    + 585        "FORMAT": lambda self: self._parse_property_assignment(exp.FileFormatProperty),
    + 586        "FREESPACE": lambda self: self._parse_freespace(),
    + 587        "GLOBAL": lambda self: self._parse_temporary(global_=True),
    + 588        "IMMUTABLE": lambda self: self.expression(
    + 589            exp.StabilityProperty, this=exp.Literal.string("IMMUTABLE")
      590        ),
    - 591        "MIN": lambda self: self._parse_datablocksize(),
    - 592        "MINIMUM": lambda self: self._parse_datablocksize(),
    - 593        "MULTISET": lambda self: self.expression(exp.SetProperty, multi=True),
    - 594        "NO": lambda self: self._parse_noprimaryindex(),
    - 595        "NOT": lambda self: self._parse_afterjournal(no=False, dual=False, local=False),
    - 596        "ON": lambda self: self._parse_oncommit(),
    - 597        "PARTITION BY": lambda self: self._parse_partitioned_by(),
    - 598        "PARTITIONED BY": lambda self: self._parse_partitioned_by(),
    - 599        "PARTITIONED_BY": lambda self: self._parse_partitioned_by(),
    - 600        "RETURNS": lambda self: self._parse_returns(),
    - 601        "ROW": lambda self: self._parse_row(),
    - 602        "SET": lambda self: self.expression(exp.SetProperty, multi=False),
    - 603        "SORTKEY": lambda self: self._parse_sortkey(),
    - 604        "STABLE": lambda self: self.expression(
    - 605            exp.VolatilityProperty, this=exp.Literal.string("STABLE")
    + 591        "JOURNAL": lambda self: self._parse_journal(
    + 592            no=self._prev.text.upper() == "NO", dual=self._prev.text.upper() == "DUAL"
    + 593        ),
    + 594        "LANGUAGE": lambda self: self._parse_property_assignment(exp.LanguageProperty),
    + 595        "LIKE": lambda self: self._parse_create_like(),
    + 596        "LOCAL": lambda self: self._parse_afterjournal(no=False, dual=False, local=True),
    + 597        "LOCATION": lambda self: self._parse_property_assignment(exp.LocationProperty),
    + 598        "LOCK": lambda self: self._parse_locking(),
    + 599        "LOCKING": lambda self: self._parse_locking(),
    + 600        "LOG": lambda self: self._parse_log(no=self._prev.text.upper() == "NO"),
    + 601        "MATERIALIZED": lambda self: self.expression(exp.MaterializedProperty),
    + 602        "MAX": lambda self: self._parse_datablocksize(),
    + 603        "MAXIMUM": lambda self: self._parse_datablocksize(),
    + 604        "MERGEBLOCKRATIO": lambda self: self._parse_mergeblockratio(
    + 605            no=self._prev.text.upper() == "NO", default=self._prev.text.upper() == "DEFAULT"
      606        ),
    - 607        "STORED": lambda self: self._parse_property_assignment(exp.FileFormatProperty),
    - 608        "TABLE_FORMAT": lambda self: self._parse_property_assignment(exp.TableFormatProperty),
    - 609        "TBLPROPERTIES": lambda self: self._parse_wrapped_csv(self._parse_property),
    - 610        "TEMPORARY": lambda self: self._parse_temporary(global_=False),
    - 611        "TRANSIENT": lambda self: self.expression(exp.TransientProperty),
    - 612        "USING": lambda self: self._parse_property_assignment(exp.TableFormatProperty),
    - 613        "VOLATILE": lambda self: self.expression(
    - 614            exp.VolatilityProperty, this=exp.Literal.string("VOLATILE")
    - 615        ),
    - 616        "WITH": lambda self: self._parse_with_property(),
    - 617    }
    - 618
    - 619    CONSTRAINT_PARSERS = {
    - 620        "AUTOINCREMENT": lambda self: self._parse_auto_increment(),
    - 621        "AUTO_INCREMENT": lambda self: self._parse_auto_increment(),
    - 622        "CASESPECIFIC": lambda self: self.expression(exp.CaseSpecificColumnConstraint, not_=False),
    - 623        "CHARACTER SET": lambda self: self.expression(
    - 624            exp.CharacterSetColumnConstraint, this=self._parse_var_or_string()
    - 625        ),
    - 626        "CHECK": lambda self: self.expression(
    - 627            exp.CheckColumnConstraint, this=self._parse_wrapped(self._parse_conjunction)
    - 628        ),
    - 629        "COLLATE": lambda self: self.expression(
    - 630            exp.CollateColumnConstraint, this=self._parse_var()
    - 631        ),
    - 632        "COMMENT": lambda self: self.expression(
    - 633            exp.CommentColumnConstraint, this=self._parse_string()
    - 634        ),
    - 635        "COMPRESS": lambda self: self._parse_compress(),
    - 636        "DEFAULT": lambda self: self.expression(
    - 637            exp.DefaultColumnConstraint, this=self._parse_bitwise()
    - 638        ),
    - 639        "ENCODE": lambda self: self.expression(exp.EncodeColumnConstraint, this=self._parse_var()),
    - 640        "FOREIGN KEY": lambda self: self._parse_foreign_key(),
    - 641        "FORMAT": lambda self: self.expression(
    - 642            exp.DateFormatColumnConstraint, this=self._parse_var_or_string()
    - 643        ),
    - 644        "GENERATED": lambda self: self._parse_generated_as_identity(),
    - 645        "IDENTITY": lambda self: self._parse_auto_increment(),
    - 646        "INLINE": lambda self: self._parse_inline(),
    - 647        "LIKE": lambda self: self._parse_create_like(),
    - 648        "NOT": lambda self: self._parse_not_constraint(),
    - 649        "NULL": lambda self: self.expression(exp.NotNullColumnConstraint, allow_null=True),
    - 650        "PATH": lambda self: self.expression(exp.PathColumnConstraint, this=self._parse_string()),
    - 651        "PRIMARY KEY": lambda self: self._parse_primary_key(),
    - 652        "TITLE": lambda self: self.expression(
    - 653            exp.TitleColumnConstraint, this=self._parse_var_or_string()
    + 607        "MIN": lambda self: self._parse_datablocksize(),
    + 608        "MINIMUM": lambda self: self._parse_datablocksize(),
    + 609        "MULTISET": lambda self: self.expression(exp.SetProperty, multi=True),
    + 610        "NO": lambda self: self._parse_noprimaryindex(),
    + 611        "NOT": lambda self: self._parse_afterjournal(no=False, dual=False, local=False),
    + 612        "ON": lambda self: self._parse_oncommit(),
    + 613        "PARTITION BY": lambda self: self._parse_partitioned_by(),
    + 614        "PARTITIONED BY": lambda self: self._parse_partitioned_by(),
    + 615        "PARTITIONED_BY": lambda self: self._parse_partitioned_by(),
    + 616        "RETURNS": lambda self: self._parse_returns(),
    + 617        "ROW": lambda self: self._parse_row(),
    + 618        "ROW_FORMAT": lambda self: self._parse_property_assignment(exp.RowFormatProperty),
    + 619        "SET": lambda self: self.expression(exp.SetProperty, multi=False),
    + 620        "SORTKEY": lambda self: self._parse_sortkey(),
    + 621        "STABLE": lambda self: self.expression(
    + 622            exp.StabilityProperty, this=exp.Literal.string("STABLE")
    + 623        ),
    + 624        "STORED": lambda self: self._parse_stored(),
    + 625        "TABLE_FORMAT": lambda self: self._parse_property_assignment(exp.TableFormatProperty),
    + 626        "TBLPROPERTIES": lambda self: self._parse_wrapped_csv(self._parse_property),
    + 627        "TEMP": lambda self: self._parse_temporary(global_=False),
    + 628        "TEMPORARY": lambda self: self._parse_temporary(global_=False),
    + 629        "TRANSIENT": lambda self: self.expression(exp.TransientProperty),
    + 630        "USING": lambda self: self._parse_property_assignment(exp.TableFormatProperty),
    + 631        "VOLATILE": lambda self: self._parse_volatile_property(),
    + 632        "WITH": lambda self: self._parse_with_property(),
    + 633    }
    + 634
    + 635    CONSTRAINT_PARSERS = {
    + 636        "AUTOINCREMENT": lambda self: self._parse_auto_increment(),
    + 637        "AUTO_INCREMENT": lambda self: self._parse_auto_increment(),
    + 638        "CASESPECIFIC": lambda self: self.expression(exp.CaseSpecificColumnConstraint, not_=False),
    + 639        "CHARACTER SET": lambda self: self.expression(
    + 640            exp.CharacterSetColumnConstraint, this=self._parse_var_or_string()
    + 641        ),
    + 642        "CHECK": lambda self: self.expression(
    + 643            exp.CheckColumnConstraint, this=self._parse_wrapped(self._parse_conjunction)
    + 644        ),
    + 645        "COLLATE": lambda self: self.expression(
    + 646            exp.CollateColumnConstraint, this=self._parse_var()
    + 647        ),
    + 648        "COMMENT": lambda self: self.expression(
    + 649            exp.CommentColumnConstraint, this=self._parse_string()
    + 650        ),
    + 651        "COMPRESS": lambda self: self._parse_compress(),
    + 652        "DEFAULT": lambda self: self.expression(
    + 653            exp.DefaultColumnConstraint, this=self._parse_bitwise()
      654        ),
    - 655        "UNIQUE": lambda self: self._parse_unique(),
    - 656        "UPPERCASE": lambda self: self.expression(exp.UppercaseColumnConstraint),
    - 657    }
    - 658
    - 659    ALTER_PARSERS = {
    - 660        "ADD": lambda self: self._parse_alter_table_add(),
    - 661        "ALTER": lambda self: self._parse_alter_table_alter(),
    - 662        "DELETE": lambda self: self.expression(exp.Delete, where=self._parse_where()),
    - 663        "DROP": lambda self: self._parse_alter_table_drop(),
    - 664        "RENAME": lambda self: self._parse_alter_table_rename(),
    - 665    }
    - 666
    - 667    SCHEMA_UNNAMED_CONSTRAINTS = {"CHECK", "FOREIGN KEY", "LIKE", "PRIMARY KEY", "UNIQUE"}
    - 668
    - 669    NO_PAREN_FUNCTION_PARSERS = {
    - 670        TokenType.CASE: lambda self: self._parse_case(),
    - 671        TokenType.IF: lambda self: self._parse_if(),
    - 672        TokenType.ANY: lambda self: self.expression(exp.Any, this=self._parse_bitwise()),
    - 673    }
    - 674
    - 675    FUNCTION_PARSERS: t.Dict[str, t.Callable] = {
    - 676        "CAST": lambda self: self._parse_cast(self.STRICT_CAST),
    - 677        "CONVERT": lambda self: self._parse_convert(self.STRICT_CAST),
    - 678        "DECODE": lambda self: self._parse_decode(),
    - 679        "EXTRACT": lambda self: self._parse_extract(),
    - 680        "JSON_OBJECT": lambda self: self._parse_json_object(),
    - 681        "LOG": lambda self: self._parse_logarithm(),
    - 682        "MATCH": lambda self: self._parse_match_against(),
    - 683        "POSITION": lambda self: self._parse_position(),
    - 684        "STRING_AGG": lambda self: self._parse_string_agg(),
    - 685        "SUBSTRING": lambda self: self._parse_substring(),
    - 686        "TRIM": lambda self: self._parse_trim(),
    - 687        "TRY_CAST": lambda self: self._parse_cast(False),
    - 688        "TRY_CONVERT": lambda self: self._parse_convert(False),
    - 689    }
    - 690
    - 691    QUERY_MODIFIER_PARSERS = {
    - 692        "match": lambda self: self._parse_match_recognize(),
    - 693        "where": lambda self: self._parse_where(),
    - 694        "group": lambda self: self._parse_group(),
    - 695        "having": lambda self: self._parse_having(),
    - 696        "qualify": lambda self: self._parse_qualify(),
    - 697        "windows": lambda self: self._parse_window_clause(),
    - 698        "distribute": lambda self: self._parse_sort(TokenType.DISTRIBUTE_BY, exp.Distribute),
    - 699        "sort": lambda self: self._parse_sort(TokenType.SORT_BY, exp.Sort),
    - 700        "cluster": lambda self: self._parse_sort(TokenType.CLUSTER_BY, exp.Cluster),
    - 701        "order": lambda self: self._parse_order(),
    - 702        "limit": lambda self: self._parse_limit(),
    - 703        "offset": lambda self: self._parse_offset(),
    - 704        "lock": lambda self: self._parse_lock(),
    - 705        "sample": lambda self: self._parse_table_sample(as_modifier=True),
    - 706    }
    - 707
    - 708    SET_PARSERS = {
    - 709        "GLOBAL": lambda self: self._parse_set_item_assignment("GLOBAL"),
    - 710        "LOCAL": lambda self: self._parse_set_item_assignment("LOCAL"),
    - 711        "SESSION": lambda self: self._parse_set_item_assignment("SESSION"),
    - 712        "TRANSACTION": lambda self: self._parse_set_transaction(),
    - 713    }
    - 714
    - 715    SHOW_PARSERS: t.Dict[str, t.Callable] = {}
    - 716
    - 717    MODIFIABLES = (exp.Subquery, exp.Subqueryable, exp.Table)
    - 718
    - 719    TRANSACTION_KIND = {"DEFERRED", "IMMEDIATE", "EXCLUSIVE"}
    - 720
    - 721    TRANSACTION_CHARACTERISTICS = {
    - 722        "ISOLATION LEVEL REPEATABLE READ",
    - 723        "ISOLATION LEVEL READ COMMITTED",
    - 724        "ISOLATION LEVEL READ UNCOMMITTED",
    - 725        "ISOLATION LEVEL SERIALIZABLE",
    - 726        "READ WRITE",
    - 727        "READ ONLY",
    - 728    }
    - 729
    - 730    INSERT_ALTERNATIVES = {"ABORT", "FAIL", "IGNORE", "REPLACE", "ROLLBACK"}
    - 731
    - 732    WINDOW_ALIAS_TOKENS = ID_VAR_TOKENS - {TokenType.ROWS}
    + 655        "ENCODE": lambda self: self.expression(exp.EncodeColumnConstraint, this=self._parse_var()),
    + 656        "FOREIGN KEY": lambda self: self._parse_foreign_key(),
    + 657        "FORMAT": lambda self: self.expression(
    + 658            exp.DateFormatColumnConstraint, this=self._parse_var_or_string()
    + 659        ),
    + 660        "GENERATED": lambda self: self._parse_generated_as_identity(),
    + 661        "IDENTITY": lambda self: self._parse_auto_increment(),
    + 662        "INLINE": lambda self: self._parse_inline(),
    + 663        "LIKE": lambda self: self._parse_create_like(),
    + 664        "NOT": lambda self: self._parse_not_constraint(),
    + 665        "NULL": lambda self: self.expression(exp.NotNullColumnConstraint, allow_null=True),
    + 666        "ON": lambda self: self._match(TokenType.UPDATE)
    + 667        and self.expression(exp.OnUpdateColumnConstraint, this=self._parse_function()),
    + 668        "PATH": lambda self: self.expression(exp.PathColumnConstraint, this=self._parse_string()),
    + 669        "PRIMARY KEY": lambda self: self._parse_primary_key(),
    + 670        "REFERENCES": lambda self: self._parse_references(match=False),
    + 671        "TITLE": lambda self: self.expression(
    + 672            exp.TitleColumnConstraint, this=self._parse_var_or_string()
    + 673        ),
    + 674        "UNIQUE": lambda self: self._parse_unique(),
    + 675        "UPPERCASE": lambda self: self.expression(exp.UppercaseColumnConstraint),
    + 676    }
    + 677
    + 678    ALTER_PARSERS = {
    + 679        "ADD": lambda self: self._parse_alter_table_add(),
    + 680        "ALTER": lambda self: self._parse_alter_table_alter(),
    + 681        "DELETE": lambda self: self.expression(exp.Delete, where=self._parse_where()),
    + 682        "DROP": lambda self: self._parse_alter_table_drop(),
    + 683        "RENAME": lambda self: self._parse_alter_table_rename(),
    + 684    }
    + 685
    + 686    SCHEMA_UNNAMED_CONSTRAINTS = {"CHECK", "FOREIGN KEY", "LIKE", "PRIMARY KEY", "UNIQUE"}
    + 687
    + 688    NO_PAREN_FUNCTION_PARSERS = {
    + 689        TokenType.CASE: lambda self: self._parse_case(),
    + 690        TokenType.IF: lambda self: self._parse_if(),
    + 691        TokenType.ANY: lambda self: self.expression(exp.Any, this=self._parse_bitwise()),
    + 692    }
    + 693
    + 694    FUNCTION_PARSERS: t.Dict[str, t.Callable] = {
    + 695        "CAST": lambda self: self._parse_cast(self.STRICT_CAST),
    + 696        "CONVERT": lambda self: self._parse_convert(self.STRICT_CAST),
    + 697        "DECODE": lambda self: self._parse_decode(),
    + 698        "EXTRACT": lambda self: self._parse_extract(),
    + 699        "JSON_OBJECT": lambda self: self._parse_json_object(),
    + 700        "LOG": lambda self: self._parse_logarithm(),
    + 701        "MATCH": lambda self: self._parse_match_against(),
    + 702        "POSITION": lambda self: self._parse_position(),
    + 703        "STRING_AGG": lambda self: self._parse_string_agg(),
    + 704        "SUBSTRING": lambda self: self._parse_substring(),
    + 705        "TRIM": lambda self: self._parse_trim(),
    + 706        "TRY_CAST": lambda self: self._parse_cast(False),
    + 707        "TRY_CONVERT": lambda self: self._parse_convert(False),
    + 708    }
    + 709
    + 710    QUERY_MODIFIER_PARSERS = {
    + 711        "match": lambda self: self._parse_match_recognize(),
    + 712        "where": lambda self: self._parse_where(),
    + 713        "group": lambda self: self._parse_group(),
    + 714        "having": lambda self: self._parse_having(),
    + 715        "qualify": lambda self: self._parse_qualify(),
    + 716        "windows": lambda self: self._parse_window_clause(),
    + 717        "distribute": lambda self: self._parse_sort(TokenType.DISTRIBUTE_BY, exp.Distribute),
    + 718        "sort": lambda self: self._parse_sort(TokenType.SORT_BY, exp.Sort),
    + 719        "cluster": lambda self: self._parse_sort(TokenType.CLUSTER_BY, exp.Cluster),
    + 720        "order": lambda self: self._parse_order(),
    + 721        "limit": lambda self: self._parse_limit(),
    + 722        "offset": lambda self: self._parse_offset(),
    + 723        "lock": lambda self: self._parse_lock(),
    + 724        "sample": lambda self: self._parse_table_sample(as_modifier=True),
    + 725    }
    + 726
    + 727    SET_PARSERS = {
    + 728        "GLOBAL": lambda self: self._parse_set_item_assignment("GLOBAL"),
    + 729        "LOCAL": lambda self: self._parse_set_item_assignment("LOCAL"),
    + 730        "SESSION": lambda self: self._parse_set_item_assignment("SESSION"),
    + 731        "TRANSACTION": lambda self: self._parse_set_transaction(),
    + 732    }
      733
    - 734    ADD_CONSTRAINT_TOKENS = {TokenType.CONSTRAINT, TokenType.PRIMARY_KEY, TokenType.FOREIGN_KEY}
    + 734    SHOW_PARSERS: t.Dict[str, t.Callable] = {}
      735
    - 736    STRICT_CAST = True
    + 736    TYPE_LITERAL_PARSERS: t.Dict[exp.DataType.Type, t.Callable] = {}
      737
    - 738    CONVERT_TYPE_FIRST = False
    + 738    MODIFIABLES = (exp.Subquery, exp.Subqueryable, exp.Table)
      739
    - 740    LOG_BASE_FIRST = True
    - 741    LOG_DEFAULTS_TO_LN = False
    - 742
    - 743    __slots__ = (
    - 744        "error_level",
    - 745        "error_message_context",
    - 746        "sql",
    - 747        "errors",
    - 748        "index_offset",
    - 749        "unnest_column_only",
    - 750        "alias_post_tablesample",
    - 751        "max_errors",
    - 752        "null_ordering",
    - 753        "_tokens",
    - 754        "_index",
    - 755        "_curr",
    - 756        "_next",
    - 757        "_prev",
    - 758        "_prev_comments",
    - 759        "_show_trie",
    - 760        "_set_trie",
    - 761    )
    - 762
    - 763    def __init__(
    - 764        self,
    - 765        error_level: t.Optional[ErrorLevel] = None,
    - 766        error_message_context: int = 100,
    - 767        index_offset: int = 0,
    - 768        unnest_column_only: bool = False,
    - 769        alias_post_tablesample: bool = False,
    - 770        max_errors: int = 3,
    - 771        null_ordering: t.Optional[str] = None,
    - 772    ):
    - 773        self.error_level = error_level or ErrorLevel.IMMEDIATE
    - 774        self.error_message_context = error_message_context
    - 775        self.index_offset = index_offset
    - 776        self.unnest_column_only = unnest_column_only
    - 777        self.alias_post_tablesample = alias_post_tablesample
    - 778        self.max_errors = max_errors
    - 779        self.null_ordering = null_ordering
    - 780        self.reset()
    - 781
    - 782    def reset(self):
    - 783        self.sql = ""
    - 784        self.errors = []
    - 785        self._tokens = []
    - 786        self._index = 0
    - 787        self._curr = None
    - 788        self._next = None
    - 789        self._prev = None
    - 790        self._prev_comments = None
    - 791
    - 792    def parse(
    - 793        self, raw_tokens: t.List[Token], sql: t.Optional[str] = None
    - 794    ) -> t.List[t.Optional[exp.Expression]]:
    - 795        """
    - 796        Parses a list of tokens and returns a list of syntax trees, one tree
    - 797        per parsed SQL statement.
    - 798
    - 799        Args:
    - 800            raw_tokens: the list of tokens.
    - 801            sql: the original SQL string, used to produce helpful debug messages.
    - 802
    - 803        Returns:
    - 804            The list of syntax trees.
    - 805        """
    - 806        return self._parse(
    - 807            parse_method=self.__class__._parse_statement, raw_tokens=raw_tokens, sql=sql
    - 808        )
    - 809
    - 810    def parse_into(
    - 811        self,
    - 812        expression_types: exp.IntoType,
    - 813        raw_tokens: t.List[Token],
    - 814        sql: t.Optional[str] = None,
    - 815    ) -> t.List[t.Optional[exp.Expression]]:
    - 816        """
    - 817        Parses a list of tokens into a given Expression type. If a collection of Expression
    - 818        types is given instead, this method will try to parse the token list into each one
    - 819        of them, stopping at the first for which the parsing succeeds.
    - 820
    - 821        Args:
    - 822            expression_types: the expression type(s) to try and parse the token list into.
    - 823            raw_tokens: the list of tokens.
    - 824            sql: the original SQL string, used to produce helpful debug messages.
    - 825
    - 826        Returns:
    - 827            The target Expression.
    - 828        """
    - 829        errors = []
    - 830        for expression_type in ensure_collection(expression_types):
    - 831            parser = self.EXPRESSION_PARSERS.get(expression_type)
    - 832            if not parser:
    - 833                raise TypeError(f"No parser registered for {expression_type}")
    - 834            try:
    - 835                return self._parse(parser, raw_tokens, sql)
    - 836            except ParseError as e:
    - 837                e.errors[0]["into_expression"] = expression_type
    - 838                errors.append(e)
    - 839        raise ParseError(
    - 840            f"Failed to parse into {expression_types}",
    - 841            errors=merge_errors(errors),
    - 842        ) from errors[-1]
    - 843
    - 844    def _parse(
    - 845        self,
    - 846        parse_method: t.Callable[[Parser], t.Optional[exp.Expression]],
    - 847        raw_tokens: t.List[Token],
    - 848        sql: t.Optional[str] = None,
    - 849    ) -> t.List[t.Optional[exp.Expression]]:
    - 850        self.reset()
    - 851        self.sql = sql or ""
    - 852        total = len(raw_tokens)
    - 853        chunks: t.List[t.List[Token]] = [[]]
    - 854
    - 855        for i, token in enumerate(raw_tokens):
    - 856            if token.token_type == TokenType.SEMICOLON:
    - 857                if i < total - 1:
    - 858                    chunks.append([])
    - 859            else:
    - 860                chunks[-1].append(token)
    - 861
    - 862        expressions = []
    - 863
    - 864        for tokens in chunks:
    - 865            self._index = -1
    - 866            self._tokens = tokens
    - 867            self._advance()
    - 868
    - 869            expressions.append(parse_method(self))
    - 870
    - 871            if self._index < len(self._tokens):
    - 872                self.raise_error("Invalid expression / Unexpected token")
    - 873
    - 874            self.check_errors()
    - 875
    - 876        return expressions
    - 877
    - 878    def check_errors(self) -> None:
    - 879        """
    - 880        Logs or raises any found errors, depending on the chosen error level setting.
    - 881        """
    - 882        if self.error_level == ErrorLevel.WARN:
    - 883            for error in self.errors:
    - 884                logger.error(str(error))
    - 885        elif self.error_level == ErrorLevel.RAISE and self.errors:
    - 886            raise ParseError(
    - 887                concat_messages(self.errors, self.max_errors),
    - 888                errors=merge_errors(self.errors),
    - 889            )
    - 890
    - 891    def raise_error(self, message: str, token: t.Optional[Token] = None) -> None:
    - 892        """
    - 893        Appends an error in the list of recorded errors or raises it, depending on the chosen
    - 894        error level setting.
    - 895        """
    - 896        token = token or self._curr or self._prev or Token.string("")
    - 897        start = self._find_token(token)
    - 898        end = start + len(token.text)
    - 899        start_context = self.sql[max(start - self.error_message_context, 0) : start]
    - 900        highlight = self.sql[start:end]
    - 901        end_context = self.sql[end : end + self.error_message_context]
    - 902
    - 903        error = ParseError.new(
    - 904            f"{message}. Line {token.line}, Col: {token.col}.\n"
    - 905            f"  {start_context}\033[4m{highlight}\033[0m{end_context}",
    - 906            description=message,
    - 907            line=token.line,
    - 908            col=token.col,
    - 909            start_context=start_context,
    - 910            highlight=highlight,
    - 911            end_context=end_context,
    - 912        )
    - 913
    - 914        if self.error_level == ErrorLevel.IMMEDIATE:
    - 915            raise error
    - 916
    - 917        self.errors.append(error)
    - 918
    - 919    def expression(
    - 920        self, exp_class: t.Type[exp.Expression], comments: t.Optional[t.List[str]] = None, **kwargs
    - 921    ) -> exp.Expression:
    - 922        """
    - 923        Creates a new, validated Expression.
    - 924
    - 925        Args:
    - 926            exp_class: the expression class to instantiate.
    - 927            comments: an optional list of comments to attach to the expression.
    - 928            kwargs: the arguments to set for the expression along with their respective values.
    - 929
    - 930        Returns:
    - 931            The target expression.
    - 932        """
    - 933        instance = exp_class(**kwargs)
    - 934        if self._prev_comments:
    - 935            instance.comments = self._prev_comments
    - 936            self._prev_comments = None
    - 937        if comments:
    - 938            instance.comments = comments
    - 939        self.validate_expression(instance)
    - 940        return instance
    - 941
    - 942    def validate_expression(
    - 943        self, expression: exp.Expression, args: t.Optional[t.List] = None
    - 944    ) -> None:
    - 945        """
    - 946        Validates an already instantiated expression, making sure that all its mandatory arguments
    - 947        are set.
    + 740    TRANSACTION_KIND = {"DEFERRED", "IMMEDIATE", "EXCLUSIVE"}
    + 741
    + 742    TRANSACTION_CHARACTERISTICS = {
    + 743        "ISOLATION LEVEL REPEATABLE READ",
    + 744        "ISOLATION LEVEL READ COMMITTED",
    + 745        "ISOLATION LEVEL READ UNCOMMITTED",
    + 746        "ISOLATION LEVEL SERIALIZABLE",
    + 747        "READ WRITE",
    + 748        "READ ONLY",
    + 749    }
    + 750
    + 751    INSERT_ALTERNATIVES = {"ABORT", "FAIL", "IGNORE", "REPLACE", "ROLLBACK"}
    + 752
    + 753    WINDOW_ALIAS_TOKENS = ID_VAR_TOKENS - {TokenType.ROWS}
    + 754
    + 755    ADD_CONSTRAINT_TOKENS = {TokenType.CONSTRAINT, TokenType.PRIMARY_KEY, TokenType.FOREIGN_KEY}
    + 756
    + 757    STRICT_CAST = True
    + 758
    + 759    CONVERT_TYPE_FIRST = False
    + 760
    + 761    QUOTED_PIVOT_COLUMNS: t.Optional[bool] = None
    + 762    PREFIXED_PIVOT_COLUMNS = False
    + 763
    + 764    LOG_BASE_FIRST = True
    + 765    LOG_DEFAULTS_TO_LN = False
    + 766
    + 767    __slots__ = (
    + 768        "error_level",
    + 769        "error_message_context",
    + 770        "sql",
    + 771        "errors",
    + 772        "index_offset",
    + 773        "unnest_column_only",
    + 774        "alias_post_tablesample",
    + 775        "max_errors",
    + 776        "null_ordering",
    + 777        "_tokens",
    + 778        "_index",
    + 779        "_curr",
    + 780        "_next",
    + 781        "_prev",
    + 782        "_prev_comments",
    + 783        "_show_trie",
    + 784        "_set_trie",
    + 785    )
    + 786
    + 787    def __init__(
    + 788        self,
    + 789        error_level: t.Optional[ErrorLevel] = None,
    + 790        error_message_context: int = 100,
    + 791        index_offset: int = 0,
    + 792        unnest_column_only: bool = False,
    + 793        alias_post_tablesample: bool = False,
    + 794        max_errors: int = 3,
    + 795        null_ordering: t.Optional[str] = None,
    + 796    ):
    + 797        self.error_level = error_level or ErrorLevel.IMMEDIATE
    + 798        self.error_message_context = error_message_context
    + 799        self.index_offset = index_offset
    + 800        self.unnest_column_only = unnest_column_only
    + 801        self.alias_post_tablesample = alias_post_tablesample
    + 802        self.max_errors = max_errors
    + 803        self.null_ordering = null_ordering
    + 804        self.reset()
    + 805
    + 806    def reset(self):
    + 807        self.sql = ""
    + 808        self.errors = []
    + 809        self._tokens = []
    + 810        self._index = 0
    + 811        self._curr = None
    + 812        self._next = None
    + 813        self._prev = None
    + 814        self._prev_comments = None
    + 815
    + 816    def parse(
    + 817        self, raw_tokens: t.List[Token], sql: t.Optional[str] = None
    + 818    ) -> t.List[t.Optional[exp.Expression]]:
    + 819        """
    + 820        Parses a list of tokens and returns a list of syntax trees, one tree
    + 821        per parsed SQL statement.
    + 822
    + 823        Args:
    + 824            raw_tokens: the list of tokens.
    + 825            sql: the original SQL string, used to produce helpful debug messages.
    + 826
    + 827        Returns:
    + 828            The list of syntax trees.
    + 829        """
    + 830        return self._parse(
    + 831            parse_method=self.__class__._parse_statement, raw_tokens=raw_tokens, sql=sql
    + 832        )
    + 833
    + 834    def parse_into(
    + 835        self,
    + 836        expression_types: exp.IntoType,
    + 837        raw_tokens: t.List[Token],
    + 838        sql: t.Optional[str] = None,
    + 839    ) -> t.List[t.Optional[exp.Expression]]:
    + 840        """
    + 841        Parses a list of tokens into a given Expression type. If a collection of Expression
    + 842        types is given instead, this method will try to parse the token list into each one
    + 843        of them, stopping at the first for which the parsing succeeds.
    + 844
    + 845        Args:
    + 846            expression_types: the expression type(s) to try and parse the token list into.
    + 847            raw_tokens: the list of tokens.
    + 848            sql: the original SQL string, used to produce helpful debug messages.
    + 849
    + 850        Returns:
    + 851            The target Expression.
    + 852        """
    + 853        errors = []
    + 854        for expression_type in ensure_collection(expression_types):
    + 855            parser = self.EXPRESSION_PARSERS.get(expression_type)
    + 856            if not parser:
    + 857                raise TypeError(f"No parser registered for {expression_type}")
    + 858            try:
    + 859                return self._parse(parser, raw_tokens, sql)
    + 860            except ParseError as e:
    + 861                e.errors[0]["into_expression"] = expression_type
    + 862                errors.append(e)
    + 863        raise ParseError(
    + 864            f"Failed to parse into {expression_types}",
    + 865            errors=merge_errors(errors),
    + 866        ) from errors[-1]
    + 867
    + 868    def _parse(
    + 869        self,
    + 870        parse_method: t.Callable[[Parser], t.Optional[exp.Expression]],
    + 871        raw_tokens: t.List[Token],
    + 872        sql: t.Optional[str] = None,
    + 873    ) -> t.List[t.Optional[exp.Expression]]:
    + 874        self.reset()
    + 875        self.sql = sql or ""
    + 876        total = len(raw_tokens)
    + 877        chunks: t.List[t.List[Token]] = [[]]
    + 878
    + 879        for i, token in enumerate(raw_tokens):
    + 880            if token.token_type == TokenType.SEMICOLON:
    + 881                if i < total - 1:
    + 882                    chunks.append([])
    + 883            else:
    + 884                chunks[-1].append(token)
    + 885
    + 886        expressions = []
    + 887
    + 888        for tokens in chunks:
    + 889            self._index = -1
    + 890            self._tokens = tokens
    + 891            self._advance()
    + 892
    + 893            expressions.append(parse_method(self))
    + 894
    + 895            if self._index < len(self._tokens):
    + 896                self.raise_error("Invalid expression / Unexpected token")
    + 897
    + 898            self.check_errors()
    + 899
    + 900        return expressions
    + 901
    + 902    def check_errors(self) -> None:
    + 903        """
    + 904        Logs or raises any found errors, depending on the chosen error level setting.
    + 905        """
    + 906        if self.error_level == ErrorLevel.WARN:
    + 907            for error in self.errors:
    + 908                logger.error(str(error))
    + 909        elif self.error_level == ErrorLevel.RAISE and self.errors:
    + 910            raise ParseError(
    + 911                concat_messages(self.errors, self.max_errors),
    + 912                errors=merge_errors(self.errors),
    + 913            )
    + 914
    + 915    def raise_error(self, message: str, token: t.Optional[Token] = None) -> None:
    + 916        """
    + 917        Appends an error in the list of recorded errors or raises it, depending on the chosen
    + 918        error level setting.
    + 919        """
    + 920        token = token or self._curr or self._prev or Token.string("")
    + 921        start = token.start
    + 922        end = token.end
    + 923        start_context = self.sql[max(start - self.error_message_context, 0) : start]
    + 924        highlight = self.sql[start:end]
    + 925        end_context = self.sql[end : end + self.error_message_context]
    + 926
    + 927        error = ParseError.new(
    + 928            f"{message}. Line {token.line}, Col: {token.col}.\n"
    + 929            f"  {start_context}\033[4m{highlight}\033[0m{end_context}",
    + 930            description=message,
    + 931            line=token.line,
    + 932            col=token.col,
    + 933            start_context=start_context,
    + 934            highlight=highlight,
    + 935            end_context=end_context,
    + 936        )
    + 937
    + 938        if self.error_level == ErrorLevel.IMMEDIATE:
    + 939            raise error
    + 940
    + 941        self.errors.append(error)
    + 942
    + 943    def expression(
    + 944        self, exp_class: t.Type[E], comments: t.Optional[t.List[str]] = None, **kwargs
    + 945    ) -> E:
    + 946        """
    + 947        Creates a new, validated Expression.
      948
      949        Args:
    - 950            expression: the expression to validate.
    - 951            args: an optional list of items that was used to instantiate the expression, if it's a Func.
    - 952        """
    - 953        if self.error_level == ErrorLevel.IGNORE:
    - 954            return
    - 955
    - 956        for error_message in expression.error_messages(args):
    - 957            self.raise_error(error_message)
    - 958
    - 959    def _find_sql(self, start: Token, end: Token) -> str:
    - 960        return self.sql[self._find_token(start) : self._find_token(end) + len(end.text)]
    - 961
    - 962    def _find_token(self, token: Token) -> int:
    - 963        line = 1
    - 964        col = 1
    - 965        index = 0
    - 966
    - 967        while line < token.line or col < token.col:
    - 968            if Tokenizer.WHITE_SPACE.get(self.sql[index]) == TokenType.BREAK:
    - 969                line += 1
    - 970                col = 1
    - 971            else:
    - 972                col += 1
    - 973            index += 1
    - 974
    - 975        return index
    - 976
    - 977    def _advance(self, times: int = 1) -> None:
    - 978        self._index += times
    - 979        self._curr = seq_get(self._tokens, self._index)
    - 980        self._next = seq_get(self._tokens, self._index + 1)
    - 981        if self._index > 0:
    - 982            self._prev = self._tokens[self._index - 1]
    - 983            self._prev_comments = self._prev.comments
    - 984        else:
    - 985            self._prev = None
    - 986            self._prev_comments = None
    - 987
    - 988    def _retreat(self, index: int) -> None:
    - 989        if index != self._index:
    - 990            self._advance(index - self._index)
    - 991
    - 992    def _parse_command(self) -> exp.Expression:
    - 993        return self.expression(exp.Command, this=self._prev.text, expression=self._parse_string())
    - 994
    - 995    def _parse_comment(self, allow_exists: bool = True) -> exp.Expression:
    - 996        start = self._prev
    - 997        exists = self._parse_exists() if allow_exists else None
    - 998
    - 999        self._match(TokenType.ON)
    + 950            exp_class: the expression class to instantiate.
    + 951            comments: an optional list of comments to attach to the expression.
    + 952            kwargs: the arguments to set for the expression along with their respective values.
    + 953
    + 954        Returns:
    + 955            The target expression.
    + 956        """
    + 957        instance = exp_class(**kwargs)
    + 958        if self._prev_comments:
    + 959            instance.comments = self._prev_comments
    + 960            self._prev_comments = None
    + 961        if comments:
    + 962            instance.comments = comments
    + 963        self.validate_expression(instance)
    + 964        return instance
    + 965
    + 966    def validate_expression(
    + 967        self, expression: exp.Expression, args: t.Optional[t.List] = None
    + 968    ) -> None:
    + 969        """
    + 970        Validates an already instantiated expression, making sure that all its mandatory arguments
    + 971        are set.
    + 972
    + 973        Args:
    + 974            expression: the expression to validate.
    + 975            args: an optional list of items that was used to instantiate the expression, if it's a Func.
    + 976        """
    + 977        if self.error_level == ErrorLevel.IGNORE:
    + 978            return
    + 979
    + 980        for error_message in expression.error_messages(args):
    + 981            self.raise_error(error_message)
    + 982
    + 983    def _find_sql(self, start: Token, end: Token) -> str:
    + 984        return self.sql[start.start : end.end]
    + 985
    + 986    def _advance(self, times: int = 1) -> None:
    + 987        self._index += times
    + 988        self._curr = seq_get(self._tokens, self._index)
    + 989        self._next = seq_get(self._tokens, self._index + 1)
    + 990        if self._index > 0:
    + 991            self._prev = self._tokens[self._index - 1]
    + 992            self._prev_comments = self._prev.comments
    + 993        else:
    + 994            self._prev = None
    + 995            self._prev_comments = None
    + 996
    + 997    def _retreat(self, index: int) -> None:
    + 998        if index != self._index:
    + 999            self._advance(index - self._index)
     1000
    -1001        kind = self._match_set(self.CREATABLES) and self._prev
    -1002
    -1003        if not kind:
    -1004            return self._parse_as_command(start)
    -1005
    -1006        if kind.token_type in (TokenType.FUNCTION, TokenType.PROCEDURE):
    -1007            this = self._parse_user_defined_function(kind=kind.token_type)
    -1008        elif kind.token_type == TokenType.TABLE:
    -1009            this = self._parse_table()
    -1010        elif kind.token_type == TokenType.COLUMN:
    -1011            this = self._parse_column()
    -1012        else:
    -1013            this = self._parse_id_var()
    +1001    def _parse_command(self) -> exp.Command:
    +1002        return self.expression(exp.Command, this=self._prev.text, expression=self._parse_string())
    +1003
    +1004    def _parse_comment(self, allow_exists: bool = True) -> exp.Expression:
    +1005        start = self._prev
    +1006        exists = self._parse_exists() if allow_exists else None
    +1007
    +1008        self._match(TokenType.ON)
    +1009
    +1010        kind = self._match_set(self.CREATABLES) and self._prev
    +1011
    +1012        if not kind:
    +1013            return self._parse_as_command(start)
     1014
    -1015        self._match(TokenType.IS)
    -1016
    -1017        return self.expression(
    -1018            exp.Comment, this=this, kind=kind.text, expression=self._parse_string(), exists=exists
    -1019        )
    -1020
    -1021    def _parse_statement(self) -> t.Optional[exp.Expression]:
    -1022        if self._curr is None:
    -1023            return None
    -1024
    -1025        if self._match_set(self.STATEMENT_PARSERS):
    -1026            return self.STATEMENT_PARSERS[self._prev.token_type](self)
    -1027
    -1028        if self._match_set(Tokenizer.COMMANDS):
    -1029            return self._parse_command()
    -1030
    -1031        expression = self._parse_expression()
    -1032        expression = self._parse_set_operations(expression) if expression else self._parse_select()
    +1015        if kind.token_type in (TokenType.FUNCTION, TokenType.PROCEDURE):
    +1016            this = self._parse_user_defined_function(kind=kind.token_type)
    +1017        elif kind.token_type == TokenType.TABLE:
    +1018            this = self._parse_table(alias_tokens=self.COMMENT_TABLE_ALIAS_TOKENS)
    +1019        elif kind.token_type == TokenType.COLUMN:
    +1020            this = self._parse_column()
    +1021        else:
    +1022            this = self._parse_id_var()
    +1023
    +1024        self._match(TokenType.IS)
    +1025
    +1026        return self.expression(
    +1027            exp.Comment, this=this, kind=kind.text, expression=self._parse_string(), exists=exists
    +1028        )
    +1029
    +1030    def _parse_statement(self) -> t.Optional[exp.Expression]:
    +1031        if self._curr is None:
    +1032            return None
     1033
    -1034        self._parse_query_modifiers(expression)
    -1035        return expression
    +1034        if self._match_set(self.STATEMENT_PARSERS):
    +1035            return self.STATEMENT_PARSERS[self._prev.token_type](self)
     1036
    -1037    def _parse_drop(self, default_kind: t.Optional[str] = None) -> t.Optional[exp.Expression]:
    -1038        start = self._prev
    -1039        temporary = self._match(TokenType.TEMPORARY)
    -1040        materialized = self._match(TokenType.MATERIALIZED)
    -1041        kind = self._match_set(self.CREATABLES) and self._prev.text
    -1042        if not kind:
    -1043            if default_kind:
    -1044                kind = default_kind
    -1045            else:
    -1046                return self._parse_as_command(start)
    -1047
    -1048        return self.expression(
    -1049            exp.Drop,
    -1050            exists=self._parse_exists(),
    -1051            this=self._parse_table(schema=True),
    -1052            kind=kind,
    -1053            temporary=temporary,
    -1054            materialized=materialized,
    -1055            cascade=self._match(TokenType.CASCADE),
    -1056            constraints=self._match_text_seq("CONSTRAINTS"),
    -1057        )
    -1058
    -1059    def _parse_exists(self, not_: bool = False) -> t.Optional[bool]:
    -1060        return (
    -1061            self._match(TokenType.IF)
    -1062            and (not not_ or self._match(TokenType.NOT))
    -1063            and self._match(TokenType.EXISTS)
    +1037        if self._match_set(Tokenizer.COMMANDS):
    +1038            return self._parse_command()
    +1039
    +1040        expression = self._parse_expression()
    +1041        expression = self._parse_set_operations(expression) if expression else self._parse_select()
    +1042
    +1043        self._parse_query_modifiers(expression)
    +1044        return expression
    +1045
    +1046    def _parse_drop(self) -> t.Optional[exp.Drop | exp.Command]:
    +1047        start = self._prev
    +1048        temporary = self._match(TokenType.TEMPORARY)
    +1049        materialized = self._match(TokenType.MATERIALIZED)
    +1050        kind = self._match_set(self.CREATABLES) and self._prev.text
    +1051        if not kind:
    +1052            return self._parse_as_command(start)
    +1053
    +1054        return self.expression(
    +1055            exp.Drop,
    +1056            exists=self._parse_exists(),
    +1057            this=self._parse_table(schema=True),
    +1058            kind=kind,
    +1059            temporary=temporary,
    +1060            materialized=materialized,
    +1061            cascade=self._match(TokenType.CASCADE),
    +1062            constraints=self._match_text_seq("CONSTRAINTS"),
    +1063            purge=self._match_text_seq("PURGE"),
     1064        )
     1065
    -1066    def _parse_create(self) -> t.Optional[exp.Expression]:
    -1067        start = self._prev
    -1068        replace = self._prev.text.upper() == "REPLACE" or self._match_pair(
    -1069            TokenType.OR, TokenType.REPLACE
    -1070        )
    -1071        unique = self._match(TokenType.UNIQUE)
    -1072        volatile = self._match(TokenType.VOLATILE)
    -1073
    -1074        if self._match_pair(TokenType.TABLE, TokenType.FUNCTION, advance=False):
    -1075            self._match(TokenType.TABLE)
    -1076
    -1077        properties = None
    -1078        create_token = self._match_set(self.CREATABLES) and self._prev
    +1066    def _parse_exists(self, not_: bool = False) -> t.Optional[bool]:
    +1067        return (
    +1068            self._match(TokenType.IF)
    +1069            and (not not_ or self._match(TokenType.NOT))
    +1070            and self._match(TokenType.EXISTS)
    +1071        )
    +1072
    +1073    def _parse_create(self) -> t.Optional[exp.Expression]:
    +1074        start = self._prev
    +1075        replace = self._prev.text.upper() == "REPLACE" or self._match_pair(
    +1076            TokenType.OR, TokenType.REPLACE
    +1077        )
    +1078        unique = self._match(TokenType.UNIQUE)
     1079
    -1080        if not create_token:
    -1081            properties = self._parse_properties()  # exp.Properties.Location.POST_CREATE
    -1082            create_token = self._match_set(self.CREATABLES) and self._prev
    -1083
    -1084            if not properties or not create_token:
    -1085                return self._parse_as_command(start)
    -1086
    -1087        exists = self._parse_exists(not_=True)
    -1088        this = None
    -1089        expression = None
    -1090        indexes = None
    -1091        no_schema_binding = None
    -1092        begin = None
    -1093
    -1094        if create_token.token_type in (TokenType.FUNCTION, TokenType.PROCEDURE):
    -1095            this = self._parse_user_defined_function(kind=create_token.token_type)
    -1096            temp_properties = self._parse_properties()
    -1097            if properties and temp_properties:
    -1098                properties.expressions.extend(temp_properties.expressions)
    -1099            elif temp_properties:
    -1100                properties = temp_properties
    -1101
    -1102            self._match(TokenType.ALIAS)
    -1103            begin = self._match(TokenType.BEGIN)
    -1104            return_ = self._match_text_seq("RETURN")
    -1105            expression = self._parse_statement()
    -1106
    -1107            if return_:
    -1108                expression = self.expression(exp.Return, this=expression)
    -1109        elif create_token.token_type == TokenType.INDEX:
    -1110            this = self._parse_index()
    -1111        elif create_token.token_type in self.DB_CREATABLES:
    -1112            table_parts = self._parse_table_parts(schema=True)
    -1113
    -1114            # exp.Properties.Location.POST_NAME
    -1115            if self._match(TokenType.COMMA):
    -1116                temp_properties = self._parse_properties(before=True)
    -1117                if properties and temp_properties:
    -1118                    properties.expressions.extend(temp_properties.expressions)
    -1119                elif temp_properties:
    -1120                    properties = temp_properties
    -1121
    -1122            this = self._parse_schema(this=table_parts)
    -1123
    -1124            # exp.Properties.Location.POST_SCHEMA and POST_WITH
    -1125            temp_properties = self._parse_properties()
    -1126            if properties and temp_properties:
    -1127                properties.expressions.extend(temp_properties.expressions)
    -1128            elif temp_properties:
    -1129                properties = temp_properties
    -1130
    -1131            self._match(TokenType.ALIAS)
    -1132
    -1133            # exp.Properties.Location.POST_ALIAS
    -1134            if not (
    -1135                self._match(TokenType.SELECT, advance=False)
    -1136                or self._match(TokenType.WITH, advance=False)
    -1137                or self._match(TokenType.L_PAREN, advance=False)
    -1138            ):
    -1139                temp_properties = self._parse_properties()
    -1140                if properties and temp_properties:
    -1141                    properties.expressions.extend(temp_properties.expressions)
    -1142                elif temp_properties:
    -1143                    properties = temp_properties
    -1144
    -1145            expression = self._parse_ddl_select()
    -1146
    -1147            if create_token.token_type == TokenType.TABLE:
    -1148                # exp.Properties.Location.POST_EXPRESSION
    -1149                temp_properties = self._parse_properties()
    -1150                if properties and temp_properties:
    -1151                    properties.expressions.extend(temp_properties.expressions)
    -1152                elif temp_properties:
    -1153                    properties = temp_properties
    -1154
    -1155                indexes = []
    -1156                while True:
    -1157                    index = self._parse_create_table_index()
    -1158
    -1159                    # exp.Properties.Location.POST_INDEX
    -1160                    if self._match(TokenType.PARTITION_BY, advance=False):
    -1161                        temp_properties = self._parse_properties()
    -1162                        if properties and temp_properties:
    -1163                            properties.expressions.extend(temp_properties.expressions)
    -1164                        elif temp_properties:
    -1165                            properties = temp_properties
    -1166
    -1167                    if not index:
    -1168                        break
    -1169                    else:
    -1170                        indexes.append(index)
    -1171            elif create_token.token_type == TokenType.VIEW:
    -1172                if self._match_text_seq("WITH", "NO", "SCHEMA", "BINDING"):
    -1173                    no_schema_binding = True
    -1174
    -1175        return self.expression(
    -1176            exp.Create,
    -1177            this=this,
    -1178            kind=create_token.text,
    -1179            replace=replace,
    -1180            unique=unique,
    -1181            volatile=volatile,
    -1182            expression=expression,
    -1183            exists=exists,
    -1184            properties=properties,
    -1185            indexes=indexes,
    -1186            no_schema_binding=no_schema_binding,
    -1187            begin=begin,
    -1188        )
    -1189
    -1190    def _parse_property_before(self) -> t.Optional[exp.Expression]:
    -1191        self._match(TokenType.COMMA)
    -1192
    -1193        # parsers look to _prev for no/dual/default, so need to consume first
    -1194        self._match_text_seq("NO")
    -1195        self._match_text_seq("DUAL")
    -1196        self._match_text_seq("DEFAULT")
    +1080        if self._match_pair(TokenType.TABLE, TokenType.FUNCTION, advance=False):
    +1081            self._match(TokenType.TABLE)
    +1082
    +1083        properties = None
    +1084        create_token = self._match_set(self.CREATABLES) and self._prev
    +1085
    +1086        if not create_token:
    +1087            properties = self._parse_properties()  # exp.Properties.Location.POST_CREATE
    +1088            create_token = self._match_set(self.CREATABLES) and self._prev
    +1089
    +1090            if not properties or not create_token:
    +1091                return self._parse_as_command(start)
    +1092
    +1093        exists = self._parse_exists(not_=True)
    +1094        this = None
    +1095        expression = None
    +1096        indexes = None
    +1097        no_schema_binding = None
    +1098        begin = None
    +1099
    +1100        if create_token.token_type in (TokenType.FUNCTION, TokenType.PROCEDURE):
    +1101            this = self._parse_user_defined_function(kind=create_token.token_type)
    +1102            temp_properties = self._parse_properties()
    +1103            if properties and temp_properties:
    +1104                properties.expressions.extend(temp_properties.expressions)
    +1105            elif temp_properties:
    +1106                properties = temp_properties
    +1107
    +1108            self._match(TokenType.ALIAS)
    +1109            begin = self._match(TokenType.BEGIN)
    +1110            return_ = self._match_text_seq("RETURN")
    +1111            expression = self._parse_statement()
    +1112
    +1113            if return_:
    +1114                expression = self.expression(exp.Return, this=expression)
    +1115        elif create_token.token_type == TokenType.INDEX:
    +1116            this = self._parse_index()
    +1117        elif create_token.token_type in self.DB_CREATABLES:
    +1118            table_parts = self._parse_table_parts(schema=True)
    +1119
    +1120            # exp.Properties.Location.POST_NAME
    +1121            if self._match(TokenType.COMMA):
    +1122                temp_properties = self._parse_properties(before=True)
    +1123                if properties and temp_properties:
    +1124                    properties.expressions.extend(temp_properties.expressions)
    +1125                elif temp_properties:
    +1126                    properties = temp_properties
    +1127
    +1128            this = self._parse_schema(this=table_parts)
    +1129
    +1130            # exp.Properties.Location.POST_SCHEMA and POST_WITH
    +1131            temp_properties = self._parse_properties()
    +1132            if properties and temp_properties:
    +1133                properties.expressions.extend(temp_properties.expressions)
    +1134            elif temp_properties:
    +1135                properties = temp_properties
    +1136
    +1137            self._match(TokenType.ALIAS)
    +1138
    +1139            # exp.Properties.Location.POST_ALIAS
    +1140            if not (
    +1141                self._match(TokenType.SELECT, advance=False)
    +1142                or self._match(TokenType.WITH, advance=False)
    +1143                or self._match(TokenType.L_PAREN, advance=False)
    +1144            ):
    +1145                temp_properties = self._parse_properties()
    +1146                if properties and temp_properties:
    +1147                    properties.expressions.extend(temp_properties.expressions)
    +1148                elif temp_properties:
    +1149                    properties = temp_properties
    +1150
    +1151            expression = self._parse_ddl_select()
    +1152
    +1153            if create_token.token_type == TokenType.TABLE:
    +1154                # exp.Properties.Location.POST_EXPRESSION
    +1155                temp_properties = self._parse_properties()
    +1156                if properties and temp_properties:
    +1157                    properties.expressions.extend(temp_properties.expressions)
    +1158                elif temp_properties:
    +1159                    properties = temp_properties
    +1160
    +1161                indexes = []
    +1162                while True:
    +1163                    index = self._parse_create_table_index()
    +1164
    +1165                    # exp.Properties.Location.POST_INDEX
    +1166                    if self._match(TokenType.PARTITION_BY, advance=False):
    +1167                        temp_properties = self._parse_properties()
    +1168                        if properties and temp_properties:
    +1169                            properties.expressions.extend(temp_properties.expressions)
    +1170                        elif temp_properties:
    +1171                            properties = temp_properties
    +1172
    +1173                    if not index:
    +1174                        break
    +1175                    else:
    +1176                        indexes.append(index)
    +1177            elif create_token.token_type == TokenType.VIEW:
    +1178                if self._match_text_seq("WITH", "NO", "SCHEMA", "BINDING"):
    +1179                    no_schema_binding = True
    +1180
    +1181        return self.expression(
    +1182            exp.Create,
    +1183            this=this,
    +1184            kind=create_token.text,
    +1185            replace=replace,
    +1186            unique=unique,
    +1187            expression=expression,
    +1188            exists=exists,
    +1189            properties=properties,
    +1190            indexes=indexes,
    +1191            no_schema_binding=no_schema_binding,
    +1192            begin=begin,
    +1193        )
    +1194
    +1195    def _parse_property_before(self) -> t.Optional[exp.Expression]:
    +1196        self._match(TokenType.COMMA)
     1197
    -1198        if self.PROPERTY_PARSERS.get(self._curr.text.upper()):
    -1199            return self.PROPERTY_PARSERS[self._curr.text.upper()](self)
    -1200
    -1201        return None
    +1198        # parsers look to _prev for no/dual/default, so need to consume first
    +1199        self._match_text_seq("NO")
    +1200        self._match_text_seq("DUAL")
    +1201        self._match_text_seq("DEFAULT")
     1202
    -1203    def _parse_property(self) -> t.Optional[exp.Expression]:
    -1204        if self._match_texts(self.PROPERTY_PARSERS):
    -1205            return self.PROPERTY_PARSERS[self._prev.text.upper()](self)
    -1206
    -1207        if self._match_pair(TokenType.DEFAULT, TokenType.CHARACTER_SET):
    -1208            return self._parse_character_set(default=True)
    -1209
    -1210        if self._match_pair(TokenType.COMPOUND, TokenType.SORTKEY):
    -1211            return self._parse_sortkey(compound=True)
    -1212
    -1213        if self._match_text_seq("SQL", "SECURITY"):
    -1214            return self.expression(exp.SqlSecurityProperty, definer=self._match_text_seq("DEFINER"))
    -1215
    -1216        assignment = self._match_pair(
    -1217            TokenType.VAR, TokenType.EQ, advance=False
    -1218        ) or self._match_pair(TokenType.STRING, TokenType.EQ, advance=False)
    -1219
    -1220        if assignment:
    -1221            key = self._parse_var_or_string()
    -1222            self._match(TokenType.EQ)
    -1223            return self.expression(exp.Property, this=key, value=self._parse_column())
    +1203        if self.PROPERTY_PARSERS.get(self._curr.text.upper()):
    +1204            return self.PROPERTY_PARSERS[self._curr.text.upper()](self)
    +1205
    +1206        return None
    +1207
    +1208    def _parse_property(self) -> t.Optional[exp.Expression]:
    +1209        if self._match_texts(self.PROPERTY_PARSERS):
    +1210            return self.PROPERTY_PARSERS[self._prev.text.upper()](self)
    +1211
    +1212        if self._match_pair(TokenType.DEFAULT, TokenType.CHARACTER_SET):
    +1213            return self._parse_character_set(default=True)
    +1214
    +1215        if self._match_pair(TokenType.COMPOUND, TokenType.SORTKEY):
    +1216            return self._parse_sortkey(compound=True)
    +1217
    +1218        if self._match_text_seq("SQL", "SECURITY"):
    +1219            return self.expression(exp.SqlSecurityProperty, definer=self._match_text_seq("DEFINER"))
    +1220
    +1221        assignment = self._match_pair(
    +1222            TokenType.VAR, TokenType.EQ, advance=False
    +1223        ) or self._match_pair(TokenType.STRING, TokenType.EQ, advance=False)
     1224
    -1225        return None
    -1226
    -1227    def _parse_property_assignment(self, exp_class: t.Type[exp.Expression]) -> exp.Expression:
    -1228        self._match(TokenType.EQ)
    -1229        self._match(TokenType.ALIAS)
    -1230        return self.expression(
    -1231            exp_class,
    -1232            this=self._parse_var_or_string() or self._parse_number() or self._parse_id_var(),
    -1233        )
    +1225        if assignment:
    +1226            key = self._parse_var_or_string()
    +1227            self._match(TokenType.EQ)
    +1228            return self.expression(exp.Property, this=key, value=self._parse_column())
    +1229
    +1230        return None
    +1231
    +1232    def _parse_stored(self) -> exp.Expression:
    +1233        self._match(TokenType.ALIAS)
     1234
    -1235    def _parse_properties(self, before=None) -> t.Optional[exp.Expression]:
    -1236        properties = []
    +1235        input_format = self._parse_string() if self._match_text_seq("INPUTFORMAT") else None
    +1236        output_format = self._parse_string() if self._match_text_seq("OUTPUTFORMAT") else None
     1237
    -1238        while True:
    -1239            if before:
    -1240                identified_property = self._parse_property_before()
    -1241            else:
    -1242                identified_property = self._parse_property()
    -1243
    -1244            if not identified_property:
    -1245                break
    -1246            for p in ensure_list(identified_property):
    -1247                properties.append(p)
    -1248
    -1249        if properties:
    -1250            return self.expression(exp.Properties, expressions=properties)
    -1251
    -1252        return None
    -1253
    -1254    def _parse_fallback(self, no=False) -> exp.Expression:
    -1255        self._match_text_seq("FALLBACK")
    -1256        return self.expression(
    -1257            exp.FallbackProperty, no=no, protection=self._match_text_seq("PROTECTION")
    -1258        )
    -1259
    -1260    def _parse_with_property(
    -1261        self,
    -1262    ) -> t.Union[t.Optional[exp.Expression], t.List[t.Optional[exp.Expression]]]:
    -1263        self._match(TokenType.WITH)
    -1264        if self._match(TokenType.L_PAREN, advance=False):
    -1265            return self._parse_wrapped_csv(self._parse_property)
    -1266
    -1267        if self._match_text_seq("JOURNAL"):
    -1268            return self._parse_withjournaltable()
    -1269
    -1270        if self._match_text_seq("DATA"):
    -1271            return self._parse_withdata(no=False)
    -1272        elif self._match_text_seq("NO", "DATA"):
    -1273            return self._parse_withdata(no=True)
    -1274
    -1275        if not self._next:
    -1276            return None
    -1277
    -1278        return self._parse_withisolatedloading()
    +1238        return self.expression(
    +1239            exp.FileFormatProperty,
    +1240            this=self.expression(
    +1241                exp.InputOutputFormat, input_format=input_format, output_format=output_format
    +1242            )
    +1243            if input_format or output_format
    +1244            else self._parse_var_or_string() or self._parse_number() or self._parse_id_var(),
    +1245        )
    +1246
    +1247    def _parse_property_assignment(self, exp_class: t.Type[exp.Expression]) -> exp.Expression:
    +1248        self._match(TokenType.EQ)
    +1249        self._match(TokenType.ALIAS)
    +1250        return self.expression(
    +1251            exp_class,
    +1252            this=self._parse_var_or_string() or self._parse_number() or self._parse_id_var(),
    +1253        )
    +1254
    +1255    def _parse_properties(self, before=None) -> t.Optional[exp.Expression]:
    +1256        properties = []
    +1257
    +1258        while True:
    +1259            if before:
    +1260                identified_property = self._parse_property_before()
    +1261            else:
    +1262                identified_property = self._parse_property()
    +1263
    +1264            if not identified_property:
    +1265                break
    +1266            for p in ensure_list(identified_property):
    +1267                properties.append(p)
    +1268
    +1269        if properties:
    +1270            return self.expression(exp.Properties, expressions=properties)
    +1271
    +1272        return None
    +1273
    +1274    def _parse_fallback(self, no=False) -> exp.Expression:
    +1275        self._match_text_seq("FALLBACK")
    +1276        return self.expression(
    +1277            exp.FallbackProperty, no=no, protection=self._match_text_seq("PROTECTION")
    +1278        )
     1279
    -1280    # https://dev.mysql.com/doc/refman/8.0/en/create-view.html
    -1281    def _parse_definer(self) -> t.Optional[exp.Expression]:
    -1282        self._match(TokenType.EQ)
    -1283
    -1284        user = self._parse_id_var()
    -1285        self._match(TokenType.PARAMETER)
    -1286        host = self._parse_id_var() or (self._match(TokenType.MOD) and self._prev.text)
    -1287
    -1288        if not user or not host:
    -1289            return None
    -1290
    -1291        return exp.DefinerProperty(this=f"{user}@{host}")
    +1280    def _parse_volatile_property(self) -> exp.Expression:
    +1281        if self._index >= 2:
    +1282            pre_volatile_token = self._tokens[self._index - 2]
    +1283        else:
    +1284            pre_volatile_token = None
    +1285
    +1286        if pre_volatile_token and pre_volatile_token.token_type in (
    +1287            TokenType.CREATE,
    +1288            TokenType.REPLACE,
    +1289            TokenType.UNIQUE,
    +1290        ):
    +1291            return exp.VolatileProperty()
     1292
    -1293    def _parse_withjournaltable(self) -> exp.Expression:
    -1294        self._match(TokenType.TABLE)
    -1295        self._match(TokenType.EQ)
    -1296        return self.expression(exp.WithJournalTableProperty, this=self._parse_table_parts())
    -1297
    -1298    def _parse_log(self, no=False) -> exp.Expression:
    -1299        self._match_text_seq("LOG")
    -1300        return self.expression(exp.LogProperty, no=no)
    +1293        return self.expression(exp.StabilityProperty, this=exp.Literal.string("VOLATILE"))
    +1294
    +1295    def _parse_with_property(
    +1296        self,
    +1297    ) -> t.Union[t.Optional[exp.Expression], t.List[t.Optional[exp.Expression]]]:
    +1298        self._match(TokenType.WITH)
    +1299        if self._match(TokenType.L_PAREN, advance=False):
    +1300            return self._parse_wrapped_csv(self._parse_property)
     1301
    -1302    def _parse_journal(self, no=False, dual=False) -> exp.Expression:
    -1303        before = self._match_text_seq("BEFORE")
    -1304        self._match_text_seq("JOURNAL")
    -1305        return self.expression(exp.JournalProperty, no=no, dual=dual, before=before)
    -1306
    -1307    def _parse_afterjournal(self, no=False, dual=False, local=None) -> exp.Expression:
    -1308        self._match_text_seq("NOT")
    -1309        self._match_text_seq("LOCAL")
    -1310        self._match_text_seq("AFTER", "JOURNAL")
    -1311        return self.expression(exp.AfterJournalProperty, no=no, dual=dual, local=local)
    +1302        if self._match_text_seq("JOURNAL"):
    +1303            return self._parse_withjournaltable()
    +1304
    +1305        if self._match_text_seq("DATA"):
    +1306            return self._parse_withdata(no=False)
    +1307        elif self._match_text_seq("NO", "DATA"):
    +1308            return self._parse_withdata(no=True)
    +1309
    +1310        if not self._next:
    +1311            return None
     1312
    -1313    def _parse_checksum(self) -> exp.Expression:
    -1314        self._match_text_seq("CHECKSUM")
    -1315        self._match(TokenType.EQ)
    -1316
    -1317        on = None
    -1318        if self._match(TokenType.ON):
    -1319            on = True
    -1320        elif self._match_text_seq("OFF"):
    -1321            on = False
    -1322        default = self._match(TokenType.DEFAULT)
    -1323
    -1324        return self.expression(
    -1325            exp.ChecksumProperty,
    -1326            on=on,
    -1327            default=default,
    -1328        )
    -1329
    -1330    def _parse_freespace(self) -> exp.Expression:
    -1331        self._match_text_seq("FREESPACE")
    -1332        self._match(TokenType.EQ)
    -1333        return self.expression(
    -1334            exp.FreespaceProperty, this=self._parse_number(), percent=self._match(TokenType.PERCENT)
    -1335        )
    +1313        return self._parse_withisolatedloading()
    +1314
    +1315    # https://dev.mysql.com/doc/refman/8.0/en/create-view.html
    +1316    def _parse_definer(self) -> t.Optional[exp.Expression]:
    +1317        self._match(TokenType.EQ)
    +1318
    +1319        user = self._parse_id_var()
    +1320        self._match(TokenType.PARAMETER)
    +1321        host = self._parse_id_var() or (self._match(TokenType.MOD) and self._prev.text)
    +1322
    +1323        if not user or not host:
    +1324            return None
    +1325
    +1326        return exp.DefinerProperty(this=f"{user}@{host}")
    +1327
    +1328    def _parse_withjournaltable(self) -> exp.Expression:
    +1329        self._match(TokenType.TABLE)
    +1330        self._match(TokenType.EQ)
    +1331        return self.expression(exp.WithJournalTableProperty, this=self._parse_table_parts())
    +1332
    +1333    def _parse_log(self, no=False) -> exp.Expression:
    +1334        self._match_text_seq("LOG")
    +1335        return self.expression(exp.LogProperty, no=no)
     1336
    -1337    def _parse_mergeblockratio(self, no=False, default=False) -> exp.Expression:
    -1338        self._match_text_seq("MERGEBLOCKRATIO")
    -1339        if self._match(TokenType.EQ):
    -1340            return self.expression(
    -1341                exp.MergeBlockRatioProperty,
    -1342                this=self._parse_number(),
    -1343                percent=self._match(TokenType.PERCENT),
    -1344            )
    -1345        else:
    -1346            return self.expression(
    -1347                exp.MergeBlockRatioProperty,
    -1348                no=no,
    -1349                default=default,
    -1350            )
    +1337    def _parse_journal(self, no=False, dual=False) -> exp.Expression:
    +1338        before = self._match_text_seq("BEFORE")
    +1339        self._match_text_seq("JOURNAL")
    +1340        return self.expression(exp.JournalProperty, no=no, dual=dual, before=before)
    +1341
    +1342    def _parse_afterjournal(self, no=False, dual=False, local=None) -> exp.Expression:
    +1343        self._match_text_seq("NOT")
    +1344        self._match_text_seq("LOCAL")
    +1345        self._match_text_seq("AFTER", "JOURNAL")
    +1346        return self.expression(exp.AfterJournalProperty, no=no, dual=dual, local=local)
    +1347
    +1348    def _parse_checksum(self) -> exp.Expression:
    +1349        self._match_text_seq("CHECKSUM")
    +1350        self._match(TokenType.EQ)
     1351
    -1352    def _parse_datablocksize(self, default=None) -> exp.Expression:
    -1353        if default:
    -1354            self._match_text_seq("DATABLOCKSIZE")
    -1355            return self.expression(exp.DataBlocksizeProperty, default=True)
    -1356        elif self._match_texts(("MIN", "MINIMUM")):
    -1357            self._match_text_seq("DATABLOCKSIZE")
    -1358            return self.expression(exp.DataBlocksizeProperty, min=True)
    -1359        elif self._match_texts(("MAX", "MAXIMUM")):
    -1360            self._match_text_seq("DATABLOCKSIZE")
    -1361            return self.expression(exp.DataBlocksizeProperty, min=False)
    -1362
    -1363        self._match_text_seq("DATABLOCKSIZE")
    -1364        self._match(TokenType.EQ)
    -1365        size = self._parse_number()
    -1366        units = None
    -1367        if self._match_texts(("BYTES", "KBYTES", "KILOBYTES")):
    -1368            units = self._prev.text
    -1369        return self.expression(exp.DataBlocksizeProperty, size=size, units=units)
    -1370
    -1371    def _parse_blockcompression(self) -> exp.Expression:
    -1372        self._match_text_seq("BLOCKCOMPRESSION")
    -1373        self._match(TokenType.EQ)
    -1374        always = self._match_text_seq("ALWAYS")
    -1375        manual = self._match_text_seq("MANUAL")
    -1376        never = self._match_text_seq("NEVER")
    -1377        default = self._match_text_seq("DEFAULT")
    -1378        autotemp = None
    -1379        if self._match_text_seq("AUTOTEMP"):
    -1380            autotemp = self._parse_schema()
    -1381
    -1382        return self.expression(
    -1383            exp.BlockCompressionProperty,
    -1384            always=always,
    -1385            manual=manual,
    -1386            never=never,
    -1387            default=default,
    -1388            autotemp=autotemp,
    -1389        )
    -1390
    -1391    def _parse_withisolatedloading(self) -> exp.Expression:
    -1392        no = self._match_text_seq("NO")
    -1393        concurrent = self._match_text_seq("CONCURRENT")
    -1394        self._match_text_seq("ISOLATED", "LOADING")
    -1395        for_all = self._match_text_seq("FOR", "ALL")
    -1396        for_insert = self._match_text_seq("FOR", "INSERT")
    -1397        for_none = self._match_text_seq("FOR", "NONE")
    -1398        return self.expression(
    -1399            exp.IsolatedLoadingProperty,
    -1400            no=no,
    -1401            concurrent=concurrent,
    -1402            for_all=for_all,
    -1403            for_insert=for_insert,
    -1404            for_none=for_none,
    -1405        )
    -1406
    -1407    def _parse_locking(self) -> exp.Expression:
    -1408        if self._match(TokenType.TABLE):
    -1409            kind = "TABLE"
    -1410        elif self._match(TokenType.VIEW):
    -1411            kind = "VIEW"
    -1412        elif self._match(TokenType.ROW):
    -1413            kind = "ROW"
    -1414        elif self._match_text_seq("DATABASE"):
    -1415            kind = "DATABASE"
    -1416        else:
    -1417            kind = None
    -1418
    -1419        if kind in ("DATABASE", "TABLE", "VIEW"):
    -1420            this = self._parse_table_parts()
    -1421        else:
    -1422            this = None
    -1423
    -1424        if self._match(TokenType.FOR):
    -1425            for_or_in = "FOR"
    -1426        elif self._match(TokenType.IN):
    -1427            for_or_in = "IN"
    -1428        else:
    -1429            for_or_in = None
    -1430
    -1431        if self._match_text_seq("ACCESS"):
    -1432            lock_type = "ACCESS"
    -1433        elif self._match_texts(("EXCL", "EXCLUSIVE")):
    -1434            lock_type = "EXCLUSIVE"
    -1435        elif self._match_text_seq("SHARE"):
    -1436            lock_type = "SHARE"
    -1437        elif self._match_text_seq("READ"):
    -1438            lock_type = "READ"
    -1439        elif self._match_text_seq("WRITE"):
    -1440            lock_type = "WRITE"
    -1441        elif self._match_text_seq("CHECKSUM"):
    -1442            lock_type = "CHECKSUM"
    -1443        else:
    -1444            lock_type = None
    -1445
    -1446        override = self._match_text_seq("OVERRIDE")
    -1447
    -1448        return self.expression(
    -1449            exp.LockingProperty,
    -1450            this=this,
    -1451            kind=kind,
    -1452            for_or_in=for_or_in,
    -1453            lock_type=lock_type,
    -1454            override=override,
    -1455        )
    -1456
    -1457    def _parse_partition_by(self) -> t.List[t.Optional[exp.Expression]]:
    -1458        if self._match(TokenType.PARTITION_BY):
    -1459            return self._parse_csv(self._parse_conjunction)
    -1460        return []
    -1461
    -1462    def _parse_partitioned_by(self) -> exp.Expression:
    -1463        self._match(TokenType.EQ)
    -1464        return self.expression(
    -1465            exp.PartitionedByProperty,
    -1466            this=self._parse_schema() or self._parse_bracket(self._parse_field()),
    -1467        )
    -1468
    -1469    def _parse_withdata(self, no=False) -> exp.Expression:
    -1470        if self._match_text_seq("AND", "STATISTICS"):
    -1471            statistics = True
    -1472        elif self._match_text_seq("AND", "NO", "STATISTICS"):
    -1473            statistics = False
    -1474        else:
    -1475            statistics = None
    -1476
    -1477        return self.expression(exp.WithDataProperty, no=no, statistics=statistics)
    -1478
    -1479    def _parse_noprimaryindex(self) -> exp.Expression:
    -1480        self._match_text_seq("PRIMARY", "INDEX")
    -1481        return exp.NoPrimaryIndexProperty()
    +1352        on = None
    +1353        if self._match(TokenType.ON):
    +1354            on = True
    +1355        elif self._match_text_seq("OFF"):
    +1356            on = False
    +1357        default = self._match(TokenType.DEFAULT)
    +1358
    +1359        return self.expression(
    +1360            exp.ChecksumProperty,
    +1361            on=on,
    +1362            default=default,
    +1363        )
    +1364
    +1365    def _parse_freespace(self) -> exp.Expression:
    +1366        self._match_text_seq("FREESPACE")
    +1367        self._match(TokenType.EQ)
    +1368        return self.expression(
    +1369            exp.FreespaceProperty, this=self._parse_number(), percent=self._match(TokenType.PERCENT)
    +1370        )
    +1371
    +1372    def _parse_mergeblockratio(self, no=False, default=False) -> exp.Expression:
    +1373        self._match_text_seq("MERGEBLOCKRATIO")
    +1374        if self._match(TokenType.EQ):
    +1375            return self.expression(
    +1376                exp.MergeBlockRatioProperty,
    +1377                this=self._parse_number(),
    +1378                percent=self._match(TokenType.PERCENT),
    +1379            )
    +1380        else:
    +1381            return self.expression(
    +1382                exp.MergeBlockRatioProperty,
    +1383                no=no,
    +1384                default=default,
    +1385            )
    +1386
    +1387    def _parse_datablocksize(self, default=None) -> exp.Expression:
    +1388        if default:
    +1389            self._match_text_seq("DATABLOCKSIZE")
    +1390            return self.expression(exp.DataBlocksizeProperty, default=True)
    +1391        elif self._match_texts(("MIN", "MINIMUM")):
    +1392            self._match_text_seq("DATABLOCKSIZE")
    +1393            return self.expression(exp.DataBlocksizeProperty, min=True)
    +1394        elif self._match_texts(("MAX", "MAXIMUM")):
    +1395            self._match_text_seq("DATABLOCKSIZE")
    +1396            return self.expression(exp.DataBlocksizeProperty, min=False)
    +1397
    +1398        self._match_text_seq("DATABLOCKSIZE")
    +1399        self._match(TokenType.EQ)
    +1400        size = self._parse_number()
    +1401        units = None
    +1402        if self._match_texts(("BYTES", "KBYTES", "KILOBYTES")):
    +1403            units = self._prev.text
    +1404        return self.expression(exp.DataBlocksizeProperty, size=size, units=units)
    +1405
    +1406    def _parse_blockcompression(self) -> exp.Expression:
    +1407        self._match_text_seq("BLOCKCOMPRESSION")
    +1408        self._match(TokenType.EQ)
    +1409        always = self._match_text_seq("ALWAYS")
    +1410        manual = self._match_text_seq("MANUAL")
    +1411        never = self._match_text_seq("NEVER")
    +1412        default = self._match_text_seq("DEFAULT")
    +1413        autotemp = None
    +1414        if self._match_text_seq("AUTOTEMP"):
    +1415            autotemp = self._parse_schema()
    +1416
    +1417        return self.expression(
    +1418            exp.BlockCompressionProperty,
    +1419            always=always,
    +1420            manual=manual,
    +1421            never=never,
    +1422            default=default,
    +1423            autotemp=autotemp,
    +1424        )
    +1425
    +1426    def _parse_withisolatedloading(self) -> exp.Expression:
    +1427        no = self._match_text_seq("NO")
    +1428        concurrent = self._match_text_seq("CONCURRENT")
    +1429        self._match_text_seq("ISOLATED", "LOADING")
    +1430        for_all = self._match_text_seq("FOR", "ALL")
    +1431        for_insert = self._match_text_seq("FOR", "INSERT")
    +1432        for_none = self._match_text_seq("FOR", "NONE")
    +1433        return self.expression(
    +1434            exp.IsolatedLoadingProperty,
    +1435            no=no,
    +1436            concurrent=concurrent,
    +1437            for_all=for_all,
    +1438            for_insert=for_insert,
    +1439            for_none=for_none,
    +1440        )
    +1441
    +1442    def _parse_locking(self) -> exp.Expression:
    +1443        if self._match(TokenType.TABLE):
    +1444            kind = "TABLE"
    +1445        elif self._match(TokenType.VIEW):
    +1446            kind = "VIEW"
    +1447        elif self._match(TokenType.ROW):
    +1448            kind = "ROW"
    +1449        elif self._match_text_seq("DATABASE"):
    +1450            kind = "DATABASE"
    +1451        else:
    +1452            kind = None
    +1453
    +1454        if kind in ("DATABASE", "TABLE", "VIEW"):
    +1455            this = self._parse_table_parts()
    +1456        else:
    +1457            this = None
    +1458
    +1459        if self._match(TokenType.FOR):
    +1460            for_or_in = "FOR"
    +1461        elif self._match(TokenType.IN):
    +1462            for_or_in = "IN"
    +1463        else:
    +1464            for_or_in = None
    +1465
    +1466        if self._match_text_seq("ACCESS"):
    +1467            lock_type = "ACCESS"
    +1468        elif self._match_texts(("EXCL", "EXCLUSIVE")):
    +1469            lock_type = "EXCLUSIVE"
    +1470        elif self._match_text_seq("SHARE"):
    +1471            lock_type = "SHARE"
    +1472        elif self._match_text_seq("READ"):
    +1473            lock_type = "READ"
    +1474        elif self._match_text_seq("WRITE"):
    +1475            lock_type = "WRITE"
    +1476        elif self._match_text_seq("CHECKSUM"):
    +1477            lock_type = "CHECKSUM"
    +1478        else:
    +1479            lock_type = None
    +1480
    +1481        override = self._match_text_seq("OVERRIDE")
     1482
    -1483    def _parse_oncommit(self) -> exp.Expression:
    -1484        self._match_text_seq("COMMIT", "PRESERVE", "ROWS")
    -1485        return exp.OnCommitProperty()
    -1486
    -1487    def _parse_distkey(self) -> exp.Expression:
    -1488        return self.expression(exp.DistKeyProperty, this=self._parse_wrapped(self._parse_id_var))
    -1489
    -1490    def _parse_create_like(self) -> t.Optional[exp.Expression]:
    -1491        table = self._parse_table(schema=True)
    -1492        options = []
    -1493        while self._match_texts(("INCLUDING", "EXCLUDING")):
    -1494            this = self._prev.text.upper()
    -1495            id_var = self._parse_id_var()
    +1483        return self.expression(
    +1484            exp.LockingProperty,
    +1485            this=this,
    +1486            kind=kind,
    +1487            for_or_in=for_or_in,
    +1488            lock_type=lock_type,
    +1489            override=override,
    +1490        )
    +1491
    +1492    def _parse_partition_by(self) -> t.List[t.Optional[exp.Expression]]:
    +1493        if self._match(TokenType.PARTITION_BY):
    +1494            return self._parse_csv(self._parse_conjunction)
    +1495        return []
     1496
    -1497            if not id_var:
    -1498                return None
    -1499
    -1500            options.append(
    -1501                self.expression(
    -1502                    exp.Property,
    -1503                    this=this,
    -1504                    value=exp.Var(this=id_var.this.upper()),
    -1505                )
    -1506            )
    -1507        return self.expression(exp.LikeProperty, this=table, expressions=options)
    -1508
    -1509    def _parse_sortkey(self, compound: bool = False) -> exp.Expression:
    -1510        return self.expression(
    -1511            exp.SortKeyProperty, this=self._parse_wrapped_csv(self._parse_id_var), compound=compound
    -1512        )
    +1497    def _parse_partitioned_by(self) -> exp.Expression:
    +1498        self._match(TokenType.EQ)
    +1499        return self.expression(
    +1500            exp.PartitionedByProperty,
    +1501            this=self._parse_schema() or self._parse_bracket(self._parse_field()),
    +1502        )
    +1503
    +1504    def _parse_withdata(self, no=False) -> exp.Expression:
    +1505        if self._match_text_seq("AND", "STATISTICS"):
    +1506            statistics = True
    +1507        elif self._match_text_seq("AND", "NO", "STATISTICS"):
    +1508            statistics = False
    +1509        else:
    +1510            statistics = None
    +1511
    +1512        return self.expression(exp.WithDataProperty, no=no, statistics=statistics)
     1513
    -1514    def _parse_character_set(self, default: bool = False) -> exp.Expression:
    -1515        self._match(TokenType.EQ)
    -1516        return self.expression(
    -1517            exp.CharacterSetProperty, this=self._parse_var_or_string(), default=default
    -1518        )
    -1519
    -1520    def _parse_returns(self) -> exp.Expression:
    -1521        value: t.Optional[exp.Expression]
    -1522        is_table = self._match(TokenType.TABLE)
    -1523
    -1524        if is_table:
    -1525            if self._match(TokenType.LT):
    -1526                value = self.expression(
    -1527                    exp.Schema,
    -1528                    this="TABLE",
    -1529                    expressions=self._parse_csv(self._parse_struct_kwargs),
    -1530                )
    -1531                if not self._match(TokenType.GT):
    -1532                    self.raise_error("Expecting >")
    -1533            else:
    -1534                value = self._parse_schema(exp.Var(this="TABLE"))
    -1535        else:
    -1536            value = self._parse_types()
    -1537
    -1538        return self.expression(exp.ReturnsProperty, this=value, is_table=is_table)
    -1539
    -1540    def _parse_temporary(self, global_=False) -> exp.Expression:
    -1541        self._match(TokenType.TEMPORARY)  # in case calling from "GLOBAL"
    -1542        return self.expression(exp.TemporaryProperty, global_=global_)
    +1514    def _parse_noprimaryindex(self) -> exp.Expression:
    +1515        self._match_text_seq("PRIMARY", "INDEX")
    +1516        return exp.NoPrimaryIndexProperty()
    +1517
    +1518    def _parse_oncommit(self) -> exp.Expression:
    +1519        self._match_text_seq("COMMIT", "PRESERVE", "ROWS")
    +1520        return exp.OnCommitProperty()
    +1521
    +1522    def _parse_distkey(self) -> exp.Expression:
    +1523        return self.expression(exp.DistKeyProperty, this=self._parse_wrapped(self._parse_id_var))
    +1524
    +1525    def _parse_create_like(self) -> t.Optional[exp.Expression]:
    +1526        table = self._parse_table(schema=True)
    +1527        options = []
    +1528        while self._match_texts(("INCLUDING", "EXCLUDING")):
    +1529            this = self._prev.text.upper()
    +1530            id_var = self._parse_id_var()
    +1531
    +1532            if not id_var:
    +1533                return None
    +1534
    +1535            options.append(
    +1536                self.expression(
    +1537                    exp.Property,
    +1538                    this=this,
    +1539                    value=exp.Var(this=id_var.this.upper()),
    +1540                )
    +1541            )
    +1542        return self.expression(exp.LikeProperty, this=table, expressions=options)
     1543
    -1544    def _parse_describe(self) -> exp.Expression:
    -1545        kind = self._match_set(self.CREATABLES) and self._prev.text
    -1546        this = self._parse_table()
    -1547
    -1548        return self.expression(exp.Describe, this=this, kind=kind)
    -1549
    -1550    def _parse_insert(self) -> exp.Expression:
    -1551        overwrite = self._match(TokenType.OVERWRITE)
    -1552        local = self._match(TokenType.LOCAL)
    -1553        alternative = None
    +1544    def _parse_sortkey(self, compound: bool = False) -> exp.Expression:
    +1545        return self.expression(
    +1546            exp.SortKeyProperty, this=self._parse_wrapped_csv(self._parse_id_var), compound=compound
    +1547        )
    +1548
    +1549    def _parse_character_set(self, default: bool = False) -> exp.Expression:
    +1550        self._match(TokenType.EQ)
    +1551        return self.expression(
    +1552            exp.CharacterSetProperty, this=self._parse_var_or_string(), default=default
    +1553        )
     1554
    -1555        if self._match_text_seq("DIRECTORY"):
    -1556            this: t.Optional[exp.Expression] = self.expression(
    -1557                exp.Directory,
    -1558                this=self._parse_var_or_string(),
    -1559                local=local,
    -1560                row_format=self._parse_row_format(match_row=True),
    -1561            )
    -1562        else:
    -1563            if self._match(TokenType.OR):
    -1564                alternative = self._match_texts(self.INSERT_ALTERNATIVES) and self._prev.text
    -1565
    -1566            self._match(TokenType.INTO)
    -1567            self._match(TokenType.TABLE)
    -1568            this = self._parse_table(schema=True)
    -1569
    -1570        return self.expression(
    -1571            exp.Insert,
    -1572            this=this,
    -1573            exists=self._parse_exists(),
    -1574            partition=self._parse_partition(),
    -1575            expression=self._parse_ddl_select(),
    -1576            returning=self._parse_returning(),
    -1577            overwrite=overwrite,
    -1578            alternative=alternative,
    -1579        )
    -1580
    -1581    def _parse_returning(self) -> t.Optional[exp.Expression]:
    -1582        if not self._match(TokenType.RETURNING):
    -1583            return None
    +1555    def _parse_returns(self) -> exp.Expression:
    +1556        value: t.Optional[exp.Expression]
    +1557        is_table = self._match(TokenType.TABLE)
    +1558
    +1559        if is_table:
    +1560            if self._match(TokenType.LT):
    +1561                value = self.expression(
    +1562                    exp.Schema,
    +1563                    this="TABLE",
    +1564                    expressions=self._parse_csv(self._parse_struct_kwargs),
    +1565                )
    +1566                if not self._match(TokenType.GT):
    +1567                    self.raise_error("Expecting >")
    +1568            else:
    +1569                value = self._parse_schema(exp.Var(this="TABLE"))
    +1570        else:
    +1571            value = self._parse_types()
    +1572
    +1573        return self.expression(exp.ReturnsProperty, this=value, is_table=is_table)
    +1574
    +1575    def _parse_temporary(self, global_=False) -> exp.Expression:
    +1576        self._match(TokenType.TEMPORARY)  # in case calling from "GLOBAL"
    +1577        return self.expression(exp.TemporaryProperty, global_=global_)
    +1578
    +1579    def _parse_describe(self) -> exp.Expression:
    +1580        kind = self._match_set(self.CREATABLES) and self._prev.text
    +1581        this = self._parse_table()
    +1582
    +1583        return self.expression(exp.Describe, this=this, kind=kind)
     1584
    -1585        return self.expression(exp.Returning, expressions=self._parse_csv(self._parse_column))
    -1586
    -1587    def _parse_row(self) -> t.Optional[exp.Expression]:
    -1588        if not self._match(TokenType.FORMAT):
    -1589            return None
    -1590        return self._parse_row_format()
    -1591
    -1592    def _parse_row_format(self, match_row: bool = False) -> t.Optional[exp.Expression]:
    -1593        if match_row and not self._match_pair(TokenType.ROW, TokenType.FORMAT):
    -1594            return None
    -1595
    -1596        if self._match_text_seq("SERDE"):
    -1597            return self.expression(exp.RowFormatSerdeProperty, this=self._parse_string())
    -1598
    -1599        self._match_text_seq("DELIMITED")
    +1585    def _parse_insert(self) -> exp.Expression:
    +1586        overwrite = self._match(TokenType.OVERWRITE)
    +1587        local = self._match(TokenType.LOCAL)
    +1588        alternative = None
    +1589
    +1590        if self._match_text_seq("DIRECTORY"):
    +1591            this: t.Optional[exp.Expression] = self.expression(
    +1592                exp.Directory,
    +1593                this=self._parse_var_or_string(),
    +1594                local=local,
    +1595                row_format=self._parse_row_format(match_row=True),
    +1596            )
    +1597        else:
    +1598            if self._match(TokenType.OR):
    +1599                alternative = self._match_texts(self.INSERT_ALTERNATIVES) and self._prev.text
     1600
    -1601        kwargs = {}
    -1602
    -1603        if self._match_text_seq("FIELDS", "TERMINATED", "BY"):
    -1604            kwargs["fields"] = self._parse_string()
    -1605            if self._match_text_seq("ESCAPED", "BY"):
    -1606                kwargs["escaped"] = self._parse_string()
    -1607        if self._match_text_seq("COLLECTION", "ITEMS", "TERMINATED", "BY"):
    -1608            kwargs["collection_items"] = self._parse_string()
    -1609        if self._match_text_seq("MAP", "KEYS", "TERMINATED", "BY"):
    -1610            kwargs["map_keys"] = self._parse_string()
    -1611        if self._match_text_seq("LINES", "TERMINATED", "BY"):
    -1612            kwargs["lines"] = self._parse_string()
    -1613        if self._match_text_seq("NULL", "DEFINED", "AS"):
    -1614            kwargs["null"] = self._parse_string()
    -1615
    -1616        return self.expression(exp.RowFormatDelimitedProperty, **kwargs)  # type: ignore
    -1617
    -1618    def _parse_load_data(self) -> exp.Expression:
    -1619        local = self._match(TokenType.LOCAL)
    -1620        self._match_text_seq("INPATH")
    -1621        inpath = self._parse_string()
    -1622        overwrite = self._match(TokenType.OVERWRITE)
    -1623        self._match_pair(TokenType.INTO, TokenType.TABLE)
    -1624
    -1625        return self.expression(
    -1626            exp.LoadData,
    -1627            this=self._parse_table(schema=True),
    -1628            local=local,
    -1629            overwrite=overwrite,
    -1630            inpath=inpath,
    -1631            partition=self._parse_partition(),
    -1632            input_format=self._match_text_seq("INPUTFORMAT") and self._parse_string(),
    -1633            serde=self._match_text_seq("SERDE") and self._parse_string(),
    -1634        )
    -1635
    -1636    def _parse_delete(self) -> exp.Expression:
    -1637        self._match(TokenType.FROM)
    -1638
    -1639        return self.expression(
    -1640            exp.Delete,
    -1641            this=self._parse_table(schema=True),
    -1642            using=self._parse_csv(lambda: self._match(TokenType.USING) and self._parse_table()),
    -1643            where=self._parse_where(),
    -1644            returning=self._parse_returning(),
    -1645        )
    -1646
    -1647    def _parse_update(self) -> exp.Expression:
    -1648        return self.expression(
    -1649            exp.Update,
    -1650            **{  # type: ignore
    -1651                "this": self._parse_table(alias_tokens=self.UPDATE_ALIAS_TOKENS),
    -1652                "expressions": self._match(TokenType.SET) and self._parse_csv(self._parse_equality),
    -1653                "from": self._parse_from(),
    -1654                "where": self._parse_where(),
    -1655                "returning": self._parse_returning(),
    -1656            },
    -1657        )
    -1658
    -1659    def _parse_uncache(self) -> exp.Expression:
    -1660        if not self._match(TokenType.TABLE):
    -1661            self.raise_error("Expecting TABLE after UNCACHE")
    -1662
    -1663        return self.expression(
    -1664            exp.Uncache,
    -1665            exists=self._parse_exists(),
    -1666            this=self._parse_table(schema=True),
    -1667        )
    +1601            self._match(TokenType.INTO)
    +1602            self._match(TokenType.TABLE)
    +1603            this = self._parse_table(schema=True)
    +1604
    +1605        return self.expression(
    +1606            exp.Insert,
    +1607            this=this,
    +1608            exists=self._parse_exists(),
    +1609            partition=self._parse_partition(),
    +1610            expression=self._parse_ddl_select(),
    +1611            conflict=self._parse_on_conflict(),
    +1612            returning=self._parse_returning(),
    +1613            overwrite=overwrite,
    +1614            alternative=alternative,
    +1615        )
    +1616
    +1617    def _parse_on_conflict(self) -> t.Optional[exp.Expression]:
    +1618        conflict = self._match_text_seq("ON", "CONFLICT")
    +1619        duplicate = self._match_text_seq("ON", "DUPLICATE", "KEY")
    +1620
    +1621        if not (conflict or duplicate):
    +1622            return None
    +1623
    +1624        nothing = None
    +1625        expressions = None
    +1626        key = None
    +1627        constraint = None
    +1628
    +1629        if conflict:
    +1630            if self._match_text_seq("ON", "CONSTRAINT"):
    +1631                constraint = self._parse_id_var()
    +1632            else:
    +1633                key = self._parse_csv(self._parse_value)
    +1634
    +1635        self._match_text_seq("DO")
    +1636        if self._match_text_seq("NOTHING"):
    +1637            nothing = True
    +1638        else:
    +1639            self._match(TokenType.UPDATE)
    +1640            expressions = self._match(TokenType.SET) and self._parse_csv(self._parse_equality)
    +1641
    +1642        return self.expression(
    +1643            exp.OnConflict,
    +1644            duplicate=duplicate,
    +1645            expressions=expressions,
    +1646            nothing=nothing,
    +1647            key=key,
    +1648            constraint=constraint,
    +1649        )
    +1650
    +1651    def _parse_returning(self) -> t.Optional[exp.Expression]:
    +1652        if not self._match(TokenType.RETURNING):
    +1653            return None
    +1654
    +1655        return self.expression(exp.Returning, expressions=self._parse_csv(self._parse_column))
    +1656
    +1657    def _parse_row(self) -> t.Optional[exp.Expression]:
    +1658        if not self._match(TokenType.FORMAT):
    +1659            return None
    +1660        return self._parse_row_format()
    +1661
    +1662    def _parse_row_format(self, match_row: bool = False) -> t.Optional[exp.Expression]:
    +1663        if match_row and not self._match_pair(TokenType.ROW, TokenType.FORMAT):
    +1664            return None
    +1665
    +1666        if self._match_text_seq("SERDE"):
    +1667            return self.expression(exp.RowFormatSerdeProperty, this=self._parse_string())
     1668
    -1669    def _parse_cache(self) -> exp.Expression:
    -1670        lazy = self._match(TokenType.LAZY)
    -1671        self._match(TokenType.TABLE)
    -1672        table = self._parse_table(schema=True)
    -1673        options = []
    -1674
    -1675        if self._match(TokenType.OPTIONS):
    -1676            self._match_l_paren()
    -1677            k = self._parse_string()
    -1678            self._match(TokenType.EQ)
    -1679            v = self._parse_string()
    -1680            options = [k, v]
    -1681            self._match_r_paren()
    -1682
    -1683        self._match(TokenType.ALIAS)
    -1684        return self.expression(
    -1685            exp.Cache,
    -1686            this=table,
    -1687            lazy=lazy,
    -1688            options=options,
    -1689            expression=self._parse_select(nested=True),
    -1690        )
    -1691
    -1692    def _parse_partition(self) -> t.Optional[exp.Expression]:
    -1693        if not self._match(TokenType.PARTITION):
    -1694            return None
    -1695
    -1696        return self.expression(
    -1697            exp.Partition, expressions=self._parse_wrapped_csv(self._parse_conjunction)
    -1698        )
    -1699
    -1700    def _parse_value(self) -> exp.Expression:
    -1701        if self._match(TokenType.L_PAREN):
    -1702            expressions = self._parse_csv(self._parse_conjunction)
    -1703            self._match_r_paren()
    -1704            return self.expression(exp.Tuple, expressions=expressions)
    +1669        self._match_text_seq("DELIMITED")
    +1670
    +1671        kwargs = {}
    +1672
    +1673        if self._match_text_seq("FIELDS", "TERMINATED", "BY"):
    +1674            kwargs["fields"] = self._parse_string()
    +1675            if self._match_text_seq("ESCAPED", "BY"):
    +1676                kwargs["escaped"] = self._parse_string()
    +1677        if self._match_text_seq("COLLECTION", "ITEMS", "TERMINATED", "BY"):
    +1678            kwargs["collection_items"] = self._parse_string()
    +1679        if self._match_text_seq("MAP", "KEYS", "TERMINATED", "BY"):
    +1680            kwargs["map_keys"] = self._parse_string()
    +1681        if self._match_text_seq("LINES", "TERMINATED", "BY"):
    +1682            kwargs["lines"] = self._parse_string()
    +1683        if self._match_text_seq("NULL", "DEFINED", "AS"):
    +1684            kwargs["null"] = self._parse_string()
    +1685
    +1686        return self.expression(exp.RowFormatDelimitedProperty, **kwargs)  # type: ignore
    +1687
    +1688    def _parse_load_data(self) -> exp.Expression:
    +1689        local = self._match(TokenType.LOCAL)
    +1690        self._match_text_seq("INPATH")
    +1691        inpath = self._parse_string()
    +1692        overwrite = self._match(TokenType.OVERWRITE)
    +1693        self._match_pair(TokenType.INTO, TokenType.TABLE)
    +1694
    +1695        return self.expression(
    +1696            exp.LoadData,
    +1697            this=self._parse_table(schema=True),
    +1698            local=local,
    +1699            overwrite=overwrite,
    +1700            inpath=inpath,
    +1701            partition=self._parse_partition(),
    +1702            input_format=self._match_text_seq("INPUTFORMAT") and self._parse_string(),
    +1703            serde=self._match_text_seq("SERDE") and self._parse_string(),
    +1704        )
     1705
    -1706        # In presto we can have VALUES 1, 2 which results in 1 column & 2 rows.
    -1707        # Source: https://prestodb.io/docs/current/sql/values.html
    -1708        return self.expression(exp.Tuple, expressions=[self._parse_conjunction()])
    -1709
    -1710    def _parse_select(
    -1711        self, nested: bool = False, table: bool = False, parse_subquery_alias: bool = True
    -1712    ) -> t.Optional[exp.Expression]:
    -1713        cte = self._parse_with()
    -1714        if cte:
    -1715            this = self._parse_statement()
    +1706    def _parse_delete(self) -> exp.Expression:
    +1707        self._match(TokenType.FROM)
    +1708
    +1709        return self.expression(
    +1710            exp.Delete,
    +1711            this=self._parse_table(),
    +1712            using=self._parse_csv(lambda: self._match(TokenType.USING) and self._parse_table()),
    +1713            where=self._parse_where(),
    +1714            returning=self._parse_returning(),
    +1715        )
     1716
    -1717            if not this:
    -1718                self.raise_error("Failed to parse any statement following CTE")
    -1719                return cte
    -1720
    -1721            if "with" in this.arg_types:
    -1722                this.set("with", cte)
    -1723            else:
    -1724                self.raise_error(f"{this.key} does not support CTE")
    -1725                this = cte
    -1726        elif self._match(TokenType.SELECT):
    -1727            comments = self._prev_comments
    +1717    def _parse_update(self) -> exp.Expression:
    +1718        return self.expression(
    +1719            exp.Update,
    +1720            **{  # type: ignore
    +1721                "this": self._parse_table(alias_tokens=self.UPDATE_ALIAS_TOKENS),
    +1722                "expressions": self._match(TokenType.SET) and self._parse_csv(self._parse_equality),
    +1723                "from": self._parse_from(),
    +1724                "where": self._parse_where(),
    +1725                "returning": self._parse_returning(),
    +1726            },
    +1727        )
     1728
    -1729            kind = (
    -1730                self._match(TokenType.ALIAS)
    -1731                and self._match_texts(("STRUCT", "VALUE"))
    -1732                and self._prev.text
    -1733            )
    -1734            hint = self._parse_hint()
    -1735            all_ = self._match(TokenType.ALL)
    -1736            distinct = self._match(TokenType.DISTINCT)
    -1737
    -1738            if distinct:
    -1739                distinct = self.expression(
    -1740                    exp.Distinct,
    -1741                    on=self._parse_value() if self._match(TokenType.ON) else None,
    -1742                )
    -1743
    -1744            if all_ and distinct:
    -1745                self.raise_error("Cannot specify both ALL and DISTINCT after SELECT")
    -1746
    -1747            limit = self._parse_limit(top=True)
    -1748            expressions = self._parse_csv(self._parse_expression)
    -1749
    -1750            this = self.expression(
    -1751                exp.Select,
    -1752                kind=kind,
    -1753                hint=hint,
    -1754                distinct=distinct,
    -1755                expressions=expressions,
    -1756                limit=limit,
    -1757            )
    -1758            this.comments = comments
    -1759
    -1760            into = self._parse_into()
    -1761            if into:
    -1762                this.set("into", into)
    -1763
    -1764            from_ = self._parse_from()
    -1765            if from_:
    -1766                this.set("from", from_)
    -1767
    -1768            self._parse_query_modifiers(this)
    -1769        elif (table or nested) and self._match(TokenType.L_PAREN):
    -1770            this = self._parse_table() if table else self._parse_select(nested=True)
    -1771            self._parse_query_modifiers(this)
    -1772            this = self._parse_set_operations(this)
    +1729    def _parse_uncache(self) -> exp.Expression:
    +1730        if not self._match(TokenType.TABLE):
    +1731            self.raise_error("Expecting TABLE after UNCACHE")
    +1732
    +1733        return self.expression(
    +1734            exp.Uncache,
    +1735            exists=self._parse_exists(),
    +1736            this=self._parse_table(schema=True),
    +1737        )
    +1738
    +1739    def _parse_cache(self) -> exp.Expression:
    +1740        lazy = self._match(TokenType.LAZY)
    +1741        self._match(TokenType.TABLE)
    +1742        table = self._parse_table(schema=True)
    +1743        options = []
    +1744
    +1745        if self._match(TokenType.OPTIONS):
    +1746            self._match_l_paren()
    +1747            k = self._parse_string()
    +1748            self._match(TokenType.EQ)
    +1749            v = self._parse_string()
    +1750            options = [k, v]
    +1751            self._match_r_paren()
    +1752
    +1753        self._match(TokenType.ALIAS)
    +1754        return self.expression(
    +1755            exp.Cache,
    +1756            this=table,
    +1757            lazy=lazy,
    +1758            options=options,
    +1759            expression=self._parse_select(nested=True),
    +1760        )
    +1761
    +1762    def _parse_partition(self) -> t.Optional[exp.Expression]:
    +1763        if not self._match(TokenType.PARTITION):
    +1764            return None
    +1765
    +1766        return self.expression(
    +1767            exp.Partition, expressions=self._parse_wrapped_csv(self._parse_conjunction)
    +1768        )
    +1769
    +1770    def _parse_value(self) -> exp.Expression:
    +1771        if self._match(TokenType.L_PAREN):
    +1772            expressions = self._parse_csv(self._parse_conjunction)
     1773            self._match_r_paren()
    -1774
    -1775            # early return so that subquery unions aren't parsed again
    -1776            # SELECT * FROM (SELECT 1) UNION ALL SELECT 1
    -1777            # Union ALL should be a property of the top select node, not the subquery
    -1778            return self._parse_subquery(this, parse_alias=parse_subquery_alias)
    -1779        elif self._match(TokenType.VALUES):
    -1780            this = self.expression(
    -1781                exp.Values,
    -1782                expressions=self._parse_csv(self._parse_value),
    -1783                alias=self._parse_table_alias(),
    -1784            )
    -1785        else:
    -1786            this = None
    -1787
    -1788        return self._parse_set_operations(this)
    -1789
    -1790    def _parse_with(self, skip_with_token: bool = False) -> t.Optional[exp.Expression]:
    -1791        if not skip_with_token and not self._match(TokenType.WITH):
    -1792            return None
    -1793
    -1794        recursive = self._match(TokenType.RECURSIVE)
    -1795
    -1796        expressions = []
    -1797        while True:
    -1798            expressions.append(self._parse_cte())
    -1799
    -1800            if not self._match(TokenType.COMMA) and not self._match(TokenType.WITH):
    -1801                break
    -1802            else:
    -1803                self._match(TokenType.WITH)
    -1804
    -1805        return self.expression(exp.With, expressions=expressions, recursive=recursive)
    -1806
    -1807    def _parse_cte(self) -> exp.Expression:
    -1808        alias = self._parse_table_alias()
    -1809        if not alias or not alias.this:
    -1810            self.raise_error("Expected CTE to have alias")
    -1811
    -1812        self._match(TokenType.ALIAS)
    +1774            return self.expression(exp.Tuple, expressions=expressions)
    +1775
    +1776        # In presto we can have VALUES 1, 2 which results in 1 column & 2 rows.
    +1777        # Source: https://prestodb.io/docs/current/sql/values.html
    +1778        return self.expression(exp.Tuple, expressions=[self._parse_conjunction()])
    +1779
    +1780    def _parse_select(
    +1781        self, nested: bool = False, table: bool = False, parse_subquery_alias: bool = True
    +1782    ) -> t.Optional[exp.Expression]:
    +1783        cte = self._parse_with()
    +1784        if cte:
    +1785            this = self._parse_statement()
    +1786
    +1787            if not this:
    +1788                self.raise_error("Failed to parse any statement following CTE")
    +1789                return cte
    +1790
    +1791            if "with" in this.arg_types:
    +1792                this.set("with", cte)
    +1793            else:
    +1794                self.raise_error(f"{this.key} does not support CTE")
    +1795                this = cte
    +1796        elif self._match(TokenType.SELECT):
    +1797            comments = self._prev_comments
    +1798
    +1799            kind = (
    +1800                self._match(TokenType.ALIAS)
    +1801                and self._match_texts(("STRUCT", "VALUE"))
    +1802                and self._prev.text
    +1803            )
    +1804            hint = self._parse_hint()
    +1805            all_ = self._match(TokenType.ALL)
    +1806            distinct = self._match(TokenType.DISTINCT)
    +1807
    +1808            if distinct:
    +1809                distinct = self.expression(
    +1810                    exp.Distinct,
    +1811                    on=self._parse_value() if self._match(TokenType.ON) else None,
    +1812                )
     1813
    -1814        return self.expression(
    -1815            exp.CTE,
    -1816            this=self._parse_wrapped(self._parse_statement),
    -1817            alias=alias,
    -1818        )
    +1814            if all_ and distinct:
    +1815                self.raise_error("Cannot specify both ALL and DISTINCT after SELECT")
    +1816
    +1817            limit = self._parse_limit(top=True)
    +1818            expressions = self._parse_csv(self._parse_expression)
     1819
    -1820    def _parse_table_alias(
    -1821        self, alias_tokens: t.Optional[t.Collection[TokenType]] = None
    -1822    ) -> t.Optional[exp.Expression]:
    -1823        any_token = self._match(TokenType.ALIAS)
    -1824        alias = (
    -1825            self._parse_id_var(any_token=any_token, tokens=alias_tokens or self.TABLE_ALIAS_TOKENS)
    -1826            or self._parse_string_as_identifier()
    -1827        )
    -1828
    -1829        index = self._index
    -1830        if self._match(TokenType.L_PAREN):
    -1831            columns = self._parse_csv(self._parse_function_parameter)
    -1832            self._match_r_paren() if columns else self._retreat(index)
    -1833        else:
    -1834            columns = None
    -1835
    -1836        if not alias and not columns:
    -1837            return None
    -1838
    -1839        return self.expression(exp.TableAlias, this=alias, columns=columns)
    -1840
    -1841    def _parse_subquery(
    -1842        self, this: t.Optional[exp.Expression], parse_alias: bool = True
    -1843    ) -> exp.Expression:
    -1844        return self.expression(
    -1845            exp.Subquery,
    -1846            this=this,
    -1847            pivots=self._parse_pivots(),
    -1848            alias=self._parse_table_alias() if parse_alias else None,
    -1849        )
    -1850
    -1851    def _parse_query_modifiers(self, this: t.Optional[exp.Expression]) -> None:
    -1852        if not isinstance(this, self.MODIFIABLES):
    -1853            return
    -1854
    -1855        table = isinstance(this, exp.Table)
    -1856
    -1857        while True:
    -1858            lateral = self._parse_lateral()
    -1859            join = self._parse_join()
    -1860            comma = None if table else self._match(TokenType.COMMA)
    -1861            if lateral:
    -1862                this.append("laterals", lateral)
    -1863            if join:
    -1864                this.append("joins", join)
    -1865            if comma:
    -1866                this.args["from"].append("expressions", self._parse_table())
    -1867            if not (lateral or join or comma):
    -1868                break
    -1869
    -1870        for key, parser in self.QUERY_MODIFIER_PARSERS.items():
    -1871            expression = parser(self)
    -1872
    -1873            if expression:
    -1874                this.set(key, expression)
    +1820            this = self.expression(
    +1821                exp.Select,
    +1822                kind=kind,
    +1823                hint=hint,
    +1824                distinct=distinct,
    +1825                expressions=expressions,
    +1826                limit=limit,
    +1827            )
    +1828            this.comments = comments
    +1829
    +1830            into = self._parse_into()
    +1831            if into:
    +1832                this.set("into", into)
    +1833
    +1834            from_ = self._parse_from()
    +1835            if from_:
    +1836                this.set("from", from_)
    +1837
    +1838            self._parse_query_modifiers(this)
    +1839        elif (table or nested) and self._match(TokenType.L_PAREN):
    +1840            this = self._parse_table() if table else self._parse_select(nested=True)
    +1841            self._parse_query_modifiers(this)
    +1842            this = self._parse_set_operations(this)
    +1843            self._match_r_paren()
    +1844
    +1845            # early return so that subquery unions aren't parsed again
    +1846            # SELECT * FROM (SELECT 1) UNION ALL SELECT 1
    +1847            # Union ALL should be a property of the top select node, not the subquery
    +1848            return self._parse_subquery(this, parse_alias=parse_subquery_alias)
    +1849        elif self._match(TokenType.VALUES):
    +1850            this = self.expression(
    +1851                exp.Values,
    +1852                expressions=self._parse_csv(self._parse_value),
    +1853                alias=self._parse_table_alias(),
    +1854            )
    +1855        else:
    +1856            this = None
    +1857
    +1858        return self._parse_set_operations(this)
    +1859
    +1860    def _parse_with(self, skip_with_token: bool = False) -> t.Optional[exp.Expression]:
    +1861        if not skip_with_token and not self._match(TokenType.WITH):
    +1862            return None
    +1863
    +1864        comments = self._prev_comments
    +1865        recursive = self._match(TokenType.RECURSIVE)
    +1866
    +1867        expressions = []
    +1868        while True:
    +1869            expressions.append(self._parse_cte())
    +1870
    +1871            if not self._match(TokenType.COMMA) and not self._match(TokenType.WITH):
    +1872                break
    +1873            else:
    +1874                self._match(TokenType.WITH)
     1875
    -1876    def _parse_hint(self) -> t.Optional[exp.Expression]:
    -1877        if self._match(TokenType.HINT):
    -1878            hints = self._parse_csv(self._parse_function)
    -1879            if not self._match_pair(TokenType.STAR, TokenType.SLASH):
    -1880                self.raise_error("Expected */ after HINT")
    -1881            return self.expression(exp.Hint, expressions=hints)
    -1882
    -1883        return None
    +1876        return self.expression(
    +1877            exp.With, comments=comments, expressions=expressions, recursive=recursive
    +1878        )
    +1879
    +1880    def _parse_cte(self) -> exp.Expression:
    +1881        alias = self._parse_table_alias()
    +1882        if not alias or not alias.this:
    +1883            self.raise_error("Expected CTE to have alias")
     1884
    -1885    def _parse_into(self) -> t.Optional[exp.Expression]:
    -1886        if not self._match(TokenType.INTO):
    -1887            return None
    -1888
    -1889        temp = self._match(TokenType.TEMPORARY)
    -1890        unlogged = self._match(TokenType.UNLOGGED)
    -1891        self._match(TokenType.TABLE)
    +1885        self._match(TokenType.ALIAS)
    +1886
    +1887        return self.expression(
    +1888            exp.CTE,
    +1889            this=self._parse_wrapped(self._parse_statement),
    +1890            alias=alias,
    +1891        )
     1892
    -1893        return self.expression(
    -1894            exp.Into, this=self._parse_table(schema=True), temporary=temp, unlogged=unlogged
    -1895        )
    -1896
    -1897    def _parse_from(self) -> t.Optional[exp.Expression]:
    -1898        if not self._match(TokenType.FROM):
    -1899            return None
    -1900
    -1901        return self.expression(
    -1902            exp.From, comments=self._prev_comments, expressions=self._parse_csv(self._parse_table)
    -1903        )
    -1904
    -1905    def _parse_match_recognize(self) -> t.Optional[exp.Expression]:
    -1906        if not self._match(TokenType.MATCH_RECOGNIZE):
    -1907            return None
    -1908        self._match_l_paren()
    -1909
    -1910        partition = self._parse_partition_by()
    -1911        order = self._parse_order()
    -1912        measures = (
    -1913            self._parse_alias(self._parse_conjunction())
    -1914            if self._match_text_seq("MEASURES")
    -1915            else None
    -1916        )
    -1917
    -1918        if self._match_text_seq("ONE", "ROW", "PER", "MATCH"):
    -1919            rows = exp.Var(this="ONE ROW PER MATCH")
    -1920        elif self._match_text_seq("ALL", "ROWS", "PER", "MATCH"):
    -1921            text = "ALL ROWS PER MATCH"
    -1922            if self._match_text_seq("SHOW", "EMPTY", "MATCHES"):
    -1923                text += f" SHOW EMPTY MATCHES"
    -1924            elif self._match_text_seq("OMIT", "EMPTY", "MATCHES"):
    -1925                text += f" OMIT EMPTY MATCHES"
    -1926            elif self._match_text_seq("WITH", "UNMATCHED", "ROWS"):
    -1927                text += f" WITH UNMATCHED ROWS"
    -1928            rows = exp.Var(this=text)
    -1929        else:
    -1930            rows = None
    -1931
    -1932        if self._match_text_seq("AFTER", "MATCH", "SKIP"):
    -1933            text = "AFTER MATCH SKIP"
    -1934            if self._match_text_seq("PAST", "LAST", "ROW"):
    -1935                text += f" PAST LAST ROW"
    -1936            elif self._match_text_seq("TO", "NEXT", "ROW"):
    -1937                text += f" TO NEXT ROW"
    -1938            elif self._match_text_seq("TO", "FIRST"):
    -1939                text += f" TO FIRST {self._advance_any().text}"  # type: ignore
    -1940            elif self._match_text_seq("TO", "LAST"):
    -1941                text += f" TO LAST {self._advance_any().text}"  # type: ignore
    -1942            after = exp.Var(this=text)
    -1943        else:
    -1944            after = None
    -1945
    -1946        if self._match_text_seq("PATTERN"):
    -1947            self._match_l_paren()
    -1948
    -1949            if not self._curr:
    -1950                self.raise_error("Expecting )", self._curr)
    -1951
    -1952            paren = 1
    -1953            start = self._curr
    -1954
    -1955            while self._curr and paren > 0:
    -1956                if self._curr.token_type == TokenType.L_PAREN:
    -1957                    paren += 1
    -1958                if self._curr.token_type == TokenType.R_PAREN:
    -1959                    paren -= 1
    -1960                end = self._prev
    -1961                self._advance()
    -1962            if paren > 0:
    -1963                self.raise_error("Expecting )", self._curr)
    -1964            pattern = exp.Var(this=self._find_sql(start, end))
    -1965        else:
    -1966            pattern = None
    -1967
    -1968        define = (
    -1969            self._parse_alias(self._parse_conjunction()) if self._match_text_seq("DEFINE") else None
    -1970        )
    -1971        self._match_r_paren()
    -1972
    -1973        return self.expression(
    -1974            exp.MatchRecognize,
    -1975            partition_by=partition,
    -1976            order=order,
    -1977            measures=measures,
    -1978            rows=rows,
    -1979            after=after,
    -1980            pattern=pattern,
    -1981            define=define,
    -1982        )
    -1983
    -1984    def _parse_lateral(self) -> t.Optional[exp.Expression]:
    -1985        outer_apply = self._match_pair(TokenType.OUTER, TokenType.APPLY)
    -1986        cross_apply = self._match_pair(TokenType.CROSS, TokenType.APPLY)
    -1987
    -1988        if outer_apply or cross_apply:
    -1989            this = self._parse_select(table=True)
    -1990            view = None
    -1991            outer = not cross_apply
    -1992        elif self._match(TokenType.LATERAL):
    -1993            this = self._parse_select(table=True)
    -1994            view = self._match(TokenType.VIEW)
    -1995            outer = self._match(TokenType.OUTER)
    -1996        else:
    -1997            return None
    -1998
    -1999        if not this:
    -2000            this = self._parse_function() or self._parse_id_var(any_token=False)
    -2001            while self._match(TokenType.DOT):
    -2002                this = exp.Dot(
    -2003                    this=this,
    -2004                    expression=self._parse_function() or self._parse_id_var(any_token=False),
    -2005                )
    -2006
    -2007        table_alias: t.Optional[exp.Expression]
    +1893    def _parse_table_alias(
    +1894        self, alias_tokens: t.Optional[t.Collection[TokenType]] = None
    +1895    ) -> t.Optional[exp.Expression]:
    +1896        any_token = self._match(TokenType.ALIAS)
    +1897        alias = (
    +1898            self._parse_id_var(any_token=any_token, tokens=alias_tokens or self.TABLE_ALIAS_TOKENS)
    +1899            or self._parse_string_as_identifier()
    +1900        )
    +1901
    +1902        index = self._index
    +1903        if self._match(TokenType.L_PAREN):
    +1904            columns = self._parse_csv(self._parse_function_parameter)
    +1905            self._match_r_paren() if columns else self._retreat(index)
    +1906        else:
    +1907            columns = None
    +1908
    +1909        if not alias and not columns:
    +1910            return None
    +1911
    +1912        return self.expression(exp.TableAlias, this=alias, columns=columns)
    +1913
    +1914    def _parse_subquery(
    +1915        self, this: t.Optional[exp.Expression], parse_alias: bool = True
    +1916    ) -> exp.Expression:
    +1917        return self.expression(
    +1918            exp.Subquery,
    +1919            this=this,
    +1920            pivots=self._parse_pivots(),
    +1921            alias=self._parse_table_alias() if parse_alias else None,
    +1922        )
    +1923
    +1924    def _parse_query_modifiers(self, this: t.Optional[exp.Expression]) -> None:
    +1925        if not isinstance(this, self.MODIFIABLES):
    +1926            return
    +1927
    +1928        table = isinstance(this, exp.Table)
    +1929
    +1930        while True:
    +1931            join = self._parse_join()
    +1932            if join:
    +1933                this.append("joins", join)
    +1934
    +1935            lateral = None
    +1936            if not join:
    +1937                lateral = self._parse_lateral()
    +1938                if lateral:
    +1939                    this.append("laterals", lateral)
    +1940
    +1941            comma = None if table else self._match(TokenType.COMMA)
    +1942            if comma:
    +1943                this.args["from"].append("expressions", self._parse_table())
    +1944
    +1945            if not (lateral or join or comma):
    +1946                break
    +1947
    +1948        for key, parser in self.QUERY_MODIFIER_PARSERS.items():
    +1949            expression = parser(self)
    +1950
    +1951            if expression:
    +1952                this.set(key, expression)
    +1953
    +1954    def _parse_hint(self) -> t.Optional[exp.Expression]:
    +1955        if self._match(TokenType.HINT):
    +1956            hints = self._parse_csv(self._parse_function)
    +1957            if not self._match_pair(TokenType.STAR, TokenType.SLASH):
    +1958                self.raise_error("Expected */ after HINT")
    +1959            return self.expression(exp.Hint, expressions=hints)
    +1960
    +1961        return None
    +1962
    +1963    def _parse_into(self) -> t.Optional[exp.Expression]:
    +1964        if not self._match(TokenType.INTO):
    +1965            return None
    +1966
    +1967        temp = self._match(TokenType.TEMPORARY)
    +1968        unlogged = self._match(TokenType.UNLOGGED)
    +1969        self._match(TokenType.TABLE)
    +1970
    +1971        return self.expression(
    +1972            exp.Into, this=self._parse_table(schema=True), temporary=temp, unlogged=unlogged
    +1973        )
    +1974
    +1975    def _parse_from(self) -> t.Optional[exp.Expression]:
    +1976        if not self._match(TokenType.FROM):
    +1977            return None
    +1978
    +1979        return self.expression(
    +1980            exp.From, comments=self._prev_comments, expressions=self._parse_csv(self._parse_table)
    +1981        )
    +1982
    +1983    def _parse_match_recognize(self) -> t.Optional[exp.Expression]:
    +1984        if not self._match(TokenType.MATCH_RECOGNIZE):
    +1985            return None
    +1986
    +1987        self._match_l_paren()
    +1988
    +1989        partition = self._parse_partition_by()
    +1990        order = self._parse_order()
    +1991        measures = (
    +1992            self._parse_csv(self._parse_expression) if self._match_text_seq("MEASURES") else None
    +1993        )
    +1994
    +1995        if self._match_text_seq("ONE", "ROW", "PER", "MATCH"):
    +1996            rows = exp.Var(this="ONE ROW PER MATCH")
    +1997        elif self._match_text_seq("ALL", "ROWS", "PER", "MATCH"):
    +1998            text = "ALL ROWS PER MATCH"
    +1999            if self._match_text_seq("SHOW", "EMPTY", "MATCHES"):
    +2000                text += f" SHOW EMPTY MATCHES"
    +2001            elif self._match_text_seq("OMIT", "EMPTY", "MATCHES"):
    +2002                text += f" OMIT EMPTY MATCHES"
    +2003            elif self._match_text_seq("WITH", "UNMATCHED", "ROWS"):
    +2004                text += f" WITH UNMATCHED ROWS"
    +2005            rows = exp.Var(this=text)
    +2006        else:
    +2007            rows = None
     2008
    -2009        if view:
    -2010            table = self._parse_id_var(any_token=False)
    -2011            columns = self._parse_csv(self._parse_id_var) if self._match(TokenType.ALIAS) else []
    -2012            table_alias = self.expression(exp.TableAlias, this=table, columns=columns)
    -2013        else:
    -2014            table_alias = self._parse_table_alias()
    -2015
    -2016        expression = self.expression(
    -2017            exp.Lateral,
    -2018            this=this,
    -2019            view=view,
    -2020            outer=outer,
    -2021            alias=table_alias,
    -2022        )
    -2023
    -2024        if outer_apply or cross_apply:
    -2025            return self.expression(exp.Join, this=expression, side=None if cross_apply else "LEFT")
    -2026
    -2027        return expression
    +2009        if self._match_text_seq("AFTER", "MATCH", "SKIP"):
    +2010            text = "AFTER MATCH SKIP"
    +2011            if self._match_text_seq("PAST", "LAST", "ROW"):
    +2012                text += f" PAST LAST ROW"
    +2013            elif self._match_text_seq("TO", "NEXT", "ROW"):
    +2014                text += f" TO NEXT ROW"
    +2015            elif self._match_text_seq("TO", "FIRST"):
    +2016                text += f" TO FIRST {self._advance_any().text}"  # type: ignore
    +2017            elif self._match_text_seq("TO", "LAST"):
    +2018                text += f" TO LAST {self._advance_any().text}"  # type: ignore
    +2019            after = exp.Var(this=text)
    +2020        else:
    +2021            after = None
    +2022
    +2023        if self._match_text_seq("PATTERN"):
    +2024            self._match_l_paren()
    +2025
    +2026            if not self._curr:
    +2027                self.raise_error("Expecting )", self._curr)
     2028
    -2029    def _parse_join_side_and_kind(
    -2030        self,
    -2031    ) -> t.Tuple[t.Optional[Token], t.Optional[Token], t.Optional[Token]]:
    -2032        return (
    -2033            self._match(TokenType.NATURAL) and self._prev,
    -2034            self._match_set(self.JOIN_SIDES) and self._prev,
    -2035            self._match_set(self.JOIN_KINDS) and self._prev,
    -2036        )
    -2037
    -2038    def _parse_join(self, skip_join_token: bool = False) -> t.Optional[exp.Expression]:
    -2039        natural, side, kind = self._parse_join_side_and_kind()
    -2040
    -2041        if not skip_join_token and not self._match(TokenType.JOIN):
    -2042            return None
    -2043
    -2044        kwargs: t.Dict[
    -2045            str, t.Optional[exp.Expression] | bool | str | t.List[t.Optional[exp.Expression]]
    -2046        ] = {"this": self._parse_table()}
    -2047
    -2048        if natural:
    -2049            kwargs["natural"] = True
    -2050        if side:
    -2051            kwargs["side"] = side.text
    -2052        if kind:
    -2053            kwargs["kind"] = kind.text
    -2054
    -2055        if self._match(TokenType.ON):
    -2056            kwargs["on"] = self._parse_conjunction()
    -2057        elif self._match(TokenType.USING):
    -2058            kwargs["using"] = self._parse_wrapped_id_vars()
    -2059
    -2060        return self.expression(exp.Join, **kwargs)  # type: ignore
    -2061
    -2062    def _parse_index(self) -> exp.Expression:
    -2063        index = self._parse_id_var()
    -2064        self._match(TokenType.ON)
    -2065        self._match(TokenType.TABLE)  # hive
    -2066
    -2067        return self.expression(
    -2068            exp.Index,
    -2069            this=index,
    -2070            table=self.expression(exp.Table, this=self._parse_id_var()),
    -2071            columns=self._parse_expression(),
    -2072        )
    -2073
    -2074    def _parse_create_table_index(self) -> t.Optional[exp.Expression]:
    -2075        unique = self._match(TokenType.UNIQUE)
    -2076        primary = self._match_text_seq("PRIMARY")
    -2077        amp = self._match_text_seq("AMP")
    -2078        if not self._match(TokenType.INDEX):
    -2079            return None
    -2080        index = self._parse_id_var()
    -2081        columns = None
    -2082        if self._match(TokenType.L_PAREN, advance=False):
    -2083            columns = self._parse_wrapped_csv(self._parse_column)
    -2084        return self.expression(
    -2085            exp.Index,
    -2086            this=index,
    -2087            columns=columns,
    -2088            unique=unique,
    -2089            primary=primary,
    -2090            amp=amp,
    -2091        )
    -2092
    -2093    def _parse_table_parts(self, schema: bool = False) -> exp.Expression:
    -2094        catalog = None
    -2095        db = None
    -2096
    -2097        table = (
    -2098            (not schema and self._parse_function())
    -2099            or self._parse_id_var(any_token=False)
    -2100            or self._parse_string_as_identifier()
    -2101        )
    +2029            paren = 1
    +2030            start = self._curr
    +2031
    +2032            while self._curr and paren > 0:
    +2033                if self._curr.token_type == TokenType.L_PAREN:
    +2034                    paren += 1
    +2035                if self._curr.token_type == TokenType.R_PAREN:
    +2036                    paren -= 1
    +2037                end = self._prev
    +2038                self._advance()
    +2039            if paren > 0:
    +2040                self.raise_error("Expecting )", self._curr)
    +2041            pattern = exp.Var(this=self._find_sql(start, end))
    +2042        else:
    +2043            pattern = None
    +2044
    +2045        define = (
    +2046            self._parse_csv(
    +2047                lambda: self.expression(
    +2048                    exp.Alias,
    +2049                    alias=self._parse_id_var(any_token=True),
    +2050                    this=self._match(TokenType.ALIAS) and self._parse_conjunction(),
    +2051                )
    +2052            )
    +2053            if self._match_text_seq("DEFINE")
    +2054            else None
    +2055        )
    +2056
    +2057        self._match_r_paren()
    +2058
    +2059        return self.expression(
    +2060            exp.MatchRecognize,
    +2061            partition_by=partition,
    +2062            order=order,
    +2063            measures=measures,
    +2064            rows=rows,
    +2065            after=after,
    +2066            pattern=pattern,
    +2067            define=define,
    +2068            alias=self._parse_table_alias(),
    +2069        )
    +2070
    +2071    def _parse_lateral(self) -> t.Optional[exp.Expression]:
    +2072        outer_apply = self._match_pair(TokenType.OUTER, TokenType.APPLY)
    +2073        cross_apply = self._match_pair(TokenType.CROSS, TokenType.APPLY)
    +2074
    +2075        if outer_apply or cross_apply:
    +2076            this = self._parse_select(table=True)
    +2077            view = None
    +2078            outer = not cross_apply
    +2079        elif self._match(TokenType.LATERAL):
    +2080            this = self._parse_select(table=True)
    +2081            view = self._match(TokenType.VIEW)
    +2082            outer = self._match(TokenType.OUTER)
    +2083        else:
    +2084            return None
    +2085
    +2086        if not this:
    +2087            this = self._parse_function() or self._parse_id_var(any_token=False)
    +2088            while self._match(TokenType.DOT):
    +2089                this = exp.Dot(
    +2090                    this=this,
    +2091                    expression=self._parse_function() or self._parse_id_var(any_token=False),
    +2092                )
    +2093
    +2094        table_alias: t.Optional[exp.Expression]
    +2095
    +2096        if view:
    +2097            table = self._parse_id_var(any_token=False)
    +2098            columns = self._parse_csv(self._parse_id_var) if self._match(TokenType.ALIAS) else []
    +2099            table_alias = self.expression(exp.TableAlias, this=table, columns=columns)
    +2100        else:
    +2101            table_alias = self._parse_table_alias()
     2102
    -2103        while self._match(TokenType.DOT):
    -2104            if catalog:
    -2105                # This allows nesting the table in arbitrarily many dot expressions if needed
    -2106                table = self.expression(exp.Dot, this=table, expression=self._parse_id_var())
    -2107            else:
    -2108                catalog = db
    -2109                db = table
    -2110                table = self._parse_id_var()
    -2111
    -2112        if not table:
    -2113            self.raise_error(f"Expected table name but got {self._curr}")
    -2114
    -2115        return self.expression(
    -2116            exp.Table, this=table, db=db, catalog=catalog, pivots=self._parse_pivots()
    -2117        )
    -2118
    -2119    def _parse_table(
    -2120        self, schema: bool = False, alias_tokens: t.Optional[t.Collection[TokenType]] = None
    -2121    ) -> t.Optional[exp.Expression]:
    -2122        lateral = self._parse_lateral()
    -2123
    -2124        if lateral:
    -2125            return lateral
    -2126
    -2127        unnest = self._parse_unnest()
    -2128
    -2129        if unnest:
    -2130            return unnest
    -2131
    -2132        values = self._parse_derived_table_values()
    +2103        expression = self.expression(
    +2104            exp.Lateral,
    +2105            this=this,
    +2106            view=view,
    +2107            outer=outer,
    +2108            alias=table_alias,
    +2109        )
    +2110
    +2111        return expression
    +2112
    +2113    def _parse_join_side_and_kind(
    +2114        self,
    +2115    ) -> t.Tuple[t.Optional[Token], t.Optional[Token], t.Optional[Token]]:
    +2116        return (
    +2117            self._match(TokenType.NATURAL) and self._prev,
    +2118            self._match_set(self.JOIN_SIDES) and self._prev,
    +2119            self._match_set(self.JOIN_KINDS) and self._prev,
    +2120        )
    +2121
    +2122    def _parse_join(self, skip_join_token: bool = False) -> t.Optional[exp.Expression]:
    +2123        index = self._index
    +2124        natural, side, kind = self._parse_join_side_and_kind()
    +2125        hint = self._prev.text if self._match_texts(self.JOIN_HINTS) else None
    +2126        join = self._match(TokenType.JOIN)
    +2127
    +2128        if not skip_join_token and not join:
    +2129            self._retreat(index)
    +2130            kind = None
    +2131            natural = None
    +2132            side = None
     2133
    -2134        if values:
    -2135            return values
    +2134        outer_apply = self._match_pair(TokenType.OUTER, TokenType.APPLY, False)
    +2135        cross_apply = self._match_pair(TokenType.CROSS, TokenType.APPLY, False)
     2136
    -2137        subquery = self._parse_select(table=True)
    -2138
    -2139        if subquery:
    -2140            if not subquery.args.get("pivots"):
    -2141                subquery.set("pivots", self._parse_pivots())
    -2142            return subquery
    -2143
    -2144        this = self._parse_table_parts(schema=schema)
    -2145
    -2146        if schema:
    -2147            return self._parse_schema(this=this)
    -2148
    -2149        if self.alias_post_tablesample:
    -2150            table_sample = self._parse_table_sample()
    -2151
    -2152        alias = self._parse_table_alias(alias_tokens=alias_tokens or self.TABLE_ALIAS_TOKENS)
    -2153
    -2154        if alias:
    -2155            this.set("alias", alias)
    -2156
    -2157        if not this.args.get("pivots"):
    -2158            this.set("pivots", self._parse_pivots())
    -2159
    -2160        if self._match_pair(TokenType.WITH, TokenType.L_PAREN):
    -2161            this.set(
    -2162                "hints",
    -2163                self._parse_csv(lambda: self._parse_function() or self._parse_var(any_token=True)),
    -2164            )
    -2165            self._match_r_paren()
    -2166
    -2167        if not self.alias_post_tablesample:
    -2168            table_sample = self._parse_table_sample()
    -2169
    -2170        if table_sample:
    -2171            table_sample.set("this", this)
    -2172            this = table_sample
    -2173
    -2174        return this
    -2175
    -2176    def _parse_unnest(self) -> t.Optional[exp.Expression]:
    -2177        if not self._match(TokenType.UNNEST):
    -2178            return None
    -2179
    -2180        expressions = self._parse_wrapped_csv(self._parse_column)
    -2181        ordinality = bool(self._match(TokenType.WITH) and self._match(TokenType.ORDINALITY))
    -2182        alias = self._parse_table_alias()
    -2183
    -2184        if alias and self.unnest_column_only:
    -2185            if alias.args.get("columns"):
    -2186                self.raise_error("Unexpected extra column alias in unnest.")
    -2187            alias.set("columns", [alias.this])
    -2188            alias.set("this", None)
    -2189
    -2190        offset = None
    -2191        if self._match_pair(TokenType.WITH, TokenType.OFFSET):
    -2192            self._match(TokenType.ALIAS)
    -2193            offset = self._parse_conjunction()
    -2194
    -2195        return self.expression(
    -2196            exp.Unnest,
    -2197            expressions=expressions,
    -2198            ordinality=ordinality,
    -2199            alias=alias,
    -2200            offset=offset,
    -2201        )
    -2202
    -2203    def _parse_derived_table_values(self) -> t.Optional[exp.Expression]:
    -2204        is_derived = self._match_pair(TokenType.L_PAREN, TokenType.VALUES)
    -2205        if not is_derived and not self._match(TokenType.VALUES):
    -2206            return None
    -2207
    -2208        expressions = self._parse_csv(self._parse_value)
    -2209
    -2210        if is_derived:
    -2211            self._match_r_paren()
    +2137        if not skip_join_token and not join and not outer_apply and not cross_apply:
    +2138            return None
    +2139
    +2140        if outer_apply:
    +2141            side = Token(TokenType.LEFT, "LEFT")
    +2142
    +2143        kwargs: t.Dict[
    +2144            str, t.Optional[exp.Expression] | bool | str | t.List[t.Optional[exp.Expression]]
    +2145        ] = {"this": self._parse_table()}
    +2146
    +2147        if natural:
    +2148            kwargs["natural"] = True
    +2149        if side:
    +2150            kwargs["side"] = side.text
    +2151        if kind:
    +2152            kwargs["kind"] = kind.text
    +2153        if hint:
    +2154            kwargs["hint"] = hint
    +2155
    +2156        if self._match(TokenType.ON):
    +2157            kwargs["on"] = self._parse_conjunction()
    +2158        elif self._match(TokenType.USING):
    +2159            kwargs["using"] = self._parse_wrapped_id_vars()
    +2160
    +2161        return self.expression(exp.Join, **kwargs)  # type: ignore
    +2162
    +2163    def _parse_index(self) -> exp.Expression:
    +2164        index = self._parse_id_var()
    +2165        self._match(TokenType.ON)
    +2166        self._match(TokenType.TABLE)  # hive
    +2167
    +2168        return self.expression(
    +2169            exp.Index,
    +2170            this=index,
    +2171            table=self.expression(exp.Table, this=self._parse_id_var()),
    +2172            columns=self._parse_expression(),
    +2173        )
    +2174
    +2175    def _parse_create_table_index(self) -> t.Optional[exp.Expression]:
    +2176        unique = self._match(TokenType.UNIQUE)
    +2177        primary = self._match_text_seq("PRIMARY")
    +2178        amp = self._match_text_seq("AMP")
    +2179        if not self._match(TokenType.INDEX):
    +2180            return None
    +2181        index = self._parse_id_var()
    +2182        columns = None
    +2183        if self._match(TokenType.L_PAREN, advance=False):
    +2184            columns = self._parse_wrapped_csv(self._parse_column)
    +2185        return self.expression(
    +2186            exp.Index,
    +2187            this=index,
    +2188            columns=columns,
    +2189            unique=unique,
    +2190            primary=primary,
    +2191            amp=amp,
    +2192        )
    +2193
    +2194    def _parse_table_parts(self, schema: bool = False) -> exp.Expression:
    +2195        catalog = None
    +2196        db = None
    +2197
    +2198        table = (
    +2199            (not schema and self._parse_function())
    +2200            or self._parse_id_var(any_token=False)
    +2201            or self._parse_string_as_identifier()
    +2202        )
    +2203
    +2204        while self._match(TokenType.DOT):
    +2205            if catalog:
    +2206                # This allows nesting the table in arbitrarily many dot expressions if needed
    +2207                table = self.expression(exp.Dot, this=table, expression=self._parse_id_var())
    +2208            else:
    +2209                catalog = db
    +2210                db = table
    +2211                table = self._parse_id_var()
     2212
    -2213        return self.expression(exp.Values, expressions=expressions, alias=self._parse_table_alias())
    -2214
    -2215    def _parse_table_sample(self, as_modifier: bool = False) -> t.Optional[exp.Expression]:
    -2216        if not self._match(TokenType.TABLE_SAMPLE) and not (
    -2217            as_modifier and self._match_text_seq("USING", "SAMPLE")
    -2218        ):
    -2219            return None
    -2220
    -2221        bucket_numerator = None
    -2222        bucket_denominator = None
    -2223        bucket_field = None
    -2224        percent = None
    -2225        rows = None
    -2226        size = None
    -2227        seed = None
    -2228
    -2229        kind = "TABLESAMPLE" if self._prev.token_type == TokenType.TABLE_SAMPLE else "USING SAMPLE"
    -2230        method = self._parse_var(tokens=(TokenType.ROW,))
    -2231
    -2232        self._match(TokenType.L_PAREN)
    -2233
    -2234        num = self._parse_number()
    -2235
    -2236        if self._match(TokenType.BUCKET):
    -2237            bucket_numerator = self._parse_number()
    -2238            self._match(TokenType.OUT_OF)
    -2239            bucket_denominator = bucket_denominator = self._parse_number()
    -2240            self._match(TokenType.ON)
    -2241            bucket_field = self._parse_field()
    -2242        elif self._match_set((TokenType.PERCENT, TokenType.MOD)):
    -2243            percent = num
    -2244        elif self._match(TokenType.ROWS):
    -2245            rows = num
    -2246        else:
    -2247            size = num
    -2248
    -2249        self._match(TokenType.R_PAREN)
    -2250
    -2251        if self._match(TokenType.L_PAREN):
    -2252            method = self._parse_var()
    -2253            seed = self._match(TokenType.COMMA) and self._parse_number()
    -2254            self._match_r_paren()
    -2255        elif self._match_texts(("SEED", "REPEATABLE")):
    -2256            seed = self._parse_wrapped(self._parse_number)
    +2213        if not table:
    +2214            self.raise_error(f"Expected table name but got {self._curr}")
    +2215
    +2216        return self.expression(
    +2217            exp.Table, this=table, db=db, catalog=catalog, pivots=self._parse_pivots()
    +2218        )
    +2219
    +2220    def _parse_table(
    +2221        self, schema: bool = False, alias_tokens: t.Optional[t.Collection[TokenType]] = None
    +2222    ) -> t.Optional[exp.Expression]:
    +2223        lateral = self._parse_lateral()
    +2224
    +2225        if lateral:
    +2226            return lateral
    +2227
    +2228        unnest = self._parse_unnest()
    +2229
    +2230        if unnest:
    +2231            return unnest
    +2232
    +2233        values = self._parse_derived_table_values()
    +2234
    +2235        if values:
    +2236            return values
    +2237
    +2238        subquery = self._parse_select(table=True)
    +2239
    +2240        if subquery:
    +2241            if not subquery.args.get("pivots"):
    +2242                subquery.set("pivots", self._parse_pivots())
    +2243            return subquery
    +2244
    +2245        this = self._parse_table_parts(schema=schema)
    +2246
    +2247        if schema:
    +2248            return self._parse_schema(this=this)
    +2249
    +2250        if self.alias_post_tablesample:
    +2251            table_sample = self._parse_table_sample()
    +2252
    +2253        alias = self._parse_table_alias(alias_tokens=alias_tokens or self.TABLE_ALIAS_TOKENS)
    +2254
    +2255        if alias:
    +2256            this.set("alias", alias)
     2257
    -2258        return self.expression(
    -2259            exp.TableSample,
    -2260            method=method,
    -2261            bucket_numerator=bucket_numerator,
    -2262            bucket_denominator=bucket_denominator,
    -2263            bucket_field=bucket_field,
    -2264            percent=percent,
    -2265            rows=rows,
    -2266            size=size,
    -2267            seed=seed,
    -2268            kind=kind,
    -2269        )
    +2258        if not this.args.get("pivots"):
    +2259            this.set("pivots", self._parse_pivots())
    +2260
    +2261        if self._match_pair(TokenType.WITH, TokenType.L_PAREN):
    +2262            this.set(
    +2263                "hints",
    +2264                self._parse_csv(lambda: self._parse_function() or self._parse_var(any_token=True)),
    +2265            )
    +2266            self._match_r_paren()
    +2267
    +2268        if not self.alias_post_tablesample:
    +2269            table_sample = self._parse_table_sample()
     2270
    -2271    def _parse_pivots(self) -> t.List[t.Optional[exp.Expression]]:
    -2272        return list(iter(self._parse_pivot, None))
    -2273
    -2274    def _parse_pivot(self) -> t.Optional[exp.Expression]:
    -2275        index = self._index
    +2271        if table_sample:
    +2272            table_sample.set("this", this)
    +2273            this = table_sample
    +2274
    +2275        return this
     2276
    -2277        if self._match(TokenType.PIVOT):
    -2278            unpivot = False
    -2279        elif self._match(TokenType.UNPIVOT):
    -2280            unpivot = True
    -2281        else:
    -2282            return None
    -2283
    -2284        expressions = []
    -2285        field = None
    -2286
    -2287        if not self._match(TokenType.L_PAREN):
    -2288            self._retreat(index)
    -2289            return None
    +2277    def _parse_unnest(self) -> t.Optional[exp.Expression]:
    +2278        if not self._match(TokenType.UNNEST):
    +2279            return None
    +2280
    +2281        expressions = self._parse_wrapped_csv(self._parse_column)
    +2282        ordinality = self._match_pair(TokenType.WITH, TokenType.ORDINALITY)
    +2283        alias = self._parse_table_alias()
    +2284
    +2285        if alias and self.unnest_column_only:
    +2286            if alias.args.get("columns"):
    +2287                self.raise_error("Unexpected extra column alias in unnest.")
    +2288            alias.set("columns", [alias.this])
    +2289            alias.set("this", None)
     2290
    -2291        if unpivot:
    -2292            expressions = self._parse_csv(self._parse_column)
    -2293        else:
    -2294            expressions = self._parse_csv(lambda: self._parse_alias(self._parse_function()))
    +2291        offset = None
    +2292        if self._match_pair(TokenType.WITH, TokenType.OFFSET):
    +2293            self._match(TokenType.ALIAS)
    +2294            offset = self._parse_id_var() or exp.Identifier(this="offset")
     2295
    -2296        if not self._match(TokenType.FOR):
    -2297            self.raise_error("Expecting FOR")
    -2298
    -2299        value = self._parse_column()
    -2300
    -2301        if not self._match(TokenType.IN):
    -2302            self.raise_error("Expecting IN")
    +2296        return self.expression(
    +2297            exp.Unnest,
    +2298            expressions=expressions,
    +2299            ordinality=ordinality,
    +2300            alias=alias,
    +2301            offset=offset,
    +2302        )
     2303
    -2304        field = self._parse_in(value)
    -2305
    -2306        self._match_r_paren()
    -2307
    -2308        pivot = self.expression(exp.Pivot, expressions=expressions, field=field, unpivot=unpivot)
    -2309
    -2310        if not self._match_set((TokenType.PIVOT, TokenType.UNPIVOT), advance=False):
    -2311            pivot.set("alias", self._parse_table_alias())
    -2312
    -2313        return pivot
    -2314
    -2315    def _parse_where(self, skip_where_token: bool = False) -> t.Optional[exp.Expression]:
    -2316        if not skip_where_token and not self._match(TokenType.WHERE):
    -2317            return None
    -2318
    -2319        return self.expression(
    -2320            exp.Where, comments=self._prev_comments, this=self._parse_conjunction()
    -2321        )
    -2322
    -2323    def _parse_group(self, skip_group_by_token: bool = False) -> t.Optional[exp.Expression]:
    -2324        if not skip_group_by_token and not self._match(TokenType.GROUP_BY):
    -2325            return None
    -2326
    -2327        elements = defaultdict(list)
    -2328
    -2329        while True:
    -2330            expressions = self._parse_csv(self._parse_conjunction)
    -2331            if expressions:
    -2332                elements["expressions"].extend(expressions)
    -2333
    -2334            grouping_sets = self._parse_grouping_sets()
    -2335            if grouping_sets:
    -2336                elements["grouping_sets"].extend(grouping_sets)
    -2337
    -2338            rollup = None
    -2339            cube = None
    -2340
    -2341            with_ = self._match(TokenType.WITH)
    -2342            if self._match(TokenType.ROLLUP):
    -2343                rollup = with_ or self._parse_wrapped_csv(self._parse_column)
    -2344                elements["rollup"].extend(ensure_list(rollup))
    -2345
    -2346            if self._match(TokenType.CUBE):
    -2347                cube = with_ or self._parse_wrapped_csv(self._parse_column)
    -2348                elements["cube"].extend(ensure_list(cube))
    +2304    def _parse_derived_table_values(self) -> t.Optional[exp.Expression]:
    +2305        is_derived = self._match_pair(TokenType.L_PAREN, TokenType.VALUES)
    +2306        if not is_derived and not self._match(TokenType.VALUES):
    +2307            return None
    +2308
    +2309        expressions = self._parse_csv(self._parse_value)
    +2310
    +2311        if is_derived:
    +2312            self._match_r_paren()
    +2313
    +2314        return self.expression(exp.Values, expressions=expressions, alias=self._parse_table_alias())
    +2315
    +2316    def _parse_table_sample(self, as_modifier: bool = False) -> t.Optional[exp.Expression]:
    +2317        if not self._match(TokenType.TABLE_SAMPLE) and not (
    +2318            as_modifier and self._match_text_seq("USING", "SAMPLE")
    +2319        ):
    +2320            return None
    +2321
    +2322        bucket_numerator = None
    +2323        bucket_denominator = None
    +2324        bucket_field = None
    +2325        percent = None
    +2326        rows = None
    +2327        size = None
    +2328        seed = None
    +2329
    +2330        kind = "TABLESAMPLE" if self._prev.token_type == TokenType.TABLE_SAMPLE else "USING SAMPLE"
    +2331        method = self._parse_var(tokens=(TokenType.ROW,))
    +2332
    +2333        self._match(TokenType.L_PAREN)
    +2334
    +2335        num = self._parse_number()
    +2336
    +2337        if self._match(TokenType.BUCKET):
    +2338            bucket_numerator = self._parse_number()
    +2339            self._match(TokenType.OUT_OF)
    +2340            bucket_denominator = bucket_denominator = self._parse_number()
    +2341            self._match(TokenType.ON)
    +2342            bucket_field = self._parse_field()
    +2343        elif self._match_set((TokenType.PERCENT, TokenType.MOD)):
    +2344            percent = num
    +2345        elif self._match(TokenType.ROWS):
    +2346            rows = num
    +2347        else:
    +2348            size = num
     2349
    -2350            if not (expressions or grouping_sets or rollup or cube):
    -2351                break
    -2352
    -2353        return self.expression(exp.Group, **elements)  # type: ignore
    -2354
    -2355    def _parse_grouping_sets(self) -> t.Optional[t.List[t.Optional[exp.Expression]]]:
    -2356        if not self._match(TokenType.GROUPING_SETS):
    -2357            return None
    +2350        self._match(TokenType.R_PAREN)
    +2351
    +2352        if self._match(TokenType.L_PAREN):
    +2353            method = self._parse_var()
    +2354            seed = self._match(TokenType.COMMA) and self._parse_number()
    +2355            self._match_r_paren()
    +2356        elif self._match_texts(("SEED", "REPEATABLE")):
    +2357            seed = self._parse_wrapped(self._parse_number)
     2358
    -2359        return self._parse_wrapped_csv(self._parse_grouping_set)
    -2360
    -2361    def _parse_grouping_set(self) -> t.Optional[exp.Expression]:
    -2362        if self._match(TokenType.L_PAREN):
    -2363            grouping_set = self._parse_csv(self._parse_column)
    -2364            self._match_r_paren()
    -2365            return self.expression(exp.Tuple, expressions=grouping_set)
    -2366
    -2367        return self._parse_column()
    -2368
    -2369    def _parse_having(self, skip_having_token: bool = False) -> t.Optional[exp.Expression]:
    -2370        if not skip_having_token and not self._match(TokenType.HAVING):
    -2371            return None
    -2372        return self.expression(exp.Having, this=self._parse_conjunction())
    -2373
    -2374    def _parse_qualify(self) -> t.Optional[exp.Expression]:
    -2375        if not self._match(TokenType.QUALIFY):
    -2376            return None
    -2377        return self.expression(exp.Qualify, this=self._parse_conjunction())
    -2378
    -2379    def _parse_order(
    -2380        self, this: t.Optional[exp.Expression] = None, skip_order_token: bool = False
    -2381    ) -> t.Optional[exp.Expression]:
    -2382        if not skip_order_token and not self._match(TokenType.ORDER_BY):
    -2383            return this
    +2359        return self.expression(
    +2360            exp.TableSample,
    +2361            method=method,
    +2362            bucket_numerator=bucket_numerator,
    +2363            bucket_denominator=bucket_denominator,
    +2364            bucket_field=bucket_field,
    +2365            percent=percent,
    +2366            rows=rows,
    +2367            size=size,
    +2368            seed=seed,
    +2369            kind=kind,
    +2370        )
    +2371
    +2372    def _parse_pivots(self) -> t.List[t.Optional[exp.Expression]]:
    +2373        return list(iter(self._parse_pivot, None))
    +2374
    +2375    def _parse_pivot(self) -> t.Optional[exp.Expression]:
    +2376        index = self._index
    +2377
    +2378        if self._match(TokenType.PIVOT):
    +2379            unpivot = False
    +2380        elif self._match(TokenType.UNPIVOT):
    +2381            unpivot = True
    +2382        else:
    +2383            return None
     2384
    -2385        return self.expression(
    -2386            exp.Order, this=this, expressions=self._parse_csv(self._parse_ordered)
    -2387        )
    -2388
    -2389    def _parse_sort(
    -2390        self, token_type: TokenType, exp_class: t.Type[exp.Expression]
    -2391    ) -> t.Optional[exp.Expression]:
    -2392        if not self._match(token_type):
    -2393            return None
    -2394        return self.expression(exp_class, expressions=self._parse_csv(self._parse_ordered))
    -2395
    -2396    def _parse_ordered(self) -> exp.Expression:
    -2397        this = self._parse_conjunction()
    -2398        self._match(TokenType.ASC)
    -2399        is_desc = self._match(TokenType.DESC)
    -2400        is_nulls_first = self._match(TokenType.NULLS_FIRST)
    -2401        is_nulls_last = self._match(TokenType.NULLS_LAST)
    -2402        desc = is_desc or False
    -2403        asc = not desc
    -2404        nulls_first = is_nulls_first or False
    -2405        explicitly_null_ordered = is_nulls_first or is_nulls_last
    -2406        if (
    -2407            not explicitly_null_ordered
    -2408            and (
    -2409                (asc and self.null_ordering == "nulls_are_small")
    -2410                or (desc and self.null_ordering != "nulls_are_small")
    -2411            )
    -2412            and self.null_ordering != "nulls_are_last"
    -2413        ):
    -2414            nulls_first = True
    -2415
    -2416        return self.expression(exp.Ordered, this=this, desc=desc, nulls_first=nulls_first)
    -2417
    -2418    def _parse_limit(
    -2419        self, this: t.Optional[exp.Expression] = None, top: bool = False
    -2420    ) -> t.Optional[exp.Expression]:
    -2421        if self._match(TokenType.TOP if top else TokenType.LIMIT):
    -2422            limit_paren = self._match(TokenType.L_PAREN)
    -2423            limit_exp = self.expression(
    -2424                exp.Limit, this=this, expression=self._parse_number() if top else self._parse_term()
    -2425            )
    -2426
    -2427            if limit_paren:
    -2428                self._match_r_paren()
    +2385        expressions = []
    +2386        field = None
    +2387
    +2388        if not self._match(TokenType.L_PAREN):
    +2389            self._retreat(index)
    +2390            return None
    +2391
    +2392        if unpivot:
    +2393            expressions = self._parse_csv(self._parse_column)
    +2394        else:
    +2395            expressions = self._parse_csv(lambda: self._parse_alias(self._parse_function()))
    +2396
    +2397        if not expressions:
    +2398            self.raise_error("Failed to parse PIVOT's aggregation list")
    +2399
    +2400        if not self._match(TokenType.FOR):
    +2401            self.raise_error("Expecting FOR")
    +2402
    +2403        value = self._parse_column()
    +2404
    +2405        if not self._match(TokenType.IN):
    +2406            self.raise_error("Expecting IN")
    +2407
    +2408        field = self._parse_in(value)
    +2409
    +2410        self._match_r_paren()
    +2411
    +2412        pivot = self.expression(exp.Pivot, expressions=expressions, field=field, unpivot=unpivot)
    +2413
    +2414        if not self._match_set((TokenType.PIVOT, TokenType.UNPIVOT), advance=False):
    +2415            pivot.set("alias", self._parse_table_alias())
    +2416
    +2417        if not unpivot:
    +2418            names = self._pivot_column_names(t.cast(t.List[exp.Expression], expressions))
    +2419
    +2420            columns: t.List[exp.Expression] = []
    +2421            for col in pivot.args["field"].expressions:
    +2422                for name in names:
    +2423                    if self.PREFIXED_PIVOT_COLUMNS:
    +2424                        name = f"{name}_{col.alias_or_name}" if name else col.alias_or_name
    +2425                    else:
    +2426                        name = f"{col.alias_or_name}_{name}" if name else col.alias_or_name
    +2427
    +2428                    columns.append(exp.to_identifier(name, quoted=self.QUOTED_PIVOT_COLUMNS))
     2429
    -2430            return limit_exp
    +2430            pivot.set("columns", columns)
     2431
    -2432        if self._match(TokenType.FETCH):
    -2433            direction = self._match_set((TokenType.FIRST, TokenType.NEXT))
    -2434            direction = self._prev.text if direction else "FIRST"
    -2435            count = self._parse_number()
    -2436            self._match_set((TokenType.ROW, TokenType.ROWS))
    -2437            self._match(TokenType.ONLY)
    -2438            return self.expression(exp.Fetch, direction=direction, count=count)
    -2439
    -2440        return this
    -2441
    -2442    def _parse_offset(self, this: t.Optional[exp.Expression] = None) -> t.Optional[exp.Expression]:
    -2443        if not self._match_set((TokenType.OFFSET, TokenType.COMMA)):
    -2444            return this
    -2445
    -2446        count = self._parse_number()
    -2447        self._match_set((TokenType.ROW, TokenType.ROWS))
    -2448        return self.expression(exp.Offset, this=this, expression=count)
    -2449
    -2450    def _parse_lock(self) -> t.Optional[exp.Expression]:
    -2451        if self._match_text_seq("FOR", "UPDATE"):
    -2452            return self.expression(exp.Lock, update=True)
    -2453        if self._match_text_seq("FOR", "SHARE"):
    -2454            return self.expression(exp.Lock, update=False)
    +2432        return pivot
    +2433
    +2434    def _pivot_column_names(self, pivot_columns: t.List[exp.Expression]) -> t.List[str]:
    +2435        return [agg.alias for agg in pivot_columns]
    +2436
    +2437    def _parse_where(self, skip_where_token: bool = False) -> t.Optional[exp.Expression]:
    +2438        if not skip_where_token and not self._match(TokenType.WHERE):
    +2439            return None
    +2440
    +2441        return self.expression(
    +2442            exp.Where, comments=self._prev_comments, this=self._parse_conjunction()
    +2443        )
    +2444
    +2445    def _parse_group(self, skip_group_by_token: bool = False) -> t.Optional[exp.Expression]:
    +2446        if not skip_group_by_token and not self._match(TokenType.GROUP_BY):
    +2447            return None
    +2448
    +2449        elements = defaultdict(list)
    +2450
    +2451        while True:
    +2452            expressions = self._parse_csv(self._parse_conjunction)
    +2453            if expressions:
    +2454                elements["expressions"].extend(expressions)
     2455
    -2456        return None
    -2457
    -2458    def _parse_set_operations(self, this: t.Optional[exp.Expression]) -> t.Optional[exp.Expression]:
    -2459        if not self._match_set(self.SET_OPERATIONS):
    -2460            return this
    -2461
    -2462        token_type = self._prev.token_type
    -2463
    -2464        if token_type == TokenType.UNION:
    -2465            expression = exp.Union
    -2466        elif token_type == TokenType.EXCEPT:
    -2467            expression = exp.Except
    -2468        else:
    -2469            expression = exp.Intersect
    -2470
    -2471        return self.expression(
    -2472            expression,
    -2473            this=this,
    -2474            distinct=self._match(TokenType.DISTINCT) or not self._match(TokenType.ALL),
    -2475            expression=self._parse_set_operations(self._parse_select(nested=True)),
    -2476        )
    -2477
    -2478    def _parse_expression(self) -> t.Optional[exp.Expression]:
    -2479        return self._parse_alias(self._parse_conjunction())
    +2456            grouping_sets = self._parse_grouping_sets()
    +2457            if grouping_sets:
    +2458                elements["grouping_sets"].extend(grouping_sets)
    +2459
    +2460            rollup = None
    +2461            cube = None
    +2462
    +2463            with_ = self._match(TokenType.WITH)
    +2464            if self._match(TokenType.ROLLUP):
    +2465                rollup = with_ or self._parse_wrapped_csv(self._parse_column)
    +2466                elements["rollup"].extend(ensure_list(rollup))
    +2467
    +2468            if self._match(TokenType.CUBE):
    +2469                cube = with_ or self._parse_wrapped_csv(self._parse_column)
    +2470                elements["cube"].extend(ensure_list(cube))
    +2471
    +2472            if not (expressions or grouping_sets or rollup or cube):
    +2473                break
    +2474
    +2475        return self.expression(exp.Group, **elements)  # type: ignore
    +2476
    +2477    def _parse_grouping_sets(self) -> t.Optional[t.List[t.Optional[exp.Expression]]]:
    +2478        if not self._match(TokenType.GROUPING_SETS):
    +2479            return None
     2480
    -2481    def _parse_conjunction(self) -> t.Optional[exp.Expression]:
    -2482        return self._parse_tokens(self._parse_equality, self.CONJUNCTION)
    -2483
    -2484    def _parse_equality(self) -> t.Optional[exp.Expression]:
    -2485        return self._parse_tokens(self._parse_comparison, self.EQUALITY)
    -2486
    -2487    def _parse_comparison(self) -> t.Optional[exp.Expression]:
    -2488        return self._parse_tokens(self._parse_range, self.COMPARISON)
    -2489
    -2490    def _parse_range(self) -> t.Optional[exp.Expression]:
    -2491        this = self._parse_bitwise()
    -2492        negate = self._match(TokenType.NOT)
    -2493
    -2494        if self._match_set(self.RANGE_PARSERS):
    -2495            this = self.RANGE_PARSERS[self._prev.token_type](self, this)
    -2496        elif self._match(TokenType.ISNULL):
    -2497            this = self.expression(exp.Is, this=this, expression=exp.Null())
    -2498
    -2499        # Postgres supports ISNULL and NOTNULL for conditions.
    -2500        # https://blog.andreiavram.ro/postgresql-null-composite-type/
    -2501        if self._match(TokenType.NOTNULL):
    -2502            this = self.expression(exp.Is, this=this, expression=exp.Null())
    -2503            this = self.expression(exp.Not, this=this)
    -2504
    -2505        if negate:
    -2506            this = self.expression(exp.Not, this=this)
    -2507
    -2508        if self._match(TokenType.IS):
    -2509            this = self._parse_is(this)
    +2481        return self._parse_wrapped_csv(self._parse_grouping_set)
    +2482
    +2483    def _parse_grouping_set(self) -> t.Optional[exp.Expression]:
    +2484        if self._match(TokenType.L_PAREN):
    +2485            grouping_set = self._parse_csv(self._parse_column)
    +2486            self._match_r_paren()
    +2487            return self.expression(exp.Tuple, expressions=grouping_set)
    +2488
    +2489        return self._parse_column()
    +2490
    +2491    def _parse_having(self, skip_having_token: bool = False) -> t.Optional[exp.Expression]:
    +2492        if not skip_having_token and not self._match(TokenType.HAVING):
    +2493            return None
    +2494        return self.expression(exp.Having, this=self._parse_conjunction())
    +2495
    +2496    def _parse_qualify(self) -> t.Optional[exp.Expression]:
    +2497        if not self._match(TokenType.QUALIFY):
    +2498            return None
    +2499        return self.expression(exp.Qualify, this=self._parse_conjunction())
    +2500
    +2501    def _parse_order(
    +2502        self, this: t.Optional[exp.Expression] = None, skip_order_token: bool = False
    +2503    ) -> t.Optional[exp.Expression]:
    +2504        if not skip_order_token and not self._match(TokenType.ORDER_BY):
    +2505            return this
    +2506
    +2507        return self.expression(
    +2508            exp.Order, this=this, expressions=self._parse_csv(self._parse_ordered)
    +2509        )
     2510
    -2511        return this
    -2512
    -2513    def _parse_is(self, this: t.Optional[exp.Expression]) -> exp.Expression:
    -2514        negate = self._match(TokenType.NOT)
    -2515        if self._match(TokenType.DISTINCT_FROM):
    -2516            klass = exp.NullSafeEQ if negate else exp.NullSafeNEQ
    -2517            return self.expression(klass, this=this, expression=self._parse_expression())
    -2518
    -2519        this = self.expression(
    -2520            exp.Is,
    -2521            this=this,
    -2522            expression=self._parse_null() or self._parse_boolean(),
    -2523        )
    -2524        return self.expression(exp.Not, this=this) if negate else this
    -2525
    -2526    def _parse_in(self, this: t.Optional[exp.Expression]) -> exp.Expression:
    -2527        unnest = self._parse_unnest()
    -2528        if unnest:
    -2529            this = self.expression(exp.In, this=this, unnest=unnest)
    -2530        elif self._match(TokenType.L_PAREN):
    -2531            expressions = self._parse_csv(self._parse_select_or_expression)
    -2532
    -2533            if len(expressions) == 1 and isinstance(expressions[0], exp.Subqueryable):
    -2534                this = self.expression(exp.In, this=this, query=expressions[0])
    -2535            else:
    -2536                this = self.expression(exp.In, this=this, expressions=expressions)
    +2511    def _parse_sort(
    +2512        self, token_type: TokenType, exp_class: t.Type[exp.Expression]
    +2513    ) -> t.Optional[exp.Expression]:
    +2514        if not self._match(token_type):
    +2515            return None
    +2516        return self.expression(exp_class, expressions=self._parse_csv(self._parse_ordered))
    +2517
    +2518    def _parse_ordered(self) -> exp.Expression:
    +2519        this = self._parse_conjunction()
    +2520        self._match(TokenType.ASC)
    +2521        is_desc = self._match(TokenType.DESC)
    +2522        is_nulls_first = self._match(TokenType.NULLS_FIRST)
    +2523        is_nulls_last = self._match(TokenType.NULLS_LAST)
    +2524        desc = is_desc or False
    +2525        asc = not desc
    +2526        nulls_first = is_nulls_first or False
    +2527        explicitly_null_ordered = is_nulls_first or is_nulls_last
    +2528        if (
    +2529            not explicitly_null_ordered
    +2530            and (
    +2531                (asc and self.null_ordering == "nulls_are_small")
    +2532                or (desc and self.null_ordering != "nulls_are_small")
    +2533            )
    +2534            and self.null_ordering != "nulls_are_last"
    +2535        ):
    +2536            nulls_first = True
     2537
    -2538            self._match_r_paren()
    -2539        else:
    -2540            this = self.expression(exp.In, this=this, field=self._parse_field())
    -2541
    -2542        return this
    -2543
    -2544    def _parse_between(self, this: exp.Expression) -> exp.Expression:
    -2545        low = self._parse_bitwise()
    -2546        self._match(TokenType.AND)
    -2547        high = self._parse_bitwise()
    -2548        return self.expression(exp.Between, this=this, low=low, high=high)
    -2549
    -2550    def _parse_escape(self, this: t.Optional[exp.Expression]) -> t.Optional[exp.Expression]:
    -2551        if not self._match(TokenType.ESCAPE):
    -2552            return this
    -2553        return self.expression(exp.Escape, this=this, expression=self._parse_string())
    -2554
    -2555    def _parse_bitwise(self) -> t.Optional[exp.Expression]:
    -2556        this = self._parse_term()
    +2538        return self.expression(exp.Ordered, this=this, desc=desc, nulls_first=nulls_first)
    +2539
    +2540    def _parse_limit(
    +2541        self, this: t.Optional[exp.Expression] = None, top: bool = False
    +2542    ) -> t.Optional[exp.Expression]:
    +2543        if self._match(TokenType.TOP if top else TokenType.LIMIT):
    +2544            limit_paren = self._match(TokenType.L_PAREN)
    +2545            limit_exp = self.expression(
    +2546                exp.Limit, this=this, expression=self._parse_number() if top else self._parse_term()
    +2547            )
    +2548
    +2549            if limit_paren:
    +2550                self._match_r_paren()
    +2551
    +2552            return limit_exp
    +2553
    +2554        if self._match(TokenType.FETCH):
    +2555            direction = self._match_set((TokenType.FIRST, TokenType.NEXT))
    +2556            direction = self._prev.text if direction else "FIRST"
     2557
    -2558        while True:
    -2559            if self._match_set(self.BITWISE):
    -2560                this = self.expression(
    -2561                    self.BITWISE[self._prev.token_type],
    -2562                    this=this,
    -2563                    expression=self._parse_term(),
    -2564                )
    -2565            elif self._match_pair(TokenType.LT, TokenType.LT):
    -2566                this = self.expression(
    -2567                    exp.BitwiseLeftShift, this=this, expression=self._parse_term()
    -2568                )
    -2569            elif self._match_pair(TokenType.GT, TokenType.GT):
    -2570                this = self.expression(
    -2571                    exp.BitwiseRightShift, this=this, expression=self._parse_term()
    -2572                )
    -2573            else:
    -2574                break
    -2575
    -2576        return this
    -2577
    -2578    def _parse_term(self) -> t.Optional[exp.Expression]:
    -2579        return self._parse_tokens(self._parse_factor, self.TERM)
    -2580
    -2581    def _parse_factor(self) -> t.Optional[exp.Expression]:
    -2582        return self._parse_tokens(self._parse_unary, self.FACTOR)
    -2583
    -2584    def _parse_unary(self) -> t.Optional[exp.Expression]:
    -2585        if self._match_set(self.UNARY_PARSERS):
    -2586            return self.UNARY_PARSERS[self._prev.token_type](self)
    -2587        return self._parse_at_time_zone(self._parse_type())
    -2588
    -2589    def _parse_type(self) -> t.Optional[exp.Expression]:
    -2590        if self._match(TokenType.INTERVAL):
    -2591            return self.expression(exp.Interval, this=self._parse_term(), unit=self._parse_field())
    +2558            count = self._parse_number()
    +2559            percent = self._match(TokenType.PERCENT)
    +2560
    +2561            self._match_set((TokenType.ROW, TokenType.ROWS))
    +2562
    +2563            only = self._match(TokenType.ONLY)
    +2564            with_ties = self._match_text_seq("WITH", "TIES")
    +2565
    +2566            if only and with_ties:
    +2567                self.raise_error("Cannot specify both ONLY and WITH TIES in FETCH clause")
    +2568
    +2569            return self.expression(
    +2570                exp.Fetch,
    +2571                direction=direction,
    +2572                count=count,
    +2573                percent=percent,
    +2574                with_ties=with_ties,
    +2575            )
    +2576
    +2577        return this
    +2578
    +2579    def _parse_offset(self, this: t.Optional[exp.Expression] = None) -> t.Optional[exp.Expression]:
    +2580        if not self._match_set((TokenType.OFFSET, TokenType.COMMA)):
    +2581            return this
    +2582
    +2583        count = self._parse_number()
    +2584        self._match_set((TokenType.ROW, TokenType.ROWS))
    +2585        return self.expression(exp.Offset, this=this, expression=count)
    +2586
    +2587    def _parse_lock(self) -> t.Optional[exp.Expression]:
    +2588        if self._match_text_seq("FOR", "UPDATE"):
    +2589            return self.expression(exp.Lock, update=True)
    +2590        if self._match_text_seq("FOR", "SHARE"):
    +2591            return self.expression(exp.Lock, update=False)
     2592
    -2593        index = self._index
    -2594        type_token = self._parse_types(check_func=True)
    -2595        this = self._parse_column()
    -2596
    -2597        if type_token:
    -2598            if isinstance(this, exp.Literal):
    -2599                return self.expression(exp.Cast, this=this, to=type_token)
    -2600            if not type_token.args.get("expressions"):
    -2601                self._retreat(index)
    -2602                return self._parse_column()
    -2603            return type_token
    -2604
    -2605        return this
    -2606
    -2607    def _parse_types(self, check_func: bool = False) -> t.Optional[exp.Expression]:
    -2608        index = self._index
    -2609
    -2610        prefix = self._match_text_seq("SYSUDTLIB", ".")
    -2611
    -2612        if not self._match_set(self.TYPE_TOKENS):
    -2613            return None
    +2593        return None
    +2594
    +2595    def _parse_set_operations(self, this: t.Optional[exp.Expression]) -> t.Optional[exp.Expression]:
    +2596        if not self._match_set(self.SET_OPERATIONS):
    +2597            return this
    +2598
    +2599        token_type = self._prev.token_type
    +2600
    +2601        if token_type == TokenType.UNION:
    +2602            expression = exp.Union
    +2603        elif token_type == TokenType.EXCEPT:
    +2604            expression = exp.Except
    +2605        else:
    +2606            expression = exp.Intersect
    +2607
    +2608        return self.expression(
    +2609            expression,
    +2610            this=this,
    +2611            distinct=self._match(TokenType.DISTINCT) or not self._match(TokenType.ALL),
    +2612            expression=self._parse_set_operations(self._parse_select(nested=True)),
    +2613        )
     2614
    -2615        type_token = self._prev.token_type
    -2616
    -2617        if type_token == TokenType.PSEUDO_TYPE:
    -2618            return self.expression(exp.PseudoType, this=self._prev.text)
    -2619
    -2620        nested = type_token in self.NESTED_TYPE_TOKENS
    -2621        is_struct = type_token == TokenType.STRUCT
    -2622        expressions = None
    -2623        maybe_func = False
    -2624
    -2625        if self._match(TokenType.L_PAREN):
    -2626            if is_struct:
    -2627                expressions = self._parse_csv(self._parse_struct_kwargs)
    -2628            elif nested:
    -2629                expressions = self._parse_csv(self._parse_types)
    -2630            else:
    -2631                expressions = self._parse_csv(self._parse_conjunction)
    -2632
    -2633            if not expressions:
    -2634                self._retreat(index)
    -2635                return None
    -2636
    -2637            self._match_r_paren()
    -2638            maybe_func = True
    +2615    def _parse_expression(self) -> t.Optional[exp.Expression]:
    +2616        return self._parse_alias(self._parse_conjunction())
    +2617
    +2618    def _parse_conjunction(self) -> t.Optional[exp.Expression]:
    +2619        return self._parse_tokens(self._parse_equality, self.CONJUNCTION)
    +2620
    +2621    def _parse_equality(self) -> t.Optional[exp.Expression]:
    +2622        return self._parse_tokens(self._parse_comparison, self.EQUALITY)
    +2623
    +2624    def _parse_comparison(self) -> t.Optional[exp.Expression]:
    +2625        return self._parse_tokens(self._parse_range, self.COMPARISON)
    +2626
    +2627    def _parse_range(self) -> t.Optional[exp.Expression]:
    +2628        this = self._parse_bitwise()
    +2629        negate = self._match(TokenType.NOT)
    +2630
    +2631        if self._match_set(self.RANGE_PARSERS):
    +2632            expression = self.RANGE_PARSERS[self._prev.token_type](self, this)
    +2633            if not expression:
    +2634                return this
    +2635
    +2636            this = expression
    +2637        elif self._match(TokenType.ISNULL):
    +2638            this = self.expression(exp.Is, this=this, expression=exp.Null())
     2639
    -2640        if self._match_pair(TokenType.L_BRACKET, TokenType.R_BRACKET):
    -2641            this = exp.DataType(
    -2642                this=exp.DataType.Type.ARRAY,
    -2643                expressions=[exp.DataType.build(type_token.value, expressions=expressions)],
    -2644                nested=True,
    -2645            )
    -2646
    -2647            while self._match_pair(TokenType.L_BRACKET, TokenType.R_BRACKET):
    -2648                this = exp.DataType(
    -2649                    this=exp.DataType.Type.ARRAY,
    -2650                    expressions=[this],
    -2651                    nested=True,
    -2652                )
    +2640        # Postgres supports ISNULL and NOTNULL for conditions.
    +2641        # https://blog.andreiavram.ro/postgresql-null-composite-type/
    +2642        if self._match(TokenType.NOTNULL):
    +2643            this = self.expression(exp.Is, this=this, expression=exp.Null())
    +2644            this = self.expression(exp.Not, this=this)
    +2645
    +2646        if negate:
    +2647            this = self.expression(exp.Not, this=this)
    +2648
    +2649        if self._match(TokenType.IS):
    +2650            this = self._parse_is(this)
    +2651
    +2652        return this
     2653
    -2654            return this
    -2655
    -2656        if self._match(TokenType.L_BRACKET):
    -2657            self._retreat(index)
    -2658            return None
    -2659
    -2660        values: t.Optional[t.List[t.Optional[exp.Expression]]] = None
    -2661        if nested and self._match(TokenType.LT):
    -2662            if is_struct:
    -2663                expressions = self._parse_csv(self._parse_struct_kwargs)
    -2664            else:
    -2665                expressions = self._parse_csv(self._parse_types)
    -2666
    -2667            if not self._match(TokenType.GT):
    -2668                self.raise_error("Expecting >")
    -2669
    -2670            if self._match_set((TokenType.L_BRACKET, TokenType.L_PAREN)):
    -2671                values = self._parse_csv(self._parse_conjunction)
    -2672                self._match_set((TokenType.R_BRACKET, TokenType.R_PAREN))
    -2673
    -2674        value: t.Optional[exp.Expression] = None
    -2675        if type_token in self.TIMESTAMPS:
    -2676            if self._match(TokenType.WITH_TIME_ZONE) or type_token == TokenType.TIMESTAMPTZ:
    -2677                value = exp.DataType(this=exp.DataType.Type.TIMESTAMPTZ, expressions=expressions)
    -2678            elif (
    -2679                self._match(TokenType.WITH_LOCAL_TIME_ZONE) or type_token == TokenType.TIMESTAMPLTZ
    -2680            ):
    -2681                value = exp.DataType(this=exp.DataType.Type.TIMESTAMPLTZ, expressions=expressions)
    -2682            elif self._match(TokenType.WITHOUT_TIME_ZONE):
    -2683                if type_token == TokenType.TIME:
    -2684                    value = exp.DataType(this=exp.DataType.Type.TIME, expressions=expressions)
    -2685                else:
    -2686                    value = exp.DataType(this=exp.DataType.Type.TIMESTAMP, expressions=expressions)
    -2687
    -2688            maybe_func = maybe_func and value is None
    -2689
    -2690            if value is None:
    -2691                value = exp.DataType(this=exp.DataType.Type.TIMESTAMP, expressions=expressions)
    -2692        elif type_token == TokenType.INTERVAL:
    -2693            unit = self._parse_var()
    -2694
    -2695            if not unit:
    -2696                value = self.expression(exp.DataType, this=exp.DataType.Type.INTERVAL)
    -2697            else:
    -2698                value = self.expression(exp.Interval, unit=unit)
    -2699
    -2700        if maybe_func and check_func:
    -2701            index2 = self._index
    -2702            peek = self._parse_string()
    -2703
    -2704            if not peek:
    -2705                self._retreat(index)
    -2706                return None
    -2707
    -2708            self._retreat(index2)
    -2709
    -2710        if value:
    -2711            return value
    -2712
    -2713        return exp.DataType(
    -2714            this=exp.DataType.Type[type_token.value.upper()],
    -2715            expressions=expressions,
    -2716            nested=nested,
    -2717            values=values,
    -2718            prefix=prefix,
    -2719        )
    -2720
    -2721    def _parse_struct_kwargs(self) -> t.Optional[exp.Expression]:
    -2722        if self._curr and self._curr.token_type in self.TYPE_TOKENS:
    -2723            return self._parse_types()
    -2724
    -2725        this = self._parse_id_var()
    -2726        self._match(TokenType.COLON)
    -2727        data_type = self._parse_types()
    -2728
    -2729        if not data_type:
    -2730            return None
    -2731        return self.expression(exp.StructKwarg, this=this, expression=data_type)
    -2732
    -2733    def _parse_at_time_zone(self, this: t.Optional[exp.Expression]) -> t.Optional[exp.Expression]:
    -2734        if not self._match(TokenType.AT_TIME_ZONE):
    -2735            return this
    -2736        return self.expression(exp.AtTimeZone, this=this, zone=self._parse_unary())
    -2737
    -2738    def _parse_column(self) -> t.Optional[exp.Expression]:
    -2739        this = self._parse_field()
    -2740        if isinstance(this, exp.Identifier):
    -2741            this = self.expression(exp.Column, this=this)
    -2742        elif not this:
    -2743            return self._parse_bracket(this)
    -2744        this = self._parse_bracket(this)
    -2745
    -2746        while self._match_set(self.COLUMN_OPERATORS):
    -2747            op_token = self._prev.token_type
    -2748            op = self.COLUMN_OPERATORS.get(op_token)
    -2749
    -2750            if op_token == TokenType.DCOLON:
    -2751                field = self._parse_types()
    -2752                if not field:
    -2753                    self.raise_error("Expected type")
    -2754            elif op:
    -2755                self._advance()
    -2756                value = self._prev.text
    -2757                field = (
    -2758                    exp.Literal.number(value)
    -2759                    if self._prev.token_type == TokenType.NUMBER
    -2760                    else exp.Literal.string(value)
    -2761                )
    -2762            else:
    -2763                field = self._parse_star() or self._parse_function() or self._parse_id_var()
    -2764
    -2765            if isinstance(field, exp.Func):
    -2766                # bigquery allows function calls like x.y.count(...)
    -2767                # SAFE.SUBSTR(...)
    -2768                # https://cloud.google.com/bigquery/docs/reference/standard-sql/functions-reference#function_call_rules
    -2769                this = self._replace_columns_with_dots(this)
    -2770
    -2771            if op:
    -2772                this = op(self, this, field)
    -2773            elif isinstance(this, exp.Column) and not this.args.get("catalog"):
    -2774                this = self.expression(
    -2775                    exp.Column,
    -2776                    this=field,
    -2777                    table=this.this,
    -2778                    db=this.args.get("table"),
    -2779                    catalog=this.args.get("db"),
    -2780                )
    -2781            else:
    -2782                this = self.expression(exp.Dot, this=this, expression=field)
    -2783            this = self._parse_bracket(this)
    +2654    def _parse_is(self, this: t.Optional[exp.Expression]) -> t.Optional[exp.Expression]:
    +2655        index = self._index - 1
    +2656        negate = self._match(TokenType.NOT)
    +2657        if self._match(TokenType.DISTINCT_FROM):
    +2658            klass = exp.NullSafeEQ if negate else exp.NullSafeNEQ
    +2659            return self.expression(klass, this=this, expression=self._parse_expression())
    +2660
    +2661        expression = self._parse_null() or self._parse_boolean()
    +2662        if not expression:
    +2663            self._retreat(index)
    +2664            return None
    +2665
    +2666        this = self.expression(exp.Is, this=this, expression=expression)
    +2667        return self.expression(exp.Not, this=this) if negate else this
    +2668
    +2669    def _parse_in(self, this: t.Optional[exp.Expression]) -> exp.Expression:
    +2670        unnest = self._parse_unnest()
    +2671        if unnest:
    +2672            this = self.expression(exp.In, this=this, unnest=unnest)
    +2673        elif self._match(TokenType.L_PAREN):
    +2674            expressions = self._parse_csv(self._parse_select_or_expression)
    +2675
    +2676            if len(expressions) == 1 and isinstance(expressions[0], exp.Subqueryable):
    +2677                this = self.expression(exp.In, this=this, query=expressions[0])
    +2678            else:
    +2679                this = self.expression(exp.In, this=this, expressions=expressions)
    +2680
    +2681            self._match_r_paren()
    +2682        else:
    +2683            this = self.expression(exp.In, this=this, field=self._parse_field())
    +2684
    +2685        return this
    +2686
    +2687    def _parse_between(self, this: exp.Expression) -> exp.Expression:
    +2688        low = self._parse_bitwise()
    +2689        self._match(TokenType.AND)
    +2690        high = self._parse_bitwise()
    +2691        return self.expression(exp.Between, this=this, low=low, high=high)
    +2692
    +2693    def _parse_escape(self, this: t.Optional[exp.Expression]) -> t.Optional[exp.Expression]:
    +2694        if not self._match(TokenType.ESCAPE):
    +2695            return this
    +2696        return self.expression(exp.Escape, this=this, expression=self._parse_string())
    +2697
    +2698    def _parse_interval(self) -> t.Optional[exp.Expression]:
    +2699        if not self._match(TokenType.INTERVAL):
    +2700            return None
    +2701
    +2702        this = self._parse_primary() or self._parse_term()
    +2703        unit = self._parse_function() or self._parse_var()
    +2704
    +2705        # Most dialects support, e.g., the form INTERVAL '5' day, thus we try to parse
    +2706        # each INTERVAL expression into this canonical form so it's easy to transpile
    +2707        if this and isinstance(this, exp.Literal):
    +2708            if this.is_number:
    +2709                this = exp.Literal.string(this.name)
    +2710
    +2711            # Try to not clutter Snowflake's multi-part intervals like INTERVAL '1 day, 1 year'
    +2712            parts = this.name.split()
    +2713            if not unit and len(parts) <= 2:
    +2714                this = exp.Literal.string(seq_get(parts, 0))
    +2715                unit = self.expression(exp.Var, this=seq_get(parts, 1))
    +2716
    +2717        return self.expression(exp.Interval, this=this, unit=unit)
    +2718
    +2719    def _parse_bitwise(self) -> t.Optional[exp.Expression]:
    +2720        this = self._parse_term()
    +2721
    +2722        while True:
    +2723            if self._match_set(self.BITWISE):
    +2724                this = self.expression(
    +2725                    self.BITWISE[self._prev.token_type],
    +2726                    this=this,
    +2727                    expression=self._parse_term(),
    +2728                )
    +2729            elif self._match_pair(TokenType.LT, TokenType.LT):
    +2730                this = self.expression(
    +2731                    exp.BitwiseLeftShift, this=this, expression=self._parse_term()
    +2732                )
    +2733            elif self._match_pair(TokenType.GT, TokenType.GT):
    +2734                this = self.expression(
    +2735                    exp.BitwiseRightShift, this=this, expression=self._parse_term()
    +2736                )
    +2737            else:
    +2738                break
    +2739
    +2740        return this
    +2741
    +2742    def _parse_term(self) -> t.Optional[exp.Expression]:
    +2743        return self._parse_tokens(self._parse_factor, self.TERM)
    +2744
    +2745    def _parse_factor(self) -> t.Optional[exp.Expression]:
    +2746        return self._parse_tokens(self._parse_unary, self.FACTOR)
    +2747
    +2748    def _parse_unary(self) -> t.Optional[exp.Expression]:
    +2749        if self._match_set(self.UNARY_PARSERS):
    +2750            return self.UNARY_PARSERS[self._prev.token_type](self)
    +2751        return self._parse_at_time_zone(self._parse_type())
    +2752
    +2753    def _parse_type(self) -> t.Optional[exp.Expression]:
    +2754        interval = self._parse_interval()
    +2755        if interval:
    +2756            return interval
    +2757
    +2758        index = self._index
    +2759        data_type = self._parse_types(check_func=True)
    +2760        this = self._parse_column()
    +2761
    +2762        if data_type:
    +2763            if isinstance(this, exp.Literal):
    +2764                parser = self.TYPE_LITERAL_PARSERS.get(data_type.this)
    +2765                if parser:
    +2766                    return parser(self, this, data_type)
    +2767                return self.expression(exp.Cast, this=this, to=data_type)
    +2768            if not data_type.args.get("expressions"):
    +2769                self._retreat(index)
    +2770                return self._parse_column()
    +2771            return data_type
    +2772
    +2773        return this
    +2774
    +2775    def _parse_types(self, check_func: bool = False) -> t.Optional[exp.Expression]:
    +2776        index = self._index
    +2777
    +2778        prefix = self._match_text_seq("SYSUDTLIB", ".")
    +2779
    +2780        if not self._match_set(self.TYPE_TOKENS):
    +2781            return None
    +2782
    +2783        type_token = self._prev.token_type
     2784
    -2785        return this
    -2786
    -2787    def _parse_primary(self) -> t.Optional[exp.Expression]:
    -2788        if self._match_set(self.PRIMARY_PARSERS):
    -2789            token_type = self._prev.token_type
    -2790            primary = self.PRIMARY_PARSERS[token_type](self, self._prev)
    -2791
    -2792            if token_type == TokenType.STRING:
    -2793                expressions = [primary]
    -2794                while self._match(TokenType.STRING):
    -2795                    expressions.append(exp.Literal.string(self._prev.text))
    -2796                if len(expressions) > 1:
    -2797                    return self.expression(exp.Concat, expressions=expressions)
    -2798            return primary
    -2799
    -2800        if self._match_pair(TokenType.DOT, TokenType.NUMBER):
    -2801            return exp.Literal.number(f"0.{self._prev.text}")
    -2802
    -2803        if self._match(TokenType.L_PAREN):
    -2804            comments = self._prev_comments
    -2805            query = self._parse_select()
    -2806
    -2807            if query:
    -2808                expressions = [query]
    -2809            else:
    -2810                expressions = self._parse_csv(
    -2811                    lambda: self._parse_alias(self._parse_conjunction(), explicit=True)
    -2812                )
    -2813
    -2814            this = seq_get(expressions, 0)
    -2815            self._parse_query_modifiers(this)
    -2816
    -2817            if isinstance(this, exp.Subqueryable):
    -2818                this = self._parse_set_operations(
    -2819                    self._parse_subquery(this=this, parse_alias=False)
    +2785        if type_token == TokenType.PSEUDO_TYPE:
    +2786            return self.expression(exp.PseudoType, this=self._prev.text)
    +2787
    +2788        nested = type_token in self.NESTED_TYPE_TOKENS
    +2789        is_struct = type_token == TokenType.STRUCT
    +2790        expressions = None
    +2791        maybe_func = False
    +2792
    +2793        if self._match(TokenType.L_PAREN):
    +2794            if is_struct:
    +2795                expressions = self._parse_csv(self._parse_struct_kwargs)
    +2796            elif nested:
    +2797                expressions = self._parse_csv(self._parse_types)
    +2798            else:
    +2799                expressions = self._parse_csv(self._parse_conjunction)
    +2800
    +2801            if not expressions:
    +2802                self._retreat(index)
    +2803                return None
    +2804
    +2805            self._match_r_paren()
    +2806            maybe_func = True
    +2807
    +2808        if self._match_pair(TokenType.L_BRACKET, TokenType.R_BRACKET):
    +2809            this = exp.DataType(
    +2810                this=exp.DataType.Type.ARRAY,
    +2811                expressions=[exp.DataType.build(type_token.value, expressions=expressions)],
    +2812                nested=True,
    +2813            )
    +2814
    +2815            while self._match_pair(TokenType.L_BRACKET, TokenType.R_BRACKET):
    +2816                this = exp.DataType(
    +2817                    this=exp.DataType.Type.ARRAY,
    +2818                    expressions=[this],
    +2819                    nested=True,
     2820                )
    -2821            elif len(expressions) > 1:
    -2822                this = self.expression(exp.Tuple, expressions=expressions)
    -2823            else:
    -2824                this = self.expression(exp.Paren, this=self._parse_set_operations(this))
    -2825
    -2826            self._match_r_paren()
    +2821
    +2822            return this
    +2823
    +2824        if self._match(TokenType.L_BRACKET):
    +2825            self._retreat(index)
    +2826            return None
     2827
    -2828            if this and comments:
    -2829                this.comments = comments
    -2830
    -2831            return this
    -2832
    -2833        return None
    +2828        values: t.Optional[t.List[t.Optional[exp.Expression]]] = None
    +2829        if nested and self._match(TokenType.LT):
    +2830            if is_struct:
    +2831                expressions = self._parse_csv(self._parse_struct_kwargs)
    +2832            else:
    +2833                expressions = self._parse_csv(self._parse_types)
     2834
    -2835    def _parse_field(self, any_token: bool = False) -> t.Optional[exp.Expression]:
    -2836        return self._parse_primary() or self._parse_function() or self._parse_id_var(any_token)
    +2835            if not self._match(TokenType.GT):
    +2836                self.raise_error("Expecting >")
     2837
    -2838    def _parse_function(
    -2839        self, functions: t.Optional[t.Dict[str, t.Callable]] = None
    -2840    ) -> t.Optional[exp.Expression]:
    -2841        if not self._curr:
    -2842            return None
    -2843
    -2844        token_type = self._curr.token_type
    -2845
    -2846        if self._match_set(self.NO_PAREN_FUNCTION_PARSERS):
    -2847            return self.NO_PAREN_FUNCTION_PARSERS[token_type](self)
    -2848
    -2849        if not self._next or self._next.token_type != TokenType.L_PAREN:
    -2850            if token_type in self.NO_PAREN_FUNCTIONS:
    -2851                self._advance()
    -2852                return self.expression(self.NO_PAREN_FUNCTIONS[token_type])
    -2853
    -2854            return None
    +2838            if self._match_set((TokenType.L_BRACKET, TokenType.L_PAREN)):
    +2839                values = self._parse_csv(self._parse_conjunction)
    +2840                self._match_set((TokenType.R_BRACKET, TokenType.R_PAREN))
    +2841
    +2842        value: t.Optional[exp.Expression] = None
    +2843        if type_token in self.TIMESTAMPS:
    +2844            if self._match(TokenType.WITH_TIME_ZONE) or type_token == TokenType.TIMESTAMPTZ:
    +2845                value = exp.DataType(this=exp.DataType.Type.TIMESTAMPTZ, expressions=expressions)
    +2846            elif (
    +2847                self._match(TokenType.WITH_LOCAL_TIME_ZONE) or type_token == TokenType.TIMESTAMPLTZ
    +2848            ):
    +2849                value = exp.DataType(this=exp.DataType.Type.TIMESTAMPLTZ, expressions=expressions)
    +2850            elif self._match(TokenType.WITHOUT_TIME_ZONE):
    +2851                if type_token == TokenType.TIME:
    +2852                    value = exp.DataType(this=exp.DataType.Type.TIME, expressions=expressions)
    +2853                else:
    +2854                    value = exp.DataType(this=exp.DataType.Type.TIMESTAMP, expressions=expressions)
     2855
    -2856        if token_type not in self.FUNC_TOKENS:
    -2857            return None
    -2858
    -2859        this = self._curr.text
    -2860        upper = this.upper()
    -2861        self._advance(2)
    +2856            maybe_func = maybe_func and value is None
    +2857
    +2858            if value is None:
    +2859                value = exp.DataType(this=exp.DataType.Type.TIMESTAMP, expressions=expressions)
    +2860        elif type_token == TokenType.INTERVAL:
    +2861            unit = self._parse_var()
     2862
    -2863        parser = self.FUNCTION_PARSERS.get(upper)
    -2864
    -2865        if parser:
    -2866            this = parser(self)
    -2867        else:
    -2868            subquery_predicate = self.SUBQUERY_PREDICATES.get(token_type)
    -2869
    -2870            if subquery_predicate and self._curr.token_type in (TokenType.SELECT, TokenType.WITH):
    -2871                this = self.expression(subquery_predicate, this=self._parse_select())
    -2872                self._match_r_paren()
    -2873                return this
    -2874
    -2875            if functions is None:
    -2876                functions = self.FUNCTIONS
    +2863            if not unit:
    +2864                value = self.expression(exp.DataType, this=exp.DataType.Type.INTERVAL)
    +2865            else:
    +2866                value = self.expression(exp.Interval, unit=unit)
    +2867
    +2868        if maybe_func and check_func:
    +2869            index2 = self._index
    +2870            peek = self._parse_string()
    +2871
    +2872            if not peek:
    +2873                self._retreat(index)
    +2874                return None
    +2875
    +2876            self._retreat(index2)
     2877
    -2878            function = functions.get(upper)
    -2879            args = self._parse_csv(self._parse_lambda)
    +2878        if value:
    +2879            return value
     2880
    -2881            if function:
    -2882                # Clickhouse supports function calls like foo(x, y)(z), so for these we need to also parse the
    -2883                # second parameter list (i.e. "(z)") and the corresponding function will receive both arg lists.
    -2884                if count_params(function) == 2:
    -2885                    params = None
    -2886                    if self._match_pair(TokenType.R_PAREN, TokenType.L_PAREN):
    -2887                        params = self._parse_csv(self._parse_lambda)
    +2881        return exp.DataType(
    +2882            this=exp.DataType.Type[type_token.value.upper()],
    +2883            expressions=expressions,
    +2884            nested=nested,
    +2885            values=values,
    +2886            prefix=prefix,
    +2887        )
     2888
    -2889                    this = function(args, params)
    -2890                else:
    -2891                    this = function(args)
    -2892
    -2893                self.validate_expression(this, args)
    -2894            else:
    -2895                this = self.expression(exp.Anonymous, this=this, expressions=args)
    -2896
    -2897        self._match_r_paren(this)
    -2898        return self._parse_window(this)
    +2889    def _parse_struct_kwargs(self) -> t.Optional[exp.Expression]:
    +2890        index = self._index
    +2891        this = self._parse_id_var()
    +2892        self._match(TokenType.COLON)
    +2893        data_type = self._parse_types()
    +2894
    +2895        if not data_type:
    +2896            self._retreat(index)
    +2897            return self._parse_types()
    +2898        return self.expression(exp.StructKwarg, this=this, expression=data_type)
     2899
    -2900    def _parse_function_parameter(self) -> t.Optional[exp.Expression]:
    -2901        return self._parse_column_def(self._parse_id_var())
    -2902
    -2903    def _parse_user_defined_function(
    -2904        self, kind: t.Optional[TokenType] = None
    -2905    ) -> t.Optional[exp.Expression]:
    -2906        this = self._parse_id_var()
    -2907
    -2908        while self._match(TokenType.DOT):
    -2909            this = self.expression(exp.Dot, this=this, expression=self._parse_id_var())
    -2910
    -2911        if not self._match(TokenType.L_PAREN):
    -2912            return this
    -2913
    -2914        expressions = self._parse_csv(self._parse_function_parameter)
    -2915        self._match_r_paren()
    -2916        return self.expression(
    -2917            exp.UserDefinedFunction, this=this, expressions=expressions, wrapped=True
    -2918        )
    -2919
    -2920    def _parse_introducer(self, token: Token) -> t.Optional[exp.Expression]:
    -2921        literal = self._parse_primary()
    -2922        if literal:
    -2923            return self.expression(exp.Introducer, this=token.text, expression=literal)
    -2924
    -2925        return self.expression(exp.Identifier, this=token.text)
    -2926
    -2927    def _parse_national(self, token: Token) -> exp.Expression:
    -2928        return self.expression(exp.National, this=exp.Literal.string(token.text))
    -2929
    -2930    def _parse_session_parameter(self) -> exp.Expression:
    -2931        kind = None
    -2932        this = self._parse_id_var() or self._parse_primary()
    -2933
    -2934        if this and self._match(TokenType.DOT):
    -2935            kind = this.name
    -2936            this = self._parse_var() or self._parse_primary()
    +2900    def _parse_at_time_zone(self, this: t.Optional[exp.Expression]) -> t.Optional[exp.Expression]:
    +2901        if not self._match(TokenType.AT_TIME_ZONE):
    +2902            return this
    +2903        return self.expression(exp.AtTimeZone, this=this, zone=self._parse_unary())
    +2904
    +2905    def _parse_column(self) -> t.Optional[exp.Expression]:
    +2906        this = self._parse_field()
    +2907        if isinstance(this, exp.Identifier):
    +2908            this = self.expression(exp.Column, this=this)
    +2909        elif not this:
    +2910            return self._parse_bracket(this)
    +2911        this = self._parse_bracket(this)
    +2912
    +2913        while self._match_set(self.COLUMN_OPERATORS):
    +2914            op_token = self._prev.token_type
    +2915            op = self.COLUMN_OPERATORS.get(op_token)
    +2916
    +2917            if op_token == TokenType.DCOLON:
    +2918                field = self._parse_types()
    +2919                if not field:
    +2920                    self.raise_error("Expected type")
    +2921            elif op:
    +2922                self._advance()
    +2923                value = self._prev.text
    +2924                field = (
    +2925                    exp.Literal.number(value)
    +2926                    if self._prev.token_type == TokenType.NUMBER
    +2927                    else exp.Literal.string(value)
    +2928                )
    +2929            else:
    +2930                field = self._parse_star() or self._parse_function() or self._parse_id_var()
    +2931
    +2932            if isinstance(field, exp.Func):
    +2933                # bigquery allows function calls like x.y.count(...)
    +2934                # SAFE.SUBSTR(...)
    +2935                # https://cloud.google.com/bigquery/docs/reference/standard-sql/functions-reference#function_call_rules
    +2936                this = self._replace_columns_with_dots(this)
     2937
    -2938        return self.expression(exp.SessionParameter, this=this, kind=kind)
    -2939
    -2940    def _parse_lambda(self) -> t.Optional[exp.Expression]:
    -2941        index = self._index
    -2942
    -2943        if self._match(TokenType.L_PAREN):
    -2944            expressions = self._parse_csv(self._parse_id_var)
    -2945
    -2946            if not self._match(TokenType.R_PAREN):
    -2947                self._retreat(index)
    -2948        else:
    -2949            expressions = [self._parse_id_var()]
    -2950
    -2951        if self._match_set(self.LAMBDAS):
    -2952            return self.LAMBDAS[self._prev.token_type](self, expressions)
    +2938            if op:
    +2939                this = op(self, this, field)
    +2940            elif isinstance(this, exp.Column) and not this.args.get("catalog"):
    +2941                this = self.expression(
    +2942                    exp.Column,
    +2943                    this=field,
    +2944                    table=this.this,
    +2945                    db=this.args.get("table"),
    +2946                    catalog=this.args.get("db"),
    +2947                )
    +2948            else:
    +2949                this = self.expression(exp.Dot, this=this, expression=field)
    +2950            this = self._parse_bracket(this)
    +2951
    +2952        return this
     2953
    -2954        self._retreat(index)
    -2955
    -2956        this: t.Optional[exp.Expression]
    -2957
    -2958        if self._match(TokenType.DISTINCT):
    -2959            this = self.expression(
    -2960                exp.Distinct, expressions=self._parse_csv(self._parse_conjunction)
    -2961            )
    -2962        else:
    -2963            this = self._parse_select_or_expression()
    -2964
    -2965            if isinstance(this, exp.EQ):
    -2966                left = this.this
    -2967                if isinstance(left, exp.Column):
    -2968                    left.replace(exp.Var(this=left.text("this")))
    +2954    def _parse_primary(self) -> t.Optional[exp.Expression]:
    +2955        if self._match_set(self.PRIMARY_PARSERS):
    +2956            token_type = self._prev.token_type
    +2957            primary = self.PRIMARY_PARSERS[token_type](self, self._prev)
    +2958
    +2959            if token_type == TokenType.STRING:
    +2960                expressions = [primary]
    +2961                while self._match(TokenType.STRING):
    +2962                    expressions.append(exp.Literal.string(self._prev.text))
    +2963                if len(expressions) > 1:
    +2964                    return self.expression(exp.Concat, expressions=expressions)
    +2965            return primary
    +2966
    +2967        if self._match_pair(TokenType.DOT, TokenType.NUMBER):
    +2968            return exp.Literal.number(f"0.{self._prev.text}")
     2969
    -2970        if self._match(TokenType.IGNORE_NULLS):
    -2971            this = self.expression(exp.IgnoreNulls, this=this)
    -2972        else:
    -2973            self._match(TokenType.RESPECT_NULLS)
    -2974
    -2975        return self._parse_limit(self._parse_order(this))
    -2976
    -2977    def _parse_schema(self, this: t.Optional[exp.Expression] = None) -> t.Optional[exp.Expression]:
    -2978        index = self._index
    -2979        if not self._match(TokenType.L_PAREN) or self._match(TokenType.SELECT):
    -2980            self._retreat(index)
    -2981            return this
    -2982
    -2983        args = self._parse_csv(
    -2984            lambda: self._parse_constraint()
    -2985            or self._parse_column_def(self._parse_field(any_token=True))
    -2986        )
    -2987        self._match_r_paren()
    -2988        return self.expression(exp.Schema, this=this, expressions=args)
    -2989
    -2990    def _parse_column_def(self, this: t.Optional[exp.Expression]) -> t.Optional[exp.Expression]:
    -2991        kind = self._parse_types()
    +2970        if self._match(TokenType.L_PAREN):
    +2971            comments = self._prev_comments
    +2972            query = self._parse_select()
    +2973
    +2974            if query:
    +2975                expressions = [query]
    +2976            else:
    +2977                expressions = self._parse_csv(
    +2978                    lambda: self._parse_alias(self._parse_conjunction(), explicit=True)
    +2979                )
    +2980
    +2981            this = seq_get(expressions, 0)
    +2982            self._parse_query_modifiers(this)
    +2983
    +2984            if isinstance(this, exp.Subqueryable):
    +2985                this = self._parse_set_operations(
    +2986                    self._parse_subquery(this=this, parse_alias=False)
    +2987                )
    +2988            elif len(expressions) > 1:
    +2989                this = self.expression(exp.Tuple, expressions=expressions)
    +2990            else:
    +2991                this = self.expression(exp.Paren, this=self._parse_set_operations(this))
     2992
    -2993        if self._match_text_seq("FOR", "ORDINALITY"):
    -2994            return self.expression(exp.ColumnDef, this=this, ordinality=True)
    +2993            self._match_r_paren()
    +2994            comments.extend(self._prev_comments)
     2995
    -2996        constraints = []
    -2997        while True:
    -2998            constraint = self._parse_column_constraint()
    -2999            if not constraint:
    -3000                break
    -3001            constraints.append(constraint)
    +2996            if this and comments:
    +2997                this.comments = comments
    +2998
    +2999            return this
    +3000
    +3001        return None
     3002
    -3003        if not kind and not constraints:
    -3004            return this
    -3005
    -3006        return self.expression(exp.ColumnDef, this=this, kind=kind, constraints=constraints)
    -3007
    -3008    def _parse_auto_increment(self) -> exp.Expression:
    -3009        start = None
    -3010        increment = None
    -3011
    -3012        if self._match(TokenType.L_PAREN, advance=False):
    -3013            args = self._parse_wrapped_csv(self._parse_bitwise)
    -3014            start = seq_get(args, 0)
    -3015            increment = seq_get(args, 1)
    -3016        elif self._match_text_seq("START"):
    -3017            start = self._parse_bitwise()
    -3018            self._match_text_seq("INCREMENT")
    -3019            increment = self._parse_bitwise()
    -3020
    -3021        if start and increment:
    -3022            return exp.GeneratedAsIdentityColumnConstraint(start=start, increment=increment)
    -3023
    -3024        return exp.AutoIncrementColumnConstraint()
    -3025
    -3026    def _parse_compress(self) -> exp.Expression:
    -3027        if self._match(TokenType.L_PAREN, advance=False):
    -3028            return self.expression(
    -3029                exp.CompressColumnConstraint, this=self._parse_wrapped_csv(self._parse_bitwise)
    -3030            )
    +3003    def _parse_field(
    +3004        self,
    +3005        any_token: bool = False,
    +3006        tokens: t.Optional[t.Collection[TokenType]] = None,
    +3007    ) -> t.Optional[exp.Expression]:
    +3008        return (
    +3009            self._parse_primary()
    +3010            or self._parse_function()
    +3011            or self._parse_id_var(any_token=any_token, tokens=tokens)
    +3012        )
    +3013
    +3014    def _parse_function(
    +3015        self, functions: t.Optional[t.Dict[str, t.Callable]] = None
    +3016    ) -> t.Optional[exp.Expression]:
    +3017        if not self._curr:
    +3018            return None
    +3019
    +3020        token_type = self._curr.token_type
    +3021
    +3022        if self._match_set(self.NO_PAREN_FUNCTION_PARSERS):
    +3023            return self.NO_PAREN_FUNCTION_PARSERS[token_type](self)
    +3024
    +3025        if not self._next or self._next.token_type != TokenType.L_PAREN:
    +3026            if token_type in self.NO_PAREN_FUNCTIONS:
    +3027                self._advance()
    +3028                return self.expression(self.NO_PAREN_FUNCTIONS[token_type])
    +3029
    +3030            return None
     3031
    -3032        return self.expression(exp.CompressColumnConstraint, this=self._parse_bitwise())
    -3033
    -3034    def _parse_generated_as_identity(self) -> exp.Expression:
    -3035        if self._match(TokenType.BY_DEFAULT):
    -3036            this = self.expression(exp.GeneratedAsIdentityColumnConstraint, this=False)
    -3037        else:
    -3038            self._match_text_seq("ALWAYS")
    -3039            this = self.expression(exp.GeneratedAsIdentityColumnConstraint, this=True)
    +3032        if token_type not in self.FUNC_TOKENS:
    +3033            return None
    +3034
    +3035        this = self._curr.text
    +3036        upper = this.upper()
    +3037        self._advance(2)
    +3038
    +3039        parser = self.FUNCTION_PARSERS.get(upper)
     3040
    -3041        self._match_text_seq("AS", "IDENTITY")
    -3042        if self._match(TokenType.L_PAREN):
    -3043            if self._match_text_seq("START", "WITH"):
    -3044                this.set("start", self._parse_bitwise())
    -3045            if self._match_text_seq("INCREMENT", "BY"):
    -3046                this.set("increment", self._parse_bitwise())
    -3047            if self._match_text_seq("MINVALUE"):
    -3048                this.set("minvalue", self._parse_bitwise())
    -3049            if self._match_text_seq("MAXVALUE"):
    -3050                this.set("maxvalue", self._parse_bitwise())
    -3051
    -3052            if self._match_text_seq("CYCLE"):
    -3053                this.set("cycle", True)
    -3054            elif self._match_text_seq("NO", "CYCLE"):
    -3055                this.set("cycle", False)
    +3041        if parser:
    +3042            this = parser(self)
    +3043        else:
    +3044            subquery_predicate = self.SUBQUERY_PREDICATES.get(token_type)
    +3045
    +3046            if subquery_predicate and self._curr.token_type in (TokenType.SELECT, TokenType.WITH):
    +3047                this = self.expression(subquery_predicate, this=self._parse_select())
    +3048                self._match_r_paren()
    +3049                return this
    +3050
    +3051            if functions is None:
    +3052                functions = self.FUNCTIONS
    +3053
    +3054            function = functions.get(upper)
    +3055            args = self._parse_csv(self._parse_lambda)
     3056
    -3057            self._match_r_paren()
    -3058
    -3059        return this
    -3060
    -3061    def _parse_inline(self) -> t.Optional[exp.Expression]:
    -3062        self._match_text_seq("LENGTH")
    -3063        return self.expression(exp.InlineLengthColumnConstraint, this=self._parse_bitwise())
    +3057            if function:
    +3058                # Clickhouse supports function calls like foo(x, y)(z), so for these we need to also parse the
    +3059                # second parameter list (i.e. "(z)") and the corresponding function will receive both arg lists.
    +3060                if count_params(function) == 2:
    +3061                    params = None
    +3062                    if self._match_pair(TokenType.R_PAREN, TokenType.L_PAREN):
    +3063                        params = self._parse_csv(self._parse_lambda)
     3064
    -3065    def _parse_not_constraint(self) -> t.Optional[exp.Expression]:
    -3066        if self._match_text_seq("NULL"):
    -3067            return self.expression(exp.NotNullColumnConstraint)
    -3068        if self._match_text_seq("CASESPECIFIC"):
    -3069            return self.expression(exp.CaseSpecificColumnConstraint, not_=True)
    -3070        return None
    -3071
    -3072    def _parse_column_constraint(self) -> t.Optional[exp.Expression]:
    -3073        this = self._parse_references()
    -3074        if this:
    -3075            return this
    -3076
    -3077        if self._match(TokenType.CONSTRAINT):
    -3078            this = self._parse_id_var()
    -3079
    -3080        if self._match_texts(self.CONSTRAINT_PARSERS):
    -3081            return self.expression(
    -3082                exp.ColumnConstraint,
    -3083                this=this,
    -3084                kind=self.CONSTRAINT_PARSERS[self._prev.text.upper()](self),
    -3085            )
    +3065                    this = function(args, params)
    +3066                else:
    +3067                    this = function(args)
    +3068
    +3069                self.validate_expression(this, args)
    +3070            else:
    +3071                this = self.expression(exp.Anonymous, this=this, expressions=args)
    +3072
    +3073        self._match_r_paren(this)
    +3074        return self._parse_window(this)
    +3075
    +3076    def _parse_function_parameter(self) -> t.Optional[exp.Expression]:
    +3077        return self._parse_column_def(self._parse_id_var())
    +3078
    +3079    def _parse_user_defined_function(
    +3080        self, kind: t.Optional[TokenType] = None
    +3081    ) -> t.Optional[exp.Expression]:
    +3082        this = self._parse_id_var()
    +3083
    +3084        while self._match(TokenType.DOT):
    +3085            this = self.expression(exp.Dot, this=this, expression=self._parse_id_var())
     3086
    -3087        return this
    -3088
    -3089    def _parse_constraint(self) -> t.Optional[exp.Expression]:
    -3090        if not self._match(TokenType.CONSTRAINT):
    -3091            return self._parse_unnamed_constraint(constraints=self.SCHEMA_UNNAMED_CONSTRAINTS)
    -3092
    -3093        this = self._parse_id_var()
    -3094        expressions = []
    +3087        if not self._match(TokenType.L_PAREN):
    +3088            return this
    +3089
    +3090        expressions = self._parse_csv(self._parse_function_parameter)
    +3091        self._match_r_paren()
    +3092        return self.expression(
    +3093            exp.UserDefinedFunction, this=this, expressions=expressions, wrapped=True
    +3094        )
     3095
    -3096        while True:
    -3097            constraint = self._parse_unnamed_constraint() or self._parse_function()
    -3098            if not constraint:
    -3099                break
    -3100            expressions.append(constraint)
    -3101
    -3102        return self.expression(exp.Constraint, this=this, expressions=expressions)
    -3103
    -3104    def _parse_unnamed_constraint(
    -3105        self, constraints: t.Optional[t.Collection[str]] = None
    -3106    ) -> t.Optional[exp.Expression]:
    -3107        if not self._match_texts(constraints or self.CONSTRAINT_PARSERS):
    -3108            return None
    +3096    def _parse_introducer(self, token: Token) -> t.Optional[exp.Expression]:
    +3097        literal = self._parse_primary()
    +3098        if literal:
    +3099            return self.expression(exp.Introducer, this=token.text, expression=literal)
    +3100
    +3101        return self.expression(exp.Identifier, this=token.text)
    +3102
    +3103    def _parse_national(self, token: Token) -> exp.Expression:
    +3104        return self.expression(exp.National, this=exp.Literal.string(token.text))
    +3105
    +3106    def _parse_session_parameter(self) -> exp.Expression:
    +3107        kind = None
    +3108        this = self._parse_id_var() or self._parse_primary()
     3109
    -3110        constraint = self._prev.text.upper()
    -3111        if constraint not in self.CONSTRAINT_PARSERS:
    -3112            self.raise_error(f"No parser found for schema constraint {constraint}.")
    +3110        if this and self._match(TokenType.DOT):
    +3111            kind = this.name
    +3112            this = self._parse_var() or self._parse_primary()
     3113
    -3114        return self.CONSTRAINT_PARSERS[constraint](self)
    +3114        return self.expression(exp.SessionParameter, this=this, kind=kind)
     3115
    -3116    def _parse_unique(self) -> exp.Expression:
    -3117        if not self._match(TokenType.L_PAREN, advance=False):
    -3118            return self.expression(exp.UniqueColumnConstraint)
    -3119        return self.expression(exp.Unique, expressions=self._parse_wrapped_id_vars())
    -3120
    -3121    def _parse_key_constraint_options(self) -> t.List[str]:
    -3122        options = []
    -3123        while True:
    -3124            if not self._curr:
    -3125                break
    +3116    def _parse_lambda(self) -> t.Optional[exp.Expression]:
    +3117        index = self._index
    +3118
    +3119        if self._match(TokenType.L_PAREN):
    +3120            expressions = self._parse_csv(self._parse_id_var)
    +3121
    +3122            if not self._match(TokenType.R_PAREN):
    +3123                self._retreat(index)
    +3124        else:
    +3125            expressions = [self._parse_id_var()]
     3126
    -3127            if self._match(TokenType.ON):
    -3128                action = None
    -3129                on = self._advance_any() and self._prev.text
    -3130
    -3131                if self._match(TokenType.NO_ACTION):
    -3132                    action = "NO ACTION"
    -3133                elif self._match(TokenType.CASCADE):
    -3134                    action = "CASCADE"
    -3135                elif self._match_pair(TokenType.SET, TokenType.NULL):
    -3136                    action = "SET NULL"
    -3137                elif self._match_pair(TokenType.SET, TokenType.DEFAULT):
    -3138                    action = "SET DEFAULT"
    -3139                else:
    -3140                    self.raise_error("Invalid key constraint")
    -3141
    -3142                options.append(f"ON {on} {action}")
    -3143            elif self._match_text_seq("NOT", "ENFORCED"):
    -3144                options.append("NOT ENFORCED")
    -3145            elif self._match_text_seq("DEFERRABLE"):
    -3146                options.append("DEFERRABLE")
    -3147            elif self._match_text_seq("INITIALLY", "DEFERRED"):
    -3148                options.append("INITIALLY DEFERRED")
    -3149            elif self._match_text_seq("NORELY"):
    -3150                options.append("NORELY")
    -3151            elif self._match_text_seq("MATCH", "FULL"):
    -3152                options.append("MATCH FULL")
    -3153            else:
    -3154                break
    +3127        if self._match_set(self.LAMBDAS):
    +3128            return self.LAMBDAS[self._prev.token_type](self, expressions)
    +3129
    +3130        self._retreat(index)
    +3131
    +3132        this: t.Optional[exp.Expression]
    +3133
    +3134        if self._match(TokenType.DISTINCT):
    +3135            this = self.expression(
    +3136                exp.Distinct, expressions=self._parse_csv(self._parse_conjunction)
    +3137            )
    +3138        else:
    +3139            this = self._parse_select_or_expression()
    +3140
    +3141            if isinstance(this, exp.EQ):
    +3142                left = this.this
    +3143                if isinstance(left, exp.Column):
    +3144                    left.replace(exp.Var(this=left.text("this")))
    +3145
    +3146        if self._match(TokenType.IGNORE_NULLS):
    +3147            this = self.expression(exp.IgnoreNulls, this=this)
    +3148        else:
    +3149            self._match(TokenType.RESPECT_NULLS)
    +3150
    +3151        return self._parse_limit(self._parse_order(this))
    +3152
    +3153    def _parse_schema(self, this: t.Optional[exp.Expression] = None) -> t.Optional[exp.Expression]:
    +3154        index = self._index
     3155
    -3156        return options
    -3157
    -3158    def _parse_references(self) -> t.Optional[exp.Expression]:
    -3159        if not self._match(TokenType.REFERENCES):
    -3160            return None
    -3161
    -3162        expressions = None
    -3163        this = self._parse_id_var()
    -3164
    -3165        if self._match(TokenType.L_PAREN, advance=False):
    -3166            expressions = self._parse_wrapped_id_vars()
    -3167
    -3168        options = self._parse_key_constraint_options()
    -3169        return self.expression(exp.Reference, this=this, expressions=expressions, options=options)
    -3170
    -3171    def _parse_foreign_key(self) -> exp.Expression:
    -3172        expressions = self._parse_wrapped_id_vars()
    -3173        reference = self._parse_references()
    -3174        options = {}
    -3175
    -3176        while self._match(TokenType.ON):
    -3177            if not self._match_set((TokenType.DELETE, TokenType.UPDATE)):
    -3178                self.raise_error("Expected DELETE or UPDATE")
    +3156        try:
    +3157            if self._parse_select(nested=True):
    +3158                return this
    +3159        except Exception:
    +3160            pass
    +3161        finally:
    +3162            self._retreat(index)
    +3163
    +3164        if not self._match(TokenType.L_PAREN):
    +3165            return this
    +3166
    +3167        args = self._parse_csv(
    +3168            lambda: self._parse_constraint()
    +3169            or self._parse_column_def(self._parse_field(any_token=True))
    +3170        )
    +3171        self._match_r_paren()
    +3172        return self.expression(exp.Schema, this=this, expressions=args)
    +3173
    +3174    def _parse_column_def(self, this: t.Optional[exp.Expression]) -> t.Optional[exp.Expression]:
    +3175        kind = self._parse_types()
    +3176
    +3177        if self._match_text_seq("FOR", "ORDINALITY"):
    +3178            return self.expression(exp.ColumnDef, this=this, ordinality=True)
     3179
    -3180            kind = self._prev.text.lower()
    -3181
    -3182            if self._match(TokenType.NO_ACTION):
    -3183                action = "NO ACTION"
    -3184            elif self._match(TokenType.SET):
    -3185                self._match_set((TokenType.NULL, TokenType.DEFAULT))
    -3186                action = "SET " + self._prev.text.upper()
    -3187            else:
    -3188                self._advance()
    -3189                action = self._prev.text.upper()
    -3190
    -3191            options[kind] = action
    -3192
    -3193        return self.expression(
    -3194            exp.ForeignKey, expressions=expressions, reference=reference, **options  # type: ignore
    -3195        )
    -3196
    -3197    def _parse_primary_key(self) -> exp.Expression:
    -3198        desc = (
    -3199            self._match_set((TokenType.ASC, TokenType.DESC))
    -3200            and self._prev.token_type == TokenType.DESC
    -3201        )
    -3202
    -3203        if not self._match(TokenType.L_PAREN, advance=False):
    -3204            return self.expression(exp.PrimaryKeyColumnConstraint, desc=desc)
    -3205
    -3206        expressions = self._parse_wrapped_id_vars()
    -3207        options = self._parse_key_constraint_options()
    -3208        return self.expression(exp.PrimaryKey, expressions=expressions, options=options)
    +3180        constraints = []
    +3181        while True:
    +3182            constraint = self._parse_column_constraint()
    +3183            if not constraint:
    +3184                break
    +3185            constraints.append(constraint)
    +3186
    +3187        if not kind and not constraints:
    +3188            return this
    +3189
    +3190        return self.expression(exp.ColumnDef, this=this, kind=kind, constraints=constraints)
    +3191
    +3192    def _parse_auto_increment(self) -> exp.Expression:
    +3193        start = None
    +3194        increment = None
    +3195
    +3196        if self._match(TokenType.L_PAREN, advance=False):
    +3197            args = self._parse_wrapped_csv(self._parse_bitwise)
    +3198            start = seq_get(args, 0)
    +3199            increment = seq_get(args, 1)
    +3200        elif self._match_text_seq("START"):
    +3201            start = self._parse_bitwise()
    +3202            self._match_text_seq("INCREMENT")
    +3203            increment = self._parse_bitwise()
    +3204
    +3205        if start and increment:
    +3206            return exp.GeneratedAsIdentityColumnConstraint(start=start, increment=increment)
    +3207
    +3208        return exp.AutoIncrementColumnConstraint()
     3209
    -3210    def _parse_bracket(self, this: t.Optional[exp.Expression]) -> t.Optional[exp.Expression]:
    -3211        if not self._match_set((TokenType.L_BRACKET, TokenType.L_BRACE)):
    -3212            return this
    -3213
    -3214        bracket_kind = self._prev.token_type
    -3215        expressions: t.List[t.Optional[exp.Expression]]
    -3216
    -3217        if self._match(TokenType.COLON):
    -3218            expressions = [self.expression(exp.Slice, expression=self._parse_conjunction())]
    -3219        else:
    -3220            expressions = self._parse_csv(lambda: self._parse_slice(self._parse_conjunction()))
    -3221
    -3222        # https://duckdb.org/docs/sql/data_types/struct.html#creating-structs
    -3223        if bracket_kind == TokenType.L_BRACE:
    -3224            this = self.expression(exp.Struct, expressions=expressions)
    -3225        elif not this or this.name.upper() == "ARRAY":
    -3226            this = self.expression(exp.Array, expressions=expressions)
    -3227        else:
    -3228            expressions = apply_index_offset(expressions, -self.index_offset)
    -3229            this = self.expression(exp.Bracket, this=this, expressions=expressions)
    -3230
    -3231        if not self._match(TokenType.R_BRACKET) and bracket_kind == TokenType.L_BRACKET:
    -3232            self.raise_error("Expected ]")
    -3233        elif not self._match(TokenType.R_BRACE) and bracket_kind == TokenType.L_BRACE:
    -3234            self.raise_error("Expected }")
    +3210    def _parse_compress(self) -> exp.Expression:
    +3211        if self._match(TokenType.L_PAREN, advance=False):
    +3212            return self.expression(
    +3213                exp.CompressColumnConstraint, this=self._parse_wrapped_csv(self._parse_bitwise)
    +3214            )
    +3215
    +3216        return self.expression(exp.CompressColumnConstraint, this=self._parse_bitwise())
    +3217
    +3218    def _parse_generated_as_identity(self) -> exp.Expression:
    +3219        if self._match(TokenType.BY_DEFAULT):
    +3220            this = self.expression(exp.GeneratedAsIdentityColumnConstraint, this=False)
    +3221        else:
    +3222            self._match_text_seq("ALWAYS")
    +3223            this = self.expression(exp.GeneratedAsIdentityColumnConstraint, this=True)
    +3224
    +3225        self._match_text_seq("AS", "IDENTITY")
    +3226        if self._match(TokenType.L_PAREN):
    +3227            if self._match_text_seq("START", "WITH"):
    +3228                this.set("start", self._parse_bitwise())
    +3229            if self._match_text_seq("INCREMENT", "BY"):
    +3230                this.set("increment", self._parse_bitwise())
    +3231            if self._match_text_seq("MINVALUE"):
    +3232                this.set("minvalue", self._parse_bitwise())
    +3233            if self._match_text_seq("MAXVALUE"):
    +3234                this.set("maxvalue", self._parse_bitwise())
     3235
    -3236        this.comments = self._prev_comments
    -3237        return self._parse_bracket(this)
    -3238
    -3239    def _parse_slice(self, this: t.Optional[exp.Expression]) -> t.Optional[exp.Expression]:
    -3240        if self._match(TokenType.COLON):
    -3241            return self.expression(exp.Slice, this=this, expression=self._parse_conjunction())
    -3242        return this
    -3243
    -3244    def _parse_case(self) -> t.Optional[exp.Expression]:
    -3245        ifs = []
    -3246        default = None
    -3247
    -3248        expression = self._parse_conjunction()
    -3249
    -3250        while self._match(TokenType.WHEN):
    -3251            this = self._parse_conjunction()
    -3252            self._match(TokenType.THEN)
    -3253            then = self._parse_conjunction()
    -3254            ifs.append(self.expression(exp.If, this=this, true=then))
    +3236            if self._match_text_seq("CYCLE"):
    +3237                this.set("cycle", True)
    +3238            elif self._match_text_seq("NO", "CYCLE"):
    +3239                this.set("cycle", False)
    +3240
    +3241            self._match_r_paren()
    +3242
    +3243        return this
    +3244
    +3245    def _parse_inline(self) -> t.Optional[exp.Expression]:
    +3246        self._match_text_seq("LENGTH")
    +3247        return self.expression(exp.InlineLengthColumnConstraint, this=self._parse_bitwise())
    +3248
    +3249    def _parse_not_constraint(self) -> t.Optional[exp.Expression]:
    +3250        if self._match_text_seq("NULL"):
    +3251            return self.expression(exp.NotNullColumnConstraint)
    +3252        if self._match_text_seq("CASESPECIFIC"):
    +3253            return self.expression(exp.CaseSpecificColumnConstraint, not_=True)
    +3254        return None
     3255
    -3256        if self._match(TokenType.ELSE):
    -3257            default = self._parse_conjunction()
    -3258
    -3259        if not self._match(TokenType.END):
    -3260            self.raise_error("Expected END after CASE", self._prev)
    +3256    def _parse_column_constraint(self) -> t.Optional[exp.Expression]:
    +3257        if self._match(TokenType.CONSTRAINT):
    +3258            this = self._parse_id_var()
    +3259        else:
    +3260            this = None
     3261
    -3262        return self._parse_window(
    -3263            self.expression(exp.Case, this=expression, ifs=ifs, default=default)
    -3264        )
    -3265
    -3266    def _parse_if(self) -> t.Optional[exp.Expression]:
    -3267        if self._match(TokenType.L_PAREN):
    -3268            args = self._parse_csv(self._parse_conjunction)
    -3269            this = exp.If.from_arg_list(args)
    -3270            self.validate_expression(this, args)
    -3271            self._match_r_paren()
    -3272        else:
    -3273            condition = self._parse_conjunction()
    -3274            self._match(TokenType.THEN)
    -3275            true = self._parse_conjunction()
    -3276            false = self._parse_conjunction() if self._match(TokenType.ELSE) else None
    -3277            self._match(TokenType.END)
    -3278            this = self.expression(exp.If, this=condition, true=true, false=false)
    -3279
    -3280        return self._parse_window(this)
    -3281
    -3282    def _parse_extract(self) -> exp.Expression:
    -3283        this = self._parse_function() or self._parse_var() or self._parse_type()
    -3284
    -3285        if self._match(TokenType.FROM):
    -3286            return self.expression(exp.Extract, this=this, expression=self._parse_bitwise())
    -3287
    -3288        if not self._match(TokenType.COMMA):
    -3289            self.raise_error("Expected FROM or comma after EXTRACT", self._prev)
    -3290
    -3291        return self.expression(exp.Extract, this=this, expression=self._parse_bitwise())
    -3292
    -3293    def _parse_cast(self, strict: bool) -> exp.Expression:
    -3294        this = self._parse_conjunction()
    +3262        if self._match_texts(self.CONSTRAINT_PARSERS):
    +3263            return self.expression(
    +3264                exp.ColumnConstraint,
    +3265                this=this,
    +3266                kind=self.CONSTRAINT_PARSERS[self._prev.text.upper()](self),
    +3267            )
    +3268
    +3269        return this
    +3270
    +3271    def _parse_constraint(self) -> t.Optional[exp.Expression]:
    +3272        if not self._match(TokenType.CONSTRAINT):
    +3273            return self._parse_unnamed_constraint(constraints=self.SCHEMA_UNNAMED_CONSTRAINTS)
    +3274
    +3275        this = self._parse_id_var()
    +3276        expressions = []
    +3277
    +3278        while True:
    +3279            constraint = self._parse_unnamed_constraint() or self._parse_function()
    +3280            if not constraint:
    +3281                break
    +3282            expressions.append(constraint)
    +3283
    +3284        return self.expression(exp.Constraint, this=this, expressions=expressions)
    +3285
    +3286    def _parse_unnamed_constraint(
    +3287        self, constraints: t.Optional[t.Collection[str]] = None
    +3288    ) -> t.Optional[exp.Expression]:
    +3289        if not self._match_texts(constraints or self.CONSTRAINT_PARSERS):
    +3290            return None
    +3291
    +3292        constraint = self._prev.text.upper()
    +3293        if constraint not in self.CONSTRAINT_PARSERS:
    +3294            self.raise_error(f"No parser found for schema constraint {constraint}.")
     3295
    -3296        if not self._match(TokenType.ALIAS):
    -3297            self.raise_error("Expected AS after CAST")
    -3298
    -3299        to = self._parse_types()
    -3300
    -3301        if not to:
    -3302            self.raise_error("Expected TYPE after CAST")
    -3303        elif to.this == exp.DataType.Type.CHAR:
    -3304            if self._match(TokenType.CHARACTER_SET):
    -3305                to = self.expression(exp.CharacterSet, this=self._parse_var_or_string())
    -3306
    -3307        return self.expression(exp.Cast if strict else exp.TryCast, this=this, to=to)
    +3296        return self.CONSTRAINT_PARSERS[constraint](self)
    +3297
    +3298    def _parse_unique(self) -> exp.Expression:
    +3299        if not self._match(TokenType.L_PAREN, advance=False):
    +3300            return self.expression(exp.UniqueColumnConstraint)
    +3301        return self.expression(exp.Unique, expressions=self._parse_wrapped_id_vars())
    +3302
    +3303    def _parse_key_constraint_options(self) -> t.List[str]:
    +3304        options = []
    +3305        while True:
    +3306            if not self._curr:
    +3307                break
     3308
    -3309    def _parse_string_agg(self) -> exp.Expression:
    -3310        expression: t.Optional[exp.Expression]
    -3311
    -3312        if self._match(TokenType.DISTINCT):
    -3313            args = self._parse_csv(self._parse_conjunction)
    -3314            expression = self.expression(exp.Distinct, expressions=[seq_get(args, 0)])
    -3315        else:
    -3316            args = self._parse_csv(self._parse_conjunction)
    -3317            expression = seq_get(args, 0)
    -3318
    -3319        index = self._index
    -3320        if not self._match(TokenType.R_PAREN):
    -3321            # postgres: STRING_AGG([DISTINCT] expression, separator [ORDER BY expression1 {ASC | DESC} [, ...]])
    -3322            order = self._parse_order(this=expression)
    -3323            return self.expression(exp.GroupConcat, this=order, separator=seq_get(args, 1))
    -3324
    -3325        # Checks if we can parse an order clause: WITHIN GROUP (ORDER BY <order_by_expression_list> [ASC | DESC]).
    -3326        # This is done "manually", instead of letting _parse_window parse it into an exp.WithinGroup node, so that
    -3327        # the STRING_AGG call is parsed like in MySQL / SQLite and can thus be transpiled more easily to them.
    -3328        if not self._match(TokenType.WITHIN_GROUP):
    -3329            self._retreat(index)
    -3330            this = exp.GroupConcat.from_arg_list(args)
    -3331            self.validate_expression(this, args)
    -3332            return this
    -3333
    -3334        self._match_l_paren()  # The corresponding match_r_paren will be called in parse_function (caller)
    -3335        order = self._parse_order(this=expression)
    -3336        return self.expression(exp.GroupConcat, this=order, separator=seq_get(args, 1))
    +3309            if self._match(TokenType.ON):
    +3310                action = None
    +3311                on = self._advance_any() and self._prev.text
    +3312
    +3313                if self._match(TokenType.NO_ACTION):
    +3314                    action = "NO ACTION"
    +3315                elif self._match(TokenType.CASCADE):
    +3316                    action = "CASCADE"
    +3317                elif self._match_pair(TokenType.SET, TokenType.NULL):
    +3318                    action = "SET NULL"
    +3319                elif self._match_pair(TokenType.SET, TokenType.DEFAULT):
    +3320                    action = "SET DEFAULT"
    +3321                else:
    +3322                    self.raise_error("Invalid key constraint")
    +3323
    +3324                options.append(f"ON {on} {action}")
    +3325            elif self._match_text_seq("NOT", "ENFORCED"):
    +3326                options.append("NOT ENFORCED")
    +3327            elif self._match_text_seq("DEFERRABLE"):
    +3328                options.append("DEFERRABLE")
    +3329            elif self._match_text_seq("INITIALLY", "DEFERRED"):
    +3330                options.append("INITIALLY DEFERRED")
    +3331            elif self._match_text_seq("NORELY"):
    +3332                options.append("NORELY")
    +3333            elif self._match_text_seq("MATCH", "FULL"):
    +3334                options.append("MATCH FULL")
    +3335            else:
    +3336                break
     3337
    -3338    def _parse_convert(self, strict: bool) -> t.Optional[exp.Expression]:
    -3339        to: t.Optional[exp.Expression]
    -3340        this = self._parse_bitwise()
    -3341
    -3342        if self._match(TokenType.USING):
    -3343            to = self.expression(exp.CharacterSet, this=self._parse_var())
    -3344        elif self._match(TokenType.COMMA):
    -3345            to = self._parse_bitwise()
    -3346        else:
    -3347            to = None
    -3348
    -3349        # Swap the argument order if needed to produce the correct AST
    -3350        if self.CONVERT_TYPE_FIRST:
    -3351            this, to = to, this
    +3338        return options
    +3339
    +3340    def _parse_references(self, match=True) -> t.Optional[exp.Expression]:
    +3341        if match and not self._match(TokenType.REFERENCES):
    +3342            return None
    +3343
    +3344        expressions = None
    +3345        this = self._parse_id_var()
    +3346
    +3347        if self._match(TokenType.L_PAREN, advance=False):
    +3348            expressions = self._parse_wrapped_id_vars()
    +3349
    +3350        options = self._parse_key_constraint_options()
    +3351        return self.expression(exp.Reference, this=this, expressions=expressions, options=options)
     3352
    -3353        return self.expression(exp.Cast if strict else exp.TryCast, this=this, to=to)
    -3354
    -3355    def _parse_decode(self) -> t.Optional[exp.Expression]:
    -3356        """
    -3357        There are generally two variants of the DECODE function:
    -3358
    -3359        - DECODE(bin, charset)
    -3360        - DECODE(expression, search, result [, search, result] ... [, default])
    +3353    def _parse_foreign_key(self) -> exp.Expression:
    +3354        expressions = self._parse_wrapped_id_vars()
    +3355        reference = self._parse_references()
    +3356        options = {}
    +3357
    +3358        while self._match(TokenType.ON):
    +3359            if not self._match_set((TokenType.DELETE, TokenType.UPDATE)):
    +3360                self.raise_error("Expected DELETE or UPDATE")
     3361
    -3362        The second variant will always be parsed into a CASE expression. Note that NULL
    -3363        needs special treatment, since we need to explicitly check for it with `IS NULL`,
    -3364        instead of relying on pattern matching.
    -3365        """
    -3366        args = self._parse_csv(self._parse_conjunction)
    -3367
    -3368        if len(args) < 3:
    -3369            return self.expression(exp.Decode, this=seq_get(args, 0), charset=seq_get(args, 1))
    -3370
    -3371        expression, *expressions = args
    -3372        if not expression:
    -3373            return None
    +3362            kind = self._prev.text.lower()
    +3363
    +3364            if self._match(TokenType.NO_ACTION):
    +3365                action = "NO ACTION"
    +3366            elif self._match(TokenType.SET):
    +3367                self._match_set((TokenType.NULL, TokenType.DEFAULT))
    +3368                action = "SET " + self._prev.text.upper()
    +3369            else:
    +3370                self._advance()
    +3371                action = self._prev.text.upper()
    +3372
    +3373            options[kind] = action
     3374
    -3375        ifs = []
    -3376        for search, result in zip(expressions[::2], expressions[1::2]):
    -3377            if not search or not result:
    -3378                return None
    -3379
    -3380            if isinstance(search, exp.Literal):
    -3381                ifs.append(
    -3382                    exp.If(this=exp.EQ(this=expression.copy(), expression=search), true=result)
    -3383                )
    -3384            elif isinstance(search, exp.Null):
    -3385                ifs.append(
    -3386                    exp.If(this=exp.Is(this=expression.copy(), expression=exp.Null()), true=result)
    -3387                )
    -3388            else:
    -3389                cond = exp.or_(
    -3390                    exp.EQ(this=expression.copy(), expression=search),
    -3391                    exp.and_(
    -3392                        exp.Is(this=expression.copy(), expression=exp.Null()),
    -3393                        exp.Is(this=search.copy(), expression=exp.Null()),
    -3394                    ),
    -3395                )
    -3396                ifs.append(exp.If(this=cond, true=result))
    -3397
    -3398        return exp.Case(ifs=ifs, default=expressions[-1] if len(expressions) % 2 == 1 else None)
    -3399
    -3400    def _parse_json_key_value(self) -> t.Optional[exp.Expression]:
    -3401        self._match_text_seq("KEY")
    -3402        key = self._parse_field()
    -3403        self._match(TokenType.COLON)
    -3404        self._match_text_seq("VALUE")
    -3405        value = self._parse_field()
    -3406        if not key and not value:
    -3407            return None
    -3408        return self.expression(exp.JSONKeyValue, this=key, expression=value)
    -3409
    -3410    def _parse_json_object(self) -> exp.Expression:
    -3411        expressions = self._parse_csv(self._parse_json_key_value)
    +3375        return self.expression(
    +3376            exp.ForeignKey, expressions=expressions, reference=reference, **options  # type: ignore
    +3377        )
    +3378
    +3379    def _parse_primary_key(self) -> exp.Expression:
    +3380        desc = (
    +3381            self._match_set((TokenType.ASC, TokenType.DESC))
    +3382            and self._prev.token_type == TokenType.DESC
    +3383        )
    +3384
    +3385        if not self._match(TokenType.L_PAREN, advance=False):
    +3386            return self.expression(exp.PrimaryKeyColumnConstraint, desc=desc)
    +3387
    +3388        expressions = self._parse_wrapped_id_vars()
    +3389        options = self._parse_key_constraint_options()
    +3390        return self.expression(exp.PrimaryKey, expressions=expressions, options=options)
    +3391
    +3392    def _parse_bracket(self, this: t.Optional[exp.Expression]) -> t.Optional[exp.Expression]:
    +3393        if not self._match_set((TokenType.L_BRACKET, TokenType.L_BRACE)):
    +3394            return this
    +3395
    +3396        bracket_kind = self._prev.token_type
    +3397        expressions: t.List[t.Optional[exp.Expression]]
    +3398
    +3399        if self._match(TokenType.COLON):
    +3400            expressions = [self.expression(exp.Slice, expression=self._parse_conjunction())]
    +3401        else:
    +3402            expressions = self._parse_csv(lambda: self._parse_slice(self._parse_conjunction()))
    +3403
    +3404        # https://duckdb.org/docs/sql/data_types/struct.html#creating-structs
    +3405        if bracket_kind == TokenType.L_BRACE:
    +3406            this = self.expression(exp.Struct, expressions=expressions)
    +3407        elif not this or this.name.upper() == "ARRAY":
    +3408            this = self.expression(exp.Array, expressions=expressions)
    +3409        else:
    +3410            expressions = apply_index_offset(this, expressions, -self.index_offset)
    +3411            this = self.expression(exp.Bracket, this=this, expressions=expressions)
     3412
    -3413        null_handling = None
    -3414        if self._match_text_seq("NULL", "ON", "NULL"):
    -3415            null_handling = "NULL ON NULL"
    -3416        elif self._match_text_seq("ABSENT", "ON", "NULL"):
    -3417            null_handling = "ABSENT ON NULL"
    -3418
    -3419        unique_keys = None
    -3420        if self._match_text_seq("WITH", "UNIQUE"):
    -3421            unique_keys = True
    -3422        elif self._match_text_seq("WITHOUT", "UNIQUE"):
    -3423            unique_keys = False
    -3424
    -3425        self._match_text_seq("KEYS")
    -3426
    -3427        return_type = self._match_text_seq("RETURNING") and self._parse_type()
    -3428        format_json = self._match_text_seq("FORMAT", "JSON")
    -3429        encoding = self._match_text_seq("ENCODING") and self._parse_var()
    -3430
    -3431        return self.expression(
    -3432            exp.JSONObject,
    -3433            expressions=expressions,
    -3434            null_handling=null_handling,
    -3435            unique_keys=unique_keys,
    -3436            return_type=return_type,
    -3437            format_json=format_json,
    -3438            encoding=encoding,
    -3439        )
    +3413        if not self._match(TokenType.R_BRACKET) and bracket_kind == TokenType.L_BRACKET:
    +3414            self.raise_error("Expected ]")
    +3415        elif not self._match(TokenType.R_BRACE) and bracket_kind == TokenType.L_BRACE:
    +3416            self.raise_error("Expected }")
    +3417
    +3418        this.comments = self._prev_comments
    +3419        return self._parse_bracket(this)
    +3420
    +3421    def _parse_slice(self, this: t.Optional[exp.Expression]) -> t.Optional[exp.Expression]:
    +3422        if self._match(TokenType.COLON):
    +3423            return self.expression(exp.Slice, this=this, expression=self._parse_conjunction())
    +3424        return this
    +3425
    +3426    def _parse_case(self) -> t.Optional[exp.Expression]:
    +3427        ifs = []
    +3428        default = None
    +3429
    +3430        expression = self._parse_conjunction()
    +3431
    +3432        while self._match(TokenType.WHEN):
    +3433            this = self._parse_conjunction()
    +3434            self._match(TokenType.THEN)
    +3435            then = self._parse_conjunction()
    +3436            ifs.append(self.expression(exp.If, this=this, true=then))
    +3437
    +3438        if self._match(TokenType.ELSE):
    +3439            default = self._parse_conjunction()
     3440
    -3441    def _parse_logarithm(self) -> exp.Expression:
    -3442        # Default argument order is base, expression
    -3443        args = self._parse_csv(self._parse_range)
    -3444
    -3445        if len(args) > 1:
    -3446            if not self.LOG_BASE_FIRST:
    -3447                args.reverse()
    -3448            return exp.Log.from_arg_list(args)
    -3449
    -3450        return self.expression(
    -3451            exp.Ln if self.LOG_DEFAULTS_TO_LN else exp.Log, this=seq_get(args, 0)
    -3452        )
    -3453
    -3454    def _parse_match_against(self) -> exp.Expression:
    -3455        expressions = self._parse_csv(self._parse_column)
    -3456
    -3457        self._match_text_seq(")", "AGAINST", "(")
    -3458
    -3459        this = self._parse_string()
    -3460
    -3461        if self._match_text_seq("IN", "NATURAL", "LANGUAGE", "MODE"):
    -3462            modifier = "IN NATURAL LANGUAGE MODE"
    -3463            if self._match_text_seq("WITH", "QUERY", "EXPANSION"):
    -3464                modifier = f"{modifier} WITH QUERY EXPANSION"
    -3465        elif self._match_text_seq("IN", "BOOLEAN", "MODE"):
    -3466            modifier = "IN BOOLEAN MODE"
    -3467        elif self._match_text_seq("WITH", "QUERY", "EXPANSION"):
    -3468            modifier = "WITH QUERY EXPANSION"
    -3469        else:
    -3470            modifier = None
    -3471
    -3472        return self.expression(
    -3473            exp.MatchAgainst, this=this, expressions=expressions, modifier=modifier
    -3474        )
    -3475
    -3476    def _parse_position(self, haystack_first: bool = False) -> exp.Expression:
    -3477        args = self._parse_csv(self._parse_bitwise)
    -3478
    -3479        if self._match(TokenType.IN):
    -3480            return self.expression(
    -3481                exp.StrPosition, this=self._parse_bitwise(), substr=seq_get(args, 0)
    -3482            )
    -3483
    -3484        if haystack_first:
    -3485            haystack = seq_get(args, 0)
    -3486            needle = seq_get(args, 1)
    -3487        else:
    -3488            needle = seq_get(args, 0)
    -3489            haystack = seq_get(args, 1)
    +3441        if not self._match(TokenType.END):
    +3442            self.raise_error("Expected END after CASE", self._prev)
    +3443
    +3444        return self._parse_window(
    +3445            self.expression(exp.Case, this=expression, ifs=ifs, default=default)
    +3446        )
    +3447
    +3448    def _parse_if(self) -> t.Optional[exp.Expression]:
    +3449        if self._match(TokenType.L_PAREN):
    +3450            args = self._parse_csv(self._parse_conjunction)
    +3451            this = exp.If.from_arg_list(args)
    +3452            self.validate_expression(this, args)
    +3453            self._match_r_paren()
    +3454        else:
    +3455            condition = self._parse_conjunction()
    +3456            self._match(TokenType.THEN)
    +3457            true = self._parse_conjunction()
    +3458            false = self._parse_conjunction() if self._match(TokenType.ELSE) else None
    +3459            self._match(TokenType.END)
    +3460            this = self.expression(exp.If, this=condition, true=true, false=false)
    +3461
    +3462        return self._parse_window(this)
    +3463
    +3464    def _parse_extract(self) -> exp.Expression:
    +3465        this = self._parse_function() or self._parse_var() or self._parse_type()
    +3466
    +3467        if self._match(TokenType.FROM):
    +3468            return self.expression(exp.Extract, this=this, expression=self._parse_bitwise())
    +3469
    +3470        if not self._match(TokenType.COMMA):
    +3471            self.raise_error("Expected FROM or comma after EXTRACT", self._prev)
    +3472
    +3473        return self.expression(exp.Extract, this=this, expression=self._parse_bitwise())
    +3474
    +3475    def _parse_cast(self, strict: bool) -> exp.Expression:
    +3476        this = self._parse_conjunction()
    +3477
    +3478        if not self._match(TokenType.ALIAS):
    +3479            self.raise_error("Expected AS after CAST")
    +3480
    +3481        to = self._parse_types()
    +3482
    +3483        if not to:
    +3484            self.raise_error("Expected TYPE after CAST")
    +3485        elif to.this == exp.DataType.Type.CHAR:
    +3486            if self._match(TokenType.CHARACTER_SET):
    +3487                to = self.expression(exp.CharacterSet, this=self._parse_var_or_string())
    +3488
    +3489        return self.expression(exp.Cast if strict else exp.TryCast, this=this, to=to)
     3490
    -3491        this = exp.StrPosition(this=haystack, substr=needle, position=seq_get(args, 2))
    -3492
    -3493        self.validate_expression(this, args)
    -3494
    -3495        return this
    -3496
    -3497    def _parse_join_hint(self, func_name: str) -> exp.Expression:
    -3498        args = self._parse_csv(self._parse_table)
    -3499        return exp.JoinHint(this=func_name.upper(), expressions=args)
    +3491    def _parse_string_agg(self) -> exp.Expression:
    +3492        expression: t.Optional[exp.Expression]
    +3493
    +3494        if self._match(TokenType.DISTINCT):
    +3495            args = self._parse_csv(self._parse_conjunction)
    +3496            expression = self.expression(exp.Distinct, expressions=[seq_get(args, 0)])
    +3497        else:
    +3498            args = self._parse_csv(self._parse_conjunction)
    +3499            expression = seq_get(args, 0)
     3500
    -3501    def _parse_substring(self) -> exp.Expression:
    -3502        # Postgres supports the form: substring(string [from int] [for int])
    -3503        # https://www.postgresql.org/docs/9.1/functions-string.html @ Table 9-6
    -3504
    -3505        args = self._parse_csv(self._parse_bitwise)
    +3501        index = self._index
    +3502        if not self._match(TokenType.R_PAREN):
    +3503            # postgres: STRING_AGG([DISTINCT] expression, separator [ORDER BY expression1 {ASC | DESC} [, ...]])
    +3504            order = self._parse_order(this=expression)
    +3505            return self.expression(exp.GroupConcat, this=order, separator=seq_get(args, 1))
     3506
    -3507        if self._match(TokenType.FROM):
    -3508            args.append(self._parse_bitwise())
    -3509            if self._match(TokenType.FOR):
    -3510                args.append(self._parse_bitwise())
    -3511
    -3512        this = exp.Substring.from_arg_list(args)
    -3513        self.validate_expression(this, args)
    -3514
    -3515        return this
    -3516
    -3517    def _parse_trim(self) -> exp.Expression:
    -3518        # https://www.w3resource.com/sql/character-functions/trim.php
    -3519        # https://docs.oracle.com/javadb/10.8.3.0/ref/rreftrimfunc.html
    -3520
    -3521        position = None
    -3522        collation = None
    +3507        # Checks if we can parse an order clause: WITHIN GROUP (ORDER BY <order_by_expression_list> [ASC | DESC]).
    +3508        # This is done "manually", instead of letting _parse_window parse it into an exp.WithinGroup node, so that
    +3509        # the STRING_AGG call is parsed like in MySQL / SQLite and can thus be transpiled more easily to them.
    +3510        if not self._match(TokenType.WITHIN_GROUP):
    +3511            self._retreat(index)
    +3512            this = exp.GroupConcat.from_arg_list(args)
    +3513            self.validate_expression(this, args)
    +3514            return this
    +3515
    +3516        self._match_l_paren()  # The corresponding match_r_paren will be called in parse_function (caller)
    +3517        order = self._parse_order(this=expression)
    +3518        return self.expression(exp.GroupConcat, this=order, separator=seq_get(args, 1))
    +3519
    +3520    def _parse_convert(self, strict: bool) -> t.Optional[exp.Expression]:
    +3521        to: t.Optional[exp.Expression]
    +3522        this = self._parse_bitwise()
     3523
    -3524        if self._match_set(self.TRIM_TYPES):
    -3525            position = self._prev.text.upper()
    -3526
    -3527        expression = self._parse_term()
    -3528        if self._match_set((TokenType.FROM, TokenType.COMMA)):
    -3529            this = self._parse_term()
    -3530        else:
    -3531            this = expression
    -3532            expression = None
    -3533
    -3534        if self._match(TokenType.COLLATE):
    -3535            collation = self._parse_term()
    +3524        if self._match(TokenType.USING):
    +3525            to = self.expression(exp.CharacterSet, this=self._parse_var())
    +3526        elif self._match(TokenType.COMMA):
    +3527            to = self._parse_bitwise()
    +3528        else:
    +3529            to = None
    +3530
    +3531        # Swap the argument order if needed to produce the correct AST
    +3532        if self.CONVERT_TYPE_FIRST:
    +3533            this, to = to, this
    +3534
    +3535        return self.expression(exp.Cast if strict else exp.TryCast, this=this, to=to)
     3536
    -3537        return self.expression(
    -3538            exp.Trim,
    -3539            this=this,
    -3540            position=position,
    -3541            expression=expression,
    -3542            collation=collation,
    -3543        )
    -3544
    -3545    def _parse_window_clause(self) -> t.Optional[t.List[t.Optional[exp.Expression]]]:
    -3546        return self._match(TokenType.WINDOW) and self._parse_csv(self._parse_named_window)
    -3547
    -3548    def _parse_named_window(self) -> t.Optional[exp.Expression]:
    -3549        return self._parse_window(self._parse_id_var(), alias=True)
    -3550
    -3551    def _parse_window(
    -3552        self, this: t.Optional[exp.Expression], alias: bool = False
    -3553    ) -> t.Optional[exp.Expression]:
    -3554        if self._match_pair(TokenType.FILTER, TokenType.L_PAREN):
    -3555            this = self.expression(exp.Filter, this=this, expression=self._parse_where())
    -3556            self._match_r_paren()
    -3557
    -3558        # T-SQL allows the OVER (...) syntax after WITHIN GROUP.
    -3559        # https://learn.microsoft.com/en-us/sql/t-sql/functions/percentile-disc-transact-sql?view=sql-server-ver16
    -3560        if self._match(TokenType.WITHIN_GROUP):
    -3561            order = self._parse_wrapped(self._parse_order)
    -3562            this = self.expression(exp.WithinGroup, this=this, expression=order)
    -3563
    -3564        # SQL spec defines an optional [ { IGNORE | RESPECT } NULLS ] OVER
    -3565        # Some dialects choose to implement and some do not.
    -3566        # https://dev.mysql.com/doc/refman/8.0/en/window-function-descriptions.html
    -3567
    -3568        # There is some code above in _parse_lambda that handles
    -3569        #   SELECT FIRST_VALUE(TABLE.COLUMN IGNORE|RESPECT NULLS) OVER ...
    -3570
    -3571        # The below changes handle
    -3572        #   SELECT FIRST_VALUE(TABLE.COLUMN) IGNORE|RESPECT NULLS OVER ...
    -3573
    -3574        # Oracle allows both formats
    -3575        #   (https://docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/img_text/first_value.html)
    -3576        #   and Snowflake chose to do the same for familiarity
    -3577        #   https://docs.snowflake.com/en/sql-reference/functions/first_value.html#usage-notes
    -3578        if self._match(TokenType.IGNORE_NULLS):
    -3579            this = self.expression(exp.IgnoreNulls, this=this)
    -3580        elif self._match(TokenType.RESPECT_NULLS):
    -3581            this = self.expression(exp.RespectNulls, this=this)
    -3582
    -3583        # bigquery select from window x AS (partition by ...)
    -3584        if alias:
    -3585            self._match(TokenType.ALIAS)
    -3586        elif not self._match(TokenType.OVER):
    -3587            return this
    -3588
    -3589        if not self._match(TokenType.L_PAREN):
    -3590            return self.expression(exp.Window, this=this, alias=self._parse_id_var(False))
    +3537    def _parse_decode(self) -> t.Optional[exp.Expression]:
    +3538        """
    +3539        There are generally two variants of the DECODE function:
    +3540
    +3541        - DECODE(bin, charset)
    +3542        - DECODE(expression, search, result [, search, result] ... [, default])
    +3543
    +3544        The second variant will always be parsed into a CASE expression. Note that NULL
    +3545        needs special treatment, since we need to explicitly check for it with `IS NULL`,
    +3546        instead of relying on pattern matching.
    +3547        """
    +3548        args = self._parse_csv(self._parse_conjunction)
    +3549
    +3550        if len(args) < 3:
    +3551            return self.expression(exp.Decode, this=seq_get(args, 0), charset=seq_get(args, 1))
    +3552
    +3553        expression, *expressions = args
    +3554        if not expression:
    +3555            return None
    +3556
    +3557        ifs = []
    +3558        for search, result in zip(expressions[::2], expressions[1::2]):
    +3559            if not search or not result:
    +3560                return None
    +3561
    +3562            if isinstance(search, exp.Literal):
    +3563                ifs.append(
    +3564                    exp.If(this=exp.EQ(this=expression.copy(), expression=search), true=result)
    +3565                )
    +3566            elif isinstance(search, exp.Null):
    +3567                ifs.append(
    +3568                    exp.If(this=exp.Is(this=expression.copy(), expression=exp.Null()), true=result)
    +3569                )
    +3570            else:
    +3571                cond = exp.or_(
    +3572                    exp.EQ(this=expression.copy(), expression=search),
    +3573                    exp.and_(
    +3574                        exp.Is(this=expression.copy(), expression=exp.Null()),
    +3575                        exp.Is(this=search.copy(), expression=exp.Null()),
    +3576                    ),
    +3577                )
    +3578                ifs.append(exp.If(this=cond, true=result))
    +3579
    +3580        return exp.Case(ifs=ifs, default=expressions[-1] if len(expressions) % 2 == 1 else None)
    +3581
    +3582    def _parse_json_key_value(self) -> t.Optional[exp.Expression]:
    +3583        self._match_text_seq("KEY")
    +3584        key = self._parse_field()
    +3585        self._match(TokenType.COLON)
    +3586        self._match_text_seq("VALUE")
    +3587        value = self._parse_field()
    +3588        if not key and not value:
    +3589            return None
    +3590        return self.expression(exp.JSONKeyValue, this=key, expression=value)
     3591
    -3592        window_alias = self._parse_id_var(any_token=False, tokens=self.WINDOW_ALIAS_TOKENS)
    -3593        partition = self._parse_partition_by()
    -3594        order = self._parse_order()
    -3595        kind = self._match_set((TokenType.ROWS, TokenType.RANGE)) and self._prev.text
    -3596
    -3597        if kind:
    -3598            self._match(TokenType.BETWEEN)
    -3599            start = self._parse_window_spec()
    -3600            self._match(TokenType.AND)
    -3601            end = self._parse_window_spec()
    -3602
    -3603            spec = self.expression(
    -3604                exp.WindowSpec,
    -3605                kind=kind,
    -3606                start=start["value"],
    -3607                start_side=start["side"],
    -3608                end=end["value"],
    -3609                end_side=end["side"],
    -3610            )
    -3611        else:
    -3612            spec = None
    -3613
    -3614        self._match_r_paren()
    -3615
    -3616        return self.expression(
    -3617            exp.Window,
    -3618            this=this,
    -3619            partition_by=partition,
    -3620            order=order,
    -3621            spec=spec,
    -3622            alias=window_alias,
    -3623        )
    -3624
    -3625    def _parse_window_spec(self) -> t.Dict[str, t.Optional[str | exp.Expression]]:
    -3626        self._match(TokenType.BETWEEN)
    -3627
    -3628        return {
    -3629            "value": (
    -3630                self._match_set((TokenType.UNBOUNDED, TokenType.CURRENT_ROW)) and self._prev.text
    -3631            )
    -3632            or self._parse_bitwise(),
    -3633            "side": self._match_set((TokenType.PRECEDING, TokenType.FOLLOWING)) and self._prev.text,
    -3634        }
    +3592    def _parse_json_object(self) -> exp.Expression:
    +3593        expressions = self._parse_csv(self._parse_json_key_value)
    +3594
    +3595        null_handling = None
    +3596        if self._match_text_seq("NULL", "ON", "NULL"):
    +3597            null_handling = "NULL ON NULL"
    +3598        elif self._match_text_seq("ABSENT", "ON", "NULL"):
    +3599            null_handling = "ABSENT ON NULL"
    +3600
    +3601        unique_keys = None
    +3602        if self._match_text_seq("WITH", "UNIQUE"):
    +3603            unique_keys = True
    +3604        elif self._match_text_seq("WITHOUT", "UNIQUE"):
    +3605            unique_keys = False
    +3606
    +3607        self._match_text_seq("KEYS")
    +3608
    +3609        return_type = self._match_text_seq("RETURNING") and self._parse_type()
    +3610        format_json = self._match_text_seq("FORMAT", "JSON")
    +3611        encoding = self._match_text_seq("ENCODING") and self._parse_var()
    +3612
    +3613        return self.expression(
    +3614            exp.JSONObject,
    +3615            expressions=expressions,
    +3616            null_handling=null_handling,
    +3617            unique_keys=unique_keys,
    +3618            return_type=return_type,
    +3619            format_json=format_json,
    +3620            encoding=encoding,
    +3621        )
    +3622
    +3623    def _parse_logarithm(self) -> exp.Expression:
    +3624        # Default argument order is base, expression
    +3625        args = self._parse_csv(self._parse_range)
    +3626
    +3627        if len(args) > 1:
    +3628            if not self.LOG_BASE_FIRST:
    +3629                args.reverse()
    +3630            return exp.Log.from_arg_list(args)
    +3631
    +3632        return self.expression(
    +3633            exp.Ln if self.LOG_DEFAULTS_TO_LN else exp.Log, this=seq_get(args, 0)
    +3634        )
     3635
    -3636    def _parse_alias(
    -3637        self, this: t.Optional[exp.Expression], explicit: bool = False
    -3638    ) -> t.Optional[exp.Expression]:
    -3639        any_token = self._match(TokenType.ALIAS)
    +3636    def _parse_match_against(self) -> exp.Expression:
    +3637        expressions = self._parse_csv(self._parse_column)
    +3638
    +3639        self._match_text_seq(")", "AGAINST", "(")
     3640
    -3641        if explicit and not any_token:
    -3642            return this
    -3643
    -3644        if self._match(TokenType.L_PAREN):
    -3645            aliases = self.expression(
    -3646                exp.Aliases,
    -3647                this=this,
    -3648                expressions=self._parse_csv(lambda: self._parse_id_var(any_token)),
    -3649            )
    -3650            self._match_r_paren(aliases)
    -3651            return aliases
    -3652
    -3653        alias = self._parse_id_var(any_token)
    -3654
    -3655        if alias:
    -3656            return self.expression(exp.Alias, this=this, alias=alias)
    +3641        this = self._parse_string()
    +3642
    +3643        if self._match_text_seq("IN", "NATURAL", "LANGUAGE", "MODE"):
    +3644            modifier = "IN NATURAL LANGUAGE MODE"
    +3645            if self._match_text_seq("WITH", "QUERY", "EXPANSION"):
    +3646                modifier = f"{modifier} WITH QUERY EXPANSION"
    +3647        elif self._match_text_seq("IN", "BOOLEAN", "MODE"):
    +3648            modifier = "IN BOOLEAN MODE"
    +3649        elif self._match_text_seq("WITH", "QUERY", "EXPANSION"):
    +3650            modifier = "WITH QUERY EXPANSION"
    +3651        else:
    +3652            modifier = None
    +3653
    +3654        return self.expression(
    +3655            exp.MatchAgainst, this=this, expressions=expressions, modifier=modifier
    +3656        )
     3657
    -3658        return this
    -3659
    -3660    def _parse_id_var(
    -3661        self,
    -3662        any_token: bool = True,
    -3663        tokens: t.Optional[t.Collection[TokenType]] = None,
    -3664        prefix_tokens: t.Optional[t.Collection[TokenType]] = None,
    -3665    ) -> t.Optional[exp.Expression]:
    -3666        identifier = self._parse_identifier()
    -3667
    -3668        if identifier:
    -3669            return identifier
    -3670
    -3671        prefix = ""
    +3658    def _parse_position(self, haystack_first: bool = False) -> exp.Expression:
    +3659        args = self._parse_csv(self._parse_bitwise)
    +3660
    +3661        if self._match(TokenType.IN):
    +3662            return self.expression(
    +3663                exp.StrPosition, this=self._parse_bitwise(), substr=seq_get(args, 0)
    +3664            )
    +3665
    +3666        if haystack_first:
    +3667            haystack = seq_get(args, 0)
    +3668            needle = seq_get(args, 1)
    +3669        else:
    +3670            needle = seq_get(args, 0)
    +3671            haystack = seq_get(args, 1)
     3672
    -3673        if prefix_tokens:
    -3674            while self._match_set(prefix_tokens):
    -3675                prefix += self._prev.text
    +3673        this = exp.StrPosition(this=haystack, substr=needle, position=seq_get(args, 2))
    +3674
    +3675        self.validate_expression(this, args)
     3676
    -3677        if (any_token and self._advance_any()) or self._match_set(tokens or self.ID_VAR_TOKENS):
    -3678            quoted = self._prev.token_type == TokenType.STRING
    -3679            return exp.Identifier(this=prefix + self._prev.text, quoted=quoted)
    -3680
    -3681        return None
    +3677        return this
    +3678
    +3679    def _parse_join_hint(self, func_name: str) -> exp.Expression:
    +3680        args = self._parse_csv(self._parse_table)
    +3681        return exp.JoinHint(this=func_name.upper(), expressions=args)
     3682
    -3683    def _parse_string(self) -> t.Optional[exp.Expression]:
    -3684        if self._match(TokenType.STRING):
    -3685            return self.PRIMARY_PARSERS[TokenType.STRING](self, self._prev)
    -3686        return self._parse_placeholder()
    -3687
    -3688    def _parse_string_as_identifier(self) -> t.Optional[exp.Expression]:
    -3689        return exp.to_identifier(self._match(TokenType.STRING) and self._prev.text, quoted=True)
    -3690
    -3691    def _parse_number(self) -> t.Optional[exp.Expression]:
    -3692        if self._match(TokenType.NUMBER):
    -3693            return self.PRIMARY_PARSERS[TokenType.NUMBER](self, self._prev)
    -3694        return self._parse_placeholder()
    -3695
    -3696    def _parse_identifier(self) -> t.Optional[exp.Expression]:
    -3697        if self._match(TokenType.IDENTIFIER):
    -3698            return self.expression(exp.Identifier, this=self._prev.text, quoted=True)
    -3699        return self._parse_placeholder()
    -3700
    -3701    def _parse_var(
    -3702        self, any_token: bool = False, tokens: t.Optional[t.Collection[TokenType]] = None
    -3703    ) -> t.Optional[exp.Expression]:
    -3704        if (
    -3705            (any_token and self._advance_any())
    -3706            or self._match(TokenType.VAR)
    -3707            or (self._match_set(tokens) if tokens else False)
    -3708        ):
    -3709            return self.expression(exp.Var, this=self._prev.text)
    -3710        return self._parse_placeholder()
    -3711
    -3712    def _advance_any(self) -> t.Optional[Token]:
    -3713        if self._curr and self._curr.token_type not in self.RESERVED_KEYWORDS:
    -3714            self._advance()
    -3715            return self._prev
    -3716        return None
    -3717
    -3718    def _parse_var_or_string(self) -> t.Optional[exp.Expression]:
    -3719        return self._parse_var() or self._parse_string()
    -3720
    -3721    def _parse_null(self) -> t.Optional[exp.Expression]:
    -3722        if self._match(TokenType.NULL):
    -3723            return self.PRIMARY_PARSERS[TokenType.NULL](self, self._prev)
    -3724        return None
    -3725
    -3726    def _parse_boolean(self) -> t.Optional[exp.Expression]:
    -3727        if self._match(TokenType.TRUE):
    -3728            return self.PRIMARY_PARSERS[TokenType.TRUE](self, self._prev)
    -3729        if self._match(TokenType.FALSE):
    -3730            return self.PRIMARY_PARSERS[TokenType.FALSE](self, self._prev)
    -3731        return None
    +3683    def _parse_substring(self) -> exp.Expression:
    +3684        # Postgres supports the form: substring(string [from int] [for int])
    +3685        # https://www.postgresql.org/docs/9.1/functions-string.html @ Table 9-6
    +3686
    +3687        args = self._parse_csv(self._parse_bitwise)
    +3688
    +3689        if self._match(TokenType.FROM):
    +3690            args.append(self._parse_bitwise())
    +3691            if self._match(TokenType.FOR):
    +3692                args.append(self._parse_bitwise())
    +3693
    +3694        this = exp.Substring.from_arg_list(args)
    +3695        self.validate_expression(this, args)
    +3696
    +3697        return this
    +3698
    +3699    def _parse_trim(self) -> exp.Expression:
    +3700        # https://www.w3resource.com/sql/character-functions/trim.php
    +3701        # https://docs.oracle.com/javadb/10.8.3.0/ref/rreftrimfunc.html
    +3702
    +3703        position = None
    +3704        collation = None
    +3705
    +3706        if self._match_set(self.TRIM_TYPES):
    +3707            position = self._prev.text.upper()
    +3708
    +3709        expression = self._parse_term()
    +3710        if self._match_set((TokenType.FROM, TokenType.COMMA)):
    +3711            this = self._parse_term()
    +3712        else:
    +3713            this = expression
    +3714            expression = None
    +3715
    +3716        if self._match(TokenType.COLLATE):
    +3717            collation = self._parse_term()
    +3718
    +3719        return self.expression(
    +3720            exp.Trim,
    +3721            this=this,
    +3722            position=position,
    +3723            expression=expression,
    +3724            collation=collation,
    +3725        )
    +3726
    +3727    def _parse_window_clause(self) -> t.Optional[t.List[t.Optional[exp.Expression]]]:
    +3728        return self._match(TokenType.WINDOW) and self._parse_csv(self._parse_named_window)
    +3729
    +3730    def _parse_named_window(self) -> t.Optional[exp.Expression]:
    +3731        return self._parse_window(self._parse_id_var(), alias=True)
     3732
    -3733    def _parse_star(self) -> t.Optional[exp.Expression]:
    -3734        if self._match(TokenType.STAR):
    -3735            return self.PRIMARY_PARSERS[TokenType.STAR](self, self._prev)
    -3736        return None
    -3737
    -3738    def _parse_parameter(self) -> exp.Expression:
    -3739        wrapped = self._match(TokenType.L_BRACE)
    -3740        this = self._parse_var() or self._parse_primary()
    -3741        self._match(TokenType.R_BRACE)
    -3742        return self.expression(exp.Parameter, this=this, wrapped=wrapped)
    -3743
    -3744    def _parse_placeholder(self) -> t.Optional[exp.Expression]:
    -3745        if self._match_set(self.PLACEHOLDER_PARSERS):
    -3746            placeholder = self.PLACEHOLDER_PARSERS[self._prev.token_type](self)
    -3747            if placeholder:
    -3748                return placeholder
    -3749            self._advance(-1)
    -3750        return None
    -3751
    -3752    def _parse_except(self) -> t.Optional[t.List[t.Optional[exp.Expression]]]:
    -3753        if not self._match(TokenType.EXCEPT):
    -3754            return None
    -3755        if self._match(TokenType.L_PAREN, advance=False):
    -3756            return self._parse_wrapped_csv(self._parse_column)
    -3757        return self._parse_csv(self._parse_column)
    -3758
    -3759    def _parse_replace(self) -> t.Optional[t.List[t.Optional[exp.Expression]]]:
    -3760        if not self._match(TokenType.REPLACE):
    -3761            return None
    -3762        if self._match(TokenType.L_PAREN, advance=False):
    -3763            return self._parse_wrapped_csv(self._parse_expression)
    -3764        return self._parse_csv(self._parse_expression)
    -3765
    -3766    def _parse_csv(
    -3767        self, parse_method: t.Callable, sep: TokenType = TokenType.COMMA
    -3768    ) -> t.List[t.Optional[exp.Expression]]:
    -3769        parse_result = parse_method()
    -3770        items = [parse_result] if parse_result is not None else []
    -3771
    -3772        while self._match(sep):
    -3773            if parse_result and self._prev_comments:
    -3774                parse_result.comments = self._prev_comments
    -3775
    -3776            parse_result = parse_method()
    -3777            if parse_result is not None:
    -3778                items.append(parse_result)
    -3779
    -3780        return items
    -3781
    -3782    def _parse_tokens(
    -3783        self, parse_method: t.Callable, expressions: t.Dict
    -3784    ) -> t.Optional[exp.Expression]:
    -3785        this = parse_method()
    -3786
    -3787        while self._match_set(expressions):
    -3788            this = self.expression(
    -3789                expressions[self._prev.token_type],
    -3790                this=this,
    -3791                comments=self._prev_comments,
    -3792                expression=parse_method(),
    -3793            )
    -3794
    -3795        return this
    -3796
    -3797    def _parse_wrapped_id_vars(self) -> t.List[t.Optional[exp.Expression]]:
    -3798        return self._parse_wrapped_csv(self._parse_id_var)
    -3799
    -3800    def _parse_wrapped_csv(
    -3801        self, parse_method: t.Callable, sep: TokenType = TokenType.COMMA
    -3802    ) -> t.List[t.Optional[exp.Expression]]:
    -3803        return self._parse_wrapped(lambda: self._parse_csv(parse_method, sep=sep))
    -3804
    -3805    def _parse_wrapped(self, parse_method: t.Callable) -> t.Any:
    -3806        self._match_l_paren()
    -3807        parse_result = parse_method()
    -3808        self._match_r_paren()
    -3809        return parse_result
    -3810
    -3811    def _parse_select_or_expression(self) -> t.Optional[exp.Expression]:
    -3812        return self._parse_select() or self._parse_set_operations(self._parse_expression())
    -3813
    -3814    def _parse_ddl_select(self) -> t.Optional[exp.Expression]:
    -3815        return self._parse_set_operations(
    -3816            self._parse_select(nested=True, parse_subquery_alias=False)
    -3817        )
    -3818
    -3819    def _parse_transaction(self) -> exp.Expression:
    -3820        this = None
    -3821        if self._match_texts(self.TRANSACTION_KIND):
    -3822            this = self._prev.text
    -3823
    -3824        self._match_texts({"TRANSACTION", "WORK"})
    +3733    def _parse_window(
    +3734        self, this: t.Optional[exp.Expression], alias: bool = False
    +3735    ) -> t.Optional[exp.Expression]:
    +3736        if self._match_pair(TokenType.FILTER, TokenType.L_PAREN):
    +3737            this = self.expression(exp.Filter, this=this, expression=self._parse_where())
    +3738            self._match_r_paren()
    +3739
    +3740        # T-SQL allows the OVER (...) syntax after WITHIN GROUP.
    +3741        # https://learn.microsoft.com/en-us/sql/t-sql/functions/percentile-disc-transact-sql?view=sql-server-ver16
    +3742        if self._match(TokenType.WITHIN_GROUP):
    +3743            order = self._parse_wrapped(self._parse_order)
    +3744            this = self.expression(exp.WithinGroup, this=this, expression=order)
    +3745
    +3746        # SQL spec defines an optional [ { IGNORE | RESPECT } NULLS ] OVER
    +3747        # Some dialects choose to implement and some do not.
    +3748        # https://dev.mysql.com/doc/refman/8.0/en/window-function-descriptions.html
    +3749
    +3750        # There is some code above in _parse_lambda that handles
    +3751        #   SELECT FIRST_VALUE(TABLE.COLUMN IGNORE|RESPECT NULLS) OVER ...
    +3752
    +3753        # The below changes handle
    +3754        #   SELECT FIRST_VALUE(TABLE.COLUMN) IGNORE|RESPECT NULLS OVER ...
    +3755
    +3756        # Oracle allows both formats
    +3757        #   (https://docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/img_text/first_value.html)
    +3758        #   and Snowflake chose to do the same for familiarity
    +3759        #   https://docs.snowflake.com/en/sql-reference/functions/first_value.html#usage-notes
    +3760        if self._match(TokenType.IGNORE_NULLS):
    +3761            this = self.expression(exp.IgnoreNulls, this=this)
    +3762        elif self._match(TokenType.RESPECT_NULLS):
    +3763            this = self.expression(exp.RespectNulls, this=this)
    +3764
    +3765        # bigquery select from window x AS (partition by ...)
    +3766        if alias:
    +3767            self._match(TokenType.ALIAS)
    +3768        elif not self._match(TokenType.OVER):
    +3769            return this
    +3770
    +3771        if not self._match(TokenType.L_PAREN):
    +3772            return self.expression(exp.Window, this=this, alias=self._parse_id_var(False))
    +3773
    +3774        window_alias = self._parse_id_var(any_token=False, tokens=self.WINDOW_ALIAS_TOKENS)
    +3775        partition = self._parse_partition_by()
    +3776        order = self._parse_order()
    +3777        kind = self._match_set((TokenType.ROWS, TokenType.RANGE)) and self._prev.text
    +3778
    +3779        if kind:
    +3780            self._match(TokenType.BETWEEN)
    +3781            start = self._parse_window_spec()
    +3782            self._match(TokenType.AND)
    +3783            end = self._parse_window_spec()
    +3784
    +3785            spec = self.expression(
    +3786                exp.WindowSpec,
    +3787                kind=kind,
    +3788                start=start["value"],
    +3789                start_side=start["side"],
    +3790                end=end["value"],
    +3791                end_side=end["side"],
    +3792            )
    +3793        else:
    +3794            spec = None
    +3795
    +3796        self._match_r_paren()
    +3797
    +3798        return self.expression(
    +3799            exp.Window,
    +3800            this=this,
    +3801            partition_by=partition,
    +3802            order=order,
    +3803            spec=spec,
    +3804            alias=window_alias,
    +3805        )
    +3806
    +3807    def _parse_window_spec(self) -> t.Dict[str, t.Optional[str | exp.Expression]]:
    +3808        self._match(TokenType.BETWEEN)
    +3809
    +3810        return {
    +3811            "value": (
    +3812                self._match_set((TokenType.UNBOUNDED, TokenType.CURRENT_ROW)) and self._prev.text
    +3813            )
    +3814            or self._parse_bitwise(),
    +3815            "side": self._match_set((TokenType.PRECEDING, TokenType.FOLLOWING)) and self._prev.text,
    +3816        }
    +3817
    +3818    def _parse_alias(
    +3819        self, this: t.Optional[exp.Expression], explicit: bool = False
    +3820    ) -> t.Optional[exp.Expression]:
    +3821        any_token = self._match(TokenType.ALIAS)
    +3822
    +3823        if explicit and not any_token:
    +3824            return this
     3825
    -3826        modes = []
    -3827        while True:
    -3828            mode = []
    -3829            while self._match(TokenType.VAR):
    -3830                mode.append(self._prev.text)
    -3831
    -3832            if mode:
    -3833                modes.append(" ".join(mode))
    -3834            if not self._match(TokenType.COMMA):
    -3835                break
    +3826        if self._match(TokenType.L_PAREN):
    +3827            aliases = self.expression(
    +3828                exp.Aliases,
    +3829                this=this,
    +3830                expressions=self._parse_csv(lambda: self._parse_id_var(any_token)),
    +3831            )
    +3832            self._match_r_paren(aliases)
    +3833            return aliases
    +3834
    +3835        alias = self._parse_id_var(any_token)
     3836
    -3837        return self.expression(exp.Transaction, this=this, modes=modes)
    -3838
    -3839    def _parse_commit_or_rollback(self) -> exp.Expression:
    -3840        chain = None
    -3841        savepoint = None
    -3842        is_rollback = self._prev.token_type == TokenType.ROLLBACK
    -3843
    -3844        self._match_texts({"TRANSACTION", "WORK"})
    -3845
    -3846        if self._match_text_seq("TO"):
    -3847            self._match_text_seq("SAVEPOINT")
    -3848            savepoint = self._parse_id_var()
    +3837        if alias:
    +3838            return self.expression(exp.Alias, this=this, alias=alias)
    +3839
    +3840        return this
    +3841
    +3842    def _parse_id_var(
    +3843        self,
    +3844        any_token: bool = True,
    +3845        tokens: t.Optional[t.Collection[TokenType]] = None,
    +3846        prefix_tokens: t.Optional[t.Collection[TokenType]] = None,
    +3847    ) -> t.Optional[exp.Expression]:
    +3848        identifier = self._parse_identifier()
     3849
    -3850        if self._match(TokenType.AND):
    -3851            chain = not self._match_text_seq("NO")
    -3852            self._match_text_seq("CHAIN")
    -3853
    -3854        if is_rollback:
    -3855            return self.expression(exp.Rollback, savepoint=savepoint)
    -3856        return self.expression(exp.Commit, chain=chain)
    -3857
    -3858    def _parse_add_column(self) -> t.Optional[exp.Expression]:
    -3859        if not self._match_text_seq("ADD"):
    -3860            return None
    -3861
    -3862        self._match(TokenType.COLUMN)
    -3863        exists_column = self._parse_exists(not_=True)
    -3864        expression = self._parse_column_def(self._parse_field(any_token=True))
    -3865
    -3866        if expression:
    -3867            expression.set("exists", exists_column)
    -3868
    -3869            # https://docs.databricks.com/delta/update-schema.html#explicitly-update-schema-to-add-columns
    -3870            if self._match_texts(("FIRST", "AFTER")):
    -3871                position = self._prev.text
    -3872                column_position = self.expression(
    -3873                    exp.ColumnPosition, this=self._parse_column(), position=position
    -3874                )
    -3875                expression.set("position", column_position)
    -3876
    -3877        return expression
    -3878
    -3879    def _parse_drop_column(self) -> t.Optional[exp.Expression]:
    -3880        return self._match(TokenType.DROP) and self._parse_drop(default_kind="COLUMN")
    -3881
    -3882    # https://docs.aws.amazon.com/athena/latest/ug/alter-table-drop-partition.html
    -3883    def _parse_drop_partition(self, exists: t.Optional[bool] = None) -> exp.Expression:
    -3884        return self.expression(
    -3885            exp.DropPartition, expressions=self._parse_csv(self._parse_partition), exists=exists
    -3886        )
    -3887
    -3888    def _parse_add_constraint(self) -> t.Optional[exp.Expression]:
    -3889        this = None
    -3890        kind = self._prev.token_type
    -3891
    -3892        if kind == TokenType.CONSTRAINT:
    -3893            this = self._parse_id_var()
    -3894
    -3895            if self._match_text_seq("CHECK"):
    -3896                expression = self._parse_wrapped(self._parse_conjunction)
    -3897                enforced = self._match_text_seq("ENFORCED")
    -3898
    -3899                return self.expression(
    -3900                    exp.AddConstraint, this=this, expression=expression, enforced=enforced
    -3901                )
    +3850        if identifier:
    +3851            return identifier
    +3852
    +3853        prefix = ""
    +3854
    +3855        if prefix_tokens:
    +3856            while self._match_set(prefix_tokens):
    +3857                prefix += self._prev.text
    +3858
    +3859        if (any_token and self._advance_any()) or self._match_set(tokens or self.ID_VAR_TOKENS):
    +3860            quoted = self._prev.token_type == TokenType.STRING
    +3861            return exp.Identifier(this=prefix + self._prev.text, quoted=quoted)
    +3862
    +3863        return None
    +3864
    +3865    def _parse_string(self) -> t.Optional[exp.Expression]:
    +3866        if self._match(TokenType.STRING):
    +3867            return self.PRIMARY_PARSERS[TokenType.STRING](self, self._prev)
    +3868        return self._parse_placeholder()
    +3869
    +3870    def _parse_string_as_identifier(self) -> t.Optional[exp.Expression]:
    +3871        return exp.to_identifier(self._match(TokenType.STRING) and self._prev.text, quoted=True)
    +3872
    +3873    def _parse_number(self) -> t.Optional[exp.Expression]:
    +3874        if self._match(TokenType.NUMBER):
    +3875            return self.PRIMARY_PARSERS[TokenType.NUMBER](self, self._prev)
    +3876        return self._parse_placeholder()
    +3877
    +3878    def _parse_identifier(self) -> t.Optional[exp.Expression]:
    +3879        if self._match(TokenType.IDENTIFIER):
    +3880            return self.expression(exp.Identifier, this=self._prev.text, quoted=True)
    +3881        return self._parse_placeholder()
    +3882
    +3883    def _parse_var(
    +3884        self, any_token: bool = False, tokens: t.Optional[t.Collection[TokenType]] = None
    +3885    ) -> t.Optional[exp.Expression]:
    +3886        if (
    +3887            (any_token and self._advance_any())
    +3888            or self._match(TokenType.VAR)
    +3889            or (self._match_set(tokens) if tokens else False)
    +3890        ):
    +3891            return self.expression(exp.Var, this=self._prev.text)
    +3892        return self._parse_placeholder()
    +3893
    +3894    def _advance_any(self) -> t.Optional[Token]:
    +3895        if self._curr and self._curr.token_type not in self.RESERVED_KEYWORDS:
    +3896            self._advance()
    +3897            return self._prev
    +3898        return None
    +3899
    +3900    def _parse_var_or_string(self) -> t.Optional[exp.Expression]:
    +3901        return self._parse_var() or self._parse_string()
     3902
    -3903        if kind == TokenType.FOREIGN_KEY or self._match(TokenType.FOREIGN_KEY):
    -3904            expression = self._parse_foreign_key()
    -3905        elif kind == TokenType.PRIMARY_KEY or self._match(TokenType.PRIMARY_KEY):
    -3906            expression = self._parse_primary_key()
    -3907        else:
    -3908            expression = None
    -3909
    -3910        return self.expression(exp.AddConstraint, this=this, expression=expression)
    -3911
    -3912    def _parse_alter_table_add(self) -> t.List[t.Optional[exp.Expression]]:
    -3913        index = self._index - 1
    +3903    def _parse_null(self) -> t.Optional[exp.Expression]:
    +3904        if self._match(TokenType.NULL):
    +3905            return self.PRIMARY_PARSERS[TokenType.NULL](self, self._prev)
    +3906        return None
    +3907
    +3908    def _parse_boolean(self) -> t.Optional[exp.Expression]:
    +3909        if self._match(TokenType.TRUE):
    +3910            return self.PRIMARY_PARSERS[TokenType.TRUE](self, self._prev)
    +3911        if self._match(TokenType.FALSE):
    +3912            return self.PRIMARY_PARSERS[TokenType.FALSE](self, self._prev)
    +3913        return None
     3914
    -3915        if self._match_set(self.ADD_CONSTRAINT_TOKENS):
    -3916            return self._parse_csv(self._parse_add_constraint)
    -3917
    -3918        self._retreat(index)
    -3919        return self._parse_csv(self._parse_add_column)
    -3920
    -3921    def _parse_alter_table_alter(self) -> exp.Expression:
    -3922        self._match(TokenType.COLUMN)
    -3923        column = self._parse_field(any_token=True)
    -3924
    -3925        if self._match_pair(TokenType.DROP, TokenType.DEFAULT):
    -3926            return self.expression(exp.AlterColumn, this=column, drop=True)
    -3927        if self._match_pair(TokenType.SET, TokenType.DEFAULT):
    -3928            return self.expression(exp.AlterColumn, this=column, default=self._parse_conjunction())
    -3929
    -3930        self._match_text_seq("SET", "DATA")
    -3931        return self.expression(
    -3932            exp.AlterColumn,
    -3933            this=column,
    -3934            dtype=self._match_text_seq("TYPE") and self._parse_types(),
    -3935            collate=self._match(TokenType.COLLATE) and self._parse_term(),
    -3936            using=self._match(TokenType.USING) and self._parse_conjunction(),
    -3937        )
    -3938
    -3939    def _parse_alter_table_drop(self) -> t.List[t.Optional[exp.Expression]]:
    -3940        index = self._index - 1
    -3941
    -3942        partition_exists = self._parse_exists()
    -3943        if self._match(TokenType.PARTITION, advance=False):
    -3944            return self._parse_csv(lambda: self._parse_drop_partition(exists=partition_exists))
    -3945
    -3946        self._retreat(index)
    -3947        return self._parse_csv(self._parse_drop_column)
    -3948
    -3949    def _parse_alter_table_rename(self) -> exp.Expression:
    -3950        self._match_text_seq("TO")
    -3951        return self.expression(exp.RenameTable, this=self._parse_table(schema=True))
    -3952
    -3953    def _parse_alter(self) -> t.Optional[exp.Expression]:
    -3954        start = self._prev
    -3955
    -3956        if not self._match(TokenType.TABLE):
    -3957            return self._parse_as_command(start)
    -3958
    -3959        exists = self._parse_exists()
    -3960        this = self._parse_table(schema=True)
    +3915    def _parse_star(self) -> t.Optional[exp.Expression]:
    +3916        if self._match(TokenType.STAR):
    +3917            return self.PRIMARY_PARSERS[TokenType.STAR](self, self._prev)
    +3918        return None
    +3919
    +3920    def _parse_parameter(self) -> exp.Expression:
    +3921        wrapped = self._match(TokenType.L_BRACE)
    +3922        this = self._parse_var() or self._parse_primary()
    +3923        self._match(TokenType.R_BRACE)
    +3924        return self.expression(exp.Parameter, this=this, wrapped=wrapped)
    +3925
    +3926    def _parse_placeholder(self) -> t.Optional[exp.Expression]:
    +3927        if self._match_set(self.PLACEHOLDER_PARSERS):
    +3928            placeholder = self.PLACEHOLDER_PARSERS[self._prev.token_type](self)
    +3929            if placeholder:
    +3930                return placeholder
    +3931            self._advance(-1)
    +3932        return None
    +3933
    +3934    def _parse_except(self) -> t.Optional[t.List[t.Optional[exp.Expression]]]:
    +3935        if not self._match(TokenType.EXCEPT):
    +3936            return None
    +3937        if self._match(TokenType.L_PAREN, advance=False):
    +3938            return self._parse_wrapped_csv(self._parse_column)
    +3939        return self._parse_csv(self._parse_column)
    +3940
    +3941    def _parse_replace(self) -> t.Optional[t.List[t.Optional[exp.Expression]]]:
    +3942        if not self._match(TokenType.REPLACE):
    +3943            return None
    +3944        if self._match(TokenType.L_PAREN, advance=False):
    +3945            return self._parse_wrapped_csv(self._parse_expression)
    +3946        return self._parse_csv(self._parse_expression)
    +3947
    +3948    def _parse_csv(
    +3949        self, parse_method: t.Callable, sep: TokenType = TokenType.COMMA
    +3950    ) -> t.List[t.Optional[exp.Expression]]:
    +3951        parse_result = parse_method()
    +3952        items = [parse_result] if parse_result is not None else []
    +3953
    +3954        while self._match(sep):
    +3955            if parse_result and self._prev_comments:
    +3956                parse_result.comments = self._prev_comments
    +3957
    +3958            parse_result = parse_method()
    +3959            if parse_result is not None:
    +3960                items.append(parse_result)
     3961
    -3962        if self._next:
    -3963            self._advance()
    -3964        parser = self.ALTER_PARSERS.get(self._prev.text.upper()) if self._prev else None
    -3965
    -3966        if parser:
    -3967            actions = ensure_list(parser(self))
    +3962        return items
    +3963
    +3964    def _parse_tokens(
    +3965        self, parse_method: t.Callable, expressions: t.Dict
    +3966    ) -> t.Optional[exp.Expression]:
    +3967        this = parse_method()
     3968
    -3969            if not self._curr:
    -3970                return self.expression(
    -3971                    exp.AlterTable,
    -3972                    this=this,
    -3973                    exists=exists,
    -3974                    actions=actions,
    -3975                )
    -3976        return self._parse_as_command(start)
    -3977
    -3978    def _parse_merge(self) -> exp.Expression:
    -3979        self._match(TokenType.INTO)
    -3980        target = self._parse_table()
    +3969        while self._match_set(expressions):
    +3970            this = self.expression(
    +3971                expressions[self._prev.token_type],
    +3972                this=this,
    +3973                comments=self._prev_comments,
    +3974                expression=parse_method(),
    +3975            )
    +3976
    +3977        return this
    +3978
    +3979    def _parse_wrapped_id_vars(self) -> t.List[t.Optional[exp.Expression]]:
    +3980        return self._parse_wrapped_csv(self._parse_id_var)
     3981
    -3982        self._match(TokenType.USING)
    -3983        using = self._parse_table()
    -3984
    -3985        self._match(TokenType.ON)
    -3986        on = self._parse_conjunction()
    -3987
    -3988        whens = []
    -3989        while self._match(TokenType.WHEN):
    -3990            matched = not self._match(TokenType.NOT)
    -3991            self._match_text_seq("MATCHED")
    -3992            source = (
    -3993                False
    -3994                if self._match_text_seq("BY", "TARGET")
    -3995                else self._match_text_seq("BY", "SOURCE")
    -3996            )
    -3997            condition = self._parse_conjunction() if self._match(TokenType.AND) else None
    -3998
    -3999            self._match(TokenType.THEN)
    +3982    def _parse_wrapped_csv(
    +3983        self, parse_method: t.Callable, sep: TokenType = TokenType.COMMA
    +3984    ) -> t.List[t.Optional[exp.Expression]]:
    +3985        return self._parse_wrapped(lambda: self._parse_csv(parse_method, sep=sep))
    +3986
    +3987    def _parse_wrapped(self, parse_method: t.Callable) -> t.Any:
    +3988        self._match_l_paren()
    +3989        parse_result = parse_method()
    +3990        self._match_r_paren()
    +3991        return parse_result
    +3992
    +3993    def _parse_select_or_expression(self) -> t.Optional[exp.Expression]:
    +3994        return self._parse_select() or self._parse_set_operations(self._parse_expression())
    +3995
    +3996    def _parse_ddl_select(self) -> t.Optional[exp.Expression]:
    +3997        return self._parse_set_operations(
    +3998            self._parse_select(nested=True, parse_subquery_alias=False)
    +3999        )
     4000
    -4001            if self._match(TokenType.INSERT):
    -4002                _this = self._parse_star()
    -4003                if _this:
    -4004                    then = self.expression(exp.Insert, this=_this)
    -4005                else:
    -4006                    then = self.expression(
    -4007                        exp.Insert,
    -4008                        this=self._parse_value(),
    -4009                        expression=self._match(TokenType.VALUES) and self._parse_value(),
    -4010                    )
    -4011            elif self._match(TokenType.UPDATE):
    -4012                expressions = self._parse_star()
    -4013                if expressions:
    -4014                    then = self.expression(exp.Update, expressions=expressions)
    -4015                else:
    -4016                    then = self.expression(
    -4017                        exp.Update,
    -4018                        expressions=self._match(TokenType.SET)
    -4019                        and self._parse_csv(self._parse_equality),
    -4020                    )
    -4021            elif self._match(TokenType.DELETE):
    -4022                then = self.expression(exp.Var, this=self._prev.text)
    -4023            else:
    -4024                then = None
    +4001    def _parse_transaction(self) -> exp.Expression:
    +4002        this = None
    +4003        if self._match_texts(self.TRANSACTION_KIND):
    +4004            this = self._prev.text
    +4005
    +4006        self._match_texts({"TRANSACTION", "WORK"})
    +4007
    +4008        modes = []
    +4009        while True:
    +4010            mode = []
    +4011            while self._match(TokenType.VAR):
    +4012                mode.append(self._prev.text)
    +4013
    +4014            if mode:
    +4015                modes.append(" ".join(mode))
    +4016            if not self._match(TokenType.COMMA):
    +4017                break
    +4018
    +4019        return self.expression(exp.Transaction, this=this, modes=modes)
    +4020
    +4021    def _parse_commit_or_rollback(self) -> exp.Expression:
    +4022        chain = None
    +4023        savepoint = None
    +4024        is_rollback = self._prev.token_type == TokenType.ROLLBACK
     4025
    -4026            whens.append(
    -4027                self.expression(
    -4028                    exp.When,
    -4029                    matched=matched,
    -4030                    source=source,
    -4031                    condition=condition,
    -4032                    then=then,
    -4033                )
    -4034            )
    +4026        self._match_texts({"TRANSACTION", "WORK"})
    +4027
    +4028        if self._match_text_seq("TO"):
    +4029            self._match_text_seq("SAVEPOINT")
    +4030            savepoint = self._parse_id_var()
    +4031
    +4032        if self._match(TokenType.AND):
    +4033            chain = not self._match_text_seq("NO")
    +4034            self._match_text_seq("CHAIN")
     4035
    -4036        return self.expression(
    -4037            exp.Merge,
    -4038            this=target,
    -4039            using=using,
    -4040            on=on,
    -4041            expressions=whens,
    -4042        )
    +4036        if is_rollback:
    +4037            return self.expression(exp.Rollback, savepoint=savepoint)
    +4038        return self.expression(exp.Commit, chain=chain)
    +4039
    +4040    def _parse_add_column(self) -> t.Optional[exp.Expression]:
    +4041        if not self._match_text_seq("ADD"):
    +4042            return None
     4043
    -4044    def _parse_show(self) -> t.Optional[exp.Expression]:
    -4045        parser = self._find_parser(self.SHOW_PARSERS, self._show_trie)  # type: ignore
    -4046        if parser:
    -4047            return parser(self)
    -4048        self._advance()
    -4049        return self.expression(exp.Show, this=self._prev.text.upper())
    +4044        self._match(TokenType.COLUMN)
    +4045        exists_column = self._parse_exists(not_=True)
    +4046        expression = self._parse_column_def(self._parse_field(any_token=True))
    +4047
    +4048        if expression:
    +4049            expression.set("exists", exists_column)
     4050
    -4051    def _parse_set_item_assignment(
    -4052        self, kind: t.Optional[str] = None
    -4053    ) -> t.Optional[exp.Expression]:
    -4054        index = self._index
    -4055
    -4056        if kind in {"GLOBAL", "SESSION"} and self._match_text_seq("TRANSACTION"):
    -4057            return self._parse_set_transaction(global_=kind == "GLOBAL")
    +4051            # https://docs.databricks.com/delta/update-schema.html#explicitly-update-schema-to-add-columns
    +4052            if self._match_texts(("FIRST", "AFTER")):
    +4053                position = self._prev.text
    +4054                column_position = self.expression(
    +4055                    exp.ColumnPosition, this=self._parse_column(), position=position
    +4056                )
    +4057                expression.set("position", column_position)
     4058
    -4059        left = self._parse_primary() or self._parse_id_var()
    +4059        return expression
     4060
    -4061        if not self._match_texts(("=", "TO")):
    -4062            self._retreat(index)
    -4063            return None
    -4064
    -4065        right = self._parse_statement() or self._parse_id_var()
    -4066        this = self.expression(
    -4067            exp.EQ,
    -4068            this=left,
    -4069            expression=right,
    -4070        )
    -4071
    -4072        return self.expression(
    -4073            exp.SetItem,
    -4074            this=this,
    -4075            kind=kind,
    -4076        )
    -4077
    -4078    def _parse_set_transaction(self, global_: bool = False) -> exp.Expression:
    -4079        self._match_text_seq("TRANSACTION")
    -4080        characteristics = self._parse_csv(
    -4081            lambda: self._parse_var_from_options(self.TRANSACTION_CHARACTERISTICS)
    -4082        )
    -4083        return self.expression(
    -4084            exp.SetItem,
    -4085            expressions=characteristics,
    -4086            kind="TRANSACTION",
    -4087            **{"global": global_},  # type: ignore
    -4088        )
    -4089
    -4090    def _parse_set_item(self) -> t.Optional[exp.Expression]:
    -4091        parser = self._find_parser(self.SET_PARSERS, self._set_trie)  # type: ignore
    -4092        return parser(self) if parser else self._parse_set_item_assignment(kind=None)
    -4093
    -4094    def _parse_set(self) -> exp.Expression:
    -4095        index = self._index
    -4096        set_ = self.expression(exp.Set, expressions=self._parse_csv(self._parse_set_item))
    -4097
    -4098        if self._curr:
    -4099            self._retreat(index)
    -4100            return self._parse_as_command(self._prev)
    -4101
    -4102        return set_
    -4103
    -4104    def _parse_var_from_options(self, options: t.Collection[str]) -> t.Optional[exp.Expression]:
    -4105        for option in options:
    -4106            if self._match_text_seq(*option.split(" ")):
    -4107                return exp.Var(this=option)
    -4108        return None
    +4061    def _parse_drop_column(self) -> t.Optional[exp.Expression]:
    +4062        drop = self._match(TokenType.DROP) and self._parse_drop()
    +4063        if drop and not isinstance(drop, exp.Command):
    +4064            drop.set("kind", drop.args.get("kind", "COLUMN"))
    +4065        return drop
    +4066
    +4067    # https://docs.aws.amazon.com/athena/latest/ug/alter-table-drop-partition.html
    +4068    def _parse_drop_partition(self, exists: t.Optional[bool] = None) -> exp.Expression:
    +4069        return self.expression(
    +4070            exp.DropPartition, expressions=self._parse_csv(self._parse_partition), exists=exists
    +4071        )
    +4072
    +4073    def _parse_add_constraint(self) -> t.Optional[exp.Expression]:
    +4074        this = None
    +4075        kind = self._prev.token_type
    +4076
    +4077        if kind == TokenType.CONSTRAINT:
    +4078            this = self._parse_id_var()
    +4079
    +4080            if self._match_text_seq("CHECK"):
    +4081                expression = self._parse_wrapped(self._parse_conjunction)
    +4082                enforced = self._match_text_seq("ENFORCED")
    +4083
    +4084                return self.expression(
    +4085                    exp.AddConstraint, this=this, expression=expression, enforced=enforced
    +4086                )
    +4087
    +4088        if kind == TokenType.FOREIGN_KEY or self._match(TokenType.FOREIGN_KEY):
    +4089            expression = self._parse_foreign_key()
    +4090        elif kind == TokenType.PRIMARY_KEY or self._match(TokenType.PRIMARY_KEY):
    +4091            expression = self._parse_primary_key()
    +4092        else:
    +4093            expression = None
    +4094
    +4095        return self.expression(exp.AddConstraint, this=this, expression=expression)
    +4096
    +4097    def _parse_alter_table_add(self) -> t.List[t.Optional[exp.Expression]]:
    +4098        index = self._index - 1
    +4099
    +4100        if self._match_set(self.ADD_CONSTRAINT_TOKENS):
    +4101            return self._parse_csv(self._parse_add_constraint)
    +4102
    +4103        self._retreat(index)
    +4104        return self._parse_csv(self._parse_add_column)
    +4105
    +4106    def _parse_alter_table_alter(self) -> exp.Expression:
    +4107        self._match(TokenType.COLUMN)
    +4108        column = self._parse_field(any_token=True)
     4109
    -4110    def _parse_as_command(self, start: Token) -> exp.Command:
    -4111        while self._curr:
    -4112            self._advance()
    -4113        text = self._find_sql(start, self._prev)
    -4114        size = len(start.text)
    -4115        return exp.Command(this=text[:size], expression=text[size:])
    -4116
    -4117    def _find_parser(
    -4118        self, parsers: t.Dict[str, t.Callable], trie: t.Dict
    -4119    ) -> t.Optional[t.Callable]:
    -4120        if not self._curr:
    -4121            return None
    -4122
    -4123        index = self._index
    -4124        this = []
    -4125        while True:
    -4126            # The current token might be multiple words
    -4127            curr = self._curr.text.upper()
    -4128            key = curr.split(" ")
    -4129            this.append(curr)
    -4130            self._advance()
    -4131            result, trie = in_trie(trie, key)
    -4132            if result == 0:
    -4133                break
    -4134            if result == 2:
    -4135                subparser = parsers[" ".join(this)]
    -4136                return subparser
    -4137        self._retreat(index)
    -4138        return None
    -4139
    -4140    def _match(self, token_type, advance=True):
    -4141        if not self._curr:
    -4142            return None
    +4110        if self._match_pair(TokenType.DROP, TokenType.DEFAULT):
    +4111            return self.expression(exp.AlterColumn, this=column, drop=True)
    +4112        if self._match_pair(TokenType.SET, TokenType.DEFAULT):
    +4113            return self.expression(exp.AlterColumn, this=column, default=self._parse_conjunction())
    +4114
    +4115        self._match_text_seq("SET", "DATA")
    +4116        return self.expression(
    +4117            exp.AlterColumn,
    +4118            this=column,
    +4119            dtype=self._match_text_seq("TYPE") and self._parse_types(),
    +4120            collate=self._match(TokenType.COLLATE) and self._parse_term(),
    +4121            using=self._match(TokenType.USING) and self._parse_conjunction(),
    +4122        )
    +4123
    +4124    def _parse_alter_table_drop(self) -> t.List[t.Optional[exp.Expression]]:
    +4125        index = self._index - 1
    +4126
    +4127        partition_exists = self._parse_exists()
    +4128        if self._match(TokenType.PARTITION, advance=False):
    +4129            return self._parse_csv(lambda: self._parse_drop_partition(exists=partition_exists))
    +4130
    +4131        self._retreat(index)
    +4132        return self._parse_csv(self._parse_drop_column)
    +4133
    +4134    def _parse_alter_table_rename(self) -> exp.Expression:
    +4135        self._match_text_seq("TO")
    +4136        return self.expression(exp.RenameTable, this=self._parse_table(schema=True))
    +4137
    +4138    def _parse_alter(self) -> t.Optional[exp.Expression]:
    +4139        start = self._prev
    +4140
    +4141        if not self._match(TokenType.TABLE):
    +4142            return self._parse_as_command(start)
     4143
    -4144        if self._curr.token_type == token_type:
    -4145            if advance:
    -4146                self._advance()
    -4147            return True
    -4148
    -4149        return None
    +4144        exists = self._parse_exists()
    +4145        this = self._parse_table(schema=True)
    +4146
    +4147        if self._next:
    +4148            self._advance()
    +4149        parser = self.ALTER_PARSERS.get(self._prev.text.upper()) if self._prev else None
     4150
    -4151    def _match_set(self, types, advance=True):
    -4152        if not self._curr:
    -4153            return None
    -4154
    -4155        if self._curr.token_type in types:
    -4156            if advance:
    -4157                self._advance()
    -4158            return True
    -4159
    -4160        return None
    -4161
    -4162    def _match_pair(self, token_type_a, token_type_b, advance=True):
    -4163        if not self._curr or not self._next:
    -4164            return None
    -4165
    -4166        if self._curr.token_type == token_type_a and self._next.token_type == token_type_b:
    -4167            if advance:
    -4168                self._advance(2)
    -4169            return True
    -4170
    -4171        return None
    +4151        if parser:
    +4152            actions = ensure_list(parser(self))
    +4153
    +4154            if not self._curr:
    +4155                return self.expression(
    +4156                    exp.AlterTable,
    +4157                    this=this,
    +4158                    exists=exists,
    +4159                    actions=actions,
    +4160                )
    +4161        return self._parse_as_command(start)
    +4162
    +4163    def _parse_merge(self) -> exp.Expression:
    +4164        self._match(TokenType.INTO)
    +4165        target = self._parse_table()
    +4166
    +4167        self._match(TokenType.USING)
    +4168        using = self._parse_table()
    +4169
    +4170        self._match(TokenType.ON)
    +4171        on = self._parse_conjunction()
     4172
    -4173    def _match_l_paren(self, expression=None):
    -4174        if not self._match(TokenType.L_PAREN):
    -4175            self.raise_error("Expecting (")
    -4176        if expression and self._prev_comments:
    -4177            expression.comments = self._prev_comments
    -4178
    -4179    def _match_r_paren(self, expression=None):
    -4180        if not self._match(TokenType.R_PAREN):
    -4181            self.raise_error("Expecting )")
    -4182        if expression and self._prev_comments:
    -4183            expression.comments = self._prev_comments
    -4184
    -4185    def _match_texts(self, texts, advance=True):
    -4186        if self._curr and self._curr.text.upper() in texts:
    -4187            if advance:
    -4188                self._advance()
    -4189            return True
    -4190        return False
    -4191
    -4192    def _match_text_seq(self, *texts, advance=True):
    -4193        index = self._index
    -4194        for text in texts:
    -4195            if self._curr and self._curr.text.upper() == text:
    -4196                self._advance()
    -4197            else:
    -4198                self._retreat(index)
    -4199                return False
    -4200
    -4201        if not advance:
    -4202            self._retreat(index)
    -4203
    -4204        return True
    -4205
    -4206    def _replace_columns_with_dots(self, this):
    -4207        if isinstance(this, exp.Dot):
    -4208            exp.replace_children(this, self._replace_columns_with_dots)
    -4209        elif isinstance(this, exp.Column):
    -4210            exp.replace_children(this, self._replace_columns_with_dots)
    -4211            table = this.args.get("table")
    -4212            this = (
    -4213                self.expression(exp.Dot, this=table, expression=this.this)
    -4214                if table
    -4215                else self.expression(exp.Var, this=this.name)
    -4216            )
    -4217        elif isinstance(this, exp.Identifier):
    -4218            this = self.expression(exp.Var, this=this.name)
    -4219        return this
    +4173        whens = []
    +4174        while self._match(TokenType.WHEN):
    +4175            matched = not self._match(TokenType.NOT)
    +4176            self._match_text_seq("MATCHED")
    +4177            source = (
    +4178                False
    +4179                if self._match_text_seq("BY", "TARGET")
    +4180                else self._match_text_seq("BY", "SOURCE")
    +4181            )
    +4182            condition = self._parse_conjunction() if self._match(TokenType.AND) else None
    +4183
    +4184            self._match(TokenType.THEN)
    +4185
    +4186            if self._match(TokenType.INSERT):
    +4187                _this = self._parse_star()
    +4188                if _this:
    +4189                    then: t.Optional[exp.Expression] = self.expression(exp.Insert, this=_this)
    +4190                else:
    +4191                    then = self.expression(
    +4192                        exp.Insert,
    +4193                        this=self._parse_value(),
    +4194                        expression=self._match(TokenType.VALUES) and self._parse_value(),
    +4195                    )
    +4196            elif self._match(TokenType.UPDATE):
    +4197                expressions = self._parse_star()
    +4198                if expressions:
    +4199                    then = self.expression(exp.Update, expressions=expressions)
    +4200                else:
    +4201                    then = self.expression(
    +4202                        exp.Update,
    +4203                        expressions=self._match(TokenType.SET)
    +4204                        and self._parse_csv(self._parse_equality),
    +4205                    )
    +4206            elif self._match(TokenType.DELETE):
    +4207                then = self.expression(exp.Var, this=self._prev.text)
    +4208            else:
    +4209                then = None
    +4210
    +4211            whens.append(
    +4212                self.expression(
    +4213                    exp.When,
    +4214                    matched=matched,
    +4215                    source=source,
    +4216                    condition=condition,
    +4217                    then=then,
    +4218                )
    +4219            )
     4220
    -4221    def _replace_lambda(self, node, lambda_variables):
    -4222        for column in node.find_all(exp.Column):
    -4223            if column.parts[0].name in lambda_variables:
    -4224                dot_or_id = column.to_dot() if column.table else column.this
    -4225                parent = column.parent
    -4226
    -4227                while isinstance(parent, exp.Dot):
    -4228                    if not isinstance(parent.parent, exp.Dot):
    -4229                        parent.replace(dot_or_id)
    -4230                        break
    -4231                    parent = parent.parent
    -4232                else:
    -4233                    column.replace(dot_or_id)
    -4234        return node
    +4221        return self.expression(
    +4222            exp.Merge,
    +4223            this=target,
    +4224            using=using,
    +4225            on=on,
    +4226            expressions=whens,
    +4227        )
    +4228
    +4229    def _parse_show(self) -> t.Optional[exp.Expression]:
    +4230        parser = self._find_parser(self.SHOW_PARSERS, self._show_trie)  # type: ignore
    +4231        if parser:
    +4232            return parser(self)
    +4233        self._advance()
    +4234        return self.expression(exp.Show, this=self._prev.text.upper())
    +4235
    +4236    def _parse_set_item_assignment(
    +4237        self, kind: t.Optional[str] = None
    +4238    ) -> t.Optional[exp.Expression]:
    +4239        index = self._index
    +4240
    +4241        if kind in {"GLOBAL", "SESSION"} and self._match_text_seq("TRANSACTION"):
    +4242            return self._parse_set_transaction(global_=kind == "GLOBAL")
    +4243
    +4244        left = self._parse_primary() or self._parse_id_var()
    +4245
    +4246        if not self._match_texts(("=", "TO")):
    +4247            self._retreat(index)
    +4248            return None
    +4249
    +4250        right = self._parse_statement() or self._parse_id_var()
    +4251        this = self.expression(
    +4252            exp.EQ,
    +4253            this=left,
    +4254            expression=right,
    +4255        )
    +4256
    +4257        return self.expression(
    +4258            exp.SetItem,
    +4259            this=this,
    +4260            kind=kind,
    +4261        )
    +4262
    +4263    def _parse_set_transaction(self, global_: bool = False) -> exp.Expression:
    +4264        self._match_text_seq("TRANSACTION")
    +4265        characteristics = self._parse_csv(
    +4266            lambda: self._parse_var_from_options(self.TRANSACTION_CHARACTERISTICS)
    +4267        )
    +4268        return self.expression(
    +4269            exp.SetItem,
    +4270            expressions=characteristics,
    +4271            kind="TRANSACTION",
    +4272            **{"global": global_},  # type: ignore
    +4273        )
    +4274
    +4275    def _parse_set_item(self) -> t.Optional[exp.Expression]:
    +4276        parser = self._find_parser(self.SET_PARSERS, self._set_trie)  # type: ignore
    +4277        return parser(self) if parser else self._parse_set_item_assignment(kind=None)
    +4278
    +4279    def _parse_set(self) -> exp.Expression:
    +4280        index = self._index
    +4281        set_ = self.expression(exp.Set, expressions=self._parse_csv(self._parse_set_item))
    +4282
    +4283        if self._curr:
    +4284            self._retreat(index)
    +4285            return self._parse_as_command(self._prev)
    +4286
    +4287        return set_
    +4288
    +4289    def _parse_var_from_options(self, options: t.Collection[str]) -> t.Optional[exp.Expression]:
    +4290        for option in options:
    +4291            if self._match_text_seq(*option.split(" ")):
    +4292                return exp.Var(this=option)
    +4293        return None
    +4294
    +4295    def _parse_as_command(self, start: Token) -> exp.Command:
    +4296        while self._curr:
    +4297            self._advance()
    +4298        text = self._find_sql(start, self._prev)
    +4299        size = len(start.text)
    +4300        return exp.Command(this=text[:size], expression=text[size:])
    +4301
    +4302    def _find_parser(
    +4303        self, parsers: t.Dict[str, t.Callable], trie: t.Dict
    +4304    ) -> t.Optional[t.Callable]:
    +4305        if not self._curr:
    +4306            return None
    +4307
    +4308        index = self._index
    +4309        this = []
    +4310        while True:
    +4311            # The current token might be multiple words
    +4312            curr = self._curr.text.upper()
    +4313            key = curr.split(" ")
    +4314            this.append(curr)
    +4315            self._advance()
    +4316            result, trie = in_trie(trie, key)
    +4317            if result == 0:
    +4318                break
    +4319            if result == 2:
    +4320                subparser = parsers[" ".join(this)]
    +4321                return subparser
    +4322        self._retreat(index)
    +4323        return None
    +4324
    +4325    def _match(self, token_type, advance=True):
    +4326        if not self._curr:
    +4327            return None
    +4328
    +4329        if self._curr.token_type == token_type:
    +4330            if advance:
    +4331                self._advance()
    +4332            return True
    +4333
    +4334        return None
    +4335
    +4336    def _match_set(self, types, advance=True):
    +4337        if not self._curr:
    +4338            return None
    +4339
    +4340        if self._curr.token_type in types:
    +4341            if advance:
    +4342                self._advance()
    +4343            return True
    +4344
    +4345        return None
    +4346
    +4347    def _match_pair(self, token_type_a, token_type_b, advance=True):
    +4348        if not self._curr or not self._next:
    +4349            return None
    +4350
    +4351        if self._curr.token_type == token_type_a and self._next.token_type == token_type_b:
    +4352            if advance:
    +4353                self._advance(2)
    +4354            return True
    +4355
    +4356        return None
    +4357
    +4358    def _match_l_paren(self, expression=None):
    +4359        if not self._match(TokenType.L_PAREN):
    +4360            self.raise_error("Expecting (")
    +4361        if expression and self._prev_comments:
    +4362            expression.comments = self._prev_comments
    +4363
    +4364    def _match_r_paren(self, expression=None):
    +4365        if not self._match(TokenType.R_PAREN):
    +4366            self.raise_error("Expecting )")
    +4367        if expression and self._prev_comments:
    +4368            expression.comments = self._prev_comments
    +4369
    +4370    def _match_texts(self, texts, advance=True):
    +4371        if self._curr and self._curr.text.upper() in texts:
    +4372            if advance:
    +4373                self._advance()
    +4374            return True
    +4375        return False
    +4376
    +4377    def _match_text_seq(self, *texts, advance=True):
    +4378        index = self._index
    +4379        for text in texts:
    +4380            if self._curr and self._curr.text.upper() == text:
    +4381                self._advance()
    +4382            else:
    +4383                self._retreat(index)
    +4384                return False
    +4385
    +4386        if not advance:
    +4387            self._retreat(index)
    +4388
    +4389        return True
    +4390
    +4391    def _replace_columns_with_dots(self, this):
    +4392        if isinstance(this, exp.Dot):
    +4393            exp.replace_children(this, self._replace_columns_with_dots)
    +4394        elif isinstance(this, exp.Column):
    +4395            exp.replace_children(this, self._replace_columns_with_dots)
    +4396            table = this.args.get("table")
    +4397            this = (
    +4398                self.expression(exp.Dot, this=table, expression=this.this)
    +4399                if table
    +4400                else self.expression(exp.Var, this=this.name)
    +4401            )
    +4402        elif isinstance(this, exp.Identifier):
    +4403            this = self.expression(exp.Var, this=this.name)
    +4404        return this
    +4405
    +4406    def _replace_lambda(self, node, lambda_variables):
    +4407        for column in node.find_all(exp.Column):
    +4408            if column.parts[0].name in lambda_variables:
    +4409                dot_or_id = column.to_dot() if column.table else column.this
    +4410                parent = column.parent
    +4411
    +4412                while isinstance(parent, exp.Dot):
    +4413                    if not isinstance(parent.parent, exp.Dot):
    +4414                        parent.replace(dot_or_id)
    +4415                        break
    +4416                    parent = parent.parent
    +4417                else:
    +4418                    if column is node:
    +4419                        node = dot_or_id
    +4420                    else:
    +4421                        column.replace(dot_or_id)
    +4422        return node
     
    @@ -8626,24 +9000,24 @@ Default: "nulls_are_small"
    -
    763    def __init__(
    -764        self,
    -765        error_level: t.Optional[ErrorLevel] = None,
    -766        error_message_context: int = 100,
    -767        index_offset: int = 0,
    -768        unnest_column_only: bool = False,
    -769        alias_post_tablesample: bool = False,
    -770        max_errors: int = 3,
    -771        null_ordering: t.Optional[str] = None,
    -772    ):
    -773        self.error_level = error_level or ErrorLevel.IMMEDIATE
    -774        self.error_message_context = error_message_context
    -775        self.index_offset = index_offset
    -776        self.unnest_column_only = unnest_column_only
    -777        self.alias_post_tablesample = alias_post_tablesample
    -778        self.max_errors = max_errors
    -779        self.null_ordering = null_ordering
    -780        self.reset()
    +            
    787    def __init__(
    +788        self,
    +789        error_level: t.Optional[ErrorLevel] = None,
    +790        error_message_context: int = 100,
    +791        index_offset: int = 0,
    +792        unnest_column_only: bool = False,
    +793        alias_post_tablesample: bool = False,
    +794        max_errors: int = 3,
    +795        null_ordering: t.Optional[str] = None,
    +796    ):
    +797        self.error_level = error_level or ErrorLevel.IMMEDIATE
    +798        self.error_message_context = error_message_context
    +799        self.index_offset = index_offset
    +800        self.unnest_column_only = unnest_column_only
    +801        self.alias_post_tablesample = alias_post_tablesample
    +802        self.max_errors = max_errors
    +803        self.null_ordering = null_ordering
    +804        self.reset()
     
    @@ -8661,15 +9035,15 @@ Default: "nulls_are_small"
    -
    782    def reset(self):
    -783        self.sql = ""
    -784        self.errors = []
    -785        self._tokens = []
    -786        self._index = 0
    -787        self._curr = None
    -788        self._next = None
    -789        self._prev = None
    -790        self._prev_comments = None
    +            
    806    def reset(self):
    +807        self.sql = ""
    +808        self.errors = []
    +809        self._tokens = []
    +810        self._index = 0
    +811        self._curr = None
    +812        self._next = None
    +813        self._prev = None
    +814        self._prev_comments = None
     
    @@ -8687,23 +9061,23 @@ Default: "nulls_are_small"
    -
    792    def parse(
    -793        self, raw_tokens: t.List[Token], sql: t.Optional[str] = None
    -794    ) -> t.List[t.Optional[exp.Expression]]:
    -795        """
    -796        Parses a list of tokens and returns a list of syntax trees, one tree
    -797        per parsed SQL statement.
    -798
    -799        Args:
    -800            raw_tokens: the list of tokens.
    -801            sql: the original SQL string, used to produce helpful debug messages.
    -802
    -803        Returns:
    -804            The list of syntax trees.
    -805        """
    -806        return self._parse(
    -807            parse_method=self.__class__._parse_statement, raw_tokens=raw_tokens, sql=sql
    -808        )
    +            
    816    def parse(
    +817        self, raw_tokens: t.List[Token], sql: t.Optional[str] = None
    +818    ) -> t.List[t.Optional[exp.Expression]]:
    +819        """
    +820        Parses a list of tokens and returns a list of syntax trees, one tree
    +821        per parsed SQL statement.
    +822
    +823        Args:
    +824            raw_tokens: the list of tokens.
    +825            sql: the original SQL string, used to produce helpful debug messages.
    +826
    +827        Returns:
    +828            The list of syntax trees.
    +829        """
    +830        return self._parse(
    +831            parse_method=self.__class__._parse_statement, raw_tokens=raw_tokens, sql=sql
    +832        )
     
    @@ -8737,39 +9111,39 @@ per parsed SQL statement.

    -
    810    def parse_into(
    -811        self,
    -812        expression_types: exp.IntoType,
    -813        raw_tokens: t.List[Token],
    -814        sql: t.Optional[str] = None,
    -815    ) -> t.List[t.Optional[exp.Expression]]:
    -816        """
    -817        Parses a list of tokens into a given Expression type. If a collection of Expression
    -818        types is given instead, this method will try to parse the token list into each one
    -819        of them, stopping at the first for which the parsing succeeds.
    -820
    -821        Args:
    -822            expression_types: the expression type(s) to try and parse the token list into.
    -823            raw_tokens: the list of tokens.
    -824            sql: the original SQL string, used to produce helpful debug messages.
    -825
    -826        Returns:
    -827            The target Expression.
    -828        """
    -829        errors = []
    -830        for expression_type in ensure_collection(expression_types):
    -831            parser = self.EXPRESSION_PARSERS.get(expression_type)
    -832            if not parser:
    -833                raise TypeError(f"No parser registered for {expression_type}")
    -834            try:
    -835                return self._parse(parser, raw_tokens, sql)
    -836            except ParseError as e:
    -837                e.errors[0]["into_expression"] = expression_type
    -838                errors.append(e)
    -839        raise ParseError(
    -840            f"Failed to parse into {expression_types}",
    -841            errors=merge_errors(errors),
    -842        ) from errors[-1]
    +            
    834    def parse_into(
    +835        self,
    +836        expression_types: exp.IntoType,
    +837        raw_tokens: t.List[Token],
    +838        sql: t.Optional[str] = None,
    +839    ) -> t.List[t.Optional[exp.Expression]]:
    +840        """
    +841        Parses a list of tokens into a given Expression type. If a collection of Expression
    +842        types is given instead, this method will try to parse the token list into each one
    +843        of them, stopping at the first for which the parsing succeeds.
    +844
    +845        Args:
    +846            expression_types: the expression type(s) to try and parse the token list into.
    +847            raw_tokens: the list of tokens.
    +848            sql: the original SQL string, used to produce helpful debug messages.
    +849
    +850        Returns:
    +851            The target Expression.
    +852        """
    +853        errors = []
    +854        for expression_type in ensure_collection(expression_types):
    +855            parser = self.EXPRESSION_PARSERS.get(expression_type)
    +856            if not parser:
    +857                raise TypeError(f"No parser registered for {expression_type}")
    +858            try:
    +859                return self._parse(parser, raw_tokens, sql)
    +860            except ParseError as e:
    +861                e.errors[0]["into_expression"] = expression_type
    +862                errors.append(e)
    +863        raise ParseError(
    +864            f"Failed to parse into {expression_types}",
    +865            errors=merge_errors(errors),
    +866        ) from errors[-1]
     
    @@ -8805,18 +9179,18 @@ of them, stopping at the first for which the parsing succeeds.

    -
    878    def check_errors(self) -> None:
    -879        """
    -880        Logs or raises any found errors, depending on the chosen error level setting.
    -881        """
    -882        if self.error_level == ErrorLevel.WARN:
    -883            for error in self.errors:
    -884                logger.error(str(error))
    -885        elif self.error_level == ErrorLevel.RAISE and self.errors:
    -886            raise ParseError(
    -887                concat_messages(self.errors, self.max_errors),
    -888                errors=merge_errors(self.errors),
    -889            )
    +            
    902    def check_errors(self) -> None:
    +903        """
    +904        Logs or raises any found errors, depending on the chosen error level setting.
    +905        """
    +906        if self.error_level == ErrorLevel.WARN:
    +907            for error in self.errors:
    +908                logger.error(str(error))
    +909        elif self.error_level == ErrorLevel.RAISE and self.errors:
    +910            raise ParseError(
    +911                concat_messages(self.errors, self.max_errors),
    +912                errors=merge_errors(self.errors),
    +913            )
     
    @@ -8836,33 +9210,33 @@ of them, stopping at the first for which the parsing succeeds.

    -
    891    def raise_error(self, message: str, token: t.Optional[Token] = None) -> None:
    -892        """
    -893        Appends an error in the list of recorded errors or raises it, depending on the chosen
    -894        error level setting.
    -895        """
    -896        token = token or self._curr or self._prev or Token.string("")
    -897        start = self._find_token(token)
    -898        end = start + len(token.text)
    -899        start_context = self.sql[max(start - self.error_message_context, 0) : start]
    -900        highlight = self.sql[start:end]
    -901        end_context = self.sql[end : end + self.error_message_context]
    -902
    -903        error = ParseError.new(
    -904            f"{message}. Line {token.line}, Col: {token.col}.\n"
    -905            f"  {start_context}\033[4m{highlight}\033[0m{end_context}",
    -906            description=message,
    -907            line=token.line,
    -908            col=token.col,
    -909            start_context=start_context,
    -910            highlight=highlight,
    -911            end_context=end_context,
    -912        )
    -913
    -914        if self.error_level == ErrorLevel.IMMEDIATE:
    -915            raise error
    -916
    -917        self.errors.append(error)
    +            
    915    def raise_error(self, message: str, token: t.Optional[Token] = None) -> None:
    +916        """
    +917        Appends an error in the list of recorded errors or raises it, depending on the chosen
    +918        error level setting.
    +919        """
    +920        token = token or self._curr or self._prev or Token.string("")
    +921        start = token.start
    +922        end = token.end
    +923        start_context = self.sql[max(start - self.error_message_context, 0) : start]
    +924        highlight = self.sql[start:end]
    +925        end_context = self.sql[end : end + self.error_message_context]
    +926
    +927        error = ParseError.new(
    +928            f"{message}. Line {token.line}, Col: {token.col}.\n"
    +929            f"  {start_context}\033[4m{highlight}\033[0m{end_context}",
    +930            description=message,
    +931            line=token.line,
    +932            col=token.col,
    +933            start_context=start_context,
    +934            highlight=highlight,
    +935            end_context=end_context,
    +936        )
    +937
    +938        if self.error_level == ErrorLevel.IMMEDIATE:
    +939            raise error
    +940
    +941        self.errors.append(error)
     
    @@ -8877,34 +9251,34 @@ error level setting.

    def - expression( self, exp_class: Type[sqlglot.expressions.Expression], comments: Optional[List[str]] = None, **kwargs) -> sqlglot.expressions.Expression: + expression( self, exp_class: Type[~E], comments: Optional[List[str]] = None, **kwargs) -> ~E:
    -
    919    def expression(
    -920        self, exp_class: t.Type[exp.Expression], comments: t.Optional[t.List[str]] = None, **kwargs
    -921    ) -> exp.Expression:
    -922        """
    -923        Creates a new, validated Expression.
    -924
    -925        Args:
    -926            exp_class: the expression class to instantiate.
    -927            comments: an optional list of comments to attach to the expression.
    -928            kwargs: the arguments to set for the expression along with their respective values.
    -929
    -930        Returns:
    -931            The target expression.
    -932        """
    -933        instance = exp_class(**kwargs)
    -934        if self._prev_comments:
    -935            instance.comments = self._prev_comments
    -936            self._prev_comments = None
    -937        if comments:
    -938            instance.comments = comments
    -939        self.validate_expression(instance)
    -940        return instance
    +            
    943    def expression(
    +944        self, exp_class: t.Type[E], comments: t.Optional[t.List[str]] = None, **kwargs
    +945    ) -> E:
    +946        """
    +947        Creates a new, validated Expression.
    +948
    +949        Args:
    +950            exp_class: the expression class to instantiate.
    +951            comments: an optional list of comments to attach to the expression.
    +952            kwargs: the arguments to set for the expression along with their respective values.
    +953
    +954        Returns:
    +955            The target expression.
    +956        """
    +957        instance = exp_class(**kwargs)
    +958        if self._prev_comments:
    +959            instance.comments = self._prev_comments
    +960            self._prev_comments = None
    +961        if comments:
    +962            instance.comments = comments
    +963        self.validate_expression(instance)
    +964        return instance
     
    @@ -8938,22 +9312,22 @@ error level setting.

    -
    942    def validate_expression(
    -943        self, expression: exp.Expression, args: t.Optional[t.List] = None
    -944    ) -> None:
    -945        """
    -946        Validates an already instantiated expression, making sure that all its mandatory arguments
    -947        are set.
    -948
    -949        Args:
    -950            expression: the expression to validate.
    -951            args: an optional list of items that was used to instantiate the expression, if it's a Func.
    -952        """
    -953        if self.error_level == ErrorLevel.IGNORE:
    -954            return
    -955
    -956        for error_message in expression.error_messages(args):
    -957            self.raise_error(error_message)
    +            
    966    def validate_expression(
    +967        self, expression: exp.Expression, args: t.Optional[t.List] = None
    +968    ) -> None:
    +969        """
    +970        Validates an already instantiated expression, making sure that all its mandatory arguments
    +971        are set.
    +972
    +973        Args:
    +974            expression: the expression to validate.
    +975            args: an optional list of items that was used to instantiate the expression, if it's a Func.
    +976        """
    +977        if self.error_level == ErrorLevel.IGNORE:
    +978            return
    +979
    +980        for error_message in expression.error_messages(args):
    +981            self.raise_error(error_message)
     
    diff --git a/docs/sqlglot/planner.html b/docs/sqlglot/planner.html index 548482e..c424d7a 100644 --- a/docs/sqlglot/planner.html +++ b/docs/sqlglot/planner.html @@ -3,7 +3,7 @@ - + sqlglot.planner API documentation diff --git a/docs/sqlglot/schema.html b/docs/sqlglot/schema.html index 50b2ce3..1a838de 100644 --- a/docs/sqlglot/schema.html +++ b/docs/sqlglot/schema.html @@ -3,7 +3,7 @@ - + sqlglot.schema API documentation @@ -126,7 +126,7 @@
    5 6import sqlglot 7from sqlglot import expressions as exp - 8from sqlglot.errors import SchemaError + 8from sqlglot.errors import ParseError, SchemaError 9from sqlglot.helper import dict_depth 10from sqlglot.trie import in_trie, new_trie 11 @@ -196,337 +196,347 @@ 75 mapping: dict | None = None, 76 ) -> None: 77 self.mapping = mapping or {} - 78 self.mapping_trie = self._build_trie(self.mapping) - 79 self._supported_table_args: t.Tuple[str, ...] = tuple() - 80 - 81 def _build_trie(self, schema: t.Dict) -> t.Dict: - 82 return new_trie(tuple(reversed(t)) for t in flatten_schema(schema, depth=self._depth())) - 83 - 84 def _depth(self) -> int: - 85 return dict_depth(self.mapping) - 86 - 87 @property - 88 def supported_table_args(self) -> t.Tuple[str, ...]: - 89 if not self._supported_table_args and self.mapping: - 90 depth = self._depth() - 91 - 92 if not depth: # None - 93 self._supported_table_args = tuple() - 94 elif 1 <= depth <= 3: - 95 self._supported_table_args = TABLE_ARGS[:depth] - 96 else: - 97 raise SchemaError(f"Invalid mapping shape. Depth: {depth}") - 98 - 99 return self._supported_table_args -100 -101 def table_parts(self, table: exp.Table) -> t.List[str]: -102 if isinstance(table.this, exp.ReadCSV): -103 return [table.this.name] -104 return [table.text(part) for part in TABLE_ARGS if table.text(part)] -105 -106 def find( -107 self, table: exp.Table, trie: t.Optional[t.Dict] = None, raise_on_missing: bool = True -108 ) -> t.Optional[T]: -109 parts = self.table_parts(table)[0 : len(self.supported_table_args)] -110 value, trie = in_trie(self.mapping_trie if trie is None else trie, parts) -111 -112 if value == 0: -113 return None -114 elif value == 1: -115 possibilities = flatten_schema(trie, depth=dict_depth(trie) - 1) -116 if len(possibilities) == 1: -117 parts.extend(possibilities[0]) -118 else: -119 message = ", ".join(".".join(parts) for parts in possibilities) -120 if raise_on_missing: -121 raise SchemaError(f"Ambiguous mapping for {table}: {message}.") -122 return None -123 return self._nested_get(parts, raise_on_missing=raise_on_missing) -124 -125 def _nested_get( -126 self, parts: t.Sequence[str], d: t.Optional[t.Dict] = None, raise_on_missing=True -127 ) -> t.Optional[t.Any]: -128 return _nested_get( -129 d or self.mapping, -130 *zip(self.supported_table_args, reversed(parts)), -131 raise_on_missing=raise_on_missing, -132 ) + 78 self.mapping_trie = new_trie( + 79 tuple(reversed(t)) for t in flatten_schema(self.mapping, depth=self._depth()) + 80 ) + 81 self._supported_table_args: t.Tuple[str, ...] = tuple() + 82 + 83 def _depth(self) -> int: + 84 return dict_depth(self.mapping) + 85 + 86 @property + 87 def supported_table_args(self) -> t.Tuple[str, ...]: + 88 if not self._supported_table_args and self.mapping: + 89 depth = self._depth() + 90 + 91 if not depth: # None + 92 self._supported_table_args = tuple() + 93 elif 1 <= depth <= 3: + 94 self._supported_table_args = TABLE_ARGS[:depth] + 95 else: + 96 raise SchemaError(f"Invalid mapping shape. Depth: {depth}") + 97 + 98 return self._supported_table_args + 99 +100 def table_parts(self, table: exp.Table) -> t.List[str]: +101 if isinstance(table.this, exp.ReadCSV): +102 return [table.this.name] +103 return [table.text(part) for part in TABLE_ARGS if table.text(part)] +104 +105 def find( +106 self, table: exp.Table, trie: t.Optional[t.Dict] = None, raise_on_missing: bool = True +107 ) -> t.Optional[T]: +108 parts = self.table_parts(table)[0 : len(self.supported_table_args)] +109 value, trie = in_trie(self.mapping_trie if trie is None else trie, parts) +110 +111 if value == 0: +112 return None +113 elif value == 1: +114 possibilities = flatten_schema(trie, depth=dict_depth(trie) - 1) +115 if len(possibilities) == 1: +116 parts.extend(possibilities[0]) +117 else: +118 message = ", ".join(".".join(parts) for parts in possibilities) +119 if raise_on_missing: +120 raise SchemaError(f"Ambiguous mapping for {table}: {message}.") +121 return None +122 return self._nested_get(parts, raise_on_missing=raise_on_missing) +123 +124 def _nested_get( +125 self, parts: t.Sequence[str], d: t.Optional[t.Dict] = None, raise_on_missing=True +126 ) -> t.Optional[t.Any]: +127 return _nested_get( +128 d or self.mapping, +129 *zip(self.supported_table_args, reversed(parts)), +130 raise_on_missing=raise_on_missing, +131 ) +132 133 -134 -135class MappingSchema(AbstractMappingSchema[t.Dict[str, str]], Schema): -136 """ -137 Schema based on a nested mapping. -138 -139 Args: -140 schema (dict): Mapping in one of the following forms: -141 1. {table: {col: type}} -142 2. {db: {table: {col: type}}} -143 3. {catalog: {db: {table: {col: type}}}} -144 4. None - Tables will be added later -145 visible (dict): Optional mapping of which columns in the schema are visible. If not provided, all columns -146 are assumed to be visible. The nesting should mirror that of the schema: -147 1. {table: set(*cols)}} -148 2. {db: {table: set(*cols)}}} -149 3. {catalog: {db: {table: set(*cols)}}}} -150 dialect (str): The dialect to be used for custom type mappings. -151 """ -152 -153 def __init__( -154 self, -155 schema: t.Optional[t.Dict] = None, -156 visible: t.Optional[t.Dict] = None, -157 dialect: DialectType = None, -158 ) -> None: -159 self.dialect = dialect -160 self.visible = visible or {} -161 self._type_mapping_cache: t.Dict[str, exp.DataType] = {} -162 super().__init__(self._normalize(schema or {})) -163 -164 @classmethod -165 def from_mapping_schema(cls, mapping_schema: MappingSchema) -> MappingSchema: -166 return MappingSchema( -167 schema=mapping_schema.mapping, -168 visible=mapping_schema.visible, -169 dialect=mapping_schema.dialect, -170 ) -171 -172 def copy(self, **kwargs) -> MappingSchema: -173 return MappingSchema( -174 **{ # type: ignore -175 "schema": self.mapping.copy(), -176 "visible": self.visible.copy(), -177 "dialect": self.dialect, -178 **kwargs, -179 } -180 ) -181 -182 def _normalize(self, schema: t.Dict) -> t.Dict: -183 """ -184 Converts all identifiers in the schema into lowercase, unless they're quoted. -185 -186 Args: -187 schema: the schema to normalize. -188 -189 Returns: -190 The normalized schema mapping. -191 """ -192 flattened_schema = flatten_schema(schema, depth=dict_depth(schema) - 1) -193 -194 normalized_mapping: t.Dict = {} -195 for keys in flattened_schema: -196 columns = _nested_get(schema, *zip(keys, keys)) -197 assert columns is not None -198 -199 normalized_keys = [self._normalize_name(key) for key in keys] -200 for column_name, column_type in columns.items(): -201 _nested_set( -202 normalized_mapping, -203 normalized_keys + [self._normalize_name(column_name)], -204 column_type, -205 ) -206 -207 return normalized_mapping -208 -209 def add_table( -210 self, table: exp.Table | str, column_mapping: t.Optional[ColumnMapping] = None -211 ) -> None: -212 """ -213 Register or update a table. Updates are only performed if a new column mapping is provided. -214 -215 Args: -216 table: the `Table` expression instance or string representing the table. -217 column_mapping: a column mapping that describes the structure of the table. -218 """ -219 table_ = self._ensure_table(table) -220 column_mapping = ensure_column_mapping(column_mapping) -221 schema = self.find(table_, raise_on_missing=False) +134class MappingSchema(AbstractMappingSchema[t.Dict[str, str]], Schema): +135 """ +136 Schema based on a nested mapping. +137 +138 Args: +139 schema (dict): Mapping in one of the following forms: +140 1. {table: {col: type}} +141 2. {db: {table: {col: type}}} +142 3. {catalog: {db: {table: {col: type}}}} +143 4. None - Tables will be added later +144 visible (dict): Optional mapping of which columns in the schema are visible. If not provided, all columns +145 are assumed to be visible. The nesting should mirror that of the schema: +146 1. {table: set(*cols)}} +147 2. {db: {table: set(*cols)}}} +148 3. {catalog: {db: {table: set(*cols)}}}} +149 dialect (str): The dialect to be used for custom type mappings. +150 """ +151 +152 def __init__( +153 self, +154 schema: t.Optional[t.Dict] = None, +155 visible: t.Optional[t.Dict] = None, +156 dialect: DialectType = None, +157 ) -> None: +158 self.dialect = dialect +159 self.visible = visible or {} +160 self._type_mapping_cache: t.Dict[str, exp.DataType] = {} +161 super().__init__(self._normalize(schema or {})) +162 +163 @classmethod +164 def from_mapping_schema(cls, mapping_schema: MappingSchema) -> MappingSchema: +165 return MappingSchema( +166 schema=mapping_schema.mapping, +167 visible=mapping_schema.visible, +168 dialect=mapping_schema.dialect, +169 ) +170 +171 def copy(self, **kwargs) -> MappingSchema: +172 return MappingSchema( +173 **{ # type: ignore +174 "schema": self.mapping.copy(), +175 "visible": self.visible.copy(), +176 "dialect": self.dialect, +177 **kwargs, +178 } +179 ) +180 +181 def add_table( +182 self, table: exp.Table | str, column_mapping: t.Optional[ColumnMapping] = None +183 ) -> None: +184 """ +185 Register or update a table. Updates are only performed if a new column mapping is provided. +186 +187 Args: +188 table: the `Table` expression instance or string representing the table. +189 column_mapping: a column mapping that describes the structure of the table. +190 """ +191 normalized_table = self._normalize_table(self._ensure_table(table)) +192 normalized_column_mapping = { +193 self._normalize_name(key): value +194 for key, value in ensure_column_mapping(column_mapping).items() +195 } +196 +197 schema = self.find(normalized_table, raise_on_missing=False) +198 if schema and not normalized_column_mapping: +199 return +200 +201 parts = self.table_parts(normalized_table) +202 +203 _nested_set( +204 self.mapping, +205 tuple(reversed(parts)), +206 normalized_column_mapping, +207 ) +208 new_trie([parts], self.mapping_trie) +209 +210 def column_names(self, table: exp.Table | str, only_visible: bool = False) -> t.List[str]: +211 table_ = self._normalize_table(self._ensure_table(table)) +212 schema = self.find(table_) +213 +214 if schema is None: +215 return [] +216 +217 if not only_visible or not self.visible: +218 return list(schema) +219 +220 visible = self._nested_get(self.table_parts(table_), self.visible) +221 return [col for col in schema if col in visible] # type: ignore 222 -223 if schema and not column_mapping: -224 return -225 -226 _nested_set( -227 self.mapping, -228 list(reversed(self.table_parts(table_))), -229 column_mapping, -230 ) -231 self.mapping_trie = self._build_trie(self.mapping) -232 -233 def _normalize_name(self, name: str) -> str: -234 try: -235 identifier: t.Optional[exp.Expression] = sqlglot.parse_one( -236 name, read=self.dialect, into=exp.Identifier -237 ) -238 except: -239 identifier = exp.to_identifier(name) -240 assert isinstance(identifier, exp.Identifier) -241 -242 if identifier.quoted: -243 return identifier.name -244 return identifier.name.lower() +223 def get_column_type(self, table: exp.Table | str, column: exp.Column | str) -> exp.DataType: +224 column_name = self._normalize_name(column if isinstance(column, str) else column.this) +225 table_ = self._normalize_table(self._ensure_table(table)) +226 +227 table_schema = self.find(table_, raise_on_missing=False) +228 if table_schema: +229 column_type = table_schema.get(column_name) +230 +231 if isinstance(column_type, exp.DataType): +232 return column_type +233 elif isinstance(column_type, str): +234 return self._to_data_type(column_type.upper()) +235 raise SchemaError(f"Unknown column type '{column_type}'") +236 +237 return exp.DataType.build("unknown") +238 +239 def _normalize(self, schema: t.Dict) -> t.Dict: +240 """ +241 Converts all identifiers in the schema into lowercase, unless they're quoted. +242 +243 Args: +244 schema: the schema to normalize. 245 -246 def _depth(self) -> int: -247 # The columns themselves are a mapping, but we don't want to include those -248 return super()._depth() - 1 -249 -250 def _ensure_table(self, table: exp.Table | str) -> exp.Table: -251 table_ = exp.to_table(table) -252 -253 if not table_: -254 raise SchemaError(f"Not a valid table '{table}'") +246 Returns: +247 The normalized schema mapping. +248 """ +249 flattened_schema = flatten_schema(schema, depth=dict_depth(schema) - 1) +250 +251 normalized_mapping: t.Dict = {} +252 for keys in flattened_schema: +253 columns = _nested_get(schema, *zip(keys, keys)) +254 assert columns is not None 255 -256 return table_ -257 -258 def column_names(self, table: exp.Table | str, only_visible: bool = False) -> t.List[str]: -259 table_ = self._ensure_table(table) -260 schema = self.find(table_) -261 -262 if schema is None: -263 return [] -264 -265 if not only_visible or not self.visible: -266 return list(schema) -267 -268 visible = self._nested_get(self.table_parts(table_), self.visible) -269 return [col for col in schema if col in visible] # type: ignore -270 -271 def get_column_type(self, table: exp.Table | str, column: exp.Column | str) -> exp.DataType: -272 column_name = column if isinstance(column, str) else column.name -273 table_ = exp.to_table(table) -274 if table_: -275 table_schema = self.find(table_, raise_on_missing=False) -276 if table_schema: -277 column_type = table_schema.get(column_name) -278 -279 if isinstance(column_type, exp.DataType): -280 return column_type -281 elif isinstance(column_type, str): -282 return self._to_data_type(column_type.upper()) -283 raise SchemaError(f"Unknown column type '{column_type}'") -284 return exp.DataType(this=exp.DataType.Type.UNKNOWN) -285 raise SchemaError(f"Could not convert table '{table}'") +256 normalized_keys = [self._normalize_name(key) for key in keys] +257 for column_name, column_type in columns.items(): +258 _nested_set( +259 normalized_mapping, +260 normalized_keys + [self._normalize_name(column_name)], +261 column_type, +262 ) +263 +264 return normalized_mapping +265 +266 def _normalize_table(self, table: exp.Table) -> exp.Table: +267 normalized_table = table.copy() +268 for arg in TABLE_ARGS: +269 value = normalized_table.args.get(arg) +270 if isinstance(value, (str, exp.Identifier)): +271 normalized_table.set(arg, self._normalize_name(value)) +272 +273 return normalized_table +274 +275 def _normalize_name(self, name: str | exp.Identifier) -> str: +276 try: +277 identifier = sqlglot.maybe_parse(name, dialect=self.dialect, into=exp.Identifier) +278 except ParseError: +279 return name if isinstance(name, str) else name.name +280 +281 return identifier.name if identifier.quoted else identifier.name.lower() +282 +283 def _depth(self) -> int: +284 # The columns themselves are a mapping, but we don't want to include those +285 return super()._depth() - 1 286 -287 def _to_data_type(self, schema_type: str) -> exp.DataType: -288 """ -289 Convert a type represented as a string to the corresponding :class:`sqlglot.exp.DataType` object. +287 def _ensure_table(self, table: exp.Table | str) -> exp.Table: +288 if isinstance(table, exp.Table): +289 return table 290 -291 Args: -292 schema_type: the type we want to convert. -293 -294 Returns: -295 The resulting expression type. -296 """ -297 if schema_type not in self._type_mapping_cache: -298 try: -299 expression = exp.maybe_parse(schema_type, into=exp.DataType, dialect=self.dialect) -300 if expression is None: -301 raise ValueError(f"Could not parse {schema_type}") -302 self._type_mapping_cache[schema_type] = expression # type: ignore -303 except AttributeError: -304 raise SchemaError(f"Failed to convert type {schema_type}") -305 -306 return self._type_mapping_cache[schema_type] -307 -308 -309def ensure_schema(schema: t.Any, dialect: DialectType = None) -> Schema: -310 if isinstance(schema, Schema): -311 return schema -312 -313 return MappingSchema(schema, dialect=dialect) -314 +291 table_ = sqlglot.parse_one(table, read=self.dialect, into=exp.Table) +292 if not table_: +293 raise SchemaError(f"Not a valid table '{table}'") +294 +295 return table_ +296 +297 def _to_data_type(self, schema_type: str) -> exp.DataType: +298 """ +299 Convert a type represented as a string to the corresponding :class:`sqlglot.exp.DataType` object. +300 +301 Args: +302 schema_type: the type we want to convert. +303 +304 Returns: +305 The resulting expression type. +306 """ +307 if schema_type not in self._type_mapping_cache: +308 try: +309 expression = exp.maybe_parse(schema_type, into=exp.DataType, dialect=self.dialect) +310 if expression is None: +311 raise ValueError(f"Could not parse {schema_type}") +312 self._type_mapping_cache[schema_type] = expression # type: ignore +313 except AttributeError: +314 raise SchemaError(f"Failed to convert type {schema_type}") 315 -316def ensure_column_mapping(mapping: t.Optional[ColumnMapping]): -317 if isinstance(mapping, dict): -318 return mapping -319 elif isinstance(mapping, str): -320 col_name_type_strs = [x.strip() for x in mapping.split(",")] -321 return { -322 name_type_str.split(":")[0].strip(): name_type_str.split(":")[1].strip() -323 for name_type_str in col_name_type_strs -324 } -325 # Check if mapping looks like a DataFrame StructType -326 elif hasattr(mapping, "simpleString"): -327 return {struct_field.name: struct_field.dataType.simpleString() for struct_field in mapping} # type: ignore -328 elif isinstance(mapping, list): -329 return {x.strip(): None for x in mapping} -330 elif mapping is None: -331 return {} -332 raise ValueError(f"Invalid mapping provided: {type(mapping)}") -333 -334 -335def flatten_schema( -336 schema: t.Dict, depth: int, keys: t.Optional[t.List[str]] = None -337) -> t.List[t.List[str]]: -338 tables = [] -339 keys = keys or [] -340 -341 for k, v in schema.items(): -342 if depth >= 2: -343 tables.extend(flatten_schema(v, depth - 1, keys + [k])) -344 elif depth == 1: -345 tables.append(keys + [k]) -346 return tables -347 -348 -349def _nested_get( -350 d: t.Dict, *path: t.Tuple[str, str], raise_on_missing: bool = True -351) -> t.Optional[t.Any]: -352 """ -353 Get a value for a nested dictionary. -354 -355 Args: -356 d: the dictionary to search. -357 *path: tuples of (name, key), where: -358 `key` is the key in the dictionary to get. -359 `name` is a string to use in the error if `key` isn't found. -360 -361 Returns: -362 The value or None if it doesn't exist. -363 """ -364 for name, key in path: -365 d = d.get(key) # type: ignore -366 if d is None: -367 if raise_on_missing: -368 name = "table" if name == "this" else name -369 raise ValueError(f"Unknown {name}: {key}") -370 return None -371 return d -372 -373 -374def _nested_set(d: t.Dict, keys: t.List[str], value: t.Any) -> t.Dict: -375 """ -376 In-place set a value for a nested dictionary -377 -378 Example: -379 >>> _nested_set({}, ["top_key", "second_key"], "value") -380 {'top_key': {'second_key': 'value'}} -381 -382 >>> _nested_set({"top_key": {"third_key": "third_value"}}, ["top_key", "second_key"], "value") -383 {'top_key': {'third_key': 'third_value', 'second_key': 'value'}} -384 -385 Args: -386 d: dictionary to update. -387 keys: the keys that makeup the path to `value`. -388 value: the value to set in the dictionary for the given key path. -389 -390 Returns: -391 The (possibly) updated dictionary. -392 """ -393 if not keys: -394 return d -395 -396 if len(keys) == 1: -397 d[keys[0]] = value -398 return d +316 return self._type_mapping_cache[schema_type] +317 +318 +319def ensure_schema(schema: t.Any, dialect: DialectType = None) -> Schema: +320 if isinstance(schema, Schema): +321 return schema +322 +323 return MappingSchema(schema, dialect=dialect) +324 +325 +326def ensure_column_mapping(mapping: t.Optional[ColumnMapping]) -> t.Dict: +327 if isinstance(mapping, dict): +328 return mapping +329 elif isinstance(mapping, str): +330 col_name_type_strs = [x.strip() for x in mapping.split(",")] +331 return { +332 name_type_str.split(":")[0].strip(): name_type_str.split(":")[1].strip() +333 for name_type_str in col_name_type_strs +334 } +335 # Check if mapping looks like a DataFrame StructType +336 elif hasattr(mapping, "simpleString"): +337 return {struct_field.name: struct_field.dataType.simpleString() for struct_field in mapping} # type: ignore +338 elif isinstance(mapping, list): +339 return {x.strip(): None for x in mapping} +340 elif mapping is None: +341 return {} +342 raise ValueError(f"Invalid mapping provided: {type(mapping)}") +343 +344 +345def flatten_schema( +346 schema: t.Dict, depth: int, keys: t.Optional[t.List[str]] = None +347) -> t.List[t.List[str]]: +348 tables = [] +349 keys = keys or [] +350 +351 for k, v in schema.items(): +352 if depth >= 2: +353 tables.extend(flatten_schema(v, depth - 1, keys + [k])) +354 elif depth == 1: +355 tables.append(keys + [k]) +356 return tables +357 +358 +359def _nested_get( +360 d: t.Dict, *path: t.Tuple[str, str], raise_on_missing: bool = True +361) -> t.Optional[t.Any]: +362 """ +363 Get a value for a nested dictionary. +364 +365 Args: +366 d: the dictionary to search. +367 *path: tuples of (name, key), where: +368 `key` is the key in the dictionary to get. +369 `name` is a string to use in the error if `key` isn't found. +370 +371 Returns: +372 The value or None if it doesn't exist. +373 """ +374 for name, key in path: +375 d = d.get(key) # type: ignore +376 if d is None: +377 if raise_on_missing: +378 name = "table" if name == "this" else name +379 raise ValueError(f"Unknown {name}: {key}") +380 return None +381 return d +382 +383 +384def _nested_set(d: t.Dict, keys: t.Sequence[str], value: t.Any) -> t.Dict: +385 """ +386 In-place set a value for a nested dictionary +387 +388 Example: +389 >>> _nested_set({}, ["top_key", "second_key"], "value") +390 {'top_key': {'second_key': 'value'}} +391 +392 >>> _nested_set({"top_key": {"third_key": "third_value"}}, ["top_key", "second_key"], "value") +393 {'top_key': {'third_key': 'third_value', 'second_key': 'value'}} +394 +395 Args: +396 d: dictionary to update. +397 keys: the keys that makeup the path to `value`. +398 value: the value to set in the dictionary for the given key path. 399 -400 subd = d -401 for key in keys[:-1]: -402 if key not in subd: -403 subd = subd.setdefault(key, {}) -404 else: -405 subd = subd[key] -406 -407 subd[keys[-1]] = value -408 return d +400 Returns: +401 The (possibly) updated dictionary. +402 """ +403 if not keys: +404 return d +405 +406 if len(keys) == 1: +407 d[keys[0]] = value +408 return d +409 +410 subd = d +411 for key in keys[:-1]: +412 if key not in subd: +413 subd = subd.setdefault(key, {}) +414 else: +415 subd = subd[key] +416 +417 subd[keys[-1]] = value +418 return d
    @@ -755,61 +765,60 @@
    76 mapping: dict | None = None, 77 ) -> None: 78 self.mapping = mapping or {} - 79 self.mapping_trie = self._build_trie(self.mapping) - 80 self._supported_table_args: t.Tuple[str, ...] = tuple() - 81 - 82 def _build_trie(self, schema: t.Dict) -> t.Dict: - 83 return new_trie(tuple(reversed(t)) for t in flatten_schema(schema, depth=self._depth())) - 84 - 85 def _depth(self) -> int: - 86 return dict_depth(self.mapping) - 87 - 88 @property - 89 def supported_table_args(self) -> t.Tuple[str, ...]: - 90 if not self._supported_table_args and self.mapping: - 91 depth = self._depth() - 92 - 93 if not depth: # None - 94 self._supported_table_args = tuple() - 95 elif 1 <= depth <= 3: - 96 self._supported_table_args = TABLE_ARGS[:depth] - 97 else: - 98 raise SchemaError(f"Invalid mapping shape. Depth: {depth}") - 99 -100 return self._supported_table_args -101 -102 def table_parts(self, table: exp.Table) -> t.List[str]: -103 if isinstance(table.this, exp.ReadCSV): -104 return [table.this.name] -105 return [table.text(part) for part in TABLE_ARGS if table.text(part)] -106 -107 def find( -108 self, table: exp.Table, trie: t.Optional[t.Dict] = None, raise_on_missing: bool = True -109 ) -> t.Optional[T]: -110 parts = self.table_parts(table)[0 : len(self.supported_table_args)] -111 value, trie = in_trie(self.mapping_trie if trie is None else trie, parts) -112 -113 if value == 0: -114 return None -115 elif value == 1: -116 possibilities = flatten_schema(trie, depth=dict_depth(trie) - 1) -117 if len(possibilities) == 1: -118 parts.extend(possibilities[0]) -119 else: -120 message = ", ".join(".".join(parts) for parts in possibilities) -121 if raise_on_missing: -122 raise SchemaError(f"Ambiguous mapping for {table}: {message}.") -123 return None -124 return self._nested_get(parts, raise_on_missing=raise_on_missing) -125 -126 def _nested_get( -127 self, parts: t.Sequence[str], d: t.Optional[t.Dict] = None, raise_on_missing=True -128 ) -> t.Optional[t.Any]: -129 return _nested_get( -130 d or self.mapping, -131 *zip(self.supported_table_args, reversed(parts)), -132 raise_on_missing=raise_on_missing, -133 ) + 79 self.mapping_trie = new_trie( + 80 tuple(reversed(t)) for t in flatten_schema(self.mapping, depth=self._depth()) + 81 ) + 82 self._supported_table_args: t.Tuple[str, ...] = tuple() + 83 + 84 def _depth(self) -> int: + 85 return dict_depth(self.mapping) + 86 + 87 @property + 88 def supported_table_args(self) -> t.Tuple[str, ...]: + 89 if not self._supported_table_args and self.mapping: + 90 depth = self._depth() + 91 + 92 if not depth: # None + 93 self._supported_table_args = tuple() + 94 elif 1 <= depth <= 3: + 95 self._supported_table_args = TABLE_ARGS[:depth] + 96 else: + 97 raise SchemaError(f"Invalid mapping shape. Depth: {depth}") + 98 + 99 return self._supported_table_args +100 +101 def table_parts(self, table: exp.Table) -> t.List[str]: +102 if isinstance(table.this, exp.ReadCSV): +103 return [table.this.name] +104 return [table.text(part) for part in TABLE_ARGS if table.text(part)] +105 +106 def find( +107 self, table: exp.Table, trie: t.Optional[t.Dict] = None, raise_on_missing: bool = True +108 ) -> t.Optional[T]: +109 parts = self.table_parts(table)[0 : len(self.supported_table_args)] +110 value, trie = in_trie(self.mapping_trie if trie is None else trie, parts) +111 +112 if value == 0: +113 return None +114 elif value == 1: +115 possibilities = flatten_schema(trie, depth=dict_depth(trie) - 1) +116 if len(possibilities) == 1: +117 parts.extend(possibilities[0]) +118 else: +119 message = ", ".join(".".join(parts) for parts in possibilities) +120 if raise_on_missing: +121 raise SchemaError(f"Ambiguous mapping for {table}: {message}.") +122 return None +123 return self._nested_get(parts, raise_on_missing=raise_on_missing) +124 +125 def _nested_get( +126 self, parts: t.Sequence[str], d: t.Optional[t.Dict] = None, raise_on_missing=True +127 ) -> t.Optional[t.Any]: +128 return _nested_get( +129 d or self.mapping, +130 *zip(self.supported_table_args, reversed(parts)), +131 raise_on_missing=raise_on_missing, +132 )
    @@ -849,8 +858,10 @@ For example, a generic mapping type might be defined as::

    76 mapping: dict | None = None, 77 ) -> None: 78 self.mapping = mapping or {} -79 self.mapping_trie = self._build_trie(self.mapping) -80 self._supported_table_args: t.Tuple[str, ...] = tuple() +79 self.mapping_trie = new_trie( +80 tuple(reversed(t)) for t in flatten_schema(self.mapping, depth=self._depth()) +81 ) +82 self._supported_table_args: t.Tuple[str, ...] = tuple() @@ -868,10 +879,10 @@ For example, a generic mapping type might be defined as::

    -
    102    def table_parts(self, table: exp.Table) -> t.List[str]:
    -103        if isinstance(table.this, exp.ReadCSV):
    -104            return [table.this.name]
    -105        return [table.text(part) for part in TABLE_ARGS if table.text(part)]
    +            
    101    def table_parts(self, table: exp.Table) -> t.List[str]:
    +102        if isinstance(table.this, exp.ReadCSV):
    +103            return [table.this.name]
    +104        return [table.text(part) for part in TABLE_ARGS if table.text(part)]
     
    @@ -889,24 +900,24 @@ For example, a generic mapping type might be defined as::

    -
    107    def find(
    -108        self, table: exp.Table, trie: t.Optional[t.Dict] = None, raise_on_missing: bool = True
    -109    ) -> t.Optional[T]:
    -110        parts = self.table_parts(table)[0 : len(self.supported_table_args)]
    -111        value, trie = in_trie(self.mapping_trie if trie is None else trie, parts)
    -112
    -113        if value == 0:
    -114            return None
    -115        elif value == 1:
    -116            possibilities = flatten_schema(trie, depth=dict_depth(trie) - 1)
    -117            if len(possibilities) == 1:
    -118                parts.extend(possibilities[0])
    -119            else:
    -120                message = ", ".join(".".join(parts) for parts in possibilities)
    -121                if raise_on_missing:
    -122                    raise SchemaError(f"Ambiguous mapping for {table}: {message}.")
    -123                return None
    -124        return self._nested_get(parts, raise_on_missing=raise_on_missing)
    +            
    106    def find(
    +107        self, table: exp.Table, trie: t.Optional[t.Dict] = None, raise_on_missing: bool = True
    +108    ) -> t.Optional[T]:
    +109        parts = self.table_parts(table)[0 : len(self.supported_table_args)]
    +110        value, trie = in_trie(self.mapping_trie if trie is None else trie, parts)
    +111
    +112        if value == 0:
    +113            return None
    +114        elif value == 1:
    +115            possibilities = flatten_schema(trie, depth=dict_depth(trie) - 1)
    +116            if len(possibilities) == 1:
    +117                parts.extend(possibilities[0])
    +118            else:
    +119                message = ", ".join(".".join(parts) for parts in possibilities)
    +120                if raise_on_missing:
    +121                    raise SchemaError(f"Ambiguous mapping for {table}: {message}.")
    +122                return None
    +123        return self._nested_get(parts, raise_on_missing=raise_on_missing)
     
    @@ -925,178 +936,189 @@ For example, a generic mapping type might be defined as::

    -
    136class MappingSchema(AbstractMappingSchema[t.Dict[str, str]], Schema):
    -137    """
    -138    Schema based on a nested mapping.
    -139
    -140    Args:
    -141        schema (dict): Mapping in one of the following forms:
    -142            1. {table: {col: type}}
    -143            2. {db: {table: {col: type}}}
    -144            3. {catalog: {db: {table: {col: type}}}}
    -145            4. None - Tables will be added later
    -146        visible (dict): Optional mapping of which columns in the schema are visible. If not provided, all columns
    -147            are assumed to be visible. The nesting should mirror that of the schema:
    -148            1. {table: set(*cols)}}
    -149            2. {db: {table: set(*cols)}}}
    -150            3. {catalog: {db: {table: set(*cols)}}}}
    -151        dialect (str): The dialect to be used for custom type mappings.
    -152    """
    -153
    -154    def __init__(
    -155        self,
    -156        schema: t.Optional[t.Dict] = None,
    -157        visible: t.Optional[t.Dict] = None,
    -158        dialect: DialectType = None,
    -159    ) -> None:
    -160        self.dialect = dialect
    -161        self.visible = visible or {}
    -162        self._type_mapping_cache: t.Dict[str, exp.DataType] = {}
    -163        super().__init__(self._normalize(schema or {}))
    -164
    -165    @classmethod
    -166    def from_mapping_schema(cls, mapping_schema: MappingSchema) -> MappingSchema:
    -167        return MappingSchema(
    -168            schema=mapping_schema.mapping,
    -169            visible=mapping_schema.visible,
    -170            dialect=mapping_schema.dialect,
    -171        )
    -172
    -173    def copy(self, **kwargs) -> MappingSchema:
    -174        return MappingSchema(
    -175            **{  # type: ignore
    -176                "schema": self.mapping.copy(),
    -177                "visible": self.visible.copy(),
    -178                "dialect": self.dialect,
    -179                **kwargs,
    -180            }
    -181        )
    -182
    -183    def _normalize(self, schema: t.Dict) -> t.Dict:
    -184        """
    -185        Converts all identifiers in the schema into lowercase, unless they're quoted.
    -186
    -187        Args:
    -188            schema: the schema to normalize.
    -189
    -190        Returns:
    -191            The normalized schema mapping.
    -192        """
    -193        flattened_schema = flatten_schema(schema, depth=dict_depth(schema) - 1)
    -194
    -195        normalized_mapping: t.Dict = {}
    -196        for keys in flattened_schema:
    -197            columns = _nested_get(schema, *zip(keys, keys))
    -198            assert columns is not None
    -199
    -200            normalized_keys = [self._normalize_name(key) for key in keys]
    -201            for column_name, column_type in columns.items():
    -202                _nested_set(
    -203                    normalized_mapping,
    -204                    normalized_keys + [self._normalize_name(column_name)],
    -205                    column_type,
    -206                )
    -207
    -208        return normalized_mapping
    -209
    -210    def add_table(
    -211        self, table: exp.Table | str, column_mapping: t.Optional[ColumnMapping] = None
    -212    ) -> None:
    -213        """
    -214        Register or update a table. Updates are only performed if a new column mapping is provided.
    -215
    -216        Args:
    -217            table: the `Table` expression instance or string representing the table.
    -218            column_mapping: a column mapping that describes the structure of the table.
    -219        """
    -220        table_ = self._ensure_table(table)
    -221        column_mapping = ensure_column_mapping(column_mapping)
    -222        schema = self.find(table_, raise_on_missing=False)
    +            
    135class MappingSchema(AbstractMappingSchema[t.Dict[str, str]], Schema):
    +136    """
    +137    Schema based on a nested mapping.
    +138
    +139    Args:
    +140        schema (dict): Mapping in one of the following forms:
    +141            1. {table: {col: type}}
    +142            2. {db: {table: {col: type}}}
    +143            3. {catalog: {db: {table: {col: type}}}}
    +144            4. None - Tables will be added later
    +145        visible (dict): Optional mapping of which columns in the schema are visible. If not provided, all columns
    +146            are assumed to be visible. The nesting should mirror that of the schema:
    +147            1. {table: set(*cols)}}
    +148            2. {db: {table: set(*cols)}}}
    +149            3. {catalog: {db: {table: set(*cols)}}}}
    +150        dialect (str): The dialect to be used for custom type mappings.
    +151    """
    +152
    +153    def __init__(
    +154        self,
    +155        schema: t.Optional[t.Dict] = None,
    +156        visible: t.Optional[t.Dict] = None,
    +157        dialect: DialectType = None,
    +158    ) -> None:
    +159        self.dialect = dialect
    +160        self.visible = visible or {}
    +161        self._type_mapping_cache: t.Dict[str, exp.DataType] = {}
    +162        super().__init__(self._normalize(schema or {}))
    +163
    +164    @classmethod
    +165    def from_mapping_schema(cls, mapping_schema: MappingSchema) -> MappingSchema:
    +166        return MappingSchema(
    +167            schema=mapping_schema.mapping,
    +168            visible=mapping_schema.visible,
    +169            dialect=mapping_schema.dialect,
    +170        )
    +171
    +172    def copy(self, **kwargs) -> MappingSchema:
    +173        return MappingSchema(
    +174            **{  # type: ignore
    +175                "schema": self.mapping.copy(),
    +176                "visible": self.visible.copy(),
    +177                "dialect": self.dialect,
    +178                **kwargs,
    +179            }
    +180        )
    +181
    +182    def add_table(
    +183        self, table: exp.Table | str, column_mapping: t.Optional[ColumnMapping] = None
    +184    ) -> None:
    +185        """
    +186        Register or update a table. Updates are only performed if a new column mapping is provided.
    +187
    +188        Args:
    +189            table: the `Table` expression instance or string representing the table.
    +190            column_mapping: a column mapping that describes the structure of the table.
    +191        """
    +192        normalized_table = self._normalize_table(self._ensure_table(table))
    +193        normalized_column_mapping = {
    +194            self._normalize_name(key): value
    +195            for key, value in ensure_column_mapping(column_mapping).items()
    +196        }
    +197
    +198        schema = self.find(normalized_table, raise_on_missing=False)
    +199        if schema and not normalized_column_mapping:
    +200            return
    +201
    +202        parts = self.table_parts(normalized_table)
    +203
    +204        _nested_set(
    +205            self.mapping,
    +206            tuple(reversed(parts)),
    +207            normalized_column_mapping,
    +208        )
    +209        new_trie([parts], self.mapping_trie)
    +210
    +211    def column_names(self, table: exp.Table | str, only_visible: bool = False) -> t.List[str]:
    +212        table_ = self._normalize_table(self._ensure_table(table))
    +213        schema = self.find(table_)
    +214
    +215        if schema is None:
    +216            return []
    +217
    +218        if not only_visible or not self.visible:
    +219            return list(schema)
    +220
    +221        visible = self._nested_get(self.table_parts(table_), self.visible)
    +222        return [col for col in schema if col in visible]  # type: ignore
     223
    -224        if schema and not column_mapping:
    -225            return
    -226
    -227        _nested_set(
    -228            self.mapping,
    -229            list(reversed(self.table_parts(table_))),
    -230            column_mapping,
    -231        )
    -232        self.mapping_trie = self._build_trie(self.mapping)
    -233
    -234    def _normalize_name(self, name: str) -> str:
    -235        try:
    -236            identifier: t.Optional[exp.Expression] = sqlglot.parse_one(
    -237                name, read=self.dialect, into=exp.Identifier
    -238            )
    -239        except:
    -240            identifier = exp.to_identifier(name)
    -241        assert isinstance(identifier, exp.Identifier)
    -242
    -243        if identifier.quoted:
    -244            return identifier.name
    -245        return identifier.name.lower()
    +224    def get_column_type(self, table: exp.Table | str, column: exp.Column | str) -> exp.DataType:
    +225        column_name = self._normalize_name(column if isinstance(column, str) else column.this)
    +226        table_ = self._normalize_table(self._ensure_table(table))
    +227
    +228        table_schema = self.find(table_, raise_on_missing=False)
    +229        if table_schema:
    +230            column_type = table_schema.get(column_name)
    +231
    +232            if isinstance(column_type, exp.DataType):
    +233                return column_type
    +234            elif isinstance(column_type, str):
    +235                return self._to_data_type(column_type.upper())
    +236            raise SchemaError(f"Unknown column type '{column_type}'")
    +237
    +238        return exp.DataType.build("unknown")
    +239
    +240    def _normalize(self, schema: t.Dict) -> t.Dict:
    +241        """
    +242        Converts all identifiers in the schema into lowercase, unless they're quoted.
    +243
    +244        Args:
    +245            schema: the schema to normalize.
     246
    -247    def _depth(self) -> int:
    -248        # The columns themselves are a mapping, but we don't want to include those
    -249        return super()._depth() - 1
    -250
    -251    def _ensure_table(self, table: exp.Table | str) -> exp.Table:
    -252        table_ = exp.to_table(table)
    -253
    -254        if not table_:
    -255            raise SchemaError(f"Not a valid table '{table}'")
    +247        Returns:
    +248            The normalized schema mapping.
    +249        """
    +250        flattened_schema = flatten_schema(schema, depth=dict_depth(schema) - 1)
    +251
    +252        normalized_mapping: t.Dict = {}
    +253        for keys in flattened_schema:
    +254            columns = _nested_get(schema, *zip(keys, keys))
    +255            assert columns is not None
     256
    -257        return table_
    -258
    -259    def column_names(self, table: exp.Table | str, only_visible: bool = False) -> t.List[str]:
    -260        table_ = self._ensure_table(table)
    -261        schema = self.find(table_)
    -262
    -263        if schema is None:
    -264            return []
    -265
    -266        if not only_visible or not self.visible:
    -267            return list(schema)
    -268
    -269        visible = self._nested_get(self.table_parts(table_), self.visible)
    -270        return [col for col in schema if col in visible]  # type: ignore
    -271
    -272    def get_column_type(self, table: exp.Table | str, column: exp.Column | str) -> exp.DataType:
    -273        column_name = column if isinstance(column, str) else column.name
    -274        table_ = exp.to_table(table)
    -275        if table_:
    -276            table_schema = self.find(table_, raise_on_missing=False)
    -277            if table_schema:
    -278                column_type = table_schema.get(column_name)
    -279
    -280                if isinstance(column_type, exp.DataType):
    -281                    return column_type
    -282                elif isinstance(column_type, str):
    -283                    return self._to_data_type(column_type.upper())
    -284                raise SchemaError(f"Unknown column type '{column_type}'")
    -285            return exp.DataType(this=exp.DataType.Type.UNKNOWN)
    -286        raise SchemaError(f"Could not convert table '{table}'")
    +257            normalized_keys = [self._normalize_name(key) for key in keys]
    +258            for column_name, column_type in columns.items():
    +259                _nested_set(
    +260                    normalized_mapping,
    +261                    normalized_keys + [self._normalize_name(column_name)],
    +262                    column_type,
    +263                )
    +264
    +265        return normalized_mapping
    +266
    +267    def _normalize_table(self, table: exp.Table) -> exp.Table:
    +268        normalized_table = table.copy()
    +269        for arg in TABLE_ARGS:
    +270            value = normalized_table.args.get(arg)
    +271            if isinstance(value, (str, exp.Identifier)):
    +272                normalized_table.set(arg, self._normalize_name(value))
    +273
    +274        return normalized_table
    +275
    +276    def _normalize_name(self, name: str | exp.Identifier) -> str:
    +277        try:
    +278            identifier = sqlglot.maybe_parse(name, dialect=self.dialect, into=exp.Identifier)
    +279        except ParseError:
    +280            return name if isinstance(name, str) else name.name
    +281
    +282        return identifier.name if identifier.quoted else identifier.name.lower()
    +283
    +284    def _depth(self) -> int:
    +285        # The columns themselves are a mapping, but we don't want to include those
    +286        return super()._depth() - 1
     287
    -288    def _to_data_type(self, schema_type: str) -> exp.DataType:
    -289        """
    -290        Convert a type represented as a string to the corresponding :class:`sqlglot.exp.DataType` object.
    +288    def _ensure_table(self, table: exp.Table | str) -> exp.Table:
    +289        if isinstance(table, exp.Table):
    +290            return table
     291
    -292        Args:
    -293            schema_type: the type we want to convert.
    -294
    -295        Returns:
    -296            The resulting expression type.
    -297        """
    -298        if schema_type not in self._type_mapping_cache:
    -299            try:
    -300                expression = exp.maybe_parse(schema_type, into=exp.DataType, dialect=self.dialect)
    -301                if expression is None:
    -302                    raise ValueError(f"Could not parse {schema_type}")
    -303                self._type_mapping_cache[schema_type] = expression  # type: ignore
    -304            except AttributeError:
    -305                raise SchemaError(f"Failed to convert type {schema_type}")
    -306
    -307        return self._type_mapping_cache[schema_type]
    +292        table_ = sqlglot.parse_one(table, read=self.dialect, into=exp.Table)
    +293        if not table_:
    +294            raise SchemaError(f"Not a valid table '{table}'")
    +295
    +296        return table_
    +297
    +298    def _to_data_type(self, schema_type: str) -> exp.DataType:
    +299        """
    +300        Convert a type represented as a string to the corresponding :class:`sqlglot.exp.DataType` object.
    +301
    +302        Args:
    +303            schema_type: the type we want to convert.
    +304
    +305        Returns:
    +306            The resulting expression type.
    +307        """
    +308        if schema_type not in self._type_mapping_cache:
    +309            try:
    +310                expression = exp.maybe_parse(schema_type, into=exp.DataType, dialect=self.dialect)
    +311                if expression is None:
    +312                    raise ValueError(f"Could not parse {schema_type}")
    +313                self._type_mapping_cache[schema_type] = expression  # type: ignore
    +314            except AttributeError:
    +315                raise SchemaError(f"Failed to convert type {schema_type}")
    +316
    +317        return self._type_mapping_cache[schema_type]
     
    @@ -1134,16 +1156,16 @@ are assumed to be visible. The nesting should mirror that of the schema:
    -
    154    def __init__(
    -155        self,
    -156        schema: t.Optional[t.Dict] = None,
    -157        visible: t.Optional[t.Dict] = None,
    -158        dialect: DialectType = None,
    -159    ) -> None:
    -160        self.dialect = dialect
    -161        self.visible = visible or {}
    -162        self._type_mapping_cache: t.Dict[str, exp.DataType] = {}
    -163        super().__init__(self._normalize(schema or {}))
    +            
    153    def __init__(
    +154        self,
    +155        schema: t.Optional[t.Dict] = None,
    +156        visible: t.Optional[t.Dict] = None,
    +157        dialect: DialectType = None,
    +158    ) -> None:
    +159        self.dialect = dialect
    +160        self.visible = visible or {}
    +161        self._type_mapping_cache: t.Dict[str, exp.DataType] = {}
    +162        super().__init__(self._normalize(schema or {}))
     
    @@ -1162,13 +1184,13 @@ are assumed to be visible. The nesting should mirror that of the schema:
    -
    165    @classmethod
    -166    def from_mapping_schema(cls, mapping_schema: MappingSchema) -> MappingSchema:
    -167        return MappingSchema(
    -168            schema=mapping_schema.mapping,
    -169            visible=mapping_schema.visible,
    -170            dialect=mapping_schema.dialect,
    -171        )
    +            
    164    @classmethod
    +165    def from_mapping_schema(cls, mapping_schema: MappingSchema) -> MappingSchema:
    +166        return MappingSchema(
    +167            schema=mapping_schema.mapping,
    +168            visible=mapping_schema.visible,
    +169            dialect=mapping_schema.dialect,
    +170        )
     
    @@ -1186,15 +1208,15 @@ are assumed to be visible. The nesting should mirror that of the schema:
    -
    173    def copy(self, **kwargs) -> MappingSchema:
    -174        return MappingSchema(
    -175            **{  # type: ignore
    -176                "schema": self.mapping.copy(),
    -177                "visible": self.visible.copy(),
    -178                "dialect": self.dialect,
    -179                **kwargs,
    -180            }
    -181        )
    +            
    172    def copy(self, **kwargs) -> MappingSchema:
    +173        return MappingSchema(
    +174            **{  # type: ignore
    +175                "schema": self.mapping.copy(),
    +176                "visible": self.visible.copy(),
    +177                "dialect": self.dialect,
    +178                **kwargs,
    +179            }
    +180        )
     
    @@ -1212,29 +1234,34 @@ are assumed to be visible. The nesting should mirror that of the schema:
    -
    210    def add_table(
    -211        self, table: exp.Table | str, column_mapping: t.Optional[ColumnMapping] = None
    -212    ) -> None:
    -213        """
    -214        Register or update a table. Updates are only performed if a new column mapping is provided.
    -215
    -216        Args:
    -217            table: the `Table` expression instance or string representing the table.
    -218            column_mapping: a column mapping that describes the structure of the table.
    -219        """
    -220        table_ = self._ensure_table(table)
    -221        column_mapping = ensure_column_mapping(column_mapping)
    -222        schema = self.find(table_, raise_on_missing=False)
    -223
    -224        if schema and not column_mapping:
    -225            return
    -226
    -227        _nested_set(
    -228            self.mapping,
    -229            list(reversed(self.table_parts(table_))),
    -230            column_mapping,
    -231        )
    -232        self.mapping_trie = self._build_trie(self.mapping)
    +            
    182    def add_table(
    +183        self, table: exp.Table | str, column_mapping: t.Optional[ColumnMapping] = None
    +184    ) -> None:
    +185        """
    +186        Register or update a table. Updates are only performed if a new column mapping is provided.
    +187
    +188        Args:
    +189            table: the `Table` expression instance or string representing the table.
    +190            column_mapping: a column mapping that describes the structure of the table.
    +191        """
    +192        normalized_table = self._normalize_table(self._ensure_table(table))
    +193        normalized_column_mapping = {
    +194            self._normalize_name(key): value
    +195            for key, value in ensure_column_mapping(column_mapping).items()
    +196        }
    +197
    +198        schema = self.find(normalized_table, raise_on_missing=False)
    +199        if schema and not normalized_column_mapping:
    +200            return
    +201
    +202        parts = self.table_parts(normalized_table)
    +203
    +204        _nested_set(
    +205            self.mapping,
    +206            tuple(reversed(parts)),
    +207            normalized_column_mapping,
    +208        )
    +209        new_trie([parts], self.mapping_trie)
     
    @@ -1261,18 +1288,18 @@ are assumed to be visible. The nesting should mirror that of the schema:
    -
    259    def column_names(self, table: exp.Table | str, only_visible: bool = False) -> t.List[str]:
    -260        table_ = self._ensure_table(table)
    -261        schema = self.find(table_)
    -262
    -263        if schema is None:
    -264            return []
    -265
    -266        if not only_visible or not self.visible:
    -267            return list(schema)
    -268
    -269        visible = self._nested_get(self.table_parts(table_), self.visible)
    -270        return [col for col in schema if col in visible]  # type: ignore
    +            
    211    def column_names(self, table: exp.Table | str, only_visible: bool = False) -> t.List[str]:
    +212        table_ = self._normalize_table(self._ensure_table(table))
    +213        schema = self.find(table_)
    +214
    +215        if schema is None:
    +216            return []
    +217
    +218        if not only_visible or not self.visible:
    +219            return list(schema)
    +220
    +221        visible = self._nested_get(self.table_parts(table_), self.visible)
    +222        return [col for col in schema if col in visible]  # type: ignore
     
    @@ -1305,21 +1332,21 @@ are assumed to be visible. The nesting should mirror that of the schema:
    -
    272    def get_column_type(self, table: exp.Table | str, column: exp.Column | str) -> exp.DataType:
    -273        column_name = column if isinstance(column, str) else column.name
    -274        table_ = exp.to_table(table)
    -275        if table_:
    -276            table_schema = self.find(table_, raise_on_missing=False)
    -277            if table_schema:
    -278                column_type = table_schema.get(column_name)
    -279
    -280                if isinstance(column_type, exp.DataType):
    -281                    return column_type
    -282                elif isinstance(column_type, str):
    -283                    return self._to_data_type(column_type.upper())
    -284                raise SchemaError(f"Unknown column type '{column_type}'")
    -285            return exp.DataType(this=exp.DataType.Type.UNKNOWN)
    -286        raise SchemaError(f"Could not convert table '{table}'")
    +            
    224    def get_column_type(self, table: exp.Table | str, column: exp.Column | str) -> exp.DataType:
    +225        column_name = self._normalize_name(column if isinstance(column, str) else column.this)
    +226        table_ = self._normalize_table(self._ensure_table(table))
    +227
    +228        table_schema = self.find(table_, raise_on_missing=False)
    +229        if table_schema:
    +230            column_type = table_schema.get(column_name)
    +231
    +232            if isinstance(column_type, exp.DataType):
    +233                return column_type
    +234            elif isinstance(column_type, str):
    +235                return self._to_data_type(column_type.upper())
    +236            raise SchemaError(f"Unknown column type '{column_type}'")
    +237
    +238        return exp.DataType.build("unknown")
     
    @@ -1364,11 +1391,11 @@ are assumed to be visible. The nesting should mirror that of the schema:
    -
    310def ensure_schema(schema: t.Any, dialect: DialectType = None) -> Schema:
    -311    if isinstance(schema, Schema):
    -312        return schema
    -313
    -314    return MappingSchema(schema, dialect=dialect)
    +            
    320def ensure_schema(schema: t.Any, dialect: DialectType = None) -> Schema:
    +321    if isinstance(schema, Schema):
    +322        return schema
    +323
    +324    return MappingSchema(schema, dialect=dialect)
     
    @@ -1380,29 +1407,29 @@ are assumed to be visible. The nesting should mirror that of the schema:
    def - ensure_column_mapping( mapping: Union[Dict, str, sqlglot.dataframe.sql.types.StructType, List, NoneType]): + ensure_column_mapping( mapping: Union[Dict, str, sqlglot.dataframe.sql.types.StructType, List, NoneType]) -> Dict:
    -
    317def ensure_column_mapping(mapping: t.Optional[ColumnMapping]):
    -318    if isinstance(mapping, dict):
    -319        return mapping
    -320    elif isinstance(mapping, str):
    -321        col_name_type_strs = [x.strip() for x in mapping.split(",")]
    -322        return {
    -323            name_type_str.split(":")[0].strip(): name_type_str.split(":")[1].strip()
    -324            for name_type_str in col_name_type_strs
    -325        }
    -326    # Check if mapping looks like a DataFrame StructType
    -327    elif hasattr(mapping, "simpleString"):
    -328        return {struct_field.name: struct_field.dataType.simpleString() for struct_field in mapping}  # type: ignore
    -329    elif isinstance(mapping, list):
    -330        return {x.strip(): None for x in mapping}
    -331    elif mapping is None:
    -332        return {}
    -333    raise ValueError(f"Invalid mapping provided: {type(mapping)}")
    +            
    327def ensure_column_mapping(mapping: t.Optional[ColumnMapping]) -> t.Dict:
    +328    if isinstance(mapping, dict):
    +329        return mapping
    +330    elif isinstance(mapping, str):
    +331        col_name_type_strs = [x.strip() for x in mapping.split(",")]
    +332        return {
    +333            name_type_str.split(":")[0].strip(): name_type_str.split(":")[1].strip()
    +334            for name_type_str in col_name_type_strs
    +335        }
    +336    # Check if mapping looks like a DataFrame StructType
    +337    elif hasattr(mapping, "simpleString"):
    +338        return {struct_field.name: struct_field.dataType.simpleString() for struct_field in mapping}  # type: ignore
    +339    elif isinstance(mapping, list):
    +340        return {x.strip(): None for x in mapping}
    +341    elif mapping is None:
    +342        return {}
    +343    raise ValueError(f"Invalid mapping provided: {type(mapping)}")
     
    @@ -1420,18 +1447,18 @@ are assumed to be visible. The nesting should mirror that of the schema:
    -
    336def flatten_schema(
    -337    schema: t.Dict, depth: int, keys: t.Optional[t.List[str]] = None
    -338) -> t.List[t.List[str]]:
    -339    tables = []
    -340    keys = keys or []
    -341
    -342    for k, v in schema.items():
    -343        if depth >= 2:
    -344            tables.extend(flatten_schema(v, depth - 1, keys + [k]))
    -345        elif depth == 1:
    -346            tables.append(keys + [k])
    -347    return tables
    +            
    346def flatten_schema(
    +347    schema: t.Dict, depth: int, keys: t.Optional[t.List[str]] = None
    +348) -> t.List[t.List[str]]:
    +349    tables = []
    +350    keys = keys or []
    +351
    +352    for k, v in schema.items():
    +353        if depth >= 2:
    +354            tables.extend(flatten_schema(v, depth - 1, keys + [k]))
    +355        elif depth == 1:
    +356            tables.append(keys + [k])
    +357    return tables
     
    diff --git a/docs/sqlglot/serde.html b/docs/sqlglot/serde.html index 7bf1af9..fa52092 100644 --- a/docs/sqlglot/serde.html +++ b/docs/sqlglot/serde.html @@ -3,7 +3,7 @@ - + sqlglot.serde API documentation diff --git a/docs/sqlglot/time.html b/docs/sqlglot/time.html index 4bde0b9..11c822a 100644 --- a/docs/sqlglot/time.html +++ b/docs/sqlglot/time.html @@ -3,7 +3,7 @@ - + sqlglot.time API documentation diff --git a/docs/sqlglot/tokens.html b/docs/sqlglot/tokens.html index 4ea9bdf..822a76d 100644 --- a/docs/sqlglot/tokens.html +++ b/docs/sqlglot/tokens.html @@ -3,7 +3,7 @@ - + sqlglot.tokens API documentation @@ -255,6 +255,9 @@
  • DECIMAL
  • +
  • + BIGDECIMAL +
  • CHAR
  • @@ -477,6 +480,9 @@
  • CURRENT_TIMESTAMP
  • +
  • + CURRENT_USER +
  • DEFAULT
  • @@ -942,6 +948,9 @@
  • var
  • +
  • + start +
@@ -1069,1052 +1078,1077 @@ 87 FLOAT = auto() 88 DOUBLE = auto() 89 DECIMAL = auto() - 90 CHAR = auto() - 91 NCHAR = auto() - 92 VARCHAR = auto() - 93 NVARCHAR = auto() - 94 TEXT = auto() - 95 MEDIUMTEXT = auto() - 96 LONGTEXT = auto() - 97 MEDIUMBLOB = auto() - 98 LONGBLOB = auto() - 99 BINARY = auto() - 100 VARBINARY = auto() - 101 JSON = auto() - 102 JSONB = auto() - 103 TIME = auto() - 104 TIMESTAMP = auto() - 105 TIMESTAMPTZ = auto() - 106 TIMESTAMPLTZ = auto() - 107 DATETIME = auto() - 108 DATE = auto() - 109 UUID = auto() - 110 GEOGRAPHY = auto() - 111 NULLABLE = auto() - 112 GEOMETRY = auto() - 113 HLLSKETCH = auto() - 114 HSTORE = auto() - 115 SUPER = auto() - 116 SERIAL = auto() - 117 SMALLSERIAL = auto() - 118 BIGSERIAL = auto() - 119 XML = auto() - 120 UNIQUEIDENTIFIER = auto() - 121 MONEY = auto() - 122 SMALLMONEY = auto() - 123 ROWVERSION = auto() - 124 IMAGE = auto() - 125 VARIANT = auto() - 126 OBJECT = auto() - 127 INET = auto() - 128 - 129 # keywords - 130 ALIAS = auto() - 131 ALTER = auto() - 132 ALWAYS = auto() - 133 ALL = auto() - 134 ANTI = auto() - 135 ANY = auto() - 136 APPLY = auto() - 137 ARRAY = auto() - 138 ASC = auto() - 139 ASOF = auto() - 140 AT_TIME_ZONE = auto() - 141 AUTO_INCREMENT = auto() - 142 BEGIN = auto() - 143 BETWEEN = auto() - 144 BOTH = auto() - 145 BUCKET = auto() - 146 BY_DEFAULT = auto() - 147 CACHE = auto() - 148 CASCADE = auto() - 149 CASE = auto() - 150 CHARACTER_SET = auto() - 151 CLUSTER_BY = auto() - 152 COLLATE = auto() - 153 COMMAND = auto() - 154 COMMENT = auto() - 155 COMMIT = auto() - 156 COMPOUND = auto() - 157 CONSTRAINT = auto() - 158 CREATE = auto() - 159 CROSS = auto() - 160 CUBE = auto() - 161 CURRENT_DATE = auto() - 162 CURRENT_DATETIME = auto() - 163 CURRENT_ROW = auto() - 164 CURRENT_TIME = auto() - 165 CURRENT_TIMESTAMP = auto() - 166 DEFAULT = auto() - 167 DELETE = auto() - 168 DESC = auto() - 169 DESCRIBE = auto() - 170 DISTINCT = auto() - 171 DISTINCT_FROM = auto() - 172 DISTRIBUTE_BY = auto() - 173 DIV = auto() - 174 DROP = auto() - 175 ELSE = auto() - 176 END = auto() - 177 ESCAPE = auto() - 178 EXCEPT = auto() - 179 EXECUTE = auto() - 180 EXISTS = auto() - 181 FALSE = auto() - 182 FETCH = auto() - 183 FILTER = auto() - 184 FINAL = auto() - 185 FIRST = auto() - 186 FOLLOWING = auto() - 187 FOR = auto() - 188 FOREIGN_KEY = auto() - 189 FORMAT = auto() - 190 FROM = auto() - 191 FULL = auto() - 192 FUNCTION = auto() - 193 GLOB = auto() - 194 GLOBAL = auto() - 195 GROUP_BY = auto() - 196 GROUPING_SETS = auto() - 197 HAVING = auto() - 198 HINT = auto() - 199 IF = auto() - 200 IGNORE_NULLS = auto() - 201 ILIKE = auto() - 202 ILIKE_ANY = auto() - 203 IN = auto() - 204 INDEX = auto() - 205 INNER = auto() - 206 INSERT = auto() - 207 INTERSECT = auto() - 208 INTERVAL = auto() - 209 INTO = auto() - 210 INTRODUCER = auto() - 211 IRLIKE = auto() - 212 IS = auto() - 213 ISNULL = auto() - 214 JOIN = auto() - 215 JOIN_MARKER = auto() - 216 LANGUAGE = auto() - 217 LATERAL = auto() - 218 LAZY = auto() - 219 LEADING = auto() - 220 LEFT = auto() - 221 LIKE = auto() - 222 LIKE_ANY = auto() - 223 LIMIT = auto() - 224 LOAD_DATA = auto() - 225 LOCAL = auto() - 226 MAP = auto() - 227 MATCH_RECOGNIZE = auto() - 228 MATERIALIZED = auto() - 229 MERGE = auto() - 230 MOD = auto() - 231 NATURAL = auto() - 232 NEXT = auto() - 233 NO_ACTION = auto() - 234 NOTNULL = auto() - 235 NULL = auto() - 236 NULLS_FIRST = auto() - 237 NULLS_LAST = auto() - 238 OFFSET = auto() - 239 ON = auto() - 240 ONLY = auto() - 241 OPTIONS = auto() - 242 ORDER_BY = auto() - 243 ORDERED = auto() - 244 ORDINALITY = auto() - 245 OUTER = auto() - 246 OUT_OF = auto() - 247 OVER = auto() - 248 OVERLAPS = auto() - 249 OVERWRITE = auto() - 250 PARTITION = auto() - 251 PARTITION_BY = auto() - 252 PERCENT = auto() - 253 PIVOT = auto() - 254 PLACEHOLDER = auto() - 255 PRAGMA = auto() - 256 PRECEDING = auto() - 257 PRIMARY_KEY = auto() - 258 PROCEDURE = auto() - 259 PROPERTIES = auto() - 260 PSEUDO_TYPE = auto() - 261 QUALIFY = auto() - 262 QUOTE = auto() - 263 RANGE = auto() - 264 RECURSIVE = auto() - 265 REPLACE = auto() - 266 RESPECT_NULLS = auto() - 267 RETURNING = auto() - 268 REFERENCES = auto() - 269 RIGHT = auto() - 270 RLIKE = auto() - 271 ROLLBACK = auto() - 272 ROLLUP = auto() - 273 ROW = auto() - 274 ROWS = auto() - 275 SEED = auto() - 276 SELECT = auto() - 277 SEMI = auto() - 278 SEPARATOR = auto() - 279 SERDE_PROPERTIES = auto() - 280 SET = auto() - 281 SHOW = auto() - 282 SIMILAR_TO = auto() - 283 SOME = auto() - 284 SORTKEY = auto() - 285 SORT_BY = auto() - 286 STRUCT = auto() - 287 TABLE_SAMPLE = auto() - 288 TEMPORARY = auto() - 289 TOP = auto() - 290 THEN = auto() - 291 TRAILING = auto() - 292 TRUE = auto() - 293 UNBOUNDED = auto() - 294 UNCACHE = auto() - 295 UNION = auto() - 296 UNLOGGED = auto() - 297 UNNEST = auto() - 298 UNPIVOT = auto() - 299 UPDATE = auto() - 300 USE = auto() - 301 USING = auto() - 302 VALUES = auto() - 303 VIEW = auto() - 304 VOLATILE = auto() - 305 WHEN = auto() - 306 WHERE = auto() - 307 WINDOW = auto() - 308 WITH = auto() - 309 WITH_TIME_ZONE = auto() - 310 WITH_LOCAL_TIME_ZONE = auto() - 311 WITHIN_GROUP = auto() - 312 WITHOUT_TIME_ZONE = auto() - 313 UNIQUE = auto() - 314 - 315 - 316class Token: - 317 __slots__ = ("token_type", "text", "line", "col", "comments") - 318 - 319 @classmethod - 320 def number(cls, number: int) -> Token: - 321 """Returns a NUMBER token with `number` as its text.""" - 322 return cls(TokenType.NUMBER, str(number)) - 323 - 324 @classmethod - 325 def string(cls, string: str) -> Token: - 326 """Returns a STRING token with `string` as its text.""" - 327 return cls(TokenType.STRING, string) - 328 - 329 @classmethod - 330 def identifier(cls, identifier: str) -> Token: - 331 """Returns an IDENTIFIER token with `identifier` as its text.""" - 332 return cls(TokenType.IDENTIFIER, identifier) - 333 - 334 @classmethod - 335 def var(cls, var: str) -> Token: - 336 """Returns an VAR token with `var` as its text.""" - 337 return cls(TokenType.VAR, var) - 338 - 339 def __init__( - 340 self, - 341 token_type: TokenType, - 342 text: str, - 343 line: int = 1, - 344 col: int = 1, - 345 comments: t.List[str] = [], - 346 ) -> None: - 347 self.token_type = token_type - 348 self.text = text - 349 self.line = line - 350 self.col = col - len(text) - 351 self.col = self.col if self.col > 1 else 1 - 352 self.comments = comments - 353 - 354 def __repr__(self) -> str: - 355 attributes = ", ".join(f"{k}: {getattr(self, k)}" for k in self.__slots__) - 356 return f"<Token {attributes}>" + 90 BIGDECIMAL = auto() + 91 CHAR = auto() + 92 NCHAR = auto() + 93 VARCHAR = auto() + 94 NVARCHAR = auto() + 95 TEXT = auto() + 96 MEDIUMTEXT = auto() + 97 LONGTEXT = auto() + 98 MEDIUMBLOB = auto() + 99 LONGBLOB = auto() + 100 BINARY = auto() + 101 VARBINARY = auto() + 102 JSON = auto() + 103 JSONB = auto() + 104 TIME = auto() + 105 TIMESTAMP = auto() + 106 TIMESTAMPTZ = auto() + 107 TIMESTAMPLTZ = auto() + 108 DATETIME = auto() + 109 DATE = auto() + 110 UUID = auto() + 111 GEOGRAPHY = auto() + 112 NULLABLE = auto() + 113 GEOMETRY = auto() + 114 HLLSKETCH = auto() + 115 HSTORE = auto() + 116 SUPER = auto() + 117 SERIAL = auto() + 118 SMALLSERIAL = auto() + 119 BIGSERIAL = auto() + 120 XML = auto() + 121 UNIQUEIDENTIFIER = auto() + 122 MONEY = auto() + 123 SMALLMONEY = auto() + 124 ROWVERSION = auto() + 125 IMAGE = auto() + 126 VARIANT = auto() + 127 OBJECT = auto() + 128 INET = auto() + 129 + 130 # keywords + 131 ALIAS = auto() + 132 ALTER = auto() + 133 ALWAYS = auto() + 134 ALL = auto() + 135 ANTI = auto() + 136 ANY = auto() + 137 APPLY = auto() + 138 ARRAY = auto() + 139 ASC = auto() + 140 ASOF = auto() + 141 AT_TIME_ZONE = auto() + 142 AUTO_INCREMENT = auto() + 143 BEGIN = auto() + 144 BETWEEN = auto() + 145 BOTH = auto() + 146 BUCKET = auto() + 147 BY_DEFAULT = auto() + 148 CACHE = auto() + 149 CASCADE = auto() + 150 CASE = auto() + 151 CHARACTER_SET = auto() + 152 CLUSTER_BY = auto() + 153 COLLATE = auto() + 154 COMMAND = auto() + 155 COMMENT = auto() + 156 COMMIT = auto() + 157 COMPOUND = auto() + 158 CONSTRAINT = auto() + 159 CREATE = auto() + 160 CROSS = auto() + 161 CUBE = auto() + 162 CURRENT_DATE = auto() + 163 CURRENT_DATETIME = auto() + 164 CURRENT_ROW = auto() + 165 CURRENT_TIME = auto() + 166 CURRENT_TIMESTAMP = auto() + 167 CURRENT_USER = auto() + 168 DEFAULT = auto() + 169 DELETE = auto() + 170 DESC = auto() + 171 DESCRIBE = auto() + 172 DISTINCT = auto() + 173 DISTINCT_FROM = auto() + 174 DISTRIBUTE_BY = auto() + 175 DIV = auto() + 176 DROP = auto() + 177 ELSE = auto() + 178 END = auto() + 179 ESCAPE = auto() + 180 EXCEPT = auto() + 181 EXECUTE = auto() + 182 EXISTS = auto() + 183 FALSE = auto() + 184 FETCH = auto() + 185 FILTER = auto() + 186 FINAL = auto() + 187 FIRST = auto() + 188 FOLLOWING = auto() + 189 FOR = auto() + 190 FOREIGN_KEY = auto() + 191 FORMAT = auto() + 192 FROM = auto() + 193 FULL = auto() + 194 FUNCTION = auto() + 195 GLOB = auto() + 196 GLOBAL = auto() + 197 GROUP_BY = auto() + 198 GROUPING_SETS = auto() + 199 HAVING = auto() + 200 HINT = auto() + 201 IF = auto() + 202 IGNORE_NULLS = auto() + 203 ILIKE = auto() + 204 ILIKE_ANY = auto() + 205 IN = auto() + 206 INDEX = auto() + 207 INNER = auto() + 208 INSERT = auto() + 209 INTERSECT = auto() + 210 INTERVAL = auto() + 211 INTO = auto() + 212 INTRODUCER = auto() + 213 IRLIKE = auto() + 214 IS = auto() + 215 ISNULL = auto() + 216 JOIN = auto() + 217 JOIN_MARKER = auto() + 218 LANGUAGE = auto() + 219 LATERAL = auto() + 220 LAZY = auto() + 221 LEADING = auto() + 222 LEFT = auto() + 223 LIKE = auto() + 224 LIKE_ANY = auto() + 225 LIMIT = auto() + 226 LOAD_DATA = auto() + 227 LOCAL = auto() + 228 MAP = auto() + 229 MATCH_RECOGNIZE = auto() + 230 MATERIALIZED = auto() + 231 MERGE = auto() + 232 MOD = auto() + 233 NATURAL = auto() + 234 NEXT = auto() + 235 NO_ACTION = auto() + 236 NOTNULL = auto() + 237 NULL = auto() + 238 NULLS_FIRST = auto() + 239 NULLS_LAST = auto() + 240 OFFSET = auto() + 241 ON = auto() + 242 ONLY = auto() + 243 OPTIONS = auto() + 244 ORDER_BY = auto() + 245 ORDERED = auto() + 246 ORDINALITY = auto() + 247 OUTER = auto() + 248 OUT_OF = auto() + 249 OVER = auto() + 250 OVERLAPS = auto() + 251 OVERWRITE = auto() + 252 PARTITION = auto() + 253 PARTITION_BY = auto() + 254 PERCENT = auto() + 255 PIVOT = auto() + 256 PLACEHOLDER = auto() + 257 PRAGMA = auto() + 258 PRECEDING = auto() + 259 PRIMARY_KEY = auto() + 260 PROCEDURE = auto() + 261 PROPERTIES = auto() + 262 PSEUDO_TYPE = auto() + 263 QUALIFY = auto() + 264 QUOTE = auto() + 265 RANGE = auto() + 266 RECURSIVE = auto() + 267 REPLACE = auto() + 268 RESPECT_NULLS = auto() + 269 RETURNING = auto() + 270 REFERENCES = auto() + 271 RIGHT = auto() + 272 RLIKE = auto() + 273 ROLLBACK = auto() + 274 ROLLUP = auto() + 275 ROW = auto() + 276 ROWS = auto() + 277 SEED = auto() + 278 SELECT = auto() + 279 SEMI = auto() + 280 SEPARATOR = auto() + 281 SERDE_PROPERTIES = auto() + 282 SET = auto() + 283 SHOW = auto() + 284 SIMILAR_TO = auto() + 285 SOME = auto() + 286 SORTKEY = auto() + 287 SORT_BY = auto() + 288 STRUCT = auto() + 289 TABLE_SAMPLE = auto() + 290 TEMPORARY = auto() + 291 TOP = auto() + 292 THEN = auto() + 293 TRAILING = auto() + 294 TRUE = auto() + 295 UNBOUNDED = auto() + 296 UNCACHE = auto() + 297 UNION = auto() + 298 UNLOGGED = auto() + 299 UNNEST = auto() + 300 UNPIVOT = auto() + 301 UPDATE = auto() + 302 USE = auto() + 303 USING = auto() + 304 VALUES = auto() + 305 VIEW = auto() + 306 VOLATILE = auto() + 307 WHEN = auto() + 308 WHERE = auto() + 309 WINDOW = auto() + 310 WITH = auto() + 311 WITH_TIME_ZONE = auto() + 312 WITH_LOCAL_TIME_ZONE = auto() + 313 WITHIN_GROUP = auto() + 314 WITHOUT_TIME_ZONE = auto() + 315 UNIQUE = auto() + 316 + 317 + 318class Token: + 319 __slots__ = ("token_type", "text", "line", "col", "end", "comments") + 320 + 321 @classmethod + 322 def number(cls, number: int) -> Token: + 323 """Returns a NUMBER token with `number` as its text.""" + 324 return cls(TokenType.NUMBER, str(number)) + 325 + 326 @classmethod + 327 def string(cls, string: str) -> Token: + 328 """Returns a STRING token with `string` as its text.""" + 329 return cls(TokenType.STRING, string) + 330 + 331 @classmethod + 332 def identifier(cls, identifier: str) -> Token: + 333 """Returns an IDENTIFIER token with `identifier` as its text.""" + 334 return cls(TokenType.IDENTIFIER, identifier) + 335 + 336 @classmethod + 337 def var(cls, var: str) -> Token: + 338 """Returns an VAR token with `var` as its text.""" + 339 return cls(TokenType.VAR, var) + 340 + 341 def __init__( + 342 self, + 343 token_type: TokenType, + 344 text: str, + 345 line: int = 1, + 346 col: int = 1, + 347 end: int = 0, + 348 comments: t.List[str] = [], + 349 ) -> None: + 350 self.token_type = token_type + 351 self.text = text + 352 self.line = line + 353 size = len(text) + 354 self.col = col + 355 self.end = end if end else size + 356 self.comments = comments 357 - 358 - 359class _Tokenizer(type): - 360 def __new__(cls, clsname, bases, attrs): # type: ignore - 361 klass = super().__new__(cls, clsname, bases, attrs) + 358 @property + 359 def start(self) -> int: + 360 """Returns the start of the token.""" + 361 return self.end - len(self.text) 362 - 363 klass._QUOTES = { - 364 f"{prefix}{s}": e - 365 for s, e in cls._delimeter_list_to_dict(klass.QUOTES).items() - 366 for prefix in (("",) if s[0].isalpha() else ("", "n", "N")) - 367 } - 368 klass._BIT_STRINGS = cls._delimeter_list_to_dict(klass.BIT_STRINGS) - 369 klass._HEX_STRINGS = cls._delimeter_list_to_dict(klass.HEX_STRINGS) - 370 klass._BYTE_STRINGS = cls._delimeter_list_to_dict(klass.BYTE_STRINGS) - 371 klass._IDENTIFIERS = cls._delimeter_list_to_dict(klass.IDENTIFIERS) - 372 klass._STRING_ESCAPES = set(klass.STRING_ESCAPES) - 373 klass._IDENTIFIER_ESCAPES = set(klass.IDENTIFIER_ESCAPES) - 374 klass._COMMENTS = dict( - 375 (comment, None) if isinstance(comment, str) else (comment[0], comment[1]) - 376 for comment in klass.COMMENTS - 377 ) - 378 - 379 klass.KEYWORD_TRIE = new_trie( - 380 key.upper() - 381 for key in { - 382 **klass.KEYWORDS, - 383 **{comment: TokenType.COMMENT for comment in klass._COMMENTS}, - 384 **{quote: TokenType.QUOTE for quote in klass._QUOTES}, - 385 **{bit_string: TokenType.BIT_STRING for bit_string in klass._BIT_STRINGS}, - 386 **{hex_string: TokenType.HEX_STRING for hex_string in klass._HEX_STRINGS}, - 387 **{byte_string: TokenType.BYTE_STRING for byte_string in klass._BYTE_STRINGS}, - 388 } - 389 if " " in key or any(single in key for single in klass.SINGLE_TOKENS) - 390 ) - 391 - 392 return klass - 393 - 394 @staticmethod - 395 def _delimeter_list_to_dict(list: t.List[str | t.Tuple[str, str]]) -> t.Dict[str, str]: - 396 return dict((item, item) if isinstance(item, str) else (item[0], item[1]) for item in list) - 397 - 398 - 399class Tokenizer(metaclass=_Tokenizer): - 400 SINGLE_TOKENS = { - 401 "(": TokenType.L_PAREN, - 402 ")": TokenType.R_PAREN, - 403 "[": TokenType.L_BRACKET, - 404 "]": TokenType.R_BRACKET, - 405 "{": TokenType.L_BRACE, - 406 "}": TokenType.R_BRACE, - 407 "&": TokenType.AMP, - 408 "^": TokenType.CARET, - 409 ":": TokenType.COLON, - 410 ",": TokenType.COMMA, - 411 ".": TokenType.DOT, - 412 "-": TokenType.DASH, - 413 "=": TokenType.EQ, - 414 ">": TokenType.GT, - 415 "<": TokenType.LT, - 416 "%": TokenType.MOD, - 417 "!": TokenType.NOT, - 418 "|": TokenType.PIPE, - 419 "+": TokenType.PLUS, - 420 ";": TokenType.SEMICOLON, - 421 "/": TokenType.SLASH, - 422 "\\": TokenType.BACKSLASH, - 423 "*": TokenType.STAR, - 424 "~": TokenType.TILDA, - 425 "?": TokenType.PLACEHOLDER, - 426 "@": TokenType.PARAMETER, - 427 # used for breaking a var like x'y' but nothing else - 428 # the token type doesn't matter - 429 "'": TokenType.QUOTE, - 430 "`": TokenType.IDENTIFIER, - 431 '"': TokenType.IDENTIFIER, - 432 "#": TokenType.HASH, - 433 } - 434 - 435 QUOTES: t.List[t.Tuple[str, str] | str] = ["'"] - 436 - 437 BIT_STRINGS: t.List[str | t.Tuple[str, str]] = [] - 438 - 439 HEX_STRINGS: t.List[str | t.Tuple[str, str]] = [] - 440 - 441 BYTE_STRINGS: t.List[str | t.Tuple[str, str]] = [] - 442 - 443 IDENTIFIERS: t.List[str | t.Tuple[str, str]] = ['"'] - 444 - 445 STRING_ESCAPES = ["'"] - 446 - 447 _STRING_ESCAPES: t.Set[str] = set() - 448 - 449 IDENTIFIER_ESCAPES = ['"'] - 450 - 451 _IDENTIFIER_ESCAPES: t.Set[str] = set() + 363 def __repr__(self) -> str: + 364 attributes = ", ".join(f"{k}: {getattr(self, k)}" for k in self.__slots__) + 365 return f"<Token {attributes}>" + 366 + 367 + 368class _Tokenizer(type): + 369 def __new__(cls, clsname, bases, attrs): + 370 klass = super().__new__(cls, clsname, bases, attrs) + 371 + 372 klass._QUOTES = { + 373 f"{prefix}{s}": e + 374 for s, e in cls._delimeter_list_to_dict(klass.QUOTES).items() + 375 for prefix in (("",) if s[0].isalpha() else ("", "n", "N")) + 376 } + 377 klass._BIT_STRINGS = cls._delimeter_list_to_dict(klass.BIT_STRINGS) + 378 klass._HEX_STRINGS = cls._delimeter_list_to_dict(klass.HEX_STRINGS) + 379 klass._BYTE_STRINGS = cls._delimeter_list_to_dict(klass.BYTE_STRINGS) + 380 klass._IDENTIFIERS = cls._delimeter_list_to_dict(klass.IDENTIFIERS) + 381 klass._STRING_ESCAPES = set(klass.STRING_ESCAPES) + 382 klass._IDENTIFIER_ESCAPES = set(klass.IDENTIFIER_ESCAPES) + 383 klass._COMMENTS = dict( + 384 (comment, None) if isinstance(comment, str) else (comment[0], comment[1]) + 385 for comment in klass.COMMENTS + 386 ) + 387 + 388 klass.KEYWORD_TRIE = new_trie( + 389 key.upper() + 390 for key in { + 391 **klass.KEYWORDS, + 392 **{comment: TokenType.COMMENT for comment in klass._COMMENTS}, + 393 **{quote: TokenType.QUOTE for quote in klass._QUOTES}, + 394 **{bit_string: TokenType.BIT_STRING for bit_string in klass._BIT_STRINGS}, + 395 **{hex_string: TokenType.HEX_STRING for hex_string in klass._HEX_STRINGS}, + 396 **{byte_string: TokenType.BYTE_STRING for byte_string in klass._BYTE_STRINGS}, + 397 } + 398 if " " in key or any(single in key for single in klass.SINGLE_TOKENS) + 399 ) + 400 + 401 return klass + 402 + 403 @staticmethod + 404 def _delimeter_list_to_dict(list: t.List[str | t.Tuple[str, str]]) -> t.Dict[str, str]: + 405 return dict((item, item) if isinstance(item, str) else (item[0], item[1]) for item in list) + 406 + 407 + 408class Tokenizer(metaclass=_Tokenizer): + 409 SINGLE_TOKENS = { + 410 "(": TokenType.L_PAREN, + 411 ")": TokenType.R_PAREN, + 412 "[": TokenType.L_BRACKET, + 413 "]": TokenType.R_BRACKET, + 414 "{": TokenType.L_BRACE, + 415 "}": TokenType.R_BRACE, + 416 "&": TokenType.AMP, + 417 "^": TokenType.CARET, + 418 ":": TokenType.COLON, + 419 ",": TokenType.COMMA, + 420 ".": TokenType.DOT, + 421 "-": TokenType.DASH, + 422 "=": TokenType.EQ, + 423 ">": TokenType.GT, + 424 "<": TokenType.LT, + 425 "%": TokenType.MOD, + 426 "!": TokenType.NOT, + 427 "|": TokenType.PIPE, + 428 "+": TokenType.PLUS, + 429 ";": TokenType.SEMICOLON, + 430 "/": TokenType.SLASH, + 431 "\\": TokenType.BACKSLASH, + 432 "*": TokenType.STAR, + 433 "~": TokenType.TILDA, + 434 "?": TokenType.PLACEHOLDER, + 435 "@": TokenType.PARAMETER, + 436 # used for breaking a var like x'y' but nothing else + 437 # the token type doesn't matter + 438 "'": TokenType.QUOTE, + 439 "`": TokenType.IDENTIFIER, + 440 '"': TokenType.IDENTIFIER, + 441 "#": TokenType.HASH, + 442 } + 443 + 444 BIT_STRINGS: t.List[str | t.Tuple[str, str]] = [] + 445 BYTE_STRINGS: t.List[str | t.Tuple[str, str]] = [] + 446 HEX_STRINGS: t.List[str | t.Tuple[str, str]] = [] + 447 IDENTIFIERS: t.List[str | t.Tuple[str, str]] = ['"'] + 448 IDENTIFIER_ESCAPES = ['"'] + 449 QUOTES: t.List[t.Tuple[str, str] | str] = ["'"] + 450 STRING_ESCAPES = ["'"] + 451 VAR_SINGLE_TOKENS: t.Set[str] = set() 452 - 453 KEYWORDS = { - 454 **{f"{{%{postfix}": TokenType.BLOCK_START for postfix in ("", "+", "-")}, - 455 **{f"{prefix}%}}": TokenType.BLOCK_END for prefix in ("", "+", "-")}, - 456 "{{+": TokenType.BLOCK_START, - 457 "{{-": TokenType.BLOCK_START, - 458 "+}}": TokenType.BLOCK_END, - 459 "-}}": TokenType.BLOCK_END, - 460 "/*+": TokenType.HINT, - 461 "==": TokenType.EQ, - 462 "::": TokenType.DCOLON, - 463 "||": TokenType.DPIPE, - 464 ">=": TokenType.GTE, - 465 "<=": TokenType.LTE, - 466 "<>": TokenType.NEQ, - 467 "!=": TokenType.NEQ, - 468 "<=>": TokenType.NULLSAFE_EQ, - 469 "->": TokenType.ARROW, - 470 "->>": TokenType.DARROW, - 471 "=>": TokenType.FARROW, - 472 "#>": TokenType.HASH_ARROW, - 473 "#>>": TokenType.DHASH_ARROW, - 474 "<->": TokenType.LR_ARROW, - 475 "&&": TokenType.DAMP, - 476 "ALL": TokenType.ALL, - 477 "ALWAYS": TokenType.ALWAYS, - 478 "AND": TokenType.AND, - 479 "ANTI": TokenType.ANTI, - 480 "ANY": TokenType.ANY, - 481 "ASC": TokenType.ASC, - 482 "AS": TokenType.ALIAS, - 483 "AT TIME ZONE": TokenType.AT_TIME_ZONE, - 484 "AUTOINCREMENT": TokenType.AUTO_INCREMENT, - 485 "AUTO_INCREMENT": TokenType.AUTO_INCREMENT, - 486 "BEGIN": TokenType.BEGIN, - 487 "BETWEEN": TokenType.BETWEEN, - 488 "BOTH": TokenType.BOTH, - 489 "BUCKET": TokenType.BUCKET, - 490 "BY DEFAULT": TokenType.BY_DEFAULT, - 491 "CACHE": TokenType.CACHE, - 492 "UNCACHE": TokenType.UNCACHE, - 493 "CASE": TokenType.CASE, - 494 "CASCADE": TokenType.CASCADE, - 495 "CHARACTER SET": TokenType.CHARACTER_SET, - 496 "CLUSTER BY": TokenType.CLUSTER_BY, - 497 "COLLATE": TokenType.COLLATE, - 498 "COLUMN": TokenType.COLUMN, - 499 "COMMIT": TokenType.COMMIT, - 500 "COMPOUND": TokenType.COMPOUND, - 501 "CONSTRAINT": TokenType.CONSTRAINT, - 502 "CREATE": TokenType.CREATE, - 503 "CROSS": TokenType.CROSS, - 504 "CUBE": TokenType.CUBE, - 505 "CURRENT_DATE": TokenType.CURRENT_DATE, - 506 "CURRENT ROW": TokenType.CURRENT_ROW, - 507 "CURRENT_TIME": TokenType.CURRENT_TIME, - 508 "CURRENT_TIMESTAMP": TokenType.CURRENT_TIMESTAMP, - 509 "DATABASE": TokenType.DATABASE, - 510 "DEFAULT": TokenType.DEFAULT, - 511 "DELETE": TokenType.DELETE, - 512 "DESC": TokenType.DESC, - 513 "DESCRIBE": TokenType.DESCRIBE, - 514 "DISTINCT": TokenType.DISTINCT, - 515 "DISTINCT FROM": TokenType.DISTINCT_FROM, - 516 "DISTRIBUTE BY": TokenType.DISTRIBUTE_BY, - 517 "DIV": TokenType.DIV, - 518 "DROP": TokenType.DROP, - 519 "ELSE": TokenType.ELSE, - 520 "END": TokenType.END, - 521 "ESCAPE": TokenType.ESCAPE, - 522 "EXCEPT": TokenType.EXCEPT, - 523 "EXECUTE": TokenType.EXECUTE, - 524 "EXISTS": TokenType.EXISTS, - 525 "FALSE": TokenType.FALSE, - 526 "FETCH": TokenType.FETCH, - 527 "FILTER": TokenType.FILTER, - 528 "FIRST": TokenType.FIRST, - 529 "FULL": TokenType.FULL, - 530 "FUNCTION": TokenType.FUNCTION, - 531 "FOLLOWING": TokenType.FOLLOWING, - 532 "FOR": TokenType.FOR, - 533 "FOREIGN KEY": TokenType.FOREIGN_KEY, - 534 "FORMAT": TokenType.FORMAT, - 535 "FROM": TokenType.FROM, - 536 "GLOB": TokenType.GLOB, - 537 "GROUP BY": TokenType.GROUP_BY, - 538 "GROUPING SETS": TokenType.GROUPING_SETS, - 539 "HAVING": TokenType.HAVING, - 540 "IF": TokenType.IF, - 541 "ILIKE": TokenType.ILIKE, - 542 "IGNORE NULLS": TokenType.IGNORE_NULLS, - 543 "IN": TokenType.IN, - 544 "INDEX": TokenType.INDEX, - 545 "INET": TokenType.INET, - 546 "INNER": TokenType.INNER, - 547 "INSERT": TokenType.INSERT, - 548 "INTERVAL": TokenType.INTERVAL, - 549 "INTERSECT": TokenType.INTERSECT, - 550 "INTO": TokenType.INTO, - 551 "IS": TokenType.IS, - 552 "ISNULL": TokenType.ISNULL, - 553 "JOIN": TokenType.JOIN, - 554 "LATERAL": TokenType.LATERAL, - 555 "LAZY": TokenType.LAZY, - 556 "LEADING": TokenType.LEADING, - 557 "LEFT": TokenType.LEFT, - 558 "LIKE": TokenType.LIKE, - 559 "LIMIT": TokenType.LIMIT, - 560 "LOAD DATA": TokenType.LOAD_DATA, - 561 "LOCAL": TokenType.LOCAL, - 562 "MATERIALIZED": TokenType.MATERIALIZED, - 563 "MERGE": TokenType.MERGE, - 564 "NATURAL": TokenType.NATURAL, - 565 "NEXT": TokenType.NEXT, - 566 "NO ACTION": TokenType.NO_ACTION, - 567 "NOT": TokenType.NOT, - 568 "NOTNULL": TokenType.NOTNULL, - 569 "NULL": TokenType.NULL, - 570 "NULLS FIRST": TokenType.NULLS_FIRST, - 571 "NULLS LAST": TokenType.NULLS_LAST, - 572 "OBJECT": TokenType.OBJECT, - 573 "OFFSET": TokenType.OFFSET, - 574 "ON": TokenType.ON, - 575 "ONLY": TokenType.ONLY, - 576 "OPTIONS": TokenType.OPTIONS, - 577 "OR": TokenType.OR, - 578 "ORDER BY": TokenType.ORDER_BY, - 579 "ORDINALITY": TokenType.ORDINALITY, - 580 "OUTER": TokenType.OUTER, - 581 "OUT OF": TokenType.OUT_OF, - 582 "OVER": TokenType.OVER, - 583 "OVERLAPS": TokenType.OVERLAPS, - 584 "OVERWRITE": TokenType.OVERWRITE, - 585 "PARTITION": TokenType.PARTITION, - 586 "PARTITION BY": TokenType.PARTITION_BY, - 587 "PARTITIONED BY": TokenType.PARTITION_BY, - 588 "PARTITIONED_BY": TokenType.PARTITION_BY, - 589 "PERCENT": TokenType.PERCENT, - 590 "PIVOT": TokenType.PIVOT, - 591 "PRAGMA": TokenType.PRAGMA, - 592 "PRECEDING": TokenType.PRECEDING, - 593 "PRIMARY KEY": TokenType.PRIMARY_KEY, - 594 "PROCEDURE": TokenType.PROCEDURE, - 595 "QUALIFY": TokenType.QUALIFY, - 596 "RANGE": TokenType.RANGE, - 597 "RECURSIVE": TokenType.RECURSIVE, - 598 "REGEXP": TokenType.RLIKE, - 599 "REPLACE": TokenType.REPLACE, - 600 "RESPECT NULLS": TokenType.RESPECT_NULLS, - 601 "REFERENCES": TokenType.REFERENCES, - 602 "RIGHT": TokenType.RIGHT, - 603 "RLIKE": TokenType.RLIKE, - 604 "ROLLBACK": TokenType.ROLLBACK, - 605 "ROLLUP": TokenType.ROLLUP, - 606 "ROW": TokenType.ROW, - 607 "ROWS": TokenType.ROWS, - 608 "SCHEMA": TokenType.SCHEMA, - 609 "SEED": TokenType.SEED, - 610 "SELECT": TokenType.SELECT, - 611 "SEMI": TokenType.SEMI, - 612 "SET": TokenType.SET, - 613 "SHOW": TokenType.SHOW, - 614 "SIMILAR TO": TokenType.SIMILAR_TO, - 615 "SOME": TokenType.SOME, - 616 "SORTKEY": TokenType.SORTKEY, - 617 "SORT BY": TokenType.SORT_BY, - 618 "TABLE": TokenType.TABLE, - 619 "TABLESAMPLE": TokenType.TABLE_SAMPLE, - 620 "TEMP": TokenType.TEMPORARY, - 621 "TEMPORARY": TokenType.TEMPORARY, - 622 "THEN": TokenType.THEN, - 623 "TRUE": TokenType.TRUE, - 624 "TRAILING": TokenType.TRAILING, - 625 "UNBOUNDED": TokenType.UNBOUNDED, - 626 "UNION": TokenType.UNION, - 627 "UNLOGGED": TokenType.UNLOGGED, - 628 "UNNEST": TokenType.UNNEST, - 629 "UNPIVOT": TokenType.UNPIVOT, - 630 "UPDATE": TokenType.UPDATE, - 631 "USE": TokenType.USE, - 632 "USING": TokenType.USING, - 633 "VALUES": TokenType.VALUES, - 634 "VIEW": TokenType.VIEW, - 635 "VOLATILE": TokenType.VOLATILE, - 636 "WHEN": TokenType.WHEN, - 637 "WHERE": TokenType.WHERE, - 638 "WINDOW": TokenType.WINDOW, - 639 "WITH": TokenType.WITH, - 640 "WITH TIME ZONE": TokenType.WITH_TIME_ZONE, - 641 "WITH LOCAL TIME ZONE": TokenType.WITH_LOCAL_TIME_ZONE, - 642 "WITHIN GROUP": TokenType.WITHIN_GROUP, - 643 "WITHOUT TIME ZONE": TokenType.WITHOUT_TIME_ZONE, - 644 "APPLY": TokenType.APPLY, - 645 "ARRAY": TokenType.ARRAY, - 646 "BIT": TokenType.BIT, - 647 "BOOL": TokenType.BOOLEAN, - 648 "BOOLEAN": TokenType.BOOLEAN, - 649 "BYTE": TokenType.TINYINT, - 650 "TINYINT": TokenType.TINYINT, - 651 "SHORT": TokenType.SMALLINT, - 652 "SMALLINT": TokenType.SMALLINT, - 653 "INT2": TokenType.SMALLINT, - 654 "INTEGER": TokenType.INT, - 655 "INT": TokenType.INT, - 656 "INT4": TokenType.INT, - 657 "LONG": TokenType.BIGINT, - 658 "BIGINT": TokenType.BIGINT, - 659 "INT8": TokenType.BIGINT, - 660 "DEC": TokenType.DECIMAL, - 661 "DECIMAL": TokenType.DECIMAL, - 662 "MAP": TokenType.MAP, - 663 "NULLABLE": TokenType.NULLABLE, - 664 "NUMBER": TokenType.DECIMAL, - 665 "NUMERIC": TokenType.DECIMAL, - 666 "FIXED": TokenType.DECIMAL, - 667 "REAL": TokenType.FLOAT, - 668 "FLOAT": TokenType.FLOAT, - 669 "FLOAT4": TokenType.FLOAT, - 670 "FLOAT8": TokenType.DOUBLE, - 671 "DOUBLE": TokenType.DOUBLE, - 672 "DOUBLE PRECISION": TokenType.DOUBLE, - 673 "JSON": TokenType.JSON, - 674 "CHAR": TokenType.CHAR, - 675 "CHARACTER": TokenType.CHAR, - 676 "NCHAR": TokenType.NCHAR, - 677 "VARCHAR": TokenType.VARCHAR, - 678 "VARCHAR2": TokenType.VARCHAR, - 679 "NVARCHAR": TokenType.NVARCHAR, - 680 "NVARCHAR2": TokenType.NVARCHAR, - 681 "STR": TokenType.TEXT, - 682 "STRING": TokenType.TEXT, - 683 "TEXT": TokenType.TEXT, - 684 "CLOB": TokenType.TEXT, - 685 "LONGVARCHAR": TokenType.TEXT, - 686 "BINARY": TokenType.BINARY, - 687 "BLOB": TokenType.VARBINARY, - 688 "BYTEA": TokenType.VARBINARY, - 689 "VARBINARY": TokenType.VARBINARY, - 690 "TIME": TokenType.TIME, - 691 "TIMESTAMP": TokenType.TIMESTAMP, - 692 "TIMESTAMPTZ": TokenType.TIMESTAMPTZ, - 693 "TIMESTAMPLTZ": TokenType.TIMESTAMPLTZ, - 694 "DATE": TokenType.DATE, - 695 "DATETIME": TokenType.DATETIME, - 696 "UNIQUE": TokenType.UNIQUE, - 697 "STRUCT": TokenType.STRUCT, - 698 "VARIANT": TokenType.VARIANT, - 699 "ALTER": TokenType.ALTER, - 700 "ALTER AGGREGATE": TokenType.COMMAND, - 701 "ALTER DEFAULT": TokenType.COMMAND, - 702 "ALTER DOMAIN": TokenType.COMMAND, - 703 "ALTER ROLE": TokenType.COMMAND, - 704 "ALTER RULE": TokenType.COMMAND, - 705 "ALTER SEQUENCE": TokenType.COMMAND, - 706 "ALTER TYPE": TokenType.COMMAND, - 707 "ALTER USER": TokenType.COMMAND, - 708 "ALTER VIEW": TokenType.COMMAND, - 709 "ANALYZE": TokenType.COMMAND, - 710 "CALL": TokenType.COMMAND, - 711 "COMMENT": TokenType.COMMENT, - 712 "COPY": TokenType.COMMAND, - 713 "EXPLAIN": TokenType.COMMAND, - 714 "GRANT": TokenType.COMMAND, - 715 "OPTIMIZE": TokenType.COMMAND, - 716 "PREPARE": TokenType.COMMAND, - 717 "TRUNCATE": TokenType.COMMAND, - 718 "VACUUM": TokenType.COMMAND, - 719 } - 720 - 721 WHITE_SPACE: t.Dict[t.Optional[str], TokenType] = { - 722 " ": TokenType.SPACE, - 723 "\t": TokenType.SPACE, - 724 "\n": TokenType.BREAK, - 725 "\r": TokenType.BREAK, - 726 "\r\n": TokenType.BREAK, - 727 } - 728 - 729 COMMANDS = { - 730 TokenType.COMMAND, - 731 TokenType.EXECUTE, - 732 TokenType.FETCH, - 733 TokenType.SHOW, - 734 } - 735 - 736 COMMAND_PREFIX_TOKENS = {TokenType.SEMICOLON, TokenType.BEGIN} - 737 - 738 # handle numeric literals like in hive (3L = BIGINT) - 739 NUMERIC_LITERALS: t.Dict[str, str] = {} - 740 ENCODE: t.Optional[str] = None + 453 _COMMENTS: t.Dict[str, str] = {} + 454 _BIT_STRINGS: t.Dict[str, str] = {} + 455 _BYTE_STRINGS: t.Dict[str, str] = {} + 456 _HEX_STRINGS: t.Dict[str, str] = {} + 457 _IDENTIFIERS: t.Dict[str, str] = {} + 458 _IDENTIFIER_ESCAPES: t.Set[str] = set() + 459 _QUOTES: t.Dict[str, str] = {} + 460 _STRING_ESCAPES: t.Set[str] = set() + 461 + 462 KEYWORDS: t.Dict[t.Optional[str], TokenType] = { + 463 **{f"{{%{postfix}": TokenType.BLOCK_START for postfix in ("", "+", "-")}, + 464 **{f"{prefix}%}}": TokenType.BLOCK_END for prefix in ("", "+", "-")}, + 465 "{{+": TokenType.BLOCK_START, + 466 "{{-": TokenType.BLOCK_START, + 467 "+}}": TokenType.BLOCK_END, + 468 "-}}": TokenType.BLOCK_END, + 469 "/*+": TokenType.HINT, + 470 "==": TokenType.EQ, + 471 "::": TokenType.DCOLON, + 472 "||": TokenType.DPIPE, + 473 ">=": TokenType.GTE, + 474 "<=": TokenType.LTE, + 475 "<>": TokenType.NEQ, + 476 "!=": TokenType.NEQ, + 477 "<=>": TokenType.NULLSAFE_EQ, + 478 "->": TokenType.ARROW, + 479 "->>": TokenType.DARROW, + 480 "=>": TokenType.FARROW, + 481 "#>": TokenType.HASH_ARROW, + 482 "#>>": TokenType.DHASH_ARROW, + 483 "<->": TokenType.LR_ARROW, + 484 "&&": TokenType.DAMP, + 485 "ALL": TokenType.ALL, + 486 "ALWAYS": TokenType.ALWAYS, + 487 "AND": TokenType.AND, + 488 "ANTI": TokenType.ANTI, + 489 "ANY": TokenType.ANY, + 490 "ASC": TokenType.ASC, + 491 "AS": TokenType.ALIAS, + 492 "AT TIME ZONE": TokenType.AT_TIME_ZONE, + 493 "AUTOINCREMENT": TokenType.AUTO_INCREMENT, + 494 "AUTO_INCREMENT": TokenType.AUTO_INCREMENT, + 495 "BEGIN": TokenType.BEGIN, + 496 "BETWEEN": TokenType.BETWEEN, + 497 "BOTH": TokenType.BOTH, + 498 "BUCKET": TokenType.BUCKET, + 499 "BY DEFAULT": TokenType.BY_DEFAULT, + 500 "CACHE": TokenType.CACHE, + 501 "UNCACHE": TokenType.UNCACHE, + 502 "CASE": TokenType.CASE, + 503 "CASCADE": TokenType.CASCADE, + 504 "CHARACTER SET": TokenType.CHARACTER_SET, + 505 "CLUSTER BY": TokenType.CLUSTER_BY, + 506 "COLLATE": TokenType.COLLATE, + 507 "COLUMN": TokenType.COLUMN, + 508 "COMMIT": TokenType.COMMIT, + 509 "COMPOUND": TokenType.COMPOUND, + 510 "CONSTRAINT": TokenType.CONSTRAINT, + 511 "CREATE": TokenType.CREATE, + 512 "CROSS": TokenType.CROSS, + 513 "CUBE": TokenType.CUBE, + 514 "CURRENT_DATE": TokenType.CURRENT_DATE, + 515 "CURRENT ROW": TokenType.CURRENT_ROW, + 516 "CURRENT_TIME": TokenType.CURRENT_TIME, + 517 "CURRENT_TIMESTAMP": TokenType.CURRENT_TIMESTAMP, + 518 "CURRENT_USER": TokenType.CURRENT_USER, + 519 "DATABASE": TokenType.DATABASE, + 520 "DEFAULT": TokenType.DEFAULT, + 521 "DELETE": TokenType.DELETE, + 522 "DESC": TokenType.DESC, + 523 "DESCRIBE": TokenType.DESCRIBE, + 524 "DISTINCT": TokenType.DISTINCT, + 525 "DISTINCT FROM": TokenType.DISTINCT_FROM, + 526 "DISTRIBUTE BY": TokenType.DISTRIBUTE_BY, + 527 "DIV": TokenType.DIV, + 528 "DROP": TokenType.DROP, + 529 "ELSE": TokenType.ELSE, + 530 "END": TokenType.END, + 531 "ESCAPE": TokenType.ESCAPE, + 532 "EXCEPT": TokenType.EXCEPT, + 533 "EXECUTE": TokenType.EXECUTE, + 534 "EXISTS": TokenType.EXISTS, + 535 "FALSE": TokenType.FALSE, + 536 "FETCH": TokenType.FETCH, + 537 "FILTER": TokenType.FILTER, + 538 "FIRST": TokenType.FIRST, + 539 "FULL": TokenType.FULL, + 540 "FUNCTION": TokenType.FUNCTION, + 541 "FOLLOWING": TokenType.FOLLOWING, + 542 "FOR": TokenType.FOR, + 543 "FOREIGN KEY": TokenType.FOREIGN_KEY, + 544 "FORMAT": TokenType.FORMAT, + 545 "FROM": TokenType.FROM, + 546 "GLOB": TokenType.GLOB, + 547 "GROUP BY": TokenType.GROUP_BY, + 548 "GROUPING SETS": TokenType.GROUPING_SETS, + 549 "HAVING": TokenType.HAVING, + 550 "IF": TokenType.IF, + 551 "ILIKE": TokenType.ILIKE, + 552 "IGNORE NULLS": TokenType.IGNORE_NULLS, + 553 "IN": TokenType.IN, + 554 "INDEX": TokenType.INDEX, + 555 "INET": TokenType.INET, + 556 "INNER": TokenType.INNER, + 557 "INSERT": TokenType.INSERT, + 558 "INTERVAL": TokenType.INTERVAL, + 559 "INTERSECT": TokenType.INTERSECT, + 560 "INTO": TokenType.INTO, + 561 "IS": TokenType.IS, + 562 "ISNULL": TokenType.ISNULL, + 563 "JOIN": TokenType.JOIN, + 564 "LATERAL": TokenType.LATERAL, + 565 "LAZY": TokenType.LAZY, + 566 "LEADING": TokenType.LEADING, + 567 "LEFT": TokenType.LEFT, + 568 "LIKE": TokenType.LIKE, + 569 "LIMIT": TokenType.LIMIT, + 570 "LOAD DATA": TokenType.LOAD_DATA, + 571 "LOCAL": TokenType.LOCAL, + 572 "MATERIALIZED": TokenType.MATERIALIZED, + 573 "MERGE": TokenType.MERGE, + 574 "NATURAL": TokenType.NATURAL, + 575 "NEXT": TokenType.NEXT, + 576 "NO ACTION": TokenType.NO_ACTION, + 577 "NOT": TokenType.NOT, + 578 "NOTNULL": TokenType.NOTNULL, + 579 "NULL": TokenType.NULL, + 580 "NULLS FIRST": TokenType.NULLS_FIRST, + 581 "NULLS LAST": TokenType.NULLS_LAST, + 582 "OBJECT": TokenType.OBJECT, + 583 "OFFSET": TokenType.OFFSET, + 584 "ON": TokenType.ON, + 585 "ONLY": TokenType.ONLY, + 586 "OPTIONS": TokenType.OPTIONS, + 587 "OR": TokenType.OR, + 588 "ORDER BY": TokenType.ORDER_BY, + 589 "ORDINALITY": TokenType.ORDINALITY, + 590 "OUTER": TokenType.OUTER, + 591 "OUT OF": TokenType.OUT_OF, + 592 "OVER": TokenType.OVER, + 593 "OVERLAPS": TokenType.OVERLAPS, + 594 "OVERWRITE": TokenType.OVERWRITE, + 595 "PARTITION": TokenType.PARTITION, + 596 "PARTITION BY": TokenType.PARTITION_BY, + 597 "PARTITIONED BY": TokenType.PARTITION_BY, + 598 "PARTITIONED_BY": TokenType.PARTITION_BY, + 599 "PERCENT": TokenType.PERCENT, + 600 "PIVOT": TokenType.PIVOT, + 601 "PRAGMA": TokenType.PRAGMA, + 602 "PRECEDING": TokenType.PRECEDING, + 603 "PRIMARY KEY": TokenType.PRIMARY_KEY, + 604 "PROCEDURE": TokenType.PROCEDURE, + 605 "QUALIFY": TokenType.QUALIFY, + 606 "RANGE": TokenType.RANGE, + 607 "RECURSIVE": TokenType.RECURSIVE, + 608 "REGEXP": TokenType.RLIKE, + 609 "REPLACE": TokenType.REPLACE, + 610 "RESPECT NULLS": TokenType.RESPECT_NULLS, + 611 "REFERENCES": TokenType.REFERENCES, + 612 "RIGHT": TokenType.RIGHT, + 613 "RLIKE": TokenType.RLIKE, + 614 "ROLLBACK": TokenType.ROLLBACK, + 615 "ROLLUP": TokenType.ROLLUP, + 616 "ROW": TokenType.ROW, + 617 "ROWS": TokenType.ROWS, + 618 "SCHEMA": TokenType.SCHEMA, + 619 "SEED": TokenType.SEED, + 620 "SELECT": TokenType.SELECT, + 621 "SEMI": TokenType.SEMI, + 622 "SET": TokenType.SET, + 623 "SHOW": TokenType.SHOW, + 624 "SIMILAR TO": TokenType.SIMILAR_TO, + 625 "SOME": TokenType.SOME, + 626 "SORTKEY": TokenType.SORTKEY, + 627 "SORT BY": TokenType.SORT_BY, + 628 "TABLE": TokenType.TABLE, + 629 "TABLESAMPLE": TokenType.TABLE_SAMPLE, + 630 "TEMP": TokenType.TEMPORARY, + 631 "TEMPORARY": TokenType.TEMPORARY, + 632 "THEN": TokenType.THEN, + 633 "TRUE": TokenType.TRUE, + 634 "TRAILING": TokenType.TRAILING, + 635 "UNBOUNDED": TokenType.UNBOUNDED, + 636 "UNION": TokenType.UNION, + 637 "UNLOGGED": TokenType.UNLOGGED, + 638 "UNNEST": TokenType.UNNEST, + 639 "UNPIVOT": TokenType.UNPIVOT, + 640 "UPDATE": TokenType.UPDATE, + 641 "USE": TokenType.USE, + 642 "USING": TokenType.USING, + 643 "UUID": TokenType.UUID, + 644 "VALUES": TokenType.VALUES, + 645 "VIEW": TokenType.VIEW, + 646 "VOLATILE": TokenType.VOLATILE, + 647 "WHEN": TokenType.WHEN, + 648 "WHERE": TokenType.WHERE, + 649 "WINDOW": TokenType.WINDOW, + 650 "WITH": TokenType.WITH, + 651 "WITH TIME ZONE": TokenType.WITH_TIME_ZONE, + 652 "WITH LOCAL TIME ZONE": TokenType.WITH_LOCAL_TIME_ZONE, + 653 "WITHIN GROUP": TokenType.WITHIN_GROUP, + 654 "WITHOUT TIME ZONE": TokenType.WITHOUT_TIME_ZONE, + 655 "APPLY": TokenType.APPLY, + 656 "ARRAY": TokenType.ARRAY, + 657 "BIT": TokenType.BIT, + 658 "BOOL": TokenType.BOOLEAN, + 659 "BOOLEAN": TokenType.BOOLEAN, + 660 "BYTE": TokenType.TINYINT, + 661 "TINYINT": TokenType.TINYINT, + 662 "SHORT": TokenType.SMALLINT, + 663 "SMALLINT": TokenType.SMALLINT, + 664 "INT2": TokenType.SMALLINT, + 665 "INTEGER": TokenType.INT, + 666 "INT": TokenType.INT, + 667 "INT4": TokenType.INT, + 668 "LONG": TokenType.BIGINT, + 669 "BIGINT": TokenType.BIGINT, + 670 "INT8": TokenType.BIGINT, + 671 "DEC": TokenType.DECIMAL, + 672 "DECIMAL": TokenType.DECIMAL, + 673 "BIGDECIMAL": TokenType.BIGDECIMAL, + 674 "BIGNUMERIC": TokenType.BIGDECIMAL, + 675 "MAP": TokenType.MAP, + 676 "NULLABLE": TokenType.NULLABLE, + 677 "NUMBER": TokenType.DECIMAL, + 678 "NUMERIC": TokenType.DECIMAL, + 679 "FIXED": TokenType.DECIMAL, + 680 "REAL": TokenType.FLOAT, + 681 "FLOAT": TokenType.FLOAT, + 682 "FLOAT4": TokenType.FLOAT, + 683 "FLOAT8": TokenType.DOUBLE, + 684 "DOUBLE": TokenType.DOUBLE, + 685 "DOUBLE PRECISION": TokenType.DOUBLE, + 686 "JSON": TokenType.JSON, + 687 "CHAR": TokenType.CHAR, + 688 "CHARACTER": TokenType.CHAR, + 689 "NCHAR": TokenType.NCHAR, + 690 "VARCHAR": TokenType.VARCHAR, + 691 "VARCHAR2": TokenType.VARCHAR, + 692 "NVARCHAR": TokenType.NVARCHAR, + 693 "NVARCHAR2": TokenType.NVARCHAR, + 694 "STR": TokenType.TEXT, + 695 "STRING": TokenType.TEXT, + 696 "TEXT": TokenType.TEXT, + 697 "CLOB": TokenType.TEXT, + 698 "LONGVARCHAR": TokenType.TEXT, + 699 "BINARY": TokenType.BINARY, + 700 "BLOB": TokenType.VARBINARY, + 701 "BYTEA": TokenType.VARBINARY, + 702 "VARBINARY": TokenType.VARBINARY, + 703 "TIME": TokenType.TIME, + 704 "TIMESTAMP": TokenType.TIMESTAMP, + 705 "TIMESTAMPTZ": TokenType.TIMESTAMPTZ, + 706 "TIMESTAMPLTZ": TokenType.TIMESTAMPLTZ, + 707 "DATE": TokenType.DATE, + 708 "DATETIME": TokenType.DATETIME, + 709 "UNIQUE": TokenType.UNIQUE, + 710 "STRUCT": TokenType.STRUCT, + 711 "VARIANT": TokenType.VARIANT, + 712 "ALTER": TokenType.ALTER, + 713 "ALTER AGGREGATE": TokenType.COMMAND, + 714 "ALTER DEFAULT": TokenType.COMMAND, + 715 "ALTER DOMAIN": TokenType.COMMAND, + 716 "ALTER ROLE": TokenType.COMMAND, + 717 "ALTER RULE": TokenType.COMMAND, + 718 "ALTER SEQUENCE": TokenType.COMMAND, + 719 "ALTER TYPE": TokenType.COMMAND, + 720 "ALTER USER": TokenType.COMMAND, + 721 "ALTER VIEW": TokenType.COMMAND, + 722 "ANALYZE": TokenType.COMMAND, + 723 "CALL": TokenType.COMMAND, + 724 "COMMENT": TokenType.COMMENT, + 725 "COPY": TokenType.COMMAND, + 726 "EXPLAIN": TokenType.COMMAND, + 727 "GRANT": TokenType.COMMAND, + 728 "OPTIMIZE": TokenType.COMMAND, + 729 "PREPARE": TokenType.COMMAND, + 730 "TRUNCATE": TokenType.COMMAND, + 731 "VACUUM": TokenType.COMMAND, + 732 } + 733 + 734 WHITE_SPACE: t.Dict[t.Optional[str], TokenType] = { + 735 " ": TokenType.SPACE, + 736 "\t": TokenType.SPACE, + 737 "\n": TokenType.BREAK, + 738 "\r": TokenType.BREAK, + 739 "\r\n": TokenType.BREAK, + 740 } 741 - 742 COMMENTS = ["--", ("/*", "*/"), ("{#", "#}")] - 743 KEYWORD_TRIE = None # autofilled - 744 - 745 IDENTIFIER_CAN_START_WITH_DIGIT = False - 746 - 747 __slots__ = ( - 748 "sql", - 749 "size", - 750 "tokens", - 751 "_start", - 752 "_current", - 753 "_line", - 754 "_col", - 755 "_comments", - 756 "_char", - 757 "_end", - 758 "_peek", - 759 "_prev_token_line", - 760 "_prev_token_comments", - 761 "_prev_token_type", - 762 ) - 763 - 764 def __init__(self) -> None: - 765 self.reset() - 766 - 767 def reset(self) -> None: - 768 self.sql = "" - 769 self.size = 0 - 770 self.tokens: t.List[Token] = [] - 771 self._start = 0 - 772 self._current = 0 - 773 self._line = 1 - 774 self._col = 1 - 775 self._comments: t.List[str] = [] + 742 COMMANDS = { + 743 TokenType.COMMAND, + 744 TokenType.EXECUTE, + 745 TokenType.FETCH, + 746 TokenType.SHOW, + 747 } + 748 + 749 COMMAND_PREFIX_TOKENS = {TokenType.SEMICOLON, TokenType.BEGIN} + 750 + 751 # handle numeric literals like in hive (3L = BIGINT) + 752 NUMERIC_LITERALS: t.Dict[str, str] = {} + 753 ENCODE: t.Optional[str] = None + 754 + 755 COMMENTS = ["--", ("/*", "*/"), ("{#", "#}")] + 756 KEYWORD_TRIE: t.Dict = {} # autofilled + 757 + 758 IDENTIFIER_CAN_START_WITH_DIGIT = False + 759 + 760 __slots__ = ( + 761 "sql", + 762 "size", + 763 "tokens", + 764 "_start", + 765 "_current", + 766 "_line", + 767 "_col", + 768 "_comments", + 769 "_char", + 770 "_end", + 771 "_peek", + 772 "_prev_token_line", + 773 "_prev_token_comments", + 774 "_prev_token_type", + 775 ) 776 - 777 self._char = None - 778 self._end = None - 779 self._peek = None - 780 self._prev_token_line = -1 - 781 self._prev_token_comments: t.List[str] = [] - 782 self._prev_token_type = None - 783 - 784 def tokenize(self, sql: str) -> t.List[Token]: - 785 """Returns a list of tokens corresponding to the SQL string `sql`.""" - 786 self.reset() - 787 self.sql = sql - 788 self.size = len(sql) - 789 self._scan() - 790 return self.tokens - 791 - 792 def _scan(self, until: t.Optional[t.Callable] = None) -> None: - 793 while self.size and not self._end: - 794 self._start = self._current - 795 self._advance() + 777 def __init__(self) -> None: + 778 self.reset() + 779 + 780 def reset(self) -> None: + 781 self.sql = "" + 782 self.size = 0 + 783 self.tokens: t.List[Token] = [] + 784 self._start = 0 + 785 self._current = 0 + 786 self._line = 1 + 787 self._col = 1 + 788 self._comments: t.List[str] = [] + 789 + 790 self._char = "" + 791 self._end = False + 792 self._peek = "" + 793 self._prev_token_line = -1 + 794 self._prev_token_comments: t.List[str] = [] + 795 self._prev_token_type: t.Optional[TokenType] = None 796 - 797 if self._char is None: - 798 break - 799 - 800 if self._char not in self.WHITE_SPACE: - 801 if self._char.isdigit(): - 802 self._scan_number() - 803 elif self._char in self._IDENTIFIERS: - 804 self._scan_identifier(self._IDENTIFIERS[self._char]) - 805 else: - 806 self._scan_keywords() - 807 - 808 if until and until(): - 809 break - 810 - 811 def _chars(self, size: int) -> str: - 812 if size == 1: - 813 return self._char # type: ignore - 814 start = self._current - 1 - 815 end = start + size - 816 if end <= self.size: - 817 return self.sql[start:end] - 818 return "" - 819 - 820 def _advance(self, i: int = 1) -> None: - 821 if self.WHITE_SPACE.get(self._char) is TokenType.BREAK: - 822 self._set_new_line() - 823 - 824 self._col += i - 825 self._current += i - 826 self._end = self._current >= self.size # type: ignore - 827 self._char = self.sql[self._current - 1] # type: ignore - 828 self._peek = self.sql[self._current] if self._current < self.size else "" # type: ignore + 797 def tokenize(self, sql: str) -> t.List[Token]: + 798 """Returns a list of tokens corresponding to the SQL string `sql`.""" + 799 self.reset() + 800 self.sql = sql + 801 self.size = len(sql) + 802 try: + 803 self._scan() + 804 except Exception as e: + 805 start = self._current - 50 + 806 end = self._current + 50 + 807 start = start if start > 0 else 0 + 808 end = end if end < self.size else self.size - 1 + 809 context = self.sql[start:end] + 810 raise ValueError(f"Error tokenizing '{context}'") from e + 811 + 812 return self.tokens + 813 + 814 def _scan(self, until: t.Optional[t.Callable] = None) -> None: + 815 while self.size and not self._end: + 816 self._start = self._current + 817 self._advance() + 818 + 819 if self._char is None: + 820 break + 821 + 822 if self._char not in self.WHITE_SPACE: + 823 if self._char.isdigit(): + 824 self._scan_number() + 825 elif self._char in self._IDENTIFIERS: + 826 self._scan_identifier(self._IDENTIFIERS[self._char]) + 827 else: + 828 self._scan_keywords() 829 - 830 def _set_new_line(self) -> None: - 831 self._col = 1 - 832 self._line += 1 - 833 - 834 @property - 835 def _text(self) -> str: - 836 return self.sql[self._start : self._current] - 837 - 838 def _add(self, token_type: TokenType, text: t.Optional[str] = None) -> None: - 839 self._prev_token_line = self._line - 840 self._prev_token_comments = self._comments - 841 self._prev_token_type = token_type # type: ignore - 842 self.tokens.append( - 843 Token( - 844 token_type, - 845 self._text if text is None else text, - 846 self._line, - 847 self._col, - 848 self._comments, - 849 ) - 850 ) - 851 self._comments = [] - 852 - 853 # If we have either a semicolon or a begin token before the command's token, we'll parse - 854 # whatever follows the command's token as a string - 855 if ( - 856 token_type in self.COMMANDS - 857 and self._peek != ";" - 858 and (len(self.tokens) == 1 or self.tokens[-2].token_type in self.COMMAND_PREFIX_TOKENS) - 859 ): - 860 start = self._current - 861 tokens = len(self.tokens) - 862 self._scan(lambda: self._peek == ";") - 863 self.tokens = self.tokens[:tokens] - 864 text = self.sql[start : self._current].strip() - 865 if text: - 866 self._add(TokenType.STRING, text) - 867 - 868 def _scan_keywords(self) -> None: - 869 size = 0 - 870 word = None - 871 chars = self._text - 872 char = chars - 873 prev_space = False - 874 skip = False - 875 trie = self.KEYWORD_TRIE - 876 single_token = char in self.SINGLE_TOKENS - 877 - 878 while chars: - 879 if skip: - 880 result = 1 - 881 else: - 882 result, trie = in_trie(trie, char.upper()) # type: ignore - 883 - 884 if result == 0: - 885 break - 886 if result == 2: - 887 word = chars - 888 size += 1 - 889 end = self._current - 1 + size - 890 - 891 if end < self.size: - 892 char = self.sql[end] - 893 single_token = single_token or char in self.SINGLE_TOKENS - 894 is_space = char in self.WHITE_SPACE - 895 - 896 if not is_space or not prev_space: - 897 if is_space: - 898 char = " " - 899 chars += char - 900 prev_space = is_space - 901 skip = False - 902 else: - 903 skip = True - 904 else: - 905 chars = " " - 906 - 907 word = None if not single_token and chars[-1] not in self.WHITE_SPACE else word - 908 - 909 if not word: - 910 if self._char in self.SINGLE_TOKENS: - 911 self._add(self.SINGLE_TOKENS[self._char], text=self._char) # type: ignore - 912 return - 913 self._scan_var() - 914 return - 915 - 916 if self._scan_string(word): - 917 return - 918 if self._scan_formatted_string(word): - 919 return - 920 if self._scan_comment(word): - 921 return - 922 - 923 self._advance(size - 1) - 924 word = word.upper() - 925 self._add(self.KEYWORDS[word], text=word) - 926 - 927 def _scan_comment(self, comment_start: str) -> bool: - 928 if comment_start not in self._COMMENTS: # type: ignore - 929 return False + 830 if until and until(): + 831 break + 832 + 833 if self.tokens: + 834 self.tokens[-1].comments.extend(self._comments) + 835 + 836 def _chars(self, size: int) -> str: + 837 if size == 1: + 838 return self._char + 839 start = self._current - 1 + 840 end = start + size + 841 if end <= self.size: + 842 return self.sql[start:end] + 843 return "" + 844 + 845 def _advance(self, i: int = 1) -> None: + 846 if self.WHITE_SPACE.get(self._char) is TokenType.BREAK: + 847 self._col = 1 + 848 self._line += 1 + 849 else: + 850 self._col += i + 851 + 852 self._current += i + 853 self._end = self._current >= self.size + 854 self._char = self.sql[self._current - 1] + 855 self._peek = "" if self._end else self.sql[self._current] + 856 + 857 @property + 858 def _text(self) -> str: + 859 return self.sql[self._start : self._current] + 860 + 861 def _add(self, token_type: TokenType, text: t.Optional[str] = None) -> None: + 862 self._prev_token_line = self._line + 863 self._prev_token_comments = self._comments + 864 self._prev_token_type = token_type + 865 self.tokens.append( + 866 Token( + 867 token_type, + 868 self._text if text is None else text, + 869 self._line, + 870 self._col, + 871 self._current, + 872 self._comments, + 873 ) + 874 ) + 875 self._comments = [] + 876 + 877 # If we have either a semicolon or a begin token before the command's token, we'll parse + 878 # whatever follows the command's token as a string + 879 if ( + 880 token_type in self.COMMANDS + 881 and self._peek != ";" + 882 and (len(self.tokens) == 1 or self.tokens[-2].token_type in self.COMMAND_PREFIX_TOKENS) + 883 ): + 884 start = self._current + 885 tokens = len(self.tokens) + 886 self._scan(lambda: self._peek == ";") + 887 self.tokens = self.tokens[:tokens] + 888 text = self.sql[start : self._current].strip() + 889 if text: + 890 self._add(TokenType.STRING, text) + 891 + 892 def _scan_keywords(self) -> None: + 893 size = 0 + 894 word = None + 895 chars = self._text + 896 char = chars + 897 prev_space = False + 898 skip = False + 899 trie = self.KEYWORD_TRIE + 900 single_token = char in self.SINGLE_TOKENS + 901 + 902 while chars: + 903 if skip: + 904 result = 1 + 905 else: + 906 result, trie = in_trie(trie, char.upper()) + 907 + 908 if result == 0: + 909 break + 910 if result == 2: + 911 word = chars + 912 size += 1 + 913 end = self._current - 1 + size + 914 + 915 if end < self.size: + 916 char = self.sql[end] + 917 single_token = single_token or char in self.SINGLE_TOKENS + 918 is_space = char in self.WHITE_SPACE + 919 + 920 if not is_space or not prev_space: + 921 if is_space: + 922 char = " " + 923 chars += char + 924 prev_space = is_space + 925 skip = False + 926 else: + 927 skip = True + 928 else: + 929 chars = " " 930 - 931 comment_start_line = self._line - 932 comment_start_size = len(comment_start) - 933 comment_end = self._COMMENTS[comment_start] # type: ignore - 934 - 935 if comment_end: - 936 comment_end_size = len(comment_end) - 937 - 938 while not self._end and self._chars(comment_end_size) != comment_end: - 939 self._advance() - 940 - 941 self._comments.append(self._text[comment_start_size : -comment_end_size + 1]) # type: ignore - 942 self._advance(comment_end_size - 1) - 943 else: - 944 while not self._end and not self.WHITE_SPACE.get(self._peek) is TokenType.BREAK: - 945 self._advance() - 946 self._comments.append(self._text[comment_start_size:]) # type: ignore - 947 - 948 # Leading comment is attached to the succeeding token, whilst trailing comment to the preceding. - 949 # Multiple consecutive comments are preserved by appending them to the current comments list. - 950 if comment_start_line == self._prev_token_line or self._end: - 951 self.tokens[-1].comments.extend(self._comments) - 952 self._comments = [] - 953 self._prev_token_line = self._line + 931 word = None if not single_token and chars[-1] not in self.WHITE_SPACE else word + 932 + 933 if not word: + 934 if self._char in self.SINGLE_TOKENS: + 935 self._add(self.SINGLE_TOKENS[self._char], text=self._char) + 936 return + 937 self._scan_var() + 938 return + 939 + 940 if self._scan_string(word): + 941 return + 942 if self._scan_formatted_string(word): + 943 return + 944 if self._scan_comment(word): + 945 return + 946 + 947 self._advance(size - 1) + 948 word = word.upper() + 949 self._add(self.KEYWORDS[word], text=word) + 950 + 951 def _scan_comment(self, comment_start: str) -> bool: + 952 if comment_start not in self._COMMENTS: + 953 return False 954 - 955 return True - 956 - 957 def _scan_number(self) -> None: - 958 if self._char == "0": - 959 peek = self._peek.upper() # type: ignore - 960 if peek == "B": - 961 return self._scan_bits() - 962 elif peek == "X": - 963 return self._scan_hex() - 964 - 965 decimal = False - 966 scientific = 0 - 967 - 968 while True: - 969 if self._peek.isdigit(): # type: ignore - 970 self._advance() - 971 elif self._peek == "." and not decimal: - 972 decimal = True - 973 self._advance() - 974 elif self._peek in ("-", "+") and scientific == 1: - 975 scientific += 1 - 976 self._advance() - 977 elif self._peek.upper() == "E" and not scientific: # type: ignore - 978 scientific += 1 - 979 self._advance() - 980 elif self._peek.isidentifier(): # type: ignore - 981 number_text = self._text - 982 literal = [] - 983 - 984 while self._peek.strip() and self._peek not in self.SINGLE_TOKENS: # type: ignore - 985 literal.append(self._peek.upper()) # type: ignore - 986 self._advance() - 987 - 988 literal = "".join(literal) # type: ignore - 989 token_type = self.KEYWORDS.get(self.NUMERIC_LITERALS.get(literal)) # type: ignore + 955 comment_start_line = self._line + 956 comment_start_size = len(comment_start) + 957 comment_end = self._COMMENTS[comment_start] + 958 + 959 if comment_end: + 960 # Skip the comment's start delimiter + 961 self._advance(comment_start_size) + 962 + 963 comment_end_size = len(comment_end) + 964 while not self._end and self._chars(comment_end_size) != comment_end: + 965 self._advance() + 966 + 967 self._comments.append(self._text[comment_start_size : -comment_end_size + 1]) + 968 self._advance(comment_end_size - 1) + 969 else: + 970 while not self._end and not self.WHITE_SPACE.get(self._peek) is TokenType.BREAK: + 971 self._advance() + 972 self._comments.append(self._text[comment_start_size:]) + 973 + 974 # Leading comment is attached to the succeeding token, whilst trailing comment to the preceding. + 975 # Multiple consecutive comments are preserved by appending them to the current comments list. + 976 if comment_start_line == self._prev_token_line: + 977 self.tokens[-1].comments.extend(self._comments) + 978 self._comments = [] + 979 self._prev_token_line = self._line + 980 + 981 return True + 982 + 983 def _scan_number(self) -> None: + 984 if self._char == "0": + 985 peek = self._peek.upper() + 986 if peek == "B": + 987 return self._scan_bits() + 988 elif peek == "X": + 989 return self._scan_hex() 990 - 991 if token_type: - 992 self._add(TokenType.NUMBER, number_text) - 993 self._add(TokenType.DCOLON, "::") - 994 return self._add(token_type, literal) # type: ignore - 995 elif self.IDENTIFIER_CAN_START_WITH_DIGIT: - 996 return self._add(TokenType.VAR) - 997 - 998 self._add(TokenType.NUMBER, number_text) - 999 return self._advance(-len(literal)) -1000 else: -1001 return self._add(TokenType.NUMBER) -1002 -1003 def _scan_bits(self) -> None: -1004 self._advance() -1005 value = self._extract_value() -1006 try: -1007 self._add(TokenType.BIT_STRING, f"{int(value, 2)}") -1008 except ValueError: -1009 self._add(TokenType.IDENTIFIER) -1010 -1011 def _scan_hex(self) -> None: -1012 self._advance() -1013 value = self._extract_value() -1014 try: -1015 self._add(TokenType.HEX_STRING, f"{int(value, 16)}") -1016 except ValueError: -1017 self._add(TokenType.IDENTIFIER) -1018 -1019 def _extract_value(self) -> str: -1020 while True: -1021 char = self._peek.strip() # type: ignore -1022 if char and char not in self.SINGLE_TOKENS: -1023 self._advance() -1024 else: -1025 break -1026 -1027 return self._text -1028 -1029 def _scan_string(self, quote: str) -> bool: -1030 quote_end = self._QUOTES.get(quote) # type: ignore -1031 if quote_end is None: -1032 return False -1033 -1034 self._advance(len(quote)) -1035 text = self._extract_string(quote_end) -1036 text = text.encode(self.ENCODE).decode(self.ENCODE) if self.ENCODE else text # type: ignore -1037 self._add(TokenType.NATIONAL if quote[0].upper() == "N" else TokenType.STRING, text) -1038 return True -1039 -1040 # X'1234, b'0110', E'\\\\\' etc. -1041 def _scan_formatted_string(self, string_start: str) -> bool: -1042 if string_start in self._HEX_STRINGS: # type: ignore -1043 delimiters = self._HEX_STRINGS # type: ignore -1044 token_type = TokenType.HEX_STRING -1045 base = 16 -1046 elif string_start in self._BIT_STRINGS: # type: ignore -1047 delimiters = self._BIT_STRINGS # type: ignore -1048 token_type = TokenType.BIT_STRING -1049 base = 2 -1050 elif string_start in self._BYTE_STRINGS: # type: ignore -1051 delimiters = self._BYTE_STRINGS # type: ignore -1052 token_type = TokenType.BYTE_STRING -1053 base = None -1054 else: -1055 return False -1056 -1057 self._advance(len(string_start)) -1058 string_end = delimiters.get(string_start) -1059 text = self._extract_string(string_end) -1060 -1061 if base is None: -1062 self._add(token_type, text) -1063 else: -1064 try: -1065 self._add(token_type, f"{int(text, base)}") -1066 except: -1067 raise RuntimeError( -1068 f"Numeric string contains invalid characters from {self._line}:{self._start}" -1069 ) -1070 -1071 return True -1072 -1073 def _scan_identifier(self, identifier_end: str) -> None: -1074 text = "" -1075 identifier_end_is_escape = identifier_end in self._IDENTIFIER_ESCAPES -1076 -1077 while True: -1078 if self._end: -1079 raise RuntimeError(f"Missing {identifier_end} from {self._line}:{self._start}") -1080 -1081 self._advance() -1082 if self._char == identifier_end: -1083 if identifier_end_is_escape and self._peek == identifier_end: -1084 text += identifier_end # type: ignore -1085 self._advance() -1086 continue -1087 -1088 break -1089 -1090 text += self._char # type: ignore -1091 -1092 self._add(TokenType.IDENTIFIER, text) -1093 -1094 def _scan_var(self) -> None: -1095 while True: -1096 char = self._peek.strip() # type: ignore -1097 if char and char not in self.SINGLE_TOKENS: -1098 self._advance() -1099 else: -1100 break -1101 self._add( -1102 TokenType.VAR -1103 if self._prev_token_type == TokenType.PARAMETER -1104 else self.KEYWORDS.get(self._text.upper(), TokenType.VAR) -1105 ) -1106 -1107 def _extract_string(self, delimiter: str) -> str: -1108 text = "" -1109 delim_size = len(delimiter) -1110 -1111 while True: -1112 if self._char in self._STRING_ESCAPES and ( -1113 self._peek == delimiter or self._peek in self._STRING_ESCAPES -1114 ): -1115 if self._peek == delimiter: -1116 text += self._peek # type: ignore -1117 else: -1118 text += self._char + self._peek # type: ignore -1119 -1120 if self._current + 1 < self.size: -1121 self._advance(2) -1122 else: -1123 raise RuntimeError(f"Missing {delimiter} from {self._line}:{self._current}") + 991 decimal = False + 992 scientific = 0 + 993 + 994 while True: + 995 if self._peek.isdigit(): + 996 self._advance() + 997 elif self._peek == "." and not decimal: + 998 decimal = True + 999 self._advance() +1000 elif self._peek in ("-", "+") and scientific == 1: +1001 scientific += 1 +1002 self._advance() +1003 elif self._peek.upper() == "E" and not scientific: +1004 scientific += 1 +1005 self._advance() +1006 elif self._peek.isidentifier(): +1007 number_text = self._text +1008 literal = "" +1009 +1010 while self._peek.strip() and self._peek not in self.SINGLE_TOKENS: +1011 literal += self._peek.upper() +1012 self._advance() +1013 +1014 token_type = self.KEYWORDS.get(self.NUMERIC_LITERALS.get(literal)) +1015 +1016 if token_type: +1017 self._add(TokenType.NUMBER, number_text) +1018 self._add(TokenType.DCOLON, "::") +1019 return self._add(token_type, literal) +1020 elif self.IDENTIFIER_CAN_START_WITH_DIGIT: +1021 return self._add(TokenType.VAR) +1022 +1023 self._add(TokenType.NUMBER, number_text) +1024 return self._advance(-len(literal)) +1025 else: +1026 return self._add(TokenType.NUMBER) +1027 +1028 def _scan_bits(self) -> None: +1029 self._advance() +1030 value = self._extract_value() +1031 try: +1032 self._add(TokenType.BIT_STRING, f"{int(value, 2)}") +1033 except ValueError: +1034 self._add(TokenType.IDENTIFIER) +1035 +1036 def _scan_hex(self) -> None: +1037 self._advance() +1038 value = self._extract_value() +1039 try: +1040 self._add(TokenType.HEX_STRING, f"{int(value, 16)}") +1041 except ValueError: +1042 self._add(TokenType.IDENTIFIER) +1043 +1044 def _extract_value(self) -> str: +1045 while True: +1046 char = self._peek.strip() +1047 if char and char not in self.SINGLE_TOKENS: +1048 self._advance() +1049 else: +1050 break +1051 +1052 return self._text +1053 +1054 def _scan_string(self, quote: str) -> bool: +1055 quote_end = self._QUOTES.get(quote) +1056 if quote_end is None: +1057 return False +1058 +1059 self._advance(len(quote)) +1060 text = self._extract_string(quote_end) +1061 text = text.encode(self.ENCODE).decode(self.ENCODE) if self.ENCODE else text +1062 self._add(TokenType.NATIONAL if quote[0].upper() == "N" else TokenType.STRING, text) +1063 return True +1064 +1065 # X'1234, b'0110', E'\\\\\' etc. +1066 def _scan_formatted_string(self, string_start: str) -> bool: +1067 if string_start in self._HEX_STRINGS: +1068 delimiters = self._HEX_STRINGS +1069 token_type = TokenType.HEX_STRING +1070 base = 16 +1071 elif string_start in self._BIT_STRINGS: +1072 delimiters = self._BIT_STRINGS +1073 token_type = TokenType.BIT_STRING +1074 base = 2 +1075 elif string_start in self._BYTE_STRINGS: +1076 delimiters = self._BYTE_STRINGS +1077 token_type = TokenType.BYTE_STRING +1078 base = None +1079 else: +1080 return False +1081 +1082 self._advance(len(string_start)) +1083 string_end = delimiters[string_start] +1084 text = self._extract_string(string_end) +1085 +1086 if base is None: +1087 self._add(token_type, text) +1088 else: +1089 try: +1090 self._add(token_type, f"{int(text, base)}") +1091 except: +1092 raise RuntimeError( +1093 f"Numeric string contains invalid characters from {self._line}:{self._start}" +1094 ) +1095 +1096 return True +1097 +1098 def _scan_identifier(self, identifier_end: str) -> None: +1099 text = "" +1100 identifier_end_is_escape = identifier_end in self._IDENTIFIER_ESCAPES +1101 +1102 while True: +1103 if self._end: +1104 raise RuntimeError(f"Missing {identifier_end} from {self._line}:{self._start}") +1105 +1106 self._advance() +1107 if self._char == identifier_end: +1108 if identifier_end_is_escape and self._peek == identifier_end: +1109 text += identifier_end +1110 self._advance() +1111 continue +1112 +1113 break +1114 +1115 text += self._char +1116 +1117 self._add(TokenType.IDENTIFIER, text) +1118 +1119 def _scan_var(self) -> None: +1120 while True: +1121 char = self._peek.strip() +1122 if char and (char in self.VAR_SINGLE_TOKENS or char not in self.SINGLE_TOKENS): +1123 self._advance() 1124 else: -1125 if self._chars(delim_size) == delimiter: -1126 if delim_size > 1: -1127 self._advance(delim_size - 1) -1128 break -1129 -1130 if self._end: -1131 raise RuntimeError(f"Missing {delimiter} from {self._line}:{self._start}") -1132 text += self._char # type: ignore -1133 self._advance() -1134 -1135 return text +1125 break +1126 self._add( +1127 TokenType.VAR +1128 if self._prev_token_type == TokenType.PARAMETER +1129 else self.KEYWORDS.get(self._text.upper(), TokenType.VAR) +1130 ) +1131 +1132 def _extract_string(self, delimiter: str) -> str: +1133 text = "" +1134 delim_size = len(delimiter) +1135 +1136 while True: +1137 if self._char in self._STRING_ESCAPES and ( +1138 self._peek == delimiter or self._peek in self._STRING_ESCAPES +1139 ): +1140 if self._peek == delimiter: +1141 text += self._peek +1142 else: +1143 text += self._char + self._peek +1144 +1145 if self._current + 1 < self.size: +1146 self._advance(2) +1147 else: +1148 raise RuntimeError(f"Missing {delimiter} from {self._line}:{self._current}") +1149 else: +1150 if self._chars(delim_size) == delimiter: +1151 if delim_size > 1: +1152 self._advance(delim_size - 1) +1153 break +1154 +1155 if self._end: +1156 raise RuntimeError(f"Missing {delimiter} from {self._line}:{self._start}") +1157 text += self._char +1158 self._advance() +1159 +1160 return text @@ -2210,230 +2244,232 @@ 88 FLOAT = auto() 89 DOUBLE = auto() 90 DECIMAL = auto() - 91 CHAR = auto() - 92 NCHAR = auto() - 93 VARCHAR = auto() - 94 NVARCHAR = auto() - 95 TEXT = auto() - 96 MEDIUMTEXT = auto() - 97 LONGTEXT = auto() - 98 MEDIUMBLOB = auto() - 99 LONGBLOB = auto() -100 BINARY = auto() -101 VARBINARY = auto() -102 JSON = auto() -103 JSONB = auto() -104 TIME = auto() -105 TIMESTAMP = auto() -106 TIMESTAMPTZ = auto() -107 TIMESTAMPLTZ = auto() -108 DATETIME = auto() -109 DATE = auto() -110 UUID = auto() -111 GEOGRAPHY = auto() -112 NULLABLE = auto() -113 GEOMETRY = auto() -114 HLLSKETCH = auto() -115 HSTORE = auto() -116 SUPER = auto() -117 SERIAL = auto() -118 SMALLSERIAL = auto() -119 BIGSERIAL = auto() -120 XML = auto() -121 UNIQUEIDENTIFIER = auto() -122 MONEY = auto() -123 SMALLMONEY = auto() -124 ROWVERSION = auto() -125 IMAGE = auto() -126 VARIANT = auto() -127 OBJECT = auto() -128 INET = auto() -129 -130 # keywords -131 ALIAS = auto() -132 ALTER = auto() -133 ALWAYS = auto() -134 ALL = auto() -135 ANTI = auto() -136 ANY = auto() -137 APPLY = auto() -138 ARRAY = auto() -139 ASC = auto() -140 ASOF = auto() -141 AT_TIME_ZONE = auto() -142 AUTO_INCREMENT = auto() -143 BEGIN = auto() -144 BETWEEN = auto() -145 BOTH = auto() -146 BUCKET = auto() -147 BY_DEFAULT = auto() -148 CACHE = auto() -149 CASCADE = auto() -150 CASE = auto() -151 CHARACTER_SET = auto() -152 CLUSTER_BY = auto() -153 COLLATE = auto() -154 COMMAND = auto() -155 COMMENT = auto() -156 COMMIT = auto() -157 COMPOUND = auto() -158 CONSTRAINT = auto() -159 CREATE = auto() -160 CROSS = auto() -161 CUBE = auto() -162 CURRENT_DATE = auto() -163 CURRENT_DATETIME = auto() -164 CURRENT_ROW = auto() -165 CURRENT_TIME = auto() -166 CURRENT_TIMESTAMP = auto() -167 DEFAULT = auto() -168 DELETE = auto() -169 DESC = auto() -170 DESCRIBE = auto() -171 DISTINCT = auto() -172 DISTINCT_FROM = auto() -173 DISTRIBUTE_BY = auto() -174 DIV = auto() -175 DROP = auto() -176 ELSE = auto() -177 END = auto() -178 ESCAPE = auto() -179 EXCEPT = auto() -180 EXECUTE = auto() -181 EXISTS = auto() -182 FALSE = auto() -183 FETCH = auto() -184 FILTER = auto() -185 FINAL = auto() -186 FIRST = auto() -187 FOLLOWING = auto() -188 FOR = auto() -189 FOREIGN_KEY = auto() -190 FORMAT = auto() -191 FROM = auto() -192 FULL = auto() -193 FUNCTION = auto() -194 GLOB = auto() -195 GLOBAL = auto() -196 GROUP_BY = auto() -197 GROUPING_SETS = auto() -198 HAVING = auto() -199 HINT = auto() -200 IF = auto() -201 IGNORE_NULLS = auto() -202 ILIKE = auto() -203 ILIKE_ANY = auto() -204 IN = auto() -205 INDEX = auto() -206 INNER = auto() -207 INSERT = auto() -208 INTERSECT = auto() -209 INTERVAL = auto() -210 INTO = auto() -211 INTRODUCER = auto() -212 IRLIKE = auto() -213 IS = auto() -214 ISNULL = auto() -215 JOIN = auto() -216 JOIN_MARKER = auto() -217 LANGUAGE = auto() -218 LATERAL = auto() -219 LAZY = auto() -220 LEADING = auto() -221 LEFT = auto() -222 LIKE = auto() -223 LIKE_ANY = auto() -224 LIMIT = auto() -225 LOAD_DATA = auto() -226 LOCAL = auto() -227 MAP = auto() -228 MATCH_RECOGNIZE = auto() -229 MATERIALIZED = auto() -230 MERGE = auto() -231 MOD = auto() -232 NATURAL = auto() -233 NEXT = auto() -234 NO_ACTION = auto() -235 NOTNULL = auto() -236 NULL = auto() -237 NULLS_FIRST = auto() -238 NULLS_LAST = auto() -239 OFFSET = auto() -240 ON = auto() -241 ONLY = auto() -242 OPTIONS = auto() -243 ORDER_BY = auto() -244 ORDERED = auto() -245 ORDINALITY = auto() -246 OUTER = auto() -247 OUT_OF = auto() -248 OVER = auto() -249 OVERLAPS = auto() -250 OVERWRITE = auto() -251 PARTITION = auto() -252 PARTITION_BY = auto() -253 PERCENT = auto() -254 PIVOT = auto() -255 PLACEHOLDER = auto() -256 PRAGMA = auto() -257 PRECEDING = auto() -258 PRIMARY_KEY = auto() -259 PROCEDURE = auto() -260 PROPERTIES = auto() -261 PSEUDO_TYPE = auto() -262 QUALIFY = auto() -263 QUOTE = auto() -264 RANGE = auto() -265 RECURSIVE = auto() -266 REPLACE = auto() -267 RESPECT_NULLS = auto() -268 RETURNING = auto() -269 REFERENCES = auto() -270 RIGHT = auto() -271 RLIKE = auto() -272 ROLLBACK = auto() -273 ROLLUP = auto() -274 ROW = auto() -275 ROWS = auto() -276 SEED = auto() -277 SELECT = auto() -278 SEMI = auto() -279 SEPARATOR = auto() -280 SERDE_PROPERTIES = auto() -281 SET = auto() -282 SHOW = auto() -283 SIMILAR_TO = auto() -284 SOME = auto() -285 SORTKEY = auto() -286 SORT_BY = auto() -287 STRUCT = auto() -288 TABLE_SAMPLE = auto() -289 TEMPORARY = auto() -290 TOP = auto() -291 THEN = auto() -292 TRAILING = auto() -293 TRUE = auto() -294 UNBOUNDED = auto() -295 UNCACHE = auto() -296 UNION = auto() -297 UNLOGGED = auto() -298 UNNEST = auto() -299 UNPIVOT = auto() -300 UPDATE = auto() -301 USE = auto() -302 USING = auto() -303 VALUES = auto() -304 VIEW = auto() -305 VOLATILE = auto() -306 WHEN = auto() -307 WHERE = auto() -308 WINDOW = auto() -309 WITH = auto() -310 WITH_TIME_ZONE = auto() -311 WITH_LOCAL_TIME_ZONE = auto() -312 WITHIN_GROUP = auto() -313 WITHOUT_TIME_ZONE = auto() -314 UNIQUE = auto() + 91 BIGDECIMAL = auto() + 92 CHAR = auto() + 93 NCHAR = auto() + 94 VARCHAR = auto() + 95 NVARCHAR = auto() + 96 TEXT = auto() + 97 MEDIUMTEXT = auto() + 98 LONGTEXT = auto() + 99 MEDIUMBLOB = auto() +100 LONGBLOB = auto() +101 BINARY = auto() +102 VARBINARY = auto() +103 JSON = auto() +104 JSONB = auto() +105 TIME = auto() +106 TIMESTAMP = auto() +107 TIMESTAMPTZ = auto() +108 TIMESTAMPLTZ = auto() +109 DATETIME = auto() +110 DATE = auto() +111 UUID = auto() +112 GEOGRAPHY = auto() +113 NULLABLE = auto() +114 GEOMETRY = auto() +115 HLLSKETCH = auto() +116 HSTORE = auto() +117 SUPER = auto() +118 SERIAL = auto() +119 SMALLSERIAL = auto() +120 BIGSERIAL = auto() +121 XML = auto() +122 UNIQUEIDENTIFIER = auto() +123 MONEY = auto() +124 SMALLMONEY = auto() +125 ROWVERSION = auto() +126 IMAGE = auto() +127 VARIANT = auto() +128 OBJECT = auto() +129 INET = auto() +130 +131 # keywords +132 ALIAS = auto() +133 ALTER = auto() +134 ALWAYS = auto() +135 ALL = auto() +136 ANTI = auto() +137 ANY = auto() +138 APPLY = auto() +139 ARRAY = auto() +140 ASC = auto() +141 ASOF = auto() +142 AT_TIME_ZONE = auto() +143 AUTO_INCREMENT = auto() +144 BEGIN = auto() +145 BETWEEN = auto() +146 BOTH = auto() +147 BUCKET = auto() +148 BY_DEFAULT = auto() +149 CACHE = auto() +150 CASCADE = auto() +151 CASE = auto() +152 CHARACTER_SET = auto() +153 CLUSTER_BY = auto() +154 COLLATE = auto() +155 COMMAND = auto() +156 COMMENT = auto() +157 COMMIT = auto() +158 COMPOUND = auto() +159 CONSTRAINT = auto() +160 CREATE = auto() +161 CROSS = auto() +162 CUBE = auto() +163 CURRENT_DATE = auto() +164 CURRENT_DATETIME = auto() +165 CURRENT_ROW = auto() +166 CURRENT_TIME = auto() +167 CURRENT_TIMESTAMP = auto() +168 CURRENT_USER = auto() +169 DEFAULT = auto() +170 DELETE = auto() +171 DESC = auto() +172 DESCRIBE = auto() +173 DISTINCT = auto() +174 DISTINCT_FROM = auto() +175 DISTRIBUTE_BY = auto() +176 DIV = auto() +177 DROP = auto() +178 ELSE = auto() +179 END = auto() +180 ESCAPE = auto() +181 EXCEPT = auto() +182 EXECUTE = auto() +183 EXISTS = auto() +184 FALSE = auto() +185 FETCH = auto() +186 FILTER = auto() +187 FINAL = auto() +188 FIRST = auto() +189 FOLLOWING = auto() +190 FOR = auto() +191 FOREIGN_KEY = auto() +192 FORMAT = auto() +193 FROM = auto() +194 FULL = auto() +195 FUNCTION = auto() +196 GLOB = auto() +197 GLOBAL = auto() +198 GROUP_BY = auto() +199 GROUPING_SETS = auto() +200 HAVING = auto() +201 HINT = auto() +202 IF = auto() +203 IGNORE_NULLS = auto() +204 ILIKE = auto() +205 ILIKE_ANY = auto() +206 IN = auto() +207 INDEX = auto() +208 INNER = auto() +209 INSERT = auto() +210 INTERSECT = auto() +211 INTERVAL = auto() +212 INTO = auto() +213 INTRODUCER = auto() +214 IRLIKE = auto() +215 IS = auto() +216 ISNULL = auto() +217 JOIN = auto() +218 JOIN_MARKER = auto() +219 LANGUAGE = auto() +220 LATERAL = auto() +221 LAZY = auto() +222 LEADING = auto() +223 LEFT = auto() +224 LIKE = auto() +225 LIKE_ANY = auto() +226 LIMIT = auto() +227 LOAD_DATA = auto() +228 LOCAL = auto() +229 MAP = auto() +230 MATCH_RECOGNIZE = auto() +231 MATERIALIZED = auto() +232 MERGE = auto() +233 MOD = auto() +234 NATURAL = auto() +235 NEXT = auto() +236 NO_ACTION = auto() +237 NOTNULL = auto() +238 NULL = auto() +239 NULLS_FIRST = auto() +240 NULLS_LAST = auto() +241 OFFSET = auto() +242 ON = auto() +243 ONLY = auto() +244 OPTIONS = auto() +245 ORDER_BY = auto() +246 ORDERED = auto() +247 ORDINALITY = auto() +248 OUTER = auto() +249 OUT_OF = auto() +250 OVER = auto() +251 OVERLAPS = auto() +252 OVERWRITE = auto() +253 PARTITION = auto() +254 PARTITION_BY = auto() +255 PERCENT = auto() +256 PIVOT = auto() +257 PLACEHOLDER = auto() +258 PRAGMA = auto() +259 PRECEDING = auto() +260 PRIMARY_KEY = auto() +261 PROCEDURE = auto() +262 PROPERTIES = auto() +263 PSEUDO_TYPE = auto() +264 QUALIFY = auto() +265 QUOTE = auto() +266 RANGE = auto() +267 RECURSIVE = auto() +268 REPLACE = auto() +269 RESPECT_NULLS = auto() +270 RETURNING = auto() +271 REFERENCES = auto() +272 RIGHT = auto() +273 RLIKE = auto() +274 ROLLBACK = auto() +275 ROLLUP = auto() +276 ROW = auto() +277 ROWS = auto() +278 SEED = auto() +279 SELECT = auto() +280 SEMI = auto() +281 SEPARATOR = auto() +282 SERDE_PROPERTIES = auto() +283 SET = auto() +284 SHOW = auto() +285 SIMILAR_TO = auto() +286 SOME = auto() +287 SORTKEY = auto() +288 SORT_BY = auto() +289 STRUCT = auto() +290 TABLE_SAMPLE = auto() +291 TEMPORARY = auto() +292 TOP = auto() +293 THEN = auto() +294 TRAILING = auto() +295 TRUE = auto() +296 UNBOUNDED = auto() +297 UNCACHE = auto() +298 UNION = auto() +299 UNLOGGED = auto() +300 UNNEST = auto() +301 UNPIVOT = auto() +302 UPDATE = auto() +303 USE = auto() +304 USING = auto() +305 VALUES = auto() +306 VIEW = auto() +307 VOLATILE = auto() +308 WHEN = auto() +309 WHERE = auto() +310 WINDOW = auto() +311 WITH = auto() +312 WITH_TIME_ZONE = auto() +313 WITH_LOCAL_TIME_ZONE = auto() +314 WITHIN_GROUP = auto() +315 WITHOUT_TIME_ZONE = auto() +316 UNIQUE = auto() @@ -3328,6 +3364,18 @@ + +
+
+ BIGDECIMAL = +<TokenType.BIGDECIMAL: 'BIGDECIMAL'> + + +
+ + + +
@@ -4216,6 +4264,18 @@ +
+
+
+ CURRENT_USER = +<TokenType.CURRENT_USER: 'CURRENT_USER'> + + +
+ + + +
@@ -6015,47 +6075,54 @@
-
317class Token:
-318    __slots__ = ("token_type", "text", "line", "col", "comments")
-319
-320    @classmethod
-321    def number(cls, number: int) -> Token:
-322        """Returns a NUMBER token with `number` as its text."""
-323        return cls(TokenType.NUMBER, str(number))
-324
-325    @classmethod
-326    def string(cls, string: str) -> Token:
-327        """Returns a STRING token with `string` as its text."""
-328        return cls(TokenType.STRING, string)
-329
-330    @classmethod
-331    def identifier(cls, identifier: str) -> Token:
-332        """Returns an IDENTIFIER token with `identifier` as its text."""
-333        return cls(TokenType.IDENTIFIER, identifier)
-334
-335    @classmethod
-336    def var(cls, var: str) -> Token:
-337        """Returns an VAR token with `var` as its text."""
-338        return cls(TokenType.VAR, var)
-339
-340    def __init__(
-341        self,
-342        token_type: TokenType,
-343        text: str,
-344        line: int = 1,
-345        col: int = 1,
-346        comments: t.List[str] = [],
-347    ) -> None:
-348        self.token_type = token_type
-349        self.text = text
-350        self.line = line
-351        self.col = col - len(text)
-352        self.col = self.col if self.col > 1 else 1
-353        self.comments = comments
-354
-355    def __repr__(self) -> str:
-356        attributes = ", ".join(f"{k}: {getattr(self, k)}" for k in self.__slots__)
-357        return f"<Token {attributes}>"
+            
319class Token:
+320    __slots__ = ("token_type", "text", "line", "col", "end", "comments")
+321
+322    @classmethod
+323    def number(cls, number: int) -> Token:
+324        """Returns a NUMBER token with `number` as its text."""
+325        return cls(TokenType.NUMBER, str(number))
+326
+327    @classmethod
+328    def string(cls, string: str) -> Token:
+329        """Returns a STRING token with `string` as its text."""
+330        return cls(TokenType.STRING, string)
+331
+332    @classmethod
+333    def identifier(cls, identifier: str) -> Token:
+334        """Returns an IDENTIFIER token with `identifier` as its text."""
+335        return cls(TokenType.IDENTIFIER, identifier)
+336
+337    @classmethod
+338    def var(cls, var: str) -> Token:
+339        """Returns an VAR token with `var` as its text."""
+340        return cls(TokenType.VAR, var)
+341
+342    def __init__(
+343        self,
+344        token_type: TokenType,
+345        text: str,
+346        line: int = 1,
+347        col: int = 1,
+348        end: int = 0,
+349        comments: t.List[str] = [],
+350    ) -> None:
+351        self.token_type = token_type
+352        self.text = text
+353        self.line = line
+354        size = len(text)
+355        self.col = col
+356        self.end = end if end else size
+357        self.comments = comments
+358
+359    @property
+360    def start(self) -> int:
+361        """Returns the start of the token."""
+362        return self.end - len(self.text)
+363
+364    def __repr__(self) -> str:
+365        attributes = ", ".join(f"{k}: {getattr(self, k)}" for k in self.__slots__)
+366        return f"<Token {attributes}>"
 
@@ -6065,26 +6132,28 @@
- Token( token_type: sqlglot.tokens.TokenType, text: str, line: int = 1, col: int = 1, comments: List[str] = []) + Token( token_type: sqlglot.tokens.TokenType, text: str, line: int = 1, col: int = 1, end: int = 0, comments: List[str] = [])
-
340    def __init__(
-341        self,
-342        token_type: TokenType,
-343        text: str,
-344        line: int = 1,
-345        col: int = 1,
-346        comments: t.List[str] = [],
-347    ) -> None:
-348        self.token_type = token_type
-349        self.text = text
-350        self.line = line
-351        self.col = col - len(text)
-352        self.col = self.col if self.col > 1 else 1
-353        self.comments = comments
+            
342    def __init__(
+343        self,
+344        token_type: TokenType,
+345        text: str,
+346        line: int = 1,
+347        col: int = 1,
+348        end: int = 0,
+349        comments: t.List[str] = [],
+350    ) -> None:
+351        self.token_type = token_type
+352        self.text = text
+353        self.line = line
+354        size = len(text)
+355        self.col = col
+356        self.end = end if end else size
+357        self.comments = comments
 
@@ -6103,10 +6172,10 @@
-
320    @classmethod
-321    def number(cls, number: int) -> Token:
-322        """Returns a NUMBER token with `number` as its text."""
-323        return cls(TokenType.NUMBER, str(number))
+            
322    @classmethod
+323    def number(cls, number: int) -> Token:
+324        """Returns a NUMBER token with `number` as its text."""
+325        return cls(TokenType.NUMBER, str(number))
 
@@ -6127,10 +6196,10 @@
-
325    @classmethod
-326    def string(cls, string: str) -> Token:
-327        """Returns a STRING token with `string` as its text."""
-328        return cls(TokenType.STRING, string)
+            
327    @classmethod
+328    def string(cls, string: str) -> Token:
+329        """Returns a STRING token with `string` as its text."""
+330        return cls(TokenType.STRING, string)
 
@@ -6151,10 +6220,10 @@
-
330    @classmethod
-331    def identifier(cls, identifier: str) -> Token:
-332        """Returns an IDENTIFIER token with `identifier` as its text."""
-333        return cls(TokenType.IDENTIFIER, identifier)
+            
332    @classmethod
+333    def identifier(cls, identifier: str) -> Token:
+334        """Returns an IDENTIFIER token with `identifier` as its text."""
+335        return cls(TokenType.IDENTIFIER, identifier)
 
@@ -6175,10 +6244,10 @@
-
335    @classmethod
-336    def var(cls, var: str) -> Token:
-337        """Returns an VAR token with `var` as its text."""
-338        return cls(TokenType.VAR, var)
+            
337    @classmethod
+338    def var(cls, var: str) -> Token:
+339        """Returns an VAR token with `var` as its text."""
+340        return cls(TokenType.VAR, var)
 
@@ -6186,6 +6255,19 @@
+
+
+
+ start: int + + +
+ + +

Returns the start of the token.

+
+ +
@@ -6199,743 +6281,759 @@
-
 400class Tokenizer(metaclass=_Tokenizer):
- 401    SINGLE_TOKENS = {
- 402        "(": TokenType.L_PAREN,
- 403        ")": TokenType.R_PAREN,
- 404        "[": TokenType.L_BRACKET,
- 405        "]": TokenType.R_BRACKET,
- 406        "{": TokenType.L_BRACE,
- 407        "}": TokenType.R_BRACE,
- 408        "&": TokenType.AMP,
- 409        "^": TokenType.CARET,
- 410        ":": TokenType.COLON,
- 411        ",": TokenType.COMMA,
- 412        ".": TokenType.DOT,
- 413        "-": TokenType.DASH,
- 414        "=": TokenType.EQ,
- 415        ">": TokenType.GT,
- 416        "<": TokenType.LT,
- 417        "%": TokenType.MOD,
- 418        "!": TokenType.NOT,
- 419        "|": TokenType.PIPE,
- 420        "+": TokenType.PLUS,
- 421        ";": TokenType.SEMICOLON,
- 422        "/": TokenType.SLASH,
- 423        "\\": TokenType.BACKSLASH,
- 424        "*": TokenType.STAR,
- 425        "~": TokenType.TILDA,
- 426        "?": TokenType.PLACEHOLDER,
- 427        "@": TokenType.PARAMETER,
- 428        # used for breaking a var like x'y' but nothing else
- 429        # the token type doesn't matter
- 430        "'": TokenType.QUOTE,
- 431        "`": TokenType.IDENTIFIER,
- 432        '"': TokenType.IDENTIFIER,
- 433        "#": TokenType.HASH,
- 434    }
- 435
- 436    QUOTES: t.List[t.Tuple[str, str] | str] = ["'"]
- 437
- 438    BIT_STRINGS: t.List[str | t.Tuple[str, str]] = []
- 439
- 440    HEX_STRINGS: t.List[str | t.Tuple[str, str]] = []
- 441
- 442    BYTE_STRINGS: t.List[str | t.Tuple[str, str]] = []
- 443
- 444    IDENTIFIERS: t.List[str | t.Tuple[str, str]] = ['"']
- 445
- 446    STRING_ESCAPES = ["'"]
- 447
- 448    _STRING_ESCAPES: t.Set[str] = set()
- 449
- 450    IDENTIFIER_ESCAPES = ['"']
- 451
- 452    _IDENTIFIER_ESCAPES: t.Set[str] = set()
+            
 409class Tokenizer(metaclass=_Tokenizer):
+ 410    SINGLE_TOKENS = {
+ 411        "(": TokenType.L_PAREN,
+ 412        ")": TokenType.R_PAREN,
+ 413        "[": TokenType.L_BRACKET,
+ 414        "]": TokenType.R_BRACKET,
+ 415        "{": TokenType.L_BRACE,
+ 416        "}": TokenType.R_BRACE,
+ 417        "&": TokenType.AMP,
+ 418        "^": TokenType.CARET,
+ 419        ":": TokenType.COLON,
+ 420        ",": TokenType.COMMA,
+ 421        ".": TokenType.DOT,
+ 422        "-": TokenType.DASH,
+ 423        "=": TokenType.EQ,
+ 424        ">": TokenType.GT,
+ 425        "<": TokenType.LT,
+ 426        "%": TokenType.MOD,
+ 427        "!": TokenType.NOT,
+ 428        "|": TokenType.PIPE,
+ 429        "+": TokenType.PLUS,
+ 430        ";": TokenType.SEMICOLON,
+ 431        "/": TokenType.SLASH,
+ 432        "\\": TokenType.BACKSLASH,
+ 433        "*": TokenType.STAR,
+ 434        "~": TokenType.TILDA,
+ 435        "?": TokenType.PLACEHOLDER,
+ 436        "@": TokenType.PARAMETER,
+ 437        # used for breaking a var like x'y' but nothing else
+ 438        # the token type doesn't matter
+ 439        "'": TokenType.QUOTE,
+ 440        "`": TokenType.IDENTIFIER,
+ 441        '"': TokenType.IDENTIFIER,
+ 442        "#": TokenType.HASH,
+ 443    }
+ 444
+ 445    BIT_STRINGS: t.List[str | t.Tuple[str, str]] = []
+ 446    BYTE_STRINGS: t.List[str | t.Tuple[str, str]] = []
+ 447    HEX_STRINGS: t.List[str | t.Tuple[str, str]] = []
+ 448    IDENTIFIERS: t.List[str | t.Tuple[str, str]] = ['"']
+ 449    IDENTIFIER_ESCAPES = ['"']
+ 450    QUOTES: t.List[t.Tuple[str, str] | str] = ["'"]
+ 451    STRING_ESCAPES = ["'"]
+ 452    VAR_SINGLE_TOKENS: t.Set[str] = set()
  453
- 454    KEYWORDS = {
- 455        **{f"{{%{postfix}": TokenType.BLOCK_START for postfix in ("", "+", "-")},
- 456        **{f"{prefix}%}}": TokenType.BLOCK_END for prefix in ("", "+", "-")},
- 457        "{{+": TokenType.BLOCK_START,
- 458        "{{-": TokenType.BLOCK_START,
- 459        "+}}": TokenType.BLOCK_END,
- 460        "-}}": TokenType.BLOCK_END,
- 461        "/*+": TokenType.HINT,
- 462        "==": TokenType.EQ,
- 463        "::": TokenType.DCOLON,
- 464        "||": TokenType.DPIPE,
- 465        ">=": TokenType.GTE,
- 466        "<=": TokenType.LTE,
- 467        "<>": TokenType.NEQ,
- 468        "!=": TokenType.NEQ,
- 469        "<=>": TokenType.NULLSAFE_EQ,
- 470        "->": TokenType.ARROW,
- 471        "->>": TokenType.DARROW,
- 472        "=>": TokenType.FARROW,
- 473        "#>": TokenType.HASH_ARROW,
- 474        "#>>": TokenType.DHASH_ARROW,
- 475        "<->": TokenType.LR_ARROW,
- 476        "&&": TokenType.DAMP,
- 477        "ALL": TokenType.ALL,
- 478        "ALWAYS": TokenType.ALWAYS,
- 479        "AND": TokenType.AND,
- 480        "ANTI": TokenType.ANTI,
- 481        "ANY": TokenType.ANY,
- 482        "ASC": TokenType.ASC,
- 483        "AS": TokenType.ALIAS,
- 484        "AT TIME ZONE": TokenType.AT_TIME_ZONE,
- 485        "AUTOINCREMENT": TokenType.AUTO_INCREMENT,
- 486        "AUTO_INCREMENT": TokenType.AUTO_INCREMENT,
- 487        "BEGIN": TokenType.BEGIN,
- 488        "BETWEEN": TokenType.BETWEEN,
- 489        "BOTH": TokenType.BOTH,
- 490        "BUCKET": TokenType.BUCKET,
- 491        "BY DEFAULT": TokenType.BY_DEFAULT,
- 492        "CACHE": TokenType.CACHE,
- 493        "UNCACHE": TokenType.UNCACHE,
- 494        "CASE": TokenType.CASE,
- 495        "CASCADE": TokenType.CASCADE,
- 496        "CHARACTER SET": TokenType.CHARACTER_SET,
- 497        "CLUSTER BY": TokenType.CLUSTER_BY,
- 498        "COLLATE": TokenType.COLLATE,
- 499        "COLUMN": TokenType.COLUMN,
- 500        "COMMIT": TokenType.COMMIT,
- 501        "COMPOUND": TokenType.COMPOUND,
- 502        "CONSTRAINT": TokenType.CONSTRAINT,
- 503        "CREATE": TokenType.CREATE,
- 504        "CROSS": TokenType.CROSS,
- 505        "CUBE": TokenType.CUBE,
- 506        "CURRENT_DATE": TokenType.CURRENT_DATE,
- 507        "CURRENT ROW": TokenType.CURRENT_ROW,
- 508        "CURRENT_TIME": TokenType.CURRENT_TIME,
- 509        "CURRENT_TIMESTAMP": TokenType.CURRENT_TIMESTAMP,
- 510        "DATABASE": TokenType.DATABASE,
- 511        "DEFAULT": TokenType.DEFAULT,
- 512        "DELETE": TokenType.DELETE,
- 513        "DESC": TokenType.DESC,
- 514        "DESCRIBE": TokenType.DESCRIBE,
- 515        "DISTINCT": TokenType.DISTINCT,
- 516        "DISTINCT FROM": TokenType.DISTINCT_FROM,
- 517        "DISTRIBUTE BY": TokenType.DISTRIBUTE_BY,
- 518        "DIV": TokenType.DIV,
- 519        "DROP": TokenType.DROP,
- 520        "ELSE": TokenType.ELSE,
- 521        "END": TokenType.END,
- 522        "ESCAPE": TokenType.ESCAPE,
- 523        "EXCEPT": TokenType.EXCEPT,
- 524        "EXECUTE": TokenType.EXECUTE,
- 525        "EXISTS": TokenType.EXISTS,
- 526        "FALSE": TokenType.FALSE,
- 527        "FETCH": TokenType.FETCH,
- 528        "FILTER": TokenType.FILTER,
- 529        "FIRST": TokenType.FIRST,
- 530        "FULL": TokenType.FULL,
- 531        "FUNCTION": TokenType.FUNCTION,
- 532        "FOLLOWING": TokenType.FOLLOWING,
- 533        "FOR": TokenType.FOR,
- 534        "FOREIGN KEY": TokenType.FOREIGN_KEY,
- 535        "FORMAT": TokenType.FORMAT,
- 536        "FROM": TokenType.FROM,
- 537        "GLOB": TokenType.GLOB,
- 538        "GROUP BY": TokenType.GROUP_BY,
- 539        "GROUPING SETS": TokenType.GROUPING_SETS,
- 540        "HAVING": TokenType.HAVING,
- 541        "IF": TokenType.IF,
- 542        "ILIKE": TokenType.ILIKE,
- 543        "IGNORE NULLS": TokenType.IGNORE_NULLS,
- 544        "IN": TokenType.IN,
- 545        "INDEX": TokenType.INDEX,
- 546        "INET": TokenType.INET,
- 547        "INNER": TokenType.INNER,
- 548        "INSERT": TokenType.INSERT,
- 549        "INTERVAL": TokenType.INTERVAL,
- 550        "INTERSECT": TokenType.INTERSECT,
- 551        "INTO": TokenType.INTO,
- 552        "IS": TokenType.IS,
- 553        "ISNULL": TokenType.ISNULL,
- 554        "JOIN": TokenType.JOIN,
- 555        "LATERAL": TokenType.LATERAL,
- 556        "LAZY": TokenType.LAZY,
- 557        "LEADING": TokenType.LEADING,
- 558        "LEFT": TokenType.LEFT,
- 559        "LIKE": TokenType.LIKE,
- 560        "LIMIT": TokenType.LIMIT,
- 561        "LOAD DATA": TokenType.LOAD_DATA,
- 562        "LOCAL": TokenType.LOCAL,
- 563        "MATERIALIZED": TokenType.MATERIALIZED,
- 564        "MERGE": TokenType.MERGE,
- 565        "NATURAL": TokenType.NATURAL,
- 566        "NEXT": TokenType.NEXT,
- 567        "NO ACTION": TokenType.NO_ACTION,
- 568        "NOT": TokenType.NOT,
- 569        "NOTNULL": TokenType.NOTNULL,
- 570        "NULL": TokenType.NULL,
- 571        "NULLS FIRST": TokenType.NULLS_FIRST,
- 572        "NULLS LAST": TokenType.NULLS_LAST,
- 573        "OBJECT": TokenType.OBJECT,
- 574        "OFFSET": TokenType.OFFSET,
- 575        "ON": TokenType.ON,
- 576        "ONLY": TokenType.ONLY,
- 577        "OPTIONS": TokenType.OPTIONS,
- 578        "OR": TokenType.OR,
- 579        "ORDER BY": TokenType.ORDER_BY,
- 580        "ORDINALITY": TokenType.ORDINALITY,
- 581        "OUTER": TokenType.OUTER,
- 582        "OUT OF": TokenType.OUT_OF,
- 583        "OVER": TokenType.OVER,
- 584        "OVERLAPS": TokenType.OVERLAPS,
- 585        "OVERWRITE": TokenType.OVERWRITE,
- 586        "PARTITION": TokenType.PARTITION,
- 587        "PARTITION BY": TokenType.PARTITION_BY,
- 588        "PARTITIONED BY": TokenType.PARTITION_BY,
- 589        "PARTITIONED_BY": TokenType.PARTITION_BY,
- 590        "PERCENT": TokenType.PERCENT,
- 591        "PIVOT": TokenType.PIVOT,
- 592        "PRAGMA": TokenType.PRAGMA,
- 593        "PRECEDING": TokenType.PRECEDING,
- 594        "PRIMARY KEY": TokenType.PRIMARY_KEY,
- 595        "PROCEDURE": TokenType.PROCEDURE,
- 596        "QUALIFY": TokenType.QUALIFY,
- 597        "RANGE": TokenType.RANGE,
- 598        "RECURSIVE": TokenType.RECURSIVE,
- 599        "REGEXP": TokenType.RLIKE,
- 600        "REPLACE": TokenType.REPLACE,
- 601        "RESPECT NULLS": TokenType.RESPECT_NULLS,
- 602        "REFERENCES": TokenType.REFERENCES,
- 603        "RIGHT": TokenType.RIGHT,
- 604        "RLIKE": TokenType.RLIKE,
- 605        "ROLLBACK": TokenType.ROLLBACK,
- 606        "ROLLUP": TokenType.ROLLUP,
- 607        "ROW": TokenType.ROW,
- 608        "ROWS": TokenType.ROWS,
- 609        "SCHEMA": TokenType.SCHEMA,
- 610        "SEED": TokenType.SEED,
- 611        "SELECT": TokenType.SELECT,
- 612        "SEMI": TokenType.SEMI,
- 613        "SET": TokenType.SET,
- 614        "SHOW": TokenType.SHOW,
- 615        "SIMILAR TO": TokenType.SIMILAR_TO,
- 616        "SOME": TokenType.SOME,
- 617        "SORTKEY": TokenType.SORTKEY,
- 618        "SORT BY": TokenType.SORT_BY,
- 619        "TABLE": TokenType.TABLE,
- 620        "TABLESAMPLE": TokenType.TABLE_SAMPLE,
- 621        "TEMP": TokenType.TEMPORARY,
- 622        "TEMPORARY": TokenType.TEMPORARY,
- 623        "THEN": TokenType.THEN,
- 624        "TRUE": TokenType.TRUE,
- 625        "TRAILING": TokenType.TRAILING,
- 626        "UNBOUNDED": TokenType.UNBOUNDED,
- 627        "UNION": TokenType.UNION,
- 628        "UNLOGGED": TokenType.UNLOGGED,
- 629        "UNNEST": TokenType.UNNEST,
- 630        "UNPIVOT": TokenType.UNPIVOT,
- 631        "UPDATE": TokenType.UPDATE,
- 632        "USE": TokenType.USE,
- 633        "USING": TokenType.USING,
- 634        "VALUES": TokenType.VALUES,
- 635        "VIEW": TokenType.VIEW,
- 636        "VOLATILE": TokenType.VOLATILE,
- 637        "WHEN": TokenType.WHEN,
- 638        "WHERE": TokenType.WHERE,
- 639        "WINDOW": TokenType.WINDOW,
- 640        "WITH": TokenType.WITH,
- 641        "WITH TIME ZONE": TokenType.WITH_TIME_ZONE,
- 642        "WITH LOCAL TIME ZONE": TokenType.WITH_LOCAL_TIME_ZONE,
- 643        "WITHIN GROUP": TokenType.WITHIN_GROUP,
- 644        "WITHOUT TIME ZONE": TokenType.WITHOUT_TIME_ZONE,
- 645        "APPLY": TokenType.APPLY,
- 646        "ARRAY": TokenType.ARRAY,
- 647        "BIT": TokenType.BIT,
- 648        "BOOL": TokenType.BOOLEAN,
- 649        "BOOLEAN": TokenType.BOOLEAN,
- 650        "BYTE": TokenType.TINYINT,
- 651        "TINYINT": TokenType.TINYINT,
- 652        "SHORT": TokenType.SMALLINT,
- 653        "SMALLINT": TokenType.SMALLINT,
- 654        "INT2": TokenType.SMALLINT,
- 655        "INTEGER": TokenType.INT,
- 656        "INT": TokenType.INT,
- 657        "INT4": TokenType.INT,
- 658        "LONG": TokenType.BIGINT,
- 659        "BIGINT": TokenType.BIGINT,
- 660        "INT8": TokenType.BIGINT,
- 661        "DEC": TokenType.DECIMAL,
- 662        "DECIMAL": TokenType.DECIMAL,
- 663        "MAP": TokenType.MAP,
- 664        "NULLABLE": TokenType.NULLABLE,
- 665        "NUMBER": TokenType.DECIMAL,
- 666        "NUMERIC": TokenType.DECIMAL,
- 667        "FIXED": TokenType.DECIMAL,
- 668        "REAL": TokenType.FLOAT,
- 669        "FLOAT": TokenType.FLOAT,
- 670        "FLOAT4": TokenType.FLOAT,
- 671        "FLOAT8": TokenType.DOUBLE,
- 672        "DOUBLE": TokenType.DOUBLE,
- 673        "DOUBLE PRECISION": TokenType.DOUBLE,
- 674        "JSON": TokenType.JSON,
- 675        "CHAR": TokenType.CHAR,
- 676        "CHARACTER": TokenType.CHAR,
- 677        "NCHAR": TokenType.NCHAR,
- 678        "VARCHAR": TokenType.VARCHAR,
- 679        "VARCHAR2": TokenType.VARCHAR,
- 680        "NVARCHAR": TokenType.NVARCHAR,
- 681        "NVARCHAR2": TokenType.NVARCHAR,
- 682        "STR": TokenType.TEXT,
- 683        "STRING": TokenType.TEXT,
- 684        "TEXT": TokenType.TEXT,
- 685        "CLOB": TokenType.TEXT,
- 686        "LONGVARCHAR": TokenType.TEXT,
- 687        "BINARY": TokenType.BINARY,
- 688        "BLOB": TokenType.VARBINARY,
- 689        "BYTEA": TokenType.VARBINARY,
- 690        "VARBINARY": TokenType.VARBINARY,
- 691        "TIME": TokenType.TIME,
- 692        "TIMESTAMP": TokenType.TIMESTAMP,
- 693        "TIMESTAMPTZ": TokenType.TIMESTAMPTZ,
- 694        "TIMESTAMPLTZ": TokenType.TIMESTAMPLTZ,
- 695        "DATE": TokenType.DATE,
- 696        "DATETIME": TokenType.DATETIME,
- 697        "UNIQUE": TokenType.UNIQUE,
- 698        "STRUCT": TokenType.STRUCT,
- 699        "VARIANT": TokenType.VARIANT,
- 700        "ALTER": TokenType.ALTER,
- 701        "ALTER AGGREGATE": TokenType.COMMAND,
- 702        "ALTER DEFAULT": TokenType.COMMAND,
- 703        "ALTER DOMAIN": TokenType.COMMAND,
- 704        "ALTER ROLE": TokenType.COMMAND,
- 705        "ALTER RULE": TokenType.COMMAND,
- 706        "ALTER SEQUENCE": TokenType.COMMAND,
- 707        "ALTER TYPE": TokenType.COMMAND,
- 708        "ALTER USER": TokenType.COMMAND,
- 709        "ALTER VIEW": TokenType.COMMAND,
- 710        "ANALYZE": TokenType.COMMAND,
- 711        "CALL": TokenType.COMMAND,
- 712        "COMMENT": TokenType.COMMENT,
- 713        "COPY": TokenType.COMMAND,
- 714        "EXPLAIN": TokenType.COMMAND,
- 715        "GRANT": TokenType.COMMAND,
- 716        "OPTIMIZE": TokenType.COMMAND,
- 717        "PREPARE": TokenType.COMMAND,
- 718        "TRUNCATE": TokenType.COMMAND,
- 719        "VACUUM": TokenType.COMMAND,
- 720    }
- 721
- 722    WHITE_SPACE: t.Dict[t.Optional[str], TokenType] = {
- 723        " ": TokenType.SPACE,
- 724        "\t": TokenType.SPACE,
- 725        "\n": TokenType.BREAK,
- 726        "\r": TokenType.BREAK,
- 727        "\r\n": TokenType.BREAK,
- 728    }
- 729
- 730    COMMANDS = {
- 731        TokenType.COMMAND,
- 732        TokenType.EXECUTE,
- 733        TokenType.FETCH,
- 734        TokenType.SHOW,
- 735    }
- 736
- 737    COMMAND_PREFIX_TOKENS = {TokenType.SEMICOLON, TokenType.BEGIN}
- 738
- 739    # handle numeric literals like in hive (3L = BIGINT)
- 740    NUMERIC_LITERALS: t.Dict[str, str] = {}
- 741    ENCODE: t.Optional[str] = None
+ 454    _COMMENTS: t.Dict[str, str] = {}
+ 455    _BIT_STRINGS: t.Dict[str, str] = {}
+ 456    _BYTE_STRINGS: t.Dict[str, str] = {}
+ 457    _HEX_STRINGS: t.Dict[str, str] = {}
+ 458    _IDENTIFIERS: t.Dict[str, str] = {}
+ 459    _IDENTIFIER_ESCAPES: t.Set[str] = set()
+ 460    _QUOTES: t.Dict[str, str] = {}
+ 461    _STRING_ESCAPES: t.Set[str] = set()
+ 462
+ 463    KEYWORDS: t.Dict[t.Optional[str], TokenType] = {
+ 464        **{f"{{%{postfix}": TokenType.BLOCK_START for postfix in ("", "+", "-")},
+ 465        **{f"{prefix}%}}": TokenType.BLOCK_END for prefix in ("", "+", "-")},
+ 466        "{{+": TokenType.BLOCK_START,
+ 467        "{{-": TokenType.BLOCK_START,
+ 468        "+}}": TokenType.BLOCK_END,
+ 469        "-}}": TokenType.BLOCK_END,
+ 470        "/*+": TokenType.HINT,
+ 471        "==": TokenType.EQ,
+ 472        "::": TokenType.DCOLON,
+ 473        "||": TokenType.DPIPE,
+ 474        ">=": TokenType.GTE,
+ 475        "<=": TokenType.LTE,
+ 476        "<>": TokenType.NEQ,
+ 477        "!=": TokenType.NEQ,
+ 478        "<=>": TokenType.NULLSAFE_EQ,
+ 479        "->": TokenType.ARROW,
+ 480        "->>": TokenType.DARROW,
+ 481        "=>": TokenType.FARROW,
+ 482        "#>": TokenType.HASH_ARROW,
+ 483        "#>>": TokenType.DHASH_ARROW,
+ 484        "<->": TokenType.LR_ARROW,
+ 485        "&&": TokenType.DAMP,
+ 486        "ALL": TokenType.ALL,
+ 487        "ALWAYS": TokenType.ALWAYS,
+ 488        "AND": TokenType.AND,
+ 489        "ANTI": TokenType.ANTI,
+ 490        "ANY": TokenType.ANY,
+ 491        "ASC": TokenType.ASC,
+ 492        "AS": TokenType.ALIAS,
+ 493        "AT TIME ZONE": TokenType.AT_TIME_ZONE,
+ 494        "AUTOINCREMENT": TokenType.AUTO_INCREMENT,
+ 495        "AUTO_INCREMENT": TokenType.AUTO_INCREMENT,
+ 496        "BEGIN": TokenType.BEGIN,
+ 497        "BETWEEN": TokenType.BETWEEN,
+ 498        "BOTH": TokenType.BOTH,
+ 499        "BUCKET": TokenType.BUCKET,
+ 500        "BY DEFAULT": TokenType.BY_DEFAULT,
+ 501        "CACHE": TokenType.CACHE,
+ 502        "UNCACHE": TokenType.UNCACHE,
+ 503        "CASE": TokenType.CASE,
+ 504        "CASCADE": TokenType.CASCADE,
+ 505        "CHARACTER SET": TokenType.CHARACTER_SET,
+ 506        "CLUSTER BY": TokenType.CLUSTER_BY,
+ 507        "COLLATE": TokenType.COLLATE,
+ 508        "COLUMN": TokenType.COLUMN,
+ 509        "COMMIT": TokenType.COMMIT,
+ 510        "COMPOUND": TokenType.COMPOUND,
+ 511        "CONSTRAINT": TokenType.CONSTRAINT,
+ 512        "CREATE": TokenType.CREATE,
+ 513        "CROSS": TokenType.CROSS,
+ 514        "CUBE": TokenType.CUBE,
+ 515        "CURRENT_DATE": TokenType.CURRENT_DATE,
+ 516        "CURRENT ROW": TokenType.CURRENT_ROW,
+ 517        "CURRENT_TIME": TokenType.CURRENT_TIME,
+ 518        "CURRENT_TIMESTAMP": TokenType.CURRENT_TIMESTAMP,
+ 519        "CURRENT_USER": TokenType.CURRENT_USER,
+ 520        "DATABASE": TokenType.DATABASE,
+ 521        "DEFAULT": TokenType.DEFAULT,
+ 522        "DELETE": TokenType.DELETE,
+ 523        "DESC": TokenType.DESC,
+ 524        "DESCRIBE": TokenType.DESCRIBE,
+ 525        "DISTINCT": TokenType.DISTINCT,
+ 526        "DISTINCT FROM": TokenType.DISTINCT_FROM,
+ 527        "DISTRIBUTE BY": TokenType.DISTRIBUTE_BY,
+ 528        "DIV": TokenType.DIV,
+ 529        "DROP": TokenType.DROP,
+ 530        "ELSE": TokenType.ELSE,
+ 531        "END": TokenType.END,
+ 532        "ESCAPE": TokenType.ESCAPE,
+ 533        "EXCEPT": TokenType.EXCEPT,
+ 534        "EXECUTE": TokenType.EXECUTE,
+ 535        "EXISTS": TokenType.EXISTS,
+ 536        "FALSE": TokenType.FALSE,
+ 537        "FETCH": TokenType.FETCH,
+ 538        "FILTER": TokenType.FILTER,
+ 539        "FIRST": TokenType.FIRST,
+ 540        "FULL": TokenType.FULL,
+ 541        "FUNCTION": TokenType.FUNCTION,
+ 542        "FOLLOWING": TokenType.FOLLOWING,
+ 543        "FOR": TokenType.FOR,
+ 544        "FOREIGN KEY": TokenType.FOREIGN_KEY,
+ 545        "FORMAT": TokenType.FORMAT,
+ 546        "FROM": TokenType.FROM,
+ 547        "GLOB": TokenType.GLOB,
+ 548        "GROUP BY": TokenType.GROUP_BY,
+ 549        "GROUPING SETS": TokenType.GROUPING_SETS,
+ 550        "HAVING": TokenType.HAVING,
+ 551        "IF": TokenType.IF,
+ 552        "ILIKE": TokenType.ILIKE,
+ 553        "IGNORE NULLS": TokenType.IGNORE_NULLS,
+ 554        "IN": TokenType.IN,
+ 555        "INDEX": TokenType.INDEX,
+ 556        "INET": TokenType.INET,
+ 557        "INNER": TokenType.INNER,
+ 558        "INSERT": TokenType.INSERT,
+ 559        "INTERVAL": TokenType.INTERVAL,
+ 560        "INTERSECT": TokenType.INTERSECT,
+ 561        "INTO": TokenType.INTO,
+ 562        "IS": TokenType.IS,
+ 563        "ISNULL": TokenType.ISNULL,
+ 564        "JOIN": TokenType.JOIN,
+ 565        "LATERAL": TokenType.LATERAL,
+ 566        "LAZY": TokenType.LAZY,
+ 567        "LEADING": TokenType.LEADING,
+ 568        "LEFT": TokenType.LEFT,
+ 569        "LIKE": TokenType.LIKE,
+ 570        "LIMIT": TokenType.LIMIT,
+ 571        "LOAD DATA": TokenType.LOAD_DATA,
+ 572        "LOCAL": TokenType.LOCAL,
+ 573        "MATERIALIZED": TokenType.MATERIALIZED,
+ 574        "MERGE": TokenType.MERGE,
+ 575        "NATURAL": TokenType.NATURAL,
+ 576        "NEXT": TokenType.NEXT,
+ 577        "NO ACTION": TokenType.NO_ACTION,
+ 578        "NOT": TokenType.NOT,
+ 579        "NOTNULL": TokenType.NOTNULL,
+ 580        "NULL": TokenType.NULL,
+ 581        "NULLS FIRST": TokenType.NULLS_FIRST,
+ 582        "NULLS LAST": TokenType.NULLS_LAST,
+ 583        "OBJECT": TokenType.OBJECT,
+ 584        "OFFSET": TokenType.OFFSET,
+ 585        "ON": TokenType.ON,
+ 586        "ONLY": TokenType.ONLY,
+ 587        "OPTIONS": TokenType.OPTIONS,
+ 588        "OR": TokenType.OR,
+ 589        "ORDER BY": TokenType.ORDER_BY,
+ 590        "ORDINALITY": TokenType.ORDINALITY,
+ 591        "OUTER": TokenType.OUTER,
+ 592        "OUT OF": TokenType.OUT_OF,
+ 593        "OVER": TokenType.OVER,
+ 594        "OVERLAPS": TokenType.OVERLAPS,
+ 595        "OVERWRITE": TokenType.OVERWRITE,
+ 596        "PARTITION": TokenType.PARTITION,
+ 597        "PARTITION BY": TokenType.PARTITION_BY,
+ 598        "PARTITIONED BY": TokenType.PARTITION_BY,
+ 599        "PARTITIONED_BY": TokenType.PARTITION_BY,
+ 600        "PERCENT": TokenType.PERCENT,
+ 601        "PIVOT": TokenType.PIVOT,
+ 602        "PRAGMA": TokenType.PRAGMA,
+ 603        "PRECEDING": TokenType.PRECEDING,
+ 604        "PRIMARY KEY": TokenType.PRIMARY_KEY,
+ 605        "PROCEDURE": TokenType.PROCEDURE,
+ 606        "QUALIFY": TokenType.QUALIFY,
+ 607        "RANGE": TokenType.RANGE,
+ 608        "RECURSIVE": TokenType.RECURSIVE,
+ 609        "REGEXP": TokenType.RLIKE,
+ 610        "REPLACE": TokenType.REPLACE,
+ 611        "RESPECT NULLS": TokenType.RESPECT_NULLS,
+ 612        "REFERENCES": TokenType.REFERENCES,
+ 613        "RIGHT": TokenType.RIGHT,
+ 614        "RLIKE": TokenType.RLIKE,
+ 615        "ROLLBACK": TokenType.ROLLBACK,
+ 616        "ROLLUP": TokenType.ROLLUP,
+ 617        "ROW": TokenType.ROW,
+ 618        "ROWS": TokenType.ROWS,
+ 619        "SCHEMA": TokenType.SCHEMA,
+ 620        "SEED": TokenType.SEED,
+ 621        "SELECT": TokenType.SELECT,
+ 622        "SEMI": TokenType.SEMI,
+ 623        "SET": TokenType.SET,
+ 624        "SHOW": TokenType.SHOW,
+ 625        "SIMILAR TO": TokenType.SIMILAR_TO,
+ 626        "SOME": TokenType.SOME,
+ 627        "SORTKEY": TokenType.SORTKEY,
+ 628        "SORT BY": TokenType.SORT_BY,
+ 629        "TABLE": TokenType.TABLE,
+ 630        "TABLESAMPLE": TokenType.TABLE_SAMPLE,
+ 631        "TEMP": TokenType.TEMPORARY,
+ 632        "TEMPORARY": TokenType.TEMPORARY,
+ 633        "THEN": TokenType.THEN,
+ 634        "TRUE": TokenType.TRUE,
+ 635        "TRAILING": TokenType.TRAILING,
+ 636        "UNBOUNDED": TokenType.UNBOUNDED,
+ 637        "UNION": TokenType.UNION,
+ 638        "UNLOGGED": TokenType.UNLOGGED,
+ 639        "UNNEST": TokenType.UNNEST,
+ 640        "UNPIVOT": TokenType.UNPIVOT,
+ 641        "UPDATE": TokenType.UPDATE,
+ 642        "USE": TokenType.USE,
+ 643        "USING": TokenType.USING,
+ 644        "UUID": TokenType.UUID,
+ 645        "VALUES": TokenType.VALUES,
+ 646        "VIEW": TokenType.VIEW,
+ 647        "VOLATILE": TokenType.VOLATILE,
+ 648        "WHEN": TokenType.WHEN,
+ 649        "WHERE": TokenType.WHERE,
+ 650        "WINDOW": TokenType.WINDOW,
+ 651        "WITH": TokenType.WITH,
+ 652        "WITH TIME ZONE": TokenType.WITH_TIME_ZONE,
+ 653        "WITH LOCAL TIME ZONE": TokenType.WITH_LOCAL_TIME_ZONE,
+ 654        "WITHIN GROUP": TokenType.WITHIN_GROUP,
+ 655        "WITHOUT TIME ZONE": TokenType.WITHOUT_TIME_ZONE,
+ 656        "APPLY": TokenType.APPLY,
+ 657        "ARRAY": TokenType.ARRAY,
+ 658        "BIT": TokenType.BIT,
+ 659        "BOOL": TokenType.BOOLEAN,
+ 660        "BOOLEAN": TokenType.BOOLEAN,
+ 661        "BYTE": TokenType.TINYINT,
+ 662        "TINYINT": TokenType.TINYINT,
+ 663        "SHORT": TokenType.SMALLINT,
+ 664        "SMALLINT": TokenType.SMALLINT,
+ 665        "INT2": TokenType.SMALLINT,
+ 666        "INTEGER": TokenType.INT,
+ 667        "INT": TokenType.INT,
+ 668        "INT4": TokenType.INT,
+ 669        "LONG": TokenType.BIGINT,
+ 670        "BIGINT": TokenType.BIGINT,
+ 671        "INT8": TokenType.BIGINT,
+ 672        "DEC": TokenType.DECIMAL,
+ 673        "DECIMAL": TokenType.DECIMAL,
+ 674        "BIGDECIMAL": TokenType.BIGDECIMAL,
+ 675        "BIGNUMERIC": TokenType.BIGDECIMAL,
+ 676        "MAP": TokenType.MAP,
+ 677        "NULLABLE": TokenType.NULLABLE,
+ 678        "NUMBER": TokenType.DECIMAL,
+ 679        "NUMERIC": TokenType.DECIMAL,
+ 680        "FIXED": TokenType.DECIMAL,
+ 681        "REAL": TokenType.FLOAT,
+ 682        "FLOAT": TokenType.FLOAT,
+ 683        "FLOAT4": TokenType.FLOAT,
+ 684        "FLOAT8": TokenType.DOUBLE,
+ 685        "DOUBLE": TokenType.DOUBLE,
+ 686        "DOUBLE PRECISION": TokenType.DOUBLE,
+ 687        "JSON": TokenType.JSON,
+ 688        "CHAR": TokenType.CHAR,
+ 689        "CHARACTER": TokenType.CHAR,
+ 690        "NCHAR": TokenType.NCHAR,
+ 691        "VARCHAR": TokenType.VARCHAR,
+ 692        "VARCHAR2": TokenType.VARCHAR,
+ 693        "NVARCHAR": TokenType.NVARCHAR,
+ 694        "NVARCHAR2": TokenType.NVARCHAR,
+ 695        "STR": TokenType.TEXT,
+ 696        "STRING": TokenType.TEXT,
+ 697        "TEXT": TokenType.TEXT,
+ 698        "CLOB": TokenType.TEXT,
+ 699        "LONGVARCHAR": TokenType.TEXT,
+ 700        "BINARY": TokenType.BINARY,
+ 701        "BLOB": TokenType.VARBINARY,
+ 702        "BYTEA": TokenType.VARBINARY,
+ 703        "VARBINARY": TokenType.VARBINARY,
+ 704        "TIME": TokenType.TIME,
+ 705        "TIMESTAMP": TokenType.TIMESTAMP,
+ 706        "TIMESTAMPTZ": TokenType.TIMESTAMPTZ,
+ 707        "TIMESTAMPLTZ": TokenType.TIMESTAMPLTZ,
+ 708        "DATE": TokenType.DATE,
+ 709        "DATETIME": TokenType.DATETIME,
+ 710        "UNIQUE": TokenType.UNIQUE,
+ 711        "STRUCT": TokenType.STRUCT,
+ 712        "VARIANT": TokenType.VARIANT,
+ 713        "ALTER": TokenType.ALTER,
+ 714        "ALTER AGGREGATE": TokenType.COMMAND,
+ 715        "ALTER DEFAULT": TokenType.COMMAND,
+ 716        "ALTER DOMAIN": TokenType.COMMAND,
+ 717        "ALTER ROLE": TokenType.COMMAND,
+ 718        "ALTER RULE": TokenType.COMMAND,
+ 719        "ALTER SEQUENCE": TokenType.COMMAND,
+ 720        "ALTER TYPE": TokenType.COMMAND,
+ 721        "ALTER USER": TokenType.COMMAND,
+ 722        "ALTER VIEW": TokenType.COMMAND,
+ 723        "ANALYZE": TokenType.COMMAND,
+ 724        "CALL": TokenType.COMMAND,
+ 725        "COMMENT": TokenType.COMMENT,
+ 726        "COPY": TokenType.COMMAND,
+ 727        "EXPLAIN": TokenType.COMMAND,
+ 728        "GRANT": TokenType.COMMAND,
+ 729        "OPTIMIZE": TokenType.COMMAND,
+ 730        "PREPARE": TokenType.COMMAND,
+ 731        "TRUNCATE": TokenType.COMMAND,
+ 732        "VACUUM": TokenType.COMMAND,
+ 733    }
+ 734
+ 735    WHITE_SPACE: t.Dict[t.Optional[str], TokenType] = {
+ 736        " ": TokenType.SPACE,
+ 737        "\t": TokenType.SPACE,
+ 738        "\n": TokenType.BREAK,
+ 739        "\r": TokenType.BREAK,
+ 740        "\r\n": TokenType.BREAK,
+ 741    }
  742
- 743    COMMENTS = ["--", ("/*", "*/"), ("{#", "#}")]
- 744    KEYWORD_TRIE = None  # autofilled
- 745
- 746    IDENTIFIER_CAN_START_WITH_DIGIT = False
- 747
- 748    __slots__ = (
- 749        "sql",
- 750        "size",
- 751        "tokens",
- 752        "_start",
- 753        "_current",
- 754        "_line",
- 755        "_col",
- 756        "_comments",
- 757        "_char",
- 758        "_end",
- 759        "_peek",
- 760        "_prev_token_line",
- 761        "_prev_token_comments",
- 762        "_prev_token_type",
- 763    )
- 764
- 765    def __init__(self) -> None:
- 766        self.reset()
- 767
- 768    def reset(self) -> None:
- 769        self.sql = ""
- 770        self.size = 0
- 771        self.tokens: t.List[Token] = []
- 772        self._start = 0
- 773        self._current = 0
- 774        self._line = 1
- 775        self._col = 1
- 776        self._comments: t.List[str] = []
+ 743    COMMANDS = {
+ 744        TokenType.COMMAND,
+ 745        TokenType.EXECUTE,
+ 746        TokenType.FETCH,
+ 747        TokenType.SHOW,
+ 748    }
+ 749
+ 750    COMMAND_PREFIX_TOKENS = {TokenType.SEMICOLON, TokenType.BEGIN}
+ 751
+ 752    # handle numeric literals like in hive (3L = BIGINT)
+ 753    NUMERIC_LITERALS: t.Dict[str, str] = {}
+ 754    ENCODE: t.Optional[str] = None
+ 755
+ 756    COMMENTS = ["--", ("/*", "*/"), ("{#", "#}")]
+ 757    KEYWORD_TRIE: t.Dict = {}  # autofilled
+ 758
+ 759    IDENTIFIER_CAN_START_WITH_DIGIT = False
+ 760
+ 761    __slots__ = (
+ 762        "sql",
+ 763        "size",
+ 764        "tokens",
+ 765        "_start",
+ 766        "_current",
+ 767        "_line",
+ 768        "_col",
+ 769        "_comments",
+ 770        "_char",
+ 771        "_end",
+ 772        "_peek",
+ 773        "_prev_token_line",
+ 774        "_prev_token_comments",
+ 775        "_prev_token_type",
+ 776    )
  777
- 778        self._char = None
- 779        self._end = None
- 780        self._peek = None
- 781        self._prev_token_line = -1
- 782        self._prev_token_comments: t.List[str] = []
- 783        self._prev_token_type = None
- 784
- 785    def tokenize(self, sql: str) -> t.List[Token]:
- 786        """Returns a list of tokens corresponding to the SQL string `sql`."""
- 787        self.reset()
- 788        self.sql = sql
- 789        self.size = len(sql)
- 790        self._scan()
- 791        return self.tokens
- 792
- 793    def _scan(self, until: t.Optional[t.Callable] = None) -> None:
- 794        while self.size and not self._end:
- 795            self._start = self._current
- 796            self._advance()
+ 778    def __init__(self) -> None:
+ 779        self.reset()
+ 780
+ 781    def reset(self) -> None:
+ 782        self.sql = ""
+ 783        self.size = 0
+ 784        self.tokens: t.List[Token] = []
+ 785        self._start = 0
+ 786        self._current = 0
+ 787        self._line = 1
+ 788        self._col = 1
+ 789        self._comments: t.List[str] = []
+ 790
+ 791        self._char = ""
+ 792        self._end = False
+ 793        self._peek = ""
+ 794        self._prev_token_line = -1
+ 795        self._prev_token_comments: t.List[str] = []
+ 796        self._prev_token_type: t.Optional[TokenType] = None
  797
- 798            if self._char is None:
- 799                break
- 800
- 801            if self._char not in self.WHITE_SPACE:
- 802                if self._char.isdigit():
- 803                    self._scan_number()
- 804                elif self._char in self._IDENTIFIERS:
- 805                    self._scan_identifier(self._IDENTIFIERS[self._char])
- 806                else:
- 807                    self._scan_keywords()
- 808
- 809            if until and until():
- 810                break
- 811
- 812    def _chars(self, size: int) -> str:
- 813        if size == 1:
- 814            return self._char  # type: ignore
- 815        start = self._current - 1
- 816        end = start + size
- 817        if end <= self.size:
- 818            return self.sql[start:end]
- 819        return ""
- 820
- 821    def _advance(self, i: int = 1) -> None:
- 822        if self.WHITE_SPACE.get(self._char) is TokenType.BREAK:
- 823            self._set_new_line()
- 824
- 825        self._col += i
- 826        self._current += i
- 827        self._end = self._current >= self.size  # type: ignore
- 828        self._char = self.sql[self._current - 1]  # type: ignore
- 829        self._peek = self.sql[self._current] if self._current < self.size else ""  # type: ignore
+ 798    def tokenize(self, sql: str) -> t.List[Token]:
+ 799        """Returns a list of tokens corresponding to the SQL string `sql`."""
+ 800        self.reset()
+ 801        self.sql = sql
+ 802        self.size = len(sql)
+ 803        try:
+ 804            self._scan()
+ 805        except Exception as e:
+ 806            start = self._current - 50
+ 807            end = self._current + 50
+ 808            start = start if start > 0 else 0
+ 809            end = end if end < self.size else self.size - 1
+ 810            context = self.sql[start:end]
+ 811            raise ValueError(f"Error tokenizing '{context}'") from e
+ 812
+ 813        return self.tokens
+ 814
+ 815    def _scan(self, until: t.Optional[t.Callable] = None) -> None:
+ 816        while self.size and not self._end:
+ 817            self._start = self._current
+ 818            self._advance()
+ 819
+ 820            if self._char is None:
+ 821                break
+ 822
+ 823            if self._char not in self.WHITE_SPACE:
+ 824                if self._char.isdigit():
+ 825                    self._scan_number()
+ 826                elif self._char in self._IDENTIFIERS:
+ 827                    self._scan_identifier(self._IDENTIFIERS[self._char])
+ 828                else:
+ 829                    self._scan_keywords()
  830
- 831    def _set_new_line(self) -> None:
- 832        self._col = 1
- 833        self._line += 1
- 834
- 835    @property
- 836    def _text(self) -> str:
- 837        return self.sql[self._start : self._current]
- 838
- 839    def _add(self, token_type: TokenType, text: t.Optional[str] = None) -> None:
- 840        self._prev_token_line = self._line
- 841        self._prev_token_comments = self._comments
- 842        self._prev_token_type = token_type  # type: ignore
- 843        self.tokens.append(
- 844            Token(
- 845                token_type,
- 846                self._text if text is None else text,
- 847                self._line,
- 848                self._col,
- 849                self._comments,
- 850            )
- 851        )
- 852        self._comments = []
- 853
- 854        # If we have either a semicolon or a begin token before the command's token, we'll parse
- 855        # whatever follows the command's token as a string
- 856        if (
- 857            token_type in self.COMMANDS
- 858            and self._peek != ";"
- 859            and (len(self.tokens) == 1 or self.tokens[-2].token_type in self.COMMAND_PREFIX_TOKENS)
- 860        ):
- 861            start = self._current
- 862            tokens = len(self.tokens)
- 863            self._scan(lambda: self._peek == ";")
- 864            self.tokens = self.tokens[:tokens]
- 865            text = self.sql[start : self._current].strip()
- 866            if text:
- 867                self._add(TokenType.STRING, text)
- 868
- 869    def _scan_keywords(self) -> None:
- 870        size = 0
- 871        word = None
- 872        chars = self._text
- 873        char = chars
- 874        prev_space = False
- 875        skip = False
- 876        trie = self.KEYWORD_TRIE
- 877        single_token = char in self.SINGLE_TOKENS
- 878
- 879        while chars:
- 880            if skip:
- 881                result = 1
- 882            else:
- 883                result, trie = in_trie(trie, char.upper())  # type: ignore
- 884
- 885            if result == 0:
- 886                break
- 887            if result == 2:
- 888                word = chars
- 889            size += 1
- 890            end = self._current - 1 + size
- 891
- 892            if end < self.size:
- 893                char = self.sql[end]
- 894                single_token = single_token or char in self.SINGLE_TOKENS
- 895                is_space = char in self.WHITE_SPACE
- 896
- 897                if not is_space or not prev_space:
- 898                    if is_space:
- 899                        char = " "
- 900                    chars += char
- 901                    prev_space = is_space
- 902                    skip = False
- 903                else:
- 904                    skip = True
- 905            else:
- 906                chars = " "
- 907
- 908        word = None if not single_token and chars[-1] not in self.WHITE_SPACE else word
- 909
- 910        if not word:
- 911            if self._char in self.SINGLE_TOKENS:
- 912                self._add(self.SINGLE_TOKENS[self._char], text=self._char)  # type: ignore
- 913                return
- 914            self._scan_var()
- 915            return
- 916
- 917        if self._scan_string(word):
- 918            return
- 919        if self._scan_formatted_string(word):
- 920            return
- 921        if self._scan_comment(word):
- 922            return
- 923
- 924        self._advance(size - 1)
- 925        word = word.upper()
- 926        self._add(self.KEYWORDS[word], text=word)
- 927
- 928    def _scan_comment(self, comment_start: str) -> bool:
- 929        if comment_start not in self._COMMENTS:  # type: ignore
- 930            return False
+ 831            if until and until():
+ 832                break
+ 833
+ 834        if self.tokens:
+ 835            self.tokens[-1].comments.extend(self._comments)
+ 836
+ 837    def _chars(self, size: int) -> str:
+ 838        if size == 1:
+ 839            return self._char
+ 840        start = self._current - 1
+ 841        end = start + size
+ 842        if end <= self.size:
+ 843            return self.sql[start:end]
+ 844        return ""
+ 845
+ 846    def _advance(self, i: int = 1) -> None:
+ 847        if self.WHITE_SPACE.get(self._char) is TokenType.BREAK:
+ 848            self._col = 1
+ 849            self._line += 1
+ 850        else:
+ 851            self._col += i
+ 852
+ 853        self._current += i
+ 854        self._end = self._current >= self.size
+ 855        self._char = self.sql[self._current - 1]
+ 856        self._peek = "" if self._end else self.sql[self._current]
+ 857
+ 858    @property
+ 859    def _text(self) -> str:
+ 860        return self.sql[self._start : self._current]
+ 861
+ 862    def _add(self, token_type: TokenType, text: t.Optional[str] = None) -> None:
+ 863        self._prev_token_line = self._line
+ 864        self._prev_token_comments = self._comments
+ 865        self._prev_token_type = token_type
+ 866        self.tokens.append(
+ 867            Token(
+ 868                token_type,
+ 869                self._text if text is None else text,
+ 870                self._line,
+ 871                self._col,
+ 872                self._current,
+ 873                self._comments,
+ 874            )
+ 875        )
+ 876        self._comments = []
+ 877
+ 878        # If we have either a semicolon or a begin token before the command's token, we'll parse
+ 879        # whatever follows the command's token as a string
+ 880        if (
+ 881            token_type in self.COMMANDS
+ 882            and self._peek != ";"
+ 883            and (len(self.tokens) == 1 or self.tokens[-2].token_type in self.COMMAND_PREFIX_TOKENS)
+ 884        ):
+ 885            start = self._current
+ 886            tokens = len(self.tokens)
+ 887            self._scan(lambda: self._peek == ";")
+ 888            self.tokens = self.tokens[:tokens]
+ 889            text = self.sql[start : self._current].strip()
+ 890            if text:
+ 891                self._add(TokenType.STRING, text)
+ 892
+ 893    def _scan_keywords(self) -> None:
+ 894        size = 0
+ 895        word = None
+ 896        chars = self._text
+ 897        char = chars
+ 898        prev_space = False
+ 899        skip = False
+ 900        trie = self.KEYWORD_TRIE
+ 901        single_token = char in self.SINGLE_TOKENS
+ 902
+ 903        while chars:
+ 904            if skip:
+ 905                result = 1
+ 906            else:
+ 907                result, trie = in_trie(trie, char.upper())
+ 908
+ 909            if result == 0:
+ 910                break
+ 911            if result == 2:
+ 912                word = chars
+ 913            size += 1
+ 914            end = self._current - 1 + size
+ 915
+ 916            if end < self.size:
+ 917                char = self.sql[end]
+ 918                single_token = single_token or char in self.SINGLE_TOKENS
+ 919                is_space = char in self.WHITE_SPACE
+ 920
+ 921                if not is_space or not prev_space:
+ 922                    if is_space:
+ 923                        char = " "
+ 924                    chars += char
+ 925                    prev_space = is_space
+ 926                    skip = False
+ 927                else:
+ 928                    skip = True
+ 929            else:
+ 930                chars = " "
  931
- 932        comment_start_line = self._line
- 933        comment_start_size = len(comment_start)
- 934        comment_end = self._COMMENTS[comment_start]  # type: ignore
- 935
- 936        if comment_end:
- 937            comment_end_size = len(comment_end)
- 938
- 939            while not self._end and self._chars(comment_end_size) != comment_end:
- 940                self._advance()
- 941
- 942            self._comments.append(self._text[comment_start_size : -comment_end_size + 1])  # type: ignore
- 943            self._advance(comment_end_size - 1)
- 944        else:
- 945            while not self._end and not self.WHITE_SPACE.get(self._peek) is TokenType.BREAK:
- 946                self._advance()
- 947            self._comments.append(self._text[comment_start_size:])  # type: ignore
- 948
- 949        # Leading comment is attached to the succeeding token, whilst trailing comment to the preceding.
- 950        # Multiple consecutive comments are preserved by appending them to the current comments list.
- 951        if comment_start_line == self._prev_token_line or self._end:
- 952            self.tokens[-1].comments.extend(self._comments)
- 953            self._comments = []
- 954            self._prev_token_line = self._line
+ 932        word = None if not single_token and chars[-1] not in self.WHITE_SPACE else word
+ 933
+ 934        if not word:
+ 935            if self._char in self.SINGLE_TOKENS:
+ 936                self._add(self.SINGLE_TOKENS[self._char], text=self._char)
+ 937                return
+ 938            self._scan_var()
+ 939            return
+ 940
+ 941        if self._scan_string(word):
+ 942            return
+ 943        if self._scan_formatted_string(word):
+ 944            return
+ 945        if self._scan_comment(word):
+ 946            return
+ 947
+ 948        self._advance(size - 1)
+ 949        word = word.upper()
+ 950        self._add(self.KEYWORDS[word], text=word)
+ 951
+ 952    def _scan_comment(self, comment_start: str) -> bool:
+ 953        if comment_start not in self._COMMENTS:
+ 954            return False
  955
- 956        return True
- 957
- 958    def _scan_number(self) -> None:
- 959        if self._char == "0":
- 960            peek = self._peek.upper()  # type: ignore
- 961            if peek == "B":
- 962                return self._scan_bits()
- 963            elif peek == "X":
- 964                return self._scan_hex()
- 965
- 966        decimal = False
- 967        scientific = 0
- 968
- 969        while True:
- 970            if self._peek.isdigit():  # type: ignore
- 971                self._advance()
- 972            elif self._peek == "." and not decimal:
- 973                decimal = True
- 974                self._advance()
- 975            elif self._peek in ("-", "+") and scientific == 1:
- 976                scientific += 1
- 977                self._advance()
- 978            elif self._peek.upper() == "E" and not scientific:  # type: ignore
- 979                scientific += 1
- 980                self._advance()
- 981            elif self._peek.isidentifier():  # type: ignore
- 982                number_text = self._text
- 983                literal = []
- 984
- 985                while self._peek.strip() and self._peek not in self.SINGLE_TOKENS:  # type: ignore
- 986                    literal.append(self._peek.upper())  # type: ignore
- 987                    self._advance()
- 988
- 989                literal = "".join(literal)  # type: ignore
- 990                token_type = self.KEYWORDS.get(self.NUMERIC_LITERALS.get(literal))  # type: ignore
+ 956        comment_start_line = self._line
+ 957        comment_start_size = len(comment_start)
+ 958        comment_end = self._COMMENTS[comment_start]
+ 959
+ 960        if comment_end:
+ 961            # Skip the comment's start delimiter
+ 962            self._advance(comment_start_size)
+ 963
+ 964            comment_end_size = len(comment_end)
+ 965            while not self._end and self._chars(comment_end_size) != comment_end:
+ 966                self._advance()
+ 967
+ 968            self._comments.append(self._text[comment_start_size : -comment_end_size + 1])
+ 969            self._advance(comment_end_size - 1)
+ 970        else:
+ 971            while not self._end and not self.WHITE_SPACE.get(self._peek) is TokenType.BREAK:
+ 972                self._advance()
+ 973            self._comments.append(self._text[comment_start_size:])
+ 974
+ 975        # Leading comment is attached to the succeeding token, whilst trailing comment to the preceding.
+ 976        # Multiple consecutive comments are preserved by appending them to the current comments list.
+ 977        if comment_start_line == self._prev_token_line:
+ 978            self.tokens[-1].comments.extend(self._comments)
+ 979            self._comments = []
+ 980            self._prev_token_line = self._line
+ 981
+ 982        return True
+ 983
+ 984    def _scan_number(self) -> None:
+ 985        if self._char == "0":
+ 986            peek = self._peek.upper()
+ 987            if peek == "B":
+ 988                return self._scan_bits()
+ 989            elif peek == "X":
+ 990                return self._scan_hex()
  991
- 992                if token_type:
- 993                    self._add(TokenType.NUMBER, number_text)
- 994                    self._add(TokenType.DCOLON, "::")
- 995                    return self._add(token_type, literal)  # type: ignore
- 996                elif self.IDENTIFIER_CAN_START_WITH_DIGIT:
- 997                    return self._add(TokenType.VAR)
- 998
- 999                self._add(TokenType.NUMBER, number_text)
-1000                return self._advance(-len(literal))
-1001            else:
-1002                return self._add(TokenType.NUMBER)
-1003
-1004    def _scan_bits(self) -> None:
-1005        self._advance()
-1006        value = self._extract_value()
-1007        try:
-1008            self._add(TokenType.BIT_STRING, f"{int(value, 2)}")
-1009        except ValueError:
-1010            self._add(TokenType.IDENTIFIER)
-1011
-1012    def _scan_hex(self) -> None:
-1013        self._advance()
-1014        value = self._extract_value()
-1015        try:
-1016            self._add(TokenType.HEX_STRING, f"{int(value, 16)}")
-1017        except ValueError:
-1018            self._add(TokenType.IDENTIFIER)
-1019
-1020    def _extract_value(self) -> str:
-1021        while True:
-1022            char = self._peek.strip()  # type: ignore
-1023            if char and char not in self.SINGLE_TOKENS:
-1024                self._advance()
-1025            else:
-1026                break
-1027
-1028        return self._text
-1029
-1030    def _scan_string(self, quote: str) -> bool:
-1031        quote_end = self._QUOTES.get(quote)  # type: ignore
-1032        if quote_end is None:
-1033            return False
-1034
-1035        self._advance(len(quote))
-1036        text = self._extract_string(quote_end)
-1037        text = text.encode(self.ENCODE).decode(self.ENCODE) if self.ENCODE else text  # type: ignore
-1038        self._add(TokenType.NATIONAL if quote[0].upper() == "N" else TokenType.STRING, text)
-1039        return True
-1040
-1041    # X'1234, b'0110', E'\\\\\' etc.
-1042    def _scan_formatted_string(self, string_start: str) -> bool:
-1043        if string_start in self._HEX_STRINGS:  # type: ignore
-1044            delimiters = self._HEX_STRINGS  # type: ignore
-1045            token_type = TokenType.HEX_STRING
-1046            base = 16
-1047        elif string_start in self._BIT_STRINGS:  # type: ignore
-1048            delimiters = self._BIT_STRINGS  # type: ignore
-1049            token_type = TokenType.BIT_STRING
-1050            base = 2
-1051        elif string_start in self._BYTE_STRINGS:  # type: ignore
-1052            delimiters = self._BYTE_STRINGS  # type: ignore
-1053            token_type = TokenType.BYTE_STRING
-1054            base = None
-1055        else:
-1056            return False
-1057
-1058        self._advance(len(string_start))
-1059        string_end = delimiters.get(string_start)
-1060        text = self._extract_string(string_end)
-1061
-1062        if base is None:
-1063            self._add(token_type, text)
-1064        else:
-1065            try:
-1066                self._add(token_type, f"{int(text, base)}")
-1067            except:
-1068                raise RuntimeError(
-1069                    f"Numeric string contains invalid characters from {self._line}:{self._start}"
-1070                )
-1071
-1072        return True
-1073
-1074    def _scan_identifier(self, identifier_end: str) -> None:
-1075        text = ""
-1076        identifier_end_is_escape = identifier_end in self._IDENTIFIER_ESCAPES
-1077
-1078        while True:
-1079            if self._end:
-1080                raise RuntimeError(f"Missing {identifier_end} from {self._line}:{self._start}")
-1081
-1082            self._advance()
-1083            if self._char == identifier_end:
-1084                if identifier_end_is_escape and self._peek == identifier_end:
-1085                    text += identifier_end  # type: ignore
-1086                    self._advance()
-1087                    continue
-1088
-1089                break
-1090
-1091            text += self._char  # type: ignore
-1092
-1093        self._add(TokenType.IDENTIFIER, text)
-1094
-1095    def _scan_var(self) -> None:
-1096        while True:
-1097            char = self._peek.strip()  # type: ignore
-1098            if char and char not in self.SINGLE_TOKENS:
-1099                self._advance()
-1100            else:
-1101                break
-1102        self._add(
-1103            TokenType.VAR
-1104            if self._prev_token_type == TokenType.PARAMETER
-1105            else self.KEYWORDS.get(self._text.upper(), TokenType.VAR)
-1106        )
-1107
-1108    def _extract_string(self, delimiter: str) -> str:
-1109        text = ""
-1110        delim_size = len(delimiter)
-1111
-1112        while True:
-1113            if self._char in self._STRING_ESCAPES and (
-1114                self._peek == delimiter or self._peek in self._STRING_ESCAPES
-1115            ):
-1116                if self._peek == delimiter:
-1117                    text += self._peek  # type: ignore
-1118                else:
-1119                    text += self._char + self._peek  # type: ignore
-1120
-1121                if self._current + 1 < self.size:
-1122                    self._advance(2)
-1123                else:
-1124                    raise RuntimeError(f"Missing {delimiter} from {self._line}:{self._current}")
+ 992        decimal = False
+ 993        scientific = 0
+ 994
+ 995        while True:
+ 996            if self._peek.isdigit():
+ 997                self._advance()
+ 998            elif self._peek == "." and not decimal:
+ 999                decimal = True
+1000                self._advance()
+1001            elif self._peek in ("-", "+") and scientific == 1:
+1002                scientific += 1
+1003                self._advance()
+1004            elif self._peek.upper() == "E" and not scientific:
+1005                scientific += 1
+1006                self._advance()
+1007            elif self._peek.isidentifier():
+1008                number_text = self._text
+1009                literal = ""
+1010
+1011                while self._peek.strip() and self._peek not in self.SINGLE_TOKENS:
+1012                    literal += self._peek.upper()
+1013                    self._advance()
+1014
+1015                token_type = self.KEYWORDS.get(self.NUMERIC_LITERALS.get(literal))
+1016
+1017                if token_type:
+1018                    self._add(TokenType.NUMBER, number_text)
+1019                    self._add(TokenType.DCOLON, "::")
+1020                    return self._add(token_type, literal)
+1021                elif self.IDENTIFIER_CAN_START_WITH_DIGIT:
+1022                    return self._add(TokenType.VAR)
+1023
+1024                self._add(TokenType.NUMBER, number_text)
+1025                return self._advance(-len(literal))
+1026            else:
+1027                return self._add(TokenType.NUMBER)
+1028
+1029    def _scan_bits(self) -> None:
+1030        self._advance()
+1031        value = self._extract_value()
+1032        try:
+1033            self._add(TokenType.BIT_STRING, f"{int(value, 2)}")
+1034        except ValueError:
+1035            self._add(TokenType.IDENTIFIER)
+1036
+1037    def _scan_hex(self) -> None:
+1038        self._advance()
+1039        value = self._extract_value()
+1040        try:
+1041            self._add(TokenType.HEX_STRING, f"{int(value, 16)}")
+1042        except ValueError:
+1043            self._add(TokenType.IDENTIFIER)
+1044
+1045    def _extract_value(self) -> str:
+1046        while True:
+1047            char = self._peek.strip()
+1048            if char and char not in self.SINGLE_TOKENS:
+1049                self._advance()
+1050            else:
+1051                break
+1052
+1053        return self._text
+1054
+1055    def _scan_string(self, quote: str) -> bool:
+1056        quote_end = self._QUOTES.get(quote)
+1057        if quote_end is None:
+1058            return False
+1059
+1060        self._advance(len(quote))
+1061        text = self._extract_string(quote_end)
+1062        text = text.encode(self.ENCODE).decode(self.ENCODE) if self.ENCODE else text
+1063        self._add(TokenType.NATIONAL if quote[0].upper() == "N" else TokenType.STRING, text)
+1064        return True
+1065
+1066    # X'1234, b'0110', E'\\\\\' etc.
+1067    def _scan_formatted_string(self, string_start: str) -> bool:
+1068        if string_start in self._HEX_STRINGS:
+1069            delimiters = self._HEX_STRINGS
+1070            token_type = TokenType.HEX_STRING
+1071            base = 16
+1072        elif string_start in self._BIT_STRINGS:
+1073            delimiters = self._BIT_STRINGS
+1074            token_type = TokenType.BIT_STRING
+1075            base = 2
+1076        elif string_start in self._BYTE_STRINGS:
+1077            delimiters = self._BYTE_STRINGS
+1078            token_type = TokenType.BYTE_STRING
+1079            base = None
+1080        else:
+1081            return False
+1082
+1083        self._advance(len(string_start))
+1084        string_end = delimiters[string_start]
+1085        text = self._extract_string(string_end)
+1086
+1087        if base is None:
+1088            self._add(token_type, text)
+1089        else:
+1090            try:
+1091                self._add(token_type, f"{int(text, base)}")
+1092            except:
+1093                raise RuntimeError(
+1094                    f"Numeric string contains invalid characters from {self._line}:{self._start}"
+1095                )
+1096
+1097        return True
+1098
+1099    def _scan_identifier(self, identifier_end: str) -> None:
+1100        text = ""
+1101        identifier_end_is_escape = identifier_end in self._IDENTIFIER_ESCAPES
+1102
+1103        while True:
+1104            if self._end:
+1105                raise RuntimeError(f"Missing {identifier_end} from {self._line}:{self._start}")
+1106
+1107            self._advance()
+1108            if self._char == identifier_end:
+1109                if identifier_end_is_escape and self._peek == identifier_end:
+1110                    text += identifier_end
+1111                    self._advance()
+1112                    continue
+1113
+1114                break
+1115
+1116            text += self._char
+1117
+1118        self._add(TokenType.IDENTIFIER, text)
+1119
+1120    def _scan_var(self) -> None:
+1121        while True:
+1122            char = self._peek.strip()
+1123            if char and (char in self.VAR_SINGLE_TOKENS or char not in self.SINGLE_TOKENS):
+1124                self._advance()
 1125            else:
-1126                if self._chars(delim_size) == delimiter:
-1127                    if delim_size > 1:
-1128                        self._advance(delim_size - 1)
-1129                    break
-1130
-1131                if self._end:
-1132                    raise RuntimeError(f"Missing {delimiter} from {self._line}:{self._start}")
-1133                text += self._char  # type: ignore
-1134                self._advance()
-1135
-1136        return text
+1126                break
+1127        self._add(
+1128            TokenType.VAR
+1129            if self._prev_token_type == TokenType.PARAMETER
+1130            else self.KEYWORDS.get(self._text.upper(), TokenType.VAR)
+1131        )
+1132
+1133    def _extract_string(self, delimiter: str) -> str:
+1134        text = ""
+1135        delim_size = len(delimiter)
+1136
+1137        while True:
+1138            if self._char in self._STRING_ESCAPES and (
+1139                self._peek == delimiter or self._peek in self._STRING_ESCAPES
+1140            ):
+1141                if self._peek == delimiter:
+1142                    text += self._peek
+1143                else:
+1144                    text += self._char + self._peek
+1145
+1146                if self._current + 1 < self.size:
+1147                    self._advance(2)
+1148                else:
+1149                    raise RuntimeError(f"Missing {delimiter} from {self._line}:{self._current}")
+1150            else:
+1151                if self._chars(delim_size) == delimiter:
+1152                    if delim_size > 1:
+1153                        self._advance(delim_size - 1)
+1154                    break
+1155
+1156                if self._end:
+1157                    raise RuntimeError(f"Missing {delimiter} from {self._line}:{self._start}")
+1158                text += self._char
+1159                self._advance()
+1160
+1161        return text
 
@@ -6952,22 +7050,22 @@
-
768    def reset(self) -> None:
-769        self.sql = ""
-770        self.size = 0
-771        self.tokens: t.List[Token] = []
-772        self._start = 0
-773        self._current = 0
-774        self._line = 1
-775        self._col = 1
-776        self._comments: t.List[str] = []
-777
-778        self._char = None
-779        self._end = None
-780        self._peek = None
-781        self._prev_token_line = -1
-782        self._prev_token_comments: t.List[str] = []
-783        self._prev_token_type = None
+            
781    def reset(self) -> None:
+782        self.sql = ""
+783        self.size = 0
+784        self.tokens: t.List[Token] = []
+785        self._start = 0
+786        self._current = 0
+787        self._line = 1
+788        self._col = 1
+789        self._comments: t.List[str] = []
+790
+791        self._char = ""
+792        self._end = False
+793        self._peek = ""
+794        self._prev_token_line = -1
+795        self._prev_token_comments: t.List[str] = []
+796        self._prev_token_type: t.Optional[TokenType] = None
 
@@ -6985,13 +7083,22 @@
-
785    def tokenize(self, sql: str) -> t.List[Token]:
-786        """Returns a list of tokens corresponding to the SQL string `sql`."""
-787        self.reset()
-788        self.sql = sql
-789        self.size = len(sql)
-790        self._scan()
-791        return self.tokens
+            
798    def tokenize(self, sql: str) -> t.List[Token]:
+799        """Returns a list of tokens corresponding to the SQL string `sql`."""
+800        self.reset()
+801        self.sql = sql
+802        self.size = len(sql)
+803        try:
+804            self._scan()
+805        except Exception as e:
+806            start = self._current - 50
+807            end = self._current + 50
+808            start = start if start > 0 else 0
+809            end = end if end < self.size else self.size - 1
+810            context = self.sql[start:end]
+811            raise ValueError(f"Error tokenizing '{context}'") from e
+812
+813        return self.tokens
 
diff --git a/docs/sqlglot/transforms.html b/docs/sqlglot/transforms.html index b3cb63e..9694adf 100644 --- a/docs/sqlglot/transforms.html +++ b/docs/sqlglot/transforms.html @@ -3,7 +3,7 @@ - + sqlglot.transforms API documentation @@ -43,10 +43,16 @@ remove_precision_parameterized_types
  • - preprocess + unnest_to_explode +
  • +
  • + explode_to_unnest +
  • +
  • + remove_target_from_merge
  • - delegate + preprocess
  • @@ -176,79 +182,172 @@
    103 if isinstance(expr, exp.Window): 104 alias = find_new_name(expression.named_selects, "_w") 105 expression.select(exp.alias_(expr.copy(), alias), copy=False) -106 expr.replace(exp.column(alias)) -107 elif expr.name not in expression.named_selects: -108 expression.select(expr.copy(), copy=False) -109 -110 return outer_selects.from_(expression.subquery(alias="_t")).where(qualify_filters) -111 -112 return expression +106 column = exp.column(alias) +107 if isinstance(expr.parent, exp.Qualify): +108 qualify_filters = column +109 else: +110 expr.replace(column) +111 elif expr.name not in expression.named_selects: +112 expression.select(expr.copy(), copy=False) 113 -114 -115def remove_precision_parameterized_types(expression: exp.Expression) -> exp.Expression: -116 """ -117 Some dialects only allow the precision for parameterized types to be defined in the DDL and not in -118 other expressions. This transforms removes the precision from parameterized types in expressions. -119 """ -120 return expression.transform( -121 lambda node: exp.DataType( -122 **{ -123 **node.args, -124 "expressions": [ -125 node_expression -126 for node_expression in node.expressions -127 if isinstance(node_expression, exp.DataType) -128 ], -129 } -130 ) -131 if isinstance(node, exp.DataType) -132 else node, -133 ) -134 -135 -136def preprocess( -137 transforms: t.List[t.Callable[[exp.Expression], exp.Expression]], -138 to_sql: t.Callable[[Generator, exp.Expression], str], -139) -> t.Callable[[Generator, exp.Expression], str]: -140 """ -141 Creates a new transform by chaining a sequence of transformations and converts the resulting -142 expression to SQL, using an appropriate `Generator.TRANSFORMS` function. -143 -144 Args: -145 transforms: sequence of transform functions. These will be called in order. -146 to_sql: final transform that converts the resulting expression to a SQL string. -147 -148 Returns: -149 Function that can be used as a generator transform. -150 """ +114 return outer_selects.from_(expression.subquery(alias="_t")).where(qualify_filters) +115 +116 return expression +117 +118 +119def remove_precision_parameterized_types(expression: exp.Expression) -> exp.Expression: +120 """ +121 Some dialects only allow the precision for parameterized types to be defined in the DDL and not in +122 other expressions. This transforms removes the precision from parameterized types in expressions. +123 """ +124 return expression.transform( +125 lambda node: exp.DataType( +126 **{ +127 **node.args, +128 "expressions": [ +129 node_expression +130 for node_expression in node.expressions +131 if isinstance(node_expression, exp.DataType) +132 ], +133 } +134 ) +135 if isinstance(node, exp.DataType) +136 else node, +137 ) +138 +139 +140def unnest_to_explode(expression: exp.Expression) -> exp.Expression: +141 """Convert cross join unnest into lateral view explode (used in presto -> hive).""" +142 if isinstance(expression, exp.Select): +143 for join in expression.args.get("joins") or []: +144 unnest = join.this +145 +146 if isinstance(unnest, exp.Unnest): +147 alias = unnest.args.get("alias") +148 udtf = exp.Posexplode if unnest.args.get("ordinality") else exp.Explode +149 +150 expression.args["joins"].remove(join) 151 -152 def _to_sql(self, expression): -153 expression = transforms[0](expression.copy()) -154 for t in transforms[1:]: -155 expression = t(expression) -156 return to_sql(self, expression) -157 -158 return _to_sql -159 -160 -161def delegate(attr: str) -> t.Callable: -162 """ -163 Create a new method that delegates to `attr`. This is useful for creating `Generator.TRANSFORMS` -164 functions that delegate to existing generator methods. -165 """ -166 -167 def _transform(self, *args, **kwargs): -168 return getattr(self, attr)(*args, **kwargs) -169 -170 return _transform +152 for e, column in zip(unnest.expressions, alias.columns if alias else []): +153 expression.append( +154 "laterals", +155 exp.Lateral( +156 this=udtf(this=e), +157 view=True, +158 alias=exp.TableAlias(this=alias.this, columns=[column]), # type: ignore +159 ), +160 ) +161 return expression +162 +163 +164def explode_to_unnest(expression: exp.Expression) -> exp.Expression: +165 """Convert explode/posexplode into unnest (used in hive -> presto).""" +166 if isinstance(expression, exp.Select): +167 from sqlglot.optimizer.scope import build_scope +168 +169 taken_select_names = set(expression.named_selects) +170 taken_source_names = set(build_scope(expression).selected_sources) 171 -172 -173UNALIAS_GROUP = {exp.Group: preprocess([unalias_group], delegate("group_sql"))} -174ELIMINATE_DISTINCT_ON = {exp.Select: preprocess([eliminate_distinct_on], delegate("select_sql"))} -175ELIMINATE_QUALIFY = {exp.Select: preprocess([eliminate_qualify], delegate("select_sql"))} -176REMOVE_PRECISION_PARAMETERIZED_TYPES = { -177 exp.Cast: preprocess([remove_precision_parameterized_types], delegate("cast_sql")) -178} +172 for select in expression.selects: +173 to_replace = select +174 +175 pos_alias = "" +176 explode_alias = "" +177 +178 if isinstance(select, exp.Alias): +179 explode_alias = select.alias +180 select = select.this +181 elif isinstance(select, exp.Aliases): +182 pos_alias = select.aliases[0].name +183 explode_alias = select.aliases[1].name +184 select = select.this +185 +186 if isinstance(select, (exp.Explode, exp.Posexplode)): +187 is_posexplode = isinstance(select, exp.Posexplode) +188 +189 explode_arg = select.this +190 unnest = exp.Unnest(expressions=[explode_arg.copy()], ordinality=is_posexplode) +191 +192 # This ensures that we won't use [POS]EXPLODE's argument as a new selection +193 if isinstance(explode_arg, exp.Column): +194 taken_select_names.add(explode_arg.output_name) +195 +196 unnest_source_alias = find_new_name(taken_source_names, "_u") +197 taken_source_names.add(unnest_source_alias) +198 +199 if not explode_alias: +200 explode_alias = find_new_name(taken_select_names, "col") +201 taken_select_names.add(explode_alias) +202 +203 if is_posexplode: +204 pos_alias = find_new_name(taken_select_names, "pos") +205 taken_select_names.add(pos_alias) +206 +207 if is_posexplode: +208 column_names = [explode_alias, pos_alias] +209 to_replace.pop() +210 expression.select(pos_alias, explode_alias, copy=False) +211 else: +212 column_names = [explode_alias] +213 to_replace.replace(exp.column(explode_alias)) +214 +215 unnest = exp.alias_(unnest, unnest_source_alias, table=column_names) +216 +217 if not expression.args.get("from"): +218 expression.from_(unnest, copy=False) +219 else: +220 expression.join(unnest, join_type="CROSS", copy=False) +221 +222 return expression +223 +224 +225def remove_target_from_merge(expression: exp.Expression) -> exp.Expression: +226 """Remove table refs from columns in when statements.""" +227 if isinstance(expression, exp.Merge): +228 alias = expression.this.args.get("alias") +229 targets = {expression.this.this} +230 if alias: +231 targets.add(alias.this) +232 +233 for when in expression.expressions: +234 when.transform( +235 lambda node: exp.column(node.name) +236 if isinstance(node, exp.Column) and node.args.get("table") in targets +237 else node, +238 copy=False, +239 ) +240 return expression +241 +242 +243def preprocess( +244 transforms: t.List[t.Callable[[exp.Expression], exp.Expression]], +245) -> t.Callable[[Generator, exp.Expression], str]: +246 """ +247 Creates a new transform by chaining a sequence of transformations and converts the resulting +248 expression to SQL, using an appropriate `Generator.TRANSFORMS` function. +249 +250 Args: +251 transforms: sequence of transform functions. These will be called in order. +252 +253 Returns: +254 Function that can be used as a generator transform. +255 """ +256 +257 def _to_sql(self, expression: exp.Expression) -> str: +258 expression = transforms[0](expression.copy()) +259 for t in transforms[1:]: +260 expression = t(expression) +261 return getattr(self, expression.key + "_sql")(expression) +262 +263 return _to_sql +264 +265 +266UNALIAS_GROUP = {exp.Group: preprocess([unalias_group])} +267ELIMINATE_DISTINCT_ON = {exp.Select: preprocess([eliminate_distinct_on])} +268ELIMINATE_QUALIFY = {exp.Select: preprocess([eliminate_qualify])} +269REMOVE_PRECISION_PARAMETERIZED_TYPES = { +270 exp.Cast: preprocess([remove_precision_parameterized_types]) +271}
    @@ -429,13 +528,17 @@ 104 if isinstance(expr, exp.Window): 105 alias = find_new_name(expression.named_selects, "_w") 106 expression.select(exp.alias_(expr.copy(), alias), copy=False) -107 expr.replace(exp.column(alias)) -108 elif expr.name not in expression.named_selects: -109 expression.select(expr.copy(), copy=False) -110 -111 return outer_selects.from_(expression.subquery(alias="_t")).where(qualify_filters) -112 -113 return expression +107 column = exp.column(alias) +108 if isinstance(expr.parent, exp.Qualify): +109 qualify_filters = column +110 else: +111 expr.replace(column) +112 elif expr.name not in expression.named_selects: +113 expression.select(expr.copy(), copy=False) +114 +115 return outer_selects.from_(expression.subquery(alias="_t")).where(qualify_filters) +116 +117 return expression
    @@ -463,25 +566,25 @@ otherwise we won't be able to refer to it in the outer query's WHERE clause.

    -
    116def remove_precision_parameterized_types(expression: exp.Expression) -> exp.Expression:
    -117    """
    -118    Some dialects only allow the precision for parameterized types to be defined in the DDL and not in
    -119    other expressions. This transforms removes the precision from parameterized types in expressions.
    -120    """
    -121    return expression.transform(
    -122        lambda node: exp.DataType(
    -123            **{
    -124                **node.args,
    -125                "expressions": [
    -126                    node_expression
    -127                    for node_expression in node.expressions
    -128                    if isinstance(node_expression, exp.DataType)
    -129                ],
    -130            }
    -131        )
    -132        if isinstance(node, exp.DataType)
    -133        else node,
    -134    )
    +            
    120def remove_precision_parameterized_types(expression: exp.Expression) -> exp.Expression:
    +121    """
    +122    Some dialects only allow the precision for parameterized types to be defined in the DDL and not in
    +123    other expressions. This transforms removes the precision from parameterized types in expressions.
    +124    """
    +125    return expression.transform(
    +126        lambda node: exp.DataType(
    +127            **{
    +128                **node.args,
    +129                "expressions": [
    +130                    node_expression
    +131                    for node_expression in node.expressions
    +132                    if isinstance(node_expression, exp.DataType)
    +133                ],
    +134            }
    +135        )
    +136        if isinstance(node, exp.DataType)
    +137        else node,
    +138    )
     
    @@ -490,41 +593,193 @@ other expressions. This transforms removes the precision from parameterized type
    + +
    + +
    + + def + unnest_to_explode( expression: sqlglot.expressions.Expression) -> sqlglot.expressions.Expression: + + + +
    + +
    141def unnest_to_explode(expression: exp.Expression) -> exp.Expression:
    +142    """Convert cross join unnest into lateral view explode (used in presto -> hive)."""
    +143    if isinstance(expression, exp.Select):
    +144        for join in expression.args.get("joins") or []:
    +145            unnest = join.this
    +146
    +147            if isinstance(unnest, exp.Unnest):
    +148                alias = unnest.args.get("alias")
    +149                udtf = exp.Posexplode if unnest.args.get("ordinality") else exp.Explode
    +150
    +151                expression.args["joins"].remove(join)
    +152
    +153                for e, column in zip(unnest.expressions, alias.columns if alias else []):
    +154                    expression.append(
    +155                        "laterals",
    +156                        exp.Lateral(
    +157                            this=udtf(this=e),
    +158                            view=True,
    +159                            alias=exp.TableAlias(this=alias.this, columns=[column]),  # type: ignore
    +160                        ),
    +161                    )
    +162    return expression
    +
    + + +

    Convert cross join unnest into lateral view explode (used in presto -> hive).

    +
    + + +
    +
    + +
    + + def + explode_to_unnest( expression: sqlglot.expressions.Expression) -> sqlglot.expressions.Expression: + + + +
    + +
    165def explode_to_unnest(expression: exp.Expression) -> exp.Expression:
    +166    """Convert explode/posexplode into unnest (used in hive -> presto)."""
    +167    if isinstance(expression, exp.Select):
    +168        from sqlglot.optimizer.scope import build_scope
    +169
    +170        taken_select_names = set(expression.named_selects)
    +171        taken_source_names = set(build_scope(expression).selected_sources)
    +172
    +173        for select in expression.selects:
    +174            to_replace = select
    +175
    +176            pos_alias = ""
    +177            explode_alias = ""
    +178
    +179            if isinstance(select, exp.Alias):
    +180                explode_alias = select.alias
    +181                select = select.this
    +182            elif isinstance(select, exp.Aliases):
    +183                pos_alias = select.aliases[0].name
    +184                explode_alias = select.aliases[1].name
    +185                select = select.this
    +186
    +187            if isinstance(select, (exp.Explode, exp.Posexplode)):
    +188                is_posexplode = isinstance(select, exp.Posexplode)
    +189
    +190                explode_arg = select.this
    +191                unnest = exp.Unnest(expressions=[explode_arg.copy()], ordinality=is_posexplode)
    +192
    +193                # This ensures that we won't use [POS]EXPLODE's argument as a new selection
    +194                if isinstance(explode_arg, exp.Column):
    +195                    taken_select_names.add(explode_arg.output_name)
    +196
    +197                unnest_source_alias = find_new_name(taken_source_names, "_u")
    +198                taken_source_names.add(unnest_source_alias)
    +199
    +200                if not explode_alias:
    +201                    explode_alias = find_new_name(taken_select_names, "col")
    +202                    taken_select_names.add(explode_alias)
    +203
    +204                    if is_posexplode:
    +205                        pos_alias = find_new_name(taken_select_names, "pos")
    +206                        taken_select_names.add(pos_alias)
    +207
    +208                if is_posexplode:
    +209                    column_names = [explode_alias, pos_alias]
    +210                    to_replace.pop()
    +211                    expression.select(pos_alias, explode_alias, copy=False)
    +212                else:
    +213                    column_names = [explode_alias]
    +214                    to_replace.replace(exp.column(explode_alias))
    +215
    +216                unnest = exp.alias_(unnest, unnest_source_alias, table=column_names)
    +217
    +218                if not expression.args.get("from"):
    +219                    expression.from_(unnest, copy=False)
    +220                else:
    +221                    expression.join(unnest, join_type="CROSS", copy=False)
    +222
    +223    return expression
    +
    + + +

    Convert explode/posexplode into unnest (used in hive -> presto).

    +
    + + +
    +
    + +
    + + def + remove_target_from_merge( expression: sqlglot.expressions.Expression) -> sqlglot.expressions.Expression: + + + +
    + +
    226def remove_target_from_merge(expression: exp.Expression) -> exp.Expression:
    +227    """Remove table refs from columns in when statements."""
    +228    if isinstance(expression, exp.Merge):
    +229        alias = expression.this.args.get("alias")
    +230        targets = {expression.this.this}
    +231        if alias:
    +232            targets.add(alias.this)
    +233
    +234        for when in expression.expressions:
    +235            when.transform(
    +236                lambda node: exp.column(node.name)
    +237                if isinstance(node, exp.Column) and node.args.get("table") in targets
    +238                else node,
    +239                copy=False,
    +240            )
    +241    return expression
    +
    + + +

    Remove table refs from columns in when statements.

    +
    + +
    -
    137def preprocess(
    -138    transforms: t.List[t.Callable[[exp.Expression], exp.Expression]],
    -139    to_sql: t.Callable[[Generator, exp.Expression], str],
    -140) -> t.Callable[[Generator, exp.Expression], str]:
    -141    """
    -142    Creates a new transform by chaining a sequence of transformations and converts the resulting
    -143    expression to SQL, using an appropriate `Generator.TRANSFORMS` function.
    -144
    -145    Args:
    -146        transforms: sequence of transform functions. These will be called in order.
    -147        to_sql: final transform that converts the resulting expression to a SQL string.
    -148
    -149    Returns:
    -150        Function that can be used as a generator transform.
    -151    """
    -152
    -153    def _to_sql(self, expression):
    -154        expression = transforms[0](expression.copy())
    -155        for t in transforms[1:]:
    -156            expression = t(expression)
    -157        return to_sql(self, expression)
    -158
    -159    return _to_sql
    +            
    244def preprocess(
    +245    transforms: t.List[t.Callable[[exp.Expression], exp.Expression]],
    +246) -> t.Callable[[Generator, exp.Expression], str]:
    +247    """
    +248    Creates a new transform by chaining a sequence of transformations and converts the resulting
    +249    expression to SQL, using an appropriate `Generator.TRANSFORMS` function.
    +250
    +251    Args:
    +252        transforms: sequence of transform functions. These will be called in order.
    +253
    +254    Returns:
    +255        Function that can be used as a generator transform.
    +256    """
    +257
    +258    def _to_sql(self, expression: exp.Expression) -> str:
    +259        expression = transforms[0](expression.copy())
    +260        for t in transforms[1:]:
    +261            expression = t(expression)
    +262        return getattr(self, expression.key + "_sql")(expression)
    +263
    +264    return _to_sql
     
    @@ -535,7 +790,6 @@ expression to SQL, using an appropriate Generator.TRANSFORMS functi
    • transforms: sequence of transform functions. These will be called in order.
    • -
    • to_sql: final transform that converts the resulting expression to a SQL string.
    Returns:
    @@ -546,36 +800,6 @@ expression to SQL, using an appropriate Generator.TRANSFORMS functi
    -
    -
    - -
    - - def - delegate(attr: str) -> Callable: - - - -
    - -
    162def delegate(attr: str) -> t.Callable:
    -163    """
    -164    Create a new method that delegates to `attr`. This is useful for creating `Generator.TRANSFORMS`
    -165    functions that delegate to existing generator methods.
    -166    """
    -167
    -168    def _transform(self, *args, **kwargs):
    -169        return getattr(self, attr)(*args, **kwargs)
    -170
    -171    return _transform
    -
    - - -

    Create a new method that delegates to attr. This is useful for creating Generator.TRANSFORMS -functions that delegate to existing generator methods.

    -
    - -